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.

3551 lines
76 KiB

/**
* @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;
8 years ago
/// 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;
8 years ago
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
7 years ago
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,
7 years ago
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,
5 years ago
MFLAG_BERSERK = 0x800,
MFLAG_NOLIFESTEAL = 0x1000
} monster_flag;
typedef enum monster_goal {
MGOAL_NORMAL = 1,
MGOAL_RETREAT = 2,
MGOAL_HEALING = 3,
MGOAL_MOVE = 4,
5 years ago
MGOAL_ATTACK2 = 5,
MGOAL_INQUIRING = 6,
MGOAL_TALKING = 7,
} monster_goal;
typedef enum monster_resistance {
RESIST_MAGIC = 0x01,
RESIST_FIRE = 0x02,
RESIST_LIGHTNING = 0x04,
5 years ago
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,
5 years ago
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;
5 years ago
typedef enum clicktype {
CLICK_NONE = 0,
CLICK_LEFT = 1,
CLICK_RIGHT = 2,
} clicktype;
5 years ago
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;
5 years ago
/*
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 {
5 years ago
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
5 years ago
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
5 years ago
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;