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