Final Fantasy Wiki
Register
Advertisement

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[]

Enemies Frequency AP
????
Can't escape.
Prison Cage, Vivi 100% 3

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]" )


Related enemies[]

Advertisement