You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

222 lines
3.3 KiB

/**
* @file spelldat.h
*
* Interface of all spell data.
*/
#pragma once
#include <stdint.h>
#include "effects.h"
namespace devilution {
#define MAX_SPELLS 52
enum spell_type : uint8_t {
RSPLTYPE_SKILL,
RSPLTYPE_SPELL,
RSPLTYPE_SCROLL,
RSPLTYPE_CHARGES,
RSPLTYPE_INVALID,
};
enum spell_id : int8_t {
SPL_NULL,
SPL_FIREBOLT,
SPL_HEAL,
SPL_LIGHTNING,
SPL_FLASH,
SPL_IDENTIFY,
SPL_FIREWALL,
SPL_TOWN,
SPL_STONE,
SPL_INFRA,
SPL_RNDTELEPORT,
SPL_MANASHIELD,
SPL_FIREBALL,
SPL_GUARDIAN,
SPL_CHAIN,
SPL_WAVE,
SPL_DOOMSERP,
SPL_BLODRIT,
SPL_NOVA,
SPL_INVISIBIL,
SPL_FLAME,
SPL_GOLEM,
SPL_BLODBOIL,
SPL_TELEPORT,
SPL_APOCA,
SPL_ETHEREALIZE,
SPL_REPAIR,
SPL_RECHARGE,
SPL_DISARM,
SPL_ELEMENT,
SPL_CBOLT,
SPL_HBOLT,
SPL_RESURRECT,
SPL_TELEKINESIS,
SPL_HEALOTHER,
SPL_FLARE,
SPL_BONESPIRIT,
SPL_LASTDIABLO = SPL_BONESPIRIT,
SPL_MANA,
SPL_MAGI,
SPL_JESTER,
SPL_LIGHTWALL,
SPL_IMMOLAT,
SPL_WARP,
SPL_REFLECT,
SPL_BERSERK,
SPL_FIRERING,
SPL_SEARCH,
SPL_RUNEFIRE,
SPL_RUNELIGHT,
SPL_RUNENOVA,
SPL_RUNEIMMOLAT,
SPL_RUNESTONE,
SPL_INVALID = -1,
};
enum magic_type : uint8_t {
STYPE_FIRE,
STYPE_LIGHTNING,
STYPE_MAGIC,
};
enum missile_id : int8_t {
MIS_ARROW,
MIS_FIREBOLT,
MIS_GUARDIAN,
MIS_RNDTELEPORT,
MIS_LIGHTBALL,
MIS_FIREWALL,
MIS_FIREBALL,
MIS_LIGHTCTRL,
MIS_LIGHTNING,
MIS_MISEXP,
MIS_TOWN,
MIS_FLASH,
MIS_FLASH2,
MIS_MANASHIELD,
MIS_FIREMOVE,
MIS_CHAIN,
MIS_SENTINAL,
MIS_BLODSTAR,
MIS_BONE,
MIS_METLHIT,
MIS_RHINO,
MIS_MAGMABALL,
MIS_LIGHTCTRL2,
MIS_LIGHTNING2,
MIS_FLARE,
MIS_MISEXP2,
MIS_TELEPORT,
MIS_FARROW,
MIS_DOOMSERP,
MIS_FIREWALLA,
MIS_STONE,
MIS_NULL_1F,
MIS_INVISIBL,
MIS_GOLEM,
MIS_ETHEREALIZE,
MIS_BLODBUR,
MIS_BOOM,
MIS_HEAL,
MIS_FIREWALLC,
MIS_INFRA,
MIS_IDENTIFY,
MIS_WAVE,
MIS_NOVA,
MIS_BLODBOIL,
MIS_APOCA,
MIS_REPAIR,
MIS_RECHARGE,
MIS_DISARM,
MIS_FLAME,
MIS_FLAMEC,
MIS_FIREMAN,
MIS_KRULL,
MIS_CBOLT,
MIS_HBOLT,
MIS_RESURRECT,
MIS_TELEKINESIS,
MIS_LARROW,
MIS_ACID,
MIS_MISEXP3,
MIS_ACIDPUD,
MIS_HEALOTHER,
MIS_ELEMENT,
MIS_RESURRECTBEAM,
MIS_BONESPIRIT,
MIS_WEAPEXP,
MIS_RPORTAL,
MIS_BOOM2,
MIS_DIABAPOCA,
MIS_MANA,
MIS_MAGI,
MIS_LIGHTWALL,
MIS_LIGHTNINGWALL,
MIS_IMMOLATION,
MIS_SPECARROW,
MIS_FIRENOVA,
MIS_LIGHTARROW,
MIS_CBOLTARROW,
MIS_HBOLTARROW,
MIS_WARP,
MIS_REFLECT,
MIS_BERSERK,
MIS_FIRERING,
MIS_STEALPOTS,
MIS_MANATRAP,
MIS_LIGHTRING,
MIS_SEARCH,
MIS_FLASHFR,
MIS_FLASHBK,
MIS_IMMOLATION2,
MIS_RUNEFIRE,
MIS_RUNELIGHT,
MIS_RUNENOVA,
MIS_RUNEIMMOLAT,
MIS_RUNESTONE,
MIS_HIVEEXP,
MIS_HORKDMN,
MIS_JESTER,
MIS_HIVEEXP2,
MIS_LICH,
MIS_PSYCHORB,
MIS_NECROMORB,
MIS_ARCHLICH,
MIS_BONEDEMON,
MIS_EXYEL2,
MIS_EXRED3,
MIS_EXBL2,
MIS_EXBL3,
MIS_EXORA1,
MIS_NULL = -1,
};
struct SpellData {
spell_id sName;
Uint8 sManaCost;
magic_type sType;
const char *sNameText;
const char *sSkillText;
Sint32 sBookLvl;
Sint32 sStaffLvl;
bool sTargeted;
bool sTownSpell;
Sint32 sMinInt;
_sfx_id sSFX;
missile_id sMissiles[3];
Uint8 sManaAdj;
Uint8 sMinMana;
Sint32 sStaffMin;
Sint32 sStaffMax;
Sint32 sBookCost;
Sint32 sStaffCost;
};
extern SpellData spelldata[];
}