Final Fantasy Wiki
Register
Advertisement

Black Waltz No. 3 is a boss from Final Fantasy IX. It is the third and final winged black mage manufactured by Zorn and Thorn to apprehend Princess Garnet.

Story[]

Spoiler warning: Plot and/or ending details follow. (Skip section)
FF9-waltz3

Black Waltz No. 3.

The third of the Black Waltz-type black mages, Black Waltz 3 is fought on the cargo ship when the party is on the way to Alexandria, just as Zidane implements his plan to steal the ship and go to Lindblum instead. When the regular black mages attempt to protect Vivi, it wipes them out in a Thundara attack, sending them flying off the ship.

Vivi becomes enraged, and a battle ensues. After being defeated, Black Waltz No. 3 refuses to accept it is not invincible and commandeers Zorn and Thorn's small airship. It pursues the cargo ship until it loses control of the craft and crashes into South Gate.

Damaged Black Waltz 3 from FFIX Remastered

A malfunctioning Black Waltz 3.

Later, Black Waltz No. 3 attacks the train containing Garnet, Marcus, and Steiner, greatly weakened but still seeking to capture Garnet. She attempts to question Black Waltz No. 3 of her mother's intentions, but it blindly attacks and is destroyed at last.

Spoilers end here.

Stats[]

#31

#59

Formations[]

