Files
devilution/enums.h
2021-01-31 13:37:42 +01:00

3551 lines
76 KiB
C

/**
* @file enums.h
*
* Various global enumerators.
*/
typedef enum item_quality {
ITEM_QUALITY_NORMAL = 0,
ITEM_QUALITY_MAGIC = 1,
ITEM_QUALITY_UNIQUE = 2,
} item_quality;
typedef enum unique_base_item {
UITYPE_NONE = 0x0,
UITYPE_SHORTBOW = 0x1,
UITYPE_LONGBOW = 0x2,
UITYPE_HUNTBOW = 0x3,
UITYPE_COMPBOW = 0x4,
UITYPE_WARBOW = 0x5,
UITYPE_BATTLEBOW = 0x6,
UITYPE_DAGGER = 0x7,
UITYPE_FALCHION = 0x8,
UITYPE_CLAYMORE = 0x9,
UITYPE_BROADSWR = 0xA,
UITYPE_SABRE = 0xB,
UITYPE_SCIMITAR = 0xC,
UITYPE_LONGSWR = 0xD,
UITYPE_BASTARDSWR = 0xE,
UITYPE_TWOHANDSWR = 0xF,
UITYPE_GREATSWR = 0x10,
UITYPE_CLEAVER = 0x11,
UITYPE_LARGEAXE = 0x12,
UITYPE_BROADAXE = 0x13,
UITYPE_SMALLAXE = 0x14,
UITYPE_BATTLEAXE = 0x15,
UITYPE_GREATAXE = 0x16,
UITYPE_MACE = 0x17,
UITYPE_MORNSTAR = 0x18,
UITYPE_SPIKCLUB = 0x19,
UITYPE_MAUL = 0x1A,
UITYPE_WARHAMMER = 0x1B,
UITYPE_FLAIL = 0x1C,
UITYPE_LONGSTAFF = 0x1D,
UITYPE_SHORTSTAFF = 0x1E,
UITYPE_COMPSTAFF = 0x1F,
UITYPE_QUARSTAFF = 0x20,
UITYPE_WARSTAFF = 0x21,
UITYPE_SKULLCAP = 0x22,
UITYPE_HELM = 0x23,
UITYPE_GREATHELM = 0x24,
UITYPE_CROWN = 0x25,
UITYPE_38 = 0x26,
UITYPE_RAGS = 0x27,
UITYPE_STUDARMOR = 0x28,
UITYPE_CLOAK = 0x29,
UITYPE_ROBE = 0x2A,
UITYPE_CHAINMAIL = 0x2B,
UITYPE_LEATHARMOR = 0x2C,
UITYPE_BREASTPLATE = 0x2D,
UITYPE_CAPE = 0x2E,
UITYPE_PLATEMAIL = 0x2F,
UITYPE_FULLPLATE = 0x30,
UITYPE_BUCKLER = 0x31,
UITYPE_SMALLSHIELD = 0x32,
UITYPE_LARGESHIELD = 0x33,
UITYPE_KITESHIELD = 0x34,
UITYPE_GOTHSHIELD = 0x35,
UITYPE_RING = 0x36,
UITYPE_55 = 0x37,
UITYPE_AMULET = 0x38,
UITYPE_SKCROWN = 0x39,
UITYPE_INFRARING = 0x3A,
UITYPE_OPTAMULET = 0x3B,
UITYPE_TRING = 0x3C,
UITYPE_HARCREST = 0x3D,
UITYPE_MAPOFDOOM = 0x3E,
UITYPE_ELIXIR = 0x3F,
UITYPE_ARMOFVAL = 0x40,
UITYPE_STEELVEIL = 0x41,
UITYPE_GRISWOLD = 0x42,
UITYPE_LGTFORGE = 0x43,
UITYPE_LAZSTAFF = 0x44,
#ifdef HELLFIRE
UITYPE_BOVINE = 0x45,
#endif
UITYPE_INVALID = -1,
} unique_base_item;
typedef enum item_effect_type {
IPL_TOHIT = 0x0,
IPL_TOHIT_CURSE = 0x1,
IPL_DAMP = 0x2,
IPL_DAMP_CURSE = 0x3,
IPL_TOHIT_DAMP = 0x4,
IPL_TOHIT_DAMP_CURSE = 0x5,
IPL_ACP = 0x6,
IPL_ACP_CURSE = 0x7,
IPL_FIRERES = 0x8,
IPL_LIGHTRES = 0x9,
IPL_MAGICRES = 0xA,
IPL_ALLRES = 0xB,
IPL_SPLCOST = 0xC, /* only used in beta */
IPL_SPLDUR = 0xD, /* only used in beta */
IPL_SPLLVLADD = 0xE,
IPL_CHARGES = 0xF,
IPL_FIREDAM = 0x10,
IPL_LIGHTDAM = 0x11,
IPL_STR = 0x13,
IPL_STR_CURSE = 0x14,
IPL_MAG = 0x15,
IPL_MAG_CURSE = 0x16,
IPL_DEX = 0x17,
IPL_DEX_CURSE = 0x18,
IPL_VIT = 0x19,
IPL_VIT_CURSE = 0x1A,
IPL_ATTRIBS = 0x1B,
IPL_ATTRIBS_CURSE = 0x1C,
IPL_GETHIT_CURSE = 0x1D,
IPL_GETHIT = 0x1E,
IPL_LIFE = 0x1F,
IPL_LIFE_CURSE = 0x20,
IPL_MANA = 0x21,
IPL_MANA_CURSE = 0x22,
IPL_DUR = 0x23,
IPL_DUR_CURSE = 0x24,
IPL_INDESTRUCTIBLE = 0x25,
IPL_LIGHT = 0x26,
IPL_LIGHT_CURSE = 0x27,
IPL_MULT_ARROWS = 0x29, /* only used in hellfire */
IPL_FIRE_ARROWS = 0x2A,
IPL_LIGHT_ARROWS = 0x2B,
IPL_INVCURS = 0x2C,
IPL_THORNS = 0x2D,
IPL_NOMANA = 0x2E,
IPL_NOHEALPLR = 0x2F,
IPL_FIREBALL = 0x32, /* only used in hellfire */
IPL_ABSHALFTRAP = 0x34,
IPL_KNOCKBACK = 0x35,
IPL_NOHEALMON = 0x36,
IPL_STEALMANA = 0x37,
IPL_STEALLIFE = 0x38,
IPL_TARGAC = 0x39,
IPL_FASTATTACK = 0x3A,
IPL_FASTRECOVER = 0x3B,
IPL_FASTBLOCK = 0x3C,
IPL_DAMMOD = 0x3D,
IPL_RNDARROWVEL = 0x3E,
IPL_SETDAM = 0x3F,
IPL_SETDUR = 0x40,
IPL_NOMINSTR = 0x41,
IPL_SPELL = 0x42,
IPL_FASTSWING = 0x43,
IPL_ONEHAND = 0x44,
IPL_3XDAMVDEM = 0x45,
IPL_ALLRESZERO = 0x46,
IPL_DRAINLIFE = 0x48,
IPL_RNDSTEALLIFE = 0x49,
IPL_INFRAVISION = 0x4A,
IPL_SETAC = 0x4B,
IPL_ADDACLIFE = 0x4C,
IPL_ADDMANAAC = 0x4D,
IPL_FIRERESCLVL = 0x4E,
IPL_AC_CURSE = 0x4F,
#ifdef HELLFIRE
IPL_FIRERES_CURSE = 0x50,
IPL_LIGHTRES_CURSE = 0x51,
IPL_MAGICRES_CURSE = 0x52,
IPL_ALLRES_CURSE = 0x53,
IPL_DEVASTATION = 0x54,
IPL_DECAY = 0x55,
IPL_PERIL = 0x56,
IPL_JESTERS = 0x57,
IPL_CRYSTALLINE = 0x58,
IPL_DOPPELGANGER = 0x59,
IPL_ACDEMON = 0x5A,
IPL_ACUNDEAD = 0x5B,
IPL_MANATOLIFE = 0x5C,
IPL_LIFETOMANA = 0x5D,
#endif
IPL_INVALID = -1,
} item_effect_type;
typedef enum affix_item_type {
PLT_MISC = 0x1,
PLT_BOW = 0x10,
PLT_STAFF = 0x100,
PLT_WEAP = 0x1000,
PLT_SHLD = 0x10000,
PLT_ARMO = 0x100000,
} affix_item_type;
/// Item graphic IDs; frame_num-11 of objcurs.cel.
typedef enum item_cursor_graphic {
ICURS_POTION_OF_FULL_MANA = 0,
ICURS_SCROLL_OF = 1,
ICURS_GOLD_SMALL = 4,
ICURS_GOLD_MEDIUM = 5,
ICURS_GOLD_LARGE = 6,
ICURS_RING_OF_TRUTH = 10,
ICURS_RING = 12,
ICURS_SPECTRAL_ELIXIR = 15,
ICURS_GOLDEN_ELIXIR = 17,
ICURS_EMPYREAN_BAND = 18,
ICURS_EAR_SORCEROR = 19,
ICURS_EAR_WARRIOR = 20,
ICURS_EAR_ROGUE = 21,
ICURS_BLOOD_STONE = 25,
#ifdef HELLFIRE
ICURS_OIL = 30,
#endif
ICURS_ELIXIR_OF_VITALITY = 31,
ICURS_POTION_OF_HEALING = 32,
ICURS_POTION_OF_FULL_REJUVENATION = 33,
ICURS_ELIXIR_OF_MAGIC = 34,
ICURS_POTION_OF_FULL_HEALING = 35,
ICURS_ELIXIR_OF_DEXTERITY = 36,
ICURS_POTION_OF_REJUVENATION = 37,
ICURS_ELIXIR_OF_STRENGTH = 38,
ICURS_POTION_OF_MANA = 39,
ICURS_BRAIN = 40,
ICURS_OPTIC_AMULET = 44,
ICURS_AMULET = 45,
ICURS_DAGGER = 51,
ICURS_BLADE = 56,
ICURS_BASTARD_SWORD = 57,
ICURS_MACE = 59,
ICURS_LONG_SWORD = 60,
ICURS_BROAD_SWORD = 61,
ICURS_FALCHION = 62,
ICURS_MORNING_STAR = 63,
ICURS_SHORT_SWORD = 64,
ICURS_CLAYMORE = 65,
ICURS_CLUB = 66,
ICURS_SABRE = 67,
ICURS_SPIKED_CLUB = 70,
ICURS_SCIMITAR = 72,
ICURS_FULL_HELM = 75,
ICURS_MAGIC_ROCK = 76,
ICURS_THE_UNDEAD_CROWN = 78,
ICURS_HELM = 82,
ICURS_BUCKLER = 83,
ICURS_VIEL_OF_STEEL = 85,
ICURS_BOOK_GREY = 86,
ICURS_BOOK_RED = 87,
ICURS_BOOK_BLUE = 88,
ICURS_BLACK_MUSHROOM = 89,
ICURS_SKULL_CAP = 90,
ICURS_CAP = 91,
ICURS_HARLEQUIN_CREST = 93,
ICURS_CROWN = 95,
ICURS_MAP_OF_THE_STARS = 96,
ICURS_FUNGAL_TOME = 97,
ICURS_GREAT_HELM = 98,
ICURS_BATTLE_AXE = 101,
ICURS_HUNTERS_BOW = 102,
ICURS_FIELD_PLATE = 103,
ICURS_SMALL_SHIELD = 105,
ICURS_CLEAVER = 106,
ICURS_STUDDED_LEATHER_ARMOR = 107,
ICURS_SHORT_STAFF = 109,
ICURS_TWO_HANDED_SWORD = 110,
ICURS_CHAIN_MAIL = 111,
ICURS_SMALL_AXE = 112,
ICURS_KITE_SHIELD = 113,
ICURS_SCALE_MAIL = 114,
ICURS_SHORT_BOW = 118,
ICURS_LONG_WAR_BOW = 119,
ICURS_WAR_HAMMER = 121,
ICURS_MAUL = 122,
ICURS_LONG_STAFF = 123,
ICURS_WAR_STAFF = 124,
ICURS_TAVERN_SIGN = 126,
ICURS_HARD_LEATHER_ARMOR = 127,
ICURS_RAGS = 128,
ICURS_QUILTED_ARMOR = 129,
ICURS_FLAIL = 131,
ICURS_TOWER_SHIELD = 132,
ICURS_COMPOSITE_BOW = 133,
ICURS_GREAT_SWORD = 134,
ICURS_LEATHER_ARMOR = 135,
ICURS_SPLINT_MAIL = 136,
ICURS_ROBE = 137,
ICURS_ANVIL_OF_FURY = 140,
ICURS_BROAD_AXE = 141,
ICURS_LARGE_AXE = 142,
ICURS_GREAT_AXE = 143,
ICURS_AXE = 144,
ICURS_LARGE_SHIELD = 147,
ICURS_GOTHIC_SHIELD = 148,
ICURS_CLOAK = 149,
ICURS_CAPE = 150,
ICURS_FULL_PLATE_MAIL = 151,
ICURS_GOTHIC_PLATE = 152,
ICURS_BREAST_PLATE = 153,
ICURS_RING_MAIL = 154,
ICURS_STAFF_OF_LAZARUS = 155,
ICURS_ARKAINES_VALOR = 157,
ICURS_SHORT_WAR_BOW = 165,
ICURS_COMPOSITE_STAFF = 166,
ICURS_SHORT_BATTLE_BOW = 167,
ICURS_GOLD = 168,
#ifdef HELLFIRE
ICURS_AURIC_AMULET = 180,
ICURS_RUNE_BOMB = 187,
ICURS_THEODORE = 188,
ICURS_TORN_NOTE_1 = 189,
ICURS_TORN_NOTE_2 = 190,
ICURS_TORN_NOTE_3 = 191,
ICURS_RECONSTRUCTED_NOTE = 192,
ICURS_RUNE_OF_FIRE = 193,
ICURS_GREATER_RUNE_OF_FIRE = 194,
ICURS_RUNE_OF_LIGHTNING = 195,
ICURS_GREATER_RUNE_OF_LIGHTNING = 196,
ICURS_RUNE_OF_STONE = 197,
ICURS_GREY_SUIT = 198,
ICURS_BROWN_SUIT = 199,
ICURS_BOVINE = 226,
#endif
} item_cursor_graphic;
typedef enum _sfx_id {
PS_WALK1,
PS_WALK2,
PS_WALK3,
PS_WALK4,
PS_BFIRE,
PS_FMAG,
PS_TMAG,
PS_LGHIT,
PS_LGHIT1,
PS_SWING,
PS_SWING2,
PS_DEAD,
#ifdef HELLFIRE
IS_STING1,
IS_FBALLBOW,
#endif
IS_QUESTDN,
IS_ARMRFKD,
IS_BARLFIRE,
IS_BARREL,
#ifdef HELLFIRE
IS_POPPOP8,
IS_POPPOP5,
IS_POPPOP3,
IS_POPPOP2,
#endif
IS_BHIT,
IS_BHIT1,
IS_CHEST,
IS_DOORCLOS,
IS_DOOROPEN,
IS_FANVL,
IS_FAXE,
IS_FBLST,
IS_FBODY,
IS_FBOOK,
IS_FBOW,
IS_FCAP,
IS_FHARM,
IS_FLARM,
IS_FMAG,
IS_FMAG1,
IS_FMUSH,
IS_FPOT,
IS_FRING,
IS_FROCK,
IS_FSCRL,
IS_FSHLD,
IS_FSIGN,
IS_FSTAF,
IS_FSWOR,
IS_GOLD,
IS_HLMTFKD,
IS_IANVL,
IS_IAXE,
IS_IBLST,
IS_IBODY,
IS_IBOOK,
IS_IBOW,
IS_ICAP,
IS_IGRAB,
IS_IHARM,
IS_ILARM,
IS_IMUSH,
IS_IPOT,
IS_IRING,
IS_IROCK,
IS_ISCROL,
IS_ISHIEL,
IS_ISIGN,
IS_ISTAF,
IS_ISWORD,
IS_LEVER,
IS_MAGIC,
IS_MAGIC1,
IS_RBOOK,
IS_SARC,
IS_SHLDFKD,
IS_SWRDFKD,
IS_TITLEMOV,
IS_TITLSLCT,
SFX_SILENCE,
IS_TRAP,
IS_CAST1,
IS_CAST10,
IS_CAST12,
IS_CAST2,
IS_CAST3,
IS_CAST4,
IS_CAST5,
IS_CAST6,
IS_CAST7,
IS_CAST8,
IS_CAST9,
LS_HEALING,
IS_REPAIR,
LS_ACID,
LS_ACIDS,
LS_APOC,
LS_ARROWALL,
LS_BLODBOIL,
LS_BLODSTAR,
LS_BLSIMPT,
LS_BONESP,
LS_BSIMPCT,
LS_CALDRON,
LS_CBOLT,
LS_CHLTNING,
LS_DSERP,
LS_ELECIMP1,
LS_ELEMENTL,
LS_ETHEREAL,
LS_FBALL,
LS_FBOLT1,
LS_FBOLT2,
LS_FIRIMP1,
LS_FIRIMP2,
LS_FLAMWAVE,
LS_FLASH,
LS_FOUNTAIN,
LS_GOLUM,
LS_GOLUMDED,
LS_GSHRINE,
LS_GUARD,
LS_GUARDLAN,
LS_HOLYBOLT,
LS_HYPER,
LS_INFRAVIS,
LS_INVISIBL,
LS_INVPOT,
LS_LNING1,
LS_LTNING,
LS_MSHIELD,
#ifdef HELLFIRE
LS_NESTXPLD,
#endif
LS_NOVA,
LS_PORTAL,
LS_PUDDLE,
LS_RESUR,
LS_SCURSE,
LS_SCURIMP,
LS_SENTINEL,
LS_SHATTER,
LS_SOULFIRE,
LS_SPOUTLOP,
LS_SPOUTSTR,
LS_STORM,
LS_TRAPDIS,
LS_TELEPORT,
LS_VTHEFT,
LS_WALLLOOP,
LS_WALLSTRT,
#ifdef HELLFIRE
LS_LMAG,
#endif
#ifndef SPAWN
TSFX_BMAID1,
TSFX_BMAID2,
TSFX_BMAID3,
TSFX_BMAID4,
TSFX_BMAID5,
TSFX_BMAID6,
TSFX_BMAID7,
TSFX_BMAID8,
TSFX_BMAID9,
TSFX_BMAID10,
TSFX_BMAID11,
TSFX_BMAID12,
TSFX_BMAID13,
TSFX_BMAID14,
TSFX_BMAID15,
TSFX_BMAID16,
TSFX_BMAID17,
TSFX_BMAID18,
TSFX_BMAID19,
TSFX_BMAID20,
TSFX_BMAID21,
TSFX_BMAID22,
TSFX_BMAID23,
TSFX_BMAID24,
TSFX_BMAID25,
TSFX_BMAID26,
TSFX_BMAID27,
TSFX_BMAID28,
TSFX_BMAID29,
TSFX_BMAID30,
#endif
TSFX_BMAID31,
#ifndef SPAWN
TSFX_BMAID32,
TSFX_BMAID33,
TSFX_BMAID34,
TSFX_BMAID35,
TSFX_BMAID36,
TSFX_BMAID37,
TSFX_BMAID38,
TSFX_BMAID39,
TSFX_BMAID40,
TSFX_SMITH1,
TSFX_SMITH2,
TSFX_SMITH3,
TSFX_SMITH4,
TSFX_SMITH5,
TSFX_SMITH6,
TSFX_SMITH7,
TSFX_SMITH8,
TSFX_SMITH9,
TSFX_SMITH10,
TSFX_SMITH11,
TSFX_SMITH12,
TSFX_SMITH13,
TSFX_SMITH14,
TSFX_SMITH15,
TSFX_SMITH16,
TSFX_SMITH17,
TSFX_SMITH18,
TSFX_SMITH19,
TSFX_SMITH20,
TSFX_SMITH21,
TSFX_SMITH22,
TSFX_SMITH23,
TSFX_SMITH24,
TSFX_SMITH25,
TSFX_SMITH26,
TSFX_SMITH27,
TSFX_SMITH28,
TSFX_SMITH29,
TSFX_SMITH30,
TSFX_SMITH31,
TSFX_SMITH32,
TSFX_SMITH33,
TSFX_SMITH34,
TSFX_SMITH35,
TSFX_SMITH36,
TSFX_SMITH37,
TSFX_SMITH38,
TSFX_SMITH39,
TSFX_SMITH40,
TSFX_SMITH41,
TSFX_SMITH42,
TSFX_SMITH43,
#endif
TSFX_SMITH44,
#ifndef SPAWN
TSFX_SMITH45,
TSFX_SMITH46,
TSFX_SMITH47,
TSFX_SMITH48,
TSFX_SMITH49,
TSFX_SMITH50,
TSFX_SMITH51,
TSFX_SMITH52,
TSFX_SMITH53,
TSFX_SMITH54,
TSFX_SMITH55,
TSFX_SMITH56,
#endif
TSFX_COW1,
TSFX_COW2,
#ifdef HELLFIRE
TSFX_COW7,
TSFX_COW8,
#endif
#ifndef SPAWN
TSFX_DEADGUY,
TSFX_DRUNK1,
TSFX_DRUNK2,
TSFX_DRUNK3,
TSFX_DRUNK4,
TSFX_DRUNK5,
TSFX_DRUNK6,
TSFX_DRUNK7,
TSFX_DRUNK8,
TSFX_DRUNK9,
TSFX_DRUNK10,
TSFX_DRUNK11,
TSFX_DRUNK12,
TSFX_DRUNK13,
TSFX_DRUNK14,
TSFX_DRUNK15,
TSFX_DRUNK16,
TSFX_DRUNK17,
TSFX_DRUNK18,
TSFX_DRUNK19,
TSFX_DRUNK20,
TSFX_DRUNK21,
TSFX_DRUNK22,
TSFX_DRUNK23,
TSFX_DRUNK24,
TSFX_DRUNK25,
TSFX_DRUNK26,
#endif
TSFX_DRUNK27,
#ifndef SPAWN
TSFX_DRUNK28,
TSFX_DRUNK29,
TSFX_DRUNK30,
TSFX_DRUNK31,
TSFX_DRUNK32,
TSFX_DRUNK33,
TSFX_DRUNK34,
TSFX_DRUNK35,
TSFX_HEALER1,
TSFX_HEALER2,
TSFX_HEALER3,
TSFX_HEALER4,
TSFX_HEALER5,
TSFX_HEALER6,
TSFX_HEALER7,
TSFX_HEALER8,
TSFX_HEALER9,
TSFX_HEALER10,
TSFX_HEALER11,
TSFX_HEALER12,
TSFX_HEALER13,
TSFX_HEALER14,
TSFX_HEALER15,
TSFX_HEALER16,
TSFX_HEALER17,
TSFX_HEALER18,
TSFX_HEALER19,
TSFX_HEALER20,
TSFX_HEALER21,
TSFX_HEALER22,
TSFX_HEALER23,
TSFX_HEALER24,
TSFX_HEALER25,
TSFX_HEALER26,
TSFX_HEALER27,
TSFX_HEALER28,
TSFX_HEALER29,
TSFX_HEALER30,
TSFX_HEALER31,
TSFX_HEALER32,
TSFX_HEALER33,
TSFX_HEALER34,
TSFX_HEALER35,
TSFX_HEALER36,
#endif
TSFX_HEALER37,
#ifndef SPAWN
TSFX_HEALER38,
TSFX_HEALER39,
TSFX_HEALER40,
TSFX_HEALER41,
TSFX_HEALER42,
TSFX_HEALER43,
TSFX_HEALER44,
TSFX_HEALER45,
TSFX_HEALER46,
TSFX_HEALER47,
TSFX_PEGBOY1,
TSFX_PEGBOY2,
TSFX_PEGBOY3,
TSFX_PEGBOY4,
TSFX_PEGBOY5,
TSFX_PEGBOY6,
TSFX_PEGBOY7,
TSFX_PEGBOY8,
TSFX_PEGBOY9,
TSFX_PEGBOY10,
TSFX_PEGBOY11,
TSFX_PEGBOY12,
TSFX_PEGBOY13,
TSFX_PEGBOY14,
TSFX_PEGBOY15,
TSFX_PEGBOY16,
TSFX_PEGBOY17,
TSFX_PEGBOY18,
TSFX_PEGBOY19,
TSFX_PEGBOY20,
TSFX_PEGBOY21,
TSFX_PEGBOY22,
TSFX_PEGBOY23,
TSFX_PEGBOY24,
TSFX_PEGBOY25,
TSFX_PEGBOY26,
TSFX_PEGBOY27,
TSFX_PEGBOY28,
TSFX_PEGBOY29,
TSFX_PEGBOY30,
TSFX_PEGBOY31,
#endif
TSFX_PEGBOY32,
#ifndef SPAWN
TSFX_PEGBOY33,
TSFX_PEGBOY34,
TSFX_PEGBOY35,
TSFX_PEGBOY36,
TSFX_PEGBOY37,
TSFX_PEGBOY38,
TSFX_PEGBOY39,
TSFX_PEGBOY40,
TSFX_PEGBOY41,
TSFX_PEGBOY42,
TSFX_PEGBOY43,
TSFX_PRIEST0,
TSFX_PRIEST1,
TSFX_PRIEST2,
TSFX_PRIEST3,
TSFX_PRIEST4,
TSFX_PRIEST5,
TSFX_PRIEST6,
TSFX_PRIEST7,
TSFX_STORY0,
TSFX_STORY1,
TSFX_STORY2,
TSFX_STORY3,
TSFX_STORY4,
TSFX_STORY5,
TSFX_STORY6,
TSFX_STORY7,
TSFX_STORY8,
TSFX_STORY9,
TSFX_STORY10,
TSFX_STORY11,
TSFX_STORY12,
TSFX_STORY13,
TSFX_STORY14,
TSFX_STORY15,
TSFX_STORY16,
TSFX_STORY17,
TSFX_STORY18,
TSFX_STORY19,
TSFX_STORY20,
TSFX_STORY21,
TSFX_STORY22,
TSFX_STORY23,
TSFX_STORY24,
#endif
TSFX_STORY25,
#ifndef SPAWN
TSFX_STORY26,
TSFX_STORY27,
TSFX_STORY28,
TSFX_STORY29,
TSFX_STORY30,
TSFX_STORY31,
TSFX_STORY32,
TSFX_STORY33,
TSFX_STORY34,
TSFX_STORY35,
TSFX_STORY36,
TSFX_STORY37,
TSFX_STORY38,
#endif
TSFX_TAVERN0,
#ifndef SPAWN
TSFX_TAVERN1,
TSFX_TAVERN2,
TSFX_TAVERN3,
TSFX_TAVERN4,
TSFX_TAVERN5,
TSFX_TAVERN6,
TSFX_TAVERN7,
TSFX_TAVERN8,
TSFX_TAVERN9,
TSFX_TAVERN10,
TSFX_TAVERN11,
TSFX_TAVERN12,
TSFX_TAVERN13,
TSFX_TAVERN14,
TSFX_TAVERN15,
TSFX_TAVERN16,
TSFX_TAVERN17,
TSFX_TAVERN18,
TSFX_TAVERN19,
TSFX_TAVERN20,
TSFX_TAVERN21,
TSFX_TAVERN22,
TSFX_TAVERN23,
TSFX_TAVERN24,
TSFX_TAVERN25,
TSFX_TAVERN26,
TSFX_TAVERN27,
TSFX_TAVERN28,
TSFX_TAVERN29,
TSFX_TAVERN30,
TSFX_TAVERN31,
TSFX_TAVERN32,
TSFX_TAVERN33,
TSFX_TAVERN34,
TSFX_TAVERN35,
#endif
TSFX_TAVERN36,
#ifndef SPAWN
TSFX_TAVERN37,
TSFX_TAVERN38,
TSFX_TAVERN39,
TSFX_TAVERN40,
TSFX_TAVERN41,
TSFX_TAVERN42,
TSFX_TAVERN43,
TSFX_TAVERN44,
TSFX_TAVERN45,
TSFX_WITCH1,
TSFX_WITCH2,
TSFX_WITCH3,
TSFX_WITCH4,
TSFX_WITCH5,
TSFX_WITCH6,
TSFX_WITCH7,
TSFX_WITCH8,
TSFX_WITCH9,
TSFX_WITCH10,
TSFX_WITCH11,
TSFX_WITCH12,
TSFX_WITCH13,
TSFX_WITCH14,
TSFX_WITCH15,
TSFX_WITCH16,
TSFX_WITCH17,
TSFX_WITCH18,
TSFX_WITCH19,
TSFX_WITCH20,
TSFX_WITCH21,
TSFX_WITCH22,
TSFX_WITCH23,
TSFX_WITCH24,
TSFX_WITCH25,
TSFX_WITCH26,
TSFX_WITCH27,
TSFX_WITCH28,
TSFX_WITCH29,
TSFX_WITCH30,
TSFX_WITCH31,
TSFX_WITCH32,
TSFX_WITCH33,
TSFX_WITCH34,
TSFX_WITCH35,
TSFX_WITCH36,
TSFX_WITCH37,
#endif
TSFX_WITCH38,
#ifndef SPAWN
TSFX_WITCH39,
TSFX_WITCH40,
TSFX_WITCH41,
TSFX_WITCH42,
TSFX_WITCH43,
TSFX_WITCH44,
TSFX_WITCH45,
TSFX_WITCH46,
TSFX_WITCH47,
TSFX_WITCH48,
TSFX_WITCH49,
TSFX_WITCH50,
TSFX_WOUND,
PS_MAGE1,
PS_MAGE2,
PS_MAGE3,
PS_MAGE4,
PS_MAGE5,
PS_MAGE6,
PS_MAGE7,
PS_MAGE8,
PS_MAGE9,
PS_MAGE10,
PS_MAGE11,
PS_MAGE12,
PS_MAGE13,
PS_MAGE14,
PS_MAGE15,
PS_MAGE16,
PS_MAGE17,
PS_MAGE18,
PS_MAGE19,
PS_MAGE20,
PS_MAGE21,
PS_MAGE22,
PS_MAGE23,
PS_MAGE24,
PS_MAGE25,
PS_MAGE26,
PS_MAGE27,
PS_MAGE28,
PS_MAGE29,
PS_MAGE30,
PS_MAGE31,
PS_MAGE32,
PS_MAGE33,
PS_MAGE34,
PS_MAGE35,
PS_MAGE36,
PS_MAGE37,
PS_MAGE38,
PS_MAGE39,
PS_MAGE40,
PS_MAGE41,
PS_MAGE42,
PS_MAGE43,
PS_MAGE44,
PS_MAGE45,
PS_MAGE46,
PS_MAGE47,
PS_MAGE48,
PS_MAGE49,
PS_MAGE50,
PS_MAGE51,
PS_MAGE52,
PS_MAGE53,
PS_MAGE54,
PS_MAGE55,
PS_MAGE56,
PS_MAGE57,
PS_MAGE58,
PS_MAGE59,
PS_MAGE60,
PS_MAGE61,
PS_MAGE62,
PS_MAGE63,
PS_MAGE64,
PS_MAGE65,
PS_MAGE66,
PS_MAGE67,
PS_MAGE68,
PS_MAGE69,
PS_MAGE69B,
PS_MAGE70,
PS_MAGE71,
PS_MAGE72,
PS_MAGE73,
PS_MAGE74,
PS_MAGE75,
PS_MAGE76,
PS_MAGE77,
PS_MAGE78,
PS_MAGE79,
PS_MAGE80,
PS_MAGE81,
PS_MAGE82,
PS_MAGE83,
PS_MAGE84,
PS_MAGE85,
PS_MAGE86,
PS_MAGE87,
PS_MAGE88,
PS_MAGE89,
PS_MAGE90,
PS_MAGE91,
PS_MAGE92,
PS_MAGE93,
PS_MAGE94,
PS_MAGE95,
PS_MAGE96,
PS_MAGE97,
PS_MAGE98,
PS_MAGE99,
PS_MAGE100,
PS_MAGE101,
PS_MAGE102,
PS_ROGUE1,
PS_ROGUE2,
PS_ROGUE3,
PS_ROGUE4,
PS_ROGUE5,
PS_ROGUE6,
PS_ROGUE7,
PS_ROGUE8,
PS_ROGUE9,
PS_ROGUE10,
PS_ROGUE11,
PS_ROGUE12,
PS_ROGUE13,
PS_ROGUE14,
PS_ROGUE15,
PS_ROGUE16,
PS_ROGUE17,
PS_ROGUE18,
PS_ROGUE19,
PS_ROGUE20,
PS_ROGUE21,
PS_ROGUE22,
PS_ROGUE23,
PS_ROGUE24,
PS_ROGUE25,
PS_ROGUE26,
PS_ROGUE27,
PS_ROGUE28,
PS_ROGUE29,
PS_ROGUE30,
PS_ROGUE31,
PS_ROGUE32,
PS_ROGUE33,
PS_ROGUE34,
PS_ROGUE35,
PS_ROGUE36,
PS_ROGUE37,
PS_ROGUE38,
PS_ROGUE39,
PS_ROGUE40,
PS_ROGUE41,
PS_ROGUE42,
PS_ROGUE43,
PS_ROGUE44,
PS_ROGUE45,
PS_ROGUE46,
PS_ROGUE47,
PS_ROGUE48,
PS_ROGUE49,
PS_ROGUE50,
PS_ROGUE51,
PS_ROGUE52,
PS_ROGUE53,
PS_ROGUE54,
PS_ROGUE55,
PS_ROGUE56,
PS_ROGUE57,
PS_ROGUE58,
PS_ROGUE59,
PS_ROGUE60,
PS_ROGUE61,
PS_ROGUE62,
PS_ROGUE63,
PS_ROGUE64,
PS_ROGUE65,
PS_ROGUE66,
PS_ROGUE67,
PS_ROGUE68,
PS_ROGUE69,
PS_ROGUE69B,
PS_ROGUE70,
PS_ROGUE71,
PS_ROGUE72,
PS_ROGUE73,
PS_ROGUE74,
PS_ROGUE75,
PS_ROGUE76,
PS_ROGUE77,
PS_ROGUE78,
PS_ROGUE79,
PS_ROGUE80,
PS_ROGUE81,
PS_ROGUE82,
PS_ROGUE83,
PS_ROGUE84,
PS_ROGUE85,
PS_ROGUE86,
PS_ROGUE87,
PS_ROGUE88,
PS_ROGUE89,
PS_ROGUE90,
PS_ROGUE91,
PS_ROGUE92,
PS_ROGUE93,
PS_ROGUE94,
PS_ROGUE95,
PS_ROGUE96,
PS_ROGUE97,
PS_ROGUE98,
PS_ROGUE99,
PS_ROGUE100,
PS_ROGUE101,
PS_ROGUE102,
PS_WARR1,
PS_WARR2,
PS_WARR3,
PS_WARR4,
PS_WARR5,
PS_WARR6,
PS_WARR7,
PS_WARR8,
PS_WARR9,
PS_WARR10,
PS_WARR11,
PS_WARR12,
#endif
PS_WARR13,
PS_WARR14,
PS_WARR14B,
PS_WARR14C,
PS_WARR15,
PS_WARR15B,
PS_WARR15C,
PS_WARR16,
PS_WARR16B,
PS_WARR16C,
PS_WARR17,
PS_WARR18,
PS_WARR19,
PS_WARR20,
PS_WARR21,
PS_WARR22,
PS_WARR23,
PS_WARR24,
PS_WARR25,
PS_WARR26,
PS_WARR27,
PS_WARR28,
PS_WARR29,
PS_WARR30,
PS_WARR31,
PS_WARR32,
PS_WARR33,
PS_WARR34,
PS_WARR35,
PS_WARR36,
PS_WARR37,
PS_WARR38,
PS_WARR39,
PS_WARR40,
PS_WARR41,
PS_WARR42,
PS_WARR43,
PS_WARR44,
PS_WARR45,
PS_WARR46,
PS_WARR47,
PS_WARR48,
PS_WARR49,
PS_WARR50,
PS_WARR51,
PS_WARR52,
PS_WARR53,
PS_WARR54,
PS_WARR55,
PS_WARR56,
PS_WARR57,
PS_WARR58,
PS_WARR59,
PS_WARR60,
PS_WARR61,
PS_WARR62,
PS_WARR63,
PS_WARR64,
PS_WARR65,
PS_WARR66,
PS_WARR67,
PS_WARR68,
PS_WARR69,
PS_WARR69B,
PS_WARR70,
PS_WARR71,
PS_WARR72,
PS_WARR73,
PS_WARR74,
PS_WARR75,
PS_WARR76,
PS_WARR77,
PS_WARR78,
PS_WARR79,
#ifndef SPAWN
PS_WARR80,
PS_WARR81,
PS_WARR82,
PS_WARR83,
PS_WARR84,
PS_WARR85,
PS_WARR86,
PS_WARR87,
PS_WARR88,
PS_WARR89,
PS_WARR90,
PS_WARR91,
PS_WARR92,
PS_WARR93,
PS_WARR94,
PS_WARR95,
PS_WARR95B,
PS_WARR95C,
PS_WARR95D,
PS_WARR95E,
PS_WARR95F,
#endif
PS_WARR96B,
PS_WARR97,
PS_WARR98,
PS_WARR99,
#ifndef SPAWN
PS_WARR100,
PS_WARR101,
PS_WARR102,
#endif
#ifdef HELLFIRE
PS_MONK1,
PS_MONK2,
PS_MONK3,
PS_MONK4,
PS_MONK5,
PS_MONK6,
PS_MONK7,
PS_MONK8,
PS_MONK9,
PS_MONK10,
PS_MONK11,
PS_MONK12,
PS_MONK13,
PS_MONK14,
PS_MONK15,
PS_MONK16,
PS_MONK17,
PS_MONK18,
PS_MONK19,
PS_MONK20,
PS_MONK21,
PS_MONK22,
PS_MONK23,
PS_MONK24,
PS_MONK25,
PS_MONK26,
PS_MONK27,
PS_MONK28,
PS_MONK29,
PS_MONK30,
PS_MONK31,
PS_MONK32,
PS_MONK33,
PS_MONK34,
PS_MONK35,
PS_MONK36,
PS_MONK37,
PS_MONK38,
PS_MONK39,
PS_MONK40,
PS_MONK41,
PS_MONK42,
PS_MONK43,
PS_MONK44,
PS_MONK45,
PS_MONK46,
PS_MONK47,
PS_MONK48,
PS_MONK49,
PS_MONK50,
PS_MONK51,
PS_MONK52,
PS_MONK53,
PS_MONK54,
PS_MONK55,
PS_MONK56,
PS_MONK57,
PS_MONK58,
PS_MONK59,
PS_MONK60,
PS_MONK61,
PS_MONK62,
PS_MONK63,
PS_MONK64,
PS_MONK65,
PS_MONK66,
PS_MONK67,
PS_MONK68,
PS_MONK69,
PS_MONK69B,
PS_MONK70,
PS_MONK71,
PS_MONK72,
PS_MONK73,
PS_MONK74,
PS_MONK75,
PS_MONK76,
PS_MONK77,
PS_MONK78,
PS_MONK79,
PS_MONK80,
PS_MONK81,
PS_MONK82,
PS_MONK83,
PS_MONK84,
PS_MONK85,
PS_MONK86,
PS_MONK87,
PS_MONK88,
PS_MONK89,
PS_MONK90,
PS_MONK91,
PS_MONK92,
PS_MONK93,
PS_MONK94,
PS_MONK95,
PS_MONK96,
PS_MONK97,
PS_MONK98,
PS_MONK99,
PS_MONK100,
PS_MONK101,
PS_MONK102,
#endif
#ifndef SPAWN
PS_NAR1,
PS_NAR2,
PS_NAR3,
PS_NAR4,
PS_NAR5,
PS_NAR6,
PS_NAR7,
PS_NAR8,
PS_NAR9,
PS_DIABLVLINT,
USFX_CLEAVER,
USFX_GARBUD1,
USFX_GARBUD2,
USFX_GARBUD3,
USFX_GARBUD4,
USFX_IZUAL1,
USFX_LACH1,
USFX_LACH2,
USFX_LACH3,
USFX_LAZ1,
USFX_LAZ2,
USFX_SKING1,
USFX_SNOT1,
USFX_SNOT2,
USFX_SNOT3,
USFX_WARLRD1,
USFX_WLOCK1,
USFX_ZHAR1,
USFX_ZHAR2,
USFX_DIABLOD,
#endif
#ifdef HELLFIRE
TSFX_FARMER1,
TSFX_FARMER2,
TSFX_FARMER2A,
TSFX_FARMER3,
TSFX_FARMER4,
TSFX_FARMER5,
TSFX_FARMER6,
TSFX_FARMER7,
TSFX_FARMER8,
TSFX_FARMER9,
TSFX_TEDDYBR1,
TSFX_TEDDYBR2,
TSFX_TEDDYBR3,
TSFX_TEDDYBR4,
USFX_DEFILER1,
USFX_DEFILER2,
USFX_DEFILER3,
USFX_DEFILER4,
USFX_DEFILER8,
USFX_DEFILER6,
USFX_DEFILER7,
USFX_NAKRUL1,
USFX_NAKRUL2,
USFX_NAKRUL3,
USFX_NAKRUL4,
USFX_NAKRUL5,
USFX_NAKRUL6,
PS_NARATR3,
TSFX_COWSUT1,
TSFX_COWSUT2,
TSFX_COWSUT3,
TSFX_COWSUT4,
TSFX_COWSUT4A,
TSFX_COWSUT5,
TSFX_COWSUT6,
TSFX_COWSUT7,
TSFX_COWSUT8,
TSFX_COWSUT9,
TSFX_COWSUT10,
TSFX_COWSUT11,
TSFX_COWSUT12,
USFX_SKLJRN1,
PS_NARATR6,
PS_NARATR7,
PS_NARATR8,
PS_NARATR5,
PS_NARATR9,
PS_NARATR4,
TSFX_TRADER1,
IS_CROPEN,
IS_CRCLOS,
#endif
} _sfx_id;
typedef enum sfx_flag {
sfx_STREAM = 0x01,
sfx_MISC = 0x02,
sfx_UI = 0x04,
sfx_MONK = 0x08,
sfx_ROGUE = 0x10,
sfx_WARRIOR = 0x20,
sfx_SORCEROR = 0x40,
sfx_LOADED = 0x80,
} sfx_flag;
typedef enum item_equip_type {
ILOC_NONE = 0x0,
ILOC_ONEHAND = 0x1,
ILOC_TWOHAND = 0x2,
ILOC_ARMOR = 0x3,
ILOC_HELM = 0x4,
ILOC_RING = 0x5,
ILOC_AMULET = 0x6,
ILOC_UNEQUIPABLE = 0x7,
ILOC_BELT = 0x8,
ILOC_INVALID = -1,
} item_equip_type;
typedef enum missile_id {
MIS_ARROW = 0x0,
MIS_FIREBOLT = 0x1,
MIS_GUARDIAN = 0x2,
MIS_RNDTELEPORT = 0x3,
MIS_LIGHTBALL = 0x4,
MIS_FIREWALL = 0x5,
MIS_FIREBALL = 0x6,
MIS_LIGHTCTRL = 0x7,
MIS_LIGHTNING = 0x8,
MIS_MISEXP = 0x9,
MIS_TOWN = 0xA,
MIS_FLASH = 0xB,
MIS_FLASH2 = 0xC,
MIS_MANASHIELD = 0xD,
MIS_FIREMOVE = 0xE,
MIS_CHAIN = 0xF,
MIS_SENTINAL = 0x10, // TODO: Check beta
MIS_BLODSTAR = 0x11, // TODO: Check beta
MIS_BONE = 0x12, // TODO: Check beta
MIS_METLHIT = 0x13, // TODO: Check beta
MIS_RHINO = 0x14,
MIS_MAGMABALL = 0x15,
MIS_LIGHTCTRL2 = 0x16,
MIS_LIGHTNING2 = 0x17,
MIS_FLARE = 0x18,
MIS_MISEXP2 = 0x19,
MIS_TELEPORT = 0x1A,
MIS_FARROW = 0x1B,
MIS_DOOMSERP = 0x1C,
MIS_FIREWALLA = 0x1D, // TODO: Check beta
MIS_STONE = 0x1E,
MIS_NULL_1F = 0x1F,
MIS_INVISIBL = 0x20,
MIS_GOLEM = 0x21,
MIS_ETHEREALIZE = 0x22,
MIS_BLODBUR = 0x23, // TODO: Check beta
MIS_BOOM = 0x24,
MIS_HEAL = 0x25,
MIS_FIREWALLC = 0x26,
MIS_INFRA = 0x27,
MIS_IDENTIFY = 0x28,
MIS_WAVE = 0x29,
MIS_NOVA = 0x2A,
MIS_BLODBOIL = 0x2B,
MIS_APOCA = 0x2C,
MIS_REPAIR = 0x2D,
MIS_RECHARGE = 0x2E,
MIS_DISARM = 0x2F,
MIS_FLAME = 0x30,
MIS_FLAMEC = 0x31,
MIS_FIREMAN = 0x32, // TODO: Check beta
MIS_KRULL = 0x33, // TODO: Check beta
MIS_CBOLT = 0x34,
MIS_HBOLT = 0x35,
MIS_RESURRECT = 0x36,
MIS_TELEKINESIS = 0x37,
MIS_LARROW = 0x38,
MIS_ACID = 0x39,
MIS_MISEXP3 = 0x3A,
MIS_ACIDPUD = 0x3B,
MIS_HEALOTHER = 0x3C,
MIS_ELEMENT = 0x3D,
MIS_RESURRECTBEAM = 0x3E,
MIS_BONESPIRIT = 0x3F,
MIS_WEAPEXP = 0x40,
MIS_RPORTAL = 0x41,
MIS_BOOM2 = 0x42,
MIS_DIABAPOCA = 0x43,
#ifdef HELLFIRE
MIS_MANA = 0x44,
MIS_MAGI = 0x45,
MIS_LIGHTWALL = 0x46,
MIS_LIGHTNINGWALL = 0x47,
MIS_IMMOLATION = 0x48,
MIS_SPECARROW = 0x49,
MIS_FIRENOVA = 0x4A,
MIS_LIGHTARROW = 0x4B,
MIS_CBOLTARROW = 0x4C,
MIS_HBOLTARROW = 0x4D,
MIS_WARP = 0x4E,
MIS_REFLECT = 0x4F,
MIS_BERSERK = 0x50,
MIS_FIRERING = 0x51,
MIS_STEALPOTS = 0x52,
MIS_MANATRAP = 0x53,
MIS_LIGHTRING = 0x54,
MIS_SEARCH = 0x55,
MIS_FLASHFR = 0x56,
MIS_FLASHBK = 0x57,
MIS_IMMOLATION2 = 0x58,
MIS_RUNEFIRE = 0x59,
MIS_RUNELIGHT = 0x5A,
MIS_RUNENOVA = 0x5B,
MIS_RUNEIMMOLAT = 0x5C,
MIS_RUNESTONE = 0x5D,
MIS_HIVEEXP = 0x5E,
MIS_HORKDMN = 0x5F,
MIS_JESTER = 0x60,
MIS_HIVEEXP2 = 0x61,
MIS_LICH = 0x62,
MIS_PSYCHORB = 0x63,
MIS_NECROMORB = 0x64,
MIS_ARCHLICH = 0x65,
MIS_BONEDEMON = 0x66,
MIS_EXYEL2 = 0x67,
MIS_EXRED3 = 0x68,
MIS_EXBL2 = 0x69,
MIS_EXBL3 = 0x6A,
MIS_EXORA1 = 0x6B,
#endif
} missile_id;
typedef enum missile_graphic_id {
MFILE_ARROWS,
MFILE_FIREBA,
MFILE_GUARD,
MFILE_LGHNING,
MFILE_FIREWAL,
MFILE_MAGBLOS,
MFILE_PORTAL,
MFILE_BLUEXFR,
MFILE_BLUEXBK,
MFILE_MANASHLD,
MFILE_BLOOD,
MFILE_BONE,
MFILE_METLHIT,
MFILE_FARROW,
MFILE_DOOM,
MFILE_0F,
MFILE_BLODBUR,
MFILE_NEWEXP,
MFILE_SHATTER1,
MFILE_BIGEXP,
MFILE_INFERNO,
MFILE_THINLGHT,
MFILE_FLARE,
MFILE_FLAREEXP,
MFILE_MAGBALL,
MFILE_KRULL,
MFILE_MINILTNG,
MFILE_HOLY,
MFILE_HOLYEXPL,
MFILE_LARROW,
MFILE_FIRARWEX,
MFILE_ACIDBF,
MFILE_ACIDSPLA,
MFILE_ACIDPUD,
MFILE_ETHRSHLD,
MFILE_FIRERUN,
MFILE_RESSUR1,
MFILE_SKLBALL,
MFILE_RPORTAL,
MFILE_FIREPLAR,
MFILE_SCUBMISB,
MFILE_SCBSEXPB,
MFILE_SCUBMISC,
MFILE_SCBSEXPC,
MFILE_SCUBMISD,
MFILE_SCBSEXPD,
#ifdef HELLFIRE
MFILE_SPAWNS,
MFILE_REFLECT,
MFILE_LICH,
MFILE_MSBLA,
MFILE_NECROMORB,
MFILE_ARCHLICH,
MFILE_RUNE,
MFILE_EXYEL2,
MFILE_EXBL2,
MFILE_EXRED3,
MFILE_BONEDEMON,
MFILE_EXORA1,
MFILE_EXBL3,
#endif
MFILE_NULL,
MFILE_NONE = 0xFF, // BUGFIX: should be `MFILE_NONE = MFILE_SCBSEXPD+1`, i.e. MFILE_NULL, since there would otherwise be an out-of-bounds in SetMissAnim when accessing misfiledata for any of the missiles that have MFILE_NONE as mFileNum in missiledata.
} missile_graphic_id;
typedef enum _mai_id {
AI_ZOMBIE = 0,
AI_FAT = 1,
AI_SKELSD = 2,
AI_SKELBOW = 3,
AI_SCAV = 4,
AI_RHINO = 5,
AI_GOATMC = 6,
AI_GOATBOW = 7,
AI_FALLEN = 8,
AI_MAGMA = 9,
AI_SKELKING = 10,
AI_BAT = 11,
AI_GARG = 12,
AI_CLEAVER = 13,
AI_SUCC = 14,
AI_SNEAK = 15,
AI_STORM = 16,
AI_FIREMAN = 17,
AI_GARBUD = 18,
AI_ACID = 19,
AI_ACIDUNIQ = 20,
AI_GOLUM = 21,
AI_ZHAR = 22,
AI_SNOTSPIL = 23,
AI_SNAKE = 24,
AI_COUNSLR = 25,
AI_MEGA = 26,
AI_DIABLO = 27,
AI_LAZURUS = 28,
AI_LAZHELP = 29,
AI_LACHDAN = 30,
AI_WARLORD = 31,
#ifdef HELLFIRE
AI_FIREBAT = 32,
AI_TORCHANT = 33,
AI_HORKDMN = 34,
AI_LICH = 35,
AI_ARCHLICH = 36,
AI_PSYCHORB = 37,
AI_NECROMORB = 38,
AI_BONEDEMON = 39,
#endif
} _mai_id;
typedef enum _mc_id {
MC_UNDEAD = 0,
MC_DEMON = 1,
MC_ANIMAL = 2,
} _mc_id;
typedef enum FILE_SYSTEM {
FS_PC = 0,
FS_CD = 1,
} FILE_SYSTEM;
typedef enum _artfonts {
AF_SMALL = 0,
AF_SMALLGRAY = 1,
AF_MED = 2,
AF_MEDGRAY = 3,
AF_BIG = 4,
AF_BIGGRAY = 5,
AF_HUGE = 6,
AF_HUGEGRAY = 7,
} _artfonts;
typedef enum _monster_id {
MT_NZOMBIE = 0x0,
MT_BZOMBIE = 0x1,
MT_GZOMBIE = 0x2,
MT_YZOMBIE = 0x3,
MT_RFALLSP = 0x4,
MT_DFALLSP = 0x5,
MT_YFALLSP = 0x6,
MT_BFALLSP = 0x7,
MT_WSKELAX = 0x8,
MT_TSKELAX = 0x9,
MT_RSKELAX = 0xA,
MT_XSKELAX = 0xB,
MT_RFALLSD = 0xC,
MT_DFALLSD = 0xD,
MT_YFALLSD = 0xE,
MT_BFALLSD = 0xF,
MT_NSCAV = 0x10,
MT_BSCAV = 0x11,
MT_WSCAV = 0x12,
MT_YSCAV = 0x13,
MT_WSKELBW = 0x14,
MT_TSKELBW = 0x15,
MT_RSKELBW = 0x16,
MT_XSKELBW = 0x17,
MT_WSKELSD = 0x18,
MT_TSKELSD = 0x19,
MT_RSKELSD = 0x1A,
MT_XSKELSD = 0x1B,
MT_INVILORD = 0x1C,
MT_SNEAK = 0x1D,
MT_STALKER = 0x1E,
MT_UNSEEN = 0x1F,
MT_ILLWEAV = 0x20,
MT_LRDSAYTR = 0x21,
MT_NGOATMC = 0x22,
MT_BGOATMC = 0x23,
MT_RGOATMC = 0x24,
MT_GGOATMC = 0x25,
MT_FIEND = 0x26,
MT_BLINK = 0x27,
MT_GLOOM = 0x28,
MT_FAMILIAR = 0x29,
MT_NGOATBW = 0x2A,
MT_BGOATBW = 0x2B,
MT_RGOATBW = 0x2C,
MT_GGOATBW = 0x2D,
MT_NACID = 0x2E,
MT_RACID = 0x2F,
MT_BACID = 0x30,
MT_XACID = 0x31,
MT_SKING = 0x32,
MT_CLEAVER = 0x33,
MT_FAT = 0x34,
MT_MUDMAN = 0x35,
MT_TOAD = 0x36,
MT_FLAYED = 0x37,
MT_WYRM = 0x38,
MT_CAVSLUG = 0x39,
MT_DVLWYRM = 0x3A,
MT_DEVOUR = 0x3B,
MT_NMAGMA = 0x3C,
MT_YMAGMA = 0x3D,
MT_BMAGMA = 0x3E,
MT_WMAGMA = 0x3F,
MT_HORNED = 0x40,
MT_MUDRUN = 0x41,
MT_FROSTC = 0x42,
MT_OBLORD = 0x43,
MT_BONEDMN = 0x44,
MT_REDDTH = 0x45,
MT_LTCHDMN = 0x46,
MT_UDEDBLRG = 0x47,
MT_INCIN = 0x48,
MT_FLAMLRD = 0x49,
MT_DOOMFIRE = 0x4A,
MT_HELLBURN = 0x4B,
MT_STORM = 0x4C,
MT_RSTORM = 0x4D,
MT_STORML = 0x4E,
MT_MAEL = 0x4F,
MT_BIGFALL = 0x50,
MT_WINGED = 0x51,
MT_GARGOYLE = 0x52,
MT_BLOODCLW = 0x53,
MT_DEATHW = 0x54,
MT_MEGA = 0x55,
MT_GUARD = 0x56,
MT_VTEXLRD = 0x57,
MT_BALROG = 0x58,
MT_NSNAKE = 0x59,
MT_RSNAKE = 0x5A,
MT_BSNAKE = 0x5B,
MT_GSNAKE = 0x5C,
MT_NBLACK = 0x5D,
MT_RTBLACK = 0x5E,
MT_BTBLACK = 0x5F,
MT_RBLACK = 0x60,
MT_UNRAV = 0x61,
MT_HOLOWONE = 0x62,
MT_PAINMSTR = 0x63,
MT_REALWEAV = 0x64,
MT_SUCCUBUS = 0x65,
MT_SNOWWICH = 0x66,
MT_HLSPWN = 0x67,
MT_SOLBRNR = 0x68,
MT_COUNSLR = 0x69,
MT_MAGISTR = 0x6A,
MT_CABALIST = 0x6B,
MT_ADVOCATE = 0x6C,
MT_GOLEM = 0x6D,
MT_DIABLO = 0x6E,
MT_DARKMAGE = 0x6F,
#ifdef HELLFIRE
MT_HELLBOAR = 0x70,
MT_STINGER = 0x71,
MT_PSYCHORB = 0x72,
MT_ARACHNON = 0x73,
MT_FELLTWIN = 0x74,
MT_HORKSPWN = 0x75,
MT_VENMTAIL = 0x76,
MT_NECRMORB = 0x77,
MT_SPIDLORD = 0x78,
MT_LASHWORM = 0x79,
MT_TORCHANT = 0x7A,
MT_HORKDMN = 0x7B,
MT_DEFILER = 0x7C,
MT_GRAVEDIG = 0x7D,
MT_TOMBRAT = 0x7E,
MT_FIREBAT = 0x7F,
MT_SKLWING = 0x80,
MT_LICH = 0x81,
MT_CRYPTDMN = 0x82,
MT_HELLBAT = 0x83,
MT_BONEDEMN = 0x84,
MT_ARCHLICH = 0x85,
MT_BICLOPS = 0x86,
MT_FLESTHNG = 0x87,
MT_REAPER = 0x88,
MT_NAKRUL = 0x89,
NUM_MTYPES,
#else
NUM_MTYPES = 0x6F, /// BUGFIX the count is off by one
#endif
} _monster_id;
// this enum contains indexes from UniqMonst array for special unique monsters (usually quest related)
typedef enum {
UMT_GARBUD = 0,
UMT_SKELKING = 1,
UMT_ZHAR = 2,
UMT_SNOTSPIL = 3,
UMT_LAZURUS = 4,
UMT_RED_VEX = 5,
UMT_BLACKJADE = 6,
UMT_LACHDAN = 7,
UMT_WARLORD = 8,
UMT_BUTCHER = 9,
#ifdef HELLFIRE
UMT_HORKDMN = 10,
UMT_DEFILER = 11,
UMT_NAKRUL = 12,
#endif
} _uniq_monsterid;
typedef enum monster_flag {
MFLAG_HIDDEN = 0x01,
MFLAG_LOCK_ANIMATION = 0x02,
MFLAG_ALLOW_SPECIAL = 0x04,
MFLAG_NOHEAL = 0x08,
MFLAG_TARGETS_MONSTER = 0x10,
MFLAG_GOLEM = 0x20,
MFLAG_QUEST_COMPLETE = 0x40,
MFLAG_KNOCKBACK = 0x80,
MFLAG_SEARCH = 0x100,
MFLAG_CAN_OPEN_DOOR = 0x200,
MFLAG_NO_ENEMY = 0x400,
MFLAG_BERSERK = 0x800,
MFLAG_NOLIFESTEAL = 0x1000
} monster_flag;
typedef enum monster_goal {
MGOAL_NORMAL = 1,
MGOAL_RETREAT = 2,
MGOAL_HEALING = 3,
MGOAL_MOVE = 4,
MGOAL_ATTACK2 = 5,
MGOAL_INQUIRING = 6,
MGOAL_TALKING = 7,
} monster_goal;
typedef enum monster_resistance {
RESIST_MAGIC = 0x01,
RESIST_FIRE = 0x02,
RESIST_LIGHTNING = 0x04,
IMMUNE_MAGIC = 0x08,
IMMUNE_FIRE = 0x10,
IMMUNE_LIGHTNING = 0x20,
IMMUNE_NULL_40 = 0x40,
IMMUNE_ACID = 0x80,
} monster_resistance;
typedef enum missile_resistance {
MISR_NONE = 0,
MISR_FIRE = 1,
MISR_LIGHTNING = 2,
MISR_MAGIC = 3,
MISR_ACID = 4,
} missile_resistance;
typedef enum _speech_id {
TEXT_KING1 = 0x0,
TEXT_KING2 = 0x1,
TEXT_KING3 = 0x2,
TEXT_KING4 = 0x3,
TEXT_KING5 = 0x4,
TEXT_KING6 = 0x5,
TEXT_KING7 = 0x6,
TEXT_KING8 = 0x7,
TEXT_KING9 = 0x8,
TEXT_KING10 = 0x9,
TEXT_KING11 = 0xA,
TEXT_BANNER1 = 0xB,
TEXT_BANNER2 = 0xC,
TEXT_BANNER3 = 0xD,
TEXT_BANNER4 = 0xE,
TEXT_BANNER5 = 0xF,
TEXT_BANNER6 = 0x10,
TEXT_BANNER7 = 0x11,
TEXT_BANNER8 = 0x12,
TEXT_BANNER9 = 0x13,
TEXT_BANNER10 = 0x14,
TEXT_BANNER11 = 0x15,
TEXT_BANNER12 = 0x16,
TEXT_VILE1 = 0x17,
TEXT_VILE2 = 0x18,
TEXT_VILE3 = 0x19,
TEXT_VILE4 = 0x1A,
TEXT_VILE5 = 0x1B,
TEXT_VILE6 = 0x1C,
TEXT_VILE7 = 0x1D,
TEXT_VILE8 = 0x1E,
TEXT_VILE9 = 0x1F,
TEXT_VILE10 = 0x20,
TEXT_VILE11 = 0x21,
TEXT_VILE12 = 0x22,
TEXT_VILE13 = 0x23,
TEXT_VILE14 = 0x24,
TEXT_POISON1 = 0x25,
TEXT_POISON2 = 0x26,
TEXT_POISON3 = 0x27,
TEXT_POISON4 = 0x28,
TEXT_POISON5 = 0x29,
TEXT_POISON6 = 0x2A,
TEXT_POISON7 = 0x2B,
TEXT_POISON8 = 0x2C,
TEXT_POISON9 = 0x2D,
TEXT_POISON10 = 0x2E,
TEXT_BONE1 = 0x2F,
TEXT_BONE2 = 0x30,
TEXT_BONE3 = 0x31,
TEXT_BONE4 = 0x32,
TEXT_BONE5 = 0x33,
TEXT_BONE6 = 0x34,
TEXT_BONE7 = 0x35,
TEXT_BONE8 = 0x36,
TEXT_BUTCH1 = 0x37,
TEXT_BUTCH2 = 0x38,
TEXT_BUTCH3 = 0x39,
TEXT_BUTCH4 = 0x3A,
TEXT_BUTCH5 = 0x3B,
TEXT_BUTCH6 = 0x3C,
TEXT_BUTCH7 = 0x3D,
TEXT_BUTCH8 = 0x3E,
TEXT_BUTCH9 = 0x3F,
TEXT_BUTCH10 = 0x40,
TEXT_BLIND1 = 0x41,
TEXT_BLIND2 = 0x42,
TEXT_BLIND3 = 0x43,
TEXT_BLIND4 = 0x44,
TEXT_BLIND5 = 0x45,
TEXT_BLIND6 = 0x46,
TEXT_BLIND7 = 0x47,
TEXT_BLIND8 = 0x48,
TEXT_VEIL1 = 0x49,
TEXT_VEIL2 = 0x4A,
TEXT_VEIL3 = 0x4B,
TEXT_VEIL4 = 0x4C,
TEXT_VEIL5 = 0x4D,
TEXT_VEIL6 = 0x4E,
TEXT_VEIL7 = 0x4F,
TEXT_VEIL8 = 0x50,
TEXT_VEIL9 = 0x51,
TEXT_VEIL10 = 0x52,
TEXT_VEIL11 = 0x53,
TEXT_ANVIL1 = 0x54,
TEXT_ANVIL2 = 0x55,
TEXT_ANVIL3 = 0x56,
TEXT_ANVIL4 = 0x57,
TEXT_ANVIL5 = 0x58,
TEXT_ANVIL6 = 0x59,
TEXT_ANVIL7 = 0x5A,
TEXT_ANVIL8 = 0x5B,
TEXT_ANVIL9 = 0x5C,
TEXT_ANVIL10 = 0x5D,
TEXT_BLOOD1 = 0x5E,
TEXT_BLOOD2 = 0x5F,
TEXT_BLOOD3 = 0x60,
TEXT_BLOOD4 = 0x61,
TEXT_BLOOD5 = 0x62,
TEXT_BLOOD6 = 0x63,
TEXT_BLOOD7 = 0x64,
TEXT_BLOOD8 = 0x65,
TEXT_WARLRD1 = 0x66,
TEXT_WARLRD2 = 0x67,
TEXT_WARLRD3 = 0x68,
TEXT_WARLRD4 = 0x69,
TEXT_WARLRD5 = 0x6A,
TEXT_WARLRD6 = 0x6B,
TEXT_WARLRD7 = 0x6C,
TEXT_WARLRD8 = 0x6D,
TEXT_WARLRD9 = 0x6E,
TEXT_INFRA1 = 0x6F,
TEXT_INFRA2 = 0x70,
TEXT_INFRA3 = 0x71,
TEXT_INFRA4 = 0x72,
TEXT_INFRA5 = 0x73,
TEXT_INFRA6 = 0x74,
TEXT_INFRA7 = 0x75,
TEXT_INFRA8 = 0x76,
TEXT_INFRA9 = 0x77,
TEXT_INFRA10 = 0x78,
TEXT_MUSH1 = 0x79,
TEXT_MUSH2 = 0x7A,
TEXT_MUSH3 = 0x7B,
TEXT_MUSH4 = 0x7C,
TEXT_MUSH5 = 0x7D,
TEXT_MUSH6 = 0x7E,
TEXT_MUSH7 = 0x7F,
TEXT_MUSH8 = 0x80,
TEXT_MUSH9 = 0x81,
TEXT_MUSH10 = 0x82,
TEXT_MUSH11 = 0x83,
TEXT_MUSH12 = 0x84,
TEXT_MUSH13 = 0x85,
TEXT_DOOM1 = 0x86,
TEXT_DOOM2 = 0x87,
TEXT_DOOM3 = 0x88,
TEXT_DOOM4 = 0x89,
TEXT_DOOM5 = 0x8A,
TEXT_DOOM6 = 0x8B,
TEXT_DOOM7 = 0x8C,
TEXT_DOOM8 = 0x8D,
TEXT_DOOM9 = 0x8E,
TEXT_DOOM10 = 0x8F,
TEXT_GARBUD1 = 0x90,
TEXT_GARBUD2 = 0x91,
TEXT_GARBUD3 = 0x92,
TEXT_GARBUD4 = 0x93,
TEXT_ZHAR1 = 0x94,
TEXT_ZHAR2 = 0x95,
TEXT_STORY1 = 0x96,
TEXT_STORY2 = 0x97,
TEXT_STORY3 = 0x98,
TEXT_STORY4 = 0x99,
TEXT_STORY5 = 0x9A,
TEXT_STORY6 = 0x9B,
TEXT_STORY7 = 0x9C,
TEXT_STORY9 = 0x9D,
TEXT_STORY10 = 0x9E,
TEXT_STORY11 = 0x9F,
TEXT_OGDEN1 = 0xA0,
TEXT_OGDEN2 = 0xA1,
TEXT_OGDEN3 = 0xA2,
TEXT_OGDEN4 = 0xA3,
TEXT_OGDEN5 = 0xA4,
TEXT_OGDEN6 = 0xA5,
TEXT_OGDEN8 = 0xA6,
TEXT_OGDEN9 = 0xA7,
TEXT_OGDEN10 = 0xA8,
TEXT_PEPIN1 = 0xA9,
TEXT_PEPIN2 = 0xAA,
TEXT_PEPIN3 = 0xAB,
TEXT_PEPIN4 = 0xAC,
TEXT_PEPIN5 = 0xAD,
TEXT_PEPIN6 = 0xAE,
TEXT_PEPIN7 = 0xAF,
TEXT_PEPIN9 = 0xB0,
TEXT_PEPIN10 = 0xB1,
TEXT_PEPIN11 = 0xB2,
TEXT_GILLIAN1 = 0xB3,
TEXT_GILLIAN2 = 0xB4,
TEXT_GILLIAN3 = 0xB5,
TEXT_GILLIAN4 = 0xB6,
TEXT_GILLIAN5 = 0xB7,
TEXT_GILLIAN6 = 0xB8,
TEXT_GILLIAN7 = 0xB9,
TEXT_GILLIAN9 = 0xBA,
TEXT_GILLIAN10 = 0xBB,
TEXT_GRISWOLD1 = 0xBC,
TEXT_GRISWOLD2 = 0xBD,
TEXT_GRISWOLD3 = 0xBE,
TEXT_GRISWOLD4 = 0xBF,
TEXT_GRISWOLD5 = 0xC0,
TEXT_GRISWOLD6 = 0xC1,
TEXT_GRISWOLD7 = 0xC2,
TEXT_GRISWOLD8 = 0xC3,
TEXT_GRISWOLD9 = 0xC4,
TEXT_GRISWOLD10 = 0xC5,
TEXT_GRISWOLD12 = 0xC6,
TEXT_GRISWOLD13 = 0xC7,
TEXT_FARNHAM1 = 0xC8,
TEXT_FARNHAM2 = 0xC9,
TEXT_FARNHAM3 = 0xCA,
TEXT_FARNHAM4 = 0xCB,
TEXT_FARNHAM5 = 0xCC,
TEXT_FARNHAM6 = 0xCD,
TEXT_FARNHAM8 = 0xCE,
TEXT_FARNHAM9 = 0xCF,
TEXT_FARNHAM10 = 0xD0,
TEXT_FARNHAM11 = 0xD1,
TEXT_FARNHAM12 = 0xD2,
TEXT_FARNHAM13 = 0xD3,
TEXT_ADRIA1 = 0xD4,
TEXT_ADRIA2 = 0xD5,
TEXT_ADRIA3 = 0xD6,
TEXT_ADRIA4 = 0xD7,
TEXT_ADRIA5 = 0xD8,
TEXT_ADRIA6 = 0xD9,
TEXT_ADRIA7 = 0xDA,
TEXT_ADRIA8 = 0xDB,
TEXT_ADRIA9 = 0xDC,
TEXT_ADRIA10 = 0xDD,
TEXT_ADRIA12 = 0xDE,
TEXT_ADRIA13 = 0xDF,
TEXT_WIRT1 = 0xE0,
TEXT_WIRT2 = 0xE1,
TEXT_WIRT3 = 0xE2,
TEXT_WIRT4 = 0xE3,
TEXT_WIRT5 = 0xE4,
TEXT_WIRT6 = 0xE5,
TEXT_WIRT7 = 0xE6,
TEXT_WIRT8 = 0xE7,
TEXT_WIRT9 = 0xE8,
TEXT_WIRT11 = 0xE9,
TEXT_WIRT12 = 0xEA,
TEXT_BONER = 0xEB,
TEXT_BLOODY = 0xEC,
TEXT_BLINDING = 0xED,
TEXT_BLOODWAR = 0xEE,
TEXT_MBONER = 0xEF,
TEXT_MBLOODY = 0xF0,
TEXT_MBLINDING = 0xF1,
TEXT_MBLOODWAR = 0xF2,
TEXT_RBONER = 0xF3,
TEXT_RBLOODY = 0xF4,
TEXT_RBLINDING = 0xF5,
TEXT_RBLOODWAR = 0xF6,
TEXT_COW1 = 0xF7,
TEXT_COW2 = 0xF8,
TEXT_BOOK11 = 0xF9,
TEXT_BOOK12 = 0xFA,
TEXT_BOOK13 = 0xFB,
TEXT_BOOK21 = 0xFC,
TEXT_BOOK22 = 0xFD,
TEXT_BOOK23 = 0xFE,
TEXT_BOOK31 = 0xFF,
TEXT_BOOK32 = 0x100,
TEXT_BOOK33 = 0x101,
TEXT_INTRO = 0x102,
#ifdef HELLFIRE
TEXT_HBONER = 0x103,
TEXT_HBLOODY = 0x104,
TEXT_HBLINDING = 0x105,
TEXT_HBLOODWAR = 0x106,
TEXT_BBONER = 0x107,
TEXT_BBLOODY = 0x108,
TEXT_BBLINDING = 0x109,
TEXT_BBLOODWAR = 0x10A,
TEXT_GRAVE1 = 0x10B,
TEXT_GRAVE2 = 0x10C,
TEXT_GRAVE3 = 0x10D,
TEXT_GRAVE4 = 0x10E,
TEXT_GRAVE5 = 0x10F,
TEXT_GRAVE6 = 0x110,
TEXT_GRAVE7 = 0x111,
TEXT_GRAVE8 = 0x112,
TEXT_GRAVE9 = 0x113,
TEXT_GRAVE10 = 0x114,
TEXT_FARMER1 = 0x115,
TEXT_FARMER2 = 0x116,
TEXT_FARMER3 = 0x117,
TEXT_FARMER4 = 0x118,
TEXT_FARMER5 = 0x119,
TEXT_GIRL1 = 0x11A,
TEXT_GIRL2 = 0x11B,
TEXT_GIRL3 = 0x11C,
TEXT_GIRL4 = 0x11D,
TEXT_DEFILER1 = 0x11E,
TEXT_DEFILER2 = 0x11F,
TEXT_DEFILER3 = 0x120,
TEXT_DEFILER4 = 0x121,
TEXT_DEFILER5 = 0x122,
TEXT_NAKRUL1 = 0x123,
TEXT_NAKRUL2 = 0x124,
TEXT_NAKRUL3 = 0x125,
TEXT_NAKRUL4 = 0x126,
TEXT_NAKRUL5 = 0x127,
TEXT_CORNSTN = 0x128,
TEXT_JERSEY1 = 0x129,
TEXT_JERSEY2 = 0x12A,
TEXT_JERSEY3 = 0x12B,
TEXT_JERSEY4 = 0x12C,
TEXT_JERSEY5 = 0x12D,
TEXT_JERSEY6 = 0x12E,
TEXT_JERSEY7 = 0x12F,
TEXT_JERSEY8 = 0x130,
TEXT_JERSEY9 = 0x131,
TEXT_TRADER = 0x132,
TEXT_FARMER6 = 0x133,
TEXT_FARMER7 = 0x134,
TEXT_FARMER8 = 0x135,
TEXT_FARMER9 = 0x136,
TEXT_FARMER10 = 0x137,
TEXT_JERSEY10 = 0x138,
TEXT_JERSEY11 = 0x139,
TEXT_JERSEY12 = 0x13A,
TEXT_JERSEY13 = 0x13B,
TEXT_SKLJRN = 0x13C,
TEXT_BOOK4 = 0x13D,
TEXT_BOOK5 = 0x13E,
TEXT_BOOK6 = 0x13F,
TEXT_BOOK7 = 0x140,
TEXT_BOOK8 = 0x141,
TEXT_BOOK9 = 0x142,
TEXT_BOOKA = 0x143,
TEXT_BOOKB = 0x144,
TEXT_BOOKC = 0x145,
TEXT_OBOOKA = 0x146,
TEXT_OBOOKB = 0x147,
TEXT_OBOOKC = 0x148,
TEXT_MBOOKA = 0x149,
TEXT_MBOOKB = 0x14A,
TEXT_MBOOKC = 0x14B,
TEXT_RBOOKA = 0x14C,
TEXT_RBOOKB = 0x14D,
TEXT_RBOOKC = 0x14E,
TEXT_BBOOKA = 0x14F,
TEXT_BBOOKB = 0x150,
TEXT_BBOOKC = 0x151,
#endif
} _speech_id;
typedef enum object_graphic_id {
OFILE_L1BRAZ = 0x0,
OFILE_L1DOORS = 0x1,
OFILE_LEVER = 0x2,
OFILE_CHEST1 = 0x3,
OFILE_CHEST2 = 0x4,
OFILE_BANNER = 0x5,
OFILE_SKULPILE = 0x6,
OFILE_SKULFIRE = 0x7,
OFILE_SKULSTIK = 0x8,
OFILE_CRUXSK1 = 0x9,
OFILE_CRUXSK2 = 0xA,
OFILE_CRUXSK3 = 0xB,
OFILE_BOOK1 = 0xC,
OFILE_BOOK2 = 0xD,
OFILE_ROCKSTAN = 0xE,
OFILE_ANGEL = 0xF,
OFILE_CHEST3 = 0x10,
OFILE_BURNCROS = 0x11,
OFILE_CANDLE2 = 0x12,
OFILE_NUDE2 = 0x13,
OFILE_SWITCH4 = 0x14,
OFILE_TNUDEM = 0x15,
OFILE_TNUDEW = 0x16,
OFILE_TSOUL = 0x17,
OFILE_L2DOORS = 0x18,
OFILE_WTORCH4 = 0x19,
OFILE_WTORCH3 = 0x1A,
OFILE_SARC = 0x1B,
OFILE_FLAME1 = 0x1C,
OFILE_PRSRPLT1 = 0x1D,
OFILE_TRAPHOLE = 0x1E,
OFILE_MINIWATR = 0x1F,
OFILE_WTORCH2 = 0x20,
OFILE_WTORCH1 = 0x21,
OFILE_BCASE = 0x22,
OFILE_BSHELF = 0x23,
OFILE_WEAPSTND = 0x24,
OFILE_BARREL = 0x25,
OFILE_BARRELEX = 0x26,
OFILE_LSHRINEG = 0x27,
OFILE_RSHRINEG = 0x28,
OFILE_BLOODFNT = 0x29,
OFILE_DECAP = 0x2A,
OFILE_PEDISTL = 0x2B,
OFILE_L3DOORS = 0x2C,
OFILE_PFOUNTN = 0x2D,
OFILE_ARMSTAND = 0x2E,
OFILE_GOATSHRN = 0x2F,
OFILE_CAULDREN = 0x30,
OFILE_MFOUNTN = 0x31,
OFILE_TFOUNTN = 0x32,
OFILE_ALTBOY = 0x33,
OFILE_MCIRL = 0x34,
OFILE_BKSLBRNT = 0x35,
OFILE_MUSHPTCH = 0x36,
OFILE_LZSTAND = 0x37,
} object_graphic_id;
typedef enum dungeon_type {
DTYPE_TOWN = 0x0,
DTYPE_CATHEDRAL = 0x1,
DTYPE_CATACOMBS = 0x2,
DTYPE_CAVES = 0x3,
DTYPE_HELL = 0x4,
#ifdef HELLFIRE
DTYPE_NEST = 0x5,
DTYPE_CRYPT = 0x6,
#endif
DTYPE_NONE = 0xFF,
} dungeon_type;
typedef enum dflag {
BFLAG_MISSILE = 0x01,
BFLAG_VISIBLE = 0x02,
BFLAG_DEAD_PLAYER = 0x04,
BFLAG_POPULATED = 0x08,
BFLAG_MONSTLR = 0x10,
BFLAG_PLAYERLR = 0x20,
BFLAG_LIT = 0x40,
BFLAG_EXPLORED = 0x80,
} dflag;
typedef enum clicktype {
CLICK_NONE = 0,
CLICK_LEFT = 1,
CLICK_RIGHT = 2,
} clicktype;
typedef enum placeflag {
PLACE_SCATTER = 1,
PLACE_SPECIAL = 2,
PLACE_UNIQUE = 4,
} placeflag;
typedef enum mienemy_type {
TARGET_MONSTERS = 0,
TARGET_PLAYERS = 1,
TARGET_BOTH = 2,
} mienemy_type;
/*
Looks like someone treated hex values as binary, so 0x10 came after 0x01, that's why we have 1 and 16, they did the same thing with affix_item_type
*/
typedef enum goodorevil {
GOE_ANY = 0x00,
GOE_EVIL = 0x01,
GOE_GOOD = 0x10,
} goodorevil;
/*
First 5 bits store level
6th bit stores onlygood flag
7th bit stores uper15 flag - uper means unique percent, this flag is true for unique monsters and loot from them has 15% to become unique
8th bit stores uper1 flag - this is loot from normal monsters, which has 1% to become unique
9th bit stores info if item is unique
10th bit stores info if item is a basic one from griswold
11th bit stores info if item is a premium one from griswold
12th bit stores info if item is from wirt
13th bit stores info if item is from adria
14th bit stores info if item is from pepin
15th bit stores pregen flag
combining CF_UPER15 and CF_UPER1 flags (CF_USEFUL) is used to mark potions and town portal scrolls created on the ground
CF_TOWN is combining all store flags and indicates if item has been bought from a NPC
*/
typedef enum icreateinfo_flag {
CF_LEVEL = (1 << 6) - 1,
CF_ONLYGOOD = 1 << 6,
CF_UPER15 = 1 << 7,
CF_UPER1 = 1 << 8,
CF_UNIQUE = 1 << 9,
CF_SMITH = 1 << 10,
CF_SMITHPREMIUM = 1 << 11,
CF_BOY = 1 << 12,
CF_WITCH = 1 << 13,
CF_HEALER = 1 << 14,
CF_PREGEN = 1 << 15,
CF_USEFUL = CF_UPER15 | CF_UPER1,
CF_TOWN = CF_SMITH | CF_SMITHPREMIUM | CF_BOY | CF_WITCH | CF_HEALER,
} icreateinfo_flag;
typedef enum dungeon_message {
DMSG_CATHEDRAL = 1 << 0,
DMSG_CATACOMBS = 1 << 1,
DMSG_CAVES = 1 << 2,
DMSG_HELL = 1 << 3,
DMSG_DIABLO = 1 << 4,
} dungeon_message;
typedef enum diablo_message {
EMSG_NONE = 0,
EMSG_NO_AUTOMAP_IN_TOWN = 1,
EMSG_NO_MULTIPLAYER_IN_DEMO = 2,
EMSG_DIRECT_SOUND_FAILED = 3,
EMSG_NOT_IN_SHAREWARE = 4,
EMSG_NO_SPACE_TO_SAVE = 5,
EMSG_NO_PAUSE_IN_TOWN = 6,
EMSG_COPY_TO_HDD = 7,
EMSG_DESYNC = 8,
EMSG_NO_PAUSE_IN_MP = 9,
EMSG_LOADING = 10,
EMSG_SAVING = 11,
EMSG_SHRINE_MYSTERIOUS = 12,
EMSG_SHRINE_HIDDEN = 13,
EMSG_SHRINE_GLOOMY = 14,
EMSG_SHRINE_WEIRD = 15,
EMSG_SHRINE_MAGICAL = 16,
EMSG_SHRINE_STONE = 17,
EMSG_SHRINE_RELIGIOUS = 18,
EMSG_SHRINE_ENCHANTED = 19,
EMSG_SHRINE_THAUMATURGIC = 20,
EMSG_SHRINE_FASCINATING = 21,
EMSG_SHRINE_CRYPTIC = 22,
EMSG_SHRINE_UNUSED = 23,
EMSG_SHRINE_ELDRITCH = 24,
EMSG_SHRINE_EERIE = 25,
EMSG_SHRINE_DIVINE = 26,
EMSG_SHRINE_HOLY = 27,
EMSG_SHRINE_SACRED = 28,
EMSG_SHRINE_SPIRITUAL = 29,
EMSG_SHRINE_SPOOKY1 = 30,
EMSG_SHRINE_SPOOKY2 = 31,
EMSG_SHRINE_ABANDONED = 32,
EMSG_SHRINE_CREEPY = 33,
EMSG_SHRINE_QUIET = 34,
EMSG_SHRINE_SECLUDED = 35,
EMSG_SHRINE_ORNATE = 36,
EMSG_SHRINE_GLIMMERING = 37,
EMSG_SHRINE_TAINTED1 = 38,
EMSG_SHRINE_TAINTED2 = 39,
EMSG_REQUIRES_LVL_8 = 40,
EMSG_REQUIRES_LVL_13 = 41,
EMSG_REQUIRES_LVL_17 = 42,
EMSG_BONECHAMB = 43,
#ifdef HELLFIRE
EMSG_SHRINE_OILY = 44,
EMSG_SHRINE_GLOWING = 45,
EMSG_SHRINE_MENDICANT = 46,
EMSG_SHRINE_SPARKLING = 47,
EMSG_SHRINE_TOWN = 48,
EMSG_SHRINE_SHIMMERING = 49,
EMSG_SHRINE_SOLAR1 = 50,
EMSG_SHRINE_SOLAR2 = 51,
EMSG_SHRINE_SOLAR3 = 52,
EMSG_SHRINE_SOLAR4 = 53,
EMSG_SHRINE_MURPHYS = 54,
#endif
} diablo_message;
typedef enum magic_type {
STYPE_FIRE = 0x0,
STYPE_LIGHTNING = 0x1,
STYPE_MAGIC = 0x2,
} magic_type;
typedef enum theme_id {
THEME_BARREL = 0x0,
THEME_SHRINE = 0x1,
THEME_MONSTPIT = 0x2,
THEME_SKELROOM = 0x3,
THEME_TREASURE = 0x4,
THEME_LIBRARY = 0x5,
THEME_TORTURE = 0x6,
THEME_BLOODFOUNTAIN = 0x7,
THEME_DECAPITATED = 0x8,
THEME_PURIFYINGFOUNTAIN = 0x9,
THEME_ARMORSTAND = 0xA,
THEME_GOATSHRINE = 0xB,
THEME_CAULDRON = 0xC,
THEME_MURKYFOUNTAIN = 0xD,
THEME_TEARFOUNTAIN = 0xE,
THEME_BRNCROSS = 0xF,
THEME_WEAPONRACK = 0x10,
THEME_NONE = -1,
} theme_id;
typedef enum event_type {
EVENT_TYPE_PLAYER_CREATE_GAME = 1,
EVENT_TYPE_2 = 2,
EVENT_TYPE_PLAYER_LEAVE_GAME = 3,
EVENT_TYPE_PLAYER_MESSAGE = 4,
EVENT_TYPE_5 = 5,
EVENT_TYPE_6 = 6,
EVENT_TYPE_7 = 7,
EVENT_TYPE_8 = 8,
EVENT_TYPE_9 = 9,
EVENT_TYPE_10 = 10,
EVENT_TYPE_11 = 11,
EVENT_TYPE_12 = 12,
EVENT_TYPE_13 = 13,
EVENT_TYPE_14 = 14,
EVENT_TYPE_15 = 15,
} event_type;
typedef enum _copyprot_results {
COPYPROT_OK = 1,
COPYPROT_CANCEL = 2,
} _copyprot_results;
typedef enum text_color {
COL_WHITE = 0x0,
COL_BLUE = 0x1,
COL_RED = 0x2,
COL_GOLD = 0x3,
} text_color;
typedef enum item_color {
ICOL_WHITE = PAL16_YELLOW + 5,
ICOL_BLUE = PAL16_BLUE + 5,
ICOL_RED = PAL16_RED + 5,
} item_color;
typedef enum _difficulty {
DIFF_NORMAL = 0x0,
DIFF_NIGHTMARE = 0x1,
DIFF_HELL = 0x2,
NUM_DIFFICULTIES = 0x3,
} _difficulty;
typedef enum MON_MODE {
MM_STAND = 0,
MM_WALK = 1,
MM_WALK2 = 2,
MM_WALK3 = 3,
MM_ATTACK = 4,
MM_GOTHIT = 5,
MM_DEATH = 6,
MM_SATTACK = 7,
MM_FADEIN = 8,
MM_FADEOUT = 9,
MM_RATTACK = 10,
MM_SPSTAND = 11,
MM_RSPATTACK = 12,
MM_DELAY = 13,
MM_CHARGE = 14,
MM_STONE = 15,
MM_HEAL = 16,
MM_TALK = 17,
} MON_MODE;
typedef enum MON_ANIM {
MA_STAND = 0,
MA_WALK = 1,
MA_ATTACK = 2,
MA_GOTHIT = 3,
MA_DEATH = 4,
MA_SPECIAL = 5,
} MON_ANIM;
typedef enum PLR_MODE {
PM_STAND = 0,
PM_WALK = 1,
PM_WALK2 = 2,
PM_WALK3 = 3,
PM_ATTACK = 4,
PM_RATTACK = 5,
PM_BLOCK = 6,
PM_GOTHIT = 7,
PM_DEATH = 8,
PM_SPELL = 9,
PM_NEWLVL = 10,
PM_QUIT = 11,
} PLR_MODE;
typedef enum spell_type {
RSPLTYPE_SKILL = 0x0,
RSPLTYPE_SPELL = 0x1,
RSPLTYPE_SCROLL = 0x2,
RSPLTYPE_CHARGES = 0x3,
RSPLTYPE_INVALID = 0x4,
} spell_type;
typedef enum cursor_id {
CURSOR_NONE = 0x0,
CURSOR_HAND = 0x1,
CURSOR_IDENTIFY = 0x2,
CURSOR_REPAIR = 0x3,
CURSOR_RECHARGE = 0x4,
CURSOR_DISARM = 0x5,
CURSOR_OIL = 0x6,
CURSOR_TELEKINESIS = 0x7,
CURSOR_RESURRECT = 0x8,
CURSOR_TELEPORT = 0x9,
CURSOR_HEALOTHER = 0xA,
CURSOR_HOURGLASS = 0xB,
CURSOR_FIRSTITEM = 0xC,
} cursor_id;
typedef enum direction {
DIR_S = 0x0,
DIR_SW = 0x1,
DIR_W = 0x2,
DIR_NW = 0x3,
DIR_N = 0x4,
DIR_NE = 0x5,
DIR_E = 0x6,
DIR_SE = 0x7,
DIR_OMNI = 0x8,
} direction;
typedef enum _scroll_direction {
SDIR_NONE = 0x0,
SDIR_N = 0x1,
SDIR_NE = 0x2,
SDIR_E = 0x3,
SDIR_SE = 0x4,
SDIR_S = 0x5,
SDIR_SW = 0x6,
SDIR_W = 0x7,
SDIR_NW = 0x8,
} _scroll_direction;
typedef enum interface_mode {
WM_DIABNEXTLVL = 0x402, // WM_USER+2
WM_DIABPREVLVL = 0x403,
WM_DIABRTNLVL = 0x404,
WM_DIABSETLVL = 0x405,
WM_DIABWARPLVL = 0x406,
WM_DIABTOWNWARP = 0x407,
WM_DIABTWARPUP = 0x408,
WM_DIABRETOWN = 0x409,
WM_DIABNEWGAME = 0x40A,
WM_DIABLOADGAME = 0x40B
// WM_LEIGHSKIP = 0x40C, // psx only
// WM_DIAVNEWLVL = 0x40D, // psx only
} interface_mode;
typedef enum lvl_entry {
ENTRY_MAIN = 0,
ENTRY_PREV = 1,
ENTRY_SETLVL = 2,
ENTRY_RTNLVL = 3,
ENTRY_LOAD = 4,
ENTRY_WARPLVL = 5,
ENTRY_TWARPDN = 6,
ENTRY_TWARPUP = 7,
} lvl_entry;
typedef enum game_info {
GAMEINFO_NAME = 1,
GAMEINFO_PASSWORD = 2,
GAMEINFO_STATS = 3,
GAMEINFO_MODEFLAG = 4,
GAMEINFO_GAMETEMPLATE = 5,
GAMEINFO_PLAYERS = 6,
} game_info;
typedef enum spell_id {
SPL_NULL = 0x0,
SPL_FIREBOLT = 0x1,
SPL_HEAL = 0x2,
SPL_LIGHTNING = 0x3,
SPL_FLASH = 0x4,
SPL_IDENTIFY = 0x5,
SPL_FIREWALL = 0x6,
SPL_TOWN = 0x7,
SPL_STONE = 0x8,
SPL_INFRA = 0x9,
SPL_RNDTELEPORT = 0xA,
SPL_MANASHIELD = 0xB,
SPL_FIREBALL = 0xC,
SPL_GUARDIAN = 0xD,
SPL_CHAIN = 0xE,
SPL_WAVE = 0xF,
SPL_DOOMSERP = 0x10,
SPL_BLODRIT = 0x11,
SPL_NOVA = 0x12,
SPL_INVISIBIL = 0x13,
SPL_FLAME = 0x14,
SPL_GOLEM = 0x15,
SPL_BLODBOIL = 0x16,
SPL_TELEPORT = 0x17,
SPL_APOCA = 0x18,
SPL_ETHEREALIZE = 0x19,
SPL_REPAIR = 0x1A,
SPL_RECHARGE = 0x1B,
SPL_DISARM = 0x1C,
SPL_ELEMENT = 0x1D,
SPL_CBOLT = 0x1E,
SPL_HBOLT = 0x1F,
SPL_RESURRECT = 0x20,
SPL_TELEKINESIS = 0x21,
SPL_HEALOTHER = 0x22,
SPL_FLARE = 0x23,
SPL_BONESPIRIT = 0x24,
#ifdef HELLFIRE
SPL_MANA = 0x25,
SPL_MAGI = 0x26,
SPL_JESTER = 0x27,
SPL_LIGHTWALL = 0x28,
SPL_IMMOLAT = 0x29,
SPL_WARP = 0x2A,
SPL_REFLECT = 0x2B,
SPL_BERSERK = 0x2C,
SPL_FIRERING = 0x2D,
SPL_SEARCH = 0x2E,
SPL_RUNEFIRE = 0x2F,
SPL_RUNELIGHT = 0x30,
SPL_RUNENOVA = 0x31,
SPL_RUNEIMMOLAT = 0x32,
SPL_RUNESTONE = 0x33,
#endif
SPL_INVALID = -1,
} spell_id;
typedef enum _cmd_id {
CMD_STAND,
CMD_WALKXY,
CMD_ACK_PLRINFO,
CMD_ADDSTR,
CMD_ADDMAG,
CMD_ADDDEX,
CMD_ADDVIT,
CMD_SBSPELL,
CMD_GETITEM,
CMD_AGETITEM,
CMD_PUTITEM,
CMD_RESPAWNITEM,
CMD_ATTACKXY,
CMD_RATTACKXY,
CMD_SPELLXY,
CMD_TSPELLXY,
CMD_OPOBJXY,
CMD_DISARMXY,
CMD_ATTACKID,
CMD_ATTACKPID,
CMD_RATTACKID,
CMD_RATTACKPID,
CMD_SPELLID,
CMD_SPELLPID,
CMD_TSPELLID,
CMD_TSPELLPID,
CMD_RESURRECT,
CMD_OPOBJT,
CMD_KNOCKBACK,
CMD_TALKXY,
CMD_NEWLVL,
CMD_WARP,
CMD_CHEAT_EXPERIENCE,
CMD_CHEAT_SPELL_LEVEL,
CMD_DEBUG,
CMD_SYNCDATA,
CMD_MONSTDEATH,
CMD_MONSTDAMAGE,
CMD_PLRDEAD,
CMD_REQUESTGITEM,
CMD_REQUESTAGITEM,
CMD_GOTOGETITEM,
CMD_GOTOAGETITEM,
CMD_OPENDOOR,
CMD_CLOSEDOOR,
CMD_OPERATEOBJ,
CMD_PLROPOBJ,
CMD_BREAKOBJ,
CMD_CHANGEPLRITEMS,
CMD_DELPLRITEMS,
CMD_PLRDAMAGE,
CMD_PLRLEVEL,
CMD_DROPITEM,
CMD_PLAYER_JOINLEVEL,
CMD_SEND_PLRINFO,
CMD_SATTACKXY,
CMD_ACTIVATEPORTAL,
CMD_DEACTIVATEPORTAL,
CMD_DLEVEL_0,
CMD_DLEVEL_1,
CMD_DLEVEL_2,
CMD_DLEVEL_3,
CMD_DLEVEL_4,
CMD_DLEVEL_5,
CMD_DLEVEL_6,
CMD_DLEVEL_7,
CMD_DLEVEL_8,
CMD_DLEVEL_9,
CMD_DLEVEL_10,
CMD_DLEVEL_11,
CMD_DLEVEL_12,
CMD_DLEVEL_13,
CMD_DLEVEL_14,
CMD_DLEVEL_15,
CMD_DLEVEL_16,
#ifdef HELLFIRE
CMD_DLEVEL_17,
CMD_DLEVEL_18,
CMD_DLEVEL_19,
CMD_DLEVEL_20,
CMD_DLEVEL_21,
CMD_DLEVEL_22,
CMD_DLEVEL_23,
CMD_DLEVEL_24,
#endif
CMD_DLEVEL_JUNK,
CMD_DLEVEL_END,
CMD_HEALOTHER,
CMD_STRING,
CMD_SETSTR,
CMD_SETMAG,
CMD_SETDEX,
CMD_SETVIT,
CMD_RETOWN,
CMD_SPELLXYD,
CMD_ITEMEXTRA,
CMD_SYNCPUTITEM,
CMD_KILLGOLEM,
CMD_SYNCQUEST,
CMD_ENDSHIELD,
CMD_AWAKEGOLEM,
#ifdef HELLFIRE
CMD_REFLECT,
CMD_NAKRUL,
CMD_OPENHIVE,
CMD_OPENCRYPT,
#else
CMD_NOVA,
CMD_SETSHIELD,
CMD_REMSHIELD,
#endif
FAKE_CMD_SETID,
FAKE_CMD_DROPID,
NUM_CMDS,
} _cmd_id;
typedef enum _talker_id {
TOWN_SMITH = 0x0,
TOWN_HEALER = 0x1,
TOWN_DEADGUY = 0x2,
TOWN_TAVERN = 0x3,
TOWN_STORY = 0x4,
TOWN_DRUNK = 0x5,
TOWN_WITCH = 0x6,
TOWN_BMAID = 0x7,
TOWN_PEGBOY = 0x8,
TOWN_COW = 0x9,
#ifdef HELLFIRE
TOWN_FARMER = 0xA,
TOWN_GIRL = 0xB,
TOWN_COWFARM = 0xC,
#else
TOWN_PRIEST = 0xA,
#endif
} _talker_id;
typedef enum _music_id {
TMUSIC_TOWN,
TMUSIC_L1,
TMUSIC_L2,
TMUSIC_L3,
TMUSIC_L4,
#ifdef HELLFIRE
TMUSIC_L5,
TMUSIC_L6,
#endif
TMUSIC_INTRO,
NUM_MUSIC,
} _music_id;
typedef enum _mainmenu_selections {
MAINMENU_SINGLE_PLAYER = 1,
MAINMENU_MULTIPLAYER,
MAINMENU_REPLAY_INTRO,
#ifdef HELLFIRE
MAINMENU_SHOW_SUPPORT,
#endif
MAINMENU_SHOW_CREDITS,
MAINMENU_EXIT_DIABLO,
MAINMENU_ATTRACT_MODE,
} _mainmenu_selections;
typedef enum _selhero_selections {
SELHERO_NEW_DUNGEON = 1,
SELHERO_CONTINUE = 2,
SELHERO_CONNECT = 3,
SELHERO_PREVIOUS = 4
} _selhero_selections;
typedef enum panel_button_id {
PANBTN_CHARINFO = 0,
PANBTN_QLOG = 1,
PANBTN_AUTOMAP = 2,
PANBTN_MAINMENU = 3,
PANBTN_INVENTORY = 4,
PANBTN_SPELLBOOK = 5,
PANBTN_SENDMSG = 6,
PANBTN_FRIENDLY = 7,
} panel_button_id;
typedef enum attribute_id {
ATTRIB_STR = 0,
ATTRIB_MAG = 1,
ATTRIB_DEX = 2,
ATTRIB_VIT = 3,
} attribute_id;
typedef enum _object_id {
OBJ_L1LIGHT = 0x0,
OBJ_L1LDOOR = 0x1,
OBJ_L1RDOOR = 0x2,
OBJ_SKFIRE = 0x3,
OBJ_LEVER = 0x4,
OBJ_CHEST1 = 0x5,
OBJ_CHEST2 = 0x6,
OBJ_CHEST3 = 0x7,
OBJ_CANDLE1 = 0x8,
OBJ_CANDLE2 = 0x9,
OBJ_CANDLEO = 0xA,
OBJ_BANNERL = 0xB,
OBJ_BANNERM = 0xC,
OBJ_BANNERR = 0xD,
OBJ_SKPILE = 0xE,
OBJ_SKSTICK1 = 0xF,
OBJ_SKSTICK2 = 0x10,
OBJ_SKSTICK3 = 0x11,
OBJ_SKSTICK4 = 0x12,
OBJ_SKSTICK5 = 0x13,
OBJ_CRUX1 = 0x14,
OBJ_CRUX2 = 0x15,
OBJ_CRUX3 = 0x16,
OBJ_STAND = 0x17,
OBJ_ANGEL = 0x18,
OBJ_BOOK2L = 0x19,
OBJ_BCROSS = 0x1A,
OBJ_NUDEW2R = 0x1B,
OBJ_SWITCHSKL = 0x1C,
OBJ_TNUDEM1 = 0x1D,
OBJ_TNUDEM2 = 0x1E,
OBJ_TNUDEM3 = 0x1F,
OBJ_TNUDEM4 = 0x20,
OBJ_TNUDEW1 = 0x21,
OBJ_TNUDEW2 = 0x22,
OBJ_TNUDEW3 = 0x23,
OBJ_TORTURE1 = 0x24,
OBJ_TORTURE2 = 0x25,
OBJ_TORTURE3 = 0x26,
OBJ_TORTURE4 = 0x27,
OBJ_TORTURE5 = 0x28,
OBJ_BOOK2R = 0x29,
OBJ_L2LDOOR = 0x2A,
OBJ_L2RDOOR = 0x2B,
OBJ_TORCHL = 0x2C,
OBJ_TORCHR = 0x2D,
OBJ_TORCHL2 = 0x2E,
OBJ_TORCHR2 = 0x2F,
OBJ_SARC = 0x30,
OBJ_FLAMEHOLE = 0x31,
OBJ_FLAMELVR = 0x32,
OBJ_WATER = 0x33,
OBJ_BOOKLVR = 0x34,
OBJ_TRAPL = 0x35,
OBJ_TRAPR = 0x36,
OBJ_BOOKSHELF = 0x37,
OBJ_WEAPRACK = 0x38,
OBJ_BARREL = 0x39,
OBJ_BARRELEX = 0x3A,
OBJ_SHRINEL = 0x3B,
OBJ_SHRINER = 0x3C,
OBJ_SKELBOOK = 0x3D,
OBJ_BOOKCASEL = 0x3E,
OBJ_BOOKCASER = 0x3F,
OBJ_BOOKSTAND = 0x40,
OBJ_BOOKCANDLE = 0x41,
OBJ_BLOODFTN = 0x42,
OBJ_DECAP = 0x43,
OBJ_TCHEST1 = 0x44,
OBJ_TCHEST2 = 0x45,
OBJ_TCHEST3 = 0x46,
OBJ_BLINDBOOK = 0x47,
OBJ_BLOODBOOK = 0x48,
OBJ_PEDISTAL = 0x49,
OBJ_L3LDOOR = 0x4A,
OBJ_L3RDOOR = 0x4B,
OBJ_PURIFYINGFTN = 0x4C,
OBJ_ARMORSTAND = 0x4D,
OBJ_ARMORSTANDN = 0x4E,
OBJ_GOATSHRINE = 0x4F,
OBJ_CAULDRON = 0x50,
OBJ_MURKYFTN = 0x51,
OBJ_TEARFTN = 0x52,
OBJ_ALTBOY = 0x53,
OBJ_MCIRCLE1 = 0x54,
OBJ_MCIRCLE2 = 0x55,
OBJ_STORYBOOK = 0x56,
OBJ_STORYCANDLE = 0x57,
OBJ_STEELTOME = 0x58,
OBJ_WARARMOR = 0x59,
OBJ_WARWEAP = 0x5A,
OBJ_TBCROSS = 0x5B,
OBJ_WEAPONRACK = 0x5C,
OBJ_WEAPONRACKN = 0x5D,
OBJ_MUSHPATCH = 0x5E,
OBJ_LAZSTAND = 0x5F,
OBJ_SLAINHERO = 0x60,
OBJ_SIGNCHEST = 0x61,
OBJ_NULL_98 = 0x62,
} _object_id;
typedef enum item_misc_id {
IMISC_NONE = 0x0,
IMISC_USEFIRST = 0x1,
IMISC_FULLHEAL = 0x2,
IMISC_HEAL = 0x3,
IMISC_OLDHEAL = 0x4,
IMISC_DEADHEAL = 0x5,
IMISC_MANA = 0x6,
IMISC_FULLMANA = 0x7,
IMISC_POTEXP = 0x8, /* add experience */
IMISC_POTFORG = 0x9, /* remove experience */
IMISC_ELIXSTR = 0xA,
IMISC_ELIXMAG = 0xB,
IMISC_ELIXDEX = 0xC,
IMISC_ELIXVIT = 0xD,
IMISC_ELIXWEAK = 0xE, /* double check with alpha */
IMISC_ELIXDIS = 0xF,
IMISC_ELIXCLUM = 0x10,
IMISC_ELIXSICK = 0x11,
IMISC_REJUV = 0x12,
IMISC_FULLREJUV = 0x13,
IMISC_USELAST = 0x14,
IMISC_SCROLL = 0x15,
IMISC_SCROLLT = 0x16,
IMISC_STAFF = 0x17,
IMISC_BOOK = 0x18,
IMISC_RING = 0x19,
IMISC_AMULET = 0x1A,
IMISC_UNIQUE = 0x1B,
IMISC_FOOD = 0x1C, /* from demo/PSX */
IMISC_OILFIRST = 0x1D,
IMISC_OILOF = 0x1E, /* oils are beta or hellfire only */
IMISC_OILACC = 0x1F,
IMISC_OILMAST = 0x20,
IMISC_OILSHARP = 0x21,
IMISC_OILDEATH = 0x22,
IMISC_OILSKILL = 0x23,
IMISC_OILBSMTH = 0x24,
IMISC_OILFORT = 0x25,
IMISC_OILPERM = 0x26,
IMISC_OILHARD = 0x27,
IMISC_OILIMP = 0x28,
IMISC_OILLAST = 0x29,
IMISC_MAPOFDOOM = 0x2A,
IMISC_EAR = 0x2B,
IMISC_SPECELIX = 0x2C,
#ifdef HELLFIRE
IMISC_RUNEFIRST = 0x2E,
IMISC_RUNEF = 0x2F,
IMISC_RUNEL = 0x30,
IMISC_GR_RUNEL = 0x31,
IMISC_GR_RUNEF = 0x32,
IMISC_RUNES = 0x33,
IMISC_RUNELAST = 0x34,
IMISC_AURIC = 0x35,
IMISC_NOTE = 0x36,
#endif
IMISC_INVALID = -1,
} item_misc_id;
typedef enum item_type {
ITYPE_MISC = 0x0,
ITYPE_SWORD = 0x1,
ITYPE_AXE = 0x2,
ITYPE_BOW = 0x3,
ITYPE_MACE = 0x4,
ITYPE_SHIELD = 0x5,
ITYPE_LARMOR = 0x6,
ITYPE_HELM = 0x7,
ITYPE_MARMOR = 0x8,
ITYPE_HARMOR = 0x9,
ITYPE_STAFF = 0xA,
ITYPE_GOLD = 0xB,
ITYPE_RING = 0xC,
ITYPE_AMULET = 0xD,
ITYPE_FOOD = 0xE, /* used in demo */
ITYPE_NONE = -1,
} item_type;
typedef enum _item_indexes {
IDI_GOLD,
IDI_WARRIOR,
IDI_WARRSHLD,
IDI_WARRCLUB,
IDI_ROGUE,
IDI_SORCEROR,
IDI_CLEAVER,
IDI_FIRSTQUEST = IDI_CLEAVER,
IDI_SKCROWN,
IDI_INFRARING,
IDI_ROCK,
IDI_OPTAMULET,
IDI_TRING,
IDI_BANNER,
IDI_HARCREST,
IDI_STEELVEIL,
IDI_GLDNELIX,
IDI_ANVIL,
IDI_MUSHROOM,
IDI_BRAIN,
IDI_FUNGALTM,
IDI_SPECELIX,
IDI_BLDSTONE,
IDI_MAPOFDOOM,
IDI_LASTQUEST = IDI_MAPOFDOOM,
IDI_EAR,
IDI_HEAL,
IDI_MANA,
IDI_IDENTIFY,
IDI_PORTAL,
IDI_ARMOFVAL,
IDI_FULLHEAL,
IDI_FULLMANA,
IDI_GRISWOLD,
IDI_LGTFORGE,
IDI_LAZSTAFF,
IDI_RESURRECT,
#ifdef HELLFIRE
IDI_OIL,
IDI_SHORTSTAFF,
IDI_BARDSWORD,
IDI_BARDDAGGER,
IDI_RUNEBOMB,
IDI_THEODORE,
IDI_AURIC,
IDI_NOTE1,
IDI_NOTE2,
IDI_NOTE3,
IDI_FULLNOTE,
IDI_BROWNSUIT,
IDI_GREYSUIT,
#endif
} _item_indexes;
typedef enum _setlevels {
//SL_BUTCHCHAMB = 0x0,
SL_SKELKING = 0x1,
SL_BONECHAMB = 0x2,
SL_MAZE = 0x3,
SL_POISONWATER = 0x4,
SL_VILEBETRAYER = 0x5,
} _setlevels;
typedef enum quest_id {
Q_ROCK = 0x00,
Q_MUSHROOM = 0x01,
Q_GARBUD = 0x02,
Q_ZHAR = 0x03,
Q_VEIL = 0x04,
Q_DIABLO = 0x05,
Q_BUTCHER = 0x06,
Q_LTBANNER = 0x07,
Q_BLIND = 0x08,
Q_BLOOD = 0x09,
Q_ANVIL = 0x0A,
Q_WARLORD = 0x0B,
Q_SKELKING = 0x0C,
Q_PWATER = 0x0D,
Q_SCHAMB = 0x0E,
Q_BETRAYER = 0x0F,
#ifdef HELLFIRE
Q_GRAVE = 0x10,
Q_FARMER = 0x11,
Q_GIRL = 0x12,
Q_TRADER = 0x13,
Q_DEFILER = 0x14,
Q_NAKRUL = 0x15,
Q_CORNSTN = 0x16,
Q_JERSEY = 0x17,
#endif
Q_INVALID = -1,
} quest_id;
typedef enum quest_state {
QUEST_NOTAVAIL = 0,
QUEST_INIT = 1,
QUEST_ACTIVE = 2,
QUEST_DONE = 3
} quest_state;
typedef enum quest_gametype {
QUEST_SINGLE = 0,
QUEST_ANY = 1,
QUEST_MULTI = 2,
} quest_gametype;
typedef enum quest_mush_state {
QS_INIT = 0,
QS_TOMESPAWNED = 1,
QS_TOMEGIVEN = 2,
QS_MUSHSPAWNED = 3,
QS_MUSHPICKED = 4,
QS_MUSHGIVEN = 5,
QS_BRAINSPAWNED = 6,
QS_BRAINGIVEN = 7,
} quest_mush_state;
typedef enum talk_id {
STORE_NONE = 0x0,
STORE_SMITH = 0x1,
STORE_SBUY = 0x2,
STORE_SSELL = 0x3,
STORE_SREPAIR = 0x4,
STORE_WITCH = 0x5,
STORE_WBUY = 0x6,
STORE_WSELL = 0x7,
STORE_WRECHARGE = 0x8,
STORE_NOMONEY = 0x9,
STORE_NOROOM = 0xA,
STORE_CONFIRM = 0xB,
STORE_BOY = 0xC,
STORE_BBOY = 0xD,
STORE_HEALER = 0xE,
STORE_STORY = 0xF,
STORE_HBUY = 0x10,
STORE_SIDENTIFY = 0x11,
STORE_SPBUY = 0x12,
STORE_GOSSIP = 0x13,
STORE_IDSHOW = 0x14,
STORE_TAVERN = 0x15,
STORE_DRUNK = 0x16,
STORE_BARMAID = 0x17,
} talk_id;
typedef enum _unique_items {
UITEM_CLEAVER = 0x0,
UITEM_SKCROWN = 0x1,
UITEM_INFRARING = 0x2,
UITEM_OPTAMULET = 0x3,
UITEM_TRING = 0x4,
UITEM_HARCREST = 0x5,
UITEM_STEELVEIL = 0x6,
UITEM_ARMOFVAL = 0x7,
UITEM_GRISWOLD = 0x8,
#ifndef HELLFIRE
UITEM_LGTFORGE = 0x9,
#else
UITEM_BOVINE = 0x9,
#endif
UITEM_RIFTBOW = 0xA,
UITEM_NEEDLER = 0xB,
UITEM_CELESTBOW = 0xC,
UITEM_DEADLYHUNT = 0xD,
UITEM_BOWOFDEAD = 0xE,
UITEM_BLKOAKBOW = 0xF,
UITEM_FLAMEDART = 0x10,
UITEM_FLESHSTING = 0x11,
UITEM_WINDFORCE = 0x12,
UITEM_EAGLEHORN = 0x13,
UITEM_GONNAGALDIRK = 0x14,
UITEM_DEFENDER = 0x15,
UITEM_GRYPHONCLAW = 0x16,
UITEM_BLACKRAZOR = 0x17,
UITEM_GIBBOUSMOON = 0x18,
UITEM_ICESHANK = 0x19,
UITEM_EXECUTIONER = 0x1A,
UITEM_BONESAW = 0x1B,
UITEM_SHADHAWK = 0x1C,
UITEM_WIZSPIKE = 0x1D,
UITEM_LGTSABRE = 0x1E,
UITEM_FALCONTALON = 0x1F,
UITEM_INFERNO = 0x20,
UITEM_DOOMBRINGER = 0x21,
UITEM_GRIZZLY = 0x22,
UITEM_GRANDFATHER = 0x23,
UITEM_MANGLER = 0x24,
UITEM_SHARPBEAK = 0x25,
UITEM_BLOODLSLAYER = 0x26,
UITEM_CELESTAXE = 0x27,
UITEM_WICKEDAXE = 0x28,
UITEM_STONECLEAV = 0x29,
UITEM_AGUHATCHET = 0x2A,
UITEM_HELLSLAYER = 0x2B,
UITEM_MESSERREAVER = 0x2C,
UITEM_CRACKRUST = 0x2D,
UITEM_JHOLMHAMM = 0x2E,
UITEM_CIVERBS = 0x2F,
UITEM_CELESTSTAR = 0x30,
UITEM_BARANSTAR = 0x31,
UITEM_GNARLROOT = 0x32,
UITEM_CRANBASH = 0x33,
UITEM_SCHAEFHAMM = 0x34,
UITEM_DREAMFLANGE = 0x35,
UITEM_STAFFOFSHAD = 0x36,
UITEM_IMMOLATOR = 0x37,
UITEM_STORMSPIRE = 0x38,
UITEM_GLEAMSONG = 0x39,
UITEM_THUNDERCALL = 0x3A,
UITEM_PROTECTOR = 0x3B,
UITEM_NAJPUZZLE = 0x3C,
UITEM_MINDCRY = 0x3D,
UITEM_RODOFONAN = 0x3E,
UITEM_SPIRITSHELM = 0x3F,
UITEM_THINKINGCAP = 0x40,
UITEM_OVERLORDHELM = 0x41,
UITEM_FOOLSCREST = 0x42,
UITEM_GOTTERDAM = 0x43,
UITEM_ROYCIRCLET = 0x44,
UITEM_TORNFLESH = 0x45,
UITEM_GLADBANE = 0x46,
UITEM_RAINCLOAK = 0x47,
UITEM_LEATHAUT = 0x48,
UITEM_WISDWRAP = 0x49,
UITEM_SPARKMAIL = 0x4A,
UITEM_SCAVCARAP = 0x4B,
UITEM_NIGHTSCAPE = 0x4C,
UITEM_NAJPLATE = 0x4D,
UITEM_DEMONSPIKE = 0x4E,
UITEM_DEFLECTOR = 0x4F,
UITEM_SKULLSHLD = 0x50,
UITEM_DRAGONBRCH = 0x51,
UITEM_BLKOAKSHLD = 0x52,
UITEM_HOLYDEF = 0x53,
UITEM_STORMSHLD = 0x54,
UITEM_BRAMBLE = 0x55,
UITEM_REGHA = 0x56,
UITEM_BLEEDER = 0x57,
UITEM_CONSTRICT = 0x58,
UITEM_ENGAGE = 0x59,
UITEM_INVALID = 0x5A,
} _unique_items;
typedef enum plr_class {
PC_WARRIOR = 0x0,
PC_ROGUE = 0x1,
PC_SORCERER = 0x2,
#ifdef HELLFIRE
PC_MONK = 0x3,
PC_BARD = 0x4,
PC_BARBARIAN = 0x5,
#endif
NUM_CLASSES
} plr_class;
typedef enum _ui_classes {
UI_WARRIOR = 0x0,
UI_ROGUE = 0x1,
UI_SORCERER = 0x2,
#ifdef HELLFIRE
UI_MONK = 0x3,
UI_BARD = 0x4,
UI_BARBARIAN = 0x5,
#endif
UI_NUM_CLASSES,
} _ui_classes;
typedef enum _walk_path {
WALK_NE = 0x1,
WALK_NW = 0x2,
WALK_SE = 0x3,
WALK_SW = 0x4,
WALK_N = 0x5,
WALK_E = 0x6,
WALK_S = 0x7,
WALK_W = 0x8,
WALK_NONE = -1,
} _walk_path;
typedef enum player_weapon_type {
WT_MELEE = 0,
WT_RANGED = 1,
} player_weapon_type;
typedef enum item_class {
ICLASS_NONE = 0,
ICLASS_WEAPON = 1,
ICLASS_ARMOR = 2,
ICLASS_MISC = 3,
ICLASS_GOLD = 4,
ICLASS_QUEST = 5,
} item_class;
typedef enum item_drop_rate {
IDROP_NEVER = 0,
IDROP_REGULAR = 1,
IDROP_DOUBLE = 2,
} item_drop_rate;
typedef enum item_special_effect {
ISPL_NONE = 0x00000000,
ISPL_INFRAVISION = 0x00000001,
ISPL_RNDSTEALLIFE = 0x00000002,
ISPL_RNDARROWVEL = 0x00000004,
ISPL_FIRE_ARROWS = 0x00000008,
ISPL_FIREDAM = 0x00000010,
ISPL_LIGHTDAM = 0x00000020,
ISPL_DRAINLIFE = 0x00000040,
ISPL_UNKNOWN_1 = 0x00000080,
ISPL_NOHEALPLR = 0x00000100,
ISPL_MULT_ARROWS = 0x00000200,
ISPL_UNKNOWN_3 = 0x00000400,
ISPL_KNOCKBACK = 0x00000800,
ISPL_NOHEALMON = 0x00001000,
ISPL_STEALMANA_3 = 0x00002000,
ISPL_STEALMANA_5 = 0x00004000,
ISPL_STEALLIFE_3 = 0x00008000,
ISPL_STEALLIFE_5 = 0x00010000,
ISPL_QUICKATTACK = 0x00020000,
ISPL_FASTATTACK = 0x00040000,
ISPL_FASTERATTACK = 0x00080000,
ISPL_FASTESTATTACK = 0x00100000,
ISPL_FASTRECOVER = 0x00200000,
ISPL_FASTERRECOVER = 0x00400000,
ISPL_FASTESTRECOVER = 0x00800000,
ISPL_FASTBLOCK = 0x01000000,
ISPL_LIGHT_ARROWS = 0x02000000,
ISPL_THORNS = 0x04000000,
ISPL_NOMANA = 0x08000000,
ISPL_ABSHALFTRAP = 0x10000000,
ISPL_UNKNOWN_4 = 0x20000000,
ISPL_3XDAMVDEM = 0x40000000,
ISPL_ALLRESZERO = 0x80000000,
} item_special_effect;
typedef enum item_special_effect_hf {
ISPLHF_DEVASTATION = 0x01,
ISPLHF_DECAY = 0x02,
ISPLHF_PERIL = 0x04,
ISPLHF_JESTERS = 0x08,
ISPLHF_DOPPELGANGER = 0x10,
ISPLHF_ACDEMON = 0x20,
ISPLHF_ACUNDEAD = 0x40,
} item_special_effect_hf;
// Logical equipment locations
typedef enum inv_body_loc {
INVLOC_HEAD = 0,
INVLOC_RING_LEFT = 1,
INVLOC_RING_RIGHT = 2,
INVLOC_AMULET = 3,
INVLOC_HAND_LEFT = 4,
INVLOC_HAND_RIGHT = 5,
INVLOC_CHEST = 6,
NUM_INVLOC,
} inv_body_loc;
typedef enum inv_item {
INVITEM_HEAD = 0,
INVITEM_RING_LEFT = 1,
INVITEM_RING_RIGHT = 2,
INVITEM_AMULET = 3,
INVITEM_HAND_LEFT = 4,
INVITEM_HAND_RIGHT = 5,
INVITEM_CHEST = 6,
INVITEM_INV_FIRST = 7,
INVITEM_INV_LAST = 46,
INVITEM_BELT_FIRST = 47,
INVITEM_BELT_LAST = 54,
NUM_INVELEM
} inv_item;
// identifiers for each of the inventory squares
// see https://github.com/sanctuary/graphics/blob/master/inventory.png
typedef enum inv_xy_slot {
SLOTXY_HEAD_FIRST = 0,
SLOTXY_HEAD_LAST = 3,
SLOTXY_RING_LEFT = 4,
SLOTXY_RING_RIGHT = 5,
SLOTXY_AMULET = 6,
SLOTXY_HAND_LEFT_FIRST = 7,
SLOTXY_HAND_LEFT_LAST = 12,
SLOTXY_HAND_RIGHT_FIRST = 13,
SLOTXY_HAND_RIGHT_LAST = 18,
SLOTXY_CHEST_FIRST = 19,
SLOTXY_CHEST_LAST = 24,
// regular inventory
SLOTXY_INV_FIRST = 25,
SLOTXY_INV_LAST = 64,
// belt items
SLOTXY_BELT_FIRST = 65,
SLOTXY_BELT_LAST = 72,
NUM_XY_SLOTS = 73
} inv_xy_slot;
typedef enum player_graphic {
PFILE_STAND = 1 << 0,
PFILE_WALK = 1 << 1,
PFILE_ATTACK = 1 << 2,
PFILE_HIT = 1 << 3,
PFILE_LIGHTNING = 1 << 4,
PFILE_FIRE = 1 << 5,
PFILE_MAGIC = 1 << 6,
PFILE_DEATH = 1 << 7,
PFILE_BLOCK = 1 << 8,
// everything except PFILE_DEATH
// 0b1_0111_1111
PFILE_NONDEATH = 0x17F
} player_graphic;
typedef enum anim_weapon_id {
ANIM_ID_UNARMED = 0x00,
ANIM_ID_UNARMED_SHIELD = 0x01,
ANIM_ID_SWORD = 0x02,
ANIM_ID_SWORD_SHIELD = 0x03,
ANIM_ID_BOW = 0x04,
ANIM_ID_AXE = 0x05,
ANIM_ID_MACE = 0x06,
ANIM_ID_MACE_SHIELD = 0x07,
ANIM_ID_STAFF = 0x08
} anim_weapon_id;
typedef enum anim_armor_id {
ANIM_ID_LIGHT_ARMOR = 0x00,
#ifndef SPAWN
ANIM_ID_MEDIUM_ARMOR = 0x10,
ANIM_ID_HEAVY_ARMOR = 0x20
#endif
} anim_armor_id;
typedef enum shrine_gametype {
SHRINETYPE_ANY = 0,
SHRINETYPE_SINGLE = 1,
SHRINETYPE_MULTI = 2,
} shrine_gametype;
typedef enum shrine_type {
SHRINE_MYSTERIOUS = 0,
SHRINE_HIDDEN = 1,
SHRINE_GLOOMY = 2,
SHRINE_WEIRD = 3,
SHRINE_MAGICAL = 4,
SHRINE_STONE = 5,
SHRINE_RELIGIOUS = 6,
SHRINE_ENCHANTED = 7,
SHRINE_THAUMATURGIC = 8,
SHRINE_FASCINATING = 9,
SHRINE_CRYPTIC = 10,
SHRINE_MAGICAL2 = 11,
SHRINE_ELDRITCH = 12,
SHRINE_EERIE = 13,
SHRINE_DIVINE = 14,
SHRINE_HOLY = 15,
SHRINE_SACRED = 16,
SHRINE_SPIRITUAL = 17,
SHRINE_SPOOKY = 18,
SHRINE_ABANDONED = 19,
SHRINE_CREEPY = 20,
SHRINE_QUIET = 21,
SHRINE_SECLUDED = 22,
SHRINE_ORNATE = 23,
SHRINE_GLIMMERING = 24,
SHRINE_TAINTED = 25,
#ifdef HELLFIRE
SHRINE_OILY = 26,
SHRINE_GLOWING = 27,
SHRINE_MENDICANT = 28,
SHRINE_SPARKLING = 29,
SHRINE_TOWN = 30,
SHRINE_SHIMMERING = 31,
SHRINE_SOLAR = 32,
SHRINE_MURPHYS = 33,
#endif
NUM_SHRINETYPE
} shrine_type;
typedef enum action_id {
ACTION_NONE = -1,
ACTION_ATTACK = 9,
ACTION_RATTACK = 10,
ACTION_SPELL = 12,
ACTION_OPERATE = 13,
ACTION_DISARM = 14,
ACTION_PICKUPITEM = 15, // put item in hand (inventory screen open)
ACTION_PICKUPAITEM = 16, // put item in inventory
ACTION_TALK = 17,
ACTION_OPERATETK = 18, // operate via telekinesis
ACTION_ATTACKMON = 20,
ACTION_ATTACKPLR = 21,
ACTION_RATTACKMON = 22,
ACTION_RATTACKPLR = 23,
ACTION_SPELLMON = 24,
ACTION_SPELLPLR = 25,
ACTION_SPELLWALL = 26,
} action_id;
typedef enum dlrg_flag {
DLRG_HDOOR = 0x01,
DLRG_VDOOR = 0x02,
DLRG_CHAMBER = 0x40,
DLRG_PROTECTED = 0x80,
} dlrg_flag;