Final Fantasy Wiki
Advertisement

The Cactuar is an enemy from Final Fantasy IX, found on the dirt terrains on Outer Continent's Donna Plains and the Forgotten Continent's mainland. Cactuars are one of the few enemies in the game that can appear in groups of four. It will hide underground when attacked. While underground, it will cast Confuse and counter all attacks with 1000 Needles. If killed while underground, it will still counterattack before dying. It is safer to wait until it either appears aboveground or escapes.

It is recommended to do high damage-dealing attacks when the Cactuar is underground, or have everyone defend and Vivi use Focus. Iai Strike, LV5 Death and Odin can defeat a Cactuar with ease, and so can Fire-elemental attacks, such as Fira and Ifrit and Fira Sword. Heat and Freeze are also effective.

Quina can learn 1,000 Needles from eating a Cactuar, which is reasonably powerful when it is first encountered.

Stats[]

AI script[]

Use global variable deathneedlesflag

Function Cactuar_Init
   set appearswitch = GetRandom & 1

Function Cactuar_Loop
   if ( !initflag )
      if ( #SV_EnemyTeam == 1 )
         set isalone = 1
      set SV_FunctionEnemy[MODEL_OFF] = 1
      set SV_FunctionEnemy[SHADOW] = 0
      set initflag = 1
   if ( lastattack == Haste && ( !( #Matching(lasttarget[STATUS_CURRENT], CONFUSE) ) || #Matching(lasttarget[STATUS_CURRENT], HASTE) || #Matching(lasttarget[STATUS_AUTO], HASTE) || #Matching(lasttarget[STATUS_CURRENT], PETRIFY | VENOM | DEATH | STOP) ) )
      set SV_FunctionEnemy[PREVENT_ATTACK] = 1
      set lastattack = 255
   Wait( 1 )
   loop

Function Cactuar_ATB
   if ( #( SV_FunctionEnemy[STAND_ANIMATION] == 0 ) )
      set appearswitch = ( ~appearswitch ) & 1
      if ( appearswitch )
         set SV_Target = SV_FunctionEnemy
         set lastattack = Appearance
         Attack( Appearance )
      else
         set SV_Target = RandomInTeam(SV_PlayerTeam)
         set lasttarget = SV_Target
         set lastattack = Confuse
         Attack( Confuse )
   else
      set SV_Target = RandomInTeam( NotMatching(SV_PlayerTeam[STATUS_CURRENT], PETRIFY | VENOM | DEATH | STOP | HASTE) & NotMatching(SV_PlayerTeam[STATUS_AUTO], HASTE) & Matching(SV_PlayerTeam[STATUS_CURRENT], CONFUSE) )
      if ( SV_Target != 0 )
         set lasttarget = SV_Target
         set lastattack = Haste
         Attack( Haste )
      else
         set SV_Target = RandomInTeam(SV_PlayerTeam)
         set lasttarget = SV_Target
         set lastattack = Head Attack
         Attack( Head Attack )

Function Cactuar_CounterEx
   if ( SV_FunctionEnemy == GetAttacker )
      set SV_FunctionEnemy[PREVENT_ATTACK] = 1
      set lastattack = 255
      if ( GetAttackId == Appearance )
         set SV_FunctionEnemy[SHADOW] = 1
      if ( GetAttackId == Hide )
         set SV_FunctionEnemy[SHADOW] = 0

Function Cactuar_Counter
   if ( ( GetAttackCommandId == Skill ) && ( GetAttackId == What's That?! ) )
      return
   if ( ( ( GetAttackCommandId == Steal ) || ( GetAttackCommandId == Item ) ) || ( GetAttackCommandId == Cook ) )
      return
   if ( isalone && ( GetAttackCommandId != Attack) )
      return
   set SV_Target = GetAttacker
   if ( !( #( SV_PlayerTeam & SV_Target ) ) )
      return
   if ( SV_FunctionEnemy[STAND_ANIMATION] == 0 )
      Attack( 1,000 Needles )
   else
      set SV_Target = SV_FunctionEnemy
      Attack( Hide )

Function Cactuar_Death
   if ( deathneedlesflag )
      return
   if ( #Matching(SV_FunctionEnemy[STATUS_CURRENT], SILENCE) )
      return
   if ( #( SV_FunctionEnemy[STAND_ANIMATION] == 1 ) )
      return
   set SV_Target = GetAttacker
   if ( !( #( SV_PlayerTeam & SV_Target ) ) )
      return
   Attack( 1,000 Needles )
   set deathneedlesflag = 1


Tetra Master[]

Tetra Master
Cactuar
#024
Location: Lindblum, Business District "Young Lady"


Gallery[]

Etymology[]

Sabotender (サボテンダー, Sabotendā?) is derived from mixing the Japanese word for cactus (サボテン, saboten?) and the English word "pretender" (プリテンダー, puritendā?).

Advertisement