FANDOM


FFIX wiki icon

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

StatsEdit

BattleEdit

In keeping with her mission from Queen Brahne of tracking down Princess Garnet's pendant, Lani will attack Garnet most of the time if she is conscious. In keeping with her secondary objective of killing Vivi, she will then attack him if Garnet is KO'd. While she will normally continue to attack Garnet, 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 Garnet). 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.

StrategyEdit

Zidane should steal all of her items, and when he's done he should start attacking. Vivi should use his Black Magic (Bio is effective). Garnet should heal, and Quina should attack or use Frog Drop if s/he has caught a lot of frogs. Casting Reflect on Garnet 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 Garnet 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 Garnet.

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 Garnet's Blind, Vivi's Slow, and repeated uses of Quina's Magic Hammer and Vanish will render Lani almost entirely ineffectual. If Garnet is equipped with Chemist and Auto-Potion, it will allow for virtually unlimited steal attempts.

The fastest and easiest way of winning the fight is bringing 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 scriptEdit

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

Community content is available under CC-BY-SA unless otherwise noted.