From 1d0f57cbceb778139ca215cc4fcfd1584951f6dd Mon Sep 17 00:00:00 2001 From: dshaligram Date: Wed, 22 Nov 2006 08:41:20 +0000 Subject: Merged stone_soup r15:451 into trunk. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@452 c06c8d41-db1a-0410-9941-cceddc491573 --- crawl-ref/source/enum.h | 1332 ++++++++++++++++++++++++++++++++++++----------- 1 file changed, 1025 insertions(+), 307 deletions(-) (limited to 'crawl-ref/source/enum.h') diff --git a/crawl-ref/source/enum.h b/crawl-ref/source/enum.h index 55d24085e1..4bf996d51f 100644 --- a/crawl-ref/source/enum.h +++ b/crawl-ref/source/enum.h @@ -3,6 +3,8 @@ * Summary: Global (ick) enums. * Written by: Daniel Ligon * + * Modified for Crawl Reference by $Author$ on $Date$ + * * Change History (most recent first): * * <11> 7 Aug 01 MV Changed MSLOT_UNASSIGNED_I to MSLOT_MISCELLANY @@ -30,7 +32,7 @@ #ifndef ENUM_H #define ENUM_H -enum ABILITIES +enum ability_type { ABIL_NON_ABILITY = -1, ABIL_SPIT_POISON = 1, // 1 @@ -49,7 +51,7 @@ enum ABILITIES ABIL_BREATHE_STEAM, ABIL_FLY, // 15 ABIL_SUMMON_MINOR_DEMON, - ABIL_SUMMON_DEMON, + ABIL_SUMMON_DEMONS, ABIL_HELLFIRE, ABIL_TORMENT, ABIL_RAISE_DEAD, // 20 @@ -79,7 +81,7 @@ enum ABILITIES ABIL_TSO_REPEL_UNDEAD = 120, // 120 ABIL_TSO_SMITING, ABIL_TSO_ANNIHILATE_UNDEAD, - ABIL_TSO_THUNDERBOLT, + ABIL_TSO_CLEANSING_FLAME, ABIL_TSO_SUMMON_DAEVA, // 124 ABIL_KIKU_RECALL_UNDEAD_SLAVES = 130, // 130 ABIL_KIKU_ENSLAVE_UNDEAD = 132, // 132 @@ -89,7 +91,7 @@ enum ABILITIES ABIL_YRED_ANIMATE_DEAD, ABIL_YRED_DRAIN_LIFE, ABIL_YRED_CONTROL_UNDEAD, // 144 - ABIL_VEHUMET_CHANNEL_ENERGY = 160, // 160 + // 160 - reserved for Vehumet ABIL_OKAWARU_MIGHT = 170, // 170 ABIL_OKAWARU_HEALING, ABIL_OKAWARU_HASTE, // 172 @@ -97,7 +99,8 @@ enum ABILITIES ABIL_MAKHLEB_LESSER_SERVANT_OF_MAKHLEB, ABIL_MAKHLEB_MAJOR_DESTRUCTION, ABIL_MAKHLEB_GREATER_SERVANT_OF_MAKHLEB, // 183 - ABIL_SIF_MUNA_FORGET_SPELL = 190, // 190 + ABIL_SIF_MUNA_CHANNEL_ENERGY = 190, // 190 + ABIL_SIF_MUNA_FORGET_SPELL, ABIL_TROG_BERSERK = 200, // 200 ABIL_TROG_MIGHT, ABIL_TROG_HASTE_SELF, // 202 @@ -110,11 +113,15 @@ enum ABILITIES ABIL_TRAN_SERPENT_OF_HELL, ABIL_ROTTING, ABIL_TORMENT_II, - ABIL_SHUGGOTH_SEED, + ABIL_PAIN, + ABIL_ENSLAVE_UNDEAD, + ABIL_BOLT_OF_FIRE, + ABIL_BOLT_OF_COLD, + ABIL_HELLFROST, ABIL_RENOUNCE_RELIGION = 250 // 250 }; -enum ABILITY_FLAGS +enum ability_flag_type { ABFLAG_NONE = 0x00000000, ABFLAG_BREATH = 0x00000001, // ability uses DUR_BREATH_WEAPON @@ -126,34 +133,28 @@ enum ABILITY_FLAGS ABFLAG_PERMANENT_MP = 0x00000040 // costs permanent MPs }; -enum ACTIVITY +enum activity_interrupt_type { - ACT_NONE = 0, - ACT_MULTIDROP, - ACT_RUNNING, - ACT_TRAVELING, - ACT_MACRO, - - ACT_ACTIVITY_COUNT -}; + AI_FORCE_INTERRUPT = 0, // Forcibly kills any activity that can be + // interrupted. + AI_KEYPRESS, + AI_FULL_HP, // Player is fully healed + AI_FULL_MP, // Player has recovered all mp + AI_STATUE, // Bad statue has come into view + AI_HUNGRY, // Hunger increased + AI_MESSAGE, // Message was displayed + AI_HP_LOSS, + AI_BURDEN_CHANGE, + AI_STAT_CHANGE, + AI_SEE_MONSTER, + AI_MONSTER_ATTACKS, + AI_TELEPORT, -enum ACT_INTERRUPT -{ - AI_FORCE_INTERRUPT = 0, // Forcibly kills any activity - AI_KEYPRESS = 0x01, - AI_FULL_HP = 0x02, // Player is fully healed - AI_FULL_MP = 0x04, // Player has recovered all mp - AI_STATUE = 0x08, // Bad statue has come into view - AI_HUNGRY = 0x10, // Hunger increased - AI_MESSAGE = 0x20, // Message was displayed - AI_HP_LOSS = 0x40, - AI_BURDEN_CHANGE = 0x80, - AI_STAT_CHANGE = 0x100, - AI_SEE_MONSTER = 0x200, - AI_TELEPORT = 0x400 + // Always the last. + NUM_AINTERRUPTS }; -enum AI_PAYLOAD +enum activity_interrupt_payload_type { AIP_NONE, AIP_INT, @@ -162,7 +163,7 @@ enum AI_PAYLOAD AIP_HP_LOSS }; -enum AMMUNITION_DESCRIPTIONS +enum ammunition_description_type { DAMMO_ORCISH = 3, // 3 DAMMO_ELVEN, @@ -170,7 +171,7 @@ enum AMMUNITION_DESCRIPTIONS }; // Various ways to get the acquirement effect. -enum AQ_AGENTS +enum acquirement_agent_type { AQ_SCROLL = 0, @@ -184,7 +185,7 @@ enum AQ_AGENTS AQ_WIZMODE = 200 }; -enum ARMOUR +enum armour_type { ARM_ROBE, // 0 ARM_LEATHER_ARMOUR, @@ -219,10 +220,16 @@ enum ARMOUR ARM_ANIMAL_SKIN, // 30 ARM_SWAMP_DRAGON_HIDE, ARM_SWAMP_DRAGON_ARMOUR, + ARM_STUDDED_LEATHER_ARMOUR, + ARM_CAP, + ARM_CENTAUR_BARDING, // 35 + ARM_NAGA_BARDING, + NUM_ARMOURS }; -enum ARMOUR_DESCRIPTIONS +// these are for the old system (still used for reading old files) +enum armour_description_type { DARM_PLAIN, // added for the heck of it, 15 Apr 2000 {dlb} DARM_EMBROIDERED_SHINY = 1, // which it is dependent upon armour subtype {dlb} @@ -233,19 +240,18 @@ enum ARMOUR_DESCRIPTIONS DARM_ORCISH }; -enum ARMOUR_PROPERTIES +enum armour_property_type { PARM_AC, // 0 PARM_EVASION }; -// Note: currently the size of the attr array is hard coded at 30! ick! -- bwr -enum ATTRIBUTES +enum attribute_type { ATTR_DIVINE_LIGHTNING_PROTECTION, // 0 // ATTR_SPEC_AIR, // don't use this! // ATTR_SPEC_EARTH, - ATTR_CONTROL_TELEPORT = 3, + ATTR_CONTROL_TELEPORT = 3, // obsolete ATTR_WALK_SLOWLY, ATTR_TRANSFORMATION, // 5 ATTR_CARD_COUNTDOWN, @@ -258,10 +264,15 @@ enum ATTRIBUTES ATTR_WALLS, ATTR_LAST_WALLS, ATTR_DELAYED_FIREBALL, // bwr: reserve fireballs - NUM_ATTRIBUTES // must always remain last member {dlb} + ATTR_DEMONIC_POWER_1, + ATTR_DEMONIC_POWER_2, + ATTR_DEMONIC_POWER_3, + ATTR_DEMONIC_POWER_4, + ATTR_DEMONIC_POWER_5, // 19 + NUM_ATTRIBUTES = 30 // must be at least 30 }; -enum BANDS +enum band_type { BAND_NO_BAND = 0, BAND_KOBOLDS = 1, @@ -306,10 +317,11 @@ enum BANDS BAND_BOGGARTS, BAND_BLINK_FROGS, BAND_SKELETAL_WARRIORS, // 44 + BAND_DRACONIAN, // 45 NUM_BANDS // always last }; -enum BEAMS // beam[].flavour +enum beam_type // beam[].flavour { BEAM_MISSILE, // 0 BEAM_MMISSILE, // 1 - and similarly unresistable things @@ -319,13 +331,17 @@ enum BEAMS // beam[].flavour BEAM_ELECTRICITY, // 5 BEAM_POISON, BEAM_NEG, - BEAM_ACID, // 8 - BEAM_EXPLOSION = 10, // 10 - BEAM_SPORE, // 11 - BEAM_POISON_ARROW, // 12 - BEAM_HELLFIRE, // 13 - found 11jan2000 {dlb} - BEAM_ENERGY = 17, - BEAM_HOLY = 18, // 18 - aka beam of cleansing, golden flame + BEAM_ACID, + BEAM_MIASMA, + // BEAM_EXPLOSION, // 10 - use is_explosion, and BEAM of flavour + BEAM_SPORE = 11, + BEAM_POISON_ARROW, + BEAM_HELLFIRE, + BEAM_NAPALM, + BEAM_STEAM, // 15 + BEAM_HELLFROST, + BEAM_ENERGY, + BEAM_HOLY, // 18 - aka beam of cleansing, golden flame BEAM_FRAG, BEAM_LAVA, // 20 BEAM_BACKLIGHT, @@ -352,6 +368,8 @@ enum BEAMS // beam[].flavour BEAM_DISPEL_UNDEAD, // YELLOW BEAM_DISINTEGRATION, // WHITE BEAM_ENSLAVE_DEMON, // colour "16" + BEAM_BLINK, + BEAM_PETRIFY, // new beams for evaporate BEAM_POTION_STINKING_CLOUD, @@ -363,10 +381,12 @@ enum BEAMS // beam[].flavour BEAM_POTION_BLACK_SMOKE, BEAM_POTION_BLUE_SMOKE, BEAM_POTION_PURP_SMOKE, - BEAM_POTION_RANDOM + BEAM_POTION_RANDOM, + + BEAM_LINE_OF_SIGHT // only used for checking monster LOS }; -enum BOOKS +enum book_type { BOOK_MINOR_MAGIC_I, // 0 BOOK_MINOR_MAGIC_II, @@ -419,7 +439,7 @@ enum BOOKS NUM_BOOKS }; -enum BRANCHES // you.where_are_you +enum branch_type // you.where_are_you { BRANCH_MAIN_DUNGEON, // 0 BRANCH_DIS, @@ -441,10 +461,11 @@ enum BRANCHES // you.where_are_you BRANCH_SNAKE_PIT, BRANCH_ELVEN_HALLS, // 20 BRANCH_TOMB, - BRANCH_SWAMP + BRANCH_SWAMP, + BRANCH_CAVERNS }; -enum BRANCH_STAIRS // you.branch_stairs[] - 10 less than BRANCHES {dlb} +enum branch_stair_type // you.branch_stairs[] - 10 less than BRANCHES {dlb} { STAIRS_ORCISH_MINES, // 0 STAIRS_HIVE, @@ -458,17 +479,18 @@ enum BRANCH_STAIRS // you.branch_stairs[] - 10 less than BRANCHES {dlb} STAIRS_SNAKE_PIT, STAIRS_ELVEN_HALLS, // 10 STAIRS_TOMB, - STAIRS_SWAMP + STAIRS_SWAMP, + STAIRS_CAVERNS }; -enum BURDEN_STATES // you.burden_state +enum burden_state_type // you.burden_state { BS_UNENCUMBERED, // 0 BS_ENCUMBERED = 2, // 2 BS_OVERLOADED = 5 // 5 }; -enum CANNED_MESSAGES // canned_msg() - unsigned char +enum canned_message_type // canned_msg() - unsigned char { MSG_SOMETHING_APPEARS, // 0 MSG_NOTHING_HAPPENS, @@ -480,10 +502,22 @@ enum CANNED_MESSAGES // canned_msg() - unsigned char MSG_UNTHINKING_ACT, MSG_SPELL_FIZZLES, MSG_HUH, - MSG_EMPTY_HANDED + MSG_EMPTY_HANDED, + MSG_NOT_IN_PRESENT_FORM, + MSG_TOO_CONFUSED, + MSG_DISORIENTED, + MSG_CANT_REACH }; -enum CLOUD_TYPES // cloud_type[], place_cloud(), big_cloud() +enum char_set_type +{ + CSET_ASCII, // flat 7-bit ASCII + CSET_IBM, // 8-bit ANSI/Code Page 437 + CSET_DEC, // 8-bit DEC, 0xE0-0xFF shifted for line drawing chars + NUM_CSET +}; + +enum cloud_type { CLOUD_NONE, // 0 CLOUD_FIRE, // 1 @@ -496,6 +530,7 @@ enum CLOUD_TYPES // cloud_type[], place_cloud(), big_cloud() CLOUD_STEAM, // 8 CLOUD_MIASMA = 9, // 9: found 11jan2000 {dlb} CLOUD_BLACK_SMOKE = 10, //was: CLOUD_STICKY_FLAME and wrong 19jan2000 {dlb} + CLOUD_RANDOM = 98, CLOUD_DEBUGGING = 99, // 99: used once as 'nonexistent cloud' {dlb} // if env.cloud_type > 100, it is a monster's cloud {dlb} CLOUD_FIRE_MON = 101, // 101: found 11jan2000 {dlb} @@ -510,7 +545,7 @@ enum CLOUD_TYPES // cloud_type[], place_cloud(), big_cloud() CLOUD_BLACK_SMOKE_MON = 110 // 110: added 19jan2000 {dlb} }; -enum COMMANDS +enum command_type { CMD_NO_CMD = 1000, // 1000 CMD_MOVE_NOWHERE, @@ -589,14 +624,12 @@ enum COMMANDS CMD_REPLAY_MESSAGES, CMD_REDRAW_SCREEN, CMD_MACRO_ADD, - CMD_MACRO_SAVE, CMD_SAVE_GAME, CMD_SAVE_GAME_NOW, - CMD_SUSPEND_GAME, // 1000 + 80 - CMD_QUIT, + CMD_SUSPEND_GAME, + CMD_QUIT, // 1000 + 80 CMD_WIZARD, CMD_DESTROY_ITEM, - CMD_OBSOLETE_INVOKE, CMD_MARK_STASH, CMD_FORGET_STASH, @@ -605,17 +638,133 @@ enum COMMANDS CMD_INTERLEVEL_TRAVEL, CMD_FIX_WAYPOINT, - CMD_CLEAR_MAP -}; - -enum CONFIRM_LEVEL + CMD_CLEAR_MAP, + CMD_INSCRIBE_ITEM, + CMD_TOGGLE_NOFIZZLE, + CMD_TOGGLE_AUTOPRAYER, + CMD_MAKE_NOTE, + CMD_RESISTS_SCREEN, + + /* overmap commands */ + CMD_MAP_CLEAR_MAP, + CMD_MAP_ADD_WAYPOINT, + CMD_MAP_EXCLUDE_AREA, + CMD_MAP_CLEAR_EXCLUDES, + + CMD_MAP_MOVE_LEFT, + CMD_MAP_MOVE_DOWN, + CMD_MAP_MOVE_UP, + CMD_MAP_MOVE_RIGHT, + CMD_MAP_MOVE_UP_LEFT, + CMD_MAP_MOVE_DOWN_LEFT, + CMD_MAP_MOVE_UP_RIGHT, + CMD_MAP_MOVE_DOWN_RIGHT, + + CMD_MAP_JUMP_LEFT, + CMD_MAP_JUMP_DOWN, + CMD_MAP_JUMP_UP, + CMD_MAP_JUMP_RIGHT, + CMD_MAP_JUMP_UP_LEFT, + CMD_MAP_JUMP_DOWN_LEFT, + CMD_MAP_JUMP_UP_RIGHT, + CMD_MAP_JUMP_DOWN_RIGHT, + + CMD_MAP_SCROLL_DOWN, + CMD_MAP_SCROLL_UP, + + CMD_MAP_FIND_UPSTAIR, + CMD_MAP_FIND_DOWNSTAIR, + CMD_MAP_FIND_YOU, + CMD_MAP_FIND_PORTAL, + CMD_MAP_FIND_TRAP, + CMD_MAP_FIND_ALTAR, + CMD_MAP_FIND_EXCLUDED, + CMD_MAP_FIND_F, + CMD_MAP_FIND_WAYPOINT, + CMD_MAP_FIND_STASH, + + CMD_MAP_GOTO_TARGET, + + CMD_MAP_EXIT_MAP, + + /* targeting commands */ + CMD_TARGET_DOWN_LEFT, + CMD_TARGET_DOWN, + CMD_TARGET_DOWN_RIGHT, + CMD_TARGET_LEFT, + CMD_TARGET_RIGHT, + CMD_TARGET_UP_LEFT, + CMD_TARGET_UP, + CMD_TARGET_UP_RIGHT, + CMD_TARGET_CYCLE_TARGET_MODE, + CMD_TARGET_PREV_TARGET, + CMD_TARGET_SELECT, + CMD_TARGET_OBJ_CYCLE_BACK, + CMD_TARGET_OBJ_CYCLE_FORWARD, + CMD_TARGET_CYCLE_FORWARD, + CMD_TARGET_CYCLE_BACK, + CMD_TARGET_CENTER, + CMD_TARGET_CANCEL, + CMD_TARGET_OLD_SPACE, + CMD_TARGET_FIND_TRAP, + CMD_TARGET_FIND_PORTAL, + CMD_TARGET_FIND_ALTAR, + CMD_TARGET_FIND_UPSTAIR, + CMD_TARGET_FIND_DOWNSTAIR, + CMD_TARGET_FIND_YOU, + CMD_TARGET_DESCRIBE, + + // [ds] Silently ignored, requests another round of input. + CMD_NEXT_CMD + +}; + +enum confirm_level_type { CONFIRM_NONE_EASY, CONFIRM_SAFE_EASY, CONFIRM_ALL_EASY }; -enum CORPSE_EFFECTS +enum conduct_type +{ + DID_NECROMANCY = 1, // vamp/drain/pain wpns, Zong/Curses + DID_UNHOLY, // demon wpns, demon spells + DID_ATTACK_HOLY, + DID_ATTACK_FRIEND, + DID_FRIEND_DIES, + DID_STABBING, + DID_POISON, + DID_DEDICATED_BUTCHERY, + DID_DEDICATED_KILL_LIVING, + DID_DEDICATED_KILL_UNDEAD, + DID_DEDICATED_KILL_DEMON, + DID_DEDICATED_KILL_NATURAL_EVIL, // unused + DID_DEDICATED_KILL_WIZARD, + DID_DEDICATED_KILL_PRIEST, // unused + + // [dshaligram] No distinction between killing Angels during prayer or + // otherwise, borrowed from bwr 4.1. + DID_KILL_ANGEL, + DID_LIVING_KILLED_BY_UNDEAD_SLAVE, + DID_LIVING_KILLED_BY_SERVANT, + DID_UNDEAD_KILLED_BY_SERVANT, + DID_DEMON_KILLED_BY_SERVANT, + DID_NATURAL_EVIL_KILLED_BY_SERVANT, // unused + DID_ANGEL_KILLED_BY_SERVANT, + DID_SPELL_MEMORISE, + DID_SPELL_CASTING, + DID_SPELL_PRACTISE, + DID_SPELL_NONUTILITY, // unused + DID_CARDS, + DID_STIMULANTS, // unused + DID_EAT_MEAT, // unused + DID_CREATED_LIFE, // unused + + NUM_CONDUCTS +}; + +enum corpse_effect_type { CE_NOCORPSE, // 0 CE_CLEAN, // 1 @@ -629,13 +778,13 @@ enum CORPSE_EFFECTS CE_ROTTEN = 50 // 50 - must remain at 50 for now {dlb} }; -enum CORPSES +enum corpse_type { CORPSE_BODY, // 0 CORPSE_SKELETON }; -enum DEATH_KNIGHT_CHOICES +enum death_knight_type { DK_NO_SELECTION, DK_NECROMANCY, @@ -643,7 +792,16 @@ enum DEATH_KNIGHT_CHOICES DK_RANDOM }; -enum DECKS +enum startup_book_type +{ + SBT_NO_SELECTION = 0, + SBT_FIRE, + SBT_COLD, + SBT_SUMM, + SBT_RANDOM +}; + +enum deck_type { DECK_OF_WONDERS, // 0 DECK_OF_SUMMONING, @@ -652,25 +810,40 @@ enum DECKS DECK_OF_PUNISHMENT }; -enum DELAY +// When adding new delays, update their names in delay.cc, or bad things will +// happen. +enum delay_type { DELAY_NOT_DELAYED, DELAY_EAT, DELAY_ARMOUR_ON, DELAY_ARMOUR_OFF, - DELAY_MEMORIZE, + DELAY_JEWELLERY_ON, + DELAY_MEMORISE, DELAY_BUTCHER, DELAY_AUTOPICKUP, DELAY_WEAPON_SWAP, // for easy_butcher DELAY_PASSWALL, DELAY_DROP_ITEM, + DELAY_MULTIDROP, DELAY_ASCENDING_STAIRS, DELAY_DESCENDING_STAIRS, - DELAY_INTERUPTABLE = 100, // simple interuptable delay - DELAY_UNINTERUPTABLE // simple uninteruptable delay + + // [dshaligram] Shift-running, resting, travel and macros are now + // also handled as delays. + DELAY_RUN, + DELAY_REST, + DELAY_TRAVEL, + + DELAY_MACRO, + + DELAY_INTERRUPTIBLE, // simple interruptible delay + DELAY_UNINTERRUPTIBLE, // simple uninterruptible delay + + NUM_DELAYS }; -enum DEMON_BEAMS +enum demon_beam_type { DMNBM_HELLFIRE, // 0 DMNBM_SMITING, @@ -678,14 +851,15 @@ enum DEMON_BEAMS DMNBM_MUTATION }; -enum DEMON_CLASSES // summon_any_demon() +enum demon_class_type { DEMON_LESSER, // 0: Class V DEMON_COMMON, // 1: Class II-IV - DEMON_GREATER // 2: Class I + DEMON_GREATER, // 2: Class I + DEMON_RANDOM // any of the above }; -enum DESCRIPTION_LEVEL +enum description_level_type { DESC_CAP_THE, // 0 DESC_NOCAP_THE, // 1 @@ -699,19 +873,71 @@ enum DESCRIPTION_LEVEL DESC_INVENTORY // 8 }; -enum DIRECTION // (unsigned char) you.char_direction +enum dragon_class_type +{ + DRAGON_LIZARD, + DRAGON_DRACONIAN, + DRAGON_DRAGON +}; + +enum game_direction_type { DIR_DESCENDING = 0, // 0 - change and lose savefile compatibility (!!!) DIR_ASCENDING = 1 // 1 - change and lose savefile compatibility (!!!) }; -enum DROP_MODE +// NOTE: The order of these is very important to their usage! +// [dshaligram] If adding/removing from this list, also update view.cc! +enum dungeon_char_type +{ + DCHAR_WALL, // 0 + DCHAR_WALL_MAGIC, + DCHAR_FLOOR, + DCHAR_FLOOR_MAGIC, + DCHAR_DOOR_OPEN, + DCHAR_DOOR_CLOSED, // 5 + DCHAR_TRAP, + DCHAR_STAIRS_DOWN, + DCHAR_STAIRS_UP, + DCHAR_ALTAR, + DCHAR_ARCH, // 10 + DCHAR_FOUNTAIN, + DCHAR_WAVY, + DCHAR_STATUE, + DCHAR_INVIS_EXPOSED, + DCHAR_ITEM_DETECTED, // 15 + DCHAR_ITEM_ORB, + DCHAR_ITEM_WEAPON, + DCHAR_ITEM_ARMOUR, + DCHAR_ITEM_WAND, + DCHAR_ITEM_FOOD, // 20 + DCHAR_ITEM_SCROLL, + DCHAR_ITEM_RING, + DCHAR_ITEM_POTION, + DCHAR_ITEM_MISSILE, + DCHAR_ITEM_BOOK, // 25 + DCHAR_ITEM_STAVE, + DCHAR_ITEM_MISCELLANY, + DCHAR_ITEM_CORPSE, + DCHAR_ITEM_GOLD, + DCHAR_ITEM_AMULET, // 30 + DCHAR_CLOUD, // 31 + NUM_DCHAR_TYPES +}; + +enum drop_mode_type { DM_SINGLE, DM_MULTI }; -enum DUNGEON_FEATURES // (unsigned char) grd[][] +// lowest grid value which can be occupied (walk, swim, fly) +#define MINMOVE 31 + +// lowest grid value which can be seen through +#define MINSEE 11 + +enum dungeon_feature_type { DNGN_UNSEEN, // 0 DNGN_ROCK_WALL, @@ -723,14 +949,12 @@ enum DUNGEON_FEATURES // (unsigned char) grd[][] DNGN_ORCISH_IDOL, DNGN_WAX_WALL, // 8 DNGN_PERMAROCK_WALL, // 9 - for undiggable walls - DNGN_LAST_SOLID_TILE = 10, // 10 - just here temporarily {dlb} - DNGN_LAVA_X = 11, // 11 - DNGN_WATER_X, // 12 DNGN_SILVER_STATUE = 21, // 21 DNGN_GRANITE_STATUE, DNGN_ORANGE_CRYSTAL_STATUE, // 23 - DNGN_STATUE_39 = 39, // 39 + DNGN_STATUE_RESERVED_1, + DNGN_STATUE_RESERVED_2, // 25 DNGN_LAVA = 61, // 61 DNGN_DEEP_WATER, // 62 @@ -738,9 +962,10 @@ enum DUNGEON_FEATURES // (unsigned char) grd[][] DNGN_WATER_STUCK, DNGN_FLOOR, // 67 - DNGN_ENTER_HELL = 69, // 69 + DNGN_EXIT_HELL, // 68 + DNGN_ENTER_HELL, // 69 DNGN_OPEN_DOOR, // 70 - DNGN_BRANCH_STAIRS, // 71 + // DNGN_BRANCH_STAIRS, // 71 DNGN_TRAP_MECHANICAL = 75, // 75 DNGN_TRAP_MAGICAL, DNGN_TRAP_III, @@ -786,6 +1011,10 @@ enum DUNGEON_FEATURES // (unsigned char) grd[][] DNGN_ENTER_ELVEN_HALLS, // 120 DNGN_ENTER_TOMB, DNGN_ENTER_SWAMP, // 122 + DNGN_ENTER_RESERVED_1, + DNGN_ENTER_RESERVED_2, + DNGN_ENTER_RESERVED_3, + DNGN_ENTER_RESERVED_4, // 126 DNGN_RETURN_FROM_ORCISH_MINES = 130, // 130 DNGN_RETURN_FROM_HIVE, @@ -800,6 +1029,10 @@ enum DUNGEON_FEATURES // (unsigned char) grd[][] DNGN_RETURN_FROM_ELVEN_HALLS, // 140 DNGN_RETURN_FROM_TOMB, DNGN_RETURN_FROM_SWAMP, // 142 + DNGN_RETURN_RESERVED_1, + DNGN_RETURN_RESERVED_2, + DNGN_RETURN_RESERVED_3, + DNGN_RETURN_RESERVED_4, // 146 DNGN_ALTAR_ZIN = 180, // 180 DNGN_ALTAR_SHINING_ONE, @@ -824,10 +1057,41 @@ enum DUNGEON_FEATURES // (unsigned char) grd[][] DNGN_DRY_FOUNTAIN_VI, DNGN_DRY_FOUNTAIN_VII, DNGN_DRY_FOUNTAIN_VIII, - DNGN_PERMADRY_FOUNTAIN = 210 // added (from dungeon.cc/maps.cc) 22jan2000 {dlb} -}; - -enum DURATIONS // you.duration[] + DNGN_PERMADRY_FOUNTAIN = 210, // added (from dungeon.cc/maps.cc) 22jan2000 {dlb} + + // Real terrain must all occur before 256 to guarantee it fits + // into the unsigned char used for the grid! + + // There aren't really terrain, but they're passed in and used + // to get their appearance character so I'm putting them here for now. + DNGN_ITEM_ORB = 256, + DNGN_INVIS_EXPOSED = 257, + DNGN_ITEM_WEAPON = 258, + DNGN_ITEM_ARMOUR = 259, + DNGN_ITEM_WAND = 260, + DNGN_ITEM_FOOD = 261, + DNGN_ITEM_UNUSED_1 = 262, + DNGN_ITEM_SCROLL = 263, + DNGN_ITEM_RING = 264, + DNGN_ITEM_POTION = 265, + DNGN_ITEM_MISSILE = 266, + DNGN_ITEM_BOOK = 267, + DNGN_ITEM_UNUSED_2 = 268, + DNGN_ITEM_STAVE = 269, + DNGN_ITEM_MISCELLANY = 270, + DNGN_ITEM_CORPSE = 271, + DNGN_ITEM_GOLD = 272, + DNGN_ITEM_AMULET = 273, + DNGN_ITEM_DETECTED = 274, + + DNGN_CLOUD = 280, + NUM_FEATURES, // for use in lookup table in view.cc + + DNGN_RANDOM, + DNGN_START_OF_MONSTERS = 297 // don't go past here! see view.cc +}; + +enum duration_type { DUR_LIQUID_FLAMES, // 0 DUR_ICY_ARMOUR, @@ -850,18 +1114,54 @@ enum DURATIONS // you.duration[] DUR_SEE_INVISIBLE, DUR_WEAPON_BRAND, // general "branding" spell counter DUR_SILENCE, - DUR_GLAMOUR, // 20 - DUR_SHUGGOTH_SEED_RELOAD, - DUR_INFECTED_SHUGGOTH_SEED, - DUR_CONDENSATION_SHIELD, // 23 + DUR_GLAMOUR, // 20 + DUR_CONDENSATION_SHIELD = 23, // 23 DUR_STONESKIN, - DUR_REPEL_UNDEAD, // 25 - DUR_LAST_DUR, //jmf: for asserts - NUM_DURATIONS = 30 - // set at 30 to prevent savefile incompatibilities 12mar2000{dlb} -}; - -enum ENCHANTMENT // menv[].enchantment[] + DUR_REPEL_UNDEAD, // 25 + DUR_STUN, + DUR_CUT, // 27 + DUR_GOURMAND, // 28 + NUM_DURATIONS = 30 // must be at least 30 +}; + +// various elemental colour schemes... used for abstracting random short lists +// MUST match the order in initfile.cc or breakage results. +enum element_type +{ + EC_FIRE = 32, // fiery colours (must be first and > higest colour) + EC_ICE, // icy colours + EC_EARTH, // earthy colours + EC_ELECTRICITY, // electrical side of air + EC_AIR, // non-electric and general air magic + EC_POISON, // used only for venom mage and stalker stuff + EC_WATER, // used only for the elemental + EC_MAGIC, // general magical effect + EC_MUTAGENIC, // transmute, poly, radiation effects + EC_WARP, // teleportation and anything similar + EC_ENCHANT, // magical enhancements + EC_HEAL, // holy healing (not necromantic stuff) + EC_HOLY, // general "good" god effects + EC_DARK, // darkness + EC_DEATH, // currently only assassin (and equal to EC_NECRO) + EC_NECRO, // necromancy stuff + EC_UNHOLY, // demonology stuff + EC_VEHUMET, // vehumet's odd-ball colours + EC_CRYSTAL, // colours of crystal + EC_BLOOD, // colours of blood + EC_SMOKE, // colours of smoke + EC_SLIME, // colours of slime + EC_JEWEL, // colourful + EC_ELVEN, // used for colouring elf fabric items + EC_DWARVEN, // used for colouring dwarf fabric items + EC_ORCISH, // used for colouring orc fabric items + EC_GILA, // gila monster colours + EC_FLOOR, // colour of the area's floor + EC_ROCK, // colour of the area's rock + EC_STONE, // colour of the area's stone + EC_RANDOM // any colour (except BLACK) +}; + +enum enchant_type { ENCH_NONE = 0, // 0 ENCH_SLOW, @@ -924,14 +1224,23 @@ enum ENCHANTMENT // menv[].enchantment[] NUM_ENCHANTMENTS }; -enum ENCHANT_STATS +enum enchant_retval +{ + ERV_FAIL, + ERV_NEW, + ERV_INCREASED +}; + +enum enchant_stat_type { ENCHANT_TO_HIT, ENCHANT_TO_DAM }; -enum EQUIPMENT +enum equipment_type { + EQ_NONE = -1, + EQ_WEAPON, // 0 EQ_CLOAK, EQ_HELMET, @@ -952,7 +1261,7 @@ enum EQUIPMENT EQ_ALL_ARMOUR // check all armour types }; -enum FIRE_TYPES +enum fire_type { FIRE_NONE, FIRE_LAUNCHER, @@ -962,19 +1271,24 @@ enum FIRE_TYPES FIRE_SPEAR, FIRE_HAND_AXE, FIRE_CLUB, + FIRE_ROCK, NUM_FIRE_TYPES }; -enum FLUSH_REASONS +enum flush_reason_type { FLUSH_ON_FAILURE, // spell/ability failed to cast FLUSH_BEFORE_COMMAND, // flush before getting a command FLUSH_ON_MESSAGE, // flush when printing a message - FLUSH_LUA, // flush when Lua wants us to + FLUSH_ON_WARNING_MESSAGE, // flush on MSGCH_WARN messages + FLUSH_ON_DANGER_MESSAGE, // flush on MSGCH_DANGER messages + FLUSH_ON_PROMPT, // flush on MSGCH_PROMPT messages + FLUSH_ON_UNSAFE_YES_OR_NO_PROMPT, // flush when !safe set to yesno() + FLUSH_LUA, // flush when Lua wants to flush NUM_FLUSH_REASONS }; -enum FOODS // mitm[].sub_type[] +enum food_type { FOOD_MEAT_RATION, // 0 FOOD_BREAD_RATION, @@ -1001,21 +1315,21 @@ enum FOODS // mitm[].sub_type[] NUM_FOODS }; -enum GENUS_PLAYER // see player::player_genus() +enum genus_type { GENPC_DRACONIAN, // 0 GENPC_ELVEN, // 1 GENPC_DWARVEN // 2 }; -enum GENDER +enum gender_type { GENDER_NEUTER, GENDER_MALE, GENDER_FEMALE }; -enum GHOST_VALUES +enum ghost_value_type { GVAL_MAX_HP, // 0 GVAL_EV, @@ -1047,9 +1361,9 @@ enum GHOST_VALUES GVAL_DEMONLORD_CYCLE_COLOUR // 13 }; -enum GODS // you.religion +enum god_type { - GOD_NO_GOD, // 0 + GOD_NO_GOD, // 0 -- must be zero GOD_ZIN, GOD_SHINING_ONE, GOD_KIKUBAAQUDGHA, @@ -1067,35 +1381,16 @@ enum GODS // you.religion GOD_RANDOM = 100 }; -enum GOOD_THINGS +enum hands_reqd_type { - GOOD_KILLED_LIVING = 1, // 1 - killed a living monster in god's name - GOOD_KILLED_UNDEAD, // 2 - killed an undead in god's name - GOOD_KILLED_DEMON, // 3 - killed a demon in god's name - GOOD_KILLED_ANGEL_I, // 4 - killed an angel (any time) - GOOD_KILLED_ANGEL_II, // 5 - killed an angel in god's name - // (all above pass HD of monster as pgain) - GOOD_HACKED_CORPSE, // 6 - hacked up a corpse in god's name - GOOD_OFFER_STUFF, // 7 - offered inanimate stuff at an altar - GOOD_OFFER_CORPSE, // as above,including at least one corpse - GOOD_SLAVES_KILL_LIVING,// 9 - undead slaves killed a living thing - GOOD_SERVANTS_KILL, // 10 - any servants kill anything - GOOD_CARDS, // 11 - cards (Nemelex) - GOOD_KILLED_WIZARD, - GOOD_KILLED_PRIEST, - GOOD_POISON, - GOOD_ATTACKED_FRIEND, - NUM_GOOD_THINGS -}; + HANDS_ONE, + HANDS_HALF, + HANDS_TWO, -enum HANDS_REQUIRED -{ - HANDS_ONE_HANDED = 1, // 1 - HANDS_TWO_HANDED, - HANDS_ONE_OR_TWO_HANDED + HANDS_DOUBLE // not a level, marks double ended weapons (== half) }; -enum HELMET_TYPES // used in pluses2 +enum helmet_type { THELM_HELMET = 0x0000, THELM_HELM = 0x0001, @@ -1106,7 +1401,6 @@ enum HELMET_TYPES // used in pluses2 THELM_SPECIAL = 0x0004, // type used only for artefacts (mask, hat) THELM_TYPE_MASK = 0x00ff, - THELM_DESC_PLAIN = 0x0000, THELM_DESC_WINGED = 0x0100, THELM_DESC_HORNED = 0x0200, @@ -1119,30 +1413,8 @@ enum HELMET_TYPES // used in pluses2 THELM_DESC_MASK = 0xff00 }; -#if 0 -enum HELMET_DESCRIPTIONS -{ - DHELM_WINGED = 1, // 1 - DHELM_HORNED, - DHELM_CRESTED, - DHELM_PLUMED, - DHELM_SPIKED, // 5 - DHELM_VISORED, - DHELM_JEWELLED -}; - -enum HELMET_TYPES // used in pluses2 -{ - THELM_HELMET = 0, - THELM_HELM, - THELM_CAP, - THELM_WIZARD_HAT, - NUM_HELMET_TYPES, - THELM_SPECIAL // type used only for artefacts (mask, hat) -}; -#endif -enum BOOT_TYPES // used in pluses2 +enum boot_type // used in pluses2 { TBOOT_BOOTS = 0, TBOOT_NAGA_BARDING, @@ -1151,7 +1423,7 @@ enum BOOT_TYPES // used in pluses2 }; -enum HUNGER_STATES // you.hunger_state +enum hunger_state // you.hunger_state { HS_RAVENOUS, // 0: not used within code, really HS_STARVING, @@ -1161,7 +1433,7 @@ enum HUNGER_STATES // you.hunger_state HS_ENGORGED // 5 }; -enum ITEM_STATUS_FLAGS // per item flags: ie. ident status, cursed status +enum item_status_flag_type // per item flags: ie. ident status, cursed status { ISFLAG_KNOW_CURSE = 0x00000001, // curse status ISFLAG_KNOW_TYPE = 0x00000002, // artefact name, sub/special types @@ -1175,9 +1447,9 @@ enum ITEM_STATUS_FLAGS // per item flags: ie. ident status, cursed status ISFLAG_EQ_JEWELLERY_MASK = 0x0000000F, // mask of flags for known jewellery ISFLAG_CURSED = 0x00000100, // cursed - ISFLAG_RESERVED_1 = 0x00000200, // reserved (re-curses on wield?) - ISFLAG_RESERVED_2 = 0x00000400, // reserved (heavy cursed?) - ISFLAG_RESERVED_3 = 0x00000800, // reserved (perma-cursed?) + ISFLAG_RESERVED_1 = 0x00000200, // reserved + ISFLAG_RESERVED_2 = 0x00000400, // reserved + ISFLAG_RESERVED_3 = 0x00000800, // reserved ISFLAG_CURSE_MASK = 0x00000F00, // mask of all curse related flags ISFLAG_RANDART = 0x00001000, // special value is seed @@ -1186,6 +1458,7 @@ enum ITEM_STATUS_FLAGS // per item flags: ie. ident status, cursed status ISFLAG_DROPPED = 0x00004000, // dropped item (no autopickup) ISFLAG_THROWN = 0x00008000, // thrown missile weapon + // these don't have to remain as flags ISFLAG_NO_DESC = 0x00000000, // used for clearing these flags ISFLAG_GLOWING = 0x00010000, // weapons or armour ISFLAG_RUNED = 0x00020000, // weapons or armour @@ -1201,16 +1474,17 @@ enum ITEM_STATUS_FLAGS // per item flags: ie. ident status, cursed status ISFLAG_DEBUG_MARK = 0x80000000 // used for testing item structure }; -enum ITEM_DESCRIPTIONS +enum item_description_type { IDESC_WANDS, IDESC_POTIONS, IDESC_SCROLLS, // special field (like the others) IDESC_RINGS, - IDESC_SCROLLS_II // pluses field + IDESC_SCROLLS_II, + NUM_IDESC }; -enum ITEM_MAKE_SPECIES // used only for race during creation +enum item_make_species_type { MAKE_ITEM_ELVEN = 1, MAKE_ITEM_DWARVEN = 2, @@ -1220,7 +1494,7 @@ enum ITEM_MAKE_SPECIES // used only for race during creation MAKE_ITEM_RANDOM_RACE = 250 }; -enum ITEM_ORIGIN_DUMP_SELECT +enum item_origin_dump_selector { IODS_PRICE = 0, // Extra info is provided based on price IODS_ARTIFACTS = 1, // Extra information on artifacts @@ -1234,22 +1508,23 @@ enum ITEM_ORIGIN_DUMP_SELECT IODS_EVERYTHING = 0xFF }; -enum ITEM_TYPE_ID // used for first index of id[4][50] +enum item_type_id_type { IDTYPE_WANDS = 0, IDTYPE_SCROLLS, IDTYPE_JEWELLERY, - IDTYPE_POTIONS + IDTYPE_POTIONS, + NUM_IDTYPE }; -enum ITEM_TYPE_ID_STATE // used for values in id[4][50] +enum item_type_id_state_type // used for values in id[4][50] { ID_UNKNOWN_TYPE = 0, ID_KNOWN_TYPE, ID_TRIED_TYPE }; -enum JEWELLERY +enum jewellery_type { RING_REGENERATION, // 0 RING_PROTECTION, @@ -1288,7 +1563,7 @@ enum JEWELLERY NUM_JEWELLERY }; -enum JOB +enum job_type { JOB_FIGHTER, // 0 JOB_WIZARD, @@ -1324,7 +1599,7 @@ enum JOB JOB_UNKNOWN = 100 }; -enum KILLBY +enum kill_method_type { KILLED_BY_MONSTER, // 0 KILLED_BY_POISON, @@ -1352,14 +1627,17 @@ enum KILLBY KILLED_BY_SPORE, KILLED_BY_TSO_SMITING, KILLED_BY_PETRIFICATION, // 25 - KILLED_BY_SHUGGOTH, - KILLED_BY_SOMETHING, + KILLED_BY_SOMETHING = 27, KILLED_BY_FALLING_DOWN_STAIRS, KILLED_BY_ACID, + KILLED_BY_CURARE, + KILLED_BY_MELTING, + KILLED_BY_BLEEDING, + NUM_KILLBY }; -enum KillCategory +enum kill_category { KC_YOU, KC_FRIENDLY, @@ -1367,20 +1645,28 @@ enum KillCategory KC_NCATEGORIES }; -enum KILLER // monster_die(), thing_thrown +enum killer_type // monster_die(), thing_thrown { KILL_YOU = 1, // 1 KILL_MON, KILL_YOU_MISSILE, KILL_MON_MISSILE, KILL_MISC, // 5 - KILL_RESET // abjuration, etc. + KILL_RESET, // abjuration, etc. + KILL_DISMISSED // only on new game startup }; #define YOU_KILL(x) ((x) == KILL_YOU || (x) == KILL_YOU_MISSILE) #define MON_KILL(x) ((x) == KILL_MON || (x) == KILL_MON_MISSILE) -enum LEVEL_TYPES // you.level_type +enum launch_retval +{ + LRET_FUMBLED = 0, // must be left as 0 + LRET_LAUNCHED, + LRET_THROWN +}; + +enum level_area_type // you.level_type { LEVEL_DUNGEON, // 0 LEVEL_LABYRINTH, @@ -1388,48 +1674,67 @@ enum LEVEL_TYPES // you.level_type LEVEL_PANDEMONIUM }; -enum LOAD_MODE +enum load_mode_type { LOAD_START_GAME, LOAD_RESTART_GAME, LOAD_ENTER_LEVEL }; -enum MAP_SECTIONS // see maps.cc and dungeon.cc {dlb} +// [dshaligram] Maps can be mirrored; for every orientation, there must be +// a suitable mirror. +enum map_section_type // see maps.cc and dungeon.cc {dlb} { + MAP_NONE = -1, MAP_NORTH = 1, // 1 - MAP_NORTHWEST, + MAP_SOUTH, + MAP_EAST, + MAP_WEST, + MAP_NORTHWEST, // 5 MAP_NORTHEAST, MAP_SOUTHWEST, - MAP_SOUTHEAST, // 5 - MAP_ENCOMPASS, - MAP_NORTH_DIS + MAP_SOUTHEAST, + MAP_ENCOMPASS +}; + +enum menu_type +{ + MT_INVSELECT, // General - select single item + MT_INVLIST, // List inventory + MT_DROP }; // if you mess with this list, you'll need to make changes in initfile.cc -enum MESSAGE_CHANNEL +// to message_channel_names, and probably also to message.cc to colour +// everything properly +enum msg_channel_type { MSGCH_PLAIN, // regular text MSGCH_PROMPT, // various prompts MSGCH_GOD, // god/religion (param is god) + MSGCH_PRAY, // praying messages (param is god) MSGCH_DURATION, // effect down/warnings MSGCH_DANGER, // serious life threats (ie very large HP attacks) MSGCH_WARN, // much less serious threats MSGCH_FOOD, // hunger notices MSGCH_RECOVERY, // recovery from disease/stat/poison condition + MSGCH_SOUND, // messages about things the player hears MSGCH_TALK, // monster talk (param is monster type) MSGCH_INTRINSIC_GAIN, // player level/stat/species-power gains MSGCH_MUTATION, // player gain/lose mutations MSGCH_MONSTER_SPELL, // monsters casting spells MSGCH_MONSTER_ENCHANT,// monsters enchantments up and down MSGCH_MONSTER_DAMAGE, // monster damage reports (param is level) + MSGCH_MONSTER_TARGET, // message marking the monster as a target MSGCH_ROTTEN_MEAT, // messages about chunks/corpses becoming rotten MSGCH_EQUIPMENT, // equipment listing messages - MSGCH_DIAGNOSTICS, // various diagnostic messages + MSGCH_FLOOR_ITEMS, // like equipment, but lists of floor items + MSGCH_MULTITURN_ACTION, // delayed action messages + MSGCH_DIAGNOSTICS, // various diagnostic messages NUM_MESSAGE_CHANNELS // always last }; -enum MESSAGE_COLOURS +enum msg_colour_type { MSGCOL_BLACK = 0, // the order of these colours is important MSGCOL_BLUE, @@ -1452,7 +1757,7 @@ enum MESSAGE_COLOURS MSGCOL_PLAIN // same as plain channel }; -enum MISCELLANY // mitm[].sub_type +enum misc_item_type { MISC_BOTTLED_EFREET, // 0 MISC_CRYSTAL_BALL_OF_SEEING, @@ -1475,7 +1780,7 @@ enum MISCELLANY // mitm[].sub_type NUM_MISCELLANY // mv: used for random generation }; -enum MISSILES // (unsigned char) +enum missile_type { MI_STONE, // 0 MI_ARROW, @@ -1484,10 +1789,83 @@ enum MISSILES // (unsigned char) MI_NEEDLE, MI_LARGE_ROCK, //jmf: it'd be nice to move MI_LARGE_ROCK to DEBRIS_ROCK NUM_MISSILES, - MI_EGGPLANT + MI_NONE // was MI_EGGPLANT... used for launch type detection +}; + +// properties of the monster class (other than resists/vulnerabilities) +enum mons_class_flags +{ + M_NO_FLAGS = 0, + + M_SPELLCASTER = (1<< 0), // any non-physical-attack powers, + M_ACTUAL_SPELLS = (1<< 1), // monster is a wizard, + M_PRIEST = (1<< 2), // monster is a priest + M_FIGHTER = (1<< 3), // monster is skilled fighter + + M_FLIES = (1<< 4), // will crash to ground if paralysed? + M_LEVITATE = (1<< 5), // ... but not if this is set + M_INVIS = (1<< 6), // is created invis + M_SEE_INVIS = (1<< 7), // can see invis + M_SPEAKS = (1<< 8), // uses talking code + M_CONFUSED = (1<< 9), // monster is perma-confused, + M_BATTY = (1<<10), // monster is batty + M_SPLITS = (1<<11), // monster can split + M_AMPHIBIOUS = (1<<12), // monster can swim in water, + M_THICK_SKIN = (1<<13), // monster has more effective AC, + M_HUMANOID = (1<<14), // for Glamour + M_COLD_BLOOD = (1<<15), // susceptible to cold + M_WARM_BLOOD = (1<<16), // no effect currently + M_REGEN = (1<<17), // regenerates quickly + M_BURROWS = (1<<18), // monster digs through rock + M_EVIL = (1<<19), // monster vulnerable to holy spells + + M_UNIQUE = (1<<20), // monster is a unique + M_FROZEN = (1<<21), // XXX: Potentially ditchable + + + M_SPECIAL_ABILITY = (1<<26), // XXX: eventually make these spells? + M_COLOUR_SHIFT = (1<<27), // flag for element colour shifters + M_DCHAR_SYMBOL = (1<<28), // monster looks like a DCHAR terrain + + M_NO_SKELETON = (1<<29), // boneless corpses + M_NO_WOUNDS = (1<<30), // doesn't show would level + M_NO_EXP_GAIN = (1<<31) // worth 0 xp +}; + +enum mon_resist_flags +{ + MR_NO_FLAGS = 0, + + // resistances + // Notes: + // - negative energy is mostly handled via mons_has_life_force() + // - acid is handled mostly by genus (jellies) plus non-living + // - asphyx-resistance replaces hellfrost resistance. + MR_RES_ELEC = (1<< 0), + MR_RES_POISON = (1<< 1), + MR_RES_FIRE = (1<< 2), + MR_RES_HELLFIRE = (1<< 3), + MR_RES_COLD = (1<< 4), + MR_RES_ASPHYX = (1<< 5), + + // vulnerabilities + MR_VUL_ELEC = (1<< 6), + MR_VUL_POISON = (1<< 7), + MR_VUL_FIRE = (1<< 8), + MR_VUL_COLD = (1<< 9), + + // melee armour resists/vulnerabilities + // XXX: how to do combos (bludgeon/slice, bludgeon/pierce) + MR_RES_PIERCE = (1<<10), + MR_RES_SLICE = (1<<11), + MR_RES_BLUDGEON = (1<<12), + + MR_VUL_PIERCE = (1<<13), + MR_VUL_SLICE = (1<<14), + MR_VUL_BLUDGEON = (1<<15) }; -enum MON_TARG_MODE +enum targ_mode_type { TARG_ANY, TARG_ENEMY, @@ -1495,7 +1873,8 @@ enum MON_TARG_MODE TARG_NUM_MODES }; -enum MONSTERS // (int) menv[].type +// note this order is very sensitive... look at mons_is_unique() +enum monster_type // (int) menv[].type { MONS_GIANT_ANT, // 0 MONS_GIANT_BAT, @@ -1662,6 +2041,7 @@ enum MONSTERS // (int) menv[].type MONS_RED_WASP, // 170 MONS_SWAMP_DRAGON, MONS_SWAMP_DRAKE, + MONS_DEATH_DRAKE, MONS_SOLDIER_ANT, MONS_HILL_GIANT, MONS_QUEEN_ANT, // 175 @@ -1775,6 +2155,23 @@ enum MONSTERS // (int) menv[].type MONS_BORIS, // 310 // BCR - end second batch of uniques. + MONS_DRACONIAN, + MONS_BLACK_DRACONIAN, + MONS_MOTTLED_DRACONIAN, + MONS_YELLOW_DRACONIAN, + MONS_GREEN_DRACONIAN, // 315 + MONS_PURPLE_DRACONIAN, + MONS_RED_DRACONIAN, + MONS_WHITE_DRACONIAN, + MONS_PALE_DRACONIAN, + MONS_DRACONIAN_CALLER, // 320 + MONS_DRACONIAN_MONK, + MONS_DRACONIAN_ZEALOT, + MONS_DRACONIAN_SHIFTER, + MONS_DRACONIAN_ANNIHILATOR, + MONS_DRACONIAN_KNIGHT, // 325 + MONS_DRACONIAN_SCORCHER, + // The Lords of Hell: MONS_GERYON = 340, // 340 MONS_DISPATER, @@ -1848,57 +2245,62 @@ enum MONSTERS // (int) menv[].type MONS_WATER_ELEMENTAL, MONS_SWAMP_WORM, // 435 + // Statuary + MONS_ORANGE_STATUE, + MONS_SILVER_STATUE, + NUM_MONSTERS, // used for polymorph RANDOM_MONSTER = 1000, // used to distinguish between a random monster and using program bugs for error trapping {dlb} WANDERING_MONSTER = 2500 // only used in monster placement routines - forced limit checks {dlb} }; -enum MONSTER_BEHAVIOUR // create_monster() +enum beh_type { BEH_SLEEP, // 0 BEH_WANDER, BEH_SEEK, BEH_FLEE, BEH_CORNERED, + BEH_PANIC, // like flee but without running away + BEH_INVESTIGATE, // investigating an ME_DISTURB NUM_BEHAVIOURS, // max # of legal states BEH_CHARMED, // hostile-but-charmed; create only BEH_FRIENDLY, // used during creation only BEH_HOSTILE, // creation only - BEH_GOD_GIFT // creation only + BEH_GOD_GIFT, // creation only + BEH_GUARD // creation only - monster is guard }; -enum MONSTER_ATTITUDES +enum mon_attitude_type { ATT_HOSTILE, // 0, default in most cases ATT_FRIENDLY, // created friendly (or tamed?) ATT_NEUTRAL }; -enum MONSTER_EVENTS +enum mon_event_type { ME_EVAL, // 0, evaluate monster AI state ME_DISTURB, // noisy ME_ANNOY, // annoy at range ME_ALERT, // alert to presence ME_WHACK, // physical attack + ME_SHOT, // attack at range ME_SCARE, // frighten monster ME_CORNERED // cannot flee }; -#if 0 -// Obsolete... use mons_charclass() -enum MONSTER_CATEGORIES +enum mon_flight_type { - MC_MIMIC, // 0 - NUM_MC, - MC_UNSPECIFIED = 255 // keep at end !!! mind the upper limit of 255 {dlb} + FLY_NOT, + FLY_POWERED, // wings, etc... paralysis == fall + FLY_LEVITATION // doesn't require physical effort }; -#endif // Note: These are currently stored in chars!!! // Need to fix struct monsters and the savefile if you want more. -enum MONSTER_FLAGS +enum monster_flag_type { MF_CREATED_FRIENDLY = 0x01, // no benefit from killing MF_GOD_GIFT = 0x02, // player not penalized by its death @@ -1906,12 +2308,12 @@ enum MONSTER_FLAGS MF_JUST_SUMMONED = 0x08, // monster skips next available action MF_TAKING_STAIRS = 0x10, // is following player through stairs - MF_UNUSED_I = 0x20, - MF_UNUSED_II = 0x40, - MF_UNUSED_III = 0x80 + MF_INTERESTING = 0x20, // Player finds monster interesting + MF_SEEN = 0x40, // Player already seen monster + MF_UNUSED_I = 0x80 }; -enum MONSTER_DAMAGE +enum mon_dam_level_type { MDAM_OKAY, MDAM_LIGHTLY_DAMAGED, @@ -1922,14 +2324,14 @@ enum MONSTER_DAMAGE MDAM_DEAD }; -enum MONSTER_DESCRIPTORS // things that cross categorical lines {dlb} +enum mon_desc_type // things that cross categorical lines {dlb} { MDSC_LEAVES_HIDE, // 0 MDSC_REGENERATES, MDSC_NOMSG_WOUNDS }; -enum MONSTER_HOLINESS // matches (char) H_foo in mon-util.h, see: monster_holiness() +enum mon_holy_type // matches (char) H_foo in mon-util.h, see: monster_holiness() { MH_HOLY, // 0 - was -1 MH_NATURAL, // 1 - was 0 @@ -1939,7 +2341,7 @@ enum MONSTER_HOLINESS // matches (char) H_foo in mon-util.h, see: monster_holine MH_PLANT // plants }; -enum MONSTER_INVENTORY_SLOTS // (int) menv[].inv[] +enum mon_inv_type // (int) menv[].inv[] { MSLOT_WEAPON, MSLOT_MISSILE, // although it is a second weapon for MONS_TWO_HEADED_OGRE - how to reconcile cleanly? {dlb} @@ -1952,16 +2354,20 @@ enum MONSTER_INVENTORY_SLOTS // (int) menv[].inv[] NUM_MONSTER_SLOTS = 8 // value must remain 8 for savefile compatibility {dlb} }; -enum MONSTER_ITEM_USE +// order of these is important: +enum mon_itemuse_type { MONUSE_NOTHING, MONUSE_EATS_ITEMS, MONUSE_OPEN_DOORS, MONUSE_STARTING_EQUIPMENT, - MONUSE_WEAPONS_ARMOUR + MONUSE_WEAPONS_ARMOUR, + MONUSE_MAGIC_ITEMS }; -enum MONSTER_SPELLS // mons_cast(), mspell_list[], mons_spells() +// XXX: someday merge these into SPELL_ +// If changing this list, keep mon-util.cc spell names in sync. +enum mon_spell_type { MS_MMISSILE, // 0 MS_FLAME, @@ -2016,12 +2422,25 @@ enum MONSTER_SPELLS // mons_cast(), mspell_list[], mons_spells() MS_METAL_SPLINTERS, // 50 MS_SUMMON_DEMON_GREATER, // [foo]_1 was confusing - renamed 13jan2000 {dlb} MS_BANISHMENT, + MS_CONTROLLED_BLINK, + MS_CONTROL_UNDEAD, + MS_MIASMA, // 55 + MS_SUMMON_LIZARDS, + MS_BLINK_OTHER, + MS_DISPEL_UNDEAD, + MS_HELLFROST, + MS_POISON_ARROW, // 60 + MS_SUMMON_SMALL_MAMMALS, + MS_SUMMON_MUSHROOMS, + // XXX: before adding more monster versions of player spells we should + // consider merging the two lists into one and just having monsters + // fail to implement the ones that are impractical. NUM_MONSTER_SPELLS, MS_NO_SPELL = 100 }; // XXX: These still need to be applied in mon-data.h -enum MONSTER_SPELL_TEMPLATES +enum mon_spellbook_type { MST_ORC_WIZARD_I = 0, MST_ORC_WIZARD_II, @@ -2036,7 +2455,8 @@ enum MONSTER_SPELL_TEMPLATES MST_VAMPIRE_KNIGHT, MST_VAMPIRE_MAGE, MST_EFREET = 50, - MST_BRAIN_WORM = 52, + MST_KILLER_KLOWN, + MST_BRAIN_WORM, MST_GIANT_ORANGE_BRAIN, MST_RAKSHASA, MST_GREAT_ORB_OF_EYES, // 55 @@ -2109,13 +2529,19 @@ enum MONSTER_SPELL_TEMPLATES MST_BOGGART, MST_EYE_OF_DEVASTATION, // 125 MST_QUICKSILVER_DRAGON, - MST_IRON_DRAGON, // 127 + MST_IRON_DRAGON, MST_SKELETAL_WARRIOR, + MST_MYSTIC, + MST_DEATH_DRAKE, // 130 + MST_DRAC_SCORCHER, // As Bioster would say.. pig*s + MST_DRAC_CALLER, + MST_DRAC_SHIFTER, + MST_CURSE_TOE, NUM_MSTYPES, MST_NO_SPELLS = 250 }; -enum MUTATIONS +enum mutation_type { MUT_TOUGH_SKIN, // 0 MUT_STRONG, @@ -2201,25 +2627,7 @@ enum MUTATIONS NUM_MUTATIONS }; -enum NAUGHTY_THINGS -{ - NAUGHTY_NECROMANCY = 1, // 1 - using necromancy (spell or device) - NAUGHTY_UNHOLY, // 2 - using unholy stuff (call imp, summon things) - NAUGHTY_KILLING, // 3 - killing in the name of a peaceful deity - NAUGHTY_ATTACK_HOLY, // 4 - attacking holy things - NAUGHTY_ATTACK_FRIEND, // 5 - attacking friendly things - NAUGHTY_FRIEND_DIES, // 6 - allowing friendly things to die - NAUGHTY_BUTCHER, // 7 - butchering in the name of a peaceful deity - NAUGHTY_STABBING, // 8 - stabbing - NAUGHTY_SPELLCASTING, // 9 - spellcasting - NAUGHTY_POISON, // 10 - poisoning - NAUGHTY_STIMULANTS, //jmf: next three new, some not yet used - NAUGHTY_ATE_MEAT, - NAUGHTY_CREATED_LIFE, - NUM_NAUGHTY_THINGS -}; - -enum OBJECT_CLASSES // (unsigned char) mitm[].base_type +enum object_class_type // (unsigned char) mitm[].base_type { OBJ_WEAPONS, // 0 OBJ_MISSILES, @@ -2244,18 +2652,86 @@ enum OBJECT_CLASSES // (unsigned char) mitm[].base_type // for blanket random sub_type .. see dungeon::items() }; -enum OBJECT_SELECTORS +enum object_selector { OSEL_ANY = -1, OSEL_WIELD = -2 }; -enum ORBS +enum operation_types +{ + OPER_WIELD = 'w', + OPER_QUAFF = 'q', + OPER_DROP = 'd', + OPER_EAT = 'e', + OPER_TAKEOFF = 'T', + OPER_WEAR = 'W', + OPER_PUTON = 'P', + OPER_REMOVE = 'R', + OPER_READ = 'r', + OPER_MEMORISE = 'M', + OPER_ZAP = 'z', + OPER_THROW = 't', + OPER_EXAMINE = 'v', + OPER_ANY = 0 +}; + +enum orb_type { ORB_ZOT // 0 }; -enum POTIONS +enum player_size_type +{ + PSIZE_BODY, // entire body size -- used for EV/size of target + PSIZE_TORSO, // torso only (hybrids -- size of parts that use equip) + PSIZE_PROFILE // profile only (for stealth checks) +}; + +// [dshaligram] If you edit potion colours/descriptions, also update +// itemname.cc. +enum potion_description_colour_type +{ + PDC_CLEAR, + PDC_BLUE, + PDC_BLACK, + PDC_SILVERY, + PDC_CYAN, + PDC_PURPLE, + PDC_ORANGE, + PDC_INKY, + PDC_RED, + PDC_YELLOW, + PDC_GREEN, + PDC_BROWN, + PDC_PINK, + PDC_WHITE, + PDC_NCOLOURS +}; + +// [dshaligram] If you edit potion colours/descriptions, also update +// itemname.cc. +enum potion_description_qualifier_type +{ + PDQ_NONE, + PDQ_BUBBLING, + PDQ_FUMING, + PDQ_FIZZY, + PDQ_VISCOUS, + PDQ_LUMPY, + PDQ_SMOKY, + PDQ_GLOWING, + PDQ_SEDIMENTED, + PDQ_METALLIC, + PDQ_MURKY, + PDQ_GLUGGY, + PDQ_OILY, + PDQ_SLIMY, + PDQ_EMULSIFIED, + PDQ_NQUALS +}; + +enum potion_type { POT_HEALING, // 0 POT_HEAL_WOUNDS, @@ -2284,7 +2760,7 @@ enum POTIONS NUM_POTIONS }; -enum PRONOUN_TYPE +enum pronoun_type { PRONOUN_CAP, // 0 PRONOUN_NOCAP, // 1 @@ -2293,7 +2769,7 @@ enum PRONOUN_TYPE PRONOUN_REFLEXIVE // 4 (reflexive is always lowercase) }; -enum PROXIMITY // proximity to player to create monster +enum proximity_type // proximity to player to create monster { PROX_ANYWHERE, PROX_CLOSE_TO_PLAYER, @@ -2301,7 +2777,7 @@ enum PROXIMITY // proximity to player to create monster PROX_NEAR_STAIRS }; -enum RANDART_PROP +enum randart_prop_type { RAP_BRAND, // 0 RAP_AC, @@ -2332,17 +2808,25 @@ enum RANDART_PROP RAP_ACCURACY, RAP_DAMAGE, RAP_CURSED, - RAP_STEALTH + RAP_STEALTH, + RAP_NUM_PROPERTIES }; -enum READ_BOOK_ACTION +enum read_book_action_type { RBOOK_USE_STAFF, - RBOOK_MEMORIZE, + RBOOK_MEMORISE, RBOOK_READ_SPELL }; -enum RUN_DIR +enum run_check_type +{ + RCHECK_LEFT, + RCHECK_FRONT, + RCHECK_RIGHT +}; + +enum run_dir_type { RDIR_UP = 0, RDIR_UP_RIGHT, @@ -2355,7 +2839,18 @@ enum RUN_DIR RDIR_REST }; -enum RUNE_TYPES +enum run_mode_type +{ + RMODE_INTERLEVEL = -3, // Interlevel travel (Ctrl+G) + RMODE_EXPLORE = -2, // Exploring (Ctrl+O) + RMODE_TRAVEL = -1, // Classic or Plain Old travel + RMODE_NOT_RUNNING = 0, // must remain equal to 0 + RMODE_CONTINUE, + RMODE_START, + RMODE_REST_DURATION = 100 +}; + +enum rune_type { // Note: that runes DIS-SWAMP have the same numberic value as the branch RUNE_DIS = 1, @@ -2379,17 +2874,18 @@ enum RUNE_TYPES RUNE_LOM_LOBON, RUNE_CEREBOV, RUNE_GLOORX_VLOQ, - NUM_RUNE_TYPES // should always be last + NUM_RUNE_TYPES, // should always be last + RUNE_NONE }; -enum SCORE_FORMAT +enum score_format_type { SCORE_TERSE, // one line SCORE_REGULAR, // two lines (name, cause, blank) SCORE_VERBOSE // everything (dates, times, god, etc) }; -enum SCROLLS +enum scroll_type { SCR_IDENTIFY, // 0 SCR_TELEPORTATION, @@ -2417,7 +2913,7 @@ enum SCROLLS NUM_SCROLLS }; -enum SHOPS // (unsigned char) env.sh_type[], item_in_shop(), in_a_shop() +enum shop_type // (unsigned char) env.sh_type[], item_in_shop(), in_a_shop() { SHOP_WEAPON, // 0 SHOP_ARMOUR, @@ -2436,7 +2932,47 @@ enum SHOPS // (unsigned char) env.sh_type[], item_in_shop(), in_a_shop() SHOP_RANDOM = 255 // keep set at 255 for now {dlb} }; -enum SKILLS +enum shout_type +{ + S_SILENT, // silent + S_SHOUT, // shout + S_BARK, // bark + S_SHOUT2, // shout twice + S_ROAR, // roar + S_SCREAM, // scream + S_BELLOW, // bellow (?) + S_SCREECH, // screech + S_BUZZ, // buzz + S_MOAN, // moan + S_WHINE, // irritating whine (mosquito) + S_CROAK, // frog croak + S_GROWL, // for bears + S_HISS, // for snakes and lizards + NUM_SHOUTS, + S_RANDOM +}; + +// These are often addressed relative to each other (esp. delta SIZE_MEDIUM) +enum size_type +{ + SIZE_TINY, // rat/bat + SIZE_LITTLE, // spriggan + SIZE_SMALL, // halfling/kobold/gnome + SIZE_MEDIUM, // human/elf/dwarf + SIZE_LARGE, // troll/ogre + SIZE_BIG, // centaur/naga/large quadrupeds + SIZE_GIANT, // giant + SIZE_HUGE, // dragon + NUM_SIZE_LEVELS, + SIZE_CHARACTER // transformations that don't change size +}; + +// [dshaligram] If you add a new skill, update skills2.cc, specifically +// the skills[] array and skill_display_order[]. New skills must go at the +// end of the list or in the unused skill numbers. NEVER rearrange this enum or +// move existing skills to new numbers; save file compatibility depends on this +// order. +enum skill_type { SK_FIGHTING, // 0 SK_SHORT_BLADES, @@ -2450,7 +2986,7 @@ enum SKILLS SK_BOWS, SK_CROSSBOWS, // 10 SK_DARTS, - SK_THROWING, + SK_RANGED_COMBAT, SK_ARMOUR, SK_DODGING, SK_STEALTH, // 15 @@ -2473,10 +3009,14 @@ enum SKILLS SK_POISON_MAGIC, SK_INVOCATIONS, SK_EVOCATIONS, - NUM_SKILLS // must remain last member {dlb} + NUM_SKILLS, // must remain last regular member + + SK_BLANK_LINE, // used for skill output + SK_COLUMN_BREAK, // used for skill output + SK_NONE }; -enum SPECIAL_ARMOR +enum special_armour_type { SPARM_NORMAL, // 0 SPARM_RUNNING, @@ -2504,32 +3044,42 @@ enum SPECIAL_ARMOR SPARM_RANDART_V = 29 // 29 - highest value found thus far {dlb} }; -enum SPECIAL_MISSILES // to separate from weapons in general {dlb} +enum special_missile_type // to separate from weapons in general {dlb} { SPMSL_NORMAL, // 0 SPMSL_FLAME, // 1 SPMSL_ICE, // 2 SPMSL_POISONED, // 3 - from poison_ammo() enchantment {dlb} - SPMSL_POISONED_II // 4 + SPMSL_POISONED_II, // 4 + SPMSL_CURARE // 5 }; -enum SPECIAL_ROOMS +enum special_room_type { SROOM_LAIR_ORC, // 0 SROOM_LAIR_KOBOLD, SROOM_TREASURY, SROOM_BEEHIVE, + SROOM_JELLY_PIT, SROOM_MORGUE, NUM_SPECIAL_ROOMS // 5 - must remain final member {dlb} }; -enum SPECIAL_RINGS // jewellery mitm[].special values +enum special_ring_type // jewellery mitm[].special values { SPRING_RANDART = 200, SPRING_UNRANDART = 201 }; -enum SPECIAL_WEAPONS // equivalent to (you.inv[].special or mitm[].special) % 30 +// order is important on these (see player_speed()) +enum speed_type +{ + SPEED_SLOWED, + SPEED_NORMAL, + SPEED_HASTED +}; + +enum brand_type // equivalent to (you.inv[].special or mitm[].special) % 30 { SPWPN_NORMAL, // 0 SPWPN_FLAMING, @@ -2579,7 +3129,7 @@ enum SPECIAL_WEAPONS // equivalent to (you.inv[].special or mitm[].special) % 30 SPWPN_STAFF_OF_WUCAD_MU // 195 }; -enum SPECIAL_WIELD // you.special_wield +enum special_wield_type // you.special_wield { SPWLD_NONE, // 0 SPWLD_SING, @@ -2599,7 +3149,7 @@ enum SPECIAL_WIELD // you.special_wield SPWLD_SHOUT // 54 - see it_use3::special_wielded() {dlb} }; -enum SPECIES +enum species_type { SP_HUMAN = 1, // 1 SP_ELF, @@ -2629,7 +3179,7 @@ enum SPECIES SP_PALE_DRACONIAN, SP_UNK0_DRACONIAN, SP_UNK1_DRACONIAN, - SP_UNK2_DRACONIAN, + SP_BASE_DRACONIAN, SP_CENTAUR, // 30 SP_DEMIGOD, SP_SPRIGGAN, @@ -2643,7 +3193,7 @@ enum SPECIES SP_UNKNOWN = 100 }; -enum SPELLS +enum spell_type { SPELL_IDENTIFY, // 0 SPELL_TELEPORT_SELF, @@ -2827,18 +3377,38 @@ enum SPELLS SPELL_AIR_WALK, // "dematerialize" (air/transmigration) SPELL_SANDBLAST, // mini-frag; can use stones for material comp 195 SPELL_ROTTING, // evil god power or necromantic transmigration - SPELL_SHUGGOTH_SEED, // evil god power or necromantic summoning SPELL_MAXWELLS_SILVER_HAMMER, // vorpal-brand maces etc. SPELL_CONDENSATION_SHIELD, // "shield" of icy vapour - SPELL_SEMI_CONTROLLED_BLINK, //jmf: to test effect 200 - SPELL_STONESKIN, + SPELL_SEMI_CONTROLLED_BLINK, //jmf: to test effect + SPELL_STONESKIN, // 200 SPELL_SIMULACRUM, - SPELL_CONJURE_BALL_LIGHTNING, // 203 (be wary of 210, see below) + SPELL_CONJURE_BALL_LIGHTNING, + SPELL_CHAIN_LIGHTNING, // 203 (be wary of 209/210, see below) NUM_SPELLS, SPELL_NO_SPELL = 210 // 210 - added 22jan2000 {dlb} }; -enum SPELL_TYPES //jmf: 24jul2000: changed from integer-list to bitfield +enum spflag_type +{ + SPFLAG_NONE = 0x0000, + SPFLAG_DIR_OR_TARGET = 0x0001, // use DIR_NONE targeting + SPFLAG_TARGET = 0x0002, // use DIR_TARGET targeting + SPFLAG_GRID = 0x0004, // use DIR_GRID targeting + SPFLAG_DIR = 0x0008, // use DIR_DIR targeting + SPFLAG_TARGETING_MASK = 0x000f, // used to test for targeting + SPFLAG_HELPFUL = 0x0010, // TARG_FRIENDS used + SPFLAG_NOT_SELF = 0x0020, // aborts on isMe + SPFLAG_UNHOLY = 0x0040 // counts at "unholy" +}; + +enum spret_type +{ + SPRET_ABORT = 0, // should be left as 0 + SPRET_FAIL, + SPRET_SUCCESS +}; + +enum spschool_flag_type { SPTYP_NONE = 0, // "0" is reserved for no type at all {dlb} SPTYP_CONJURATION = 1, // was 11, but only for old typematch routine {dlb} @@ -2859,13 +3429,13 @@ enum SPELL_TYPES //jmf: 24jul2000: changed from integer-list to bitfield SPTYP_RANDOM = 1<<14 }; -enum SLOT_SELECT_MODES +enum slot_select_mode { SS_FORWARD = 0, SS_BACKWARD = 1 }; -enum STATS +enum stat_type { STAT_STRENGTH, // 0 STAT_DEXTERITY, @@ -2875,14 +3445,14 @@ enum STATS STAT_RANDOM = 255 // leave at 255, added for increase_stats() handling {dlb} }; -enum STATUE_TYPES +enum statue_type { STATUE_SILVER, STATUE_ORANGE_CRYSTAL, NUM_STATUE_TYPES }; -enum STATUS_REDRAW_FLAGS +enum status_redraw_flag_type { REDRAW_HUNGER = 0x00000001, REDRAW_BURDEN = 0x00000002, @@ -2908,7 +3478,7 @@ enum STATUS_REDRAW_FLAGS REDRAW_LINE_3_MASK = 0x007f0000 }; -enum STAVES +enum stave_type { STAFF_WIZARDRY, // 0 STAFF_POWER, @@ -2936,7 +3506,8 @@ enum STAVES NUM_STAVES // must remain last member {dlb} }; -enum SYMBOLS // beam[].type - note that this (and its variants) also accepts values from other enums - confusing {dlb} +// beam[].type - note that this (and its variants) also accepts values from other enums - confusing {dlb} +enum zap_symbol_type { SYM_SPACE = ' ', // 32 SYM_FLASK = '!', // 33 @@ -2951,10 +3522,11 @@ enum SYMBOLS // beam[].type - note that this (and its variants) also accepts val SYM_SCROLL = '?', // 63 SYM_DEBUG = 'X', // 88 SYM_ARMOUR = '[', // 91 - SYM_MISSILE = '`' // 96 + SYM_MISSILE = '`', // 96 + SYM_EXPLOSION = '#' }; -enum TAGS // used during save/load process to identify data blocks +enum tag_type // used during save/load process to identify data blocks { TAG_VERSION = 0, // should NEVER be read in! TAG_YOU = 1, // 'you' structure @@ -2968,15 +3540,25 @@ enum TAGS // used during save/load process to identify data blocks NUM_TAGS }; -enum TAGTYPES // file types supported by tag system +enum tag_file_type // file types supported by tag system { TAGTYPE_PLAYER=0, // Foo.sav TAGTYPE_LEVEL, // Foo.00a, .01a, etc. - TAGTYPE_GHOST // bones.xxx + TAGTYPE_GHOST, // bones.xxx + + TAGTYPE_PLAYER_NAME // Used only to read the player name }; +enum torment_source_type +{ + TORMENT_GENERIC = -1, + TORMENT_CARDS = -2, // Symbol of torment + TORMENT_SPWLD = -3, // Special wield torment + TORMENT_SCROLL = -4, + TORMENT_SPELL = -5 // SPELL_SYMBOL_OF_TORMENT +}; -enum TRANSFORMATIONS +enum transformation_type { TRAN_NONE, // 0 TRAN_SPIDER, @@ -2990,7 +3572,7 @@ enum TRANSFORMATIONS NUM_TRANSFORMATIONS // must remain last member {dlb} }; -enum TRAPS // env.trap_type[] +enum trap_type // env.trap_type[] { TRAP_DART, // 0 TRAP_ARROW, @@ -3004,10 +3586,11 @@ enum TRAPS // env.trap_type[] TRAP_NEEDLE, NUM_TRAPS, // must remain last 'regular' member {dlb} TRAP_UNASSIGNED = 100, // keep set at 100 for now {dlb} + TRAP_NONTELEPORT = 254, TRAP_RANDOM = 255 // set at 255 to avoid potential conflicts {dlb} }; -enum UNARMED_ATTACKS +enum unarmed_attack_type { UNAT_NO_ATTACK, // 0 UNAT_KICK, @@ -3016,31 +3599,150 @@ enum UNARMED_ATTACKS UNAT_PUNCH }; -enum UNDEAD_STATES // you.is_undead +enum undead_state_type // you.is_undead { US_ALIVE, // 0 US_HUNGRY_DEAD, US_UNDEAD }; -enum UNIQUE_ITEM_STATUS +enum unique_item_status_type { UNIQ_NOT_EXISTS = 0, UNIQ_EXISTS = 1, UNIQ_LOST_IN_ABYSS = 2 }; -enum VORPAL_DESCRIPTIONS -{ - DVORP_CRUSHING, // 0 - DVORP_SLICING, - DVORP_PIERCING, - DVORP_CHOPPING +// NOTE: THE ORDER AND VALUE OF THESE IS CURRENTLY VERY IMPORTANT! +enum vault_type +{ + VAULT_VAULT_1 = 0, + VAULT_VAULT_2 = 1, + VAULT_VAULT_3 = 2, + VAULT_VAULT_4 = 3, + VAULT_VAULT_5 = 4, + VAULT_VAULT_6 = 5, + VAULT_VAULT_7 = 6, + VAULT_VAULT_8 = 7, + VAULT_VAULT_9 = 8, + VAULT_VAULT_10 = 9, + VAULT_ORC_TEMPLE = 10, + VAULT_FARM_AND_COUNTRY = 11, + VAULT_FORT_YAKTAUR = 12, + VAULT_BOX_LEVEL = 13, + VAULT_MY_MAP = 14, + + VAULT_VESTIBULE_MAP = 50, + VAULT_CASTLE_DIS = 51, + VAULT_ASMODEUS = 52, + VAULT_ANTAEUS = 53, + VAULT_ERESHKIGAL = 54, + + VAULT_MNOLEG = 60, + VAULT_LOM_LOBON = 61, + VAULT_CEREBOV = 62, + VAULT_GLOORX_VLOQ = 63, + // VAULT_MOLLUSC = 64, + + VAULT_BEEHIVE = 80, + VAULT_SLIME_PIT = 81, + VAULT_BOTTOM_OF_VAULTS = 82, + VAULT_HALL_OF_BLADES = 83, + VAULT_HALL_OF_ZOT = 84, + VAULT_TEMPLE = 85, + VAULT_SNAKE_PIT = 86, + VAULT_ELF_HALL = 87, + VAULT_TOMB_1 = 88, + VAULT_TOMB_2 = 89, + VAULT_TOMB_3 = 90, + VAULT_SWAMP = 91, + + VAULT_RANDOM = 100, + + VAULT_MINIVAULT_1 = 200, + VAULT_MINIVAULT_2 = 201, + VAULT_MINIVAULT_3 = 202, + VAULT_MINIVAULT_4 = 203, + VAULT_MINIVAULT_5 = 204, + VAULT_MINIVAULT_6 = 205, + VAULT_MINIVAULT_7 = 206, + VAULT_MINIVAULT_8 = 207, + VAULT_MINIVAULT_9 = 208, + VAULT_MINIVAULT_10 = 209, + VAULT_MINIVAULT_11 = 210, + VAULT_MINIVAULT_12 = 211, + VAULT_MINIVAULT_13 = 212, + VAULT_MINIVAULT_14 = 213, + VAULT_MINIVAULT_15 = 214, + VAULT_MINIVAULT_16 = 215, + VAULT_MINIVAULT_17 = 216, + VAULT_MINIVAULT_18 = 217, + VAULT_MINIVAULT_19 = 218, + VAULT_MINIVAULT_20 = 219, + VAULT_MINIVAULT_21 = 220, + VAULT_MINIVAULT_22 = 221, + VAULT_MINIVAULT_23 = 222, + VAULT_MINIVAULT_24 = 223, + VAULT_MINIVAULT_25 = 224, + VAULT_MINIVAULT_26 = 225, + VAULT_MINIVAULT_27 = 226, + VAULT_MINIVAULT_28 = 227, + VAULT_MINIVAULT_29 = 228, + VAULT_MINIVAULT_30 = 229, + VAULT_MINIVAULT_31 = 230, + VAULT_MINIVAULT_32 = 231, + VAULT_MINIVAULT_33 = 232, + VAULT_MINIVAULT_34 = 233, + VAULT_MINIVAULT_35 = 234, + + VAULT_RAND_DEMON_1 = 300, + VAULT_RAND_DEMON_2 = 301, + VAULT_RAND_DEMON_3 = 302, + VAULT_RAND_DEMON_4 = 303, + VAULT_RAND_DEMON_5 = 304, + VAULT_RAND_DEMON_6 = 305, + VAULT_RAND_DEMON_7 = 306, + VAULT_RAND_DEMON_8 = 307, + VAULT_RAND_DEMON_9 = 308 +}; + +enum vorpal_damage_type +{ + // Types of damage a weapon can do... currently assuming that anything + // with BLUDGEON always does "AND" with any other specified types, + // and and sets not including BLUDGEON are "OR". + DAM_BASH = 0x0000, // non-melee weapon blugeoning + DAM_BLUDGEON = 0x0001, // crushing + DAM_SLICE = 0x0002, // slicing/chopping + DAM_PIERCE = 0x0004, // stabbing/piercing + DAM_WHIP = 0x0008, // whip slashing (no butcher) + + // These are used for vorpal weapon desc (don't set more than one) + DVORP_NONE = 0x0000, // used for non-melee weapons + DVORP_CRUSHING = 0x1000, + DVORP_SLICING = 0x2000, + DVORP_PIERCING = 0x3000, + DVORP_CHOPPING = 0x4000, // used for axes + DVORP_SLASHING = 0x5000, // used for whips + DVORP_STABBING = 0x6000, // used for knives/daggers + + // These are shortcuts to tie vorpal/damage types for easy setting... + // as above, setting more than one vorpal type is trouble. + DAMV_NON_MELEE = DVORP_NONE | DAM_BASH, // launchers + DAMV_CRUSHING = DVORP_CRUSHING | DAM_BLUDGEON, + DAMV_SLICING = DVORP_SLICING | DAM_SLICE, + DAMV_PIERCING = DVORP_PIERCING | DAM_PIERCE, + DAMV_CHOPPING = DVORP_CHOPPING | DAM_SLICE, + DAMV_SLASHING = DVORP_SLASHING | DAM_WHIP, + DAMV_STABBING = DVORP_STABBING | DAM_PIERCE, + + DAM_MASK = 0x0fff, // strips vorpal specification + DAMV_MASK = 0xf000 // strips non-vorpal specification }; // NOTE: This order is very special! Its basically the same as ZAP_*, // and there are bits of the code that still use that fact.. see zap_wand(). -enum WANDS // mitm[].subtype +enum wand_type // mitm[].subtype { WAND_FLAME, // 0 WAND_FROST, @@ -3065,7 +3767,7 @@ enum WANDS // mitm[].subtype NUM_WANDS // must remain last member {dlb} }; -enum WEAPONS +enum weapon_type { // Base weapons WPN_CLUB, // 0 @@ -3111,18 +3813,24 @@ enum WEAPONS WPN_TRIDENT, WPN_SPIKED_FLAIL, WPN_GREAT_MACE, - WPN_GREAT_FLAIL, // 40 + WPN_DIRE_FLAIL, // 40 WPN_KNIFE, WPN_BLOWGUN, WPN_FALCHION, - NUM_WEAPONS, // 44 - must remain last regular member {dlb} + WPN_BLESSED_BLADE, // 44 + WPN_LONGBOW, + WPN_LAJATANG, + WPN_LOCHABER_AXE, + + NUM_WEAPONS, // 48 - must be last regular member {dlb} + // special cases WPN_UNARMED = 500, // 500 WPN_UNKNOWN = 1000, // 1000 WPN_RANDOM }; -enum WEAPON_DESCRIPTIONS +enum weapon_description_type { DWPN_PLAIN = 0, // 0 - added to round out enum {dlb} DWPN_RUNED = 1, // 1 @@ -3132,7 +3840,7 @@ enum WEAPON_DESCRIPTIONS DWPN_DWARVEN // 5 }; -enum WEAPON_PROPERTIES +enum weapon_property_type { PWPN_DAMAGE, // 0 PWPN_HIT, @@ -3141,7 +3849,7 @@ enum WEAPON_PROPERTIES #ifdef WIZARD -enum WIZARD_OPTIONS +enum wizard_option_type { WIZ_NEVER, // protect player from accidental wiz WIZ_NO, // don't start character in wiz mode @@ -3150,7 +3858,7 @@ enum WIZARD_OPTIONS #endif -enum ZAPS // zapping(), zappy() +enum zap_type { ZAP_FLAME, // 0 ZAP_FROST, @@ -3199,7 +3907,7 @@ enum ZAPS // zapping(), zappy() ZAP_AGONY, ZAP_DISRUPTION, // 45 ZAP_DISINTEGRATION, // 46 - ZAP_ISKS_CROSS, // 47: Isk's Cross -- commented out, deprecated {dlb} + // ZAP_ISKS_CROSS, // 47: Isk's Cross -- commented out, deprecated {dlb} ZAP_BREATHE_STEAM = 48, // 48 ZAP_CONTROL_DEMON, ZAP_ORB_OF_FRAGMENTATION, // 50 @@ -3212,8 +3920,18 @@ enum ZAPS // zapping(), zappy() ZAP_SMALL_SANDBLAST, ZAP_MAGMA, ZAP_POISON_ARROW, + ZAP_BREATHE_STICKY_FLAME, + ZAP_BREATHE_LIGHTNING, + ZAP_PETRIFY, + ZAP_HELLFROST, NUM_ZAPS // must remain last member {dlb} }; +enum zombie_size_type +{ + Z_NOZOMBIE, + Z_SMALL, + Z_BIG +}; #endif // ENUM_H -- cgit v1.2.3-54-g00ecf