Enemies Frequency AP
????
Can't escape. Characters do not pose on victory. No rewards given.
Black Waltz 3 (#031) 100% 5
????
Can't escape.
Black Waltz 3 (#059) 100% 5

Battle[]

First battle[]

Get out of my way! Do you dare fight a Black Waltz?

Black Waltz No. 3

The battle begins with Vivi going into Trance. Unlike Black Waltz No. 2, Black Waltz No. 3 doesn't counter Vivi's spells. Steiner should be using sword magic until he runs out of MP, or toss a potion if needed. Zidane should focus on passing around potions to the injured party member, or focus on stealing equipment off the boss.

Despite the Waltz's use of high level magic (Thundara, Blizzara, Fira), the only tough part is when it is airborne. To prevent this, none of the party members should attack, for this will cause the Black Waltz to fly into the air for some time and deal Thundara spell to all members of the party while also being immune to further normal attacks.

Second battle[]

Mission... retrieve... princess... alive...

Black Waltz No. 3

The Black Waltz is more volatile, and its attacks do more damage, but the player cannot lose this battle unless they command the characters to knock out Dagger, as Black Waltz No. 3 will never attack her, and if she is the only ally left, the boss will damage itself. It is recommended to keep Marcus alive, because this Black Waltz has some valuable items he can steal, which are useful for Vivi later on; plus, it helps add damage to Zidane's Thievery skill acquired much later.

AI script[]

First battle[]

Using global variable zidane
Using global variable vivi
Using global variable steiner

Function Black_Waltz_3_Init
   set attacklist = [ Hit ; Fira ; Blizzard ; Thundara ]

Function Black_Waltz_3_Loop
   if ( !initflag )
      set initflag = 1
      set SV_FunctionEnemy[ATB] = SV_FunctionEnemy[MAX_ATB]
      set evade = SV_FunctionEnemy[EVADE]
      set magicdefence = SV_FunctionEnemy[MAGIC_DEFENCE]
      set zidane = ( SV_PlayerTeam[MODEL_TYPE] ==$ 0 )
      set zidane |= ( SV_PlayerTeam[MODEL_TYPE] ==$ 1 )
      set vivi = ( SV_PlayerTeam[MODEL_TYPE] ==$ 2 )
      set steiner = ( SV_PlayerTeam[MODEL_TYPE] ==$ 7 )
      set steiner |= ( SV_PlayerTeam[MODEL_TYPE] ==$ 8 )
      if ( #( NotMatching(SV_PlayerTeam[STATUS_CURRENT], PETRIFY | VENOM | DEATH | STOP) & vivi ) )
         set vivi[ATB] = 0
      if ( #( NotMatching(SV_PlayerTeam[STATUS_CURRENT], PETRIFY | VENOM | DEATH | STOP) & zidane ) )
         set zidane[ATB] = 0
      if ( #( NotMatching(SV_PlayerTeam[STATUS_CURRENT], PETRIFY | VENOM | DEATH | STOP) & steiner ) )
         set steiner[ATB] = 0
      RunBattleCode( Enable ATB )
   if ( SV_FunctionEnemy[HP] <= 10000 )
      while ( IsAttacking != 0 )
         Wait( 1 )
      RunBattleCode( Disable ATB)
      while ( GetBattleState != 1 )
         Wait( 1 )
      if ( SV_FunctionEnemy[STAND_ANIMATION] == 0 )
         set SV_Target = SV_FunctionEnemy
         RunBattleCode( Run Camera, 9 )
         AttackSpecial( WAITANIM )
         while ( IsAttacking != 0 )
            Wait( 1 )
         AttackSpecial( Die1 )
         Wait( 70 )
         FadeFilter( FILTER_SUBTRACT, 20, BLACK )
      else
      set SV_Target = SV_FunctionEnemy
         RunBattleCode( Run Camera, 10 )
         AttackSpecial( WAITANIM )
         while ( IsAttacking != 0 )
            Wait( 1 )
         AttackSpecial( Die2 )
         Wait( 83 )
         FadeFilter( FILTER_SUBTRACT, 20, BLACK )
      while ( IsAttacking != 0 )
         Wait( 1 )
      RunBattleCode( End Battle, INTERRUPTED )
      return
   if ( SV_FunctionEnemy[STAND_ANIMATION] == 0 )
      set SV_FunctionEnemy[EVADE] = evade
      set SV_FunctionEnemy[MAGIC_DEFENCE] = magicdefence
   else
      set SV_Target = SV_FunctionEnemy
      set SV_FunctionEnemy[EVADE] = 99
      set SV_FunctionEnemy[MAGIC_DEFENCE] = magicdefence - 3
   Wait( 1 )
   loop

Function Black_Waltz_3_ATB
   set target = RandomInTeam(SV_PlayerTeam)
   if ( !tranceflag )
      set tranceflag = 1
      if ( #( NotMatching(SV_PlayerTeam[STATUS_CURRENT], PETRIFY | VENOM | ZOMBIE | DEATH | STOP) & vivi ) )
         set SV_Target = vivi
         Attack( Trance Full )
   if ( !allowtargetingvivi )
      set allowtargetingvivi = 1
      set target = RandomInTeam(SV_PlayerTeam) & ~vivi
   if ( SV_FunctionEnemy[STAND_ANIMATION] == 0 )
      set selectedattack = RandomAttack( attacklist )
      if ( selectedattack == Hit )
            set SV_Target = target
         elseif ( selectedattack == Fira )
            set SV_Target = target
         elseif ( selectedattack == Blizzard )
            set SV_Target = target
         elseif ( selectedattack == Thundara )
            set SV_Target = target
         Attack( selectedattack )
   elseif ( SV_FunctionEnemy[MP] < 12 )
      set SV_Target = SV_FunctionEnemy
      Attack( Continue2 )
   set thundaracounter++
   if ( thundaracounter >= 2 )
      set thundaracounter = 0
      set SV_Target = SV_PlayerTeam
      Attack( Thundara )
   set SV_Target = SV_PlayerTeam
   Attack( Thundara )

Function Black_Waltz_3_CounterEx
   if ( GetAttackId == Continue1 )
      set SV_FunctionEnemy[PREVENT_ATTACK] = 1

Function Black_Waltz_3_Counter
   if ( ( GetAttackCommandId == Skill ) && ( GetAttackId == What's That?! ) )
      return
   if ( SV_FunctionEnemy[MP] < 12 )
      return
   if ( GetAttackCommandId != Attack )
      return
   if ( SV_FunctionEnemy[STAND_ANIMATION] == 0 )
      set SV_Target = SV_FunctionEnemy
      Attack( Continue1 )
   else
      if ( !mes1flag )
         set mes1flag = 1
         set SV_Target = SV_FunctionEnemy
         Attack( MES1 )


Second battle[]

Using global variable dagger

Function Black_Waltz_3_Init
   set attacklist = [ Hit ; Fire ; Blizzard ; Thunder ; Freeze ; Hit ; Hit ; Hit ]


Function Black_Waltz_3_Loop
   if ( !initflag )
      set initflag = 1
      set dagger = ( SV_PlayerTeam[MODEL_TYPE] ==$ 3 )
      set dagger |= ( SV_PlayerTeam[MODEL_TYPE] ==$ 4 )
      set dagger |= ( SV_PlayerTeam[MODEL_TYPE] ==$ 5 )
      set dagger |= ( SV_PlayerTeam[MODEL_TYPE] ==$ 6 )
      RunBattleCode( Enable ATB )
      while ( GetBattleState != 4 )
         Wait( 1 )
   if ( attackwaiting )
      if ( !( #( ( NotMatching(SV_PlayerTeam[STATUS_CURRENT], PETRIFY | VENOM | DEATH | STOP) | NotMatching(SV_EnemyTeam[STATUS_CURRENT], PETRIFY | VENOM | DEATH | STOP) ) & target ) ) )
         set SV_FunctionEnemy[PREVENT_ATTACK] = 1
   if ( GetAttacker == SV_FunctionEnemy )
      set attackwaiting = 0
   Wait( 1 )
   loop

Function Black_Waltz_3_ATB
   if ( NotMatching(SV_PlayerTeam[STATUS_CURRENT], PETRIFY | VENOM | DEATH | STOP) == dagger )
      set SV_Target = SV_FunctionEnemy
      if ( suicidecounter == 0 )
         set suicidecounter = 1
         Attack( Crack! )
      elseif ( suicidecounter == 1 )
         set suicidecounter = 2
         Attack( MES use )
      elseif ( suicidecounter == 2 )
         set suicidecounter = 3
         Attack( Crack! )
      elseif ( suicidecounter == 3 )
         set suicidecounter = 4
         Attack( MES use )
      elseif ( suicidecounter == 4 )
         set suicidecounter = 5
         Attack( Crack! )
      elseif ( suicidecounter == 5 )
         set suicidecounter = 6
         Attack( MES use )
      elseif ( selectedattack == 6 )
         set suicidecounter = 7
         Attack( Crack! )
      elseif ( selectedattack == 7 )
         set suicidecounter = 0
         Attack( MES use )
   set selectedattack = RandomAttack( attacklist )
   if ( selectedattack == Hit )
         set SV_Target = RandomInTeam( NotMatching(SV_PlayerTeam[STATUS_CURRENT], PETRIFY | VENOM | DEATH | STOP) & ~dagger )
   elseif ( selectedattack == Fire )
         set SV_Target = RandomInTeam( NotMatching(SV_PlayerTeam[STATUS_CURRENT], PETRIFY | VENOM | DEATH | STOP) & ~dagger )
   elseif ( selectedattack == Blizzard )
         set SV_Target = RandomInTeam( NotMatching(SV_PlayerTeam[STATUS_CURRENT], PETRIFY | VENOM | DEATH | STOP) & ~dagger )
   elseif ( selectedattack == Thunder )
         set SV_Target = RandomInTeam( NotMatching(SV_PlayerTeam[STATUS_CURRENT], PETRIFY | VENOM | DEATH | STOP) & ~dagger )
   elseif ( selectedattack == Freeze )
         set SV_Target = RandomInTeam( NotMatching(SV_PlayerTeam[STATUS_CURRENT], PETRIFY | DEATH | JUMP | FREEZE) ) & ~dagger
   elseif ( selectedattack == Hit )
         set SV_Target = RandomInTeam( NotMatching(SV_PlayerTeam[STATUS_CURRENT], PETRIFY | VENOM | DEATH | STOP) & ~dagger )
   elseif ( selectedattack == Hit )
         set SV_Target = RandomInTeam(Matching(SV_PlayerTeam[STATUS_CURRENT], FREEZE) & ~dagger
   elseif ( selectedattack == Hit )
         set SV_Target = RandomInTeam(Matching(SV_PlayerTeam[STATUS_CURRENT], FREEZE) & ~dagger
   if ( SV_Target == dagger )
      set SV_Target = 0
   set attackwaiting = TRUE
   set target = SV_Target
   Attack( selectedattack )


Other appearances[]

Dissidia Final Fantasy Opera Omnia[]

DFFOO Black Waltz 3 Icon

Black Waltz No. 3 appears as an enemy boss in the ninth chapter.

Theatrhythm Final Fantasy[]

Black Waltz No. 3.

One of the elite black mages who serve Alexandria. It looks down on all creation as it sees destruction as the only purpose for its existence. It will go to any length to do its duty, a mad light dancing in its eyes...

CollectaCard

The Black Waltz No. 3 appears as an enemy.

Theatrhythm Final Fantasy Curtain Call[]

Black Waltz No.3 appears as an enemy in Battle Music Sequences.

Pictlogica Final Fantasy[]

PFF Black Waltz 3
Baknamy FFTA2This section about an enemy in Pictlogica Final Fantasy is empty or needs to be expanded. You can help the Final Fantasy Wiki by expanding it.


Final Fantasy Airborne Brigade[]

Black Waltz 3 appears as an enemy during the second part of the "Shattered World" event. In battle, Black Waltz 3 uses Thundara.

Final Fantasy Record Keeper[]

FFRK Black Waltz 3 FFIX

Black Waltz 3 appears as an enemy.

Final Fantasy Brave Exvius[]

FFI PSP Black Mage MapThis section about a character in Final Fantasy Brave Exvius is empty or needs to be expanded. You can help the Final Fantasy Wiki by expanding it.


Final Fantasy Artniks[]

Impresario-ffvi-iosThis section in Final Fantasy Artniks is empty or needs to be expanded. You can help the Final Fantasy Wiki by expanding it.


Final Fantasy Trading Card Game[]

Black Waltz 3 appears in Final Fantasy Trading Card Game as Lightning-elemental Forward cards.

Final Fantasy Portal App[]

188a Black Waltz 3

Black Waltz 3 appears as a Triple Triad card.

Gallery[]

Related enemies[]

Advertisement