1 /*
2 This file is part of "Avanor, the Land of Mystery" roguelike game
3 Home page: http://www.avanor.com/
4 Copyright (C) 2000-2003 Vadim Gaidukevich
5 
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
10 
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 GNU General Public License for more details.
15 
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19 */
20 
21 #ifndef __ITEMDEF_H
22 #define __ITEMDEF_H
23 
24 enum BRAND_TYPE {
25 	BR_NONE				= 0x0000,
26 	BR_FIRE				= 0x0001, //weapon dmg + eq fire dmg
27 	BR_HELLFIRE			= 0x0002, //weapon dmg + eq x 3 fire dmg
28 	BR_COLD				= 0x0004,
29 	BR_ULTIMATECOLD		= 0x0008,
30 	BR_LIGHTNING		= 0x0010,
31 	BR_ELEMENTAL_MASK	= 0x001F, //mask for 'elemental'
32 
33 	BR_ACID				= 0x0020,
34 	BR_POISON			= 0x0040,
35 	BR_DEATH			= 0x0080, //triple chance to score critical hit
36 	BR_BLACK_MASK		= 0x00E0, //mask for black
37 
38 	BR_UNDEADSLAYER		= 0x0100, //3x vs undead
39 	BR_HUMANOIDSLAYER	= 0x0200,
40 	BR_ANIMALSLAYER		= 0x0400,
41 	BR_DRAGONSLAYER		= 0x0800,
42 	BR_GIANTSLAYER		= 0x1000,
43 	BR_ORCSLAYER		= 0x2000,
44 	BR_TROLLSLAYER		= 0x4000,
45 	BR_DEMONSLAYER		= 0x8000,
46 	BR_SLAYER_MASK		= 0xFF00,
47 
48 	BR_HOLYSLAYER		= BR_UNDEADSLAYER | BR_DEMONSLAYER,
49 	BR_EVILSLAYER		= BR_DRAGONSLAYER | BR_GIANTSLAYER | BR_ORCSLAYER | BR_TROLLSLAYER,
50 	BR_ANY				= 0xFFFF
51 };
52 
53 enum CAN_FLAG {
54 CAN_UNKNOWN		= 0x0000,
55 
56 CAN_BROKE		= 0x0001,
57 CAN_RUST		= 0x0002,
58 CAN_CORD		= 0x0004,
59 CAN_DUST		= 0x0008,
60 CAN_BURN		= 0x0010,
61 CAN_MELT		= 0x0020,
62 CAN_FROST		= 0x0040,
63 CAN_LEATHERLIKE	= CAN_BURN,
64 CAN_GOODMETALLIKE	= CAN_BROKE | CAN_MELT,
65 CAN_BLACKMETALLIKE	= CAN_GOODMETALLIKE | CAN_CORD | CAN_RUST,
66 CAN_WOODLIKE		= CAN_BROKE | CAN_BURN,
67 CAN_STONELIKE		= CAN_DUST,
68 CAN_POTIONLIKE		= CAN_FROST | CAN_DUST,
69 CAN_PAPERLIKE		= CAN_BURN,
70 CAN_FIRERESIST		= 0xffff ^ (CAN_BURN | CAN_MELT),
71 CAN_COLDRESIST		= 0xffff ^ (CAN_FROST),
72 CAN_ACIDRESIST		= 0xffff ^ (CAN_CORD),
73 CAN_RESISTNONE		= 0xffff,
74 CAN_NICEMETALLIKE	= 0,
75 CAN_RESISTALL		= 0
76 };
77 
78 enum SPECIAL_PROPERTY
79 {
80 	SPP_NONE				= 0x0000,
81 	SPP_FASTDIGESTION		= 0x0001,
82 	SPP_SLOWDIGESTION		= 0x0002,
83 	SPP_INVISIBLE			= 0x0004,
84 	SPP_REGENERATION		= 0x0008
85 };
86 
87 struct _ITEMPROP
88 {
89 	char * propname; //wooden, metall,
90 	int color;
91 	char * dv; //modifers....
92 	char * pv;
93 	char * hit;
94 	char * dice;
95 	char * z; //random z to dice;
96 	char * r; //range
97 	unsigned int iflag; //wich item can consist from this material
98 	int probability;
99 	int density;
100 	int value;
101 	CAN_FLAG mflag;
102 	char * resistance; //to monster
103 	SPECIAL_PROPERTY sp;
104 };
105 
106 enum ITEM_SET {
107 ISET_CLOTH			= 0x00000001,
108 ISET_LEATHER		= 0x00000002,
109 ISET_STUDEDLEATHER	= 0x00000004,
110 ISET_STONE			= 0x00000008,
111 ISET_WOOD			= 0x00000010,
112 ISET_IRON			= 0x00000020,
113 ISET_BRONZE			= 0x00000040,
114 ISET_BRASS			= 0x00000080,
115 ISET_SILVER			= 0x00000100,
116 ISET_GOLD			= 0x00000200,
117 ISET_CRYSTAL		= 0x00000400,
118 ISET_STEEL			= 0x00000800,
119 ISET_OBSIDIAN		= 0x00001000,
120 ISET_MITHRIL		= 0x00002000,
121 ISET_ADAMANTIUM		= 0x00004000,
122 
123 ISET_SOFT		= ISET_LEATHER | ISET_STUDEDLEATHER | ISET_CLOTH,
124 ISET_ALLLEATHER	= ISET_LEATHER | ISET_STUDEDLEATHER,
125 ISET_METAL		= ISET_IRON | ISET_BRONZE | ISET_BRASS | ISET_SILVER | ISET_GOLD,
126 ISET_METALSOFT	= ISET_METAL | ISET_SOFT,
127 ISET_HARDMETAL	= ISET_STEEL | ISET_MITHRIL | ISET_ADAMANTIUM,
128 ISET_ALLMETAL	= ISET_METAL | ISET_HARDMETAL | ISET_OBSIDIAN,
129 ISET_OBSIMETAL	= ISET_OBSIDIAN | ISET_HARDMETAL,
130 ISET_STONEFROM	= ISET_STONE | ISET_CRYSTAL | ISET_OBSIDIAN,
131 ISET_WOODEN		= ISET_WOOD, //wooden
132 ISET_SHIELD		= ISET_ALLLEATHER | ISET_ALLMETAL | ISET_WOODEN, //for shields
133 ISET_BOW		= ISET_WOODEN,
134 ISET_MISSILE	= ISET_ALLMETAL | ISET_WOODEN | ISET_STONE,
135 ISET_WOODSTONE	= ISET_STONEFROM | ISET_WOODEN,
136 ISET_WEAPON		= ISET_STONEFROM | ISET_HARDMETAL,
137 ISET_SIMPLEWEAPON = ISET_IRON | ISET_STEEL,
138 ISET_CROWNMETAL	= ISET_STEEL | ISET_SILVER | ISET_GOLD | ISET_MITHRIL,
139 ISET_BLACKMETAL	= ISET_STEEL | ISET_IRON,
140 ISET_OTHER		= 0x0,
141 ISET_ALL		= 0x00000fff | ISET_MITHRIL | ISET_ADAMANTIUM,
142 };
143 
144 
145 
146 enum WSK_TYPE {WSK_UNKNOWN = -1,
147 WSK_UNARMED = 0,
148 WSK_DAGGER, //knife, daggers
149 WSK_SWORD, //all swords
150 WSK_CLUB, //all clubs, hummers
151 WSK_MACE, //all maces, flails
152 WSK_POLEARM, //all pole arm, spere, pike etc.
153 WSK_AXE, //all axes
154 WSK_STAVE, //staves, staffs
155 WSK_SHIELD, //shields
156 WSK_BOW,
157 WSK_CROSSBOW,
158 WSK_SLING,
159 WSK_THROW,
160 WSK_EOF,
161 WSK_OTHER
162 };
163 
164 
165 enum ITEM_TYPE {
166 IT_UNKNOWN = 0,
167 
168 IT_HAT, IT_CAP, IT_HELMET,
169 
170 IT_AMULET, IT_NECKLACE,
171 
172 IT_RING,
173 
174 IT_CLUB, IT_WARHAMMER,
175 
176 IT_DAGGER, IT_KNIFE, IT_ORCISHDAGGER, IT_LONGDAGGER,
177 
178 IT_SHORTSWORD, IT_LONGSWORD, IT_BROADSWORD, IT_RAPIER, IT_SCIMITAR, IT_KATANA, IT_WAKIZASHI,
179 
180 IT_SMALLAXE, IT_WARAXE, IT_BATTLEAXE, IT_GREATAXE, IT_ORCISHAXE,
181 
182 IT_MACE, IT_FLAIL,
183 
184 IT_SHORTSPEAR, IT_LONGSPEAR, IT_PITCHFORK, IT_PIKE, IT_HALBERD,
185 
186 IT_STAFF,
187 
188 IT_SHORTBOW, IT_LONGBOW, IT_LIGHTCROSSBOW, IT_CROSSBOW, IT_HEAVYCROSSBOW, IT_SLING,
189 
190 IT_GLOVES, IT_GAUNTLETS, IT_KNUCKLES,
191 
192 IT_SMALLSHIELD, IT_MEDIUMSHIELD, IT_LARGESHIELD, IT_TOWERSHIELD,
193 
194 IT_SANDALS, IT_LIGHTBOOTS, IT_SOFTBOOTS, IT_HARDBOOTS,
195 
196 IT_CLOTHES, IT_DRESS, IT_ROBE, IT_LIGHTMAIL, IT_SCALEMAIL, IT_PLATEMAIL, IT_CHAINMAIL, IT_RINGMAIL,
197 
198 IT_CLOAK, IT_SHADOWCLOAK, IT_CAPE, IT_LIGHTCLOAK, IT_FORESTBROTHERCLOAK,
199 
200 IT_TORCH,
201 IT_SCROLL,
202 IT_BOOK,
203 IT_POTION,
204 IT_HERB,
205 IT_LARGERATION, IT_RATION, IT_SMALLRATION, IT_ELVISHWAYBREAD, IT_CORPSE, IT_BONE, IT_RATTAIL, IT_BATWING,
206 
207 IT_ARROW, IT_QUARREL, IT_SLINGBULLET, IT_ROCK,
208 
209 IT_COOKINGSET, IT_PICKAXE, IT_ANCIENTMACHINEPART, IT_EYEOFRAA, IT_ALCHEMYSET,
210 
211 IT_CHEST,
212 
213 IT_MONEY,
214 IT_GEM,
215 IT_OTHER,
216 IT_RANDOM,
217 IT_EOF
218 };
219 
220 enum USE_ITEM_STATE
221 {
222 	UIS_BEGIN,
223 	UIS_CONTINUE,
224 	UIS_STOP,
225 };
226 
227 
228 #endif
229