Final Fantasy Wiki
Advertisement

Template:Sideicon Template:Enemy Template:See Also The Cactuar is an enemy from Final Fantasy IX found on the Outer Continent's Donna Plains and the Forgotten Continent's Mainland. 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 burrows above ground or escapes.

It is recommended to do high damage-dealing attacks when it 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. Heat and Freeze are also effective.

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

Stats

Template:FFIX Enemy 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

Template:FFIX Tetra Master

Gallery

Etymology

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

Advertisement