Zorn is a boss in Final Fantasy IX fought in Alexandria Castle along with Thorn.
Stats[]
Battle[]
The battle will end when one of them is defeated. Zorn and Thorn take turns charging up the other to cast a powerful spell on the party, but if the "charged" twin is attacked, the charge is canceled and the spell will not be cast.
Strategy[]
As the player has a time limit for the fight, it is best to target Thorn instead of Zorn, since he has less HP.
AI script[]
Using global variable zorn
Using global variable thorn
Using global variable zornpoweron
Using global variable thornpoweron
Using global variable endflag
Function Zorn_Loop
if ( !initflag )
set zorn = SV_FunctionEnemy
set hplimitdeath = 65535L - SV_FunctionEnemy[HP]
set SV_FunctionEnemy[MAX_HP] = 65535L
set SV_FunctionEnemy[HP] = 65535L
set hp = 65535L
set initflag = 1
else
if ( endflag )
while ( GetBattleState != 1 )
Wait( 1 )
Wait( 20 )
set SV_Target = SV_FunctionEnemy
if ( SV_FunctionEnemy[STAND_ANIMATION] )
AttackSpecial( Withdraw1 )
else
AttackSpecial( Withdraw0 )
set SV_FunctionEnemy[DEFEATED_ON] = 1
while ( IsAttacking != 0 )
Wait( 1 )
RunBattleCode( End Battle, Escape )
if ( SV_FunctionEnemy[HP] < hplimitdeath )
set endflag = 1
while ( IsAttacking != 0 )
Wait( 1 )
RunBattleCode( Disable ATB )
while ( GetBattleState != 1 )
Wait( 1 )
set SV_Target = SV_FunctionEnemy
if ( SV_FunctionEnemy[STAND_ANIMATION] )
AttackSpecial( Withdraw1 )
else
AttackSpecial( Withdraw0 )
set SV_FunctionEnemy[DEFEATED_ON] = 1
while ( IsAttacking != 0 )
Wait( 1 )
if ( zornpoweron )
if ( GetAttacker == SV_FunctionEnemy )
set zornpoweron = FALSE
if ( waitingpowerthorn )
if ( GetAttacker == SV_FunctionEnemy )
set waitingpowerthorn = FALSE
if ( thorn[STAND_ANIMATION] == 0 )
set SV_FunctionEnemy[PREVENT_ATTACK] = 1
set waitingpowerthorn = FALSE
if ( SV_FunctionEnemy[STAND_ANIMATION] == 0 )
set SV_FunctionEnemy[ATB] = SV_FunctionEnemy[MAX_ATB]
Wait( 1 )
loop
Function Zorn_ATB
set jumpstate = [ zorn[STAND_ANIMATION] ; thorn[STAND_ANIMATION] ]
if ( jumpstate == [ 0 ; 0 ] || jumpstate == [ 0 ; 1 ] )
set SV_Target = SV_FunctionEnemy
Attack( Continue0-1 )
elseif ( jumpstate == [ 1 ; 0 ] )
if ( zornpoweron )
set SV_Target = SV_PlayerTeam
Attack( Meteorite )
else
set SV_Target = RandomInTeam(SV_PlayerTeam)
Attack( No action )
elseif ( jumpstate == [ 1 ; 1 ] )
if ( zornpoweron )
set SV_Target = SV_PlayerTeam
Attack( Meteorite )
else
if ( !thornpoweron )
set SV_Target = thorn
set waitingpowerthorn = TRUE
Attack( Power Thorn )
else
set SV_Target = RandomInTeam(SV_PlayerTeam)
Attack( No action )
set SV_Target = RandomInTeam(SV_PlayerTeam)
Attack( No action )
Function Zorn_Counter
if ( ( GetAttackCommandId == Skill ) && ( GetAttackId == What's That?! ) )
return
if ( SV_FunctionEnemy[HP] < hp )
set hp = SV_FunctionEnemy[HP]
if ( GetAttackCommandId == Eidolon || GetAttackId == Six Dragons )
return
else
set hp = SV_FunctionEnemy[HP]
return
set jumpstate = [ zorn[STAND_ANIMATION] ; thorn[STAND_ANIMATION] ]
if ( jumpstate == [ 0 ; 0 ] )
set SV_Target = SV_FunctionEnemy
Attack( Continue0-1 )
elseif ( jumpstate == [ 0 ; 1 ] )
if ( !thornpoweron )
set SV_Target = thorn
Attack( Power Thorn )
set waitingpowerthorn = TRUE
elseif ( jumpstate == [ 1 ; 0 ] )
if ( zornpoweron )
set zornpoweron = FALSE
BattleDialog( "The meteor power has been neutralized." )
set SV_FunctionEnemy[STAND_ANIMATION] = 0
set SV_FunctionEnemy[PREVENT_ATTACK] = 1
elseif ( jumpstate == [ 1 ; 1 ] )
set SV_FunctionEnemy[STAND_ANIMATION] = 0
set SV_FunctionEnemy[PREVENT_ATTACK] = 1
if ( !zornpoweron && !thornpoweron )
set SV_Target = thorn
Attack( Power Thorn )
set waitingpowerthorn = TRUE
if ( zornpoweron )
set zornpoweron = FALSE
BattleDialog( "The meteor power has been neutralized." )
Function Zorn_CounterEx
if ( GetAttacker == SV_FunctionEnemy )
if ( GetAttackId == Continue0-1 )
set SV_FunctionEnemy[PREVENT_ATTACK] = 1
return
if ( GetAttacker == thorn )
if ( GetAttackId == Power Zorn )
set zorn[PREVENT_ATTACK] = 1
set thorn[PREVENT_ATTACK] = 1
set SV_FunctionEnemy[ATB] = 0
set zornpoweron = TRUE
return
if ( SV_FunctionEnemy[HP] < hp )
set hp = SV_FunctionEnemy[HP]
if ( GetAttackCommandId == Eidolon || GetAttackId == Six Dragons )
return
else
set hp = SV_FunctionEnemy[HP]
return
if ( zornpoweron )
set zornpoweron = FALSE
BattleDialog( "The meteor power has been neutralized." )
set SV_FunctionEnemy[STAND_ANIMATION] = 0
set SV_FunctionEnemy[PREVENT_ATTACK] = 1