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 |
---|
#050 Location: Treno, Card Stadium |