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[]
Formations[]
| |||||||
---|---|---|---|---|---|---|---|
???? |
|
Battle[]
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[]
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. Vivi can use Focus until he is strong enough to finish off the Black Waltz 2, avoiding any counterattacks.
AI script[]
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[]
Pictlogica Final Fantasy[]
Final Fantasy Trading Card Game[]
Black Waltz 2 appears in Final Fantasy Trading Card Game as Fire-elemental Backup cards.
Final Fantasy Portal App[]
Black Waltz 2 appears as a Triple Triad card.
Behind the scenes[]
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.