FANDOM


Lani is a boss in Final Fantasy IX, fought in Fossil Roo by Zidane, Vivi, Dagger, and Quina.

StatsEdit

Battle Edit

In keeping with her mission from Queen Brahne of tracking down Princess Garnet's pendant, she will always attack Dagger if she is conscious. In keeping with her other objective of killing Vivi, she will 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 come out of Trance or attack her physically.

Her high Speed and use of level 2 Black Magic make her a force to be reckoned with, particularly if the player party is at lower levels. She will sometimes rant at the player while counter-attacking a physical attack, yelling, "What do you think you're doing!?"

Strategy Edit

Zidane should steal all of her items, and when he's done he should start attacking. Vivi should use his Black Magic to hurt Lani (Bio is effective). Dagger should heal herself and her allies, and Quina should attack or use Frog Drop if s/he has caught a lot of frogs. Casting Reflect on Dagger makes the battle easier. As Lani is a humanoid, equipping Zidane with the Man Eater is recommended to increase his damage output.

An effective strategy to neutralize Lani 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.

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.

By far the fastest and easiest way of winning the fight is bringing Quina into the fight with 1 HP, easily done with Quina's Auto-Life spell, and casting Limit Glove on Lani. This will deal fixed 9999 damage to her, almost double her Max HP.

AI Script Edit

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 )

Related enemies Edit