FANDOM


IX

Beatrix appears thrice as a boss in Final Fantasy IX. Beatrix has many strong attacks, and can heal herself with White Magic. Beatrix does not fall in battle even when her HP is supposedly depleted.

StatsEdit

#58

#71

#76

Battle Edit

Beatrix is immune to all status ailments except Slow.

The party must try stay alive until Beatrix uses an unblockable finishing move that knocks everyone down to 1 HP; either Stock Break or Climhazzard. She uses this when her HP hits 0, or after getting ten turns. She will use powerful attacks like Shock to deal massive damage to a single party member, usually KOing them. If the party is defeated before Beatrix uses her finishing attack, it will be a Game Over.

Beatrix has many good items to steal, although it is difficult to get all the items before she finishes the battle. The player characters can enter Trance after Beatrix uses her Climhazzard ability, effectively wasting it.

Strategy Edit

Vivi can learn Slow from the Magus Hat and the Ice Staff, to use it on Beatrix.

If the player is not concerned about stealing her items, and Quina is in the party (optional for the first and second battles, impossible for the third), they can KO Quina before the battle, save, use a Phoenix Down on him/her and reset until the Phoenix Down restores exactly 1 of Quina's HP, and then have Quina open the battle with Limit Glove, which will defeat Beatrix and force her to use Stock Break. In the second battle, having Quina cast Auto-Life on him/herself can emulate this effect.

AI Scripts Edit

First Battle Edit

Function Beatrix_Init


   set attacklist = [ Attack ; Attack ; Attack ; Attack ; Thunder Slash ; Thunder Slash ; Shock ; Shock ]

