1/* SCCS Id: @(#)artilist.h 3.4 2003/02/12 */ 2/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ 3/* NetHack may be freely redistributed. See license for details. */ 4 5#ifdef MAKEDEFS_C 6/* in makedefs.c, all we care about is the list of names */ 7 8#define A(nam,typ,s1,s2,mt,atk,dfn,cry,inv,al,cl,rac,cost) nam 9 10static const char *artifact_names[] = { 11#else 12/* in artifact.c, set up the actual artifact list structure */ 13 14#define A(nam,typ,s1,s2,mt,atk,dfn,cry,inv,al,cl,rac,cost) \ 15 { typ, nam, s1, s2, mt, atk, dfn, cry, inv, al, cl, rac, cost } 16 17#define NO_ATTK {0,0,0,0} /* no attack */ 18#define NO_DFNS {0,0,0,0} /* no defense */ 19#define NO_CARY {0,0,0,0} /* no carry effects */ 20#define DFNS(c) {0,c,0,0} 21#define CARY(c) {0,c,0,0} 22#define PHYS(a,b) {0,AD_PHYS,a,b} /* physical */ 23#define DRLI(a,b) {0,AD_DRLI,a,b} /* life drain */ 24#define COLD(a,b) {0,AD_COLD,a,b} 25#define FIRE(a,b) {0,AD_FIRE,a,b} 26#define ELEC(a,b) {0,AD_ELEC,a,b} /* electrical shock */ 27#define STUN(a,b) {0,AD_STUN,a,b} /* magical attack */ 28 29STATIC_OVL NEARDATA struct artifact artilist[] = { 30#endif /* MAKEDEFS_C */ 31 32/* Artifact cost rationale: 33 * 1. The more useful the artifact, the better its cost. 34 * 2. Quest artifacts are highly valued. 35 * 3. Chaotic artifacts are inflated due to scarcity (and balance). 36 */ 37 38 39/* dummy element #0, so that all interesting indices are non-zero */ 40A("", STRANGE_OBJECT, 41 0, 0, 0, NO_ATTK, NO_DFNS, NO_CARY, 0, A_NONE, NON_PM, NON_PM, 0L ), 42 43A("Excalibur", LONG_SWORD, 44 (SPFX_NOGEN|SPFX_RESTR|SPFX_SEEK|SPFX_DEFN|SPFX_INTEL|SPFX_SEARCH),0,0, 45 PHYS(5,10), DRLI(0,0), NO_CARY, 0, A_LAWFUL, PM_KNIGHT, NON_PM, 4000L ), 46/* 47 * Stormbringer only has a 2 because it can drain a level, 48 * providing 8 more. 49 */ 50A("Stormbringer", RUNESWORD, 51 (SPFX_RESTR|SPFX_ATTK|SPFX_DEFN|SPFX_INTEL|SPFX_DRLI), 0, 0, 52 DRLI(5,2), DRLI(0,0), NO_CARY, 0, A_CHAOTIC, NON_PM, NON_PM, 8000L ), 53/* 54 * Mjollnir will return to the hand of the wielder when thrown 55 * if the wielder is a Valkyrie wearing Gauntlets of Power. 56 */ 57A("Mjollnir", WAR_HAMMER, /* Mjo:llnir */ 58 (SPFX_RESTR|SPFX_ATTK), 0, 0, 59 ELEC(5,24), NO_DFNS, NO_CARY, 0, A_NEUTRAL, PM_VALKYRIE, NON_PM, 4000L ), 60 61A("Cleaver", BATTLE_AXE, 62 SPFX_RESTR, 0, 0, 63 PHYS(3,6), NO_DFNS, NO_CARY, 0, A_NEUTRAL, PM_BARBARIAN, NON_PM, 1500L ), 64 65A("Grimtooth", ORCISH_DAGGER, 66 SPFX_RESTR, 0, 0, 67 PHYS(2,6), NO_DFNS, NO_CARY, 0, A_CHAOTIC, NON_PM, PM_ORC, 300L ), 68/* 69 * Orcrist and Sting have same alignment as elves. 70 */ 71A("Orcrist", ELVEN_BROADSWORD, 72 SPFX_DFLAG2, 0, M2_ORC, 73 PHYS(5,0), NO_DFNS, NO_CARY, 0, A_CHAOTIC, NON_PM, PM_ELF, 2000L ), 74 75/* 76 * The combination of SPFX_WARN and M2_something on an artifact 77 * will trigger EWarn_of_mon for all monsters that have the appropriate 78 * M2_something flags. In Sting's case it will trigger EWarn_of_mon 79 * for M2_ORC monsters. 80 */ 81A("Sting", ELVEN_DAGGER, 82 (SPFX_WARN|SPFX_DFLAG2), 0, M2_ORC, 83 PHYS(5,0), NO_DFNS, NO_CARY, 0, A_CHAOTIC, NON_PM, PM_ELF, 800L ), 84/* 85 * Magicbane is a bit different! Its magic fanfare 86 * unbalances victims in addition to doing some damage. 87 */ 88A("Magicbane", ATHAME, 89 (SPFX_RESTR|SPFX_ATTK|SPFX_DEFN), 0, 0, 90 STUN(3,4), DFNS(AD_MAGM), NO_CARY, 0, A_NEUTRAL, PM_WIZARD, NON_PM, 3500L ), 91 92A("Frost Brand", LONG_SWORD, 93 (SPFX_RESTR|SPFX_ATTK|SPFX_DEFN), 0, 0, 94 COLD(5,0), COLD(0,0), NO_CARY, 0, A_NONE, NON_PM, NON_PM, 3000L ), 95 96A("Fire Brand", LONG_SWORD, 97 (SPFX_RESTR|SPFX_ATTK|SPFX_DEFN), 0, 0, 98 FIRE(5,0), FIRE(0,0), NO_CARY, 0, A_NONE, NON_PM, NON_PM, 3000L ), 99 100A("Dragonbane", BROADSWORD, 101 (SPFX_RESTR|SPFX_DCLAS), 0, S_DRAGON, 102 PHYS(5,0), NO_DFNS, NO_CARY, 0, A_NONE, NON_PM, NON_PM, 500L ), 103 104A("Demonbane", LONG_SWORD, 105 (SPFX_RESTR|SPFX_DFLAG2), 0, M2_DEMON, 106 PHYS(5,0), NO_DFNS, NO_CARY, 0, A_LAWFUL, NON_PM, NON_PM, 2500L ), 107 108A("Werebane", SILVER_SABER, 109 (SPFX_RESTR|SPFX_DFLAG2), 0, M2_WERE, 110 PHYS(5,0), DFNS(AD_WERE), NO_CARY, 0, A_NONE, NON_PM, NON_PM, 1500L ), 111 112A("Grayswandir", SILVER_SABER, 113 (SPFX_RESTR|SPFX_HALRES), 0, 0, 114 PHYS(5,0), NO_DFNS, NO_CARY, 0, A_LAWFUL, NON_PM, NON_PM, 8000L ), 115 116A("Giantslayer", LONG_SWORD, 117 (SPFX_RESTR|SPFX_DFLAG2), 0, M2_GIANT, 118 PHYS(5,0), NO_DFNS, NO_CARY, 0, A_NEUTRAL, NON_PM, NON_PM, 200L ), 119 120A("Ogresmasher", WAR_HAMMER, 121 (SPFX_RESTR|SPFX_DCLAS), 0, S_OGRE, 122 PHYS(5,0), NO_DFNS, NO_CARY, 0, A_NONE, NON_PM, NON_PM, 200L ), 123 124A("Trollsbane", MORNING_STAR, 125 (SPFX_RESTR|SPFX_DCLAS), 0, S_TROLL, 126 PHYS(5,0), NO_DFNS, NO_CARY, 0, A_NONE, NON_PM, NON_PM, 200L ), 127/* 128 * Two problems: 1) doesn't let trolls regenerate heads, 129 * 2) doesn't give unusual message for 2-headed monsters (but 130 * allowing those at all causes more problems than worth the effort). 131 */ 132A("Vorpal Blade", LONG_SWORD, 133 (SPFX_RESTR|SPFX_BEHEAD), 0, 0, 134 PHYS(5,1), NO_DFNS, NO_CARY, 0, A_NEUTRAL, NON_PM, NON_PM, 4000L ), 135/* 136 * Ah, never shall I forget the cry, 137 * or the shriek that shrieked he, 138 * As I gnashed my teeth, and from my sheath 139 * I drew my Snickersnee! 140 * --Koko, Lord high executioner of Titipu 141 * (From Sir W.S. Gilbert's "The Mikado") 142 */ 143A("Snickersnee", KATANA, 144 SPFX_RESTR, 0, 0, 145 PHYS(0,8), NO_DFNS, NO_CARY, 0, A_LAWFUL, PM_SAMURAI, NON_PM, 1200L ), 146 147A("Sunsword", LONG_SWORD, 148 (SPFX_RESTR|SPFX_DFLAG2), 0, M2_UNDEAD, 149 PHYS(5,0), DFNS(AD_BLND), NO_CARY, 0, A_LAWFUL, NON_PM, NON_PM, 1500L ), 150 151/* 152 * The artifacts for the quest dungeon, all self-willed. 153 */ 154 155A("The Orb of Detection", CRYSTAL_BALL, 156 (SPFX_NOGEN|SPFX_RESTR|SPFX_INTEL), (SPFX_ESP|SPFX_HSPDAM), 0, 157 NO_ATTK, NO_DFNS, CARY(AD_MAGM), 158 INVIS, A_LAWFUL, PM_ARCHEOLOGIST, NON_PM, 2500L ), 159 160A("The Heart of Ahriman", LUCKSTONE, 161 (SPFX_NOGEN|SPFX_RESTR|SPFX_INTEL), SPFX_STLTH, 0, 162 /* this stone does double damage if used as a projectile weapon */ 163 PHYS(5,0), NO_DFNS, NO_CARY, 164 LEVITATION, A_NEUTRAL, PM_BARBARIAN, NON_PM, 2500L ), 165 166A("The Sceptre of Might", MACE, 167 (SPFX_NOGEN|SPFX_RESTR|SPFX_INTEL|SPFX_DALIGN), 0, 0, 168 PHYS(5,0), NO_DFNS, CARY(AD_MAGM), 169 CONFLICT, A_LAWFUL, PM_CAVEMAN, NON_PM, 2500L ), 170 171#if 0 /* OBSOLETE */ 172A("The Palantir of Westernesse", CRYSTAL_BALL, 173 (SPFX_NOGEN|SPFX_RESTR|SPFX_INTEL), 174 (SPFX_ESP|SPFX_REGEN|SPFX_HSPDAM), 0, 175 NO_ATTK, NO_DFNS, NO_CARY, 176 TAMING, A_CHAOTIC, NON_PM , PM_ELF, 8000L ), 177#endif 178 179A("The Staff of Aesculapius", QUARTERSTAFF, 180 (SPFX_NOGEN|SPFX_RESTR|SPFX_ATTK|SPFX_INTEL|SPFX_DRLI|SPFX_REGEN), 0,0, 181 DRLI(0,0), DRLI(0,0), NO_CARY, 182 HEALING, A_NEUTRAL, PM_HEALER, NON_PM, 5000L ), 183 184A("The Magic Mirror of Merlin", MIRROR, 185 (SPFX_NOGEN|SPFX_RESTR|SPFX_INTEL|SPFX_SPEAK), SPFX_ESP, 0, 186 NO_ATTK, NO_DFNS, CARY(AD_MAGM), 187 0, A_LAWFUL, PM_KNIGHT, NON_PM, 1500L ), 188 189A("The Eyes of the Overworld", LENSES, 190 (SPFX_NOGEN|SPFX_RESTR|SPFX_INTEL|SPFX_XRAY), 0, 0, 191 NO_ATTK, NO_DFNS, CARY(AD_MAGM), 192 ENLIGHTENING, A_NEUTRAL, PM_MONK, NON_PM, 2500L ), 193 194A("The Mitre of Holiness", HELM_OF_BRILLIANCE, 195 (SPFX_NOGEN|SPFX_RESTR|SPFX_DFLAG2|SPFX_INTEL), 0, M2_UNDEAD, 196 NO_ATTK, NO_DFNS, CARY(AD_FIRE), 197 ENERGY_BOOST, A_LAWFUL, PM_PRIEST, NON_PM, 2000L ), 198 199A("The Longbow of Diana", BOW, 200 (SPFX_NOGEN|SPFX_RESTR|SPFX_INTEL|SPFX_REFLECT), SPFX_ESP, 0, 201 PHYS(5,0), NO_DFNS, NO_CARY, 202 CREATE_AMMO, A_CHAOTIC, PM_RANGER, NON_PM, 4000L ), 203 204A("The Master Key of Thievery", SKELETON_KEY, 205 (SPFX_NOGEN|SPFX_RESTR|SPFX_INTEL|SPFX_SPEAK), 206 (SPFX_WARN|SPFX_TCTRL|SPFX_HPHDAM), 0, 207 NO_ATTK, NO_DFNS, NO_CARY, 208 UNTRAP, A_CHAOTIC, PM_ROGUE, NON_PM, 3500L ), 209 210A("The Tsurugi of Muramasa", TSURUGI, 211 (SPFX_NOGEN|SPFX_RESTR|SPFX_INTEL|SPFX_BEHEAD|SPFX_LUCK), 0, 0, 212 PHYS(0,8), NO_DFNS, NO_CARY, 213 0, A_LAWFUL, PM_SAMURAI, NON_PM, 4500L ), 214 215#ifdef TOURIST 216A("The Platinum Yendorian Express Card", CREDIT_CARD, 217 (SPFX_NOGEN|SPFX_RESTR|SPFX_INTEL|SPFX_DEFN), 218 (SPFX_ESP|SPFX_HSPDAM), 0, 219 NO_ATTK, NO_DFNS, CARY(AD_MAGM), 220 CHARGE_OBJ, A_NEUTRAL, PM_TOURIST, NON_PM, 7000L ), 221#endif 222 223A("The Orb of Fate", CRYSTAL_BALL, 224 (SPFX_NOGEN|SPFX_RESTR|SPFX_INTEL|SPFX_LUCK), 225 (SPFX_WARN|SPFX_HSPDAM|SPFX_HPHDAM), 0, 226 NO_ATTK, NO_DFNS, NO_CARY, 227 LEV_TELE, A_NEUTRAL, PM_VALKYRIE, NON_PM, 3500L ), 228 229A("The Eye of the Aethiopica", AMULET_OF_ESP, 230 (SPFX_NOGEN|SPFX_RESTR|SPFX_INTEL), (SPFX_EREGEN|SPFX_HSPDAM), 0, 231 NO_ATTK, NO_DFNS, CARY(AD_MAGM), 232 CREATE_PORTAL, A_NEUTRAL, PM_WIZARD, NON_PM, 4000L ), 233 234/* 235 * terminator; otyp must be zero 236 */ 237A(0, 0, 0, 0, 0, NO_ATTK, NO_DFNS, NO_CARY, 0, A_NONE, NON_PM, NON_PM, 0L ) 238 239}; /* artilist[] (or artifact_names[]) */ 240 241#undef A 242 243#ifndef MAKEDEFS_C 244#undef NO_ATTK 245#undef NO_DFNS 246#undef DFNS 247#undef PHYS 248#undef DRLI 249#undef COLD 250#undef FIRE 251#undef ELEC 252#undef STUN 253#endif 254 255/*artilist.h*/ 256