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 
10 static 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 
29 STATIC_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 */
40 A("",				STRANGE_OBJECT,
41 	0, 0, 0, NO_ATTK, NO_DFNS, NO_CARY, 0, A_NONE, NON_PM, NON_PM, 0L ),
42 
43 A("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  */
50 A("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 #ifdef BLACKMARKET
55 A("Thiefbane",		TWO_HANDED_SWORD,
56 	(SPFX_NOGEN|SPFX_RESTR|SPFX_BEHEAD|SPFX_DCLAS|SPFX_DRLI), 0, S_HUMAN,
57 	DRLI(5,1),	NO_DFNS,	NO_CARY,	0, A_CHAOTIC, NON_PM, NON_PM, 1500L ),
58 #endif /* BLACKMARKET */
59 
60 /*
61  *	Mjollnir will return to the hand of the wielder when thrown
62  *	if the wielder is a Valkyrie wearing Gauntlets of Power.
63  */
64 A("Mjollnir",			WAR_HAMMER,		/* Mjo:llnir */
65 	(SPFX_RESTR|SPFX_ATTK),  0, 0,
66 	ELEC(5,24),	NO_DFNS,	NO_CARY,	0, A_NEUTRAL, PM_VALKYRIE, NON_PM, 4000L ),
67 
68 A("Cleaver",			BATTLE_AXE,
69 	SPFX_RESTR, 0, 0,
70 	PHYS(3,6),	NO_DFNS,	NO_CARY,	0, A_NEUTRAL, PM_BARBARIAN, NON_PM, 1500L ),
71 
72 A("Grimtooth",			ORCISH_DAGGER,
73 	SPFX_RESTR, 0, 0,
74 	PHYS(2,6),	NO_DFNS,	NO_CARY,	0, A_CHAOTIC, NON_PM, PM_ORC, 300L ),
75 /*
76  *	Orcrist and Sting have same alignment as elves.
77  */
78 A("Orcrist",			ELVEN_BROADSWORD,
79 	SPFX_DFLAG2, 0, M2_ORC,
80 	PHYS(5,0),	NO_DFNS,	NO_CARY,	0, A_CHAOTIC, NON_PM, PM_ELF, 2000L ),
81 
82 /*
83  *	The combination of SPFX_WARN and M2_something on an artifact
84  *	will trigger EWarn_of_mon for all monsters that have the appropriate
85  *	M2_something flags.  In Sting's case it will trigger EWarn_of_mon
86  *	for M2_ORC monsters.
87  */
88 A("Sting",			ELVEN_DAGGER,
89 	(SPFX_WARN|SPFX_DFLAG2), 0, M2_ORC,
90 	PHYS(5,0),	NO_DFNS,	NO_CARY,	0, A_CHAOTIC, NON_PM, PM_ELF, 800L ),
91 /*
92  *	Magicbane is a bit different!  Its magic fanfare
93  *	unbalances victims in addition to doing some damage.
94  */
95 A("Magicbane",			ATHAME,
96 	(SPFX_RESTR|SPFX_ATTK|SPFX_DEFN), 0, 0,
97 	STUN(3,4),	DFNS(AD_MAGM),	NO_CARY,	0, A_NEUTRAL, PM_WIZARD, NON_PM, 3500L ),
98 
99 A("Frost Brand",		LONG_SWORD,
100 	(SPFX_RESTR|SPFX_ATTK|SPFX_DEFN), 0, 0,
101 	COLD(5,0),	COLD(0,0),	NO_CARY,	0, A_NONE, NON_PM, NON_PM, 3000L ),
102 
103 A("Fire Brand",			LONG_SWORD,
104 	(SPFX_RESTR|SPFX_ATTK|SPFX_DEFN), 0, 0,
105 	FIRE(5,0),	FIRE(0,0),	NO_CARY,	0, A_NONE, NON_PM, NON_PM, 3000L ),
106 
107 A("Dragonbane",			BROADSWORD,
108 	(SPFX_WARN_S|SPFX_RESTR|SPFX_DCLAS), 0, S_DRAGON,
109 	PHYS(5,0),	NO_DFNS,	NO_CARY,	0, A_NONE, NON_PM, NON_PM, 500L ),
110 
111 A("Demonbane",			LONG_SWORD,
112 	(SPFX_WARN|SPFX_RESTR|SPFX_DFLAG2), 0, M2_DEMON,
113 	PHYS(5,0),	NO_DFNS,	NO_CARY,	0, A_LAWFUL, NON_PM, NON_PM, 2500L ),
114 
115 A("Werebane",			SILVER_SABER,
116 	(SPFX_WARN|SPFX_RESTR|SPFX_DFLAG2), 0, M2_WERE,
117 	PHYS(5,0),	DFNS(AD_WERE),	NO_CARY,	0, A_NONE, NON_PM, NON_PM, 1500L ),
118 
119 A("Grayswandir",		SILVER_SABER,
120 	(SPFX_RESTR|SPFX_HALRES), 0, 0,
121 	PHYS(5,0),	NO_DFNS,	NO_CARY,	0, A_LAWFUL, NON_PM, NON_PM, 8000L ),
122 
123 A("Giantslayer",		LONG_SWORD,
124 	(SPFX_WARN|SPFX_RESTR|SPFX_DFLAG2), 0, M2_GIANT,
125 	PHYS(5,0),	NO_DFNS,	NO_CARY,	0, A_NEUTRAL, NON_PM, NON_PM, 200L ),
126 
127 A("Ogresmasher",		WAR_HAMMER,
128 	(SPFX_WARN_S|SPFX_RESTR|SPFX_DCLAS), 0, S_OGRE,
129 	PHYS(5,0),	NO_DFNS,	NO_CARY,	0, A_NONE, NON_PM, NON_PM, 200L ),
130 
131 A("Trollsbane",			MORNING_STAR,
132 	(SPFX_WARN_S|SPFX_RESTR|SPFX_DCLAS|SPFX_REGEN), 0, S_TROLL,
133 	PHYS(5,0),	NO_DFNS,	NO_CARY,	0, A_NONE, NON_PM, NON_PM, 200L ),
134 /*
135  *	Two problems:  1) doesn't let trolls regenerate heads,
136  *	2) doesn't give unusual message for 2-headed monsters (but
137  *	allowing those at all causes more problems than worth the effort).
138  */
139 A("Vorpal Blade",		LONG_SWORD,
140 	(SPFX_WARN_S|SPFX_RESTR|SPFX_BEHEAD), 0, S_JABBERWOCK,
141 	PHYS(5,8),	NO_DFNS,	NO_CARY,	0, A_NEUTRAL, NON_PM, NON_PM, 4000L ),
142 /*
143  *	Ah, never shall I forget the cry,
144  *		or the shriek that shrieked he,
145  *	As I gnashed my teeth, and from my sheath
146  *		I drew my Snickersnee!
147  *			--Koko, Lord high executioner of Titipu
148  *			  (From Sir W.S. Gilbert's "The Mikado")
149  */
150 A("Snickersnee",		KATANA,
151 	SPFX_RESTR, 0, 0,
152 	PHYS(0,8),	NO_DFNS,	NO_CARY,	0, A_LAWFUL, PM_SAMURAI, NON_PM, 1200L ),
153 
154 A("Sunsword",			LONG_SWORD,
155 	(SPFX_RESTR|SPFX_DFLAG2), 0, M2_UNDEAD,
156 	PHYS(5,0),	DFNS(AD_BLND),	NO_CARY,	0, A_LAWFUL, NON_PM, NON_PM, 1500L ),
157 
158 /*
159  *	The artifacts for the quest dungeon, all self-willed.
160  */
161 
162 A("The Orb of Detection",	CRYSTAL_BALL,
163 	(SPFX_NOGEN|SPFX_RESTR|SPFX_INTEL), (SPFX_ESP|SPFX_HSPDAM), 0,
164 	NO_ATTK,	NO_DFNS,	CARY(AD_MAGM),
165 	INVIS,		A_LAWFUL, PM_ARCHEOLOGIST, NON_PM, 2500L ),
166 
167 A("The Heart of Ahriman",	LUCKSTONE,
168 	(SPFX_NOGEN|SPFX_RESTR|SPFX_INTEL), (SPFX_DISPL|SPFX_EREGEN), 0,
169 	/* this stone does double damage if used as a projectile weapon */
170 	PHYS(5,0),	NO_DFNS,	NO_CARY,
171 	LEVITATION,	A_NEUTRAL, PM_BARBARIAN, NON_PM, 2500L ),
172 
173 A("The Sceptre of Might",	MACE,
174 	(SPFX_NOGEN|SPFX_RESTR|SPFX_INTEL|SPFX_DALIGN), 0, 0,
175 	PHYS(5,0),	NO_DFNS,	CARY(AD_MAGM),
176 	CONFLICT,	A_LAWFUL, PM_CAVEMAN, NON_PM, 2500L ),
177 
178 #if 0	/* OBSOLETE */
179 A("The Palantir of Westernesse",	CRYSTAL_BALL,
180 	(SPFX_NOGEN|SPFX_RESTR|SPFX_INTEL),
181 		(SPFX_ESP|SPFX_REGEN|SPFX_HSPDAM), 0,
182 	NO_ATTK,	NO_DFNS,	NO_CARY,
183 	TAMING,		A_CHAOTIC, NON_PM , PM_ELF, 8000L ),
184 #endif
185 
186 A("The Staff of Aesculapius",	QUARTERSTAFF,
187 	(SPFX_NOGEN|SPFX_RESTR|SPFX_ATTK|SPFX_INTEL|SPFX_DRLI|SPFX_REGEN), 0,0,
188 	DRLI(0,0),	DRLI(0,0),	NO_CARY,
189 	HEALING,	A_NEUTRAL, PM_HEALER, NON_PM, 5000L ),
190 
191 A("The Magic Mirror of Merlin", MIRROR,
192 	(SPFX_NOGEN|SPFX_RESTR|SPFX_INTEL|SPFX_SPEAK), SPFX_ESP, 0,
193 	NO_ATTK,	NO_DFNS,	CARY(AD_MAGM),
194 	0,		A_LAWFUL, PM_KNIGHT, NON_PM, 1500L ),
195 
196 A("The Eyes of the Overworld",	LENSES,
197 	(SPFX_NOGEN|SPFX_RESTR|SPFX_INTEL|SPFX_XRAY), 0, 0,
198 	NO_ATTK,	NO_DFNS,	CARY(AD_MAGM),
199 	ENLIGHTENING,	A_NEUTRAL,	 PM_MONK, NON_PM, 2500L ),
200 
201 A("The Mitre of Holiness",	HELM_OF_BRILLIANCE,
202 	(SPFX_NOGEN|SPFX_RESTR|SPFX_DFLAG2|SPFX_INTEL), 0, M2_UNDEAD,
203 	NO_ATTK,	NO_DFNS,	CARY(AD_FIRE),
204 	ENERGY_BOOST,	A_LAWFUL, PM_PRIEST, NON_PM, 2000L ),
205 
206 A("The Longbow of Diana", BOW,
207 	(SPFX_NOGEN|SPFX_RESTR|SPFX_INTEL|SPFX_REFLECT), SPFX_ESP, 0,
208 	PHYS(5,0),	NO_DFNS,	NO_CARY,
209 	CREATE_AMMO, A_CHAOTIC, PM_RANGER, NON_PM, 4000L ),
210 
211 A("The Master Key of Thievery", SKELETON_KEY,
212 	(SPFX_NOGEN|SPFX_RESTR|SPFX_INTEL|SPFX_SPEAK),
213 		(SPFX_WARN|SPFX_TCTRL|SPFX_HPHDAM), 0,
214 	NO_ATTK,	NO_DFNS,	NO_CARY,
215 	UNTRAP,		A_CHAOTIC, PM_ROGUE, NON_PM, 3500L ),
216 
217 A("The Tsurugi of Muramasa",	TSURUGI,
218 	(SPFX_NOGEN|SPFX_RESTR|SPFX_INTEL|SPFX_BEHEAD|SPFX_LUCK), 0, 0,
219 	PHYS(0,8),	NO_DFNS,	NO_CARY,
220 	0,		A_LAWFUL, PM_SAMURAI, NON_PM, 4500L ),
221 
222 #ifdef TOURIST
223 A("The Platinum Yendorian Express Card", CREDIT_CARD,
224 	(SPFX_NOGEN|SPFX_RESTR|SPFX_INTEL|SPFX_DEFN),
225 		(SPFX_ESP|SPFX_HSPDAM), 0,
226 	NO_ATTK,	NO_DFNS,	CARY(AD_MAGM),
227 	CHARGE_OBJ,	A_NEUTRAL, PM_TOURIST, NON_PM, 7000L ),
228 #endif
229 
230 A("The Orb of Fate",		CRYSTAL_BALL,
231 	(SPFX_NOGEN|SPFX_RESTR|SPFX_INTEL|SPFX_LUCK),
232 		(SPFX_WARN|SPFX_HSPDAM|SPFX_HPHDAM), 0,
233 	NO_ATTK,	NO_DFNS,	NO_CARY,
234 	LEV_TELE,	A_NEUTRAL, PM_VALKYRIE, NON_PM, 3500L ),
235 
236 A("The Eye of the Aethiopica",	AMULET_OF_ESP,
237 	(SPFX_NOGEN|SPFX_RESTR|SPFX_INTEL), (SPFX_EREGEN|SPFX_HSPDAM), 0,
238 	NO_ATTK,	NO_DFNS,	CARY(AD_MAGM),
239 	CREATE_PORTAL,	A_NEUTRAL, PM_WIZARD, NON_PM, 4000L ),
240 
241 /*
242  *  terminator; otyp must be zero
243  */
244 A(0, 0, 0, 0, 0, NO_ATTK, NO_DFNS, NO_CARY, 0, A_NONE, NON_PM, NON_PM, 0L )
245 
246 };	/* artilist[] (or artifact_names[]) */
247 
248 #undef	A
249 
250 #ifndef MAKEDEFS_C
251 #undef	NO_ATTK
252 #undef	NO_DFNS
253 #undef	DFNS
254 #undef	PHYS
255 #undef	DRLI
256 #undef	COLD
257 #undef	FIRE
258 #undef	ELEC
259 #undef	STUN
260 #endif
261 
262 /*artilist.h*/
263