/**
* @ file spelldat . cpp
*
* Implementation of all spell data .
*/
# include "spelldat.h"
# include "utils/language.h"
namespace devilution {
/** Data related to each spell ID. */
const SpellData SpellsData [ ] = {
// clang-format off
// sName, sManaCost, sType, sNameText, sBookLvl, sStaffLvl, sTargeted, sTownSpell, sMinInt, sSFX, { sMissiles[3], } sManaAdj, sMinMana, sStaffMin, sStaffMax, sBookCost, sStaffCost
{ SpellID : : Null , 0 , MagicType : : Fire , nullptr , 0 , 0 , false , false , 0 , SFX_NONE , { MissileID : : Null , MissileID : : Null , MissileID : : Null } , 0 , 0 , 40 , 80 , 0 , 0 } ,
{ SpellID : : Firebolt , 6 , MagicType : : Fire , P_ ( " spell " , " Firebolt " ) , 1 , 1 , true , false , 15 , IS_CAST2 , { MissileID : : Firebolt , MissileID : : Null , MissileID : : Null } , 1 , 3 , 40 , 80 , 1000 , 50 } ,
{ SpellID : : Healing , 5 , MagicType : : Magic , P_ ( " spell " , " Healing " ) , 1 , 1 , false , true , 17 , IS_CAST8 , { MissileID : : Healing , MissileID : : Null , MissileID : : Null } , 3 , 1 , 20 , 40 , 1000 , 50 } ,
{ SpellID : : Lightning , 10 , MagicType : : Lightning , P_ ( " spell " , " Lightning " ) , 4 , 3 , true , false , 20 , IS_CAST4 , { MissileID : : LightningControl , MissileID : : Null , MissileID : : Null } , 1 , 6 , 20 , 60 , 3000 , 150 } ,
{ SpellID : : Flash , 30 , MagicType : : Lightning , P_ ( " spell " , " Flash " ) , 5 , 4 , false , false , 33 , IS_CAST4 , { MissileID : : FlashBottom , MissileID : : FlashTop , MissileID : : Null } , 2 , 16 , 20 , 40 , 7500 , 500 } ,
{ SpellID : : Identify , 13 , MagicType : : Magic , P_ ( " spell " , " Identify " ) , - 1 , - 1 , false , true , 23 , IS_CAST6 , { MissileID : : Identify , MissileID : : Null , MissileID : : Null } , 2 , 1 , 8 , 12 , 0 , 100 } ,
{ SpellID : : FireWall , 28 , MagicType : : Fire , P_ ( " spell " , " Fire Wall " ) , 3 , 2 , true , false , 27 , IS_CAST2 , { MissileID : : FireWallControl , MissileID : : Null , MissileID : : Null } , 2 , 16 , 8 , 16 , 6000 , 400 } ,
{ SpellID : : TownPortal , 35 , MagicType : : Magic , P_ ( " spell " , " Town Portal " ) , 3 , 3 , true , false , 20 , IS_CAST6 , { MissileID : : TownPortal , MissileID : : Null , MissileID : : Null } , 3 , 18 , 8 , 12 , 3000 , 200 } ,
{ SpellID : : StoneCurse , 60 , MagicType : : Magic , P_ ( " spell " , " Stone Curse " ) , 6 , 5 , true , false , 51 , IS_CAST2 , { MissileID : : StoneCurse , MissileID : : Null , MissileID : : Null } , 3 , 40 , 8 , 16 , 12000 , 800 } ,
{ SpellID : : Infravision , 40 , MagicType : : Magic , P_ ( " spell " , " Infravision " ) , - 1 , - 1 , false , false , 36 , IS_CAST8 , { MissileID : : Infravision , MissileID : : Null , MissileID : : Null } , 5 , 20 , 0 , 0 , 0 , 600 } ,
{ SpellID : : Phasing , 12 , MagicType : : Magic , P_ ( " spell " , " Phasing " ) , 7 , 6 , false , false , 39 , IS_CAST2 , { MissileID : : Phasing , MissileID : : Null , MissileID : : Null } , 2 , 4 , 40 , 80 , 3500 , 200 } ,
{ SpellID : : ManaShield , 33 , MagicType : : Magic , P_ ( " spell " , " Mana Shield " ) , 6 , 5 , false , false , 25 , IS_CAST2 , { MissileID : : ManaShield , MissileID : : Null , MissileID : : Null } , 0 , 33 , 4 , 10 , 16000 , 1200 } ,
{ SpellID : : Fireball , 16 , MagicType : : Fire , P_ ( " spell " , " Fireball " ) , 8 , 7 , true , false , 48 , IS_CAST2 , { MissileID : : Fireball , MissileID : : Null , MissileID : : Null } , 1 , 10 , 40 , 80 , 8000 , 300 } ,
{ SpellID : : Guardian , 50 , MagicType : : Fire , P_ ( " spell " , " Guardian " ) , 9 , 8 , true , false , 61 , IS_CAST2 , { MissileID : : Guardian , MissileID : : Null , MissileID : : Null } , 2 , 30 , 16 , 32 , 14000 , 950 } ,
{ SpellID : : ChainLightning , 30 , MagicType : : Lightning , P_ ( " spell " , " Chain Lightning " ) , 8 , 7 , false , false , 54 , IS_CAST2 , { MissileID : : ChainLightning , MissileID : : Null , MissileID : : Null } , 1 , 18 , 20 , 60 , 11000 , 750 } ,
{ SpellID : : FlameWave , 35 , MagicType : : Fire , P_ ( " spell " , " Flame Wave " ) , 9 , 8 , true , false , 54 , IS_CAST2 , { MissileID : : FlameWaveControl , MissileID : : Null , MissileID : : Null } , 3 , 20 , 20 , 40 , 10000 , 650 } ,
{ SpellID : : DoomSerpents , 0 , MagicType : : Lightning , P_ ( " spell " , " Doom Serpents " ) , - 1 , - 1 , false , false , 0 , IS_CAST2 , { MissileID : : Null , MissileID : : Null , MissileID : : Null } , 0 , 0 , 40 , 80 , 0 , 0 } ,
{ SpellID : : BloodRitual , 0 , MagicType : : Magic , P_ ( " spell " , " Blood Ritual " ) , - 1 , - 1 , false , false , 0 , IS_CAST2 , { MissileID : : Null , MissileID : : Null , MissileID : : Null } , 0 , 0 , 40 , 80 , 0 , 0 } ,
{ SpellID : : Nova , 60 , MagicType : : Magic , P_ ( " spell " , " Nova " ) , 14 , 10 , false , false , 87 , IS_CAST4 , { MissileID : : Nova , MissileID : : Null , MissileID : : Null } , 3 , 35 , 16 , 32 , 21000 , 1300 } ,
{ SpellID : : Invisibility , 0 , MagicType : : Magic , P_ ( " spell " , " Invisibility " ) , - 1 , - 1 , false , false , 0 , IS_CAST2 , { MissileID : : Null , MissileID : : Null , MissileID : : Null } , 0 , 0 , 40 , 80 , 0 , 0 } ,
{ SpellID : : Inferno , 11 , MagicType : : Fire , P_ ( " spell " , " Inferno " ) , 3 , 2 , true , false , 20 , IS_CAST2 , { MissileID : : InfernoControl , MissileID : : Null , MissileID : : Null } , 1 , 6 , 20 , 40 , 2000 , 100 } ,
{ SpellID : : Golem , 100 , MagicType : : Fire , P_ ( " spell " , " Golem " ) , 11 , 9 , false , false , 81 , IS_CAST2 , { MissileID : : Golem , MissileID : : Null , MissileID : : Null } , 6 , 60 , 16 , 32 , 18000 , 1100 } ,
{ SpellID : : Rage , 15 , MagicType : : Magic , P_ ( " spell " , " Rage " ) , - 1 , - 1 , false , false , 0 , IS_CAST8 , { MissileID : : Rage , MissileID : : Null , MissileID : : Null } , 1 , 1 , 0 , 0 , 0 , 0 } ,
{ SpellID : : Teleport , 35 , MagicType : : Magic , P_ ( " spell " , " Teleport " ) , 14 , 12 , true , false , 105 , IS_CAST6 , { MissileID : : Teleport , MissileID : : Null , MissileID : : Null } , 3 , 15 , 16 , 32 , 20000 , 1250 } ,
{ SpellID : : Apocalypse , 150 , MagicType : : Fire , P_ ( " spell " , " Apocalypse " ) , 19 , 15 , false , false , 149 , IS_CAST2 , { MissileID : : Apocalypse , MissileID : : Null , MissileID : : Null } , 6 , 90 , 8 , 12 , 30000 , 2000 } ,
{ SpellID : : Etherealize , 100 , MagicType : : Magic , P_ ( " spell " , " Etherealize " ) , - 1 , - 1 , false , false , 93 , IS_CAST2 , { MissileID : : Etherealize , MissileID : : Null , MissileID : : Null } , 0 , 100 , 2 , 6 , 26000 , 1600 } ,
{ SpellID : : ItemRepair , 0 , MagicType : : Magic , P_ ( " spell " , " Item Repair " ) , - 1 , - 1 , false , true , - 1 , IS_CAST6 , { MissileID : : ItemRepair , MissileID : : Null , MissileID : : Null } , 0 , 0 , 40 , 80 , 0 , 0 } ,
{ SpellID : : StaffRecharge , 0 , MagicType : : Magic , P_ ( " spell " , " Staff Recharge " ) , - 1 , - 1 , false , true , - 1 , IS_CAST6 , { MissileID : : StaffRecharge , MissileID : : Null , MissileID : : Null } , 0 , 0 , 40 , 80 , 0 , 0 } ,
{ SpellID : : TrapDisarm , 0 , MagicType : : Magic , P_ ( " spell " , " Trap Disarm " ) , - 1 , - 1 , false , false , - 1 , IS_CAST6 , { MissileID : : TrapDisarm , MissileID : : Null , MissileID : : Null } , 0 , 0 , 40 , 80 , 0 , 0 } ,
{ SpellID : : Elemental , 35 , MagicType : : Fire , P_ ( " spell " , " Elemental " ) , 8 , 6 , false , false , 68 , IS_CAST2 , { MissileID : : Elemental , MissileID : : Null , MissileID : : Null } , 2 , 20 , 20 , 60 , 10500 , 700 } ,
{ SpellID : : ChargedBolt , 6 , MagicType : : Lightning , P_ ( " spell " , " Charged Bolt " ) , 1 , 1 , true , false , 25 , IS_CAST2 , { MissileID : : ChargedBolt , MissileID : : Null , MissileID : : Null } , 1 , 6 , 40 , 80 , 1000 , 50 } ,
{ SpellID : : HolyBolt , 7 , MagicType : : Magic , P_ ( " spell " , " Holy Bolt " ) , 1 , 1 , true , false , 20 , IS_CAST2 , { MissileID : : HolyBolt , MissileID : : Null , MissileID : : Null } , 1 , 3 , 40 , 80 , 1000 , 50 } ,
{ SpellID : : Resurrect , 20 , MagicType : : Magic , P_ ( " spell " , " Resurrect " ) , - 1 , 5 , false , true , 30 , IS_CAST8 , { MissileID : : Resurrect , MissileID : : Null , MissileID : : Null } , 0 , 20 , 4 , 10 , 4000 , 250 } ,
{ SpellID : : Telekinesis , 15 , MagicType : : Magic , P_ ( " spell " , " Telekinesis " ) , 2 , 2 , false , false , 33 , IS_CAST2 , { MissileID : : Telekinesis , MissileID : : Null , MissileID : : Null } , 2 , 8 , 20 , 40 , 2500 , 200 } ,
{ SpellID : : HealOther , 5 , MagicType : : Magic , P_ ( " spell " , " Heal Other " ) , 1 , 1 , false , true , 17 , IS_CAST8 , { MissileID : : HealOther , MissileID : : Null , MissileID : : Null } , 3 , 1 , 20 , 40 , 1000 , 50 } ,
{ SpellID : : BloodStar , 25 , MagicType : : Magic , P_ ( " spell " , " Blood Star " ) , 14 , 13 , false , false , 70 , IS_CAST2 , { MissileID : : BloodStar , MissileID : : Null , MissileID : : Null } , 2 , 14 , 20 , 60 , 27500 , 1800 } ,
{ SpellID : : BoneSpirit , 24 , MagicType : : Magic , P_ ( " spell " , " Bone Spirit " ) , 9 , 7 , false , false , 34 , IS_CAST2 , { MissileID : : BoneSpirit , MissileID : : Null , MissileID : : Null } , 1 , 12 , 20 , 60 , 11500 , 800 } ,
{ SpellID : : Mana , 255 , MagicType : : Magic , P_ ( " spell " , " Mana " ) , - 1 , 5 , false , true , 17 , IS_CAST8 , { MissileID : : Mana , MissileID : : Null , MissileID : : Null } , 3 , 1 , 12 , 24 , 1000 , 50 } ,
{ SpellID : : Magi , 255 , MagicType : : Magic , P_ ( " spell " , " the Magi " ) , - 1 , 20 , false , true , 45 , IS_CAST8 , { MissileID : : Magi , MissileID : : Null , MissileID : : Null } , 3 , 1 , 15 , 30 , 100000 , 200 } ,
{ SpellID : : Jester , 255 , MagicType : : Magic , P_ ( " spell " , " the Jester " ) , - 1 , 4 , true , false , 30 , IS_CAST8 , { MissileID : : Jester , MissileID : : Null , MissileID : : Null } , 3 , 1 , 15 , 30 , 100000 , 200 } ,
{ SpellID : : LightningWall , 28 , MagicType : : Lightning , P_ ( " spell " , " Lightning Wall " ) , 3 , 2 , true , false , 27 , IS_CAST4 , { MissileID : : LightningWallControl , MissileID : : Null , MissileID : : Null } , 2 , 16 , 8 , 16 , 6000 , 400 } ,
{ SpellID : : Immolation , 60 , MagicType : : Fire , P_ ( " spell " , " Immolation " ) , 14 , 10 , false , false , 87 , IS_CAST2 , { MissileID : : Immolation , MissileID : : Null , MissileID : : Null } , 3 , 35 , 16 , 32 , 21000 , 1300 } ,
{ SpellID : : Warp , 35 , MagicType : : Magic , P_ ( " spell " , " Warp " ) , 3 , 3 , false , false , 25 , IS_CAST6 , { MissileID : : Warp , MissileID : : Null , MissileID : : Null } , 3 , 18 , 8 , 12 , 3000 , 200 } ,
{ SpellID : : Reflect , 35 , MagicType : : Magic , P_ ( " spell " , " Reflect " ) , 3 , 3 , false , false , 25 , IS_CAST6 , { MissileID : : Reflect , MissileID : : Null , MissileID : : Null } , 3 , 15 , 8 , 12 , 3000 , 200 } ,
{ SpellID : : Berserk , 35 , MagicType : : Magic , P_ ( " spell " , " Berserk " ) , 3 , 3 , true , false , 35 , IS_CAST6 , { MissileID : : Berserk , MissileID : : Null , MissileID : : Null } , 3 , 15 , 8 , 12 , 3000 , 200 } ,
{ SpellID : : RingOfFire , 28 , MagicType : : Fire , P_ ( " spell " , " Ring of Fire " ) , 5 , 5 , false , false , 27 , IS_CAST2 , { MissileID : : RingOfFire , MissileID : : Null , MissileID : : Null } , 2 , 16 , 8 , 16 , 6000 , 400 } ,
{ SpellID : : Search , 15 , MagicType : : Magic , P_ ( " spell " , " Search " ) , 1 , 3 , false , false , 25 , IS_CAST6 , { MissileID : : Search , MissileID : : Null , MissileID : : Null } , 1 , 1 , 8 , 12 , 3000 , 200 } ,
{ SpellID : : RuneOfFire , 255 , MagicType : : Magic , P_ ( " spell " , " Rune of Fire " ) , - 1 , - 1 , true , false , 48 , IS_CAST8 , { MissileID : : RuneOfFire , MissileID : : Null , MissileID : : Null } , 1 , 10 , 40 , 80 , 8000 , 300 } ,
{ SpellID : : RuneOfLight , 255 , MagicType : : Magic , P_ ( " spell " , " Rune of Light " ) , - 1 , - 1 , true , false , 48 , IS_CAST8 , { MissileID : : RuneOfLight , MissileID : : Null , MissileID : : Null } , 1 , 10 , 40 , 80 , 8000 , 300 } ,
{ SpellID : : RuneOfNova , 255 , MagicType : : Magic , P_ ( " spell " , " Rune of Nova " ) , - 1 , - 1 , true , false , 48 , IS_CAST8 , { MissileID : : RuneOfNova , MissileID : : Null , MissileID : : Null } , 1 , 10 , 40 , 80 , 8000 , 300 } ,
{ SpellID : : RuneOfImmolation , 255 , MagicType : : Magic , P_ ( " spell " , " Rune of Immolation " ) , - 1 , - 1 , true , false , 48 , IS_CAST8 , { MissileID : : RuneOfImmolation , MissileID : : Null , MissileID : : Null } , 1 , 10 , 40 , 80 , 8000 , 300 } ,
{ SpellID : : RuneOfStone , 255 , MagicType : : Magic , P_ ( " spell " , " Rune of Stone " ) , - 1 , - 1 , true , false , 48 , IS_CAST8 , { MissileID : : RuneOfStone , MissileID : : Null , MissileID : : Null } , 1 , 10 , 40 , 80 , 8000 , 300 } ,
// clang-format on
} ;
} // namespace devilution