Shell Dragon is a boss from Final Fantasy IX. It is fought in Pandemonium during an event where Zidane fights several enemies alone, with party members joining in the fight during them. Afterward, it appears as a random encounter.
Stats[]
Boss
Enemy
Battle[]
In the initial fixed encounter, Zidane begins the fight by himself. The Shell Dragon can use powerful physical attacks, as well as Earth Shake, a strong Earth move that hits the entire party. Its Smash attack takes a party member's HP down to 1. When Zidane is forced into critical HP, by Smash or some other attack, Dagger joins the party to heal him to full health. She stays in the party for the remainder of the fight.
Shell Dragon will also appear as a random encounter throughout the remainder of Pandemonium. As a random encounter, it gains a new ability in Snort, which removes a random character from battle.
Strategy[]
It is easy to win the first battle with only the Bahamut or Shiva summon and Zidane's physical attacks.
Float nullifies damage from the Shell Dragon's Earth Shake. Quina can learn Earth Shake by eating a Shell Dragon as well.
AI script[]
Random encounter[]
Function Shell_Dragon_Init
set attacklist = [ Smash ; Earth Shake ; Charge ]
Function Shell_Dragon_Loop
set playerteamcount = #SV_PlayerTeam
if ( !battlestate )
set battlestate++
set lastplayerteamcount = #SV_PlayerTeam
if ( lastplayerteamcount != playerteamcount )
set situationchanged++
else
set situationchanged = 0
set lastplayerteamcount = playerteamcount
set validplayerteamcount = #NotMatching(SV_PlayerTeam[STATUS_CURRENT], PETRIFY | VENOM | DEATH | STOP)
if ( !validplayerteamcount && situationchanged && ( battlestate != 255 ) )
set battlestate = 255
while ( IsAttacking != 0 )
Wait( 1 )
RunBattleCode( Disable ATB )
while ( GetBattleState != 1 )
Wait( 1 )
BattleDialog( "Annihilated..." )
RunBattleCode( Game Over )
Wait( 1 )
loop
Function Shell_Dragon_ATB
set selectedattack = RandomAttack( attacklist )
if ( selectedattack == Smash )
set SV_Target = RandomInTeam( NotMatching(SV_PlayerTeam[STATUS_CURRENT], PETRIFY | DEATH | JUMP) & ~( SV_PlayerTeam[HP] ==$ 1 ) )
elseif ( selectedattack == Earth Shake )
set SV_Target = SV_PlayerTeam
elseif ( selectedattack == Charge )
set SV_Target = SV_PlayerTeam
Attack( selectedattack )
Function Shell_Dragon_Counter
if ( ( GetAttackCommandId == Skill ) && ( GetAttackId == What's That?! ) )
return
if ( !( GetRandom % 4 ) )
if ( #NotMatching(SV_PlayerTeam[STATUS_CURRENT], PETRIFY | VENOM | DEATH | STOP) <= 1 )
return
set SV_Target = Matching(SV_PlayerTeam[STATUS_CURRENT], DOOM | GRADUAL_PETRIFY | POISON | VENOM)
set SV_Target |= ( Matching(SV_PlayerTeam[STATUS_CURRENT], REGEN) | Matching(SV_PlayerTeam[STATUS_AUTO], REGEN) ) & Matching(SV_PlayerTeam[STATUS_CURRENT], ZOMBIE)
if ( #SV_Target )
return
set SV_Target = GetAttacker
Attack( Snort )
Boss battle[]
Using global variable zidane
Using global variable dagger
Using global variable daggeravailable
Using global variable calldagger
Using global variable dodaggermagic
Using global variable daggermagicdone
Using global variable docamerause
Using global variable camerausedone
Using global variable calldaggerstep
Function Main_Init
InitObject( Shell Dragon )
set zidane = ( SV_PlayerTeam[MODEL_TYPE] == 0 )
set zidane |= ( SV_PlayerTeam[MODEL_TYPE] == 1 )
set dagger = ( SV_PlayerTeam[MODEL_TYPE] == 3 )
set dagger |= ( SV_PlayerTeam[MODEL_TYPE] == 4 )
set dagger |= ( SV_PlayerTeam[MODEL_TYPE] == 5 )
set dagger |= ( SV_PlayerTeam[MODEL_TYPE] == 6 )
if ( #dagger )
set daggeravailable = TRUE
set dagger[MODEL_OFF] = 65535L
set dagger[SHADOW] = 0
set dagger[PRESENCE_OFF] = 1
Wait( 1 )
RunBattleCode( Enable ATB )
Function Main_Loop
if ( calldagger && !daggershownup )
set daggershownup = TRUE
while ( IsAttacking != 0 )
Wait( 1 )
RunBattleCode( Disable ATB )
while ( GetBattleState != 1 )
Wait( 1 )
set calldaggerstep = 255
set dodaggermagic = TRUE
while ( !daggermagicdone )
Wait( 1 )
set dagger[PRESENCE_ON] = 1
set docamerause = TRUE
while ( !camerausedone )
Wait( 1 )
Wait( 5 )
set dagger[MODEL_ON] = 65535L
set dagger[SHADOW] = 1
Wait( 40 )
RunBattleCode( Run Camera, 9 )
BattleDialog( "Dagger!" )
Wait( 45 )
if ( #( SV_PlayerTeam & dagger ) )
if ( !( #Matching(dagger[STATUS_AUTO], FLOAT) ) )
RunBattleCode( Run Camera, 10 )
else
RunBattleCode( Run Camera, 11 )
BattleDialog( "Is this how you want to solve the problem?" )
Wait( 60 )
RunBattleCode( Enable ATB )
while ( GetBattleState != 4 )
Wait( 1 )
Wait( 1 )
loop
Function Shell_Dragon_Init
set attacklist = [ Smash ; Earth Shake ; Charge ]
Function Shell_Dragon_Loop
if ( calldaggerstep == 255 )
if ( !adjustedhp )
set adjustedhp = TRUE
set SV_FunctionEnemy[HP] = SV_FunctionEnemy[MAX_HP] - 10000
set SV_FunctionEnemy[MAX_HP] = SV_FunctionEnemy[MAX_HP] - 10000
elseif ( daggeravailable && #zidane )
set SV_FunctionEnemy[HP] = SV_FunctionEnemy[MAX_HP]
if ( #( SV_PlayerTeam & zidane ) )
if ( #Matching(zidane[STATUS_CURRENT], LOW_HP) && daggeravailable && !daggershownup )
set daggershownup = TRUE
set calldagger = TRUE
if ( dodaggermagic )
set dodaggermagic = FALSE
set SV_Target = zidane
AttackSpecial( Dagger’s magic )
if ( #( SV_PlayerTeam & zidane ) )
set zidane[HP] = zidane[MAX_HP]
while ( IsAttacking != 0 )
Wait( 1 )
set daggermagicdone = TRUE
if ( docamerause )
set docamerause = FALSE
set SV_Target = dagger
AttackSpecial( Camera use )
set camerausedone = TRUE
Wait( 1 )
loop
Function Shell_Dragon_ATB
if ( #( SV_PlayerTeam & zidane ) )
if ( calldaggerstep != 255 )
set calldaggerstep++
if ( calldaggerstep == 10 )
if ( daggeravailable && !daggershownup )
set daggershownup = TRUE
set calldagger = TRUE
set SV_Target = SV_FunctionEnemy
Attack( No action )
set selectedattack = RandomAttack( attacklist )
if ( selectedattack == Smash )
set SV_Target = RandomInTeam( NotMatching(SV_PlayerTeam[STATUS_CURRENT], PETRIFY | DEATH | JUMP) & ~( SV_PlayerTeam[HP] == 1 ) )
elseif ( selectedattack == Earth Shake )
set SV_Target = SV_PlayerTeam
elseif ( selectedattack == Charge )
set SV_Target = SV_PlayerTeam
if ( calldaggerstep == 5 )
set SV_Target = zidane
Attack( Smash )
if ( ( selectedattack == Smash ) && ( calldaggerstep < 3 ) )
set SV_Target = SV_PlayerTeam
Attack( Charge )
Attack( selectedattack )
Other appearances[]
Final Fantasy Record Keeper[]
Gallery[]
Etymology[]
dragon is a legendary creature, typically with serpentine or reptilian traits, which is featured in the myths of many cultures.
A