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.
 
 
 
 
 
 

796 lines
18 KiB

/**
* @file enums.h
*
* Various global enumerators.
*/
#include <stdint.h>
namespace devilution {
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 dungeon_type : int8_t {
DTYPE_TOWN = 0x0,
DTYPE_CATHEDRAL = 0x1,
DTYPE_CATACOMBS = 0x2,
DTYPE_CAVES = 0x3,
DTYPE_HELL = 0x4,
DTYPE_NEST = 0x5,
DTYPE_CRYPT = 0x6,
DTYPE_NONE = -1,
} 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;
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,
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,
} diablo_message;
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 _difficulty {
DIFF_NORMAL = 0x0,
DIFF_NIGHTMARE = 0x1,
DIFF_HELL = 0x2,
NUM_DIFFICULTIES = 0x3,
} _difficulty;
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 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 _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,
CMD_DLEVEL_17,
CMD_DLEVEL_18,
CMD_DLEVEL_19,
CMD_DLEVEL_20,
CMD_DLEVEL_21,
CMD_DLEVEL_22,
CMD_DLEVEL_23,
CMD_DLEVEL_24,
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,
CMD_NOVA,
CMD_SETSHIELD,
CMD_REMSHIELD,
CMD_REFLECT,
CMD_NAKRUL,
CMD_OPENHIVE,
CMD_OPENCRYPT,
FAKE_CMD_SETID,
FAKE_CMD_DROPID,
NUM_CMDS,
} _cmd_id;
typedef enum _music_id {
TMUSIC_TOWN,
TMUSIC_L1,
TMUSIC_L2,
TMUSIC_L3,
TMUSIC_L4,
TMUSIC_L5,
TMUSIC_L6,
TMUSIC_INTRO,
NUM_MUSIC,
} _music_id;
typedef enum _mainmenu_selections {
MAINMENU_SINGLE_PLAYER = 1,
MAINMENU_MULTIPLAYER,
MAINMENU_REPLAY_INTRO,
MAINMENU_SHOW_SUPPORT,
MAINMENU_SHOW_CREDITS,
MAINMENU_EXIT_DIABLO,
MAINMENU_ATTRACT_MODE,
} _mainmenu_selections;
typedef enum _selhero_selections {
SELHERO_NEW_DUNGEON,
SELHERO_CONTINUE,
SELHERO_CONNECT,
SELHERO_PREVIOUS,
} _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,
ATTRIB_MAG,
ATTRIB_DEX,
ATTRIB_VIT,
} attribute_id;
typedef enum _item_indexes {
IDI_GOLD,
IDI_WARRIOR,
IDI_WARRSHLD,
IDI_WARRCLUB,
IDI_ROGUE,
IDI_SORCERER,
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,
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,
} _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,
Q_GRAVE = 0x10,
Q_FARMER = 0x11,
Q_GIRL = 0x12,
Q_TRADER = 0x13,
Q_DEFILER = 0x14,
Q_NAKRUL = 0x15,
Q_CORNSTN = 0x16,
Q_JERSEY = 0x17,
Q_INVALID = -1,
} quest_id;
typedef enum quest_state {
QUEST_NOTAVAIL = 0, // quest did not spawn this game
QUEST_INIT = 1, // quest has spawned, waiting to trigger
QUEST_ACTIVE = 2, // quest is currently in progress
QUEST_DONE = 3 // quest log closed and finished
} 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 _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,
UITEM_BOVINE = 0x9,
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,
PC_ROGUE,
PC_SORCERER,
PC_MONK,
PC_BARD,
PC_BARBARIAN,
NUM_CLASSES
} plr_class;
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;
// 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,
ANIM_ID_MEDIUM_ARMOR = 0x10,
ANIM_ID_HEAVY_ARMOR = 0x20
} 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,
SHRINE_OILY = 26,
SHRINE_GLOWING = 27,
SHRINE_MENDICANT = 28,
SHRINE_SPARKLING = 29,
SHRINE_TOWN = 30,
SHRINE_SHIMMERING = 31,
SHRINE_SOLAR = 32,
SHRINE_MURPHYS = 33,
NUM_SHRINETYPE
} shrine_type;
typedef enum dlrg_flag {
DLRG_HDOOR = 0x01,
DLRG_VDOOR = 0x02,
DLRG_CHAMBER = 0x40,
DLRG_PROTECTED = 0x80,
} dlrg_flag;
typedef enum conn_type {
SELCONN_ZT,
SELCONN_TCP,
SELCONN_LOOPBACK,
} conn_type;
}