Function Beatrix_Loop
   if ( !endflag )
      if ( SV_FunctionEnemy[HP] <= 10000 )
         set finishfightflag = TRUE
      if ( finishfightflag )
         set SV_FunctionEnemy[HP] = SV_FunctionEnemy[MAX_HP]
         set SV_FunctionEnemy[ATB] = SV_FunctionEnemy[MAX_ATB]
         if ( stockbreakwaiting )
            if ( #Matching(SV_PlayerTeam[STATUS_CURRENT], JUMP) )
               set stockbreakwaiting = FALSE
               set SV_FunctionEnemy[PREVENT_ATTACK] = 1
            else
               if ( GetAttacker == SV_FunctionEnemy )
                  if ( GetTarget && #( NotMatching(SV_PlayerTeam[STATUS_CURRENT], PETRIFY | DEATH | JUMP) ) )
                     set endflag = TRUE
                     Wait( 5 )
                     RunBattleCode( Disable ATB )
                     while ( GetBattleState != 1 )
                        Wait( 1 )
                  set SV_Target = SV_FunctionEnemy
                     AttackSpecial( Talk )
                     while ( IsAttacking != 0 )
                        Wait( 1 )
                     RunBattleCode( End Battle, Victory )
         else
            if ( !( #Matching(SV_PlayerTeam[STATUS_CURRENT], JUMP) ) )
               set SV_FunctionEnemy[PREVENT_ATTACK] = 1
   Wait( 1 )
   loop

Function Beatrix_ATB
   if ( turncounter < 10 )
      set turncounter++
   else
      set finishfightflag = TRUE
   if ( finishfightflag && ( !( #Matching(SV_PlayerTeam[STATUS_CURRENT], JUMP) ) ) )
      set stockbreakwaiting = TRUE
      set SV_Target = SV_PlayerTeam
      Attack( Stock Break )
   set selectedattack = RandomAttack( attacklist )
   if ( selectedattack == Attack )
      set SV_Target = RandomInTeam(SV_PlayerTeam)
   elseif ( selectedattack == Attack )
      set SV_Target = RandomInTeam(SV_PlayerTeam)
   elseif ( selectedattack == Attack )
      set SV_Target = RandomInTeam(SV_PlayerTeam)
   elseif ( selectedattack == Attack )
      set SV_Target = RandomInTeam(SV_PlayerTeam)
   elseif ( selectedattack == Thunder Slash)
      set SV_Target = RandomInTeam(SV_PlayerTeam)
   elseif ( selectedattack == Thunder Slash)
      set SV_Target = RandomInTeam(SV_PlayerTeam)
   elseif ( selectedattack == Shock )
      set SV_Target = RandomInTeam(SV_PlayerTeam)
   elseif ( selectedattack == Shock )
      set SV_Target = RandomInTeam(SV_PlayerTeam)


   Attack( selectedattack )

Second Battle Edit

Function Beatrix_Init


   set attacklist = [ Attack ; Attack ; Attack ; Attack ; Thunder Slash ; Thunder Slash ; Shock ; Shock ]

Function Beatrix_Loop
   if ( !endflag )
      if ( SV_FunctionEnemy[HP] <= 10000 )
         set finishfightflag = 1
      if ( finishfightflag )
         set SV_FunctionEnemy[HP] = SV_FunctionEnemy[MAX_HP]
         set SV_FunctionEnemy[ATB] = SV_FunctionEnemy[MAX_ATB]
         if ( stockbreakwaiting )
            if ( #Matching(SV_PlayerTeam[STATUS_CURRENT], JUMP) )
               set stockbreakwaiting = 0
               set SV_FunctionEnemy[PREVENT_ATTACK] = 1
            else
               if ( GetAttacker == SV_FunctionEnemy )
                  if ( GetTarget && #NotMatching(SV_PlayerTeam[STATUS_CURRENT], PETRIFY | DEATH | JUMP) )
                     set endflag = 1
                     Wait( 5 )
                     RunBattleCode( Disable ATB )
                     while ( GetBattleState != 1 )
                        Wait( 1 )
                  set SV_Target = SV_FunctionEnemy
                     AttackSpecial( Talk )
                     while ( IsAttacking != 0 )
                        Wait( 1 )
                     RunBattleCode( End Battle, Victory )
         else
            if ( !( #Matching(SV_PlayerTeam[STATUS_CURRENT], JUMP) ) )
               set SV_FunctionEnemy[PREVENT_ATTACK] = 1
   Wait( 1 )
   loop

Function Beatrix_ATB
   if ( turncounter < 10 )
      set turncounter++
   else
      set finishfightflag = 1
   if ( finishfightflag && !( #Matching(SV_PlayerTeam[STATUS_CURRENT], JUMP) ) )
      set stockbreakwaiting = 1
      set SV_Target = SV_PlayerTeam
      Attack( Stock Break )
   set selectedattack = RandomAttack( attacklist )
   if ( selectedattack == Attack )
      set SV_Target = RandomInTeam(SV_PlayerTeam)
   elseif ( selectedattack == Attack )
      set SV_Target = RandomInTeam(SV_PlayerTeam)
   elseif ( selectedattack == Attack )
      set SV_Target = RandomInTeam(SV_PlayerTeam)
   elseif ( selectedattack == Attack )
      set SV_Target = RandomInTeam(SV_PlayerTeam)
   elseif ( selectedattack == Thunder Slash )
      set SV_Target = RandomInTeam(SV_PlayerTeam)
   elseif ( selectedattack == Thunder Slash )
      set SV_Target = RandomInTeam(SV_PlayerTeam)
   elseif ( selectedattack == Shock )
      set SV_Target = RandomInTeam(SV_PlayerTeam)
   elseif ( selectedattack == Shock )
      set SV_Target = RandomInTeam(SV_PlayerTeam)
   if ( SV_FunctionEnemy[HP] - 10000 < ( SV_FunctionEnemy[MAX_HP] - 10000 ) / 2 )
      set curetarget = SV_FunctionEnemy
   else {
      set curetarget = 0
   if ( #curetarget && !cureflag )
      set cureflag = TRUE
      set SV_Target = SV_FunctionEnemy
      Attack( Cure )


   Attack( selectedattack )


Third Battle Edit

Function Beatrix_Init


   set attacklist = [ Attack ; Attack ; Attack ; Attack ; Thunder Slash ; Thunder Slash ; Shock ; Shock ]

Function Beatrix_Loop
   if ( !endflag )
      if ( SV_FunctionEnemy[HP] <= 10000 )
         set finishfightflag = 1
      if ( finishfightflag )
         set SV_FunctionEnemy[HP] = SV_FunctionEnemy[MAX_HP]
         set SV_FunctionEnemy[ATB] = SV_FunctionEnemy[MAX_ATB]
         if ( climhazzardwaiting )
            if ( #Matching(SV_PlayerTeam[STATUS_CURRENT], JUMP) )
               set climhazzardwaiting = 0
               set SV_FunctionEnemy[PREVENT_ATTACK] = 1
            else
               if ( GetAttacker == SV_FunctionEnemy )
                  if ( GetTarget && #NotMatching(SV_PlayerTeam[STATUS_CURRENT], PETRIFY | DEATH | JUMP) )
                     set endflag = 1
                     Wait( 5 )
                     RunBattleCode( Disable ATB )
                     while ( GetBattleState != 1 )
                        Wait( 1 )
                     set SV_Target = SV_FunctionEnemy
                     AttackSpecial( Talk )
                     while ( IsAttacking != 0 )
                        Wait( 1 )
                     RunBattleCode( End Battle, Victory )
         else
            if ( !( #Matching(SV_PlayerTeam[STATUS_CURRENT], JUMP) ) )
               set SV_FunctionEnemy[PREVENT_ATTACK] = 1
   Wait( 1 )
   loop

Function Beatrix_ATB
   if ( turncounter < 10 )
      set turncounter++
   else
      set finishfightflag = 1
   if ( finishfightflag && !( #Matching(SV_PlayerTeam[STATUS_CURRENT], JUMP) ) )
      set climhazzardwaiting = 1
      set SV_Target = SV_PlayerTeam
      Attack( Climhazzard )
   set selectedattack = RandomAttack( attacklist )
   if ( selectedattack == Attack )
      set SV_Target = RandomInTeam(SV_PlayerTeam)
   elseif ( selectedattack == Attack )
      set SV_Target = RandomInTeam(SV_PlayerTeam)
   elseif ( selectedattack == Attack )
      set SV_Target = RandomInTeam(SV_PlayerTeam)
   elseif ( selectedattack == Attack )
      set SV_Target = RandomInTeam(SV_PlayerTeam)
   elseif ( selectedattack == Thunder Slash )
      set SV_Target = RandomInTeam(SV_PlayerTeam)
   elseif ( selectedattack == Thunder Slash )
      set SV_Target = RandomInTeam(SV_PlayerTeam)
   elseif ( selectedattack == Shock )
      set SV_Target = RandomInTeam(SV_PlayerTeam)
   elseif ( selectedattack == Shock )
      set SV_Target = RandomInTeam(SV_PlayerTeam)
   if ( SV_FunctionEnemy[HP] - 10000 < ( SV_FunctionEnemy[MAX_HP] - 10000 ) / 2 )
      set curatarget = SV_FunctionEnemy
   else
      set curatarget = 0
   if ( #curatarget && !curaflag )
      set curaflag = TRUE
      set SV_Target = SV_FunctionEnemy
      Attack( Cura )


   Attack( selectedattack )

Music Edit

{{{image}}}
"Sword of Doubt" in Final Fantasy IX
Music-harp
Mystery Sword
Trouble with the audio sample?

The battle theme in the first two battles against Beatrix is "Sword of Doubt" (迷いの剣, Mayoi no Tsurugi?).

Gallery Edit