OSDN Git Service

version++
[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 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 #define SPELL(name,desc,sub,prob,delay,level,mgc,dir,color)  \
890     OBJECT(OBJ(name, desc),                                             \
891            BITS(0, 0, 0, 0, mgc, 0, 0, 0, 0, 0, dir, sub, PAPER),       \
892            0, SPBOOK_CLASS, prob, delay, 50, level * 100,               \
893            0, 0, 0, level, 20, color)
894 SPELL("\8c\8a\8c@\82è\82Ì\96\82\96@\8f\91",   "\97r\94ç\8e\86\82Ì\96\82\96@\8f\91",
895       P_MATTER_SPELL,      20,  6, 5, 1, RAY, HI_PAPER),
896 SPELL("\96î\82Ì\96\82\96@\8f\91",       "\8eq\8b\8d\94ç\82Ì\96\82\96@\8f\91",
897       P_ATTACK_SPELL,      45,  2, 2, 1, RAY, HI_PAPER),
898 SPELL("\89Î\82Ì\8bÊ\82Ì\96\82\96@\8f\91",   "\82Ú\82ë\82Ú\82ë\82Ì\96\82\96@\8f\91",
899       P_ATTACK_SPELL,      20,  4, 4, 1, RAY, HI_PAPER),
900 SPELL("\97â\8bC\82Ì\96\82\96@\8f\91",     "\83y\81[\83W\82Ì\90Ü\82ç\82ê\82½\96\82\96@\8f\91",
901       P_ATTACK_SPELL,      10,  7, 4, 1, RAY, HI_PAPER),
902 SPELL("\96°\82è\82Ì\96\82\96@\8f\91",     "\82Ü\82¾\82ç\82Ì\96\82\96@\8f\91",
903       P_ENCHANTMENT_SPELL, 50,  1, 1, 1, RAY, HI_PAPER),
904 SPELL("\8e\80\82Ì\8ew\82Ì\96\82\96@\8f\91",   "\82æ\82²\82ê\82½\96\82\96@\8f\91",
905       P_ATTACK_SPELL,       5, 10, 7, 1, RAY, HI_PAPER),
906 SPELL("\93\94\82è\82Ì\96\82\96@\8f\91",     "\95z\92n\82Ì\96\82\96@\8f\91",
907       P_DIVINATION_SPELL,  45,  1, 1, 1, NODIR, HI_CLOTH),
908 SPELL("\89ö\95¨\82ð\92T\82·\96\82\96@\8f\91", "leathery",
909       P_DIVINATION_SPELL,  43,  1, 1, 1, NODIR, HI_LEATHER),
910 SPELL("\89ñ\95\9c\82Ì\96\82\96@\8f\91",     "\94\92\82¢\96\82\96@\8f\91",
911       P_HEALING_SPELL,     40,  2, 1, 1, IMMEDIATE, CLR_WHITE),
912 SPELL("\8aJ\8fù\82Ì\96\82\96@\8f\91",     "\83s\83\93\83N\90F\82Ì\96\82\96@\8f\91",
913       P_MATTER_SPELL,      35,  1, 1, 1, IMMEDIATE, CLR_BRIGHT_MAGENTA),
914 SPELL("\8fÕ\8c\82\82Ì\96\82\96@\8f\91",     "\90Ô\82¢\96\82\96@\8f\91",
915       P_ATTACK_SPELL,      35,  2, 1, 1, IMMEDIATE, CLR_RED),
916 SPELL("\8d¬\97\90\82Ì\96\82\96@\8f\91",     "\83I\83\8c\83\93\83W\90F\82Ì\96\82\96@\8f\91",
917       P_ENCHANTMENT_SPELL, 30,  2, 2, 1, IMMEDIATE, CLR_ORANGE),
918 SPELL("\96Ó\96Ú\82ð\96ü\82·\96\82\96@\8f\91", "\89©\90F\82¢\96\82\96@\8f\91",
919       P_HEALING_SPELL,     25,  2, 2, 1, IMMEDIATE, CLR_YELLOW),
920 SPELL("\92E\97Í\82Ì\96\82\96@\8f\91",     "\83r\83\8d\81[\83h\82Ì\96\82\96@\8f\91",
921       P_ATTACK_SPELL,      10,  2, 2, 1, IMMEDIATE, CLR_MAGENTA),
922 SPELL("\8b\8d\95à\82Ì\96\82\96@\8f\91",     "\92W\97Î\90F\82Ì\96\82\96@\8f\91",
923       P_ENCHANTMENT_SPELL, 30,  2, 2, 1, IMMEDIATE, CLR_BRIGHT_GREEN),
924 SPELL("\8e{\8fù\82Ì\96\82\96@\8f\91",     "\94Z\97Î\90F\82Ì\96\82\96@\8f\91",
925       P_MATTER_SPELL,      30,  3, 2, 1, IMMEDIATE, CLR_GREEN),
926 SPELL("\89ö\95¨\82ð\91¢\82é\96\82\96@\8f\91", "\90Â\97Î\90F\82Ì\96\82\96@\8f\91",
927       P_CLERIC_SPELL,      35,  3, 2, 1, NODIR, CLR_BRIGHT_CYAN),
928 SPELL("\90H\97¿\82ð\92T\82·\96\82\96@\8f\91", "\83V\83A\83\93\90F\82Ì\96\82\96@\8f\91",
929       P_DIVINATION_SPELL,  30,  3, 2, 1, NODIR, CLR_CYAN),
930 SPELL("\8b°\95|\82Ì\96\82\96@\8f\91",     "\92W\90Â\82Ì\96\82\96@\8f\91",
931       P_ENCHANTMENT_SPELL, 25,  3, 3, 1, NODIR, CLR_BRIGHT_BLUE),
932 SPELL("\90ç\97¢\8aá\82Ì\96\82\96@\8f\91",   "\94Z\90Â\82Ì\96\82\96@\8f\91",
933       P_DIVINATION_SPELL,  15,  3, 3, 1, NODIR, CLR_BLUE),
934 SPELL("\95a\8bC\82ð\96ü\82·\96\82\96@\8f\91", "\97\95\90F\82Ì\96\82\96@\8f\91",
935       P_HEALING_SPELL,     32,  3, 3, 1, NODIR, CLR_BLUE),
936 SPELL("\96£\97¹\82Ì\96\82\96@\8f\91",     "\83}\83[\83\93\83_\90F\82Ì\96\82\96@\8f\91",
937       P_ENCHANTMENT_SPELL, 20,  3, 3, 1, IMMEDIATE, CLR_MAGENTA),
938 SPELL("\91¬\8dU\82Ì\96\82\96@\8f\91",     "\8e\87\90F\82Ì\96\82\96@\8f\91",
939       P_ESCAPE_SPELL,      33,  4, 3, 1, NODIR, CLR_MAGENTA),
940 SPELL("\97ì\8a´\82Ì\96\82\96@\8f\91",     "\83X\83~\83\8c\90F\82Ì\96\82\96@\8f\91",
941       P_DIVINATION_SPELL,  20,  4, 3, 1, NODIR, CLR_MAGENTA),
942 SPELL("\95\82\97V\82Ì\96\82\96@\8f\91",     "\89©\8a\8c\90F\82Ì\96\82\96@\8f\91",
943       P_ESCAPE_SPELL,      20,  4, 4, 1, NODIR, CLR_BROWN),
944 SPELL("\92´\89ñ\95\9c\82Ì\96\82\96@\8f\91",   "\83\89\83V\83\83\82Ì\96\82\96@\8f\91",
945       P_HEALING_SPELL,     27,  5, 3, 1, IMMEDIATE, CLR_GREEN),
946 SPELL("\94\\97Í\89ñ\95\9c\82Ì\96\82\96@\8f\91", "\92W\92\83\90F\82Ì\96\82\96@\8f\91",
947       P_HEALING_SPELL,     25,  5, 4, 1, NODIR, CLR_BROWN),
948 SPELL("\93§\96¾\82Ì\96\82\96@\8f\91",     "\94Z\92\83\90F\82Ì\96\82\96@\8f\91",
949       P_ESCAPE_SPELL,      25,  5, 4, 1, NODIR, CLR_BROWN),
950 SPELL("\95ó\82ð\92T\82·\96\82\96@\8f\91",   "\8aD\90F\82Ì\96\82\96@\8f\91",
951       P_DIVINATION_SPELL,  20,  5, 4, 1, NODIR, CLR_GRAY),
952 SPELL("\89ð\8eô\82Ì\96\82\96@\8f\91",     "\82­\82µ\82á\82­\82µ\82á\82Ì\96\82\96@\8f\91",
953       P_CLERIC_SPELL,      25,  5, 3, 1, NODIR, HI_PAPER),
954 SPELL("\92n\90}\82Ì\96\82\96@\8f\91",     "\82Ù\82±\82è\82Á\82Û\82¢\96\82\96@\8f\91",
955       P_DIVINATION_SPELL,  18,  7, 5, 1, NODIR, HI_PAPER),
956 SPELL("\8e¯\95Ê\82Ì\96\82\96@\8f\91",     "\90Â\93º\82Ì\96\82\96@\8f\91",
957       P_DIVINATION_SPELL,  20,  6, 3, 1, NODIR, HI_COPPER),
958 SPELL("\91h\90\82Ì\96\82\96@\8f\91",     "\93º\82Ì\96\82\96@\8f\91",
959       P_CLERIC_SPELL,      16,  8, 6, 1, IMMEDIATE, HI_COPPER),
960 SPELL("\95Ï\89»\82Ì\96\82\96@\8f\91",     "\8bâ\82Ì\96\82\96@\8f\91",
961       P_MATTER_SPELL,      10,  8, 6, 1, IMMEDIATE, HI_SILVER),
962 SPELL("\8fu\8aÔ\88Ú\93®\82Ì\96\82\96@\8f\91", "\8bà\82Ì\96\82\96@\8f\91",
963       P_ESCAPE_SPELL,      15,  6, 6, 1, IMMEDIATE, HI_GOLD),
964 SPELL("\91¢\96\82\82Ì\96\82\96@\8f\91",     "\82«\82ç\82Ñ\82â\82©\82È\96\82\96@\8f\91",
965       P_CLERIC_SPELL,      10,  7, 6, 1, NODIR, CLR_WHITE),
966 SPELL("\96³\97Í\89»\82Ì\96\82\96@\8f\91",   "\8bP\82­\96\82\96@\8f\91",
967       P_MATTER_SPELL,      15,  8, 7, 1, IMMEDIATE, CLR_WHITE),
968 SPELL("\8eç\82è\82Ì\96\82\96@\8f\91",     "\89\94\90F\82Ì\96\82\96@\8f\91",
969       P_CLERIC_SPELL,      18,  3, 1, 1, NODIR, HI_PAPER),
970 SPELL("\92µ\96ô\82Ì\96\82\96@\8f\91",     "\94\96\82¢\90F\82Ì\96\82\96@\8f\91",
971       P_ESCAPE_SPELL,      20,  3, 1, 1, IMMEDIATE, HI_PAPER),
972 SPELL("\93î\89»\82Ì\96\82\96@\8f\91",     "\94Z\82¢\90F\82Ì\96\82\96@\8f\91",
973       P_HEALING_SPELL,     15,  1, 3, 1, IMMEDIATE, HI_PAPER),
974 #if 0 /* DEFERRED */
975 /* from slash'em, create a tame critter which explodes when attacking,
976    damaging adjacent creatures--friend or foe--and dying in the process */
977 SPELL("flame sphere",     "\96\83\82Ì\96\82\96@\8f\91",
978       P_MATTER_SPELL,      20,  2, 1, 1, NODIR, CLR_BROWN),
979 SPELL("freeze sphere",    "\8cÅ\82¢\95\\8e\86\82Ì\96\82\96@\8f\91",
980       P_MATTER_SPELL,      20,  2, 1, 1, NODIR, CLR_BROWN),
981 #endif
982 /* books with fixed descriptions
983  */
984 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),
985 /* tribute book for 3.6 */
986 OBJECT(OBJ("\8f¬\90à", "\83y\81[\83p\81[\83o\83b\83N\82Ì\96\82\96@\8f\91"),
987        BITS(0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, P_NONE, HI_PAPER),
988        0, SPBOOK_CLASS, 0, 0, 0, 20, 0, 0, 0, 1, 20, CLR_BRIGHT_BLUE),
989 /* a special, one of a kind, spellbook */
990 OBJECT(OBJ("\8e\80\8eÒ\82Ì\8f\91", "\83p\83s\83\8b\83X\82Ì\96\82\96@\8f\91"),
991        BITS(0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, P_NONE, PAPER),
992        0, SPBOOK_CLASS, 0, 0, 20, 10000, 0, 0, 0, 7, 20, HI_PAPER),
993 #undef SPELL
994
995 /* wands ... */
996 #define WAND(name,typ,prob,cost,mgc,dir,metal,color) \
997     OBJECT(OBJ(name, typ),                                              \
998            BITS(0, 0, 1, 0, mgc, 1, 0, 0, 0, 0, dir, P_NONE, metal),    \
999            0, WAND_CLASS, prob, 0, 7, cost, 0, 0, 0, 0, 30, color)
1000 WAND("\93\94\82è\82Ì\8fñ",             "\83K\83\89\83X\82Ì\8fñ", 95, 100, 1, NODIR, GLASS, HI_GLASS),
1001 WAND("\94à\92T\8dõ\82Ì\8fñ",
1002                         "\83o\83\8b\83T\82Ì\8fñ", 50, 150, 1, NODIR, WOOD, HI_WOOD),
1003 WAND("\8c[\96Ö\82Ì\8fñ",               "\90\85\8f»\82Ì\8fñ", 15, 150, 1, NODIR, GLASS, HI_GLASS),
1004 WAND("\89ö\95¨\82ð\91¢\82é\8fñ",             "\95\96\82Ì\8fñ", 45, 200, 1, NODIR, WOOD, HI_WOOD),
1005 WAND("\8aè\82¢\82Ì\8fñ",                 "\8f¼\82Ì\8fñ",  5, 500, 1, NODIR, WOOD, HI_WOOD),
1006 WAND("\92P\82È\82é\8fñ",                 "\8a~\82Ì\8fñ", 25, 100, 0, IMMEDIATE, WOOD, HI_WOOD),
1007 WAND("\8fÕ\8c\82\82Ì\8fñ",               "\8d\95\92h\82Ì\8fñ", 75, 150, 1, IMMEDIATE, WOOD, HI_WOOD),
1008 WAND("\93§\96¾\89»\82Ì\8fñ",           "\91å\97\9d\90Î\82Ì\8fñ", 45, 150, 1, IMMEDIATE, MINERAL, HI_MINERAL),
1009 WAND("\8c¸\91¬\82Ì\8fñ",             "\83u\83\8a\83L\82Ì\8fñ", 50, 150, 1, IMMEDIATE, METAL, HI_METAL),
1010 WAND("\89Á\91¬\82Ì\8fñ",               "\90^èJ\82Ì\8fñ", 50, 150, 1, IMMEDIATE, COPPER, HI_COPPER),
1011 WAND("\91h\90\82Ì\8fñ",                 "\93º\82Ì\8fñ", 50, 150, 1, IMMEDIATE, COPPER, HI_COPPER),
1012 WAND("\95Ï\89»\82Ì\8fñ",                 "\8bâ\82Ì\8fñ", 45, 200, 1, IMMEDIATE, SILVER, HI_SILVER),
1013 WAND("\96³\97Í\89»\82Ì\8fñ",         "\83v\83\89\83`\83i\82Ì\8fñ", 45, 200, 1, IMMEDIATE, PLATINUM, CLR_WHITE),
1014 WAND("\8fu\8aÔ\88Ú\93®\82Ì\8fñ",     "\83C\83\8a\83W\83E\83\80\82Ì\8fñ", 45, 200, 1, IMMEDIATE, METAL,
1015                                                              CLR_BRIGHT_CYAN),
1016 WAND("\8aJ\8fù\82Ì\8fñ",               "\88\9f\89\94\82Ì\8fñ", 25, 150, 1, IMMEDIATE, METAL, HI_METAL),
1017 WAND("\8e{\8fù\82Ì\8fñ",       "\83A\83\8b\83~\83j\83E\83\80\82Ì\8fñ", 25, 150, 1, IMMEDIATE, METAL, HI_METAL),
1018 WAND("\92T\8d¸\82·\82é\8fñ",       "\83E\83\89\83j\83E\83\80\82Ì\8fñ", 30, 150, 1, IMMEDIATE, METAL, HI_METAL),
1019 WAND("\8c\8a\8c@\82è\82Ì\8fñ",               "\93S\82Ì\8fñ", 55, 150, 1, RAY, IRON, HI_METAL),
1020 WAND("\96î\82Ì\8fñ",                 "\8d|\93S\82Ì\8fñ", 50, 150, 1, RAY, IRON, HI_METAL),
1021 WAND("\89\8a\82Ì\8fñ",               "\98Z\8ap\8c`\82Ì\8fñ", 40, 175, 1, RAY, IRON, HI_METAL),
1022 WAND("\90\81\90á\82Ì\8fñ",                 "\92Z\82¢\8fñ", 40, 175, 1, RAY, IRON, HI_METAL),
1023 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),
1024 WAND("\8e\80\82Ì\8fñ",                   "\92·\82¢\8fñ",  5, 500, 1, RAY, IRON, HI_METAL),
1025 WAND("\97\8b\82Ì\8fñ",                 "\8bÈ\82Á\82½\8fñ", 40, 175, 1, RAY, IRON, HI_METAL),
1026 /* extra descriptions, shuffled into use at start of new game */
1027 WAND(None,                     "\93ñ\8d³\82Ì\8fñ",  0, 150, 1, 0, WOOD, HI_WOOD),
1028 WAND(None,     "\82­\82³\82Ñ\82Ì\91Å\82¿\82Â\82¯\82ç\82ê\82½\8fñ",  0, 150, 1, 0, IRON, HI_METAL),
1029 WAND(None,           "\95ó\90Î\82ª\96\84\82ß\82ç\82ê\82½\8fñ",  0, 150, 1, 0, IRON, HI_MINERAL),
1030 #undef WAND
1031
1032 /* coins ... - so far, gold is all there is */
1033 #define COIN(name,prob,metal,worth) \
1034     OBJECT(OBJ(name, None),                                        \
1035            BITS(0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, P_NONE, metal),    \
1036            0, COIN_CLASS, prob, 0, 1, worth, 0, 0, 0, 0, 0, HI_GOLD)
1037 COIN("\8bà\89Ý", 1000, GOLD, 1),
1038 #undef COIN
1039
1040 /* gems ... - includes stones and rocks but not boulders */
1041 #define GEM(name,desc,prob,wt,gval,nutr,mohs,glass,color) \
1042     OBJECT(OBJ(name, desc),                                             \
1043            BITS(0, 1, 0, 0, 0, 0, 0, 0, 0,                              \
1044                 HARDGEM(mohs), 0, -P_SLING, glass),                     \
1045            0, GEM_CLASS, prob, 0, 1, gval, 3, 3, 0, 0, nutr, color)
1046 #define ROCK(name,desc,kn,prob,wt,gval,sdam,ldam,mgc,nutr,mohs,glass,color) \
1047     OBJECT(OBJ(name, desc),                                             \
1048            BITS(kn, 1, 0, 0, mgc, 0, 0, 0, 0,                           \
1049                 HARDGEM(mohs), 0, -P_SLING, glass),                     \
1050            0, GEM_CLASS, prob, 0, wt, gval, sdam, ldam, 0, 0, nutr, color)
1051 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),
1052 GEM("\83_\83C\83\84\83\82\83\93\83h",       "\94\92\82¢\90Î",  3, 1, 4000, 15, 10, GEMSTONE, CLR_WHITE),
1053 GEM("\83\8b\83r\81[",             "\90Ô\82¢\90Î",  4, 1, 3500, 15,  9, GEMSTONE, CLR_RED),
1054 GEM("\9eò\90\85\8f»",           "\9eò\90F\82Ì\90Î",  3, 1, 3250, 15,  9, GEMSTONE, CLR_ORANGE),
1055 GEM("\83T\83t\83@\83C\83A",         "\90Â\82¢\90Î",  4, 1, 3000, 15,  9, GEMSTONE, CLR_BLUE),
1056 GEM("\8d\95\83I\83p\81[\83\8b",         "\8d\95\82¢\90Î",  3, 1, 2500, 15,  8, GEMSTONE, CLR_BLACK),
1057 GEM("\83G\83\81\83\89\83\8b\83h",         "\97Î\82Ì\90Î",  5, 1, 2500, 15,  8, GEMSTONE, CLR_GREEN),
1058 GEM("\83g\83\8b\83R\90Î",           "\97Î\82Ì\90Î",  6, 1, 2000, 15,  6, GEMSTONE, CLR_GREEN),
1059 GEM("\89©\90\85\8f»",           "\89©\90F\82¢\90Î",  4, 1, 1500, 15,  6, GEMSTONE, CLR_YELLOW),
1060 GEM("\83A\83N\83A\83}\83\8a\83\93",       "\97Î\82Ì\90Î",  6, 1, 1500, 15,  8, GEMSTONE, CLR_GREEN),
1061 GEM("àæàß",           "\92\83\8a\8c\90F\82Ì\90Î",  8, 1, 1000, 15,  2, GEMSTONE, CLR_BROWN),
1062 GEM("\83g\83p\81[\83Y",       "\92\83\8a\8c\90F\82Ì\90Î", 10, 1,  900, 15,  8, GEMSTONE, CLR_BROWN),
1063 GEM("\8d\95\8bÊ",               "\8d\95\82¢\90Î",  6, 1,  850, 15,  7, GEMSTONE, CLR_BLACK),
1064 GEM("\83I\83p\81[\83\8b",           "\94\92\82¢\90Î", 12, 1,  800, 15,  6, GEMSTONE, CLR_WHITE),
1065 GEM("\8bà\97Î\90Î",           "\89©\90F\82¢\90Î",  8, 1,  700, 15,  5, GEMSTONE, CLR_YELLOW),
1066 GEM("\83K\81[\83l\83b\83g",         "\90Ô\82¢\90Î", 12, 1,  700, 15,  7, GEMSTONE, CLR_RED),
1067 GEM("\83A\83\81\83W\83X\83g",         "\8e\87\82Ì\90Î", 14, 1,  600, 15,  7, GEMSTONE, CLR_MAGENTA),
1068 GEM("\83W\83\83\83X\83p\81[",         "\90Ô\82¢\90Î", 15, 1,  500, 15,  7, GEMSTONE, CLR_RED),
1069 GEM("\83t\83\8b\83I\83\89\83C\83g",       "\8e\87\82Ì\90Î", 15, 1,  400, 15,  4, GEMSTONE, CLR_MAGENTA),
1070 GEM("\8d\95à \90Î",             "\8d\95\82¢\90Î",  9, 1,  200, 15,  6, GEMSTONE, CLR_BLACK),
1071 GEM("\82ß\82Ì\82¤",           "\9eò\90F\82Ì\90Î", 12, 1,  200, 15,  6, GEMSTONE, CLR_ORANGE),
1072 GEM("\82Ð\82·\82¢",             "\97Î\82Ì\90Î", 10, 1,  300, 15,  6, GEMSTONE, CLR_GREEN),
1073 GEM("\94\92\82¢\83K\83\89\83X", "\94\92\82¢\90Î",
1074     77, 1, 0, 6, 5, GLASS, CLR_WHITE),
1075 GEM("\90Â\82¢\83K\83\89\83X", "\90Â\82¢\90Î",
1076     77, 1, 0, 6, 5, GLASS, CLR_BLUE),
1077 GEM("\90Ô\82¢\83K\83\89\83X", "\90Ô\82¢\90Î",
1078     77, 1, 0, 6, 5, GLASS, CLR_RED),
1079 GEM("\92\83\8a\8c\90F\82Ì\83K\83\89\83X", "\92\83\8a\8c\90F\82Ì\90Î",
1080     77, 1, 0, 6, 5, GLASS, CLR_BROWN),
1081 GEM("\9eò\90F\82Ì\83K\83\89\83X", "\9eò\90F\82Ì\90Î",
1082     76, 1, 0, 6, 5, GLASS, CLR_ORANGE),
1083 GEM("\89©\90F\82Ì\83K\83\89\83X", "\89©\90F\82¢\90Î",
1084     77, 1, 0, 6, 5, GLASS, CLR_YELLOW),
1085 GEM("\8d\95\90F\82Ì\83K\83\89\83X", "\8d\95\82¢\90Î",
1086     76, 1, 0, 6, 5, GLASS, CLR_BLACK),
1087 GEM("\97Î\82Ì\83K\83\89\83X", "\97Î\82Ì\90Î",
1088     77, 1, 0, 6, 5, GLASS, CLR_GREEN),
1089 GEM("\8e\87\82Ì\83K\83\89\83X", "\8e\87\82Ì\90Î",
1090     77, 1, 0, 6, 5, GLASS, CLR_MAGENTA),
1091
1092 /* Placement note: there is a wishable subrange for
1093  * "gray stones" in the o_ranges[] array in objnam.c
1094  * that is currently everything between luckstones and flint
1095  * (inclusive).
1096  */
1097 ROCK("\8dK\82¹\82Ì\90Î", "\8aD\90F\82Ì\95ó\90Î", 0,  10,  10, 60, 3, 3, 1, 10, 7, MINERAL, CLR_GRAY),
1098 ROCK("\8fd\82µ", "\8aD\90F\82Ì\95ó\90Î",     0,  10, 500,  1, 3, 3, 1, 10, 6, MINERAL, CLR_GRAY),
1099 ROCK("\8e\8e\8bà\90Î", "\8aD\90F\82Ì\95ó\90Î",   0,   8,  10, 45, 3, 3, 1, 10, 6, MINERAL, CLR_GRAY),
1100 ROCK("\89Î\91Å\82¿\90Î", "\8aD\90F\82Ì\95ó\90Î", 0,  10,  10,  1, 6, 6, 0, 10, 7, MINERAL, CLR_GRAY),
1101 ROCK("\90Î", None,               1, 100,  10,  0, 3, 3, 0, 10, 7, MINERAL, CLR_GRAY),
1102 #undef GEM
1103 #undef ROCK
1104
1105 /* miscellaneous ... */
1106 /* Note: boulders and rocks are not normally created at random; the
1107  * probabilities only come into effect when you try to polymorph them.
1108  * Boulders weigh more than MAX_CARR_CAP; statues use corpsenm to take
1109  * on a specific type and may act as containers (both affect weight).
1110  */
1111 OBJECT(OBJ("\8aâ", None),
1112        BITS(1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, P_NONE, MINERAL), 0,
1113        ROCK_CLASS, 100, 0, 6000, 0, 20, 20, 0, 0, 2000, HI_MINERAL),
1114 OBJECT(OBJ("\91\9c", None),
1115        BITS(1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, P_NONE, MINERAL), 0,
1116        ROCK_CLASS, 900, 0, 2500, 0, 20, 20, 0, 0, 2500, CLR_WHITE),
1117
1118 OBJECT(OBJ("\8fd\82¢\93S\8b\85", None),
1119        BITS(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, WHACK, P_NONE, IRON), 0,
1120        BALL_CLASS, 1000, 0, 480, 10, 25, 25, 0, 0, 200, HI_METAL),
1121         /* +d4 when "very heavy" */
1122 OBJECT(OBJ("\93S\82Ì\8d½", None),
1123        BITS(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, WHACK, P_NONE, IRON), 0,
1124        CHAIN_CLASS, 1000, 0, 120, 0, 4, 4, 0, 0, 200, HI_METAL),
1125         /* +1 both l & s */
1126
1127 /* Venom is normally a transitory missile (spit by various creatures)
1128  * but can be wished for in wizard mode so could occur in bones data.
1129  */
1130 OBJECT(OBJ("\96Ó\96Ú\82Ì\93Å\89t", "\93Å\89t\82Ì\82µ\82Ô\82«"),
1131        BITS(0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, P_NONE, LIQUID), 0,
1132        VENOM_CLASS, 500, 0, 1, 0, 0, 0, 0, 0, 0, HI_ORGANIC),
1133 OBJECT(OBJ("\8e_\82Ì\93Å\89t", "\93Å\89t\82Ì\82µ\82Ô\82«"),
1134        BITS(0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, P_NONE, LIQUID), 0,
1135        VENOM_CLASS, 500, 0, 1, 0, 6, 6, 0, 0, 0, HI_ORGANIC),
1136         /* +d6 small or large */
1137
1138 /* fencepost, the deadly Array Terminator -- name [1st arg] *must* be NULL */
1139 OBJECT(OBJ(None, None),
1140        BITS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, P_NONE, 0), 0,
1141        ILLOBJ_CLASS, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
1142 }; /* objects[] */
1143
1144 #ifndef OBJECTS_PASS_2_
1145
1146 /* perform recursive compilation for second structure */
1147 #undef OBJ
1148 #undef OBJECT
1149 #define OBJECTS_PASS_2_
1150 #include "objects.c"
1151
1152 /* clang-format on */
1153 /* *INDENT-ON* */
1154
1155 void NDECL(objects_init);
1156
1157 /* dummy routine used to force linkage */
1158 void
1159 objects_init()
1160 {
1161     return;
1162 }
1163
1164 #endif /* !OBJECTS_PASS_2_ */
1165
1166 /*objects.c*/