home *** CD-ROM | disk | FTP | other *** search
- /* SCCS Id: @(#)artilist.h 3.1 92/12/13 */
- /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
- /* NetHack may be freely redistributed. See license for details. */
-
- #ifdef MAKEDEFS_C
- /* in makedefs.c, all we care about is the list of names */
-
- #define A(nam,typ,s1,s2,mt,atk,dfn,cry,inv,al,cl) nam
-
- static const char *artifact_names[] = {
- #else
- /* in artifact.c, set up the actual artifact list structure */
-
- #define A(nam,typ,s1,s2,mt,atk,dfn,cry,inv,al,cl) \
- { typ, nam, s1, s2, mt, atk, dfn, cry, inv, al, cl }
-
- #define NO_ATTK {0,0,0,0} /* no attack */
- #define NO_DFNS {0,0,0,0} /* no defense */
- #define NO_CARY {0,0,0,0} /* no carry effects */
- #define DFNS(c) {0,c,0,0}
- #define CARY(c) {0,c,0,0}
- #define PHYS(a,b) {0,AD_PHYS,a,b} /* physical */
- #define DRLI(a,b) {0,AD_DRLI,a,b} /* life drain */
- #define COLD(a,b) {0,AD_COLD,a,b}
- #define FIRE(a,b) {0,AD_FIRE,a,b}
- #define ELEC(a,b) {0,AD_ELEC,a,b} /* electrical shock */
- #define STUN(a,b) {0,AD_STUN,a,b} /* magical attack */
-
- STATIC_OVL const struct artifact NEARDATA artilist[] = {
- #endif /* MAKEDEFS_C */
-
- /* dummy element #0, so that all interesting indices are non-zero */
- A("", STRANGE_OBJECT,
- 0, 0, 0, NO_ATTK, NO_DFNS, NO_CARY, 0, A_NONE, 0 ),
-
- A("Excalibur", LONG_SWORD,
- (SPFX_NOGEN|SPFX_RESTR|SPFX_SEEK|SPFX_DEFN|SPFX_INTEL|SPFX_SEARCH),0,0,
- PHYS(5,10), DRLI(0,0), NO_CARY, 0, A_LAWFUL, 'K' ),
- /*
- * Stormbringer only has a 2 because it can drain a level,
- * providing 8 more.
- */
- A("Stormbringer", RUNESWORD,
- (SPFX_RESTR|SPFX_ATTK|SPFX_DEFN|SPFX_INTEL|SPFX_DRLI), 0, 0,
- DRLI(5,2), DRLI(0,0), NO_CARY, 0, A_CHAOTIC, 0 ),
- /*
- * Mjollnir will return to the hand of the wielder when thrown
- * if the wielder is wearing Gauntlets of Power.
- */
- A("Mjollnir", WAR_HAMMER, /* Mjo:llnir */
- (SPFX_RESTR|SPFX_ATTK), 0, 0,
- ELEC(5,24), NO_DFNS, NO_CARY, 0, A_NEUTRAL, 'V' ),
-
- A("Cleaver", BATTLE_AXE,
- SPFX_RESTR, 0, 0,
- PHYS(3,6), NO_DFNS, NO_CARY, 0, A_NEUTRAL, 'B' ),
-
- A("Grimtooth", ORCISH_DAGGER,
- SPFX_RESTR, 0, 0,
- PHYS(2,6), NO_DFNS, NO_CARY, 0, A_CHAOTIC, 0 ),
-
- A("Orcrist", ELVEN_BROADSWORD,
- SPFX_DFLAG2, 0, M2_ORC,
- PHYS(5,0), NO_DFNS, NO_CARY, 0, A_LAWFUL, 'E' ),
-
- A("Sting", ELVEN_DAGGER,
- (SPFX_WARN|SPFX_DFLAG2), 0, M2_ORC,
- PHYS(5,0), NO_DFNS, NO_CARY, 0, A_LAWFUL, 0 ),
- /*
- * Magicbane is a bit different! Its magic fanfare
- * unbalances victims in addition to doing some damage.
- */
- A("Magicbane", ATHAME,
- (SPFX_RESTR|SPFX_ATTK|SPFX_DEFN), 0, 0,
- STUN(3,4), DFNS(AD_MAGM), NO_CARY, 0, A_NEUTRAL, 'W' ),
-
- A("Frost Brand", LONG_SWORD,
- (SPFX_RESTR|SPFX_ATTK|SPFX_DEFN), 0, 0,
- COLD(5,0), COLD(0,0), NO_CARY, 0, A_NEUTRAL, 0 ),
-
- A("Fire Brand", LONG_SWORD,
- (SPFX_RESTR|SPFX_ATTK|SPFX_DEFN), 0, 0,
- FIRE(5,0), FIRE(0,0), NO_CARY, 0, A_NEUTRAL, 0 ),
-
- A("Dragonbane", BROADSWORD,
- (SPFX_RESTR|SPFX_DCLAS), 0, S_DRAGON,
- PHYS(5,0), NO_DFNS, NO_CARY, 0, A_NEUTRAL, 0 ),
-
- A("Demonbane", LONG_SWORD,
- (SPFX_RESTR|SPFX_DFLAG2), 0, M2_DEMON,
- PHYS(5,0), NO_DFNS, NO_CARY, 0, A_LAWFUL, 0 ),
-
- A("Werebane", SILVER_SABER,
- (SPFX_RESTR|SPFX_DFLAG2), 0, M2_WERE,
- PHYS(5,0), NO_DFNS, NO_CARY, 0, A_LAWFUL, 0 ),
-
- A("Grayswandir", SILVER_SABER,
- (SPFX_RESTR|SPFX_HALRES), 0, 0,
- PHYS(5,0), NO_DFNS, NO_CARY, 0, A_LAWFUL, 0 ),
-
- A("Giantslayer", LONG_SWORD,
- (SPFX_RESTR|SPFX_DFLAG2), 0, M2_GIANT,
- PHYS(5,0), NO_DFNS, NO_CARY, 0, A_NEUTRAL, 0 ),
-
- A("Ogresmasher", WAR_HAMMER,
- (SPFX_RESTR|SPFX_DCLAS), 0, S_OGRE,
- PHYS(5,0), NO_DFNS, NO_CARY, 0, A_LAWFUL, 0 ),
-
- A("Trollsbane", MORNING_STAR,
- (SPFX_RESTR|SPFX_DCLAS), 0, S_TROLL,
- PHYS(5,0), NO_DFNS, NO_CARY, 0, A_LAWFUL, 0 ),
- /*
- * Two problems: 1) doesn't let trolls regenerate heads,
- * 2) doesn't give unusual message for 2-headed monsters (but
- * allowing those at all causes more problems than worth the effort).
- */
- A("Vorpal Blade", LONG_SWORD,
- (SPFX_RESTR|SPFX_BEHEAD), 0, 0,
- PHYS(5,1), NO_DFNS, NO_CARY, 0, A_NEUTRAL, 0 ),
- /*
- * Ah, never shall I forget the cry,
- * or the shriek that shrieked he,
- * As I gnashed my teeth, and from my sheath
- * I drew my Snickersnee!
- * --Koko, Lord high executioner of Titipu
- * (From Sir W.S. Gilbert's "The Mikado")
- */
- A("Snickersnee", KATANA,
- SPFX_RESTR, 0, 0,
- PHYS(0,8), NO_DFNS, NO_CARY, 0, A_LAWFUL, 'S' ),
-
- A("Sunsword", LONG_SWORD,
- (SPFX_RESTR|SPFX_DFLAG2), 0, M2_UNDEAD,
- PHYS(5,0), NO_DFNS, NO_CARY, 0, A_LAWFUL, 0 ),
-
- #ifdef MULDGN
- /*
- * The artifacts for the quest dungeon, all self-willed.
- */
-
- A("The Orb of Detection", CRYSTAL_BALL,
- (SPFX_NOGEN|SPFX_RESTR|SPFX_INTEL), (SPFX_ESP|SPFX_HSPDAM), 0,
- NO_ATTK, NO_DFNS, CARY(AD_MAGM),
- INVIS, A_LAWFUL, 'A' ),
-
- A("The Heart of Ahriman", LUCKSTONE,
- (SPFX_NOGEN|SPFX_RESTR|SPFX_INTEL), SPFX_STLTH, 0,
- NO_ATTK, NO_DFNS, NO_CARY,
- LEVITATION, A_NEUTRAL, 'B' ),
-
- A("The Sceptre of Might", QUARTERSTAFF,
- (SPFX_NOGEN|SPFX_RESTR|SPFX_INTEL|SPFX_DALIGN), 0, 0,
- PHYS(0,0), NO_DFNS, CARY(AD_MAGM),
- CONFLICT, A_LAWFUL, 'C' ),
-
- A("The Palantir of Westernesse", CRYSTAL_BALL,
- (SPFX_NOGEN|SPFX_RESTR|SPFX_INTEL),
- (SPFX_ESP|SPFX_REGEN|SPFX_HSPDAM), 0,
- NO_ATTK, NO_DFNS, NO_CARY,
- TAMING, A_CHAOTIC, 'E' ),
-
- A("The Staff of Aesculapius", QUARTERSTAFF,
- (SPFX_NOGEN|SPFX_RESTR|SPFX_ATTK|SPFX_INTEL|SPFX_DRLI|SPFX_REGEN), 0,0,
- DRLI(0,0), NO_DFNS, NO_CARY,
- HEALING, A_NEUTRAL, 'H' ),
-
- A("The Magic Mirror of Merlin", MIRROR,
- (SPFX_NOGEN|SPFX_RESTR|SPFX_SPEEK), SPFX_ESP, 0,
- NO_ATTK, NO_DFNS, CARY(AD_MAGM),
- 0, A_LAWFUL, 'K' ),
-
- A("The Mitre of Holiness", HELM_OF_BRILLIANCE,
- (SPFX_NOGEN|SPFX_RESTR|SPFX_DCLAS|SPFX_INTEL), 0, M2_UNDEAD,
- NO_ATTK, NO_DFNS, CARY(AD_FIRE),
- ENERGY_BOOST, A_LAWFUL, 'P' ),
-
- A("The Master Key of Thievery", SKELETON_KEY,
- (SPFX_NOGEN|SPFX_RESTR|SPFX_INTEL|SPFX_SPEEK),
- (SPFX_WARN|SPFX_TCTRL|SPFX_HPHDAM), 0,
- NO_ATTK, NO_DFNS, NO_CARY,
- UNTRAP, A_CHAOTIC, 'R' ),
-
- A("The Tsurugi of Muramasa", TSURUGI,
- (SPFX_NOGEN|SPFX_RESTR|SPFX_INTEL|SPFX_BEHEAD|SPFX_LUCK), 0, 0,
- NO_ATTK, NO_DFNS, NO_CARY,
- 0, A_LAWFUL, 'S' ),
-
- # ifdef TOURIST
- A("The Platinum Yendorian Express Card", CREDIT_CARD,
- (SPFX_NOGEN|SPFX_RESTR|SPFX_INTEL|SPFX_DEFN),
- (SPFX_ESP|SPFX_HSPDAM), 0,
- NO_ATTK, NO_DFNS, CARY(AD_MAGM),
- CHARGE_OBJ, A_NEUTRAL, 'T' ),
- # endif
-
- A("The Orb of Fate", CRYSTAL_BALL,
- (SPFX_NOGEN|SPFX_RESTR|SPFX_INTEL|SPFX_LUCK),
- (SPFX_WARN|SPFX_HSPDAM|SPFX_HPHDAM), 0,
- NO_ATTK, NO_DFNS, NO_CARY,
- LEV_TELE, A_NEUTRAL, 'V' ),
-
- A("The Eye of the Aethiopica", AMULET_OF_ESP,
- (SPFX_NOGEN|SPFX_RESTR|SPFX_INTEL), (SPFX_EREGEN|SPFX_HSPDAM), 0,
- NO_ATTK, NO_DFNS, CARY(AD_MAGM),
- CREATE_PORTAL, A_NEUTRAL, 'W' ),
- #endif /* MULDGN */
- /*
- * terminator; otyp must be zero
- */
- A(0, 0, 0, 0, 0, NO_ATTK, NO_DFNS, NO_CARY, 0, A_NONE, 0 )
-
- }; /* artilist[] (or artifact_names[]) */
-
- #undef A
-
- #ifndef MAKEDEFS_C
- #undef NO_ATTK
- #undef NO_DFNS
- #undef DFNS
- #undef PHYS
- #undef DRLI
- #undef COLD
- #undef FIRE
- #undef ELEC
- #undef STUN
- #endif
-
- /*artilist.h*/
-