#ifndef ITEMPROP_ENUM_H #define ITEMPROP_ENUM_H #include "tags.h" enum armour_type { ARM_ROBE, // 0 ARM_LEATHER_ARMOUR, ARM_RING_MAIL, ARM_SCALE_MAIL, ARM_CHAIN_MAIL, ARM_SPLINT_MAIL, // 5 ARM_BANDED_MAIL, ARM_PLATE_MAIL, ARM_CLOAK, ARM_CAP, ARM_WIZARD_HAT, // 10 ARM_HELMET, ARM_GLOVES, ARM_BOOTS, ARM_BUCKLER, ARM_SHIELD, // 15 ARM_LARGE_SHIELD, ARM_MAX_RACIAL = ARM_LARGE_SHIELD, ARM_CRYSTAL_PLATE_MAIL, ARM_ANIMAL_SKIN, ARM_TROLL_HIDE, ARM_TROLL_LEATHER_ARMOUR, // 20 ARM_DRAGON_HIDE, ARM_DRAGON_ARMOUR, ARM_ICE_DRAGON_HIDE, ARM_ICE_DRAGON_ARMOUR, ARM_STEAM_DRAGON_HIDE, // 25 ARM_STEAM_DRAGON_ARMOUR, ARM_MOTTLED_DRAGON_HIDE, ARM_MOTTLED_DRAGON_ARMOUR, ARM_STORM_DRAGON_HIDE, ARM_STORM_DRAGON_ARMOUR, // 30 ARM_GOLD_DRAGON_HIDE, ARM_GOLD_DRAGON_ARMOUR, ARM_SWAMP_DRAGON_HIDE, ARM_SWAMP_DRAGON_ARMOUR, ARM_CENTAUR_BARDING, // 35 ARM_NAGA_BARDING, NUM_ARMOURS // 37 }; enum armour_property_type { PARM_AC, // 0 PARM_EVASION }; enum boot_type // used in pluses2 { TBOOT_BOOTS = 0, TBOOT_NAGA_BARDING, TBOOT_CENTAUR_BARDING, NUM_BOOT_TYPES }; const int SP_FORBID_EGO = -1; const int SP_FORBID_BRAND = -1; const int SP_UNKNOWN_BRAND = 31; // seen_weapon/armour is a 32-bit bitfield enum brand_type // equivalent to (you.inv[].special or mitm[].special) % 30 { SPWPN_FORBID_BRAND = -1, // -1 SPWPN_NORMAL, // 0 SPWPN_FLAMING, SPWPN_FREEZING, SPWPN_HOLY_WRATH, SPWPN_ELECTROCUTION, SPWPN_ORC_SLAYING, // 5 SPWPN_DRAGON_SLAYING, SPWPN_VENOM, SPWPN_PROTECTION, SPWPN_DRAINING, SPWPN_SPEED, // 10 SPWPN_VORPAL, SPWPN_FLAME, // ranged, only SPWPN_FROST, // ranged, only SPWPN_VAMPIRICISM, SPWPN_PAIN, // 15 SPWPN_DISTORTION, SPWPN_REACHING, SPWPN_RETURNING, // 18 SPWPN_CHAOS, SPWPN_EVASION, MAX_PAN_LORD_BRANDS = SPWPN_EVASION, SPWPN_CONFUSE, // 20 SPWPN_PENETRATION, SPWPN_REAPING, SPWPN_DEBUG_RANDART = 25, // 25 NUM_SPECIAL_WEAPONS, SPWPN_DUMMY_CRUSHING // ONLY TEMPORARY USAGE -- converts to VORPAL }; enum corpse_type { CORPSE_BODY, // 0 CORPSE_SKELETON }; enum hands_reqd_type { HANDS_ONE, HANDS_HALF, HANDS_TWO, HANDS_DOUBLE // not a level, marks double ended weapons (== half) }; enum helmet_desc_type { THELM_DESC_PLAIN = 0, THELM_DESC_WINGED, THELM_DESC_HORNED, THELM_DESC_CRESTED, THELM_DESC_PLUMED, THELM_DESC_MAX_SOFT = THELM_DESC_PLUMED, THELM_DESC_SPIKED, THELM_DESC_VISORED, THELM_DESC_GOLDEN, THELM_NUM_DESCS }; enum gloves_desc_type { TGLOV_DESC_GLOVES = 0, TGLOV_DESC_GAUNTLETS, TGLOV_DESC_BRACERS }; enum jewellery_type { RING_FIRST_RING = 0, RING_REGENERATION = RING_FIRST_RING, // 0 RING_PROTECTION, RING_PROTECTION_FROM_FIRE, RING_POISON_RESISTANCE, RING_PROTECTION_FROM_COLD, RING_STRENGTH, // 5 RING_SLAYING, RING_SEE_INVISIBLE, RING_INVISIBILITY, RING_HUNGER, RING_TELEPORTATION, // 10 RING_EVASION, RING_SUSTAIN_ABILITIES, RING_SUSTENANCE, RING_DEXTERITY, RING_INTELLIGENCE, // 15 RING_WIZARDRY, RING_MAGICAL_POWER, RING_LEVITATION, RING_LIFE_PROTECTION, RING_PROTECTION_FROM_MAGIC, // 20 RING_FIRE, RING_ICE, RING_TELEPORT_CONTROL, // 23 NUM_RINGS, // 24, keep as last ring; can overlap // safely with first amulet. AMU_FIRST_AMULET = 35, AMU_RAGE = AMU_FIRST_AMULET, // 35 AMU_CLARITY, AMU_WARDING, AMU_RESIST_CORROSION, AMU_THE_GOURMAND, // 40 AMU_CONSERVATION, AMU_CONTROLLED_FLIGHT, AMU_INACCURACY, AMU_RESIST_MUTATION, AMU_GUARDIAN_SPIRIT, AMU_FAITH, AMU_STASIS, NUM_JEWELLERY }; enum launch_retval { LRET_FUMBLED = 0, // must be left as 0 LRET_LAUNCHED, LRET_THROWN }; enum misc_item_type { MISC_BOTTLED_EFREET, // 0 MISC_CRYSTAL_BALL_OF_SEEING, MISC_AIR_ELEMENTAL_FAN, MISC_LAMP_OF_FIRE, MISC_STONE_OF_EARTH_ELEMENTALS, MISC_LANTERN_OF_SHADOWS, MISC_HORN_OF_GERYON, MISC_BOX_OF_BEASTS, MISC_CRYSTAL_BALL_OF_ENERGY, MISC_EMPTY_EBONY_CASKET, MISC_CRYSTAL_BALL_OF_FIXATION, MISC_DISC_OF_STORMS, // pure decks MISC_DECK_OF_ESCAPE, MISC_DECK_OF_DESTRUCTION, MISC_DECK_OF_DUNGEONS, MISC_DECK_OF_SUMMONING, MISC_DECK_OF_WONDERS, MISC_DECK_OF_PUNISHMENT, // mixed decks MISC_DECK_OF_WAR, MISC_DECK_OF_CHANGES, MISC_DECK_OF_DEFENCE, MISC_RUNE_OF_ZOT, NUM_MISCELLANY // mv: used for random generation }; enum missile_type { MI_DART, // 0 MI_NEEDLE, MI_ARROW, MI_BOLT, MI_JAVELIN, MI_MAX_RACIAL = MI_JAVELIN, MI_STONE, // 5 MI_LARGE_ROCK, MI_SLING_BULLET, MI_THROWING_NET, NUM_MISSILES, // 9 MI_NONE // was MI_EGGPLANT... used for launch type detection }; enum rune_type { // Note: that runes DIS-SWAMP have the same numeric value as the branch RUNE_DIS = BRANCH_DIS, RUNE_GEHENNA = BRANCH_GEHENNA, RUNE_COCYTUS = BRANCH_COCYTUS, RUNE_TARTARUS = BRANCH_TARTARUS, RUNE_SLIME_PITS = BRANCH_SLIME_PITS, RUNE_VAULTS = BRANCH_VAULTS, RUNE_SNAKE_PIT = BRANCH_SNAKE_PIT, RUNE_ELVEN_HALLS = BRANCH_ELVEN_HALLS, // unused RUNE_TOMB = BRANCH_TOMB, RUNE_SWAMP = BRANCH_SWAMP, RUNE_SHOALS = BRANCH_SHOALS, // Runes 50 and 51 are for Pandemonium (general demon) and the Abyss RUNE_DEMONIC = 50, RUNE_ABYSSAL, // Runes 60-63 correspond to the Pandemonium demonlords, // and are equal to the corresponding vault. RUNE_MNOLEG = 60, RUNE_LOM_LOBON, RUNE_CEREBOV, RUNE_GLOORX_VLOQ, NUM_RUNE_TYPES, // should always be last RUNE_NONE }; enum scroll_type { SCR_IDENTIFY, // 0 SCR_TELEPORTATION, SCR_FEAR, SCR_NOISE, SCR_REMOVE_CURSE, SCR_DETECT_CURSE, // 5 SCR_SUMMONING, SCR_ENCHANT_WEAPON_I, SCR_ENCHANT_ARMOUR, SCR_TORMENT, SCR_RANDOM_USELESSNESS, // 10 SCR_CURSE_WEAPON, SCR_CURSE_ARMOUR, SCR_IMMOLATION, SCR_BLINKING, SCR_PAPER, // 15 SCR_MAGIC_MAPPING, SCR_FOG, SCR_ACQUIREMENT, SCR_ENCHANT_WEAPON_II, SCR_VORPALISE_WEAPON, // 20 SCR_RECHARGING, SCR_ENCHANT_WEAPON_III, SCR_HOLY_WORD, SCR_VULNERABILITY, SCR_SILENCE, // 25 NUM_SCROLLS }; enum special_armour_type { SPARM_FORBID_EGO = -1, // -1 SPARM_NORMAL, // 0 SPARM_RUNNING, SPARM_FIRE_RESISTANCE, SPARM_COLD_RESISTANCE, SPARM_POISON_RESISTANCE, SPARM_SEE_INVISIBLE, // 5 SPARM_DARKNESS, SPARM_STRENGTH, SPARM_DEXTERITY, SPARM_INTELLIGENCE, SPARM_PONDEROUSNESS, // 10 SPARM_LEVITATION, SPARM_MAGIC_RESISTANCE, SPARM_PROTECTION, SPARM_STEALTH, SPARM_RESISTANCE, // 15 SPARM_POSITIVE_ENERGY, SPARM_ARCHMAGI, SPARM_PRESERVATION, SPARM_REFLECTION, SPARM_SPIRIT_SHIELD, // 20 SPARM_ARCHERY, NUM_SPECIAL_ARMOURS // 22 }; enum special_missile_type // to separate from weapons in general {dlb} { SPMSL_FORBID_BRAND = -1, // -1 SPMSL_NORMAL, // 0 SPMSL_FLAME, SPMSL_FROST, SPMSL_POISONED, SPMSL_CURARE, // Needle-only brand SPMSL_RETURNING, // 5 SPMSL_CHAOS, SPMSL_PENETRATION, SPMSL_REAPING, SPMSL_DISPERSAL, SPMSL_EXPLODING, // 10 SPMSL_STEEL, SPMSL_SILVER, #if TAG_MAJOR_VERSION == 16 SPMSL_ELECTRIC, // removed #endif SPMSL_PARALYSIS, // paralysis, needle only from here in SPMSL_SLOW, // makes slow SPMSL_SLEEP, // sleep SPMSL_CONFUSION, // confusing SPMSL_SICKNESS, // sickness/disease SPMSL_RAGE, // berserk rage NUM_SPECIAL_MISSILES // 20 }; enum special_ring_type // jewellery mitm[].special values { SPRING_RANDART = 200, SPRING_UNRANDART = 201 }; enum stave_type { // staves STAFF_WIZARDRY = 0, STAFF_POWER, STAFF_FIRE, STAFF_COLD, STAFF_POISON, STAFF_ENERGY, STAFF_DEATH, STAFF_CONJURATION, STAFF_ENCHANTMENT, STAFF_SUMMONING, STAFF_AIR, STAFF_EARTH, STAFF_CHANNELING, // 12 // rods STAFF_FIRST_ROD, STAFF_SMITING = STAFF_FIRST_ROD, STAFF_SPELL_SUMMONING, STAFF_DESTRUCTION_I, STAFF_DESTRUCTION_II, STAFF_DESTRUCTION_III, STAFF_DESTRUCTION_IV, STAFF_WARDING, STAFF_DISCOVERY, STAFF_DEMONOLOGY, STAFF_STRIKING, STAFF_VENOM, // 23 NUM_STAVES // must remain last member {dlb} }; enum weapon_type { WPN_CLUB, WPN_WHIP, WPN_HAMMER, WPN_MACE, WPN_FLAIL, WPN_MORNINGSTAR, WPN_SPIKED_FLAIL, WPN_DIRE_FLAIL, WPN_EVENINGSTAR, WPN_GREAT_MACE, WPN_DAGGER, WPN_QUICK_BLADE, WPN_SHORT_SWORD, WPN_SABRE, WPN_FALCHION, WPN_LONG_SWORD, WPN_SCIMITAR, WPN_GREAT_SWORD, WPN_HAND_AXE, WPN_WAR_AXE, WPN_BROAD_AXE, WPN_BATTLEAXE, WPN_EXECUTIONERS_AXE, WPN_SPEAR, WPN_TRIDENT, WPN_HALBERD, WPN_GLAIVE, WPN_BARDICHE, WPN_BLOWGUN, WPN_CROSSBOW, // Was hand crossbows, they are gone. WPN_BOW, WPN_LONGBOW, WPN_MAX_RACIAL = WPN_LONGBOW, WPN_ANKUS, WPN_DEMON_WHIP, WPN_GIANT_CLUB, WPN_GIANT_SPIKED_CLUB, WPN_KNIFE, WPN_KATANA, WPN_DEMON_BLADE, WPN_DOUBLE_SWORD, // 40 WPN_TRIPLE_SWORD, WPN_DEMON_TRIDENT, WPN_SCYTHE, WPN_QUARTERSTAFF, WPN_LAJATANG, // 45 WPN_SLING, WPN_MAX_NONBLESSED = WPN_SLING, WPN_BLESSED_FALCHION, WPN_BLESSED_LONG_SWORD, WPN_BLESSED_SCIMITAR, WPN_BLESSED_GREAT_SWORD, // 50 WPN_BLESSED_KATANA, WPN_HOLY_EUDEMON_BLADE, WPN_BLESSED_DOUBLE_SWORD, WPN_BLESSED_TRIPLE_SWORD, WPN_HOLY_SCOURGE, NUM_WEAPONS, // special cases WPN_UNARMED = 500, // 500 WPN_UNKNOWN = 1000, // 1000 WPN_RANDOM }; enum weapon_description_type { DWPN_PLAIN = 0, // 0 - added to round out enum {dlb} DWPN_RUNED = 1, // 1 DWPN_GLOWING, DWPN_ORCISH, DWPN_ELVEN, DWPN_DWARVEN // 5 }; enum weapon_property_type { PWPN_DAMAGE, // 0 PWPN_HIT, PWPN_SPEED, PWPN_ACQ_WEIGHT }; enum vorpal_damage_type { // These are the types of damage a weapon can do. You can set more // than one of these. DAM_BASH = 0x0000, // non-melee weapon blugeoning DAM_BLUDGEON = 0x0001, // crushing DAM_SLICE = 0x0002, // slicing/chopping DAM_PIERCE = 0x0004, // stabbing/piercing DAM_WHIP = 0x0008, // whip slashing (no butcher) DAM_MAX_TYPE = DAM_WHIP, // These are used for vorpal weapon descriptions. You shouldn't set // more than one of these. DVORP_NONE = 0x0000, // used for non-melee weapons DVORP_CRUSHING = 0x1000, DVORP_SLICING = 0x2000, DVORP_PIERCING = 0x3000, DVORP_CHOPPING = 0x4000, // used for axes DVORP_SLASHING = 0x5000, // used for whips DVORP_STABBING = 0x6000, // used for knives/daggers DVORP_CLAWING = 0x7000, // claw damage DVORP_TENTACLE = 0x8000, // tentacle damage // These are shortcuts to tie vorpal/damage types for easy setting... // as above, setting more than one vorpal type is trouble. DAMV_NON_MELEE = DVORP_NONE | DAM_BASH, // launchers DAMV_CRUSHING = DVORP_CRUSHING | DAM_BLUDGEON, DAMV_SLICING = DVORP_SLICING | DAM_SLICE, DAMV_PIERCING = DVORP_PIERCING | DAM_PIERCE, DAMV_CHOPPING = DVORP_CHOPPING | DAM_SLICE, DAMV_SLASHING = DVORP_SLASHING | DAM_WHIP, DAMV_STABBING = DVORP_STABBING | DAM_PIERCE, DAM_MASK = 0x0fff, // strips vorpal specification DAMV_MASK = 0xf000 // strips non-vorpal specification }; enum wand_type { WAND_FLAME, WAND_FROST, WAND_SLOWING, WAND_HASTING, WAND_MAGIC_DARTS, WAND_HEALING, WAND_PARALYSIS, WAND_FIRE, WAND_COLD, WAND_CONFUSION, WAND_INVISIBILITY, WAND_DIGGING, WAND_FIREBALL, WAND_TELEPORTATION, WAND_LIGHTNING, WAND_POLYMORPH_OTHER, WAND_ENSLAVEMENT, WAND_DRAINING, WAND_RANDOM_EFFECTS, WAND_DISINTEGRATION, NUM_WANDS }; enum zap_count_type { ZAPCOUNT_EMPTY = -1, ZAPCOUNT_UNKNOWN = -2, ZAPCOUNT_RECHARGED = -3, ZAPCOUNT_MAX_CHARGED = -4 }; #endif