Final Fantasy Wiki
m (Renaming categories in accordance with Forum:Category overhaul and categories for redirects)
m (Bot: Automated text replacement (-{{-|left}} +{{clear|left}}))
(5 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
{{sideicon|prime=FFIX}}
 
{{sideicon|prime=FFIX}}
  +
{{DISPLAYTITLE:Mover (''Final Fantasy IX'')}}
 
{{infobox enemy
 
{{infobox enemy
 
| release = FFIX
 
| release = FFIX
Line 7: Line 8:
 
| romaji = Mūbā
 
| romaji = Mūbā
 
|location = [[Terra (Final Fantasy IX)|Terra]]; [[Pandemonium (Final Fantasy IX)|Pandemonium]]
 
|location = [[Terra (Final Fantasy IX)|Terra]]; [[Pandemonium (Final Fantasy IX)|Pandemonium]]
  +
|aiscript=true
 
}}
 
}}
{{See Also|Mover}}
 
 
The '''Mover''' is an enemy from ''[[Final Fantasy IX]]''. It appears in threes and has unique death behavior compared to other enemies in the game.
 
The '''Mover''' is an enemy from ''[[Final Fantasy IX]]''. It appears in threes and has unique death behavior compared to other enemies in the game.
 
{{See|Mover}}
 
 
==Stats==
 
==Stats==
 
{{infobox enemy stats FFIX
 
{{infobox enemy stats FFIX
Line 198: Line 199:
 
Spells countered with Return Magic also can't kill Movers unless they die together, because the death of one Mover is actually a counter, and it is not possible to counter a counter.
 
Spells countered with Return Magic also can't kill Movers unless they die together, because the death of one Mover is actually a counter, and it is not possible to counter a counter.
   
== AI Script ==
+
== AI script ==
{{FFIX AI|code=
+
{{AI FFIX|code=
 
Function Mover_Loop
 
Function Mover_Loop
 
:if ( !initflag )
 
:if ( !initflag )
Line 408: Line 409:
   
 
== [[Tetra Master (minigame)|Tetra Master]] ==
 
== [[Tetra Master (minigame)|Tetra Master]] ==
{{FFIX Tetra Master
+
{{Card FFIX
 
|name = Mover
 
|name = Mover
 
|image = Card050.png
 
|image = Card050.png
Line 415: Line 416:
 
|align = left
 
|align = left
 
}}
 
}}
{{-|left}}
+
{{clear|left}}
   
 
== Gallery ==
 
== Gallery ==
Line 422: Line 423:
 
FFIX Delta Attack.png|Delta Attack.
 
FFIX Delta Attack.png|Delta Attack.
 
</gallery>
 
</gallery>
 
 
[[Category:Enemies in Final Fantasy IX]]
 
[[Category:Enemies in Final Fantasy IX]]

Revision as of 21:19, 8 January 2020

Template:Sideicon

The Mover is an enemy from Final Fantasy IX. It appears in threes and has unique death behavior compared to other enemies in the game.

Stats

Middle

Right

Left

Battle

Movers are exceptionally dangerous when all three are present, as they can align into a formation that triggers the lethal Delta Attack spell. Destroying at least one of the Movers will eliminate this threat.

For some reason, Movers can't die from a White Magic spell, an item or a Mug: their AI specifically prevents it by setting their HP to 1 (or one more than their death threshold to be accurate). Two movers can't die together (they can all die together, but not just two of them). Using a spell that should kill exactly two Movers, will kill only one, while the other's HP is set to the threshold. Any attack after that will kill it, even a 0-damage Minus Strike.

Spells countered with Return Magic also can't kill Movers unless they die together, because the death of one Mover is actually a counter, and it is not possible to counter a counter.

AI script

Function Mover_Loop
   if ( !initflag )
      set initflag = TRUE
      set mover1 = SV_EnemyTeam[ENEMY_ID] ==$ 0
      set mover2 = SV_EnemyTeam[ENEMY_ID] ==$ 1
      set mover3 = SV_EnemyTeam[ENEMY_ID] ==$ 2
      set mover1[SHADOW] = 0
      set mover2[SHADOW] = 0
      set mover3[SHADOW] = 0
      set hplimitdeath = 65535L - SV_FunctionEnemy[HP]
      set mover1[MAX_HP] = 65535L
      set mover2[MAX_HP] = 65535L - SV_FunctionEnemy[HP] / 2
      set mover3[MAX_HP] = 65535L
      set mover1[HP] = 65535L
      set mover2[HP] = mover2[MAX_HP]
      set mover3[HP] = 65535L
      RunBattleCode( Enable ATB )
      while ( GetBattleState != 4 )
         Wait( 1 )
   if ( waitingcounter && ( GetAttacker == SV_FunctionEnemy ) )
      set waitingcounter = FALSE
   Wait( 1 )
   loop


Function Mover_ATB
   if ( firstdown || seconddown )
      set SV_Target = RandomInTeam(SV_PlayerTeam)
      if ( ( GetRandom % 3 ) && ( SV_FunctionEnemy[MP] >= 24 ) )
         Attack( Firaga )
      else
         Attack( Virus Combo )
   elseif ( SV_FunctionEnemy[STAND_ANIMATION] == 0 )
      if ( GetRandom & 1 )
         set SV_Target = RandomInTeam(SV_PlayerTeam)
         Attack( Virus Combo )
      else
         set SV_Target = SV_FunctionEnemy
         Attack( Continue1 )
   else
      set SV_Target = SV_FunctionEnemy
      Attack( Continue2 )


Function Mover_Counter
   if ( ( GetAttackCommandId == Skill ) && ( GetAttackId == What's That?! ) )
      return
   if ( ( GetAttackCommandId == Item ) || ( GetAttackCommandId == Wht Mag ) || ( GetAttackCommandId == Dbl Wht ) || ( GetAttackCommandId == Steal ) )
      set downlist = 0
      if ( mover1[HP] < hplimitdeath )
         set downlist = 4
      if ( mover2[HP] < hplimitdeath )
         set downlist |= 1
      if ( mover3[HP] < hplimitdeath )
         set downlist |= 2
      if ( downlist & 4 )
         set mover1[HP] = hplimitdeath
      if ( !firstdown && ( downlist & 1 ) )
         set mover2[HP] = hplimitdeath
      if ( !seconddown && ( downlist & 2 ) )
         set mover3[HP] = hplimitdeath
      if ( downlist == 7 )
         set alldown = TRUE
         if ( #( SV_EnemyTeam & mover2 ) )
            set mover2[HP] = 0
         if ( #( SV_EnemyTeam & mover3 ) )
            set mover3[HP] = 0
         if ( #( SV_EnemyTeam & mover1 ) )
            set mover1[HP] = 0
   set downlist = 0
   set SV_Target = SV_FunctionEnemy
   if ( alldown )
      return
   if ( waitingcounter )
      if ( mover1[HP] < hplimitdeath )
         set mover1[HP] = hplimitdeath
      if ( ( mover2[HP] < hplimitdeath ) && !firstdown )
         set mover2[HP] = hplimitdeath
      if ( ( mover3[HP] < hplimitdeath ) && !seconddown )
         set mover3[HP] = hplimitdeath
      return
   if ( firstdown )
      if ( seconddown )
         if ( mover1[HP] < hplimitdeath )
            set alldown = TRUE
            if ( #( SV_EnemyTeam & mover2 ) )
               set mover2[HP] = 0
            if ( #( SV_EnemyTeam & mover3 ) )
               set mover3[HP] = 0
            if ( #( SV_EnemyTeam & mover1 ) )
               set mover1[HP] = 0
         return
      if ( mover1[HP] < hplimitdeath )
         if ( mover3[HP] < hplimitdeath )
            set alldown = TRUE
            if ( #( SV_EnemyTeam & mover2 ) )
               set mover2[HP] = 0
            if ( #( SV_EnemyTeam & mover3 ) )
               set mover3[HP] = 0
            if ( #( SV_EnemyTeam & mover1 ) )
               set mover1[HP] = 0
            return
         set mover1[HP] = mover3[HP]
         set mover3[HP] = hplimitdeath - 1
      if ( mover3[HP] >= hplimitdeath )
         return
      set mover1[STAND_ANIMATION] = 0
      set waitingcounter = TRUE
      set downlist = 2
      Attack( Spin )
   if ( seconddown )
      if ( mover1[HP] < hplimitdeath )
         if ( mover2[HP] < hplimitdeath )
            set alldown = TRUE
            if ( #( SV_EnemyTeam & mover2 ) )
               set mover2[HP] = 0
            if ( #( SV_EnemyTeam & mover3 ) )
               set mover3[HP] = 0
            if ( #( SV_EnemyTeam & mover1 ) )
               set mover1[HP] = 0
            return
         set mover1[HP] = mover2[HP]
         set mover2[HP] = hplimitdeath - 1
      if ( mover2[HP] >= hplimitdeath )
         return
      set mover1[STAND_ANIMATION] = 0
      set waitingcounter = TRUE
      set downlist = 1
      Attack( Spin )
   if ( mover1[HP] < hplimitdeath )
      set downlist = 4
   if ( mover2[HP] < hplimitdeath )
      set downlist |= 1
   if ( mover3[HP] < hplimitdeath )
      set downlist |= 2
   if ( ( downlist == 0 ) && ( mover1[STAND_ANIMATION] == 1 ) )
      set waitingcounter = TRUE
      set SV_Target = GetAttacker
      Attack( Delta Attack )
   elseif ( downlist == 1 )
      set mover1[STAND_ANIMATION] = 0
      set waitingcounter = TRUE
      set downlist = 1
      Attack( Spin )
   elseif ( downlist == 4 )
      set mover1[HP] = mover3[HP]
      set mover3[HP] = hplimitdeath - 1
   elseif ( downlist == 2 )
      set mover1[STAND_ANIMATION] = 0
      set waitingcounter = TRUE
      set downlist = 2
      Attack( Spin )
   elseif ( downlist == 5 )
      set mover1[HP] = mover3[HP]
      set mover3[HP] = hplimitdeath - 1
   elseif ( downlist == 6 )
      set mover1[HP] = mover2[HP]
      set mover2[HP] = hplimitdeath - 1
   elseif ( downlist == 3 )
      set mover1[STAND_ANIMATION] = 0
      set waitingcounter = TRUE
      set downlist = 3
      Attack( Spin )
   elseif ( downlist == 7 )
      set alldown = TRUE
      if ( #( SV_EnemyTeam & mover2 ) )
         set mover2[HP] = 0
      if ( #( SV_EnemyTeam & mover3 ) )
         set mover3[HP] = 0
      if ( #( SV_EnemyTeam & mover1 ) )
         set mover1[HP] = 0


Function Mover_CounterEx
   if ( GetAttackCommandId == Enemy Counter )
      set SV_FunctionEnemy[PREVENT_ATTACK] = 1
      if ( downlist & 1 )
         set firstdown = TRUE
         set mover2[TARGETABLE] = 0
         set mover1[MODEL_OFF] = 12
      if ( downlist & 2 )
         set seconddown = TRUE
         set mover3[TARGETABLE] = 0
         set mover1[MODEL_OFF] = 48
   set downlist = 0
   if ( mover1[HP] < hplimitdeath )
      set downlist = 4
   if ( mover2[HP] < hplimitdeath )
      set downlist |= 1
   if ( mover3[HP] < hplimitdeath )
      set downlist |= 2
   if ( downlist & 4 )
      set mover1[HP] = hplimitdeath
   if ( !firstdown && ( downlist & 1 ) )
      set mover2[HP] = hplimitdeath
   if ( !seconddown && ( downlist & 2 ) )
      set mover3[HP] = hplimitdeath
   if ( downlist == 7 )
      set alldown = TRUE
      if ( #( SV_EnemyTeam & mover2 ) )
         set mover2[HP] = 0
      if ( #( SV_EnemyTeam & mover3 ) )
         set mover3[HP] = 0
      if ( #( SV_EnemyTeam & mover1 ) )
         set mover1[HP] = 0


Tetra Master

Tetra Master
Mover
#050
Location: Treno, Card Stadium


Gallery