OSDN Git Service

upgrade to 3.6.2
[jnethack/source.git] / src / objectsj.c
1 /* NetHack 3.6  objects.c       $NHDT-Date: 1447313395 2015/11/12 07:29:55 $  $NHDT-Branch: master $:$NHDT-Revision: 1.49 $ */
2 /* Copyright (c) Mike Threepoint, 1989.                           */
3 /* NetHack may be freely redistributed.  See license for details. */
4
5 /*
6  * The data in this file is processed twice, to construct two arrays.
7  * On the first pass, only object name and object description matter.
8  * On the second pass, all object-class fields except those two matter.
9  * 2nd pass is a recursive inclusion of this file, not a 2nd compilation.
10  * The name/description array is also used by makedefs and lev_comp.
11  *
12  * #ifndef OBJECTS_PASS_2_
13  * # define OBJECT(name,desc,foo,bar,glorkum) name,desc
14  * struct objdescr obj_descr[] =
15  * #else
16  * # define OBJECT(name,desc,foo,bar,glorkum) foo,bar,glorkum
17  * struct objclass objects[] =
18  * #endif
19  * {
20  *   { OBJECT("strange object",NULL, 1,2,3) },
21  *   { OBJECT("arrow","pointy stick", 4,5,6) },
22  *   ...
23  *   { OBJECT(NULL,NULL, 0,0,0) }
24  * };
25  * #define OBJECTS_PASS_2_
26  * #include "objects.c"
27  */
28
29 /* *INDENT-OFF* */
30 /* clang-format off */
31
32 #ifndef OBJECTS_PASS_2_
33 /* first pass */
34 struct monst { struct monst *dummy; };  /* lint: struct obj's union */
35 #include "config.h"
36 #include "obj.h"
37 #include "objclass.h"
38 #include "prop.h"
39 #include "skills.h"
40
41 #else /* !OBJECTS_PASS_2_ */
42 /* second pass */
43 #include "color.h"
44 #define COLOR_FIELD(X) X,
45 #endif /* !OBJECTS_PASS_2_ */
46
47 /* objects have symbols: ) [ = " ( % ! ? + / $ * ` 0 _ . */
48
49 /*
50  *      Note:  OBJ() and BITS() macros are used to avoid exceeding argument
51  *      limits imposed by some compilers.  The ctnr field of BITS currently
52  *      does not map into struct objclass, and is ignored in the expansion.
53  *      The 0 in the expansion corresponds to oc_pre_discovered, which is
54  *      set at run-time during role-specific character initialization.
55  */
56
57 #ifndef OBJECTS_PASS_2_
58 /* first pass -- object descriptive text */
59 #define OBJ(name,desc)  name, desc
60 #define OBJECT(obj,bits,prp,sym,prob,dly,wt, \
61                cost,sdam,ldam,oc1,oc2,nut,color)  { obj }
62 #define None (char *) 0 /* less visual distraction for 'no description' */
63
64 NEARDATA struct objdescr obj_descr[] =
65 #else
66 /* second pass -- object definitions */
67 #define BITS(nmkn,mrg,uskn,ctnr,mgc,chrg,uniq,nwsh,big,tuf,dir,sub,mtrl) \
68   nmkn,mrg,uskn,0,mgc,chrg,uniq,nwsh,big,tuf,dir,mtrl,sub /*SCO cpp fodder*/
69 #define OBJECT(obj,bits,prp,sym,prob,dly,wt,cost,sdam,ldam,oc1,oc2,nut,color) \
70   { 0, 0, (char *) 0, bits, prp, sym, dly, COLOR_FIELD(color) prob, wt, \
71     cost, sdam, ldam, oc1, oc2, nut }
72 #ifndef lint
73 #define HARDGEM(n) (n >= 8)
74 #else
75 #define HARDGEM(n) (0)
76 #endif
77
78 NEARDATA struct objclass objects[] =
79 #endif
80 {
81 /* dummy object[0] -- description [2nd arg] *must* be NULL */
82 OBJECT(OBJ("\8aï\96­\82È\95¨\91Ì", None),
83        BITS(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, P_NONE, 0),
84        0, ILLOBJ_CLASS, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
85
86 /* weapons ... */
87 #define WEAPON(name,desc,kn,mg,bi,prob,wt,                \
88                cost,sdam,ldam,hitbon,typ,sub,metal,color) \
89     OBJECT(OBJ(name,desc),                                          \
90            BITS(kn, mg, 1, 0, 0, 1, 0, 0, bi, 0, typ, sub, metal),  \
91            0, WEAPON_CLASS, prob, 0, wt,                            \
92            cost, sdam, ldam, hitbon, 0, wt, color)
93 #define PROJECTILE(name,desc,kn,prob,wt,                  \
94                    cost,sdam,ldam,hitbon,metal,sub,color) \
95     OBJECT(OBJ(name,desc),                                          \
96            BITS(kn, 1, 1, 0, 0, 1, 0, 0, 0, 0, PIERCE, sub, metal), \
97            0, WEAPON_CLASS, prob, 0, wt,                            \
98            cost, sdam, ldam, hitbon, 0, wt, color)
99 #define BOW(name,desc,kn,prob,wt,cost,hitbon,metal,sub,color) \
100     OBJECT(OBJ(name,desc),                                          \
101            BITS(kn, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, sub, metal),      \
102            0, WEAPON_CLASS, prob, 0, wt,                            \
103            cost, 2, 2, hitbon, 0, wt, color)
104
105 /* Note: for weapons that don't do an even die of damage (ex. 2-7 or 3-18)
106    the extra damage is added on in weapon.c, not here! */
107
108 #define P PIERCE
109 #define S SLASH
110 #define B WHACK
111
112 /* missiles; materiel reflects the arrowhead, not the shaft */
113 PROJECTILE("\96î", None,
114            1, 55, 1, 2, 6, 6, 0,        IRON, -P_BOW, HI_METAL),
115 PROJECTILE("\83G\83\8b\83t\82Ì\96î", "\90_\94é\93I\82È\96î",
116            0, 20, 1, 2, 7, 6, 0,        WOOD, -P_BOW, HI_WOOD),
117 PROJECTILE("\83I\81[\83N\82Ì\96î", "\91e\96\96\82È\96î",
118            0, 20, 1, 2, 5, 6, 0,        IRON, -P_BOW, CLR_BLACK),
119 PROJECTILE("\8bâ\82Ì\96î", None,
120            1, 12, 1, 5, 6, 6, 0,        SILVER, -P_BOW, HI_SILVER),
121 PROJECTILE("\92|\96î", "\92|\82Ì\96î",
122            0, 15, 1, 4, 7, 7, 1,        METAL, -P_BOW, HI_METAL),
123 PROJECTILE("\83N\83\8d\83X\83{\83D\83{\83\8b\83g", None,
124            1, 55, 1, 2, 4, 6, 0,        IRON, -P_CROSSBOW, HI_METAL),
125
126 /* missiles that don't use a launcher */
127 WEAPON("\93\8a\82°\96î", None,
128        1, 1, 0, 60,   1,   2,  3,  2, 0, P,   -P_DART, IRON, HI_METAL),
129 WEAPON("\8eè\97 \8c\95", "\90¯\8c^\82Ì\93\8a\82°\82é\82à\82Ì",
130        0, 1, 0, 35,   1,   5,  8,  6, 2, P,   -P_SHURIKEN, IRON, HI_METAL),
131 WEAPON("\83u\81[\83\81\83\89\83\93", None,
132        1, 1, 0, 15,   5,  20,  9,  9, 0, 0,   -P_BOOMERANG, WOOD, HI_WOOD),
133
134 /* spears [note: javelin used to have a separate skill from spears,
135    because the latter are primarily stabbing weapons rather than
136    throwing ones; but for playability, they've been merged together
137    under spear skill and spears can now be thrown like javelins] */
138 WEAPON("\91\84", None,
139        1, 1, 0, 50,  30,   3,  6,  8, 0, P,   P_SPEAR, IRON, HI_METAL),
140 WEAPON("\83G\83\8b\83t\82Ì\91\84", "\90_\94é\93I\82È\91\84",
141        0, 1, 0, 10,  30,   3,  7,  8, 0, P,   P_SPEAR, WOOD, HI_WOOD),
142 WEAPON("\83I\81[\83N\82Ì\91\84", "\91e\96\96\82È\91\84",
143        0, 1, 0, 13,  30,   3,  5,  8, 0, P,   P_SPEAR, IRON, CLR_BLACK),
144 WEAPON("\83h\83\8f\81[\83t\82Ì\91\84", "\8fä\95v\82È\91\84",
145        0, 1, 0, 12,  35,   3,  8,  8, 0, P,   P_SPEAR, IRON, HI_METAL),
146 WEAPON("\8bâ\82Ì\91\84", None,
147        1, 1, 0,  2,  36,  40,  6,  8, 0, P,   P_SPEAR, SILVER, HI_SILVER),
148 WEAPON("\83W\83\83\83x\83\8a\83\93", "\93\8a\82°\91\84",
149        0, 1, 0, 10,  20,   3,  6,  6, 0, P,   P_SPEAR, IRON, HI_METAL),
150
151 /* spearish; doesn't stack, not intended to be thrown */
152 WEAPON("\83g\83\89\83C\83f\83\93\83g", None,
153        1, 0, 0,  8,  25,   5,  6,  4, 0, P,   P_TRIDENT, IRON, HI_METAL),
154         /* +1 small, +2d4 large */
155
156 /* blades; all stack */
157 WEAPON("\92Z\8c\95", None,
158        1, 1, 0, 30,  10,   4,  4,  3, 2, P,   P_DAGGER, IRON, HI_METAL),
159 WEAPON("\83G\83\8b\83t\82Ì\92Z\8c\95", "\90_\94é\93I\82È\92Z\8c\95",
160        0, 1, 0, 10,  10,   4,  5,  3, 2, P,   P_DAGGER, WOOD, HI_WOOD),
161 WEAPON("\83I\81[\83N\82Ì\92Z\8c\95", "\91e\96\96\82È\92Z\8c\95",
162        0, 1, 0, 12,  10,   4,  3,  3, 2, P,   P_DAGGER, IRON, CLR_BLACK),
163 WEAPON("\8bâ\82Ì\92Z\8c\95", None,
164        1, 1, 0,  3,  12,  40,  4,  3, 2, P,   P_DAGGER, SILVER, HI_SILVER),
165 WEAPON("\83A\83T\83\81", None,
166        1, 1, 0,  0,  10,   4,  4,  3, 2, S,   P_DAGGER, IRON, HI_METAL),
167 WEAPON("\83\81\83X", None,
168        1, 1, 0,  0,   5,   6,  3,  3, 2, S,   P_KNIFE, METAL, HI_METAL),
169 WEAPON("\83i\83C\83t", None,
170        1, 1, 0, 20,   5,   4,  3,  2, 0, P|S, P_KNIFE, IRON, HI_METAL),
171 WEAPON("\83X\83e\83B\83\8c\83b\83g", None,
172        1, 1, 0,  5,   5,   4,  3,  2, 0, P|S, P_KNIFE, IRON, HI_METAL),
173 /* 3.6: worm teeth and crysknives now stack;
174    when a stack of teeth is enchanted at once, they fuse into one crysknife;
175    when a stack of crysknives drops, the whole stack reverts to teeth */
176 WEAPON("\83\8f\81[\83\80\82Ì\8e\95", None,
177        1, 1, 0,  0,  20,   2,  2,  2, 0, 0,   P_KNIFE, 0, CLR_WHITE),
178 WEAPON("\83N\83\8a\83X\83i\83C\83t", None,
179        1, 1, 0,  0,  20, 100, 10, 10, 3, P,   P_KNIFE, MINERAL, CLR_WHITE),
180
181 /* axes */
182 WEAPON("\95\80", None,
183        1, 0, 0, 40,  60,   8,  6,  4, 0, S,   P_AXE, IRON, HI_METAL),
184 WEAPON("\90í\95\80", "\97¼\90n\82Ì\95\80",       /* "double-bitted"? */
185        0, 0, 1, 10, 120,  40,  8,  6, 0, S,   P_AXE, IRON, HI_METAL),
186
187 /* swords */
188 WEAPON("\8f¬\8c\95", None,
189        1, 0, 0,  8,  30,  10,  6,  8, 0, P,   P_SHORT_SWORD, IRON, HI_METAL),
190 WEAPON("\83G\83\8b\83t\82Ì\8f¬\8c\95", "\90_\94é\93I\82È\8f¬\8c\95",
191        0, 0, 0,  2,  30,  10,  8,  8, 0, P,   P_SHORT_SWORD, WOOD, HI_WOOD),
192 WEAPON("\83I\81[\83N\82Ì\8f¬\8c\95", "\91e\96\96\82È\8f¬\8c\95",
193        0, 0, 0,  3,  30,  10,  5,  8, 0, P,   P_SHORT_SWORD, IRON, CLR_BLACK),
194 WEAPON("\83h\83\8f\81[\83t\82Ì\8f¬\8c\95", "\95\9d\8dL\82Ì\8f¬\8c\95",
195        0, 0, 0,  2,  30,  10,  7,  8, 0, P,   P_SHORT_SWORD, IRON, HI_METAL),
196 WEAPON("\83V\83~\83^\81[", "\8bÈ\82Á\82½\8c\95",
197        0, 0, 0, 15,  40,  15,  8,  8, 0, S,   P_SCIMITAR, IRON, HI_METAL),
198 WEAPON("\8bâ\82Ì\83T\81[\83x\83\8b", None,
199        1, 0, 0,  6,  40,  75,  8,  8, 0, S,   P_SABER, SILVER, HI_SILVER),
200 WEAPON("\95\9d\8dL\82Ì\8c\95", None,
201        1, 0, 0,  8,  70,  10,  4,  6, 0, S,   P_BROAD_SWORD, IRON, HI_METAL),
202         /* +d4 small, +1 large */
203 WEAPON("\83G\83\8b\83t\82Ì\95\9d\8dL\82Ì\8c\95", "\90_\94é\93I\82È\95\9d\8dL\82Ì\8c\95",
204        0, 0, 0,  4,  70,  10,  6,  6, 0, S,   P_BROAD_SWORD, WOOD, HI_WOOD),
205         /* +d4 small, +1 large */
206 WEAPON("\92·\8c\95", None,
207        1, 0, 0, 50,  40,  15,  8, 12, 0, S,   P_LONG_SWORD, IRON, HI_METAL),
208 WEAPON("\97¼\8eè\8c\95", None,
209        1, 0, 1, 22, 150,  50, 12,  6, 0, S,   P_TWO_HANDED_SWORD,
210                                                             IRON, HI_METAL),
211         /* +2d6 large */
212 WEAPON("\93\81", "\8e\98\82Ì\8c\95",
213        0, 0, 0,  4,  40,  80, 10, 12, 1, S,   P_LONG_SWORD, IRON, HI_METAL),
214 /* special swords set up for artifacts */
215 WEAPON("\91å\93\81", "\8e\98\82Ì\92·\8c\95",
216        0, 0, 1,  0,  60, 500, 16,  8, 2, S,   P_TWO_HANDED_SWORD,
217                                                             METAL, HI_METAL),
218         /* +2d6 large */
219 WEAPON("\83\8b\81[\83\93\82Ì\8c\95", "\90_\94é\93I\82È\95\9d\8dL\82Ì\8c\95",
220        0, 0, 0,  0,  40, 300,  4,  6, 0, S,   P_BROAD_SWORD, IRON, CLR_BLACK),
221         /* +d4 small, +1 large; Stormbringer: +5d2 +d8 from level drain */
222
223 /* polearms */
224 /* spear-type */
225 WEAPON("\83p\83\8b\83`\83U\83\93", "\91e\8eG\82È\92·\95\80",
226        0, 0, 1,  5,  80,  10,  6,  6, 0, P,   P_POLEARMS, IRON, HI_METAL),
227         /* +1 large */
228 WEAPON("\83\89\83\93\83T\81[", "\95¿\95t\82Ì\92·\95\80",
229        0, 0, 1,  5,  50,   6,  4,  4, 0, P,   P_POLEARMS, IRON, HI_METAL),
230         /* +d4 both */
231 WEAPON("\83X\83y\83^\83\80", "\83t\83H\81[\83N\95t\82«\92·\95\80",
232        0, 0, 1,  5,  50,   5,  6,  6, 0, P,   P_POLEARMS, IRON, HI_METAL),
233         /* +1 small, +d6 large */
234 WEAPON("\83O\83\8c\83C\83u", "\95Ð\90n\92·\95\80",
235        0, 0, 1,  8,  75,   6,  6, 10, 0, S,   P_POLEARMS, IRON, HI_METAL),
236 WEAPON("\83\89\83\93\83X", None,
237        1, 0, 0,  4, 180,  10,  6,  8, 0, P,   P_LANCE, IRON, HI_METAL),
238         /* +2d10 when jousting with lance as primary weapon */
239 /* axe-type */
240 WEAPON("\83n\83\8b\83o\81[\83h", "\8bÈ\82Á\82½\82Ü\82³\82©\82è",
241        0, 0, 1,  8, 150,  10, 10,  6, 0, P|S, P_POLEARMS, IRON, HI_METAL),
242         /* +1d6 large */
243 WEAPON("\83o\81[\83f\83B\83b\83N", "\92·\82¢\82Ü\82³\82©\82è",
244        0, 0, 1,  4, 120,   7,  4,  4, 0, S,   P_POLEARMS, IRON, HI_METAL),
245         /* +1d4 small, +2d4 large */
246 WEAPON("\83\94\83H\83E\83W\83F", "\95ï\92\9a\95t\82«\8aÆ",
247        0, 0, 1,  4, 125,   5,  4,  4, 0, S,   P_POLEARMS, IRON, HI_METAL),
248         /* +d4 both */
249 WEAPON("\83h\83\8f\81[\83t\82Ì\82Â\82é\82Í\82µ", "\95\9d\8dL\82Ì\82Â\82é\82Í\82µ",
250        0, 0, 1, 13, 120,  50, 12,  8, -1, B,  P_PICK_AXE, IRON, HI_METAL),
251 /* curved/hooked */
252 WEAPON("\83t\83H\83V\83\83\81[\83\8b", "\8a\99\95t\82«\8aÆ",
253        0, 0, 1,  6,  60,   5,  6,  8, 0, P|S, P_POLEARMS, IRON, HI_METAL),
254 WEAPON("\83M\83U\83\8b\83\80", "\8a \82è\8d\9e\82Ý\82ª\82Ü",
255        0, 0, 1,  6,  80,   5,  4,  8, 0, S,   P_POLEARMS, IRON, HI_METAL),
256         /* +1d4 small */
257 WEAPON("\83r\83\8b\81E\83M\83U\83\8b\83\80", "\8ab\95t\82«\92·\95\80",
258        0, 0, 1,  4, 120,   7,  4, 10, 0, P|S, P_POLEARMS, IRON, HI_METAL),
259         /* +1d4 small */
260 /* other */
261 WEAPON("\83\8b\83b\83c\83F\83\8b\83\93\83n\83\93\83}\81[", "\93ñ\8cÒ\82Ì\92·\95\80",
262        0, 0, 1,  5, 150,   7,  4,  6, 0, B|P, P_POLEARMS, IRON, HI_METAL),
263         /* +1d4 small */
264 WEAPON("\83x\83b\83N\81E\83h\81E\83R\83\8b\83o\83\93", "\82­\82¿\82Î\82µ\95t\82«\92·\95\80",
265        0, 0, 1,  4, 100,   8,  8,  6, 0, B|P, P_POLEARMS, IRON, HI_METAL),
266
267 /* bludgeons */
268 WEAPON("\83\81\83C\83X", None,
269        1, 0, 0, 40,  30,   5,  6,  6, 0, B,   P_MACE, IRON, HI_METAL),
270         /* +1 small */
271 WEAPON("\83\82\81[\83j\83\93\83O\83X\83^\81[", None,
272        1, 0, 0, 12, 120,  10,  4,  6, 0, B,   P_MORNING_STAR, IRON, HI_METAL),
273         /* +d4 small, +1 large */
274 WEAPON("\83E\83H\81[\83n\83\93\83}\81[", None,
275        1, 0, 0, 15,  50,   5,  4,  4, 0, B,   P_HAMMER, IRON, HI_METAL),
276         /* +1 small */
277 WEAPON("\82±\82ñ\96_", None,
278        1, 0, 0, 12,  30,   3,  6,  3, 0, B,   P_CLUB, WOOD, HI_WOOD),
279 WEAPON("\83S\83\80\83z\81[\83X", None,
280        1, 0, 0,  0,  20,   3,  4,  3, 0, B,   P_WHIP, PLASTIC, CLR_BROWN),
281 WEAPON("\98Z\8eÚ\96_", "\96_",
282        0, 0, 1, 11,  40,   5,  6,  6, 0, B,   P_QUARTERSTAFF, WOOD, HI_WOOD),
283 /* two-piece */
284 WEAPON("\83A\83L\83\8a\83X", "\95R\95t\82Ì\82±\82ñ\96_",
285        0, 0, 0,  8,  15,   4,  6,  3, 0, B,   P_CLUB, IRON, HI_METAL),
286 WEAPON("\83t\83\8c\83C\83\8b", None,
287        1, 0, 0, 40,  15,   4,  6,  4, 0, B,   P_FLAIL, IRON, HI_METAL),
288         /* +1 small, +1d4 large */
289
290 /* misc */
291 WEAPON("\95Ú", None,
292        1, 0, 0,  2,  20,   4,  2,  1, 0, 0,   P_WHIP, LEATHER, CLR_BROWN),
293
294 /* bows */
295 BOW("\8b|", None,                 1, 24, 30, 60, 0, WOOD, P_BOW, HI_WOOD),
296 BOW("\83G\83\8b\83t\82Ì\8b|", "\90_\94é\93I\82È\8b|", 0, 12, 30, 60, 0, WOOD, P_BOW, HI_WOOD),
297 BOW("\83I\81[\83N\82Ì\8b|", "\91e\96\96\82È\8b|",   0, 12, 30, 60, 0, WOOD, P_BOW, CLR_BLACK),
298 BOW("\98a\8b|", "\92·\8b|",             0,  0, 30, 60, 0, WOOD, P_BOW, HI_WOOD),
299 BOW("\83X\83\8a\83\93\83O", None,           1, 40,  3, 20, 0, LEATHER, P_SLING, HI_LEATHER),
300 BOW("\83N\83\8d\83X\83{\83D", None,         1, 45, 50, 40, 0, WOOD, P_CROSSBOW, HI_WOOD),
301
302 #undef P
303 #undef S
304 #undef B
305
306 #undef WEAPON
307 #undef PROJECTILE
308 #undef BOW
309
310 /* armor ... */
311         /* IRON denotes ferrous metals, including steel.
312          * Only IRON weapons and armor can rust.
313          * Only COPPER (including brass) corrodes.
314          * Some creatures are vulnerable to SILVER.
315          */
316 #define ARMOR(name,desc,kn,mgc,blk,power,prob,delay,wt,  \
317               cost,ac,can,sub,metal,c)                   \
318     OBJECT(OBJ(name, desc),                                         \
319            BITS(kn, 0, 1, 0, mgc, 1, 0, 0, blk, 0, 0, sub, metal),  \
320            power, ARMOR_CLASS, prob, delay, wt,                     \
321            cost, 0, 0, 10 - ac, can, wt, c)
322 #define HELM(name,desc,kn,mgc,power,prob,delay,wt,cost,ac,can,metal,c)  \
323     ARMOR(name, desc, kn, mgc, 0, power, prob, delay, wt,  \
324           cost, ac, can, ARM_HELM, metal, c)
325 #define CLOAK(name,desc,kn,mgc,power,prob,delay,wt,cost,ac,can,metal,c)  \
326     ARMOR(name, desc, kn, mgc, 0, power, prob, delay, wt,  \
327           cost, ac, can, ARM_CLOAK, metal, c)
328 #define SHIELD(name,desc,kn,mgc,blk,power,prob,delay,wt,cost,ac,can,metal,c) \
329     ARMOR(name, desc, kn, mgc, blk, power, prob, delay, wt, \
330           cost, ac, can, ARM_SHIELD, metal, c)
331 #define GLOVES(name,desc,kn,mgc,power,prob,delay,wt,cost,ac,can,metal,c)  \
332     ARMOR(name, desc, kn, mgc, 0, power, prob, delay, wt,  \
333           cost, ac, can, ARM_GLOVES, metal, c)
334 #define BOOTS(name,desc,kn,mgc,power,prob,delay,wt,cost,ac,can,metal,c)  \
335     ARMOR(name, desc, kn, mgc, 0, power, prob, delay, wt,  \
336           cost, ac, can, ARM_BOOTS, metal, c)
337
338 /* helmets */
339 HELM("\83G\83\8b\83t\82Ì\8av\96X\8eq", "\8av\96X\8eq",
340      0, 0,           0,  6, 1,  3,  8,  9, 0, LEATHER, HI_LEATHER),
341 HELM("\83I\81[\83N\82Ì\8a\95", "\93S\82Ì\96X\8eq",
342      0, 0,           0,  6, 1, 30, 10,  9, 0, IRON, CLR_BLACK),
343 HELM("\83h\83\8f\81[\83t\82Ì\93S\8a\95", "\8cÅ\82¢\96X\8eq",
344      0, 0,           0,  6, 1, 40, 20,  8, 0, IRON, HI_METAL),
345 HELM("\83t\83B\83h\81[\83\89", None,
346      1, 0,           0,  0, 0,  3,  1, 10, 0, CLOTH, CLR_BROWN),
347 HELM("\82Æ\82ñ\82ª\82è\96X\8eq", "\89~\90\8d\8c`\82Ì\96X\8eq",
348      0, 1, CLAIRVOYANT,  3, 1,  4, 80, 10, 1, CLOTH, CLR_BLUE),
349         /* name coined by devteam; confers clairvoyance for wizards,
350            blocks clairvoyance if worn by role other than wizard */
351 HELM("\92á\94\\96X", "\89~\90\8d\8c`\82Ì\96X\8eq",
352      0, 1,           0,  3, 1,  4,  1, 10, 0, CLOTH, CLR_BLUE),
353 HELM("\82­\82Ú\82ñ\82¾\93ç", None,
354      1, 0,           0,  2, 0, 10,  8,  9, 0, IRON, CLR_BLACK),
355 /* with shuffled appearances... */
356 HELM("\8a\95", "\89H\8a\95",
357      0, 0,           0, 10, 1, 30, 10,  9, 0, IRON, HI_METAL),
358 HELM("\92m\90«\82Ì\8a\95", "\96Í\97l\93ü\82è\8a\95",
359      0, 1,           0,  6, 1, 50, 50,  9, 0, IRON, CLR_GREEN),
360 HELM("\8bt\91®\90«\82Ì\8a\95", "\82Æ\82³\82©\82Ì\8a\95",
361      0, 1,           0,  6, 1, 50, 50,  9, 0, IRON, HI_METAL),
362 HELM("\83e\83\8c\83p\83V\81[\82Ì\8a\95", "\96Ê\96j\95t\82«\82Ì\8a\95",
363      0, 1,     TELEPAT,  2, 1, 50, 50,  9, 0, IRON, HI_METAL),
364
365 /* suits of armor */
366 /*
367  * There is code in polyself.c that assumes (1) and (2).
368  * There is code in obj.h, objnam.c, mon.c, read.c that assumes (2).
369  *      (1) The dragon scale mails and the dragon scales are together.
370  *      (2) That the order of the dragon scale mail and dragon scales
371  *          is the same as order of dragons defined in monst.c.
372  */
373 #define DRGN_ARMR(name,mgc,power,cost,ac,color)  \
374     ARMOR(name, None, 1, mgc, 1, power, 0, 5, 40,  \
375           cost, ac, 0, ARM_SUIT, DRAGON_HIDE, color)
376 /* 3.4.1: dragon scale mail reclassified as "magic" since magic is
377    needed to create them */
378 DRGN_ARMR("\8aD\90F\83h\83\89\83S\83\93\82Ì\97Ø\8aZ",     1, ANTIMAGIC,  1200, 1, CLR_GRAY),
379 DRGN_ARMR("\8bâ\90F\83h\83\89\83S\83\93\82Ì\97Ø\8aZ",     1, REFLECTING, 1200, 1, DRAGON_SILVER),
380 #if 0 /* DEFERRED */
381 DRGN_ARMR("shimmering dragon scale mail", 1, DISPLACED, 1200, 1, CLR_CYAN),
382 #endif
383 DRGN_ARMR("\90Ô\90F\83h\83\89\83S\83\93\82Ì\97Ø\8aZ",     1, FIRE_RES,    900, 1, CLR_RED),
384 DRGN_ARMR("\94\92\83h\83\89\83S\83\93\82Ì\97Ø\8aZ",       1, COLD_RES,    900, 1, CLR_WHITE),
385 DRGN_ARMR("\83I\83\8c\83\93\83W\83h\83\89\83S\83\93\82Ì\97Ø\8aZ", 1, SLEEP_RES,   900, 1, CLR_ORANGE),
386 DRGN_ARMR("\8d\95\83h\83\89\83S\83\93\82Ì\97Ø\8aZ",       1, DISINT_RES, 1200, 1, CLR_BLACK),
387 DRGN_ARMR("\90Â\83h\83\89\83S\83\93\82Ì\97Ø\8aZ",       1, SHOCK_RES,   900, 1, CLR_BLUE),
388 DRGN_ARMR("\97Î\83h\83\89\83S\83\93\82Ì\97Ø\8aZ",       1, POISON_RES,  900, 1, CLR_GREEN),
389 DRGN_ARMR("\89©\90F\83h\83\89\83S\83\93\82Ì\97Ø\8aZ",     1, ACID_RES,    900, 1, CLR_YELLOW),
390 /* For now, only dragons leave these. */
391 /* 3.4.1: dragon scales left classified as "non-magic"; they confer
392    magical properties but are produced "naturally" */
393 DRGN_ARMR("\8aD\90F\83h\83\89\83S\83\93\82Ì\97Ø",       0, ANTIMAGIC,   700, 7, CLR_GRAY),
394 DRGN_ARMR("\8bâ\90F\83h\83\89\83S\83\93\82Ì\97Ø",       0, REFLECTING,  700, 7, DRAGON_SILVER),
395 #if 0 /* DEFERRED */
396 DRGN_ARMR("shimmering dragon scales",  0, DISPLACED,   700, 7, CLR_CYAN),
397 #endif
398 DRGN_ARMR("\90Ô\90F\83h\83\89\83S\83\93\82Ì\97Ø",       0, FIRE_RES,    500, 7, CLR_RED),
399 DRGN_ARMR("\94\92\83h\83\89\83S\83\93\82Ì\97Ø",         0, COLD_RES,    500, 7, CLR_WHITE),
400 DRGN_ARMR("\83I\83\8c\83\93\83W\83h\83\89\83S\83\93\82Ì\97Ø",   0, SLEEP_RES,   500, 7, CLR_ORANGE),
401 DRGN_ARMR("\8d\95\83h\83\89\83S\83\93\82Ì\97Ø",         0, DISINT_RES,  700, 7, CLR_BLACK),
402 DRGN_ARMR("\90Â\83h\83\89\83S\83\93\82Ì\97Ø",         0, SHOCK_RES,   500, 7, CLR_BLUE),
403 DRGN_ARMR("\97Î\83h\83\89\83S\83\93\82Ì\97Ø",         0, POISON_RES,  500, 7, CLR_GREEN),
404 DRGN_ARMR("\89©\90F\83h\83\89\83S\83\93\82Ì\97Ø",       0, ACID_RES,    500, 7, CLR_YELLOW),
405 #undef DRGN_ARMR
406 /* other suits */
407 ARMOR("\8d|\93S\82Ì\8aZ", None,
408       1, 0, 1,  0, 44, 5, 450, 600,  3, 2,  ARM_SUIT, IRON, HI_METAL),
409 ARMOR("\90\85\8f»\82Ì\8aZ", None,
410       1, 0, 1,  0, 10, 5, 450, 820,  3, 2,  ARM_SUIT, GLASS, CLR_WHITE),
411 ARMOR("\90Â\93º\82Ì\8aZ", None,
412       1, 0, 1,  0, 25, 5, 450, 400,  4, 1,  ARM_SUIT, COPPER, HI_COPPER),
413 ARMOR("\93S\95Ð\82Ì\8aZ", None,
414       1, 0, 1,  0, 62, 5, 400,  80,  4, 1,  ARM_SUIT, IRON, HI_METAL),
415 ARMOR("\91Ñ\8bà\82Ì\8aZ", None,
416       1, 0, 1,  0, 72, 5, 350,  90,  4, 1,  ARM_SUIT, IRON, HI_METAL),
417 ARMOR("\83h\83\8f\81[\83t\82Ì\83~\83X\83\8a\83\8b\95\9e", None,
418       1, 0, 0,  0, 10, 1, 150, 240,  4, 2,  ARM_SUIT, MITHRIL, HI_SILVER),
419 ARMOR("\83G\83\8b\83t\82Ì\83~\83X\83\8a\83\8b\95\9e", None,
420       1, 0, 0,  0, 15, 1, 150, 240,  5, 2,  ARM_SUIT, MITHRIL, HI_SILVER),
421 ARMOR("\8d½\82©\82½\82Ñ\82ç", None,
422       1, 0, 0,  0, 72, 5, 300,  75,  5, 1,  ARM_SUIT, IRON, HI_METAL),
423 ARMOR("\83I\81[\83N\82Ì\8d½\82©\82½\82Ñ\82ç", "\91e\96\96\82È\8d½\82©\82½\82Ñ\82ç",
424       0, 0, 0,  0, 20, 5, 300,  75,  6, 1,  ARM_SUIT, IRON, CLR_BLACK),
425 ARMOR("\97Ø\82Ì\8aZ", None,
426       1, 0, 0,  0, 72, 5, 250,  45,  6, 1,  ARM_SUIT, IRON, HI_METAL),
427 ARMOR("\95e\95t\82«\8av\8aZ", None,
428       1, 0, 0,  0, 72, 3, 200,  15,  7, 1,  ARM_SUIT, LEATHER, HI_LEATHER),
429 ARMOR("\93S\8aÂ\82Ì\8aZ", None,
430       1, 0, 0,  0, 72, 5, 250, 100,  7, 1,  ARM_SUIT, IRON, HI_METAL),
431 ARMOR("\83I\81[\83N\82Ì\93S\8aÂ\82Ì\8aZ", "\91e\96\96\82È\93S\8aÂ\82Ì\8aZ",
432       0, 0, 0,  0, 20, 5, 250,  80,  8, 1,  ARM_SUIT, IRON, CLR_BLACK),
433 ARMOR("\8av\8aZ", None,
434       1, 0, 0,  0, 82, 3, 150,   5,  8, 1,  ARM_SUIT, LEATHER, HI_LEATHER),
435 ARMOR("\8av\82Ì\95\9e", None,
436       1, 0, 0,  0, 12, 0,  30,  10,  9, 0,  ARM_SUIT, LEATHER, CLR_BLACK),
437
438 /* shirts */
439 ARMOR("\83A\83\8d\83n\83V\83\83\83c", None,
440       1, 0, 0,  0,  8, 0,   5,   3, 10, 0,  ARM_SHIRT, CLOTH, CLR_MAGENTA),
441 ARMOR("\82s\83V\83\83\83c", None,
442       1, 0, 0,  0,  2, 0,   5,   2, 10, 0,  ARM_SHIRT, CLOTH, CLR_WHITE),
443
444 /* cloaks */
445 CLOAK("\83~\83C\83\89\82Ì\95ï\91Ñ", None,
446       1, 0,          0,  0, 0,  3,  2, 10, 1,  CLOTH, CLR_GRAY),
447         /* worn mummy wrapping blocks invisibility */
448 CLOAK("\83G\83\8b\83t\82Ì\83N\83\8d\81[\83N", "\89A\8bC\82È\8aO\93\85",
449       0, 1,    STEALTH,  8, 0, 10, 60,  9, 1,  CLOTH, CLR_BLACK),
450 CLOAK("\83I\81[\83N\82Ì\83N\83\8d\81[\83N", "\91e\96\96\82È\83}\83\93\83g",
451       0, 0,          0,  8, 0, 10, 40, 10, 1,  CLOTH, CLR_BLACK),
452 CLOAK("\83h\83\8f\81[\83t\82Ì\83N\83\8d\81[\83N", "\83t\81[\83h\82Â\82«\82Ì\83N\83\8d\81[\83N",
453       0, 0,          0,  8, 0, 10, 50, 10, 1,  CLOTH, HI_CLOTH),
454 CLOAK("\96h\90\85\83N\83\8d\81[\83N", "\82Â\82é\82Â\82é\82µ\82½\83N\83\8d\81[\83N",
455       0, 0,          0,  8, 0, 10, 50,  9, 2,  CLOTH, HI_CLOTH),
456 CLOAK("\83\8d\81[\83u", None,
457       1, 1,          0,  3, 0, 15, 50,  8, 2,  CLOTH, CLR_RED),
458         /* robe was adopted from slash'em, where it's worn as a suit
459            rather than as a cloak and there are several variations */
460 CLOAK("\98B\8bà\8fp\82Ì\8ed\8e\96\92\85", "\83G\83v\83\8d\83\93",
461       0, 1, POISON_RES,  9, 0, 10, 50,  9, 1,  CLOTH, CLR_WHITE),
462 CLOAK("\8av\82Ì\83N\83\8d\81[\83N", None,
463       1, 0,          0,  8, 0, 15, 40,  9, 1,  LEATHER, CLR_BROWN),
464 /* with shuffled appearances... */
465 CLOAK("\8eç\82è\82Ì\83N\83\8d\81[\83N", "\82Ú\82ë\82Ú\82ë\82Ì\83P\81[\83v",
466       0, 1, PROTECTION,  9, 0, 10, 50,  7, 3,  CLOTH, HI_CLOTH),
467         /* cloak of protection is now the only item conferring MC 3 */
468 CLOAK("\93§\96¾\82Ì\83N\83\8d\81[\83N", "\83I\83y\83\89\83N\83\8d\81[\83N",
469       0, 1,      INVIS, 10, 0, 10, 60,  9, 1,  CLOTH, CLR_BRIGHT_MAGENTA),
470 CLOAK("\96\82\96@\82ð\96h\82®\83N\83\8d\81[\83N", "\91\95\8fü\97p\82Ì\8aO\93\85",
471       0, 1,  ANTIMAGIC,  2, 0, 10, 60,  9, 1,  CLOTH, CLR_WHITE),
472         /*  'cope' is not a spelling mistake... leave it be */
473 CLOAK("\8c\89e\82Ì\83N\83\8d\81[\83N", "\95z\90Ø\82ê",
474       0, 1,  DISPLACED, 10, 0, 10, 50,  9, 1,  CLOTH, HI_CLOTH),
475
476 /* shields */
477 SHIELD("\8f¬\82³\82È\8f\82", None,
478        1, 0, 0,          0, 6, 0,  30,  3, 9, 0,  WOOD, HI_WOOD),
479 SHIELD("\83G\83\8b\83t\82Ì\8f\82", "\90Â\82Æ\97Î\82Ì\8f\82",
480        0, 0, 0,          0, 2, 0,  40,  7, 8, 0,  WOOD, CLR_GREEN),
481 SHIELD("\83E\83\8b\83N\81E\83n\83C\82Ì\8f\82", "\94\92\82Ì\8eè\82Ì\8f\82",
482        0, 0, 0,          0, 2, 0,  50,  7, 9, 0,  IRON, HI_METAL),
483 SHIELD("\83I\81[\83N\82Ì\8f\82", "\90Ô\82¢\96Ú\82Ì\8f\82",
484        0, 0, 0,          0, 2, 0,  50,  7, 9, 0,  IRON, CLR_RED),
485 SHIELD("\91å\82«\82È\8f\82", None,
486        1, 0, 1,          0, 7, 0, 100, 10, 8, 0,  IRON, HI_METAL),
487 SHIELD("\83h\83\8f\81[\83t\82Ì\8aÛ\8f\82", "\91å\82«\82È\8aÛ\8f\82",
488        0, 0, 0,          0, 4, 0, 100, 10, 8, 0,  IRON, HI_METAL),
489 SHIELD("\94½\8eË\82Ì\8f\82", "\8bâ\90F\82Ì\96\81\82©\82ê\82½\8f\82",
490        0, 1, 0, REFLECTING, 3, 0,  50, 50, 8, 0,  SILVER, HI_SILVER),
491
492 /* gloves */
493 /* These have their color but not material shuffled, so the IRON must
494  * stay CLR_BROWN (== HI_LEATHER) even though it's normally either
495  * HI_METAL or CLR_BLACK.  All have shuffled descriptions.
496  */
497 GLOVES("\8av\82Ì\8eè\91Ü", "\8cÃ\82¢\8eè\91Ü",
498        0, 0,        0, 16, 1, 10,  8, 9, 0,  LEATHER, HI_LEATHER),
499 GLOVES("\82¨\8eè\8bÊ\82Ì\8f¬\8eè", "\8bl\82ß\82à\82Ì\82Ì\82 \82é\8eè\91Ü",
500        0, 1, FUMBLING,  8, 1, 10, 50, 9, 0,  LEATHER, HI_LEATHER),
501 GLOVES("\97Í\82Ì\8f¬\8eè", "\8fæ\94n\97p\82Ì\8eè\91Ü",
502        0, 1,        0,  8, 1, 30, 50, 9, 0,  IRON, CLR_BROWN),
503 GLOVES("\8aí\97p\82³\82Ì\8f¬\8eè", "\83t\83F\83\93\83V\83\93\83O\82Ì\8f¬\8eè",
504        0, 1,        0,  8, 1, 10, 50, 9, 0,  LEATHER, HI_LEATHER),
505
506 /* boots */
507 BOOTS("\82©\82©\82Æ\82Ì\92á\82¢\8cC", "\8eU\95à\97p\82Ì\8cC",
508       0, 0,          0, 25, 2, 10,  8, 9, 0, LEATHER, HI_LEATHER),
509 BOOTS("\93S\82Ì\8cC", "\8cÅ\82¢\8cC",
510       0, 0,          0,  7, 2, 50, 16, 8, 0, IRON, HI_METAL),
511 BOOTS("\82©\82©\82Æ\82Ì\8d\82\82¢\8cC", "\8cR\91à\8cC",
512       0, 0,          0, 15, 2, 20, 12, 8, 0, LEATHER, HI_LEATHER),
513 /* with shuffled appearances... */
514 BOOTS("èè\91Ê\93V\82Ì\8cC", "\90í\93¬\8cC",
515       0, 1,       FAST, 12, 2, 20, 50, 9, 0, LEATHER, HI_LEATHER),
516 BOOTS("\90\85\8fã\95à\8ds\82Ì\8cC", "\83W\83\83\83\93\83O\83\8b\82Ì\8cC",
517       0, 1,   WWALKING, 12, 2, 15, 50, 9, 0, LEATHER, HI_LEATHER),
518 BOOTS("\94ò\82Ñ\92µ\82Ë\82é\8cC", "\83n\83C\83L\83\93\83O\82Ì\8cC",
519       0, 1,    JUMPING, 12, 2, 20, 50, 9, 0, LEATHER, HI_LEATHER),
520 BOOTS("\83G\83\8b\83t\82Ì\8cC", "\92·\8cC",
521       0, 1,    STEALTH, 12, 2, 15,  8, 9, 0, LEATHER, HI_LEATHER),
522 BOOTS("\8fR\82è\8b\93\82°\8cC", "\97¯\82ß\8bà\82Ì\82 \82é\8cC",
523       0, 1,          0, 12, 2, 50,  8, 9, 0, IRON, CLR_BROWN),
524         /* CLR_BROWN for same reason as gauntlets of power */
525 BOOTS("\82Â\82Ü\82¸\82«\82Ì\8cC", "\8fæ\94n\97p\82Ì\8cC",
526       0, 1,   FUMBLING, 12, 2, 20, 30, 9, 0, LEATHER, HI_LEATHER),
527 BOOTS("\95\82\97V\82Ì\8cC", "\90á\8cC",
528       0, 1, LEVITATION, 12, 2, 15, 30, 9, 0, LEATHER, HI_LEATHER),
529 #undef HELM
530 #undef CLOAK
531 #undef SHIELD
532 #undef GLOVES
533 #undef BOOTS
534 #undef ARMOR
535
536 /* rings ... */
537 #define RING(name,stone,power,cost,mgc,spec,mohs,metal,color) \
538     OBJECT(OBJ(name, stone),                                          \
539            BITS(0, 0, spec, 0, mgc, spec, 0, 0, 0,                    \
540                 HARDGEM(mohs), 0, P_NONE, metal),                     \
541            power, RING_CLASS, 0, 0, 3, cost, 0, 0, 0, 0, 15, color)
542 RING("\8fü\82è\82Ì\8ew\97Ö", "\96Ø\82Ì\8ew\97Ö",
543      ADORNED,                  100, 1, 1, 2, WOOD, HI_WOOD),
544 RING("\8b­\82³\82Ì\8ew\97Ö", "\89Ô\9b¼\8aâ\82Ì\8ew\97Ö",
545      0,                        150, 1, 1, 7, MINERAL, HI_MINERAL),
546 RING("\91Ì\97Í\82Ì\8ew\97Ö", "\83I\83p\81[\83\8b\82Ì\8ew\97Ö",
547      0,                        150, 1, 1, 7, MINERAL, HI_MINERAL),
548 RING("\96½\92\86\82Ì\8ew\97Ö", "\93y\82Ì\8ew\97Ö",
549      0,                        150, 1, 1, 4, MINERAL, CLR_RED),
550 RING("\8dU\8c\82\82Ì\8ew\97Ö", "\8eX\8cè\82Ì\8ew\97Ö",
551      0,                        150, 1, 1, 4, MINERAL, CLR_ORANGE),
552 RING("\8eç\82è\82Ì\8ew\97Ö", "\8d\95\82ß\82Ì\82¤\82Ì\8ew\97Ö",
553      PROTECTION,               100, 1, 1, 7, MINERAL, CLR_BLACK),
554         /* 'PROTECTION' intrinsic enhances MC from worn armor by +1,
555            regardless of ring's enchantment; wearing a second ring of
556            protection (or even one ring of protection combined with
557            cloak of protection) doesn't give a second MC boost */
558 RING("\89ñ\95\9c\82Ì\8ew\97Ö", "\8c\8e\92·\90Î\82Ì\8ew\97Ö",
559      REGENERATION,             200, 1, 0,  6, MINERAL, HI_MINERAL),
560 RING("\92T\8dõ\82Ì\8ew\97Ö", "\8cÕ\96Ú\90Î\82Ì\8ew\97Ö",
561      SEARCHING,                200, 1, 0,  6, GEMSTONE, CLR_BROWN),
562 RING("\94E\82Ñ\82Ì\8ew\97Ö", "\82Ð\82·\82¢\82Ì\8ew\97Ö",
563      STEALTH,                  100, 1, 0,  6, GEMSTONE, CLR_GREEN),
564 RING("\94\\97Í\88Û\8e\9d\82Ì\8ew\97Ö", "\90Â\93º\82Ì\8ew\97Ö",
565      FIXED_ABIL,               100, 1, 0,  4, COPPER, HI_COPPER),
566 RING("\95\82\97V\82Ì\8ew\97Ö", "\82ß\82Ì\82¤\82Ì\8ew\97Ö",
567      LEVITATION,               200, 1, 0,  7, GEMSTONE, CLR_RED),
568 RING("\8bQ\89ì\82Ì\8ew\97Ö", "\83g\83p\81[\83Y\82Ì\8ew\97Ö",
569      HUNGER,                   100, 1, 0,  8, GEMSTONE, CLR_CYAN),
570 RING("\94½\8a´\82Ì\8ew\97Ö", "\83T\83t\83@\83C\83A\82Ì\8ew\97Ö",
571      AGGRAVATE_MONSTER,        150, 1, 0,  9, GEMSTONE, CLR_BLUE),
572 RING("\91\88\82¢\82Ì\8ew\97Ö", "\83\8b\83r\81[\82Ì\8ew\97Ö",
573      CONFLICT,                 300, 1, 0,  9, GEMSTONE, CLR_RED),
574 RING("\8cx\8d\90\82Ì\8ew\97Ö", "\83_\83C\83\84\83\82\83\93\83h\82Ì\8ew\97Ö",
575      WARNING,                  100, 1, 0, 10, GEMSTONE, CLR_WHITE),
576 RING("\91Ï\93Å\82Ì\8ew\97Ö", "\90^\8eì\82Ì\8ew\97Ö",
577      POISON_RES,               150, 1, 0,  4, BONE, CLR_WHITE),
578 RING("\91Ï\89\8a\82Ì\8ew\97Ö", "\93S\82Ì\8ew\97Ö",
579      FIRE_RES,                 200, 1, 0,  5, IRON, HI_METAL),
580 RING("\91Ï\97â\82Ì\8ew\97Ö", "\90^èJ\82Ì\8ew\97Ö",
581      COLD_RES,                 150, 1, 0,  4, COPPER, HI_COPPER),
582 RING("\91Ï\93d\82Ì\8ew\97Ö", "\93º\82Ì\8ew\97Ö",
583      SHOCK_RES,                150, 1, 0,  3, COPPER, HI_COPPER),
584 RING("\8e©\97R\8ds\93®\82Ì\8ew\97Ö", "\82Ë\82\82ê\82½\8ew\97Ö",
585      FREE_ACTION,              200, 1, 0,  6, IRON, HI_METAL),
586 RING("\8fÁ\89»\95s\97Ç\82Ì\8ew\97Ö", "\8d|\93S\82Ì\8ew\97Ö",
587      SLOW_DIGESTION,           200, 1, 0,  8, IRON, HI_METAL),
588 RING("\8fu\8aÔ\88Ú\93®\82Ì\8ew\97Ö", "\8bâ\82Ì\8ew\97Ö",
589      TELEPORT,                 200, 1, 0,  3, SILVER, HI_SILVER),
590 RING("\8fu\8aÔ\88Ú\93®\90§\8cä\82Ì\8ew\97Ö", "\8bà\82Ì\8ew\97Ö",
591      TELEPORT_CONTROL,         300, 1, 0,  3, GOLD, HI_GOLD),
592 RING("\95Ï\89»\82Ì\8ew\97Ö", "\8fÛ\89å\82Ì\8ew\97Ö",
593      POLYMORPH,                300, 1, 0,  4, BONE, CLR_WHITE),
594 RING("\95Ï\89»\90§\8cä\82Ì\8ew\97Ö", "\83G\83\81\83\89\83\8b\83h\82Ì\8ew\97Ö",
595      POLYMORPH_CONTROL,        300, 1, 0,  8, GEMSTONE, CLR_BRIGHT_GREEN),
596 RING("\93§\96¾\82Ì\8ew\97Ö", "\90j\8bà\82Ì\8ew\97Ö",
597      INVIS,                    150, 1, 0,  5, IRON, HI_METAL),
598 RING("\89Â\8e\8b\82Ì\8ew\97Ö", "\8d¥\96ñ\8ew\97Ö",
599      SEE_INVIS,                150, 1, 0,  5, IRON, HI_METAL),
600 RING("\91Ï\95Ï\89»\89ö\95¨\82Ì\8ew\97Ö", "\8cõ\82é\8ew\97Ö",
601      PROT_FROM_SHAPE_CHANGERS, 100, 1, 0,  5, IRON, CLR_BRIGHT_CYAN),
602 #undef RING
603
604 /* amulets ... - THE Amulet comes last because it is special */
605 #define AMULET(name,desc,power,prob) \
606     OBJECT(OBJ(name, desc),                                            \
607            BITS(0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, P_NONE, IRON),        \
608            power, AMULET_CLASS, prob, 0, 20, 150, 0, 0, 0, 0, 20, HI_METAL)
609 AMULET("\89\93\8e\8b\82Ì\96\82\8f\9c\82¯",     "\89~\8c`\82Ì\96\82\8f\9c\82¯", TELEPAT, 175),
610 AMULET("\96½\82Ì\96\82\8f\9c\82¯",       "\8b\85\8c`\82Ì\96\82\8f\9c\82¯", LIFESAVED, 75),
611 AMULET("\8di\8eE\82Ì\96\82\8f\9c\82¯",     "\97\91\8c^\82Ì\96\82\8f\9c\82¯", STRANGLED, 135),
612 AMULET("\88À\96°\82Ì\96\82\8f\9c\82¯",   "\8eO\8ap\8c`\82Ì\96\82\8f\9c\82¯", SLEEPY, 135),
613 AMULET("\91Ï\93Å\82Ì\96\82\8f\9c\82¯",   "\8el\8ap\90\8d\82Ì\96\82\8f\9c\82¯", POISON_RES, 165),
614 AMULET("\90«\93]\8a·\82Ì\96\82\8f\9c\82¯",   "\8el\8ap\82Ì\96\82\8f\9c\82¯", 0, 130),
615 AMULET("\96³\95Ï\89»\82Ì\96\82\8f\9c\82¯",   "\89\9a\96Ê\82Ì\96\82\8f\9c\82¯", UNCHANGING, 45),
616 AMULET("\94½\8eË\82Ì\96\82\8f\9c\82¯",   "\98Z\8ap\8c`\82Ì\96\82\8f\9c\82¯", REFLECTING, 75),
617 AMULET("\8cÄ\8bz\82Ì\96\82\8f\9c\82¯",   "\94ª\8ap\8c`\82Ì\96\82\8f\9c\82¯", MAGICAL_BREATHING, 65),
618 /* fixed descriptions; description duplication is deliberate;
619  * fake one must come before real one because selection for
620  * description shuffling stops when a non-magic amulet is encountered
621  */
622 OBJECT(OBJ("\8bU\95¨\82Ì\83C\83F\83\93\83_\81[\82Ì\96\82\8f\9c\82¯",
623            "\83C\83F\83\93\83_\81[\82Ì\96\82\8f\9c\82¯"),
624        BITS(0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, PLASTIC),
625        0, AMULET_CLASS, 0, 0, 20, 0, 0, 0, 0, 0, 1, HI_METAL),
626 OBJECT(OBJ("\83C\83F\83\93\83_\81[\82Ì\96\82\8f\9c\82¯", /* note: description == name */
627            "\83C\83F\83\93\83_\81[\82Ì\96\82\8f\9c\82¯"),
628        BITS(0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, MITHRIL),
629        0, AMULET_CLASS, 0, 0, 20, 30000, 0, 0, 0, 0, 20, HI_METAL),
630 #undef AMULET
631
632 /* tools ... */
633 /* tools with weapon characteristics come last */
634 #define TOOL(name,desc,kn,mrg,mgc,chg,prob,wt,cost,mat,color) \
635     OBJECT(OBJ(name, desc),                                             \
636            BITS(kn, mrg, chg, 0, mgc, chg, 0, 0, 0, 0, 0, P_NONE, mat), \
637            0, TOOL_CLASS, prob, 0, wt, cost, 0, 0, 0, 0, wt, color)
638 #define CONTAINER(name,desc,kn,mgc,chg,prob,wt,cost,mat,color) \
639     OBJECT(OBJ(name, desc),                                             \
640            BITS(kn, 0, chg, 1, mgc, chg, 0, 0, 0, 0, 0, P_NONE, mat),   \
641            0, TOOL_CLASS, prob, 0, wt, cost, 0, 0, 0, 0, wt, color)
642 #define WEPTOOL(name,desc,kn,mgc,bi,prob,wt,cost,sdam,ldam,hitbon,sub,mat,clr)\
643     OBJECT(OBJ(name, desc),                                             \
644            BITS(kn, 0, 1, 0, mgc, 1, 0, 0, bi, 0, hitbon, sub, mat),    \
645            0, TOOL_CLASS, prob, 0, wt, cost, sdam, ldam, hitbon, 0, wt, clr)
646 /* containers */
647 CONTAINER("\91å\94 ",                    None, 1, 0, 0, 40, 350,   8, WOOD, HI_WOOD),
648 CONTAINER("\95ó\94 ",                    None, 1, 0, 0, 35, 600,  16, WOOD, HI_WOOD),
649 CONTAINER("\83A\83C\83X\83{\83b\83N\83X",          None, 1, 0, 0,  5, 900,  42, PLASTIC, CLR_WHITE),
650 CONTAINER("\91Ü",                      "\8a\93", 0, 0, 0, 35,  15,   2, CLOTH, HI_CLOTH),
651 CONTAINER("\96h\90\85\91Ü",                  "\8a\93", 0, 0, 0,  5,  15, 100, CLOTH, HI_CLOTH),
652 CONTAINER("\8cy\97Ê\89»\82Ì\8a\93",              "\8a\93", 0, 1, 0, 20,  15, 100, CLOTH, HI_CLOTH),
653 CONTAINER("\83g\83\8a\83b\83N\82Ì\8a\93",            "\8a\93", 0, 1, 1, 20,  15, 100, CLOTH, HI_CLOTH),
654 #undef CONTAINER
655
656 /* lock opening tools */
657 TOOL("\96\9c\94\\8c®",                       "\8c®", 0, 0, 0, 0, 80,  3, 10, IRON, HI_METAL),
658 TOOL("\8c®\8aJ\82¯\8aí\8bï",                   None, 1, 0, 0, 0, 60,  4, 20, IRON, HI_METAL),
659 TOOL("\83N\83\8c\83W\83b\83g\83J\81[\83h",             None, 1, 0, 0, 0, 15,  1, 10, PLASTIC, CLR_WHITE),
660 /* light sources */
661 TOOL("\8fb\8e\89\82Ì\82ë\82¤\82»\82­",         "\82ë\82¤\82»\82­", 0, 1, 0, 0, 20,  2, 10, WAX, CLR_WHITE),
662 TOOL("\96¨\98X\82Ì\82ë\82¤\82»\82­",         "\82ë\82¤\82»\82­", 0, 1, 0, 0,  5,  2, 20, WAX, CLR_WHITE),
663 TOOL("\90^èJ\82Ì\83\89\83\93\83^\83\93",               None, 1, 0, 0, 0, 30, 30, 12, COPPER, CLR_YELLOW),
664 TOOL("\83I\83C\83\8b\83\89\83\93\83v",             "\83\89\83\93\83v", 0, 0, 0, 0, 45, 20, 10, COPPER, CLR_YELLOW),
665 TOOL("\96\82\96@\82Ì\83\89\83\93\83v",             "\83\89\83\93\83v", 0, 0, 1, 0, 15, 20, 50, COPPER, CLR_YELLOW),
666 /* other tools */
667 TOOL("\8d\82\89¿\82È\83J\83\81\83\89",                 None, 1, 0, 0, 1, 15, 12,200, PLASTIC, CLR_BLACK),
668 TOOL("\8b¾",                       "\83K\83\89\83X", 0, 0, 0, 0, 45, 13, 10, GLASS, HI_SILVER),
669 TOOL("\90\85\8f»\8bÊ",               "\83K\83\89\83X\82Ì\8b\85", 0, 0, 1, 1, 15,150, 60, GLASS, HI_GLASS),
670 TOOL("\83\8c\83\93\83Y",                       None, 1, 0, 0, 0,  5,  3, 80, GLASS, HI_GLASS),
671 TOOL("\96Ú\89B\82µ",                       None, 1, 0, 0, 0, 50,  2, 20, CLOTH, CLR_BLACK),
672 TOOL("\83^\83I\83\8b",                       None, 1, 0, 0, 0, 50,  2, 50, CLOTH, CLR_MAGENTA),
673 TOOL("\88Æ",                           None, 1, 0, 0, 0,  5,200,150, LEATHER, HI_LEATHER),
674 TOOL("\95R",                           None, 1, 0, 0, 0, 65, 12, 20, LEATHER, HI_LEATHER),
675 TOOL("\92®\90f\8aí",                       None, 1, 0, 0, 0, 25,  4, 75, IRON, HI_METAL),
676 TOOL("\8aÊ\8bl\8dì\90¬\93¹\8bï",                 None, 1, 0, 0, 1, 15,100, 30, IRON, HI_METAL),
677 TOOL("\8aÊ\90Ø\82è",                       None, 1, 0, 0, 0, 35,  4, 30, IRON, HI_METAL),
678 TOOL("\8e\89\82Ì\8aÊ",                       None, 1, 0, 0, 1, 15, 15, 20, IRON, HI_METAL),
679 TOOL("\90l\8c`",                         None, 1, 0, 1, 0, 25, 50, 80, MINERAL, HI_MINERAL),
680         /* monster type specified by obj->corpsenm */
681 TOOL("\96\82\96@\82Ì\83}\81[\83J",                 None, 1, 0, 1, 1, 15,  2, 50, PLASTIC, CLR_RED),
682 /* traps */
683 TOOL("\92n\97\8b",                         None, 1, 0, 0, 0, 0, 300,180, IRON, CLR_RED),
684 TOOL("\8cF\82Ìã©",                       None, 1, 0, 0, 0, 0, 200, 60, IRON, HI_METAL),
685 /* instruments;
686    "If tin whistles are made out of tin, what do they make foghorns out of?" */
687 TOOL("\83u\83\8a\83L\82Ì\93J",                   "\93J", 0, 0, 0, 0,100, 3, 10, METAL, HI_METAL),
688 TOOL("\96\82\96@\82Ì\93J",                     "\93J", 0, 0, 1, 0, 30, 3, 10, METAL, HI_METAL),
689 TOOL("\96Ø\82Ì\83t\83\8b\81[\83g",           "\83t\83\8b\81[\83g", 0, 0, 0, 0,  4, 5, 12, WOOD, HI_WOOD),
690 TOOL("\96\82\96@\82Ì\83t\83\8b\81[\83g",         "\83t\83\8b\81[\83g", 0, 0, 1, 1,  2, 5, 36, WOOD, HI_WOOD),
691 TOOL("\8d×\8dH\82Ì\82Ù\82Ç\82±\82³\82ê\82½\83z\83\8b\83\93", "\83z\83\8b\83\93", 0, 0, 0, 0,  5, 18, 15, BONE, CLR_WHITE),
692 TOOL("\90\81\90á\82Ì\83z\83\8b\83\93",             "\83z\83\8b\83\93", 0, 0, 1, 1,  2, 18, 50, BONE, CLR_WHITE),
693 TOOL("\89\8a\82Ì\83z\83\8b\83\93",               "\83z\83\8b\83\93", 0, 0, 1, 1,  2, 18, 50, BONE, CLR_WHITE),
694 TOOL("\8cb\82Ý\82Ì\83z\83\8b\83\93",             "\83z\83\8b\83\93", 0, 0, 1, 1,  2, 18, 50, BONE, CLR_WHITE),
695         /* horn, but not an instrument */
696 TOOL("\96Ø\82Ì\92G\8bÕ",                   "\92G\8bÕ", 0, 0, 0, 0,  4, 30, 50, WOOD, HI_WOOD),
697 TOOL("\96\82\96@\82Ì\92G\8bÕ",                 "\92G\8bÕ", 0, 0, 1, 1,  2, 30, 50, WOOD, HI_WOOD),
698 TOOL("\83x\83\8b",                         None, 1, 0, 0, 0,  2, 30, 50, COPPER, HI_COPPER),
699 TOOL("\83\89\83b\83p",                       None, 1, 0, 0, 0,  4, 10, 15, COPPER, HI_COPPER),
700 TOOL("\8av\82Ì\91¾\8cÛ",                   "\91¾\8cÛ", 0, 0, 0, 0,  4, 25, 25, LEATHER, HI_LEATHER),
701 TOOL("\92n\90k\82Ì\91¾\8cÛ",                 "\91¾\8cÛ", 0, 0, 1, 1,  2, 25, 25, LEATHER, HI_LEATHER),
702 /* tools useful as weapons */
703 WEPTOOL("\82Â\82é\82Í\82µ", None,
704         1, 0, 0, 20, 100,  50,  6,  3, WHACK,  P_PICK_AXE, IRON, HI_METAL),
705 WEPTOOL("\82Ð\82Á\82©\82¯\96_", "\93S\82Ì\83t\83b\83N",
706         0, 0, 0,  5,  30,  50,  2,  6, WHACK,  P_FLAIL,    IRON, HI_METAL),
707 WEPTOOL("\83\86\83j\83R\81[\83\93\82Ì\8ap", None,
708         1, 1, 1,  0,  20, 100, 12, 12, PIERCE, P_UNICORN_HORN,
709                                                            BONE, CLR_WHITE),
710         /* 3.4.1: unicorn horn left classified as "magic" */
711 /* two unique tools;
712  * not artifacts, despite the comment which used to be here
713  */
714 OBJECT(OBJ("\8bF\82è\82Ì\90C\91ä", "\90C\91ä"),
715        BITS(0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, P_NONE, GOLD),
716        0, TOOL_CLASS, 0, 0, 10, 5000, 0, 0, 0, 0, 200, HI_GOLD),
717 OBJECT(OBJ("\8aJ\95ú\82Ì\83x\83\8b", "\8bâ\82Ì\83x\83\8b"),
718        BITS(0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, P_NONE, SILVER),
719        0, TOOL_CLASS, 0, 0, 10, 5000, 0, 0, 0, 0, 50, HI_SILVER),
720 #undef TOOL
721 #undef WEPTOOL
722
723 /* Comestibles ... */
724 #define FOOD(name, prob, delay, wt, unk, tin, nutrition, color)         \
725     OBJECT(OBJ(name, None),                                       \
726            BITS(1, 1, unk, 0, 0, 0, 0, 0, 0, 0, 0, P_NONE, tin), 0,     \
727            FOOD_CLASS, prob, delay, wt, nutrition / 20 + 5, 0, 0, 0, 0, \
728            nutrition, color)
729 /* All types of food (except tins & corpses) must have a delay of at least 1.
730  * Delay on corpses is computed and is weight dependant.
731  * Domestic pets prefer tripe rations above all others.
732  * Fortune cookies can be read, using them up without ingesting them.
733  * Carrots improve your vision.
734  * +0 tins contain monster meat.
735  * +1 tins (of spinach) make you stronger (like Popeye).
736  * Meatballs/sticks/rings are only created from objects via stone to flesh.
737  */
738 /* meat */
739 FOOD("\8a£\82µ\93÷",           140,  2, 10, 0, FLESH, 200, CLR_BROWN),
740 FOOD("\8e\80\91Ì",               0,  1,  0, 0, FLESH,   0, CLR_BROWN),
741 FOOD("\97\91",                85,  1,  1, 1, FLESH,  80, CLR_WHITE),
742 FOOD("\83~\81[\83g\83{\81[\83\8b",       0,  1,  1, 0, FLESH,   5, CLR_BROWN),
743 FOOD("\83~\81[\83g\83X\83e\83B\83b\83N",   0,  1,  1, 0, FLESH,   5, CLR_BROWN),
744 FOOD("\91å\82«\82È\93÷\82Ì\82©\82½\82Ü\82è", 0, 20,400, 0, FLESH,2000, CLR_BROWN),
745 /* special case because it's not mergable */
746 OBJECT(OBJ("meat ring", None),
747        BITS(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, FLESH),
748        0, FOOD_CLASS, 0, 1, 5, 1, 0, 0, 0, 0, 5, CLR_BROWN),
749 /* pudding 'corpses' will turn into these and combine;
750    must be in same order as the pudding monsters */
751 FOOD("\8aD\90F\83E\81[\83Y\82Ì\89ò",     0,  2, 20, 0, FLESH,  20, CLR_GRAY),
752 FOOD("\92\83\90F\83v\83\8a\83\93\82Ì\89ò",     0,  2, 20, 0, FLESH,  20, CLR_BROWN),
753 FOOD("\97Î\83X\83\89\83C\83\80\82Ì\89ò",     0,  2, 20, 0, FLESH,  20, CLR_GREEN),
754 FOOD("\8d\95\83v\83\8a\83\93\82Ì\89ò",       0,  2, 20, 0, FLESH,  20, CLR_BLACK),
755
756 /* fruits & veggies */
757 FOOD("\83\8f\83J\83\81",             0,  1,  1, 0, VEGGY,  30, CLR_GREEN),
758 FOOD("\83\86\81[\83J\83\8a\82Ì\97t",       3,  1,  1, 0, VEGGY,  30, CLR_GREEN),
759 FOOD("\82è\82ñ\82²",            15,  1,  2, 0, VEGGY,  50, CLR_RED),
760 FOOD("\83I\83\8c\83\93\83W",          10,  1,  2, 0, VEGGY,  80, CLR_ORANGE),
761 FOOD("\97m\83i\83V",            10,  1,  2, 0, VEGGY,  50, CLR_BRIGHT_GREEN),
762 FOOD("\83\81\83\8d\83\93",            10,  1,  5, 0, VEGGY, 100, CLR_BRIGHT_GREEN),
763 FOOD("\83o\83i\83i",            10,  1,  2, 0, VEGGY,  80, CLR_YELLOW),
764 FOOD("\82É\82ñ\82\82ñ",          15,  1,  2, 0, VEGGY,  50, CLR_ORANGE),
765 FOOD("\83g\83\8a\83J\83u\83g",         7,  1,  1, 0, VEGGY,  40, CLR_GREEN),
766 FOOD("\82É\82ñ\82É\82­",           7,  1,  1, 0, VEGGY,  40, CLR_WHITE),
767 /* name of slime mold is changed based on player's OPTION=fruit:something
768    and bones data might have differently named ones from prior games */
769 FOOD("\82Ë\82Î\82Ë\82Î\83J\83r",      75,  1,  5, 0, VEGGY, 250, HI_ORGANIC),
770
771 /* people food */
772 FOOD("\83\8d\83C\83\84\83\8b\83[\83\8a\81[",     0,  1,  2, 0, VEGGY, 200, CLR_YELLOW),
773 FOOD("\83N\83\8a\81[\83\80\83p\83C",      25,  1, 10, 0, VEGGY, 100, CLR_WHITE),
774 FOOD("\83L\83\83\83\93\83f\83B",        13,  1,  2, 0, VEGGY, 100, CLR_BROWN),
775 FOOD("\90è\82¢\83N\83b\83L\81[",      55,  1,  1, 0, VEGGY,  40, CLR_YELLOW),
776 FOOD("\83p\83\93\83P\81[\83L",        25,  2,  2, 0, VEGGY, 200, CLR_YELLOW),
777 FOOD("\83\8c\83\93\83o\83X",          20,  2,  5, 0, VEGGY, 800, CLR_WHITE),
778 FOOD("\83N\83\89\83\80",            20,  3, 15, 0, VEGGY, 600, HI_ORGANIC),
779 FOOD("\90H\97¿",             380,  5, 20, 0, VEGGY, 800, HI_ORGANIC),
780 FOOD("\82j\83\8c\81[\83V\83\87\83\93",       0,  1, 10, 0, VEGGY, 400, HI_ORGANIC),
781 FOOD("\82b\83\8c\81[\83V\83\87\83\93",       0,  1, 10, 0, VEGGY, 300, HI_ORGANIC),
782 /* tins have type specified by obj->spe (+1 for spinach, other implies
783    flesh; negative specifies preparation method {homemade,boiled,&c})
784    and by obj->corpsenm (type of monster flesh) */
785 FOOD("\8aÊ",                  75,  0, 10, 1, METAL,   0, HI_METAL),
786 #undef FOOD
787
788 /* potions ... */
789 #define POTION(name,desc,mgc,power,prob,cost,color) \
790     OBJECT(OBJ(name, desc),                                             \
791            BITS(0, 1, 0, 0, mgc, 0, 0, 0, 0, 0, 0, P_NONE, GLASS),      \
792            power, POTION_CLASS, prob, 0, 20, cost, 0, 0, 0, 0, 10, color)
793 POTION("\94\\97Í\8al\93¾\82Ì\96ò",     "\83\8b\83r\81[\90F\82Ì\96ò",  1, 0, 42, 300, CLR_RED),
794 POTION("\94\\97Í\89ñ\95\9c\82Ì\96ò",     "\83s\83\93\83N\90F\82Ì\96ò",  1, 0, 40, 100, CLR_BRIGHT_MAGENTA),
795 POTION("\8d¬\97\90\82Ì\96ò",       "\83I\83\8c\83\93\83W\90F\82Ì\96ò",  1, CONFUSION, 42, 100, CLR_ORANGE),
796 POTION("\96Ó\96Ú\82Ì\96ò",             "\89©\90F\82Ì\96ò",  1, BLINDED, 40, 150, CLR_YELLOW),
797 POTION("\96\83á\83\82Ì\96ò",     "\83G\83\81\83\89\83\8b\83h\90F\82Ì\96ò",  1, 0, 42, 300, CLR_BRIGHT_GREEN),
798 POTION("\89Á\91¬\82Ì\96ò",           "\88Ã\97Î\90F\82Ì\96ò",  1, FAST, 42, 200, CLR_GREEN),
799 POTION("\95\82\97V\82Ì\96ò",         "\83V\83A\83\93\90F\82Ì\96ò",  1, LEVITATION, 42, 200, CLR_CYAN),
800 POTION("\8c\8ao\82Ì\96ò",             "\90\85\90F\82Ì\96ò",  1, HALLUC, 40, 100, CLR_CYAN),
801 POTION("\93§\96¾\82Ì\96ò",       "\96¾\82é\82¢\90Â\90F\82Ì\96ò",  1, INVIS, 40, 150, CLR_BRIGHT_BLUE),
802 POTION("\89Â\8e\8b\82Ì\96ò",       "\83}\83[\83\93\83_\90F\82Ì\96ò",  1, SEE_INVIS, 42, 50, CLR_MAGENTA),
803 POTION("\89ñ\95\9c\82Ì\96ò",           "\90Ô\8e\87\90F\82Ì\96ò",  1, 0, 57, 100, CLR_MAGENTA),
804 POTION("\92´\89ñ\95\9c\82Ì\96ò",         "\88Ã\8a\8c\90F\82Ì\96ò",  1, 0, 47, 100, CLR_RED),
805 POTION("\83\8c\83x\83\8b\83A\83b\83v\82Ì\96ò", "\83~\83\8b\83N\90F\82Ì\96ò",  1, 0, 20, 300, CLR_WHITE),
806 POTION("\8c[\96Ö\82Ì\96ò",     "\89Q\82ð\8aª\82¢\82Ä\82¢\82é\96ò",  1, 0, 20, 200, CLR_BROWN),
807 POTION("\89ö\95¨\82ð\92T\82·\96ò",   "\96A\82¾\82Á\82Ä\82¢\82é\96ò",  1, 0, 40, 150, CLR_WHITE),
808 POTION("\95¨\91Ì\82ð\92T\82·\96ò",   "\89\8c\82ª\82Å\82Ä\82¢\82é\96ò",  1, 0, 42, 150, CLR_GRAY),
809 POTION("\96\82\97Í\82Ì\96ò",         "\93Ü\82Á\82Ä\82¢\82é\96ò",  1, 0, 42, 150, CLR_WHITE),
810 POTION("\90\87\96°\82Ì\96ò",       "\95¦\93«\82µ\82Ä\82¢\82é\96ò",  1, 0, 42, 100, CLR_GRAY),
811 POTION("\8a®\91S\89ñ\95\9c\82Ì\96ò",           "\8d\95\82¢\96ò",  1, 0, 10, 200, CLR_BLACK),
812 POTION("\95Ï\89»\82Ì\96ò",             "\8bà\90F\82Ì\96ò",  1, 0, 10, 200, CLR_YELLOW),
813 POTION("\90\8c\82Á\82Ï\82ç\82¢\82Ì\96ò",       "\92\83\90F\82Ì\96ò",  0, 0, 42,  50, CLR_BROWN),
814 POTION("\95a\8bC\82Ì\96ò",       "\94­\96A\82µ\82Ä\82¢\82é\96ò",  0, 0, 42,  50, CLR_CYAN),
815 POTION("\83t\83\8b\81[\83c\83W\83\85\81[\83X", "\89A\8bC\82È\90F\82Ì\96ò",  0, 0, 42,  50, CLR_BLACK),
816 POTION("\8e_\82Ì\96ò",                 "\94\92\82¢\96ò",  0, 0, 10, 250, CLR_WHITE),
817 POTION("\96û",                   "\94Z\8d\95\82Ì\96ò",  0, 0, 30, 250, CLR_BROWN),
818 /* fixed description
819  */
820 POTION("\90\85",                   "\96³\90F\82Ì\96ò",  0, 0, 92, 100, CLR_CYAN),
821 #undef POTION
822
823 /* scrolls ... */
824 #define SCROLL(name,text,mgc,prob,cost) \
825     OBJECT(OBJ(name, text),                                           \
826            BITS(0, 1, 0, 0, mgc, 0, 0, 0, 0, 0, 0, P_NONE, PAPER),    \
827            0, SCROLL_CLASS, prob, 0, 5, cost, 0, 0, 0, 0, 6, HI_PAPER)
828 SCROLL("\8aZ\82É\96\82\96@\82ð\82©\82¯\82é\8aª\95¨",     "\81w\82Ö\82ë\82Ö\82ë\82Á\82·\81x\82Æ\8f\91\82©\82ê\82½\8aª\95¨",  1,  63,  80),
829 SCROLL("\8aZ\82ð\94j\89ó\82·\82é\8aª\95¨",       "\81w\82Ï\81[\82é\82 \82Ï\82Á\82¿\81x\82Æ\8f\91\82©\82ê\82½\8aª\95¨",  1,  45, 100),
830 SCROLL("\89ö\95¨\82ð\8d¬\97\90\82³\82¹\82é\8aª\95¨", "\81w\82¹\82Ô\82ñ\82·\82¬\82å\82´\81[\81x\82Æ\8f\91\82©\82ê\82½\8aª\95¨",  1,  53, 100),
831 SCROLL("\89ö\95¨\82ð\8b¯\82¦\82³\82¹\82é\8aª\95¨",     "\81w\82Ñ\81[\82¦\82·\82Å\81[\81x\82Æ\8f\91\82©\82ê\82½\8aª\95¨",  1,  35, 100),
832 SCROLL("\89ð\8eô\82Ì\8aª\95¨",                 "\81w\82¨\82ë\82©\82Ô\81[\81x\82Æ\8f\91\82©\82ê\82½\8aª\95¨",  1,  65,  80),
833 SCROLL("\95\90\8aí\82É\96\82\96@\82ð\82©\82¯\82é\8aª\95¨", "\81w\82 \82ç\82Ù\82ç\82³\82Á\82³\81x\82Æ\8f\91\82©\82ê\82½\8aª\95¨",  1,  80,  60),
834 SCROLL("\89ö\95¨\82ð\8dì\82é\8aª\95¨",             "\81w\82è\82È\82Á\82­\82·\81x\82Æ\8f\91\82©\82ê\82½\8aª\95¨",  1,  45, 200),
835 SCROLL("\89ö\95¨\82ð\8e\94\82¢\82È\82ç\82·\8aª\95¨",       "\81w\82°\82ë\82°\81[\82ë\81x\82Æ\8f\91\82©\82ê\82½\8aª\95¨",  1,  15, 200),
836 SCROLL("\8bs\8eE\82Ì\8aª\95¨",         "\81w\82Î\82­\82µ\82å\82¤\82à\82ñ\82¾\82¢\81x\82Æ\8f\91\82©\82ê\82½\8aª\95¨",  1,  15, 300),
837 SCROLL("\8cõ\82Ì\8aª\95¨",               "\81w\82¿\82¥\82Á\82­\82ß\82¢\82Æ\81x\82Æ\8f\91\82©\82ê\82½\8aª\95¨",  1,  90,  50),
838 SCROLL("\8fu\8aÔ\88Ú\93®\82Ì\8aª\95¨",       "\81w\82¨\81[\82­\82·\82¾\81[\82Ñ\81[\81x\82Æ\8f\91\82©\82ê\82½\8aª\95¨",  1,  55, 100),
839 SCROLL("\8bà\89Ý\82ð\92T\82·\8aª\95¨",           "\81w\82©\82Ë\82©\82Ë\82©\82Ë\81x\82Æ\8f\91\82©\82ê\82½\8aª\95¨",  1,  33, 100),
840 SCROLL("\90H\97¿\82ð\92T\82·\8aª\95¨",         "\81w\82¨\82Ô\82¿\82¯\82¢\82¼\82¤\81x\82Æ\8f\91\82©\82ê\82½\8aª\95¨",  1,  25, 100),
841 SCROLL("\8e¯\95Ê\82Ì\8aª\95¨",                   "\81w\82­\82Á\82­\81[\81x\82Æ\8f\91\82©\82ê\82½\8aª\95¨",  1, 180,  20),
842 SCROLL("\92n\90}\82Ì\8aª\95¨",                 "\81w\82\82á\82¢\82·\82Æ\81x\82Æ\8f\91\82©\82ê\82½\8aª\95¨",  1,  45, 100),
843 SCROLL("\8bL\89¯\91r\8e¸\82Ì\8aª\95¨",             "\81w\82Ü\82¦\82ð\82Ý\82ë\81x\82Æ\8f\91\82©\82ê\82½\8aª\95¨",  1,  35, 200),
844 SCROLL("\89\8a\82Ì\8aª\95¨",             "\81w\82Ç\82Á\82­\82è\82Ñ\82ñ\82«\81[\81x\82Æ\8f\91\82©\82ê\82½\8aª\95¨",  1,  30, 100),
845 SCROLL("\91å\92n\82Ì\8aª\95¨",         "\81w\82æ\82µ\82Ì\82â\82¬\82ã\82Ç\81[\82ñ\81x\82Æ\8f\91\82©\82ê\82½\8aª\95¨",  1,  18, 200),
846 SCROLL("\94±\82Ì\8aª\95¨",                 "\81w\82·\82Ä\81[\82«\82Ý\82á\81x\82Æ\8f\91\82©\82ê\82½\8aª\95¨",  1,  15, 300),
847 SCROLL("\8f[\93U\82Ì\8aª\95¨",               "\81w\82\82á\82¢\82µ\82å\82­\81x\82Æ\8f\91\82©\82ê\82½\8aª\95¨",  1,  15, 300),
848 SCROLL("\88«\8fL\89_\82Ì\8aª\95¨",           "\81w\82¿\82á\82ñ\82Ò\82¨\81`\82ñ\81x\82Æ\8f\91\82©\82ê\82½\8aª\95¨",  1,  15, 300),
849     /* Extra descriptions, shuffled into use at start of new game.
850      * Code in win/share/tilemap.c depends on SCR_STINKING_CLOUD preceding
851      * these and on how many of them there are.  If a real scroll gets added
852      * after stinking cloud or the number of extra descriptions changes,
853      * tilemap.c must be modified to match.
854      */
855 SCROLL(None,       "\81w\82Í\82É\82á\81`\82ñ\81x\82Æ\8f\91\82©\82ê\82½\8aª\95¨",  1,   0, 100),
856 SCROLL(None,       "\81w\82Û\82¿\82Á\82Æ\82È\81x\82Æ\8f\91\82©\82ê\82½\8aª\95¨",  1,   0, 100),
857 SCROLL(None, "\81w\82µ\82Ñ\82Ñ\82ñ\82µ\82Ñ\82Ñ\82ñ\81x\82Æ\8f\91\82©\82ê\82½\8aª\95¨",  1,   0, 100),
858 SCROLL(None,     "\81w\82¤\82µ\82ë\82ð\82Ý\82ë\81x\82Æ\8f\91\82©\82ê\82½\8aª\95¨",  1,   0, 100),
859 SCROLL(None,         "\81wETAOIN SHRDLU\81x\82Æ\8f\91\82©\82ê\82½\8aª\95¨",  1,   0, 100),
860 SCROLL(None,           "\81wLOREM IPSUM\81x\82Æ\8f\91\82©\82ê\82½\8aª\95¨",  1,   0, 100),
861 SCROLL(None,                 "\81wFNORD\81x\82Æ\8f\91\82©\82ê\82½\8aª\95¨",  1,   0, 100), /* Illuminati */
862 SCROLL(None,               "\81wKO BATE\81x\82Æ\8f\91\82©\82ê\82½\8aª\95¨",  1,   0, 100), /* Kurd Lasswitz */
863 SCROLL(None,         "\81wABRA KA DABRA\81x\82Æ\8f\91\82©\82ê\82½\8aª\95¨",  1,   0, 100), /* traditional incantation */
864 SCROLL(None,          "\81wASHPD SODALG\81x\82Æ\8f\91\82©\82ê\82½\8aª\95¨",  1,   0, 100), /* Portal */
865 SCROLL(None,               "\81wZLORFIK\81x\82Æ\8f\91\82©\82ê\82½\8aª\95¨",  1,   0, 100), /* Zak McKracken */
866 SCROLL(None,         "\81wGNIK SISI VLE\81x\82Æ\8f\91\82©\82ê\82½\8aª\95¨",  1,   0, 100), /* Zak McKracken */
867 SCROLL(None,       "\81wHAPAX LEGOMENON\81x\82Æ\8f\91\82©\82ê\82½\8aª\95¨",  1,   0, 100),
868 SCROLL(None,     "\81wEIRIS SAZUN IDISI\81x\82Æ\8f\91\82©\82ê\82½\8aª\95¨",  1,   0, 100), /* Merseburg Incantations */
869 SCROLL(None,       "\81wPHOL ENDE WODAN\81x\82Æ\8f\91\82©\82ê\82½\8aª\95¨",  1,   0, 100), /* Merseburg Incantations */
870 SCROLL(None,                 "\81wGHOTI\81x\82Æ\8f\91\82©\82ê\82½\8aª\95¨",  1,   0, 100), /* pronounced as 'fish',
871                                                         George Bernard Shaw */
872 SCROLL(None, "\81wMAPIRO MAHAMA DIROMAT\81x\82Æ\8f\91\82©\82ê\82½\8aª\95¨", 1, 0, 100), /* Wizardry */
873 SCROLL(None,     "\81wVAS CORP BET MANI\81x\82Æ\8f\91\82©\82ê\82½\8aª\95¨",  1,   0, 100), /* Ultima */
874 SCROLL(None,               "\81wXOR OTA\81x\82Æ\8f\91\82©\82ê\82½\8aª\95¨",  1,   0, 100), /* Aarne Haapakoski */
875 SCROLL(None,    "\81wSTRC PRST SKRZ KRK\81x\82Æ\8f\91\82©\82ê\82½\8aª\95¨",  1,   0, 100), /* Czech and Slovak
876                                                         tongue-twister */
877     /* These must come last because they have special fixed descriptions.
878      */
879 #ifdef MAIL
880 SCROLL("\8eè\8e\86\82Ì\8aª\95¨",         "\8fÁ\88ó\82Ì\89\9f\82³\82ê\82½\8aª\95¨",  0,   0,   0),
881 #endif
882 SCROLL("\94\92\8e\86\82Ì\8aª\95¨",           "\83\89\83x\83\8b\82Ì\82È\82¢\8aª\95¨",  0,  28,  60),
883 #undef SCROLL
884
885 /* spellbooks ... */
886     /* Expanding beyond 52 spells would require changes in spellcasting
887      * or imposition of a limit on number of spells hero can know because
888      * they are currently assigned successive letters, a-zA-Z, when learned.
889      * [The existing spell sorting capability could conceivably be extended
890      * to enable moving spells from beyond Z to within it, bumping others
891      * out in the process, allowing more than 52 spells be known but keeping
892      * only 52 be castable at any given time.]
893      */
894 #define SPELL(name,desc,sub,prob,delay,level,mgc,dir,color)  \
895     OBJECT(OBJ(name, desc),                                             \
896            BITS(0, 0, 0, 0, mgc, 0, 0, 0, 0, 0, dir, sub, PAPER),       \
897            0, SPBOOK_CLASS, prob, delay, 50, level * 100,               \
898            0, 0, 0, level, 20, color)
899 /* Spellbook description normally refers to book covers (primarily color).
900    Parchment and vellum would never be used for such, but rather than
901    eliminate those, finagle their definitions to refer to the pages
902    rather than the cover.  They are made from animal skin (typically of
903    a goat or sheep) and books using them for pages generally need heavy
904    covers with straps or clamps to tightly close the book in order to
905    keep the pages flat.  (However, a wooden cover might itself be covered
906    by a sheet of parchment, making this become less of an exception.  Also,
907    changing the internal composition from paper to leather makes eating a
908    parchment or vellum spellbook break vegetarian conduct, as it should.) */
909 #define PAPER LEATHER /* override enum for use in SPELL() expansion */
910 SPELL("\8c\8a\8c@\82è\82Ì\96\82\96@\8f\91",   "\97r\94ç\8e\86\82Ì\96\82\96@\8f\91",
911       P_MATTER_SPELL,      20,  6, 5, 1, RAY, HI_LEATHER),
912 SPELL("\96î\82Ì\96\82\96@\8f\91",       "\8eq\8b\8d\94ç\82Ì\96\82\96@\8f\91",
913       P_ATTACK_SPELL,      45,  2, 2, 1, RAY, HI_LEATHER),
914 #undef PAPER /* revert to normal material */
915 SPELL("\89Î\82Ì\8bÊ\82Ì\96\82\96@\8f\91",   "\82Ú\82ë\82Ú\82ë\82Ì\96\82\96@\8f\91",
916       P_ATTACK_SPELL,      20,  4, 4, 1, RAY, HI_PAPER),
917 SPELL("\97â\8bC\82Ì\96\82\96@\8f\91",     "\83y\81[\83W\82Ì\90Ü\82ç\82ê\82½\96\82\96@\8f\91",
918       P_ATTACK_SPELL,      10,  7, 4, 1, RAY, HI_PAPER),
919 SPELL("\96°\82è\82Ì\96\82\96@\8f\91",     "\82Ü\82¾\82ç\82Ì\96\82\96@\8f\91",
920       P_ENCHANTMENT_SPELL, 50,  1, 1, 1, RAY, HI_PAPER),
921 SPELL("\8e\80\82Ì\8ew\82Ì\96\82\96@\8f\91",   "\82æ\82²\82ê\82½\96\82\96@\8f\91",
922       P_ATTACK_SPELL,       5, 10, 7, 1, RAY, HI_PAPER),
923 SPELL("\93\94\82è\82Ì\96\82\96@\8f\91",     "\95z\92n\82Ì\96\82\96@\8f\91",
924       P_DIVINATION_SPELL,  45,  1, 1, 1, NODIR, HI_CLOTH),
925 SPELL("\89ö\95¨\82ð\92T\82·\96\82\96@\8f\91", "leathery",
926       P_DIVINATION_SPELL,  43,  1, 1, 1, NODIR, HI_LEATHER),
927 SPELL("\89ñ\95\9c\82Ì\96\82\96@\8f\91",     "\94\92\82¢\96\82\96@\8f\91",
928       P_HEALING_SPELL,     40,  2, 1, 1, IMMEDIATE, CLR_WHITE),
929 SPELL("\8aJ\8fù\82Ì\96\82\96@\8f\91",     "\83s\83\93\83N\90F\82Ì\96\82\96@\8f\91",
930       P_MATTER_SPELL,      35,  1, 1, 1, IMMEDIATE, CLR_BRIGHT_MAGENTA),
931 SPELL("\8fÕ\8c\82\82Ì\96\82\96@\8f\91",     "\90Ô\82¢\96\82\96@\8f\91",
932       P_ATTACK_SPELL,      35,  2, 1, 1, IMMEDIATE, CLR_RED),
933 SPELL("\8d¬\97\90\82Ì\96\82\96@\8f\91",     "\83I\83\8c\83\93\83W\90F\82Ì\96\82\96@\8f\91",
934       P_ENCHANTMENT_SPELL, 30,  2, 2, 1, IMMEDIATE, CLR_ORANGE),
935 SPELL("\96Ó\96Ú\82ð\96ü\82·\96\82\96@\8f\91", "\89©\90F\82¢\96\82\96@\8f\91",
936       P_HEALING_SPELL,     25,  2, 2, 1, IMMEDIATE, CLR_YELLOW),
937 SPELL("\92E\97Í\82Ì\96\82\96@\8f\91",     "\83r\83\8d\81[\83h\82Ì\96\82\96@\8f\91",
938       P_ATTACK_SPELL,      10,  2, 2, 1, IMMEDIATE, CLR_MAGENTA),
939 SPELL("\8b\8d\95à\82Ì\96\82\96@\8f\91",     "\92W\97Î\90F\82Ì\96\82\96@\8f\91",
940       P_ENCHANTMENT_SPELL, 30,  2, 2, 1, IMMEDIATE, CLR_BRIGHT_GREEN),
941 SPELL("\8e{\8fù\82Ì\96\82\96@\8f\91",     "\94Z\97Î\90F\82Ì\96\82\96@\8f\91",
942       P_MATTER_SPELL,      30,  3, 2, 1, IMMEDIATE, CLR_GREEN),
943 SPELL("\89ö\95¨\82ð\91¢\82é\96\82\96@\8f\91", "\90Â\97Î\90F\82Ì\96\82\96@\8f\91",
944       P_CLERIC_SPELL,      35,  3, 2, 1, NODIR, CLR_BRIGHT_CYAN),
945 SPELL("\90H\97¿\82ð\92T\82·\96\82\96@\8f\91", "\83V\83A\83\93\90F\82Ì\96\82\96@\8f\91",
946       P_DIVINATION_SPELL,  30,  3, 2, 1, NODIR, CLR_CYAN),
947 SPELL("\8b°\95|\82Ì\96\82\96@\8f\91",     "\92W\90Â\82Ì\96\82\96@\8f\91",
948       P_ENCHANTMENT_SPELL, 25,  3, 3, 1, NODIR, CLR_BRIGHT_BLUE),
949 SPELL("\90ç\97¢\8aá\82Ì\96\82\96@\8f\91",   "\94Z\90Â\82Ì\96\82\96@\8f\91",
950       P_DIVINATION_SPELL,  15,  3, 3, 1, NODIR, CLR_BLUE),
951 SPELL("\95a\8bC\82ð\96ü\82·\96\82\96@\8f\91", "\97\95\90F\82Ì\96\82\96@\8f\91",
952       P_HEALING_SPELL,     32,  3, 3, 1, NODIR, CLR_BLUE),
953 SPELL("\96£\97¹\82Ì\96\82\96@\8f\91",     "\83}\83[\83\93\83_\90F\82Ì\96\82\96@\8f\91",
954       P_ENCHANTMENT_SPELL, 20,  3, 3, 1, IMMEDIATE, CLR_MAGENTA),
955 SPELL("\91¬\8dU\82Ì\96\82\96@\8f\91",     "\8e\87\90F\82Ì\96\82\96@\8f\91",
956       P_ESCAPE_SPELL,      33,  4, 3, 1, NODIR, CLR_MAGENTA),
957 SPELL("\97ì\8a´\82Ì\96\82\96@\8f\91",     "\83X\83~\83\8c\90F\82Ì\96\82\96@\8f\91",
958       P_DIVINATION_SPELL,  20,  4, 3, 1, NODIR, CLR_MAGENTA),
959 SPELL("\95\82\97V\82Ì\96\82\96@\8f\91",     "\89©\8a\8c\90F\82Ì\96\82\96@\8f\91",
960       P_ESCAPE_SPELL,      20,  4, 4, 1, NODIR, CLR_BROWN),
961 SPELL("\92´\89ñ\95\9c\82Ì\96\82\96@\8f\91",   "\83\89\83V\83\83\82Ì\96\82\96@\8f\91",
962       P_HEALING_SPELL,     27,  5, 3, 1, IMMEDIATE, CLR_GREEN),
963 SPELL("\94\\97Í\89ñ\95\9c\82Ì\96\82\96@\8f\91", "\92W\92\83\90F\82Ì\96\82\96@\8f\91",
964       P_HEALING_SPELL,     25,  5, 4, 1, NODIR, CLR_BROWN),
965 SPELL("\93§\96¾\82Ì\96\82\96@\8f\91",     "\94Z\92\83\90F\82Ì\96\82\96@\8f\91",
966       P_ESCAPE_SPELL,      25,  5, 4, 1, NODIR, CLR_BROWN),
967 SPELL("\95ó\82ð\92T\82·\96\82\96@\8f\91",   "\8aD\90F\82Ì\96\82\96@\8f\91",
968       P_DIVINATION_SPELL,  20,  5, 4, 1, NODIR, CLR_GRAY),
969 SPELL("\89ð\8eô\82Ì\96\82\96@\8f\91",     "\82­\82µ\82á\82­\82µ\82á\82Ì\96\82\96@\8f\91",
970       P_CLERIC_SPELL,      25,  5, 3, 1, NODIR, HI_PAPER),
971 SPELL("\92n\90}\82Ì\96\82\96@\8f\91",     "\82Ù\82±\82è\82Á\82Û\82¢\96\82\96@\8f\91",
972       P_DIVINATION_SPELL,  18,  7, 5, 1, NODIR, HI_PAPER),
973 SPELL("\8e¯\95Ê\82Ì\96\82\96@\8f\91",     "\90Â\93º\82Ì\96\82\96@\8f\91",
974       P_DIVINATION_SPELL,  20,  6, 3, 1, NODIR, HI_COPPER),
975 SPELL("\91h\90\82Ì\96\82\96@\8f\91",     "\93º\82Ì\96\82\96@\8f\91",
976       P_CLERIC_SPELL,      16,  8, 6, 1, IMMEDIATE, HI_COPPER),
977 SPELL("\95Ï\89»\82Ì\96\82\96@\8f\91",     "\8bâ\82Ì\96\82\96@\8f\91",
978       P_MATTER_SPELL,      10,  8, 6, 1, IMMEDIATE, HI_SILVER),
979 SPELL("\8fu\8aÔ\88Ú\93®\82Ì\96\82\96@\8f\91", "\8bà\82Ì\96\82\96@\8f\91",
980       P_ESCAPE_SPELL,      15,  6, 6, 1, IMMEDIATE, HI_GOLD),
981 SPELL("\91¢\96\82\82Ì\96\82\96@\8f\91",     "\82«\82ç\82Ñ\82â\82©\82È\96\82\96@\8f\91",
982       P_CLERIC_SPELL,      10,  7, 6, 1, NODIR, CLR_WHITE),
983 SPELL("\96³\97Í\89»\82Ì\96\82\96@\8f\91",   "\8bP\82­\96\82\96@\8f\91",
984       P_MATTER_SPELL,      15,  8, 7, 1, IMMEDIATE, CLR_WHITE),
985 SPELL("\8eç\82è\82Ì\96\82\96@\8f\91",     "\89\94\90F\82Ì\96\82\96@\8f\91",
986       P_CLERIC_SPELL,      18,  3, 1, 1, NODIR, HI_PAPER),
987 SPELL("\92µ\96ô\82Ì\96\82\96@\8f\91",     "\94\96\82¢\90F\82Ì\96\82\96@\8f\91",
988       P_ESCAPE_SPELL,      20,  3, 1, 1, IMMEDIATE, HI_PAPER),
989 SPELL("\93î\89»\82Ì\96\82\96@\8f\91",     "\94Z\82¢\90F\82Ì\96\82\96@\8f\91",
990       P_HEALING_SPELL,     15,  1, 3, 1, IMMEDIATE, HI_PAPER),
991 #if 0 /* DEFERRED */
992 /* from slash'em, create a tame critter which explodes when attacking,
993    damaging adjacent creatures--friend or foe--and dying in the process */
994 SPELL("flame sphere",     "\96\83\82Ì\96\82\96@\8f\91",
995       P_MATTER_SPELL,      20,  2, 1, 1, NODIR, CLR_BROWN),
996 SPELL("freeze sphere",    "\8cÅ\82¢\95\\8e\86\82Ì\96\82\96@\8f\91",
997       P_MATTER_SPELL,      20,  2, 1, 1, NODIR, CLR_BROWN),
998 #endif
999 /* books with fixed descriptions
1000  */
1001 SPELL("\94\92\8e\86\82Ì\96\82\96@\8f\91", "\90^\82Á\94\92\82È\96\82\96@\8f\91", P_NONE, 18, 0, 0, 0, 0, HI_PAPER),
1002 /* tribute book for 3.6 */
1003 OBJECT(OBJ("\8f¬\90à", "\83y\81[\83p\81[\83o\83b\83N\82Ì\96\82\96@\8f\91"),
1004        BITS(0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, P_NONE, PAPER),
1005        0, SPBOOK_CLASS, 0, 0, 0, 20, 0, 0, 0, 1, 20, CLR_BRIGHT_BLUE),
1006 /* a special, one of a kind, spellbook */
1007 OBJECT(OBJ("\8e\80\8eÒ\82Ì\8f\91", "\83p\83s\83\8b\83X\82Ì\96\82\96@\8f\91"),
1008        BITS(0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, P_NONE, PAPER),
1009        0, SPBOOK_CLASS, 0, 0, 20, 10000, 0, 0, 0, 7, 20, HI_PAPER),
1010 #undef SPELL
1011
1012 /* wands ... */
1013 #define WAND(name,typ,prob,cost,mgc,dir,metal,color) \
1014     OBJECT(OBJ(name, typ),                                              \
1015            BITS(0, 0, 1, 0, mgc, 1, 0, 0, 0, 0, dir, P_NONE, metal),    \
1016            0, WAND_CLASS, prob, 0, 7, cost, 0, 0, 0, 0, 30, color)
1017 WAND("\93\94\82è\82Ì\8fñ",             "\83K\83\89\83X\82Ì\8fñ", 95, 100, 1, NODIR, GLASS, HI_GLASS),
1018 WAND("\94à\92T\8dõ\82Ì\8fñ",
1019                         "\83o\83\8b\83T\82Ì\8fñ", 50, 150, 1, NODIR, WOOD, HI_WOOD),
1020 WAND("\8c[\96Ö\82Ì\8fñ",               "\90\85\8f»\82Ì\8fñ", 15, 150, 1, NODIR, GLASS, HI_GLASS),
1021 WAND("\89ö\95¨\82ð\91¢\82é\8fñ",             "\95\96\82Ì\8fñ", 45, 200, 1, NODIR, WOOD, HI_WOOD),
1022 WAND("\8aè\82¢\82Ì\8fñ",                 "\8f¼\82Ì\8fñ",  5, 500, 1, NODIR, WOOD, HI_WOOD),
1023 WAND("\92P\82È\82é\8fñ",                 "\8a~\82Ì\8fñ", 25, 100, 0, IMMEDIATE, WOOD, HI_WOOD),
1024 WAND("\8fÕ\8c\82\82Ì\8fñ",               "\8d\95\92h\82Ì\8fñ", 75, 150, 1, IMMEDIATE, WOOD, HI_WOOD),
1025 WAND("\93§\96¾\89»\82Ì\8fñ",           "\91å\97\9d\90Î\82Ì\8fñ", 45, 150, 1, IMMEDIATE, MINERAL, HI_MINERAL),
1026 WAND("\8c¸\91¬\82Ì\8fñ",             "\83u\83\8a\83L\82Ì\8fñ", 50, 150, 1, IMMEDIATE, METAL, HI_METAL),
1027 WAND("\89Á\91¬\82Ì\8fñ",               "\90^èJ\82Ì\8fñ", 50, 150, 1, IMMEDIATE, COPPER, HI_COPPER),
1028 WAND("\91h\90\82Ì\8fñ",                 "\93º\82Ì\8fñ", 50, 150, 1, IMMEDIATE, COPPER, HI_COPPER),
1029 WAND("\95Ï\89»\82Ì\8fñ",                 "\8bâ\82Ì\8fñ", 45, 200, 1, IMMEDIATE, SILVER, HI_SILVER),
1030 WAND("\96³\97Í\89»\82Ì\8fñ",         "\83v\83\89\83`\83i\82Ì\8fñ", 45, 200, 1, IMMEDIATE, PLATINUM, CLR_WHITE),
1031 WAND("\8fu\8aÔ\88Ú\93®\82Ì\8fñ",     "\83C\83\8a\83W\83E\83\80\82Ì\8fñ", 45, 200, 1, IMMEDIATE, METAL,
1032                                                              CLR_BRIGHT_CYAN),
1033 WAND("\8aJ\8fù\82Ì\8fñ",               "\88\9f\89\94\82Ì\8fñ", 25, 150, 1, IMMEDIATE, METAL, HI_METAL),
1034 WAND("\8e{\8fù\82Ì\8fñ",       "\83A\83\8b\83~\83j\83E\83\80\82Ì\8fñ", 25, 150, 1, IMMEDIATE, METAL, HI_METAL),
1035 WAND("\92T\8d¸\82·\82é\8fñ",       "\83E\83\89\83j\83E\83\80\82Ì\8fñ", 30, 150, 1, IMMEDIATE, METAL, HI_METAL),
1036 WAND("\8c\8a\8c@\82è\82Ì\8fñ",               "\93S\82Ì\8fñ", 55, 150, 1, RAY, IRON, HI_METAL),
1037 WAND("\96î\82Ì\8fñ",                 "\8d|\93S\82Ì\8fñ", 50, 150, 1, RAY, IRON, HI_METAL),
1038 WAND("\89\8a\82Ì\8fñ",               "\98Z\8ap\8c`\82Ì\8fñ", 40, 175, 1, RAY, IRON, HI_METAL),
1039 WAND("\90\81\90á\82Ì\8fñ",                 "\92Z\82¢\8fñ", 40, 175, 1, RAY, IRON, HI_METAL),
1040 WAND("\96°\82è\82Ì\8fñ", "\83\8b\81[\83\93\95\8e\9a\82Ì\8f\91\82©\82ê\82½\8fñ", 50, 175, 1, RAY, IRON, HI_METAL),
1041 WAND("\8e\80\82Ì\8fñ",                   "\92·\82¢\8fñ",  5, 500, 1, RAY, IRON, HI_METAL),
1042 WAND("\97\8b\82Ì\8fñ",                 "\8bÈ\82Á\82½\8fñ", 40, 175, 1, RAY, IRON, HI_METAL),
1043 /* extra descriptions, shuffled into use at start of new game */
1044 WAND(None,                     "\93ñ\8d³\82Ì\8fñ",  0, 150, 1, 0, WOOD, HI_WOOD),
1045 WAND(None,     "\82­\82³\82Ñ\82Ì\91Å\82¿\82Â\82¯\82ç\82ê\82½\8fñ",  0, 150, 1, 0, IRON, HI_METAL),
1046 WAND(None,           "\95ó\90Î\82ª\96\84\82ß\82ç\82ê\82½\8fñ",  0, 150, 1, 0, IRON, HI_MINERAL),
1047 #undef WAND
1048
1049 /* coins ... - so far, gold is all there is */
1050 #define COIN(name,prob,metal,worth) \
1051     OBJECT(OBJ(name, None),                                        \
1052            BITS(0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, P_NONE, metal),    \
1053            0, COIN_CLASS, prob, 0, 1, worth, 0, 0, 0, 0, 0, HI_GOLD)
1054 COIN("\8bà\89Ý", 1000, GOLD, 1),
1055 #undef COIN
1056
1057 /* gems ... - includes stones and rocks but not boulders */
1058 #define GEM(name,desc,prob,wt,gval,nutr,mohs,glass,color) \
1059     OBJECT(OBJ(name, desc),                                             \
1060            BITS(0, 1, 0, 0, 0, 0, 0, 0, 0,                              \
1061                 HARDGEM(mohs), 0, -P_SLING, glass),                     \
1062            0, GEM_CLASS, prob, 0, 1, gval, 3, 3, 0, 0, nutr, color)
1063 #define ROCK(name,desc,kn,prob,wt,gval,sdam,ldam,mgc,nutr,mohs,glass,color) \
1064     OBJECT(OBJ(name, desc),                                             \
1065            BITS(kn, 1, 0, 0, mgc, 0, 0, 0, 0,                           \
1066                 HARDGEM(mohs), 0, -P_SLING, glass),                     \
1067            0, GEM_CLASS, prob, 0, wt, gval, sdam, ldam, 0, 0, nutr, color)
1068 GEM("\83f\83B\83\8a\83W\83E\83\80\82Ì\8c\8b\8f»", "\94\92\82¢\90Î",  2, 1, 4500, 15,  5, GEMSTONE, CLR_WHITE),
1069 GEM("\83_\83C\83\84\83\82\83\93\83h",       "\94\92\82¢\90Î",  3, 1, 4000, 15, 10, GEMSTONE, CLR_WHITE),
1070 GEM("\83\8b\83r\81[",             "\90Ô\82¢\90Î",  4, 1, 3500, 15,  9, GEMSTONE, CLR_RED),
1071 GEM("\9eò\90\85\8f»",           "\9eò\90F\82Ì\90Î",  3, 1, 3250, 15,  9, GEMSTONE, CLR_ORANGE),
1072 GEM("\83T\83t\83@\83C\83A",         "\90Â\82¢\90Î",  4, 1, 3000, 15,  9, GEMSTONE, CLR_BLUE),
1073 GEM("\8d\95\83I\83p\81[\83\8b",         "\8d\95\82¢\90Î",  3, 1, 2500, 15,  8, GEMSTONE, CLR_BLACK),
1074 GEM("\83G\83\81\83\89\83\8b\83h",         "\97Î\82Ì\90Î",  5, 1, 2500, 15,  8, GEMSTONE, CLR_GREEN),
1075 GEM("\83g\83\8b\83R\90Î",           "\97Î\82Ì\90Î",  6, 1, 2000, 15,  6, GEMSTONE, CLR_GREEN),
1076 GEM("\89©\90\85\8f»",           "\89©\90F\82¢\90Î",  4, 1, 1500, 15,  6, GEMSTONE, CLR_YELLOW),
1077 GEM("\83A\83N\83A\83}\83\8a\83\93",       "\97Î\82Ì\90Î",  6, 1, 1500, 15,  8, GEMSTONE, CLR_GREEN),
1078 GEM("àæàß",           "\92\83\8a\8c\90F\82Ì\90Î",  8, 1, 1000, 15,  2, GEMSTONE, CLR_BROWN),
1079 GEM("\83g\83p\81[\83Y",       "\92\83\8a\8c\90F\82Ì\90Î", 10, 1,  900, 15,  8, GEMSTONE, CLR_BROWN),
1080 GEM("\8d\95\8bÊ",               "\8d\95\82¢\90Î",  6, 1,  850, 15,  7, GEMSTONE, CLR_BLACK),
1081 GEM("\83I\83p\81[\83\8b",           "\94\92\82¢\90Î", 12, 1,  800, 15,  6, GEMSTONE, CLR_WHITE),
1082 GEM("\8bà\97Î\90Î",           "\89©\90F\82¢\90Î",  8, 1,  700, 15,  5, GEMSTONE, CLR_YELLOW),
1083 GEM("\83K\81[\83l\83b\83g",         "\90Ô\82¢\90Î", 12, 1,  700, 15,  7, GEMSTONE, CLR_RED),
1084 GEM("\83A\83\81\83W\83X\83g",         "\8e\87\82Ì\90Î", 14, 1,  600, 15,  7, GEMSTONE, CLR_MAGENTA),
1085 GEM("\83W\83\83\83X\83p\81[",         "\90Ô\82¢\90Î", 15, 1,  500, 15,  7, GEMSTONE, CLR_RED),
1086 GEM("\83t\83\8b\83I\83\89\83C\83g",       "\8e\87\82Ì\90Î", 15, 1,  400, 15,  4, GEMSTONE, CLR_MAGENTA),
1087 GEM("\8d\95à \90Î",             "\8d\95\82¢\90Î",  9, 1,  200, 15,  6, GEMSTONE, CLR_BLACK),
1088 GEM("\82ß\82Ì\82¤",           "\9eò\90F\82Ì\90Î", 12, 1,  200, 15,  6, GEMSTONE, CLR_ORANGE),
1089 GEM("\82Ð\82·\82¢",             "\97Î\82Ì\90Î", 10, 1,  300, 15,  6, GEMSTONE, CLR_GREEN),
1090 GEM("\94\92\82¢\83K\83\89\83X", "\94\92\82¢\90Î",
1091     77, 1, 0, 6, 5, GLASS, CLR_WHITE),
1092 GEM("\90Â\82¢\83K\83\89\83X", "\90Â\82¢\90Î",
1093     77, 1, 0, 6, 5, GLASS, CLR_BLUE),
1094 GEM("\90Ô\82¢\83K\83\89\83X", "\90Ô\82¢\90Î",
1095     77, 1, 0, 6, 5, GLASS, CLR_RED),
1096 GEM("\92\83\8a\8c\90F\82Ì\83K\83\89\83X", "\92\83\8a\8c\90F\82Ì\90Î",
1097     77, 1, 0, 6, 5, GLASS, CLR_BROWN),
1098 GEM("\9eò\90F\82Ì\83K\83\89\83X", "\9eò\90F\82Ì\90Î",
1099     76, 1, 0, 6, 5, GLASS, CLR_ORANGE),
1100 GEM("\89©\90F\82Ì\83K\83\89\83X", "\89©\90F\82¢\90Î",
1101     77, 1, 0, 6, 5, GLASS, CLR_YELLOW),
1102 GEM("\8d\95\90F\82Ì\83K\83\89\83X", "\8d\95\82¢\90Î",
1103     76, 1, 0, 6, 5, GLASS, CLR_BLACK),
1104 GEM("\97Î\82Ì\83K\83\89\83X", "\97Î\82Ì\90Î",
1105     77, 1, 0, 6, 5, GLASS, CLR_GREEN),
1106 GEM("\8e\87\82Ì\83K\83\89\83X", "\8e\87\82Ì\90Î",
1107     77, 1, 0, 6, 5, GLASS, CLR_MAGENTA),
1108
1109 /* Placement note: there is a wishable subrange for
1110  * "gray stones" in the o_ranges[] array in objnam.c
1111  * that is currently everything between luckstones and flint
1112  * (inclusive).
1113  */
1114 ROCK("\8dK\82¹\82Ì\90Î", "\8aD\90F\82Ì\95ó\90Î", 0,  10,  10, 60, 3, 3, 1, 10, 7, MINERAL, CLR_GRAY),
1115 ROCK("\8fd\82µ", "\8aD\90F\82Ì\95ó\90Î",     0,  10, 500,  1, 3, 3, 1, 10, 6, MINERAL, CLR_GRAY),
1116 ROCK("\8e\8e\8bà\90Î", "\8aD\90F\82Ì\95ó\90Î",   0,   8,  10, 45, 3, 3, 1, 10, 6, MINERAL, CLR_GRAY),
1117 ROCK("\89Î\91Å\82¿\90Î", "\8aD\90F\82Ì\95ó\90Î", 0,  10,  10,  1, 6, 6, 0, 10, 7, MINERAL, CLR_GRAY),
1118 ROCK("\90Î", None,               1, 100,  10,  0, 3, 3, 0, 10, 7, MINERAL, CLR_GRAY),
1119 #undef GEM
1120 #undef ROCK
1121
1122 /* miscellaneous ... */
1123 /* Note: boulders and rocks are not normally created at random; the
1124  * probabilities only come into effect when you try to polymorph them.
1125  * Boulders weigh more than MAX_CARR_CAP; statues use corpsenm to take
1126  * on a specific type and may act as containers (both affect weight).
1127  */
1128 OBJECT(OBJ("\8aâ", None),
1129        BITS(1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, P_NONE, MINERAL), 0,
1130        ROCK_CLASS, 100, 0, 6000, 0, 20, 20, 0, 0, 2000, HI_MINERAL),
1131 OBJECT(OBJ("\91\9c", None),
1132        BITS(1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, P_NONE, MINERAL), 0,
1133        ROCK_CLASS, 900, 0, 2500, 0, 20, 20, 0, 0, 2500, CLR_WHITE),
1134
1135 OBJECT(OBJ("\8fd\82¢\93S\8b\85", None),
1136        BITS(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, WHACK, P_NONE, IRON), 0,
1137        BALL_CLASS, 1000, 0, 480, 10, 25, 25, 0, 0, 200, HI_METAL),
1138         /* +d4 when "very heavy" */
1139 OBJECT(OBJ("\93S\82Ì\8d½", None),
1140        BITS(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, WHACK, P_NONE, IRON), 0,
1141        CHAIN_CLASS, 1000, 0, 120, 0, 4, 4, 0, 0, 200, HI_METAL),
1142         /* +1 both l & s */
1143
1144 /* Venom is normally a transitory missile (spit by various creatures)
1145  * but can be wished for in wizard mode so could occur in bones data.
1146  */
1147 OBJECT(OBJ("\96Ó\96Ú\82Ì\93Å\89t", "\93Å\89t\82Ì\82µ\82Ô\82«"),
1148        BITS(0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, P_NONE, LIQUID), 0,
1149        VENOM_CLASS, 500, 0, 1, 0, 0, 0, 0, 0, 0, HI_ORGANIC),
1150 OBJECT(OBJ("\8e_\82Ì\93Å\89t", "\93Å\89t\82Ì\82µ\82Ô\82«"),
1151        BITS(0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, P_NONE, LIQUID), 0,
1152        VENOM_CLASS, 500, 0, 1, 0, 6, 6, 0, 0, 0, HI_ORGANIC),
1153         /* +d6 small or large */
1154
1155 /* fencepost, the deadly Array Terminator -- name [1st arg] *must* be NULL */
1156 OBJECT(OBJ(None, None),
1157        BITS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, P_NONE, 0), 0,
1158        ILLOBJ_CLASS, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
1159 }; /* objects[] */
1160
1161 #ifndef OBJECTS_PASS_2_
1162
1163 /* perform recursive compilation for second structure */
1164 #undef OBJ
1165 #undef OBJECT
1166 #define OBJECTS_PASS_2_
1167 #include "objects.c"
1168
1169 /* clang-format on */
1170 /* *INDENT-ON* */
1171
1172 void NDECL(objects_init);
1173
1174 /* dummy routine used to force linkage */
1175 void
1176 objects_init()
1177 {
1178     return;
1179 }
1180
1181 #endif /* !OBJECTS_PASS_2_ */
1182
1183 /*objects.c*/