FANDOM


FFIX wiki icon

You're no match for me! Ignorant fools.
—Beatrix in Burmecia

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

The first two times she is faced, Beatrix is immune to status ailments except Slow. The final time she is faced, she is immune to all ailments.

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 final attack, effectively wasting it.

Strategy Edit

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

Musical themes Edit

"The Wavering Blade" in Final Fantasy IX
Music
Mystery Sword

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

Gallery Edit

Community content is available under CC-BY-SA unless otherwise noted.