git-svn-id: http://openexile.googlecode.com/svn/trunk@46 4ebdad44-0ea0-11de-aab3-ff745001d230
248 lines
6.3 KiB
C++
248 lines
6.3 KiB
C++
/*
|
|
* item.h
|
|
* BoE
|
|
*
|
|
* Created by Celtic Minstrel on 20/04/09.
|
|
*
|
|
*/
|
|
|
|
#include "location.h"
|
|
|
|
namespace legacy { struct item_record_type; };
|
|
|
|
/* items[i].type a.k.a type of weapon */
|
|
enum eWeapType {
|
|
ITEM_NOT_MELEE = 0,
|
|
ITEM_EDGED = 1,
|
|
ITEM_BASHING = 2,
|
|
ITEM_POLE = 3,
|
|
};
|
|
|
|
/* items[i].variety a.k.a item type (in editor) */
|
|
enum eItemType {
|
|
ITEM_TYPE_NO_ITEM = 0,
|
|
ITEM_TYPE_ONE_HANDED = 1,
|
|
ITEM_TYPE_TWO_HANDED = 2,
|
|
ITEM_TYPE_GOLD = 3,
|
|
ITEM_TYPE_BOW = 4,
|
|
ITEM_TYPE_ARROW = 5,
|
|
ITEM_TYPE_THROWN_MISSILE = 6,
|
|
ITEM_TYPE_POTION = 7, // potion/magic item
|
|
ITEM_TYPE_SCROLL = 8, // scroll/magic item
|
|
ITEM_TYPE_WAND = 9,
|
|
ITEM_TYPE_TOOL = 10,
|
|
ITEM_TYPE_FOOD = 11,
|
|
ITEM_TYPE_SHIELD = 12,
|
|
ITEM_TYPE_ARMOR = 13,
|
|
ITEM_TYPE_HELM = 14,
|
|
ITEM_TYPE_GLOVES = 15,
|
|
ITEM_TYPE_SHIELD_2 = 16,
|
|
// don't know why a second type of shield is used ; it is actually checked
|
|
// in the armor code (item >= 12 and <= 17)
|
|
// and you can't equip another (12) shield while wearing it ... I didn't
|
|
// find a single item with this property in the bladbase.exs ...
|
|
ITEM_TYPE_BOOTS = 17,
|
|
ITEM_TYPE_RING = 18,
|
|
ITEM_TYPE_NECKLACE = 19,
|
|
ITEM_TYPE_WEAPON_POISON = 20,
|
|
ITEM_TYPE_NON_USE_OBJECT = 21,
|
|
ITEM_TYPE_PANTS = 22,
|
|
ITEM_TYPE_CROSSBOW = 23,
|
|
ITEM_TYPE_BOLTS = 24,
|
|
ITEM_TYPE_MISSILE_NO_AMMO = 25, //e.g slings
|
|
ITEM_TYPE_UNUSED1 = 26, // these are here solely because they are options in the editor
|
|
ITEM_TYPE_UNUSED2 = 27,
|
|
};
|
|
|
|
/* items[i].ability */
|
|
enum eItemAbil {
|
|
// Weapon abilities
|
|
ITEM_NO_ABILITY = 0,
|
|
ITEM_FLAMING_WEAPON = 1,
|
|
ITEM_DEMON_SLAYER = 2,
|
|
ITEM_UNDEAD_SLAYER = 3,
|
|
ITEM_LIZARD_SLAYER = 4,
|
|
ITEM_GIANT_SLAYER = 5,
|
|
ITEM_MAGE_SLAYER = 6,
|
|
ITEM_PRIEST_SLAYER = 7,
|
|
ITEM_BUG_SLAYER = 8,
|
|
ITEM_ACIDIC_WEAPON = 9,
|
|
ITEM_SOULSUCKER = 10,
|
|
ITEM_DRAIN_MISSILES = 11,
|
|
ITEM_WEAK_WEAPON = 12,
|
|
ITEM_CAUSES_FEAR = 13,
|
|
ITEM_POISONED_WEAPON = 14,
|
|
// General abilities
|
|
ITEM_PROTECTION = 30,
|
|
ITEM_FULL_PROTECTION = 31,
|
|
ITEM_FIRE_PROTECTION = 32,
|
|
ITEM_COLD_PROTECTION = 33,
|
|
ITEM_POISON_PROTECTION = 34,
|
|
ITEM_MAGIC_PROTECTION = 35,
|
|
ITEM_ACID_PROTECTION = 36,
|
|
ITEM_SKILL = 37,
|
|
ITEM_STRENGTH = 38,
|
|
ITEM_DEXTERITY = 39,
|
|
ITEM_INTELLIGENCE = 40,
|
|
ITEM_ACCURACY = 41,
|
|
ITEM_THIEVING = 42,
|
|
ITEM_GIANT_STRENGTH = 43,
|
|
ITEM_LIGHTER_OBJECT = 44,
|
|
ITEM_HEAVIER_OBJECT = 45,
|
|
ITEM_OCCASIONAL_BLESS = 46,
|
|
ITEM_OCCASIONAL_HASTE = 47,
|
|
ITEM_LIFE_SAVING = 48,
|
|
ITEM_PROTECT_FROM_PETRIFY = 49,
|
|
ITEM_REGENERATE = 50,
|
|
ITEM_POISON_AUGMENT = 51,
|
|
ITEM_DISEASE_PARTY = 52,
|
|
ITEM_WILL = 53,
|
|
ITEM_FREE_ACTION = 54,
|
|
ITEM_SPEED = 55,
|
|
ITEM_SLOW_WEARER = 56,
|
|
ITEM_PROTECT_FROM_UNDEAD = 57,
|
|
ITEM_PROTECT_FROM_DEMONS = 58,
|
|
ITEM_PROTECT_FROM_HUMANOIDS = 59,
|
|
ITEM_PROTECT_FROM_REPTILES = 60,
|
|
ITEM_PROTECT_FROM_GIANTS = 61,
|
|
ITEM_PROTECT_FROM_DISEASE = 62,
|
|
// Nonspell Usable
|
|
ITEM_POISON_WEAPON = 70, //put poison on weapon
|
|
ITEM_BLESS_CURSE = 71,
|
|
ITEM_AFFECT_POISON = 72,
|
|
ITEM_HASTE_SLOW = 73,
|
|
ITEM_AFFECT_INVULN = 74,
|
|
ITEM_AFFECT_MAGIC_RES = 75,
|
|
ITEM_AFFECT_WEB = 76,
|
|
ITEM_AFFECT_DISEASE = 77,
|
|
ITEM_AFFECT_SANCTUARY = 78,
|
|
ITEM_AFFECT_DUMBFOUND = 79,
|
|
ITEM_AFFECT_MARTYRS_SHIELD = 80,
|
|
ITEM_AFFECT_SLEEP = 81,
|
|
ITEM_AFFECT_PARALYSIS = 82,
|
|
ITEM_AFFECT_ACID = 83,
|
|
ITEM_BLISS = 84,
|
|
ITEM_AFFECT_EXPERIENCE = 85,
|
|
ITEM_AFFECT_SKILL_POINTS = 86,
|
|
ITEM_AFFECT_HEALTH = 87,
|
|
ITEM_AFFECT_SPELL_POINTS = 88,
|
|
ITEM_DOOM = 89,
|
|
ITEM_LIGHT = 90,
|
|
ITEM_STEALTH = 91,
|
|
ITEM_FIREWALK = 92,
|
|
ITEM_FLYING = 93,
|
|
ITEM_MAJOR_HEALING = 94,
|
|
// Spell Usable
|
|
ITEM_SPELL_FLAME = 110,
|
|
ITEM_SPELL_FIREBALL = 111,
|
|
ITEM_SPELL_FIRESTORM = 112,
|
|
ITEM_SPELL_KILL = 113,
|
|
ITEM_SPELL_ICE_BOLT = 114,
|
|
ITEM_SPELL_SLOW = 115,
|
|
ITEM_SPELL_SHOCKWAVE = 116,
|
|
ITEM_SPELL_DISPEL_UNDEAD = 117,
|
|
ITEM_SPELL_DISPEL_SPIRIT = 118,
|
|
ITEM_SPELL_SUMMONING = 119,
|
|
ITEM_SPELL_MASS_SUMMONING = 120,
|
|
ITEM_SPELL_ACID_SPRAY = 121,
|
|
ITEM_SPELL_STINKING_CLOUD = 122,
|
|
ITEM_SPELL_SLEEP_FIELD = 123,
|
|
ITEM_SPELL_VENOM = 124,
|
|
ITEM_SPELL_SHOCKSTORM = 125,
|
|
ITEM_SPELL_PARALYSIS = 126,
|
|
ITEM_SPELL_WEB_SPELL = 127,
|
|
ITEM_SPELL_STRENGTHEN_TARGET = 128, //wand of carrunos effect
|
|
ITEM_SPELL_QUICKFIRE = 129,
|
|
ITEM_SPELL_MASS_CHARM = 130,
|
|
ITEM_SPELL_MAGIC_MAP = 131,
|
|
ITEM_SPELL_DISPEL_BARRIER = 132,
|
|
ITEM_SPELL_MAKE_ICE_WALL = 133,
|
|
ITEM_SPELL_CHARM_SPELL = 134,
|
|
ITEM_SPELL_ANTIMAGIC_CLOUD = 135,
|
|
// Reagents
|
|
ITEM_HOLLY = 150, // Holly/Toadstool
|
|
ITEM_COMFREY_ROOT = 151,
|
|
ITEM_GLOWING_NETTLE = 152,
|
|
ITEM_WORMGRASS = 153, // Crypt Shroom/Wormgr.
|
|
ITEM_ASPTONGUE_MOLD = 154,
|
|
ITEM_EMBER_FLOWERS = 155,
|
|
ITEM_GRAYMOLD = 156,
|
|
ITEM_MANDRAKE = 157,
|
|
ITEM_SAPPHIRE = 158,
|
|
ITEM_SMOKY_CRYSTAL = 159,
|
|
ITEM_RESSURECTION_BALM = 160,
|
|
ITEM_LOCKPICKS = 161,
|
|
// Missile Abilities
|
|
ITEM_MISSILE_RETURNING = 170,
|
|
ITEM_MISSILE_LIGHTNING = 171,
|
|
ITEM_MISSILE_EXPLODING = 172,
|
|
ITEM_MISSILE_ACID = 173,
|
|
ITEM_MISSILE_SLAY_UNDEAD = 174,
|
|
ITEM_MISSILE_SLAY_DEMON = 175,
|
|
ITEM_MISSILE_HEAL_TARGET = 176,
|
|
};
|
|
|
|
class cItemRec {
|
|
public:
|
|
eItemType variety;
|
|
short item_level;
|
|
char awkward;
|
|
char bonus;
|
|
char protection;
|
|
char charges;
|
|
eWeapType type;
|
|
char magic_use_type;
|
|
unsigned short graphic_num;
|
|
eItemAbil ability;
|
|
unsigned char ability_strength;
|
|
unsigned char type_flag;
|
|
unsigned char is_special;
|
|
short value;
|
|
unsigned char weight;
|
|
unsigned char special_class;
|
|
location item_loc;
|
|
char full_name[25];
|
|
char name[15];
|
|
unsigned char treas_class;
|
|
unsigned char item_properties;
|
|
private:
|
|
unsigned char reserved1;
|
|
unsigned char reserved2;
|
|
public:
|
|
//string desc; // for future use
|
|
unsigned char rec_treas_class() const;
|
|
bool is_ident() const;
|
|
bool is_property() const;
|
|
bool is_magic() const;
|
|
bool is_contained() const;
|
|
bool is_cursed() const;
|
|
bool is_concealed() const;
|
|
bool is_enchanted() const;
|
|
void set_ident(bool b);
|
|
void set_property(bool b);
|
|
void set_magic(bool b);
|
|
void set_contained(bool b);
|
|
void set_cursed(bool b);
|
|
void set_concealed(bool b);
|
|
void set_enchanted(bool b);
|
|
short item_weight() const;
|
|
|
|
cItemRec();
|
|
cItemRec(long preset);
|
|
cItemRec& operator = (legacy::item_record_type& old);
|
|
};
|
|
|
|
/*
|
|
typedef struct {
|
|
short variety, item_level;
|
|
char awkward, bonus, protection, charges, type;
|
|
unsigned char graphic_num,ability, type_flag, is_special;
|
|
short value;
|
|
bool identified, magic;
|
|
unsigned char weight, description_flag;
|
|
char full_name[25], name[15];
|
|
unsigned char reserved1,reserved2;
|
|
unsigned char magic_use_type, ability_strength, treas_class, real_abil;
|
|
} short_item_record_type;
|
|
*/
|