Necron is the final boss of Final Fantasy IX, fought at the Hill of Despair. After the party has been weakened by Trance Kuja's Ultima spell, the four party members selected to fight Necron are recharged by the other comrades. The player does not have to use Zidane for the final battle.
Stats[]
Battle[]
Necron is not as powerful as Ozma, but should not be underestimated. Necron has a plethora of magic spells, including Firaga, Blizzaga, and Thundaga, which can hit for 1,000+ damage on all the characters. Necron can also cast Holy and Flare, which hit one character for around 3,000 damage. Necron can perform up to four actions per turn, putting the party at a disadvantage. When it casts Grand Cross, Neutron Ring will always be used on the next turn.
Necron will buff itself with Protect and Shell and uses Curaga when its HP drops. Like most final bosses, Necron has an attack to bring one character to 1 HP: Blue Shockwave. Necron's Neutron Ring deals 4,000+ damage to all characters. Its most devastating attack, Grand Cross, functions similarly to Malboro's Bad Breath, only it inflicts most of the status ailments in the game, including Heat/Freeze, Zombie, and even Instant Death.
Strategy[]
Before fighting Necron, the player can check the party's equipment. It is recommended to equip the following immunity abilities to everyone: Clear Headed, Body Temp, Antibody, Locomotion, and Jelly. One can also equip some other supportive abilities, like HP+, Auto-Regen, and Auto-Haste, and possibly Auto-Life or Auto-Reflect.
It is advised to equip the Bird Killer and MP Attack abilities for those who are going to use normal attacks. The party can mimic Necron by casting Protect and Shell (or summon Carbuncle or use Mighty Guard) to guard against its Neutron Ring and elemental magic. Freya's Dragon's Crest, Vivi's Flare, Zidane's Thievery and/or Dyne, and Steiner's Shock are good damage dealers. Amarant's Aura can be used to bestow Regen and Auto-Life. If multiple party members are brought to Near Death, Steiner can use Charge. If Steiner is brought to 1 HP, he could also use Minus Strike, though it might still not rival his Climhazzard and Shock.
Quina's powered up Frog Drop is an easy way to deal damage and Quina can also cast Auto-Life and remove all of the party's status ailments with Angel's Snack, as well as buff the party with Mighty Guard and lower Necron's defenses with LV3 Def-less. If the party has any Elixirs, this is the time to use them. Necron itself carries four Elixirs, so Zidane can steal them. Freya can avoid the Neutron Ring, Blue Shockwave, and Grand Cross attacks with the Jump command, especially if she has also achieved Trance.
Eiko can use Dispel to rid Necron of its buffs, though they do not matter if the party is using their fixed damage abilities or Steiner's Darkside. If the party has Auto-Reflect, Vivi should equip Reflect x2.
AI script[]
Using general variable Boss_SpecialAnimationFlag
Using global variable necron
Function Necron_Init
set Boss_SpecialAnimationFlag = FALSE
set attackcounter = 2
Function Necron_Loop
if ( !initflag )
set initflag = TRUE
set necron = SV_FunctionEnemy
set SV_PlayerTeam[MODEL_OFF] =$ 255
while ( GetBattleState != 1 )
Wait( 1 )
set SV_Target = SV_PlayerTeam
AttackSpecial( Appearance )
while ( IsAttacking != 0 )
Wait( 1 )
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
if ( SV_FunctionEnemy[STAND_ANIMATION] == 1 )
AttackSpecial( Death2 )
while ( IsAttacking != 0 )
Wait( 1 )
set SV_Target = NotMatching(SV_PlayerTeam[STATUS_CURRENT], JUMP)
AttackSpecial( Death3 )
while ( IsAttacking != 0 )
Wait( 1 )
Wait( 1 )
set SV_Target = SV_FunctionEnemy
AttackSpecial( Death1 )
while ( !Boss_SpecialAnimationFlag )
Wait( 1 )
RunBattleCode( Emphasize Music, 1 )
set Boss_SpecialAnimationFlag = FALSE
Wait( 1 )
while ( !Boss_SpecialAnimationFlag )
Wait( 1 )
FadeFilter( FILTER_ADD, 1, BLACK )
while ( IsAttacking != 0 )
Wait( 1 )
RunBattleCode( End Battle, INTERRUPTED )
Wait( 1 )
loop
Function Necron_ATB
if ( SV_FunctionEnemy[STAND_ANIMATION] == 0 )
if ( attackcounter >= 3 )
set SV_Target = SV_PlayerTeam
set attackcounter = 0
Attack( Grand Cross )
else
set SV_Target = RandomInTeam(SV_PlayerTeam)
set attackcounter++
Attack( Blue Shockwave )
set SV_Target = SV_PlayerTeam
Attack( Neutron Ring )
Function Dummy_Loop
if ( !initflag )
set initflag = TRUE
set dummyindex = SV_FunctionEnemy[ENEMY_ID]
if ( dummyindex == 1 )
set attacklist = [ Flare ; Holy ; Meteor ; Flare ; Holy ; Flare ; Holy ]
elseif ( dummyindex == 2 )
set attacklist = [ Firaga ; Blizzaga ; Thundaga ]
elseif ( dummyindex == 3 )
set attacklist = [ Curaga ; Shell ; Protect ]
if ( dummyindex == 1 )
if ( ( #NotMatching(SV_PlayerTeam[STATUS_CURRENT], PETRIFY | VENOM | DEATH | STOP | LOW_HP) < 4 ) && ( targetamount != 0 ) )
set SV_FunctionEnemy[PREVENT_ATTACK] = 1
elseif ( dummyindex == 2 )
if ( ( #NotMatching(SV_PlayerTeam[STATUS_CURRENT], PETRIFY | VENOM | DEATH | STOP | LOW_HP) < 3 ) && ( targetamount != 0 ) )
set SV_FunctionEnemy[PREVENT_ATTACK] = 1
elseif ( dummyindex == 3 )
if ( ( #NotMatching(SV_PlayerTeam[STATUS_CURRENT], PETRIFY | VENOM | DEATH | STOP | LOW_HP) < 2 ) && ( targetamount != 0 ) )
set SV_FunctionEnemy[PREVENT_ATTACK] = 1
Function Dummy_ATB
if ( dummyindex == 1 )
if ( meteorrolledflag )
set flareholybonustarget = RandomInTeam( NotMatching(SV_PlayerTeam[STATUS_CURRENT], PETRIFY | DEATH | ZOMBIE | REFLECT) & NotMatching(SV_PlayerTeam[STATUS_AUTO], REFLECT) )
else
set flareholybonustarget = 0
set selectedattack = RandomAttack( attacklist )
if ( selectedattack == Flare )
set SV_Target = RandomInTeam( NotMatching(SV_PlayerTeam[STATUS_CURRENT], PETRIFY | DEATH | ZOMBIE | REFLECT) & NotMatching(SV_PlayerTeam[STATUS_AUTO], REFLECT) )
elseif ( selectedattack == Holy )
set SV_Target = RandomInTeam( NotMatching(SV_PlayerTeam[STATUS_CURRENT], PETRIFY | DEATH | ZOMBIE | REFLECT) & NotMatching(SV_PlayerTeam[STATUS_AUTO], REFLECT) )
elseif ( selectedattack == Meteor )
set SV_Target = SV_PlayerTeam
elseif ( selectedattack == Flare )
set SV_Target = flareholybonustarget
elseif ( selectedattack == Holy )
set SV_Target = flareholybonustarget
elseif ( selectedattack == Flare )
set SV_Target = RandomInTeam( NotMatching(SV_PlayerTeam[STATUS_CURRENT], PETRIFY | DEATH | ZOMBIE | REFLECT) & NotMatching(SV_PlayerTeam[STATUS_AUTO], REFLECT) )
elseif ( selectedattack == Holy )
set SV_Target = RandomInTeam( NotMatching(SV_PlayerTeam[STATUS_CURRENT], PETRIFY | DEATH | ZOMBIE | REFLECT) & NotMatching(SV_PlayerTeam[STATUS_AUTO], REFLECT) )
if ( selectedattack == Meteor )
set meteorrolledflag = TRUE
elseif ( dummyindex == 2 )
set selectedattack = RandomAttack( attacklist )
if ( selectedattack == Firaga )
set SV_Target = SV_PlayerTeam
elseif ( selectedattack == Blizzaga )
set SV_Target = SV_PlayerTeam
elseif ( selectedattack == Thundaga )
set SV_Target = SV_PlayerTeam
set reflecttargetcheck = RandomInTeam( NotMatching(SV_PlayerTeam[STATUS_CURRENT], PETRIFY | DEATH | ZOMBIE | REFLECT) & NotMatching(SV_PlayerTeam[STATUS_AUTO], REFLECT) )
if ( #( NotMatching(SV_PlayerTeam[STATUS_CURRENT], PETRIFY | VENOM | DEATH | STOP) & reflecttargetcheck ) == 0 )
set SV_Target = 0
elseif ( dummyindex == 3 )
if ( necron[HP] - 10000 < ( necron[MAX_HP] - 10000 ) / 2 )
set curagatarget = necron
else
set curagatarget = 0
set selectedattack = RandomAttack( attacklist )
if ( selectedattack == Curaga )
set SV_Target = curagatarget
elseif ( selectedattack == Shell )
set SV_Target = RandomInTeam( NotMatching(SV_EnemyTeam[STATUS_CURRENT], PETRIFY | DEATH | ZOMBIE | SHELL) )
elseif ( selectedattack == Protect )
set SV_Target = RandomInTeam( NotMatching(SV_EnemyTeam[STATUS_CURRENT], PETRIFY | DEATH | ZOMBIE | PROTECT) )
if ( NotEnoughMP( selectedattack ) || ( SV_Target == 0 ) )
set selectedattack = None
if ( dummyindex == 1 )
if ( #NotMatching(SV_PlayerTeam[STATUS_CURRENT], PETRIFY | VENOM | DEATH | STOP | LOW_HP) < 4 )
set SV_Target = 0
set selectedattack = None
elseif ( dummyindex == 2 )
if ( #NotMatching(SV_PlayerTeam[STATUS_CURRENT], PETRIFY | VENOM | DEATH | STOP | LOW_HP) < 3 )
set SV_Target = 0
set selectedattack = None
elseif ( dummyindex == 3 )
if ( #NotMatching(SV_PlayerTeam[STATUS_CURRENT], PETRIFY | VENOM | DEATH | STOP | LOW_HP) < 2 )
set SV_Target = 0
set selectedattack = None
set targetamount = #SV_Target
Attack( selectedattack )