Kuja is fought as the boss atop Pandemonium in Final Fantasy IX. The battle ends by a scripted event.
Stats[]
Battle[]
Kuja casts Thundaga and Demi and uses the special Flare Star magic if party members are under the Reflect status, or if he is attacked by an ability that lowers his MP. Flare Star is a devastating spell, damaging the whole party that neither Shell nor Reflect can protect against. During the battle, Kuja occasionally taunts the characters when they attack him.
Depleting his HP transforms Kuja into Trance form and he casts Ultima, ending the battle.
Strategy[]
Coral Ring absorbs Thundaga. It is not advised to use Auto-Reflect, as this makes Kuja use Flare Star. Physical attacks with the Man Eater are enough to defeat him. He is susceptible to Quina's LV4 Holy.
AI script[]
Using general variable Boss_SpecialAnimationFlag
Using global variable kuja
Using global variable trancekuja
Using global variable dotranceattacks
Function Kuja_Init
set Boss_SpecialAnimationFlag = FALSE
set attacklist = [ Thundaga ; Demi ]
Function Kuja_Loop
if ( !initflag )
set initflag = TRUE
set kuja = SV_FunctionEnemy
if ( SV_FunctionEnemy[HP] < 10000 )
set endflag = TRUE
while ( IsAttacking != 0 )
Wait( 1 )
RunBattleCode( Disable ATB )
while ( GetBattleState != 1 )
Wait( 1 )
set trancekuja[TARGETABLE] = 1
Wait( 1 )
set SV_Target = trancekuja
AttackSpecial( Transform )
Wait( 45 )
set trancekuja[SHADOW] = 1
while ( !Boss_SpecialAnimationFlag )
Wait( 1 )
set Boss_SpecialAnimationFlag = FALSE
set dotranceattacks = TRUE
set SV_FunctionEnemy[DISAPPEAR] = 1
while ( !Boss_SpecialAnimationFlag )
Wait( 1 )
FadeFilter( FILTER_ADD, 1, BLACK )
set Boss_SpecialAnimationFlag = FALSE
while ( dotranceattacks )
Wait( 1 )
RunBattleCode( End Battle, Interruption )
Wait( 1 )
loop
Function Kuja_ATB
if ( ( SV_FunctionEnemy[MP] < 20 ) || !( #RandomInTeam( NotMatching(SV_PlayerTeam[STATUS_CURRENT], PETRIFY | DEATH | JUMP | REFLECT) & NotMatching(SV_PlayerTeam[STATUS_AUTO], REFLECT) ) ) )
set SV_Target = SV_PlayerTeam
Attack( Flare Star )
set selectedattack = RandomAttack( attacklist )
if ( selectedattack == Thundaga )
set SV_Target = RandomInTeam( NotMatching(SV_PlayerTeam[STATUS_CURRENT], PETRIFY | DEATH | JUMP | REFLECT) & NotMatching(SV_PlayerTeam[STATUS_AUTO], REFLECT) )
elseif ( selectedattack == Demi )
set SV_Target = RandomInTeam( NotMatching(SV_PlayerTeam[STATUS_CURRENT], PETRIFY | DEATH | JUMP | REFLECT) & NotMatching(SV_PlayerTeam[STATUS_AUTO], REFLECT) )
Attack( selectedattack )
Function Kuja_CounterEx
if ( ( GetAttackCommandId != Attack ) && ( GetAttackCommandId != None ) && ( GetAttackCommandId != Jump ) && ( GetAttackCommandId != Throw ) && ( GetAttackCommandId != Summon ) && ( GetAttackCommandId != Eidolon ) && ( GetAttackCommandId != Blk Mag ) && ( GetAttackCommandId != Dbl Blk ) )
return
if ( ( SV_FunctionEnemy[HP] > 10000 ) && #NotMatching(SV_FunctionEnemy[STATUS_CURRENT], PETRIFY | VENOM | DEATH | STOP) )
if ( tauntcounter == 0 )
BattleDialog( "Ha ha ha..." )
set tauntcounter++
elseif ( tauntcounter == 1 )
BattleDialog( "You call that an attack?" )
set tauntcounter++
elseif ( tauntcounter == 2 )
BattleDialog( "Show me your true power!" )
set tauntcounter++