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 */
149