Final Fantasy Wiki
Advertisement

I have seen the end of my thousand-year life, and it is not now. You cannot stop me. It is futile to even try.

Soulcage

The Soulcage is an entity in Final Fantasy IX. It is the source of the Mist that plagues Gaia, overseeing its dispersal over the Mist Continent from within the Iifa Tree. An undead being who has existed for nearly a thousand years, his visage is a mockery of a tree. He "cannot lie", leading to some revelations in the plot.

Stats[]

Story[]

Spoiler warning: Plot and/or ending details follow. (Skip section)

Soulcage oversees the physical manifestation of the Iifa Tree and its functions, dispersing Mist over other continents to incense people to war with each other. When Zidane and his allies learn the Soulcage is the cause of the Mist, they kill it and, for a time, stop the dispersal of Mist over the world.

It is later revealed by Garland that the Soulcage the party destroyed was merely an illusion, or the "back door" of the true beast. Soulcage's goal was to halt the flow of souls in Gaia and replace them with the souls of Terra, eventually transforming Gaia into a new Terra when enough of Gaia's spirit energy has turned into Terran energy. The stagnant Gaian souls that could not be reincarnated turned into Mist as a byproduct of this process, which was used to spark war among Gaians to increase the rate at which they died, thereby allowing the Terran souls to replace the Gaian souls faster.

Spoilers end here.

Battle[]

FFIX Heat Status

Soulcage in battle.

The Soulcage is fought as a boss in the Iifa Tree. He is undead and can use LV5 Death that kills a party member whose level is divisible by five, and Mustard Bomb, which will cause the Heat status, killing them as soon as they try to execute a command. He uses Shockwave and Leaf Swirl, which hit the party for minor damage, and Fira.

If Fire magic is used on Soulcage, the foliage on its body will ignite boosting its power, compelling it to use an attack called Fire Blades, which is an all-Fire attack that deals 600+ damage. The blaze can be reversed by casting Blizzard magic on it.

Strategy[]

Being undead, Soulcage is easily defeated with a Life spell, a Phoenix Down, or an Elixir. Phoenix Down will not kill it, but will reduce its HP to a mere digit. Life and Elixir can kill it instantly.

If the player chooses to fight the regular way, the best strategy is to use Bio. If not available, Blizzara and Thundara are good, as Fire-elemental attacks produce a Fire-elemental counter. Zidane should attack physically and steal (only if the party does not have the Oak Staff already, or would like a second Brigandine; the Magician Cloak can already be purchased). Dagger should use Ramuh and heal when necessary, and Eiko should use Fenrir (not Phoenix as it would trigger the Fire-elemental counter) and heal when necessary. Dagger and Eiko can also use Cura to damage Soulcage for much smaller MP expenditure.

AI script[]

Function Soulcage_Init
   set phase1attacklist = [ Shockwave ; Mustard Bomb ; Leaf Swirl ; Fira ]
   set phase2attacklist = [ Shockwave ; Mustard Bomb ; Fire Blades ; Fira ]


Function Soulcage_ATB
   if ( !onfire )
      set selectedattack = RandomAttack( phase1attacklist )
      if ( selectedattack == Shockwave )
         set SV_Target = SV_PlayerTeam
      elseif ( selectedattack == Mustard Bomb )
         set SV_Target = RandomInTeam(SV_PlayerTeam)
      elseif ( selectedattack == Leaf Swirl )
         set SV_Target = SV_PlayerTeam
      elseif ( selectedattack == Fira )
         set SV_Target = RandomInTeam(SV_PlayerTeam)
   else
      set selectedattack = RandomAttack( phase2attacklist )
      if ( selectedattack == Shockwave )
         set SV_Target = SV_PlayerTeam
      elseif ( selectedattack == Mustard Bomb )
         set SV_Target = RandomInTeam(SV_PlayerTeam)
      elseif ( selectedattack == Fire Blades )
         set SV_Target = SV_PlayerTeam
      elseif ( selectedattack == Fira )
         set SV_Target = RandomInTeam(SV_PlayerTeam)
   if ( !lv5deathflag && ( GetRandom % 5 ) )
      set lv5deathflag = TRUE
      set SV_Target = SV_PlayerTeam
      set selectedattack = LV5 Death
   Attack( selectedattack )


