1 /*
2  *  File:       enum.h
3  *  Summary:    Global (ick) enums.
4  *  Written by: Daniel Ligon
5  *
6  *  Change History (most recent first):
7  *
8  *      <11>   7 Aug 01  MV     Changed MSLOT_UNASSIGNED_I to MSLOT_MISCELLANY
9  *                              added NUM_MISCELLANY, changed MONS_ANOTHER_
10  *                              LAVA_THING to MONS_SALAMANDER
11  *      <10>   7/29/00   JDJ    Changed NUM_SPELL_TYPES to 14 (from 32767!).
12  *             24jun2000 jmf    Changed comment spacing so stuff fit in 80
13  *                              columns; deleted some leading numbers in
14  *                              comments (reasoning as above).
15  *                              Also removed many "must be last" comments,
16  *                              esp. where less-than-accurate.
17  *      <9>    10jan2000 dlb    extensive - see changes.340             S
18  *      <8>    04nov1999 cdl    added killed_by
19  *      <7>    29sep1999 BCR    Added comments showing where uniques are
20  *      <6>    25sep1999 CDL    Added commands
21  *      <5>    09sep1999 BWR    Removed Great Swords skill
22  *      <4>    06aug1999 BWR    added branch and level types
23  *      <3>    02jun1999 DML    beams, clouds, ench, ms, kill,
24  *                              other minor changes
25  *      <2>    26may1999 JDJ    Added a header guard.
26  *      <1>    --/--/--  CDL    Created
27  */
28 
29 
30 #ifndef ENUM_H
31 #define ENUM_H
32 
33 enum ABILITIES
34 {
35     ABIL_NON_ABILITY = -1,
36     ABIL_SPIT_POISON = 1,              //    1
37     ABIL_GLAMOUR,
38     ABIL_MAPPING,
39     ABIL_TELEPORTATION,
40     ABIL_BREATHE_FIRE,                 //    5
41     ABIL_BLINK,
42     ABIL_BREATHE_FROST,
43     ABIL_BREATHE_POISON,
44     ABIL_BREATHE_LIGHTNING,
45     ABIL_SPIT_ACID,                    //   10
46     ABIL_BREATHE_POWER,
47     ABIL_EVOKE_BERSERK,
48     ABIL_BREATHE_STICKY_FLAME,
49     ABIL_BREATHE_STEAM,
50     ABIL_FLY,                          //   15
51     ABIL_SUMMON_MINOR_DEMON,
52     ABIL_SUMMON_DEMON,
53     ABIL_HELLFIRE,
54     ABIL_TORMENT,
55     ABIL_RAISE_DEAD,                   //   20
56     ABIL_CONTROL_DEMON,
57     ABIL_TO_PANDEMONIUM,
58     ABIL_CHANNELING,
59     ABIL_THROW_FLAME,
60     ABIL_THROW_FROST,                  //   25
61     ABIL_BOLT_OF_DRAINING,
62     ABIL_BREATHE_HELLFIRE,
63     ABIL_FLY_II,
64     ABIL_DELAYED_FIREBALL,
65     ABIL_MUMMY_RESTORATION,            //   30
66     ABIL_EVOKE_MAPPING,
67     ABIL_EVOKE_TELEPORTATION,
68     ABIL_EVOKE_BLINK,                  //   33
69     ABIL_EVOKE_TURN_INVISIBLE = 51,    //   51
70     ABIL_EVOKE_TURN_VISIBLE,
71     ABIL_EVOKE_LEVITATE,
72     ABIL_EVOKE_STOP_LEVITATING,
73     ABIL_END_TRANSFORMATION,           //   55
74     ABIL_ZIN_REPEL_UNDEAD = 110,       //  110
75     ABIL_ZIN_HEALING,
76     ABIL_ZIN_PESTILENCE,
77     ABIL_ZIN_HOLY_WORD,
78     ABIL_ZIN_SUMMON_GUARDIAN,          //  114
79     ABIL_TSO_REPEL_UNDEAD = 120,       //  120
80     ABIL_TSO_SMITING,
81     ABIL_TSO_ANNIHILATE_UNDEAD,
82     ABIL_TSO_THUNDERBOLT,
83     ABIL_TSO_SUMMON_DAEVA,             //  124
84     ABIL_KIKU_RECALL_UNDEAD_SLAVES = 130,   //  130
85     ABIL_KIKU_ENSLAVE_UNDEAD = 132,         //  132
86     ABIL_KIKU_INVOKE_DEATH,                 //  133
87     ABIL_YRED_ANIMATE_CORPSE = 140,         //  140
88     ABIL_YRED_RECALL_UNDEAD,
89     ABIL_YRED_ANIMATE_DEAD,
90     ABIL_YRED_DRAIN_LIFE,
91     ABIL_YRED_CONTROL_UNDEAD,               //  144
92     ABIL_VEHUMET_CHANNEL_ENERGY = 160,         //  160
93     ABIL_OKAWARU_MIGHT = 170,                //  170
94     ABIL_OKAWARU_HEALING,
95     ABIL_OKAWARU_HASTE,                        //  172
96     ABIL_MAKHLEB_MINOR_DESTRUCTION = 180,      //  180
97     ABIL_MAKHLEB_LESSER_SERVANT_OF_MAKHLEB,
98     ABIL_MAKHLEB_MAJOR_DESTRUCTION,
99     ABIL_MAKHLEB_GREATER_SERVANT_OF_MAKHLEB,   //  183
100     ABIL_SIF_MUNA_FORGET_SPELL = 190,           //  190
101     ABIL_TROG_BERSERK = 200,          //  200
102     ABIL_TROG_MIGHT,
103     ABIL_TROG_HASTE_SELF,                   //  202
104     ABIL_ELYVILON_LESSER_HEALING = 220,         //  220
105     ABIL_ELYVILON_PURIFICATION,
106     ABIL_ELYVILON_HEALING,
107     ABIL_ELYVILON_RESTORATION,
108     ABIL_ELYVILON_GREATER_HEALING,              //  224
109     ABIL_CHARM_SNAKE,
110     ABIL_TRAN_SERPENT_OF_HELL,
111     ABIL_ROTTING,
112     ABIL_TORMENT_II,
113     ABIL_SHUGGOTH_SEED,
114     ABIL_RENOUNCE_RELIGION = 250       //  250
115 };
116 
117 enum ABILITY_FLAGS
118 {
119     ABFLAG_NONE         = 0x00000000,
120     ABFLAG_BREATH       = 0x00000001, // ability uses DUR_BREATH_WEAPON
121     ABFLAG_DELAY        = 0x00000002, // ability has its own delay (ie glamour)
122     ABFLAG_PAIN         = 0x00000004, // ability must hurt player (ie torment)
123     ABFLAG_EXHAUSTION   = 0x00000008, // fails if you.exhausted
124     ABFLAG_INSTANT      = 0x00000010, // doesn't take time to use
125     ABFLAG_PERMANENT_HP = 0x00000020, // costs permanent HPs
126     ABFLAG_PERMANENT_MP = 0x00000040  // costs permanent MPs
127 };
128 
129 enum AMMUNITION_DESCRIPTIONS
130 {
131     DAMMO_ORCISH = 3,                  //    3
132     DAMMO_ELVEN,
133     DAMMO_DWARVEN                      //    5
134 };
135 
136 enum ARMOUR
137 {
138     ARM_ROBE,                          //    0
139     ARM_LEATHER_ARMOUR,
140     ARM_RING_MAIL,
141     ARM_SCALE_MAIL,
142     ARM_CHAIN_MAIL,
143     ARM_SPLINT_MAIL,                   //    5
144     ARM_BANDED_MAIL,
145     ARM_PLATE_MAIL,
146     ARM_SHIELD,
147     ARM_CLOAK,
148     ARM_HELMET,                        //   10
149     ARM_GLOVES,
150     ARM_BOOTS,
151     ARM_BUCKLER,
152     ARM_LARGE_SHIELD,
153     ARM_DRAGON_HIDE,                   //   15
154     ARM_TROLL_HIDE,
155     ARM_CRYSTAL_PLATE_MAIL,
156     ARM_DRAGON_ARMOUR,
157     ARM_TROLL_LEATHER_ARMOUR,
158     ARM_ICE_DRAGON_HIDE,               //   20
159     ARM_ICE_DRAGON_ARMOUR,
160     ARM_STEAM_DRAGON_HIDE,
161     ARM_STEAM_DRAGON_ARMOUR,
162     ARM_MOTTLED_DRAGON_HIDE,
163     ARM_MOTTLED_DRAGON_ARMOUR,         //   25
164     ARM_STORM_DRAGON_HIDE,
165     ARM_STORM_DRAGON_ARMOUR,
166     ARM_GOLD_DRAGON_HIDE,
167     ARM_GOLD_DRAGON_ARMOUR,
168     ARM_ANIMAL_SKIN,                   //   30
169     ARM_SWAMP_DRAGON_HIDE,
170     ARM_SWAMP_DRAGON_ARMOUR,
171     NUM_ARMOURS
172 };
173 
174 enum ARMOUR_DESCRIPTIONS
175 {
176     DARM_PLAIN,                 // added for the heck of it, 15 Apr 2000 {dlb}
177     DARM_EMBROIDERED_SHINY = 1, // which it is dependent upon armour subtype {dlb}
178     DARM_RUNED,
179     DARM_GLOWING,
180     DARM_ELVEN,
181     DARM_DWARVEN,                      //    5
182     DARM_ORCISH
183 };
184 
185 enum ARMOUR_PROPERTIES
186 {
187     PARM_AC,                           //    0
188     PARM_EVASION
189 };
190 
191 // Note:  currently the size of the attr array is hard coded at 30! ick! -- bwr
192 enum ATTRIBUTES
193 {
194     ATTR_DIVINE_LIGHTNING_PROTECTION,  //    0
195     // ATTR_SPEC_AIR,                  // don't use this!
196     // ATTR_SPEC_EARTH,
197     ATTR_CONTROL_TELEPORT = 3,
198     ATTR_WALK_SLOWLY,
199     ATTR_TRANSFORMATION,               //    5
200     ATTR_CARD_COUNTDOWN,
201     ATTR_CARD_TABLE,
202     ATTR_NUM_DEMONIC_POWERS,
203     ATTR_WAS_SILENCED,          //jmf: added for silenced messages
204     ATTR_GOD_GIFT_COUNT,        //jmf: added to help manage god gift giving
205     ATTR_EXPENSIVE_FLIGHT,      //jmf: flag for "manual flight" (ie wings)
206     ATTR_DEMONIC_SCALES,        //jmf: remember which kind of scales to improve
207     ATTR_WALLS,
208     ATTR_LAST_WALLS,
209     ATTR_DELAYED_FIREBALL,      // bwr: reserve fireballs
210     NUM_ATTRIBUTES              // must always remain last member {dlb}
211 };
212 
213 enum BANDS
214 {
215     BAND_NO_BAND                = 0,
216     BAND_KOBOLDS                = 1,
217     BAND_ORCS,
218     BAND_ORC_KNIGHT,
219     BAND_KILLER_BEES,
220     BAND_FLYING_SKULLS,         // 5
221     BAND_SLIME_CREATURES,
222     BAND_YAKS,
223     BAND_UGLY_THINGS,
224     BAND_HELL_HOUNDS,
225     BAND_JACKALS,               // 10
226     BAND_HELL_KNIGHTS,
227     BAND_ORC_HIGH_PRIEST,
228     BAND_GNOLLS,                // 13
229     BAND_BUMBLEBEES             = 16,
230     BAND_CENTAURS,
231     BAND_YAKTAURS,
232     BAND_INSUBSTANTIAL_WISPS,
233     BAND_OGRE_MAGE,             // 20
234     BAND_DEATH_YAKS,
235     BAND_NECROMANCER,
236     BAND_BALRUG,
237     BAND_CACODEMON,
238     BAND_EXECUTIONER,           // 25
239     BAND_HELLWING,
240     BAND_DEEP_ELF_FIGHTER,
241     BAND_DEEP_ELF_KNIGHT,
242     BAND_DEEP_ELF_HIGH_PRIEST,
243     BAND_KOBOLD_DEMONOLOGIST,   // 30
244     BAND_NAGAS,
245     BAND_WAR_DOGS,
246     BAND_GREY_RATS,
247     BAND_GREEN_RATS,
248     BAND_ORANGE_RATS,           // 35
249     BAND_SHEEP,
250     BAND_GHOULS,
251     BAND_DEEP_TROLLS,
252     BAND_HOGS,
253     BAND_HELL_HOGS,             // 40
254     BAND_GIANT_MOSQUITOES,
255     BAND_BOGGARTS,
256     BAND_BLINK_FROGS,
257     BAND_SKELETAL_WARRIORS,     // 44
258     NUM_BANDS                   // always last
259 };
260 
261 enum BEAMS                        // beam[].flavour
262 {
263     BEAM_MISSILE,                 //    0
264     BEAM_MMISSILE,                //    1 - and similarly unresistable things
265     BEAM_FIRE,
266     BEAM_COLD,
267     BEAM_MAGIC,
268     BEAM_ELECTRICITY,             //    5
269     BEAM_POISON,
270     BEAM_NEG,
271     BEAM_ACID,                    //    8
272     BEAM_EXPLOSION = 10,          //   10
273     BEAM_SPORE,                   //   11
274     BEAM_POISON_ARROW,            //   12
275     BEAM_HELLFIRE,                //   13 - found 11jan2000 {dlb}
276     BEAM_ENERGY = 17,
277     BEAM_HOLY = 18,               //   18 - aka beam of cleansing, golden flame
278     BEAM_FRAG,
279     BEAM_LAVA,                    //   20
280     BEAM_BACKLIGHT,
281     BEAM_SLEEP,
282     BEAM_ICE,                     //   23
283     BEAM_NUKE = 27,               //   27
284     BEAM_RANDOM,                  //   currently translates into FIRE..ACID
285 
286     // These used to be handled in the colour field:
287     BEAM_SLOW,                  // BLACK
288     BEAM_HASTE,                 // BLUE
289     BEAM_HEALING,               // GREEN
290     BEAM_PARALYSIS,             // CYAN
291     BEAM_CONFUSION,             // RED
292     BEAM_INVISIBILITY,          // MAGENTA
293     BEAM_DIGGING,               // BROWN
294     BEAM_TELEPORT,              // LIGHTGREY
295     BEAM_POLYMORPH,             // DARKGREY
296     BEAM_CHARM,                 // LIGHTBLUE
297     BEAM_BANISH,                // LIGHTGREEN
298     BEAM_DEGENERATE,            // LIGHTCYAN
299     BEAM_ENSLAVE_UNDEAD,        // LIGHTRED
300     BEAM_PAIN,                  // LIGHTMAGENTA
301     BEAM_DISPEL_UNDEAD,         // YELLOW
302     BEAM_DISINTEGRATION,        // WHITE
303     BEAM_ENSLAVE_DEMON,         // colour "16"
304 
305     // new beams for evaporate
306     BEAM_POTION_STINKING_CLOUD,
307     BEAM_POTION_POISON,
308     BEAM_POTION_MIASMA,
309     BEAM_POTION_STEAM,
310     BEAM_POTION_FIRE,
311     BEAM_POTION_COLD,
312     BEAM_POTION_BLACK_SMOKE,
313     BEAM_POTION_BLUE_SMOKE,
314     BEAM_POTION_PURP_SMOKE,
315     BEAM_POTION_RANDOM
316 };
317 
318 enum BOOKS
319 {
320     BOOK_MINOR_MAGIC_I,                //    0
321     BOOK_MINOR_MAGIC_II,
322     BOOK_MINOR_MAGIC_III,
323     BOOK_CONJURATIONS_I,
324     BOOK_CONJURATIONS_II,
325     BOOK_FLAMES,                       //    5
326     BOOK_FROST,
327     BOOK_SUMMONINGS,
328     BOOK_FIRE,
329     BOOK_ICE,
330     BOOK_SURVEYANCES,                  //   10
331     BOOK_SPATIAL_TRANSLOCATIONS,
332     BOOK_ENCHANTMENTS,
333     BOOK_YOUNG_POISONERS,
334     BOOK_TEMPESTS,
335     BOOK_DEATH,                        //   15
336     BOOK_HINDERANCE,
337     BOOK_CHANGES,
338     BOOK_TRANSFIGURATIONS,
339     BOOK_PRACTICAL_MAGIC,
340     BOOK_WAR_CHANTS,                   //   20
341     BOOK_CLOUDS,
342     BOOK_HEALING,
343     BOOK_NECROMANCY,
344     BOOK_NECRONOMICON,
345     BOOK_CALLINGS,                     //   25
346     BOOK_CHARMS,
347     BOOK_DEMONOLOGY,
348     BOOK_AIR,
349     BOOK_SKY,
350     BOOK_DIVINATIONS,                  //   30
351     BOOK_WARP,
352     BOOK_ENVENOMATIONS,
353     BOOK_ANNIHILATIONS,
354     BOOK_UNLIFE,
355     BOOK_DESTRUCTION,                  //   35
356     BOOK_CONTROL,
357     BOOK_MUTATIONS,
358     BOOK_TUKIMA,
359     BOOK_GEOMANCY,
360     BOOK_EARTH,                        //   40
361     BOOK_MANUAL,
362     BOOK_WIZARDRY,
363     BOOK_POWER,
364     BOOK_CANTRIPS,                     //jmf: 04jan2000
365     BOOK_PARTY_TRICKS,           // 45 //jmf: 04jan2000
366     BOOK_BEASTS,
367     BOOK_STALKING,         // renamed -- assassination was confusing  -- bwr
368     NUM_BOOKS
369 };
370 
371 enum BRANCHES                          // you.where_are_you
372 {
373     BRANCH_MAIN_DUNGEON,               //    0
374     BRANCH_DIS,
375     BRANCH_GEHENNA,
376     BRANCH_VESTIBULE_OF_HELL,
377     BRANCH_COCYTUS,
378     BRANCH_TARTARUS,                   //    5
379     BRANCH_INFERNO,                             // unimplemented
380     BRANCH_THE_PIT,                    //    7  // unimplemented
381     BRANCH_ORCISH_MINES = 10,          //   10
382     BRANCH_HIVE,
383     BRANCH_LAIR,
384     BRANCH_SLIME_PITS,
385     BRANCH_VAULTS,
386     BRANCH_CRYPT,                      //   15
387     BRANCH_HALL_OF_BLADES,
388     BRANCH_HALL_OF_ZOT,
389     BRANCH_ECUMENICAL_TEMPLE,
390     BRANCH_SNAKE_PIT,
391     BRANCH_ELVEN_HALLS,                //   20
392     BRANCH_TOMB,
393     BRANCH_SWAMP
394 };
395 
396 enum BRANCH_STAIRS // you.branch_stairs[] - 10 less than BRANCHES {dlb}
397 {
398     STAIRS_ORCISH_MINES,               //    0
399     STAIRS_HIVE,
400     STAIRS_LAIR,
401     STAIRS_SLIME_PITS,
402     STAIRS_VAULTS,
403     STAIRS_CRYPT,                      //    5
404     STAIRS_HALL_OF_BLADES,
405     STAIRS_HALL_OF_ZOT,
406     STAIRS_ECUMENICAL_TEMPLE,
407     STAIRS_SNAKE_PIT,
408     STAIRS_ELVEN_HALLS,                //   10
409     STAIRS_TOMB,
410     STAIRS_SWAMP
411 };
412 
413 enum BURDEN_STATES                     // you.burden_state
414 {
415     BS_UNENCUMBERED,                   //    0
416     BS_ENCUMBERED = 2,                 //    2
417     BS_OVERLOADED = 5                  //    5
418 };
419 
420 enum CANNED_MESSAGES                   // canned_msg() - unsigned char
421 {
422     MSG_SOMETHING_APPEARS,             //    0
423     MSG_NOTHING_HAPPENS,
424     MSG_YOU_RESIST,
425     MSG_TOO_BERSERK,
426     MSG_NOTHING_CARRIED,
427     MSG_CANNOT_DO_YET,
428     MSG_OK,
429     MSG_UNTHINKING_ACT,
430     MSG_SPELL_FIZZLES,
431     MSG_HUH,
432     MSG_EMPTY_HANDED
433 };
434 
435 enum CLOUD_TYPES // cloud_type[], place_cloud(), big_cloud()
436 {
437     CLOUD_NONE,                        //    0
438     CLOUD_FIRE,                        //    1
439     CLOUD_STINK,                       //    2
440     CLOUD_COLD,                        //    3
441     CLOUD_POISON,                      //    4
442     CLOUD_GREY_SMOKE = 5,              //    5: found 11jan2000 {dlb}
443     CLOUD_BLUE_SMOKE = 6,              //    6: found 11jan2000 {dlb}
444     CLOUD_PURP_SMOKE = 7, // was: CLOUD_ENERGY and wrong 19jan2000 {dlb}
445     CLOUD_STEAM,                       //    8
446     CLOUD_MIASMA = 9,                  //    9: found 11jan2000 {dlb}
447     CLOUD_BLACK_SMOKE = 10, //was: CLOUD_STICKY_FLAME and wrong 19jan2000 {dlb}
448     CLOUD_DEBUGGING = 99,   //   99: used once as 'nonexistent cloud' {dlb}
449 // if env.cloud_type > 100, it is a monster's cloud {dlb}
450     CLOUD_FIRE_MON = 101,              //  101: found 11jan2000 {dlb}
451     CLOUD_STINK_MON = 102,             //  102: found 11jan2000 {dlb}
452     CLOUD_COLD_MON = 103,              //  103: added 11jan2000 {dlb}
453     CLOUD_POISON_MON = 104,            //  104
454     CLOUD_GREY_SMOKE_MON = 105,        //  105: found 11jan2000 {dlb}
455     CLOUD_BLUE_SMOKE_MON = 106,        //  106: found 11jan2000 {dlb}
456     CLOUD_PURP_SMOKE_MON = 107,        //  107:
457     CLOUD_STEAM_MON = 108,             //  108: added 11jan2000 {dlb}
458     CLOUD_MIASMA_MON = 109,            //  109: added 11jan2000 {dlb}
459     CLOUD_BLACK_SMOKE_MON = 110        //  110: added 19jan2000 {dlb}
460 };
461 
462 enum COMMANDS
463 {
464     CMD_NO_CMD = 1000,                 // 1000
465     CMD_MOVE_NOWHERE,
466     CMD_MOVE_LEFT,
467     CMD_MOVE_DOWN,
468     CMD_MOVE_UP,
469     CMD_MOVE_RIGHT,
470     CMD_MOVE_UP_LEFT,
471     CMD_MOVE_DOWN_LEFT,
472     CMD_MOVE_UP_RIGHT,
473     CMD_MOVE_DOWN_RIGHT,
474     CMD_RUN_LEFT,                      // 1000 +  10
475     CMD_RUN_DOWN,
476     CMD_RUN_UP,
477     CMD_RUN_RIGHT,
478     CMD_RUN_UP_LEFT,
479     CMD_RUN_DOWN_LEFT,
480     CMD_RUN_UP_RIGHT,
481     CMD_RUN_DOWN_RIGHT,
482     CMD_OPEN_DOOR_LEFT,
483     CMD_OPEN_DOOR_DOWN,
484     CMD_OPEN_DOOR_UP,                  // 1000 +  20
485     CMD_OPEN_DOOR_RIGHT,
486     CMD_OPEN_DOOR_UP_LEFT,
487     CMD_OPEN_DOOR_DOWN_LEFT,
488     CMD_OPEN_DOOR_UP_RIGHT,
489     CMD_OPEN_DOOR_DOWN_RIGHT,
490     CMD_OPEN_DOOR,
491     CMD_CLOSE_DOOR,
492     CMD_REST,
493     CMD_GO_UPSTAIRS,
494     CMD_GO_DOWNSTAIRS,                 // 1000 +  30
495     CMD_TOGGLE_AUTOPICKUP,
496     CMD_PICKUP,
497     CMD_DROP,
498     CMD_BUTCHER,
499     CMD_INSPECT_FLOOR,
500     CMD_EXAMINE_OBJECT,
501     CMD_EVOKE,
502     CMD_WIELD_WEAPON,
503     CMD_WEAPON_SWAP,
504     CMD_THROW,                         // 1000 +  40
505     CMD_FIRE,
506     CMD_WEAR_ARMOUR,
507     CMD_REMOVE_ARMOUR,
508     CMD_WEAR_JEWELLERY,
509     CMD_REMOVE_JEWELLERY,
510     CMD_LIST_WEAPONS,
511     CMD_LIST_ARMOUR,
512     CMD_LIST_JEWELLERY,
513     CMD_ZAP_WAND,
514     CMD_CAST_SPELL,                    // 1000 +  50
515     CMD_MEMORISE_SPELL,
516     CMD_USE_ABILITY,
517     CMD_PRAY,
518     CMD_EAT,
519     CMD_QUAFF,
520     CMD_READ,
521     CMD_LOOK_AROUND,
522     CMD_SEARCH,
523     CMD_SHOUT,
524     CMD_DISARM_TRAP,                   // 1000 +  60
525     CMD_CHARACTER_DUMP,
526     CMD_DISPLAY_COMMANDS,
527     CMD_DISPLAY_INVENTORY,
528     CMD_DISPLAY_KNOWN_OBJECTS,
529     CMD_DISPLAY_MUTATIONS,
530     CMD_DISPLAY_SKILLS,
531     CMD_DISPLAY_MAP,
532     CMD_DISPLAY_OVERMAP,
533     CMD_DISPLAY_RELIGION,
534     CMD_DISPLAY_CHARACTER_STATUS,      // 1000 +  70
535     CMD_EXPERIENCE_CHECK,
536     CMD_GET_VERSION,
537     CMD_ADJUST_INVENTORY,
538     CMD_REPLAY_MESSAGES,
539     CMD_REDRAW_SCREEN,
540     CMD_MACRO_ADD,
541     CMD_MACRO_SAVE,
542     CMD_SAVE_GAME,
543     CMD_SAVE_GAME_NOW,
544     CMD_SUSPEND_GAME,                  // 1000 +  80
545     CMD_QUIT,
546     CMD_WIZARD,
547     CMD_DESTROY_ITEM,
548     CMD_OBSOLETE_INVOKE
549 };
550 
551 enum CONFIRM_LEVEL
552 {
553     CONFIRM_NONE_EASY,
554     CONFIRM_SAFE_EASY,
555     CONFIRM_ALL_EASY
556 };
557 
558 enum CORPSE_EFFECTS
559 {
560     CE_NOCORPSE,                       //    0
561     CE_CLEAN,                          //    1
562     CE_CONTAMINATED,                   //    2
563     CE_POISONOUS,                      //    3
564     CE_HCL,                            //    4
565     CE_MUTAGEN_RANDOM,                 //    5
566     CE_MUTAGEN_GOOD, //    6 - may be worth implementing {dlb}
567     CE_MUTAGEN_BAD, //    7 - may be worth implementing {dlb}
568     CE_RANDOM, //    8 - not used, but may be worth implementing {dlb}
569     CE_ROTTEN = 50 //   50 - must remain at 50 for now {dlb}
570 };
571 
572 enum CORPSES
573 {
574     CORPSE_BODY,                       //    0
575     CORPSE_SKELETON
576 };
577 
578 enum DEATH_KNIGHT_CHOICES
579 {
580     DK_NO_SELECTION,
581     DK_NECROMANCY,
582     DK_YREDELEMNUL,
583     DK_RANDOM
584 };
585 
586 enum DECKS
587 {
588     DECK_OF_WONDERS,                   //    0
589     DECK_OF_SUMMONING,
590     DECK_OF_TRICKS,
591     DECK_OF_POWER,
592     DECK_OF_PUNISHMENT
593 };
594 
595 enum DELAY
596 {
597     DELAY_NOT_DELAYED,
598     DELAY_EAT,
599     DELAY_ARMOUR_ON,
600     DELAY_ARMOUR_OFF,
601     DELAY_MEMORIZE,
602     DELAY_BUTCHER,
603     DELAY_AUTOPICKUP,
604     DELAY_WEAPON_SWAP,                 // for easy_butcher
605     DELAY_PASSWALL,
606     DELAY_DROP_ITEM,
607     DELAY_ASCENDING_STAIRS,
608     DELAY_DESCENDING_STAIRS,
609     DELAY_INTERUPTABLE        = 100,   // simple interuptable delay
610     DELAY_UNINTERUPTABLE               // simple uninteruptable delay
611 };
612 
613 enum DEMON_BEAMS
614 {
615     DMNBM_HELLFIRE,                    //    0
616     DMNBM_SMITING,
617     DMNBM_BRAIN_FEED,
618     DMNBM_MUTATION
619 };
620 
621 enum DEMON_CLASSES                     // summon_any_demon()
622 {
623     DEMON_LESSER,                      //    0: Class V
624     DEMON_COMMON,                      //    1: Class II-IV
625     DEMON_GREATER                      //    2: Class I
626 };
627 
628 enum DESCRIPTION_LEVEL
629 {
630     DESC_CAP_THE,                      // 0
631     DESC_NOCAP_THE,                    // 1
632     DESC_CAP_A,                        // 2
633     DESC_NOCAP_A,                      // 3
634     DESC_CAP_YOUR,                     // 4
635     DESC_NOCAP_YOUR,                   // 5
636     DESC_PLAIN,                        // 6
637     DESC_NOCAP_ITS,                    // 7
638     DESC_INVENTORY_EQUIP,                    // 8
639     DESC_INVENTORY               // 8
640 };
641 
642 enum DIRECTION                         // (unsigned char) you.char_direction
643 {
644     DIR_DESCENDING = 0, //    0 - change and lose savefile compatibility (!!!)
645     DIR_ASCENDING = 1   //    1 - change and lose savefile compatibility (!!!)
646 };
647 
648 enum DUNGEON_FEATURES                  // (unsigned char) grd[][]
649 {
650     DNGN_UNSEEN,                       //    0
651     DNGN_ROCK_WALL,
652     DNGN_STONE_WALL,
653     DNGN_CLOSED_DOOR,
654     DNGN_METAL_WALL,
655     DNGN_SECRET_DOOR,                  //    5
656     DNGN_GREEN_CRYSTAL_WALL,
657     DNGN_ORCISH_IDOL,
658     DNGN_WAX_WALL,                     //    8
659     DNGN_PERMAROCK_WALL,               //    9 - for undiggable walls
660     DNGN_LAST_SOLID_TILE = 10,         //   10 - just here temporarily {dlb}
661 
662     DNGN_LAVA_X = 11,                  //   11
663     DNGN_WATER_X,                      //   12
664     DNGN_SILVER_STATUE = 21,           //   21
665     DNGN_GRANITE_STATUE,
666     DNGN_ORANGE_CRYSTAL_STATUE,        //   23
667     DNGN_STATUE_39 = 39,               //   39
668 
669     DNGN_LAVA = 61,                    //   61
670     DNGN_DEEP_WATER,                   //   62
671     DNGN_SHALLOW_WATER = 65,           //   65
672     DNGN_WATER_STUCK,
673 
674     DNGN_FLOOR,                        //   67
675     DNGN_ENTER_HELL = 69,              //   69
676     DNGN_OPEN_DOOR,                    //   70
677     DNGN_BRANCH_STAIRS,                //   71
678     DNGN_TRAP_MECHANICAL = 75,         //   75
679     DNGN_TRAP_MAGICAL,
680     DNGN_TRAP_III,
681     DNGN_UNDISCOVERED_TRAP,            //   78
682 
683     DNGN_ENTER_SHOP = 80,              //   80
684     DNGN_ENTER_LABYRINTH,
685 
686     DNGN_STONE_STAIRS_DOWN_I,
687     DNGN_STONE_STAIRS_DOWN_II,
688     DNGN_STONE_STAIRS_DOWN_III,
689     DNGN_ROCK_STAIRS_DOWN,   //   85 - was this supposed to be a ladder? {dlb}
690 
691     DNGN_STONE_STAIRS_UP_I,
692     DNGN_STONE_STAIRS_UP_II,
693     DNGN_STONE_STAIRS_UP_III,
694     DNGN_ROCK_STAIRS_UP,    //   89 - was this supposed to be a ladder? {dlb}
695 
696     DNGN_ENTER_DIS = 92,               //   92
697     DNGN_ENTER_GEHENNA,
698     DNGN_ENTER_COCYTUS,
699     DNGN_ENTER_TARTARUS,               //   95
700     DNGN_ENTER_ABYSS,
701     DNGN_EXIT_ABYSS,
702     DNGN_STONE_ARCH,
703     DNGN_ENTER_PANDEMONIUM,
704     DNGN_EXIT_PANDEMONIUM,             //  100
705     DNGN_TRANSIT_PANDEMONIUM,          //  101
706 
707     DNGN_BUILDER_SPECIAL_WALL = 105,   //  105; builder() only
708     DNGN_BUILDER_SPECIAL_FLOOR,        //  106; builder() only
709 
710     DNGN_ENTER_ORCISH_MINES = 110,     //  110
711     DNGN_ENTER_HIVE,
712     DNGN_ENTER_LAIR,
713     DNGN_ENTER_SLIME_PITS,
714     DNGN_ENTER_VAULTS,
715     DNGN_ENTER_CRYPT,                //  115
716     DNGN_ENTER_HALL_OF_BLADES,
717     DNGN_ENTER_ZOT,
718     DNGN_ENTER_TEMPLE,
719     DNGN_ENTER_SNAKE_PIT,
720     DNGN_ENTER_ELVEN_HALLS,            //  120
721     DNGN_ENTER_TOMB,
722     DNGN_ENTER_SWAMP,                  //  122
723 
724     DNGN_RETURN_FROM_ORCISH_MINES = 130, //  130
725     DNGN_RETURN_FROM_HIVE,
726     DNGN_RETURN_FROM_LAIR,
727     DNGN_RETURN_FROM_SLIME_PITS,
728     DNGN_RETURN_FROM_VAULTS,
729     DNGN_RETURN_FROM_CRYPT,            //  135
730     DNGN_RETURN_FROM_HALL_OF_BLADES,
731     DNGN_RETURN_FROM_ZOT,
732     DNGN_RETURN_FROM_TEMPLE,
733     DNGN_RETURN_FROM_SNAKE_PIT,
734     DNGN_RETURN_FROM_ELVEN_HALLS,      //  140
735     DNGN_RETURN_FROM_TOMB,
736     DNGN_RETURN_FROM_SWAMP,               //  142
737 
738     DNGN_ALTAR_ZIN = 180,              //  180
739     DNGN_ALTAR_SHINING_ONE,
740     DNGN_ALTAR_KIKUBAAQUDGHA,
741     DNGN_ALTAR_YREDELEMNUL,
742     DNGN_ALTAR_XOM,
743     DNGN_ALTAR_VEHUMET,                //  185
744     DNGN_ALTAR_OKAWARU,
745     DNGN_ALTAR_MAKHLEB,
746     DNGN_ALTAR_SIF_MUNA,
747     DNGN_ALTAR_TROG,
748     DNGN_ALTAR_NEMELEX_XOBEH,          //  190
749     DNGN_ALTAR_ELYVILON,               //  191
750 
751     DNGN_BLUE_FOUNTAIN = 200,          //  200
752     DNGN_DRY_FOUNTAIN_I,
753     DNGN_SPARKLING_FOUNTAIN,           // aka 'Magic Fountain' {dlb}
754     DNGN_DRY_FOUNTAIN_II,
755     DNGN_DRY_FOUNTAIN_III,
756     DNGN_DRY_FOUNTAIN_IV,              //  205
757     DNGN_DRY_FOUNTAIN_V,
758     DNGN_DRY_FOUNTAIN_VI,
759     DNGN_DRY_FOUNTAIN_VII,
760     DNGN_DRY_FOUNTAIN_VIII,
761     DNGN_PERMADRY_FOUNTAIN = 210  // added (from dungeon.cc/maps.cc) 22jan2000 {dlb}
762 };
763 
764 enum DURATIONS                         // you.duration[]
765 {
766     DUR_LIQUID_FLAMES,                 //    0
767     DUR_ICY_ARMOUR,
768     DUR_REPEL_MISSILES,
769     DUR_PRAYER,
770     DUR_REGENERATION,
771     DUR_SWIFTNESS,                     //    5
772     DUR_INSULATION,
773     DUR_STONEMAIL,
774     DUR_CONTROLLED_FLIGHT,
775     DUR_TELEPORT,
776     DUR_CONTROL_TELEPORT,              //   10
777     DUR_RESIST_POISON,
778     DUR_BREATH_WEAPON,
779     DUR_TRANSFORMATION,
780     DUR_DEATH_CHANNEL,
781     DUR_DEFLECT_MISSILES,              //   15
782 //jmf: new durations:
783     DUR_FORESCRY,
784     DUR_SEE_INVISIBLE,
785     DUR_WEAPON_BRAND, // general "branding" spell counter
786     DUR_SILENCE,
787     DUR_GLAMOUR,                       //   20
788     DUR_SHUGGOTH_SEED_RELOAD,
789     DUR_INFECTED_SHUGGOTH_SEED,
790     DUR_CONDENSATION_SHIELD,           //   23
791     DUR_STONESKIN,
792     DUR_REPEL_UNDEAD,                  //   25
793     DUR_LAST_DUR, //jmf: for asserts
794     NUM_DURATIONS = 30
795     // set at 30 to prevent savefile incompatibilities 12mar2000{dlb}
796 };
797 
798 enum ENCHANTMENT                       // menv[].enchantment[]
799 {
800     ENCH_NONE = 0,                     //    0
801     ENCH_SLOW,
802     ENCH_HASTE,                        //    2
803     ENCH_FEAR = 4,                     //    4
804     ENCH_CONFUSION,                    //    5
805     ENCH_INVIS,
806     ENCH_YOUR_POISON_I,
807     ENCH_YOUR_POISON_II,
808     ENCH_YOUR_POISON_III,
809     ENCH_YOUR_POISON_IV,               //   10
810     ENCH_YOUR_SHUGGOTH_I,              //jmf: Shuggothim!
811     ENCH_YOUR_SHUGGOTH_II,
812     ENCH_YOUR_SHUGGOTH_III,
813     ENCH_YOUR_SHUGGOTH_IV,
814     ENCH_YOUR_ROT_I, //   15 //jmf: rotting effect for monsters
815     ENCH_YOUR_ROT_II,
816     ENCH_YOUR_ROT_III,
817     ENCH_YOUR_ROT_IV,
818     ENCH_SUMMON = 19,                  //   19
819     ENCH_ABJ_I,                        //   20
820     ENCH_ABJ_II,
821     ENCH_ABJ_III,
822     ENCH_ABJ_IV,
823     ENCH_ABJ_V,
824     ENCH_ABJ_VI,                       //   25
825     ENCH_BACKLIGHT_I,                  //jmf: backlight for Corona spell
826     ENCH_BACKLIGHT_II,
827     ENCH_BACKLIGHT_III,
828     ENCH_BACKLIGHT_IV,
829     ENCH_CHARM = 30,                   //   30
830     ENCH_YOUR_STICKY_FLAME_I,
831     ENCH_YOUR_STICKY_FLAME_II,
832     ENCH_YOUR_STICKY_FLAME_III,
833     ENCH_YOUR_STICKY_FLAME_IV,         //   34
834     ENCH_GLOWING_SHAPESHIFTER = 38,    //   38
835     ENCH_SHAPESHIFTER,
836     ENCH_TP_I,                         //   40
837     ENCH_TP_II,
838     ENCH_TP_III,
839     ENCH_TP_IV,                        //   43
840     ENCH_POISON_I = 57,                //   57
841     ENCH_POISON_II,
842     ENCH_POISON_III,
843     ENCH_POISON_IV,                    //   60
844     ENCH_STICKY_FLAME_I,
845     ENCH_STICKY_FLAME_II,
846     ENCH_STICKY_FLAME_III,
847     ENCH_STICKY_FLAME_IV,
848     ENCH_FRIEND_ABJ_I,                 //   no longer used
849     ENCH_FRIEND_ABJ_II,                //   no longer used
850     ENCH_FRIEND_ABJ_III,               //   no longer used
851     ENCH_FRIEND_ABJ_IV,                //   no longer used
852     ENCH_FRIEND_ABJ_V,                 //   no longer used
853     ENCH_FRIEND_ABJ_VI,                //   no longer used
854     ENCH_CREATED_FRIENDLY,             //   no longer used
855     ENCH_SLEEP_WARY,
856     ENCH_SUBMERGED,                    //   73 (includes air elementals in air)
857     ENCH_SHORT_LIVED,                  //   74 for ball lightning
858     NUM_ENCHANTMENTS
859 };
860 
861 enum ENCHANT_STATS
862 {
863     ENCHANT_TO_HIT,
864     ENCHANT_TO_DAM
865 };
866 
867 enum EQUIPMENT
868 {
869     EQ_WEAPON,                         //    0
870     EQ_CLOAK,
871     EQ_HELMET,
872     EQ_GLOVES,
873     EQ_BOOTS,
874     EQ_SHIELD,                         //    5
875     EQ_BODY_ARMOUR,
876     EQ_LEFT_RING,
877     EQ_RIGHT_RING,
878     EQ_AMULET,
879     NUM_EQUIP,
880 
881     // these aren't actual equipment slots, they're categories for functions
882     EQ_STAFF            = 100,         // weapon with base_type OBJ_STAVES
883     EQ_RINGS,                          // check both rings
884     EQ_RINGS_PLUS,                     // check both rings and sum plus
885     EQ_RINGS_PLUS2,                    // check both rings and sum plus2
886     EQ_ALL_ARMOUR                      // check all armour types
887 };
888 
889 enum FIRE_TYPES
890 {
891     FIRE_NONE,
892     FIRE_LAUNCHER,
893     FIRE_DART,
894     FIRE_STONE,
895     FIRE_DAGGER,
896     FIRE_SPEAR,
897     FIRE_HAND_AXE,
898     FIRE_CLUB,
899     NUM_FIRE_TYPES
900 };
901 
902 enum FLUSH_REASONS
903 {
904     FLUSH_ON_FAILURE,                  // spell/ability failed to cast
905     FLUSH_BEFORE_COMMAND,              // flush before getting a command
906     FLUSH_ON_MESSAGE,                  // flush when printing a message
907     NUM_FLUSH_REASONS
908 };
909 
910 enum FOODS                             // mitm[].sub_type[]
911 {
912     FOOD_MEAT_RATION,                  //    0
913     FOOD_BREAD_RATION,
914     FOOD_PEAR,
915     FOOD_APPLE,
916     FOOD_CHOKO,
917     FOOD_HONEYCOMB,                    //    5
918     FOOD_ROYAL_JELLY,
919     FOOD_SNOZZCUMBER,
920     FOOD_PIZZA,
921     FOOD_APRICOT,
922     FOOD_ORANGE,                       //   10
923     FOOD_BANANA,
924     FOOD_STRAWBERRY,
925     FOOD_RAMBUTAN,
926     FOOD_LEMON,
927     FOOD_GRAPE,                        //   15
928     FOOD_SULTANA,
929     FOOD_LYCHEE,
930     FOOD_BEEF_JERKY,
931     FOOD_CHEESE,
932     FOOD_SAUSAGE,                      //   20
933     FOOD_CHUNK,
934     NUM_FOODS
935 };
936 
937 enum GENUS_PLAYER                      // see player::player_genus()
938 {
939     GENPC_DRACONIAN,                   //    0
940     GENPC_ELVEN,                       //    1
941     GENPC_DWARVEN                      //    2
942 };
943 
944 enum GENDER
945 {
946     GENDER_NEUTER,
947     GENDER_MALE,
948     GENDER_FEMALE
949 };
950 
951 enum GHOST_VALUES
952 {
953     GVAL_MAX_HP,        // 0
954     GVAL_EV,
955     GVAL_AC,
956     GVAL_SEE_INVIS,
957     GVAL_RES_FIRE,
958     GVAL_RES_COLD,      // 5
959     GVAL_RES_ELEC,
960     GVAL_DAMAGE,
961     GVAL_BRAND,
962     GVAL_SPECIES,
963     GVAL_BEST_SKILL,    // 10
964     GVAL_SKILL_LEVEL,
965     GVAL_EXP_LEVEL,
966     GVAL_CLASS,
967     GVAL_SPELL_1,       // 14
968     GVAL_SPELL_2,
969     GVAL_SPELL_3,
970     GVAL_SPELL_4,
971     GVAL_SPELL_5,
972     GVAL_SPELL_6,       // 19
973     NUM_GHOST_VALUES,   // should always be last value
974 
975     // these values are for demonlords, which override the above:
976     GVAL_DEMONLORD_SPELLCASTER = 9,
977     GVAL_DEMONLORD_FLY,                 // 10
978     GVAL_DEMONLORD_UNUSED,              // 11
979     GVAL_DEMONLORD_HIT_DICE,            // 12
980     GVAL_DEMONLORD_CYCLE_COLOUR         // 13
981 };
982 
983 enum GODS                              //  you.religion
984 {
985     GOD_NO_GOD,                        //    0
986     GOD_ZIN,
987     GOD_SHINING_ONE,
988     GOD_KIKUBAAQUDGHA,
989     GOD_YREDELEMNUL,
990     GOD_XOM,                           //    5
991     GOD_VEHUMET,
992     GOD_OKAWARU,
993     GOD_MAKHLEB,
994     GOD_SIF_MUNA,
995     GOD_TROG,                          //   10
996     GOD_NEMELEX_XOBEH,
997     GOD_ELYVILON,
998     NUM_GODS,                          // always after last god
999 
1000     GOD_RANDOM  = 100
1001 };
1002 
1003 enum GOOD_THINGS
1004 {
1005     GOOD_KILLED_LIVING = 1, //    1 - killed a living monster in god's name
1006     GOOD_KILLED_UNDEAD,     //    2 - killed an undead in god's name
1007     GOOD_KILLED_DEMON,      //    3 - killed a demon in god's name
1008     GOOD_KILLED_ANGEL_I,    //    4 - killed an angel (any time)
1009     GOOD_KILLED_ANGEL_II,   //    5 - killed an angel in god's name
1010     // (all above pass HD of monster as pgain)
1011     GOOD_HACKED_CORPSE,     //    6 - hacked up a corpse in god's name
1012     GOOD_OFFER_STUFF,       //    7 - offered inanimate stuff at an altar
1013     GOOD_OFFER_CORPSE,      // as above,including at least one corpse
1014     GOOD_SLAVES_KILL_LIVING,//    9 - undead slaves killed a living thing
1015     GOOD_SERVANTS_KILL,     //   10 - any servants kill anything
1016     GOOD_CARDS,             //   11 - cards (Nemelex)
1017     GOOD_KILLED_WIZARD,
1018     GOOD_KILLED_PRIEST,
1019     GOOD_POISON,
1020     GOOD_ATTACKED_FRIEND,
1021     NUM_GOOD_THINGS
1022 };
1023 
1024 enum HANDS_REQUIRED
1025 {
1026     HANDS_ONE_HANDED = 1,              //    1
1027     HANDS_TWO_HANDED,
1028     HANDS_ONE_OR_TWO_HANDED
1029 };
1030 
1031 enum HELMET_TYPES  // used in pluses2
1032 {
1033     THELM_HELMET        = 0x0000,
1034     THELM_HELM          = 0x0001,
1035     THELM_CAP           = 0x0002,
1036     THELM_WIZARD_HAT    = 0x0003,
1037     THELM_NUM_TYPES     = 4,
1038 
1039     THELM_SPECIAL       = 0x0004,  // type used only for artefacts (mask, hat)
1040     THELM_TYPE_MASK     = 0x00ff,
1041 
1042 
1043     THELM_DESC_PLAIN    = 0x0000,
1044     THELM_DESC_WINGED   = 0x0100,
1045     THELM_DESC_HORNED   = 0x0200,
1046     THELM_DESC_CRESTED  = 0x0300,
1047     THELM_DESC_PLUMED   = 0x0400,
1048     THELM_DESC_SPIKED   = 0x0500,
1049     THELM_DESC_VISORED  = 0x0600,
1050     THELM_DESC_JEWELLED = 0x0700,
1051 
1052     THELM_DESC_MASK     = 0xff00
1053 };
1054 
1055 #if 0
1056 enum HELMET_DESCRIPTIONS
1057 {
1058     DHELM_WINGED = 1,                  //    1
1059     DHELM_HORNED,
1060     DHELM_CRESTED,
1061     DHELM_PLUMED,
1062     DHELM_SPIKED,                      //    5
1063     DHELM_VISORED,
1064     DHELM_JEWELLED
1065 };
1066 
1067 enum HELMET_TYPES  // used in pluses2
1068 {
1069     THELM_HELMET = 0,
1070     THELM_HELM,
1071     THELM_CAP,
1072     THELM_WIZARD_HAT,
1073     NUM_HELMET_TYPES,
1074     THELM_SPECIAL               // type used only for artefacts (mask, hat)
1075 };
1076 #endif
1077 
1078 enum BOOT_TYPES  // used in pluses2
1079 {
1080     TBOOT_BOOTS = 0,
1081     TBOOT_NAGA_BARDING,
1082     TBOOT_CENTAUR_BARDING,
1083     NUM_BOOT_TYPES
1084 };
1085 
1086 
1087 enum HUNGER_STATES                     // you.hunger_state
1088 {
1089     HS_RAVENOUS,                       //    0: not used within code, really
1090     HS_STARVING,
1091     HS_HUNGRY,
1092     HS_SATIATED,                       // "not hungry" state
1093     HS_FULL,
1094     HS_ENGORGED                        //    5
1095 };
1096 
1097 enum ITEM_STATUS_FLAGS      // per item flags: ie. ident status, cursed status
1098 {
1099     ISFLAG_KNOW_CURSE        = 0x00000001,  // curse status
1100     ISFLAG_KNOW_TYPE         = 0x00000002,  // artefact name, sub/special types
1101     ISFLAG_KNOW_PLUSES       = 0x00000004,  // to hit/to dam/to AC/charges
1102     ISFLAG_KNOW_PROPERTIES   = 0x00000008,  // know special artefact properties
1103     ISFLAG_IDENT_MASK        = 0x0000000F,  // mask of all id related flags
1104 
1105     // these three masks are of the minimal flags set upon using equipment:
1106     ISFLAG_EQ_WEAPON_MASK    = 0x0000000B,  // mask of flags for weapon equip
1107     ISFLAG_EQ_ARMOUR_MASK    = 0x0000000F,  // mask of flags for armour equip
1108     ISFLAG_EQ_JEWELLERY_MASK = 0x0000000F,  // mask of flags for known jewellery
1109 
1110     ISFLAG_CURSED            = 0x00000100,  // cursed
1111     ISFLAG_RESERVED_1        = 0x00000200,  // reserved (re-curses on wield?)
1112     ISFLAG_RESERVED_2        = 0x00000400,  // reserved (heavy cursed?)
1113     ISFLAG_RESERVED_3        = 0x00000800,  // reserved (perma-cursed?)
1114     ISFLAG_CURSE_MASK        = 0x00000F00,  // mask of all curse related flags
1115 
1116     ISFLAG_RANDART           = 0x00001000,  // special value is seed
1117     ISFLAG_UNRANDART         = 0x00002000,  // is an unrandart
1118     ISFLAG_ARTEFACT_MASK     = 0x00003000,  // randart or unrandart
1119 
1120     ISFLAG_NO_DESC           = 0x00000000,  // used for clearing these flags
1121     ISFLAG_GLOWING           = 0x00010000,  // weapons or armour
1122     ISFLAG_RUNED             = 0x00020000,  // weapons or armour
1123     ISFLAG_EMBROIDERED_SHINY = 0x00040000,  // armour: depends on sub-type
1124     ISFLAG_COSMETIC_MASK     = 0x00070000,  // mask of cosmetic descriptions
1125 
1126     ISFLAG_NO_RACE           = 0x00000000,  // used for clearing these flags
1127     ISFLAG_ORCISH            = 0x01000000,  // low quality items
1128     ISFLAG_DWARVEN           = 0x02000000,  // strong and robust items
1129     ISFLAG_ELVEN             = 0x04000000,  // light and accurate items
1130     ISFLAG_RACIAL_MASK       = 0x07000000,  // mask of racial equipment types
1131 
1132     ISFLAG_DEBUG_MARK        = 0x80000000   // used for testing item structure
1133 };
1134 
1135 enum ITEM_DESCRIPTIONS
1136 {
1137     IDESC_WANDS,
1138     IDESC_POTIONS,
1139     IDESC_SCROLLS,                      // special field (like the others)
1140     IDESC_RINGS,
1141     IDESC_SCROLLS_II                    // pluses field
1142 };
1143 
1144 enum ITEM_MAKE_SPECIES                  // used only for race during creation
1145 {
1146     MAKE_ITEM_ELVEN       = 1,
1147     MAKE_ITEM_DWARVEN     = 2,
1148     MAKE_ITEM_ORCISH      = 3,
1149 
1150     MAKE_ITEM_NO_RACE     = 100,
1151     MAKE_ITEM_RANDOM_RACE = 250
1152 };
1153 
1154 enum ITEM_TYPE_ID       // used for first index of id[4][50]
1155 {
1156     IDTYPE_WANDS = 0,
1157     IDTYPE_SCROLLS,
1158     IDTYPE_JEWELLERY,
1159     IDTYPE_POTIONS
1160 };
1161 
1162 enum ITEM_TYPE_ID_STATE  // used for values in id[4][50]
1163 {
1164     ID_UNKNOWN_TYPE = 0,
1165     ID_KNOWN_TYPE,
1166     ID_TRIED_TYPE
1167 };
1168 
1169 enum JEWELLERY
1170 {
1171     RING_REGENERATION,                 //    0
1172     RING_PROTECTION,
1173     RING_PROTECTION_FROM_FIRE,
1174     RING_POISON_RESISTANCE,
1175     RING_PROTECTION_FROM_COLD,
1176     RING_STRENGTH,                     //    5
1177     RING_SLAYING,
1178     RING_SEE_INVISIBLE,
1179     RING_INVISIBILITY,
1180     RING_HUNGER,
1181     RING_TELEPORTATION,                //   10
1182     RING_EVASION,
1183     RING_SUSTAIN_ABILITIES,
1184     RING_SUSTENANCE,
1185     RING_DEXTERITY,
1186     RING_INTELLIGENCE,                 //   15
1187     RING_WIZARDRY,
1188     RING_MAGICAL_POWER,
1189     RING_LEVITATION,
1190     RING_LIFE_PROTECTION,
1191     RING_PROTECTION_FROM_MAGIC,        //   20
1192     RING_FIRE,
1193     RING_ICE,
1194     RING_TELEPORT_CONTROL,             //   23
1195     AMU_RAGE = 35,                     //   35
1196     AMU_RESIST_SLOW,
1197     AMU_CLARITY,
1198     AMU_WARDING,
1199     AMU_RESIST_CORROSION,
1200     AMU_THE_GOURMAND,                  //   40
1201     AMU_CONSERVATION,
1202     AMU_CONTROLLED_FLIGHT,
1203     AMU_INACCURACY,
1204     AMU_RESIST_MUTATION,
1205     NUM_JEWELLERY
1206 };
1207 
1208 enum JOB
1209 {
1210     JOB_FIGHTER,                       //    0
1211     JOB_WIZARD,
1212     JOB_PRIEST,
1213     JOB_THIEF,
1214     JOB_GLADIATOR,
1215     JOB_NECROMANCER,                   //    5
1216     JOB_PALADIN,
1217     JOB_ASSASSIN,
1218     JOB_BERSERKER,
1219     JOB_HUNTER,
1220     JOB_CONJURER,                      //   10
1221     JOB_ENCHANTER,
1222     JOB_FIRE_ELEMENTALIST,
1223     JOB_ICE_ELEMENTALIST,
1224     JOB_SUMMONER,
1225     JOB_AIR_ELEMENTALIST,              //   15
1226     JOB_EARTH_ELEMENTALIST,
1227     JOB_CRUSADER,
1228     JOB_DEATH_KNIGHT,
1229     JOB_VENOM_MAGE,
1230     JOB_CHAOS_KNIGHT,                  //   20
1231     JOB_TRANSMUTER,
1232     JOB_HEALER,                        //   22
1233     JOB_QUITTER,                       //   23 -- this is job 'x', don't use
1234     JOB_REAVER,                        //   24
1235     JOB_STALKER,                       //   25
1236     JOB_MONK,
1237     JOB_WARPER,
1238     JOB_WANDERER,                      //   23
1239     NUM_JOBS,                          // always after the last job
1240 
1241     JOB_UNKNOWN = 100
1242 };
1243 
1244 enum KILLBY
1245 {
1246     KILLED_BY_MONSTER,                 //    0
1247     KILLED_BY_POISON,
1248     KILLED_BY_CLOUD,
1249     KILLED_BY_BEAM,                    //    3
1250     KILLED_BY_DEATHS_DOOR,  // should be deprecated, but you never know {dlb}
1251     KILLED_BY_LAVA,                    //    5
1252     KILLED_BY_WATER,
1253     KILLED_BY_STUPIDITY,
1254     KILLED_BY_WEAKNESS,
1255     KILLED_BY_CLUMSINESS,
1256     KILLED_BY_TRAP,                    //   10
1257     KILLED_BY_LEAVING,
1258     KILLED_BY_WINNING,
1259     KILLED_BY_QUITTING,
1260     KILLED_BY_DRAINING,
1261     KILLED_BY_STARVATION,              //   15
1262     KILLED_BY_FREEZING,
1263     KILLED_BY_BURNING,
1264     KILLED_BY_WILD_MAGIC,
1265     KILLED_BY_XOM,
1266     KILLED_BY_STATUE,                  //   20
1267     KILLED_BY_ROTTING,
1268     KILLED_BY_TARGETTING,
1269     KILLED_BY_SPORE,
1270     KILLED_BY_TSO_SMITING,
1271     KILLED_BY_PETRIFICATION,           // 25
1272     KILLED_BY_SHUGGOTH,
1273     KILLED_BY_SOMETHING,
1274     KILLED_BY_FALLING_DOWN_STAIRS,
1275     KILLED_BY_ACID,
1276     NUM_KILLBY
1277 };
1278 
1279 enum KILLER                            // monster_die(), thing_thrown
1280 {
1281     KILL_YOU = 1,                      //    1
1282     KILL_MON,
1283     KILL_YOU_MISSILE,
1284     KILL_MON_MISSILE,
1285     KILL_MISC,                         //    5
1286     KILL_RESET                         // abjuration, etc.
1287 };
1288 
1289 #define YOU_KILL(x) ((x) == KILL_YOU || (x) == KILL_YOU_MISSILE)
1290 #define MON_KILL(x) ((x) == KILL_MON || (x) == KILL_MON_MISSILE)
1291 
1292 enum LEVEL_TYPES                       // you.level_type
1293 {
1294     LEVEL_DUNGEON,                     //    0
1295     LEVEL_LABYRINTH,
1296     LEVEL_ABYSS,
1297     LEVEL_PANDEMONIUM
1298 };
1299 
1300 enum LOAD_MODE
1301 {
1302     LOAD_START_GAME,
1303     LOAD_RESTART_GAME,
1304     LOAD_ENTER_LEVEL
1305 };
1306 
1307 enum MAP_SECTIONS                      // see maps.cc and dungeon.cc {dlb}
1308 {
1309     MAP_NORTH = 1,                     //    1
1310     MAP_NORTHWEST,
1311     MAP_NORTHEAST,
1312     MAP_SOUTHWEST,
1313     MAP_SOUTHEAST,                     //    5
1314     MAP_ENCOMPASS,
1315     MAP_NORTH_DIS
1316 };
1317 
1318 // if you mess with this list, you'll need to make changes in initfile.cc
1319 enum MESSAGE_CHANNEL
1320 {
1321     MSGCH_PLAIN,          // regular text
1322     MSGCH_PROMPT,         // various prompts
1323     MSGCH_GOD,            // god/religion (param is god)
1324     MSGCH_DURATION,       // effect down/warnings
1325     MSGCH_DANGER,         // serious life threats (ie very large HP attacks)
1326     MSGCH_WARN,           // much less serious threats
1327     MSGCH_FOOD,           // hunger notices
1328     MSGCH_RECOVERY,       // recovery from disease/stat/poison condition
1329     MSGCH_TALK,           // monster talk (param is monster type)
1330     MSGCH_INTRINSIC_GAIN, // player level/stat/species-power gains
1331     MSGCH_MUTATION,       // player gain/lose mutations
1332     MSGCH_MONSTER_SPELL,  // monsters casting spells
1333     MSGCH_MONSTER_ENCHANT,// monsters enchantments up and down
1334     MSGCH_MONSTER_DAMAGE, // monster damage reports (param is level)
1335     MSGCH_ROTTEN_MEAT,    // messages about chunks/corpses becoming rotten
1336     MSGCH_EQUIPMENT,      // equipment listing messages
1337     MSGCH_DIAGNOSTICS,     // various diagnostic messages
1338     NUM_MESSAGE_CHANNELS  // always last
1339 };
1340 
1341 enum MESSAGE_COLOURS
1342 {
1343     MSGCOL_BLACK        = 0,    // the order of these colours is important
1344     MSGCOL_BLUE,
1345     MSGCOL_GREEN,
1346     MSGCOL_CYAN,
1347     MSGCOL_RED,
1348     MSGCOL_MAGENTA,
1349     MSGCOL_BROWN,
1350     MSGCOL_LIGHTGRAY,
1351     MSGCOL_DARKGRAY,
1352     MSGCOL_LIGHTBLUE,
1353     MSGCOL_LIGHTGREEN,
1354     MSGCOL_LIGHTCYAN,
1355     MSGCOL_LIGHTMAGENTA,
1356     MSGCOL_YELLOW,
1357     MSGCOL_WHITE,
1358     MSGCOL_DEFAULT,             // use default colour
1359     MSGCOL_ALTERNATE,           // use secondary default colour scheme
1360     MSGCOL_MUTED,               // don't print messages
1361     MSGCOL_PLAIN                // same as plain channel
1362 };
1363 
1364 enum MISCELLANY                        // mitm[].sub_type
1365 {
1366     MISC_BOTTLED_EFREET,               //    0
1367     MISC_CRYSTAL_BALL_OF_SEEING,
1368     MISC_AIR_ELEMENTAL_FAN,
1369     MISC_LAMP_OF_FIRE,
1370     MISC_STONE_OF_EARTH_ELEMENTALS,
1371     MISC_LANTERN_OF_SHADOWS,           //    5
1372     MISC_HORN_OF_GERYON,
1373     MISC_BOX_OF_BEASTS,
1374     MISC_DECK_OF_WONDERS,
1375     MISC_DECK_OF_SUMMONINGS,
1376     MISC_CRYSTAL_BALL_OF_ENERGY,       //   10
1377     MISC_EMPTY_EBONY_CASKET,
1378     MISC_CRYSTAL_BALL_OF_FIXATION,
1379     MISC_DISC_OF_STORMS,
1380     MISC_RUNE_OF_ZOT,
1381     MISC_DECK_OF_TRICKS,               //   15
1382     MISC_DECK_OF_POWER,
1383     MISC_PORTABLE_ALTAR_OF_NEMELEX,
1384     NUM_MISCELLANY // mv: used for random generation
1385 };
1386 
1387 enum MISSILES                          // (unsigned char)
1388 {
1389     MI_STONE,                          //    0
1390     MI_ARROW,
1391     MI_BOLT,
1392     MI_DART,
1393     MI_NEEDLE,
1394     MI_LARGE_ROCK, //jmf: it'd be nice to move MI_LARGE_ROCK to DEBRIS_ROCK
1395     NUM_MISSILES,
1396     MI_EGGPLANT
1397 };
1398 
1399 enum MON_TARG_MODE
1400 {
1401     TARG_ANY,
1402     TARG_ENEMY,
1403     TARG_FRIEND,
1404     TARG_NUM_MODES
1405 };
1406 
1407 enum MONSTERS                          // (int) menv[].type
1408 {
1409     MONS_GIANT_ANT,                    //    0
1410     MONS_GIANT_BAT,
1411     MONS_CENTAUR,
1412     MONS_RED_DEVIL,
1413     MONS_ETTIN,
1414     MONS_FUNGUS,                       //    5
1415     MONS_GOBLIN,
1416     MONS_HOUND,
1417     MONS_IMP,
1418     MONS_JACKAL,
1419     MONS_KILLER_BEE,                   //   10
1420     MONS_KILLER_BEE_LARVA,
1421     MONS_MANTICORE,
1422     MONS_NECROPHAGE,
1423     MONS_ORC,
1424     MONS_PHANTOM,                      //   15
1425     MONS_QUASIT,
1426     MONS_RAT,
1427     MONS_SCORPION,                     //   18
1428     //MONS_TUNNELING_WORM,      // deprecated and now officially removed {dlb}
1429     MONS_UGLY_THING = 20,              //   20
1430     MONS_FIRE_VORTEX,
1431     MONS_WORM,
1432     MONS_ABOMINATION_SMALL,
1433     MONS_YELLOW_WASP,
1434     MONS_ZOMBIE_SMALL,                 //   25
1435     MONS_ANGEL,
1436     MONS_GIANT_BEETLE,
1437     MONS_CYCLOPS,
1438     MONS_DRAGON,
1439     MONS_TWO_HEADED_OGRE,              //   30
1440     MONS_FIEND,
1441     MONS_GIANT_SPORE,
1442     MONS_HOBGOBLIN,
1443     MONS_ICE_BEAST,
1444     MONS_JELLY,                        //   35
1445     MONS_KOBOLD,
1446     MONS_LICH,
1447     MONS_MUMMY,
1448     MONS_GUARDIAN_NAGA,
1449     MONS_OGRE,                         //   40
1450     MONS_PLANT,
1451     MONS_QUEEN_BEE,
1452     MONS_RAKSHASA,
1453     MONS_SNAKE,
1454     MONS_TROLL,                        //   45
1455     MONS_UNSEEN_HORROR,
1456     MONS_VAMPIRE,
1457     MONS_WRAITH,
1458     MONS_ABOMINATION_LARGE,
1459     MONS_YAK,                          //   50
1460     MONS_ZOMBIE_LARGE,
1461     MONS_ORC_WARRIOR,
1462     MONS_KOBOLD_DEMONOLOGIST,
1463     MONS_ORC_WIZARD,
1464     MONS_ORC_KNIGHT,                   //   55
1465     //MONS_WORM_TAIL = 56, // deprecated and now officially removed {dlb}
1466     MONS_WYVERN = 57,                  //   57
1467     MONS_BIG_KOBOLD,
1468     MONS_GIANT_EYEBALL,
1469     MONS_WIGHT,                        //   60
1470     MONS_OKLOB_PLANT,
1471     MONS_WOLF_SPIDER,
1472     MONS_SHADOW,
1473     MONS_HUNGRY_GHOST,
1474     MONS_EYE_OF_DRAINING,              //   65
1475     MONS_BUTTERFLY,
1476     MONS_WANDERING_MUSHROOM,
1477     MONS_EFREET,
1478     MONS_BRAIN_WORM,
1479     MONS_GIANT_ORANGE_BRAIN,           //   70
1480     MONS_BOULDER_BEETLE,
1481     MONS_FLYING_SKULL,
1482     MONS_HELL_HOUND,
1483     MONS_MINOTAUR,
1484     MONS_ICE_DRAGON,                   //   75
1485     MONS_SLIME_CREATURE,
1486     MONS_FREEZING_WRAITH,
1487     MONS_RAKSHASA_FAKE,
1488     MONS_GREAT_ORB_OF_EYES,
1489     MONS_HELLION,                      //   80
1490     MONS_ROTTING_DEVIL,
1491     MONS_TORMENTOR,
1492     MONS_REAPER,
1493     MONS_SOUL_EATER,
1494     MONS_HAIRY_DEVIL,                  //   85
1495     MONS_ICE_DEVIL,
1496     MONS_BLUE_DEVIL,
1497     MONS_BEAST,
1498     MONS_IRON_DEVIL,                   //   89
1499     MONS_GLOWING_SHAPESHIFTER = 98,    //   98
1500     MONS_SHAPESHIFTER,
1501     MONS_GIANT_MITE,                   //  100
1502     MONS_STEAM_DRAGON,
1503     MONS_VERY_UGLY_THING,
1504     MONS_ORC_SORCERER,
1505     MONS_HIPPOGRIFF,
1506     MONS_GRIFFON,                      //  105
1507     MONS_HYDRA,
1508     MONS_SKELETON_SMALL,
1509     MONS_SKELETON_LARGE,
1510     MONS_HELL_KNIGHT,
1511     MONS_NECROMANCER,                  //  110
1512     MONS_WIZARD,
1513     MONS_ORC_PRIEST,
1514     MONS_ORC_HIGH_PRIEST,
1515     MONS_HUMAN,
1516     MONS_GNOLL,                        //  115
1517     MONS_CLAY_GOLEM,
1518     MONS_WOOD_GOLEM,
1519     MONS_STONE_GOLEM,
1520     MONS_IRON_GOLEM,
1521     MONS_CRYSTAL_GOLEM,                //  120
1522     MONS_TOENAIL_GOLEM,
1523     MONS_MOTTLED_DRAGON,
1524     MONS_EARTH_ELEMENTAL,
1525     MONS_FIRE_ELEMENTAL,
1526     MONS_AIR_ELEMENTAL,                //  125
1527     MONS_ICE_FIEND,
1528     MONS_SHADOW_FIEND,
1529     MONS_BROWN_SNAKE,
1530     MONS_GIANT_LIZARD,
1531     MONS_SPECTRAL_WARRIOR,             //  130
1532     MONS_PULSATING_LUMP,
1533     MONS_STORM_DRAGON,
1534     MONS_YAKTAUR,
1535     MONS_DEATH_YAK,
1536     MONS_ROCK_TROLL,                   //  135
1537     MONS_STONE_GIANT,
1538     MONS_FLAYED_GHOST,
1539     MONS_BUMBLEBEE,
1540     MONS_REDBACK,
1541     MONS_INSUBSTANTIAL_WISP,           //  140
1542     MONS_VAPOUR,
1543     MONS_OGRE_MAGE,
1544     MONS_SPINY_WORM,
1545     MONS_DANCING_WEAPON,
1546     MONS_TITAN,                        //  145
1547     MONS_GOLDEN_DRAGON,
1548     MONS_ELF,
1549     MONS_LINDWURM,
1550     MONS_ELEPHANT_SLUG,
1551     MONS_WAR_DOG,                      //  150
1552     MONS_GREY_RAT,
1553     MONS_GREEN_RAT,
1554     MONS_ORANGE_RAT,
1555     MONS_BLACK_SNAKE,
1556     MONS_SHEEP,                        //  155
1557     MONS_GHOUL,
1558     MONS_HOG,
1559     MONS_GIANT_MOSQUITO,
1560     MONS_GIANT_CENTIPEDE,
1561     MONS_IRON_TROLL,                   //  160
1562     MONS_NAGA,
1563     MONS_FIRE_GIANT,
1564     MONS_FROST_GIANT,
1565     MONS_FIREDRAKE,
1566     MONS_SHADOW_DRAGON,                //  165
1567     MONS_YELLOW_SNAKE,
1568     MONS_GREY_SNAKE,
1569     MONS_DEEP_TROLL,
1570     MONS_GIANT_BLOWFLY,
1571     MONS_RED_WASP,                     //  170
1572     MONS_SWAMP_DRAGON,
1573     MONS_SWAMP_DRAKE,
1574     MONS_SOLDIER_ANT,
1575     MONS_HILL_GIANT,
1576     MONS_QUEEN_ANT,                    //  175
1577     MONS_ANT_LARVA,
1578     MONS_GIANT_FROG,
1579     MONS_GIANT_BROWN_FROG,
1580     MONS_SPINY_FROG,
1581     MONS_BLINK_FROG,                   //  180
1582     MONS_GIANT_COCKROACH,
1583     MONS_SMALL_SNAKE,                  //  182
1584     //jmf: new monsters
1585     MONS_SHUGGOTH, //jmf: added for evil spells
1586     MONS_WOLF,     //jmf: added
1587     MONS_WARG,     //jmf: added for orc mines
1588     MONS_BEAR,     //jmf: added bears!
1589     MONS_GRIZZLY_BEAR,
1590     MONS_POLAR_BEAR,
1591     MONS_BLACK_BEAR,  // 189
1592     MONS_SIMULACRUM_SMALL,
1593     MONS_SIMULACRUM_LARGE,
1594     //jmf: end new monsters
1595     MONS_WHITE_IMP = 220,              //  220
1596     MONS_LEMURE,
1597     MONS_UFETUBUS,
1598     MONS_MANES,
1599     MONS_MIDGE,
1600     MONS_NEQOXEC,                      //  225
1601     MONS_ORANGE_DEMON,
1602     MONS_HELLWING,
1603     MONS_SMOKE_DEMON,
1604     MONS_YNOXINUL,
1605     MONS_EXECUTIONER,                  //  230
1606     MONS_GREEN_DEATH,
1607     MONS_BLUE_DEATH,
1608     MONS_BALRUG,
1609     MONS_CACODEMON,
1610     MONS_DEMONIC_CRAWLER,              //  235
1611     MONS_SUN_DEMON,
1612     MONS_SHADOW_IMP,
1613     MONS_SHADOW_DEMON,
1614     MONS_LOROCYPROCA,
1615     MONS_SHADOW_WRAITH,                //  240
1616     MONS_GIANT_AMOEBA,
1617     MONS_GIANT_SLUG,
1618     MONS_GIANT_SNAIL,
1619     MONS_SPATIAL_VORTEX,
1620     MONS_PIT_FIEND,                    //  245
1621     MONS_BORING_BEETLE,
1622     MONS_GARGOYLE,
1623     MONS_METAL_GARGOYLE,
1624     MONS_MOLTEN_GARGOYLE,
1625     MONS_PROGRAM_BUG,                  //  250
1626 // BCR - begin first batch of uniques.
1627     MONS_MNOLEG,
1628     MONS_LOM_LOBON,
1629     MONS_CEREBOV,
1630     MONS_GLOORX_VLOQ,                  //  254
1631     MONS_MOLLUSC_LORD, //  255 - deprecated, but still referenced in code {dlb}
1632 // BCR - End first batch of uniques.
1633     MONS_NAGA_MAGE = 260,              //  260
1634     MONS_NAGA_WARRIOR,
1635     MONS_ORC_WARLORD,
1636     MONS_DEEP_ELF_SOLDIER,
1637     MONS_DEEP_ELF_FIGHTER,
1638     MONS_DEEP_ELF_KNIGHT,              //  265
1639     MONS_DEEP_ELF_MAGE,
1640     MONS_DEEP_ELF_SUMMONER,
1641     MONS_DEEP_ELF_CONJURER,
1642     MONS_DEEP_ELF_PRIEST,
1643     MONS_DEEP_ELF_HIGH_PRIEST,         //  270
1644     MONS_DEEP_ELF_DEMONOLOGIST,
1645     MONS_DEEP_ELF_ANNIHILATOR,
1646     MONS_DEEP_ELF_SORCERER,
1647     MONS_DEEP_ELF_DEATH_MAGE,
1648     MONS_BROWN_OOZE,                   //  275
1649     MONS_AZURE_JELLY,
1650     MONS_DEATH_OOZE,
1651     MONS_ACID_BLOB,
1652     MONS_ROYAL_JELLY,
1653 // BCR - begin second batch of uniques.
1654     MONS_TERENCE,                      //  280
1655     MONS_JESSICA,
1656     MONS_IJYB,
1657     MONS_SIGMUND,
1658     MONS_BLORK_THE_ORC,
1659     MONS_EDMUND,                       //  285
1660     MONS_PSYCHE,
1661     MONS_EROLCHA,
1662     MONS_DONALD,
1663     MONS_URUG,
1664     MONS_MICHAEL,                      //  290
1665     MONS_JOSEPH,
1666     MONS_SNORG, // was Anita - Snorg is correct 16jan2000 {dlb}
1667     MONS_ERICA,
1668     MONS_JOSEPHINE,
1669     MONS_HAROLD,                       //  295
1670     MONS_NORBERT,
1671     MONS_JOZEF,
1672     MONS_AGNES,
1673     MONS_MAUD,
1674     MONS_LOUISE,                       //  300
1675     MONS_FRANCIS,
1676     MONS_FRANCES,
1677     MONS_RUPERT,
1678     MONS_WAYNE,
1679     MONS_DUANE,                        //  305
1680     MONS_XTAHUA,
1681     MONS_NORRIS,
1682     MONS_ADOLF,
1683     MONS_MARGERY,
1684     MONS_BORIS,                        //  310
1685 // BCR - end second batch of uniques.
1686 
1687     // The Lords of Hell:
1688     MONS_GERYON = 340,                 //  340
1689     MONS_DISPATER,
1690     MONS_ASMODEUS,
1691     MONS_ANTAEUS,
1692     MONS_ERESHKIGAL,                   //  344
1693 
1694     MONS_ANCIENT_LICH = 356,           //  356
1695     MONS_OOZE,                         //  357
1696 
1697     MONS_VAULT_GUARD = 360,            //  360
1698     MONS_CURSE_SKULL,
1699     MONS_VAMPIRE_KNIGHT,
1700     MONS_VAMPIRE_MAGE,
1701     MONS_SHINING_EYE,
1702     MONS_ORB_GUARDIAN,                 //  365
1703     MONS_DAEVA,
1704     MONS_SPECTRAL_THING,
1705     MONS_GREATER_NAGA,
1706     MONS_SKELETAL_DRAGON,
1707     MONS_TENTACLED_MONSTROSITY,        //  370
1708     MONS_SPHINX,
1709     MONS_ROTTING_HULK,
1710     MONS_GUARDIAN_MUMMY,
1711     MONS_GREATER_MUMMY,
1712     MONS_MUMMY_PRIEST,                 //  375
1713     MONS_CENTAUR_WARRIOR,
1714     MONS_YAKTAUR_CAPTAIN,
1715     MONS_KILLER_KLOWN,
1716     MONS_ELECTRIC_GOLEM, // replacing the guardian robot -- bwr
1717     MONS_BALL_LIGHTNING, // replacing the dorgi -- bwr
1718     MONS_ORB_OF_FIRE,    // Swords renamed to fit -- bwr
1719     MONS_QUOKKA,         // Quokka are a type of wallaby, returned -- bwr 382
1720 
1721 
1722     MONS_EYE_OF_DEVASTATION = 385,     //  385
1723     MONS_MOTH_OF_WRATH,
1724     MONS_DEATH_COB,
1725     MONS_CURSE_TOE,
1726     MONS_GOLD_MIMIC,
1727     MONS_WEAPON_MIMIC,                 //  390
1728     MONS_ARMOUR_MIMIC,
1729     MONS_SCROLL_MIMIC,
1730     MONS_POTION_MIMIC,
1731     MONS_HELL_HOG,
1732     MONS_SERPENT_OF_HELL,              //  395
1733     MONS_BOGGART,
1734     MONS_QUICKSILVER_DRAGON,
1735     MONS_IRON_DRAGON,
1736     MONS_SKELETAL_WARRIOR,             //  399
1737     MONS_PLAYER_GHOST,                 //  400
1738     MONS_PANDEMONIUM_DEMON,            //  401
1739 
1740     MONS_GIANT_NEWT,                   //  402
1741     MONS_GIANT_GECKO,                  //  403
1742     MONS_GIANT_IGUANA,                 //  404
1743     MONS_GILA_MONSTER,                 //  405
1744     MONS_KOMODO_DRAGON,                //  406
1745 
1746     // Lava monsters:
1747     MONS_LAVA_WORM = 420,              //  420
1748     MONS_LAVA_FISH,
1749     MONS_LAVA_SNAKE,
1750     MONS_SALAMANDER,                   //  423 mv: was another lava thing
1751 
1752     // Water monsters:
1753     MONS_BIG_FISH = 430,               //  430
1754     MONS_GIANT_GOLDFISH,
1755     MONS_ELECTRICAL_EEL,
1756     MONS_JELLYFISH,
1757     MONS_WATER_ELEMENTAL,
1758     MONS_SWAMP_WORM,                   //  435
1759 
1760     NUM_MONSTERS,                      // used for polymorph
1761     RANDOM_MONSTER = 1000, // used to distinguish between a random monster and using program bugs for error trapping {dlb}
1762     WANDERING_MONSTER = 2500 // only used in monster placement routines - forced limit checks {dlb}
1763 
1764 };
1765 
1766 enum MONSTER_BEHAVIOUR                  // create_monster()
1767 {
1768     BEH_SLEEP,                         //    0
1769     BEH_WANDER,
1770     BEH_SEEK,
1771     BEH_FLEE,
1772     BEH_CORNERED,
1773     NUM_BEHAVIOURS,                    //  max # of legal states
1774     BEH_CHARMED,                       //  hostile-but-charmed; create only
1775     BEH_FRIENDLY,                      //  used during creation only
1776     BEH_HOSTILE,                       //  creation only
1777     BEH_GOD_GIFT                       //  creation only
1778 };
1779 
1780 enum MONSTER_ATTITUDES
1781 {
1782     ATT_HOSTILE,                       // 0, default in most cases
1783     ATT_FRIENDLY,                      // created friendly (or tamed?)
1784     ATT_NEUTRAL
1785 };
1786 
1787 enum MONSTER_EVENTS
1788 {
1789     ME_EVAL,                            // 0, evaluate monster AI state
1790     ME_DISTURB,                         // noisy
1791     ME_ANNOY,                           // annoy at range
1792     ME_ALERT,                           // alert to presence
1793     ME_WHACK,                           // physical attack
1794     ME_SCARE,                           // frighten monster
1795     ME_CORNERED                         // cannot flee
1796 };
1797 
1798 #if 0
1799 // Obsolete... use mons_charclass()
1800 enum MONSTER_CATEGORIES
1801 {
1802     MC_MIMIC, //    0
1803     NUM_MC,
1804     MC_UNSPECIFIED = 255 // keep at end !!! mind the upper limit of 255 {dlb}
1805 };
1806 #endif
1807 
1808 // Note: These are currently stored in chars!!!
1809 // Need to fix struct monsters and the savefile if you want more.
1810 enum MONSTER_FLAGS
1811 {
1812     MF_CREATED_FRIENDLY   = 0x01,  // no benefit from killing
1813     MF_GOD_GIFT           = 0x02,  // player not penalized by its death
1814     MF_BATTY              = 0x04,  // flutters like a bat
1815     MF_JUST_SUMMONED      = 0x08,  // monster skips next available action
1816     MF_TAKING_STAIRS      = 0x10,  // is following player through stairs
1817 
1818     MF_UNUSED_I           = 0x20,
1819     MF_UNUSED_II          = 0x40,
1820     MF_UNUSED_III         = 0x80
1821 };
1822 
1823 enum MONSTER_DAMAGE
1824 {
1825     MDAM_OKAY,
1826     MDAM_LIGHTLY_DAMAGED,
1827     MDAM_MODERATELY_DAMAGED,
1828     MDAM_HEAVILY_DAMAGED,
1829     MDAM_HORRIBLY_DAMAGED,
1830     MDAM_ALMOST_DEAD,
1831     MDAM_DEAD
1832 };
1833 
1834 enum MONSTER_DESCRIPTORS // things that cross categorical lines {dlb}
1835 {
1836     MDSC_LEAVES_HIDE,                  //    0
1837     MDSC_REGENERATES,
1838     MDSC_NOMSG_WOUNDS
1839 };
1840 
1841 enum MONSTER_HOLINESS // matches (char) H_foo in mon-util.h, see: monster_holiness()
1842 {
1843     MH_HOLY,                           //    0 - was -1
1844     MH_NATURAL,                        //    1 - was 0
1845     MH_UNDEAD,                         //    2 - was 1
1846     MH_DEMONIC,                        //    3 - was 2
1847     MH_NONLIVING,                      //    golems and other constructs
1848     MH_PLANT                           //    plants
1849 };
1850 
1851 enum MONSTER_INVENTORY_SLOTS           // (int) menv[].inv[]
1852 {
1853     MSLOT_WEAPON,
1854     MSLOT_MISSILE, // although it is a second weapon for MONS_TWO_HEADED_OGRE - how to reconcile cleanly? {dlb}
1855     MSLOT_ARMOUR,
1856     MSLOT_MISCELLANY, //mv: used for misc. obj. (7 Aug 2001)
1857     MSLOT_POTION, // mv: now used only for potions (7 Aug 2001)
1858     MSLOT_WAND, //
1859     MSLOT_SCROLL,
1860     MSLOT_GOLD, //mv: used for money :) (7 Aug 2001)
1861     NUM_MONSTER_SLOTS = 8 // value must remain 8 for savefile compatibility {dlb}
1862 };
1863 
1864 enum MONSTER_ITEM_USE
1865 {
1866     MONUSE_NOTHING,
1867     MONUSE_EATS_ITEMS,
1868     MONUSE_OPEN_DOORS,
1869     MONUSE_STARTING_EQUIPMENT,
1870     MONUSE_WEAPONS_ARMOUR
1871 };
1872 
1873 enum MONSTER_SPELLS   // mons_cast(), mspell_list[], mons_spells()
1874 {
1875     MS_MMISSILE,                       //    0
1876     MS_FLAME,
1877     MS_FROST,
1878     MS_PARALYSIS,
1879     MS_SLOW,
1880     MS_HASTE,                          //    5
1881     MS_CONFUSE,    //    6 - do not deprecate!!! 13jan2000 {dlb}
1882     MS_VENOM_BOLT,
1883     MS_FIRE_BOLT,
1884     MS_COLD_BOLT,
1885     MS_LIGHTNING_BOLT,                 //   10
1886     MS_INVIS,
1887     MS_FIREBALL,
1888     MS_HEAL,
1889     MS_TELEPORT,
1890     MS_TELEPORT_OTHER,                 //   15
1891     MS_BLINK,
1892     MS_CRYSTAL_SPEAR,
1893     MS_DIG,
1894     MS_NEGATIVE_BOLT,
1895     MS_HELLFIRE_BURST,                 //   20
1896     MS_VAMPIRE_SUMMON,
1897     MS_ORB_ENERGY,
1898     MS_BRAIN_FEED,
1899     MS_LEVEL_SUMMON,
1900     MS_FAKE_RAKSHASA_SUMMON,           //   25
1901     MS_STEAM_BALL,
1902     MS_SUMMON_DEMON,
1903     MS_ANIMATE_DEAD,
1904     MS_PAIN,
1905     MS_SMITE,                          //   30
1906     MS_STICKY_FLAME,
1907     MS_POISON_BLAST,
1908     MS_SUMMON_DEMON_LESSER,
1909     MS_SUMMON_UFETUBUS,
1910     MS_PURPLE_BLAST,                   //   35
1911     MS_SUMMON_BEAST, // MS_GERYON was not descriptive - renamed 13jan2000 {dlb}
1912     MS_ENERGY_BOLT,
1913     MS_STING,
1914     MS_IRON_BOLT,
1915     MS_STONE_ARROW,                    //   40
1916     MS_POISON_SPLASH,
1917     MS_SUMMON_UNDEAD,
1918     MS_MUTATION,                       //   43
1919     MS_CANTRIP,
1920     MS_DISINTEGRATE,                   //   45
1921     MS_MARSH_GAS,
1922     MS_QUICKSILVER_BOLT,
1923     MS_TORMENT,
1924     MS_HELLFIRE,
1925     MS_METAL_SPLINTERS,                //   50
1926     MS_SUMMON_DEMON_GREATER, // [foo]_1 was confusing - renamed 13jan2000 {dlb}
1927     MS_BANISHMENT,
1928     NUM_MONSTER_SPELLS,
1929     MS_NO_SPELL = 100
1930 };
1931 
1932 // XXX: These still need to be applied in mon-data.h
1933 enum MONSTER_SPELL_TEMPLATES
1934 {
1935     MST_ORC_WIZARD_I     = 0,
1936     MST_ORC_WIZARD_II,
1937     MST_ORC_WIZARD_III,
1938     MST_GUARDIAN_NAGA    = 10,
1939     MST_LICH_I           = 20,
1940     MST_LICH_II,
1941     MST_LICH_III,
1942     MST_LICH_IV,
1943     MST_BURNING_DEVIL    = 30,
1944     MST_VAMPIRE          = 40,
1945     MST_VAMPIRE_KNIGHT,
1946     MST_VAMPIRE_MAGE,
1947     MST_EFREET           = 50,
1948     MST_BRAIN_WORM       = 52,
1949     MST_GIANT_ORANGE_BRAIN,
1950     MST_RAKSHASA,
1951     MST_GREAT_ORB_OF_EYES,              // 55
1952     MST_ORC_SORCERER,
1953     MST_STEAM_DRAGON,
1954     MST_HELL_KNIGHT_I,
1955     MST_HELL_KNIGHT_II,
1956     MST_NECROMANCER_I,                  // 60
1957     MST_NECROMANCER_II,
1958     MST_WIZARD_I,
1959     MST_WIZARD_II,
1960     MST_WIZARD_III,
1961     MST_WIZARD_IV,                      // 65
1962     MST_WIZARD_V,
1963     MST_ORC_PRIEST,
1964     MST_ORC_HIGH_PRIEST,
1965     MST_MOTTLED_DRAGON,
1966     MST_ICE_FIEND,                      // 70
1967     MST_SHADOW_FIEND,
1968     MST_TORMENTOR,
1969     MST_STORM_DRAGON,
1970     MST_WHITE_IMP,
1971     MST_YNOXINUL,                       // 75
1972     MST_NEQOXEC,
1973     MST_HELLWING,
1974     MST_SMOKE_DEMON,
1975     MST_CACODEMON,
1976     MST_GREEN_DEATH,                    // 80
1977     MST_BALRUG,
1978     MST_BLUE_DEATH,
1979     MST_GERYON,
1980     MST_DISPATER,
1981     MST_ASMODEUS,                       // 85
1982     MST_ERESHKIGAL,
1983     MST_ANTAEUS,                        // 87
1984     MST_MNOLEG                = 90,
1985     MST_LOM_LOBON,
1986     MST_CEREBOV,
1987     MST_GLOORX_VLOQ,
1988     MST_TITAN,
1989     MST_GOLDEN_DRAGON,                  // 95
1990     MST_DEEP_ELF_SUMMONER,
1991     MST_DEEP_ELF_CONJURER_I,
1992     MST_DEEP_ELF_CONJURER_II,
1993     MST_DEEP_ELF_PRIEST,
1994     MST_DEEP_ELF_HIGH_PRIEST,           // 100
1995     MST_DEEP_ELF_DEMONOLOGIST,
1996     MST_DEEP_ELF_ANNIHILATOR,
1997     MST_DEEP_ELF_SORCERER,
1998     MST_DEEP_ELF_DEATH_MAGE,
1999     MST_KOBOLD_DEMONOLOGIST,            // 105
2000     MST_NAGA,
2001     MST_NAGA_MAGE,
2002     MST_CURSE_SKULL,
2003     MST_SHINING_EYE,
2004     MST_FROST_GIANT,                    // 110
2005     MST_ANGEL,
2006     MST_DAEVA,
2007     MST_SHADOW_DRAGON,
2008     MST_SPHINX,
2009     MST_MUMMY,                          // 115
2010     MST_ELECTRIC_GOLEM,
2011     MST_ORB_OF_FIRE,
2012     MST_SHADOW_IMP,
2013     MST_GHOST,
2014     MST_HELL_HOG,                       // 120
2015     MST_SWAMP_DRAGON,
2016     MST_SWAMP_DRAKE,
2017     MST_SERPENT_OF_HELL,
2018     MST_BOGGART,
2019     MST_EYE_OF_DEVASTATION,             // 125
2020     MST_QUICKSILVER_DRAGON,
2021     MST_IRON_DRAGON,                    // 127
2022     MST_SKELETAL_WARRIOR,
2023     NUM_MSTYPES,
2024     MST_NO_SPELLS = 250
2025 };
2026 
2027 enum MUTATIONS
2028 {
2029     MUT_TOUGH_SKIN,                    //    0
2030     MUT_STRONG,
2031     MUT_CLEVER,
2032     MUT_AGILE,
2033     MUT_GREEN_SCALES,
2034     MUT_BLACK_SCALES,                  //    5
2035     MUT_GREY_SCALES,
2036     MUT_BONEY_PLATES,
2037     MUT_REPULSION_FIELD,
2038     MUT_POISON_RESISTANCE,
2039     MUT_CARNIVOROUS,                   //   10
2040     MUT_HERBIVOROUS,
2041     MUT_HEAT_RESISTANCE,
2042     MUT_COLD_RESISTANCE,
2043     MUT_SHOCK_RESISTANCE,
2044     MUT_REGENERATION,                  //   15
2045     MUT_FAST_METABOLISM,
2046     MUT_SLOW_METABOLISM,
2047     MUT_WEAK,
2048     MUT_DOPEY,
2049     MUT_CLUMSY,                        //   20
2050     MUT_TELEPORT_CONTROL,
2051     MUT_TELEPORT,
2052     MUT_MAGIC_RESISTANCE,
2053     MUT_FAST,
2054     MUT_ACUTE_VISION,                  //   25
2055     MUT_DEFORMED,
2056     MUT_TELEPORT_AT_WILL,
2057     MUT_SPIT_POISON,
2058     MUT_MAPPING,
2059     MUT_BREATHE_FLAMES,                //   30
2060     MUT_BLINK,
2061     MUT_HORNS,
2062     MUT_STRONG_STIFF,
2063     MUT_FLEXIBLE_WEAK,
2064     MUT_LOST,                          //   35
2065     MUT_CLARITY,
2066     MUT_BERSERK,
2067     MUT_DETERIORATION,
2068     MUT_BLURRY_VISION,
2069     MUT_MUTATION_RESISTANCE,           //   40
2070     MUT_FRAIL,
2071     MUT_ROBUST,
2072     MUT_TORMENT_RESISTANCE,
2073     MUT_NEGATIVE_ENERGY_RESISTANCE,
2074     MUT_SUMMON_MINOR_DEMONS,           //   45
2075     MUT_SUMMON_DEMONS,
2076     MUT_HURL_HELLFIRE,
2077     MUT_CALL_TORMENT,
2078     MUT_RAISE_DEAD,
2079     MUT_CONTROL_DEMONS,                //   50
2080     MUT_PANDEMONIUM,
2081     MUT_DEATH_STRENGTH,
2082     MUT_CHANNEL_HELL,
2083     MUT_DRAIN_LIFE,
2084     MUT_THROW_FLAMES,                  //   55
2085     MUT_THROW_FROST,
2086     MUT_SMITE,                         //   57
2087     MUT_CLAWS,                         //jmf: added
2088     MUT_HOOVES,                        //jmf: etc.
2089     MUT_BREATHE_POISON,                //   60
2090     MUT_STINGER,
2091     MUT_BIG_WINGS,
2092     MUT_BLUE_MARKS, //   63 - decorative, as in "mark of the devil"
2093     MUT_GREEN_MARKS,                   //   64
2094     MUT_RED_SCALES = 70,               //   70
2095     MUT_NACREOUS_SCALES,
2096     MUT_GREY2_SCALES,
2097     MUT_METALLIC_SCALES,
2098     MUT_BLACK2_SCALES,
2099     MUT_WHITE_SCALES,                  //   75
2100     MUT_YELLOW_SCALES,
2101     MUT_BROWN_SCALES,
2102     MUT_BLUE_SCALES,
2103     MUT_PURPLE_SCALES,
2104     MUT_SPECKLED_SCALES,               //   80
2105     MUT_ORANGE_SCALES,
2106     MUT_INDIGO_SCALES,
2107     MUT_RED2_SCALES,
2108     MUT_IRIDESCENT_SCALES,
2109     MUT_PATTERNED_SCALES,              //   85
2110     NUM_MUTATIONS
2111 };
2112 
2113 enum NAUGHTY_THINGS
2114 {
2115     NAUGHTY_NECROMANCY = 1, //    1 - using necromancy (spell or device)
2116     NAUGHTY_UNHOLY, //    2 - using unholy stuff (call imp, summon things)
2117     NAUGHTY_KILLING, //    3 - killing in the name of a peaceful deity
2118     NAUGHTY_ATTACK_HOLY,               //    4 - attacking holy things
2119     NAUGHTY_ATTACK_FRIEND,             //    5 - attacking friendly things
2120     NAUGHTY_FRIEND_DIES, //    6 - allowing friendly things to die
2121     NAUGHTY_BUTCHER, //    7 - butchering in the name of a peaceful deity
2122     NAUGHTY_STABBING,                  //    8 - stabbing
2123     NAUGHTY_SPELLCASTING,              //    9 - spellcasting
2124     NAUGHTY_POISON,                    //   10 - poisoning
2125     NAUGHTY_STIMULANTS, //jmf: next three new, some not yet used
2126     NAUGHTY_ATE_MEAT,
2127     NAUGHTY_CREATED_LIFE,
2128     NUM_NAUGHTY_THINGS
2129 };
2130 
2131 enum OBJECT_CLASSES                    // (unsigned char) mitm[].base_type
2132 {
2133     OBJ_WEAPONS,                       //    0
2134     OBJ_MISSILES,
2135     OBJ_ARMOUR,
2136     OBJ_WANDS,
2137     OBJ_FOOD,                          //    4
2138     OBJ_UNKNOWN_I = 5, // (use unknown) labeled as books in invent.cc {dlb}
2139     OBJ_SCROLLS = 6,                   //    6
2140     OBJ_JEWELLERY,
2141     OBJ_POTIONS,                       //    8
2142     OBJ_UNKNOWN_II = 9, // (use unknown, stackable) labeled as gems in invent.cc {dlb}
2143     OBJ_BOOKS = 10,                    //   10
2144     OBJ_STAVES,
2145     OBJ_ORBS,
2146     OBJ_MISCELLANY,
2147     OBJ_CORPSES,
2148     OBJ_GOLD, // important role as upper limit to chardump::dump_inventory() {dlb}
2149     OBJ_GEMSTONES, // found in itemname.cc, labeled as miscellaneous in invent.cc {dlb}
2150     NUM_OBJECT_CLASSES,
2151     OBJ_UNASSIGNED = 100,              // must remain set to 100 {dlb}
2152     OBJ_RANDOM = 255 // must remain set to 255 {dlb} - also used
2153                      // for blanket random sub_type .. see dungeon::items()
2154 };
2155 
2156 enum ORBS
2157 {
2158     ORB_ZOT                            //    0
2159 };
2160 
2161 enum POTIONS
2162 {
2163     POT_HEALING,                       //    0
2164     POT_HEAL_WOUNDS,
2165     POT_SPEED,
2166     POT_MIGHT,
2167     POT_GAIN_STRENGTH,
2168     POT_GAIN_DEXTERITY,                //    5
2169     POT_GAIN_INTELLIGENCE,
2170     POT_LEVITATION,
2171     POT_POISON,
2172     POT_SLOWING,
2173     POT_PARALYSIS,                     //   10
2174     POT_CONFUSION,
2175     POT_INVISIBILITY,
2176     POT_PORRIDGE,
2177     POT_DEGENERATION,
2178     POT_DECAY,                         //   15
2179     POT_WATER,
2180     POT_EXPERIENCE,
2181     POT_MAGIC,
2182     POT_RESTORE_ABILITIES,
2183     POT_STRONG_POISON,                 //   20
2184     POT_BERSERK_RAGE,
2185     POT_CURE_MUTATION,
2186     POT_MUTATION,
2187     NUM_POTIONS
2188 };
2189 
2190 enum PRONOUN_TYPE
2191 {
2192     PRONOUN_CAP,                        // 0
2193     PRONOUN_NOCAP,                      // 1
2194     PRONOUN_CAP_POSSESSIVE,             // 2
2195     PRONOUN_NOCAP_POSSESSIVE,           // 3
2196     PRONOUN_REFLEXIVE                   // 4 (reflexive is always lowercase)
2197 };
2198 
2199 enum PROXIMITY   // proximity to player to create monster
2200 {
2201     PROX_ANYWHERE,
2202     PROX_CLOSE_TO_PLAYER,
2203     PROX_AWAY_FROM_PLAYER,
2204     PROX_NEAR_STAIRS
2205 };
2206 
2207 enum RANDART_PROP
2208 {
2209     RAP_BRAND,                         //    0
2210     RAP_AC,
2211     RAP_EVASION,
2212     RAP_STRENGTH,
2213     RAP_INTELLIGENCE,
2214     RAP_DEXTERITY,                     //    5
2215     RAP_FIRE,
2216     RAP_COLD,
2217     RAP_ELECTRICITY,
2218     RAP_POISON,
2219     RAP_NEGATIVE_ENERGY,               //   10
2220     RAP_MAGIC,
2221     RAP_EYESIGHT,
2222     RAP_INVISIBLE,
2223     RAP_LEVITATE,
2224     RAP_BLINK,                         //   15
2225     RAP_CAN_TELEPORT,
2226     RAP_BERSERK,
2227     RAP_MAPPING,
2228     RAP_NOISES,
2229     RAP_PREVENT_SPELLCASTING,          //   20
2230     RAP_CAUSE_TELEPORTATION,
2231     RAP_PREVENT_TELEPORTATION,
2232     RAP_ANGRY,
2233     RAP_METABOLISM,
2234     RAP_MUTAGENIC,                     //   25
2235     RAP_ACCURACY,
2236     RAP_DAMAGE,
2237     RAP_CURSED,
2238     RAP_STEALTH
2239 };
2240 
2241 enum READ_BOOK_ACTION
2242 {
2243     RBOOK_USE_STAFF,
2244     RBOOK_MEMORIZE,
2245     RBOOK_READ_SPELL
2246 };
2247 
2248 enum RUN_DIR
2249 {
2250     RDIR_UP = 0,
2251     RDIR_UP_RIGHT,
2252     RDIR_RIGHT,
2253     RDIR_DOWN_RIGHT,
2254     RDIR_DOWN,
2255     RDIR_DOWN_LEFT,
2256     RDIR_LEFT,
2257     RDIR_UP_LEFT,
2258     RDIR_REST
2259 };
2260 
2261 enum RUNE_TYPES
2262 {
2263     // Note: that runes DIS-SWAMP have the same numberic value as the branch
2264     RUNE_DIS                    = 1,
2265     RUNE_GEHENNA,
2266     RUNE_COCYTUS                = 4,
2267     RUNE_TARTARUS,
2268     RUNE_SLIME_PITS             = 13,
2269     RUNE_VAULTS,
2270     RUNE_SNAKE_PIT              = 19,
2271     RUNE_ELVEN_HALLS,                   // unused
2272     RUNE_TOMB,
2273     RUNE_SWAMP,
2274 
2275     // Runes 50 and 51 are for Pandemonium (general demon) and the Abyss
2276     RUNE_DEMONIC                = 50,
2277     RUNE_ABYSSAL,
2278 
2279     // Runes 60-63 correspond to the Pandemonium demonlords,
2280     // and are equal to the corresponding vault.
2281     RUNE_MNOLEG                 = 60,
2282     RUNE_LOM_LOBON,
2283     RUNE_CEREBOV,
2284     RUNE_GLOORX_VLOQ,
2285     NUM_RUNE_TYPES              // should always be last
2286 };
2287 
2288 enum SCORE_FORMAT
2289 {
2290     SCORE_TERSE,                // one line
2291     SCORE_REGULAR,              // two lines (name, cause, blank)
2292     SCORE_VERBOSE               // everything (dates, times, god, etc)
2293 };
2294 
2295 enum SCROLLS
2296 {
2297     SCR_IDENTIFY,                      //    0
2298     SCR_TELEPORTATION,
2299     SCR_FEAR,
2300     SCR_NOISE,
2301     SCR_REMOVE_CURSE,
2302     SCR_DETECT_CURSE,                  //   5
2303     SCR_SUMMONING,
2304     SCR_ENCHANT_WEAPON_I,
2305     SCR_ENCHANT_ARMOUR,
2306     SCR_TORMENT,
2307     SCR_RANDOM_USELESSNESS,            //   10
2308     SCR_CURSE_WEAPON,
2309     SCR_CURSE_ARMOUR,
2310     SCR_IMMOLATION,
2311     SCR_BLINKING,
2312     SCR_PAPER,                         //   15
2313     SCR_MAGIC_MAPPING,
2314     SCR_FORGETFULNESS,
2315     SCR_ACQUIREMENT,
2316     SCR_ENCHANT_WEAPON_II,
2317     SCR_VORPALISE_WEAPON,              //   20
2318     SCR_RECHARGING,
2319     SCR_ENCHANT_WEAPON_III,
2320     NUM_SCROLLS
2321 };
2322 
2323 enum SHOPS // (unsigned char) env.sh_type[], item_in_shop(), in_a_shop()
2324 {
2325     SHOP_WEAPON,                       //    0
2326     SHOP_ARMOUR,
2327     SHOP_WEAPON_ANTIQUE,
2328     SHOP_ARMOUR_ANTIQUE,
2329     SHOP_GENERAL_ANTIQUE,
2330     SHOP_JEWELLERY,                    //    5
2331     SHOP_WAND,
2332     SHOP_BOOK,
2333     SHOP_FOOD,
2334     SHOP_DISTILLERY,
2335     SHOP_SCROLL,                       //   10
2336     SHOP_GENERAL,
2337     NUM_SHOPS, // must remain last 'regular' member {dlb}
2338     SHOP_UNASSIGNED = 100,             // keep set at 100 for now {dlb}
2339     SHOP_RANDOM = 255                  // keep set at 255 for now {dlb}
2340 };
2341 
2342 enum SKILLS
2343 {
2344     SK_FIGHTING,                       //    0
2345     SK_SHORT_BLADES,
2346     SK_LONG_SWORDS,
2347     SK_UNUSED_1,                       // SK_GREAT_SWORDS - now unused
2348     SK_AXES,
2349     SK_MACES_FLAILS,                   //    5
2350     SK_POLEARMS,
2351     SK_STAVES,
2352     SK_SLINGS,
2353     SK_BOWS,
2354     SK_CROSSBOWS,                      //   10
2355     SK_DARTS,
2356     SK_THROWING,
2357     SK_ARMOUR,
2358     SK_DODGING,
2359     SK_STEALTH,                        //   15
2360     SK_STABBING,
2361     SK_SHIELDS,
2362     SK_TRAPS_DOORS,
2363     SK_UNARMED_COMBAT,                 //   19
2364     SK_SPELLCASTING = 25,              //   25
2365     SK_CONJURATIONS,
2366     SK_ENCHANTMENTS,
2367     SK_SUMMONINGS,
2368     SK_NECROMANCY,
2369     SK_TRANSLOCATIONS,                 //   30
2370     SK_TRANSMIGRATION,
2371     SK_DIVINATIONS,
2372     SK_FIRE_MAGIC,
2373     SK_ICE_MAGIC,
2374     SK_AIR_MAGIC,                      //   35
2375     SK_EARTH_MAGIC,
2376     SK_POISON_MAGIC,
2377     SK_INVOCATIONS,
2378     SK_EVOCATIONS,
2379     NUM_SKILLS                         // must remain last member {dlb}
2380 };
2381 
2382 enum SPECIAL_ARMOR
2383 {
2384     SPARM_NORMAL,                      //    0
2385     SPARM_RUNNING,
2386     SPARM_FIRE_RESISTANCE,
2387     SPARM_COLD_RESISTANCE,
2388     SPARM_POISON_RESISTANCE,
2389     SPARM_SEE_INVISIBLE,               //    5
2390     SPARM_DARKNESS,
2391     SPARM_STRENGTH,
2392     SPARM_DEXTERITY,
2393     SPARM_INTELLIGENCE,
2394     SPARM_PONDEROUSNESS,               //   10
2395     SPARM_LEVITATION,
2396     SPARM_MAGIC_RESISTANCE,
2397     SPARM_PROTECTION,
2398     SPARM_STEALTH,
2399     SPARM_RESISTANCE,                  //   15
2400     SPARM_POSITIVE_ENERGY,
2401     SPARM_ARCHMAGI,
2402     SPARM_PRESERVATION,                //   18
2403     SPARM_RANDART_I = 25, // must remain at 25 for now - how high do they go? {dlb}
2404     SPARM_RANDART_II = 26,             //   26
2405     SPARM_RANDART_III = 27,            //   27
2406     SPARM_RANDART_IV = 28,             //   28
2407     SPARM_RANDART_V = 29 //   29 - highest value found thus far {dlb}
2408 };
2409 
2410 enum SPECIAL_MISSILES // to separate from weapons in general {dlb}
2411 {
2412     SPMSL_NORMAL,                      //    0
2413     SPMSL_FLAME,                       //    1
2414     SPMSL_ICE,                         //    2
2415     SPMSL_POISONED, //    3 - from poison_ammo() enchantment {dlb}
2416     SPMSL_POISONED_II,                 //    4
2417 };
2418 
2419 enum SPECIAL_ROOMS
2420 {
2421     SROOM_LAIR_ORC,                    //    0
2422     SROOM_LAIR_KOBOLD,
2423     SROOM_TREASURY,
2424     SROOM_BEEHIVE,
2425     SROOM_MORGUE,
2426     NUM_SPECIAL_ROOMS                  //    5 - must remain final member {dlb}
2427 };
2428 
2429 enum SPECIAL_RINGS  // jewellery mitm[].special values
2430 {
2431     SPRING_RANDART = 200,
2432     SPRING_UNRANDART = 201
2433 };
2434 
2435 enum SPECIAL_WEAPONS // equivalent to (you.inv[].special or mitm[].special) % 30
2436 {
2437     SPWPN_NORMAL,                      //    0
2438     SPWPN_FLAMING,
2439     SPWPN_FREEZING,
2440     SPWPN_HOLY_WRATH,
2441     SPWPN_ELECTROCUTION,
2442     SPWPN_ORC_SLAYING,                 //    5
2443     SPWPN_VENOM,
2444     SPWPN_PROTECTION,
2445     SPWPN_DRAINING,
2446     SPWPN_SPEED,
2447     SPWPN_VORPAL,                      //   10
2448     SPWPN_FLAME,
2449     SPWPN_FROST,
2450     SPWPN_VAMPIRICISM,
2451     SPWPN_DISRUPTION,
2452     SPWPN_PAIN,                        //   15
2453     SPWPN_DISTORTION,
2454     SPWPN_REACHING,                    //   17
2455     SPWPN_CONFUSE,
2456     SPWPN_RANDART_I = 25,              //   25
2457     SPWPN_RANDART_II,
2458     SPWPN_RANDART_III,
2459     SPWPN_RANDART_IV,
2460     SPWPN_RANDART_V,
2461     NUM_SPECIAL_WEAPONS,
2462     SPWPN_DUMMY_CRUSHING,        // ONLY TEMPORARY USAGE -- converts to VORPAL
2463 
2464     // everything above this point is a special artefact wield:
2465     SPWPN_SINGING_SWORD = 181,          //  181
2466     SPWPN_WRATH_OF_TROG,
2467     SPWPN_SCYTHE_OF_CURSES,
2468     SPWPN_MACE_OF_VARIABILITY,
2469     SPWPN_GLAIVE_OF_PRUNE,              //  185
2470     SPWPN_SCEPTRE_OF_TORMENT,
2471     SPWPN_SWORD_OF_ZONGULDROK,
2472 
2473     // these three are not generated randomly {dlb}
2474     SPWPN_SWORD_OF_CEREBOV,
2475     SPWPN_STAFF_OF_DISPATER,
2476     SPWPN_SCEPTRE_OF_ASMODEUS,          //  190
2477 
2478     SPWPN_SWORD_OF_POWER,
2479     SPWPN_KNIFE_OF_ACCURACY,
2480     SPWPN_STAFF_OF_OLGREB,
2481     SPWPN_VAMPIRES_TOOTH,
2482     SPWPN_STAFF_OF_WUCAD_MU             //  195
2483 };
2484 
2485 enum SPECIAL_WIELD                     // you.special_wield
2486 {
2487     SPWLD_NONE,                        //    0
2488     SPWLD_SING,
2489     SPWLD_TROG,
2490     SPWLD_CURSE,
2491     SPWLD_VARIABLE,                    //    4
2492     SPWLD_PRUNE, //    5 - implicit in it_use3::special_wielded() {dlb}
2493     SPWLD_TORMENT,                     //    6
2494     SPWLD_ZONGULDROK,
2495     SPWLD_POWER,
2496     SPWLD_WUCAD_MU,                    //    9
2497     SPWLD_OLGREB,                      //   10
2498     SPWLD_SHADOW = 50,                 //   50
2499     SPWLD_HUM, //   51 - see it_use3::special_wielded() {dlb}
2500     SPWLD_CHIME, //   52 - see it_use3::special_wielded() {dlb}
2501     SPWLD_BECKON, //   53 - see it_use3::special_wielded() {dlb}
2502     SPWLD_SHOUT //   54 - see it_use3::special_wielded() {dlb}
2503 };
2504 
2505 enum SPECIES
2506 {
2507     SP_HUMAN = 1,                      //    1
2508     SP_ELF,
2509     SP_HIGH_ELF,
2510     SP_GREY_ELF,
2511     SP_DEEP_ELF,                       //    5
2512     SP_SLUDGE_ELF,
2513     SP_HILL_DWARF,
2514     SP_MOUNTAIN_DWARF,
2515     SP_HALFLING,
2516     SP_HILL_ORC,                       //   10
2517     SP_KOBOLD,
2518     SP_MUMMY,
2519     SP_NAGA,
2520     SP_GNOME,
2521     SP_OGRE,                           //   15
2522     SP_TROLL,
2523     SP_OGRE_MAGE,
2524     SP_RED_DRACONIAN,
2525     SP_WHITE_DRACONIAN,
2526     SP_GREEN_DRACONIAN,                //   20
2527     SP_GOLDEN_DRACONIAN,
2528     SP_GREY_DRACONIAN,
2529     SP_BLACK_DRACONIAN,
2530     SP_PURPLE_DRACONIAN,
2531     SP_MOTTLED_DRACONIAN,              //   25
2532     SP_PALE_DRACONIAN,
2533     SP_UNK0_DRACONIAN,
2534     SP_UNK1_DRACONIAN,
2535     SP_UNK2_DRACONIAN,
2536     SP_CENTAUR,                        //   30
2537     SP_DEMIGOD,
2538     SP_SPRIGGAN,
2539     SP_MINOTAUR,
2540     SP_DEMONSPAWN,
2541     SP_GHOUL,                          //   35
2542     SP_KENKU,
2543     SP_MERFOLK,
2544     NUM_SPECIES,                       // always after the last species
2545 
2546     SP_UNKNOWN  = 100
2547 };
2548 
2549 enum SPELLS
2550 {
2551     SPELL_IDENTIFY,                    //    0
2552     SPELL_TELEPORT_SELF,
2553     SPELL_CAUSE_FEAR,
2554     SPELL_CREATE_NOISE,
2555     SPELL_REMOVE_CURSE,
2556     SPELL_MAGIC_DART,                  //    5
2557     SPELL_FIREBALL,
2558     SPELL_SWAP,
2559     SPELL_APPORTATION,
2560     SPELL_TWIST,
2561     SPELL_FAR_STRIKE,                  //   10
2562     SPELL_DELAYED_FIREBALL,
2563     SPELL_STRIKING,
2564     SPELL_CONJURE_FLAME,
2565     SPELL_DIG,
2566     SPELL_BOLT_OF_FIRE,                //   15
2567     SPELL_BOLT_OF_COLD,
2568     SPELL_LIGHTNING_BOLT,
2569     SPELL_BOLT_OF_MAGMA,               //   18
2570     SPELL_POLYMORPH_OTHER = 20,        //   20
2571     SPELL_SLOW,
2572     SPELL_HASTE,
2573     SPELL_PARALYZE,
2574     SPELL_CONFUSE,
2575     SPELL_INVISIBILITY,                //   25
2576     SPELL_THROW_FLAME,
2577     SPELL_THROW_FROST,
2578     SPELL_CONTROLLED_BLINK,
2579     SPELL_FREEZING_CLOUD,
2580     SPELL_MEPHITIC_CLOUD,              //   30
2581     SPELL_RING_OF_FLAMES,
2582     SPELL_RESTORE_STRENGTH,
2583     SPELL_RESTORE_INTELLIGENCE,
2584     SPELL_RESTORE_DEXTERITY,
2585     SPELL_VENOM_BOLT,                  //   35
2586     SPELL_OLGREBS_TOXIC_RADIANCE,
2587     SPELL_TELEPORT_OTHER,
2588     SPELL_LESSER_HEALING,
2589     SPELL_GREATER_HEALING,
2590     SPELL_CURE_POISON_I,               //   40
2591     SPELL_PURIFICATION,
2592     SPELL_DEATHS_DOOR,
2593     SPELL_SELECTIVE_AMNESIA,
2594     SPELL_MASS_CONFUSION,
2595     SPELL_SMITING,                     //   45
2596     SPELL_REPEL_UNDEAD,
2597     SPELL_HOLY_WORD,
2598     SPELL_DETECT_CURSE,
2599     SPELL_SUMMON_SMALL_MAMMAL,
2600     SPELL_ABJURATION_I,                //   50
2601     SPELL_SUMMON_SCORPIONS,
2602     SPELL_LEVITATION,
2603     SPELL_BOLT_OF_DRAINING,
2604     SPELL_LEHUDIBS_CRYSTAL_SPEAR,
2605     SPELL_BOLT_OF_INACCURACY,          //   55
2606     SPELL_POISONOUS_CLOUD,
2607     SPELL_FIRE_STORM,
2608     SPELL_DETECT_TRAPS,
2609     SPELL_BLINK,
2610     SPELL_ISKENDERUNS_MYSTIC_BLAST,    //   60
2611     SPELL_SWARM,
2612     SPELL_SUMMON_HORRIBLE_THINGS,
2613     SPELL_ENSLAVEMENT,
2614     SPELL_MAGIC_MAPPING,
2615     SPELL_HEAL_OTHER,                  //   65
2616     SPELL_ANIMATE_DEAD,
2617     SPELL_PAIN,
2618     SPELL_EXTENSION,
2619     SPELL_CONTROL_UNDEAD,
2620     SPELL_ANIMATE_SKELETON,            //   70
2621     SPELL_VAMPIRIC_DRAINING,
2622     SPELL_SUMMON_WRAITHS,
2623     SPELL_DETECT_ITEMS,
2624     SPELL_BORGNJORS_REVIVIFICATION,
2625     SPELL_BURN,                        //   75
2626     SPELL_FREEZE,
2627     SPELL_SUMMON_ELEMENTAL,
2628     SPELL_OZOCUBUS_REFRIGERATION,
2629     SPELL_STICKY_FLAME,
2630     SPELL_SUMMON_ICE_BEAST,            //   80
2631     SPELL_OZOCUBUS_ARMOUR,
2632     SPELL_CALL_IMP,
2633     SPELL_REPEL_MISSILES,
2634     SPELL_BERSERKER_RAGE,
2635     SPELL_DISPEL_UNDEAD,               //   85
2636     SPELL_GUARDIAN,
2637     SPELL_PESTILENCE,
2638     SPELL_THUNDERBOLT,
2639     SPELL_FLAME_OF_CLEANSING,
2640     SPELL_SHINING_LIGHT,               //   90
2641     SPELL_SUMMON_DAEVA,
2642     SPELL_ABJURATION_II,
2643     SPELL_FULSOME_DISTILLATION,        //   93
2644     SPELL_POISON_ARROW,                //   94
2645     SPELL_TWISTED_RESURRECTION = 110,  //  110
2646     SPELL_REGENERATION,
2647     SPELL_BONE_SHARDS,
2648     SPELL_BANISHMENT,
2649     SPELL_CIGOTUVIS_DEGENERATION,
2650     SPELL_STING,                       //  115
2651     SPELL_SUBLIMATION_OF_BLOOD,
2652     SPELL_TUKIMAS_DANCE,
2653     SPELL_HELLFIRE,
2654     SPELL_SUMMON_DEMON,
2655     SPELL_DEMONIC_HORDE,               //  120
2656     SPELL_SUMMON_GREATER_DEMON,
2657     SPELL_CORPSE_ROT,
2658     SPELL_TUKIMAS_VORPAL_BLADE,
2659     SPELL_FIRE_BRAND,
2660     SPELL_FREEZING_AURA,               //  125
2661     SPELL_LETHAL_INFUSION,
2662     SPELL_CRUSH,
2663     SPELL_BOLT_OF_IRON,
2664     SPELL_STONE_ARROW,
2665     SPELL_TOMB_OF_DOROKLOHE,           //  130
2666     SPELL_STONEMAIL,
2667     SPELL_SHOCK,
2668     SPELL_SWIFTNESS,
2669     SPELL_FLY,
2670     SPELL_INSULATION,                  //  135
2671     SPELL_ORB_OF_ELECTROCUTION,
2672     SPELL_DETECT_CREATURES,
2673     SPELL_CURE_POISON_II,
2674     SPELL_CONTROL_TELEPORT,
2675     SPELL_POISON_AMMUNITION,           //  140
2676     SPELL_POISON_WEAPON,
2677     SPELL_RESIST_POISON,
2678     SPELL_PROJECTED_NOISE,
2679     SPELL_ALTER_SELF,
2680     SPELL_DEBUGGING_RAY,               //  145
2681     SPELL_RECALL,
2682     SPELL_PORTAL,
2683     SPELL_AGONY,
2684     SPELL_SPIDER_FORM,
2685     SPELL_DISRUPT,                     //  150
2686     SPELL_DISINTEGRATE,
2687     SPELL_BLADE_HANDS,
2688     SPELL_STATUE_FORM,
2689     SPELL_ICE_FORM,
2690     SPELL_DRAGON_FORM,                 //  155
2691     SPELL_NECROMUTATION,
2692     SPELL_DEATH_CHANNEL,
2693     SPELL_SYMBOL_OF_TORMENT,
2694     SPELL_DEFLECT_MISSILES,
2695     SPELL_ORB_OF_FRAGMENTATION,        //  160
2696     SPELL_ICE_BOLT,
2697     SPELL_ICE_STORM,
2698     SPELL_ARC,
2699     SPELL_AIRSTRIKE,
2700     SPELL_SHADOW_CREATURES,            //  165
2701     SPELL_CONFUSING_TOUCH,
2702     SPELL_SURE_BLADE,
2703 //jmf: new spells
2704     SPELL_FLAME_TONGUE,
2705     SPELL_PASSWALL,
2706     SPELL_IGNITE_POISON,               //  170
2707     SPELL_STICKS_TO_SNAKES,
2708     SPELL_SUMMON_LARGE_MAMMAL,         // e.g. hound
2709     SPELL_SUMMON_DRAGON,
2710     SPELL_TAME_BEASTS,                 // charm/enslave but only animals
2711     SPELL_SLEEP,                       //  175
2712     SPELL_MASS_SLEEP,
2713     SPELL_DETECT_MAGIC,                //jmf: unfinished, perhaps useless
2714     SPELL_DETECT_SECRET_DOORS,
2715     SPELL_SEE_INVISIBLE,
2716     SPELL_FORESCRY,                    //  180
2717     SPELL_SUMMON_BUTTERFLIES,
2718     SPELL_WARP_BRAND,
2719     SPELL_SILENCE,
2720     SPELL_SHATTER,
2721     SPELL_DISPERSAL,                   //  185
2722     SPELL_DISCHARGE,
2723     SPELL_BEND,
2724     SPELL_BACKLIGHT,
2725     SPELL_INTOXICATE,   // confusion but only "smart" creatures
2726     SPELL_GLAMOUR,      // charm/confuse/sleep but only "smart" creatures 190
2727     SPELL_EVAPORATE,    // turn a potion into a cloud
2728     SPELL_ERINGYAS_SURPRISING_BOUQUET, // turn sticks into herbivore food
2729     SPELL_FRAGMENTATION,               // replacement for "orb of frag"
2730     SPELL_AIR_WALK,                    // "dematerialize" (air/transmigration)
2731     SPELL_SANDBLAST,     // mini-frag; can use stones for material comp   195
2732     SPELL_ROTTING,       // evil god power or necromantic transmigration
2733     SPELL_SHUGGOTH_SEED, // evil god power or necromantic summoning
2734     SPELL_MAXWELLS_SILVER_HAMMER,      // vorpal-brand maces etc.
2735     SPELL_CONDENSATION_SHIELD,         // "shield" of icy vapour
2736     SPELL_SEMI_CONTROLLED_BLINK,       //jmf: to test effect              200
2737     SPELL_STONESKIN,
2738     SPELL_SIMULACRUM,
2739     SPELL_CONJURE_BALL_LIGHTNING,     // 203 (be wary of 210, see below)
2740     NUM_SPELLS,
2741     SPELL_NO_SPELL = 210              //  210 - added 22jan2000 {dlb}
2742 };
2743 
2744 enum SPELL_TYPES //jmf: 24jul2000: changed from integer-list to bitfield
2745 {
2746   SPTYP_NONE           = 0, // "0" is reserved for no type at all {dlb}
2747   SPTYP_CONJURATION    = 1, // was 11, but only for old typematch routine {dlb}
2748   SPTYP_ENCHANTMENT    = 1<<1,
2749   SPTYP_FIRE           = 1<<2,
2750   SPTYP_ICE            = 1<<3,
2751   SPTYP_TRANSMIGRATION = 1<<4,
2752   SPTYP_NECROMANCY     = 1<<5,
2753   SPTYP_SUMMONING      = 1<<6,
2754   SPTYP_DIVINATION     = 1<<7,
2755   SPTYP_TRANSLOCATION  = 1<<8,
2756   SPTYP_POISON         = 1<<9,
2757   SPTYP_EARTH          = 1<<10,
2758   SPTYP_AIR            = 1<<11,
2759   SPTYP_HOLY           = 1<<12, //jmf: moved to accomodate "random" miscast f/x
2760   SPTYP_LAST_EXPONENT  = 12,    //jmf: ``NUM_SPELL_TYPES'' kinda useless
2761   NUM_SPELL_TYPES      = 14,
2762   SPTYP_RANDOM         = 1<<14
2763 };
2764 
2765 enum STATS
2766 {
2767   STAT_STRENGTH,                     //    0
2768   STAT_DEXTERITY,
2769   STAT_INTELLIGENCE,
2770   NUM_STATS, // added for increase_stats() {dlb}
2771   STAT_ALL, // must remain after NUM_STATS -- added to handle royal jelly, etc. {dlb}
2772   STAT_RANDOM = 255 // leave at 255, added for increase_stats() handling {dlb}
2773 };
2774 
2775 enum STATUE_TYPES
2776 {
2777     STATUE_SILVER,
2778     STATUE_ORANGE_CRYSTAL,
2779     NUM_STATUE_TYPES
2780 };
2781 
2782 enum STATUS_REDRAW_FLAGS
2783 {
2784     REDRAW_HUNGER         = 0x00000001,
2785     REDRAW_BURDEN         = 0x00000002,
2786     REDRAW_LINE_1_MASK    = 0x00000003,
2787 
2788     REDRAW_PRAYER         = 0x00000100,
2789     REDRAW_REPEL_UNDEAD   = 0x00000200,
2790     REDRAW_BREATH         = 0x00000400,
2791     REDRAW_REPEL_MISSILES = 0x00000800,
2792     REDRAW_REGENERATION   = 0x00001000,
2793     REDRAW_INSULATION     = 0x00002000,
2794     REDRAW_FLY            = 0x00004000,
2795     REDRAW_INVISIBILITY   = 0x00008000,
2796     REDRAW_LINE_2_MASK    = 0x0000ff00,
2797 
2798     REDRAW_CONFUSION      = 0x00010000,
2799     REDRAW_POISONED       = 0x00020000,
2800     REDRAW_LIQUID_FLAMES  = 0x00040000,
2801     REDRAW_DISEASED       = 0x00080000,
2802     REDRAW_CONTAMINATED   = 0x00100000,
2803     REDRAW_SWIFTNESS      = 0x00200000,
2804     REDRAW_SPEED          = 0x00400000,
2805     REDRAW_LINE_3_MASK    = 0x007f0000
2806 };
2807 
2808 enum STAVES
2809 {
2810     STAFF_WIZARDRY,                    //    0
2811     STAFF_POWER,
2812     STAFF_FIRE,
2813     STAFF_COLD,
2814     STAFF_POISON,
2815     STAFF_ENERGY,                      //    5
2816     STAFF_DEATH,
2817     STAFF_CONJURATION,
2818     STAFF_ENCHANTMENT,
2819     STAFF_SUMMONING,
2820     STAFF_SMITING,                     //   10
2821     STAFF_SPELL_SUMMONING,
2822     STAFF_DESTRUCTION_I,
2823     STAFF_DESTRUCTION_II,
2824     STAFF_DESTRUCTION_III,
2825     STAFF_DESTRUCTION_IV,              //   15
2826     STAFF_WARDING,
2827     STAFF_DISCOVERY,
2828     STAFF_DEMONOLOGY,                  //   18
2829     STAFF_STRIKING,                    //   19
2830     STAFF_AIR = 25,                    //   25
2831     STAFF_EARTH,
2832     STAFF_CHANNELING,
2833     NUM_STAVES                         // must remain last member {dlb}
2834 };
2835 
2836 enum SYMBOLS // beam[].type - note that this (and its variants) also accepts values from other enums - confusing {dlb}
2837 {
2838     SYM_SPACE = ' ',                   //   32
2839     SYM_FLASK = '!',                   //   33
2840     SYM_BOLT = '#',                    //   35
2841     SYM_CHUNK = '%',                   //   37
2842     SYM_OBJECT = '(',                  //   40 - actually used for books, but... {dlb}
2843     SYM_WEAPON = ')',                  //   41
2844     SYM_ZAP = '*',                     //   42
2845     SYM_BURST = '+',                   //   43
2846     SYM_STICK = '/',                   //   47
2847     SYM_TRINKET = '=',                 //   61
2848     SYM_SCROLL = '?',                  //   63
2849     SYM_DEBUG = 'X',                   //   88
2850     SYM_ARMOUR = '[',                  //   91
2851     SYM_MISSILE = '`'                  //   96
2852 };
2853 
2854 enum TAGS   // used during save/load process to identify data blocks
2855 {
2856     TAG_VERSION = 0,                    // should NEVER be read in!
2857     TAG_YOU = 1,                        // 'you' structure
2858     TAG_YOU_ITEMS,                      // your items
2859     TAG_YOU_DUNGEON,                    // dungeon specs (stairs, branches, features)
2860     TAG_LEVEL,                          // various grids & clouds
2861     TAG_LEVEL_ITEMS,                    // items/traps
2862     TAG_LEVEL_MONSTERS,                 // monsters
2863     TAG_GHOST,                          // ghost
2864     TAG_LEVEL_ATTITUDE,                 // monster attitudes
2865     NUM_TAGS
2866 };
2867 
2868 enum TAGTYPES   // file types supported by tag system
2869 {
2870     TAGTYPE_PLAYER=0,           // Foo.sav
2871     TAGTYPE_LEVEL,              // Foo.00a, .01a, etc.
2872     TAGTYPE_GHOST               // bones.xxx
2873 };
2874 
2875 
2876 enum TRANSFORMATIONS
2877 {
2878     TRAN_NONE,                         //    0
2879     TRAN_SPIDER,
2880     TRAN_BLADE_HANDS,
2881     TRAN_STATUE,
2882     TRAN_ICE_BEAST,
2883     TRAN_DRAGON,                       //    5
2884     TRAN_LICH,
2885     TRAN_SERPENT_OF_HELL,
2886     TRAN_AIR,
2887     NUM_TRANSFORMATIONS                // must remain last member {dlb}
2888 };
2889 
2890 enum TRAPS                             // env.trap_type[]
2891 {
2892     TRAP_DART,                         //    0
2893     TRAP_ARROW,
2894     TRAP_SPEAR,
2895     TRAP_AXE,
2896     TRAP_TELEPORT,
2897     TRAP_AMNESIA,                      //    5
2898     TRAP_BLADE,
2899     TRAP_BOLT,
2900     TRAP_ZOT,
2901     TRAP_NEEDLE,
2902     NUM_TRAPS,                         // must remain last 'regular' member {dlb}
2903     TRAP_UNASSIGNED = 100,             // keep set at 100 for now {dlb}
2904     TRAP_RANDOM = 255                  // set at 255 to avoid potential conflicts {dlb}
2905 };
2906 
2907 enum UNARMED_ATTACKS
2908 {
2909     UNAT_NO_ATTACK,                    //    0
2910     UNAT_KICK,
2911     UNAT_HEADBUTT,
2912     UNAT_TAILSLAP,
2913     UNAT_PUNCH
2914 };
2915 
2916 enum UNDEAD_STATES                     // you.is_undead
2917 {
2918     US_ALIVE,                          //    0
2919     US_HUNGRY_DEAD,
2920     US_UNDEAD
2921 };
2922 
2923 enum UNIQUE_ITEM_STATUS
2924 {
2925     UNIQ_NOT_EXISTS = 0,
2926     UNIQ_EXISTS = 1,
2927     UNIQ_LOST_IN_ABYSS = 2
2928 };
2929 
2930 enum VORPAL_DESCRIPTIONS
2931 {
2932     DVORP_CRUSHING,                    //    0
2933     DVORP_SLICING,
2934     DVORP_PIERCING,
2935     DVORP_CHOPPING
2936 };
2937 
2938 // NOTE:  This order is very special!  Its basically the same as ZAP_*,
2939 // and there are bits of the code that still use that fact.. see zap_wand().
2940 enum WANDS                             // mitm[].subtype
2941 {
2942     WAND_FLAME,                        //    0
2943     WAND_FROST,
2944     WAND_SLOWING,
2945     WAND_HASTING,
2946     WAND_MAGIC_DARTS,
2947     WAND_HEALING,                      //    5
2948     WAND_PARALYSIS,
2949     WAND_FIRE,
2950     WAND_COLD,
2951     WAND_CONFUSION,
2952     WAND_INVISIBILITY,                 //   10
2953     WAND_DIGGING,
2954     WAND_FIREBALL,
2955     WAND_TELEPORTATION,
2956     WAND_LIGHTNING,
2957     WAND_POLYMORPH_OTHER,              //   15
2958     WAND_ENSLAVEMENT,
2959     WAND_DRAINING,
2960     WAND_RANDOM_EFFECTS,
2961     WAND_DISINTEGRATION,
2962     NUM_WANDS                          // must remain last member {dlb}
2963 };
2964 
2965 enum WEAPONS
2966 {
2967 // Base weapons
2968     WPN_CLUB,                          //    0
2969     WPN_MACE,
2970     WPN_FLAIL,
2971     WPN_DAGGER,
2972     WPN_MORNINGSTAR,
2973     WPN_SHORT_SWORD,                   //    5
2974     WPN_LONG_SWORD,
2975     WPN_GREAT_SWORD,
2976     WPN_SCIMITAR,
2977     WPN_HAND_AXE,
2978     WPN_BATTLEAXE,                     //   10
2979     WPN_SPEAR,
2980     WPN_HALBERD,
2981     WPN_SLING,
2982     WPN_BOW,
2983     WPN_CROSSBOW,                      //   15
2984     WPN_HAND_CROSSBOW,
2985     WPN_GLAIVE,
2986     WPN_QUARTERSTAFF,
2987 // these three not created ordinarily
2988     WPN_SCYTHE,
2989     WPN_GIANT_CLUB,                    //   20
2990     WPN_GIANT_SPIKED_CLUB,
2991 // "rare" weapons - some have special cases and are uncommon
2992     WPN_EVENINGSTAR,
2993     WPN_QUICK_BLADE,
2994     WPN_KATANA,
2995     WPN_EXECUTIONERS_AXE,              //   25
2996     WPN_DOUBLE_SWORD,
2997     WPN_TRIPLE_SWORD,
2998     WPN_HAMMER,
2999     WPN_ANCUS,
3000     WPN_WHIP,                          //   30
3001     WPN_SABRE,
3002     WPN_DEMON_BLADE,
3003     WPN_DEMON_WHIP,
3004     WPN_DEMON_TRIDENT,
3005     WPN_BROAD_AXE,                     //   35
3006 // base items (continued)
3007     WPN_WAR_AXE,
3008     WPN_TRIDENT,
3009     WPN_SPIKED_FLAIL,
3010     WPN_GREAT_MACE,
3011     WPN_GREAT_FLAIL,                   //   40
3012     WPN_KNIFE,
3013     WPN_BLOWGUN,
3014     WPN_FALCHION,
3015     NUM_WEAPONS,                       //   44 - must remain last regular member {dlb}
3016 // special cases
3017     WPN_UNARMED = 500,                 //  500
3018     WPN_UNKNOWN = 1000,                // 1000
3019     WPN_RANDOM
3020 };
3021 
3022 enum WEAPON_DESCRIPTIONS
3023 {
3024     DWPN_PLAIN = 0,                    //    0 - added to round out enum {dlb}
3025     DWPN_RUNED = 1,                    //    1
3026     DWPN_GLOWING,
3027     DWPN_ORCISH,
3028     DWPN_ELVEN,
3029     DWPN_DWARVEN                       //    5
3030 };
3031 
3032 enum WEAPON_PROPERTIES
3033 {
3034     PWPN_DAMAGE,                       //    0
3035     PWPN_HIT,
3036     PWPN_SPEED
3037 };
3038 
3039 #ifdef WIZARD
3040 
3041 enum WIZARD_OPTIONS
3042 {
3043     WIZ_NEVER,                         // protect player from accidental wiz
3044     WIZ_NO,                            // don't start character in wiz mode
3045     WIZ_YES                            // start character in wiz mode
3046 };
3047 
3048 #endif
3049 
3050 enum ZAPS                              // zapping(), zappy()
3051 {
3052     ZAP_FLAME,                         //    0
3053     ZAP_FROST,
3054     ZAP_SLOWING,
3055     ZAP_HASTING,
3056     ZAP_MAGIC_DARTS,
3057     ZAP_HEALING,                       //    5
3058     ZAP_PARALYSIS,
3059     ZAP_FIRE,
3060     ZAP_COLD,
3061     ZAP_CONFUSION,
3062     ZAP_INVISIBILITY,                  //   10
3063     ZAP_DIGGING,
3064     ZAP_FIREBALL,
3065     ZAP_TELEPORTATION,
3066     ZAP_LIGHTNING,
3067     ZAP_POLYMORPH_OTHER,               //   15
3068     ZAP_VENOM_BOLT,
3069     ZAP_NEGATIVE_ENERGY,
3070     ZAP_CRYSTAL_SPEAR,
3071     ZAP_BEAM_OF_ENERGY,
3072     ZAP_MYSTIC_BLAST,                  //   20
3073     ZAP_ENSLAVEMENT,
3074     ZAP_PAIN,
3075     ZAP_STICKY_FLAME,
3076     ZAP_DISPEL_UNDEAD,
3077     ZAP_CLEANSING_FLAME,               //   25
3078     ZAP_BONE_SHARDS,
3079     ZAP_BANISHMENT,
3080     ZAP_DEGENERATION,
3081     ZAP_STING,
3082     ZAP_HELLFIRE,                      //   30
3083     ZAP_IRON_BOLT,
3084     ZAP_STRIKING,
3085     ZAP_STONE_ARROW,
3086     ZAP_ELECTRICITY,
3087     ZAP_ORB_OF_ELECTRICITY,            //   35
3088     ZAP_SPIT_POISON,
3089     ZAP_DEBUGGING_RAY,
3090     ZAP_BREATHE_FIRE,
3091     ZAP_BREATHE_FROST,
3092     ZAP_BREATHE_ACID,                  //   40
3093     ZAP_BREATHE_POISON,
3094     ZAP_BREATHE_POWER,
3095     ZAP_ENSLAVE_UNDEAD,
3096     ZAP_AGONY,
3097     ZAP_DISRUPTION,                    //   45
3098     ZAP_DISINTEGRATION,                //   46
3099     ZAP_ISKS_CROSS, //   47: Isk's Cross -- commented out, deprecated {dlb}
3100     ZAP_BREATHE_STEAM = 48,            //   48
3101     ZAP_CONTROL_DEMON,
3102     ZAP_ORB_OF_FRAGMENTATION,          //   50
3103     ZAP_ICE_BOLT,
3104     ZAP_ICE_STORM,
3105     ZAP_BACKLIGHT,                     //jmf: added next bunch 19mar2000
3106     ZAP_SLEEP,
3107     ZAP_FLAME_TONGUE,
3108     ZAP_SANDBLAST,
3109     ZAP_SMALL_SANDBLAST,
3110     ZAP_MAGMA,
3111     ZAP_POISON_ARROW,
3112     NUM_ZAPS                           // must remain last member {dlb}
3113 };
3114 
3115 
3116 #endif // ENUM_H
3117