Resistance is futile.

Black Waltz No. 2

Black Waltz No. 2 is a boss from Final Fantasy IX. It attacks the party on the airfield at Dali. It has a taunting manner and is only interested in capturing Dagger and will not even converse with Steiner, Vivi, or Zidane. When the battle is over, Dagger will attempt to get information from the dying construct but to no avail.

Stats[edit | edit source]

Formations[edit | edit source]

Enemies Frequency AP
????
Can't escape.
Black Waltz 2 100% 5

Battle[edit | edit source]

Black Waltz 2's attacks never hit Dagger.

The Black Waltz will not attack Dagger, but if she is the last party member standing, the Black Waltz will cast Hypnotize on her, and it will be Game Over.

This Black Waltz uses second level Black Magic (Fira, Thundara, Blizzara). It rarely casts them, but halfway through the battle, will cast one, usually Fira, after saying, "My mission is to take back the princess!" If Vivi casts magic on it, Black Mage No. 2 will taunt him by using the next spell up. For example, if Vivi uses Thunder, the Black Waltz will counter with Thundara, claiming, "This is how you use Thunder!" It does not retaliate in this way to Steiner's Sword Magic.

Once its HP drops under 515 HP and Vivi is still alive, the Black Waltz No. 2 will cast Fira on the entire party, bar Dagger.

Strategy[edit | edit source]

Dagger should continuously heal the other party members as she doesn't need to fear being attacked. Vivi and Steiner can combine their forces to use Sword Magic against the Black Waltz.

AI script[edit | edit source]

Using global variable dagger

Function Black_Waltz_2_Init
   set attacklist = [ Fire ; Blizzard ; Thunder ; Teleport ; Teleport ]


