1/*	SCCS Id: @(#)prop.h	3.4	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 */
80struct 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