Vivi is the victim of a boss fought in Final Fantasy IX, during the second battle with Prison Cage. While the player must avoid Vivi's HP dropping to zero, the battle is quite easy as Vivi will constantly cast Fire spells on the Prison Cage. It is advised to heal Vivi with a Potion after two to three consecutive drains from the Prison Cage.
Stats[]
Formations[]
| |||||||
---|---|---|---|---|---|---|---|
???? |
|
AI script[]
Using global variable cagedvivi
Using global variable prisoncage
Using global variable viviendflag
Using global variable vivideadflag
Function Vivi_Init
set speakingally = 0
Function Vivi_Loop
if ( !initflag )
set initflag = TRUE
BattleDialog( "Let me go! Help me!" )
set SV_FunctionEnemy[ATB] = SV_FunctionEnemy[MAX_ATB]
set cagedvivi = SV_FunctionEnemy
if ( firstattackprogression == 0 )
set SV_PlayerTeam[ATB] = 0
if ( #( SV_EnemyTeam & prisoncage ) )
set prisoncage[ATB] = 0
elseif ( firstattackprogression == 1 )
if ( GetAttacker == SV_FunctionEnemy )
set firstattackprogression = 2
elseif ( firstattackprogression == 2 )
if ( GetAttacker != SV_FunctionEnemy )
set firstattackprogression = 4
if ( !viviendflag && vivideadflag )
set viviendflag = TRUE
while ( IsAttacking != 0 )
Wait( 1 )
RunBattleCode( Disable ATB )
while ( GetBattleState != 1 )
Wait( 1 )
set SV_Target = SV_FunctionEnemy
AttackSpecial( WAITANIM )
while ( IsAttacking != 0 )
Wait( 1 )
set SV_Target = SV_FunctionEnemy
AttackSpecial( Death )
while ( IsAttacking != 0 )
Wait( 1 )
BattleDialog( "You failed to save Vivi." )
Wait( 20 )
RunBattleCode( Game Over )
if ( ( #( NotMatching(SV_PlayerTeam[STATUS_CURRENT], PETRIFY | VENOM | DEATH | STOP) & speakingally ) == 0 ) && ( speakingally != SV_FunctionEnemy ) && ( speakingally != 0 ) )
set SV_FunctionEnemy[PREVENT_ATTACK] = 1
Wait( 1 )
loop
Function Vivi_ATB
set SV_Target = prisoncage
if ( attackcounter == 0 )
set attackcounter++
set firstattackprogression = 1
set speakingally = 0
if ( #( NotMatching(SV_PlayerTeam[STATUS_CURRENT], PETRIFY | VENOM | DEATH | STOP) & steiner ) )
set speakingally = steiner
Attack( Fire )
else
set speakingally = 0
Attack( Fire )
elseif ( attackcounter == 1 )
set attackcounter++
if ( #( NotMatching(SV_PlayerTeam[STATUS_CURRENT], PETRIFY | VENOM | DEATH | STOP) & zidane ) )
set speakingally = zidane
Attack( Fire )
else
set speakingally = 0
Attack( Fire )
else
set speakingally = 0
Attack( Fire )
break
Function Vivi_CounterEx
if ( GetAttackCommandId != Enemy Command )
return
if ( #( SV_EnemyTeam & SV_FunctionEnemy ) )
SetTextVariable( 0, SV_FunctionEnemy[HP] - 10000 )
SetTextVariable( 1, SV_FunctionEnemy[MAX_HP] - 10000 )
if ( SV_FunctionEnemy[HP] < 10000 )
SetTextVariable( 0, 0 )
BattleDialog( "Vivi’s HP: [NUMB=0]/[NUMB=1]" )