Strictify item ability enum

This commit is contained in:
2014-12-12 15:18:43 -05:00
parent 1d7342edc2
commit 1200ff47d4
16 changed files with 373 additions and 364 deletions

View File

@@ -114,7 +114,7 @@ cItemRec::cItemRec(){
type = eWeapType::NOT_MELEE;
magic_use_type = 0;
graphic_num = 0;
ability = ITEM_NO_ABILITY;
ability = eItemAbil::NONE;
ability_strength = 0;
type_flag = 0;
is_special = 0;
@@ -133,7 +133,7 @@ cItemRec::cItemRec(){
}
cItemRec::cItemRec(long preset){
ability = ITEM_NO_ABILITY;
ability = eItemAbil::NONE;
ability_strength = 0;
type_flag = 0;
is_special = 0;
@@ -440,6 +440,7 @@ std::istream& operator >> (std::istream& in, eItemType& e){
return in;
}
// TODO: Perhaps this should understand symbolic names as well?
std::istream& operator >> (std::istream& in, eItemAbil& e){
int i;
in >> i;
@@ -447,6 +448,6 @@ std::istream& operator >> (std::istream& in, eItemAbil& e){
(i > 69 && i < 95) || (i > 109 && i < 136) ||
(i > 149 && i < 162) || (i > 169 && i < 177))
e = (eItemAbil) i;
else e = ITEM_NO_ABILITY;
else e = eItemAbil::NONE;
return in;
}

View File

@@ -297,134 +297,155 @@ inline bool isWeaponType(eItemType type) {
}
/* items[i].ability */
enum eItemAbil {
enum class 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,
NONE = 0,
FLAMING_WEAPON = 1,
DEMON_SLAYER = 2,
UNDEAD_SLAYER = 3,
LIZARD_SLAYER = 4,
GIANT_SLAYER = 5,
MAGE_SLAYER = 6,
PRIEST_SLAYER = 7,
BUG_SLAYER = 8,
ACIDIC_WEAPON = 9,
SOULSUCKER = 10,
DRAIN_MISSILES = 11,
WEAK_WEAPON = 12,
CAUSES_FEAR = 13,
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,
PROTECTION = 30,
FULL_PROTECTION = 31,
FIRE_PROTECTION = 32,
COLD_PROTECTION = 33,
POISON_PROTECTION = 34,
MAGIC_PROTECTION = 35,
ACID_PROTECTION = 36,
SKILL = 37,
STRENGTH = 38,
DEXTERITY = 39,
INTELLIGENCE = 40,
ACCURACY = 41,
THIEVING = 42,
GIANT_STRENGTH = 43,
LIGHTER_OBJECT = 44,
HEAVIER_OBJECT = 45,
OCCASIONAL_BLESS = 46,
OCCASIONAL_HASTE = 47,
LIFE_SAVING = 48,
PROTECT_FROM_PETRIFY = 49,
REGENERATE = 50,
POISON_AUGMENT = 51,
DISEASE_PARTY = 52,
WILL = 53,
FREE_ACTION = 54,
SPEED = 55,
SLOW_WEARER = 56,
PROTECT_FROM_UNDEAD = 57,
PROTECT_FROM_DEMONS = 58,
PROTECT_FROM_HUMANOIDS = 59,
PROTECT_FROM_REPTILES = 60,
PROTECT_FROM_GIANTS = 61,
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,
ITEM_CALL_SPECIAL = 95,
POISON_WEAPON = 70, //put poison on weapon
BLESS_CURSE = 71,
AFFECT_POISON = 72,
HASTE_SLOW = 73,
AFFECT_INVULN = 74,
AFFECT_MAGIC_RES = 75,
AFFECT_WEB = 76,
AFFECT_DISEASE = 77,
AFFECT_SANCTUARY = 78,
AFFECT_DUMBFOUND = 79,
AFFECT_MARTYRS_SHIELD = 80,
AFFECT_SLEEP = 81,
AFFECT_PARALYSIS = 82,
AFFECT_ACID = 83,
BLISS = 84,
AFFECT_EXPERIENCE = 85,
AFFECT_SKILL_POINTS = 86,
AFFECT_HEALTH = 87,
AFFECT_SPELL_POINTS = 88,
DOOM = 89,
LIGHT = 90,
STEALTH = 91,
FIREWALK = 92,
FLYING = 93,
MAJOR_HEALING = 94,
CALL_SPECIAL = 95,
// 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,
FLAME = 110,
FIREBALL = 111,
FIRESTORM = 112,
KILL = 113,
ICE_BOLT = 114,
SLOW = 115,
SHOCKWAVE = 116,
DISPEL_UNDEAD = 117,
DISPEL_SPIRIT = 118,
SUMMONING = 119,
MASS_SUMMONING = 120,
ACID_SPRAY = 121,
STINKING_CLOUD = 122,
SLEEP_FIELD = 123,
VENOM = 124,
SHOCKSTORM = 125,
PARALYSIS = 126,
WEB = 127,
STRENGTHEN_TARGET = 128, //wand of carrunos effect
QUICKFIRE = 129,
MASS_CHARM = 130,
MAGIC_MAP = 131,
DISPEL_BARRIER = 132,
ICE_WALL = 133,
CHARM_SPELL = 134,
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,
HOLLY = 150, // Holly/Toadstool
COMFREY = 151, // Comfreey Root
NETTLE = 152, // Glowing Nettle
WORMGRASS = 153, // Crypt Shroom/Wormgrass
ASPTONGUE = 154, // Asptongue Mold
EMBERF = 155, // Ember Flower
GRAYMOLD = 156,
MANDRAKE = 157,
SAPPHIRE = 158,
SMOKY_CRYSTAL = 159,
RESSURECTION_BALM = 160,
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,
MISSILE_RETURNING = 170,
MISSILE_LIGHTNING = 171,
MISSILE_EXPLODING = 172,
MISSILE_ACID = 173,
MISSILE_SLAY_UNDEAD = 174,
MISSILE_SLAY_DEMON = 175,
MISSILE_HEAL_TARGET = 176,
};
enum class eItemAbilCat {
INVALID = -1,
WEAPON, GENERAL, NONSPELL, SPELL, REAGENT, MISSILE
};
inline eItemAbilCat getItemAbilCategory(eItemAbil abil) {
int code = (int) abil;
if(code >= 0 && code <= 14)
return eItemAbilCat::WEAPON;
if(code >= 30 && code <= 62)
return eItemAbilCat::GENERAL;
if(code >= 70 && code <= 95)
return eItemAbilCat::NONSPELL;
if(code >= 110 && code <= 135)
return eItemAbilCat::SPELL;
if(code >= 150 && code <= 161)
return eItemAbilCat::REAGENT;
if(code >= 170 && code <= 176)
return eItemAbilCat::MISSILE;
return eItemAbilCat::INVALID;
}
/* adven[i].skills */ //complete
enum eSkill {