Final Fantasy Wiki
Register
Advertisement

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

Stats[]

Battle[]

Lani attacks Dagger from FFIX Remastered

Lani attacks Dagger.

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[]

Stealing Gladius from Lani from FFIX Remastered

Zidane steals from Lani.

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 )


Gallery[]

Related enemies[]

Advertisement