summaryrefslogtreecommitdiffstats
path: root/stone_soup/crawl-ref/source/enum.h
diff options
context:
space:
mode:
authordshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573>2006-09-18 15:08:25 +0000
committerdshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573>2006-09-18 15:08:25 +0000
commita4d4f3ecccb29c3f5fc1ce55579119106c399911 (patch)
tree5677ea04b4dfdadd961c01ba3baf7502f8d6e0d0 /stone_soup/crawl-ref/source/enum.h
parent571501e1135989d3b9dc44e3d332562a7cf78b35 (diff)
downloadcrawl-ref-a4d4f3ecccb29c3f5fc1ce55579119106c399911.tar.gz
crawl-ref-a4d4f3ecccb29c3f5fc1ce55579119106c399911.zip
Updated stone_soup-0.1b1 tag to include fix for Poison Arrow of Doom.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/tags/stone_soup-0.1b1@49 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'stone_soup/crawl-ref/source/enum.h')
-rw-r--r--stone_soup/crawl-ref/source/enum.h3719
1 files changed, 3719 insertions, 0 deletions
diff --git a/stone_soup/crawl-ref/source/enum.h b/stone_soup/crawl-ref/source/enum.h
new file mode 100644
index 0000000000..c084ec3154
--- /dev/null
+++ b/stone_soup/crawl-ref/source/enum.h
@@ -0,0 +1,3719 @@
+/*
+ * File: enum.h
+ * Summary: Global (ick) enums.
+ * Written by: Daniel Ligon
+ *
+ * Change History (most recent first):
+ *
+ * <11> 7 Aug 01 MV Changed MSLOT_UNASSIGNED_I to MSLOT_MISCELLANY
+ * added NUM_MISCELLANY, changed MONS_ANOTHER_
+ * LAVA_THING to MONS_SALAMANDER
+ * <10> 7/29/00 JDJ Changed NUM_SPELL_TYPES to 14 (from 32767!).
+ * 24jun2000 jmf Changed comment spacing so stuff fit in 80
+ * columns; deleted some leading numbers in
+ * comments (reasoning as above).
+ * Also removed many "must be last" comments,
+ * esp. where less-than-accurate.
+ * <9> 10jan2000 dlb extensive - see changes.340 S
+ * <8> 04nov1999 cdl added killed_by
+ * <7> 29sep1999 BCR Added comments showing where uniques are
+ * <6> 25sep1999 CDL Added commands
+ * <5> 09sep1999 BWR Removed Great Swords skill
+ * <4> 06aug1999 BWR added branch and level types
+ * <3> 02jun1999 DML beams, clouds, ench, ms, kill,
+ * other minor changes
+ * <2> 26may1999 JDJ Added a header guard.
+ * <1> --/--/-- CDL Created
+ */
+
+
+#ifndef ENUM_H
+#define ENUM_H
+
+enum ability_type
+{
+ ABIL_NON_ABILITY = -1,
+ ABIL_SPIT_POISON = 1, // 1
+ ABIL_GLAMOUR,
+ ABIL_MAPPING,
+ ABIL_TELEPORTATION,
+ ABIL_BREATHE_FIRE, // 5
+ ABIL_BLINK,
+ ABIL_BREATHE_FROST,
+ ABIL_BREATHE_POISON,
+ ABIL_BREATHE_LIGHTNING,
+ ABIL_SPIT_ACID, // 10
+ ABIL_BREATHE_POWER,
+ ABIL_EVOKE_BERSERK,
+ ABIL_BREATHE_STICKY_FLAME,
+ ABIL_BREATHE_STEAM,
+ ABIL_FLY, // 15
+ ABIL_SUMMON_MINOR_DEMON,
+ ABIL_SUMMON_DEMONS,
+ ABIL_HELLFIRE,
+ ABIL_TORMENT,
+ ABIL_RAISE_DEAD, // 20
+ ABIL_CONTROL_DEMON,
+ ABIL_TO_PANDEMONIUM,
+ ABIL_CHANNELING,
+ ABIL_THROW_FLAME,
+ ABIL_THROW_FROST, // 25
+ ABIL_BOLT_OF_DRAINING,
+ ABIL_BREATHE_HELLFIRE,
+ ABIL_FLY_II,
+ ABIL_DELAYED_FIREBALL,
+ ABIL_MUMMY_RESTORATION, // 30
+ ABIL_EVOKE_MAPPING,
+ ABIL_EVOKE_TELEPORTATION,
+ ABIL_EVOKE_BLINK, // 33
+ ABIL_EVOKE_TURN_INVISIBLE = 51, // 51
+ ABIL_EVOKE_TURN_VISIBLE,
+ ABIL_EVOKE_LEVITATE,
+ ABIL_EVOKE_STOP_LEVITATING,
+ ABIL_END_TRANSFORMATION, // 55
+ ABIL_ZIN_REPEL_UNDEAD = 110, // 110
+ ABIL_ZIN_HEALING,
+ ABIL_ZIN_PESTILENCE,
+ ABIL_ZIN_HOLY_WORD,
+ ABIL_ZIN_SUMMON_GUARDIAN, // 114
+ ABIL_TSO_REPEL_UNDEAD = 120, // 120
+ ABIL_TSO_SMITING,
+ ABIL_TSO_ANNIHILATE_UNDEAD,
+ ABIL_TSO_CLEANSING_FLAME,
+ ABIL_TSO_SUMMON_DAEVA, // 124
+ ABIL_KIKU_RECALL_UNDEAD_SLAVES = 130, // 130
+ ABIL_KIKU_ENSLAVE_UNDEAD = 132, // 132
+ ABIL_KIKU_INVOKE_DEATH, // 133
+ ABIL_YRED_ANIMATE_CORPSE = 140, // 140
+ ABIL_YRED_RECALL_UNDEAD,
+ ABIL_YRED_ANIMATE_DEAD,
+ ABIL_YRED_DRAIN_LIFE,
+ ABIL_YRED_CONTROL_UNDEAD, // 144
+ ABIL_VEHUMET_CHANNEL_ENERGY = 160, // 160
+ ABIL_OKAWARU_MIGHT = 170, // 170
+ ABIL_OKAWARU_HEALING,
+ ABIL_OKAWARU_HASTE, // 172
+ ABIL_MAKHLEB_MINOR_DESTRUCTION = 180, // 180
+ 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_TROG_BERSERK = 200, // 200
+ ABIL_TROG_MIGHT,
+ ABIL_TROG_HASTE_SELF, // 202
+ ABIL_ELYVILON_LESSER_HEALING = 220, // 220
+ ABIL_ELYVILON_PURIFICATION,
+ ABIL_ELYVILON_HEALING,
+ ABIL_ELYVILON_RESTORATION,
+ ABIL_ELYVILON_GREATER_HEALING, // 224
+ ABIL_CHARM_SNAKE,
+ ABIL_TRAN_SERPENT_OF_HELL,
+ ABIL_ROTTING,
+ ABIL_TORMENT_II,
+ ABIL_PAIN,
+ ABIL_ENSLAVE_UNDEAD,
+ ABIL_BOLT_OF_FIRE,
+ ABIL_BOLT_OF_COLD,
+ ABIL_HELLFROST,
+ ABIL_RENOUNCE_RELIGION = 250 // 250
+};
+
+enum ability_flag_type
+{
+ ABFLAG_NONE = 0x00000000,
+ ABFLAG_BREATH = 0x00000001, // ability uses DUR_BREATH_WEAPON
+ ABFLAG_DELAY = 0x00000002, // ability has its own delay (ie glamour)
+ ABFLAG_PAIN = 0x00000004, // ability must hurt player (ie torment)
+ ABFLAG_EXHAUSTION = 0x00000008, // fails if you.exhausted
+ ABFLAG_INSTANT = 0x00000010, // doesn't take time to use
+ ABFLAG_PERMANENT_HP = 0x00000020, // costs permanent HPs
+ ABFLAG_PERMANENT_MP = 0x00000040 // costs permanent MPs
+};
+
+enum activity_type
+{
+ ACT_NONE = 0,
+ ACT_MULTIDROP,
+ ACT_RUNNING,
+ ACT_TRAVELING,
+ ACT_MACRO,
+
+ ACT_ACTIVITY_COUNT
+};
+
+enum activity_interrupt_type
+{
+ 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
+};
+
+enum activity_interrupt_payload_type
+{
+ AIP_NONE,
+ AIP_INT,
+ AIP_STRING,
+ AIP_MONSTER,
+ AIP_HP_LOSS
+};
+
+enum ammunition_description_type
+{
+ DAMMO_ORCISH = 3, // 3
+ DAMMO_ELVEN,
+ DAMMO_DWARVEN // 5
+};
+
+// Various ways to get the acquirement effect.
+enum acquirement_agent_type
+{
+ AQ_SCROLL = 0,
+
+ // Empty space for the gods
+
+ AQ_CARD_ACQUISITION = 100,
+ AQ_CARD_VIOLENCE,
+ AQ_CARD_PROTECTION,
+ AQ_CARD_KNOWLEDGE,
+
+ AQ_WIZMODE = 200
+};
+
+enum armour_type
+{
+ ARM_ROBE, // 0
+ ARM_LEATHER_ARMOUR,
+ ARM_RING_MAIL,
+ ARM_SCALE_MAIL,
+ ARM_CHAIN_MAIL,
+ ARM_SPLINT_MAIL, // 5
+ ARM_BANDED_MAIL,
+ ARM_PLATE_MAIL,
+ ARM_SHIELD,
+ ARM_CLOAK,
+ ARM_HELMET, // 10
+ ARM_GLOVES,
+ ARM_BOOTS,
+ ARM_BUCKLER,
+ ARM_LARGE_SHIELD,
+ ARM_DRAGON_HIDE, // 15
+ ARM_TROLL_HIDE,
+ ARM_CRYSTAL_PLATE_MAIL,
+ ARM_DRAGON_ARMOUR,
+ ARM_TROLL_LEATHER_ARMOUR,
+ ARM_ICE_DRAGON_HIDE, // 20
+ ARM_ICE_DRAGON_ARMOUR,
+ ARM_STEAM_DRAGON_HIDE,
+ ARM_STEAM_DRAGON_ARMOUR,
+ ARM_MOTTLED_DRAGON_HIDE,
+ ARM_MOTTLED_DRAGON_ARMOUR, // 25
+ ARM_STORM_DRAGON_HIDE,
+ ARM_STORM_DRAGON_ARMOUR,
+ ARM_GOLD_DRAGON_HIDE,
+ ARM_GOLD_DRAGON_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
+};
+
+// 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}
+ DARM_RUNED,
+ DARM_GLOWING,
+ DARM_ELVEN,
+ DARM_DWARVEN, // 5
+ DARM_ORCISH
+};
+
+enum armour_property_type
+{
+ PARM_AC, // 0
+ PARM_EVASION
+};
+
+enum attribute_type
+{
+ ATTR_DIVINE_LIGHTNING_PROTECTION, // 0
+ // ATTR_SPEC_AIR, // don't use this!
+ // ATTR_SPEC_EARTH,
+ ATTR_CONTROL_TELEPORT = 3,
+ ATTR_WALK_SLOWLY,
+ ATTR_TRANSFORMATION, // 5
+ ATTR_CARD_COUNTDOWN,
+ ATTR_CARD_TABLE,
+ ATTR_NUM_DEMONIC_POWERS,
+ ATTR_WAS_SILENCED, //jmf: added for silenced messages
+ ATTR_GOD_GIFT_COUNT, //jmf: added to help manage god gift giving
+ ATTR_EXPENSIVE_FLIGHT, //jmf: flag for "manual flight" (ie wings)
+ ATTR_DEMONIC_SCALES, //jmf: remember which kind of scales to improve
+ ATTR_WALLS,
+ ATTR_LAST_WALLS,
+ ATTR_DELAYED_FIREBALL, // bwr: reserve fireballs
+ 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 band_type
+{
+ BAND_NO_BAND = 0,
+ BAND_KOBOLDS = 1,
+ BAND_ORCS,
+ BAND_ORC_KNIGHT,
+ BAND_KILLER_BEES,
+ BAND_FLYING_SKULLS, // 5
+ BAND_SLIME_CREATURES,
+ BAND_YAKS,
+ BAND_UGLY_THINGS,
+ BAND_HELL_HOUNDS,
+ BAND_JACKALS, // 10
+ BAND_HELL_KNIGHTS,
+ BAND_ORC_HIGH_PRIEST,
+ BAND_GNOLLS, // 13
+ BAND_BUMBLEBEES = 16,
+ BAND_CENTAURS,
+ BAND_YAKTAURS,
+ BAND_INSUBSTANTIAL_WISPS,
+ BAND_OGRE_MAGE, // 20
+ BAND_DEATH_YAKS,
+ BAND_NECROMANCER,
+ BAND_BALRUG,
+ BAND_CACODEMON,
+ BAND_EXECUTIONER, // 25
+ BAND_HELLWING,
+ BAND_DEEP_ELF_FIGHTER,
+ BAND_DEEP_ELF_KNIGHT,
+ BAND_DEEP_ELF_HIGH_PRIEST,
+ BAND_KOBOLD_DEMONOLOGIST, // 30
+ BAND_NAGAS,
+ BAND_WAR_DOGS,
+ BAND_GREY_RATS,
+ BAND_GREEN_RATS,
+ BAND_ORANGE_RATS, // 35
+ BAND_SHEEP,
+ BAND_GHOULS,
+ BAND_DEEP_TROLLS,
+ BAND_HOGS,
+ BAND_HELL_HOGS, // 40
+ BAND_GIANT_MOSQUITOES,
+ BAND_BOGGARTS,
+ BAND_BLINK_FROGS,
+ BAND_SKELETAL_WARRIORS, // 44
+ BAND_DRACONIAN, // 45
+ NUM_BANDS // always last
+};
+
+enum beam_type // beam[].flavour
+{
+ BEAM_MISSILE, // 0
+ BEAM_MMISSILE, // 1 - and similarly unresistable things
+ BEAM_FIRE,
+ BEAM_COLD,
+ BEAM_MAGIC,
+ BEAM_ELECTRICITY, // 5
+ BEAM_POISON,
+ BEAM_NEG,
+ 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,
+ BEAM_SLEEP,
+ BEAM_ICE, // 23
+ BEAM_NUKE = 27, // 27
+ BEAM_RANDOM, // currently translates into FIRE..ACID
+
+ // These used to be handled in the colour field:
+ BEAM_SLOW, // BLACK
+ BEAM_HASTE, // BLUE
+ BEAM_HEALING, // GREEN
+ BEAM_PARALYSIS, // CYAN
+ BEAM_CONFUSION, // RED
+ BEAM_INVISIBILITY, // MAGENTA
+ BEAM_DIGGING, // BROWN
+ BEAM_TELEPORT, // LIGHTGREY
+ BEAM_POLYMORPH, // DARKGREY
+ BEAM_CHARM, // LIGHTBLUE
+ BEAM_BANISH, // LIGHTGREEN
+ BEAM_DEGENERATE, // LIGHTCYAN
+ BEAM_ENSLAVE_UNDEAD, // LIGHTRED
+ BEAM_PAIN, // LIGHTMAGENTA
+ BEAM_DISPEL_UNDEAD, // YELLOW
+ BEAM_DISINTEGRATION, // WHITE
+ BEAM_ENSLAVE_DEMON, // colour "16"
+ BEAM_BLINK,
+ BEAM_PETRIFY,
+
+ // new beams for evaporate
+ BEAM_POTION_STINKING_CLOUD,
+ BEAM_POTION_POISON,
+ BEAM_POTION_MIASMA,
+ BEAM_POTION_STEAM,
+ BEAM_POTION_FIRE,
+ BEAM_POTION_COLD,
+ BEAM_POTION_BLACK_SMOKE,
+ BEAM_POTION_BLUE_SMOKE,
+ BEAM_POTION_PURP_SMOKE,
+ BEAM_POTION_RANDOM,
+
+ BEAM_LINE_OF_SIGHT // only used for checking monster LOS
+};
+
+enum book_type
+{
+ BOOK_MINOR_MAGIC_I, // 0
+ BOOK_MINOR_MAGIC_II,
+ BOOK_MINOR_MAGIC_III,
+ BOOK_CONJURATIONS_I,
+ BOOK_CONJURATIONS_II,
+ BOOK_FLAMES, // 5
+ BOOK_FROST,
+ BOOK_SUMMONINGS,
+ BOOK_FIRE,
+ BOOK_ICE,
+ BOOK_SURVEYANCES, // 10
+ BOOK_SPATIAL_TRANSLOCATIONS,
+ BOOK_ENCHANTMENTS,
+ BOOK_YOUNG_POISONERS,
+ BOOK_TEMPESTS,
+ BOOK_DEATH, // 15
+ BOOK_HINDERANCE,
+ BOOK_CHANGES,
+ BOOK_TRANSFIGURATIONS,
+ BOOK_PRACTICAL_MAGIC,
+ BOOK_WAR_CHANTS, // 20
+ BOOK_CLOUDS,
+ BOOK_HEALING,
+ BOOK_NECROMANCY,
+ BOOK_NECRONOMICON,
+ BOOK_CALLINGS, // 25
+ BOOK_CHARMS,
+ BOOK_DEMONOLOGY,
+ BOOK_AIR,
+ BOOK_SKY,
+ BOOK_DIVINATIONS, // 30
+ BOOK_WARP,
+ BOOK_ENVENOMATIONS,
+ BOOK_ANNIHILATIONS,
+ BOOK_UNLIFE,
+ BOOK_DESTRUCTION, // 35
+ BOOK_CONTROL,
+ BOOK_MUTATIONS,
+ BOOK_TUKIMA,
+ BOOK_GEOMANCY,
+ BOOK_EARTH, // 40
+ BOOK_MANUAL,
+ BOOK_WIZARDRY,
+ BOOK_POWER,
+ BOOK_CANTRIPS, //jmf: 04jan2000
+ BOOK_PARTY_TRICKS, // 45 //jmf: 04jan2000
+ BOOK_BEASTS,
+ BOOK_STALKING, // renamed -- assassination was confusing -- bwr
+ NUM_BOOKS
+};
+
+enum branch_type // you.where_are_you
+{
+ BRANCH_MAIN_DUNGEON, // 0
+ BRANCH_DIS,
+ BRANCH_GEHENNA,
+ BRANCH_VESTIBULE_OF_HELL,
+ BRANCH_COCYTUS,
+ BRANCH_TARTARUS, // 5
+ BRANCH_INFERNO, // unimplemented
+ BRANCH_THE_PIT, // 7 // unimplemented
+ BRANCH_ORCISH_MINES = 10, // 10
+ BRANCH_HIVE,
+ BRANCH_LAIR,
+ BRANCH_SLIME_PITS,
+ BRANCH_VAULTS,
+ BRANCH_CRYPT, // 15
+ BRANCH_HALL_OF_BLADES,
+ BRANCH_HALL_OF_ZOT,
+ BRANCH_ECUMENICAL_TEMPLE,
+ BRANCH_SNAKE_PIT,
+ BRANCH_ELVEN_HALLS, // 20
+ BRANCH_TOMB,
+ BRANCH_SWAMP,
+ BRANCH_CAVERNS
+};
+
+enum branch_stair_type // you.branch_stairs[] - 10 less than BRANCHES {dlb}
+{
+ STAIRS_ORCISH_MINES, // 0
+ STAIRS_HIVE,
+ STAIRS_LAIR,
+ STAIRS_SLIME_PITS,
+ STAIRS_VAULTS,
+ STAIRS_CRYPT, // 5
+ STAIRS_HALL_OF_BLADES,
+ STAIRS_HALL_OF_ZOT,
+ STAIRS_ECUMENICAL_TEMPLE,
+ STAIRS_SNAKE_PIT,
+ STAIRS_ELVEN_HALLS, // 10
+ STAIRS_TOMB,
+ STAIRS_SWAMP,
+ STAIRS_CAVERNS
+};
+
+enum burden_state_type // you.burden_state
+{
+ BS_UNENCUMBERED, // 0
+ BS_ENCUMBERED = 2, // 2
+ BS_OVERLOADED = 5 // 5
+};
+
+enum canned_message_type // canned_msg() - unsigned char
+{
+ MSG_SOMETHING_APPEARS, // 0
+ MSG_NOTHING_HAPPENS,
+ MSG_YOU_RESIST,
+ MSG_TOO_BERSERK,
+ MSG_NOTHING_CARRIED,
+ MSG_CANNOT_DO_YET,
+ MSG_OK,
+ MSG_UNTHINKING_ACT,
+ MSG_SPELL_FIZZLES,
+ MSG_HUH,
+ MSG_EMPTY_HANDED,
+ MSG_NOT_IN_PRESENT_FORM,
+ MSG_TOO_CONFUSED,
+ MSG_DISORIENTED,
+ MSG_CANT_REACH
+};
+
+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
+ CLOUD_STINK, // 2
+ CLOUD_COLD, // 3
+ CLOUD_POISON, // 4
+ CLOUD_GREY_SMOKE = 5, // 5: found 11jan2000 {dlb}
+ CLOUD_BLUE_SMOKE = 6, // 6: found 11jan2000 {dlb}
+ CLOUD_PURP_SMOKE = 7, // was: CLOUD_ENERGY and wrong 19jan2000 {dlb}
+ 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}
+ CLOUD_STINK_MON = 102, // 102: found 11jan2000 {dlb}
+ CLOUD_COLD_MON = 103, // 103: added 11jan2000 {dlb}
+ CLOUD_POISON_MON = 104, // 104
+ CLOUD_GREY_SMOKE_MON = 105, // 105: found 11jan2000 {dlb}
+ CLOUD_BLUE_SMOKE_MON = 106, // 106: found 11jan2000 {dlb}
+ CLOUD_PURP_SMOKE_MON = 107, // 107:
+ CLOUD_STEAM_MON = 108, // 108: added 11jan2000 {dlb}
+ CLOUD_MIASMA_MON = 109, // 109: added 11jan2000 {dlb}
+ CLOUD_BLACK_SMOKE_MON = 110 // 110: added 19jan2000 {dlb}
+};
+
+enum command_type
+{
+ CMD_NO_CMD = 1000, // 1000
+ CMD_MOVE_NOWHERE,
+ CMD_MOVE_LEFT,
+ CMD_MOVE_DOWN,
+ CMD_MOVE_UP,
+ CMD_MOVE_RIGHT,
+ CMD_MOVE_UP_LEFT,
+ CMD_MOVE_DOWN_LEFT,
+ CMD_MOVE_UP_RIGHT,
+ CMD_MOVE_DOWN_RIGHT,
+ CMD_RUN_LEFT, // 1000 + 10
+ CMD_RUN_DOWN,
+ CMD_RUN_UP,
+ CMD_RUN_RIGHT,
+ CMD_RUN_UP_LEFT,
+ CMD_RUN_DOWN_LEFT,
+ CMD_RUN_UP_RIGHT,
+ CMD_RUN_DOWN_RIGHT,
+ CMD_OPEN_DOOR_LEFT,
+ CMD_OPEN_DOOR_DOWN,
+ CMD_OPEN_DOOR_UP, // 1000 + 20
+ CMD_OPEN_DOOR_RIGHT,
+ CMD_OPEN_DOOR_UP_LEFT,
+ CMD_OPEN_DOOR_DOWN_LEFT,
+ CMD_OPEN_DOOR_UP_RIGHT,
+ CMD_OPEN_DOOR_DOWN_RIGHT,
+ CMD_OPEN_DOOR,
+ CMD_CLOSE_DOOR,
+ CMD_REST,
+ CMD_GO_UPSTAIRS,
+ CMD_GO_DOWNSTAIRS, // 1000 + 30
+ CMD_TOGGLE_AUTOPICKUP,
+ CMD_PICKUP,
+ CMD_DROP,
+ CMD_BUTCHER,
+ CMD_INSPECT_FLOOR,
+ CMD_EXAMINE_OBJECT,
+ CMD_EVOKE,
+ CMD_WIELD_WEAPON,
+ CMD_WEAPON_SWAP,
+ CMD_THROW, // 1000 + 40
+ CMD_FIRE,
+ CMD_WEAR_ARMOUR,
+ CMD_REMOVE_ARMOUR,
+ CMD_WEAR_JEWELLERY,
+ CMD_REMOVE_JEWELLERY,
+ CMD_LIST_WEAPONS,
+ CMD_LIST_ARMOUR,
+ CMD_LIST_JEWELLERY,
+ CMD_ZAP_WAND,
+ CMD_CAST_SPELL, // 1000 + 50
+ CMD_MEMORISE_SPELL,
+ CMD_USE_ABILITY,
+ CMD_PRAY,
+ CMD_EAT,
+ CMD_QUAFF,
+ CMD_READ,
+ CMD_LOOK_AROUND,
+ CMD_SEARCH,
+ CMD_SHOUT,
+ CMD_DISARM_TRAP, // 1000 + 60
+ CMD_CHARACTER_DUMP,
+ CMD_DISPLAY_COMMANDS,
+ CMD_DISPLAY_INVENTORY,
+ CMD_DISPLAY_KNOWN_OBJECTS,
+ CMD_DISPLAY_MUTATIONS,
+ CMD_DISPLAY_SKILLS,
+ CMD_DISPLAY_MAP,
+ CMD_DISPLAY_OVERMAP,
+ CMD_DISPLAY_RELIGION,
+ CMD_DISPLAY_CHARACTER_STATUS, // 1000 + 70
+ CMD_EXPERIENCE_CHECK,
+ CMD_GET_VERSION,
+ CMD_ADJUST_INVENTORY,
+ 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_WIZARD,
+ CMD_DESTROY_ITEM,
+ CMD_OBSOLETE_INVOKE,
+
+ CMD_MARK_STASH,
+ CMD_FORGET_STASH,
+ CMD_SEARCH_STASHES,
+ CMD_EXPLORE,
+ CMD_INTERLEVEL_TRAVEL,
+ CMD_FIX_WAYPOINT,
+
+ CMD_CLEAR_MAP
+};
+
+enum confirm_level_type
+{
+ CONFIRM_NONE_EASY,
+ CONFIRM_SAFE_EASY,
+ CONFIRM_ALL_EASY
+};
+
+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
+ CE_CONTAMINATED, // 2
+ CE_POISONOUS, // 3
+ CE_HCL, // 4
+ CE_MUTAGEN_RANDOM, // 5
+ CE_MUTAGEN_GOOD, // 6 - may be worth implementing {dlb}
+ CE_MUTAGEN_BAD, // 7 - may be worth implementing {dlb}
+ CE_RANDOM, // 8 - not used, but may be worth implementing {dlb}
+ CE_ROTTEN = 50 // 50 - must remain at 50 for now {dlb}
+};
+
+enum corpse_type
+{
+ CORPSE_BODY, // 0
+ CORPSE_SKELETON
+};
+
+enum death_knight_type
+{
+ DK_NO_SELECTION,
+ DK_NECROMANCY,
+ DK_YREDELEMNUL,
+ DK_RANDOM
+};
+
+enum deck_type
+{
+ DECK_OF_WONDERS, // 0
+ DECK_OF_SUMMONING,
+ DECK_OF_TRICKS,
+ DECK_OF_POWER,
+ DECK_OF_PUNISHMENT
+};
+
+enum delay_type
+{
+ DELAY_NOT_DELAYED,
+ DELAY_EAT,
+ DELAY_ARMOUR_ON,
+ DELAY_ARMOUR_OFF,
+ DELAY_MEMORISE,
+ DELAY_BUTCHER,
+ DELAY_AUTOPICKUP,
+ DELAY_WEAPON_SWAP, // for easy_butcher
+ DELAY_PASSWALL,
+ DELAY_DROP_ITEM,
+ DELAY_ASCENDING_STAIRS,
+ DELAY_DESCENDING_STAIRS,
+ DELAY_INTERUPTABLE = 100, // simple interuptable delay
+ DELAY_UNINTERUPTABLE // simple uninteruptable delay
+};
+
+enum demon_beam_type
+{
+ DMNBM_HELLFIRE, // 0
+ DMNBM_SMITING,
+ DMNBM_BRAIN_FEED,
+ DMNBM_MUTATION
+};
+
+enum demon_class_type
+{
+ DEMON_LESSER, // 0: Class V
+ DEMON_COMMON, // 1: Class II-IV
+ DEMON_GREATER, // 2: Class I
+ DEMON_RANDOM // any of the above
+};
+
+enum description_level_type
+{
+ DESC_CAP_THE, // 0
+ DESC_NOCAP_THE, // 1
+ DESC_CAP_A, // 2
+ DESC_NOCAP_A, // 3
+ DESC_CAP_YOUR, // 4
+ DESC_NOCAP_YOUR, // 5
+ DESC_PLAIN, // 6
+ DESC_NOCAP_ITS, // 7
+ DESC_INVENTORY_EQUIP, // 8
+ DESC_INVENTORY // 8
+};
+
+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 (!!!)
+};
+
+// NOTE: The order of these is very important to their usage!
+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
+};
+
+// 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,
+ DNGN_STONE_WALL,
+ DNGN_CLOSED_DOOR,
+ DNGN_METAL_WALL,
+ DNGN_SECRET_DOOR, // 5
+ DNGN_GREEN_CRYSTAL_WALL,
+ DNGN_ORCISH_IDOL,
+ DNGN_WAX_WALL, // 8
+ DNGN_PERMAROCK_WALL, // 9 - for undiggable walls
+
+ DNGN_SILVER_STATUE = 21, // 21
+ DNGN_GRANITE_STATUE,
+ DNGN_ORANGE_CRYSTAL_STATUE, // 23
+ DNGN_STATUE_RESERVED_1,
+ DNGN_STATUE_RESERVED_2, // 25
+
+ DNGN_LAVA = 61, // 61
+ DNGN_DEEP_WATER, // 62
+ DNGN_SHALLOW_WATER = 65, // 65
+ DNGN_WATER_STUCK,
+
+ DNGN_FLOOR, // 67
+ DNGN_EXIT_HELL, // 68
+ DNGN_ENTER_HELL, // 69
+ DNGN_OPEN_DOOR, // 70
+ // DNGN_BRANCH_STAIRS, // 71
+ DNGN_TRAP_MECHANICAL = 75, // 75
+ DNGN_TRAP_MAGICAL,
+ DNGN_TRAP_III,
+ DNGN_UNDISCOVERED_TRAP, // 78
+
+ DNGN_ENTER_SHOP = 80, // 80
+ DNGN_ENTER_LABYRINTH,
+
+ DNGN_STONE_STAIRS_DOWN_I,
+ DNGN_STONE_STAIRS_DOWN_II,
+ DNGN_STONE_STAIRS_DOWN_III,
+ DNGN_ROCK_STAIRS_DOWN, // 85 - was this supposed to be a ladder? {dlb}
+
+ DNGN_STONE_STAIRS_UP_I,
+ DNGN_STONE_STAIRS_UP_II,
+ DNGN_STONE_STAIRS_UP_III,
+ DNGN_ROCK_STAIRS_UP, // 89 - was this supposed to be a ladder? {dlb}
+
+ DNGN_ENTER_DIS = 92, // 92
+ DNGN_ENTER_GEHENNA,
+ DNGN_ENTER_COCYTUS,
+ DNGN_ENTER_TARTARUS, // 95
+ DNGN_ENTER_ABYSS,
+ DNGN_EXIT_ABYSS,
+ DNGN_STONE_ARCH,
+ DNGN_ENTER_PANDEMONIUM,
+ DNGN_EXIT_PANDEMONIUM, // 100
+ DNGN_TRANSIT_PANDEMONIUM, // 101
+
+ DNGN_BUILDER_SPECIAL_WALL = 105, // 105; builder() only
+ DNGN_BUILDER_SPECIAL_FLOOR, // 106; builder() only
+
+ DNGN_ENTER_ORCISH_MINES = 110, // 110
+ DNGN_ENTER_HIVE,
+ DNGN_ENTER_LAIR,
+ DNGN_ENTER_SLIME_PITS,
+ DNGN_ENTER_VAULTS,
+ DNGN_ENTER_CRYPT, // 115
+ DNGN_ENTER_HALL_OF_BLADES,
+ DNGN_ENTER_ZOT,
+ DNGN_ENTER_TEMPLE,
+ DNGN_ENTER_SNAKE_PIT,
+ 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,
+ DNGN_RETURN_FROM_LAIR,
+ DNGN_RETURN_FROM_SLIME_PITS,
+ DNGN_RETURN_FROM_VAULTS,
+ DNGN_RETURN_FROM_CRYPT, // 135
+ DNGN_RETURN_FROM_HALL_OF_BLADES,
+ DNGN_RETURN_FROM_ZOT,
+ DNGN_RETURN_FROM_TEMPLE,
+ DNGN_RETURN_FROM_SNAKE_PIT,
+ 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,
+ DNGN_ALTAR_KIKUBAAQUDGHA,
+ DNGN_ALTAR_YREDELEMNUL,
+ DNGN_ALTAR_XOM,
+ DNGN_ALTAR_VEHUMET, // 185
+ DNGN_ALTAR_OKAWARU,
+ DNGN_ALTAR_MAKHLEB,
+ DNGN_ALTAR_SIF_MUNA,
+ DNGN_ALTAR_TROG,
+ DNGN_ALTAR_NEMELEX_XOBEH, // 190
+ DNGN_ALTAR_ELYVILON, // 191
+
+ DNGN_BLUE_FOUNTAIN = 200, // 200
+ DNGN_DRY_FOUNTAIN_I,
+ DNGN_SPARKLING_FOUNTAIN, // aka 'Magic Fountain' {dlb}
+ DNGN_DRY_FOUNTAIN_II,
+ DNGN_DRY_FOUNTAIN_III,
+ DNGN_DRY_FOUNTAIN_IV, // 205
+ DNGN_DRY_FOUNTAIN_V,
+ DNGN_DRY_FOUNTAIN_VI,
+ DNGN_DRY_FOUNTAIN_VII,
+ DNGN_DRY_FOUNTAIN_VIII,
+ 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,
+ DUR_REPEL_MISSILES,
+ DUR_PRAYER,
+ DUR_REGENERATION,
+ DUR_SWIFTNESS, // 5
+ DUR_INSULATION,
+ DUR_STONEMAIL,
+ DUR_CONTROLLED_FLIGHT,
+ DUR_TELEPORT,
+ DUR_CONTROL_TELEPORT, // 10
+ DUR_RESIST_POISON,
+ DUR_BREATH_WEAPON,
+ DUR_TRANSFORMATION,
+ DUR_DEATH_CHANNEL,
+ DUR_DEFLECT_MISSILES, // 15
+//jmf: new durations:
+ DUR_FORESCRY,
+ DUR_SEE_INVISIBLE,
+ DUR_WEAPON_BRAND, // general "branding" spell counter
+ DUR_SILENCE,
+ DUR_GLAMOUR, // 20
+ DUR_CONDENSATION_SHIELD = 23, // 23
+ DUR_STONESKIN,
+ DUR_REPEL_UNDEAD, // 25
+ DUR_STUN,
+ DUR_CUT, // 27
+ NUM_DURATIONS = 30 // must be at least 30
+};
+
+// various elemental colour schemes... used for abstracting random short lists
+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,
+ ENCH_HASTE, // 2
+ ENCH_FEAR = 4, // 4
+ ENCH_CONFUSION, // 5
+ ENCH_INVIS,
+ ENCH_YOUR_POISON_I,
+ ENCH_YOUR_POISON_II,
+ ENCH_YOUR_POISON_III,
+ ENCH_YOUR_POISON_IV, // 10
+ ENCH_YOUR_SHUGGOTH_I, //jmf: Shuggothim!
+ ENCH_YOUR_SHUGGOTH_II,
+ ENCH_YOUR_SHUGGOTH_III,
+ ENCH_YOUR_SHUGGOTH_IV,
+ ENCH_YOUR_ROT_I, // 15 //jmf: rotting effect for monsters
+ ENCH_YOUR_ROT_II,
+ ENCH_YOUR_ROT_III,
+ ENCH_YOUR_ROT_IV,
+ ENCH_SUMMON = 19, // 19
+ ENCH_ABJ_I, // 20
+ ENCH_ABJ_II,
+ ENCH_ABJ_III,
+ ENCH_ABJ_IV,
+ ENCH_ABJ_V,
+ ENCH_ABJ_VI, // 25
+ ENCH_BACKLIGHT_I, //jmf: backlight for Corona spell
+ ENCH_BACKLIGHT_II,
+ ENCH_BACKLIGHT_III,
+ ENCH_BACKLIGHT_IV,
+ ENCH_CHARM = 30, // 30
+ ENCH_YOUR_STICKY_FLAME_I,
+ ENCH_YOUR_STICKY_FLAME_II,
+ ENCH_YOUR_STICKY_FLAME_III,
+ ENCH_YOUR_STICKY_FLAME_IV, // 34
+ ENCH_GLOWING_SHAPESHIFTER = 38, // 38
+ ENCH_SHAPESHIFTER,
+ ENCH_TP_I, // 40
+ ENCH_TP_II,
+ ENCH_TP_III,
+ ENCH_TP_IV, // 43
+ ENCH_POISON_I = 57, // 57
+ ENCH_POISON_II,
+ ENCH_POISON_III,
+ ENCH_POISON_IV, // 60
+ ENCH_STICKY_FLAME_I,
+ ENCH_STICKY_FLAME_II,
+ ENCH_STICKY_FLAME_III,
+ ENCH_STICKY_FLAME_IV,
+ ENCH_FRIEND_ABJ_I, // no longer used
+ ENCH_FRIEND_ABJ_II, // no longer used
+ ENCH_FRIEND_ABJ_III, // no longer used
+ ENCH_FRIEND_ABJ_IV, // no longer used
+ ENCH_FRIEND_ABJ_V, // no longer used
+ ENCH_FRIEND_ABJ_VI, // no longer used
+ ENCH_CREATED_FRIENDLY, // no longer used
+ ENCH_SLEEP_WARY,
+ ENCH_SUBMERGED, // 73 (includes air elementals in air)
+ ENCH_SHORT_LIVED, // 74 for ball lightning
+ NUM_ENCHANTMENTS
+};
+
+enum enchant_retval
+{
+ ERV_FAIL,
+ ERV_NEW,
+ ERV_INCREASED
+};
+
+enum enchant_stat_type
+{
+ ENCHANT_TO_HIT,
+ ENCHANT_TO_DAM
+};
+
+enum equipment_type
+{
+ EQ_NONE = -1,
+
+ EQ_WEAPON, // 0
+ EQ_CLOAK,
+ EQ_HELMET,
+ EQ_GLOVES,
+ EQ_BOOTS,
+ EQ_SHIELD, // 5
+ EQ_BODY_ARMOUR,
+ EQ_LEFT_RING,
+ EQ_RIGHT_RING,
+ EQ_AMULET,
+ NUM_EQUIP,
+
+ // these aren't actual equipment slots, they're categories for functions
+ EQ_STAFF = 100, // weapon with base_type OBJ_STAVES
+ EQ_RINGS, // check both rings
+ EQ_RINGS_PLUS, // check both rings and sum plus
+ EQ_RINGS_PLUS2, // check both rings and sum plus2
+ EQ_ALL_ARMOUR // check all armour types
+};
+
+enum fire_type
+{
+ FIRE_NONE,
+ FIRE_LAUNCHER,
+ FIRE_DART,
+ FIRE_STONE,
+ FIRE_DAGGER,
+ FIRE_SPEAR,
+ FIRE_HAND_AXE,
+ FIRE_CLUB,
+ FIRE_ROCK,
+ NUM_FIRE_TYPES
+};
+
+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_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 food_type
+{
+ FOOD_MEAT_RATION, // 0
+ FOOD_BREAD_RATION,
+ FOOD_PEAR,
+ FOOD_APPLE,
+ FOOD_CHOKO,
+ FOOD_HONEYCOMB, // 5
+ FOOD_ROYAL_JELLY,
+ FOOD_SNOZZCUMBER,
+ FOOD_PIZZA,
+ FOOD_APRICOT,
+ FOOD_ORANGE, // 10
+ FOOD_BANANA,
+ FOOD_STRAWBERRY,
+ FOOD_RAMBUTAN,
+ FOOD_LEMON,
+ FOOD_GRAPE, // 15
+ FOOD_SULTANA,
+ FOOD_LYCHEE,
+ FOOD_BEEF_JERKY,
+ FOOD_CHEESE,
+ FOOD_SAUSAGE, // 20
+ FOOD_CHUNK,
+ NUM_FOODS
+};
+
+enum genus_type
+{
+ GENPC_DRACONIAN, // 0
+ GENPC_ELVEN, // 1
+ GENPC_DWARVEN // 2
+};
+
+enum gender_type
+{
+ GENDER_NEUTER,
+ GENDER_MALE,
+ GENDER_FEMALE
+};
+
+enum ghost_value_type
+{
+ GVAL_MAX_HP, // 0
+ GVAL_EV,
+ GVAL_AC,
+ GVAL_SEE_INVIS,
+ GVAL_RES_FIRE,
+ GVAL_RES_COLD, // 5
+ GVAL_RES_ELEC,
+ GVAL_DAMAGE,
+ GVAL_BRAND,
+ GVAL_SPECIES,
+ GVAL_BEST_SKILL, // 10
+ GVAL_SKILL_LEVEL,
+ GVAL_EXP_LEVEL,
+ GVAL_CLASS,
+ GVAL_SPELL_1, // 14
+ GVAL_SPELL_2,
+ GVAL_SPELL_3,
+ GVAL_SPELL_4,
+ GVAL_SPELL_5,
+ GVAL_SPELL_6, // 19
+ NUM_GHOST_VALUES, // should always be last value
+
+ // these values are for demonlords, which override the above:
+ GVAL_DEMONLORD_SPELLCASTER = 9,
+ GVAL_DEMONLORD_FLY, // 10
+ GVAL_DEMONLORD_UNUSED, // 11
+ GVAL_DEMONLORD_HIT_DICE, // 12
+ GVAL_DEMONLORD_CYCLE_COLOUR // 13
+};
+
+enum god_type
+{
+ GOD_NO_GOD, // 0 -- must be zero
+ GOD_ZIN,
+ GOD_SHINING_ONE,
+ GOD_KIKUBAAQUDGHA,
+ GOD_YREDELEMNUL,
+ GOD_XOM, // 5
+ GOD_VEHUMET,
+ GOD_OKAWARU,
+ GOD_MAKHLEB,
+ GOD_SIF_MUNA,
+ GOD_TROG, // 10
+ GOD_NEMELEX_XOBEH,
+ GOD_ELYVILON,
+ NUM_GODS, // always after last god
+
+ GOD_RANDOM = 100
+};
+
+enum hands_reqd_type
+{
+ HANDS_ONE,
+ HANDS_HALF,
+ HANDS_TWO,
+
+ HANDS_DOUBLE // not a level, marks double ended weapons (== half)
+};
+
+enum helmet_type
+{
+ THELM_HELMET = 0x0000,
+ THELM_HELM = 0x0001,
+ THELM_CAP = 0x0002,
+ THELM_WIZARD_HAT = 0x0003,
+ THELM_NUM_TYPES = 4,
+
+ 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,
+ THELM_DESC_CRESTED = 0x0300,
+ THELM_DESC_PLUMED = 0x0400,
+ THELM_DESC_SPIKED = 0x0500,
+ THELM_DESC_VISORED = 0x0600,
+ THELM_DESC_JEWELLED = 0x0700,
+
+ THELM_DESC_MASK = 0xff00
+};
+
+
+enum boot_type // used in pluses2
+{
+ TBOOT_BOOTS = 0,
+ TBOOT_NAGA_BARDING,
+ TBOOT_CENTAUR_BARDING,
+ NUM_BOOT_TYPES
+};
+
+
+enum hunger_state // you.hunger_state
+{
+ HS_RAVENOUS, // 0: not used within code, really
+ HS_STARVING,
+ HS_HUNGRY,
+ HS_SATIATED, // "not hungry" state
+ HS_FULL,
+ HS_ENGORGED // 5
+};
+
+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
+ ISFLAG_KNOW_PLUSES = 0x00000004, // to hit/to dam/to AC/charges
+ ISFLAG_KNOW_PROPERTIES = 0x00000008, // know special artefact properties
+ ISFLAG_IDENT_MASK = 0x0000000F, // mask of all id related flags
+
+ // these three masks are of the minimal flags set upon using equipment:
+ ISFLAG_EQ_WEAPON_MASK = 0x0000000B, // mask of flags for weapon equip
+ ISFLAG_EQ_ARMOUR_MASK = 0x0000000F, // mask of flags for armour equip
+ ISFLAG_EQ_JEWELLERY_MASK = 0x0000000F, // mask of flags for known jewellery
+
+ ISFLAG_CURSED = 0x00000100, // 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
+ ISFLAG_UNRANDART = 0x00002000, // is an unrandart
+ ISFLAG_ARTEFACT_MASK = 0x00003000, // randart or unrandart
+ 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
+ ISFLAG_EMBROIDERED_SHINY = 0x00040000, // armour: depends on sub-type
+ ISFLAG_COSMETIC_MASK = 0x00070000, // mask of cosmetic descriptions
+
+ ISFLAG_NO_RACE = 0x00000000, // used for clearing these flags
+ ISFLAG_ORCISH = 0x01000000, // low quality items
+ ISFLAG_DWARVEN = 0x02000000, // strong and robust items
+ ISFLAG_ELVEN = 0x04000000, // light and accurate items
+ ISFLAG_RACIAL_MASK = 0x07000000, // mask of racial equipment types
+
+ ISFLAG_DEBUG_MARK = 0x80000000 // used for testing item structure
+};
+
+enum item_description_type
+{
+ IDESC_WANDS,
+ IDESC_POTIONS,
+ IDESC_SCROLLS, // special field (like the others)
+ IDESC_RINGS,
+ IDESC_SCROLLS_II,
+ NUM_IDESC
+};
+
+enum item_make_species_type
+{
+ MAKE_ITEM_ELVEN = 1,
+ MAKE_ITEM_DWARVEN = 2,
+ MAKE_ITEM_ORCISH = 3,
+
+ MAKE_ITEM_NO_RACE = 100,
+ MAKE_ITEM_RANDOM_RACE = 250
+};
+
+enum item_origin_dump_selector
+{
+ IODS_PRICE = 0, // Extra info is provided based on price
+ IODS_ARTIFACTS = 1, // Extra information on artifacts
+ IODS_EGO_ARMOUR = 2,
+ IODS_EGO_WEAPON = 4,
+ IODS_JEWELLERY = 8,
+ IODS_RUNES = 16,
+ IODS_RODS = 32,
+ IODS_STAVES = 64,
+ IODS_BOOKS = 128,
+ IODS_EVERYTHING = 0xFF
+};
+
+enum item_type_id_type
+{
+ IDTYPE_WANDS = 0,
+ IDTYPE_SCROLLS,
+ IDTYPE_JEWELLERY,
+ IDTYPE_POTIONS,
+ NUM_IDTYPE
+};
+
+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_type
+{
+ RING_REGENERATION, // 0
+ RING_PROTECTION,
+ RING_PROTECTION_FROM_FIRE,
+ RING_POISON_RESISTANCE,
+ RING_PROTECTION_FROM_COLD,
+ RING_STRENGTH, // 5
+ RING_SLAYING,
+ RING_SEE_INVISIBLE,
+ RING_INVISIBILITY,
+ RING_HUNGER,
+ RING_TELEPORTATION, // 10
+ RING_EVASION,
+ RING_SUSTAIN_ABILITIES,
+ RING_SUSTENANCE,
+ RING_DEXTERITY,
+ RING_INTELLIGENCE, // 15
+ RING_WIZARDRY,
+ RING_MAGICAL_POWER,
+ RING_LEVITATION,
+ RING_LIFE_PROTECTION,
+ RING_PROTECTION_FROM_MAGIC, // 20
+ RING_FIRE,
+ RING_ICE,
+ RING_TELEPORT_CONTROL, // 23
+ AMU_RAGE = 35, // 35
+ AMU_RESIST_SLOW,
+ AMU_CLARITY,
+ AMU_WARDING,
+ AMU_RESIST_CORROSION,
+ AMU_THE_GOURMAND, // 40
+ AMU_CONSERVATION,
+ AMU_CONTROLLED_FLIGHT,
+ AMU_INACCURACY,
+ AMU_RESIST_MUTATION,
+ NUM_JEWELLERY
+};
+
+enum job_type
+{
+ JOB_FIGHTER, // 0
+ JOB_WIZARD,
+ JOB_PRIEST,
+ JOB_THIEF,
+ JOB_GLADIATOR,
+ JOB_NECROMANCER, // 5
+ JOB_PALADIN,
+ JOB_ASSASSIN,
+ JOB_BERSERKER,
+ JOB_HUNTER,
+ JOB_CONJURER, // 10
+ JOB_ENCHANTER,
+ JOB_FIRE_ELEMENTALIST,
+ JOB_ICE_ELEMENTALIST,
+ JOB_SUMMONER,
+ JOB_AIR_ELEMENTALIST, // 15
+ JOB_EARTH_ELEMENTALIST,
+ JOB_CRUSADER,
+ JOB_DEATH_KNIGHT,
+ JOB_VENOM_MAGE,
+ JOB_CHAOS_KNIGHT, // 20
+ JOB_TRANSMUTER,
+ JOB_HEALER, // 22
+ JOB_QUITTER, // 23 -- this is job 'x', don't use
+ JOB_REAVER, // 24
+ JOB_STALKER, // 25
+ JOB_MONK,
+ JOB_WARPER,
+ JOB_WANDERER, // 23
+ NUM_JOBS, // always after the last job
+
+ JOB_UNKNOWN = 100
+};
+
+enum kill_method_type
+{
+ KILLED_BY_MONSTER, // 0
+ KILLED_BY_POISON,
+ KILLED_BY_CLOUD,
+ KILLED_BY_BEAM, // 3
+ KILLED_BY_DEATHS_DOOR, // should be deprecated, but you never know {dlb}
+ KILLED_BY_LAVA, // 5
+ KILLED_BY_WATER,
+ KILLED_BY_STUPIDITY,
+ KILLED_BY_WEAKNESS,
+ KILLED_BY_CLUMSINESS,
+ KILLED_BY_TRAP, // 10
+ KILLED_BY_LEAVING,
+ KILLED_BY_WINNING,
+ KILLED_BY_QUITTING,
+ KILLED_BY_DRAINING,
+ KILLED_BY_STARVATION, // 15
+ KILLED_BY_FREEZING,
+ KILLED_BY_BURNING,
+ KILLED_BY_WILD_MAGIC,
+ KILLED_BY_XOM,
+ KILLED_BY_STATUE, // 20
+ KILLED_BY_ROTTING,
+ KILLED_BY_TARGETTING,
+ KILLED_BY_SPORE,
+ KILLED_BY_TSO_SMITING,
+ KILLED_BY_PETRIFICATION, // 25
+ KILLED_BY_SOMETHING = 27,
+ KILLED_BY_FALLING_DOWN_STAIRS,
+ KILLED_BY_ACID,
+ KILLED_BY_CURARE,
+ KILLED_BY_MELTING,
+ KILLED_BY_BLEEDING,
+
+ NUM_KILLBY
+};
+
+enum kill_category
+{
+ KC_YOU,
+ KC_FRIENDLY,
+ KC_OTHER,
+ KC_NCATEGORIES
+};
+
+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_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 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,
+ LEVEL_ABYSS,
+ LEVEL_PANDEMONIUM
+};
+
+enum load_mode_type
+{
+ LOAD_START_GAME,
+ LOAD_RESTART_GAME,
+ LOAD_ENTER_LEVEL
+};
+
+enum map_section_type // see maps.cc and dungeon.cc {dlb}
+{
+ MAP_NORTH = 1, // 1
+ MAP_NORTHWEST,
+ MAP_NORTHEAST,
+ MAP_SOUTHWEST,
+ MAP_SOUTHEAST, // 5
+ MAP_ENCOMPASS,
+ MAP_NORTH_DIS
+};
+
+// if you mess with this list, you'll need to make changes in initfile.cc
+enum msg_channel_type
+{
+ MSGCH_PLAIN, // regular text
+ MSGCH_PROMPT, // various prompts
+ MSGCH_GOD, // god/religion (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_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 msg_colour_type
+{
+ MSGCOL_BLACK = 0, // the order of these colours is important
+ MSGCOL_BLUE,
+ MSGCOL_GREEN,
+ MSGCOL_CYAN,
+ MSGCOL_RED,
+ MSGCOL_MAGENTA,
+ MSGCOL_BROWN,
+ MSGCOL_LIGHTGRAY,
+ MSGCOL_DARKGRAY,
+ MSGCOL_LIGHTBLUE,
+ MSGCOL_LIGHTGREEN,
+ MSGCOL_LIGHTCYAN,
+ MSGCOL_LIGHTMAGENTA,
+ MSGCOL_YELLOW,
+ MSGCOL_WHITE,
+ MSGCOL_DEFAULT, // use default colour
+ MSGCOL_ALTERNATE, // use secondary default colour scheme
+ MSGCOL_MUTED, // don't print messages
+ MSGCOL_PLAIN // same as plain channel
+};
+
+enum misc_item_type
+{
+ MISC_BOTTLED_EFREET, // 0
+ MISC_CRYSTAL_BALL_OF_SEEING,
+ MISC_AIR_ELEMENTAL_FAN,
+ MISC_LAMP_OF_FIRE,
+ MISC_STONE_OF_EARTH_ELEMENTALS,
+ MISC_LANTERN_OF_SHADOWS, // 5
+ MISC_HORN_OF_GERYON,
+ MISC_BOX_OF_BEASTS,
+ MISC_DECK_OF_WONDERS,
+ MISC_DECK_OF_SUMMONINGS,
+ MISC_CRYSTAL_BALL_OF_ENERGY, // 10
+ MISC_EMPTY_EBONY_CASKET,
+ MISC_CRYSTAL_BALL_OF_FIXATION,
+ MISC_DISC_OF_STORMS,
+ MISC_RUNE_OF_ZOT,
+ MISC_DECK_OF_TRICKS, // 15
+ MISC_DECK_OF_POWER,
+ MISC_PORTABLE_ALTAR_OF_NEMELEX,
+ NUM_MISCELLANY // mv: used for random generation
+};
+
+enum missile_type
+{
+ MI_STONE, // 0
+ MI_ARROW,
+ MI_BOLT,
+ MI_DART,
+ MI_NEEDLE,
+ MI_LARGE_ROCK, //jmf: it'd be nice to move MI_LARGE_ROCK to DEBRIS_ROCK
+ NUM_MISSILES,
+ 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_ON_FIRE = (1<<20), // XXX: Potentially ditchable
+ 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
+ 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_HELLFROST = (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 targ_mode_type
+{
+ TARG_ANY,
+ TARG_ENEMY,
+ TARG_FRIEND,
+ TARG_NUM_MODES
+};
+
+// note this order is very sensitive... look at mons_is_unique()
+enum monster_type // (int) menv[].type
+{
+ MONS_GIANT_ANT, // 0
+ MONS_GIANT_BAT,
+ MONS_CENTAUR,
+ MONS_RED_DEVIL,
+ MONS_ETTIN,
+ MONS_FUNGUS, // 5
+ MONS_GOBLIN,
+ MONS_HOUND,
+ MONS_IMP,
+ MONS_JACKAL,
+ MONS_KILLER_BEE, // 10
+ MONS_KILLER_BEE_LARVA,
+ MONS_MANTICORE,
+ MONS_NECROPHAGE,
+ MONS_ORC,
+ MONS_PHANTOM, // 15
+ MONS_QUASIT,
+ MONS_RAT,
+ MONS_SCORPION, // 18
+ //MONS_TUNNELING_WORM, // deprecated and now officially removed {dlb}
+ MONS_UGLY_THING = 20, // 20
+ MONS_FIRE_VORTEX,
+ MONS_WORM,
+ MONS_ABOMINATION_SMALL,
+ MONS_YELLOW_WASP,
+ MONS_ZOMBIE_SMALL, // 25
+ MONS_ANGEL,
+ MONS_GIANT_BEETLE,
+ MONS_CYCLOPS,
+ MONS_DRAGON,
+ MONS_TWO_HEADED_OGRE, // 30
+ MONS_FIEND,
+ MONS_GIANT_SPORE,
+ MONS_HOBGOBLIN,
+ MONS_ICE_BEAST,
+ MONS_JELLY, // 35
+ MONS_KOBOLD,
+ MONS_LICH,
+ MONS_MUMMY,
+ MONS_GUARDIAN_NAGA,
+ MONS_OGRE, // 40
+ MONS_PLANT,
+ MONS_QUEEN_BEE,
+ MONS_RAKSHASA,
+ MONS_SNAKE,
+ MONS_TROLL, // 45
+ MONS_UNSEEN_HORROR,
+ MONS_VAMPIRE,
+ MONS_WRAITH,
+ MONS_ABOMINATION_LARGE,
+ MONS_YAK, // 50
+ MONS_ZOMBIE_LARGE,
+ MONS_ORC_WARRIOR,
+ MONS_KOBOLD_DEMONOLOGIST,
+ MONS_ORC_WIZARD,
+ MONS_ORC_KNIGHT, // 55
+ //MONS_WORM_TAIL = 56, // deprecated and now officially removed {dlb}
+ MONS_WYVERN = 57, // 57
+ MONS_BIG_KOBOLD,
+ MONS_GIANT_EYEBALL,
+ MONS_WIGHT, // 60
+ MONS_OKLOB_PLANT,
+ MONS_WOLF_SPIDER,
+ MONS_SHADOW,
+ MONS_HUNGRY_GHOST,
+ MONS_EYE_OF_DRAINING, // 65
+ MONS_BUTTERFLY,
+ MONS_WANDERING_MUSHROOM,
+ MONS_EFREET,
+ MONS_BRAIN_WORM,
+ MONS_GIANT_ORANGE_BRAIN, // 70
+ MONS_BOULDER_BEETLE,
+ MONS_FLYING_SKULL,
+ MONS_HELL_HOUND,
+ MONS_MINOTAUR,
+ MONS_ICE_DRAGON, // 75
+ MONS_SLIME_CREATURE,
+ MONS_FREEZING_WRAITH,
+ MONS_RAKSHASA_FAKE,
+ MONS_GREAT_ORB_OF_EYES,
+ MONS_HELLION, // 80
+ MONS_ROTTING_DEVIL,
+ MONS_TORMENTOR,
+ MONS_REAPER,
+ MONS_SOUL_EATER,
+ MONS_HAIRY_DEVIL, // 85
+ MONS_ICE_DEVIL,
+ MONS_BLUE_DEVIL,
+ MONS_BEAST,
+ MONS_IRON_DEVIL, // 89
+ MONS_GLOWING_SHAPESHIFTER = 98, // 98
+ MONS_SHAPESHIFTER,
+ MONS_GIANT_MITE, // 100
+ MONS_STEAM_DRAGON,
+ MONS_VERY_UGLY_THING,
+ MONS_ORC_SORCERER,
+ MONS_HIPPOGRIFF,
+ MONS_GRIFFON, // 105
+ MONS_HYDRA,
+ MONS_SKELETON_SMALL,
+ MONS_SKELETON_LARGE,
+ MONS_HELL_KNIGHT,
+ MONS_NECROMANCER, // 110
+ MONS_WIZARD,
+ MONS_ORC_PRIEST,
+ MONS_ORC_HIGH_PRIEST,
+ MONS_HUMAN,
+ MONS_GNOLL, // 115
+ MONS_CLAY_GOLEM,
+ MONS_WOOD_GOLEM,
+ MONS_STONE_GOLEM,
+ MONS_IRON_GOLEM,
+ MONS_CRYSTAL_GOLEM, // 120
+ MONS_TOENAIL_GOLEM,
+ MONS_MOTTLED_DRAGON,
+ MONS_EARTH_ELEMENTAL,
+ MONS_FIRE_ELEMENTAL,
+ MONS_AIR_ELEMENTAL, // 125
+ MONS_ICE_FIEND,
+ MONS_SHADOW_FIEND,
+ MONS_BROWN_SNAKE,
+ MONS_GIANT_LIZARD,
+ MONS_SPECTRAL_WARRIOR, // 130
+ MONS_PULSATING_LUMP,
+ MONS_STORM_DRAGON,
+ MONS_YAKTAUR,
+ MONS_DEATH_YAK,
+ MONS_ROCK_TROLL, // 135
+ MONS_STONE_GIANT,
+ MONS_FLAYED_GHOST,
+ MONS_BUMBLEBEE,
+ MONS_REDBACK,
+ MONS_INSUBSTANTIAL_WISP, // 140
+ MONS_VAPOUR,
+ MONS_OGRE_MAGE,
+ MONS_SPINY_WORM,
+ MONS_DANCING_WEAPON,
+ MONS_TITAN, // 145
+ MONS_GOLDEN_DRAGON,
+ MONS_ELF,
+ MONS_LINDWURM,
+ MONS_ELEPHANT_SLUG,
+ MONS_WAR_DOG, // 150
+ MONS_GREY_RAT,
+ MONS_GREEN_RAT,
+ MONS_ORANGE_RAT,
+ MONS_BLACK_SNAKE,
+ MONS_SHEEP, // 155
+ MONS_GHOUL,
+ MONS_HOG,
+ MONS_GIANT_MOSQUITO,
+ MONS_GIANT_CENTIPEDE,
+ MONS_IRON_TROLL, // 160
+ MONS_NAGA,
+ MONS_FIRE_GIANT,
+ MONS_FROST_GIANT,
+ MONS_FIREDRAKE,
+ MONS_SHADOW_DRAGON, // 165
+ MONS_YELLOW_SNAKE,
+ MONS_GREY_SNAKE,
+ MONS_DEEP_TROLL,
+ MONS_GIANT_BLOWFLY,
+ MONS_RED_WASP, // 170
+ MONS_SWAMP_DRAGON,
+ MONS_SWAMP_DRAKE,
+ MONS_DEATH_DRAKE,
+ MONS_SOLDIER_ANT,
+ MONS_HILL_GIANT,
+ MONS_QUEEN_ANT, // 175
+ MONS_ANT_LARVA,
+ MONS_GIANT_FROG,
+ MONS_GIANT_BROWN_FROG,
+ MONS_SPINY_FROG,
+ MONS_BLINK_FROG, // 180
+ MONS_GIANT_COCKROACH,
+ MONS_SMALL_SNAKE, // 182
+ //jmf: new monsters
+ MONS_SHUGGOTH, //jmf: added for evil spells
+ MONS_WOLF, //jmf: added
+ MONS_WARG, //jmf: added for orc mines
+ MONS_BEAR, //jmf: added bears!
+ MONS_GRIZZLY_BEAR,
+ MONS_POLAR_BEAR,
+ MONS_BLACK_BEAR, // 189
+ MONS_SIMULACRUM_SMALL,
+ MONS_SIMULACRUM_LARGE,
+ //jmf: end new monsters
+ MONS_WHITE_IMP = 220, // 220
+ MONS_LEMURE,
+ MONS_UFETUBUS,
+ MONS_MANES,
+ MONS_MIDGE,
+ MONS_NEQOXEC, // 225
+ MONS_ORANGE_DEMON,
+ MONS_HELLWING,
+ MONS_SMOKE_DEMON,
+ MONS_YNOXINUL,
+ MONS_EXECUTIONER, // 230
+ MONS_GREEN_DEATH,
+ MONS_BLUE_DEATH,
+ MONS_BALRUG,
+ MONS_CACODEMON,
+ MONS_DEMONIC_CRAWLER, // 235
+ MONS_SUN_DEMON,
+ MONS_SHADOW_IMP,
+ MONS_SHADOW_DEMON,
+ MONS_LOROCYPROCA,
+ MONS_SHADOW_WRAITH, // 240
+ MONS_GIANT_AMOEBA,
+ MONS_GIANT_SLUG,
+ MONS_GIANT_SNAIL,
+ MONS_SPATIAL_VORTEX,
+ MONS_PIT_FIEND, // 245
+ MONS_BORING_BEETLE,
+ MONS_GARGOYLE,
+ MONS_METAL_GARGOYLE,
+ MONS_MOLTEN_GARGOYLE,
+ MONS_PROGRAM_BUG, // 250
+// BCR - begin first batch of uniques.
+ MONS_MNOLEG,
+ MONS_LOM_LOBON,
+ MONS_CEREBOV,
+ MONS_GLOORX_VLOQ, // 254
+ MONS_MOLLUSC_LORD, // 255 - deprecated, but still referenced in code {dlb}
+// BCR - End first batch of uniques.
+ MONS_NAGA_MAGE = 260, // 260
+ MONS_NAGA_WARRIOR,
+ MONS_ORC_WARLORD,
+ MONS_DEEP_ELF_SOLDIER,
+ MONS_DEEP_ELF_FIGHTER,
+ MONS_DEEP_ELF_KNIGHT, // 265
+ MONS_DEEP_ELF_MAGE,
+ MONS_DEEP_ELF_SUMMONER,
+ MONS_DEEP_ELF_CONJURER,
+ MONS_DEEP_ELF_PRIEST,
+ MONS_DEEP_ELF_HIGH_PRIEST, // 270
+ MONS_DEEP_ELF_DEMONOLOGIST,
+ MONS_DEEP_ELF_ANNIHILATOR,
+ MONS_DEEP_ELF_SORCERER,
+ MONS_DEEP_ELF_DEATH_MAGE,
+ MONS_BROWN_OOZE, // 275
+ MONS_AZURE_JELLY,
+ MONS_DEATH_OOZE,
+ MONS_ACID_BLOB,
+ MONS_ROYAL_JELLY,
+// BCR - begin second batch of uniques.
+ MONS_TERENCE, // 280
+ MONS_JESSICA,
+ MONS_IJYB,
+ MONS_SIGMUND,
+ MONS_BLORK_THE_ORC,
+ MONS_EDMUND, // 285
+ MONS_PSYCHE,
+ MONS_EROLCHA,
+ MONS_DONALD,
+ MONS_URUG,
+ MONS_MICHAEL, // 290
+ MONS_JOSEPH,
+ MONS_SNORG, // was Anita - Snorg is correct 16jan2000 {dlb}
+ MONS_ERICA,
+ MONS_JOSEPHINE,
+ MONS_HAROLD, // 295
+ MONS_NORBERT,
+ MONS_JOZEF,
+ MONS_AGNES,
+ MONS_MAUD,
+ MONS_LOUISE, // 300
+ MONS_FRANCIS,
+ MONS_FRANCES,
+ MONS_RUPERT,
+ MONS_WAYNE,
+ MONS_DUANE, // 305
+ MONS_XTAHUA,
+ MONS_NORRIS,
+ MONS_ADOLF,
+ MONS_MARGERY,
+ 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,
+ MONS_ASMODEUS,
+ MONS_ANTAEUS,
+ MONS_ERESHKIGAL, // 344
+
+ MONS_ANCIENT_LICH = 356, // 356
+ MONS_OOZE, // 357
+
+ MONS_VAULT_GUARD = 360, // 360
+ MONS_CURSE_SKULL,
+ MONS_VAMPIRE_KNIGHT,
+ MONS_VAMPIRE_MAGE,
+ MONS_SHINING_EYE,
+ MONS_ORB_GUARDIAN, // 365
+ MONS_DAEVA,
+ MONS_SPECTRAL_THING,
+ MONS_GREATER_NAGA,
+ MONS_SKELETAL_DRAGON,
+ MONS_TENTACLED_MONSTROSITY, // 370
+ MONS_SPHINX,
+ MONS_ROTTING_HULK,
+ MONS_GUARDIAN_MUMMY,
+ MONS_GREATER_MUMMY,
+ MONS_MUMMY_PRIEST, // 375
+ MONS_CENTAUR_WARRIOR,
+ MONS_YAKTAUR_CAPTAIN,
+ MONS_KILLER_KLOWN,
+ MONS_ELECTRIC_GOLEM, // replacing the guardian robot -- bwr
+ MONS_BALL_LIGHTNING, // replacing the dorgi -- bwr
+ MONS_ORB_OF_FIRE, // Swords renamed to fit -- bwr
+ MONS_QUOKKA, // Quokka are a type of wallaby, returned -- bwr 382
+
+
+ MONS_EYE_OF_DEVASTATION = 385, // 385
+ MONS_MOTH_OF_WRATH,
+ MONS_DEATH_COB,
+ MONS_CURSE_TOE,
+ MONS_GOLD_MIMIC,
+ MONS_WEAPON_MIMIC, // 390
+ MONS_ARMOUR_MIMIC,
+ MONS_SCROLL_MIMIC,
+ MONS_POTION_MIMIC,
+ MONS_HELL_HOG,
+ MONS_SERPENT_OF_HELL, // 395
+ MONS_BOGGART,
+ MONS_QUICKSILVER_DRAGON,
+ MONS_IRON_DRAGON,
+ MONS_SKELETAL_WARRIOR, // 399
+ MONS_PLAYER_GHOST, // 400
+ MONS_PANDEMONIUM_DEMON, // 401
+
+ MONS_GIANT_NEWT, // 402
+ MONS_GIANT_GECKO, // 403
+ MONS_GIANT_IGUANA, // 404
+ MONS_GILA_MONSTER, // 405
+ MONS_KOMODO_DRAGON, // 406
+
+ // Lava monsters:
+ MONS_LAVA_WORM = 420, // 420
+ MONS_LAVA_FISH,
+ MONS_LAVA_SNAKE,
+ MONS_SALAMANDER, // 423 mv: was another lava thing
+
+ // Water monsters:
+ MONS_BIG_FISH = 430, // 430
+ MONS_GIANT_GOLDFISH,
+ MONS_ELECTRICAL_EEL,
+ MONS_JELLYFISH,
+ MONS_WATER_ELEMENTAL,
+ MONS_SWAMP_WORM, // 435
+
+ 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 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_GUARD // creation only - monster is guard
+};
+
+enum mon_attitude_type
+{
+ ATT_HOSTILE, // 0, default in most cases
+ ATT_FRIENDLY, // created friendly (or tamed?)
+ ATT_NEUTRAL
+};
+
+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
+};
+
+enum mon_flight_type
+{
+ FLY_NOT,
+ FLY_POWERED, // wings, etc... paralysis == fall
+ FLY_LEVITATION // doesn't require physical effort
+};
+
+// Note: These are currently stored in chars!!!
+// Need to fix struct monsters and the savefile if you want more.
+enum monster_flag_type
+{
+ MF_CREATED_FRIENDLY = 0x01, // no benefit from killing
+ MF_GOD_GIFT = 0x02, // player not penalized by its death
+ MF_BATTY = 0x04, // flutters like a bat
+ 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
+};
+
+enum mon_dam_level_type
+{
+ MDAM_OKAY,
+ MDAM_LIGHTLY_DAMAGED,
+ MDAM_MODERATELY_DAMAGED,
+ MDAM_HEAVILY_DAMAGED,
+ MDAM_HORRIBLY_DAMAGED,
+ MDAM_ALMOST_DEAD,
+ MDAM_DEAD
+};
+
+enum mon_desc_type // things that cross categorical lines {dlb}
+{
+ MDSC_LEAVES_HIDE, // 0
+ MDSC_REGENERATES,
+ MDSC_NOMSG_WOUNDS
+};
+
+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
+ MH_UNDEAD, // 2 - was 1
+ MH_DEMONIC, // 3 - was 2
+ MH_NONLIVING, // golems and other constructs
+ MH_PLANT // plants
+};
+
+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}
+ MSLOT_ARMOUR,
+ MSLOT_MISCELLANY, //mv: used for misc. obj. (7 Aug 2001)
+ MSLOT_POTION, // mv: now used only for potions (7 Aug 2001)
+ MSLOT_WAND, //
+ MSLOT_SCROLL,
+ MSLOT_GOLD, //mv: used for money :) (7 Aug 2001)
+ NUM_MONSTER_SLOTS = 8 // value must remain 8 for savefile compatibility {dlb}
+};
+
+// order of these is important:
+enum mon_itemuse_type
+{
+ MONUSE_NOTHING,
+ MONUSE_EATS_ITEMS,
+ MONUSE_OPEN_DOORS,
+ MONUSE_STARTING_EQUIPMENT,
+ MONUSE_WEAPONS_ARMOUR,
+ MONUSE_MAGIC_ITEMS
+};
+
+// XXX: someday merge these into SPELL_
+enum mon_spell_type
+{
+ MS_MMISSILE, // 0
+ MS_FLAME,
+ MS_FROST,
+ MS_PARALYSIS,
+ MS_SLOW,
+ MS_HASTE, // 5
+ MS_CONFUSE, // 6 - do not deprecate!!! 13jan2000 {dlb}
+ MS_VENOM_BOLT,
+ MS_FIRE_BOLT,
+ MS_COLD_BOLT,
+ MS_LIGHTNING_BOLT, // 10
+ MS_INVIS,
+ MS_FIREBALL,
+ MS_HEAL,
+ MS_TELEPORT,
+ MS_TELEPORT_OTHER, // 15
+ MS_BLINK,
+ MS_CRYSTAL_SPEAR,
+ MS_DIG,
+ MS_NEGATIVE_BOLT,
+ MS_HELLFIRE_BURST, // 20
+ MS_VAMPIRE_SUMMON,
+ MS_ORB_ENERGY,
+ MS_BRAIN_FEED,
+ MS_LEVEL_SUMMON,
+ MS_FAKE_RAKSHASA_SUMMON, // 25
+ MS_STEAM_BALL,
+ MS_SUMMON_DEMON,
+ MS_ANIMATE_DEAD,
+ MS_PAIN,
+ MS_SMITE, // 30
+ MS_STICKY_FLAME,
+ MS_POISON_BLAST,
+ MS_SUMMON_DEMON_LESSER,
+ MS_SUMMON_UFETUBUS,
+ MS_PURPLE_BLAST, // 35
+ MS_SUMMON_BEAST, // MS_GERYON was not descriptive - renamed 13jan2000 {dlb}
+ MS_ENERGY_BOLT,
+ MS_STING,
+ MS_IRON_BOLT,
+ MS_STONE_ARROW, // 40
+ MS_POISON_SPLASH,
+ MS_SUMMON_UNDEAD,
+ MS_MUTATION, // 43
+ MS_CANTRIP,
+ MS_DISINTEGRATE, // 45
+ MS_MARSH_GAS,
+ MS_QUICKSILVER_BOLT,
+ MS_TORMENT,
+ MS_HELLFIRE,
+ 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
+ // 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 mon_spellbook_type
+{
+ MST_ORC_WIZARD_I = 0,
+ MST_ORC_WIZARD_II,
+ MST_ORC_WIZARD_III,
+ MST_GUARDIAN_NAGA = 10,
+ MST_LICH_I = 20,
+ MST_LICH_II,
+ MST_LICH_III,
+ MST_LICH_IV,
+ MST_BURNING_DEVIL = 30,
+ MST_VAMPIRE = 40,
+ MST_VAMPIRE_KNIGHT,
+ MST_VAMPIRE_MAGE,
+ MST_EFREET = 50,
+ MST_KILLER_KLOWN,
+ MST_BRAIN_WORM,
+ MST_GIANT_ORANGE_BRAIN,
+ MST_RAKSHASA,
+ MST_GREAT_ORB_OF_EYES, // 55
+ MST_ORC_SORCERER,
+ MST_STEAM_DRAGON,
+ MST_HELL_KNIGHT_I,
+ MST_HELL_KNIGHT_II,
+ MST_NECROMANCER_I, // 60
+ MST_NECROMANCER_II,
+ MST_WIZARD_I,
+ MST_WIZARD_II,
+ MST_WIZARD_III,
+ MST_WIZARD_IV, // 65
+ MST_WIZARD_V,
+ MST_ORC_PRIEST,
+ MST_ORC_HIGH_PRIEST,
+ MST_MOTTLED_DRAGON,
+ MST_ICE_FIEND, // 70
+ MST_SHADOW_FIEND,
+ MST_TORMENTOR,
+ MST_STORM_DRAGON,
+ MST_WHITE_IMP,
+ MST_YNOXINUL, // 75
+ MST_NEQOXEC,
+ MST_HELLWING,
+ MST_SMOKE_DEMON,
+ MST_CACODEMON,
+ MST_GREEN_DEATH, // 80
+ MST_BALRUG,
+ MST_BLUE_DEATH,
+ MST_GERYON,
+ MST_DISPATER,
+ MST_ASMODEUS, // 85
+ MST_ERESHKIGAL,
+ MST_ANTAEUS, // 87
+ MST_MNOLEG = 90,
+ MST_LOM_LOBON,
+ MST_CEREBOV,
+ MST_GLOORX_VLOQ,
+ MST_TITAN,
+ MST_GOLDEN_DRAGON, // 95
+ MST_DEEP_ELF_SUMMONER,
+ MST_DEEP_ELF_CONJURER_I,
+ MST_DEEP_ELF_CONJURER_II,
+ MST_DEEP_ELF_PRIEST,
+ MST_DEEP_ELF_HIGH_PRIEST, // 100
+ MST_DEEP_ELF_DEMONOLOGIST,
+ MST_DEEP_ELF_ANNIHILATOR,
+ MST_DEEP_ELF_SORCERER,
+ MST_DEEP_ELF_DEATH_MAGE,
+ MST_KOBOLD_DEMONOLOGIST, // 105
+ MST_NAGA,
+ MST_NAGA_MAGE,
+ MST_CURSE_SKULL,
+ MST_SHINING_EYE,
+ MST_FROST_GIANT, // 110
+ MST_ANGEL,
+ MST_DAEVA,
+ MST_SHADOW_DRAGON,
+ MST_SPHINX,
+ MST_MUMMY, // 115
+ MST_ELECTRIC_GOLEM,
+ MST_ORB_OF_FIRE,
+ MST_SHADOW_IMP,
+ MST_GHOST,
+ MST_HELL_HOG, // 120
+ MST_SWAMP_DRAGON,
+ MST_SWAMP_DRAKE,
+ MST_SERPENT_OF_HELL,
+ MST_BOGGART,
+ MST_EYE_OF_DEVASTATION, // 125
+ MST_QUICKSILVER_DRAGON,
+ 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,
+ NUM_MSTYPES,
+ MST_NO_SPELLS = 250
+};
+
+enum mutation_type
+{
+ MUT_TOUGH_SKIN, // 0
+ MUT_STRONG,
+ MUT_CLEVER,
+ MUT_AGILE,
+ MUT_GREEN_SCALES,
+ MUT_BLACK_SCALES, // 5
+ MUT_GREY_SCALES,
+ MUT_BONEY_PLATES,
+ MUT_REPULSION_FIELD,
+ MUT_POISON_RESISTANCE,
+ MUT_CARNIVOROUS, // 10
+ MUT_HERBIVOROUS,
+ MUT_HEAT_RESISTANCE,
+ MUT_COLD_RESISTANCE,
+ MUT_SHOCK_RESISTANCE,
+ MUT_REGENERATION, // 15
+ MUT_FAST_METABOLISM,
+ MUT_SLOW_METABOLISM,
+ MUT_WEAK,
+ MUT_DOPEY,
+ MUT_CLUMSY, // 20
+ MUT_TELEPORT_CONTROL,
+ MUT_TELEPORT,
+ MUT_MAGIC_RESISTANCE,
+ MUT_FAST,
+ MUT_ACUTE_VISION, // 25
+ MUT_DEFORMED,
+ MUT_TELEPORT_AT_WILL,
+ MUT_SPIT_POISON,
+ MUT_MAPPING,
+ MUT_BREATHE_FLAMES, // 30
+ MUT_BLINK,
+ MUT_HORNS,
+ MUT_STRONG_STIFF,
+ MUT_FLEXIBLE_WEAK,
+ MUT_LOST, // 35
+ MUT_CLARITY,
+ MUT_BERSERK,
+ MUT_DETERIORATION,
+ MUT_BLURRY_VISION,
+ MUT_MUTATION_RESISTANCE, // 40
+ MUT_FRAIL,
+ MUT_ROBUST,
+ MUT_TORMENT_RESISTANCE,
+ MUT_NEGATIVE_ENERGY_RESISTANCE,
+ MUT_SUMMON_MINOR_DEMONS, // 45
+ MUT_SUMMON_DEMONS,
+ MUT_HURL_HELLFIRE,
+ MUT_CALL_TORMENT,
+ MUT_RAISE_DEAD,
+ MUT_CONTROL_DEMONS, // 50
+ MUT_PANDEMONIUM,
+ MUT_DEATH_STRENGTH,
+ MUT_CHANNEL_HELL,
+ MUT_DRAIN_LIFE,
+ MUT_THROW_FLAMES, // 55
+ MUT_THROW_FROST,
+ MUT_SMITE, // 57
+ MUT_CLAWS, //jmf: added
+ MUT_HOOVES, //jmf: etc.
+ MUT_BREATHE_POISON, // 60
+ MUT_STINGER,
+ MUT_BIG_WINGS,
+ MUT_BLUE_MARKS, // 63 - decorative, as in "mark of the devil"
+ MUT_GREEN_MARKS, // 64
+ MUT_RED_SCALES = 70, // 70
+ MUT_NACREOUS_SCALES,
+ MUT_GREY2_SCALES,
+ MUT_METALLIC_SCALES,
+ MUT_BLACK2_SCALES,
+ MUT_WHITE_SCALES, // 75
+ MUT_YELLOW_SCALES,
+ MUT_BROWN_SCALES,
+ MUT_BLUE_SCALES,
+ MUT_PURPLE_SCALES,
+ MUT_SPECKLED_SCALES, // 80
+ MUT_ORANGE_SCALES,
+ MUT_INDIGO_SCALES,
+ MUT_RED2_SCALES,
+ MUT_IRIDESCENT_SCALES,
+ MUT_PATTERNED_SCALES, // 85
+ NUM_MUTATIONS
+};
+
+enum object_class_type // (unsigned char) mitm[].base_type
+{
+ OBJ_WEAPONS, // 0
+ OBJ_MISSILES,
+ OBJ_ARMOUR,
+ OBJ_WANDS,
+ OBJ_FOOD, // 4
+ OBJ_UNKNOWN_I = 5, // (use unknown) labeled as books in invent.cc {dlb}
+ OBJ_SCROLLS = 6, // 6
+ OBJ_JEWELLERY,
+ OBJ_POTIONS, // 8
+ OBJ_UNKNOWN_II = 9, // (use unknown, stackable) labeled as gems in invent.cc {dlb}
+ OBJ_BOOKS = 10, // 10
+ OBJ_STAVES,
+ OBJ_ORBS,
+ OBJ_MISCELLANY,
+ OBJ_CORPSES,
+ OBJ_GOLD, // important role as upper limit to chardump::dump_inventory() {dlb}
+ OBJ_GEMSTONES, // found in itemname.cc, labeled as miscellaneous in invent.cc {dlb}
+ NUM_OBJECT_CLASSES,
+ OBJ_UNASSIGNED = 100, // must remain set to 100 {dlb}
+ OBJ_RANDOM = 255 // must remain set to 255 {dlb} - also used
+ // for blanket random sub_type .. see dungeon::items()
+};
+
+enum object_selector
+{
+ OSEL_ANY = -1,
+ OSEL_WIELD = -2
+};
+
+enum orb_type
+{
+ ORB_ZOT // 0
+};
+
+enum potion_type
+{
+ POT_HEALING, // 0
+ POT_HEAL_WOUNDS,
+ POT_SPEED,
+ POT_MIGHT,
+ POT_GAIN_STRENGTH,
+ POT_GAIN_DEXTERITY, // 5
+ POT_GAIN_INTELLIGENCE,
+ POT_LEVITATION,
+ POT_POISON,
+ POT_SLOWING,
+ POT_PARALYSIS, // 10
+ POT_CONFUSION,
+ POT_INVISIBILITY,
+ POT_PORRIDGE,
+ POT_DEGENERATION,
+ POT_DECAY, // 15
+ POT_WATER,
+ POT_EXPERIENCE,
+ POT_MAGIC,
+ POT_RESTORE_ABILITIES,
+ POT_STRONG_POISON, // 20
+ POT_BERSERK_RAGE,
+ POT_CURE_MUTATION,
+ POT_MUTATION,
+ NUM_POTIONS
+};
+
+enum pronoun_type
+{
+ PRONOUN_CAP, // 0
+ PRONOUN_NOCAP, // 1
+ PRONOUN_CAP_POSSESSIVE, // 2
+ PRONOUN_NOCAP_POSSESSIVE, // 3
+ PRONOUN_REFLEXIVE // 4 (reflexive is always lowercase)
+};
+
+enum proximity_type // proximity to player to create monster
+{
+ PROX_ANYWHERE,
+ PROX_CLOSE_TO_PLAYER,
+ PROX_AWAY_FROM_PLAYER,
+ PROX_NEAR_STAIRS
+};
+
+enum randart_prop_type
+{
+ RAP_BRAND, // 0
+ RAP_AC,
+ RAP_EVASION,
+ RAP_STRENGTH,
+ RAP_INTELLIGENCE,
+ RAP_DEXTERITY, // 5
+ RAP_FIRE,
+ RAP_COLD,
+ RAP_ELECTRICITY,
+ RAP_POISON,
+ RAP_NEGATIVE_ENERGY, // 10
+ RAP_MAGIC,
+ RAP_EYESIGHT,
+ RAP_INVISIBLE,
+ RAP_LEVITATE,
+ RAP_BLINK, // 15
+ RAP_CAN_TELEPORT,
+ RAP_BERSERK,
+ RAP_MAPPING,
+ RAP_NOISES,
+ RAP_PREVENT_SPELLCASTING, // 20
+ RAP_CAUSE_TELEPORTATION,
+ RAP_PREVENT_TELEPORTATION,
+ RAP_ANGRY,
+ RAP_METABOLISM,
+ RAP_MUTAGENIC, // 25
+ RAP_ACCURACY,
+ RAP_DAMAGE,
+ RAP_CURSED,
+ RAP_STEALTH,
+ RAP_NUM_PROPERTIES
+};
+
+enum read_book_action_type
+{
+ RBOOK_USE_STAFF,
+ RBOOK_MEMORISE,
+ RBOOK_READ_SPELL
+};
+
+enum run_check_type
+{
+ RCHECK_LEFT,
+ RCHECK_FRONT,
+ RCHECK_RIGHT
+};
+
+enum run_dir_type
+{
+ RDIR_UP = 0,
+ RDIR_UP_RIGHT,
+ RDIR_RIGHT,
+ RDIR_DOWN_RIGHT,
+ RDIR_DOWN,
+ RDIR_DOWN_LEFT,
+ RDIR_LEFT,
+ RDIR_UP_LEFT,
+ RDIR_REST
+};
+
+enum rune_type
+{
+ // Note: that runes DIS-SWAMP have the same numberic value as the branch
+ RUNE_DIS = 1,
+ RUNE_GEHENNA,
+ RUNE_COCYTUS = 4,
+ RUNE_TARTARUS,
+ RUNE_SLIME_PITS = 13,
+ RUNE_VAULTS,
+ RUNE_SNAKE_PIT = 19,
+ RUNE_ELVEN_HALLS, // unused
+ RUNE_TOMB,
+ RUNE_SWAMP,
+
+ // Runes 50 and 51 are for Pandemonium (general demon) and the Abyss
+ RUNE_DEMONIC = 50,
+ RUNE_ABYSSAL,
+
+ // Runes 60-63 correspond to the Pandemonium demonlords,
+ // and are equal to the corresponding vault.
+ RUNE_MNOLEG = 60,
+ RUNE_LOM_LOBON,
+ RUNE_CEREBOV,
+ RUNE_GLOORX_VLOQ,
+ NUM_RUNE_TYPES, // should always be last
+ RUNE_NONE
+};
+
+enum score_format_type
+{
+ SCORE_TERSE, // one line
+ SCORE_REGULAR, // two lines (name, cause, blank)
+ SCORE_VERBOSE // everything (dates, times, god, etc)
+};
+
+enum scroll_type
+{
+ SCR_IDENTIFY, // 0
+ SCR_TELEPORTATION,
+ SCR_FEAR,
+ SCR_NOISE,
+ SCR_REMOVE_CURSE,
+ SCR_DETECT_CURSE, // 5
+ SCR_SUMMONING,
+ SCR_ENCHANT_WEAPON_I,
+ SCR_ENCHANT_ARMOUR,
+ SCR_TORMENT,
+ SCR_RANDOM_USELESSNESS, // 10
+ SCR_CURSE_WEAPON,
+ SCR_CURSE_ARMOUR,
+ SCR_IMMOLATION,
+ SCR_BLINKING,
+ SCR_PAPER, // 15
+ SCR_MAGIC_MAPPING,
+ SCR_FORGETFULNESS,
+ SCR_ACQUIREMENT,
+ SCR_ENCHANT_WEAPON_II,
+ SCR_VORPALISE_WEAPON, // 20
+ SCR_RECHARGING,
+ SCR_ENCHANT_WEAPON_III,
+ NUM_SCROLLS
+};
+
+enum shop_type // (unsigned char) env.sh_type[], item_in_shop(), in_a_shop()
+{
+ SHOP_WEAPON, // 0
+ SHOP_ARMOUR,
+ SHOP_WEAPON_ANTIQUE,
+ SHOP_ARMOUR_ANTIQUE,
+ SHOP_GENERAL_ANTIQUE,
+ SHOP_JEWELLERY, // 5
+ SHOP_WAND,
+ SHOP_BOOK,
+ SHOP_FOOD,
+ SHOP_DISTILLERY,
+ SHOP_SCROLL, // 10
+ SHOP_GENERAL,
+ NUM_SHOPS, // must remain last 'regular' member {dlb}
+ SHOP_UNASSIGNED = 100, // keep set at 100 for now {dlb}
+ SHOP_RANDOM = 255 // keep set at 255 for now {dlb}
+};
+
+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
+};
+
+enum skill_type
+{
+ SK_FIGHTING, // 0
+ SK_SHORT_BLADES,
+ SK_LONG_SWORDS,
+ SK_UNUSED_1, // SK_GREAT_SWORDS - now unused
+ SK_AXES,
+ SK_MACES_FLAILS, // 5
+ SK_POLEARMS,
+ SK_STAVES,
+ SK_SLINGS,
+ SK_BOWS,
+ SK_CROSSBOWS, // 10
+ SK_DARTS,
+ SK_RANGED_COMBAT,
+ SK_ARMOUR,
+ SK_DODGING,
+ SK_STEALTH, // 15
+ SK_STABBING,
+ SK_SHIELDS,
+ SK_TRAPS_DOORS,
+ SK_UNARMED_COMBAT, // 19
+ SK_SPELLCASTING = 25, // 25
+ SK_CONJURATIONS,
+ SK_ENCHANTMENTS,
+ SK_SUMMONINGS,
+ SK_NECROMANCY,
+ SK_TRANSLOCATIONS, // 30
+ SK_TRANSMIGRATION,
+ SK_DIVINATIONS,
+ SK_FIRE_MAGIC,
+ SK_ICE_MAGIC,
+ SK_AIR_MAGIC, // 35
+ SK_EARTH_MAGIC,
+ SK_POISON_MAGIC,
+ SK_INVOCATIONS,
+ SK_EVOCATIONS,
+ 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_armour_type
+{
+ SPARM_NORMAL, // 0
+ SPARM_RUNNING,
+ SPARM_FIRE_RESISTANCE,
+ SPARM_COLD_RESISTANCE,
+ SPARM_POISON_RESISTANCE,
+ SPARM_SEE_INVISIBLE, // 5
+ SPARM_DARKNESS,
+ SPARM_STRENGTH,
+ SPARM_DEXTERITY,
+ SPARM_INTELLIGENCE,
+ SPARM_PONDEROUSNESS, // 10
+ SPARM_LEVITATION,
+ SPARM_MAGIC_RESISTANCE,
+ SPARM_PROTECTION,
+ SPARM_STEALTH,
+ SPARM_RESISTANCE, // 15
+ SPARM_POSITIVE_ENERGY,
+ SPARM_ARCHMAGI,
+ SPARM_PRESERVATION, // 18
+ SPARM_RANDART_I = 25, // must remain at 25 for now - how high do they go? {dlb}
+ SPARM_RANDART_II = 26, // 26
+ SPARM_RANDART_III = 27, // 27
+ SPARM_RANDART_IV = 28, // 28
+ SPARM_RANDART_V = 29 // 29 - highest value found thus far {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_CURARE // 5
+};
+
+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_ring_type // jewellery mitm[].special values
+{
+ SPRING_RANDART = 200,
+ SPRING_UNRANDART = 201
+};
+
+// 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,
+ SPWPN_FREEZING,
+ SPWPN_HOLY_WRATH,
+ SPWPN_ELECTROCUTION,
+ SPWPN_ORC_SLAYING, // 5
+ SPWPN_VENOM,
+ SPWPN_PROTECTION,
+ SPWPN_DRAINING,
+ SPWPN_SPEED,
+ SPWPN_VORPAL, // 10
+ SPWPN_FLAME,
+ SPWPN_FROST,
+ SPWPN_VAMPIRICISM,
+ SPWPN_DISRUPTION,
+ SPWPN_PAIN, // 15
+ SPWPN_DISTORTION,
+ SPWPN_REACHING, // 17
+ SPWPN_CONFUSE,
+ SPWPN_RANDART_I = 25, // 25
+ SPWPN_RANDART_II,
+ SPWPN_RANDART_III,
+ SPWPN_RANDART_IV,
+ SPWPN_RANDART_V,
+ NUM_SPECIAL_WEAPONS,
+ SPWPN_DUMMY_CRUSHING, // ONLY TEMPORARY USAGE -- converts to VORPAL
+
+ // everything above this point is a special artefact wield:
+ SPWPN_SINGING_SWORD = 181, // 181
+ SPWPN_WRATH_OF_TROG,
+ SPWPN_SCYTHE_OF_CURSES,
+ SPWPN_MACE_OF_VARIABILITY,
+ SPWPN_GLAIVE_OF_PRUNE, // 185
+ SPWPN_SCEPTRE_OF_TORMENT,
+ SPWPN_SWORD_OF_ZONGULDROK,
+
+ // these three are not generated randomly {dlb}
+ SPWPN_SWORD_OF_CEREBOV,
+ SPWPN_STAFF_OF_DISPATER,
+ SPWPN_SCEPTRE_OF_ASMODEUS, // 190
+
+ SPWPN_SWORD_OF_POWER,
+ SPWPN_KNIFE_OF_ACCURACY,
+ SPWPN_STAFF_OF_OLGREB,
+ SPWPN_VAMPIRES_TOOTH,
+ SPWPN_STAFF_OF_WUCAD_MU // 195
+};
+
+enum special_wield_type // you.special_wield
+{
+ SPWLD_NONE, // 0
+ SPWLD_SING,
+ SPWLD_TROG,
+ SPWLD_CURSE,
+ SPWLD_VARIABLE, // 4
+ SPWLD_PRUNE, // 5 - implicit in it_use3::special_wielded() {dlb}
+ SPWLD_TORMENT, // 6
+ SPWLD_ZONGULDROK,
+ SPWLD_POWER,
+ SPWLD_WUCAD_MU, // 9
+ SPWLD_OLGREB, // 10
+ SPWLD_SHADOW = 50, // 50
+ SPWLD_HUM, // 51 - see it_use3::special_wielded() {dlb}
+ SPWLD_CHIME, // 52 - see it_use3::special_wielded() {dlb}
+ SPWLD_BECKON, // 53 - see it_use3::special_wielded() {dlb}
+ SPWLD_SHOUT // 54 - see it_use3::special_wielded() {dlb}
+};
+
+enum species_type
+{
+ SP_HUMAN = 1, // 1
+ SP_ELF,
+ SP_HIGH_ELF,
+ SP_GREY_ELF,
+ SP_DEEP_ELF, // 5
+ SP_SLUDGE_ELF,
+ SP_HILL_DWARF,
+ SP_MOUNTAIN_DWARF,
+ SP_HALFLING,
+ SP_HILL_ORC, // 10
+ SP_KOBOLD,
+ SP_MUMMY,
+ SP_NAGA,
+ SP_GNOME,
+ SP_OGRE, // 15
+ SP_TROLL,
+ SP_OGRE_MAGE,
+ SP_RED_DRACONIAN,
+ SP_WHITE_DRACONIAN,
+ SP_GREEN_DRACONIAN, // 20
+ SP_GOLDEN_DRACONIAN,
+ SP_GREY_DRACONIAN,
+ SP_BLACK_DRACONIAN,
+ SP_PURPLE_DRACONIAN,
+ SP_MOTTLED_DRACONIAN, // 25
+ SP_PALE_DRACONIAN,
+ SP_UNK0_DRACONIAN,
+ SP_UNK1_DRACONIAN,
+ SP_BASE_DRACONIAN,
+ SP_CENTAUR, // 30
+ SP_DEMIGOD,
+ SP_SPRIGGAN,
+ SP_MINOTAUR,
+ SP_DEMONSPAWN,
+ SP_GHOUL, // 35
+ SP_KENKU,
+ SP_MERFOLK,
+ NUM_SPECIES, // always after the last species
+
+ SP_UNKNOWN = 100
+};
+
+enum spell_type
+{
+ SPELL_IDENTIFY, // 0
+ SPELL_TELEPORT_SELF,
+ SPELL_CAUSE_FEAR,
+ SPELL_CREATE_NOISE,
+ SPELL_REMOVE_CURSE,
+ SPELL_MAGIC_DART, // 5
+ SPELL_FIREBALL,
+ SPELL_SWAP,
+ SPELL_APPORTATION,
+ SPELL_TWIST,
+ SPELL_FAR_STRIKE, // 10
+ SPELL_DELAYED_FIREBALL,
+ SPELL_STRIKING,
+ SPELL_CONJURE_FLAME,
+ SPELL_DIG,
+ SPELL_BOLT_OF_FIRE, // 15
+ SPELL_BOLT_OF_COLD,
+ SPELL_LIGHTNING_BOLT,
+ SPELL_BOLT_OF_MAGMA, // 18
+ SPELL_POLYMORPH_OTHER = 20, // 20
+ SPELL_SLOW,
+ SPELL_HASTE,
+ SPELL_PARALYZE,
+ SPELL_CONFUSE,
+ SPELL_INVISIBILITY, // 25
+ SPELL_THROW_FLAME,
+ SPELL_THROW_FROST,
+ SPELL_CONTROLLED_BLINK,
+ SPELL_FREEZING_CLOUD,
+ SPELL_MEPHITIC_CLOUD, // 30
+ SPELL_RING_OF_FLAMES,
+ SPELL_RESTORE_STRENGTH,
+ SPELL_RESTORE_INTELLIGENCE,
+ SPELL_RESTORE_DEXTERITY,
+ SPELL_VENOM_BOLT, // 35
+ SPELL_OLGREBS_TOXIC_RADIANCE,
+ SPELL_TELEPORT_OTHER,
+ SPELL_LESSER_HEALING,
+ SPELL_GREATER_HEALING,
+ SPELL_CURE_POISON_I, // 40
+ SPELL_PURIFICATION,
+ SPELL_DEATHS_DOOR,
+ SPELL_SELECTIVE_AMNESIA,
+ SPELL_MASS_CONFUSION,
+ SPELL_SMITING, // 45
+ SPELL_REPEL_UNDEAD,
+ SPELL_HOLY_WORD,
+ SPELL_DETECT_CURSE,
+ SPELL_SUMMON_SMALL_MAMMAL,
+ SPELL_ABJURATION_I, // 50
+ SPELL_SUMMON_SCORPIONS,
+ SPELL_LEVITATION,
+ SPELL_BOLT_OF_DRAINING,
+ SPELL_LEHUDIBS_CRYSTAL_SPEAR,
+ SPELL_BOLT_OF_INACCURACY, // 55
+ SPELL_POISONOUS_CLOUD,
+ SPELL_FIRE_STORM,
+ SPELL_DETECT_TRAPS,
+ SPELL_BLINK,
+ SPELL_ISKENDERUNS_MYSTIC_BLAST, // 60
+ SPELL_SWARM,
+ SPELL_SUMMON_HORRIBLE_THINGS,
+ SPELL_ENSLAVEMENT,
+ SPELL_MAGIC_MAPPING,
+ SPELL_HEAL_OTHER, // 65
+ SPELL_ANIMATE_DEAD,
+ SPELL_PAIN,
+ SPELL_EXTENSION,
+ SPELL_CONTROL_UNDEAD,
+ SPELL_ANIMATE_SKELETON, // 70
+ SPELL_VAMPIRIC_DRAINING,
+ SPELL_SUMMON_WRAITHS,
+ SPELL_DETECT_ITEMS,
+ SPELL_BORGNJORS_REVIVIFICATION,
+ SPELL_BURN, // 75
+ SPELL_FREEZE,
+ SPELL_SUMMON_ELEMENTAL,
+ SPELL_OZOCUBUS_REFRIGERATION,
+ SPELL_STICKY_FLAME,
+ SPELL_SUMMON_ICE_BEAST, // 80
+ SPELL_OZOCUBUS_ARMOUR,
+ SPELL_CALL_IMP,
+ SPELL_REPEL_MISSILES,
+ SPELL_BERSERKER_RAGE,
+ SPELL_DISPEL_UNDEAD, // 85
+ SPELL_GUARDIAN,
+ SPELL_PESTILENCE,
+ SPELL_THUNDERBOLT,
+ SPELL_FLAME_OF_CLEANSING,
+ SPELL_SHINING_LIGHT, // 90
+ SPELL_SUMMON_DAEVA,
+ SPELL_ABJURATION_II,
+ SPELL_FULSOME_DISTILLATION, // 93
+ SPELL_POISON_ARROW, // 94
+ SPELL_TWISTED_RESURRECTION = 110, // 110
+ SPELL_REGENERATION,
+ SPELL_BONE_SHARDS,
+ SPELL_BANISHMENT,
+ SPELL_CIGOTUVIS_DEGENERATION,
+ SPELL_STING, // 115
+ SPELL_SUBLIMATION_OF_BLOOD,
+ SPELL_TUKIMAS_DANCE,
+ SPELL_HELLFIRE,
+ SPELL_SUMMON_DEMON,
+ SPELL_DEMONIC_HORDE, // 120
+ SPELL_SUMMON_GREATER_DEMON,
+ SPELL_CORPSE_ROT,
+ SPELL_TUKIMAS_VORPAL_BLADE,
+ SPELL_FIRE_BRAND,
+ SPELL_FREEZING_AURA, // 125
+ SPELL_LETHAL_INFUSION,
+ SPELL_CRUSH,
+ SPELL_BOLT_OF_IRON,
+ SPELL_STONE_ARROW,
+ SPELL_TOMB_OF_DOROKLOHE, // 130
+ SPELL_STONEMAIL,
+ SPELL_SHOCK,
+ SPELL_SWIFTNESS,
+ SPELL_FLY,
+ SPELL_INSULATION, // 135
+ SPELL_ORB_OF_ELECTROCUTION,
+ SPELL_DETECT_CREATURES,
+ SPELL_CURE_POISON_II,
+ SPELL_CONTROL_TELEPORT,
+ SPELL_POISON_AMMUNITION, // 140
+ SPELL_POISON_WEAPON,
+ SPELL_RESIST_POISON,
+ SPELL_PROJECTED_NOISE,
+ SPELL_ALTER_SELF,
+ SPELL_DEBUGGING_RAY, // 145
+ SPELL_RECALL,
+ SPELL_PORTAL,
+ SPELL_AGONY,
+ SPELL_SPIDER_FORM,
+ SPELL_DISRUPT, // 150
+ SPELL_DISINTEGRATE,
+ SPELL_BLADE_HANDS,
+ SPELL_STATUE_FORM,
+ SPELL_ICE_FORM,
+ SPELL_DRAGON_FORM, // 155
+ SPELL_NECROMUTATION,
+ SPELL_DEATH_CHANNEL,
+ SPELL_SYMBOL_OF_TORMENT,
+ SPELL_DEFLECT_MISSILES,
+ SPELL_ORB_OF_FRAGMENTATION, // 160
+ SPELL_ICE_BOLT,
+ SPELL_ICE_STORM,
+ SPELL_ARC,
+ SPELL_AIRSTRIKE,
+ SPELL_SHADOW_CREATURES, // 165
+ SPELL_CONFUSING_TOUCH,
+ SPELL_SURE_BLADE,
+//jmf: new spells
+ SPELL_FLAME_TONGUE,
+ SPELL_PASSWALL,
+ SPELL_IGNITE_POISON, // 170
+ SPELL_STICKS_TO_SNAKES,
+ SPELL_SUMMON_LARGE_MAMMAL, // e.g. hound
+ SPELL_SUMMON_DRAGON,
+ SPELL_TAME_BEASTS, // charm/enslave but only animals
+ SPELL_SLEEP, // 175
+ SPELL_MASS_SLEEP,
+ SPELL_DETECT_MAGIC, //jmf: unfinished, perhaps useless
+ SPELL_DETECT_SECRET_DOORS,
+ SPELL_SEE_INVISIBLE,
+ SPELL_FORESCRY, // 180
+ SPELL_SUMMON_BUTTERFLIES,
+ SPELL_WARP_BRAND,
+ SPELL_SILENCE,
+ SPELL_SHATTER,
+ SPELL_DISPERSAL, // 185
+ SPELL_DISCHARGE,
+ SPELL_BEND,
+ SPELL_BACKLIGHT,
+ SPELL_INTOXICATE, // confusion but only "smart" creatures
+ SPELL_GLAMOUR, // charm/confuse/sleep but only "smart" creatures 190
+ SPELL_EVAPORATE, // turn a potion into a cloud
+ SPELL_ERINGYAS_SURPRISING_BOUQUET, // turn sticks into herbivore food
+ SPELL_FRAGMENTATION, // replacement for "orb of frag"
+ 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_MAXWELLS_SILVER_HAMMER, // vorpal-brand maces etc.
+ SPELL_CONDENSATION_SHIELD, // "shield" of icy vapour
+ SPELL_SEMI_CONTROLLED_BLINK, //jmf: to test effect
+ SPELL_STONESKIN, // 200
+ SPELL_SIMULACRUM,
+ 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 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}
+ SPTYP_ENCHANTMENT = 1<<1,
+ SPTYP_FIRE = 1<<2,
+ SPTYP_ICE = 1<<3,
+ SPTYP_TRANSMIGRATION = 1<<4,
+ SPTYP_NECROMANCY = 1<<5,
+ SPTYP_SUMMONING = 1<<6,
+ SPTYP_DIVINATION = 1<<7,
+ SPTYP_TRANSLOCATION = 1<<8,
+ SPTYP_POISON = 1<<9,
+ SPTYP_EARTH = 1<<10,
+ SPTYP_AIR = 1<<11,
+ SPTYP_HOLY = 1<<12, //jmf: moved to accomodate "random" miscast f/x
+ SPTYP_LAST_EXPONENT = 12, //jmf: ``NUM_SPELL_TYPES'' kinda useless
+ NUM_SPELL_TYPES = 14,
+ SPTYP_RANDOM = 1<<14
+};
+
+enum slot_select_mode
+{
+ SS_FORWARD = 0,
+ SS_BACKWARD = 1
+};
+
+enum stat_type
+{
+ STAT_STRENGTH, // 0
+ STAT_DEXTERITY,
+ STAT_INTELLIGENCE,
+ NUM_STATS, // added for increase_stats() {dlb}
+ STAT_ALL, // must remain after NUM_STATS -- added to handle royal jelly, etc. {dlb}
+ STAT_RANDOM = 255 // leave at 255, added for increase_stats() handling {dlb}
+};
+
+enum statue_type
+{
+ STATUE_SILVER,
+ STATUE_ORANGE_CRYSTAL,
+ NUM_STATUE_TYPES
+};
+
+enum status_redraw_flag_type
+{
+ REDRAW_HUNGER = 0x00000001,
+ REDRAW_BURDEN = 0x00000002,
+ REDRAW_LINE_1_MASK = 0x00000003,
+
+ REDRAW_PRAYER = 0x00000100,
+ REDRAW_REPEL_UNDEAD = 0x00000200,
+ REDRAW_BREATH = 0x00000400,
+ REDRAW_REPEL_MISSILES = 0x00000800,
+ REDRAW_REGENERATION = 0x00001000,
+ REDRAW_INSULATION = 0x00002000,
+ REDRAW_FLY = 0x00004000,
+ REDRAW_INVISIBILITY = 0x00008000,
+ REDRAW_LINE_2_MASK = 0x0000ff00,
+
+ REDRAW_CONFUSION = 0x00010000,
+ REDRAW_POISONED = 0x00020000,
+ REDRAW_LIQUID_FLAMES = 0x00040000,
+ REDRAW_DISEASED = 0x00080000,
+ REDRAW_CONTAMINATED = 0x00100000,
+ REDRAW_SWIFTNESS = 0x00200000,
+ REDRAW_SPEED = 0x00400000,
+ REDRAW_LINE_3_MASK = 0x007f0000
+};
+
+enum stave_type
+{
+ STAFF_WIZARDRY, // 0
+ STAFF_POWER,
+ STAFF_FIRE,
+ STAFF_COLD,
+ STAFF_POISON,
+ STAFF_ENERGY, // 5
+ STAFF_DEATH,
+ STAFF_CONJURATION,
+ STAFF_ENCHANTMENT,
+ STAFF_SUMMONING,
+ STAFF_SMITING, // 10
+ STAFF_SPELL_SUMMONING,
+ STAFF_DESTRUCTION_I,
+ STAFF_DESTRUCTION_II,
+ STAFF_DESTRUCTION_III,
+ STAFF_DESTRUCTION_IV, // 15
+ STAFF_WARDING,
+ STAFF_DISCOVERY,
+ STAFF_DEMONOLOGY, // 18
+ STAFF_STRIKING, // 19
+ STAFF_AIR = 25, // 25
+ STAFF_EARTH,
+ STAFF_CHANNELING,
+ NUM_STAVES // must remain last member {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
+ SYM_BOLT = '#', // 35
+ SYM_CHUNK = '%', // 37
+ SYM_OBJECT = '(', // 40 - actually used for books, but... {dlb}
+ SYM_WEAPON = ')', // 41
+ SYM_ZAP = '*', // 42
+ SYM_BURST = '+', // 43
+ SYM_STICK = '/', // 47
+ SYM_TRINKET = '=', // 61
+ SYM_SCROLL = '?', // 63
+ SYM_DEBUG = 'X', // 88
+ SYM_ARMOUR = '[', // 91
+ SYM_MISSILE = '`', // 96
+ SYM_EXPLOSION = '#'
+};
+
+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
+ TAG_YOU_ITEMS, // your items
+ TAG_YOU_DUNGEON, // dungeon specs (stairs, branches, features)
+ TAG_LEVEL, // various grids & clouds
+ TAG_LEVEL_ITEMS, // items/traps
+ TAG_LEVEL_MONSTERS, // monsters
+ TAG_GHOST, // ghost
+ TAG_LEVEL_ATTITUDE, // monster attitudes
+ NUM_TAGS
+};
+
+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
+};
+
+
+enum transformation_type
+{
+ TRAN_NONE, // 0
+ TRAN_SPIDER,
+ TRAN_BLADE_HANDS,
+ TRAN_STATUE,
+ TRAN_ICE_BEAST,
+ TRAN_DRAGON, // 5
+ TRAN_LICH,
+ TRAN_SERPENT_OF_HELL,
+ TRAN_AIR,
+ NUM_TRANSFORMATIONS // must remain last member {dlb}
+};
+
+enum trap_type // env.trap_type[]
+{
+ TRAP_DART, // 0
+ TRAP_ARROW,
+ TRAP_SPEAR,
+ TRAP_AXE,
+ TRAP_TELEPORT,
+ TRAP_AMNESIA, // 5
+ TRAP_BLADE,
+ TRAP_BOLT,
+ TRAP_ZOT,
+ 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_attack_type
+{
+ UNAT_NO_ATTACK, // 0
+ UNAT_KICK,
+ UNAT_HEADBUTT,
+ UNAT_TAILSLAP,
+ UNAT_PUNCH
+};
+
+enum undead_state_type // you.is_undead
+{
+ US_ALIVE, // 0
+ US_HUNGRY_DEAD,
+ US_UNDEAD
+};
+
+enum unique_item_status_type
+{
+ UNIQ_NOT_EXISTS = 0,
+ UNIQ_EXISTS = 1,
+ UNIQ_LOST_IN_ABYSS = 2
+};
+
+// 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 wand_type // mitm[].subtype
+{
+ WAND_FLAME, // 0
+ WAND_FROST,
+ WAND_SLOWING,
+ WAND_HASTING,
+ WAND_MAGIC_DARTS,
+ WAND_HEALING, // 5
+ WAND_PARALYSIS,
+ WAND_FIRE,
+ WAND_COLD,
+ WAND_CONFUSION,
+ WAND_INVISIBILITY, // 10
+ WAND_DIGGING,
+ WAND_FIREBALL,
+ WAND_TELEPORTATION,
+ WAND_LIGHTNING,
+ WAND_POLYMORPH_OTHER, // 15
+ WAND_ENSLAVEMENT,
+ WAND_DRAINING,
+ WAND_RANDOM_EFFECTS,
+ WAND_DISINTEGRATION,
+ NUM_WANDS // must remain last member {dlb}
+};
+
+enum weapon_type
+{
+// Base weapons
+ WPN_CLUB, // 0
+ WPN_MACE,
+ WPN_FLAIL,
+ WPN_DAGGER,
+ WPN_MORNINGSTAR,
+ WPN_SHORT_SWORD, // 5
+ WPN_LONG_SWORD,
+ WPN_GREAT_SWORD,
+ WPN_SCIMITAR,
+ WPN_HAND_AXE,
+ WPN_BATTLEAXE, // 10
+ WPN_SPEAR,
+ WPN_HALBERD,
+ WPN_SLING,
+ WPN_BOW,
+ WPN_CROSSBOW, // 15
+ WPN_HAND_CROSSBOW,
+ WPN_GLAIVE,
+ WPN_QUARTERSTAFF,
+// these three not created ordinarily
+ WPN_SCYTHE,
+ WPN_GIANT_CLUB, // 20
+ WPN_GIANT_SPIKED_CLUB,
+// "rare" weapons - some have special cases and are uncommon
+ WPN_EVENINGSTAR,
+ WPN_QUICK_BLADE,
+ WPN_KATANA,
+ WPN_EXECUTIONERS_AXE, // 25
+ WPN_DOUBLE_SWORD,
+ WPN_TRIPLE_SWORD,
+ WPN_HAMMER,
+ WPN_ANCUS,
+ WPN_WHIP, // 30
+ WPN_SABRE,
+ WPN_DEMON_BLADE,
+ WPN_DEMON_WHIP,
+ WPN_DEMON_TRIDENT,
+ WPN_BROAD_AXE, // 35
+// base items (continued)
+ WPN_WAR_AXE,
+ WPN_TRIDENT,
+ WPN_SPIKED_FLAIL,
+ WPN_GREAT_MACE,
+ WPN_DIRE_FLAIL, // 40
+ WPN_KNIFE,
+ WPN_BLOWGUN,
+ WPN_FALCHION,
+ 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_description_type
+{
+ DWPN_PLAIN = 0, // 0 - added to round out enum {dlb}
+ DWPN_RUNED = 1, // 1
+ DWPN_GLOWING,
+ DWPN_ORCISH,
+ DWPN_ELVEN,
+ DWPN_DWARVEN // 5
+};
+
+enum weapon_property_type
+{
+ PWPN_DAMAGE, // 0
+ PWPN_HIT,
+ PWPN_SPEED
+};
+
+#ifdef WIZARD
+
+enum wizard_option_type
+{
+ WIZ_NEVER, // protect player from accidental wiz
+ WIZ_NO, // don't start character in wiz mode
+ WIZ_YES // start character in wiz mode
+};
+
+#endif
+
+enum zap_type
+{
+ ZAP_FLAME, // 0
+ ZAP_FROST,
+ ZAP_SLOWING,
+ ZAP_HASTING,
+ ZAP_MAGIC_DARTS,
+ ZAP_HEALING, // 5
+ ZAP_PARALYSIS,
+ ZAP_FIRE,
+ ZAP_COLD,
+ ZAP_CONFUSION,
+ ZAP_INVISIBILITY, // 10
+ ZAP_DIGGING,
+ ZAP_FIREBALL,
+ ZAP_TELEPORTATION,
+ ZAP_LIGHTNING,
+ ZAP_POLYMORPH_OTHER, // 15
+ ZAP_VENOM_BOLT,
+ ZAP_NEGATIVE_ENERGY,
+ ZAP_CRYSTAL_SPEAR,
+ ZAP_BEAM_OF_ENERGY,
+ ZAP_MYSTIC_BLAST, // 20
+ ZAP_ENSLAVEMENT,
+ ZAP_PAIN,
+ ZAP_STICKY_FLAME,
+ ZAP_DISPEL_UNDEAD,
+ ZAP_CLEANSING_FLAME, // 25
+ ZAP_BONE_SHARDS,
+ ZAP_BANISHMENT,
+ ZAP_DEGENERATION,
+ ZAP_STING,
+ ZAP_HELLFIRE, // 30
+ ZAP_IRON_BOLT,
+ ZAP_STRIKING,
+ ZAP_STONE_ARROW,
+ ZAP_ELECTRICITY,
+ ZAP_ORB_OF_ELECTRICITY, // 35
+ ZAP_SPIT_POISON,
+ ZAP_DEBUGGING_RAY,
+ ZAP_BREATHE_FIRE,
+ ZAP_BREATHE_FROST,
+ ZAP_BREATHE_ACID, // 40
+ ZAP_BREATHE_POISON,
+ ZAP_BREATHE_POWER,
+ ZAP_ENSLAVE_UNDEAD,
+ ZAP_AGONY,
+ ZAP_DISRUPTION, // 45
+ ZAP_DISINTEGRATION, // 46
+ // ZAP_ISKS_CROSS, // 47: Isk's Cross -- commented out, deprecated {dlb}
+ ZAP_BREATHE_STEAM = 48, // 48
+ ZAP_CONTROL_DEMON,
+ ZAP_ORB_OF_FRAGMENTATION, // 50
+ ZAP_ICE_BOLT,
+ ZAP_ICE_STORM,
+ ZAP_BACKLIGHT, //jmf: added next bunch 19mar2000
+ ZAP_SLEEP,
+ ZAP_FLAME_TONGUE,
+ ZAP_SANDBLAST,
+ 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