1 #pragma once 2 3 #include <vector> 4 5 #include "tag-version.h" 6 7 using std::vector; 8 9 /* Don't change the order of any enums in this file unless you are breaking 10 * save compatibility. See ../docs/develop/save_compatibility.txt for 11 * more details, including how to schedule both the current and future 12 * enum orders. 13 * 14 * If you do break compatibility and change the order, be sure to change 15 * rltiles/dc-item.txt to match. 16 */ 17 18 enum armour_type 19 { 20 ARM_ROBE, // order of mundane armour matters to _upgrade_body_armour 21 ARM_FIRST_MUNDANE_BODY = ARM_ROBE, 22 ARM_LEATHER_ARMOUR, 23 ARM_RING_MAIL, 24 ARM_SCALE_MAIL, 25 ARM_CHAIN_MAIL, 26 ARM_PLATE_ARMOUR, 27 ARM_LAST_MUNDANE_BODY = ARM_PLATE_ARMOUR, 28 #if TAG_MAJOR_VERSION > 34 29 ARM_CRYSTAL_PLATE_ARMOUR, 30 #endif 31 32 ARM_CLOAK, 33 #if TAG_MAJOR_VERSION > 34 34 ARM_SCARF, 35 #endif 36 37 #if TAG_MAJOR_VERSION == 34 38 ARM_CAP, 39 #endif 40 ARM_HAT, 41 ARM_HELMET, 42 43 ARM_GLOVES, 44 45 ARM_BOOTS, 46 47 ARM_BUCKLER, // order of shields matters 48 ARM_FIRST_SHIELD = ARM_BUCKLER, 49 ARM_KITE_SHIELD, 50 ARM_TOWER_SHIELD, 51 ARM_LAST_SHIELD = ARM_TOWER_SHIELD, 52 53 #if TAG_MAJOR_VERSION == 34 54 ARM_CRYSTAL_PLATE_ARMOUR, 55 #endif 56 57 ARM_ANIMAL_SKIN, 58 59 #if TAG_MAJOR_VERSION == 34 60 ARM_TROLL_HIDE, 61 #endif 62 ARM_TROLL_LEATHER_ARMOUR, 63 64 #if TAG_MAJOR_VERSION == 34 65 ARM_FIRE_DRAGON_HIDE, 66 #endif 67 ARM_FIRE_DRAGON_ARMOUR, 68 #if TAG_MAJOR_VERSION == 34 69 ARM_ICE_DRAGON_HIDE, 70 #endif 71 ARM_ICE_DRAGON_ARMOUR, 72 #if TAG_MAJOR_VERSION == 34 73 ARM_STEAM_DRAGON_HIDE, 74 #endif 75 ARM_STEAM_DRAGON_ARMOUR, 76 #if TAG_MAJOR_VERSION == 34 77 ARM_ACID_DRAGON_HIDE, 78 #endif 79 ARM_ACID_DRAGON_ARMOUR, 80 #if TAG_MAJOR_VERSION == 34 81 ARM_STORM_DRAGON_HIDE, 82 #endif 83 ARM_STORM_DRAGON_ARMOUR, 84 #if TAG_MAJOR_VERSION == 34 85 ARM_GOLD_DRAGON_HIDE, 86 #endif 87 ARM_GOLD_DRAGON_ARMOUR, 88 #if TAG_MAJOR_VERSION == 34 89 ARM_SWAMP_DRAGON_HIDE, 90 #endif 91 ARM_SWAMP_DRAGON_ARMOUR, 92 #if TAG_MAJOR_VERSION == 34 93 ARM_PEARL_DRAGON_HIDE, 94 #endif 95 ARM_PEARL_DRAGON_ARMOUR, 96 #if TAG_MAJOR_VERSION > 34 97 ARM_SHADOW_DRAGON_ARMOUR, 98 ARM_QUICKSILVER_DRAGON_ARMOUR, 99 #endif 100 101 #if TAG_MAJOR_VERSION == 34 102 ARM_CENTAUR_BARDING, 103 #endif 104 ARM_BARDING, 105 106 #if TAG_MAJOR_VERSION == 34 107 ARM_SHADOW_DRAGON_HIDE, 108 ARM_SHADOW_DRAGON_ARMOUR, 109 ARM_QUICKSILVER_DRAGON_HIDE, 110 ARM_QUICKSILVER_DRAGON_ARMOUR, 111 ARM_SCARF, 112 #endif 113 114 NUM_ARMOURS 115 }; 116 117 enum armour_property_type 118 { 119 PARM_AC, 120 PARM_EVASION, 121 }; 122 123 const int SP_FORBID_EGO = -1; 124 const int SP_FORBID_BRAND = -1; 125 const int SP_UNKNOWN_BRAND = 31; // seen_weapon/armour is a 32-bit bitfield 126 127 // Be sure to update _debug_acquirement_stats and _str_to_ego to match. 128 enum brand_type // item_def.special 129 { 130 SPWPN_FORBID_BRAND = -1, 131 SPWPN_NORMAL, 132 SPWPN_FLAMING, 133 SPWPN_FREEZING, 134 SPWPN_HOLY_WRATH, 135 SPWPN_ELECTROCUTION, 136 #if TAG_MAJOR_VERSION == 34 137 SPWPN_ORC_SLAYING, 138 SPWPN_DRAGON_SLAYING, 139 #endif 140 SPWPN_VENOM, 141 SPWPN_PROTECTION, 142 SPWPN_DRAINING, 143 SPWPN_SPEED, 144 SPWPN_VORPAL, 145 #if TAG_MAJOR_VERSION == 34 146 SPWPN_FLAME, // ranged, only 147 SPWPN_FROST, // ranged, only 148 #endif 149 SPWPN_VAMPIRISM, 150 SPWPN_PAIN, 151 SPWPN_ANTIMAGIC, 152 SPWPN_DISTORTION, 153 #if TAG_MAJOR_VERSION == 34 154 SPWPN_REACHING, 155 SPWPN_RETURNING, 156 #endif 157 SPWPN_CHAOS, 158 #if TAG_MAJOR_VERSION == 34 159 SPWPN_EVASION, 160 MAX_GHOST_BRAND = SPWPN_EVASION, 161 #else 162 MAX_GHOST_BRAND = SPWPN_CHAOS, 163 #endif 164 165 #if TAG_MAJOR_VERSION == 34 166 SPWPN_CONFUSE, // XXX not a real weapon brand, only for Confusing Touch 167 #endif 168 SPWPN_PENETRATION, 169 SPWPN_REAPING, 170 SPWPN_SPECTRAL, 171 172 // From this point on save compat is irrelevant. 173 NUM_REAL_SPECIAL_WEAPONS, 174 175 SPWPN_ACID, // acid bite and Punk 176 #if TAG_MAJOR_VERSION > 34 177 SPWPN_CONFUSE, // Confusing Touch only for the moment 178 #endif 179 SPWPN_DEBUG_RANDART, 180 NUM_SPECIAL_WEAPONS, 181 }; 182 COMPILE_CHECK(NUM_SPECIAL_WEAPONS <= SP_UNKNOWN_BRAND); 183 184 enum corpse_type 185 { 186 CORPSE_BODY, 187 CORPSE_SKELETON, 188 }; 189 190 enum hands_reqd_type 191 { 192 HANDS_ONE, 193 HANDS_TWO, 194 }; 195 196 enum jewellery_type 197 { 198 #if TAG_MAJOR_VERSION == 34 199 RING_REGENERATION, 200 #endif 201 RING_PROTECTION, 202 RING_FIRST_RING = RING_PROTECTION, 203 RING_PROTECTION_FROM_FIRE, 204 RING_POISON_RESISTANCE, 205 RING_PROTECTION_FROM_COLD, 206 RING_STRENGTH, 207 RING_SLAYING, 208 RING_SEE_INVISIBLE, 209 RING_RESIST_CORROSION, 210 #if TAG_MAJOR_VERSION == 34 211 RING_ATTENTION, 212 RING_TELEPORTATION, 213 #endif 214 RING_EVASION, 215 #if TAG_MAJOR_VERSION == 34 216 RING_SUSTAIN_ATTRIBUTES, 217 #endif 218 RING_STEALTH, 219 RING_DEXTERITY, 220 RING_INTELLIGENCE, 221 RING_WIZARDRY, 222 RING_MAGICAL_POWER, 223 RING_FLIGHT, 224 RING_LIFE_PROTECTION, 225 RING_WILLPOWER, 226 RING_FIRE, 227 RING_ICE, 228 #if TAG_MAJOR_VERSION == 34 229 RING_TELEPORT_CONTROL, 230 #endif 231 NUM_RINGS, // keep as last ring; should not overlap 232 // with amulets! 233 // RINGS after num_rings are for unique types for artefacts 234 // (no non-artefact version). 235 // Currently none. 236 // XXX: trying to add one doesn't actually work 237 238 #if TAG_MAJOR_VERSION == 34 239 AMU_RAGE = 35, 240 AMU_FIRST_AMULET = AMU_RAGE, 241 AMU_HARM, 242 #endif 243 #if TAG_MAJOR_VERSION > 34 244 AMU_ACROBAT = 35, 245 AMU_FIRST_AMULET = AMU_ACROBAT, 246 #elif TAG_MAJOR_VERSION == 34 247 AMU_ACROBAT, 248 #endif 249 AMU_MANA_REGENERATION, 250 #if TAG_MAJOR_VERSION == 34 251 AMU_THE_GOURMAND, 252 AMU_CONSERVATION, 253 AMU_CONTROLLED_FLIGHT, 254 AMU_INACCURACY, 255 #endif 256 AMU_NOTHING, 257 AMU_GUARDIAN_SPIRIT, 258 AMU_FAITH, 259 AMU_REFLECTION, 260 AMU_REGENERATION, 261 262 NUM_JEWELLERY 263 }; 264 265 enum class launch_retval 266 { 267 BUGGY = -1, // could be 0 maybe? TODO: test 268 FUMBLED, 269 LAUNCHED, 270 THROWN, 271 }; 272 273 enum misc_item_type 274 { 275 #if TAG_MAJOR_VERSION == 34 276 MISC_BOTTLED_EFREET, 277 MISC_FAN_OF_GALES, 278 MISC_LAMP_OF_FIRE, 279 MISC_STONE_OF_TREMORS, 280 MISC_BUGGY_LANTERN_OF_SHADOWS, 281 #endif 282 MISC_HORN_OF_GERYON, 283 MISC_BOX_OF_BEASTS, 284 #if TAG_MAJOR_VERSION == 34 285 MISC_CRYSTAL_BALL_OF_ENERGY, 286 MISC_BUGGY_EBONY_CASKET, 287 #endif 288 MISC_LIGHTNING_ROD, 289 290 #if TAG_MAJOR_VERSION == 34 291 MISC_DECK_OF_ESCAPE, 292 MISC_FIRST_DECK = MISC_DECK_OF_ESCAPE, 293 MISC_DECK_OF_DESTRUCTION, 294 MISC_DECK_OF_DUNGEONS, 295 MISC_DECK_OF_SUMMONING, 296 MISC_DECK_OF_WONDERS, 297 MISC_DECK_OF_PUNISHMENT, 298 MISC_DECK_OF_WAR, 299 MISC_DECK_OF_CHANGES, 300 MISC_DECK_OF_DEFENCE, 301 MISC_LAST_DECK = MISC_DECK_OF_DEFENCE, 302 303 MISC_RUNE_OF_ZOT, 304 #endif 305 306 MISC_QUAD_DAMAGE, // Sprint only 307 308 MISC_PHIAL_OF_FLOODS, 309 #if TAG_MAJOR_VERSION == 34 310 MISC_SACK_OF_SPIDERS, 311 #endif 312 MISC_ZIGGURAT, 313 314 MISC_PHANTOM_MIRROR, 315 #if TAG_MAJOR_VERSION == 34 316 MISC_DECK_OF_ODDITIES, 317 #endif 318 MISC_XOMS_CHESSBOARD, 319 MISC_TIN_OF_TREMORSTONES, 320 MISC_CONDENSER_VANE, 321 322 NUM_MISCELLANY, 323 MISC_DECK_UNKNOWN = NUM_MISCELLANY, 324 }; 325 326 // in no particular order (but we need *a* fixed order for dbg-scan) 327 const vector<misc_item_type> misc_types = 328 { 329 #if TAG_MAJOR_VERSION == 34 330 MISC_FAN_OF_GALES, 331 MISC_LAMP_OF_FIRE, 332 MISC_STONE_OF_TREMORS, 333 MISC_BUGGY_LANTERN_OF_SHADOWS, 334 #endif 335 MISC_HORN_OF_GERYON, MISC_BOX_OF_BEASTS, 336 #if TAG_MAJOR_VERSION == 34 337 MISC_CRYSTAL_BALL_OF_ENERGY, 338 #endif 339 MISC_LIGHTNING_ROD, MISC_PHIAL_OF_FLOODS, 340 MISC_QUAD_DAMAGE, 341 #if TAG_MAJOR_VERSION == 34 342 MISC_SACK_OF_SPIDERS, 343 #endif 344 MISC_PHANTOM_MIRROR, 345 MISC_XOMS_CHESSBOARD, 346 MISC_ZIGGURAT, 347 #if TAG_MAJOR_VERSION == 34 348 MISC_BOTTLED_EFREET, MISC_BUGGY_EBONY_CASKET, 349 #endif 350 MISC_TIN_OF_TREMORSTONES, 351 MISC_CONDENSER_VANE, 352 }; 353 354 enum missile_type 355 { 356 MI_DART, 357 #if TAG_MAJOR_VERSION == 34 358 MI_NEEDLE, 359 #endif 360 MI_ARROW, 361 MI_BOLT, 362 MI_JAVELIN, 363 364 MI_STONE, 365 MI_LARGE_ROCK, 366 MI_SLING_BULLET, 367 MI_THROWING_NET, 368 MI_BOOMERANG, 369 370 NUM_MISSILES, 371 MI_NONE // was MI_EGGPLANT... used for launch type detection 372 }; 373 374 enum rune_type 375 { 376 RUNE_SWAMP, 377 RUNE_SNAKE, 378 RUNE_SHOALS, 379 RUNE_SLIME, 380 RUNE_ELF, // only used in sprints 381 RUNE_VAULTS, 382 RUNE_TOMB, 383 384 RUNE_DIS, 385 RUNE_GEHENNA, 386 RUNE_COCYTUS, 387 RUNE_TARTARUS, 388 389 RUNE_ABYSSAL, 390 391 RUNE_DEMONIC, 392 393 // order must match monsters 394 RUNE_MNOLEG, 395 RUNE_LOM_LOBON, 396 RUNE_CEREBOV, 397 RUNE_GLOORX_VLOQ, 398 399 RUNE_SPIDER, 400 RUNE_FOREST, // only used in sprints 401 NUM_RUNE_TYPES 402 }; 403 404 enum scroll_type 405 { 406 SCR_IDENTIFY, 407 SCR_TELEPORTATION, 408 SCR_FEAR, 409 SCR_NOISE, 410 #if TAG_MAJOR_VERSION == 34 411 SCR_REMOVE_CURSE, 412 #endif 413 SCR_SUMMONING, 414 SCR_ENCHANT_WEAPON, 415 SCR_ENCHANT_ARMOUR, 416 SCR_TORMENT, 417 #if TAG_MAJOR_VERSION == 34 418 SCR_RANDOM_USELESSNESS, 419 SCR_CURSE_WEAPON, 420 SCR_CURSE_ARMOUR, 421 #endif 422 SCR_IMMOLATION, 423 SCR_BLINKING, 424 SCR_MAGIC_MAPPING, 425 SCR_FOG, 426 SCR_ACQUIREMENT, 427 #if TAG_MAJOR_VERSION == 34 428 SCR_ENCHANT_WEAPON_II, 429 #endif 430 SCR_BRAND_WEAPON, 431 #if TAG_MAJOR_VERSION == 34 432 SCR_RECHARGING, 433 SCR_ENCHANT_WEAPON_III, 434 #endif 435 SCR_HOLY_WORD, 436 SCR_VULNERABILITY, 437 SCR_SILENCE, 438 SCR_AMNESIA, 439 #if TAG_MAJOR_VERSION == 34 440 SCR_CURSE_JEWELLERY, 441 #endif 442 NUM_SCROLLS 443 }; 444 445 // Be sure to update _debug_acquirement_stats and str_to_ego to match. 446 enum special_armour_type 447 { 448 SPARM_FORBID_EGO = -1, 449 SPARM_NORMAL, 450 #if TAG_MAJOR_VERSION == 34 451 SPARM_RUNNING, 452 #endif 453 SPARM_FIRE_RESISTANCE, 454 SPARM_COLD_RESISTANCE, 455 SPARM_POISON_RESISTANCE, 456 SPARM_SEE_INVISIBLE, 457 SPARM_INVISIBILITY, 458 SPARM_STRENGTH, 459 SPARM_DEXTERITY, 460 SPARM_INTELLIGENCE, 461 SPARM_PONDEROUSNESS, 462 SPARM_FLYING, 463 SPARM_WILLPOWER, 464 SPARM_PROTECTION, 465 SPARM_STEALTH, 466 SPARM_RESISTANCE, 467 SPARM_POSITIVE_ENERGY, 468 SPARM_ARCHMAGI, 469 SPARM_PRESERVATION, 470 SPARM_REFLECTION, 471 SPARM_SPIRIT_SHIELD, 472 SPARM_ARCHERY, 473 #if TAG_MAJOR_VERSION == 34 474 SPARM_JUMPING, 475 #endif 476 SPARM_REPULSION, 477 #if TAG_MAJOR_VERSION == 34 478 SPARM_CLOUD_IMMUNE, 479 #endif 480 SPARM_HARM, 481 SPARM_SHADOWS, 482 SPARM_RAMPAGING, 483 NUM_REAL_SPECIAL_ARMOURS, 484 NUM_SPECIAL_ARMOURS, 485 }; 486 // We have space for 32 brands in the bitfield. 487 COMPILE_CHECK(NUM_SPECIAL_ARMOURS <= SP_UNKNOWN_BRAND); 488 489 // Be sure to update _str_to_ego to match. 490 enum special_missile_type // to separate from weapons in general {dlb} 491 { 492 SPMSL_FORBID_BRAND = -1, 493 SPMSL_NORMAL, 494 SPMSL_FLAME, 495 SPMSL_FROST, 496 SPMSL_POISONED, 497 SPMSL_CURARE, // Needle-only brand 498 #if TAG_MAJOR_VERSION == 34 499 SPMSL_RETURNING, 500 #endif 501 SPMSL_CHAOS, 502 #if TAG_MAJOR_VERSION == 34 503 SPMSL_PENETRATION, 504 #endif 505 SPMSL_DISPERSAL, 506 SPMSL_EXPLODING, // Only used by Damnation crossbow 507 #if TAG_MAJOR_VERSION == 34 508 SPMSL_STEEL, 509 #endif 510 SPMSL_SILVER, 511 #if TAG_MAJOR_VERSION == 34 512 SPMSL_PARALYSIS, // dart only from here on 513 SPMSL_SLOW, 514 SPMSL_SLEEP, 515 SPMSL_CONFUSION, 516 SPMSL_SICKNESS, 517 #endif 518 SPMSL_FRENZY, // Datura 519 SPMSL_BLINDING, // Atropa 520 NUM_REAL_SPECIAL_MISSILES, 521 NUM_SPECIAL_MISSILES = NUM_REAL_SPECIAL_MISSILES, 522 }; 523 524 enum special_ring_type // jewellery env.item[].special values 525 { 526 SPRING_RANDART = 200, 527 SPRING_UNRANDART = 201, 528 }; 529 530 enum stave_type 531 { 532 #if TAG_MAJOR_VERSION == 34 533 STAFF_WIZARDRY, 534 STAFF_POWER, 535 #endif 536 STAFF_FIRE, 537 STAFF_COLD, 538 STAFF_POISON, 539 #if TAG_MAJOR_VERSION == 34 540 STAFF_ENERGY, 541 #endif 542 STAFF_DEATH, 543 STAFF_CONJURATION, 544 #if TAG_MAJOR_VERSION == 34 545 STAFF_ENCHANTMENT, 546 STAFF_SUMMONING, 547 #endif 548 STAFF_AIR, 549 STAFF_EARTH, 550 #if TAG_MAJOR_VERSION == 34 551 STAFF_CHANNELING, 552 #endif 553 NUM_STAVES, 554 }; 555 556 #if TAG_MAJOR_VERSION == 34 557 enum rod_type 558 { 559 ROD_LIGHTNING, 560 ROD_SWARM, 561 ROD_IGNITION, 562 ROD_CLOUDS, 563 ROD_DESTRUCTION, 564 ROD_INACCURACY, 565 ROD_WARDING, 566 ROD_SHADOWS, 567 ROD_IRON, 568 ROD_VENOM, 569 NUM_RODS, 570 }; 571 #endif 572 573 enum weapon_type 574 { 575 WPN_CLUB, 576 WPN_WHIP, 577 #if TAG_MAJOR_VERSION == 34 578 WPN_HAMMER, 579 #endif 580 WPN_MACE, 581 WPN_FLAIL, 582 WPN_MORNINGSTAR, 583 #if TAG_MAJOR_VERSION == 34 584 WPN_SPIKED_FLAIL, 585 #endif 586 WPN_DIRE_FLAIL, 587 WPN_EVENINGSTAR, 588 WPN_GREAT_MACE, 589 590 WPN_DAGGER, 591 WPN_QUICK_BLADE, 592 WPN_SHORT_SWORD, 593 WPN_RAPIER, 594 595 WPN_FALCHION, 596 WPN_LONG_SWORD, 597 WPN_SCIMITAR, 598 WPN_GREAT_SWORD, 599 600 WPN_HAND_AXE, 601 WPN_WAR_AXE, 602 WPN_BROAD_AXE, 603 WPN_BATTLEAXE, 604 WPN_EXECUTIONERS_AXE, 605 606 WPN_SPEAR, 607 WPN_TRIDENT, 608 WPN_HALBERD, 609 WPN_GLAIVE, 610 WPN_BARDICHE, 611 612 #if TAG_MAJOR_VERSION == 34 613 WPN_BLOWGUN, 614 #endif 615 616 #if TAG_MAJOR_VERSION > 34 617 WPN_HAND_CROSSBOW, 618 #endif 619 WPN_ARBALEST, 620 #if TAG_MAJOR_VERSION > 34 621 WPN_TRIPLE_CROSSBOW, 622 #endif 623 624 WPN_SHORTBOW, 625 WPN_LONGBOW, 626 627 #if TAG_MAJOR_VERSION > 34 628 WPN_HUNTING_SLING, 629 WPN_FUSTIBALUS, 630 #endif 631 632 WPN_DEMON_WHIP, 633 WPN_GIANT_CLUB, 634 WPN_GIANT_SPIKED_CLUB, 635 636 WPN_DEMON_BLADE, 637 WPN_DOUBLE_SWORD, 638 WPN_TRIPLE_SWORD, 639 640 WPN_DEMON_TRIDENT, 641 WPN_SCYTHE, 642 643 WPN_STAFF, // Just used for the weapon stats for magical staves. 644 WPN_QUARTERSTAFF, 645 WPN_LAJATANG, 646 647 #if TAG_MAJOR_VERSION == 34 648 WPN_HUNTING_SLING, 649 650 WPN_BLESSED_FALCHION, 651 WPN_BLESSED_LONG_SWORD, 652 WPN_BLESSED_SCIMITAR, 653 WPN_BLESSED_GREAT_SWORD, 654 #endif 655 WPN_EUDEMON_BLADE, 656 #if TAG_MAJOR_VERSION == 34 657 WPN_BLESSED_DOUBLE_SWORD, 658 WPN_BLESSED_TRIPLE_SWORD, 659 #endif 660 WPN_SACRED_SCOURGE, 661 WPN_TRISHULA, 662 663 #if TAG_MAJOR_VERSION == 34 664 WPN_FUSTIBALUS, 665 WPN_HAND_CROSSBOW, 666 WPN_TRIPLE_CROSSBOW, 667 668 WPN_CUTLASS, 669 #endif 670 671 NUM_WEAPONS, 672 673 // special cases 674 WPN_UNARMED, 675 WPN_UNKNOWN, 676 WPN_RANDOM, 677 WPN_VIABLE, 678 679 // thrown weapons (for hunter weapon selection) - rocks, javelins, boomerangs 680 WPN_THROWN, 681 }; 682 683 enum weapon_property_type 684 { 685 PWPN_DAMAGE, 686 PWPN_HIT, 687 PWPN_SPEED, 688 PWPN_ACQ_WEIGHT, 689 }; 690 691 enum vorpal_damage_type 692 { 693 // These are the types of damage a weapon can do. You can set more 694 // than one of these. 695 DAM_BASH = 0x0000, // non-melee weapon blugeoning 696 DAM_BLUDGEON = 0x0001, // crushing 697 DAM_SLICE = 0x0002, // slicing/chopping 698 DAM_PIERCE = 0x0004, // stabbing/piercing 699 DAM_WHIP = 0x0008, // whip slashing 700 DAM_MAX_TYPE = DAM_WHIP, 701 702 // These are used for vorpal weapon descriptions. You shouldn't set 703 // more than one of these. 704 DVORP_NONE = 0x0000, // used for non-melee weapons 705 DVORP_CRUSHING = 0x1000, 706 DVORP_SLICING = 0x2000, 707 DVORP_PIERCING = 0x3000, 708 DVORP_CHOPPING = 0x4000, // used for axes 709 DVORP_SLASHING = 0x5000, // used for whips 710 711 DVORP_CLAWING = 0x6000, // claw damage 712 DVORP_TENTACLE = 0x7000, // tentacle damage 713 714 // These are shortcuts to tie vorpal/damage types for easy setting... 715 // as above, setting more than one vorpal type is trouble. 716 DAMV_NON_MELEE = DVORP_NONE | DAM_BASH, // launchers 717 DAMV_CRUSHING = DVORP_CRUSHING | DAM_BLUDGEON, 718 DAMV_SLICING = DVORP_SLICING | DAM_SLICE, 719 DAMV_PIERCING = DVORP_PIERCING | DAM_PIERCE, 720 DAMV_CHOPPING = DVORP_CHOPPING | DAM_SLICE, 721 DAMV_SLASHING = DVORP_SLASHING | DAM_WHIP, 722 723 DAM_MASK = 0x0fff, // strips vorpal specification 724 DAMV_MASK = 0xf000, // strips non-vorpal specification 725 }; 726 727 enum wand_type 728 { 729 WAND_FLAME, 730 #if TAG_MAJOR_VERSION == 34 731 WAND_FROST_REMOVED, 732 WAND_SLOWING_REMOVED, 733 WAND_HASTING_REMOVED, 734 WAND_MAGIC_DARTS_REMOVED, 735 WAND_HEAL_WOUNDS_REMOVED, 736 #endif 737 WAND_PARALYSIS, 738 #if TAG_MAJOR_VERSION == 34 739 WAND_FIRE_REMOVED, 740 WAND_COLD_REMOVED, 741 WAND_CONFUSION_REMOVED, 742 WAND_INVISIBILITY_REMOVED, 743 #endif 744 WAND_DIGGING, 745 WAND_ICEBLAST, 746 #if TAG_MAJOR_VERSION == 34 747 WAND_TELEPORTATION_REMOVED, 748 WAND_LIGHTNING_REMOVED, 749 #endif 750 WAND_POLYMORPH, 751 WAND_CHARMING, 752 WAND_ACID, 753 #if TAG_MAJOR_VERSION == 34 754 WAND_RANDOM_EFFECTS_REMOVED, 755 #endif 756 WAND_MINDBURST, 757 #if TAG_MAJOR_VERSION == 34 758 WAND_CLOUDS_REMOVED, 759 WAND_SCATTERSHOT_REMOVED, 760 #endif 761 NUM_WANDS 762 }; 763 764 #if TAG_MAJOR_VERSION == 34 765 enum food_type 766 { 767 FOOD_RATION, 768 FOOD_BREAD_RATION, 769 FOOD_PEAR, 770 FOOD_APPLE, 771 FOOD_CHOKO, 772 FOOD_ROYAL_JELLY, // was: royal jelly 773 FOOD_UNUSED, // was: royal jelly and/or pizza 774 FOOD_FRUIT, // was: snozzcumber 775 FOOD_PIZZA, 776 FOOD_APRICOT, 777 FOOD_ORANGE, 778 FOOD_BANANA, 779 FOOD_STRAWBERRY, 780 FOOD_RAMBUTAN, 781 FOOD_LEMON, 782 FOOD_GRAPE, 783 FOOD_SULTANA, 784 FOOD_LYCHEE, 785 FOOD_BEEF_JERKY, 786 FOOD_CHEESE, 787 FOOD_SAUSAGE, 788 FOOD_CHUNK, 789 FOOD_AMBROSIA, 790 NUM_FOODS 791 }; 792 #endif 793