FANDOM


FFIX wiki icon

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.

StatsEdit

Battle Edit

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 hit for around 1,500+ damage on all the characters. Necron can also cast Holy and Flare, which hit one character for around 3,000 damage. Necron can perform three actions per turn, putting the party at a disadvantage, especially if it casts Grand Cross, since Neutron Ring follows almost immediately after.

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 around 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.

Strategy Edit

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.

It is advised to equip the Bird Killer and MP Attack abilities boost damage of normal attacks. The party can mimic Necron by casting Protect and Shell 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 also be used to cast Regen and Auto-Life.

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 effects with Angel's Snack, as well as buff the party with Mighty Guard. If the party has any Elixirs this is the time to use them. Necron itself also carries four Elixirs so Zidane can steal them if the party runs out. Freya can avoid the Neutron Ring, Blue Shockwave, and Grand Cross attacks with the Jump command, especially if she has also achieved Trance.

AI script Edit

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 )

Gallery Edit

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