/**
* @ 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
6 th bit stores onlygood flag
7 th bit stores uper15 flag - uper means unique percent , this flag is true for unique monsters and loot from them has 15 % to become unique
8 th bit stores uper1 flag - this is loot from normal monsters , which has 1 % to become unique
9 th bit stores info if item is unique
10 th bit stores info if item is a basic one from griswold
11 th bit stores info if item is a premium one from griswold
12 th bit stores info if item is from wirt
13 th bit stores info if item is from adria
14 th bit stores info if item is from pepin
15 th 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 ;