1 | /* SCCS Id: @(#)prop.h 3.3 1999/07/07 */
2 | /* Copyright (c) 1989 Mike Threepoint */
3 | /* NetHack may be freely redistributed. See license for details. */
4 |
5 | #ifndef PROP_H
6 | #define PROP_H
7 |
8 | /*** What the properties are ***/
9 | #define FIRE_RES 1
10 | #define COLD_RES 2
11 | #define SLEEP_RES 3
12 | #define DISINT_RES 4
13 | #define SHOCK_RES 5
14 | #define POISON_RES 6
15 | #define ACID_RES 7
16 | #define STONE_RES 8
17 | /* note: for the first eight properties, MR_xxx == (1 << (xxx_RES - 1)) */
18 | #define ADORNED 9
19 | #define REGENERATION 10
20 | #define SEARCHING 11
21 | #define SEE_INVIS 12
22 | #define INVIS 13
23 | #define TELEPORT 14
24 | #define TELEPORT_CONTROL 15
25 | #define POLYMORPH 16
26 | #define POLYMORPH_CONTROL 17
27 | #define LEVITATION 18
28 | #define STEALTH 19
29 | #define AGGRAVATE_MONSTER 20
30 | #define CONFLICT 21
31 | #define PROTECTION 22
32 | #define PROT_FROM_SHAPE_CHANGERS 23
33 | #define WARNING 24
34 | #define TELEPAT 25
35 | #define FAST 26
36 | #define STUNNED 27
37 | #define CONFUSION 28
38 | #define SICK 29
39 | #define BLINDED 30
40 | #define SLEEPING 31
41 | #define WOUNDED_LEGS 32
42 | #define STONED 33
43 | #define STRANGLED 34
44 | #define HALLUC 35
45 | #define HALLUC_RES 36
46 | #define FUMBLING 37
47 | #define JUMPING 38
48 | #define WWALKING 39
49 | #define HUNGER 40
50 | #define GLIB 41
51 | #define REFLECTING 42
52 | #define LIFESAVED 43
53 | #define ANTIMAGIC 44
54 | #define DISPLACED 45
55 | #define CLAIRVOYANT 46
56 | #define VOMITING 47
57 | #define ENERGY_REGENERATION 48
58 | #define MAGICAL_BREATHING 49
59 | #define HALF_SPDAM 50
60 | #define HALF_PHDAM 51
61 | #define SICK_RES 52
62 | #define DRAIN_RES 53
63 | #define WARN_UNDEAD 54
64 | #define INVULNERABLE 55
65 | #define FREE_ACTION 56
66 | #define SWIMMING 57
67 | #define SLIMED 58
68 | #define FIXED_ABIL 59
69 | #define FLYING 60
70 | #define UNCHANGING 61
71 | #define PASSES_WALLS 62
72 | #define SLOW_DIGESTION 63
73 | #define INFRAVISION 64
74 | #define WARN_OF_MON 65
75 | #define DETECT_MONSTERS 66
76 | #define LAST_PROP (DETECT_MONSTERS)
77 |
78 | /*** Where the properties come from ***/
79 | /* Definitions were moved here from obj.h and you.h */
80 | struct prop {
81 | /*** Properties conveyed by objects ***/
82 | long extrinsic;
83 | /* Armor */
84 | # define W_ARM 0x00000001L /* Body armor */
85 | # define W_ARMC 0x00000002L /* Cloak */
86 | # define W_ARMH 0x00000004L /* Helmet/hat */
87 | # define W_ARMS 0x00000008L /* Shield */
88 | # define W_ARMG 0x00000010L /* Gloves/gauntlets */
89 | # define W_ARMF 0x00000020L /* Footwear */
90 | #ifdef TOURIST
91 | # define W_ARMU 0x00000040L /* Undershirt */
92 | # define W_ARMOR (W_ARM | W_ARMC | W_ARMH | W_ARMS | W_ARMG | W_ARMF | W_ARMU)
93 | #else
94 | # define W_ARMOR (W_ARM | W_ARMC | W_ARMH | W_ARMS | W_ARMG | W_ARMF)
95 | #endif
96 | /* Weapons and artifacts */
97 | # define W_WEP 0x00000100L /* Wielded weapon */
98 | # define W_QUIVER 0x00000200L /* Quiver for (f)iring ammo */
99 | # define W_SWAPWEP 0x00000400L /* Secondary weapon */
100 | # define W_ART 0x00001000L /* Carrying artifact (not really worn) */
101 | # define W_ARTI 0x00002000L /* Invoked artifact (not really worn) */
102 | /* Amulets, rings, tools, and other items */
103 | # define W_AMUL 0x00010000L /* Amulet */
104 | # define W_RINGL 0x00020000L /* Left ring */
105 | # define W_RINGR 0x00040000L /* Right ring */
106 | # define W_RING (W_RINGL | W_RINGR)
107 | # define W_TOOL 0x00080000L /* Eyewear */
108 | #ifdef STEED
109 | # define W_SADDLE 0x00100000L /* KMH -- For riding monsters */
110 | #endif
111 | # define W_BALL 0x00200000L /* Punishment ball */
112 | # define W_CHAIN 0x00400000L /* Punishment chain */
113 |
114 | /*** Property is blocked by an object ***/
115 | long blocked; /* Same assignments as extrinsic */
116 |
117 | /*** Timeouts, permanent properties, and other flags ***/
118 | long intrinsic;
119 | /* Timed properties */
120 | # define TIMEOUT 0x00ffffffL /* Up to 16 million turns */
121 | /* Permanent properties */
122 | # define FROMEXPER 0x01000000L /* Gain/lose with experience, for role */
123 | # define FROMRACE 0x02000000L /* Gain/lose with experience, for race */
124 | # define FROMOUTSIDE 0x04000000L /* By corpses, prayer, thrones, etc. */
125 | # define INTRINSIC (FROMOUTSIDE|FROMRACE|FROMEXPER)
126 | /* Control flags */
127 | # define I_SPECIAL 0x10000000L /* Property is controllable */
128 | };
129 |
130 | /*** Definitions for backwards compatibility ***/
131 | #define LEFT_RING W_RINGL
132 | #define RIGHT_RING W_RINGR
133 | #define LEFT_SIDE LEFT_RING
134 | #define RIGHT_SIDE RIGHT_RING
135 | #define BOTH_SIDES (LEFT_SIDE | RIGHT_SIDE)
136 | #define WORN_ARMOR W_ARM
137 | #define WORN_CLOAK W_ARMC
138 | #define WORN_HELMET W_ARMH
139 | #define WORN_SHIELD W_ARMS
140 | #define WORN_GLOVES W_ARMG
141 | #define WORN_BOOTS W_ARMF
142 | #define WORN_AMUL W_AMUL
143 | #define WORN_BLINDF W_TOOL
144 | #ifdef TOURIST
145 | #define WORN_SHIRT W_ARMU
146 | #endif
147 |
148 | #endif /* PROP_H */