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