Mirror Dagger is a humanoid enemy from Final Fantasy IX. The party can fight her if an Epitaph (Dagger) uses its Mirror ability after Dagger cuts her hair as part of the story. Epitaph's Mirror ability will be triggered if any non lethal action is aimed at it.
Mirror Dagger will immediately deal 9,999 damage to Dagger. Using Iai Strike can defeat mirror Dagger in one blow, or the player may opt to have Man Eater equipped to increase the amount of damage done to this enemy. The player can farm Lapis Lazulis from her.
Mirror Dagger is the only mirror-type enemy that cannot be encountered when visiting Oeilvert for the first time; she has her hair cut and cannot appear until the real Dagger cuts her own. If the player returns to Oeilvert after obtaining the Hilda Garde III, mirror Dagger can be encountered in the Grand Hall and the Display.
Stats[]
AI script[]
Using global variable dialogtarget
Using global variable dialogspeaker
Using global variable waitingdialog
Using global variable dialogstate
Using global variable epitaph
Using global variable mirror1
Using global variable mirror2
Using global variable mirror3
Using global variable mirrorindexcounter
Using global variable mirrorstate
Function Main_Loop
if ( waitingdialog )
while ( GetAttacker != dialogspeaker )
Wait( 1 )
Wait( 15 )
if ( #( NotMatching(SV_EnemyTeam[STATUS_CURRENT], PETRIFY | DEATH | JUMP) & dialogspeaker ) )
set waitingdialog = FALSE
if ( !( #dialogtarget ) )
BattleDialog( "I am Dagger." )
set dialogstate |= 16
set dialogstate |= 8
else
if ( #( ( NotMatching(SV_PlayerTeam[STATUS_CURRENT], PETRIFY | DEATH | JUMP) ) & dialogtarget ) )
if ( dialogstate & 16 )
BattleDialog( "Who are you?" )
else
BattleDialog( "I am Dagger." )
set dialogstate |= 16
set dialogstate |= 8
set dialogtarget = 0
Wait( 1 )
loop
Function Dagger_Loop
if ( !initflag )
set SV_FunctionEnemy[SHADOW] = 0
set SV_FunctionEnemy[TARGETABLE] = 0
set mirrorindex = mirrorindexcounter++
while ( GetBattleState != 4 )
Wait( 1 )
set initflag++
elseif ( initflag == 1 )
if ( !( ( mirrorstate >> ( mirrorindex * 4 ) ) & 0xF ) )
if ( !( #( NotMatching(SV_EnemyTeam[STATUS_CURRENT], PETRIFY | VENOM | DEATH | STOP) & epitaph ) ) )
while ( IsAttacking != 0 )
Wait( 1 )
if ( !( ( mirrorstate >> ( mirrorindex * 4 ) ) & 0xF ) )
if ( NotMatching(SV_EnemyTeam[STATUS_CURRENT], PETRIFY | VENOM | DEATH | STOP) == SV_FunctionEnemy )
if ( !IsRebirthFlameCasted )
RunBattleCode( Disable ATB )
while ( GetBattleState != 1 )
Wait( 1 )
RunBattleCode( End Battle, Victory )
return
else
set SV_FunctionEnemy[PRESENCE_OFF] = 1
return
else
if ( waitingos )
set dagger = NotMatching(SV_PlayerTeam[STATUS_CURRENT], PETRIFY | DEATH | JUMP)
set dagger = RandomInTeam( ( dagger[MODEL_TYPE] ==$ 3 ) | ( dagger[MODEL_TYPE] ==$ 4 ) | ( dagger[MODEL_TYPE] ==$ 5 ) | ( dagger[MODEL_TYPE] ==$ 6 ) )
if ( !( #dagger ) )
set dialogtarget = 0
set SV_FunctionEnemy[PREVENT_ATTACK] = 1
set waitingos = FALSE
set SV_FunctionEnemy[ATB] = SV_FunctionEnemy[MAX_ATB]
if ( GetAttacker == SV_FunctionEnemy )
set waitingos = FALSE
if ( waitingattack )
set dagger = NotMatching(SV_PlayerTeam[STATUS_CURRENT], PETRIFY | DEATH | JUMP)
set dagger = RandomInTeam( ( dagger[MODEL_TYPE] ==$ 3 ) | ( dagger[MODEL_TYPE] ==$ 4 ) | ( dagger[MODEL_TYPE] ==$ 5 ) | ( dagger[MODEL_TYPE] ==$ 6 ) )
if ( #dagger )
set SV_FunctionEnemy[PREVENT_ATTACK] = 1
set waitingattack = FALSE
set SV_FunctionEnemy[ATB] = SV_FunctionEnemy[MAX_ATB]
if ( GetAttacker == SV_FunctionEnemy )
set waitingattack = FALSE
Wait( 1 )
loop
Function Dagger_ATB
if ( ( mirrorstate >> ( mirrorindex * 4 ) ) & 0xF == 1 )
set SV_Target = NotMatching(SV_PlayerTeam[STATUS_CURRENT], PETRIFY | DEATH | JUMP)
set SV_Target = RandomInTeam( ( SV_Target[MODEL_TYPE] ==$ 3 ) | ( SV_Target[MODEL_TYPE] ==$ 4 ) | ( SV_Target[MODEL_TYPE] ==$ 5 ) | ( SV_Target[MODEL_TYPE] ==$ 6 ) )
if ( #SV_Target )
set waitingos = TRUE
set dialogtarget = SV_Target
set dialogspeaker = SV_FunctionEnemy
set waitingdialog = TRUE
Attack( Battlemes0 )
set SV_Target = RandomInTeam( NotMatching(SV_PlayerTeam[STATUS_CURRENT], PETRIFY | DEATH | JUMP) )
set waitingattack = TRUE
if ( !( dialogstate & 8 ) )
set dialogspeaker = SV_FunctionEnemy
set waitingdialog = TRUE
Attack( Attack )
else
Attack( Attack )
else
Attack( None )