OSDN Git Service

@0 等の刻みがあるアイテムが複数あるときに、'0'を押すと、
[hengband/hengband.git] / src / object1.c
1 /* File: object1.c */
2
3 /* Purpose: Object code, part 1 */
4
5 /*
6  * Copyright (c) 1989 James E. Wilson, Robert A. Koeneke
7  *
8  * This software may be copied and distributed for educational, research, and
9  * not for profit purposes provided that this copyright and statement are
10  * included in all such copies.
11  */
12
13 #include "angband.h"
14
15 #ifdef MACINTOSH
16 #ifdef verify
17 #undef verify
18 #endif
19 #endif
20 /*
21  * Reset the "visual" lists
22  *
23  * This involves resetting various things to their "default" state.
24  *
25  * If the "prefs" flag is TRUE, then we will also load the appropriate
26  * "user pref file" based on the current setting of the "use_graphics"
27  * flag.  This is useful for switching "graphics" on/off.
28  *
29  * The features, objects, and monsters, should all be encoded in the
30  * relevant "font.pref" and/or "graf.prf" files.  XXX XXX XXX
31  *
32  * The "prefs" parameter is no longer meaningful.  XXX XXX XXX
33  */
34 void reset_visuals(void)
35 {
36         int i;
37
38         /* Extract some info about terrain features */
39         for (i = 0; i < max_f_idx; i++)
40         {
41                 feature_type *f_ptr = &f_info[i];
42
43                 /* Assume we will use the underlying values */
44                 f_ptr->x_attr = f_ptr->d_attr;
45                 f_ptr->x_char = f_ptr->d_char;
46         }
47
48         /* Extract default attr/char code for objects */
49         for (i = 0; i < max_k_idx; i++)
50         {
51                 object_kind *k_ptr = &k_info[i];
52
53                 /* Default attr/char */
54                 k_ptr->x_attr = k_ptr->d_attr;
55                 k_ptr->x_char = k_ptr->d_char;
56         }
57
58         /* Extract default attr/char code for monsters */
59         for (i = 0; i < max_r_idx; i++)
60         {
61                 monster_race *r_ptr = &r_info[i];
62
63                 /* Default attr/char */
64                 r_ptr->x_attr = r_ptr->d_attr;
65                 r_ptr->x_char = r_ptr->d_char;
66         }
67
68         if (use_graphics)
69         {
70                 /* Process "graf.prf" */
71                 process_pref_file("graf.prf");
72         }
73
74         /* Normal symbols */
75         else
76         {
77                 /* Process "font.prf" */
78                 process_pref_file("font.prf");
79         }
80 }
81
82
83 /*
84  * Obtain the "flags" for an item
85  */
86 void object_flags(object_type *o_ptr, u32b *f1, u32b *f2, u32b *f3)
87 {
88         object_kind *k_ptr = &k_info[o_ptr->k_idx];
89
90         /* Base object */
91         (*f1) = k_ptr->flags1;
92         (*f2) = k_ptr->flags2;
93         (*f3) = k_ptr->flags3;
94
95         /* Artifact */
96         if (o_ptr->name1)
97         {
98                 artifact_type *a_ptr = &a_info[o_ptr->name1];
99
100                 (*f1) = a_ptr->flags1;
101                 (*f2) = a_ptr->flags2;
102                 (*f3) = a_ptr->flags3;
103                 if (!cursed_p(o_ptr))
104                 {
105                         (*f3) &= ~(TR3_HEAVY_CURSE | TR3_CURSED);
106                 }
107         }
108
109         /* Ego-item */
110         if (o_ptr->name2)
111         {
112                 ego_item_type *e_ptr = &e_info[o_ptr->name2];
113
114                 (*f1) |= e_ptr->flags1;
115                 (*f2) |= e_ptr->flags2;
116                 (*f3) |= e_ptr->flags3;
117
118                 if ((o_ptr->name2 == EGO_LITE_AURA_FIRE) && !o_ptr->xtra4 && (o_ptr->sval <= SV_LITE_LANTERN))
119                 {
120                         (*f3) &= ~(TR3_SH_FIRE);
121                 }
122                 else if ((o_ptr->name2 == EGO_LITE_INFRA) && !o_ptr->xtra4 && (o_ptr->sval <= SV_LITE_LANTERN))
123                 {
124                         (*f1) &= ~(TR1_INFRA);
125                 }
126                 else if ((o_ptr->name2 == EGO_LITE_EYE) && !o_ptr->xtra4 && (o_ptr->sval <= SV_LITE_LANTERN))
127                 {
128                         (*f2) &= ~(TR2_RES_BLIND);
129                         (*f3) &= ~(TR3_SEE_INVIS);
130                 }
131         }
132
133         /* Random artifact ! */
134         if (o_ptr->art_flags1 || o_ptr->art_flags2 || o_ptr->art_flags3)
135         {
136                 (*f1) |= o_ptr->art_flags1;
137                 (*f2) |= o_ptr->art_flags2;
138                 (*f3) |= o_ptr->art_flags3;
139         }
140
141         /* Extra powers */
142         if (!(o_ptr->art_name))
143         {
144                 switch (o_ptr->xtra1)
145                 {
146                         case EGO_XTRA_SUSTAIN:
147                         {
148                                 /* Choose a sustain */
149                                 switch (o_ptr->xtra2 % 6)
150                                 {
151                                         case 0: (*f2) |= (TR2_SUST_STR); break;
152                                         case 1: (*f2) |= (TR2_SUST_INT); break;
153                                         case 2: (*f2) |= (TR2_SUST_WIS); break;
154                                         case 3: (*f2) |= (TR2_SUST_DEX); break;
155                                         case 4: (*f2) |= (TR2_SUST_CON); break;
156                                         case 5: (*f2) |= (TR2_SUST_CHR); break;
157                                 }
158
159                                 break;
160                         }
161
162                         case EGO_XTRA_POWER:
163                         {
164                                 /* Choose a power */
165                                 switch (o_ptr->xtra2 % 11)
166                                 {
167                                         case  0: (*f2) |= (TR2_RES_BLIND);  break;
168                                         case  1: (*f2) |= (TR2_RES_CONF);   break;
169                                         case  2: (*f2) |= (TR2_RES_SOUND);  break;
170                                         case  3: (*f2) |= (TR2_RES_SHARDS); break;
171                                         case  4: (*f2) |= (TR2_RES_NETHER); break;
172                                         case  5: (*f2) |= (TR2_RES_NEXUS);  break;
173                                         case  6: (*f2) |= (TR2_RES_CHAOS);  break;
174                                         case  7: (*f2) |= (TR2_RES_DISEN);  break;
175                                         case  8: (*f2) |= (TR2_RES_POIS);   break;
176                                         case  9: (*f2) |= (TR2_RES_DARK);   break;
177                                         case 10: (*f2) |= (TR2_RES_LITE);   break;
178                                 }
179
180                                 break;
181                         }
182
183                         case EGO_XTRA_ABILITY:
184                         {
185                                 /* Choose an ability */
186                                 switch (o_ptr->xtra2 % 8)
187                                 {
188                                         case 0: (*f3) |= (TR3_FEATHER);     break;
189                                         case 1: (*f3) |= (TR3_LITE);        break;
190                                         case 2: (*f3) |= (TR3_SEE_INVIS);   break;
191                                         case 3: (*f3) |= (TR3_TELEPATHY);   break;
192                                         case 4: (*f3) |= (TR3_SLOW_DIGEST); break;
193                                         case 5: (*f3) |= (TR3_REGEN);       break;
194                                         case 6: (*f2) |= (TR2_FREE_ACT);    break;
195                                         case 7: (*f2) |= (TR2_HOLD_LIFE);   break;
196                                 }
197
198                                 break;
199                         }
200                 }
201         }
202
203         if ((o_ptr->tval > TV_CAPTURE) && o_ptr->xtra3)
204         {
205                 if (o_ptr->xtra3 < 33)
206                 {
207                         (*f1) |= (0x00000001 << (o_ptr->xtra3-1));
208                 }
209                 else if (o_ptr->xtra3 < 65)
210                 {
211                         (*f2) |= (0x00000001 << (o_ptr->xtra3-33));
212                 }
213                 else if (o_ptr->xtra3 < 97)
214                 {
215                         (*f3) |= (0x00000001 << (o_ptr->xtra3-65));
216                 }
217                 else if (o_ptr->xtra3 == ESSENCE_TMP_RES_ACID)
218                 {
219                         (*f2) |= TR2_RES_ACID;
220                 }
221                 else if (o_ptr->xtra3 == ESSENCE_TMP_RES_ELEC)
222                 {
223                         (*f2) |= TR2_RES_ELEC;
224                 }
225                 else if (o_ptr->xtra3 == ESSENCE_TMP_RES_FIRE)
226                 {
227                         (*f2) |= TR2_RES_FIRE;
228                 }
229                 else if (o_ptr->xtra3 == ESSENCE_TMP_RES_COLD)
230                 {
231                         (*f2) |= TR2_RES_COLD;
232                 }
233                 else if (o_ptr->xtra3 == ESSENCE_SH_FIRE)
234                 {
235                         (*f2) |= TR2_RES_FIRE;
236                         (*f3) |= TR3_SH_FIRE;
237                 }
238                 else if (o_ptr->xtra3 == ESSENCE_SH_ELEC)
239                 {
240                         (*f2) |= TR2_RES_ELEC;
241                         (*f3) |= TR3_SH_ELEC;
242                 }
243                 else if (o_ptr->xtra3 == ESSENCE_SH_COLD)
244                 {
245                         (*f2) |= TR2_RES_COLD;
246                         (*f3) |= TR3_SH_COLD;
247                 }
248                 else if (o_ptr->xtra3 == ESSENCE_RESISTANCE)
249                 {
250                         (*f2) |= (TR2_RES_ACID | TR2_RES_ELEC | TR2_RES_FIRE | TR2_RES_COLD);;
251                 }
252         }
253 }
254
255
256
257 /*
258  * Obtain the "flags" for an item which are known to the player
259  */
260 void object_flags_known(object_type *o_ptr, u32b *f1, u32b *f2, u32b *f3)
261 {
262         bool spoil = FALSE;
263
264         object_kind *k_ptr = &k_info[o_ptr->k_idx];
265
266         /* Clear */
267         (*f1) = (*f2) = (*f3) = 0L;
268
269         if (!object_aware_p(o_ptr)) return;
270
271         /* Base object */
272         (*f1) = k_ptr->flags1;
273         (*f2) = k_ptr->flags2;
274         (*f3) = k_ptr->flags3;
275
276         /* Must be identified */
277         if (!object_known_p(o_ptr)) return;
278
279         /* Ego-item (known basic flags) */
280         if (o_ptr->name2)
281         {
282                 ego_item_type *e_ptr = &e_info[o_ptr->name2];
283
284                 (*f1) |= e_ptr->flags1;
285                 (*f2) |= e_ptr->flags2;
286                 (*f3) |= e_ptr->flags3;
287
288                 if ((o_ptr->name2 == EGO_LITE_AURA_FIRE) && !o_ptr->xtra4 && (o_ptr->sval <= SV_LITE_LANTERN))
289                 {
290                         (*f3) &= ~(TR3_SH_FIRE);
291                 }
292                 else if ((o_ptr->name2 == EGO_LITE_INFRA) && !o_ptr->xtra4 && (o_ptr->sval <= SV_LITE_LANTERN))
293                 {
294                         (*f1) &= ~(TR1_INFRA);
295                 }
296                 else if ((o_ptr->name2 == EGO_LITE_EYE) && !o_ptr->xtra4 && (o_ptr->sval <= SV_LITE_LANTERN))
297                 {
298                         (*f2) &= ~(TR2_RES_BLIND);
299                         (*f3) &= ~(TR3_SEE_INVIS);
300                 }
301         }
302
303
304 #ifdef SPOIL_ARTIFACTS
305         /* Full knowledge for some artifacts */
306         if (artifact_p(o_ptr) || o_ptr->art_name) spoil = TRUE;
307 #endif /* SPOIL_ARTIFACTS */
308
309 #ifdef SPOIL_EGO_ITEMS
310         /* Full knowledge for some ego-items */
311         if (ego_item_p(o_ptr)) spoil = TRUE;
312 #endif /* SPOIL_EGO_ITEMS */
313
314         /* Need full knowledge or spoilers */
315         if (spoil || (o_ptr->ident & IDENT_MENTAL))
316         {
317                 /* Artifact */
318                 if (o_ptr->name1)
319                 {
320                         artifact_type *a_ptr = &a_info[o_ptr->name1];
321
322                         (*f1) = a_ptr->flags1;
323                         (*f2) = a_ptr->flags2;
324                         (*f3) = a_ptr->flags3;
325
326                         if (!cursed_p(o_ptr))
327                         {
328                                 (*f3) &= ~(TR3_HEAVY_CURSE | TR3_CURSED);
329                         }
330                 }
331
332                 /* Random artifact ! */
333                 if (o_ptr->art_flags1 || o_ptr->art_flags2 || o_ptr->art_flags3)
334                 {
335                         (*f1) |= o_ptr->art_flags1;
336                         (*f2) |= o_ptr->art_flags2;
337                         (*f3) |= o_ptr->art_flags3;
338                 }
339
340                 if (!(o_ptr->art_name))
341                 {
342                         /* Extra powers */
343                         switch (o_ptr->xtra1)
344                         {
345                                 case EGO_XTRA_SUSTAIN:
346                                 {
347                                         /* Choose a sustain */
348                                         switch (o_ptr->xtra2 % 6)
349                                         {
350                                                 case 0: (*f2) |= (TR2_SUST_STR); break;
351                                                 case 1: (*f2) |= (TR2_SUST_INT); break;
352                                                 case 2: (*f2) |= (TR2_SUST_WIS); break;
353                                                 case 3: (*f2) |= (TR2_SUST_DEX); break;
354                                                 case 4: (*f2) |= (TR2_SUST_CON); break;
355                                                 case 5: (*f2) |= (TR2_SUST_CHR); break;
356                                         }
357
358                                         break;
359                                 }
360
361                                 case EGO_XTRA_POWER:
362                                 {
363                                         /* Choose a power */
364                                         switch (o_ptr->xtra2 % 11)
365                                         {
366                                                 case  0: (*f2) |= (TR2_RES_BLIND);  break;
367                                                 case  1: (*f2) |= (TR2_RES_CONF);   break;
368                                                 case  2: (*f2) |= (TR2_RES_SOUND);  break;
369                                                 case  3: (*f2) |= (TR2_RES_SHARDS); break;
370                                                 case  4: (*f2) |= (TR2_RES_NETHER); break;
371                                                 case  5: (*f2) |= (TR2_RES_NEXUS);  break;
372                                                 case  6: (*f2) |= (TR2_RES_CHAOS);  break;
373                                                 case  7: (*f2) |= (TR2_RES_DISEN);  break;
374                                                 case  8: (*f2) |= (TR2_RES_POIS);   break;
375                                                 case  9: (*f2) |= (TR2_RES_DARK);   break;
376                                                 case 10: (*f2) |= (TR2_RES_LITE);   break;
377                                         }
378
379                                         break;
380                                 }
381
382                                 case EGO_XTRA_ABILITY:
383                                 {
384                                         /* Choose an ability */
385                                         switch (o_ptr->xtra2 % 8)
386                                         {
387                                                 case 0: (*f3) |= (TR3_FEATHER);     break;
388                                                 case 1: (*f3) |= (TR3_LITE);        break;
389                                                 case 2: (*f3) |= (TR3_SEE_INVIS);   break;
390                                                 case 3: (*f3) |= (TR3_TELEPATHY);   break;
391                                                 case 4: (*f3) |= (TR3_SLOW_DIGEST); break;
392                                                 case 5: (*f3) |= (TR3_REGEN);       break;
393                                                 case 6: (*f2) |= (TR2_FREE_ACT);    break;
394                                                 case 7: (*f2) |= (TR2_HOLD_LIFE);   break;
395                                         }
396
397                                         break;
398                                 }
399                         }
400                 }
401         }
402
403         if ((o_ptr->tval > TV_CAPTURE) && o_ptr->xtra3)
404         {
405                 if (o_ptr->xtra3 < 33)
406                 {
407                         (*f1) |= (0x00000001 << (o_ptr->xtra3-1));
408                 }
409                 else if (o_ptr->xtra3 < 65)
410                 {
411                         (*f2) |= (0x00000001 << (o_ptr->xtra3-33));
412                 }
413                 else if (o_ptr->xtra3 < 97)
414                 {
415                         (*f3) |= (0x00000001 << (o_ptr->xtra3-65));
416                 }
417                 else if (o_ptr->xtra3 == ESSENCE_TMP_RES_ACID)
418                 {
419                         (*f2) |= TR2_RES_ACID;
420                 }
421                 else if (o_ptr->xtra3 == ESSENCE_TMP_RES_ELEC)
422                 {
423                         (*f2) |= TR2_RES_ELEC;
424                 }
425                 else if (o_ptr->xtra3 == ESSENCE_TMP_RES_FIRE)
426                 {
427                         (*f2) |= TR2_RES_FIRE;
428                 }
429                 else if (o_ptr->xtra3 == ESSENCE_TMP_RES_COLD)
430                 {
431                         (*f2) |= TR2_RES_COLD;
432                 }
433                 else if (o_ptr->xtra3 == ESSENCE_SH_FIRE)
434                 {
435                         (*f2) |= TR2_RES_FIRE;
436                         (*f3) |= TR3_SH_FIRE;
437                 }
438                 else if (o_ptr->xtra3 == ESSENCE_SH_ELEC)
439                 {
440                         (*f2) |= TR2_RES_ELEC;
441                         (*f3) |= TR3_SH_ELEC;
442                 }
443                 else if (o_ptr->xtra3 == ESSENCE_SH_COLD)
444                 {
445                         (*f2) |= TR2_RES_COLD;
446                         (*f3) |= TR3_SH_COLD;
447                 }
448                 else if (o_ptr->xtra3 == ESSENCE_RESISTANCE)
449                 {
450                         (*f2) |= (TR2_RES_ACID | TR2_RES_ELEC | TR2_RES_FIRE | TR2_RES_COLD);;
451                 }
452         }
453
454         if (cursed_p(o_ptr))
455         {
456                 if (o_ptr->art_flags3 & TR3_CURSED)
457                         (*f3) |= (TR3_CURSED);
458                 if (o_ptr->art_flags3 & TR3_HEAVY_CURSE)
459                         (*f3) |= (TR3_HEAVY_CURSE);
460         }
461 }
462
463
464 /*
465  * Hack -- describe an item currently in a store's inventory
466  * This allows an item to *look* like the player is "aware" of it
467  */
468 void object_desc_store(char *buf, object_type *o_ptr, int pref, int mode)
469 {
470         /* Save the "aware" flag */
471         bool hack_aware = object_aware_p(o_ptr);
472
473         /* Save the "known" flag */
474         bool hack_known = (o_ptr->ident & (IDENT_KNOWN)) ? TRUE : FALSE;
475
476
477         /* Set the "known" flag */
478         o_ptr->ident |= (IDENT_KNOWN);
479
480         /* Force "aware" for description */
481         k_info[o_ptr->k_idx].aware = TRUE;
482
483
484         /* Describe the object */
485         object_desc(buf, o_ptr, pref, mode);
486
487
488         /* Restore "aware" flag */
489         k_info[o_ptr->k_idx].aware = hack_aware;
490
491         /* Clear the known flag */
492         if (!hack_known) o_ptr->ident &= ~(IDENT_KNOWN);
493 }
494
495
496
497
498 /*
499  * Determine the "Activation" (if any) for an artifact
500  * Return a string, or NULL for "no activation"
501  */
502 cptr item_activation(object_type *o_ptr)
503 {
504         u32b f1, f2, f3;
505
506         /* Extract the flags */
507         object_flags(o_ptr, &f1, &f2, &f3);
508
509         /* Require activation ability */
510 #ifdef JP
511 if (!(f3 & (TR3_ACTIVATE))) return ("¤Ê¤·");
512 #else
513         if (!(f3 & (TR3_ACTIVATE))) return ("nothing");
514 #endif
515
516
517
518         /*
519          * We need to deduce somehow that it is a random artifact -- one
520          * problem: It could be a random artifact which has NOT YET received
521          * a name. Thus we eliminate other possibilities instead of checking
522          * for art_name
523          */
524
525         if (!(o_ptr->name1) &&
526                  !(o_ptr->name2) &&
527                  !(o_ptr->xtra1) &&
528                   (o_ptr->xtra2))
529         {
530                 switch (o_ptr->xtra2)
531                 {
532                         case ACT_SUNLIGHT:
533                         {
534 #ifdef JP
535 return "ÂÀÍÛ¸÷Àþ : 10 ¥¿¡¼¥óËè";
536 #else
537                                 return "beam of sunlight every 10 turns";
538 #endif
539
540                         }
541                         case ACT_BO_MISS_1:
542                         {
543 #ifdef JP
544 return "¥Þ¥¸¥Ã¥¯¡¦¥ß¥µ¥¤¥ë(2d6) : 2 ¥¿¡¼¥óËè";
545 #else
546                                 return "magic missile (2d6) every 2 turns";
547 #endif
548
549                         }
550                         case ACT_BA_POIS_1:
551                         {
552 #ifdef JP
553 return "°­½­±À (12), È¾·Â 3 , 4+d4 ¥¿¡¼¥óËè";
554 #else
555                                 return "stinking cloud (12), rad. 3, every 4+d4 turns";
556 #endif
557
558                         }
559                         case ACT_BO_ELEC_1:
560                         {
561 #ifdef JP
562 return "¥µ¥ó¥À¡¼¡¦¥Ü¥ë¥È(4d8) : 5+d5 ¥¿¡¼¥óËè";
563 #else
564                                 return "lightning bolt (4d8) every 5+d5 turns";
565 #endif
566
567                         }
568                         case ACT_BO_ACID_1:
569                         {
570 #ifdef JP
571 return "¥¢¥·¥Ã¥É¡¦¥Ü¥ë¥È(5d8) : 6+d6 ¥¿¡¼¥óËè";
572 #else
573                                 return "acid bolt (5d8) every 6+d6 turns";
574 #endif
575
576                         }
577                         case ACT_BO_COLD_1:
578                         {
579 #ifdef JP
580 return "¥¢¥¤¥¹¡¦¥Ü¥ë¥È(6d8) : 7+d7 ¥¿¡¼¥óËè";
581 #else
582                                 return "frost bolt (6d8) every 7+d7 turns";
583 #endif
584
585                         }
586                         case ACT_BO_FIRE_1:
587                         {
588 #ifdef JP
589 return "¥Õ¥¡¥¤¥¢¡¦¥Ü¥ë¥È(9d8) : 8+d8 ¥¿¡¼¥óËè";
590 #else
591                                 return "fire bolt (9d8) every 8+d8 turns";
592 #endif
593
594                         }
595                         case ACT_BA_COLD_1:
596                         {
597 #ifdef JP
598 return "¥³¡¼¥ë¥É¡¦¥Ü¡¼¥ë (48) : 400 ¥¿¡¼¥óËè";
599 #else
600                                 return "ball of cold (48) every 400 turns";
601 #endif
602
603                         }
604                         case ACT_BA_FIRE_1:
605                         {
606 #ifdef JP
607 return "¥Õ¥¡¥¤¥¢¡¦¥Ü¡¼¥ë (72) : 400 ¥¿¡¼¥óËè";
608 #else
609                                 return "ball of fire (72) every 400 turns";
610 #endif
611
612                         }
613                         case ACT_DRAIN_1:
614                         {
615 #ifdef JP
616 return "¥Ò¥Ã¥È¥Ý¥¤¥ó¥ÈµÛ¼ý (100) : 100+d100 ¥¿¡¼¥óËè";
617 #else
618                                 return "drain life (100) every 100+d100 turns";
619 #endif
620
621                         }
622                         case ACT_BA_COLD_2:
623                         {
624 #ifdef JP
625 return "¥³¡¼¥ë¥É¡¦¥Ü¡¼¥ë (100) : 300 ¥¿¡¼¥óËè";
626 #else
627                                 return "ball of cold (100) every 300 turns";
628 #endif
629
630                         }
631                         case ACT_BA_ELEC_2:
632                         {
633 #ifdef JP
634 return "¥µ¥ó¥À¡¼¡¦¥Ü¡¼¥ë (100) : 500 ¥¿¡¼¥óËè";
635 #else
636                                 return "ball of lightning (100) every 500 turns";
637 #endif
638
639                         }
640                         case ACT_DRAIN_2:
641                         {
642 #ifdef JP
643 return "¥Ò¥Ã¥È¥Ý¥¤¥ó¥ÈµÛ¼ý(120) : 400 ¥¿¡¼¥óËè";
644 #else
645                                 return "drain life (120) every 400 turns";
646 #endif
647
648                         }
649                         case ACT_VAMPIRE_1:
650                         {
651 #ifdef JP
652 return "µÛ·ì¥É¥ì¥¤¥ó (3*50) : 400 ¥¿¡¼¥óËè";
653 #else
654                                 return "vampiric drain (3*50) every 400 turns";
655 #endif
656
657                         }
658                         case ACT_BO_MISS_2:
659                         {
660 #ifdef JP
661 return "Ìð (150) : 90+d90 ¥¿¡¼¥óËè";
662 #else
663                                 return "arrows (150) every 90+d90 turns";
664 #endif
665
666                         }
667                         case ACT_BA_FIRE_2:
668                         {
669 #ifdef JP
670 return "¥Õ¥¡¥¤¥¢¡¦¥Ü¡¼¥ë (120) : 225+d225 ¥¿¡¼¥óËè";
671 #else
672                                 return "fire ball (120) every 225+d225 turns";
673 #endif
674
675                         }
676                         case ACT_BA_COLD_3:
677                         {
678 #ifdef JP
679 return "¥³¡¼¥ë¥É¡¦¥Ü¡¼¥ë (200) : 325+d325 ¥¿¡¼¥óËè";
680 #else
681                                 return "ball of cold (200) every 325+d325 turns";
682 #endif
683
684                         }
685                         case ACT_BA_ELEC_3:
686                         {
687 #ifdef JP
688 return "¥µ¥ó¥À¡¼¡¦¥Ü¡¼¥ë (250) : 425+d425 ¥¿¡¼¥óËè";
689 #else
690                                 return "ball of lightning (250) every 425+d425 turns";
691 #endif
692
693                         }
694                         case ACT_WHIRLWIND:
695                         {
696 #ifdef JP
697 return "¥«¥Þ¥¤¥¿¥Á : 250 ¥¿¡¼¥óËè";
698 #else
699                                 return "whirlwind attack every 250 turns";
700 #endif
701
702                         }
703                         case ACT_VAMPIRE_2:
704                         {
705 #ifdef JP
706 return "µÛ·ì¥É¥ì¥¤¥ó (3*100) : 400 ¥¿¡¼¥óËè";
707 #else
708                                 return "vampiric drain (3*100) every 400 turns";
709 #endif
710
711                         }
712                         case ACT_CALL_CHAOS:
713                         {
714 #ifdef JP
715 return "call chaos : 350 ¥¿¡¼¥óËè"; /*nuke me*/
716 #else
717                                 return "call chaos every 350 turns";
718 #endif
719
720                         }
721                         case ACT_ROCKET:
722                         {
723 #ifdef JP
724 return "¥í¥±¥Ã¥È (120+level) : 400 ¥¿¡¼¥óËè";
725 #else
726                                 return "launch rocket (120+level) every 400 turns";
727 #endif
728
729                         }
730                         case ACT_DISP_EVIL:
731                         {
732 #ifdef JP
733 return "¼Ù°­Â໶ (level*5) : 300+d300 ¥¿¡¼¥óËè";
734 #else
735                                 return "dispel evil (level*5) every 300+d300 turns";
736 #endif
737
738                         }
739                         case ACT_BA_MISS_3:
740                         {
741 #ifdef JP
742 return "¥¨¥ì¥á¥ó¥È¤Î¥Ö¥ì¥¹ (300) : 500 ¥¿¡¼¥óËè";
743 #else
744                                 return "elemental breath (300) every 500 turns";
745 #endif
746
747                         }
748                         case ACT_DISP_GOOD:
749                         {
750 #ifdef JP
751 return "Á±ÎÉÂ໶ (level*5) : 300+d300 ¥¿¡¼¥óËè";
752 #else
753                                 return "dispel good (level*5) every 300+d300 turns";
754 #endif
755
756                         }
757                         case ACT_CONFUSE:
758                         {
759 #ifdef JP
760 return "¥Ñ¥Ë¥Ã¥¯¡¦¥â¥ó¥¹¥¿¡¼ : 15 ¥¿¡¼¥óËè";
761 #else
762                                 return "confuse monster every 15 turns";
763 #endif
764
765                         }
766                         case ACT_SLEEP:
767                         {
768 #ifdef JP
769 return "¼þ°Ï¤Î¥â¥ó¥¹¥¿¡¼¤ò̲¤é¤»¤ë : 55 ¥¿¡¼¥óËè";
770 #else
771                                 return "sleep nearby monsters every 55 turns";
772 #endif
773
774                         }
775                         case ACT_QUAKE:
776                         {
777 #ifdef JP
778 return "ÃÏ¿Ì (Ⱦ·Â 10) : 50 ¥¿¡¼¥óËè";
779 #else
780                                 return "earthquake (rad 10) every 50 turns";
781 #endif
782
783                         }
784                         case ACT_TERROR:
785                         {
786 #ifdef JP
787 return "¶²¹² : 3 * (level+10) ¥¿¡¼¥óËè";
788 #else
789                                 return "terror every 3 * (level+10) turns";
790 #endif
791
792                         }
793                         case ACT_TELE_AWAY:
794                         {
795 #ifdef JP
796 return "¥Æ¥ì¥Ý¡¼¥È¡¦¥¢¥¦¥§¥¤ : 150 ¥¿¡¼¥óËè";
797 #else
798                                 return "teleport away every 200 turns";
799 #endif
800
801                         }
802                         case ACT_BANISH_EVIL:
803                         {
804 #ifdef JP
805 return "¼Ù°­¾ÃÌÇ : 250+d250 ¥¿¡¼¥óËè";
806 #else
807                                 return "banish evil every 250+d250 turns";
808 #endif
809
810                         }
811                         case ACT_GENOCIDE:
812                         {
813 #ifdef JP
814 return "Ëõ»¦ : 500 ¥¿¡¼¥óËè";
815 #else
816                                 return "genocide every 500 turns";
817 #endif
818
819                         }
820                         case ACT_MASS_GENO:
821                         {
822 #ifdef JP
823 return "¼þÊÕËõ»¦ : 1000 ¥¿¡¼¥óËè";
824 #else
825                                 return "mass genocide every 1000 turns";
826 #endif
827
828                         }
829                         case ACT_CHARM_ANIMAL:
830                         {
831 #ifdef JP
832 return "ưʪ̥λ : 300 ¥¿¡¼¥óËè";
833 #else
834                                 return "charm animal every 300 turns";
835 #endif
836
837                         }
838                         case ACT_CHARM_UNDEAD:
839                         {
840 #ifdef JP
841 return "ÉԻཾ° : 333 ¥¿¡¼¥óËè";
842 #else
843                                 return "enslave undead every 333 turns";
844 #endif
845
846                         }
847                         case ACT_CHARM_OTHER:
848                         {
849 #ifdef JP
850 return "¥â¥ó¥¹¥¿¡¼Ì¥Î» : 400 ¥¿¡¼¥óËè";
851 #else
852                                 return "charm monster every 400 turns";
853 #endif
854
855                         }
856                         case ACT_CHARM_ANIMALS:
857                         {
858 #ifdef JP
859 return "ưʪͧÏ : 500 ¥¿¡¼¥óËè";
860 #else
861                                 return "animal friendship every 500 turns";
862 #endif
863
864                         }
865                         case ACT_CHARM_OTHERS:
866                         {
867 #ifdef JP
868 return "¼þÊÕ̥λ : 750 ¥¿¡¼¥óËè";
869 #else
870                                 return "mass charm every 750 turns";
871 #endif
872
873                         }
874                         case ACT_SUMMON_ANIMAL:
875                         {
876 #ifdef JP
877 return "ưʪ¾¤´­ : 200+d300 ¥¿¡¼¥óËè";
878 #else
879                                 return "summon animal every 200+d300 turns";
880 #endif
881
882                         }
883                         case ACT_SUMMON_PHANTOM:
884                         {
885 #ifdef JP
886 return "»È¤¤Î´­ : 200+d200 ¥¿¡¼¥óËè";
887 #else
888                                 return "summon phantasmal servant every 200+d200 turns";
889 #endif
890
891                         }
892                         case ACT_SUMMON_ELEMENTAL:
893                         {
894 #ifdef JP
895 return "¥¨¥ì¥á¥ó¥¿¥ë¾¤´­ : 750 ¥¿¡¼¥óËè";
896 #else
897                                 return "summon elemental every 750 turns";
898 #endif
899
900                         }
901                         case ACT_SUMMON_DEMON:
902                         {
903 #ifdef JP
904 return "°­Ë⾤´­ : 666+d333 ¥¿¡¼¥óËè";
905 #else
906                                 return "summon demon every 666+d333 turns";
907 #endif
908
909                         }
910                         case ACT_SUMMON_UNDEAD:
911                         {
912 #ifdef JP
913 return "ÉԻྤ´­ : 666+d333 ¥¿¡¼¥óËè";
914 #else
915                                 return "summon undead every 666+d333 turns";
916 #endif
917
918                         }
919                         case ACT_CURE_LW:
920                         {
921 #ifdef JP
922 return "ͦµ¤²óÉü & 30 hp ²óÉü : 10 ¥¿¡¼¥óËè";
923 #else
924                                 return "remove fear & heal 30 hp every 10 turns";
925 #endif
926
927                         }
928                         case ACT_CURE_MW:
929                         {
930 #ifdef JP
931 return "4d8 hp & ½ý²óÉü : 3+d3 ¥¿¡¼¥óËè";
932 #else
933                                 return "heal 4d8 & wounds every 3+d3 turns";
934 #endif
935
936                         }
937                         case ACT_CURE_POISON:
938                         {
939 #ifdef JP
940 return "ͦµ¤²óÉü/ÆǾä· : 5 ¥¿¡¼¥óËè";
941 #else
942                                 return "remove fear and cure poison every 5 turns";
943 #endif
944
945                         }
946                         case ACT_REST_LIFE:
947                         {
948 #ifdef JP
949 return "·Ð¸³ÃÍÉü³è : 450 ¥¿¡¼¥óËè";
950 #else
951                                 return "restore life levels every 450 turns";
952 #endif
953
954                         }
955                         case ACT_REST_ALL:
956                         {
957 #ifdef JP
958 return "Á´¥¹¥Æ¡¼¥¿¥¹¤È·Ð¸³ÃͲóÉü : 750 ¥¿¡¼¥óËè";
959 #else
960                                 return "restore stats and life levels every 750 turns";
961 #endif
962
963                         }
964                         case ACT_CURE_700:
965                         {
966 #ifdef JP
967 return "700 hp ²óÉü : 250 ¥¿¡¼¥óËè";
968 #else
969                                 return "heal 700 hit points every 250 turns";
970 #endif
971
972                         }
973                         case ACT_CURE_1000:
974                         {
975 #ifdef JP
976 return "1000 hp ²óÉü : 888 ¥¿¡¼¥óËè";
977 #else
978                                 return "heal 1000 hit points every 888 turns";
979 #endif
980
981                         }
982                         case ACT_ESP:
983                         {
984 #ifdef JP
985 return "°ì»þŪ¤Ê ESP (´ü´Ö 25+d30) : 200 ¥¿¡¼¥óËè";
986 #else
987                                 return "temporary ESP (dur 25+d30) every 200 turns";
988 #endif
989
990                         }
991                         case ACT_BERSERK:
992                         {
993 #ifdef JP
994 return "»Îµ¤¹âÍȤȽËÊ¡ (´ü´Ö 50+d50) : 100+d100 ¥¿¡¼¥óËè";
995 #else
996                                 return "heroism and blessed (dur 50+d50) every 100+d100 turns";
997 #endif
998
999                         }
1000                         case ACT_PROT_EVIL:
1001                         {
1002 #ifdef JP
1003 return "Âмٰ­·ë³¦ (´ü´Ö level*3 + d25) : 225+d225 ¥¿¡¼¥óËè";
1004 #else
1005                                 return "protect evil (dur level*3 + d25) every 225+d225 turns";
1006 #endif
1007
1008                         }
1009                         case ACT_RESIST_ALL:
1010                         {
1011 #ifdef JP
1012 return "±êÎä»ÀÅÅÆǤؤÎÂÑÀ­ (´ü´Ö 40+d40) : 200 ¥¿¡¼¥óËè";
1013 #else
1014                                 return "resist elements (dur 40+d40) every 200 turns";
1015 #endif
1016
1017                         }
1018                         case ACT_SPEED:
1019                         {
1020 #ifdef JP
1021 return "²Ã® (´ü´Ö 20+d20) : 250 ¥¿¡¼¥óËè";
1022 #else
1023                                 return "speed (dur 20+d20) every 250 turns";
1024 #endif
1025
1026                         }
1027                         case ACT_XTRA_SPEED:
1028                         {
1029 #ifdef JP
1030 return "²Ã® (´ü´Ö 75+d75) : 200+d200 ¥¿¡¼¥óËè";
1031 #else
1032                                 return "speed (dur 75+d75) every 200+d200 turns";
1033 #endif
1034
1035                         }
1036                         case ACT_WRAITH:
1037                         {
1038 #ifdef JP
1039 return "¥ì¥¤¥¹²½ (level/2 + d(level/2)) : 1000 ¥¿¡¼¥óËè";
1040 #else
1041                                 return "wraith form (level/2 + d(level/2)) every 1000 turns";
1042 #endif
1043
1044                         }
1045                         case ACT_INVULN:
1046                         {
1047 #ifdef JP
1048 return "̵Ũ (´ü´Ö 8+d8) : 1000 ¥¿¡¼¥óËè";
1049 #else
1050                                 return "invulnerability (dur 8+d8) every 1000 turns";
1051 #endif
1052
1053                         }
1054                         case ACT_LIGHT:
1055                         {
1056 #ifdef JP
1057 return "¼þÊÕ¾ÈÌÀ (¥À¥á¡¼¥¸ 2d15) : 10+d10 ¥¿¡¼¥óËè";
1058 #else
1059                                 return "light area (dam 2d15) every 10+d10 turns";
1060 #endif
1061
1062                         }
1063                         case ACT_MAP_LIGHT:
1064                         {
1065 #ifdef JP
1066 return "¼þÊÕ¾ÈÌÀ (¥À¥á¡¼¥¸ 2d15) & ¼þÊեޥåנ: 50+d50 ¥¿¡¼¥óËè";
1067 #else
1068                                 return "light (dam 2d15) & map area every 50+d50 turns";
1069 #endif
1070
1071                         }
1072                         case ACT_DETECT_ALL:
1073                         {
1074 #ifdef JP
1075 return "Á´´¶ÃΠ: 55+d55 ¥¿¡¼¥óËè";
1076 #else
1077                                 return "detection every 55+d55 turns";
1078 #endif
1079
1080                         }
1081                         case ACT_DETECT_XTRA:
1082                         {
1083 #ifdef JP
1084 return "Á´´¶ÃΡ¢Ãµº÷¡¢*´ÕÄê* : 1000 ¥¿¡¼¥óËè";
1085 #else
1086                                 return "detection, probing and identify true every 1000 turns";
1087 #endif
1088
1089                         }
1090                         case ACT_ID_FULL:
1091                         {
1092 #ifdef JP
1093 return "*´ÕÄê* : 750 ¥¿¡¼¥óËè";
1094 #else
1095                                 return "identify true every 750 turns";
1096 #endif
1097
1098                         }
1099                         case ACT_ID_PLAIN:
1100                         {
1101 #ifdef JP
1102 return "´ÕÄê : 10 ¥¿¡¼¥óËè";
1103 #else
1104                                 return "identify spell every 10 turns";
1105 #endif
1106
1107                         }
1108                         case ACT_RUNE_EXPLO:
1109                         {
1110 #ifdef JP
1111 return "Çúȯ¥ë¡¼¥ó : 200 ¥¿¡¼¥óËè";
1112 #else
1113                                 return "explosive rune every 200 turns";
1114 #endif
1115
1116                         }
1117                         case ACT_RUNE_PROT:
1118                         {
1119 #ifdef JP
1120 return "¼é¤ê¤Î¥ë¡¼¥ó : 400 ¥¿¡¼¥óËè";
1121 #else
1122                                 return "rune of protection every 400 turns";
1123 #endif
1124
1125                         }
1126                         case ACT_SATIATE:
1127                         {
1128 #ifdef JP
1129 return "¶õÊ¢½¼Â­ : 200 ¥¿¡¼¥óËè";
1130 #else
1131                                 return "satisfy hunger every 200 turns";
1132 #endif
1133
1134                         }
1135                         case ACT_DEST_DOOR:
1136                         {
1137 #ifdef JP
1138 return "¥É¥¢Ç˲õ : 10 ¥¿¡¼¥óËè";
1139 #else
1140                                 return "destroy doors every 10 turns";
1141 #endif
1142
1143                         }
1144                         case ACT_STONE_MUD:
1145                         {
1146 #ifdef JP
1147 return "´äÀÐÍϲò : 5 ¥¿¡¼¥óËè";
1148 #else
1149                                 return "stone to mud every 5 turns";
1150 #endif
1151
1152                         }
1153                         case ACT_RECHARGE:
1154                         {
1155 #ifdef JP
1156 return "ºÆ½¼Å¶ : 70 ¥¿¡¼¥óËè";
1157 #else
1158                                 return "recharging every 70 turns";
1159 #endif
1160
1161                         }
1162                         case ACT_ALCHEMY:
1163                         {
1164 #ifdef JP
1165 return "Ï£¶â½Ñ : 500 ¥¿¡¼¥óËè";
1166 #else
1167                                 return "alchemy every 500 turns";
1168 #endif
1169
1170                         }
1171                         case ACT_DIM_DOOR:
1172                         {
1173 #ifdef JP
1174 return "¼¡¸µ¤ÎÈâ : 100 ¥¿¡¼¥óËè";
1175 #else
1176                                 return "dimension door every 100 turns";
1177 #endif
1178
1179                         }
1180                         case ACT_TELEPORT:
1181                         {
1182 #ifdef JP
1183 return "¥Æ¥ì¥Ý¡¼¥È (range 100) : 45 ¥¿¡¼¥óËè";
1184 #else
1185                                 return "teleport (range 100) every 45 turns";
1186 #endif
1187
1188                         }
1189                         case ACT_RECALL:
1190                         {
1191 #ifdef JP
1192 return "µ¢´Ô¤Î¾Û : 200 ¥¿¡¼¥óËè";
1193 #else
1194                                 return "word of recall every 200 turns";
1195 #endif
1196
1197                         }
1198                         default:
1199                         {
1200 #ifdef JP
1201 return "̤ÄêµÁ";
1202 #else
1203                                 return "something undefined";
1204 #endif
1205
1206                         }
1207                 }
1208         }
1209
1210         /* Some artifacts can be activated */
1211         switch (o_ptr->name1)
1212         {
1213                 case ART_NARTHANC:
1214                 {
1215 #ifdef JP
1216 return "¥Õ¥¡¥¤¥¢¡¦¥Ü¥ë¥È(9d8) : 8+d8 ¥¿¡¼¥óËè";
1217 #else
1218                         return "fire bolt (9d8) every 8+d8 turns";
1219 #endif
1220
1221                 }
1222                 case ART_NIMTHANC:
1223                 {
1224 #ifdef JP
1225 return "¥¢¥¤¥¹¡¦¥Ü¥ë¥È(6d8) : 7+d7 ¥¿¡¼¥óËè";
1226 #else
1227                         return "frost bolt (6d8) every 7+d7 turns";
1228 #endif
1229
1230                 }
1231                 case ART_DETHANC:
1232                 {
1233 #ifdef JP
1234 return "¥µ¥ó¥À¡¼¡¦¥Ü¥ë¥È(4d8) : 5+d5 ¥¿¡¼¥óËè";
1235 #else
1236                         return "lightning bolt (4d8) every 6+d6 turns";
1237 #endif
1238
1239                 }
1240                 case ART_RILIA:
1241                 {
1242 #ifdef JP
1243 return "°­½­±À(12) : 4+d4 ¥¿¡¼¥óËè";
1244 #else
1245                         return "stinking cloud (12) every 4+d4 turns";
1246 #endif
1247
1248                 }
1249                 case ART_BELANGIL:
1250                 {
1251 #ifdef JP
1252 return "¥¢¥¤¥¹¡¦¥Ü¡¼¥ë(48) : 5+d5 ¥¿¡¼¥óËè";
1253 #else
1254                         return "frost ball (48) every 5+d5 turns";
1255 #endif
1256
1257                 }
1258                 case ART_DAL:
1259                 {
1260 #ifdef JP
1261 return "¶²Éݽüµî/ÆǾä· : 5 ¥¿¡¼¥óËè";
1262 #else
1263                         return "remove fear and cure poison every 5 turns";
1264 #endif
1265
1266                 }
1267                 case ART_RINGIL:
1268                 {
1269 #ifdef JP
1270 return "¥¢¥¤¥¹¡¦¥Ü¡¼¥ë(100) : 200 ¥¿¡¼¥óËè";
1271 #else
1272                         return "frost ball (100) every 200 turns";
1273 #endif
1274
1275                 }
1276                 case ART_DAWN:
1277                 {
1278 #ifdef JP
1279 return "¶Ç¤Î»ÕÃľ¤´­ : 500+d500 ¥¿¡¼¥óËè";
1280 #else
1281                         return "summon the Legion of the Dawn every 500+d500 turns";
1282 #endif
1283
1284                 }
1285                 case ART_ANDURIL:
1286                 {
1287 #ifdef JP
1288 return "¥Õ¥¡¥¤¥¢¡¦¥Ü¡¼¥ë(72) : 400 ¥¿¡¼¥óËè";
1289 #else
1290                         return "fire ball (72) every 400 turns";
1291 #endif
1292
1293                 }
1294                 case ART_FIRESTAR:
1295                 {
1296 #ifdef JP
1297 return "µðÂç¥Õ¥¡¥¤¥¢¡¦¥Ü¡¼¥ë(72) : 100 ¥¿¡¼¥óËè";
1298 #else
1299                         return "large fire ball (72) every 100 turns";
1300 #endif
1301
1302                 }
1303                 case ART_GOTHMOG:
1304                 {
1305 #ifdef JP
1306 return "µðÂç¥Õ¥¡¥¤¥¢¡¦¥Ü¡¼¥ë(120) : 15 ¥¿¡¼¥óËè";
1307 #else
1308                         return "large fire ball (120) every 15 turns";
1309 #endif
1310
1311                 }
1312                 case ART_FEANOR:
1313                 {
1314 #ifdef JP
1315 return "¥¹¥Ô¡¼¥É(20+d20¥¿¡¼¥ó) : 200 ¥¿¡¼¥óËè";
1316 #else
1317                         return "haste self (20+d20 turns) every 200 turns";
1318 #endif
1319
1320                 }
1321                 case ART_THEODEN:
1322                 {
1323 #ifdef JP
1324 return "À¸Ì¿Îϵۼý(120) : 400 ¥¿¡¼¥óËè";
1325 #else
1326                         return "drain life (120) every 400 turns";
1327 #endif
1328
1329                 }
1330                 case ART_TURMIL:
1331                 {
1332 #ifdef JP
1333 return "À¸Ì¿Îϵۼý(90) : 70 ¥¿¡¼¥óËè";
1334 #else
1335                         return "drain life (90) every 70 turns";
1336 #endif
1337
1338                 }
1339                 case ART_CASPANION:
1340                 {
1341 #ifdef JP
1342 return "¥É¥¢/¥È¥é¥Ã¥×Ê´ºÕ : 10 ¥¿¡¼¥óËè";
1343 #else
1344                         return "door and trap destruction every 10 turns";
1345 #endif
1346
1347                 }
1348                 case ART_AVAVIR:
1349                 case ART_MAGATAMA:
1350                 {
1351 #ifdef JP
1352 return "µ¢´Ô¤Î¾Û : 200 ¥¿¡¼¥óËè";
1353 #else
1354                         return "word of recall every 200 turns";
1355 #endif
1356
1357                 }
1358                 case ART_TARATOL:
1359                 {
1360 #ifdef JP
1361 return "¥¹¥Ô¡¼¥É(20+d20¥¿¡¼¥ó) : 100+d100 ¥¿¡¼¥óËè";
1362 #else
1363                         return "haste self (20+d20 turns) every 100+d100 turns";
1364 #endif
1365
1366                 }
1367                 case ART_ERIRIL:
1368                 {
1369 #ifdef JP
1370 return "´ÕÄê : 10 ¥¿¡¼¥óËè";
1371 #else
1372                         return "identify every 10 turns";
1373 #endif
1374
1375                 }
1376                 case ART_OLORIN:
1377                 {
1378 #ifdef JP
1379 return "õº÷¡¢Á´´¶ÃΡ¢Á´´ÕÄê : 1000 ¥¿¡¼¥óËè";
1380 #else
1381                         return "probing, detection and full id every 1000 turns";
1382 #endif
1383
1384                 }
1385                 case ART_EONWE:
1386                 {
1387 #ifdef JP
1388 return "¼þÊÕËõ»¦ : 1000 ¥¿¡¼¥óËè";
1389 #else
1390                         return "mass genocide every 1000 turns";
1391 #endif
1392
1393                 }
1394                 case ART_LOTHARANG:
1395                 {
1396 #ifdef JP
1397 return "½ý¤Î¼£Ìþ(4d7) : 3+d3 ¥¿¡¼¥óËè";
1398 #else
1399                         return "cure wounds (4d7) every 3+d3 turns";
1400 #endif
1401
1402                 }
1403                 case ART_BRAND:
1404                 {
1405 #ifdef JP
1406 return "¿ÏÀè¤Î¥Õ¥¡¥¤¥¢¡¦¥Ü¥ë¥È : 999 ¥¿¡¼¥óËè";
1407 #else
1408                         return "fire branding of bolts every 999 turns";
1409 #endif
1410
1411                 }
1412                 case ART_CRIMSON:
1413                 {
1414 #ifdef JP
1415 return "¥Õ¥¡¥¤¥¢¡ª : 15 ¥¿¡¼¥óËè";
1416 #else
1417                         return "fire! every 15 turns";
1418 #endif
1419
1420                 }
1421                 case ART_KUSANAGI:
1422                 case ART_ANGUIREL:
1423                 {
1424 #ifdef JP
1425 return "ƨÁö : 35 ¥¿¡¼¥óËè";
1426 #else
1427                         return "a getaway every 35 turns";
1428 #endif
1429
1430                 }
1431                 case ART_KAMUI:
1432                 {
1433 #ifdef JP
1434 return "¥Æ¥ì¥Ý¡¼¥È : 25 ¥¿¡¼¥óËè";
1435 #else
1436                         return "a teleport every 25 turns";
1437 #endif
1438
1439                 }
1440                 case ART_RUNESPEAR:
1441                 {
1442 #ifdef JP
1443 return "¥µ¥ó¥À¡¼¡¦¥Ü¡¼¥ë (100) : 200 ¥¿¡¼¥óËè";
1444 #else
1445                         return "lightning ball (100) every 200 turns";
1446 #endif
1447
1448                 }
1449                 case ART_AEGLOS:
1450                 {
1451 #ifdef JP
1452 return "¥¢¥¤¥¹¡¦¥Ü¡¼¥ë (100) : 200 ¥¿¡¼¥óËè";
1453 #else
1454                         return "Frost ball (100) every 200 turns";
1455 #endif
1456
1457                 }
1458                 case ART_OROME:
1459                 {
1460 #ifdef JP
1461 return "´äÀÐÍϲò : 5 ¥¿¡¼¥óËè";
1462 #else
1463                         return "stone to mud every 5 turns";
1464 #endif
1465
1466                 }
1467                 case ART_NAIN:
1468                 {
1469 #ifdef JP
1470 return "´äÀÐÍϲò : 2 ¥¿¡¼¥óËè";
1471 #else
1472                         return "stone to mud every 2 turns";
1473 #endif
1474
1475                 }
1476                 case ART_SOULKEEPER:
1477                 {
1478 #ifdef JP
1479 return "ÂÎÎϲóÉü(1000) : 888 ¥¿¡¼¥óËè";
1480 #else
1481                         return "heal (1000) every 888 turns";
1482 #endif
1483
1484                 }
1485                 case ART_BELEGENNON:
1486                 {
1487 #ifdef JP
1488 return ("²óÉü (777)¡¢Ìþ¤·¡¢»Îµ¤¹âÍÈ : 300 ¥¿¡¼¥óËè");
1489 #else
1490                         return ("heal (777), curing and heroism every 300 turns");
1491 #endif
1492
1493                 }
1494                 case ART_CELEBORN:
1495                 {
1496 #ifdef JP
1497 return "Ëõ»¦ : 500 ¥¿¡¼¥óËè";
1498 #else
1499                         return "genocide every 500 turns";
1500 #endif
1501
1502                 }
1503                 case ART_LUTHIEN:
1504                 {
1505 #ifdef JP
1506 return "·Ð¸³ÃÍÉü³è : 450 ¥¿¡¼¥óËè";
1507 #else
1508                         return "restore life levels every 450 turns";
1509 #endif
1510
1511                 }
1512                 case ART_ULMO:
1513                 {
1514 #ifdef JP
1515 return "¥Æ¥ì¥Ý¡¼¥È¡¦¥¢¥¦¥§¥¤ : 150 ¥¿¡¼¥óËè";
1516 #else
1517                         return "teleport away every 150 turns";
1518 #endif
1519
1520                 }
1521                 case ART_COLLUIN:
1522                 case ART_SEIRYU:
1523                 {
1524 #ifdef JP
1525 return "Á´ÂÑÀ­(20+d20¥¿¡¼¥ó) : 111 ¥¿¡¼¥óËè";
1526 #else
1527                         return "resistance (20+d20 turns) every 111 turns";
1528 #endif
1529
1530                 }
1531                 case ART_HOLCOLLETH:
1532                 {
1533 #ifdef JP
1534 return "¥¹¥ê¡¼¥×(II) : 55 ¥¿¡¼¥óËè";
1535 #else
1536                         return "Sleep II every 55 turns";
1537 #endif
1538
1539                 }
1540                 case ART_THINGOL:
1541                 {
1542 #ifdef JP
1543 return "ËâÎϽ¼Å¶ : 70 ¥¿¡¼¥óËè";
1544 #else
1545                         return "recharge item I every 70 turns";
1546 #endif
1547
1548                 }
1549                 case ART_COLANNON:
1550                 {
1551 #ifdef JP
1552 return "¥Æ¥ì¥Ý¡¼¥È : 45 ¥¿¡¼¥óËè";
1553 #else
1554                         return "teleport every 45 turns";
1555 #endif
1556
1557                 }
1558                 case ART_TOTILA:
1559                 {
1560 #ifdef JP
1561 return "¥Ñ¥Ë¥Ã¥¯¡¦¥â¥ó¥¹¥¿¡¼ : 15 ¥¿¡¼¥óËè";
1562 #else
1563                         return "confuse monster every 15 turns";
1564 #endif
1565
1566                 }
1567                 case ART_CAMMITHRIM:
1568                 {
1569 #ifdef JP
1570 return "¥Þ¥¸¥Ã¥¯¡¦¥ß¥µ¥¤¥ë(2d6) : 2 ¥¿¡¼¥óËè";
1571 #else
1572                         return "magic missile (2d6) every 2 turns";
1573 #endif
1574
1575                 }
1576                 case ART_PAURHACH:
1577                 {
1578 #ifdef JP
1579 return "¥Õ¥¡¥¤¥¢¡¦¥Ü¥ë¥È(9d8) : 8+d8 ¥¿¡¼¥óËè";
1580 #else
1581                         return "fire bolt (9d8) every 8+d8 turns";
1582 #endif
1583
1584                 }
1585                 case ART_PAURNIMMEN:
1586                 {
1587 #ifdef JP
1588 return "¥¢¥¤¥¹¡¦¥Ü¥ë¥È(6d8) : 7+d7 ¥¿¡¼¥óËè";
1589 #else
1590                         return "frost bolt (6d8) every 7+d7 turns";
1591 #endif
1592
1593                 }
1594                 case ART_PAURAEGEN:
1595                 {
1596 #ifdef JP
1597 return "¥µ¥ó¥À¡¼¡¦¥Ü¥ë¥È(4d8) : 5+d5 ¥¿¡¼¥óËè";
1598 #else
1599                         return "lightning bolt (4d8) every 5+d5 turns";
1600 #endif
1601
1602                 }
1603                 case ART_PAURNEN:
1604                 {
1605 #ifdef JP
1606 return "¥¢¥·¥Ã¥É¡¦¥Ü¥ë¥È(5d8) : 6+d6 ¥¿¡¼¥óËè";
1607 #else
1608                         return "acid bolt (5d8) every 6+d6 turns";
1609 #endif
1610
1611                 }
1612                 case ART_FINGOLFIN:
1613                 {
1614 #ifdef JP
1615 return "ËâË¡¤ÎÌð(150) : 90+d90 ¥¿¡¼¥óËè";
1616 #else
1617                         return "a magical arrow (150) every 90+d90 turns";
1618 #endif
1619
1620                 }
1621                 case ART_HOLHENNETH:
1622                 {
1623 #ifdef JP
1624 return "Á´´¶ÃΠ: 55+d55 ¥¿¡¼¥óËè";
1625 #else
1626                         return "detection every 55+d55 turns";
1627 #endif
1628
1629                 }
1630                 case ART_GONDOR:
1631                 {
1632 #ifdef JP
1633 return "ÂÎÎϲóÉü(500) : 500 ¥¿¡¼¥óËè";
1634 #else
1635                         return "heal (700) every 250 turns";
1636 #endif
1637
1638                 }
1639                 case ART_RAZORBACK:
1640                 {
1641 #ifdef JP
1642 return "¥¹¥¿¡¼¡¦¥Ü¡¼¥ë(150) : 1000 ¥¿¡¼¥óËè";
1643 #else
1644                         return "star ball (150) every 1000 turns";
1645 #endif
1646
1647                 }
1648                 case ART_BLADETURNER:
1649                 {
1650 #ifdef JP
1651 return "¥¨¥ì¥á¥ó¥È¤Î¥Ö¥ì¥¹ (300), »Îµ¤¹âÍÈ¡¢½ËÊ¡¡¢ÂÑÀ­";
1652 #else
1653                         return "breathe elements (300), hero, bless, and resistance";
1654 #endif
1655
1656                 }
1657                 case ART_GALADRIEL:
1658                 {
1659 #ifdef JP
1660 return "¥¤¥ë¥ß¥Í¡¼¥·¥ç¥ó : 10+d10 ¥¿¡¼¥óËè";
1661 #else
1662                         return "illumination every 10+d10 turns";
1663 #endif
1664
1665                 }
1666                 case ART_ELENDIL:
1667                 {
1668 #ifdef JP
1669 return "ËâË¡¤ÎÃϿޤȸ÷ : 50+d50 ¥¿¡¼¥óËè";
1670 #else
1671                         return "magic mapping and light every 50+d50 turns";
1672 #endif
1673
1674                 }
1675                 case ART_THRAIN:
1676                 {
1677 #ifdef JP
1678 return "ÂÎÎϤȰú¤­Âؤ¨¤ËÀéΤ´ã¤Èµ¢´Ô";
1679 #else
1680                         return "clairvoyance and recall, draining you";
1681 #endif
1682
1683                 }
1684                 case ART_INGWE:
1685                 case ART_YATA:
1686                 {
1687 #ifdef JP
1688 return "¼Ù°­Â໶(x5) : 200+d200 ¥¿¡¼¥óËè";
1689 #else
1690                         return "dispel evil (x5) every 200+d200 turns";
1691 #endif
1692
1693                 }
1694                 case ART_FUNDIN:
1695                 {
1696 #ifdef JP
1697 return "¼Ù°­Â໶(x5) : 100+d100 ¥¿¡¼¥óËè";
1698 #else
1699                         return "dispel evil (x5) every 100+d100 turns";
1700 #endif
1701
1702                 }
1703                 case ART_CARLAMMAS:
1704                 case ART_VIOLET:
1705                 {
1706 #ifdef JP
1707 return "Âмٰ­·ë³¦ : 225+d225 ¥¿¡¼¥óËè";
1708 #else
1709                         return "protection from evil every 225+d225 turns";
1710 #endif
1711
1712                 }
1713                 case ART_BARAHIR:
1714                 {
1715 #ifdef JP
1716 return "Ã⩹¶·â(100) : 100+d100 ¥¿¡¼¥óËè";
1717 #else
1718                         return "a strangling attack (100) every 100+d100 turns";
1719 #endif
1720
1721                 }
1722                 case ART_TULKAS:
1723                 {
1724 #ifdef JP
1725 return "¥¹¥Ô¡¼¥É(75+d75¥¿¡¼¥ó) : 100+d100 ¥¿¡¼¥óËè";
1726 #else
1727                         return "haste self (75+d75 turns) every 150+d150 turns";
1728 #endif
1729
1730                 }
1731                 case ART_NARYA:
1732                 {
1733 #ifdef JP
1734 return "µðÂç¥Õ¥¡¥¤¥¢¡¦¥Ü¡¼¥ë(300) : 225+d225 ¥¿¡¼¥óËè";
1735 #else
1736                         return "large fire ball (300) every 225+d225 turns";
1737 #endif
1738
1739                 }
1740                 case ART_NENYA:
1741                 {
1742 #ifdef JP
1743 return "µðÂ祢¥¤¥¹¡¦¥Ü¡¼¥ë(400) : 325+d325 ¥¿¡¼¥óËè";
1744 #else
1745                         return "large frost ball (400) every 325+d325 turns";
1746 #endif
1747
1748                 }
1749                 case ART_VILYA:
1750                 case ART_GOURYU:
1751                 {
1752 #ifdef JP
1753 return "µðÂ祵¥ó¥À¡¼¡¦¥Ü¡¼¥ë(500) : 425+d425 ¥¿¡¼¥óËè";
1754 #else
1755                         return "large lightning ball (500) every 425+d425 turns";
1756 #endif
1757
1758                 }
1759                 case ART_POWER:
1760                 case ART_AHO:
1761                 {
1762 #ifdef JP
1763 return "¿®¤¸Æñ¤¤¤³¤È : 450+d450 ¥¿¡¼¥óËè";
1764 #else
1765                         return "bizarre things every 450+d450 turns";
1766 #endif
1767
1768                 }
1769                 case ART_DOR: case ART_TERROR: case ART_STONEMASK:
1770                 {
1771 #ifdef JP
1772 return "Á´Êý¸þ¤Ø¤Î¶²Éݤθ÷Àþ";
1773 #else
1774                         return "rays of fear in every direction";
1775 #endif
1776
1777                 }
1778                 case ART_PALANTIR:
1779                 {
1780 #ifdef JP
1781 return "¤³¤Î³¬¤Ë¤¤¤ë¥æ¥Ë¡¼¥¯¥â¥ó¥¹¥¿¡¼¤òɽ¼¨ : 200¥¿¡¼¥óËè";
1782 #else
1783                         return "list of the uniques on the level every 200 turns";
1784 #endif
1785                 }
1786                 case ART_STONE_LORE:
1787                 {
1788 #ifdef JP
1789 return "´í¸±¤òȼ¤¦´ÕÄê : ¤¤¤Ä¤Ç¤â";
1790 #else
1791                         return "perilous identify every turn";
1792 #endif
1793                 }
1794                 case ART_FARAMIR:
1795                 {
1796 #ifdef JP
1797 return "³²Ãî¤Î¶î½ü : 55+d55¥¿¡¼¥óËè";
1798 #else
1799                         return "dispel small life every 55+d55 turns";
1800 #endif
1801                 }
1802                 case ART_BOROMIR:
1803                 {
1804 #ifdef JP
1805 return "¥â¥ó¥¹¥¿¡¼¶²¹² : 40+d40¥¿¡¼¥óËè";
1806 #else
1807                         return "frighten monsters every 40+d40 turns";
1808 #endif
1809                 }
1810                 case ART_HIMRING:
1811                 {
1812 #ifdef JP
1813 return "Âмٰ­·ë³¦ : 200+d200 ¥¿¡¼¥óËè";
1814 #else
1815                         return "protection from evil every 200 + d200 turns";
1816 #endif
1817                 }
1818                 case ART_ICANUS:
1819                 {
1820 #ifdef JP
1821 return "ËâÎϤÎÌð(120) : 120+d120 ¥¿¡¼¥óËè";
1822 #else
1823                         return "a mana bolt (120) every 120+d120 turns";
1824 #endif
1825                 }
1826                 case ART_HURIN:
1827                 {
1828 #ifdef JP
1829 return "»Îµ¤¹âÍÈ, ¥¹¥Ô¡¼¥É(50+d50¥¿¡¼¥ó) : 100+d200 ¥¿¡¼¥óËè";
1830 #else
1831                         return "hero and +10 to speed (50) every 100+200d turns";
1832 #endif
1833                 }
1834                 case ART_GIL_GALAD:
1835                 {
1836 #ifdef JP
1837 return "âÁ¤·¤¤¸÷ : 250 ¥¿¡¼¥óËè";
1838 #else
1839                         return "blinding light every 250 turns";
1840 #endif
1841                 }
1842                 case ART_YENDOR:
1843                 {
1844 #ifdef JP
1845 return "ËâÎϽ¼Å¶ : 200 ¥¿¡¼¥óËè";
1846 #else
1847                         return "Recharge item every 200 turns";
1848 #endif
1849                 }
1850                 case ART_MURAMASA:
1851                 {
1852 #ifdef JP
1853 return "ÏÓÎϤξ徺 : ³ÎΨ50%¤Ç²õ¤ì¤ë¡£";
1854 #else
1855                         return "Increase STR (destroyed 50%)";
1856 #endif
1857                 }
1858                 case ART_FLY_STONE:
1859                 {
1860 #ifdef JP
1861 return "ËâÎϤÎÍò(400) : 250+d250¥¿¡¼¥óËè";
1862 #else
1863                         return "a mana storm every 250+d250 turns";
1864 #endif
1865                 }
1866                 case ART_JONES:
1867                 {
1868 #ifdef JP
1869 return "ʪÂΤò°ú¤­´ó¤»¤ë(½ÅÎÌ25kg¤Þ¤Ç) : 25+d25¥¿¡¼¥óËè";
1870 #else
1871                         return "a telekinesis (500 lb) every 25+d25 turns";
1872 #endif
1873                 }
1874                 case ART_ARRYU:
1875                 {
1876 #ifdef JP
1877 return "¥Ï¥¦¥ó¥É¾¤´­ : 300+d150¥¿¡¼¥óËè";
1878 #else
1879                         return "summon hound every 300+d150 turns";
1880 #endif
1881                 }
1882                 case ART_GAEBOLG:
1883                 {
1884 #ifdef JP
1885 return "µðÂ祹¥¿¡¼¡¦¥Ü¡¼¥ë(200) : 200+d200 ¥¿¡¼¥óËè";
1886 #else
1887                         return "large star ball (200) every 200+d200 turns";
1888 #endif
1889
1890                 }
1891                 case ART_INROU:
1892                 {
1893 #ifdef JP
1894 return "Îã¤Î¥¢¥ì : 150+d150 ¥¿¡¼¥óËè";
1895 #else
1896                         return "reveal your identity every 150+d150 turns";
1897 #endif
1898
1899                 }
1900                 case ART_HYOUSIGI:
1901                 {
1902 #ifdef JP
1903 return "Çï»ÒÌÚ¤òÂǤÁ¤Ê¤é¤¹ : ¤¤¤Ä¤Ç¤â";
1904 #else
1905                         return "beat wooden clappers every turn";
1906 #endif
1907
1908                 }
1909                 case ART_MATOI:
1910                 case ART_AEGISFANG:
1911                 {
1912 #ifdef JP
1913 return "»Îµ¤¹âÍÈ : 30+d30¥¿¡¼¥óËè";
1914 #else
1915                         return "heroism every 30+d30 turns";
1916 #endif
1917
1918                 }
1919
1920                 case ART_EARENDIL:
1921                 {
1922 #ifdef JP
1923 return "Ìþ¤· : 100¥¿¡¼¥óËè";
1924 #else
1925                         return "curing every 100 turns";
1926 #endif
1927
1928                 }
1929
1930                 case ART_BOLISHOI:
1931                 {
1932 #ifdef JP
1933 return "ưʪ̥λ : 200¥¿¡¼¥óËè";
1934 #else
1935                         return "charm animal every 200 turns";
1936 #endif
1937
1938                 }
1939                 case ART_ARUNRUTH:
1940                 {
1941 #ifdef JP
1942 return "¥¢¥¤¥¹¡¦¥Ü¥ë¥È(12d8) : 50 ¥¿¡¼¥óËè";
1943 #else
1944                         return "frost bolt (12d8) every 50 turns";
1945 #endif
1946
1947                 }
1948                 case ART_BLOOD:
1949                 {
1950 #ifdef JP
1951 return "°À­Êѹ¹ : 3333 ¥¿¡¼¥óËè";
1952 #else
1953                         return "change zokusei every 3333 turns";
1954 #endif
1955
1956                 }
1957                 case ART_NUMAHOKO:
1958                 {
1959 #ifdef JP
1960 return "¥¦¥©¡¼¥¿¡¼¡¦¥Ü¡¼¥ë(200) : 250 ¥¿¡¼¥óËè";
1961 #else
1962                         return "water ball (200) every 250 turns";
1963 #endif
1964
1965                 }
1966                 case ART_KESHO:
1967                 {
1968 #ifdef JP
1969 return "»Í¸ÔƧ¤ß : 100+d100¥¿¡¼¥óËè";
1970 #else
1971                         return "shiko every 100+d100 turns";
1972 #endif
1973
1974                 }
1975                 case ART_MOOK:
1976                 {
1977 #ifdef JP
1978 return "Î䵤¤ÎÂÑÀ­ : 40+d40¥¿¡¼¥óËè";
1979 #else
1980                         return "resist cold every 40+d40 turns";
1981 #endif
1982
1983                 }
1984                 case ART_JIZO:
1985                 {
1986 #ifdef JP
1987 return "Âý¤ÎÂç·²¾¤´­ : 300+d150¥¿¡¼¥óËè";
1988 #else
1989                         return "summon octopus every 300+d150 turns";
1990 #endif
1991                 }
1992                 case ART_NIGHT:
1993                 {
1994 #ifdef JP
1995 return "°Å¹õ¤ÎÍò(250) : 150+d150 ¥¿¡¼¥óËè";
1996 #else
1997                         return "darkness storm (250) every 150+d150 turns";
1998 #endif
1999
2000                 }
2001         }
2002
2003
2004         if ((o_ptr->tval == TV_POLEARM) && (o_ptr->sval == SV_TSURIZAO))
2005         {
2006 #ifdef JP
2007 return "Äà¤ê¤ò¤¹¤ë : ¤¤¤Ä¤Ç¤â";
2008 #else
2009                 return "fishing : every time";
2010 #endif
2011
2012         }
2013
2014         if ((o_ptr->tval > TV_CAPTURE) && (o_ptr->xtra3 == ESSENCE_TMP_RES_ACID))
2015         {
2016 #ifdef JP
2017 return "»À¤Ø¤ÎÂÑÀ­ : 50+d50¥¿¡¼¥óËè";
2018 #else
2019                                 return "resist acid every 50+d50 turns";
2020 #endif
2021         }
2022
2023         if ((o_ptr->tval > TV_CAPTURE) && (o_ptr->xtra3 == ESSENCE_TMP_RES_ELEC))
2024         {
2025 #ifdef JP
2026 return "ÅÅ·â¤Ø¤ÎÂÑÀ­ : 50+d50¥¿¡¼¥óËè";
2027 #else
2028                                 return "resist elec every 50+d50 turns";
2029 #endif
2030         }
2031
2032         if ((o_ptr->tval > TV_CAPTURE) && (o_ptr->xtra3 == ESSENCE_TMP_RES_FIRE))
2033         {
2034 #ifdef JP
2035 return "²Ð¤Ø¤ÎÂÑÀ­ : 50+d50¥¿¡¼¥óËè";
2036 #else
2037                                 return "resist fire every 50+d50 turns";
2038 #endif
2039         }
2040
2041         if ((o_ptr->tval > TV_CAPTURE) && (o_ptr->xtra3 == ESSENCE_TMP_RES_COLD))
2042         {
2043 #ifdef JP
2044 return "Î䵤¤Ø¤ÎÂÑÀ­ : 50+d50¥¿¡¼¥óËè";
2045 #else
2046                                 return "resist cold every 50+d50 turns";
2047 #endif
2048         }
2049
2050         if ((o_ptr->tval > TV_CAPTURE) && (o_ptr->xtra3 == ESSENCE_EARTHQUAKE))
2051         {
2052 #ifdef JP
2053 return "ÃÏ¿Ì : 100+d100 ¥¿¡¼¥óËè";
2054 #else
2055                 return "earthquake every 100+d100 turns";
2056 #endif
2057         }
2058
2059         if (o_ptr->name2 == EGO_TRUMP)
2060         {
2061 #ifdef JP
2062 return "¥Æ¥ì¥Ý¡¼¥È : 50+d50 ¥¿¡¼¥óËè";
2063 #else
2064                 return "teleport every 50+d50 turns";
2065 #endif
2066
2067         }
2068
2069         if (o_ptr->name2 == EGO_LITE_ILLUMINATION)
2070         {
2071 #ifdef JP
2072 return "¥¤¥ë¥ß¥Í¡¼¥·¥ç¥ó : 10+d10 ¥¿¡¼¥óËè";
2073 #else
2074                         return "illumination every 10+d10 turns";
2075 #endif
2076         }
2077
2078         else if (o_ptr->name2 == EGO_EARTHQUAKES)
2079         {
2080 #ifdef JP
2081 return "ÃÏ¿Ì : 100+d100 ¥¿¡¼¥óËè";
2082 #else
2083                 return "earthquake every 100+d100 turns";
2084 #endif
2085
2086         }
2087
2088         else if (o_ptr->name2 == EGO_JUMP)
2089         {
2090 #ifdef JP
2091 return "¥·¥ç¡¼¥È¡¦¥Æ¥ì¥Ý¡¼¥È : 10+d10 ¥¿¡¼¥óËè";
2092 #else
2093                 return "blink every 10+d10 turns";
2094 #endif
2095
2096         }
2097
2098         if (o_ptr->tval == TV_RING)
2099         {
2100                 if (o_ptr->name2)
2101                 {
2102                         switch (o_ptr->name2)
2103                         {
2104                         case EGO_RING_HERO:
2105 #ifdef JP
2106 return "»Îµ¤¹âÍÈ : 100+d100¥¿¡¼¥óËè";
2107 #else
2108                                 return "heroism every 100+d100 turns";
2109 #endif
2110                         case EGO_RING_MAGIC_MIS:
2111 #ifdef JP
2112 return "¥Þ¥¸¥Ã¥¯¡¦¥ß¥µ¥¤¥ë(2d6) : 2 ¥¿¡¼¥óËè";
2113 #else
2114                         return "magic missile (2d6) every 2 turns";
2115 #endif
2116                         case EGO_RING_FIRE_BOLT:
2117 #ifdef JP
2118 return "¥Õ¥¡¥¤¥¢¡¦¥Ü¥ë¥È(9d8) : 8+d8 ¥¿¡¼¥óËè";
2119 #else
2120                         return "fire bolt (9d8) every 8+d8 turns";
2121 #endif
2122                         case EGO_RING_COLD_BOLT:
2123 #ifdef JP
2124 return "¥¢¥¤¥¹¡¦¥Ü¥ë¥È(6d8) : 7+d7 ¥¿¡¼¥óËè";
2125 #else
2126                                 return "frost bolt (6d8) every 7+d7 turns";
2127 #endif
2128                         case EGO_RING_ELEC_BOLT:
2129 #ifdef JP
2130 return "¥µ¥ó¥À¡¼¡¦¥Ü¥ë¥È(4d8) : 5+d5 ¥¿¡¼¥óËè";
2131 #else
2132                                 return "lightning bolt (4d8) every 5+d5 turns";
2133 #endif
2134                         case EGO_RING_ACID_BOLT:
2135 #ifdef JP
2136 return "¥¢¥·¥Ã¥É¡¦¥Ü¥ë¥È(5d8) : 6+d6 ¥¿¡¼¥óËè";
2137 #else
2138                                 return "acid bolt (5d8) every 6+d6 turns";
2139 #endif
2140                         case EGO_RING_MANA_BOLT:
2141 #ifdef JP
2142 return "ËâÎϤÎÌð(120) : 120+d120 ¥¿¡¼¥óËè";
2143 #else
2144                         return "a mana bolt (120) every 120+d120 turns";
2145 #endif
2146                         case EGO_RING_FIRE_BALL:
2147 #ifdef JP
2148 return "¥Õ¥¡¥¤¥¢¡¦¥Ü¡¼¥ë (100) : 80+d80 ¥¿¡¼¥óËè";
2149 #else
2150                                 return "fire ball (100) every 80+d80 turns";
2151 #endif
2152                         case EGO_RING_COLD_BALL:
2153 #ifdef JP
2154 return "¥³¡¼¥ë¥É¡¦¥Ü¡¼¥ë (100) : 80+d80 ¥¿¡¼¥óËè";
2155 #else
2156                                 return "cold ball (100) every 80+d80 turns";
2157 #endif
2158                         case EGO_RING_ELEC_BALL:
2159 #ifdef JP
2160 return "¥µ¥ó¥À¡¼¡¦¥Ü¡¼¥ë (100) : 80+d80 ¥¿¡¼¥óËè";
2161 #else
2162                                 return "elec ball (100) every 80+d80 turns";
2163 #endif
2164                         case EGO_RING_ACID_BALL:
2165 #ifdef JP
2166 return "¥¢¥·¥Ã¥É¡¦¥Ü¡¼¥ë (100) : 80+d80 ¥¿¡¼¥óËè";
2167 #else
2168                                 return "acid ball (100) every 80+d80 turns";
2169 #endif
2170                         case EGO_RING_MANA_BALL:
2171 #ifdef JP
2172 return "ËâÎϤÎÍò (250) : 300 ¥¿¡¼¥óËè";
2173 #else
2174                                 return "mana storm (250) every 300 turns";
2175 #endif
2176                         case EGO_RING_DRAGON_F:
2177                                 if (o_ptr->sval == SV_RING_FLAMES)
2178 #ifdef JP
2179 return "²Ð±ê¤Î¥Ö¥ì¥¹¤È²Ð¤Ø¤ÎÂÑÀ­";
2180 #else
2181                                         return "breath of fire and resist fire";
2182 #endif
2183                                 else
2184 #ifdef JP
2185 return "²Ð±ê¤Î¥Ö¥ì¥¹ (200) : 250 ¥¿¡¼¥óËè";
2186 #else
2187                                         return "fire breath (200) every 250 turns";
2188 #endif
2189                         case EGO_RING_DRAGON_C:
2190                                 if (o_ptr->sval == SV_RING_ICE)
2191 #ifdef JP
2192 return "Î䵤¤Î¥Ö¥ì¥¹¤ÈÎ䵤¤Ø¤ÎÂÑÀ­";
2193 #else
2194                                         return "breath of cold and resist cold";
2195 #endif
2196                                 else
2197 #ifdef JP
2198 return "Î䵤¤Î¥Ö¥ì¥¹ (200) : 250 ¥¿¡¼¥óËè";
2199 #else
2200                                         return "cold breath (200) every 250 turns";
2201 #endif
2202                         case EGO_RING_M_DETECT:
2203 #ifdef JP
2204 return "Á´¥â¥ó¥¹¥¿¡¼´¶ÃΠ: 150 ¥¿¡¼¥óËè";
2205 #else
2206                                 return "detect all monsters every 150 turns";
2207 #endif
2208                         case EGO_RING_D_SPEED:
2209 #ifdef JP
2210 return "¥¹¥Ô¡¼¥É(15+d30¥¿¡¼¥ó) : 100 ¥¿¡¼¥óËè";
2211 #else
2212                                 return "haste self (15+d30 turns) every 100 turns";
2213 #endif
2214                         case EGO_RING_BERSERKER:
2215 #ifdef JP
2216 return "¶¸Àï»Î²½(25+d25¥¿¡¼¥ó) : 75+d75 ¥¿¡¼¥óËè";
2217 #else
2218                                 return "berserk (25+d25 turns) every 75+d75 turns";
2219 #endif
2220                         case EGO_RING_TELE_AWAY:
2221 #ifdef JP
2222 return "¥Æ¥ì¥Ý¡¼¥È¡¦¥¢¥¦¥§¥¤ : 150 ¥¿¡¼¥óËè";
2223 #else
2224                         return "teleport away every 150 turns";
2225 #endif
2226                         case EGO_RING_TRUE:
2227 #ifdef JP
2228 return "»Îµ¤¹âÍÈ¡¢½ËÊ¡¡¢µæ¶Ë¤ÎÂÑÀ­";
2229 #else
2230                         return "hero, bless, and ultimate resistance";
2231 #endif
2232                         }
2233                 }
2234                 switch (o_ptr->sval)
2235                 {
2236                         case SV_RING_FLAMES:
2237 #ifdef JP
2238 return "¥Õ¥¡¥¤¥¢¡¦¥Ü¡¼¥ë¤È²Ð¤Ø¤ÎÂÑÀ­";
2239 #else
2240                                 return "ball of fire and resist fire";
2241 #endif
2242
2243                         case SV_RING_ICE:
2244 #ifdef JP
2245 return "¥³¡¼¥ë¥É¡¦¥Ü¡¼¥ë¤ÈÎ䵤¤Ø¤ÎÂÑÀ­";
2246 #else
2247                                 return "ball of cold and resist cold";
2248 #endif
2249
2250                         case SV_RING_ACID:
2251 #ifdef JP
2252 return "¥¢¥·¥Ã¥É¡¦¥Ü¡¼¥ë¤È»À¤Ø¤ÎÂÑÀ­";
2253 #else
2254                                 return "ball of acid and resist acid";
2255 #endif
2256
2257                         case SV_RING_ELEC:
2258 #ifdef JP
2259 return "¥µ¥ó¥À¡¼¡¦¥Ü¡¼¥ë¤ÈÅÅ·â¤Ø¤ÎÂÑÀ­";
2260 #else
2261                                 return "ball of elec and resist elec";
2262 #endif
2263
2264                         default:
2265                                 return NULL;
2266                 }
2267         }
2268
2269         if (o_ptr->tval == TV_AMULET)
2270         {
2271                 if (o_ptr->name2)
2272                 {
2273                         switch (o_ptr->name2)
2274                         {
2275                         case EGO_AMU_IDENT:
2276 #ifdef JP
2277 return "´ÕÄê : 10 ¥¿¡¼¥óËè";
2278 #else
2279                                 return "identify every 10 turns";
2280 #endif
2281                                 break;
2282                         case EGO_AMU_CHARM:
2283 #ifdef JP
2284 return "¥â¥ó¥¹¥¿¡¼Ì¥Î» : 200 ¥¿¡¼¥óËè";
2285 #else
2286                                 return "charm monster every 200 turns";
2287 #endif
2288                                 break;
2289                         case EGO_AMU_JUMP:
2290 #ifdef JP
2291 return "¥·¥ç¡¼¥È¡¦¥Æ¥ì¥Ý¡¼¥È : 10+d10 ¥¿¡¼¥óËè";
2292 #else
2293                                 return "blink every 10+d10 turns";
2294 #endif
2295                                 break;
2296                         case EGO_AMU_TELEPORT:
2297 #ifdef JP
2298 return "¥Æ¥ì¥Ý¡¼¥È : 50+d50 ¥¿¡¼¥óËè";
2299 #else
2300                                 return "teleport every 50+d50 turns";
2301 #endif
2302                                 break;
2303                         case EGO_AMU_D_DOOR:
2304 #ifdef JP
2305 return "¼¡¸µ¤ÎÈâ : 200 ¥¿¡¼¥óËè";
2306 #else
2307                                 return "dimension door every 200 turns";
2308 #endif
2309                                 break;
2310                         case EGO_AMU_RES_FIRE_:
2311 #ifdef JP
2312 return "²Ð±ê¤Ø¤ÎÂÑÀ­ : 50+d50¥¿¡¼¥óËè";
2313 #else
2314                                 return "resist fire every 50+d50 turns";
2315 #endif
2316                                 break;
2317                         case EGO_AMU_RES_COLD_:
2318 #ifdef JP
2319 return "Î䵤¤Ø¤ÎÂÑÀ­ : 50+d50¥¿¡¼¥óËè";
2320 #else
2321                                 return "resist cold every 50+d50 turns";
2322 #endif
2323                                 break;
2324                         case EGO_AMU_RES_ELEC_:
2325 #ifdef JP
2326 return "ÅÅ·â¤Ø¤ÎÂÑÀ­ : 50+d50¥¿¡¼¥óËè";
2327 #else
2328                                 return "resist elec every 50+d50 turns";
2329 #endif
2330                                 break;
2331                         case EGO_AMU_RES_ACID_:
2332 #ifdef JP
2333 return "»À¤Ø¤ÎÂÑÀ­ : 50+d50¥¿¡¼¥óËè";
2334 #else
2335                                 return "resist acid every 50+d50 turns";
2336 #endif
2337                                 break;
2338                         case EGO_AMU_DETECTION:
2339 #ifdef JP
2340 return "Á´´¶ÃΠ: 55+d55¥¿¡¼¥óËè";
2341 #else
2342                                 return "detect all floor every 55+d55 turns";
2343 #endif
2344                                 break;
2345                         }
2346                 }
2347         }
2348
2349         if (o_ptr->tval == TV_WHISTLE)
2350         {
2351 #ifdef JP
2352 return "¥Ú¥Ã¥È¸Æ¤Ó´ó¤» : 100+d100¥¿¡¼¥óËè";
2353 #else
2354                 return "call pet every 100+d100 turns";
2355 #endif
2356         }
2357
2358         if (o_ptr->tval == TV_CAPTURE)
2359         {
2360 #ifdef JP
2361 return "¥â¥ó¥¹¥¿¡¼¤òÊᤨ¤ë¡¢Ëô¤Ï²òÊü¤¹¤ë¡£";
2362 #else
2363                 return "captures or releases a monster.";
2364 #endif
2365         }
2366
2367         /* Require dragon scale mail */
2368 #ifdef JP
2369 if (o_ptr->tval != TV_DRAG_ARMOR) return ("´ñ̯¤Ê¸÷");
2370 #else
2371         if (o_ptr->tval != TV_DRAG_ARMOR) return ("a strange glow");
2372 #endif
2373
2374
2375         /* Branch on the sub-type */
2376         switch (o_ptr->sval)
2377         {
2378                 case SV_DRAGON_BLUE:
2379                 {
2380 #ifdef JP
2381 return "°ðºÊ¤Î¥Ö¥ì¥¹(100) : 150+d150 ¥¿¡¼¥óËè";
2382 #else
2383                         return "breathe lightning (100) every 150+d150 turns";
2384 #endif
2385
2386                 }
2387                 case SV_DRAGON_WHITE:
2388                 {
2389 #ifdef JP
2390 return "Î䵤¤Î¥Ö¥ì¥¹(110) : 150+d150 ¥¿¡¼¥óËè";
2391 #else
2392                         return "breathe frost (110) every 150+d150 turns";
2393 #endif
2394
2395                 }
2396                 case SV_DRAGON_BLACK:
2397                 {
2398 #ifdef JP
2399 return "»À¤Î¥Ö¥ì¥¹(130) : 150+d150 ¥¿¡¼¥óËè";
2400 #else
2401                         return "breathe acid (130) every 150+d150 turns";
2402 #endif
2403
2404                 }
2405                 case SV_DRAGON_GREEN:
2406                 {
2407 #ifdef JP
2408 return "ÆǤΥ¬¥¹¤Î¥Ö¥ì¥¹(150) : 180+d180 ¥¿¡¼¥óËè";
2409 #else
2410                         return "breathe poison gas (150) every 180+d180 turns";
2411 #endif
2412
2413                 }
2414                 case SV_DRAGON_RED:
2415                 {
2416 #ifdef JP
2417 return "²Ð±ê¤Î¥Ö¥ì¥¹(200) : 200+d200 ¥¿¡¼¥óËè";
2418 #else
2419                         return "breathe fire (200) every 200+d200 turns";
2420 #endif
2421
2422                 }
2423                 case SV_DRAGON_MULTIHUED:
2424                 {
2425 #ifdef JP
2426 return "Ëü¿§¤Î¥Ö¥ì¥¹(250) : 200+d200 ¥¿¡¼¥óËè";
2427 #else
2428                         return "breathe multi-hued (250) every 200+d200 turns";
2429 #endif
2430
2431                 }
2432                 case SV_DRAGON_BRONZE:
2433                 {
2434 #ifdef JP
2435 return "º®Íð¤Î¥Ö¥ì¥¹(120) : 180+d180 ¥¿¡¼¥óËè";
2436 #else
2437                         return "breathe confusion (120) every 180+d180 turns";
2438 #endif
2439
2440                 }
2441                 case SV_DRAGON_GOLD:
2442                 {
2443 #ifdef JP
2444 return "¹ì²»¤Î¥Ö¥ì¥¹(130) : 180+d180 ¥¿¡¼¥óËè";
2445 #else
2446                         return "breathe sound (130) every 180+d180 turns";
2447 #endif
2448
2449                 }
2450                 case SV_DRAGON_CHAOS:
2451                 {
2452 #ifdef JP
2453 return "¥«¥ª¥¹/Îô²½¤Î¥Ö¥ì¥¹(220) : 200+d200 ¥¿¡¼¥óËè";
2454 #else
2455                         return "breathe chaos/disenchant (220) every 200+d200 turns";
2456 #endif
2457
2458                 }
2459                 case SV_DRAGON_LAW:
2460                 {
2461 #ifdef JP
2462 return "¹ì²»/ÇËÊҤΥ֥쥹(230) : 200+d200 ¥¿¡¼¥óËè";
2463 #else
2464                         return "breathe sound/shards (230) every 200+d200 turns";
2465 #endif
2466
2467                 }
2468                 case SV_DRAGON_BALANCE:
2469                 {
2470 #ifdef JP
2471 return "¥Ð¥é¥ó¥¹¤Î¥Ö¥ì¥¹ (250) 200+d200 ¥¿¡¼¥óËè";
2472 #else
2473                         return "breathe balance (250) every 200+d200 turns";
2474 #endif
2475
2476                 }
2477                 case SV_DRAGON_SHINING:
2478                 {
2479 #ifdef JP
2480 return "Á®¸÷/°Å¹õ¤Î¥Ö¥ì¥¹(200) : 200+d200 ¥¿¡¼¥óËè";
2481 #else
2482                         return "breathe light/darkness (200) every 200+d200 turns";
2483 #endif
2484
2485                 }
2486                 case SV_DRAGON_POWER:
2487                 {
2488 #ifdef JP
2489 return "¥¨¥ì¥á¥ó¥È¤Î¥Ö¥ì¥¹(300) : 200+d200 ¥¿¡¼¥óËè";
2490 #else
2491                         return "breathe the elements (300) every 200+d200 turns";
2492 #endif
2493
2494                 }
2495         }
2496
2497         /* Oops */
2498 #ifdef JP
2499 return "¶õµ¤¤Î©";
2500 #else
2501         return "breathe air";
2502 #endif
2503
2504 }
2505
2506
2507 /*
2508  * Describe a "fully identified" item
2509  */
2510 bool identify_fully_aux(object_type *o_ptr)
2511 {
2512         int                     i = 0, j, k;
2513
2514         u32b f1, f2, f3;
2515
2516         cptr            info[128];
2517         u32b flag;
2518
2519         /* Extract the flags */
2520         object_flags(o_ptr, &f1, &f2, &f3);
2521
2522         if( o_ptr->name1)
2523         {
2524                 char temp[70*20];
2525
2526                 roff_to_buf( a_text + a_info[ o_ptr->name1 ].text ,77-15,temp);
2527                 for(j=0;temp[j];j+=1+strlen(&temp[j]))
2528                 { info[i]=&temp[j];i++;}
2529         }
2530
2531         /* Mega-Hack -- describe activation */
2532         if (f3 & (TR3_ACTIVATE))
2533         {
2534 #ifdef JP
2535 info[i++] = "»ÏÆ°¤·¤¿¤È¤­¤Î¸ú²Ì...";
2536 #else
2537                 info[i++] = "It can be activated for...";
2538 #endif
2539
2540                 info[i++] = item_activation(o_ptr);
2541 #ifdef JP
2542 info[i++] = "...¤¿¤À¤·ÁõÈ÷¤·¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£";
2543 #else
2544                 info[i++] = "...if it is being worn.";
2545 #endif
2546
2547         }
2548
2549         /* Figurines, a hack */
2550         if (o_ptr->tval == TV_FIGURINE)
2551         {
2552 #ifdef JP
2553 info[i++] = "¤½¤ì¤ÏÅꤲ¤¿»þ¥Ú¥Ã¥È¤ËÊѲ½¤¹¤ë¡£";
2554 #else
2555                 info[i++] = "It will transform into a pet when thrown.";
2556 #endif
2557
2558         }
2559
2560         /* Figurines, a hack */
2561         if (o_ptr->name1 == ART_STONEMASK)
2562         {
2563 #ifdef JP
2564 info[i++] = "¤½¤ì¤òÁõÈ÷¤·¤¿¼Ô¤ÏµÛ·ìµ´¤Ë¤Ê¤ë¡£";
2565 #else
2566                 info[i++] = "It makes you turn into a vampire permanently.";
2567 #endif
2568
2569         }
2570
2571         if ((o_ptr->tval == TV_SWORD) && (o_ptr->sval == SV_DOKUBARI))
2572         {
2573 #ifdef JP
2574 info[i++] = "¤½¤ì¤ÏÁê¼ê¤ò°ì·â¤ÇÅݤ¹¤³¤È¤¬¤¢¤ë¡£";
2575 #else
2576                 info[i++] = "It will attempts to kill a monster instantly.";
2577 #endif
2578
2579         }
2580
2581         if ((o_ptr->tval == TV_POLEARM) && (o_ptr->sval == SV_DEATH_SCYTHE))
2582         {
2583 #ifdef JP
2584 info[i++] = "¤½¤ì¤Ï¼«Ê¬¼«¿È¤Ë¹¶·â¤¬Ê֤äƤ¯¤ë¤³¤È¤¬¤¢¤ë¡£";
2585 #else
2586                 info[i++] = "It strikes yourself sometimes.";
2587 #endif
2588
2589 #ifdef JP
2590 info[i++] = "¤½¤ì¤Ï̵Ũ¤Î¥Ð¥ê¥¢¤òÀÚ¤êÎö¤¯¡£";
2591 #else
2592                 info[i++] = "It will always penetrates invulnerability barrier.";
2593 #endif
2594         }
2595
2596         if (o_ptr->name2 == EGO_2HAND)
2597         {
2598 #ifdef JP
2599 info[i++] = "¤½¤ì¤ÏÆóÅáή¤Ç¤ÎÌ¿ÃæΨ¤ò¸þ¾å¤µ¤»¤ë¡£";
2600 #else
2601                 info[i++] = "It affects your ability to hit when you are wielding two weapons.";
2602 #endif
2603
2604         }
2605
2606         if (o_ptr->name2 == EGO_RING_WIZARD)
2607         {
2608 #ifdef JP
2609 info[i++] = "¤½¤ì¤ÏËâË¡¤ÎÆñ°×ÅÙ¤ò²¼¤²¤ë¡£";
2610 #else
2611                 info[i++] = "It affects your ability to use magic devices.";
2612 #endif
2613         }
2614
2615         if (o_ptr->name2 == EGO_AMU_FOOL)
2616         {
2617 #ifdef JP
2618 info[i++] = "¤½¤ì¤ÏËâË¡¤ÎÆñ°×ÅÙ¤ò¾å¤²¤ë¡£";
2619 #else
2620                 info[i++] = "It prevents you from using magic items.";
2621 #endif
2622         }
2623
2624         if (o_ptr->name2 == EGO_RING_THROW)
2625         {
2626 #ifdef JP
2627 info[i++] = "¤½¤ì¤Ïʪ¤ò¶¯¤¯Åꤲ¤ë¤³¤È¤ò²Äǽ¤Ë¤¹¤ë¡£";
2628 #else
2629                 info[i++] = "It provides great strength when you throw an item.";
2630 #endif
2631         }
2632
2633         if (o_ptr->name2 == EGO_AMU_NAIVETY)
2634         {
2635 #ifdef JP
2636 info[i++] = "¤½¤ì¤ÏËâË¡Äñ¹³ÎϤò²¼¤²¤ë¡£";
2637 #else
2638                 info[i++] = "It decreases your magic resistance.";
2639 #endif
2640         }
2641
2642         if (o_ptr->tval == TV_STATUE)
2643         {
2644                 monster_race *r_ptr = &r_info[o_ptr->pval];
2645
2646                 if (o_ptr->pval == MON_BULLGATES)
2647 #ifdef JP
2648                         info[i++] = "¤½¤ì¤ÏÉô²°¤Ë¾þ¤ë¤ÈÃѤº¤«¤·¤¤¡£";
2649 #else
2650                         info[i++] = "It is shameful.";
2651 #endif
2652                 else if ( r_ptr->flags2 & (RF2_ELDRITCH_HORROR))
2653 #ifdef JP
2654                         info[i++] = "¤½¤ì¤ÏÉô²°¤Ë¾þ¤ë¤È¶²¤¤¡£";
2655 #else
2656                 info[i++] = "It is fearful.";
2657 #endif
2658                 else
2659 #ifdef JP
2660                         info[i++] = "¤½¤ì¤ÏÉô²°¤Ë¾þ¤ë¤È³Ú¤·¤¤¡£";
2661 #else
2662                 info[i++] = "It is cheerful.";
2663 #endif
2664         }
2665         
2666         /* Hack -- describe lite's */
2667         if (o_ptr->tval == TV_LITE)
2668         {
2669                 if (o_ptr->name2 == EGO_LITE_DARKNESS)
2670                 {
2671 #ifdef JP
2672 info[i++] = "¤½¤ì¤ÏÁ´¤¯¸÷¤é¤Ê¤¤¡£";
2673 #else
2674                         info[i++] = "It provides no light..";
2675 #endif
2676                 }
2677                 else if (artifact_p(o_ptr))
2678                 {
2679 #ifdef JP
2680 info[i++] = "¤½¤ì¤Ï±Ê±ó¤Ê¤ëÌÀ¤«¤ê(Ⱦ·Â 3)¤ò¼ø¤±¤ë¡£";
2681 #else
2682                         info[i++] = "It provides light (radius 3) forever.";
2683 #endif
2684
2685                 }
2686                 else if (o_ptr->name2 == EGO_LITE_SHINE)
2687                 {
2688                         if (o_ptr->sval == SV_LITE_FEANOR)
2689                         {
2690 #ifdef JP
2691 info[i++] = "¤½¤ì¤Ï±Ê±ó¤Ê¤ëÌÀ¤«¤ê(Ⱦ·Â 3)¤ò¼ø¤±¤ë¡£";
2692 #else
2693                                 info[i++] = "It provides light (radius 3) forever.";
2694 #endif
2695
2696                         }
2697                         else if (o_ptr->sval == SV_LITE_LANTERN)
2698                         {
2699 #ifdef JP
2700 info[i++] = "¤½¤ì¤ÏdzÎÁÊäµë¤Ë¤è¤Ã¤ÆÌÀ¤«¤ê(Ⱦ·Â 3)¤ò¼ø¤±¤ë¡£";
2701 #else
2702                                 info[i++] = "It provides light (radius 3) when fueled.";
2703 #endif
2704
2705                         }
2706                         else
2707                         {
2708 #ifdef JP
2709 info[i++] = "¤½¤ì¤ÏdzÎÁÊäµë¤Ë¤è¤Ã¤ÆÌÀ¤«¤ê(Ⱦ·Â 2)¤ò¼ø¤±¤ë¡£";
2710 #else
2711                                 info[i++] = "It provides light (radius 2) when fueled.";
2712 #endif
2713
2714                         }
2715                 }
2716                 else
2717                 {
2718                         if (o_ptr->sval == SV_LITE_FEANOR)
2719                         {
2720 #ifdef JP
2721 info[i++] = "¤½¤ì¤Ï±Ê±ó¤Ê¤ëÌÀ¤«¤ê(Ⱦ·Â 2)¤ò¼ø¤±¤ë¡£";
2722 #else
2723                                 info[i++] = "It provides light (radius 2) forever.";
2724 #endif
2725
2726                         }
2727                         else if (o_ptr->sval == SV_LITE_LANTERN)
2728                         {
2729 #ifdef JP
2730 info[i++] = "¤½¤ì¤ÏdzÎÁÊäµë¤Ë¤è¤Ã¤ÆÌÀ¤«¤ê(Ⱦ·Â 2)¤ò¼ø¤±¤ë¡£";
2731 #else
2732                                 info[i++] = "It provides light (radius 2) when fueled.";
2733 #endif
2734
2735                         }
2736                         else
2737                         {
2738 #ifdef JP
2739 info[i++] = "¤½¤ì¤ÏdzÎÁÊäµë¤Ë¤è¤Ã¤ÆÌÀ¤«¤ê(Ⱦ·Â 1)¤ò¼ø¤±¤ë¡£";
2740 #else
2741                                 info[i++] = "It provides light (radius 1) when fueled.";
2742 #endif
2743
2744                         }
2745                 }
2746                 if (o_ptr->name2 == EGO_LITE_LONG)
2747                 {
2748 #ifdef JP
2749 info[i++] = "¤½¤ì¤ÏŤ¤¥¿¡¼¥óÌÀ¤«¤ê¤ò¼ø¤±¤ë¡£";
2750 #else
2751                         info[i++] = "It provides light for much longer time.";
2752 #endif
2753                 }
2754         }
2755
2756
2757         /* And then describe it fully */
2758
2759         if (f2 & (TR2_RIDING))
2760         {
2761                 if ((o_ptr->tval == TV_POLEARM) && ((o_ptr->sval == SV_LANCE) || (o_ptr->sval == SV_HEAVY_LANCE)))
2762 #ifdef JP
2763 info[i++] = "¤½¤ì¤Ï¾èÇÏÃæ¤ÏÈó¾ï¤Ë»È¤¤¤ä¤¹¤¤¡£";
2764 #else
2765                         info[i++] = "It is made for riding.";
2766 #endif
2767                 else
2768 #ifdef JP
2769 info[i++] = "¤½¤ì¤Ï¾èÇÏÃæ¤Ç¤â»È¤¤¤ä¤¹¤¤¡£";
2770 #else
2771                         info[i++] = "It is suitable for riding.";
2772 #endif
2773
2774         }
2775         if (f1 & (TR1_STR))
2776         {
2777 #ifdef JP
2778 info[i++] = "¤½¤ì¤ÏÏÓÎϤ˱ƶÁ¤òµÚ¤Ü¤¹";
2779 #else
2780                 info[i++] = "It affects your strength.";
2781 #endif
2782
2783         }
2784         if (f1 & (TR1_INT))
2785         {
2786 #ifdef JP
2787 info[i++] = "¤½¤ì¤ÏÃÎǽ¤Ë±Æ¶Á¤òµÚ¤Ü¤¹";
2788 #else
2789                 info[i++] = "It affects your intelligence.";
2790 #endif
2791
2792         }
2793         if (f1 & (TR1_WIS))
2794         {
2795 #ifdef JP
2796 info[i++] = "¤½¤ì¤Ï¸­¤µ¤Ë±Æ¶Á¤òµÚ¤Ü¤¹";
2797 #else
2798                 info[i++] = "It affects your wisdom.";
2799 #endif
2800
2801         }
2802         if (f1 & (TR1_DEX))
2803         {
2804 #ifdef JP
2805 info[i++] = "¤½¤ì¤Ï´ïÍѤµ¤Ë±Æ¶Á¤òµÚ¤Ü¤¹";
2806 #else
2807                 info[i++] = "It affects your dexterity.";
2808 #endif
2809
2810         }
2811         if (f1 & (TR1_CON))
2812         {
2813 #ifdef JP
2814 info[i++] = "¤½¤ì¤ÏÂѵ×ÎϤ˱ƶÁ¤òµÚ¤Ü¤¹";
2815 #else
2816                 info[i++] = "It affects your constitution.";
2817 #endif
2818
2819         }
2820         if (f1 & (TR1_CHR))
2821         {
2822 #ifdef JP
2823 info[i++] = "¤½¤ì¤ÏÌ¥ÎϤ˱ƶÁ¤òµÚ¤Ü¤¹";
2824 #else
2825                 info[i++] = "It affects your charisma.";
2826 #endif
2827
2828         }
2829
2830         if (f1 & (TR1_MAGIC_MASTERY))
2831         {
2832 #ifdef JP
2833 info[i++] = "¤½¤ì¤ÏËâË¡Æ»¶ñ»ÈÍÑǽÎϤ˱ƶÁ¤òµÚ¤Ü¤¹";
2834 #else
2835                 info[i++] = "It affects your ability to use magic devices.";
2836 #endif
2837
2838         }
2839         if (f1 & (TR1_STEALTH))
2840         {
2841 #ifdef JP
2842 info[i++] = "¤½¤ì¤Ï±£Ì©¹ÔưǽÎϤ˱ƶÁ¤òµÚ¤Ü¤¹";
2843 #else
2844                 info[i++] = "It affects your stealth.";
2845 #endif
2846
2847         }
2848         if (f1 & (TR1_SEARCH))
2849         {
2850 #ifdef JP
2851 info[i++] = "¤½¤ì¤Ïõº÷ǽÎϤ˱ƶÁ¤òµÚ¤Ü¤¹";
2852 #else
2853                 info[i++] = "It affects your searching.";
2854 #endif
2855
2856         }
2857         if (f1 & (TR1_INFRA))
2858         {
2859 #ifdef JP
2860 info[i++] = "¤½¤ì¤ÏÀÖ³°Àþ»ëÎϤ˱ƶÁ¤òµÚ¤Ü¤¹";
2861 #else
2862                 info[i++] = "It affects your infravision.";
2863 #endif
2864
2865         }
2866         if (f1 & (TR1_TUNNEL))
2867         {
2868 #ifdef JP
2869 info[i++] = "¤½¤ì¤ÏºÎ·¡Ç½ÎϤ˱ƶÁ¤òµÚ¤Ü¤¹";
2870 #else
2871                 info[i++] = "It affects your ability to tunnel.";
2872 #endif
2873
2874         }
2875         if (f1 & (TR1_SPEED))
2876         {
2877 #ifdef JP
2878 info[i++] = "¤½¤ì¤Ï¥¹¥Ô¡¼¥É¤Ë±Æ¶Á¤òµÚ¤Ü¤¹";
2879 #else
2880                 info[i++] = "It affects your speed.";
2881 #endif
2882
2883         }
2884         if (f1 & (TR1_BLOWS))
2885         {
2886 #ifdef JP
2887 info[i++] = "¤½¤ì¤ÏÂÇ·â²ó¿ô¤Ë±Æ¶Á¤òµÚ¤Ü¤¹";
2888 #else
2889                 info[i++] = "It affects your attack speed.";
2890 #endif
2891
2892         }
2893
2894         if (f1 & (TR1_BRAND_ACID))
2895         {
2896 #ifdef JP
2897 info[i++] = "¤½¤ì¤Ï»À¤Ë¤è¤Ã¤ÆÂ礭¤Ê¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë";
2898 #else
2899                 info[i++] = "It does extra damage from acid.";
2900 #endif
2901
2902         }
2903         if (f1 & (TR1_BRAND_ELEC))
2904         {
2905 #ifdef JP
2906 info[i++] = "¤½¤ì¤ÏÅÅ·â¤Ë¤è¤Ã¤ÆÂ礭¤Ê¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë";
2907 #else
2908                 info[i++] = "It does extra damage from electricity.";
2909 #endif
2910
2911         }
2912         if (f1 & (TR1_BRAND_FIRE))
2913         {
2914 #ifdef JP
2915 info[i++] = "¤½¤ì¤Ï²Ð±ê¤Ë¤è¤Ã¤ÆÂ礭¤Ê¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë";
2916 #else
2917                 info[i++] = "It does extra damage from fire.";
2918 #endif
2919
2920         }
2921         if (f1 & (TR1_BRAND_COLD))
2922         {
2923 #ifdef JP
2924 info[i++] = "¤½¤ì¤ÏÎ䵤¤Ë¤è¤Ã¤ÆÂ礭¤Ê¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë";
2925 #else
2926                 info[i++] = "It does extra damage from frost.";
2927 #endif
2928
2929         }
2930
2931         if (f1 & (TR1_BRAND_POIS))
2932         {
2933 #ifdef JP
2934 info[i++] = "¤½¤ì¤ÏŨ¤òÆǤ¹¤ë¡£";
2935 #else
2936                 info[i++] = "It poisons your foes.";
2937 #endif
2938
2939         }
2940
2941         if (f1 & (TR1_CHAOTIC))
2942         {
2943 #ifdef JP
2944 info[i++] = "¤½¤ì¤Ï¥«¥ª¥¹Åª¤Ê¸ú²Ì¤òµÚ¤Ü¤¹¡£";
2945 #else
2946                 info[i++] = "It produces chaotic effects.";
2947 #endif
2948
2949         }
2950
2951         if (f1 & (TR1_VAMPIRIC))
2952         {
2953 #ifdef JP
2954 info[i++] = "¤½¤ì¤ÏŨ¤«¤é¥Ò¥Ã¥È¥Ý¥¤¥ó¥È¤òµÛ¼ý¤¹¤ë¡£";
2955 #else
2956                 info[i++] = "It drains life from your foes.";
2957 #endif
2958
2959         }
2960
2961         if (f1 & (TR1_IMPACT))
2962         {
2963 #ifdef JP
2964 info[i++] = "¤½¤ì¤ÏÃϿ̤òµ¯¤³¤¹¤³¤È¤¬¤Ç¤­¤ë¡£";
2965 #else
2966                 info[i++] = "It can cause earthquakes.";
2967 #endif
2968
2969         }
2970
2971         if (f1 & (TR1_VORPAL))
2972         {
2973 #ifdef JP
2974 info[i++] = "¤½¤ì¤ÏÈó¾ï¤ËÀÚ¤ìÌ£¤¬±Ô¤¯Å¨¤òÀÚÃǤ¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£";
2975 #else
2976                 info[i++] = "It is very sharp and can cut your foes.";
2977 #endif
2978
2979         }
2980
2981         if (f1 & (TR1_KILL_DRAGON))
2982         {
2983 #ifdef JP
2984 info[i++] = "¤½¤ì¤Ï¥É¥é¥´¥ó¤Ë¤È¤Ã¤Æ¤ÎŷŨ¤Ç¤¢¤ë¡£";
2985 #else
2986                 info[i++] = "It is a great bane of dragons.";
2987 #endif
2988
2989         }
2990         else if (f1 & (TR1_SLAY_DRAGON))
2991         {
2992 #ifdef JP
2993 info[i++] = "¤½¤ì¤Ï¥É¥é¥´¥ó¤ËÂФ·¤ÆÆä˶²¤ë¤Ù¤­ÎϤòȯ´ø¤¹¤ë¡£";
2994 #else
2995                 info[i++] = "It is especially deadly against dragons.";
2996 #endif
2997
2998         }
2999         if (f1 & (TR1_SLAY_ORC))
3000         {
3001 #ifdef JP
3002 info[i++] = "¤½¤ì¤Ï¥ª¡¼¥¯¤ËÂФ·¤ÆÆä˶²¤ë¤Ù¤­ÎϤòȯ´ø¤¹¤ë¡£";
3003 #else
3004                 info[i++] = "It is especially deadly against orcs.";
3005 #endif
3006
3007         }
3008         if (f1 & (TR1_SLAY_TROLL))
3009         {
3010 #ifdef JP
3011 info[i++] = "¤½¤ì¤Ï¥È¥í¥ë¤ËÂФ·¤ÆÆä˶²¤ë¤Ù¤­ÎϤòȯ´ø¤¹¤ë¡£";
3012 #else
3013                 info[i++] = "It is especially deadly against trolls.";
3014 #endif
3015
3016         }
3017         if (f1 & (TR1_SLAY_GIANT))
3018         {
3019                 if (o_ptr->name1 == ART_HRUNTING)
3020 #ifdef JP
3021 info[i++] = "¤½¤ì¤Ïµð¿Í¤Ë¤È¤Ã¤Æ¤ÎŷŨ¤Ç¤¢¤ë¡£";
3022 #else
3023                 info[i++] = "It is a great bane of giants.";
3024 #endif
3025                 else
3026 #ifdef JP
3027 info[i++] = "¤½¤ì¤Ï¥¸¥ã¥¤¥¢¥ó¥È¤ËÂФ·¤ÆÆä˶²¤ë¤Ù¤­ÎϤòȯ´ø¤¹¤ë¡£";
3028 #else
3029                 info[i++] = "It is especially deadly against giants.";
3030 #endif
3031
3032         }
3033         if (f1 & (TR1_SLAY_DEMON))
3034         {
3035 #ifdef JP
3036 info[i++] = "¤½¤ì¤Ï¥Ç¡¼¥â¥ó¤ËÂФ·¤ÆÀ»¤Ê¤ëÎϤòȯ´ø¤¹¤ë¡£";
3037 #else
3038                 info[i++] = "It strikes at demons with holy wrath.";
3039 #endif
3040
3041         }
3042         if (f1 & (TR1_SLAY_UNDEAD))
3043         {
3044 #ifdef JP
3045 info[i++] = "¤½¤ì¤Ï¥¢¥ó¥Ç¥Ã¥É¤ËÂФ·¤ÆÀ»¤Ê¤ëÎϤòȯ´ø¤¹¤ë¡£";
3046 #else
3047                 info[i++] = "It strikes at undead with holy wrath.";
3048 #endif
3049
3050         }
3051         if (f1 & (TR1_SLAY_EVIL))
3052         {
3053 #ifdef JP
3054 info[i++] = "¤½¤ì¤Ï¼Ù°­¤Ê¤ë¸ºß¤ËÂФ·¤ÆÀ»¤Ê¤ëÎϤǹ¶·â¤¹¤ë¡£";
3055 #else
3056                 info[i++] = "It fights against evil with holy fury.";
3057 #endif
3058
3059         }
3060         if (f1 & (TR1_SLAY_ANIMAL))
3061         {
3062 #ifdef JP
3063 info[i++] = "¤½¤ì¤Ï¼«Á³³¦¤Îưʪ¤ËÂФ·¤ÆÆä˶²¤ë¤Ù¤­ÎϤòȯ´ø¤¹¤ë¡£";
3064 #else
3065                 info[i++] = "It is especially deadly against natural creatures.";
3066 #endif
3067
3068         }
3069
3070         if (f1 & (TR1_FORCE_WEPON))
3071         {
3072 #ifdef JP
3073 info[i++] = "¤½¤ì¤Ï»ÈÍѼԤÎËâÎϤò»È¤Ã¤Æ¹¶·â¤¹¤ë¡£";
3074 #else
3075                 info[i++] = "It powerfully strikes at a monster using your mana.";
3076 #endif
3077
3078         }
3079         if (f3 & (TR3_DEC_MANA))
3080         {
3081 #ifdef JP
3082 info[i++] = "¤½¤ì¤ÏËâÎϤξÃÈñ¤ò²¡¤µ¤¨¤ë¡£";
3083 #else
3084                 info[i++] = "It decreases your mana consumption.";
3085 #endif
3086
3087         }
3088         if (f2 & (TR2_SUST_STR))
3089         {
3090 #ifdef JP
3091 info[i++] = "¤½¤ì¤Ï¤¢¤Ê¤¿¤ÎÏÓÎϤò°Ý»ý¤¹¤ë¡£";
3092 #else
3093                 info[i++] = "It sustains your strength.";
3094 #endif
3095
3096         }
3097         if (f2 & (TR2_SUST_INT))
3098         {
3099 #ifdef JP
3100 info[i++] = "¤½¤ì¤Ï¤¢¤Ê¤¿¤ÎÃÎǽ¤ò°Ý»ý¤¹¤ë¡£";
3101 #else
3102                 info[i++] = "It sustains your intelligence.";
3103 #endif
3104
3105         }
3106         if (f2 & (TR2_SUST_WIS))
3107         {
3108 #ifdef JP
3109 info[i++] = "¤½¤ì¤Ï¤¢¤Ê¤¿¤Î¸­¤µ¤ò°Ý»ý¤¹¤ë¡£";
3110 #else
3111                 info[i++] = "It sustains your wisdom.";
3112 #endif
3113
3114         }
3115         if (f2 & (TR2_SUST_DEX))
3116         {
3117 #ifdef JP
3118 info[i++] = "¤½¤ì¤Ï¤¢¤Ê¤¿¤Î´ïÍѤµ¤ò°Ý»ý¤¹¤ë¡£";
3119 #else
3120                 info[i++] = "It sustains your dexterity.";
3121 #endif
3122
3123         }
3124         if (f2 & (TR2_SUST_CON))
3125         {
3126 #ifdef JP
3127 info[i++] = "¤½¤ì¤Ï¤¢¤Ê¤¿¤ÎÂѵ×ÎϤò°Ý»ý¤¹¤ë¡£";
3128 #else
3129                 info[i++] = "It sustains your constitution.";
3130 #endif
3131
3132         }
3133         if (f2 & (TR2_SUST_CHR))
3134         {
3135 #ifdef JP
3136 info[i++] = "¤½¤ì¤Ï¤¢¤Ê¤¿¤ÎÌ¥ÎϤò°Ý»ý¤¹¤ë¡£";
3137 #else
3138                 info[i++] = "It sustains your charisma.";
3139 #endif
3140
3141         }
3142
3143         if (f2 & (TR2_IM_ACID))
3144         {
3145 #ifdef JP
3146 info[i++] = "¤½¤ì¤Ï»À¤ËÂФ¹¤ë´°Á´¤ÊÌȱ֤ò¼ø¤±¤ë¡£";
3147 #else
3148                 info[i++] = "It provides immunity to acid.";
3149 #endif
3150
3151         }
3152         if (f2 & (TR2_IM_ELEC))
3153         {
3154 #ifdef JP
3155 info[i++] = "¤½¤ì¤ÏÅÅ·â¤ËÂФ¹¤ë´°Á´¤ÊÌȱ֤ò¼ø¤±¤ë¡£";
3156 #else
3157                 info[i++] = "It provides immunity to electricity.";
3158 #endif
3159
3160         }
3161         if (f2 & (TR2_IM_FIRE))
3162         {
3163 #ifdef JP
3164 info[i++] = "¤½¤ì¤Ï²Ð¤ËÂФ¹¤ë´°Á´¤ÊÌȱ֤ò¼ø¤±¤ë¡£";
3165 #else
3166                 info[i++] = "It provides immunity to fire.";
3167 #endif
3168
3169         }
3170         if (f2 & (TR2_IM_COLD))
3171         {
3172 #ifdef JP
3173 info[i++] = "¤½¤ì¤Ï´¨¤µ¤ËÂФ¹¤ë´°Á´¤ÊÌȱ֤ò¼ø¤±¤ë¡£";
3174 #else
3175                 info[i++] = "It provides immunity to cold.";
3176 #endif
3177
3178         }
3179
3180         if (f2 & (TR2_THROW))
3181         {
3182 #ifdef JP
3183 info[i++] = "¤½¤ì¤ÏŨ¤ËÅꤲ¤ÆÂ礭¤Ê¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¤³¤È¤¬¤Ç¤­¤ë¡£";
3184 #else
3185                 info[i++] = "It is perfectly balanced for throwing.";
3186 #endif
3187         }
3188
3189         if (f2 & (TR2_FREE_ACT))
3190         {
3191 #ifdef JP
3192 info[i++] = "¤½¤ì¤ÏËãáã¤ËÂФ¹¤ë´°Á´¤ÊÌȱ֤ò¼ø¤±¤ë¡£";
3193 #else
3194                 info[i++] = "It provides immunity to paralysis.";
3195 #endif
3196
3197         }
3198         if (f2 & (TR2_HOLD_LIFE))
3199         {
3200 #ifdef JP
3201 info[i++] = "¤½¤ì¤ÏÀ¸Ì¿Îϵۼý¤ËÂФ¹¤ëÂÑÀ­¤ò¼ø¤±¤ë¡£";
3202 #else
3203                 info[i++] = "It provides resistance to life draining.";
3204 #endif
3205
3206         }
3207         if (f2 & (TR2_RES_FEAR))
3208         {
3209 #ifdef JP
3210 info[i++] = "¤½¤ì¤Ï¶²Éݤؤδ°Á´¤ÊÂÑÀ­¤ò¼ø¤±¤ë¡£";
3211 #else
3212                 info[i++] = "It makes you completely fearless.";
3213 #endif
3214
3215         }
3216         if (f2 & (TR2_RES_ACID))
3217         {
3218 #ifdef JP
3219 info[i++] = "¤½¤ì¤Ï»À¤Ø¤ÎÂÑÀ­¤ò¼ø¤±¤ë¡£";
3220 #else
3221                 info[i++] = "It provides resistance to acid.";
3222 #endif
3223
3224         }
3225         if (f2 & (TR2_RES_ELEC))
3226         {
3227 #ifdef JP
3228 info[i++] = "¤½¤ì¤ÏÅÅ·â¤Ø¤ÎÂÑÀ­¤ò¼ø¤±¤ë¡£";
3229 #else
3230                 info[i++] = "It provides resistance to electricity.";
3231 #endif
3232
3233         }
3234         if (f2 & (TR2_RES_FIRE))
3235         {
3236 #ifdef JP
3237 info[i++] = "¤½¤ì¤Ï²Ð¤Ø¤ÎÂÑÀ­¤ò¼ø¤±¤ë¡£";
3238 #else
3239                 info[i++] = "It provides resistance to fire.";
3240 #endif
3241
3242         }
3243         if (f2 & (TR2_RES_COLD))
3244         {
3245 #ifdef JP
3246 info[i++] = "¤½¤ì¤Ï´¨¤µ¤Ø¤ÎÂÑÀ­¤ò¼ø¤±¤ë¡£";
3247 #else
3248                 info[i++] = "It provides resistance to cold.";
3249 #endif
3250
3251         }
3252         if (f2 & (TR2_RES_POIS))
3253         {
3254 #ifdef JP
3255 info[i++] = "¤½¤ì¤ÏÆǤؤÎÂÑÀ­¤ò¼ø¤±¤ë¡£";
3256 #else
3257                 info[i++] = "It provides resistance to poison.";
3258 #endif
3259
3260         }
3261
3262         if (f2 & (TR2_RES_LITE))
3263         {
3264 #ifdef JP
3265 info[i++] = "¤½¤ì¤ÏÁ®¸÷¤Ø¤ÎÂÑÀ­¤ò¼ø¤±¤ë¡£";
3266 #else
3267                 info[i++] = "It provides resistance to light.";
3268 #endif
3269
3270         }
3271         if (f2 & (TR2_RES_DARK))
3272         {
3273 #ifdef JP
3274 info[i++] = "¤½¤ì¤Ï°Å¹õ¤Ø¤ÎÂÑÀ­¤ò¼ø¤±¤ë¡£";
3275 #else
3276                 info[i++] = "It provides resistance to dark.";
3277 #endif
3278
3279         }
3280
3281         if (f2 & (TR2_RES_BLIND))
3282         {
3283 #ifdef JP
3284 info[i++] = "¤½¤ì¤ÏÌÕÌܤؤÎÂÑÀ­¤ò¼ø¤±¤ë¡£";
3285 #else
3286                 info[i++] = "It provides resistance to blindness.";
3287 #endif
3288
3289         }
3290         if (f2 & (TR2_RES_CONF))
3291         {
3292 #ifdef JP
3293 info[i++] = "¤½¤ì¤Ïº®Íð¤Ø¤ÎÂÑÀ­¤ò¼ø¤±¤ë¡£";
3294 #else
3295                 info[i++] = "It provides resistance to confusion.";
3296 #endif
3297
3298         }
3299         if (f2 & (TR2_RES_SOUND))
3300         {
3301 #ifdef JP
3302 info[i++] = "¤½¤ì¤Ï¹ì²»¤Ø¤ÎÂÑÀ­¤ò¼ø¤±¤ë¡£";
3303 #else
3304                 info[i++] = "It provides resistance to sound.";
3305 #endif
3306
3307         }
3308         if (f2 & (TR2_RES_SHARDS))
3309         {
3310 #ifdef JP
3311 info[i++] = "¤½¤ì¤ÏÇËÊҤؤÎÂÑÀ­¤ò¼ø¤±¤ë¡£";
3312 #else
3313                 info[i++] = "It provides resistance to shards.";
3314 #endif
3315
3316         }
3317
3318         if (f2 & (TR2_RES_NETHER))
3319         {
3320 #ifdef JP
3321 info[i++] = "¤½¤ì¤ÏÃϹö¤Ø¤ÎÂÑÀ­¤ò¼ø¤±¤ë¡£";
3322 #else
3323                 info[i++] = "It provides resistance to nether.";
3324 #endif
3325
3326         }
3327         if (f2 & (TR2_RES_NEXUS))
3328         {
3329 #ifdef JP
3330 info[i++] = "¤½¤ì¤Ï°ø²Ìº®Íð¤Ø¤ÎÂÑÀ­¤ò¼ø¤±¤ë¡£";
3331 #else
3332                 info[i++] = "It provides resistance to nexus.";
3333 #endif
3334
3335         }
3336         if (f2 & (TR2_RES_CHAOS))
3337         {
3338 #ifdef JP
3339 info[i++] = "¤½¤ì¤Ï¥«¥ª¥¹¤Ø¤ÎÂÑÀ­¤ò¼ø¤±¤ë¡£";
3340 #else
3341                 info[i++] = "It provides resistance to chaos.";
3342 #endif
3343
3344         }
3345         if (f2 & (TR2_RES_DISEN))
3346         {
3347 #ifdef JP
3348 info[i++] = "¤½¤ì¤ÏÎô²½¤Ø¤ÎÂÑÀ­¤ò¼ø¤±¤ë¡£";
3349 #else
3350                 info[i++] = "It provides resistance to disenchantment.";
3351 #endif
3352
3353         }
3354
3355         if (f3 & (TR3_FEATHER))
3356         {
3357 #ifdef JP
3358 info[i++] = "¤½¤ì¤ÏÃè¤ËÉ⤯¤³¤È¤ò²Äǽ¤Ë¤¹¤ë¡£";
3359 #else
3360                 info[i++] = "It allows you to levitate.";
3361 #endif
3362
3363         }
3364         if (f3 & (TR3_LITE))
3365         {
3366                 if ((o_ptr->name2 == EGO_DARK) || (o_ptr->name1 == ART_NIGHT))
3367 #ifdef JP
3368 info[i++] = "¤½¤ì¤ÏÌÀ¤«¤ê¤ÎȾ·Â¤ò¶¹¤á¤ë¡£";
3369 #else
3370                         info[i++] = "It decreases radius of your light source.";
3371 #endif
3372                 else
3373 #ifdef JP
3374 info[i++] = "¤½¤ì¤Ï±Ê±ó¤ÎÌÀ¤«¤ê¤ò¼ø¤±¤ë¡£";
3375 #else
3376                         info[i++] = "It provides permanent light.";
3377 #endif
3378
3379         }
3380         if (f3 & (TR3_SEE_INVIS))
3381         {
3382 #ifdef JP
3383 info[i++] = "¤½¤ì¤ÏÆ©ÌÀ¤Ê¥â¥ó¥¹¥¿¡¼¤ò¸«¤ë¤³¤È¤ò²Äǽ¤Ë¤¹¤ë¡£";
3384 #else
3385                 info[i++] = "It allows you to see invisible monsters.";
3386 #endif
3387
3388         }
3389         if (f3 & (TR3_TELEPATHY))
3390         {
3391 #ifdef JP
3392 info[i++] = "¤½¤ì¤Ï¥Æ¥ì¥Ñ¥·¡¼Ç½ÎϤò¼ø¤±¤ë¡£";
3393 #else
3394                 info[i++] = "It gives telepathic powers.";
3395 #endif
3396
3397         }
3398         if (f3 & (TR3_SLOW_DIGEST))
3399         {
3400 #ifdef JP
3401 info[i++] = "¤½¤ì¤Ï¤¢¤Ê¤¿¤Î¿·ÄÄÂå¼Õ¤òÃÙ¤¯¤¹¤ë¡£";
3402 #else
3403                 info[i++] = "It slows your metabolism.";
3404 #endif
3405
3406         }
3407         if (f3 & (TR3_REGEN))
3408         {
3409 #ifdef JP
3410 info[i++] = "¤½¤ì¤ÏÂÎÎϲóÉüÎϤò¶¯²½¤¹¤ë¡£";
3411 #else
3412                 info[i++] = "It speeds your regenerative powers.";
3413 #endif
3414
3415         }
3416         if (f2 & (TR2_REFLECT))
3417         {
3418 #ifdef JP
3419 info[i++] = "¤½¤ì¤ÏÌð¤ä¥Ü¥ë¥È¤òÈ¿¼Í¤¹¤ë¡£";
3420 #else
3421                 info[i++] = "It reflects bolts and arrows.";
3422 #endif
3423
3424         }
3425         if (f3 & (TR3_SH_FIRE))
3426         {
3427 #ifdef JP
3428 info[i++] = "¤½¤ì¤Ï±ê¤Î¥Ð¥ê¥¢¤òÄ¥¤ë¡£";
3429 #else
3430                 info[i++] = "It produces a fiery sheath.";
3431 #endif
3432
3433         }
3434         if (f3 & (TR3_SH_ELEC))
3435         {
3436 #ifdef JP
3437 info[i++] = "¤½¤ì¤ÏÅŵ¤¤Î¥Ð¥ê¥¢¤òÄ¥¤ë¡£";
3438 #else
3439                 info[i++] = "It produces an electric sheath.";
3440 #endif
3441
3442         }
3443         if (f3 & (TR3_SH_COLD))
3444         {
3445 #ifdef JP
3446 info[i++] = "¤½¤ì¤ÏÎ䵤¤Î¥Ð¥ê¥¢¤òÄ¥¤ë¡£";
3447 #else
3448                 info[i++] = "It produces a coldly sheath.";
3449 #endif
3450
3451         }
3452         if (f3 & (TR3_NO_MAGIC))
3453         {
3454 #ifdef JP
3455 info[i++] = "¤½¤ì¤ÏÈ¿ËâË¡¥Ð¥ê¥¢¤òÄ¥¤ë¡£";
3456 #else
3457                 info[i++] = "It produces an anti-magic shell.";
3458 #endif
3459
3460         }
3461         if (f3 & (TR3_NO_TELE))
3462         {
3463 #ifdef JP
3464 info[i++] = "¤½¤ì¤Ï¥Æ¥ì¥Ý¡¼¥È¤ò¼ÙË⤹¤ë¡£";
3465 #else
3466                 info[i++] = "It prevents teleportation.";
3467 #endif
3468
3469         }
3470         if (f3 & (TR3_XTRA_MIGHT))
3471         {
3472 #ifdef JP
3473 info[i++] = "¤½¤ì¤ÏÌ𡿥ܥë¥È¡¿ÃƤò¤è¤ê¶¯ÎϤËȯ¼Í¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£";
3474 #else
3475                 info[i++] = "It fires missiles with extra might.";
3476 #endif
3477
3478         }
3479         if (f3 & (TR3_XTRA_SHOTS))
3480         {
3481 #ifdef JP
3482 info[i++] = "¤½¤ì¤ÏÌ𡿥ܥë¥È¡¿ÃƤòÈó¾ï¤ËÁ᤯ȯ¼Í¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£";
3483 #else
3484                 info[i++] = "It fires missiles excessively fast.";
3485 #endif
3486
3487         }
3488
3489         if (f3 & (TR3_DRAIN_EXP))
3490         {
3491 #ifdef JP
3492 info[i++] = "¤½¤ì¤Ï·Ð¸³ÃͤòµÛ¤¤¼è¤ë¡£";
3493 #else
3494                 info[i++] = "It drains experience.";
3495 #endif
3496
3497         }
3498         if (f3 & (TR3_TELEPORT))
3499         {
3500 #ifdef JP
3501 info[i++] = "¤½¤ì¤Ï¥é¥ó¥À¥à¤Ê¥Æ¥ì¥Ý¡¼¥È¤ò°ú¤­µ¯¤³¤¹¡£";
3502 #else
3503                 info[i++] = "It induces random teleportation.";
3504 #endif
3505
3506         }
3507         if (f3 & TR3_AGGRAVATE)
3508         {
3509 #ifdef JP
3510 info[i++] = "¤½¤ì¤ÏÉÕ¶á¤Î¥â¥ó¥¹¥¿¡¼¤òÅܤ餻¤ë¡£";
3511 #else
3512                 info[i++] = "It aggravates nearby creatures.";
3513 #endif
3514
3515         }
3516
3517         if (f3 & TR3_BLESSED)
3518         {
3519 #ifdef JP
3520 info[i++] = "¤½¤ì¤Ï¿À¤Ë½ËÊ¡¤µ¤ì¤Æ¤¤¤ë¡£";
3521 #else
3522                 info[i++] = "It has been blessed by the gods.";
3523 #endif
3524
3525         }
3526
3527         if (cursed_p(o_ptr))
3528         {
3529                 if (f3 & TR3_PERMA_CURSE)
3530                 {
3531 #ifdef JP
3532 info[i++] = "¤½¤ì¤Ï±Ê±ó¤Î¼ö¤¤¤¬¤«¤±¤é¤ì¤Æ¤¤¤ë¡£";
3533 #else
3534                         info[i++] = "It is permanently cursed.";
3535 #endif
3536
3537                 }
3538                 else if (f3 & TR3_HEAVY_CURSE)
3539                 {
3540 #ifdef JP
3541 info[i++] = "¤½¤ì¤Ï¶¯ÎϤʼö¤¤¤¬¤«¤±¤é¤ì¤Æ¤¤¤ë¡£";
3542 #else
3543                         info[i++] = "It is heavily cursed.";
3544 #endif
3545
3546                 }
3547                 else
3548                 {
3549 #ifdef JP
3550 info[i++] = "¤½¤ì¤Ï¼ö¤ï¤ì¤Æ¤¤¤ë¡£";
3551 #else
3552                         info[i++] = "It is cursed.";
3553 #endif
3554
3555                 }
3556         }
3557
3558         if (f3 & TR3_TY_CURSE)
3559         {
3560 #ifdef JP
3561 info[i++] = "¤½¤ì¤ÏÂÀ¸Å¤Î²Ò¡¹¤·¤¤±åÇ°¤¬½É¤Ã¤Æ¤¤¤ë¡£";
3562 #else
3563                 info[i++] = "It carries an ancient foul curse.";
3564 #endif
3565
3566         }
3567
3568         /* XTRA HACK ARTDESC */
3569         flag = TR3_IGNORE_ACID | TR3_IGNORE_ELEC | TR3_IGNORE_FIRE | TR3_IGNORE_COLD ;
3570         if ((f3 & flag) == flag)
3571         {
3572 #ifdef JP
3573           info[i++] = "¤½¤ì¤Ï»À¡¦Åŷ⡦²Ð±ê¡¦Î䵤¤Ç¤Ï½ý¤Ä¤«¤Ê¤¤¡£";
3574 #else
3575           info[i++] = "It cannot be harmed by the elements.";
3576 #endif
3577         } else {
3578         if (f3 & (TR3_IGNORE_ACID))
3579         {
3580 #ifdef JP
3581 info[i++] = "¤½¤ì¤Ï»À¤Ç¤Ï½ý¤Ä¤«¤Ê¤¤¡£";
3582 #else
3583                 info[i++] = "It cannot be harmed by acid.";
3584 #endif
3585
3586         }
3587         if (f3 & (TR3_IGNORE_ELEC))
3588         {
3589 #ifdef JP
3590 info[i++] = "¤½¤ì¤ÏÅÅ·â¤Ç¤Ï½ý¤Ä¤«¤Ê¤¤¡£";
3591 #else
3592                 info[i++] = "It cannot be harmed by electricity.";
3593 #endif
3594
3595         }
3596         if (f3 & (TR3_IGNORE_FIRE))
3597         {
3598 #ifdef JP
3599 info[i++] = "¤½¤ì¤Ï²Ð±ê¤Ç¤Ï½ý¤Ä¤«¤Ê¤¤¡£";
3600 #else
3601                 info[i++] = "It cannot be harmed by fire.";
3602 #endif
3603
3604         }
3605         if (f3 & (TR3_IGNORE_COLD))
3606         {
3607 #ifdef JP
3608 info[i++] = "¤½¤ì¤ÏÎ䵤¤Ç¤Ï½ý¤Ä¤«¤Ê¤¤¡£";
3609 #else
3610                 info[i++] = "It cannot be harmed by cold.";
3611 #endif
3612
3613         }
3614
3615         /* XTRA HACK ARTDESC */
3616         }
3617
3618         /* No special effects */
3619         if (!i) return (FALSE);
3620
3621         /* Save the screen */
3622         screen_save();
3623
3624         /* Erase the screen */
3625         for (k = 1; k < 24; k++) prt("", k, 13);
3626
3627         /* Label the information */
3628         if ((o_ptr->tval == TV_STATUE) && (o_ptr->sval == SV_PHOTO))
3629         {
3630                 monster_race *r_ptr = &r_info[o_ptr->pval];
3631                 int namelen = strlen(r_name + r_ptr->name);
3632                 prt(format("%s: '", r_name + r_ptr->name), 1, 15);
3633                 c_prt(r_ptr->d_attr, format("%c", r_ptr->d_char), 1, 18+namelen);
3634                 prt("'", 1, 19+namelen);
3635         }
3636         else
3637 #ifdef JP
3638 prt("     ¥¢¥¤¥Æ¥à¤ÎǽÎÏ:", 1, 15);
3639 #else
3640         prt("     Item Attributes:", 1, 15);
3641 #endif
3642
3643         /* We will print on top of the map (column 13) */
3644         for (k = 2, j = 0; j < i; j++)
3645         {
3646                 /* Show the info */
3647                 prt(info[j], k++, 15);
3648
3649                 /* Every 20 entries (lines 2 to 21), start over */
3650                 if ((k == 22) && (j+1 < i))
3651                 {
3652 #ifdef JP
3653 prt("-- Â³¤¯ --", k, 15);
3654 #else
3655                         prt("-- more --", k, 15);
3656 #endif
3657                         inkey();
3658                         for (; k > 2; k--) prt("", k, 15);
3659                 }
3660         }
3661
3662         /* Wait for it */
3663 #ifdef JP
3664 prt("[²¿¤«¥­¡¼¤ò²¡¤¹¤È¥²¡¼¥à¤ËÌá¤ê¤Þ¤¹]", k, 15);
3665 #else
3666         prt("[Press any key to continue]", k, 15);
3667 #endif
3668
3669         inkey();
3670
3671         /* Restore the screen */
3672         screen_load();
3673
3674         /* Gave knowledge */
3675         return (TRUE);
3676 }
3677
3678
3679
3680 /*
3681  * Convert an inventory index into a one character label
3682  * Note that the label does NOT distinguish inven/equip.
3683  */
3684 char index_to_label(int i)
3685 {
3686         /* Indexes for "inven" are easy */
3687         if (i < INVEN_RARM) return (I2A(i));
3688
3689         /* Indexes for "equip" are offset */
3690         return (I2A(i - INVEN_RARM));
3691 }
3692
3693
3694 /*
3695  * Convert a label into the index of an item in the "inven"
3696  * Return "-1" if the label does not indicate a real item
3697  */
3698 s16b label_to_inven(int c)
3699 {
3700         int i;
3701
3702         /* Convert */
3703         i = (islower(c) ? A2I(c) : -1);
3704
3705         /* Verify the index */
3706         if ((i < 0) || (i > INVEN_PACK)) return (-1);
3707
3708         /* Empty slots can never be chosen */
3709         if (!inventory[i].k_idx) return (-1);
3710
3711         /* Return the index */
3712         return (i);
3713 }
3714
3715
3716 /*
3717  * Convert a label into the index of a item in the "equip"
3718  * Return "-1" if the label does not indicate a real item
3719  */
3720 s16b label_to_equip(int c)
3721 {
3722         int i;
3723
3724         /* Convert */
3725         i = (islower(c) ? A2I(c) : -1) + INVEN_RARM;
3726
3727         /* Verify the index */
3728         if ((i < INVEN_RARM) || (i >= INVEN_TOTAL)) return (-1);
3729
3730         /* Empty slots can never be chosen */
3731         if (!inventory[i].k_idx) return (-1);
3732
3733         /* Return the index */
3734         return (i);
3735 }
3736
3737
3738
3739 /*
3740  * Determine which equipment slot (if any) an item likes
3741  */
3742 s16b wield_slot(object_type *o_ptr)
3743 {
3744         /* Slot for equipment */
3745         switch (o_ptr->tval)
3746         {
3747                 case TV_DIGGING:
3748                 case TV_HAFTED:
3749                 case TV_POLEARM:
3750                 case TV_SWORD:
3751                 {
3752                         if (!inventory[INVEN_RARM].k_idx) return (INVEN_RARM);
3753                         if (inventory[INVEN_LARM].k_idx) return (INVEN_RARM);
3754                         return (INVEN_LARM);
3755                 }
3756
3757                 case TV_CAPTURE:
3758                 case TV_CARD:
3759                 case TV_SHIELD:
3760                 {
3761                         if (!inventory[INVEN_LARM].k_idx) return (INVEN_LARM);
3762                         if (inventory[INVEN_RARM].k_idx) return (INVEN_LARM);
3763                         return (INVEN_RARM);
3764                 }
3765
3766                 case TV_BOW:
3767                 {
3768                         return (INVEN_BOW);
3769                 }
3770
3771                 case TV_RING:
3772                 {
3773                         /* Use the right hand first */
3774                         if (!inventory[INVEN_RIGHT].k_idx) return (INVEN_RIGHT);
3775
3776                         /* Use the left hand for swapping (by default) */
3777                         return (INVEN_LEFT);
3778                 }
3779
3780                 case TV_AMULET:
3781                 case TV_WHISTLE:
3782                 {
3783                         return (INVEN_NECK);
3784                 }
3785
3786                 case TV_LITE:
3787                 {
3788                         return (INVEN_LITE);
3789                 }
3790
3791                 case TV_DRAG_ARMOR:
3792                 case TV_HARD_ARMOR:
3793                 case TV_SOFT_ARMOR:
3794                 {
3795                         return (INVEN_BODY);
3796                 }
3797
3798                 case TV_CLOAK:
3799                 {
3800                         return (INVEN_OUTER);
3801                 }
3802
3803                 case TV_CROWN:
3804                 case TV_HELM:
3805                 {
3806                         return (INVEN_HEAD);
3807                 }
3808
3809                 case TV_GLOVES:
3810                 {
3811                         return (INVEN_HANDS);
3812                 }
3813
3814                 case TV_BOOTS:
3815                 {
3816                         return (INVEN_FEET);
3817                 }
3818         }
3819
3820         /* No slot available */
3821         return (-1);
3822 }
3823
3824
3825 /*
3826  * Return a string mentioning how a given item is carried
3827  */
3828 cptr mention_use(int i)
3829 {
3830         cptr p;
3831
3832         /* Examine the location */
3833         switch (i)
3834         {
3835 #ifdef JP
3836 case INVEN_RARM: p = p_ptr->ryoute ? " Î¾¼ê" : (left_hander ? " º¸¼ê" : " ±¦¼ê"); break;
3837 #else
3838                 case INVEN_RARM: p = "Wielding"; break;
3839 #endif
3840
3841 #ifdef JP
3842 case INVEN_LARM:   p = (left_hander ? " ±¦¼ê" : " º¸¼ê"); break;
3843 #else
3844                 case INVEN_LARM:   p = "On arm"; break;
3845 #endif
3846
3847 #ifdef JP
3848 case INVEN_BOW:   p = "¼Í·âÍÑ"; break;
3849 #else
3850                 case INVEN_BOW:   p = "Shooting"; break;
3851 #endif
3852
3853 #ifdef JP
3854 case INVEN_LEFT:  p = (left_hander ? "±¦¼ê»Ø" : "º¸¼ê»Ø"); break;
3855 #else
3856                 case INVEN_LEFT:  p = "On left hand"; break;
3857 #endif
3858
3859 #ifdef JP
3860 case INVEN_RIGHT: p = (left_hander ? "º¸¼ê»Ø" : "±¦¼ê»Ø"); break;
3861 #else
3862                 case INVEN_RIGHT: p = "On right hand"; break;
3863 #endif
3864
3865 #ifdef JP
3866 case INVEN_NECK:  p = "  ¼ó"; break;
3867 #else
3868                 case INVEN_NECK:  p = "Around neck"; break;
3869 #endif
3870
3871 #ifdef JP
3872 case INVEN_LITE:  p = " ¸÷¸»"; break;
3873 #else
3874                 case INVEN_LITE:  p = "Light source"; break;
3875 #endif
3876
3877 #ifdef JP
3878 case INVEN_BODY:  p = "  ÂÎ"; break;
3879 #else
3880                 case INVEN_BODY:  p = "On body"; break;
3881 #endif
3882
3883 #ifdef JP
3884 case INVEN_OUTER: p = "ÂΤξå"; break;
3885 #else
3886                 case INVEN_OUTER: p = "About body"; break;
3887 #endif
3888
3889 #ifdef JP
3890 case INVEN_HEAD:  p = "  Ƭ"; break;
3891 #else
3892                 case INVEN_HEAD:  p = "On head"; break;
3893 #endif
3894
3895 #ifdef JP
3896 case INVEN_HANDS: p = "  ¼ê"; break;
3897 #else
3898                 case INVEN_HANDS: p = "On hands"; break;
3899 #endif
3900
3901 #ifdef JP
3902 case INVEN_FEET:  p = "  ­"; break;
3903 #else
3904                 case INVEN_FEET:  p = "On feet"; break;
3905 #endif
3906
3907 #ifdef JP
3908 default:          p = "¥¶¥Ã¥¯"; break;
3909 #else
3910                 default:          p = "In pack"; break;
3911 #endif
3912
3913         }
3914
3915         /* Hack -- Heavy weapon */
3916         if (i == INVEN_RARM)
3917         {
3918                 if (p_ptr->heavy_wield[0])
3919                 {
3920 #ifdef JP
3921 p = "±¿ÈÂÃæ";
3922 #else
3923                         p = "Just lifting";
3924 #endif
3925
3926                 }
3927         }
3928
3929         /* Hack -- Heavy weapon */
3930         if (i == INVEN_LARM)
3931         {
3932                 if (p_ptr->heavy_wield[1])
3933                 {
3934 #ifdef JP
3935 p = "±¿ÈÂÃæ";
3936 #else
3937                         p = "Just lifting";
3938 #endif
3939
3940                 }
3941         }
3942
3943         /* Hack -- Heavy bow */
3944         if (i == INVEN_BOW)
3945         {
3946                 object_type *o_ptr;
3947                 o_ptr = &inventory[i];
3948                 if (adj_str_hold[p_ptr->stat_ind[A_STR]] < o_ptr->weight / 10)
3949                 {
3950 #ifdef JP
3951 p = "±¿ÈÂÃæ";
3952 #else
3953                         p = "Just holding";
3954 #endif
3955
3956                 }
3957         }
3958
3959         /* Return the result */
3960         return (p);
3961 }
3962
3963
3964 /*
3965  * Return a string describing how a given item is being worn.
3966  * Currently, only used for items in the equipment, not inventory.
3967  */
3968 cptr describe_use(int i)
3969 {
3970         cptr p;
3971
3972         switch (i)
3973         {
3974 #ifdef JP
3975 case INVEN_RARM: p = p_ptr->ryoute ? " Î¾¼ê¤ËÁõÈ÷¤·¤Æ¤¤¤ë" : (left_hander ? " º¸¼ê¤ËÁõÈ÷¤·¤Æ¤¤¤ë" : " ±¦¼ê¤ËÁõÈ÷¤·¤Æ¤¤¤ë"); break;
3976 #else
3977                 case INVEN_RARM: p = "attacking monsters with"; break;
3978 #endif
3979
3980 #ifdef JP
3981 case INVEN_LARM:   p = (left_hander ? " ±¦¼ê¤ËÁõÈ÷¤·¤Æ¤¤¤ë" : " º¸¼ê¤ËÁõÈ÷¤·¤Æ¤¤¤ë"); break;
3982 #else
3983                 case INVEN_LARM:   p = "wearing on your arm"; break;
3984 #endif
3985
3986 #ifdef JP
3987 case INVEN_BOW:   p = "¼Í·âÍѤËÁõÈ÷¤·¤Æ¤¤¤ë"; break;
3988 #else
3989                 case INVEN_BOW:   p = "shooting missiles with"; break;
3990 #endif
3991
3992 #ifdef JP
3993 case INVEN_LEFT:  p = (left_hander ? "±¦¼ê¤Î»Ø¤Ë¤Ï¤á¤Æ¤¤¤ë" : "º¸¼ê¤Î»Ø¤Ë¤Ï¤á¤Æ¤¤¤ë"); break;
3994 #else
3995                 case INVEN_LEFT:  p = "wearing on your left hand"; break;
3996 #endif
3997
3998 #ifdef JP
3999 case INVEN_RIGHT: p = (left_hander ? "º¸¼ê¤Î»Ø¤Ë¤Ï¤á¤Æ¤¤¤ë" : "±¦¼ê¤Î»Ø¤Ë¤Ï¤á¤Æ¤¤¤ë"); break;
4000 #else
4001                 case INVEN_RIGHT: p = "wearing on your right hand"; break;
4002 #endif
4003
4004 #ifdef JP
4005 case INVEN_NECK:  p = "¼ó¤Ë¤«¤±¤Æ¤¤¤ë"; break;
4006 #else
4007                 case INVEN_NECK:  p = "wearing around your neck"; break;
4008 #endif
4009
4010 #ifdef JP
4011 case INVEN_LITE:  p = "¸÷¸»¤Ë¤·¤Æ¤¤¤ë"; break;
4012 #else
4013                 case INVEN_LITE:  p = "using to light the way"; break;
4014 #endif
4015
4016 #ifdef JP
4017 case INVEN_BODY:  p = "ÂΤËÃå¤Æ¤¤¤ë"; break;
4018 #else
4019                 case INVEN_BODY:  p = "wearing on your body"; break;
4020 #endif
4021
4022 #ifdef JP
4023 case INVEN_OUTER: p = "¿È¤Ë¤Þ¤È¤Ã¤Æ¤¤¤ë"; break;
4024 #else
4025                 case INVEN_OUTER: p = "wearing on your back"; break;
4026 #endif
4027
4028 #ifdef JP
4029 case INVEN_HEAD:  p = "Ƭ¤Ë¤«¤Ö¤Ã¤Æ¤¤¤ë"; break;
4030 #else
4031                 case INVEN_HEAD:  p = "wearing on your head"; break;
4032 #endif
4033
4034 #ifdef JP
4035 case INVEN_HANDS: p = "¼ê¤Ë¤Ä¤±¤Æ¤¤¤ë"; break;
4036 #else
4037                 case INVEN_HANDS: p = "wearing on your hands"; break;
4038 #endif
4039
4040 #ifdef JP
4041 case INVEN_FEET:  p = "­¤Ë¤Ï¤¤¤Æ¤¤¤ë"; break;
4042 #else
4043                 case INVEN_FEET:  p = "wearing on your feet"; break;
4044 #endif
4045
4046 #ifdef JP
4047 default:          p = "¥¶¥Ã¥¯¤ËÆþ¤Ã¤Æ¤¤¤ë"; break;
4048 #else
4049                 default:          p = "carrying in your pack"; break;
4050 #endif
4051
4052         }
4053
4054         /* Hack -- Heavy weapon */
4055         if (i == INVEN_RARM)
4056         {
4057                 object_type *o_ptr;
4058                 int hold = adj_str_hold[p_ptr->stat_ind[A_STR]];
4059
4060                 if (p_ptr->ryoute) hold *= 2;
4061                 o_ptr = &inventory[i];
4062                 if (hold < o_ptr->weight / 10)
4063                 {
4064 #ifdef JP
4065 p = "±¿ÈÂÃæ¤Î";
4066 #else
4067                         p = "just lifting";
4068 #endif
4069
4070                 }
4071         }
4072
4073         /* Hack -- Heavy bow */
4074         if (i == INVEN_BOW)
4075         {
4076                 object_type *o_ptr;
4077                 o_ptr = &inventory[i];
4078                 if (adj_str_hold[p_ptr->stat_ind[A_STR]] < o_ptr->weight / 10)
4079                 {
4080 #ifdef JP
4081 p = "»ý¤Ä¤À¤±¤ÇÀº°ìÇÕ¤Î";
4082 #else
4083                         p = "just holding";
4084 #endif
4085
4086                 }
4087         }
4088
4089         /* Return the result */
4090         return p;
4091 }
4092
4093
4094 /* Hack: Check if a spellbook is one of the realms we can use. -- TY */
4095
4096 bool check_book_realm(const byte book_tval, const byte book_sval)
4097 {
4098         if (book_tval < TV_LIFE_BOOK) return FALSE;
4099         if (p_ptr->pclass == CLASS_SORCERER)
4100         {
4101                 return is_magic(tval2realm(book_tval));
4102         }
4103         else if (p_ptr->pclass == CLASS_RED_MAGE)
4104         {
4105                 if (is_magic(tval2realm(book_tval)))
4106                         return ((book_tval == TV_ARCANE_BOOK) || (book_sval < 2));
4107         }
4108         return (REALM1_BOOK == book_tval || REALM2_BOOK == book_tval);
4109 }
4110
4111
4112 /*
4113  * Check an item against the item tester info
4114  */
4115 bool item_tester_okay(object_type *o_ptr)
4116 {
4117         /* Hack -- allow listing empty slots */
4118         if (item_tester_full) return (TRUE);
4119
4120         /* Require an item */
4121         if (!o_ptr->k_idx) return (FALSE);
4122
4123         /* Hack -- ignore "gold" */
4124         if (o_ptr->tval == TV_GOLD) return (FALSE);
4125
4126         /* Check the tval */
4127         if (item_tester_tval)
4128         {
4129                 /* Is it a spellbook? If so, we need a hack -- TY */
4130                 if ((item_tester_tval <= TV_DEATH_BOOK) &&
4131                         (item_tester_tval >= TV_LIFE_BOOK))
4132                         return check_book_realm(o_ptr->tval, o_ptr->sval);
4133                 else
4134                         if (item_tester_tval != o_ptr->tval) return (FALSE);
4135         }
4136
4137         /* Check the hook */
4138         if (item_tester_hook)
4139         {
4140                 if (!(*item_tester_hook)(o_ptr)) return (FALSE);
4141         }
4142
4143         /* Assume okay */
4144         return (TRUE);
4145 }
4146
4147
4148
4149
4150 /*
4151  * Choice window "shadow" of the "show_inven()" function
4152  */
4153 void display_inven(void)
4154 {
4155         register        int i, n, z = 0;
4156         object_type     *o_ptr;
4157         byte            attr = TERM_WHITE;
4158         char            tmp_val[80];
4159         char            o_name[MAX_NLEN];
4160
4161
4162         /* Find the "final" slot */
4163         for (i = 0; i < INVEN_PACK; i++)
4164         {
4165                 o_ptr = &inventory[i];
4166
4167                 /* Skip non-objects */
4168                 if (!o_ptr->k_idx) continue;
4169
4170                 /* Track */
4171                 z = i + 1;
4172         }
4173
4174         /* Display the pack */
4175         for (i = 0; i < z; i++)
4176         {
4177                 /* Examine the item */
4178                 o_ptr = &inventory[i];
4179
4180                 /* Start with an empty "index" */
4181                 tmp_val[0] = tmp_val[1] = tmp_val[2] = ' ';
4182
4183                 /* Is this item "acceptable"? */
4184                 if (item_tester_okay(o_ptr))
4185                 {
4186                         /* Prepare an "index" */
4187                         tmp_val[0] = index_to_label(i);
4188
4189                         /* Bracket the "index" --(-- */
4190                         tmp_val[1] = ')';
4191                 }
4192
4193                 /* Display the index (or blank space) */
4194                 Term_putstr(0, i, 3, TERM_WHITE, tmp_val);
4195
4196                 /* Obtain an item description */
4197                 object_desc(o_name, o_ptr, TRUE, 3);
4198
4199                 /* Obtain the length of the description */
4200                 n = strlen(o_name);
4201
4202                 /* Get a color */
4203                 attr = tval_to_attr[o_ptr->tval % 128];
4204
4205                 /* Grey out charging items */
4206                 if (o_ptr->timeout)
4207                 {
4208                         attr = TERM_L_DARK;
4209                 }
4210
4211                 /* Display the entry itself */
4212                 Term_putstr(3, i, n, attr, o_name);
4213
4214                 /* Erase the rest of the line */
4215                 Term_erase(3+n, i, 255);
4216
4217                 /* Display the weight if needed */
4218                 if (show_weights && o_ptr->weight)
4219                 {
4220                         int wgt = o_ptr->weight * o_ptr->number;
4221 #ifdef JP
4222                         sprintf(tmp_val, "%3d.%1d kg", lbtokg1(wgt),lbtokg2(wgt) );
4223 #else
4224                         sprintf(tmp_val, "%3d.%1d lb", wgt / 10, wgt % 10);
4225 #endif
4226
4227                         Term_putstr(71, i, -1, TERM_WHITE, tmp_val);
4228                 }
4229         }
4230
4231         /* Erase the rest of the window */
4232         for (i = z; i < Term->hgt; i++)
4233         {
4234                 /* Erase the line */
4235                 Term_erase(0, i, 255);
4236         }
4237 }
4238
4239
4240
4241 /*
4242  * Choice window "shadow" of the "show_equip()" function
4243  */
4244 void display_equip(void)
4245 {
4246         register        int i, n;
4247         object_type     *o_ptr;
4248         byte            attr = TERM_WHITE;
4249         char            tmp_val[80];
4250         char            o_name[MAX_NLEN];
4251
4252
4253         /* Display the equipment */
4254         for (i = INVEN_RARM; i < INVEN_TOTAL; i++)
4255         {
4256                 /* Examine the item */
4257                 o_ptr = &inventory[i];
4258
4259                 /* Start with an empty "index" */
4260                 tmp_val[0] = tmp_val[1] = tmp_val[2] = ' ';
4261
4262                 /* Is this item "acceptable"? */
4263                 if (item_tester_okay(o_ptr))
4264                 {
4265                         /* Prepare an "index" */
4266                         tmp_val[0] = index_to_label(i);
4267
4268                         /* Bracket the "index" --(-- */
4269                         tmp_val[1] = ')';
4270                 }
4271
4272                 /* Display the index (or blank space) */
4273                 Term_putstr(0, i - INVEN_RARM, 3, TERM_WHITE, tmp_val);
4274
4275                 /* Obtain an item description */
4276                 if ((i == INVEN_LARM) && p_ptr->ryoute)
4277                 {
4278 #ifdef JP
4279                         strcpy(o_name, "(Éð´ï¤òξ¼ê»ý¤Á)");
4280 #else
4281                         strcpy(o_name, "(wielding with two-hands)");
4282 #endif
4283                         attr = 1;
4284                 }
4285                 else
4286                 {
4287                         object_desc(o_name, o_ptr, TRUE, 3);
4288                         attr = tval_to_attr[o_ptr->tval % 128];
4289                 }
4290
4291                 /* Obtain the length of the description */
4292                 n = strlen(o_name);
4293
4294                 /* Grey out charging items */
4295                 if (o_ptr->timeout)
4296                 {
4297                         attr = TERM_L_DARK;
4298                 }
4299
4300                 /* Display the entry itself */
4301                 Term_putstr(3, i - INVEN_RARM, n, attr, o_name);
4302
4303                 /* Erase the rest of the line */
4304                 Term_erase(3+n, i - INVEN_RARM, 255);
4305
4306                 /* Display the slot description (if needed) */
4307                 if (show_labels)
4308                 {
4309                         Term_putstr(61, i - INVEN_RARM, -1, TERM_WHITE, "<--");
4310                         Term_putstr(65, i - INVEN_RARM, -1, TERM_WHITE, mention_use(i));
4311                 }
4312
4313                 /* Display the weight (if needed) */
4314                 if (show_weights && o_ptr->weight)
4315                 {
4316                         int wgt = o_ptr->weight * o_ptr->number;
4317                         int col = (show_labels ? 52 : 71);
4318 #ifdef JP
4319                         sprintf(tmp_val, "%3d.%1d kg", lbtokg1(wgt) , lbtokg2(wgt));
4320 #else
4321                         sprintf(tmp_val, "%3d.%1d lb", wgt / 10, wgt % 10);
4322 #endif
4323
4324                         Term_putstr(col, i - INVEN_RARM, -1, TERM_WHITE, tmp_val);
4325                 }
4326         }
4327
4328         /* Erase the rest of the window */
4329         for (i = INVEN_TOTAL - INVEN_RARM; i < Term->hgt; i++)
4330         {
4331                 /* Clear that line */
4332                 Term_erase(0, i, 255);
4333         }
4334 }
4335
4336
4337
4338
4339
4340
4341 /*
4342  * Display the inventory.
4343  *
4344  * Hack -- do not display "trailing" empty slots
4345  */
4346 int show_inven(int target_item)
4347 {
4348         int             i, j, k, l, z = 0;
4349         int             col, len, lim;
4350         object_type     *o_ptr;
4351         char            o_name[MAX_NLEN];
4352         char            tmp_val[80];
4353         int             out_index[23];
4354         byte            out_color[23];
4355         char            out_desc[23][80];
4356         int             target_item_label = 0;
4357
4358
4359         /* Starting column */
4360         col = command_gap;
4361
4362         /* Default "max-length" */
4363         len = 79 - col;
4364
4365         /* Maximum space allowed for descriptions */
4366         lim = 79 - 3;
4367
4368         /* Require space for weight (if needed) */
4369         if (show_weights) lim -= 9;
4370
4371         /* Require space for icon */
4372         if (show_item_graph) lim -= 2;
4373
4374         /* Find the "final" slot */
4375         for (i = 0; i < INVEN_PACK; i++)
4376         {
4377                 o_ptr = &inventory[i];
4378
4379                 /* Skip non-objects */
4380                 if (!o_ptr->k_idx) continue;
4381
4382                 /* Track */
4383                 z = i + 1;
4384         }
4385
4386         /* Display the inventory */
4387         for (k = 0, i = 0; i < z; i++)
4388         {
4389                 o_ptr = &inventory[i];
4390
4391                 /* Is this item acceptable? */
4392                 if (!item_tester_okay(o_ptr)) continue;
4393
4394                 /* Describe the object */
4395                 object_desc(o_name, o_ptr, TRUE, 3);
4396
4397                 /* Hack -- enforce max length */
4398                 o_name[lim] = '\0';
4399
4400                 /* Save the object index, color, and description */
4401                 out_index[k] = i;
4402                 out_color[k] = tval_to_attr[o_ptr->tval % 128];
4403
4404                 /* Grey out charging items */
4405                 if (o_ptr->timeout)
4406                 {
4407                         out_color[k] = TERM_L_DARK;
4408                 }
4409
4410                 (void)strcpy(out_desc[k], o_name);
4411
4412                 /* Find the predicted "line length" */
4413                 l = strlen(out_desc[k]) + 5;
4414
4415                 /* Be sure to account for the weight */
4416                 if (show_weights) l += 9;
4417
4418                 /* Account for icon if displayed */
4419                 if (show_item_graph) l += 2;
4420
4421                 /* Maintain the maximum length */
4422                 if (l > len) len = l;
4423
4424                 /* Advance to next "line" */
4425                 k++;
4426         }
4427
4428         /* Find the column to start in */
4429         col = (len > 76) ? 0 : (79 - len);
4430
4431         /* Output each entry */
4432         for (j = 0; j < k; j++)
4433         {
4434                 /* Get the index */
4435                 i = out_index[j];
4436
4437                 /* Get the item */
4438                 o_ptr = &inventory[i];
4439
4440                 /* Clear the line */
4441                 prt("", j + 1, col ? col - 2 : col);
4442
4443                 if (use_menu && target_item)
4444                 {
4445                         if (j == (target_item-1))
4446                         {
4447 #ifdef JP
4448                                 strcpy(tmp_val, "¡Õ");
4449 #else
4450                                 strcpy(tmp_val, "> ");
4451 #endif
4452                                 target_item_label = i;
4453                         }
4454                         else strcpy(tmp_val, "  ");
4455                 }
4456                 else
4457                         /* Prepare an index --(-- */
4458                         sprintf(tmp_val, "%c)", index_to_label(i));
4459
4460                 /* Clear the line with the (possibly indented) index */
4461                 put_str(tmp_val, j + 1, col);
4462
4463                 /* Display graphics for object, if desired */
4464                 if (show_item_graph)
4465                 {
4466                         byte  a = object_attr(o_ptr);
4467                         char c = object_char(o_ptr);
4468
4469 #ifdef AMIGA
4470                         if (a & 0x80) a |= 0x40;
4471 #endif
4472
4473                         Term_draw(col + 3, j + 1, a, c);
4474                 }
4475
4476
4477                 /* Display the entry itself */
4478                 c_put_str(out_color[j], out_desc[j], j + 1, show_item_graph ? (col + 5) : (col + 3));
4479
4480                 /* Display the weight if needed */
4481                 if (show_weights)
4482                 {
4483                         int wgt = o_ptr->weight * o_ptr->number;
4484 #ifdef JP
4485                         (void)sprintf(tmp_val, "%3d.%1d kg", lbtokg1(wgt) , lbtokg2(wgt) );
4486 #else
4487                         (void)sprintf(tmp_val, "%3d.%1d lb", wgt / 10, wgt % 10);
4488 #endif
4489
4490                         put_str(tmp_val, j + 1, 71);
4491                 }
4492         }
4493
4494         /* Make a "shadow" below the list (only if needed) */
4495         if (j && (j < 23)) prt("", j + 1, col ? col - 2 : col);
4496
4497         /* Save the new column */
4498         command_gap = col;
4499
4500         return target_item_label;
4501 }
4502
4503
4504
4505 /*
4506  * Display the equipment.
4507  */
4508 int show_equip(int target_item)
4509 {
4510         int             i, j, k, l;
4511         int             col, len, lim;
4512         object_type     *o_ptr;
4513         char            tmp_val[80];
4514         char            o_name[MAX_NLEN];
4515         int             out_index[23];
4516         byte            out_color[23];
4517         char            out_desc[23][80];
4518         int             target_item_label = 0;
4519
4520
4521         /* Starting column */
4522         col = command_gap;
4523
4524         /* Maximal length */
4525         len = 79 - col;
4526
4527         /* Maximum space allowed for descriptions */
4528         lim = 79 - 3;
4529
4530         /* Require space for labels (if needed) */
4531 #ifdef JP
4532         if (show_labels) lim -= (7 + 2);
4533 #else
4534         if (show_labels) lim -= (14 + 2);
4535 #endif
4536
4537
4538         /* Require space for weight (if needed) */
4539 #ifdef JP
4540         if (show_weights) lim -= 10;
4541 #else
4542         if (show_weights) lim -= 9;
4543 #endif
4544
4545
4546         if (show_item_graph) lim -= 2;
4547
4548         /* Scan the equipment list */
4549         for (k = 0, i = INVEN_RARM; i < INVEN_TOTAL; i++)
4550         {
4551                 o_ptr = &inventory[i];
4552
4553                 /* Is this item acceptable? */
4554                 if (!item_tester_okay(o_ptr) && (!((i == INVEN_LARM) && p_ptr->ryoute) || item_tester_no_ryoute)) continue;
4555
4556                 /* Description */
4557                 object_desc(o_name, o_ptr, TRUE, 3);
4558
4559                 /* Truncate the description */
4560                 o_name[lim] = 0;
4561
4562                 if ((i == INVEN_LARM) && p_ptr->ryoute)
4563                 {
4564 #ifdef JP
4565                         (void)strcpy(out_desc[k],"(Éð´ï¤òξ¼ê»ý¤Á)");
4566 #else
4567                         (void)strcpy(out_desc[k],"(wielding with two-hands)");
4568 #endif
4569                         out_color[k] = 1;
4570                 }
4571                 else
4572                 {
4573                         (void)strcpy(out_desc[k], o_name);
4574                         out_color[k] = tval_to_attr[o_ptr->tval % 128];
4575                 }
4576
4577                 out_index[k] = i;
4578                 /* Grey out charging items */
4579                 if (o_ptr->timeout)
4580                 {
4581                         out_color[k] = TERM_L_DARK;
4582                 }
4583
4584                 /* Extract the maximal length (see below) */
4585 #ifdef JP
4586                 l = strlen(out_desc[k]) + (2 + 1);
4587 #else
4588                 l = strlen(out_desc[k]) + (2 + 3);
4589 #endif
4590
4591
4592                 /* Increase length for labels (if needed) */
4593 #ifdef JP
4594                 if (show_labels) l += (7 + 2);
4595 #else
4596                 if (show_labels) l += (14 + 2);
4597 #endif
4598
4599
4600                 /* Increase length for weight (if needed) */
4601                 if (show_weights) l += 9;
4602
4603                 if (show_item_graph) l += 2;
4604
4605                 /* Maintain the max-length */
4606                 if (l > len) len = l;
4607
4608                 /* Advance the entry */
4609                 k++;
4610         }
4611
4612         /* Hack -- Find a column to start in */
4613 #ifdef JP
4614         col = (len > 74) ? 0 : (79 - len);
4615 #else
4616         col = (len > 76) ? 0 : (79 - len);
4617 #endif
4618
4619
4620         /* Output each entry */
4621         for (j = 0; j < k; j++)
4622         {
4623                 /* Get the index */
4624                 i = out_index[j];
4625
4626                 /* Get the item */
4627                 o_ptr = &inventory[i];
4628
4629                 /* Clear the line */
4630                 prt("", j + 1, col ? col - 2 : col);
4631
4632                 if (use_menu && target_item)
4633                 {
4634                         if (j == (target_item-1))
4635                         {
4636 #ifdef JP
4637                                 strcpy(tmp_val, "¡Õ");
4638 #else
4639                                 strcpy(tmp_val, "> ");
4640 #endif
4641                                 target_item_label = i;
4642                         }
4643                         else strcpy(tmp_val, "  ");
4644                 }
4645                 else
4646                         /* Prepare an index --(-- */
4647                         sprintf(tmp_val, "%c)", index_to_label(i));
4648
4649                 /* Clear the line with the (possibly indented) index */
4650                 put_str(tmp_val, j+1, col);
4651
4652                 if (show_item_graph)
4653                 {
4654                         byte a = object_attr(o_ptr);
4655                         char c = object_char(o_ptr);
4656
4657 #ifdef AMIGA
4658                         if (a & 0x80) a |= 0x40;
4659 #endif
4660
4661                         Term_draw(col + 3, j + 1, a, c);
4662                 }
4663
4664                 /* Use labels */
4665                 if (show_labels)
4666                 {
4667                         /* Mention the use */
4668 #ifdef JP
4669                         (void)sprintf(tmp_val, "%-7s: ", mention_use(i));
4670 #else
4671                         (void)sprintf(tmp_val, "%-14s: ", mention_use(i));
4672 #endif
4673
4674                         put_str(tmp_val, j+1, show_item_graph ? col + 5 : col + 3);
4675
4676                         /* Display the entry itself */
4677 #ifdef JP
4678                         c_put_str(out_color[j], out_desc[j], j+1, show_item_graph ? col + 14 : col + 12);
4679 #else
4680                         c_put_str(out_color[j], out_desc[j], j+1, show_item_graph ? col + 21 : col + 19);
4681 #endif
4682
4683                 }
4684
4685                 /* No labels */
4686                 else
4687                 {
4688                         /* Display the entry itself */
4689                         c_put_str(out_color[j], out_desc[j], j+1, show_item_graph ? col + 5 : col + 3);
4690                 }
4691
4692                 /* Display the weight if needed */
4693                 if (show_weights)
4694                 {
4695                         int wgt = o_ptr->weight * o_ptr->number;
4696 #ifdef JP
4697                         (void)sprintf(tmp_val, "%3d.%1d kg", lbtokg1(wgt) , lbtokg2(wgt) );
4698 #else
4699                         (void)sprintf(tmp_val, "%3d.%d lb", wgt / 10, wgt % 10);
4700 #endif
4701
4702                         put_str(tmp_val, j+1, 71);
4703                 }
4704         }
4705
4706         /* Make a "shadow" below the list (only if needed) */
4707         if (j && (j < 23)) prt("", j + 1, col ? col - 2 : col);
4708
4709         /* Save the new column */
4710         command_gap = col;
4711
4712         return target_item_label;
4713 }
4714
4715
4716
4717
4718 /*
4719  * Flip "inven" and "equip" in any sub-windows
4720  */
4721 void toggle_inven_equip(void)
4722 {
4723         int j;
4724
4725         /* Scan windows */
4726         for (j = 0; j < 8; j++)
4727         {
4728                 /* Unused */
4729                 if (!angband_term[j]) continue;
4730
4731                 /* Flip inven to equip */
4732                 if (window_flag[j] & (PW_INVEN))
4733                 {
4734                         /* Flip flags */
4735                         window_flag[j] &= ~(PW_INVEN);
4736                         window_flag[j] |= (PW_EQUIP);
4737
4738                         /* Window stuff */
4739                         p_ptr->window |= (PW_EQUIP);
4740                 }
4741
4742                 /* Flip inven to equip */
4743                 else if (window_flag[j] & (PW_EQUIP))
4744                 {
4745                         /* Flip flags */
4746                         window_flag[j] &= ~(PW_EQUIP);
4747                         window_flag[j] |= (PW_INVEN);
4748
4749                         /* Window stuff */
4750                         p_ptr->window |= (PW_INVEN);
4751                 }
4752         }
4753 }
4754
4755
4756
4757 /*
4758  * Verify the choice of an item.
4759  *
4760  * The item can be negative to mean "item on floor".
4761  */
4762 static bool verify(cptr prompt, int item)
4763 {
4764         char        o_name[MAX_NLEN];
4765         char        out_val[MAX_NLEN+20];
4766         object_type *o_ptr;
4767
4768
4769         /* Inventory */
4770         if (item >= 0)
4771         {
4772                 o_ptr = &inventory[item];
4773         }
4774
4775         /* Floor */
4776         else
4777         {
4778                 o_ptr = &o_list[0 - item];
4779         }
4780
4781         /* Describe */
4782         object_desc(o_name, o_ptr, TRUE, 3);
4783
4784         /* Prompt */
4785 #ifdef JP
4786 (void)sprintf(out_val, "%s%s¤Ç¤¹¤«? ", prompt, o_name);
4787 #else
4788         (void)sprintf(out_val, "%s %s? ", prompt, o_name);
4789 #endif
4790
4791
4792         /* Query */
4793         return (get_check(out_val));
4794 }
4795
4796
4797 /*
4798  * Hack -- allow user to "prevent" certain choices
4799  *
4800  * The item can be negative to mean "item on floor".
4801  */
4802 static bool get_item_allow(int item)
4803 {
4804         cptr s;
4805
4806         object_type *o_ptr;
4807
4808         /* Inventory */
4809         if (item >= 0)
4810         {
4811                 o_ptr = &inventory[item];
4812         }
4813
4814         /* Floor */
4815         else
4816         {
4817                 o_ptr = &o_list[0 - item];
4818         }
4819
4820         /* No inscription */
4821         if (!o_ptr->inscription) return (TRUE);
4822
4823         /* Find a '!' */
4824         s = strchr(quark_str(o_ptr->inscription), '!');
4825
4826         /* Process preventions */
4827         while (s)
4828         {
4829                 /* Check the "restriction" */
4830                 if ((s[1] == command_cmd) || (s[1] == '*'))
4831                 {
4832                         /* Verify the choice */
4833 #ifdef JP
4834 if (!verify("ËÜÅö¤Ë", item)) return (FALSE);
4835 #else
4836                         if (!verify("Really try", item)) return (FALSE);
4837 #endif
4838
4839                 }
4840
4841                 /* Find another '!' */
4842                 s = strchr(s + 1, '!');
4843         }
4844
4845         /* Allow it */
4846         return (TRUE);
4847 }
4848
4849
4850
4851 /*
4852  * Auxiliary function for "get_item()" -- test an index
4853  */
4854 static bool get_item_okay(int i)
4855 {
4856         /* Illegal items */
4857         if ((i < 0) || (i >= INVEN_TOTAL)) return (FALSE);
4858
4859         /* Verify the item */
4860         if (!item_tester_okay(&inventory[i])) return (FALSE);
4861
4862         /* Assume okay */
4863         return (TRUE);
4864 }
4865
4866
4867
4868 /*
4869  * Find the "first" inventory object with the given "tag".
4870  *
4871  * A "tag" is a char "n" appearing as "@n" anywhere in the
4872  * inscription of an object.
4873  *
4874  * Also, the tag "@xn" will work as well, where "n" is a tag-char,
4875  * and "x" is the "current" command_cmd code.
4876  */
4877 static int get_tag(int *cp, char tag)
4878 {
4879         int i;
4880         cptr s;
4881
4882         /* Check every object */
4883         for (i = 0; i < INVEN_TOTAL; ++i)
4884         {
4885                 object_type *o_ptr = &inventory[i];
4886
4887                 /* Skip non-objects */
4888                 if (!o_ptr->k_idx) continue;
4889
4890                 /* Skip empty inscriptions */
4891                 if (!o_ptr->inscription) continue;
4892
4893                 /* Skip non-choice */
4894                 if (!item_tester_okay(o_ptr)) continue;
4895
4896                 /* Find a '@' */
4897                 s = strchr(quark_str(o_ptr->inscription), '@');
4898
4899                 /* Process all tags */
4900                 while (s)
4901                 {
4902                         /* Check the special tags */
4903                         if ((s[1] == command_cmd) && (s[2] == tag))
4904                         {
4905                                 /* Save the actual inventory ID */
4906                                 *cp = i;
4907
4908                                 /* Success */
4909                                 return (TRUE);
4910                         }
4911
4912                         /* Find another '@' */
4913                         s = strchr(s + 1, '@');
4914                 }
4915         }
4916
4917         /* Check every object */
4918         for (i = 0; i < INVEN_TOTAL; ++i)
4919         {
4920                 object_type *o_ptr = &inventory[i];
4921
4922                 /* Skip non-objects */
4923                 if (!o_ptr->k_idx) continue;
4924
4925                 /* Skip empty inscriptions */
4926                 if (!o_ptr->inscription) continue;
4927
4928                 /* Find a '@' */
4929                 s = strchr(quark_str(o_ptr->inscription), '@');
4930
4931                 /* Process all tags */
4932                 while (s)
4933                 {
4934                         /* Check the normal tags */
4935                         if (s[1] == tag && !((s[2] >= '0' && s[2] <= '9') || (s[2] >= 'a' && s[2] <= 'z') || (s[2] >= 'A' && s[2] <= 'Z')))
4936                 {
4937                                 /* Save the actual inventory ID */
4938                                 *cp = i;
4939
4940                                 /* Success */
4941                                 return (TRUE);
4942                         }
4943
4944                         /* Find another '@' */
4945                         s = strchr(s + 1, '@');
4946                 }
4947         }
4948
4949         /* No such tag */
4950         return (FALSE);
4951 }
4952
4953
4954
4955 /*
4956  * Let the user select an item, save its "index"
4957  *
4958  * Return TRUE only if an acceptable item was chosen by the user.
4959  *
4960  * The selected item must satisfy the "item_tester_hook()" function,
4961  * if that hook is set, and the "item_tester_tval", if that value is set.
4962  *
4963  * All "item_tester" restrictions are cleared before this function returns.
4964  *
4965  * The user is allowed to choose acceptable items from the equipment,
4966  * inventory, or floor, respectively, if the proper flag was given,
4967  * and there are any acceptable items in that location.
4968  *
4969  * The equipment or inventory are displayed (even if no acceptable
4970  * items are in that location) if the proper flag was given.
4971  *
4972  * If there are no acceptable items available anywhere, and "str" is
4973  * not NULL, then it will be used as the text of a warning message
4974  * before the function returns.
4975  *
4976  * Note that the user must press "-" to specify the item on the floor,
4977  * and there is no way to "examine" the item on the floor, while the
4978  * use of "capital" letters will "examine" an inventory/equipment item,
4979  * and prompt for its use.
4980  *
4981  * If a legal item is selected from the inventory, we save it in "cp"
4982  * directly (0 to 35), and return TRUE.
4983  *
4984  * If a legal item is selected from the floor, we save it in "cp" as
4985  * a negative (-1 to -511), and return TRUE.
4986  *
4987  * If no item is available, we do nothing to "cp", and we display a
4988  * warning message, using "str" if available, and return FALSE.
4989  *
4990  * If no item is selected, we do nothing to "cp", and return FALSE.
4991  *
4992  * Global "p_ptr->command_new" is used when viewing the inventory or equipment
4993  * to allow the user to enter a command while viewing those screens, and
4994  * also to induce "auto-enter" of stores, and other such stuff.
4995  *
4996  * Global "p_ptr->command_see" may be set before calling this function to start
4997  * out in "browse" mode.  It is cleared before this function returns.
4998  *
4999  * Global "p_ptr->command_wrk" is used to choose between equip/inven listings.
5000  * If it is TRUE then we are viewing inventory, else equipment.
5001  *
5002  * We always erase the prompt when we are done, leaving a blank line,
5003  * or a warning message, if appropriate, if no items are available.
5004  */
5005 bool get_item(int *cp, cptr pmt, cptr str, int mode)
5006 {
5007         s16b this_o_idx, next_o_idx = 0;
5008
5009         char n1, n2, which = ' ';
5010
5011         int j, k, i1, i2, e1, e2;
5012
5013         bool done, item;
5014
5015         bool oops = FALSE;
5016
5017         bool equip = FALSE;
5018         bool inven = FALSE;
5019         bool floor = FALSE;
5020
5021         bool allow_floor = FALSE;
5022
5023         bool toggle = FALSE;
5024
5025         char tmp_val[160];
5026         char out_val[160];
5027
5028         /* See cmd5.c */
5029         extern bool select_spellbook;
5030         extern bool select_the_force;
5031
5032         int menu_line = (use_menu ? 1 : 0);
5033         int max_inven = 0;
5034         int max_equip = 0;
5035
5036 #ifdef ALLOW_EASY_FLOOR /* TNB */
5037
5038         if (easy_floor) return get_item_floor(cp, pmt, str, mode);
5039
5040 #endif /* ALLOW_EASY_FLOOR -- TNB */
5041
5042 #ifdef ALLOW_REPEAT
5043
5044         /* Get the item index */
5045         if (repeat_pull(cp))
5046         {
5047                 if (*cp == 1111) { /* the_force */
5048                     item_tester_tval = 0;
5049                     item_tester_hook = NULL;
5050                     return (TRUE);
5051                 } else
5052                 /* Floor item? */
5053                 if (*cp < 0)
5054                 {
5055                         object_type *o_ptr;
5056
5057                         /* Special index */
5058                         k = 0 - (*cp);
5059
5060                         /* Acquire object */
5061                         o_ptr = &o_list[k];
5062
5063                         /* Validate the item */
5064                         if (item_tester_okay(o_ptr))
5065                         {
5066                                 /* Forget the item_tester_tval restriction */
5067                                 item_tester_tval = 0;
5068
5069                                 /* Forget the item_tester_hook restriction */
5070                                 item_tester_hook = NULL;
5071
5072                                 /* Success */
5073                                 return (TRUE);
5074                         }
5075                 }
5076
5077                 /* Verify the item */
5078                 else if (get_item_okay(*cp))
5079                 {
5080                         /* Forget the item_tester_tval restriction */
5081                         item_tester_tval = 0;
5082
5083                         /* Forget the item_tester_hook restriction */
5084                         item_tester_hook = NULL;
5085
5086                         /* Success */
5087                         return (TRUE);
5088                 }
5089         }
5090
5091 #endif /* ALLOW_REPEAT */
5092
5093         /* Extract args */
5094         if (mode & (USE_EQUIP)) equip = TRUE;
5095         if (mode & (USE_INVEN)) inven = TRUE;
5096         if (mode & (USE_FLOOR)) floor = TRUE;
5097
5098
5099         /* Paranoia XXX XXX XXX */
5100         msg_print(NULL);
5101
5102
5103         /* Not done */
5104         done = FALSE;
5105
5106         /* No item selected */
5107         item = FALSE;
5108
5109
5110         /* Full inventory */
5111         i1 = 0;
5112         i2 = INVEN_PACK - 1;
5113
5114         /* Forbid inventory */
5115         if (!inven) i2 = -1;
5116         else if (use_menu)
5117         {
5118                 for (j = 0; j < INVEN_PACK; j++)
5119                         if (item_tester_okay(&inventory[j])) max_inven++;
5120         }
5121
5122         /* Restrict inventory indexes */
5123         while ((i1 <= i2) && (!get_item_okay(i1))) i1++;
5124         while ((i1 <= i2) && (!get_item_okay(i2))) i2--;
5125
5126
5127         /* Full equipment */
5128         e1 = INVEN_RARM;
5129         e2 = INVEN_TOTAL - 1;
5130
5131         /* Forbid equipment */
5132         if (!equip) e2 = -1;
5133         else if (use_menu)
5134         {
5135                 for (j = INVEN_RARM; j < INVEN_TOTAL; j++)
5136                         if (item_tester_okay(&inventory[j])) max_equip++;
5137                 if (p_ptr->ryoute && !item_tester_no_ryoute) max_equip++;
5138         }
5139
5140         /* Restrict equipment indexes */
5141         while ((e1 <= e2) && (!get_item_okay(e1))) e1++;
5142         while ((e1 <= e2) && (!get_item_okay(e2))) e2--;
5143
5144
5145
5146         /* Restrict floor usage */
5147         if (floor)
5148         {
5149                 /* Scan all objects in the grid */
5150                 for (this_o_idx = cave[py][px].o_idx; this_o_idx; this_o_idx = next_o_idx)
5151                 {
5152                         object_type *o_ptr;
5153
5154                         /* Acquire object */
5155                         o_ptr = &o_list[this_o_idx];
5156
5157                         /* Acquire next object */
5158                         next_o_idx = o_ptr->next_o_idx;
5159
5160                         /* Accept the item on the floor if legal */
5161                         if (item_tester_okay(o_ptr)) allow_floor = TRUE;
5162                 }
5163         }
5164
5165
5166         /* Require at least one legal choice */
5167         if (!allow_floor && (i1 > i2) && (e1 > e2))
5168         {
5169                 /* Cancel p_ptr->command_see */
5170                 command_see = FALSE;
5171
5172                 /* Oops */
5173                 oops = TRUE;
5174
5175                 /* Done */
5176                 done = TRUE;
5177
5178                 if (select_the_force) {
5179                     *cp = 1111;
5180                     item = TRUE;
5181                 }
5182         }
5183
5184         /* Analyze choices */
5185         else
5186         {
5187                 /* Hack -- Start on equipment if requested */
5188                 if (command_see && command_wrk && equip)
5189
5190                 {
5191                         command_wrk = TRUE;
5192                 }
5193
5194                 /* Use inventory if allowed */
5195                 else if (inven)
5196                 {
5197                         command_wrk = FALSE;
5198                 }
5199
5200                 /* Use equipment if allowed */
5201                 else if (equip)
5202                 {
5203                         command_wrk = TRUE;
5204                 }
5205
5206                 /* Use inventory for floor */
5207                 else
5208                 {
5209                         command_wrk = FALSE;
5210                 }
5211         }
5212
5213
5214         /*
5215          * Äɲ媥ץ·¥ç¥ó(always_show_list)¤¬ÀßÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¾ï¤Ë°ìÍ÷¤òɽ¼¨¤¹¤ë
5216          */
5217         if ((always_show_list == TRUE) || use_menu) command_see = TRUE;
5218
5219         /* Hack -- start out in "display" mode */
5220         if (command_see)
5221         {
5222                 /* Save screen */
5223                 screen_save();
5224         }
5225
5226
5227         /* Repeat until done */
5228         while (!done)
5229         {
5230                 int get_item_label = 0;
5231
5232                 /* Show choices */
5233                 if (show_choices)
5234                 {
5235                         int ni = 0;
5236                         int ne = 0;
5237
5238                         /* Scan windows */
5239                         for (j = 0; j < 8; j++)
5240                         {
5241                                 /* Unused */
5242                                 if (!angband_term[j]) continue;
5243
5244                                 /* Count windows displaying inven */
5245                                 if (window_flag[j] & (PW_INVEN)) ni++;
5246
5247                                 /* Count windows displaying equip */
5248                                 if (window_flag[j] & (PW_EQUIP)) ne++;
5249                         }
5250
5251                         /* Toggle if needed */
5252                         if ((command_wrk && ni && !ne) ||
5253                             (!command_wrk && !ni && ne))
5254                         {
5255                                 /* Toggle */
5256                                 toggle_inven_equip();
5257
5258                                 /* Track toggles */
5259                                 toggle = !toggle;
5260                         }
5261
5262                         /* Update */
5263                         p_ptr->window |= (PW_INVEN | PW_EQUIP);
5264
5265                         /* Redraw windows */
5266                         window_stuff();
5267                 }
5268
5269                 /* Inventory screen */
5270                 if (!command_wrk)
5271                 {
5272                         /* Extract the legal requests */
5273                         n1 = I2A(i1);
5274                         n2 = I2A(i2);
5275
5276                         /* Redraw if needed */
5277                         if (command_see) get_item_label = show_inven(menu_line);
5278                 }
5279
5280                 /* Equipment screen */
5281                 else
5282                 {
5283                         /* Extract the legal requests */
5284                         n1 = I2A(e1 - INVEN_RARM);
5285                         n2 = I2A(e2 - INVEN_RARM);
5286
5287                         /* Redraw if needed */
5288                         if (command_see) get_item_label = show_equip(menu_line);
5289                 }
5290
5291                 /* Viewing inventory */
5292                 if (!command_wrk)
5293                 {
5294                         /* Begin the prompt */
5295 #ifdef JP
5296 sprintf(out_val, "»ý¤Áʪ:");
5297 #else
5298                         sprintf(out_val, "Inven:");
5299 #endif
5300
5301
5302                         /* Some legal items */
5303                         if ((i1 <= i2) && !use_menu)
5304                         {
5305                                 /* Build the prompt */
5306 #ifdef JP
5307 sprintf(tmp_val, "%c-%c,",
5308 #else
5309                                 sprintf(tmp_val, " %c-%c,",
5310 #endif
5311
5312                                         index_to_label(i1), index_to_label(i2));
5313
5314                                 /* Append */
5315                                 strcat(out_val, tmp_val);
5316                         }
5317
5318                         /* Indicate ability to "view" */
5319 #ifdef JP
5320 if (!command_see && !use_menu) strcat(out_val, " '*'°ìÍ÷,");
5321 #else
5322                         if (!command_see && !use_menu) strcat(out_val, " * to see,");
5323 #endif
5324
5325
5326                         /* Append */
5327 #ifdef JP
5328 if (equip) strcat(out_val, format(" %s ÁõÈ÷ÉÊ,", use_menu ? "'4'or'6'" : "'/'"));
5329 else if (select_the_force)
5330         strcat(out_val, " 'w'Îýµ¤½Ñ,");
5331 #else
5332 if (equip) strcat(out_val, format(" %s for Equip,", use_menu ? "4 or 6" : "/"));
5333 else if (select_the_force)
5334         strcat(out_val, " w for the Force,");
5335 #endif
5336
5337                 }
5338
5339                 /* Viewing equipment */
5340                 else
5341                 {
5342                         /* Begin the prompt */
5343 #ifdef JP
5344 sprintf(out_val, "ÁõÈ÷ÉÊ:");
5345 #else
5346                         sprintf(out_val, "Equip:");
5347 #endif
5348
5349
5350                         /* Some legal items */
5351                         if ((e1 <= e2) && !use_menu)
5352                         {
5353                                 /* Build the prompt */
5354 #ifdef JP
5355 sprintf(tmp_val, "%c-%c,",
5356 #else
5357                                 sprintf(tmp_val, " %c-%c,",
5358 #endif
5359
5360                                         index_to_label(e1), index_to_label(e2));
5361
5362                                 /* Append */
5363                                 strcat(out_val, tmp_val);
5364                         }
5365
5366                         /* Indicate ability to "view" */
5367 #ifdef JP
5368 if (!command_see && !use_menu) strcat(out_val, " '*'°ìÍ÷,");
5369 #else
5370                         if (!command_see) strcat(out_val, " * to see,");
5371 #endif
5372
5373
5374                         /* Append */
5375 #ifdef JP
5376 if (inven) strcat(out_val, format(" %s »ý¤Áʪ,", use_menu ? "'4'or'6'" : "'/'"));
5377 #else
5378                         if (inven) strcat(out_val, " / for Inven,");
5379 #endif
5380
5381                 }
5382
5383                 /* Indicate legality of the "floor" item */
5384 #ifdef JP
5385 if (allow_floor) strcat(out_val, " '-'¾²¾å,");
5386 #else
5387                 if (allow_floor) strcat(out_val, " - for floor,");
5388 #endif
5389
5390
5391                 /* Finish the prompt */
5392                 strcat(out_val, " ESC");
5393
5394                 /* Build the prompt */
5395                 sprintf(tmp_val, "(%s) %s", out_val, pmt);
5396
5397                 /* Show the prompt */
5398                 prt(tmp_val, 0, 0);
5399
5400
5401                 /* Get a key */
5402                 which = inkey();
5403
5404                 if (use_menu)
5405                 {
5406                 int max_line = (command_wrk ? max_equip : max_inven);
5407                 switch (which)
5408                 {
5409                         case ESCAPE:
5410                         case 'z':
5411                         case 'Z':
5412                         case '0':
5413                         {
5414                                 done = TRUE;
5415                                 break;
5416                         }
5417
5418                         case '8':
5419                         case 'k':
5420                         case 'K':
5421                         {
5422                                 menu_line += (max_line - 1);
5423                                 break;
5424                         }
5425
5426                         case '2':
5427                         case 'j':
5428                         case 'J':
5429                         {
5430                                 menu_line++;
5431                                 break;
5432                         }
5433
5434                         case '4':
5435                         case '6':
5436                         case 'h':
5437                         case 'H':
5438                         case 'l':
5439                         case 'L':
5440                         {
5441                                 /* Verify legality */
5442                                 if (!inven || !equip)
5443                                 {
5444                                         bell();
5445                                         break;
5446                                 }
5447
5448                                 /* Hack -- Fix screen */
5449                                 if (command_see)
5450                                 {
5451                                         /* Load screen */
5452                                         screen_load();
5453
5454                                         /* Save screen */
5455                                         screen_save();
5456                                 }
5457
5458                                 /* Switch inven/equip */
5459                                 command_wrk = !command_wrk;
5460                                 max_line = (command_wrk ? max_equip : max_inven);
5461                                 if (menu_line > max_line) menu_line = max_line;
5462
5463                                 /* Need to redraw */
5464                                 break;
5465                         }
5466
5467                         case 'x':
5468                         case 'X':
5469                         case '\r':
5470                         {
5471                                 /* Validate the item */
5472                                 if (!get_item_okay(get_item_label))
5473                                 {
5474                                         bell();
5475                                         break;
5476                                 }
5477
5478                                 /* Allow player to "refuse" certain actions */
5479                                 if (!get_item_allow(get_item_label))
5480                                 {
5481                                         done = TRUE;
5482                                         break;
5483                                 }
5484
5485                                 /* Accept that choice */
5486                                 (*cp) = get_item_label;
5487                                 item = TRUE;
5488                                 done = TRUE;
5489                                 break;
5490                         }
5491                         case 'w':
5492                         {
5493                                 if (select_the_force) {
5494                                         *cp = 1111;
5495                                         item = TRUE;
5496                                         done = TRUE;
5497                                         break;
5498                                 }
5499                         }
5500                 }
5501                 if (menu_line > max_line) menu_line -= max_line;
5502                 }
5503                 else
5504                 {
5505                 /* Parse it */
5506                 switch (which)
5507                 {
5508                         case ESCAPE:
5509                         {
5510                                 done = TRUE;
5511                                 break;
5512                         }
5513
5514                         case '*':
5515                         case '?':
5516                         case ' ':
5517                         {
5518                                 /* Hide the list */
5519                                 if (command_see)
5520                                 {
5521                                         /* Flip flag */
5522                                         command_see = FALSE;
5523
5524                                         /* Load screen */
5525                                         screen_load();
5526                                 }
5527
5528                                 /* Show the list */
5529                                 else
5530                                 {
5531                                         /* Save screen */
5532                                         screen_save();
5533
5534                                         /* Flip flag */
5535                                         command_see = TRUE;
5536                                 }
5537                                 break;
5538                         }
5539
5540                         case '/':
5541                         {
5542                                 /* Verify legality */
5543                                 if (!inven || !equip)
5544                                 {
5545                                         bell();
5546                                         break;
5547                                 }
5548
5549                                 /* Hack -- Fix screen */
5550                                 if (command_see)
5551                                 {
5552                                         /* Load screen */
5553                                         screen_load();
5554
5555                                         /* Save screen */
5556                                         screen_save();
5557                                 }
5558
5559                                 /* Switch inven/equip */
5560                                 command_wrk = !command_wrk;
5561
5562                                 /* Need to redraw */
5563                                 break;
5564                         }
5565
5566                         case '-':
5567                         {
5568                                 /* Use floor item */
5569                                 if (allow_floor)
5570                                 {
5571                                         /* Scan all objects in the grid */
5572                                         for (this_o_idx = cave[py][px].o_idx; this_o_idx; this_o_idx = next_o_idx)
5573                                         {
5574                                                 object_type *o_ptr;
5575
5576                                                 /* Acquire object */
5577                                                 o_ptr = &o_list[this_o_idx];
5578
5579                                                 /* Acquire next object */
5580                                                 next_o_idx = o_ptr->next_o_idx;
5581
5582                                                 /* Validate the item */
5583                                                 if (!item_tester_okay(o_ptr)) continue;
5584
5585                                                 /* Special index */
5586                                                 k = 0 - this_o_idx;
5587
5588                                                 /* Verify the item (if required) */
5589 #ifdef JP
5590 if (other_query_flag && !verify("ËÜÅö¤Ë", k)) continue;
5591 #else
5592                                                 if (other_query_flag && !verify("Try", k)) continue;
5593 #endif
5594
5595
5596                                                 /* Allow player to "refuse" certain actions */
5597                                                 if (!get_item_allow(k)) continue;
5598
5599                                                 /* Accept that choice */
5600                                                 (*cp) = k;
5601                                                 item = TRUE;
5602                                                 done = TRUE;
5603                                                 break;
5604                                         }
5605
5606                                         /* Outer break */
5607                                         if (done) break;
5608                                 }
5609
5610                                 /* Oops */
5611                                 bell();
5612                                 break;
5613                         }
5614
5615                         case '0':
5616                         case '1': case '2': case '3':
5617                         case '4': case '5': case '6':
5618                         case '7': case '8': case '9':
5619                         {
5620                                 /* Look up the tag */
5621                                 if (!get_tag(&k, which))
5622                                 {
5623                                         bell();
5624                                         break;
5625                                 }
5626
5627                                 /* Hack -- Validate the item */
5628                                 if ((k < INVEN_RARM) ? !inven : !equip)
5629                                 {
5630                                         bell();
5631                                         break;
5632                                 }
5633
5634                                 /* Validate the item */
5635                                 if (!get_item_okay(k))
5636                                 {
5637                                         bell();
5638                                         break;
5639                                 }
5640
5641                                 /* Allow player to "refuse" certain actions */
5642                                 if (!get_item_allow(k))
5643                                 {
5644                                         done = TRUE;
5645                                         break;
5646                                 }
5647
5648                                 /* Accept that choice */
5649                                 (*cp) = k;
5650                                 item = TRUE;
5651                                 done = TRUE;
5652                                 break;
5653                         }
5654
5655                         case '\n':
5656 #if 0
5657                         case '\r':
5658 #endif
5659                         {
5660                                 /* Choose "default" inventory item */
5661                                 if (!command_wrk)
5662                                 {
5663                                         k = ((i1 == i2) ? i1 : -1);
5664                                 }
5665
5666                                 /* Choose "default" equipment item */
5667                                 else
5668                                 {
5669                                         k = ((e1 == e2) ? e1 : -1);
5670                                 }
5671
5672                                 /* Validate the item */
5673                                 if (!get_item_okay(k))
5674                                 {
5675                                         bell();
5676                                         break;
5677                                 }
5678
5679                                 /* Allow player to "refuse" certain actions */
5680                                 if (!get_item_allow(k))
5681                                 {
5682                                         done = TRUE;
5683                                         break;
5684                                 }
5685
5686                                 /* Accept that choice */
5687                                 (*cp) = k;
5688                                 item = TRUE;
5689                                 done = TRUE;
5690                                 break;
5691                         }
5692
5693                         case 'w':
5694                         {
5695                                 if (select_the_force) {
5696                                         *cp = 1111;
5697                                         item = TRUE;
5698                                         done = TRUE;
5699                                         break;
5700                                 }
5701                         }
5702
5703                         default:
5704                         {
5705                                 int ver;
5706
5707                                 if(select_spellbook){
5708                                     bool not_found = FALSE;
5709                                     /* Look up the tag */
5710                                     if (!get_tag(&k, which))
5711                                     {
5712                                         not_found = TRUE;
5713                                     }
5714
5715                                     /* Hack -- Validate the item */
5716                                     if ((k < INVEN_RARM) ? !inven : !equip)
5717                                     {
5718                                         not_found = TRUE;
5719                                     }
5720
5721                                     /* Validate the item */
5722                                     if (!get_item_okay(k))
5723                                     {
5724                                         not_found = TRUE;
5725                                     }
5726
5727                                     if( !not_found ){
5728                                         /* Accept that choice */
5729                                         (*cp) = k;
5730                                         item = TRUE;
5731                                         done = TRUE;
5732                                         break;
5733                                     }
5734                                 }                               
5735
5736                                 /* Extract "query" setting */
5737                                 ver = isupper(which);
5738                                 which = tolower(which);
5739
5740                                 /* Convert letter to inventory index */
5741                                 if (!command_wrk)
5742                                 {
5743                                         k = label_to_inven(which);
5744                                 }
5745
5746                                 /* Convert letter to equipment index */
5747                                 else
5748                                 {
5749                                         k = label_to_equip(which);
5750                                 }
5751
5752                                 /* Validate the item */
5753                                 if (!get_item_okay(k))
5754                                 {
5755                                         bell();
5756                                         break;
5757                                 }
5758
5759                                 /* Verify the item */
5760 #ifdef JP
5761 if (ver && !verify("ËÜÅö¤Ë", k))
5762 #else
5763                                 if (ver && !verify("Try", k))
5764 #endif
5765
5766                                 {
5767                                         done = TRUE;
5768                                         break;
5769                                 }
5770
5771                                 /* Allow player to "refuse" certain actions */
5772                                 if (!get_item_allow(k))
5773                                 {
5774                                         done = TRUE;
5775                                         break;
5776                                 }
5777
5778                                 /* Accept that choice */
5779                                 (*cp) = k;
5780                                 item = TRUE;
5781                                 done = TRUE;
5782                                 break;
5783                         }
5784                 }
5785                 }
5786         }
5787
5788
5789         /* Fix the screen if necessary */
5790         if (command_see)
5791         {
5792                 /* Load screen */
5793                 screen_load();
5794
5795                 /* Hack -- Cancel "display" */
5796                 command_see = FALSE;
5797         }
5798
5799
5800         /* Forget the item_tester_tval restriction */
5801         item_tester_tval = 0;
5802
5803         item_tester_no_ryoute = FALSE;
5804
5805         /* Forget the item_tester_hook restriction */
5806         item_tester_hook = NULL;
5807
5808
5809         /* Clean up */
5810         if (show_choices)
5811         {
5812                 /* Toggle again if needed */
5813                 if (toggle) toggle_inven_equip();
5814
5815                 /* Update */
5816                 p_ptr->window |= (PW_INVEN | PW_EQUIP);
5817
5818                 /* Window stuff */
5819                 window_stuff();
5820         }
5821
5822
5823         /* Clear the prompt line */
5824         prt("", 0, 0);
5825
5826         /* Warning if needed */
5827         if (oops && str) msg_print(str);
5828
5829 #ifdef ALLOW_REPEAT
5830         if (item) repeat_push(*cp);
5831 #endif /* ALLOW_REPEAT */
5832
5833         /* Result */
5834         return (item);
5835 }
5836
5837
5838 #ifdef ALLOW_EASY_FLOOR
5839
5840 /*
5841  * scan_floor --
5842  *
5843  * Return a list of o_list[] indexes of items at the given cave
5844  * location. Valid flags are:
5845  *
5846  *              mode & 0x01 -- Item tester
5847  *              mode & 0x02 -- Marked items only
5848  *              mode & 0x04 -- Stop after first
5849  */
5850 bool scan_floor(int *items, int *item_num, int y, int x, int mode)
5851 {
5852         int this_o_idx, next_o_idx;
5853
5854         int num = 0;
5855
5856         (*item_num) = 0;
5857
5858         /* Sanity */
5859         if (!in_bounds(y, x)) return (FALSE);
5860
5861         /* Scan all objects in the grid */
5862         for (this_o_idx = cave[y][x].o_idx; this_o_idx; this_o_idx = next_o_idx)
5863         {
5864                 object_type *o_ptr;
5865
5866                 /* Acquire object */
5867                 o_ptr = &o_list[this_o_idx];
5868
5869                 /* Acquire next object */
5870                 next_o_idx = o_ptr->next_o_idx;
5871
5872                 /* Item tester */
5873                 if ((mode & 0x01) && !item_tester_okay(o_ptr)) continue;
5874
5875                 /* Marked */
5876                 if ((mode & 0x02) && !o_ptr->marked) continue;
5877
5878                 /* Accept this item */
5879                 items[num++] = this_o_idx;
5880
5881                 /* Only one */
5882                 if (mode & 0x04) break;
5883
5884                 /* XXX Hack -- Enforce limit */
5885                 if (num == 23) break;
5886         }
5887
5888         /* Number of items */
5889         (*item_num) = num;
5890
5891         /* Result */
5892         return (num != 0);
5893 }
5894
5895 /*
5896  * Display a list of the items on the floor at the given location.
5897  */
5898 int show_floor(int target_item, int y, int x)
5899 {
5900         int i, j, k, l;
5901         int col, len, lim;
5902
5903         object_type *o_ptr;
5904
5905         char o_name[MAX_NLEN];
5906
5907         char tmp_val[80];
5908
5909         int out_index[23];
5910         byte out_color[23];
5911         char out_desc[23][80];
5912         int target_item_label = 0;
5913
5914         int floor_list[23], floor_num;
5915
5916         /* Default length */
5917         len = 79 - 50;
5918
5919         /* Maximum space allowed for descriptions */
5920         lim = 79 - 3;
5921
5922         /* Require space for weight (if needed) */
5923         if (show_weights) lim -= 9;
5924
5925         /* Scan for objects in the grid, using item_tester_okay() */
5926         (void) scan_floor(floor_list, &floor_num, y, x, 0x01);
5927
5928         /* Display the inventory */
5929         for (k = 0, i = 0; i < floor_num; i++)
5930         {
5931                 o_ptr = &o_list[floor_list[i]];
5932
5933                 /* Describe the object */
5934                 object_desc(o_name, o_ptr, TRUE, 3);
5935
5936                 /* Hack -- enforce max length */
5937                 o_name[lim] = '\0';
5938
5939                 /* Save the index */
5940                 out_index[k] = i;
5941
5942                 /* Acquire inventory color */
5943                 out_color[k] = tval_to_attr[o_ptr->tval & 0x7F];
5944
5945                 /* Save the object description */
5946                 strcpy(out_desc[k], o_name);
5947
5948                 /* Find the predicted "line length" */
5949                 l = strlen(out_desc[k]) + 5;
5950
5951                 /* Be sure to account for the weight */
5952                 if (show_weights) l += 9;
5953
5954                 /* Maintain the maximum length */
5955                 if (l > len) len = l;
5956
5957                 /* Advance to next "line" */
5958                 k++;
5959         }
5960
5961         /* Find the column to start in */
5962         col = (len > 76) ? 0 : (79 - len);
5963
5964         /* Output each entry */
5965         for (j = 0; j < k; j++)
5966         {
5967                 /* Get the index */
5968                 i = floor_list[out_index[j]];
5969
5970                 /* Get the item */
5971                 o_ptr = &o_list[i];
5972
5973                 /* Clear the line */
5974                 prt("", j + 1, col ? col - 2 : col);
5975
5976                 if (use_menu && target_item)
5977                 {
5978                         if (j == (target_item-1))
5979                         {
5980 #ifdef JP
5981                                 strcpy(tmp_val, "¡Õ");
5982 #else
5983                                 strcpy(tmp_val, "> ");
5984 #endif
5985                                 target_item_label = i;
5986                         }
5987                         else strcpy(tmp_val, "   ");
5988                 }
5989                 else
5990                         /* Prepare an index --(-- */
5991                         sprintf(tmp_val, "%c)", index_to_label(j));
5992
5993                 /* Clear the line with the (possibly indented) index */
5994                 put_str(tmp_val, j + 1, col);
5995
5996                 /* Display the entry itself */
5997                 c_put_str(out_color[j], out_desc[j], j + 1, col + 3);
5998
5999                 /* Display the weight if needed */
6000                 if (show_weights)
6001                 {
6002                         int wgt = o_ptr->weight * o_ptr->number;
6003 #ifdef JP
6004                         sprintf(tmp_val, "%3d.%1d kg", lbtokg1(wgt) , lbtokg2(wgt) );
6005 #else
6006                         sprintf(tmp_val, "%3d.%1d lb", wgt / 10, wgt % 10);
6007 #endif
6008
6009                         put_str(tmp_val, j + 1, 71);
6010                 }
6011         }
6012
6013         /* Make a "shadow" below the list (only if needed) */
6014         if (j && (j < 23)) prt("", j + 1, col ? col - 2 : col);
6015
6016         return target_item_label;
6017 }
6018
6019 /*
6020  * This version of get_item() is called by get_item() when
6021  * the easy_floor is on.
6022  */
6023 bool get_item_floor(int *cp, cptr pmt, cptr str, int mode)
6024 {
6025         char n1 = ' ', n2 = ' ', which = ' ';
6026
6027         int j, k, i1, i2, e1, e2;
6028
6029         bool done, item;
6030
6031         bool oops = FALSE;
6032
6033         bool equip = FALSE;
6034         bool inven = FALSE;
6035         bool floor = FALSE;
6036
6037         bool allow_equip = FALSE;
6038         bool allow_inven = FALSE;
6039         bool allow_floor = FALSE;
6040
6041         bool toggle = FALSE;
6042
6043         char tmp_val[160];
6044         char out_val[160];
6045
6046         int floor_num, floor_list[23], floor_top = 0;
6047
6048         extern bool select_spellbook;
6049         extern bool select_the_force;
6050
6051         int menu_line = (use_menu ? 1 : 0);
6052         int max_inven = 0;
6053         int max_equip = 0;
6054
6055 #ifdef ALLOW_REPEAT
6056
6057         /* Get the item index */
6058         if (repeat_pull(cp))
6059         {
6060                 if (*cp == 1111) { /* the_force */
6061                     item_tester_tval = 0;
6062                     item_tester_hook = NULL;
6063                     return (TRUE);
6064                 } else
6065                 /* Floor item? */
6066                 if (*cp < 0)
6067                 {
6068                         object_type *o_ptr;
6069
6070                         /* Special index */
6071                         k = 0 - (*cp);
6072
6073                         /* Acquire object */
6074                         o_ptr = &o_list[k];
6075
6076                         /* Validate the item */
6077                         if (item_tester_okay(o_ptr))
6078                         {
6079                                 /* Forget the item_tester_tval restriction */
6080                                 item_tester_tval = 0;
6081
6082                                 /* Forget the item_tester_hook restriction */
6083                                 item_tester_hook = NULL;
6084
6085                                 /* Success */
6086                                 return (TRUE);
6087                         }
6088                 }
6089
6090                 /* Verify the item */
6091                 else if (get_item_okay(*cp))
6092                 {
6093                         /* Forget the item_tester_tval restriction */
6094                         item_tester_tval = 0;
6095
6096                         /* Forget the item_tester_hook restriction */
6097                         item_tester_hook = NULL;
6098
6099                         /* Success */
6100                         return (TRUE);
6101                 }
6102         }
6103
6104 #endif /* ALLOW_REPEAT */
6105
6106         /* Extract args */
6107         if (mode & (USE_EQUIP)) equip = TRUE;
6108         if (mode & (USE_INVEN)) inven = TRUE;
6109         if (mode & (USE_FLOOR)) floor = TRUE;
6110
6111
6112         /* Paranoia XXX XXX XXX */
6113         msg_print(NULL);
6114
6115
6116         /* Not done */
6117         done = FALSE;
6118
6119         /* No item selected */
6120         item = FALSE;
6121
6122
6123         /* Full inventory */
6124         i1 = 0;
6125         i2 = INVEN_PACK - 1;
6126
6127         /* Forbid inventory */
6128         if (!inven) i2 = -1;
6129         else if (use_menu)
6130         {
6131                 for (j = 0; j < INVEN_PACK; j++)
6132                         if (item_tester_okay(&inventory[j])) max_inven++;
6133         }
6134
6135         /* Restrict inventory indexes */
6136         while ((i1 <= i2) && (!get_item_okay(i1))) i1++;
6137         while ((i1 <= i2) && (!get_item_okay(i2))) i2--;
6138
6139
6140         /* Full equipment */
6141         e1 = INVEN_RARM;
6142         e2 = INVEN_TOTAL - 1;
6143
6144         /* Forbid equipment */
6145         if (!equip) e2 = -1;
6146         else if (use_menu)
6147         {
6148                 for (j = INVEN_RARM; j < INVEN_TOTAL; j++)
6149                         if (item_tester_okay(&inventory[j])) max_equip++;
6150                 if (p_ptr->ryoute && !item_tester_no_ryoute) max_equip++;
6151         }
6152
6153         /* Restrict equipment indexes */
6154         while ((e1 <= e2) && (!get_item_okay(e1))) e1++;
6155         while ((e1 <= e2) && (!get_item_okay(e2))) e2--;
6156
6157
6158         /* Count "okay" floor items */
6159         floor_num = 0;
6160
6161         /* Restrict floor usage */
6162         if (floor)
6163         {
6164                 /* Scan all objects in the grid */
6165                 (void) scan_floor(floor_list, &floor_num, py, px, 0x01);
6166         }
6167
6168         /* Accept inventory */
6169         if (i1 <= i2) allow_inven = TRUE;
6170
6171         /* Accept equipment */
6172         if (e1 <= e2) allow_equip = TRUE;
6173
6174         /* Accept floor */
6175         if (floor_num) allow_floor = TRUE;
6176
6177         /* Require at least one legal choice */
6178         if (!allow_inven && !allow_equip && !allow_floor)
6179         {
6180                 /* Cancel p_ptr->command_see */
6181                 command_see = FALSE;
6182
6183                 /* Oops */
6184                 oops = TRUE;
6185
6186                 /* Done */
6187                 done = TRUE;
6188
6189                 if (select_the_force) {
6190                     *cp = 1111;
6191                     item = TRUE;
6192                 }
6193         }
6194
6195         /* Analyze choices */
6196         else
6197         {
6198                 /* Hack -- Start on equipment if requested */
6199                 if (command_see && (command_wrk == (USE_EQUIP))
6200                         && allow_equip)
6201                 {
6202                         command_wrk = (USE_EQUIP);
6203                 }
6204
6205                 /* Use inventory if allowed */
6206                 else if (allow_inven)
6207                 {
6208                         command_wrk = (USE_INVEN);
6209                 }
6210
6211                 /* Use equipment if allowed */
6212                 else if (allow_equip)
6213                 {
6214                         command_wrk = (USE_EQUIP);
6215                 }
6216
6217                 /* Use floor if allowed */
6218                 else if (allow_floor)
6219                 {
6220                         command_wrk = (USE_FLOOR);
6221                 }
6222         }
6223
6224         /*
6225          * Äɲ媥ץ·¥ç¥ó(always_show_list)¤¬ÀßÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¾ï¤Ë°ìÍ÷¤òɽ¼¨¤¹¤ë
6226          */
6227         if ((always_show_list == TRUE) || use_menu) command_see = TRUE;
6228
6229         /* Hack -- start out in "display" mode */
6230         if (command_see)
6231         {
6232                 /* Save screen */
6233                 screen_save();
6234         }
6235
6236         /* Repeat until done */
6237         while (!done)
6238         {
6239                 int get_item_label = 0;
6240
6241                 /* Show choices */
6242                 if (show_choices)
6243                 {
6244                         int ni = 0;
6245                         int ne = 0;
6246
6247                         /* Scan windows */
6248                         for (j = 0; j < 8; j++)
6249                         {
6250                                 /* Unused */
6251                                 if (!angband_term[j]) continue;
6252
6253                                 /* Count windows displaying inven */
6254                                 if (window_flag[j] & (PW_INVEN)) ni++;
6255
6256                                 /* Count windows displaying equip */
6257                                 if (window_flag[j] & (PW_EQUIP)) ne++;
6258                         }
6259
6260                         /* Toggle if needed */
6261                         if ((command_wrk == (USE_EQUIP) && ni && !ne) ||
6262                                 (command_wrk == (USE_INVEN) && !ni && ne))
6263                         {
6264                                 /* Toggle */
6265                                 toggle_inven_equip();
6266
6267                                 /* Track toggles */
6268                                 toggle = !toggle;
6269                         }
6270
6271                         /* Update */
6272                         p_ptr->window |= (PW_INVEN | PW_EQUIP);
6273
6274                         /* Redraw windows */
6275                         window_stuff();
6276                 }
6277
6278                 /* Inventory screen */
6279                 if (command_wrk == (USE_INVEN))
6280                 {
6281                         /* Extract the legal requests */
6282                         n1 = I2A(i1);
6283                         n2 = I2A(i2);
6284
6285                         /* Redraw if needed */
6286                         if (command_see) get_item_label = show_inven(menu_line);
6287                 }
6288
6289                 /* Equipment screen */
6290                 else if (command_wrk == (USE_EQUIP))
6291                 {
6292                         /* Extract the legal requests */
6293                         n1 = I2A(e1 - INVEN_RARM);
6294                         n2 = I2A(e2 - INVEN_RARM);
6295
6296                         /* Redraw if needed */
6297                         if (command_see) get_item_label = show_equip(menu_line);
6298                 }
6299
6300                 /* Floor screen */
6301                 else if (command_wrk == (USE_FLOOR))
6302                 {
6303                         j = floor_top;
6304                         k = MIN(floor_top + 23, floor_num) - 1;
6305
6306                         /* Extract the legal requests */
6307                         n1 = I2A(j - floor_top);
6308                         n2 = I2A(k - floor_top);
6309
6310                         /* Redraw if needed */
6311                         if (command_see) get_item_label = show_floor(menu_line, py, px);
6312                 }
6313
6314                 /* Viewing inventory */
6315                 if (command_wrk == (USE_INVEN))
6316                 {
6317                         /* Begin the prompt */
6318 #ifdef JP
6319 sprintf(out_val, "»ý¤Áʪ:");
6320 #else
6321                         sprintf(out_val, "Inven:");
6322 #endif
6323
6324                         if (!use_menu)
6325                         {
6326                                 /* Build the prompt */
6327 #ifdef JP
6328 sprintf(tmp_val, "%c-%c,",
6329 #else
6330                                 sprintf(tmp_val, " %c-%c,",
6331 #endif
6332
6333                                         index_to_label(i1), index_to_label(i2));
6334
6335                                 /* Append */
6336                                 strcat(out_val, tmp_val);
6337                         }
6338
6339                         /* Indicate ability to "view" */
6340 #ifdef JP
6341 if (!command_see && !use_menu) strcat(out_val, " '*'°ìÍ÷,");
6342 #else
6343                         if (!command_see && !use_menu) strcat(out_val, " * to see,");
6344 #endif
6345
6346
6347                         /* Append */
6348 #ifdef JP
6349 if (allow_equip)
6350 {
6351         if (use_menu)
6352         {
6353                 if (allow_floor)
6354                         strcat(out_val, " '6' ÁõÈ÷ÉÊ,");
6355                 else
6356                         strcat(out_val, " '4'or'6' ÁõÈ÷ÉÊ,");
6357         }
6358         else strcat(out_val, " '/' ÁõÈ÷ÉÊ,");
6359 }
6360 else if (select_the_force)
6361         strcat(out_val, " 'w'Îýµ¤½Ñ,");
6362 #else
6363 if (allow_equip)
6364 {
6365         if (use_menu)
6366         {
6367                 if (allow_floor)
6368                         strcat(out_val, " 6 for Equip,");
6369                 else
6370                         strcat(out_val, " 4 or 6 for Equip,");
6371         }
6372         else strcat(out_val, " / for Equip,");
6373 }
6374 else if (select_the_force)
6375         strcat(out_val, " w for the Force,");
6376 #endif
6377
6378                         /* Append */
6379 #ifdef JP
6380 if (allow_floor)
6381 {
6382         if (use_menu)
6383         {
6384                 if (allow_equip)
6385                         strcat(out_val, " '4' ¾²¾å,");
6386                 else
6387                         strcat(out_val, " '4'or'6' ¾²¾å,");
6388         }
6389         else strcat(out_val, " '-'¾²¾å,");
6390 }
6391 #else
6392                         if (allow_floor) strcat(out_val, " - for floor,");
6393 #endif
6394
6395                 }
6396
6397                 /* Viewing equipment */
6398                 else if (command_wrk == (USE_EQUIP))
6399                 {
6400                         /* Begin the prompt */
6401 #ifdef JP
6402 sprintf(out_val, "ÁõÈ÷ÉÊ:");
6403 #else
6404                         sprintf(out_val, "Equip:");
6405 #endif
6406
6407
6408                         if (!use_menu)
6409                         {
6410                                 /* Build the prompt */
6411 #ifdef JP
6412 sprintf(tmp_val, "%c-%c,",
6413 #else
6414                                 sprintf(tmp_val, " %c-%c,",
6415 #endif
6416
6417                                         index_to_label(e1), index_to_label(e2));
6418
6419                                 /* Append */
6420                                 strcat(out_val, tmp_val);
6421                         }
6422
6423                         /* Indicate ability to "view" */
6424 #ifdef JP
6425 if (!command_see && !use_menu) strcat(out_val, " '*'°ìÍ÷,");
6426 #else
6427                         if (!command_see && !use_menu) strcat(out_val, " * to see,");
6428 #endif
6429
6430
6431                         /* Append */
6432 #ifdef JP
6433 if (allow_inven)
6434 {
6435         if (use_menu)
6436         {
6437                 if (allow_floor)
6438                         strcat(out_val, " '4' »ý¤Áʪ,");
6439                 else
6440                         strcat(out_val, " '4'or'6' »ý¤Áʪ,");
6441         }
6442         else strcat(out_val, " '/' »ý¤Áʪ,");
6443 }
6444 #else
6445                         if (allow_inven) strcat(out_val, " / for Inven,");
6446 #endif
6447
6448
6449                         /* Append */
6450 #ifdef JP
6451 if (allow_floor)
6452 {
6453         if (use_menu)
6454         {
6455                 if (allow_floor)
6456                         strcat(out_val, " '6' ¾²¾å,");
6457                 else
6458                         strcat(out_val, " '4'or'6' ¾²¾å,");
6459         }
6460         else strcat(out_val, " '-'¾²¾å,");
6461 }
6462 #else
6463                         if (allow_floor) strcat(out_val, " - for floor,");
6464 #endif
6465
6466                 }
6467
6468                 /* Viewing floor */
6469                 else if (command_wrk == (USE_FLOOR))
6470                 {
6471                         /* Begin the prompt */
6472 #ifdef JP
6473                         sprintf(out_val, "¾²¾å:");
6474 #else
6475                         sprintf(out_val, "Floor:");
6476 #endif
6477
6478
6479                         if (!use_menu)
6480                         {
6481                                 /* Build the prompt */
6482 #ifdef JP
6483 sprintf(tmp_val, "%c-%c,", n1, n2);
6484 #else
6485                                 sprintf(tmp_val, " %c-%c,", n1, n2);
6486 #endif
6487
6488
6489                                 /* Append */
6490                                 strcat(out_val, tmp_val);
6491                         }
6492
6493                         /* Indicate ability to "view" */
6494 #ifdef JP
6495 if (!command_see && !use_menu) strcat(out_val, " '*'°ìÍ÷,");
6496 #else
6497                         if (!command_see && !use_menu) strcat(out_val, " * to see,");
6498 #endif
6499
6500
6501                         if (use_menu)
6502                         {
6503                                 if (allow_inven && allow_equip)
6504                                 {
6505 #ifdef JP
6506 strcat(out_val, " '4' ÁõÈ÷ÉÊ,  '6' »ý¤Áʪ,");
6507 #else
6508                                         strcat(out_val, " / for Inven,");
6509 #endif
6510
6511                                 }
6512                                 else if (allow_inven)
6513                                 {
6514 #ifdef JP
6515 strcat(out_val, " '4'or'6' »ý¤Áʪ,");
6516 #else
6517                                         strcat(out_val, " / for Inven,");
6518 #endif
6519
6520                                 }
6521                                 else if (allow_equip)
6522                                 {
6523 #ifdef JP
6524 strcat(out_val, " '4'or'6' ÁõÈ÷ÉÊ,");
6525 #else
6526                                         strcat(out_val, " / for Equip,");
6527 #endif
6528
6529                                 }
6530                         }
6531                         /* Append */
6532                         else if (allow_inven)
6533                         {
6534 #ifdef JP
6535 strcat(out_val, " '/' »ý¤Áʪ,");
6536 #else
6537                                 strcat(out_val, " / for Inven,");
6538 #endif
6539
6540                         }
6541                         else if (allow_equip)
6542                         {
6543 #ifdef JP
6544 strcat(out_val, " '/'ÁõÈ÷ÉÊ,");
6545 #else
6546                                 strcat(out_val, " / for Equip,");
6547 #endif
6548
6549                         }
6550                 }
6551
6552                 /* Finish the prompt */
6553                 strcat(out_val, " ESC");
6554
6555                 /* Build the prompt */
6556                 sprintf(tmp_val, "(%s) %s", out_val, pmt);
6557
6558                 /* Show the prompt */
6559                 prt(tmp_val, 0, 0);
6560
6561                 /* Get a key */
6562                 which = inkey();
6563
6564                 if (use_menu)
6565                 {
6566                 int max_line = 1;
6567                 if (command_wrk == USE_INVEN) max_line = max_inven;
6568                 else if (command_wrk == USE_EQUIP) max_line = max_equip;
6569                 else if (command_wrk == USE_FLOOR) max_line = floor_num;
6570                 switch (which)
6571                 {
6572                         case ESCAPE:
6573                         case 'z':
6574                         case 'Z':
6575                         case '0':
6576                         {
6577                                 done = TRUE;
6578                                 break;
6579                         }
6580
6581                         case '8':
6582                         case 'k':
6583                         case 'K':
6584                         {
6585                                 menu_line += (max_line - 1);
6586                                 break;
6587                         }
6588
6589                         case '2':
6590                         case 'j':
6591                         case 'J':
6592                         {
6593                                 menu_line++;
6594                                 break;
6595                         }
6596
6597                         case '4':
6598                         case 'h':
6599                         case 'H':
6600                         {
6601                                 /* Verify legality */
6602                                 if (command_wrk == (USE_INVEN))
6603                                 {
6604                                         if (allow_floor) command_wrk = USE_FLOOR;
6605                                         else if (allow_equip) command_wrk = USE_EQUIP;
6606                                         else
6607                                         {
6608                                                 bell();
6609                                                 break;
6610                                         }
6611                                 }
6612                                 else if (command_wrk == (USE_EQUIP))
6613                                 {
6614                                         if (allow_inven) command_wrk = USE_INVEN;
6615                                         else if (allow_floor) command_wrk = USE_FLOOR;
6616                                         else
6617                                         {
6618                                                 bell();
6619                                                 break;
6620                                         }
6621                                 }
6622                                 else if (command_wrk == (USE_FLOOR))
6623                                 {
6624                                         if (allow_equip) command_wrk = USE_EQUIP;
6625                                         else if (allow_inven) command_wrk = USE_INVEN;
6626                                         else
6627                                         {
6628                                                 bell();
6629                                                 break;
6630                                         }
6631                                 }
6632                                 else
6633                                 {
6634                                         bell();
6635                                         break;
6636                                 }
6637
6638                                 /* Hack -- Fix screen */
6639                                 if (command_see)
6640                                 {
6641                                         /* Load screen */
6642                                         screen_load();
6643
6644                                         /* Save screen */
6645                                         screen_save();
6646                                 }
6647
6648                                 /* Switch inven/equip */
6649                                 if (command_wrk == USE_INVEN) max_line = max_inven;
6650                                 else if (command_wrk == USE_EQUIP) max_line = max_equip;
6651                                 else if (command_wrk == USE_FLOOR) max_line = floor_num;
6652                                 if (menu_line > max_line) menu_line = max_line;
6653
6654                                 /* Need to redraw */
6655                                 break;
6656                         }
6657
6658                         case '6':
6659                         case 'l':
6660                         case 'L':
6661                         {
6662                                 /* Verify legality */
6663                                 if (command_wrk == (USE_INVEN))
6664                                 {
6665                                         if (allow_equip) command_wrk = USE_EQUIP;
6666                                         else if (allow_floor) command_wrk = USE_FLOOR;
6667                                         else
6668                                         {
6669                                                 bell();
6670                                                 break;
6671                                         }
6672                                 }
6673                                 else if (command_wrk == (USE_EQUIP))
6674                                 {
6675                                         if (allow_floor) command_wrk = USE_FLOOR;
6676                                         else if (allow_inven) command_wrk = USE_INVEN;
6677                                         else
6678                                         {
6679                                                 bell();
6680                                                 break;
6681                                         }
6682                                 }
6683                                 else if (command_wrk == (USE_FLOOR))
6684                                 {
6685                                         if (allow_inven) command_wrk = USE_INVEN;
6686                                         else if (allow_equip) command_wrk = USE_EQUIP;
6687                                         else
6688                                         {
6689                                                 bell();
6690                                                 break;
6691                                         }
6692                                 }
6693                                 else
6694                                 {
6695                                         bell();
6696                                         break;
6697                                 }
6698
6699                                 /* Hack -- Fix screen */
6700                                 if (command_see)
6701                                 {
6702                                         /* Load screen */
6703                                         screen_load();
6704
6705                                         /* Save screen */
6706                                         screen_save();
6707                                 }
6708
6709                                 /* Switch inven/equip */
6710                                 if (command_wrk == USE_INVEN) max_line = max_inven;
6711                                 else if (command_wrk == USE_EQUIP) max_line = max_equip;
6712                                 else if (command_wrk == USE_FLOOR) max_line = floor_num;
6713                                 if (menu_line > max_line) menu_line = max_line;
6714
6715                                 /* Need to redraw */
6716                                 break;
6717                         }
6718
6719                         case 'x':
6720                         case 'X':
6721                         case '\r':
6722                         {
6723                                 /* Validate the item */
6724                                 if (!get_item_okay(get_item_label))
6725                                 {
6726                                         bell();
6727                                         break;
6728                                 }
6729
6730                                 /* Allow player to "refuse" certain actions */
6731                                 if (!get_item_allow(get_item_label))
6732                                 {
6733                                         done = TRUE;
6734                                         break;
6735                                 }
6736
6737                                 /* Accept that choice */
6738                                 (*cp) = get_item_label;
6739                                 item = TRUE;
6740                                 done = TRUE;
6741                                 break;
6742                         }
6743                         case 'w':
6744                         {
6745                                 if (select_the_force) {
6746                                         *cp = 1111;
6747                                         item = TRUE;
6748                                         done = TRUE;
6749                                         break;
6750                                 }
6751                         }
6752                 }
6753                 if (menu_line > max_line) menu_line -= max_line;
6754                 }
6755                 else
6756                 {
6757                 /* Parse it */
6758                 switch (which)
6759                 {
6760                         case ESCAPE:
6761                         {
6762                                 done = TRUE;
6763                                 break;
6764                         }
6765
6766                         case '*':
6767                         case '?':
6768                         case ' ':
6769                         {
6770                                 /* Hide the list */
6771                                 if (command_see)
6772                                 {
6773                                         /* Flip flag */
6774                                         command_see = FALSE;
6775
6776                                         /* Load screen */
6777                                         screen_load();
6778                                 }
6779
6780                                 /* Show the list */
6781                                 else
6782                                 {
6783                                         /* Save screen */
6784                                         screen_save();
6785
6786                                         /* Flip flag */
6787                                         command_see = TRUE;
6788                                 }
6789                                 break;
6790                         }
6791
6792                         case '/':
6793                         {
6794                                 if (command_wrk == (USE_INVEN))
6795                                 {
6796                                         if (!allow_equip)
6797                                         {
6798                                                 bell();
6799                                                 break;
6800                                         }
6801                                         command_wrk = (USE_EQUIP);
6802                                 }
6803                                 else if (command_wrk == (USE_EQUIP))
6804                                 {
6805                                         if (!allow_inven)
6806                                         {
6807                                                 bell();
6808                                                 break;
6809                                         }
6810                                         command_wrk = (USE_INVEN);
6811                                 }
6812                                 else if (command_wrk == (USE_FLOOR))
6813                                 {
6814                                         if (allow_inven)
6815                                         {
6816                                                 command_wrk = (USE_INVEN);
6817                                         }
6818                                         else if (allow_equip)
6819                                         {
6820                                                 command_wrk = (USE_EQUIP);
6821                                         }
6822                                         else
6823                                         {
6824                                                 bell();
6825                                                 break;
6826                                         }
6827                                 }
6828
6829                                 /* Hack -- Fix screen */
6830                                 if (command_see)
6831                                 {
6832                                         /* Load screen */
6833                                         screen_load();
6834
6835                                         /* Save screen */
6836                                         screen_save();
6837                                 }
6838
6839                                 /* Need to redraw */
6840                                 break;
6841                         }
6842
6843                         case '-':
6844                         {
6845                                 if (!allow_floor)
6846                                 {
6847                                         bell();
6848                                         break;
6849                                 }
6850
6851                                 /*
6852                                  * If we are already examining the floor, and there
6853                                  * is only one item, we will always select it.
6854                                  * If we aren't examining the floor and there is only
6855                                  * one item, we will select it if floor_query_flag
6856                                  * is FALSE.
6857                                  */
6858                                 if (floor_num == 1)
6859                                 {
6860                                         if ((command_wrk == (USE_FLOOR)) || (!carry_query_flag))
6861                                         {
6862                                                 /* Special index */
6863                                                 k = 0 - floor_list[0];
6864
6865                                                 /* Allow player to "refuse" certain actions */
6866                                                 if (!get_item_allow(k))
6867                                                 {
6868                                                         done = TRUE;
6869                                                         break;
6870                                                 }
6871
6872                                                 /* Accept that choice */
6873                                                 (*cp) = k;
6874                                                 item = TRUE;
6875                                                 done = TRUE;
6876
6877                                                 break;
6878                                         }
6879                                 }
6880
6881                                 /* Hack -- Fix screen */
6882                                 if (command_see)
6883                                 {
6884                                         /* Load screen */
6885                                         screen_load();
6886
6887                                         /* Save screen */
6888                                         screen_save();
6889                                 }
6890
6891                                 command_wrk = (USE_FLOOR);
6892
6893                                 break;
6894                         }
6895
6896                         case '0':
6897                         case '1': case '2': case '3':
6898                         case '4': case '5': case '6':
6899                         case '7': case '8': case '9':
6900                         {
6901                                 /* Look up the tag */
6902                                 if (!get_tag(&k, which))
6903                                 {
6904                                         bell();
6905                                         break;
6906                                 }
6907
6908                                 /* Hack -- Validate the item */
6909                                 if ((k < INVEN_RARM) ? !inven : !equip)
6910                                 {
6911                                         bell();
6912                                         break;
6913                                 }
6914
6915                                 /* Validate the item */
6916                                 if (!get_item_okay(k))
6917                                 {
6918                                         bell();
6919                                         break;
6920                                 }
6921
6922                                 /* Allow player to "refuse" certain actions */
6923                                 if (!get_item_allow(k))
6924                                 {
6925                                         done = TRUE;
6926                                         break;
6927                                 }
6928
6929                                 /* Accept that choice */
6930                                 (*cp) = k;
6931                                 item = TRUE;
6932                                 done = TRUE;
6933                                 break;
6934                         }
6935
6936                         case '\n':
6937 #if 0
6938                         case '\r':
6939 #endif
6940                         {
6941                                 /* Choose "default" inventory item */
6942                                 if (command_wrk == (USE_INVEN))
6943                                 {
6944                                         k = ((i1 == i2) ? i1 : -1);
6945                                 }
6946
6947                                 /* Choose "default" equipment item */
6948                                 else if (command_wrk == (USE_EQUIP))
6949                                 {
6950                                         k = ((e1 == e2) ? e1 : -1);
6951                                 }
6952
6953                                 /* Choose "default" floor item */
6954                                 else if (command_wrk == (USE_FLOOR))
6955                                 {
6956                                         if (floor_num == 1)
6957                                         {
6958                                                 /* Special index */
6959                                                 k = 0 - floor_list[0];
6960
6961                                                 /* Allow player to "refuse" certain actions */
6962                                                 if (!get_item_allow(k))
6963                                                 {
6964                                                         done = TRUE;
6965                                                         break;
6966                                                 }
6967
6968                                                 /* Accept that choice */
6969                                                 (*cp) = k;
6970                                                 item = TRUE;
6971                                                 done = TRUE;
6972                                         }
6973                                         break;
6974                                 }
6975
6976                                 /* Validate the item */
6977                                 if (!get_item_okay(k))
6978                                 {
6979                                         bell();
6980                                         break;
6981                                 }
6982
6983                                 /* Allow player to "refuse" certain actions */
6984                                 if (!get_item_allow(k))
6985                                 {
6986                                         done = TRUE;
6987                                         break;
6988                                 }
6989
6990                                 /* Accept that choice */
6991                                 (*cp) = k;
6992                                 item = TRUE;
6993                                 done = TRUE;
6994                                 break;
6995                         }
6996
6997                         case 'w':
6998                         {
6999                                 if (select_the_force) {
7000                                         *cp = 1111;
7001                                         item = TRUE;
7002                                         done = TRUE;
7003                                         break;
7004                                 }
7005                         }
7006
7007                         default:
7008                         {
7009                                 int ver;
7010
7011                                 if(select_spellbook){
7012                                     bool not_found = FALSE;
7013                                     /* Look up the tag */
7014                                     if (!get_tag(&k, which))
7015                                     {
7016                                         not_found = TRUE;
7017                                     }
7018
7019                                     /* Hack -- Validate the item */
7020                                     if ((k < INVEN_RARM) ? !inven : !equip)
7021                                     {
7022                                         not_found = TRUE;
7023                                     }
7024
7025                                     /* Validate the item */
7026                                     if (!get_item_okay(k))
7027                                     {
7028                                         not_found = TRUE;
7029                                     }
7030
7031                                     if( !not_found ){
7032                                         /* Accept that choice */
7033                                         (*cp) = k;
7034                                         item = TRUE;
7035                                         done = TRUE;
7036                                         break;
7037                                     }
7038                                 }                               
7039
7040                                 /* Extract "query" setting */
7041                                 ver = isupper(which);
7042                                 which = tolower(which);
7043
7044                                 /* Convert letter to inventory index */
7045                                 if (command_wrk == (USE_INVEN))
7046                                 {
7047                                         k = label_to_inven(which);
7048                                 }
7049
7050                                 /* Convert letter to equipment index */
7051                                 else if (command_wrk == (USE_EQUIP))
7052                                 {
7053                                         k = label_to_equip(which);
7054                                 }
7055
7056                                 /* Convert letter to floor index */
7057                                 else if (command_wrk == USE_FLOOR)
7058                                 {
7059                                         k = islower(which) ? A2I(which) : -1;
7060                                         if (k < 0 || k >= floor_num)
7061                                         {
7062                                                 bell();
7063                                                 break;
7064                                         }
7065
7066                                         /* Special index */
7067                                         k = 0 - floor_list[k];
7068                                 }
7069
7070                                 /* Validate the item */
7071                                 if ((command_wrk != USE_FLOOR) && !get_item_okay(k))
7072                                 {
7073                                         bell();
7074                                         break;
7075                                 }
7076
7077                                 /* Verify the item */
7078 #ifdef JP
7079 if (ver && !verify("ËÜÅö¤Ë", k))
7080 #else
7081                                 if (ver && !verify("Try", k))
7082 #endif
7083
7084                                 {
7085                                         done = TRUE;
7086                                         break;
7087                                 }
7088
7089                                 /* Allow player to "refuse" certain actions */
7090                                 if (!get_item_allow(k))
7091                                 {
7092                                         done = TRUE;
7093                                         break;
7094                                 }
7095
7096                                 /* Accept that choice */
7097                                 (*cp) = k;
7098                                 item = TRUE;
7099                                 done = TRUE;
7100                                 break;
7101                         }
7102                 }
7103                 }
7104         }
7105
7106         /* Fix the screen if necessary */
7107         if (command_see)
7108         {
7109                 /* Load screen */
7110                 screen_load();
7111
7112                 /* Hack -- Cancel "display" */
7113                 command_see = FALSE;
7114         }
7115
7116
7117         /* Forget the item_tester_tval restriction */
7118         item_tester_tval = 0;
7119
7120         /* Forget the item_tester_hook restriction */
7121         item_tester_hook = NULL;
7122
7123
7124         /* Clean up */
7125         if (show_choices)
7126         {
7127                 /* Toggle again if needed */
7128                 if (toggle) toggle_inven_equip();
7129
7130                 /* Update */
7131                 p_ptr->window |= (PW_INVEN | PW_EQUIP);
7132
7133                 /* Window stuff */
7134                 window_stuff();
7135         }
7136
7137
7138         /* Clear the prompt line */
7139         prt("", 0, 0);
7140
7141         /* Warning if needed */
7142         if (oops && str) msg_print(str);
7143
7144 #ifdef ALLOW_REPEAT
7145         if (item) repeat_push(*cp);
7146 #endif /* ALLOW_REPEAT */
7147
7148         /* Result */
7149         return (item);
7150 }
7151
7152
7153 bool py_pickup_floor_aux(void)
7154 {
7155         s16b this_o_idx;
7156
7157         object_type *o_ptr;
7158
7159         cptr q, s;
7160
7161         int item;
7162
7163         /* Restrict the choices */
7164         item_tester_hook = inven_carry_okay;
7165
7166         /* Get an object */
7167 #ifdef JP
7168         q = "¤É¤ì¤ò½¦¤¤¤Þ¤¹¤«¡©";
7169         s = "¤â¤¦¥¶¥Ã¥¯¤Ë¤Ï¾²¤Ë¤¢¤ë¤É¤Î¥¢¥¤¥Æ¥à¤âÆþ¤é¤Ê¤¤¡£";
7170 #else
7171         q = "Get which item? ";
7172         s = "You no longer have any room for the objects on the floor.";
7173 #endif
7174
7175         if (get_item(&item, q, s, (USE_FLOOR)))
7176         {
7177                 this_o_idx = 0 - item;
7178         }
7179         else
7180         {
7181                 return (FALSE);
7182         }
7183
7184         /* Access the object */
7185         o_ptr = &o_list[this_o_idx];
7186
7187         /* Pick up the object */
7188         py_pickup_aux(this_o_idx);
7189
7190         return (TRUE);
7191 }
7192
7193
7194 /*
7195  * Make the player carry everything in a grid
7196  *
7197  * If "pickup" is FALSE then only gold will be picked up
7198  *
7199  * This is called by py_pickup() when easy_floor is TRUE.
7200  */
7201 void py_pickup_floor(int pickup)
7202 {
7203         s16b this_o_idx, next_o_idx = 0;
7204
7205         char o_name[MAX_NLEN];
7206         object_type *o_ptr;
7207
7208         int floor_num = 0, floor_list[23], floor_o_idx = 0;
7209
7210         int can_pickup = 0;
7211
7212         /* Scan the pile of objects */
7213         for (this_o_idx = cave[py][px].o_idx; this_o_idx; this_o_idx = next_o_idx)
7214         {
7215                 object_type *o_ptr;
7216
7217                 /* Access the object */
7218                 o_ptr = &o_list[this_o_idx];
7219
7220                 /* Describe the object */
7221                 object_desc(o_name, o_ptr, TRUE, 3);
7222
7223                 /* Access the next object */
7224                 next_o_idx = o_ptr->next_o_idx;
7225
7226                 /* Hack -- disturb */
7227                 disturb(0, 0);
7228
7229                 /* Pick up gold */
7230                 if (o_ptr->tval == TV_GOLD)
7231                 {
7232                         /* Message */
7233 #ifdef JP
7234                 msg_format(" $%ld ¤Î²ÁÃͤ¬¤¢¤ë%s¤ò¸«¤Ä¤±¤¿¡£",
7235                            (long)o_ptr->pval, o_name);
7236 #else
7237                         msg_format("You have found %ld gold pieces worth of %s.",
7238                                 (long) o_ptr->pval, o_name);
7239 #endif
7240
7241
7242                         /* Collect the gold */
7243                         p_ptr->au += o_ptr->pval;
7244
7245                         /* Redraw gold */
7246                         p_ptr->redraw |= (PR_GOLD);
7247
7248                         /* Window stuff */
7249                         p_ptr->window |= (PW_PLAYER);
7250
7251                         /* Delete the gold */
7252                         delete_object_idx(this_o_idx);
7253
7254                         /* Check the next object */
7255                         continue;
7256                 }
7257
7258                 /* Count non-gold objects that can be picked up. */
7259                 if (inven_carry_okay(o_ptr))
7260                 {
7261                         can_pickup++;
7262                 }
7263
7264                 /* Remember this object index */
7265                 floor_list[floor_num] = this_o_idx;
7266
7267                 /* Count non-gold objects */
7268                 floor_num++;
7269
7270                 if (floor_num == 23) break;
7271
7272                 /* Remember this index */
7273                 floor_o_idx = this_o_idx;
7274         }
7275
7276         /* There are no non-gold objects */
7277         if (!floor_num)
7278                 return;
7279
7280         /* Mention the number of objects */
7281         if (!pickup)
7282         {
7283                 /* One object */
7284                 if (floor_num == 1)
7285                 {
7286                         /* Access the object */
7287                         o_ptr = &o_list[floor_o_idx];
7288
7289 #ifdef ALLOW_EASY_SENSE
7290
7291                         /* Option: Make object sensing easy */
7292                         if (easy_sense)
7293                         {
7294                                 /* Sense the object */
7295                                 (void) sense_object(o_ptr);
7296                         }
7297
7298 #endif /* ALLOW_EASY_SENSE */
7299
7300                         /* Describe the object */
7301                         object_desc(o_name, o_ptr, TRUE, 3);
7302
7303                         /* Message */
7304 #ifdef JP
7305                                 msg_format("%s¤¬¤¢¤ë¡£", o_name);
7306 #else
7307                         msg_format("You see %s.", o_name);
7308 #endif
7309
7310                 }
7311
7312                 /* Multiple objects */
7313                 else
7314                 {
7315                         /* Message */
7316 #ifdef JP
7317                         msg_format("%d ¸Ä¤Î¥¢¥¤¥Æ¥à¤Î»³¤¬¤¢¤ë¡£", floor_num);
7318 #else
7319                         msg_format("You see a pile of %d items.", floor_num);
7320 #endif
7321
7322                 }
7323
7324                 /* Done */
7325                 return;
7326         }
7327
7328         /* The player has no room for anything on the floor. */
7329         if (!can_pickup)
7330         {
7331                 /* One object */
7332                 if (floor_num == 1)
7333                 {
7334                         /* Access the object */
7335                         o_ptr = &o_list[floor_o_idx];
7336
7337 #ifdef ALLOW_EASY_SENSE
7338
7339                         /* Option: Make object sensing easy */
7340                         if (easy_sense)
7341                         {
7342                                 /* Sense the object */
7343                                 (void) sense_object(o_ptr);
7344                         }
7345
7346 #endif /* ALLOW_EASY_SENSE */
7347
7348                         /* Describe the object */
7349                         object_desc(o_name, o_ptr, TRUE, 3);
7350
7351                         /* Message */
7352 #ifdef JP
7353                                 msg_format("¥¶¥Ã¥¯¤Ë¤Ï%s¤òÆþ¤ì¤ë·ä´Ö¤¬¤Ê¤¤¡£", o_name);
7354 #else
7355                         msg_format("You have no room for %s.", o_name);
7356 #endif
7357
7358                 }
7359
7360                 /* Multiple objects */
7361                 else
7362                 {
7363                         /* Message */
7364 #ifdef JP
7365                         msg_format("¥¶¥Ã¥¯¤Ë¤Ï¾²¤Ë¤¢¤ë¤É¤Î¥¢¥¤¥Æ¥à¤âÆþ¤é¤Ê¤¤¡£", o_name);
7366 #else
7367                         msg_print("You have no room for any of the objects on the floor.");
7368 #endif
7369
7370                 }
7371
7372                 /* Done */
7373                 return;
7374         }
7375
7376         /* One object */
7377         if (floor_num == 1)
7378         {
7379                 /* Hack -- query every object */
7380                 if (carry_query_flag)
7381                 {
7382                         char out_val[MAX_NLEN+20];
7383
7384                         /* Access the object */
7385                         o_ptr = &o_list[floor_o_idx];
7386
7387 #ifdef ALLOW_EASY_SENSE
7388
7389                         /* Option: Make object sensing easy */
7390                         if (easy_sense)
7391                         {
7392                                 /* Sense the object */
7393                                 (void) sense_object(o_ptr);
7394                         }
7395
7396 #endif /* ALLOW_EASY_SENSE */
7397
7398                         /* Describe the object */
7399                         object_desc(o_name, o_ptr, TRUE, 3);
7400
7401                         /* Build a prompt */
7402 #ifdef JP
7403                         (void) sprintf(out_val, "%s¤ò½¦¤¤¤Þ¤¹¤«? ", o_name);
7404 #else
7405                         (void) sprintf(out_val, "Pick up %s? ", o_name);
7406 #endif
7407
7408
7409                         /* Ask the user to confirm */
7410                         if (!get_check(out_val))
7411                         {
7412                                 /* Done */
7413                                 return;
7414                         }
7415                 }
7416
7417                 /* Access the object */
7418                 o_ptr = &o_list[floor_o_idx];
7419
7420 #ifdef ALLOW_EASY_SENSE
7421
7422                 /* Option: Make object sensing easy */
7423                 if (easy_sense)
7424                 {
7425                         /* Sense the object */
7426                         (void) sense_object(o_ptr);
7427                 }
7428
7429 #endif /* ALLOW_EASY_SENSE */
7430
7431                 /* Pick up the object */
7432                 py_pickup_aux(floor_o_idx);
7433         }
7434
7435         /* Allow the user to choose an object */
7436         else
7437         {
7438                 while (can_pickup--)
7439                 {
7440                         if (!py_pickup_floor_aux()) break;
7441                 }
7442         }
7443 }
7444
7445 #endif /* ALLOW_EASY_FLOOR */