Function Soulcage_CounterEx
   if ( SV_FunctionEnemy[HP] == 0 )
      return
   if ( !onfire )
      set attackelement = 0
      if ( ( GetAttacker != -1 ) )
         if ( #( SV_PlayerTeam & GetAttacker ) )
            if ( ( GetAttackCommandId == Attack ) || ( GetAttackCommandId == CounterAttack ) || ( GetAttackCommandId == Charge! Attack ) || ( GetAttackCommandId == Dyne ))
               set attackelement = 255
            elseif ( ( GetAttackCommandId == Flair ) && ( GetAttackCommandId == Elan ) )
               if ( GetAttackId == No Mercy )
                  set attackelement = 255
            elseif ( GetAttackCommandId == Swd Art )
               if ( ( GetAttackId == Stock Break ) || ( GetAttackId == Minus Strike ) )
                  set attackelement = 255
            else
               set attackelement = GetAttackElement
            if ( attackelement == 255 )
               set attackelement = GetAttackerWeaponElement
            else
               set attackelement = GetAttackElement
         else
            set attackelement = GetAttackElement
      if ( attackelement & FIRE )
         BattleDialog( "The fire started." )
         set onfire = TRUE
         set SV_FunctionEnemy[PREVENT_ATTACK] = 1
   else
      set attackelement = GetAttackElementSmart
      if ( ( attackelement & ICE ) || ( attackelement & WATER ) )
         BattleDialog( "The fire went out." )
         set onfire = FALSE
         set SV_FunctionEnemy[PREVENT_ATTACK] = 1


Function Soulcage_Counter
   if ( ( GetAttackCommandId == Skill ) && ( GetAttackId == What's That?! ) )
      return
   if ( SV_FunctionEnemy[HP] == 0 )
      return
   if ( !onfire )
      set attackelement = GetAttackElementSmart
      if ( attackelement & FIRE )
         BattleDialog( "The fire started." )
         set onfire = TRUE
         set SV_FunctionEnemy[PREVENT_ATTACK] = 1
         set SV_Target = SV_PlayerTeam
         Attack( Fire Blades )
   else
      set attackelement = GetAttackElementSmart
      if ( ( attackelement & ICE ) || ( attackelement & WATER ) )
         BattleDialog( "The fire went out." )
         set onfire = FALSE
         set SV_FunctionEnemy[PREVENT_ATTACK] = 1
      elseif ( attackelement & FIRE )
         set SV_Target = SV_PlayerTeam
         Attack( Fire Blades )


Other appearances[]

Dissidia Final Fantasy Opera Omnia[]

The Soulcage appears as the final boss of Arc 2 Chapter 3.

Baknamy FFTA2This section about an enemy in Dissidia Final Fantasy Opera Omnia is empty or needs to be expanded. You can help the Final Fantasy Wiki by expanding it.


Final Fantasy Record Keeper[]

FFRK Soulcage FFIX
Baknamy FFTA2This section about an enemy in Final Fantasy Record Keeper is empty or needs to be expanded. You can help the Final Fantasy Wiki by expanding it.


Final Fantasy Brave Exvius[]

Baknamy FFTA2This section about an enemy in Final Fantasy Brave Exvius is empty or needs to be expanded. You can help the Final Fantasy Wiki by expanding it.

Gallery[]

Etymology[]

Bahamut Lagoon - Soul Cage Sprite

Bahamut Lagoon has a boss with the same name and a similar appearance. It is likely that this boss, as well as its Final Fantasy IX counterpart, were named after Sting's album The Soul Cages, because the Bahamut Lagoon boss has a stronger palette swap named after The Police's song King of Pain.

In the Spanish version, Soulcage was translated as "Onodrim". In J.R.R. Tolkien's Middle-earth universe, Onodrim is the name given by the Elves to the living trees that humanity called the Ents.

Advertisement