Final Fantasy Wiki
Advertisement

You're no match for me! Ignorant fools.

Beatrix in Burmecia

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

Stats[]

#58

#71

#76

Battle[]

Beatrix is immune to status ailments except Slow.

The party must try to survive 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 KO'ing 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 final attack, effectively wasting it.

When the battles with Beatrix end in the mobile and following versions, the menu disappears so the player cannot see everyone's HP reduce to 1 when Beatrix uses Stock Break and Climhazzard.

Strategy[]

Vivi can learn Slow from the Magus Hat and the Ice Staff, to use it on Beatrix the first two times she is fought.

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 them 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 themself can emulate this effect. Quina can also use Vanish to protect some party members against Beatrix's attacks.

AI script[]

First battle[]

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

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

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 )


Musical themes[]

"The Wavering Blade" in Final Fantasy IX

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

Gallery[]

Advertisement