Resistance is futile.
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
Formations
Edit
| |||||||
---|---|---|---|---|---|---|---|
???? |
|
Battle
Edit
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). The Black Waltz No. 2 rarely casts its level two magic, 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, it 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 if Steiner's Sword Magic is used against him.
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
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
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
Pictlogica Final Fantasy
Edit

Final Fantasy Trading Card Game
Edit
Black Waltz 2 appears with a Fire-elemental card
Triple Triad
Edit
Black Waltz 2 appears on a Triple Triad card in the version playable via Final Fantasy Portal App.
Gallery
Edit
Trivia
Edit
- 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.