OSDN Git Service

[Refactor] #37353 プレイヤーの食事処理を cmd-eat.c/h に分離。 / Separate player's eat command to...
[hengband/hengband.git] / src / cmd-eat.c
1 /*!\r
2  * @file cmd-eat.c\r
3  * @brief \83v\83\8c\83C\83\84\81[\82Ì\90H\8e\96\82É\8aÖ\82·\82é\83R\83}\83\93\83h\8eÀ\91\95\r
4  * @date 2014/01/27\r
5  * @details\r
6  * cmd6.c\82æ\82è\95ª\97£\81B\r
7  */\r
8 \r
9 \r
10 #include "angband.h"\r
11 \r
12 /*!\r
13  * @brief \90H\97¿\82ð\90H\82×\82é\83R\83}\83\93\83h\82Ì\83T\83u\83\8b\81[\83`\83\93\r
14  * @param item \90H\82×\82é\83I\83u\83W\83F\83N\83g\82Ì\8f\8a\8e\9d\95iID\r
15  * @return \82È\82µ\r
16  */\r
17 void do_cmd_eat_food_aux(int item)\r
18 {\r
19         int ident, lev;\r
20         object_type *o_ptr;\r
21 \r
22         if (music_singing_any()) stop_singing();\r
23         if (hex_spelling_any()) stop_hex_spell_all();\r
24 \r
25         /* Get the item (in the pack) */\r
26         if (item >= 0)\r
27         {\r
28                 o_ptr = &inventory[item];\r
29         }\r
30 \r
31         /* Get the item (on the floor) */\r
32         else\r
33         {\r
34                 o_ptr = &o_list[0 - item];\r
35         }\r
36 \r
37         /* Sound */\r
38         sound(SOUND_EAT);\r
39 \r
40         /* Take a turn */\r
41         p_ptr->energy_use = 100;\r
42 \r
43         /* Identity not known yet */\r
44         ident = FALSE;\r
45 \r
46         /* Object level */\r
47         lev = k_info[o_ptr->k_idx].level;\r
48 \r
49         if (o_ptr->tval == TV_FOOD)\r
50         {\r
51                 /* Analyze the food */\r
52                 switch (o_ptr->sval)\r
53                 {\r
54                 case SV_FOOD_POISON:\r
55                 {\r
56                         if (!(p_ptr->resist_pois || IS_OPPOSE_POIS()))\r
57                         {\r
58                                 if (set_poisoned(p_ptr->poisoned + randint0(10) + 10))\r
59                                 {\r
60                                         ident = TRUE;\r
61                                 }\r
62                         }\r
63                         break;\r
64                 }\r
65 \r
66                 case SV_FOOD_BLINDNESS:\r
67                 {\r
68                         if (!p_ptr->resist_blind)\r
69                         {\r
70                                 if (set_blind(p_ptr->blind + randint0(200) + 200))\r
71                                 {\r
72                                         ident = TRUE;\r
73                                 }\r
74                         }\r
75                         break;\r
76                 }\r
77 \r
78                 case SV_FOOD_PARANOIA:\r
79                 {\r
80                         if (!p_ptr->resist_fear)\r
81                         {\r
82                                 if (set_afraid(p_ptr->afraid + randint0(10) + 10))\r
83                                 {\r
84                                         ident = TRUE;\r
85                                 }\r
86                         }\r
87                         break;\r
88                 }\r
89 \r
90                 case SV_FOOD_CONFUSION:\r
91                 {\r
92                         if (!p_ptr->resist_conf)\r
93                         {\r
94                                 if (set_confused(p_ptr->confused + randint0(10) + 10))\r
95                                 {\r
96                                         ident = TRUE;\r
97                                 }\r
98                         }\r
99                         break;\r
100                 }\r
101 \r
102                 case SV_FOOD_HALLUCINATION:\r
103                 {\r
104                         if (!p_ptr->resist_chaos)\r
105                         {\r
106                                 if (set_image(p_ptr->image + randint0(250) + 250))\r
107                                 {\r
108                                         ident = TRUE;\r
109                                 }\r
110                         }\r
111                         break;\r
112                 }\r
113 \r
114                 case SV_FOOD_PARALYSIS:\r
115                 {\r
116                         if (!p_ptr->free_act)\r
117                         {\r
118                                 if (set_paralyzed(p_ptr->paralyzed + randint0(10) + 10))\r
119                                 {\r
120                                         ident = TRUE;\r
121                                 }\r
122                         }\r
123                         break;\r
124                 }\r
125 \r
126                 case SV_FOOD_WEAKNESS:\r
127                 {\r
128                         take_hit(DAMAGE_NOESCAPE, damroll(6, 6), _("\93Å\93ü\82è\90H\97¿", "poisonous food"), -1);\r
129                         (void)do_dec_stat(A_STR);\r
130                         ident = TRUE;\r
131                         break;\r
132                 }\r
133 \r
134                 case SV_FOOD_SICKNESS:\r
135                 {\r
136                         take_hit(DAMAGE_NOESCAPE, damroll(6, 6), _("\93Å\93ü\82è\90H\97¿", "poisonous food"), -1);\r
137                         (void)do_dec_stat(A_CON);\r
138                         ident = TRUE;\r
139                         break;\r
140                 }\r
141 \r
142                 case SV_FOOD_STUPIDITY:\r
143                 {\r
144                         take_hit(DAMAGE_NOESCAPE, damroll(8, 8), _("\93Å\93ü\82è\90H\97¿", "poisonous food"), -1);\r
145                         (void)do_dec_stat(A_INT);\r
146                         ident = TRUE;\r
147                         break;\r
148                 }\r
149 \r
150                 case SV_FOOD_NAIVETY:\r
151                 {\r
152                         take_hit(DAMAGE_NOESCAPE, damroll(8, 8), _("\93Å\93ü\82è\90H\97¿", "poisonous food"), -1);\r
153                         (void)do_dec_stat(A_WIS);\r
154                         ident = TRUE;\r
155                         break;\r
156                 }\r
157 \r
158                 case SV_FOOD_UNHEALTH:\r
159                 {\r
160                         take_hit(DAMAGE_NOESCAPE, damroll(10, 10), _("\93Å\93ü\82è\90H\97¿", "poisonous food"), -1);\r
161                         (void)do_dec_stat(A_CON);\r
162                         ident = TRUE;\r
163                         break;\r
164                 }\r
165 \r
166                 case SV_FOOD_DISEASE:\r
167                 {\r
168                         take_hit(DAMAGE_NOESCAPE, damroll(10, 10), _("\93Å\93ü\82è\90H\97¿", "poisonous food"), -1);\r
169                         (void)do_dec_stat(A_STR);\r
170                         ident = TRUE;\r
171                         break;\r
172                 }\r
173 \r
174                 case SV_FOOD_CURE_POISON:\r
175                 {\r
176                         if (set_poisoned(0)) ident = TRUE;\r
177                         break;\r
178                 }\r
179 \r
180                 case SV_FOOD_CURE_BLINDNESS:\r
181                 {\r
182                         if (set_blind(0)) ident = TRUE;\r
183                         break;\r
184                 }\r
185 \r
186                 case SV_FOOD_CURE_PARANOIA:\r
187                 {\r
188                         if (set_afraid(0)) ident = TRUE;\r
189                         break;\r
190                 }\r
191 \r
192                 case SV_FOOD_CURE_CONFUSION:\r
193                 {\r
194                         if (set_confused(0)) ident = TRUE;\r
195                         break;\r
196                 }\r
197 \r
198                 case SV_FOOD_CURE_SERIOUS:\r
199                 {\r
200                         if (hp_player(damroll(4, 8))) ident = TRUE;\r
201                         break;\r
202                 }\r
203 \r
204                 case SV_FOOD_RESTORE_STR:\r
205                 {\r
206                         if (do_res_stat(A_STR)) ident = TRUE;\r
207                         break;\r
208                 }\r
209 \r
210                 case SV_FOOD_RESTORE_CON:\r
211                 {\r
212                         if (do_res_stat(A_CON)) ident = TRUE;\r
213                         break;\r
214                 }\r
215 \r
216                 case SV_FOOD_RESTORING:\r
217                 {\r
218                         if (do_res_stat(A_STR)) ident = TRUE;\r
219                         if (do_res_stat(A_INT)) ident = TRUE;\r
220                         if (do_res_stat(A_WIS)) ident = TRUE;\r
221                         if (do_res_stat(A_DEX)) ident = TRUE;\r
222                         if (do_res_stat(A_CON)) ident = TRUE;\r
223                         if (do_res_stat(A_CHR)) ident = TRUE;\r
224                         break;\r
225                 }\r
226 \r
227 \r
228 #ifdef JP\r
229                 /* \82»\82ê\82¼\82ê\82Ì\90H\82×\95¨\82Ì\8a´\91z\82ð\83I\83\8a\83W\83i\83\8b\82æ\82è\8d×\82©\82­\95\\8c» */\r
230                 case SV_FOOD_BISCUIT:\r
231                 {\r
232                         msg_print("\8aÃ\82­\82Ä\83T\83N\83T\83N\82µ\82Ä\82Æ\82Ä\82à\82¨\82¢\82µ\82¢\81B");\r
233                         ident = TRUE;\r
234                         break;\r
235                 }\r
236 \r
237                 case SV_FOOD_JERKY:\r
238                 {\r
239                         msg_print("\8e\95\82²\82½\82¦\82ª\82 \82Á\82Ä\82¨\82¢\82µ\82¢\81B");\r
240                         ident = TRUE;\r
241                         break;\r
242                 }\r
243 \r
244                 case SV_FOOD_SLIME_MOLD:\r
245                 {\r
246                         msg_print("\82±\82ê\82Í\82È\82ñ\82Æ\82à\8c`\97e\82µ\82ª\82½\82¢\96¡\82¾\81B");\r
247                         ident = TRUE;\r
248                         break;\r
249                 }\r
250 \r
251                 case SV_FOOD_RATION:\r
252                 {\r
253                         msg_print("\82±\82ê\82Í\82¨\82¢\82µ\82¢\81B");\r
254                         ident = TRUE;\r
255                         break;\r
256                 }\r
257 #else\r
258                 case SV_FOOD_RATION:\r
259                 case SV_FOOD_BISCUIT:\r
260                 case SV_FOOD_JERKY:\r
261                 case SV_FOOD_SLIME_MOLD:\r
262                 {\r
263                         msg_print("That tastes good.");\r
264                         ident = TRUE;\r
265                         break;\r
266                 }\r
267 #endif\r
268 \r
269 \r
270                 case SV_FOOD_WAYBREAD:\r
271                 {\r
272                         msg_print(_("\82±\82ê\82Í\82Ð\82\82å\82¤\82É\94ü\96¡\82¾\81B", "That tastes good."));\r
273                         (void)set_poisoned(0);\r
274                         (void)hp_player(damroll(4, 8));\r
275                         ident = TRUE;\r
276                         break;\r
277                 }\r
278 \r
279 #ifdef JP\r
280                 case SV_FOOD_PINT_OF_ALE:\r
281                 {\r
282                         msg_print("\82Ì\82Ç\82²\82µ\91u\82â\82©\82¾\81B");\r
283                         ident = TRUE;\r
284                         break;\r
285                 }\r
286 \r
287                 case SV_FOOD_PINT_OF_WINE:\r
288                 {\r
289                         msg_print("That tastes good.");\r
290                         ident = TRUE;\r
291                         break;\r
292                 }\r
293 #else\r
294                 case SV_FOOD_PINT_OF_ALE:\r
295                 case SV_FOOD_PINT_OF_WINE:\r
296                 {\r
297                         msg_print("That tastes good.");\r
298                         ident = TRUE;\r
299                         break;\r
300                 }\r
301 #endif\r
302 \r
303                 }\r
304         }\r
305 \r
306         /* Combine / Reorder the pack (later) */\r
307         p_ptr->notice |= (PN_COMBINE | PN_REORDER);\r
308 \r
309         if (!(object_is_aware(o_ptr)))\r
310         {\r
311                 chg_virtue(V_KNOWLEDGE, -1);\r
312                 chg_virtue(V_PATIENCE, -1);\r
313                 chg_virtue(V_CHANCE, 1);\r
314         }\r
315 \r
316         /* We have tried it */\r
317         if (o_ptr->tval == TV_FOOD) object_tried(o_ptr);\r
318 \r
319         /* The player is now aware of the object */\r
320         if (ident && !object_is_aware(o_ptr))\r
321         {\r
322                 object_aware(o_ptr);\r
323                 gain_exp((lev + (p_ptr->lev >> 1)) / p_ptr->lev);\r
324         }\r
325 \r
326         /* Window stuff */\r
327         p_ptr->window |= (PW_INVEN | PW_EQUIP | PW_PLAYER);\r
328 \r
329 \r
330         /* Food can feed the player */\r
331         if (prace_is_(RACE_VAMPIRE) || (p_ptr->mimic_form == MIMIC_VAMPIRE))\r
332         {\r
333                 /* Reduced nutritional benefit */\r
334                 (void)set_food(p_ptr->food + (o_ptr->pval / 10));\r
335                 msg_print(_("\82 \82È\82½\82Ì\82æ\82¤\82È\8eÒ\82É\82Æ\82Á\82Ä\90H\97Æ\82È\82Ç\8bÍ\82©\82È\89h\97{\82É\82µ\82©\82È\82ç\82È\82¢\81B",\r
336                         "Mere victuals hold scant sustenance for a being such as yourself."));\r
337 \r
338                 if (p_ptr->food < PY_FOOD_ALERT)   /* Hungry */\r
339                         msg_print(_("\82 \82È\82½\82Ì\8bQ\82¦\82Í\90V\91N\82È\8c\8c\82É\82æ\82Á\82Ä\82Ì\82Ý\96\9e\82½\82³\82ê\82é\81I",\r
340                                 "Your hunger can only be satisfied with fresh blood!"));\r
341         }\r
342         else if ((prace_is_(RACE_SKELETON) ||\r
343                 prace_is_(RACE_GOLEM) ||\r
344                 prace_is_(RACE_ZOMBIE) ||\r
345                 prace_is_(RACE_SPECTRE)) &&\r
346                 (o_ptr->tval == TV_STAFF || o_ptr->tval == TV_WAND))\r
347         {\r
348                 cptr staff;\r
349 \r
350                 if (o_ptr->tval == TV_STAFF &&\r
351                         (item < 0) && (o_ptr->number > 1))\r
352                 {\r
353                         msg_print(_("\82Ü\82¸\82Í\8fñ\82ð\8fE\82í\82È\82¯\82ê\82Î\81B", "You must first pick up the staffs."));\r
354                         return;\r
355                 }\r
356                 staff = (o_ptr->tval == TV_STAFF) ? _("\8fñ", "staff") : _("\96\82\96@\96_", "wand");\r
357 \r
358                 /* "Eat" charges */\r
359                 if (o_ptr->pval == 0)\r
360                 {\r
361                         msg_format(_("\82±\82Ì%s\82É\82Í\82à\82¤\96\82\97Í\82ª\8ec\82Á\82Ä\82¢\82È\82¢\81B", "The %s has no charges left."), staff);\r
362                         o_ptr->ident |= (IDENT_EMPTY);\r
363 \r
364                         /* Combine / Reorder the pack (later) */\r
365                         p_ptr->notice |= (PN_COMBINE | PN_REORDER);\r
366                         p_ptr->window |= (PW_INVEN);\r
367 \r
368                         return;\r
369                 }\r
370                 msg_format(_("\82 \82È\82½\82Í%s\82Ì\96\82\97Í\82ð\83G\83l\83\8b\83M\81[\8c¹\82Æ\82µ\82Ä\8bz\8eû\82µ\82½\81B", "You absorb mana of the %s as your energy."), staff);\r
371 \r
372                 /* Use a single charge */\r
373                 o_ptr->pval--;\r
374 \r
375                 /* Eat a charge */\r
376                 set_food(p_ptr->food + 5000);\r
377 \r
378                 /* XXX Hack -- unstack if necessary */\r
379                 if (o_ptr->tval == TV_STAFF &&\r
380                         (item >= 0) && (o_ptr->number > 1))\r
381                 {\r
382                         object_type forge;\r
383                         object_type *q_ptr;\r
384 \r
385                         /* Get local object */\r
386                         q_ptr = &forge;\r
387 \r
388                         /* Obtain a local object */\r
389                         object_copy(q_ptr, o_ptr);\r
390 \r
391                         /* Modify quantity */\r
392                         q_ptr->number = 1;\r
393 \r
394                         /* Restore the charges */\r
395                         o_ptr->pval++;\r
396 \r
397                         /* Unstack the used item */\r
398                         o_ptr->number--;\r
399                         p_ptr->total_weight -= q_ptr->weight;\r
400                         item = inven_carry(q_ptr);\r
401 \r
402                         /* Message */\r
403                         msg_format(_("\8fñ\82ð\82Ü\82Æ\82ß\82È\82¨\82µ\82½\81B", "You unstack your staff."));\r
404                 }\r
405 \r
406                 /* Describe charges in the pack */\r
407                 if (item >= 0)\r
408                 {\r
409                         inven_item_charges(item);\r
410                 }\r
411 \r
412                 /* Describe charges on the floor */\r
413                 else\r
414                 {\r
415                         floor_item_charges(0 - item);\r
416                 }\r
417 \r
418                 /* Window stuff */\r
419                 p_ptr->window |= (PW_INVEN | PW_EQUIP);\r
420 \r
421                 /* Don't eat a staff/wand itself */\r
422                 return;\r
423         }\r
424         else if ((prace_is_(RACE_DEMON) ||\r
425                 (mimic_info[p_ptr->mimic_form].MIMIC_FLAGS & MIMIC_IS_DEMON)) &&\r
426                 (o_ptr->tval == TV_CORPSE && o_ptr->sval == SV_CORPSE &&\r
427                         my_strchr("pht", r_info[o_ptr->pval].d_char)))\r
428         {\r
429                 /* Drain vitality of humanoids */\r
430                 char o_name[MAX_NLEN];\r
431                 object_desc(o_name, o_ptr, (OD_OMIT_PREFIX | OD_NAME_ONLY));\r
432                 msg_format(_("%s\82Í\94R\82¦\8fã\82è\8aD\82É\82È\82Á\82½\81B\90¸\97Í\82ð\8bz\8eû\82µ\82½\8bC\82ª\82·\82é\81B", "%^s is burnt to ashes.  You absorb its vitality!"), o_name);\r
433                 (void)set_food(PY_FOOD_MAX - 1);\r
434         }\r
435         else if (prace_is_(RACE_SKELETON))\r
436         {\r
437 #if 0\r
438                 if (o_ptr->tval == TV_SKELETON ||\r
439                         (o_ptr->tval == TV_CORPSE && o_ptr->sval == SV_SKELETON))\r
440                 {\r
441                         msg_print(_("\82 \82È\82½\82Í\8d\9c\82Å\8e©\95ª\82Ì\91Ì\82ð\95â\82Á\82½\81B", "Your body absorbs the bone."));\r
442                         set_food(p_ptr->food + 5000);\r
443                 }\r
444                 else\r
445 #endif\r
446 \r
447                         if (!((o_ptr->sval == SV_FOOD_WAYBREAD) ||\r
448                                 (o_ptr->sval < SV_FOOD_BISCUIT)))\r
449                         {\r
450                                 object_type forge;\r
451                                 object_type *q_ptr = &forge;\r
452 \r
453                                 msg_print(_("\90H\82×\95¨\82ª\83A\83S\82ð\91f\92Ê\82è\82µ\82Ä\97\8e\82¿\82½\81I", "The food falls through your jaws!"));\r
454 \r
455                                 /* Create the item */\r
456                                 object_prep(q_ptr, lookup_kind(o_ptr->tval, o_ptr->sval));\r
457 \r
458                                 /* Drop the object from heaven */\r
459                                 (void)drop_near(q_ptr, -1, p_ptr->y, p_ptr->x);\r
460                         }\r
461                         else\r
462                         {\r
463                                 msg_print(_("\90H\82×\95¨\82ª\83A\83S\82ð\91f\92Ê\82è\82µ\82Ä\97\8e\82¿\81A\8fÁ\82¦\82½\81I", "The food falls through your jaws and vanishes!"));\r
464                         }\r
465         }\r
466         else if (prace_is_(RACE_GOLEM) ||\r
467                 prace_is_(RACE_ZOMBIE) ||\r
468                 prace_is_(RACE_ENT) ||\r
469                 prace_is_(RACE_DEMON) ||\r
470                 prace_is_(RACE_ANDROID) ||\r
471                 prace_is_(RACE_SPECTRE) ||\r
472                 (mimic_info[p_ptr->mimic_form].MIMIC_FLAGS & MIMIC_IS_NONLIVING))\r
473         {\r
474                 msg_print(_("\90\8eÒ\82Ì\90H\95¨\82Í\82 \82È\82½\82É\82Æ\82Á\82Ä\82Ù\82Æ\82ñ\82Ç\89h\97{\82É\82È\82ç\82È\82¢\81B", "The food of mortals is poor sustenance for you."));\r
475                 set_food(p_ptr->food + ((o_ptr->pval) / 20));\r
476         }\r
477         else if (o_ptr->tval == TV_FOOD && o_ptr->sval == SV_FOOD_WAYBREAD)\r
478         {\r
479                 /* Waybread is always fully satisfying. */\r
480                 set_food(MAX(p_ptr->food, PY_FOOD_MAX - 1));\r
481         }\r
482         else\r
483         {\r
484                 /* Food can feed the player */\r
485                 (void)set_food(p_ptr->food + o_ptr->pval);\r
486         }\r
487 \r
488         /* Destroy a food in the pack */\r
489         if (item >= 0)\r
490         {\r
491                 inven_item_increase(item, -1);\r
492                 inven_item_describe(item);\r
493                 inven_item_optimize(item);\r
494         }\r
495 \r
496         /* Destroy a food on the floor */\r
497         else\r
498         {\r
499                 floor_item_increase(0 - item, -1);\r
500                 floor_item_describe(0 - item);\r
501                 floor_item_optimize(0 - item);\r
502         }\r
503 }\r
504 \r
505 \r
506 /*!\r
507  * @brief \83I\83u\83W\83F\83N\83g\82ð\83v\83\8c\83C\83\84\81[\82ª\90H\82×\82é\82±\82Æ\82ª\82Å\82«\82é\82©\82ð\94»\92è\82·\82é /\r
508  * Hook to determine if an object is eatable\r
509  * @param o_ptr \94»\92è\82µ\82½\82¢\83I\83u\83W\83F\83N\83g\82Ì\8d\\91¢\91Ì\8eQ\8fÆ\83|\83C\83\93\83^\r
510  * @return \90H\82×\82é\82±\82Æ\82ª\89Â\94\\82È\82ç\82ÎTRUE\82ð\95Ô\82·\r
511  */\r
512 static bool item_tester_hook_eatable(object_type *o_ptr)\r
513 {\r
514         if (o_ptr->tval == TV_FOOD) return TRUE;\r
515 \r
516 #if 0\r
517         if (prace_is_(RACE_SKELETON))\r
518         {\r
519                 if (o_ptr->tval == TV_SKELETON ||\r
520                         (o_ptr->tval == TV_CORPSE && o_ptr->sval == SV_SKELETON))\r
521                         return TRUE;\r
522         }\r
523         else\r
524 #endif\r
525 \r
526                 if (prace_is_(RACE_SKELETON) ||\r
527                         prace_is_(RACE_GOLEM) ||\r
528                         prace_is_(RACE_ZOMBIE) ||\r
529                         prace_is_(RACE_SPECTRE))\r
530                 {\r
531                         if (o_ptr->tval == TV_STAFF || o_ptr->tval == TV_WAND)\r
532                                 return TRUE;\r
533                 }\r
534                 else if (prace_is_(RACE_DEMON) ||\r
535                         (mimic_info[p_ptr->mimic_form].MIMIC_FLAGS & MIMIC_IS_DEMON))\r
536                 {\r
537                         if (o_ptr->tval == TV_CORPSE &&\r
538                                 o_ptr->sval == SV_CORPSE &&\r
539                                 my_strchr("pht", r_info[o_ptr->pval].d_char))\r
540                                 return TRUE;\r
541                 }\r
542 \r
543         /* Assume not */\r
544         return (FALSE);\r
545 }\r
546 \r
547 \r
548 /*!\r
549  * @brief \90H\97¿\82ð\90H\82×\82é\83R\83}\83\93\83h\82Ì\83\81\83C\83\93\83\8b\81[\83`\83\93 /\r
550  * Eat some food (from the pack or floor)\r
551  * @return \82È\82µ\r
552  */\r
553 void do_cmd_eat_food(void)\r
554 {\r
555         OBJECT_IDX item;\r
556         cptr        q, s;\r
557 \r
558 \r
559         if (p_ptr->special_defense & (KATA_MUSOU | KATA_KOUKIJIN))\r
560         {\r
561                 set_action(ACTION_NONE);\r
562         }\r
563 \r
564         /* Restrict choices to food */\r
565         item_tester_hook = item_tester_hook_eatable;\r
566 \r
567         /* Get an item */\r
568         q = _("\82Ç\82ê\82ð\90H\82×\82Ü\82·\82©? ", "Eat which item? ");\r
569         s = _("\90H\82×\95¨\82ª\82È\82¢\81B", "You have nothing to eat.");\r
570 \r
571         if (!get_item(&item, q, s, (USE_INVEN | USE_FLOOR))) return;\r
572 \r
573         /* Eat the object */\r
574         do_cmd_eat_food_aux(item);\r
575 }\r
576 \r