What the hell is that?
Zidane Tribal
The Prison Cage is a boss from Final Fantasy IX. The party fights it twice in the Evil Forest, once with Garnet imprisoned in it, and once with Vivi.
Stats[]
#12
#14
Formations[]
| |||||||
---|---|---|---|---|---|---|---|
???? |
| ||||||
???? |
|
Battle[]
The Prison Cage will use Absorb to drain HP from the character it has imprisoned, both curing itself and hurting its prisoner. The player must keep the imprisoned character alive. During the second battle, Vivi will use Fire on Prison Cage at regular intervals.
During the first fight, both Zidane and Steiner will be in the party, giving the player the first opportunity to use Steiner's Sword Arts ability. Zidane will begin the first fight entering Trance.
AI script[]
First battle[]
Using global variable zidane
Using global variable steiner
Using global variable garnetendflag
Using global variable prisonendflag
Using global variable cagedgarnet
Using global variable prisoncage
Using global variable garnetdeadflag
Using global variable winflag
Function Main_Init
InitObject( Prison_Cage )
InitObject( Garnet)
AttachObject( Garnet, Prison_Cage, Node_Cage )
set SV_EnemyTeam[ATB] = SV_EnemyTeam[MAX_ATB]
set zidane = ( SV_PlayerTeam[MODEL_TYPE] ==$ 0 )
set zidane |= ( SV_PlayerTeam[MODEL_TYPE] ==$ 1 )
set steiner = ( SV_PlayerTeam[MODEL_TYPE] ==$ 7 )
set steiner |= ( SV_PlayerTeam[MODEL_TYPE] ==$ 8 )
set SV_PlayerTeam[ATB] =$ 0
Function Main_Loop
if ( endflag )
return
if ( #( SV_EnemyTeam & cagedgarnet ) == 0 )
return
if ( #( SV_EnemyTeam & prisoncage ) == 0 )
return
if ( cagedgarnet[HP] <= 10000 )
set garnetdeadflag = TRUE
set endflag = TRUE
if ( prisoncage[HP] <= 10000 )
set winflag = TRUE
set endflag = TRUE
Wait( 1 )
loop
Function Prison_Cage_Loop
if ( prisonendflag )
return
if ( !initflag )
set initflag = TRUE
set prisoncage = SV_FunctionEnemy
RunBattleCode( Enable ATB )
while ( GetBattleState != 4 )
Wait( 1 )
if ( dialogprogression == 0 )
set SV_PlayerTeam[ATB] = 0
elseif ( dialogprogression == 1 )
if ( GetAttacker == zidane )
set dialogprogression = 2
set SV_PlayerTeam[ATB] =$ 0
set SV_EnemyTeam[ATB] =$ 0
elseif ( dialogprogression == 2 )
if ( GetAttacker != zidane )
set dialogprogression = 3
set SV_PlayerTeam[ATB] =$ 0
set SV_EnemyTeam[ATB] =$ 0
elseif ( dialogprogression == 3 )
set SV_PlayerTeam[ATB] =$ 0
set SV_EnemyTeam[ATB] =$ 0
if ( !cameraattackdone )
if ( SV_FunctionEnemy[ATB] != SV_FunctionEnemy[MAX_ATB] )
set SV_FunctionEnemy[ATB] = SV_FunctionEnemy[MAX_ATB] - 1
BattleDialog( "Wh-What is that light!?" )
set dialogwait1++
if ( dialogwait1 > 45 )
set dialogprogression = 7
elseif ( dialogprogression == 7 )
set SV_PlayerTeam[ATB] = 0
set SV_EnemyTeam[ATB] = 0
BattleDialog( "I don’t know. Somehow, it raises my power." )
set dialogwait2++
if ( dialogwait2 > 45 )
set dialogprogression = 4
elseif ( dialogprogression == 4 )
set SV_PlayerTeam[ATB] = 0
set SV_EnemyTeam[ATB] = 0
BattleDialog( "Could it really be Trance...!?" )
set dialogwait3++
if ( dialogwait3 > 30 )
set dialogprogression = 5
elseif ( dialogprogression == 5 )
set SV_PlayerTeam[ATB] = 0
set SV_EnemyTeam[ATB] = 0
BattleDialog( "I’ve heard of it before!" )
set dialogwait4++
if ( dialogwait4 > 30 )
set dialogprogression = 6
elseif ( dialogprogression == 6 )
set SV_PlayerTeam[ATB] = 0
set SV_EnemyTeam[ATB] = 0
BattleDialog( "Trance is induced by a surge of emotion." )
set dialogwait5++
if ( dialogwait5 > 45 )
set dialogprogression = 8
elseif ( dialogprogression == 8 )
set SV_PlayerTeam[ATB] = 0
set SV_EnemyTeam[ATB] = 0
BattleDialog( "Alright, let’s take him!" )
set dialogprogression = 10
elseif ( dialogprogression == 10 )
set SV_PlayerTeam[ATB] =$ 0
set SV_EnemyTeam[ATB] =$ 0
set dialogwait6++
if ( dialogwait6 > 30 )
set dialogprogression = 9
if ( ( !prisonendflag ) && winflag )
set prisonendflag = 1
while ( IsAttacking != 0 )
Wait( 1 )
if ( GetBattleState != 4 )
RunBattleCode( Disable ATB )
while ( GetBattleState != 1 )
Wait( 1 )
set SV_Target = SV_FunctionEnemy
AttackSpecial( Use in event )
while ( IsAttacking != 0 )
Wait( 1 )
AttackSpecial( Event of death )
Wait( 30 )
set SV_FunctionEnemy[SHADOW] = 0
while ( IsAttacking != 0 )
Wait( 1 )
RunBattleCode( End Battle, Victory )
if ( #( SV_EnemyTeam & cagedgarnet ) && ( cagedgarnet[HP] >= 10070 ) )
set zidanehealwarning = 0
set steinerhealwarning = 0
Wait( 1 )
loop
Function Prison_Cage_ATB
if ( !dialogprogression )
set dialogprogression = 1
set SV_Target = zidane
Attack( Transfer )
if ( !cameraattackdone )
set cameraattackdone = TRUE
set SV_Target = zidane
Attack( For camera use )
if ( garnetendflag + prisonendflag )
set SV_Target 0
Attack( Right Stem )
if ( attacktracker == 0 )
set attacktracker = 1
set SV_Target = cagedgarnet
Attack( Absorb )
elseif ( attacktracker == 1 )
set attacktracker = 2
set SV_Target = steiner
Attack( Right Stem )
else
set attacktracker = 0
set SV_Target = zidane
Attack( Left Stem )
Function Prison_Cage_CounterEx
if ( #( SV_EnemyTeam & cagedgarnet ) == 0 )
return
if ( SV_FunctionEnemy[HP] < 10050 )
return
if ( ( GetAttackCommandId == Attack ) && #( SV_EnemyTeam & cagedgarnet ) && ( cagedgarnet[HP] < 10025 ) )
if ( GetAttacker == zidane )
if ( #( NotMatching(SV_PlayerTeam[STATUS_CURRENT], PETRIFY | VENOM | DEATH | STOP) & steiner ) == 0 )
return
if ( zidanehealwarning == 0 )
set zidanehealwarning++
BattleDialog( "We must heal the princess!" )
elseif ( zidanehealwarning == 1 )
set zidanehealwarning++
BattleDialog( "Hurry up and heal the princess!!!" )
else
BattleDialog( "Heal the princess at once!!!" )
elseif ( GetAttacker == steiner )
if ( #( NotMatching(SV_PlayerTeam[STATUS_CURRENT], PETRIFY | VENOM | DEATH | STOP) & zidane ) == 0 )
return
if ( steinerhealwarning == 0 )
set steinerhealwarning++
BattleDialog( "Yo, this is no time to be attacking!" )
elseif ( steinerhealwarning == 1 )
set steinerhealwarning++
BattleDialog( "We have to heal Garnet first!" )
else
BattleDialog( "Garnet!" )
Second battle[]
Using global variable zidane
Using global variable steiner
Using global variable viviendflag
Using global variable prisonendflag
Using global variable prisoncage
Using global variable cagedvivi
Using global variable vivideadflag
Using global variable winflag
Function Main_Init
InitObject( Prison_Cage )
InitObject( Vivi )
AttachObject( ViVi, Prison_Cage, Node_Cage )
set zidane = ( SV_PlayerTeam[MODEL_TYPE] ==$ 0 )
set zidane |= ( SV_PlayerTeam[MODEL_TYPE] ==$ 1 )
set steiner = ( SV_PlayerTeam[MODEL_TYPE] ==$ 7 )
set steiner |= ( SV_PlayerTeam[MODEL_TYPE] ==$ 8 )
Function Main_Loop
if ( endflag )
return
if ( #( SV_EnemyTeam & cagedvivi ) == 0 )
return
if ( #( SV_EnemyTeam & prisoncage ) == 0 )
return
if ( cagedvivi[HP] <= 10000 )
set endflag = TRUE
set vivideadflag = TRUE
elseif ( prisoncage[HP] <= 10000 )
set endflag = TRUE
set winflag = TRUE
Wait( 1 )
loop
Function Prison_Cage_Loop
if ( !initflag )
set initflag = TRUE
set prisoncage = SV_FunctionEnemy
set SV_FunctionEnemy[ATB] = 0
set SV_FunctionEnemy[DEFEATED_ON] = 1
RunBattleCode( Enable ATB )
while ( GetBattleState != 4 )
Wait( 1 )
if ( !prisonendflag && winflag )
set prisonendflag = TRUE
while ( IsAttacking != 0 )
Wait( 1 )
RunBattleCode( Disable ATB )
while ( GetBattleState != 1 )
Wait( 1 )
set SV_Target = SV_FunctionEnemy
AttackSpecial( Death )
while ( IsAttacking != 0 )
Wait( 1 )
RunBattleCode( End Battle, Victory )
Wait( 1 )
loop
Function Prison_Cage_ATB
if ( attacktracker == 0 )
set attacktracker = 1
set SV_Target = cagedvivi
Attack( Absorb )
elseif ( attacktracker == 1 )
set attacktracker = 2
set SV_Target = steiner
Attack( Right Stem )
else
set attacktracker = 0
set SV_Target = zidane
Attack( Left Stem )
Other appearances[]
Final Fantasy Record Keeper[]