Lani is a boss in Final Fantasy IX, fought in Fossil Roo by Zidane, Vivi, Dagger, and Quina.
Stats[]
Battle[]
In keeping with her mission from Queen Brahne of tracking down Princess Garnet's pendant, Lani will attack Dagger most of the time if she is conscious. In keeping with her secondary objective of killing Vivi, she will then attack him if Dagger is KO'd. While she will normally continue to attack Dagger, Lani will sometimes switch and briefly focus on another character when they attack her physically. She will sometimes rant at the player while counter-attacking a physical attack, yelling, "What do you think you're doing?!" (or "Damn you!" if the physical attack comes from Dagger). That rant indicates that she switches her focus to another target.
Her high Speed and use of level 2 Black Magic make Lani a force to be reckoned with, particularly if the player party is at lower levels.
Strategy[]
Zidane should steal all of Lani's items, and when he's done, start attacking. Vivi should use his Black Magic (Bio is effective). Dagger should heal, and Quina should attack or use Frog Drop if they have caught a lot of frogs. Casting Reflect and Vanish on Dagger makes the battle easier. As Lani is a human, equipping Zidane with the Man Eater is recommended to increase his damage output.
An effective strategy is to equip Dagger with Chemist and Auto-Potion and have her repeatedly cast Reflect on herself. Quina should cast Magic Hammer to deplete Lani's MP until she can no longer use her spells, then cast Vanish on Dagger.
Vivi is free to play a supportive role, only using Focus and Phoenix Downs if needed. The many reflected spells throughout the battle will have made a sizeable dent in Lani's health. Otherwise, he can also physically attack her.
A combination of Dagger's Blind, Vivi's Slow, and repeated uses of Quina's Magic Hammer and Vanish will render Lani almost entirely ineffectual. If Dagger is equipped with Chemist and Auto-Potion, it will allow for virtually unlimited steal attempts.
The fastest and easiest way of winning the fight to bring Quina with a single HP, easily done with Quina's Auto-Life spell, and casting Limit Glove on Lani to deal fixed 9999 damage.
AI script[]
Function Lani_Init
set revengecounter = 255
set attacklist = [ Attack ; Scan ; Blizzara ; Fira ; Thundara ; Water ; Aera ; Attack ]
Function Lani_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 )
set focusedtarget = RandomInTeam(SV_PlayerTeam)
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 )
set SV_Target = SV_FunctionEnemy
AttackSpecial( Death )
while ( IsAttacking != 0 )
Wait( 1 )
set SV_FunctionEnemy[DEFEATED_ON] = 1
RunBattleCode( End Battle, Victory )
Wait( 1 )
loop
Function Lani_ATB
if ( !firsthitflag && #( NotMatching(SV_PlayerTeam[STATUS_CURRENT], PETRIFY | VENOM | DEATH | STOP) & dagger ) )
set firsthitflag = 1
set SV_Target = dagger
Attack( Dagger’s first hit )
set focusedtarget = RandomInTeam(SV_PlayerTeam)
if ( ( revengecounter <= 2 ) || ( !( #dagger ) ) )
if ( revengecounter <= 2 )
if ( #( SV_PlayerTeam & revengetarget ) )
if ( #NotMatching(revengetarget[STATUS_CURRENT], PETRIFY | DEATH | JUMP) )
set focusedtarget = revengetarget
set revengecounter++
else
set revengecounter = 255
else
set revengecounter = 255
else
if ( revengecounter < 255 )
set revengecounter = 255
set daggerfocuscounter = 0
if ( daggerfocuscounter <= 2 )
set daggerfocuscounter++
else
set daggerfocuscounter = 255
if ( #( SV_PlayerTeam & dagger ) && #NotMatching(dagger[STATUS_CURRENT], PETRIFY | DEATH | JUMP) )
set focusedtarget = dagger
set selectedattack = RandomAttack( attacklist )
if ( selectedattack == Attack )
set SV_Target = focusedtarget
elseif ( selectedattack == Scan )
set SV_Target = focusedtarget
elseif ( selectedattack == Blizzara )
set SV_Target = focusedtarget
elseif ( selectedattack == Fira )
set SV_Target = focusedtarget
elseif ( selectedattack == Thundara )
set SV_Target = focusedtarget
elseif ( selectedattack == Water )
set SV_Target = SV_PlayerTeam
elseif ( selectedattack == Aera )
set SV_Target = focusedtarget
elseif ( selectedattack == Attack )
set SV_Target = focusedtarget
if ( selectedattack != Attack )
Attack( selectedattack )
if ( SV_Target == dagger )
if ( daggerfocuscounter <= 1 )
Attack( selectedattack )
if ( taunthadenoughflag )
Attack( selectedattack )
set taunthadenoughflag = 1
Attack( MEShit2 )
if ( revengecounter <= 1 )
Attack( selectedattack )
if ( tauntcomebackflag )
Attack( selectedattack )
set tauntcomebackflag = TRUE
Attack( MEShit1 )
Function Lani_Counter
if ( ( GetAttackCommandId == Skill ) && ( GetAttackId == What's That?! ) )
return
if ( ( SV_FunctionEnemy[HP] - 10000 < ( SV_FunctionEnemy[MAX_HP] - 10000 ) / 2 ) && !midlifedialogflag )
set midlifedialogflag = TRUE
set SV_FunctionEnemy[PREVENT_ATTACK] = 1
set SV_Target = SV_FunctionEnemy
Attack( Fix hair )
set attacker = GetAttacker
if ( GetAttackCommandId != Attack )
return
set SV_Target = attacker
if ( daggerfocuscounter != 255 )
return
if ( attacker == dagger )
set revengecounter = 255
set daggerfocuscounter = 0
set revengetarget = 0
set SV_FunctionEnemy[PREVENT_ATTACK] = 1
set SV_Target = SV_FunctionEnemy
Attack( Hit by Dagger )
if ( revengecounter <= 2 )
return
set SV_FunctionEnemy[PREVENT_ATTACK] = 1
set revengetarget = attacker
if ( #( SV_PlayerTeam & revengetarget ) )
set SV_Target = NotMatching(revengetarget[STATUS_CURRENT], PETRIFY | DEATH | JUMP)
if ( !( #SV_Target ) )
set revengecounter = 255
set daggerfocuscounter = 0
set revengetarget = 0
return
set revengecounter = 0
Attack( MEScounter )