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[edit | edit source]
Middle
Right
Left
Battle[edit | edit source]
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 | edit source]
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 | edit source]
Tetra Master |
---|
![]() #050 Location: Treno, Card Stadium |