Function Black_Waltz_2_Loop
   if ( !initflag )
      set initflag = TRUE
      set SV_FunctionEnemy[ATB] = SV_FunctionEnemy[MAX_ATB] - 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 )
      while ( GetBattleState != 1 )
         Wait( 1 )
      set SV_Target = SV_FunctionEnemy
      AttackSpecial( Appearance )
      while ( IsAttacking != 0 )
         Wait( 1 )
      RunBattleCode( Enable ATB )
      while ( GetBattleState != 4 )
         Wait( 1 )
   if ( SV_FunctionEnemy[HP] <= 10000 )
      while ( IsAttacking != 0 )
         Wait( 1 )
      RunBattleCode( Disable ATB )
      while ( GetBattleState != 1 )
         Wait( 1 )
      set SV_Target = SV_FunctionEnemy
      RunBattleCode( Run Camera, 9 )
      AttackSpecial( Die )
      set SV_FunctionEnemy[DEFEATED_ON] = 1
      while ( IsAttacking != 0 )
         Wait( 1 )
      RunBattleCode( End Battle, Victory )
   if ( ( NotMatching(SV_PlayerTeam[STATUS_CURRENT], PETRIFY | VENOM | DEATH | STOP) == dagger ) && #Matching(dagger[STATUS_CURRENT], SLEEP) )
      while ( IsAttacking != 0 )
         Wait( 1 )
      RunBattleCode( Disable ATB )
      while ( GetBattleState != 1 )
         Wait( 1 )
      set SV_Target = SV_FunctionEnemy
      AttackSpecial( End )
      while ( IsAttacking != 0 )
         Wait( 1 )
      RunBattleCode( 34, 0 ) // Game Over
   if ( ( #NotMatching(SV_PlayerTeam[STATUS_CURRENT], PETRIFY | VENOM | DEATH | STOP) & lasttarget ) == 0 ) && ( lasttarget != SV_FunctionEnemy ) && ( lasttarget != 0 ) )
      set SV_FunctionEnemy[PREVENT_ATTACK] = 1
   if ( ( #NotMatching(SV_PlayerTeam[STATUS_CURRENT], PETRIFY | VENOM | DEATH | STOP) > 1 ) && ( lastattack == MES1 ) )
      set SV_FunctionEnemy[PREVENT_ATTACK] = 1
      set hypnotizecounter = 0
   if ( ( #NotMatching(SV_PlayerTeam[STATUS_CURRENT], PETRIFY | VENOM | DEATH | STOP) > 1 ) && ( lastattack == Hypnotize ) )
      set SV_FunctionEnemy[PREVENT_ATTACK] = 1
      set hypnotizecounter = 0
   Wait( 1 )
   loop


Function Black_Waltz_2_ATB
   set lastattack = 255
   if ( #( SV_PlayerTeam & dagger ) && ( #Matching(dagger[STATUS_CURRENT], SLEEP) == 0 ) && ( NotMatching(SV_PlayerTeam[STATUS_CURRENT], PETRIFY | VENOM | DEATH | STOP) == dagger ) )
      if ( hypnotizecounter < 255 )
         set hypnotizecounter++
      if ( hypnotizecounter == 1 )
         if ( !mes1flag )
            set SV_Target = SV_FunctionEnemy
            set lasttarget = SV_Target
            set lastattack = MES1
            Attack( MES1 )
         else
            set SV_Target = 0
            set lasttarget = SV_Target
            set lastattack = Fire
            Attack( Fire )
      elseif ( hypnotizecounter == 2 )
         set SV_Target = dagger
         set lasttarget = SV_Target
         set lastattack = Hypnotize
         Attack( Hypnotize )
   if ( #NotMatching(SV_PlayerTeam[STATUS_CURRENT], PETRIFY | VENOM | DEATH | STOP) == 2 )
      set validtarget = NotMatching(SV_PlayerTeam[STATUS_CURRENT], PETRIFY | VENOM | DEATH | STOP) & ~dagger
      if ( #( SV_PlayerTeam & validtarget ) && #Matching(validtarget[STATUS_CURRENT], LOW_HP) && !skipturnflag && !( GetRandom & 1 ) )
         set skipturnflag = TRUE
         set SV_Target = 0
         set lasttarget = SV_Target
         set lastattack = Fire
         Attack( Fire )
   set hypnotizecounter = 0
   set skipturnflag = FALSE
   if ( !teleportflag )
      set SV_Target = SV_PlayerTeam & ~dagger
      set SV_Target = RandomInTeam( NotMatching(SV_Target[STATUS_CURRENT], PETRIFY | DEATH | JUMP) )
      set lasttarget = SV_Target
      set teleportflag = TRUE
      set lastattack = Teleport
      Attack( Teleport )
   set selectedattack = RandomAttack( attacklist )
   if ( selectedattack == Fire )
      set SV_Target = RandomInTeam(SV_PlayerTeam)
      set mpcost = 6
   elseif ( selectedattack == Blizzard )
      set SV_Target = RandomInTeam(SV_PlayerTeam)
      set mpcost = 6
   elseif ( selectedattack == Thunder )
      set SV_Target = RandomInTeam(SV_PlayerTeam)
      set mpcost = 6
   elseif ( selectedattack == Teleport )
      set SV_Target = RandomInTeam(SV_PlayerTeam)
      set mpcost = 0
   elseif ( selectedattack == Teleport )
      set SV_Target = RandomInTeam(SV_PlayerTeam)
      set mpcost = 0
   if ( ( GetRandom % 3 ) && ( SV_FunctionEnemy[MP] <= mpcost ) )
      set selectedattack = Osmose
   set SV_Target = SV_PlayerTeam & ~dagger
   set SV_Target = RandomInTeam( NotMatching(SV_Target[STATUS_CURRENT], PETRIFY | DEATH | JUMP) )
   set lasttarget = SV_Target
   set lastattack = selectedattack
   Attack( selectedattack )


Function Black_Waltz_2_Counter
   if ( ( GetAttackCommandId == Skill ) && ( GetAttackId == What's That?! ) )
      return
   if ( ( SV_FunctionEnemy[HP] - 10000 ) < ( SV_FunctionEnemy[MAX_HP] - 10000 ) / 2 )
      set firatarget = SV_FunctionEnemy
   else
      set firatarget = 0
   if ( #firatarget && !firaflag )
      set firaflag = TRUE
      set SV_Target = SV_PlayerTeam & ~dagger
      set SV_Target = RandomInTeam( NotMatching(SV_Target[STATUS_CURRENT], PETRIFY | DEATH | JUMP) )
      Attack( Fira )
   if ( ( GetAttackCommandId != Blk Mag ) && ( GetAttackCommandId != Dbl Blk ) )
      return
   set SV_Target = SV_PlayerTeam & ~dagger
   set SV_Target = RandomInTeam( NotMatching(SV_Target[STATUS_CURRENT], PETRIFY | DEATH | JUMP) )
   if ( GetAttackId == Fire )
      Attack( Fire )
   elseif ( GetAttackId == Fira )
      Attack( Fira )
   elseif ( GetAttackId == Blizzard )
      Attack( Blizzard )
   elseif ( GetAttackId == Blizzara )
      Attack( Blizzara )
   elseif ( GetAttackId == Thunder )
      Attack( Thunder )
   elseif ( GetAttackId == Thundara )
      Attack( Thundara )


Function Black_Waltz_2_CounterEx
   if ( GetAttackId == MES1 )
      set mes1flag = TRUE
      set lastattack = 255
   if ( SV_FunctionEnemy[HP] == 0 )
      if ( ( SV_EnemyTeam[MODEL] ==$ SV_FunctionEnemy[MODEL] ) == SV_FunctionEnemy )
         set SV_FunctionEnemy[STOP_ANIM] = 2
         set SV_FunctionEnemy[PLAY_ANIM_ONCE] = 0


Other appearances[edit | edit source]

Pictlogica Final Fantasy[edit | edit source]

PFF BlackWaltz2.png
Baknamy FFTA2.pngThis 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 Trading Card Game[edit | edit source]

BlackWaltz2 TCG.png

Black Waltz 2 appears with a Fire-elemental card

Triple Triad[edit | edit source]

187a Black Waltz 2.png

Black Waltz 2 appears on a Triple Triad card in the version playable via Final Fantasy Portal App.

Behind the scenes[edit | edit source]

Dagger can't have Insomniac at this point in a normal playthrough, but were the player to use hacks and equip that on her, and then let the other party members perish, Black Waltz 2 would try to hypnotize her. After failing at this, it would not try again, and would stop acting for a lack of valid targets, unless another party member is revived.

The Black Waltz No.2's Fira spell was made to deal less damage in the overseas versions than in the original Japanese version.

Gallery[edit | edit source]

Related enemies[edit | edit source]

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