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