FANDOM


IX

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.

StatsEdit

Middle

Right

Left

BattleEdit

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 Edit

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 Edit

Tetra Master
Card050
#050
Location: Treno, Card Stadium


Gallery Edit