root/trunk/src/defines.h

Revision 979, 59.3 kB (checked in by takkaria, 3 weeks ago)

Implement the mushroom of sprinting.
Forget about making a potion of mutations.
Add a potion type for the potion of dragon breath.

  • Property svn:eol-style set to native
Line 
1 #ifndef INCLUDED_DEFINES_H
2 #define INCLUDED_DEFINES_H
3
4 /*
5  * Copyright (c) 1997 Ben Harrison, James E. Wilson, Robert A. Koeneke
6  *
7  * This software may be copied and distributed for educational, research,
8  * and not for profit purposes provided that this copyright and statement
9  * are included in all such copies.  Other copyrights may also apply.
10  */
11
12
13 /*
14  * Do not edit this file unless you know *exactly* what you are doing.
15  *
16  * Some of the values in this file were chosen to preserve game balance,
17  * while others are hard-coded based on the format of old save-files, the
18  * definition of arrays in various places, mathematical properties, fast
19  * computation, storage limits, or the format of external text files.
20  *
21  * Changing some of these values will induce crashes or memory errors or
22  * savefile mis-reads.  Most of the comments in this file are meant as
23  * reminders, not complete descriptions, and even a complete knowledge
24  * of the source may not be sufficient to fully understand the effects
25  * of changing certain definitions.
26  *
27  * Lastly, note that the code does not always use the symbolic constants
28  * below, and sometimes uses various hard-coded values that may not even
29  * be defined in this file, but which may be related to definitions here.
30  * This is of course bad programming practice, but nobody is perfect...
31  *
32  * You have been warned.
33  */
34
35
36 /*
37  * Name of the version/variant and its version string
38  */
39 #define VERSION_NAME   "Angband"
40
41 #ifdef BUILD_ID
42 # define VERSION_STRING "3.1.0 dev (" BUILD_ID ")"
43 #else
44 # define VERSION_STRING "3.1.0 dev"
45 #endif
46
47
48 /*
49  * Current savefile version
50  */
51 #define VERSION_MAJOR   3
52 #define VERSION_MINOR   0
53 #define VERSION_PATCH   14
54 #define VERSION_EXTRA   0
55
56 /*
57  * Oldest version number that can still be imported
58  */
59 #define OLD_VERSION_MAJOR       3
60 #define OLD_VERSION_MINOR       0
61 #define OLD_VERSION_PATCH       14
62
63
64 /*
65  * Version of random artifact code.
66  */
67 #define RANDART_VERSION 63
68
69
70 /*
71  * Number of grids in each block (vertically)
72  * Probably hard-coded to 11, see "generate.c"
73  */
74 #define BLOCK_HGT       11
75
76 /*
77  * Number of grids in each block (horizontally)
78  * Probably hard-coded to 11, see "generate.c"
79  */
80 #define BLOCK_WID       11
81
82
83 /*
84  * Number of grids in each panel (vertically)
85  * Must be a multiple of BLOCK_HGT
86  */
87 #define PANEL_HGT       11
88
89 /*
90  * Number of grids in each panel (horizontally)
91  * Must be a multiple of BLOCK_WID
92  */
93 #define PANEL_WID       (use_bigtile ? 16 : 33)
94
95 #define ROW_MAP                 1
96 #define COL_MAP                 13
97
98
99 /*
100  * Number of grids in each screen (vertically)
101  * Must be a multiple of PANEL_HGT (at least 2x)
102  */
103 #define SCREEN_HGT      (Term->hgt - ROW_MAP - 1)
104
105 /*
106  * Number of grids in each screen (horizontally)
107  * Must be a multiple of PANEL_WID (at least 2x)
108  */
109 #define SCREEN_WID      ((Term->wid - COL_MAP - 1) / (use_bigtile ? 2 : 1))
110
111
112 /*
113  * Number of grids in each dungeon (vertically)
114  * Must be a multiple of SCREEN_HGT
115  * Must be less or equal to 256
116  */
117 #define DUNGEON_HGT             66
118
119 /*
120  * Number of grids in each dungeon (horizontally)
121  * Must be a multiple of SCREEN_WID
122  * Must be less or equal to 256
123  */
124 #define DUNGEON_WID             198
125
126 #define TOWN_WID 66
127 #define TOWN_HGT 22
128
129
130 /*
131  * Maximum amount of Angband windows.
132  */
133 #define ANGBAND_TERM_MAX 8
134
135
136 /*
137  * Total number of stores (see "store.c", etc)
138  */
139 #define MAX_STORES      8
140
141
142 /*
143  * Store index definitions (see "store.c", etc)
144  */
145 #define STORE_GENERAL   0
146 #define STORE_ARMOR             1
147 #define STORE_WEAPON    2
148 #define STORE_TEMPLE    3
149 #define STORE_ALCHEMY   4
150 #define STORE_MAGIC             5
151 #define STORE_B_MARKET  6
152 #define STORE_HOME              7
153
154 /*
155  * Maximum number of player "sex" types (see "table.c", etc)
156  */
157 #define MAX_SEXES            2
158
159
160 /*
161  * Maximum amount of starting equipment
162  */
163 #define MAX_START_ITEMS 4
164
165
166 /*
167  * Number of tval/min-sval/max-sval slots per ego_item
168  */
169 #define EGO_TVALS_MAX 3
170
171
172 /*
173  * Hack -- Maximum number of quests
174  */
175 #define MAX_Q_IDX       4
176
177 /*
178  * Maximum number of high scores in the high score file
179  */
180 #define MAX_HISCORES    100
181
182
183 /*
184  * Maximum dungeon level.  The player can never reach this level
185  * in the dungeon, and this value is used for various calculations
186  * involving object and monster creation.  It must be at least 100.
187  * Setting it below 128 may prevent the creation of some objects.
188  */
189 #define MAX_DEPTH       128
190
191
192 /*
193  * Maximum size of the "view" array (see "cave.c")
194  * Note that the "view radius" will NEVER exceed 20, and even if the "view"
195  * was octagonal, we would never require more than 1520 entries in the array.
196  */
197 #define VIEW_MAX 1536
198
199 /*
200  * Maximum size of the "temp" array (see "cave.c")
201  * Note that we must be as large as "VIEW_MAX" for proper functioning
202  * of the "update_view()" function, and we must also be as large as the
203  * largest illuminatable room, but no room is larger than 800 grids.  We
204  * must also be large enough to allow "good enough" use as a circular queue,
205  * to calculate monster flow, but note that the flow code is "paranoid".
206  */
207 #define TEMP_MAX 1536
208
209
210 /*
211  * OPTION: Maximum number of macros (see "util.c")
212  */
213 #define MACRO_MAX       512
214
215 /*
216  * OPTION: Maximum number of autoinscriptions(see "object1.c")
217  */
218 #define AUTOINSCRIPTIONS_MAX 216
219
220 /* History message types */
221 #define HISTORY_PLAYER_BIRTH     0x0001 /* Player was born */
222 #define HISTORY_ARTIFACT_UNKNOWN 0x0002 /* Player found but not IDd an artifact */
223 #define HISTORY_ARTIFACT_KNOWN   0x0004 /* Player has IDed an artifact */
224 #define HISTORY_ARTIFACT_LOST    0x0008 /* Player had an artifact and lost it */
225 #define HISTORY_PLAYER_DEATH     0x0010 /* Player has been slain */
226 #define HISTORY_SLAY_UNIQUE      0x0020 /* Player has slain a unique monster */
227 #define HISTORY_USER_INPUT       0x0040 /* User-added note */
228 #define HISTORY_SAVEFILE_IMPORT  0x0080 /* Added when an older version savefile is imported */
229 #define HISTORY_GAIN_LEVEL       0x0100 /* Player gained a level */
230 #define HISTORY_GENERIC          0x0200 /* Anything else not covered here (unused) */
231
232
233 /*
234  * Store constants
235  *
236  * STORE_MAX_KEEP must be < STORE_INVEN_MAX.
237  */
238 #define STORE_INVEN_MAX 24              /* Max number of discrete objs in inven */
239 #define STORE_TURNS             1000    /* Number of turns between turnovers */
240 #define STORE_SHUFFLE   25              /* 1/Chance (per day) of an owner changing */
241
242
243 /*
244  * Misc constants
245  */
246 #define TOWN_DAWN               10000   /* Number of turns from dawn to dawn XXX */
247 #define BREAK_GLYPH             550             /* Rune of protection resistance */
248 #define BTH_PLUS_ADJ    3       /* Adjust BTH per plus-to-hit */
249 #define MON_MULT_ADJ    8               /* High value slows multiplication */
250 #define MON_DRAIN_LIFE  2               /* Percent of player exp drained per hit */
251 #define USE_DEVICE      3               /* x> Harder devices x< Easier devices */
252
253 /*
254  * There is a 1/20 (5%) chance of inflating the requested object level
255  * during the creation of an object (see "get_obj_num()" in "object.c").
256  * Lower values yield better objects more often.
257  */
258 #define GREAT_OBJ       20
259
260 /*
261  * There is a 1/20 (5%) chance that ego-items with an inflated base-level are
262  * generated when an object is turned into an ego-item (see make_ego_item()
263  * in object2.c). As above, lower values yield better ego-items more often.
264  */
265 #define GREAT_EGO       20
266
267 /*
268  * There is a 1/50 (2%) chance of inflating the requested monster level
269  * during the creation of a monsters (see "get_mon_num()" in "monster.c").
270  * Lower values yield harder monsters more often.
271  */
272 #define NASTY_MON       50              /* 1/chance of inflated monster level */
273
274
275
276 /*
277  * Refueling constants
278  */
279 #define FUEL_TORCH      5000    /* Maximum amount of fuel in a torch */
280 #define FUEL_LAMP       15000   /* Maximum amount of fuel in a lantern */
281
282
283 /*
284  * More maximum values
285  */
286 #define MAX_SIGHT       20      /* Maximum view distance */
287 #define MAX_RANGE       18      /* Maximum range (spells, etc) */
288
289
290
291 /*
292  * There is a 1/160 chance per round of creating a new monster
293  */
294 #define MAX_M_ALLOC_CHANCE      160
295
296 /*
297  * Normal levels get at least 14 monsters
298  */
299 #define MIN_M_ALLOC_LEVEL       14
300
301 /*
302  * The town starts out with 4 residents during the day
303  */
304 #define MIN_M_ALLOC_TD          4
305
306 /*
307  * The town starts out with 8 residents during the night
308  */
309 #define MIN_M_ALLOC_TN          8
310
311
312 /*
313  * A monster can only "multiply" (reproduce) if there are fewer than 100
314  * monsters on the level capable of such spontaneous reproduction.  This
315  * is a hack which prevents the "mon_list[]" array from exploding due to
316  * reproducing monsters.  Messy, but necessary.
317  */
318 #define MAX_REPRO       100
319
320
321 /*
322  * Player constants
323  */
324 #define PY_MAX_EXP      99999999L       /* Maximum exp */
325 #define PY_MAX_GOLD     999999999L      /* Maximum gold */
326 #define PY_MAX_LEVEL    50              /* Maximum level */
327
328 /*
329  * Player "food" crucial values
330  */
331 #define PY_FOOD_UPPER   20000   /* Upper limit on food counter */
332 #define PY_FOOD_MAX             15000   /* Food value (Bloated) */
333 #define PY_FOOD_FULL    10000   /* Food value (Normal) */
334 #define PY_FOOD_ALERT   2000    /* Food value (Hungry) */
335 #define PY_FOOD_WEAK    1000    /* Food value (Weak) */
336 #define PY_FOOD_FAINT   500             /* Food value (Fainting) */
337 #define PY_FOOD_STARVE  100             /* Food value (Starving) */
338
339 /*
340  * Player regeneration constants
341  */
342 #define PY_REGEN_NORMAL         197             /* Regen factor*2^16 when full */
343 #define PY_REGEN_WEAK           98              /* Regen factor*2^16 when weak */
344 #define PY_REGEN_FAINT          33              /* Regen factor*2^16 when fainting */
345 #define PY_REGEN_HPBASE         1442    /* Min amount hp regen*2^16 */
346 #define PY_REGEN_MNBASE         524             /* Min amount mana regen*2^16 */
347
348
349 /*
350  * Maximum number of players spells
351  */
352 #define PY_MAX_SPELLS 64
353
354 /*
355  * Number of spells per book
356  */
357 #define SPELLS_PER_BOOK 9
358
359 /*
360  * Maximum number of spells per realm
361  */
362 #define BOOKS_PER_REALM 9
363
364 /*
365  * Maximum number realms
366  */
367 #define MAX_REALMS 2
368
369
370 /*
371  * Flags for player_type.spell_flags[]
372  */
373 #define PY_SPELL_LEARNED    0x01 /* Spell has been learned */
374 #define PY_SPELL_WORKED     0x02 /* Spell has been successfully tried */
375 #define PY_SPELL_FORGOTTEN  0x04 /* Spell has been forgotten */
376
377
378 /*
379  * Maximum number of "normal" pack slots, and the index of the "overflow"
380  * slot, which can hold an item, but only temporarily, since it causes the
381  * pack to "overflow", dropping the "last" item onto the ground.  Since this
382  * value is used as an actual slot, it must be less than "INVEN_WIELD" (below).
383  * Note that "INVEN_PACK" is probably hard-coded by its use in savefiles, and
384  * by the fact that the screen can only show 23 items plus a one-line prompt.
385  */
386 #define INVEN_PACK              23
387
388 /*
389  * Indexes used for various "equipment" slots (hard-coded by savefiles, etc).
390  */
391 #define INVEN_WIELD             24
392 #define INVEN_BOW       25
393 #define INVEN_LEFT      26
394 #define INVEN_RIGHT     27
395 #define INVEN_NECK      28
396 #define INVEN_LITE      29
397 #define INVEN_BODY      30
398 #define INVEN_OUTER     31
399 #define INVEN_ARM       32
400 #define INVEN_HEAD      33
401 #define INVEN_HANDS     34
402 #define INVEN_FEET      35
403
404 /*
405  * Total number of inventory slots (hard-coded).
406  */
407 #define INVEN_TOTAL             36
408
409
410 /*
411  * Special return code corresponding to squelched items.
412  */
413 #define ALL_SQUELCHED   101
414
415
416 /*
417  * A "stack" of items is limited to less than 100 items (hard-coded).
418  */
419 #define MAX_STACK_SIZE                  100
420
421
422 /*
423  * Maximum number of objects allowed in a single dungeon grid.
424  *
425  * The main-screen has a minimum size of 24 rows, so we can always
426  * display 23 objects + 1 header line.
427  */
428 #define MAX_FLOOR_STACK                 23
429
430
431 /*** Constants for accessing the player struct ***/
432
433 /*
434  * Timed effects
435  */
436 enum
437 {
438         TMD_FAST = 0, TMD_SLOW, TMD_BLIND, TMD_PARALYZED, TMD_CONFUSED,
439         TMD_AFRAID, TMD_IMAGE, TMD_POISONED, TMD_CUT, TMD_STUN, TMD_PROTEVIL,
440         TMD_INVULN, TMD_HERO, TMD_SHERO, TMD_SHIELD, TMD_BLESSED, TMD_SINVIS,
441         TMD_SINFRA, TMD_OPP_ACID, TMD_OPP_ELEC, TMD_OPP_FIRE, TMD_OPP_COLD,
442         TMD_OPP_POIS, TMD_OPP_CONF, TMD_AMNESIA, TMD_TELEPATHY, TMD_STONESKIN,
443         TMD_TERROR, TMD_SPRINT,
444
445         TMD_MAX
446 };
447
448 /*
449  * Skill indexes
450  */
451 enum
452 {
453         SKILL_DISARM,                   /* Skill: Disarming */
454         SKILL_DEVICE,                   /* Skill: Magic Devices */
455         SKILL_SAVE,                             /* Skill: Saving throw */
456         SKILL_STEALTH,                  /* Skill: Stealth factor */
457         SKILL_SEARCH,                   /* Skill: Searching ability */
458         SKILL_SEARCH_FREQUENCY, /* Skill: Searching frequency */
459         SKILL_TO_HIT_MELEE,             /* Skill: To hit (normal) */
460         SKILL_TO_HIT_BOW,               /* Skill: To hit (shooting) */
461         SKILL_TO_HIT_THROW,             /* Skill: To hit (throwing) */
462         SKILL_DIGGING,                  /* Skill: Digging */
463
464         SKILL_MAX,
465
466         /* skills that have racial/class modifiers, scheduled for obviation later */
467         SKILL_MAX_NO_RACE_CLASS = SKILL_MAX - 2
468 };
469
470
471 /*
472  * Indexes of the various "stats" (hard-coded by savefiles, etc).
473  */
474 enum
475 {
476         A_STR = 0,
477         A_INT,
478         A_WIS,
479         A_DEX,
480         A_CON,
481         A_CHR,
482
483         A_MAX
484 };
485
486
487 /*
488  * Player sex constants (hard-coded by save-files, arrays, etc)
489  */
490 #define SEX_FEMALE              0
491 #define SEX_MALE                1
492
493
494
495 /*** General index values ***/
496
497
498 /*
499  * Legal restrictions for "summon_specific()"
500  */
501 #define SUMMON_ANIMAL       11
502 #define SUMMON_SPIDER       12
503 #define SUMMON_HOUND        13
504 #define SUMMON_HYDRA        14
505 #define SUMMON_ANGEL        15
506 #define SUMMON_DEMON        16
507 #define SUMMON_UNDEAD       17
508 #define SUMMON_DRAGON       18
509 /* xxx */
510 #define SUMMON_HI_DEMON     26
511 #define SUMMON_HI_UNDEAD    27
512 #define SUMMON_HI_DRAGON    28
513 /* xxx */
514 #define SUMMON_WRAITH       31
515 #define SUMMON_UNIQUE       32
516 #define SUMMON_KIN          33
517
518
519 /*
520  * Spell types used by project(), and related functions.
521  */
522 #define GF_XXX1                 1
523 #define GF_ARROW        2
524 #define GF_MISSILE      3
525 #define GF_MANA         4
526 #define GF_HOLY_ORB     5
527 #define GF_LITE_WEAK    6
528 #define GF_DARK_WEAK    7
529 #define GF_WATER        8
530 #define GF_PLASMA       9
531 #define GF_METEOR       10
532 #define GF_ICE          11
533 #define GF_GRAVITY      12
534 #define GF_INERTIA      13
535 #define GF_FORCE        14
536 #define GF_TIME         15
537 #define GF_ACID         16
538 #define GF_ELEC         17
539 #define GF_FIRE         18
540 #define GF_COLD         19
541 #define GF_POIS         20
542 #define GF_XXX2                 21
543 #define GF_LITE         22
544 #define GF_DARK         23
545 #define GF_XXX3                 24
546 #define GF_CONFUSION    25
547 #define GF_SOUND        26
548 #define GF_SHARD        27
549 #define GF_NEXUS        28
550 #define GF_NETHER       29
551 #define GF_CHAOS        30
552 #define GF_DISENCHANT   31
553 #define GF_XXX4                 32
554 #define GF_KILL_WALL    33
555 #define GF_KILL_DOOR    34
556 #define GF_KILL_TRAP    35
557 #define GF_MAKE_WALL    36
558 #define GF_MAKE_DOOR    37
559 #define GF_MAKE_TRAP    38
560 #define GF_XXX5                 39
561 #define GF_XXX6                 40
562 #define GF_AWAY_UNDEAD  41
563 #define GF_AWAY_EVIL    42
564 #define GF_AWAY_ALL             43
565 #define GF_TURN_UNDEAD  44
566 #define GF_TURN_EVIL    45
567 #define GF_TURN_ALL             46
568 #define GF_DISP_UNDEAD  47
569 #define GF_DISP_EVIL    48
570 #define GF_DISP_ALL             49
571 #define GF_XXX7                 50
572 #define GF_OLD_CLONE    51
573 #define GF_OLD_POLY             52
574 #define GF_OLD_HEAL             53
575 #define GF_OLD_SPEED    54
576 #define GF_OLD_SLOW             55
577 #define GF_OLD_CONF             56
578 #define GF_OLD_SLEEP    57
579 #define GF_OLD_DRAIN    58
580 #define GF_XXX8                 59
581
582
583 /*
584  * Some constants for the "learn" code
585  *
586  * Most of these come from the "SM_xxx" flags
587  */
588 #define DRS_FREE                14
589 #define DRS_MANA                15
590 #define DRS_RES_ACID    16
591 #define DRS_RES_ELEC    17
592 #define DRS_RES_FIRE    18
593 #define DRS_RES_COLD    19
594 #define DRS_RES_POIS    20
595 #define DRS_RES_FEAR    21
596 #define DRS_RES_LITE    22
597 #define DRS_RES_DARK    23
598 #define DRS_RES_BLIND   24
599 #define DRS_RES_CONFU   25
600 #define DRS_RES_SOUND   26
601 #define DRS_RES_SHARD   27
602 #define DRS_RES_NEXUS   28
603 #define DRS_RES_NETHR   29
604 #define DRS_RES_CHAOS   30
605 #define DRS_RES_DISEN   31
606
607
608 /*
609  * Keymap modes.
610  */
611 enum
612 {
613         KEYMAP_MODE_ORIG = 0,
614         KEYMAP_MODE_ROGUE,
615
616         KEYMAP_MODES            /* Total */
617 };
618
619
620
621 /*** Feature Indexes (see "lib/edit/feature.txt") ***/
622
623 /* Nothing */
624 #define FEAT_NONE               0x00
625
626 /* Various */
627 #define FEAT_FLOOR              0x01
628 #define FEAT_INVIS              0x02
629 #define FEAT_GLYPH              0x03
630 #define FEAT_OPEN               0x04
631 #define FEAT_BROKEN             0x05
632 #define FEAT_LESS               0x06
633 #define FEAT_MORE               0x07
634
635 /* Shops */
636 #define FEAT_SHOP_HEAD  0x08
637 #define FEAT_SHOP_TAIL  0x0F
638
639 /* Traps */
640 #define FEAT_TRAP_HEAD  0x10
641 #define FEAT_TRAP_TAIL  0x1F
642
643 /* Doors */
644 #define FEAT_DOOR_HEAD  0x20
645 #define FEAT_DOOR_TAIL  0x2F
646
647 /* Extra */
648 #define FEAT_SECRET             0x30
649 #define FEAT_RUBBLE             0x31
650
651 /* Seams */
652 #define FEAT_MAGMA              0x32
653 #define FEAT_QUARTZ             0x33
654 #define FEAT_MAGMA_H    0x34
655 #define FEAT_QUARTZ_H   0x35
656 #define FEAT_MAGMA_K    0x36
657 #define FEAT_QUARTZ_K   0x37
658
659 /* Walls */
660 #define FEAT_WALL_EXTRA 0x38
661 #define FEAT_WALL_INNER 0x39
662 #define FEAT_WALL_OUTER 0x3A
663 #define FEAT_WALL_SOLID 0x3B
664 #define FEAT_PERM_EXTRA 0x3C
665 #define FEAT_PERM_INNER 0x3D
666 #define FEAT_PERM_OUTER 0x3E
667 #define FEAT_PERM_SOLID 0x3F
668
669
670
671 /*** Object origin kinds ***/
672
673 enum
674 {
675         ORIGIN_NONE = 0,
676         ORIGIN_MIXED,
677         ORIGIN_BIRTH,
678         ORIGIN_STORE,
679         ORIGIN_FLOOR,
680         ORIGIN_DROP,
681         ORIGIN_DROP_UNKNOWN,
682         ORIGIN_ACQUIRE,
683         ORIGIN_CHEAT,
684         ORIGIN_CHEST
685 };
686
687
688
689 /*** Important artifact indexes (see "lib/edit/artifact.txt") ***/
690
691 #define ART_POWER                       13
692 #define ART_MORGOTH                     34
693 #define ART_GROND                       111
694
695
696 /*
697  * Hack -- first "normal" artifact in the artifact list.  All of
698  * the artifacts with indexes from 1 to 15 are "special" (lights,
699  * rings, amulets), and the ones from 16 to 127 are "normal".
700  */
701 #define ART_MIN_NORMAL          16
702
703
704
705 /*** Ego-Item indexes (see "lib/edit/ego_item.txt") ***/
706
707
708 /* Nothing */
709 /* xxx */
710 /* xxx */
711 /* xxx */
712
713 /* Body Armor */
714 #define EGO_RESIST_ACID         4
715 #define EGO_RESIST_ELEC         5
716 #define EGO_RESIST_FIRE         6
717 #define EGO_RESIST_COLD         7
718 #define EGO_RESISTANCE          8
719 #define EGO_ELVENKIND           9
720 #define EGO_ARMR_VULN           10
721 #define EGO_PERMANENCE          11
722 #define EGO_ARMR_DWARVEN        12
723 /* xxx */
724 /* xxx */
725 /* xxx */
726
727 /* Shields */
728 #define EGO_ENDURE_ACID         16
729 #define EGO_ENDURE_ELEC         17
730 #define EGO_ENDURE_FIRE         18
731 #define EGO_ENDURE_COLD         19
732 #define EGO_ENDURANCE           20
733 #define EGO_SHIELD_ELVENKIND    21
734 #define EGO_SHIELD_PRESERVATION 22
735 #define EGO_SHIELD_VULN         23
736
737 /* Crowns and Helms */
738 #define EGO_INTELLIGENCE        24
739 #define EGO_WISDOM                      25
740 #define EGO_BEAUTY                      26
741 #define EGO_MAGI                        27
742 #define EGO_MIGHT                       28
743 #define EGO_LORDLINESS          29
744 #define EGO_SEEING                      30
745 #define EGO_INFRAVISION         31
746 #define EGO_LITE                        32
747 #define EGO_TELEPATHY           33
748 #define EGO_REGENERATION        34
749 #define EGO_TELEPORTATION       35
750 #define EGO_STUPIDITY           36
751 #define EGO_NAIVETY                     37
752 #define EGO_UGLINESS            38
753 #define EGO_SICKLINESS          39
754
755 /* Cloaks */
756 #define EGO_PROTECTION          40
757 #define EGO_STEALTH                     41
758 #define EGO_AMAN                        42
759 #define EGO_CLOAK_MAGI          43
760 #define EGO_ENVELOPING          44
761 #define EGO_VULNERABILITY       45
762 #define EGO_IRRITATION          46
763 /* xxx */
764
765 /* Gloves */
766 #define EGO_FREE_ACTION         48
767 #define EGO_SLAYING                     49
768 #define EGO_AGILITY                     50
769 #define EGO_POWER                       51
770 #define EGO_GLOVES_THIEVERY     52
771 #define EGO_GAUNTLETS_COMBAT    53
772 #define EGO_WEAKNESS            54
773 #define EGO_CLUMSINESS          55
774
775 /* Boots */
776 #define EGO_SLOW_DESCENT        56
777 #define EGO_QUIET                       57
778 #define EGO_MOTION                      58
779 #define EGO_SPEED                       59
780 #define EGO_STABILITY           60
781 #define EGO_NOISE                       61
782 #define EGO_SLOWNESS            62
783 #define EGO_ANNOYANCE           63
784
785 /* Weapons */
786 #define EGO_HA                          64
787 #define EGO_DF                          65
788 #define EGO_BLESS_BLADE         66
789 #define EGO_GONDOLIN            67
790 #define EGO_WEST                        68
791 #define EGO_ATTACKS                     69
792 #define EGO_FURY                        70
793 /* xxx */
794 #define EGO_BRAND_ACID          72
795 #define EGO_BRAND_ELEC          73
796 #define EGO_BRAND_FIRE          74
797 #define EGO_BRAND_COLD          75
798 #define EGO_BRAND_POIS          76
799 /* xxx */
800 /* xxx */
801 /* xxx */
802 #define EGO_SLAY_ANIMAL         80
803 #define EGO_SLAY_EVIL           81
804 #define EGO_SLAY_UNDEAD         82
805 #define EGO_SLAY_DEMON          83
806 #define EGO_SLAY_ORC            84
807 #define EGO_SLAY_TROLL          85
808 #define EGO_SLAY_GIANT          86
809 #define EGO_SLAY_DRAGON         87
810 #define EGO_KILL_ANIMAL         88
811 #define EGO_KILL_EVIL           89
812 #define EGO_KILL_UNDEAD         90
813 #define EGO_KILL_DEMON          83
814 #define EGO_KILL_ORC            84
815 #define EGO_KILL_TROLL          85
816 #define EGO_KILL_GIANT          86
817 #define EGO_KILL_DRAGON         95
818 /* xxx */
819 /* xxx */
820 /* xxx */
821 /* xxx */
822 #define EGO_DIGGING                     100
823 #define EGO_DIGGER_EARTHQUAKE           101
824 #define EGO_MORGUL                      102
825 /* xxx */
826
827 /* Bows */
828 #define EGO_ACCURACY            104
829 #define EGO_VELOCITY            105
830 #define EGO_BOW_LORIEN          106
831 #define EGO_CROSSBOW_HARAD      107
832 #define EGO_EXTRA_MIGHT         108
833 #define EGO_EXTRA_SHOTS         109
834 #define EGO_SLING_BUCKLAND      110
835 #define EGO_NAZGUL                      111
836
837 /* Ammo */
838 #define EGO_HURT_ANIMAL         112
839 #define EGO_HURT_EVIL           113
840 #define EGO_HURT_UNDEAD         114
841 #define EGO_HURT_DEMON          115
842 #define EGO_HURT_ORC            116
843 #define EGO_HURT_TROLL          117
844 #define EGO_HURT_GIANT          118
845 #define EGO_HURT_DRAGON         119
846 #define EGO_AMMO_HOLY           120
847 #define EGO_AMMO_VENOM          121
848 #define EGO_FLAME                       122
849 #define EGO_FROST                       123
850 #define EGO_WOUNDING            124
851 #define EGO_BACKBITING          125
852 #define EGO_SHATTERED           126
853 #define EGO_BLASTED                     127
854
855
856
857