3 /* Purpose: Object commands */
6 * Copyright (c) 1989 James E. Wilson, Robert A. Koeneke
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.
17 * This file includes code for eating food, drinking potions,
18 * reading scrolls, aiming wands, using staffs, zapping rods,
19 * and activating artifacts.
21 * In all cases, if the player becomes "aware" of the item's use
22 * by testing it, mark it as "aware" and reward some experience
23 * based on the object's level, always rounding up. If the player
24 * remains "unaware", mark that object "kind" as "tried".
26 * This code now correctly handles the unstacking of wands, staffs,
27 * and rods. Note the overly paranoid warning about potential pack
28 * overflow, which allows the player to use and drop a stacked item.
30 * In all "unstacking" scenarios, the "used" object is "carried" as if
31 * the player had just picked it up. In particular, this means that if
32 * the use of an item induces pack overflow, that item will be dropped.
34 * For simplicity, these routines induce a full "pack reorganization"
35 * which not only combines similar items, but also reorganizes various
36 * items to obey the current "sorting" method. This may require about
37 * 400 item comparisons, but only occasionally.
39 * There may be a BIG problem with any "effect" that can cause "changes"
40 * to the inventory. For example, a "scroll of recharging" can cause
41 * a wand/staff to "disappear", moving the inventory up. Luckily, the
42 * scrolls all appear BEFORE the staffs/wands, so this is not a problem.
43 * But, for example, a "staff of recharging" could cause MAJOR problems.
44 * In such a case, it will be best to either (1) "postpone" the effect
45 * until the end of the function, or (2) "change" the effect, say, into
46 * giving a staff "negative" charges, or "turning a staff into a stick".
47 * It seems as though a "rod of recharging" might in fact cause problems.
48 * The basic problem is that the act of recharging (and destroying) an
49 * item causes the inducer of that action to "move", causing "o_ptr" to
50 * no longer point at the correct item, with horrifying results.
52 * Note that food/potions/scrolls no longer use bit-flags for effects,
53 * but instead use the "sval" (which is also used to sort the objects).
57 static void do_cmd_eat_food_aux(int item)
62 /* Get the item (in the pack) */
65 o_ptr = &inventory[item];
68 /* Get the item (on the floor) */
71 o_ptr = &o_list[0 - item];
80 /* Identity not known yet */
84 lev = get_object_level(o_ptr);
87 eat_callback(o_ptr->sval);
89 if (!object_eat_callback(o_ptr))
90 #endif /* USE_SCRIPT */
93 if (o_ptr->tval == TV_FOOD)
95 /* Analyze the food */
100 if (!(p_ptr->resist_pois || p_ptr->oppose_pois))
102 if (set_poisoned(p_ptr->poisoned + rand_int(10) + 10))
110 case SV_FOOD_BLINDNESS:
112 if (!p_ptr->resist_blind)
114 if (set_blind(p_ptr->blind + rand_int(200) + 200))
122 case SV_FOOD_PARANOIA:
124 if (!p_ptr->resist_fear)
126 if (set_afraid(p_ptr->afraid + rand_int(10) + 10))
134 case SV_FOOD_CONFUSION:
136 if (!p_ptr->resist_conf)
138 if (set_confused(p_ptr->confused + rand_int(10) + 10))
146 case SV_FOOD_HALLUCINATION:
148 if (!p_ptr->resist_chaos)
150 if (set_image(p_ptr->image + rand_int(250) + 250))
158 case SV_FOOD_PARALYSIS:
160 if (!p_ptr->free_act)
162 if (set_paralyzed(p_ptr->paralyzed + rand_int(10) + 10))
170 case SV_FOOD_WEAKNESS:
173 take_hit(DAMAGE_NOESCAPE, damroll(6, 6), "ÆÇÆþ¤ê¿©ÎÁ", -1);
175 take_hit(DAMAGE_NOESCAPE, damroll(6, 6), "poisonous food", -1);
178 (void)do_dec_stat(A_STR);
183 case SV_FOOD_SICKNESS:
186 take_hit(DAMAGE_NOESCAPE, damroll(6, 6), "ÆÇÆþ¤ê¿©ÎÁ", -1);
188 take_hit(DAMAGE_NOESCAPE, damroll(6, 6), "poisonous food", -1);
191 (void)do_dec_stat(A_CON);
196 case SV_FOOD_STUPIDITY:
199 take_hit(DAMAGE_NOESCAPE, damroll(8, 8), "ÆÇÆþ¤ê¿©ÎÁ", -1);
201 take_hit(DAMAGE_NOESCAPE, damroll(8, 8), "poisonous food", -1);
204 (void)do_dec_stat(A_INT);
209 case SV_FOOD_NAIVETY:
212 take_hit(DAMAGE_NOESCAPE, damroll(8, 8), "ÆÇÆþ¤ê¿©ÎÁ", -1);
214 take_hit(DAMAGE_NOESCAPE, damroll(8, 8), "poisonous food", -1);
217 (void)do_dec_stat(A_WIS);
222 case SV_FOOD_UNHEALTH:
225 take_hit(DAMAGE_NOESCAPE, damroll(10, 10), "ÆÇÆþ¤ê¿©ÎÁ", -1);
227 take_hit(DAMAGE_NOESCAPE, damroll(10, 10), "poisonous food", -1);
230 (void)do_dec_stat(A_CON);
235 case SV_FOOD_DISEASE:
238 take_hit(DAMAGE_NOESCAPE, damroll(10, 10), "ÆÇÆþ¤ê¿©ÎÁ", -1);
240 take_hit(DAMAGE_NOESCAPE, damroll(10, 10), "poisonous food", -1);
243 (void)do_dec_stat(A_STR);
248 case SV_FOOD_CURE_POISON:
250 if (set_poisoned(0)) ident = TRUE;
254 case SV_FOOD_CURE_BLINDNESS:
256 if (set_blind(0)) ident = TRUE;
260 case SV_FOOD_CURE_PARANOIA:
262 if (set_afraid(0)) ident = TRUE;
266 case SV_FOOD_CURE_CONFUSION:
268 if (set_confused(0)) ident = TRUE;
272 case SV_FOOD_CURE_SERIOUS:
274 if (hp_player(damroll(4, 8))) ident = TRUE;
278 case SV_FOOD_RESTORE_STR:
280 if (do_res_stat(A_STR)) ident = TRUE;
284 case SV_FOOD_RESTORE_CON:
286 if (do_res_stat(A_CON)) ident = TRUE;
290 case SV_FOOD_RESTORING:
292 if (do_res_stat(A_STR)) ident = TRUE;
293 if (do_res_stat(A_INT)) ident = TRUE;
294 if (do_res_stat(A_WIS)) ident = TRUE;
295 if (do_res_stat(A_DEX)) ident = TRUE;
296 if (do_res_stat(A_CON)) ident = TRUE;
297 if (do_res_stat(A_CHR)) ident = TRUE;
303 /* ¤½¤ì¤¾¤ì¤Î¿©¤Ùʪ¤Î´¶ÁÛ¤ò¥ª¥ê¥¸¥Ê¥ë¤è¤êºÙ¤«¤¯É½¸½ */
304 case SV_FOOD_BISCUIT:
306 msg_print("´Å¤¯¤Æ¥µ¥¯¥µ¥¯¤·¤Æ¤È¤Æ¤â¤ª¤¤¤·¤¤¡£");
313 msg_print("»õ¤´¤¿¤¨¤¬¤¢¤Ã¤Æ¤ª¤¤¤·¤¤¡£");
318 case SV_FOOD_SLIME_MOLD:
320 msg_print("¤³¤ì¤Ï¤Ê¤ó¤È¤â·ÁÍƤ·¤¬¤¿¤¤Ì£¤À¡£");
327 msg_print("¤³¤ì¤Ï¤ª¤¤¤·¤¤¡£");
333 case SV_FOOD_BISCUIT:
335 case SV_FOOD_SLIME_MOLD:
337 msg_print("That tastes good.");
344 case SV_FOOD_WAYBREAD:
347 msg_print("¤³¤ì¤Ï¤Ò¤¸¤ç¤¦¤ËÈþÌ£¤À¡£");
349 msg_print("That tastes good.");
352 (void)set_poisoned(0);
353 (void)hp_player(damroll(4, 8));
359 case SV_FOOD_PINT_OF_ALE:
361 msg_print("¤Î¤É¤´¤·Á֤䤫¤À¡£");
366 case SV_FOOD_PINT_OF_WINE:
368 msg_print("That tastes good.");
373 case SV_FOOD_PINT_OF_ALE:
374 case SV_FOOD_PINT_OF_WINE:
376 msg_print("That tastes good.");
389 /* Combine / Reorder the pack (later) */
390 p_ptr->notice |= (PN_COMBINE | PN_REORDER);
392 if (!(object_aware_p(o_ptr)))
394 chg_virtue(V_KNOWLEDGE, -1);
395 chg_virtue(V_PATIENCE, -1);
396 chg_virtue(V_CHANCE, 1);
399 /* We have tried it */
402 /* The player is now aware of the object */
403 if (ident && !object_aware_p(o_ptr))
406 gain_exp((lev + (p_ptr->lev >> 1)) / p_ptr->lev);
410 p_ptr->window |= (PW_INVEN | PW_EQUIP | PW_PLAYER);
413 /* Food can feed the player */
414 if (prace_is_(RACE_VAMPIRE) || (p_ptr->mimic_form == MIMIC_VAMPIRE))
416 /* Reduced nutritional benefit */
417 (void)set_food(p_ptr->food + (o_ptr->pval / 10));
419 msg_print("¤¢¤Ê¤¿¤Î¤è¤¦¤Ê¼Ô¤Ë¤È¤Ã¤Æ¿©ÎȤʤɶϤ«¤Ê±ÉÍܤˤ·¤«¤Ê¤é¤Ê¤¤¡£");
421 msg_print("Mere victuals hold scant sustenance for a being such as yourself.");
424 if (p_ptr->food < PY_FOOD_ALERT) /* Hungry */
426 msg_print("¤¢¤Ê¤¿¤Îµ²¤¨¤Ï¿·Á¯¤Ê·ì¤Ë¤è¤Ã¤Æ¤Î¤ßËþ¤¿¤µ¤ì¤ë¡ª");
428 msg_print("Your hunger can only be satisfied with fresh blood!");
432 else if (p_ptr->prace == RACE_SKELETON)
434 if (!((o_ptr->sval == SV_FOOD_WAYBREAD) ||
435 (o_ptr->sval < SV_FOOD_BISCUIT)))
438 object_type *q_ptr = &forge;
441 msg_print("¿©¤Ùʪ¤¬¥¢¥´¤òÁÇÄ̤ꤷ¤ÆÍî¤Á¤¿¡ª");
443 msg_print("The food falls through your jaws!");
447 /* Create the item */
448 object_prep(q_ptr, lookup_kind(o_ptr->tval, o_ptr->sval));
451 q_ptr->python = object_create_callback(q_ptr);
452 #endif /* USE_SCRIPT */
454 /* Drop the object from heaven */
455 (void)drop_near(q_ptr, -1, py, px);
460 msg_print("¿©¤Ùʪ¤¬¥¢¥´¤òÁÇÄ̤ꤷ¤ÆÍî¤Á¡¢¾Ã¤¨¤¿¡ª");
462 msg_print("The food falls through your jaws and vanishes!");
467 else if ((p_ptr->prace == RACE_GOLEM) ||
468 (p_ptr->prace == RACE_ZOMBIE) ||
469 (p_ptr->prace == RACE_ENT) ||
470 (p_ptr->prace == RACE_DEMON) ||
471 (p_ptr->prace == RACE_ANDROID) ||
472 (p_ptr->prace == RACE_SPECTRE) ||
473 (mimic_info[p_ptr->mimic_form].MIMIC_FLAGS & MIMIC_IS_NONLIVING))
476 msg_print("À¸¼Ô¤Î¿©Êª¤Ï¤¢¤Ê¤¿¤Ë¤È¤Ã¤Æ¤Û¤È¤ó¤É±ÉÍܤˤʤé¤Ê¤¤¡£");
478 msg_print("The food of mortals is poor sustenance for you.");
481 set_food(p_ptr->food + ((o_ptr->pval) / 20));
485 (void)set_food(p_ptr->food + o_ptr->pval);
488 /* Destroy a food in the pack */
491 inven_item_increase(item, -1);
492 inven_item_describe(item);
493 inven_item_optimize(item);
496 /* Destroy a food on the floor */
499 floor_item_increase(0 - item, -1);
500 floor_item_describe(0 - item);
501 floor_item_optimize(0 - item);
507 * Hook to determine if an object is eatable
509 static bool item_tester_hook_eatable(object_type *o_ptr)
511 // if ((o_ptr->tval==TV_FOOD) || ((o_ptr->tval==TV_CORPSE) && o_ptr->sval)) return (TRUE);
512 if (o_ptr->tval==TV_FOOD) return (TRUE);
520 * Eat some food (from the pack or floor)
522 void do_cmd_eat_food(void)
528 if (p_ptr->special_defense & (KATA_MUSOU | KATA_KOUKIJIN))
530 set_action(ACTION_NONE);
533 /* Restrict choices to food */
534 item_tester_hook = item_tester_hook_eatable;
538 q = "¤É¤ì¤ò¿©¤Ù¤Þ¤¹¤«? ";
539 s = "¿©¤Ùʪ¤¬¤Ê¤¤¡£";
541 q = "Eat which item? ";
542 s = "You have nothing to eat.";
545 if (!get_item(&item, q, s, (USE_INVEN | USE_FLOOR))) return;
548 do_cmd_eat_food_aux(item);
553 * Quaff a potion (from the pack or the floor)
555 static void do_cmd_quaff_potion_aux(int item)
568 if (flush_failure) flush();
570 msg_print("ÉÓ¤«¤é¿å¤¬Î®¤ì½Ð¤Æ¤³¤Ê¤¤¡ª");
572 msg_print("The potion doesn't flow out from a bottle.");
579 if((p_ptr->pclass == CLASS_BARD) && p_ptr->magic_num1[0])
584 /* Get the item (in the pack) */
587 o_ptr = &inventory[item];
590 /* Get the item (on the floor) */
593 o_ptr = &o_list[0 - item];
596 /* Get local object */
599 /* Obtain a local object */
600 object_copy(q_ptr, o_ptr);
605 /* Reduce and describe inventory */
608 inven_item_increase(item, -1);
609 inven_item_describe(item);
610 inven_item_optimize(item);
613 /* Reduce and describe floor item */
616 floor_item_increase(0 - item, -1);
617 floor_item_describe(0 - item);
618 floor_item_optimize(0 - item);
625 /* Not identified yet */
629 lev = get_object_level(q_ptr);
631 /* Analyze the potion */
635 /* °û¤ß¤´¤¿¤¨¤ò¥ª¥ê¥¸¥Ê¥ë¤è¤êºÙ¤«¤¯É½¸½ */
636 case SV_POTION_WATER:
638 msg_print("¸ý¤ÎÃ椬¤µ¤Ã¤Ñ¤ê¤·¤¿¡£");
639 msg_print("¤Î¤É¤Î³é¤¤¬¾¯¤·¤ª¤µ¤Þ¤Ã¤¿¡£");
643 case SV_POTION_APPLE_JUICE:
645 msg_print("´Å¤¯¤Æ¥µ¥Ã¥Ñ¥ê¤È¤·¤Æ¤¤¤Æ¡¢¤È¤Æ¤â¤ª¤¤¤·¤¤¡£");
646 msg_print("¤Î¤É¤Î³é¤¤¬¾¯¤·¤ª¤µ¤Þ¤Ã¤¿¡£");
650 case SV_POTION_SLIME_MOLD:
652 msg_print("¤Ê¤ó¤È¤âÉÔµ¤Ì£¤ÊÌ£¤À¡£");
653 msg_print("¤Î¤É¤Î³é¤¤¬¾¯¤·¤ª¤µ¤Þ¤Ã¤¿¡£");
658 case SV_POTION_WATER:
659 case SV_POTION_APPLE_JUICE:
660 case SV_POTION_SLIME_MOLD:
662 msg_print("You feel less thirsty.");
669 case SV_POTION_SLOWNESS:
671 if (set_slow(randint(25) + 15, FALSE)) ident = TRUE;
675 case SV_POTION_SALT_WATER:
678 msg_print("¤¦¤§¡ª»×¤ï¤ºÅǤ¤¤Æ¤·¤Þ¤Ã¤¿¡£");
680 msg_print("The potion makes you vomit!");
683 (void)set_food(PY_FOOD_STARVE - 1);
684 (void)set_poisoned(0);
685 (void)set_paralyzed(p_ptr->paralyzed + 4);
690 case SV_POTION_POISON:
692 if (!(p_ptr->resist_pois || p_ptr->oppose_pois))
694 if (set_poisoned(p_ptr->poisoned + rand_int(15) + 10))
702 case SV_POTION_BLINDNESS:
704 if (!p_ptr->resist_blind)
706 if (set_blind(p_ptr->blind + rand_int(100) + 100))
714 case SV_POTION_CONFUSION: /* Booze */
716 if (p_ptr->pclass != CLASS_MONK) chg_virtue(V_HARMONY, -1);
717 else if (!p_ptr->resist_conf) p_ptr->special_attack |= ATTACK_SUIKEN;
718 if (!p_ptr->resist_conf)
720 if (set_confused(rand_int(20) + 15))
726 if (!p_ptr->resist_chaos)
730 if (set_image(p_ptr->image + rand_int(150) + 150))
735 if (one_in_(13) && (p_ptr->pclass != CLASS_MONK))
738 if (one_in_(3)) lose_all_info();
740 teleport_player(100);
743 msg_print("ÃΤé¤Ê¤¤¾ì½ê¤ÇÌܤ¬Àä᤿¡£Æ¬Äˤ¬¤¹¤ë¡£");
744 msg_print("²¿¤â»×¤¤½Ð¤»¤Ê¤¤¡£¤É¤¦¤ä¤Ã¤Æ¤³¤³¤ØÍ褿¤Î¤«¤âʬ¤«¤é¤Ê¤¤¡ª");
746 msg_print("You wake up somewhere with a sore head...");
747 msg_print("You can't remember a thing, or how you got here!");
755 case SV_POTION_SLEEP:
757 if (!p_ptr->free_act)
760 msg_print("¤¢¤Ê¤¿¤Ï̲¤Ã¤Æ¤·¤Þ¤Ã¤¿¡£");
762 msg_print("You fall asleep.");
766 if (ironman_nightmare)
769 msg_print("¶²¤í¤·¤¤¸÷·Ê¤¬Æ¬¤ËÉ⤫¤ó¤Ç¤¤¿¡£");
771 msg_print("A horrible vision enters your mind.");
775 /* Pick a nightmare */
776 get_mon_num_prep(get_nightmare, NULL);
778 /* Have some nightmares */
779 have_nightmare(get_mon_num(MAX_DEPTH));
781 /* Remove the monster restriction */
782 get_mon_num_prep(NULL, NULL);
784 if (set_paralyzed(p_ptr->paralyzed + rand_int(4) + 4))
792 case SV_POTION_LOSE_MEMORIES:
794 if (!p_ptr->hold_life && (p_ptr->exp > 0))
797 msg_print("²áµî¤Îµ²±¤¬Çö¤ì¤Æ¤¤¤¯µ¤¤¬¤¹¤ë¡£");
799 msg_print("You feel your memories fade.");
801 chg_virtue(V_KNOWLEDGE, -5);
803 lose_exp(p_ptr->exp / 4);
809 case SV_POTION_RUINATION:
812 msg_print("¿È¤â¿´¤â¼å¤Ã¤Æ¤¤Æ¡¢Àºµ¤¤¬È´¤±¤Æ¤¤¤¯¤è¤¦¤À¡£");
813 take_hit(DAMAGE_LOSELIFE, damroll(10, 10), "ÇËÌǤÎÌô", -1);
815 msg_print("Your nerves and muscles feel weak and lifeless!");
816 take_hit(DAMAGE_LOSELIFE, damroll(10, 10), "a potion of Ruination", -1);
819 (void)dec_stat(A_DEX, 25, TRUE);
820 (void)dec_stat(A_WIS, 25, TRUE);
821 (void)dec_stat(A_CON, 25, TRUE);
822 (void)dec_stat(A_STR, 25, TRUE);
823 (void)dec_stat(A_CHR, 25, TRUE);
824 (void)dec_stat(A_INT, 25, TRUE);
829 case SV_POTION_DEC_STR:
831 if (do_dec_stat(A_STR)) ident = TRUE;
835 case SV_POTION_DEC_INT:
837 if (do_dec_stat(A_INT)) ident = TRUE;
841 case SV_POTION_DEC_WIS:
843 if (do_dec_stat(A_WIS)) ident = TRUE;
847 case SV_POTION_DEC_DEX:
849 if (do_dec_stat(A_DEX)) ident = TRUE;
853 case SV_POTION_DEC_CON:
855 if (do_dec_stat(A_CON)) ident = TRUE;
859 case SV_POTION_DEC_CHR:
861 if (do_dec_stat(A_CHR)) ident = TRUE;
865 case SV_POTION_DETONATIONS:
868 msg_print("ÂΤÎÃæ¤Ç·ã¤·¤¤Çúȯ¤¬µ¯¤¤¿¡ª");
869 take_hit(DAMAGE_NOESCAPE, damroll(50, 20), "Çúȯ¤ÎÌô", -1);
871 msg_print("Massive explosions rupture your body!");
872 take_hit(DAMAGE_NOESCAPE, damroll(50, 20), "a potion of Detonation", -1);
875 (void)set_stun(p_ptr->stun + 75);
876 (void)set_cut(p_ptr->cut + 5000);
881 case SV_POTION_DEATH:
883 chg_virtue(V_VITALITY, -1);
884 chg_virtue(V_UNLIFE, 5);
886 msg_print("»à¤Îͽ´¶¤¬ÂÎÃæ¤ò¶î¤±¤á¤°¤Ã¤¿¡£");
887 take_hit(DAMAGE_LOSELIFE, 5000, "»à¤ÎÌô", -1);
889 msg_print("A feeling of Death flows through your body.");
890 take_hit(DAMAGE_LOSELIFE, 5000, "a potion of Death", -1);
897 case SV_POTION_INFRAVISION:
899 if (set_tim_infra(p_ptr->tim_infra + 100 + randint(100), FALSE))
906 case SV_POTION_DETECT_INVIS:
908 if (set_tim_invis(p_ptr->tim_invis + 12 + randint(12), FALSE))
915 case SV_POTION_SLOW_POISON:
917 if (set_poisoned(p_ptr->poisoned / 2)) ident = TRUE;
921 case SV_POTION_CURE_POISON:
923 if (set_poisoned(0)) ident = TRUE;
927 case SV_POTION_BOLDNESS:
929 if (set_afraid(0)) ident = TRUE;
933 case SV_POTION_SPEED:
937 if (set_fast(randint(25) + 15, FALSE)) ident = TRUE;
941 (void)set_fast(p_ptr->fast + 5, FALSE);
946 case SV_POTION_RESIST_HEAT:
948 if (set_oppose_fire(p_ptr->oppose_fire + randint(10) + 10, FALSE))
955 case SV_POTION_RESIST_COLD:
957 if (set_oppose_cold(p_ptr->oppose_cold + randint(10) + 10, FALSE))
964 case SV_POTION_HEROISM:
966 if (set_afraid(0)) ident = TRUE;
967 if (set_hero(p_ptr->hero + randint(25) + 25, FALSE)) ident = TRUE;
968 if (hp_player(10)) ident = TRUE;
972 case SV_POTION_BESERK_STRENGTH:
974 if (set_afraid(0)) ident = TRUE;
975 if (set_shero(p_ptr->shero + randint(25) + 25, FALSE)) ident = TRUE;
976 if (hp_player(30)) ident = TRUE;
980 case SV_POTION_CURE_LIGHT:
982 if (hp_player(damroll(2, 8))) ident = TRUE;
983 if (set_blind(0)) ident = TRUE;
984 if (set_cut(p_ptr->cut - 10)) ident = TRUE;
985 if (set_shero(0,TRUE)) ident = TRUE;
989 case SV_POTION_CURE_SERIOUS:
991 if (hp_player(damroll(4, 8))) ident = TRUE;
992 if (set_blind(0)) ident = TRUE;
993 if (set_confused(0)) ident = TRUE;
994 if (set_cut((p_ptr->cut / 2) - 50)) ident = TRUE;
995 if (set_shero(0,TRUE)) ident = TRUE;
999 case SV_POTION_CURE_CRITICAL:
1001 if (hp_player(damroll(6, 8))) ident = TRUE;
1002 if (set_blind(0)) ident = TRUE;
1003 if (set_confused(0)) ident = TRUE;
1004 if (set_poisoned(0)) ident = TRUE;
1005 if (set_stun(0)) ident = TRUE;
1006 if (set_cut(0)) ident = TRUE;
1007 if (set_shero(0,TRUE)) ident = TRUE;
1011 case SV_POTION_HEALING:
1013 if (hp_player(300)) ident = TRUE;
1014 if (set_blind(0)) ident = TRUE;
1015 if (set_confused(0)) ident = TRUE;
1016 if (set_poisoned(0)) ident = TRUE;
1017 if (set_stun(0)) ident = TRUE;
1018 if (set_cut(0)) ident = TRUE;
1019 if (set_shero(0,TRUE)) ident = TRUE;
1023 case SV_POTION_STAR_HEALING:
1025 if (hp_player(1200)) ident = TRUE;
1026 if (set_blind(0)) ident = TRUE;
1027 if (set_confused(0)) ident = TRUE;
1028 if (set_poisoned(0)) ident = TRUE;
1029 if (set_stun(0)) ident = TRUE;
1030 if (set_cut(0)) ident = TRUE;
1031 if (set_shero(0,TRUE)) ident = TRUE;
1035 case SV_POTION_LIFE:
1037 chg_virtue(V_VITALITY, 1);
1038 chg_virtue(V_UNLIFE, -5);
1040 msg_print("ÂÎÃæ¤ËÀ¸Ì¿ÎϤ¬Ëþ¤Á¤¢¤Õ¤ì¤Æ¤¤¿¡ª");
1042 msg_print("You feel life flow through your body!");
1046 (void)set_poisoned(0);
1048 (void)set_confused(0);
1052 (void)do_res_stat(A_STR);
1053 (void)do_res_stat(A_CON);
1054 (void)do_res_stat(A_DEX);
1055 (void)do_res_stat(A_WIS);
1056 (void)do_res_stat(A_INT);
1057 (void)do_res_stat(A_CHR);
1058 (void)set_shero(0,TRUE);
1064 case SV_POTION_RESTORE_MANA:
1066 if (p_ptr->pclass == CLASS_MAGIC_EATER)
1069 for (i = 0; i < 72; i++)
1071 p_ptr->magic_num1[i] += (p_ptr->magic_num2[i] < 10) ? 0x30000 : p_ptr->magic_num2[i]*0x05555;
1072 if (p_ptr->magic_num1[i] > p_ptr->magic_num2[i]*0x10000) p_ptr->magic_num1[i] = p_ptr->magic_num2[i]*0x10000L;
1074 for (; i < 108; i++)
1076 int k_idx = lookup_kind(TV_ROD, i-72);
1077 p_ptr->magic_num1[i] -= ((p_ptr->magic_num2[i] < 10) ? 0x30000 : p_ptr->magic_num2[i]*0x5555)*k_info[k_idx].pval;
1078 if (p_ptr->magic_num1[i] < 0) p_ptr->magic_num1[i] = 0;
1081 msg_print("Ƭ¤¬¥Ï¥Ã¥¥ê¤È¤·¤¿¡£");
1083 msg_print("Your feel your head clear.");
1085 p_ptr->window |= (PW_PLAYER);
1088 else if (p_ptr->csp < p_ptr->msp)
1090 p_ptr->csp = p_ptr->msp;
1091 p_ptr->csp_frac = 0;
1093 msg_print("Ƭ¤¬¥Ï¥Ã¥¥ê¤È¤·¤¿¡£");
1095 msg_print("Your feel your head clear.");
1098 p_ptr->redraw |= (PR_MANA);
1099 p_ptr->window |= (PW_PLAYER);
1100 p_ptr->window |= (PW_SPELL);
1103 if (set_shero(0,TRUE)) ident = TRUE;
1107 case SV_POTION_RESTORE_EXP:
1109 if (restore_level()) ident = TRUE;
1113 case SV_POTION_RES_STR:
1115 if (do_res_stat(A_STR)) ident = TRUE;
1119 case SV_POTION_RES_INT:
1121 if (do_res_stat(A_INT)) ident = TRUE;
1125 case SV_POTION_RES_WIS:
1127 if (do_res_stat(A_WIS)) ident = TRUE;
1131 case SV_POTION_RES_DEX:
1133 if (do_res_stat(A_DEX)) ident = TRUE;
1137 case SV_POTION_RES_CON:
1139 if (do_res_stat(A_CON)) ident = TRUE;
1143 case SV_POTION_RES_CHR:
1145 if (do_res_stat(A_CHR)) ident = TRUE;
1149 case SV_POTION_INC_STR:
1151 if (do_inc_stat(A_STR)) ident = TRUE;
1155 case SV_POTION_INC_INT:
1157 if (do_inc_stat(A_INT)) ident = TRUE;
1161 case SV_POTION_INC_WIS:
1163 if (do_inc_stat(A_WIS)) ident = TRUE;
1167 case SV_POTION_INC_DEX:
1169 if (do_inc_stat(A_DEX)) ident = TRUE;
1173 case SV_POTION_INC_CON:
1175 if (do_inc_stat(A_CON)) ident = TRUE;
1179 case SV_POTION_INC_CHR:
1181 if (do_inc_stat(A_CHR)) ident = TRUE;
1185 case SV_POTION_AUGMENTATION:
1187 if (do_inc_stat(A_STR)) ident = TRUE;
1188 if (do_inc_stat(A_INT)) ident = TRUE;
1189 if (do_inc_stat(A_WIS)) ident = TRUE;
1190 if (do_inc_stat(A_DEX)) ident = TRUE;
1191 if (do_inc_stat(A_CON)) ident = TRUE;
1192 if (do_inc_stat(A_CHR)) ident = TRUE;
1196 case SV_POTION_ENLIGHTENMENT:
1198 chg_virtue(V_ENLIGHTEN, 1);
1200 msg_print("¼«Ê¬¤ÎÃÖ¤«¤ì¤Æ¤¤¤ë¾õ¶·¤¬Ç¾Î¢¤ËÉ⤫¤ó¤Ç¤¤¿...");
1202 msg_print("An image of your surroundings forms in your mind...");
1205 chg_virtue(V_KNOWLEDGE, 1);
1206 chg_virtue(V_ENLIGHTEN, 1);
1207 wiz_lite(FALSE, FALSE);
1212 case SV_POTION_STAR_ENLIGHTENMENT:
1215 msg_print("¹¹¤Ê¤ë·¼Ìؤò´¶¤¸¤¿...");
1217 msg_print("You begin to feel more enlightened...");
1220 chg_virtue(V_KNOWLEDGE, 1);
1221 chg_virtue(V_ENLIGHTEN, 1);
1223 wiz_lite(TRUE, FALSE);
1224 (void)do_inc_stat(A_INT);
1225 (void)do_inc_stat(A_WIS);
1226 (void)detect_traps(DETECT_RAD_DEFAULT);
1227 (void)detect_doors(DETECT_RAD_DEFAULT);
1228 (void)detect_stairs(DETECT_RAD_DEFAULT);
1229 (void)detect_treasure(DETECT_RAD_DEFAULT);
1230 (void)detect_objects_gold(DETECT_RAD_DEFAULT);
1231 (void)detect_objects_normal(DETECT_RAD_DEFAULT);
1238 case SV_POTION_SELF_KNOWLEDGE:
1241 msg_print("¼«Ê¬¼«¿È¤Î¤³¤È¤¬¾¯¤·¤Ïʬ¤«¤Ã¤¿µ¤¤¬¤¹¤ë...");
1243 msg_print("You begin to know yourself a little better...");
1252 case SV_POTION_EXPERIENCE:
1254 if (p_ptr->prace == RACE_ANDROID) break;
1255 chg_virtue(V_ENLIGHTEN, 1);
1256 if (p_ptr->exp < PY_MAX_EXP)
1258 s32b ee = (p_ptr->exp / 2) + 10;
1259 if (ee > 100000L) ee = 100000L;
1261 msg_print("¹¹¤Ë·Ð¸³¤òÀѤó¤À¤è¤¦¤Êµ¤¤¬¤¹¤ë¡£");
1263 msg_print("You feel more experienced.");
1272 case SV_POTION_RESISTANCE:
1274 (void)set_oppose_acid(p_ptr->oppose_acid + randint(20) + 20, FALSE);
1275 (void)set_oppose_elec(p_ptr->oppose_elec + randint(20) + 20, FALSE);
1276 (void)set_oppose_fire(p_ptr->oppose_fire + randint(20) + 20, FALSE);
1277 (void)set_oppose_cold(p_ptr->oppose_cold + randint(20) + 20, FALSE);
1278 (void)set_oppose_pois(p_ptr->oppose_pois + randint(20) + 20, FALSE);
1283 case SV_POTION_CURING:
1285 if (hp_player(50)) ident = TRUE;
1286 if (set_blind(0)) ident = TRUE;
1287 if (set_poisoned(0)) ident = TRUE;
1288 if (set_confused(0)) ident = TRUE;
1289 if (set_stun(0)) ident = TRUE;
1290 if (set_cut(0)) ident = TRUE;
1291 if (set_image(0)) ident = TRUE;
1295 case SV_POTION_INVULNERABILITY:
1297 (void)set_invuln(p_ptr->invuln + randint(4) + 4, FALSE);
1302 case SV_POTION_NEW_LIFE:
1304 do_cmd_rerate(FALSE);
1306 p_ptr->update |= PU_BONUS;
1307 if (p_ptr->muta1 || p_ptr->muta2 || p_ptr->muta3)
1309 chg_virtue(V_CHANCE, -5);
1311 msg_print("Á´¤Æ¤ÎÆÍÁ³ÊÑ°Û¤¬¼£¤Ã¤¿¡£");
1313 msg_print("You are cured of all mutations.");
1316 p_ptr->muta1 = p_ptr->muta2 = p_ptr->muta3 = 0;
1317 p_ptr->update |= PU_BONUS;
1319 mutant_regenerate_mod = calc_mutant_regenerate_mod();
1325 case SV_POTION_NEO_TSUYOSHI:
1328 (void)set_tsuyoshi(p_ptr->tsuyoshi + randint(100) + 100, FALSE);
1333 case SV_POTION_TSUYOSHI:
1336 msg_print("¡Ö¥ª¥¯¥ì·»¤µ¤ó¡ª¡×");
1338 msg_print("Brother OKURE!");
1341 p_ptr->tsuyoshi = 1;
1342 (void)set_tsuyoshi(0, TRUE);
1343 if (!p_ptr->resist_chaos)
1345 (void)set_image(50 + randint(50));
1351 case SV_POTION_POLYMORPH:
1353 if ((p_ptr->muta1 || p_ptr->muta2 || p_ptr->muta3) && one_in_(23))
1355 chg_virtue(V_CHANCE, -5);
1357 msg_print("Á´¤Æ¤ÎÆÍÁ³ÊÑ°Û¤¬¼£¤Ã¤¿¡£");
1359 msg_print("You are cured of all mutations.");
1362 p_ptr->muta1 = p_ptr->muta2 = p_ptr->muta3 = 0;
1363 p_ptr->update |= PU_BONUS;
1372 if(gain_random_mutation(0)) ident = TRUE;
1374 else if (lose_mutation(0)) ident = TRUE;
1375 } while(!ident || one_in_(2));
1381 if (p_ptr->prace == RACE_SKELETON)
1384 msg_print("±ÕÂΤΰìÉô¤Ï¤¢¤Ê¤¿¤Î¥¢¥´¤òÁÇÄ̤ꤷ¤ÆÍî¤Á¤¿¡ª");
1386 msg_print("Some of the fluid falls through your jaws!");
1389 (void)potion_smash_effect(0, py, px, q_ptr->k_idx);
1392 /* Combine / Reorder the pack (later) */
1393 p_ptr->notice |= (PN_COMBINE | PN_REORDER);
1395 if (!(object_aware_p(o_ptr)))
1397 chg_virtue(V_PATIENCE, -1);
1398 chg_virtue(V_CHANCE, 1);
1399 chg_virtue(V_KNOWLEDGE, -1);
1402 /* The item has been tried */
1403 object_tried(q_ptr);
1405 /* An identification was made */
1406 if (ident && !object_aware_p(q_ptr))
1408 object_aware(q_ptr);
1409 gain_exp((lev + (p_ptr->lev >> 1)) / p_ptr->lev);
1413 p_ptr->window |= (PW_INVEN | PW_EQUIP | PW_PLAYER);
1415 /* Potions can feed the player */
1416 switch (p_ptr->mimic_form)
1419 switch (p_ptr->prace)
1422 (void)set_food(p_ptr->food + (o_ptr->pval / 10));
1433 set_food(p_ptr->food + ((o_ptr->pval) / 20));
1436 (void)set_food(p_ptr->food + o_ptr->pval);
1441 case MIMIC_DEMON_LORD:
1442 set_food(p_ptr->food + ((o_ptr->pval) / 20));
1445 (void)set_food(p_ptr->food + (o_ptr->pval / 10));
1448 (void)set_food(p_ptr->food + o_ptr->pval);
1454 void do_cmd_quaff_potion(void)
1459 if (p_ptr->special_defense & (KATA_MUSOU | KATA_KOUKIJIN))
1461 set_action(ACTION_NONE);
1464 /* Restrict choices to potions */
1465 item_tester_tval = TV_POTION;
1469 q = "¤É¤ÎÌô¤ò°û¤ß¤Þ¤¹¤«? ";
1470 s = "°û¤á¤ëÌô¤¬¤Ê¤¤¡£";
1472 q = "Quaff which potion? ";
1473 s = "You have no potions to quaff.";
1476 if (!get_item(&item, q, s, (USE_INVEN | USE_FLOOR))) return;
1478 /* Quaff the potion */
1479 do_cmd_quaff_potion_aux(item);
1484 * Read a scroll (from the pack or floor).
1486 * Certain scrolls can be "aborted" without losing the scroll. These
1487 * include scrolls with no effects but recharge or identify, which are
1488 * cancelled before use. XXX Reading them still takes a turn, though.
1490 static void do_cmd_read_scroll_aux(int item)
1492 int k, used_up, ident, lev;
1497 /* Get the item (in the pack) */
1500 o_ptr = &inventory[item];
1503 /* Get the item (on the floor) */
1506 o_ptr = &o_list[0 - item];
1515 if (flush_failure) flush();
1517 msg_print("»ß¤Þ¤Ã¤¿»þ¤ÎÃæ¤Ç¤Ï¤¦¤Þ¤¯Æ¯¤«¤Ê¤¤¤è¤¦¤À¡£");
1519 msg_print("Nothing happen.");
1526 if (p_ptr->pclass == CLASS_BERSERKER)
1529 msg_print("´¬Êª¤Ê¤ó¤ÆÆɤá¤Ê¤¤¡£");
1531 msg_print("You cannot read.");
1536 if((p_ptr->pclass == CLASS_BARD) && p_ptr->magic_num1[0])
1541 /* Not identified yet */
1545 lev = get_object_level(o_ptr);
1547 /* Assume the scroll will get used up */
1550 if (o_ptr->tval == TV_SCROLL)
1552 /* Analyze the scroll */
1553 switch (o_ptr->sval)
1555 case SV_SCROLL_DARKNESS:
1557 if (!(p_ptr->resist_blind) && !(p_ptr->resist_dark))
1559 (void)set_blind(p_ptr->blind + 3 + randint(5));
1561 if (unlite_area(10, 3)) ident = TRUE;
1565 case SV_SCROLL_AGGRAVATE_MONSTER:
1568 msg_print("¥«¥ó¹â¤¯¤¦¤Ê¤ëÍͤʲ»¤¬ÊÕ¤ê¤òʤ¤Ã¤¿¡£");
1570 msg_print("There is a high pitched humming noise.");
1573 aggravate_monsters(0);
1578 case SV_SCROLL_CURSE_ARMOR:
1580 if (curse_armor()) ident = TRUE;
1584 case SV_SCROLL_CURSE_WEAPON:
1586 if (curse_weapon(FALSE, INVEN_RARM)) ident = TRUE;
1590 case SV_SCROLL_SUMMON_MONSTER:
1592 for (k = 0; k < randint(3); k++)
1594 if (summon_specific(0, py, px, dun_level, 0, TRUE, FALSE, FALSE, TRUE, TRUE))
1602 case SV_SCROLL_SUMMON_UNDEAD:
1604 for (k = 0; k < randint(3); k++)
1606 if (summon_specific(0, py, px, dun_level, SUMMON_UNDEAD, TRUE, FALSE, FALSE, TRUE, TRUE))
1614 case SV_SCROLL_SUMMON_PET:
1616 if (summon_specific(-1, py, px, dun_level, 0, TRUE, TRUE, TRUE, FALSE, FALSE))
1623 case SV_SCROLL_SUMMON_KIN:
1625 if (summon_kin_player(TRUE, p_ptr->lev, py, px, TRUE))
1632 case SV_SCROLL_TRAP_CREATION:
1634 if (trap_creation(py, px)) ident = TRUE;
1638 case SV_SCROLL_PHASE_DOOR:
1640 teleport_player(10);
1645 case SV_SCROLL_TELEPORT:
1647 teleport_player(100);
1652 case SV_SCROLL_TELEPORT_LEVEL:
1654 (void)teleport_player_level();
1659 case SV_SCROLL_WORD_OF_RECALL:
1661 if (!word_of_recall()) used_up = FALSE;
1666 case SV_SCROLL_IDENTIFY:
1669 if (!ident_spell(FALSE)) used_up = FALSE;
1673 case SV_SCROLL_STAR_IDENTIFY:
1676 if (!identify_fully(FALSE)) used_up = FALSE;
1680 case SV_SCROLL_REMOVE_CURSE:
1685 msg_print("狼¤Ë¸«¼é¤é¤ì¤Æ¤¤¤ë¤è¤¦¤Êµ¤¤¬¤¹¤ë¡£");
1687 msg_print("You feel as if someone is watching over you.");
1695 case SV_SCROLL_STAR_REMOVE_CURSE:
1697 if (remove_all_curse())
1700 msg_print("狼¤Ë¸«¼é¤é¤ì¤Æ¤¤¤ë¤è¤¦¤Êµ¤¤¬¤¹¤ë¡£");
1702 msg_print("You feel as if someone is watching over you.");
1709 case SV_SCROLL_ENCHANT_ARMOR:
1712 if (!enchant_spell(0, 0, 1)) used_up = FALSE;
1716 case SV_SCROLL_ENCHANT_WEAPON_TO_HIT:
1718 if (!enchant_spell(1, 0, 0)) used_up = FALSE;
1723 case SV_SCROLL_ENCHANT_WEAPON_TO_DAM:
1725 if (!enchant_spell(0, 1, 0)) used_up = FALSE;
1730 case SV_SCROLL_STAR_ENCHANT_ARMOR:
1732 if (!enchant_spell(0, 0, randint(3) + 2)) used_up = FALSE;
1737 case SV_SCROLL_STAR_ENCHANT_WEAPON:
1739 if (!enchant_spell(randint(3), randint(3), 0)) used_up = FALSE;
1744 case SV_SCROLL_RECHARGING:
1746 if (!recharge(130)) used_up = FALSE;
1751 case SV_SCROLL_MUNDANITY:
1754 if (!mundane_spell(FALSE)) used_up = FALSE;
1758 case SV_SCROLL_LIGHT:
1760 if (lite_area(damroll(2, 8), 2)) ident = TRUE;
1764 case SV_SCROLL_MAPPING:
1766 map_area(DETECT_RAD_MAP);
1771 case SV_SCROLL_DETECT_GOLD:
1773 if (detect_treasure(DETECT_RAD_DEFAULT)) ident = TRUE;
1774 if (detect_objects_gold(DETECT_RAD_DEFAULT)) ident = TRUE;
1778 case SV_SCROLL_DETECT_ITEM:
1780 if (detect_objects_normal(DETECT_RAD_DEFAULT)) ident = TRUE;
1784 case SV_SCROLL_DETECT_TRAP:
1786 if (detect_traps(DETECT_RAD_DEFAULT)) ident = TRUE;
1790 case SV_SCROLL_DETECT_DOOR:
1792 if (detect_doors(DETECT_RAD_DEFAULT)) ident = TRUE;
1793 if (detect_stairs(DETECT_RAD_DEFAULT)) ident = TRUE;
1797 case SV_SCROLL_DETECT_INVIS:
1799 if (detect_monsters_invis(DETECT_RAD_DEFAULT)) ident = TRUE;
1803 case SV_SCROLL_SATISFY_HUNGER:
1805 if (set_food(PY_FOOD_MAX - 1)) ident = TRUE;
1809 case SV_SCROLL_BLESSING:
1811 if (set_blessed(p_ptr->blessed + randint(12) + 6, FALSE)) ident = TRUE;
1815 case SV_SCROLL_HOLY_CHANT:
1817 if (set_blessed(p_ptr->blessed + randint(24) + 12, FALSE)) ident = TRUE;
1821 case SV_SCROLL_HOLY_PRAYER:
1823 if (set_blessed(p_ptr->blessed + randint(48) + 24, FALSE)) ident = TRUE;
1827 case SV_SCROLL_MONSTER_CONFUSION:
1829 if (!(p_ptr->special_attack & ATTACK_CONFUSE))
1832 msg_print("¼ê¤¬µ±¤»Ï¤á¤¿¡£");
1834 msg_print("Your hands begin to glow.");
1837 p_ptr->special_attack |= ATTACK_CONFUSE;
1838 p_ptr->redraw |= (PR_STATUS);
1844 case SV_SCROLL_PROTECTION_FROM_EVIL:
1847 if (set_protevil(p_ptr->protevil + randint(25) + k, FALSE)) ident = TRUE;
1851 case SV_SCROLL_RUNE_OF_PROTECTION:
1858 case SV_SCROLL_TRAP_DOOR_DESTRUCTION:
1860 if (destroy_doors_touch()) ident = TRUE;
1864 case SV_SCROLL_STAR_DESTRUCTION:
1866 if (destroy_area(py, px, 13+rand_int(5), TRUE))
1870 msg_print("¥À¥ó¥¸¥ç¥ó¤¬Íɤ줿...");
1872 msg_print("The dungeon trembles...");
1879 case SV_SCROLL_DISPEL_UNDEAD:
1881 if (dispel_undead(80)) ident = TRUE;
1885 case SV_SCROLL_SPELL:
1887 if ((p_ptr->pclass == CLASS_WARRIOR) || (p_ptr->pclass == CLASS_IMITATOR) || (p_ptr->pclass == CLASS_MINDCRAFTER) || (p_ptr->pclass == CLASS_SORCERER) || (p_ptr->pclass == CLASS_ARCHER) || (p_ptr->pclass == CLASS_MAGIC_EATER) || (p_ptr->pclass == CLASS_RED_MAGE) || (p_ptr->pclass == CLASS_SAMURAI) || (p_ptr->pclass == CLASS_BLUE_MAGE) || (p_ptr->pclass == CLASS_CAVALRY) || (p_ptr->pclass == CLASS_BERSERKER) || (p_ptr->pclass == CLASS_SMITH) || (p_ptr->pclass == CLASS_MIRROR_MASTER)) break;
1888 p_ptr->add_spells++;
1889 p_ptr->update |= (PU_SPELLS);
1894 case SV_SCROLL_GENOCIDE:
1896 (void)symbol_genocide(300, TRUE);
1901 case SV_SCROLL_MASS_GENOCIDE:
1903 (void)mass_genocide(300, TRUE);
1908 case SV_SCROLL_ACQUIREMENT:
1910 acquirement(py, px, 1, TRUE, FALSE);
1915 case SV_SCROLL_STAR_ACQUIREMENT:
1917 acquirement(py, px, randint(2) + 1, TRUE, FALSE);
1922 /* New Hengband scrolls */
1923 case SV_SCROLL_FIRE:
1925 fire_ball(GF_FIRE, 0, 666, 4);
1926 /* Note: "Double" damage since it is centered on the player ... */
1927 if (!(p_ptr->oppose_fire || p_ptr->resist_fire || p_ptr->immune_fire))
1929 take_hit(DAMAGE_NOESCAPE, 50+randint(50), "±ê¤Î´¬Êª", -1);
1931 take_hit(DAMAGE_NOESCAPE, 50 + randint(50), "a Scroll of Fire", -1);
1941 fire_ball(GF_ICE, 0, 777, 4);
1942 if (!(p_ptr->oppose_cold || p_ptr->resist_cold || p_ptr->immune_cold))
1944 take_hit(DAMAGE_NOESCAPE, 100+randint(100), "ɹ¤Î´¬Êª", -1);
1946 take_hit(DAMAGE_NOESCAPE, 100 + randint(100), "a Scroll of Ice", -1);
1953 case SV_SCROLL_CHAOS:
1955 fire_ball(GF_CHAOS, 0, 1000, 4);
1956 if (!p_ptr->resist_chaos)
1958 take_hit(DAMAGE_NOESCAPE, 111+randint(111), "¥í¥°¥ë¥¹¤Î´¬Êª", -1);
1960 take_hit(DAMAGE_NOESCAPE, 111 + randint(111), "a Scroll of Logrus", -1);
1967 case SV_SCROLL_RUMOR:
1971 switch (randint(20))
1975 err = get_rnd_line("chainswd_j.txt", 0, Rumor);
1977 err = get_rnd_line("chainswd.txt", 0, Rumor);
1983 err = get_rnd_line("error_j.txt", 0, Rumor);
1985 err = get_rnd_line("error.txt", 0, Rumor);
1993 err = get_rnd_line("death_j.txt", 0, Rumor);
1995 err = get_rnd_line("death.txt", 0, Rumor);
2001 err = get_rnd_line_jonly("rumors_j.txt", 0, Rumor, 10);
2003 err = get_rnd_line("rumors.txt", 0, Rumor);
2009 /* An error occured */
2011 if (err) strcpy(Rumor, "±³¤Î±½¤â¤¢¤ë¡£");
2013 if (err) strcpy(Rumor, "Some rumors are wrong.");
2018 msg_print("´¬Êª¤Ë¤Ï¥á¥Ã¥»¡¼¥¸¤¬½ñ¤«¤ì¤Æ¤¤¤ë:");
2020 msg_print("There is message on the scroll. It says:");
2024 msg_format("%s", Rumor);
2027 msg_print("´¬Êª¤Ï±ì¤òΩ¤Æ¤Æ¾Ã¤¨µî¤Ã¤¿¡ª");
2029 msg_print("The scroll disappears in a puff of smoke!");
2036 case SV_SCROLL_ARTIFACT:
2039 if (!artifact_scroll()) used_up = FALSE;
2043 case SV_SCROLL_RESET_RECALL:
2046 if (!reset_recall()) used_up = FALSE;
2051 else if (o_ptr->tval == TV_SOFT_ARMOR)
2054 msg_print("»ä¤Ï¶ìÏ«¤·¤Æ¡Ø¥°¥ì¡¼¥¿¡¼¡¦¥Ø¥ë=¥Ó¡¼¥¹¥È¡Ù¤òÅݤ·¤¿¡£");
2055 msg_print("¤·¤«¤·¼ê¤ËÆþ¤Ã¤¿¤Î¤Ï¤³¤Î¤¤¿¤Ê¤¤£Ô¥·¥ã¥Ä¤À¤±¤À¤Ã¤¿¡£");
2057 msg_print("I had a very hard time to kill the Greater hell-beast, ");
2058 msg_print("but all I got was this lousy t-shirt!");
2062 else if (o_ptr->name1 == ART_POWER)
2065 msg_print("¡Ö°ì¤Ä¤Î»ØÎؤÏÁ´¤Æ¤òÅý¤Ù¡¢");
2067 msg_print("°ì¤Ä¤Î»ØÎؤÏÁ´¤Æ¤ò¸«¤Ä¤±¡¢");
2069 msg_print("°ì¤Ä¤Î»ØÎؤÏÁ´¤Æ¤òÊá¤é¤¨¤Æ");
2071 msg_print("°Å°Ç¤ÎÃæ¤Ë·Ò¤®¤È¤á¤ë¡£¡×");
2073 msg_print("'One Ring to rule them all, ");
2075 msg_print("One Ring to find them, ");
2077 msg_print("One Ring to bring them all ");
2079 msg_print("and in the darkness bind them.'");
2086 char o_name[MAX_NLEN];
2092 q=format("book-%d_jp.txt",o_ptr->sval);
2094 /* Display object description */
2095 object_desc(o_name, o_ptr, TRUE, 0);
2097 /* Build the filename */
2098 path_build(buf, 1024, ANGBAND_DIR_FILE, q);
2100 /* Peruse the help file */
2101 (void)show_file(TRUE, buf, o_name, 0, 0);
2110 /* Combine / Reorder the pack (later) */
2111 p_ptr->notice |= (PN_COMBINE | PN_REORDER);
2113 if (!(object_aware_p(o_ptr)))
2115 chg_virtue(V_PATIENCE, -1);
2116 chg_virtue(V_CHANCE, 1);
2117 chg_virtue(V_KNOWLEDGE, -1);
2120 /* The item was tried */
2121 object_tried(o_ptr);
2123 /* An identification was made */
2124 if (ident && !object_aware_p(o_ptr))
2126 object_aware(o_ptr);
2127 gain_exp((lev + (p_ptr->lev >> 1)) / p_ptr->lev);
2131 p_ptr->window |= (PW_INVEN | PW_EQUIP | PW_PLAYER);
2134 /* Hack -- allow certain scrolls to be "preserved" */
2140 sound(SOUND_SCROLL);
2142 /* Destroy a scroll in the pack */
2145 inven_item_increase(item, -1);
2146 inven_item_describe(item);
2147 inven_item_optimize(item);
2150 /* Destroy a scroll on the floor */
2153 floor_item_increase(0 - item, -1);
2154 floor_item_describe(0 - item);
2155 floor_item_optimize(0 - item);
2158 /* Can save again */
2163 * Hook to determine if an object is readable
2165 static bool item_tester_hook_readable(object_type *o_ptr)
2167 if ((o_ptr->tval==TV_SCROLL) || (o_ptr->tval==TV_PARCHEMENT) || ((o_ptr->tval == TV_SOFT_ARMOR) && (o_ptr->sval == SV_T_SHIRT)) || (o_ptr->name1 == ART_POWER)) return (TRUE);
2174 void do_cmd_read_scroll(void)
2179 if (p_ptr->special_defense & (KATA_MUSOU | KATA_KOUKIJIN))
2181 set_action(ACTION_NONE);
2184 /* Check some conditions */
2188 msg_print("Ìܤ¬¸«¤¨¤Ê¤¤¡£");
2190 msg_print("You can't see anything.");
2198 msg_print("ÌÀ¤«¤ê¤¬¤Ê¤¤¤Î¤Ç¡¢°Å¤¯¤ÆÆɤá¤Ê¤¤¡£");
2200 msg_print("You have no light to read by.");
2205 if (p_ptr->confused)
2208 msg_print("º®Í𤷤Ƥ¤¤ÆÆɤá¤Ê¤¤¡£");
2210 msg_print("You are too confused!");
2217 /* Restrict choices to scrolls */
2218 item_tester_hook = item_tester_hook_readable;
2222 q = "¤É¤Î´¬Êª¤òÆɤߤޤ¹¤«? ";
2223 s = "Æɤá¤ë´¬Êª¤¬¤Ê¤¤¡£";
2225 q = "Read which scroll? ";
2226 s = "You have no scrolls to read.";
2229 if (!get_item(&item, q, s, (USE_INVEN | USE_FLOOR))) return;
2231 /* Read the scroll */
2232 do_cmd_read_scroll_aux(item);
2236 static int staff_effect(int sval, bool *use_charge, bool magic)
2241 /* Analyze the staff */
2244 case SV_STAFF_DARKNESS:
2246 if (!(p_ptr->resist_blind) && !(p_ptr->resist_dark))
2248 if (set_blind(p_ptr->blind + 3 + randint(5))) ident = TRUE;
2250 if (unlite_area(10, 3)) ident = TRUE;
2254 case SV_STAFF_SLOWNESS:
2256 if (set_slow(p_ptr->slow + randint(30) + 15, FALSE)) ident = TRUE;
2260 case SV_STAFF_HASTE_MONSTERS:
2262 if (speed_monsters()) ident = TRUE;
2266 case SV_STAFF_SUMMONING:
2268 for (k = 0; k < randint(4); k++)
2270 if (summon_specific(0, py, px, dun_level, 0, TRUE, FALSE, FALSE, TRUE, TRUE))
2278 case SV_STAFF_TELEPORTATION:
2280 teleport_player(100);
2285 case SV_STAFF_IDENTIFY:
2287 if (!ident_spell(FALSE)) *use_charge = FALSE;
2292 case SV_STAFF_REMOVE_CURSE:
2299 msg_print("狼¤Ë¸«¼é¤é¤ì¤Æ¤¤¤ë¤è¤¦¤Êµ¤¤¬¤¹¤ë¡£");
2301 msg_print("You feel as if someone is watching over you.");
2304 else if (!p_ptr->blind)
2307 msg_print("¾ó¤Ï°ì½Ö¥Ö¥ë¡¼¤Ëµ±¤¤¤¿...");
2309 msg_print("The staff glows blue for a moment...");
2318 case SV_STAFF_STARLITE:
2320 int num = damroll(5, 3);
2324 if (!p_ptr->blind && !magic)
2327 msg_print("¾ó¤ÎÀ褬ÌÀ¤ë¤¯µ±¤¤¤¿...");
2329 msg_print("The end of the staff glows brightly...");
2333 for (k = 0; k < num; k++)
2339 scatter(&y, &x, py, px, 4, 0);
2341 if (!cave_floor_bold(y, x)) continue;
2343 if ((y != py) || (x != px)) break;
2346 project(0, 0, y, x, damroll(6 + p_ptr->lev / 8, 10), GF_LITE_WEAK,
2347 (PROJECT_BEAM | PROJECT_THRU | PROJECT_GRID | PROJECT_KILL), -1);
2355 if (lite_area(damroll(2, 8), 2)) ident = TRUE;
2359 case SV_STAFF_MAPPING:
2361 map_area(DETECT_RAD_MAP);
2366 case SV_STAFF_DETECT_GOLD:
2368 if (detect_treasure(DETECT_RAD_DEFAULT)) ident = TRUE;
2369 if (detect_objects_gold(DETECT_RAD_DEFAULT)) ident = TRUE;
2373 case SV_STAFF_DETECT_ITEM:
2375 if (detect_objects_normal(DETECT_RAD_DEFAULT)) ident = TRUE;
2379 case SV_STAFF_DETECT_TRAP:
2381 if (detect_traps(DETECT_RAD_DEFAULT)) ident = TRUE;
2385 case SV_STAFF_DETECT_DOOR:
2387 if (detect_doors(DETECT_RAD_DEFAULT)) ident = TRUE;
2388 if (detect_stairs(DETECT_RAD_DEFAULT)) ident = TRUE;
2392 case SV_STAFF_DETECT_INVIS:
2394 if (detect_monsters_invis(DETECT_RAD_DEFAULT)) ident = TRUE;
2398 case SV_STAFF_DETECT_EVIL:
2400 if (detect_monsters_evil(DETECT_RAD_DEFAULT)) ident = TRUE;
2404 case SV_STAFF_CURE_LIGHT:
2406 if (hp_player(damroll(2, 8))) ident = TRUE;
2407 if (set_shero(0,TRUE)) ident = TRUE;
2411 case SV_STAFF_CURING:
2413 if (set_blind(0)) ident = TRUE;
2414 if (set_poisoned(0)) ident = TRUE;
2415 if (set_confused(0)) ident = TRUE;
2416 if (set_stun(0)) ident = TRUE;
2417 if (set_cut(0)) ident = TRUE;
2418 if (set_image(0)) ident = TRUE;
2419 if (set_shero(0,TRUE)) ident = TRUE;
2423 case SV_STAFF_HEALING:
2425 if (hp_player(300)) ident = TRUE;
2426 if (set_stun(0)) ident = TRUE;
2427 if (set_cut(0)) ident = TRUE;
2428 if (set_shero(0,TRUE)) ident = TRUE;
2432 case SV_STAFF_THE_MAGI:
2434 if (do_res_stat(A_INT)) ident = TRUE;
2435 if (p_ptr->csp < p_ptr->msp)
2437 p_ptr->csp = p_ptr->msp;
2438 p_ptr->csp_frac = 0;
2441 msg_print("Ƭ¤¬¥Ï¥Ã¥¥ê¤È¤·¤¿¡£");
2443 msg_print("Your feel your head clear.");
2446 p_ptr->redraw |= (PR_MANA);
2447 p_ptr->window |= (PW_PLAYER);
2448 p_ptr->window |= (PW_SPELL);
2450 if (set_shero(0,TRUE)) ident = TRUE;
2454 case SV_STAFF_SLEEP_MONSTERS:
2456 if (sleep_monsters()) ident = TRUE;
2460 case SV_STAFF_SLOW_MONSTERS:
2462 if (slow_monsters()) ident = TRUE;
2466 case SV_STAFF_SPEED:
2468 if (set_fast(randint(30) + 15, FALSE)) ident = TRUE;
2472 case SV_STAFF_PROBING:
2479 case SV_STAFF_DISPEL_EVIL:
2481 if (dispel_evil(80)) ident = TRUE;
2485 case SV_STAFF_POWER:
2487 if (dispel_monsters(150)) ident = TRUE;
2491 case SV_STAFF_HOLINESS:
2493 if (dispel_evil(150)) ident = TRUE;
2495 if (set_protevil((magic ? 0 : p_ptr->protevil) + randint(25) + k, FALSE)) ident = TRUE;
2496 if (set_poisoned(0)) ident = TRUE;
2497 if (set_afraid(0)) ident = TRUE;
2498 if (hp_player(50)) ident = TRUE;
2499 if (set_stun(0)) ident = TRUE;
2500 if (set_cut(0)) ident = TRUE;
2504 case SV_STAFF_GENOCIDE:
2506 (void)symbol_genocide((magic ? p_ptr->lev + 50 : 200), TRUE);
2511 case SV_STAFF_EARTHQUAKES:
2513 if (earthquake(py, px, 10))
2517 msg_print("¥À¥ó¥¸¥ç¥ó¤¬Íɤ줿¡£");
2519 msg_print("The dungeon trembles.");
2526 case SV_STAFF_DESTRUCTION:
2528 if (destroy_area(py, px, 13+rand_int(5), TRUE))
2534 case SV_STAFF_ANIMATE_DEAD:
2536 if (animate_dead(0, py, px))
2542 case SV_STAFF_MSTORM:
2545 msg_print("¶¯ÎϤÊËâÎϤ¬Å¨¤ò°ú¤Îö¤¤¤¿¡ª");
2547 msg_print("Mighty magics rend your enemies!");
2549 project(0, 5, py, px,
2550 (randint(200) + 300) * 2, GF_MANA, PROJECT_KILL | PROJECT_ITEM | PROJECT_GRID | PROJECT_NO_REF, -1);
2551 if ((p_ptr->pclass != CLASS_MAGE) && (p_ptr->pclass != CLASS_HIGH_MAGE) && (p_ptr->pclass != CLASS_SORCERER) && (p_ptr->pclass != CLASS_MAGIC_EATER) && (p_ptr->pclass != CLASS_BLUE_MAGE))
2554 (void)take_hit(DAMAGE_NOESCAPE, 50, "¥³¥ó¥È¥í¡¼¥ë¤·Æñ¤¤¶¯ÎϤÊËâÎϤβòÊü", -1);
2556 (void)take_hit(DAMAGE_NOESCAPE, 50, "unleashing magics too mighty to control", -1);
2568 * Use a staff. -RAK-
2570 * One charge of one staff disappears.
2572 * Hack -- staffs of identify can be "cancelled".
2574 static void do_cmd_use_staff_aux(int item)
2576 int ident, chance, lev;
2580 /* Hack -- let staffs of identify get aborted */
2581 bool use_charge = TRUE;
2584 /* Get the item (in the pack) */
2587 o_ptr = &inventory[item];
2590 /* Get the item (on the floor) */
2593 o_ptr = &o_list[0 - item];
2597 /* Mega-Hack -- refuse to use a pile from the ground */
2598 if ((item < 0) && (o_ptr->number > 1))
2601 msg_print("¤Þ¤º¤Ï¾ó¤ò½¦¤ï¤Ê¤±¤ì¤Ð¡£");
2603 msg_print("You must first pick up the staffs.");
2613 /* Extract the item level */
2614 lev = get_object_level(o_ptr);
2615 if (lev > 50) lev = 50 + (lev - 50)/2;
2617 /* Base chance of success */
2618 chance = p_ptr->skill_dev;
2620 /* Confusion hurts skill */
2621 if (p_ptr->confused) chance = chance / 2;
2623 /* Hight level objects are harder */
2624 chance = chance - lev;
2626 /* Give everyone a (slight) chance */
2627 if ((chance < USE_DEVICE) && (rand_int(USE_DEVICE - chance + 1) == 0))
2629 chance = USE_DEVICE;
2634 if (flush_failure) flush();
2636 msg_print("»ß¤Þ¤Ã¤¿»þ¤ÎÃæ¤Ç¤Ï¤¦¤Þ¤¯Æ¯¤«¤Ê¤¤¤è¤¦¤À¡£");
2638 msg_print("Nothing happen. Maybe this staff is freezing too.");
2645 /* Roll for usage */
2646 if ((chance < USE_DEVICE) || (randint(chance) < USE_DEVICE) || (p_ptr->pclass == CLASS_BERSERKER))
2648 if (flush_failure) flush();
2650 msg_print("¾ó¤ò¤¦¤Þ¤¯»È¤¨¤Ê¤«¤Ã¤¿¡£");
2652 msg_print("You failed to use the staff properly.");
2659 /* Notice empty staffs */
2660 if (o_ptr->pval <= 0)
2662 if (flush_failure) flush();
2664 msg_print("¤³¤Î¾ó¤Ë¤Ï¤â¤¦ËâÎϤ¬»Ä¤Ã¤Æ¤¤¤Ê¤¤¡£");
2666 msg_print("The staff has no charges left.");
2669 o_ptr->ident |= (IDENT_EMPTY);
2671 /* Combine / Reorder the pack (later) */
2672 p_ptr->notice |= (PN_COMBINE | PN_REORDER);
2681 ident = staff_effect(o_ptr->sval, &use_charge, FALSE);
2683 if (!(object_aware_p(o_ptr)))
2685 chg_virtue(V_PATIENCE, -1);
2686 chg_virtue(V_CHANCE, 1);
2687 chg_virtue(V_KNOWLEDGE, -1);
2690 /* Combine / Reorder the pack (later) */
2691 p_ptr->notice |= (PN_COMBINE | PN_REORDER);
2693 /* Tried the item */
2694 object_tried(o_ptr);
2696 /* An identification was made */
2697 if (ident && !object_aware_p(o_ptr))
2699 object_aware(o_ptr);
2700 gain_exp((lev + (p_ptr->lev >> 1)) / p_ptr->lev);
2704 p_ptr->window |= (PW_INVEN | PW_EQUIP | PW_PLAYER);
2707 /* Hack -- some uses are "free" */
2708 if (!use_charge) return;
2711 /* Use a single charge */
2714 /* XXX Hack -- unstack if necessary */
2715 if ((item >= 0) && (o_ptr->number > 1))
2720 /* Get local object */
2723 /* Obtain a local object */
2724 object_copy(q_ptr, o_ptr);
2726 /* Modify quantity */
2729 /* Restore the charges */
2732 /* Unstack the used item */
2734 p_ptr->total_weight -= q_ptr->weight;
2735 item = inven_carry(q_ptr);
2739 msg_print("¾ó¤ò¤Þ¤È¤á¤Ê¤ª¤·¤¿¡£");
2741 msg_print("You unstack your staff.");
2746 /* Describe charges in the pack */
2749 inven_item_charges(item);
2752 /* Describe charges on the floor */
2755 floor_item_charges(0 - item);
2760 void do_cmd_use_staff(void)
2765 if (p_ptr->special_defense & (KATA_MUSOU | KATA_KOUKIJIN))
2767 set_action(ACTION_NONE);
2770 /* Restrict choices to wands */
2771 item_tester_tval = TV_STAFF;
2775 q = "¤É¤Î¾ó¤ò»È¤¤¤Þ¤¹¤«? ";
2776 s = "»È¤¨¤ë¾ó¤¬¤Ê¤¤¡£";
2778 q = "Use which staff? ";
2779 s = "You have no staff to use.";
2782 if (!get_item(&item, q, s, (USE_INVEN | USE_FLOOR))) return;
2784 do_cmd_use_staff_aux(item);
2788 static int wand_effect(int sval, int dir, bool magic)
2792 /* XXX Hack -- Wand of wonder can do anything before it */
2793 if (sval == SV_WAND_WONDER)
2795 int vir = virtue_number(V_CHANCE);
2796 sval = rand_int(SV_WAND_WONDER);
2800 if (p_ptr->virtues[vir - 1] > 0)
2802 while (randint(300) < p_ptr->virtues[vir - 1]) sval++;
2803 if (sval > SV_WAND_COLD_BALL) sval = rand_int(4) + SV_WAND_ACID_BALL;
2807 while (randint(300) < (0-p_ptr->virtues[vir - 1])) sval--;
2808 if (sval < SV_WAND_HEAL_MONSTER) sval = rand_int(3) + SV_WAND_HEAL_MONSTER;
2811 if (sval < SV_WAND_TELEPORT_AWAY)
2812 chg_virtue(V_CHANCE, 1);
2815 /* Analyze the wand */
2818 case SV_WAND_HEAL_MONSTER:
2820 if (heal_monster(dir, damroll(10, 10))) ident = TRUE;
2824 case SV_WAND_HASTE_MONSTER:
2826 if (speed_monster(dir)) ident = TRUE;
2830 case SV_WAND_CLONE_MONSTER:
2832 if (clone_monster(dir)) ident = TRUE;
2836 case SV_WAND_TELEPORT_AWAY:
2838 if (teleport_monster(dir)) ident = TRUE;
2842 case SV_WAND_DISARMING:
2844 if (disarm_trap(dir)) ident = TRUE;
2848 case SV_WAND_TRAP_DOOR_DEST:
2850 if (destroy_door(dir)) ident = TRUE;
2854 case SV_WAND_STONE_TO_MUD:
2856 if (wall_to_mud(dir)) ident = TRUE;
2863 msg_print("ÀĤ¯µ±¤¯¸÷Àþ¤¬Êü¤¿¤ì¤¿¡£");
2865 msg_print("A line of blue shimmering light appears.");
2868 (void)lite_line(dir);
2873 case SV_WAND_SLEEP_MONSTER:
2875 if (sleep_monster(dir)) ident = TRUE;
2879 case SV_WAND_SLOW_MONSTER:
2881 if (slow_monster(dir)) ident = TRUE;
2885 case SV_WAND_CONFUSE_MONSTER:
2887 if (confuse_monster(dir, p_ptr->lev)) ident = TRUE;
2891 case SV_WAND_FEAR_MONSTER:
2893 if (fear_monster(dir, p_ptr->lev)) ident = TRUE;
2897 case SV_WAND_DRAIN_LIFE:
2899 if (drain_life(dir, 80 + p_ptr->lev)) ident = TRUE;
2903 case SV_WAND_POLYMORPH:
2905 if (poly_monster(dir)) ident = TRUE;
2909 case SV_WAND_STINKING_CLOUD:
2911 fire_ball(GF_POIS, dir, 12 + p_ptr->lev / 4, 2);
2916 case SV_WAND_MAGIC_MISSILE:
2918 fire_bolt_or_beam(20, GF_MISSILE, dir, damroll(2 + p_ptr->lev / 10, 6));
2923 case SV_WAND_ACID_BOLT:
2925 fire_bolt_or_beam(20, GF_ACID, dir, damroll(6 + p_ptr->lev / 7, 8));
2930 case SV_WAND_CHARM_MONSTER:
2932 if (charm_monster(dir, MAX(20, p_ptr->lev)))
2937 case SV_WAND_FIRE_BOLT:
2939 fire_bolt_or_beam(20, GF_FIRE, dir, damroll(7 + p_ptr->lev / 6, 8));
2944 case SV_WAND_COLD_BOLT:
2946 fire_bolt_or_beam(20, GF_COLD, dir, damroll(5 + p_ptr->lev / 8, 8));
2951 case SV_WAND_ACID_BALL:
2953 fire_ball(GF_ACID, dir, 60 + 3 * p_ptr->lev / 4, 2);
2958 case SV_WAND_ELEC_BALL:
2960 fire_ball(GF_ELEC, dir, 40 + 3 * p_ptr->lev / 4, 2);
2965 case SV_WAND_FIRE_BALL:
2967 fire_ball(GF_FIRE, dir, 70 + 3 * p_ptr->lev / 4, 2);
2972 case SV_WAND_COLD_BALL:
2974 fire_ball(GF_COLD, dir, 50 + 3 * p_ptr->lev / 4, 2);
2979 case SV_WAND_WONDER:
2982 msg_print("¤ª¤Ã¤È¡¢Ææ¤ÎËâË¡ËÀ¤ò»ÏÆ°¤µ¤»¤¿¡£");
2984 msg_print("Oops. Wand of wonder activated.");
2990 case SV_WAND_DRAGON_FIRE:
2992 fire_ball(GF_FIRE, dir, 200, -3);
2997 case SV_WAND_DRAGON_COLD:
2999 fire_ball(GF_COLD, dir, 180, -3);
3004 case SV_WAND_DRAGON_BREATH:
3010 fire_ball(GF_ACID, dir, 240, -3);
3016 fire_ball(GF_ELEC, dir, 210, -3);
3022 fire_ball(GF_FIRE, dir, 240, -3);
3028 fire_ball(GF_COLD, dir, 210, -3);
3034 fire_ball(GF_POIS, dir, 180, -3);
3043 // case SV_WAND_ANNIHILATION:
3044 case SV_WAND_DISINTEGRATE:
3046 fire_ball(GF_DISINTEGRATE, dir, 200 + randint(p_ptr->lev * 2), 2);
3051 case SV_WAND_ROCKETS:
3054 msg_print("¥í¥±¥Ã¥È¤òȯ¼Í¤·¤¿¡ª");
3056 msg_print("You launch a rocket!");
3059 fire_rocket(GF_ROCKET, dir, 250 + p_ptr->lev * 3, 2);
3064 case SV_WAND_STRIKING:
3066 fire_bolt(GF_METEOR, dir, damroll(15 + p_ptr->lev / 3, 13));
3071 case SV_WAND_GENOCIDE:
3073 fire_ball_hide(GF_GENOCIDE, dir, magic ? p_ptr->lev + 50 : 250, 0);
3083 * Aim a wand (from the pack or floor).
3085 * Use a single charge from a single item.
3086 * Handle "unstacking" in a logical manner.
3088 * For simplicity, you cannot use a stack of items from the
3089 * ground. This would require too much nasty code.
3091 * There are no wands which can "destroy" themselves, in the inventory
3092 * or on the ground, so we can ignore this possibility. Note that this
3093 * required giving "wand of wonder" the ability to ignore destruction
3094 * by electric balls.
3096 * All wands can be "cancelled" at the "Direction?" prompt for free.
3098 * Note that the basic "bolt" wands do slightly less damage than the
3099 * basic "bolt" rods, but the basic "ball" wands do the same damage
3100 * as the basic "ball" rods.
3102 static void do_cmd_aim_wand_aux(int item)
3104 int lev, ident, chance, dir;
3106 bool old_target_pet = target_pet;
3108 /* Get the item (in the pack) */
3111 o_ptr = &inventory[item];
3114 /* Get the item (on the floor) */
3117 o_ptr = &o_list[0 - item];
3120 /* Mega-Hack -- refuse to aim a pile from the ground */
3121 if ((item < 0) && (o_ptr->number > 1))
3124 msg_print("¤Þ¤º¤ÏËâË¡ËÀ¤ò½¦¤ï¤Ê¤±¤ì¤Ð¡£");
3126 msg_print("You must first pick up the wands.");
3133 /* Allow direction to be cancelled for free */
3134 if (object_aware_p(o_ptr) && (o_ptr->sval == SV_WAND_HEAL_MONSTER
3135 || o_ptr->sval == SV_WAND_HASTE_MONSTER))
3137 if (!get_aim_dir(&dir))
3139 target_pet = old_target_pet;
3142 target_pet = old_target_pet;
3148 lev = get_object_level(o_ptr);
3149 if (lev > 50) lev = 50 + (lev - 50)/2;
3151 /* Base chance of success */
3152 chance = p_ptr->skill_dev;
3154 /* Confusion hurts skill */
3155 if (p_ptr->confused) chance = chance / 2;
3157 /* Hight level objects are harder */
3158 chance = chance - lev;
3160 /* Give everyone a (slight) chance */
3161 if ((chance < USE_DEVICE) && (rand_int(USE_DEVICE - chance + 1) == 0))
3163 chance = USE_DEVICE;
3168 if (flush_failure) flush();
3170 msg_print("»ß¤Þ¤Ã¤¿»þ¤ÎÃæ¤Ç¤Ï¤¦¤Þ¤¯Æ¯¤«¤Ê¤¤¤è¤¦¤À¡£");
3172 msg_print("Nothing happen. Maybe this wand is freezing too.");
3179 /* Roll for usage */
3180 if ((chance < USE_DEVICE) || (randint(chance) < USE_DEVICE) || (p_ptr->pclass == CLASS_BERSERKER))
3182 if (flush_failure) flush();
3184 msg_print("ËâË¡ËÀ¤ò¤¦¤Þ¤¯»È¤¨¤Ê¤«¤Ã¤¿¡£");
3186 msg_print("You failed to use the wand properly.");
3193 /* The wand is already empty! */
3194 if (o_ptr->pval <= 0)
3196 if (flush_failure) flush();
3198 msg_print("¤³¤ÎËâË¡ËÀ¤Ë¤Ï¤â¤¦ËâÎϤ¬»Ä¤Ã¤Æ¤¤¤Ê¤¤¡£");
3200 msg_print("The wand has no charges left.");
3203 o_ptr->ident |= (IDENT_EMPTY);
3205 /* Combine / Reorder the pack (later) */
3206 p_ptr->notice |= (PN_COMBINE | PN_REORDER);
3214 ident = wand_effect(o_ptr->sval, dir, FALSE);
3216 /* Combine / Reorder the pack (later) */
3217 p_ptr->notice |= (PN_COMBINE | PN_REORDER);
3219 if (!(object_aware_p(o_ptr)))
3221 chg_virtue(V_PATIENCE, -1);
3222 chg_virtue(V_CHANCE, 1);
3223 chg_virtue(V_KNOWLEDGE, -1);
3226 /* Mark it as tried */
3227 object_tried(o_ptr);
3229 /* Apply identification */
3230 if (ident && !object_aware_p(o_ptr))
3232 object_aware(o_ptr);
3233 gain_exp((lev + (p_ptr->lev >> 1)) / p_ptr->lev);
3237 p_ptr->window |= (PW_INVEN | PW_EQUIP | PW_PLAYER);
3240 /* Use a single charge */
3243 /* Describe the charges in the pack */
3246 inven_item_charges(item);
3249 /* Describe the charges on the floor */
3252 floor_item_charges(0 - item);
3257 void do_cmd_aim_wand(void)
3262 /* Restrict choices to wands */
3263 item_tester_tval = TV_WAND;
3265 if (p_ptr->special_defense & (KATA_MUSOU | KATA_KOUKIJIN))
3267 set_action(ACTION_NONE);
3272 q = "¤É¤ÎËâË¡ËÀ¤ÇÁÀ¤¤¤Þ¤¹¤«? ";
3273 s = "»È¤¨¤ëËâË¡ËÀ¤¬¤Ê¤¤¡£";
3275 q = "Aim which wand? ";
3276 s = "You have no wand to aim.";
3279 if (!get_item(&item, q, s, (USE_INVEN | USE_FLOOR))) return;
3282 do_cmd_aim_wand_aux(item);
3286 static int rod_effect(int sval, int dir, bool *use_charge, bool magic)
3290 /* Analyze the rod */
3293 case SV_ROD_DETECT_TRAP:
3295 if (detect_traps(DETECT_RAD_DEFAULT)) ident = TRUE;
3299 case SV_ROD_DETECT_DOOR:
3301 if (detect_doors(DETECT_RAD_DEFAULT)) ident = TRUE;
3302 if (detect_stairs(DETECT_RAD_DEFAULT)) ident = TRUE;
3306 case SV_ROD_IDENTIFY:
3309 if (!ident_spell(FALSE)) *use_charge = FALSE;
3315 if (!word_of_recall()) *use_charge = FALSE;
3320 case SV_ROD_ILLUMINATION:
3322 if (lite_area(damroll(2, 8), 2)) ident = TRUE;
3326 case SV_ROD_MAPPING:
3328 map_area(DETECT_RAD_MAP);
3333 case SV_ROD_DETECTION:
3335 detect_all(DETECT_RAD_DEFAULT);
3340 case SV_ROD_PROBING:
3349 if (set_blind(0)) ident = TRUE;
3350 if (set_poisoned(0)) ident = TRUE;
3351 if (set_confused(0)) ident = TRUE;
3352 if (set_stun(0)) ident = TRUE;
3353 if (set_cut(0)) ident = TRUE;
3354 if (set_image(0)) ident = TRUE;
3355 if (set_shero(0,TRUE)) ident = TRUE;
3359 case SV_ROD_HEALING:
3361 if (hp_player(500)) ident = TRUE;
3362 if (set_stun(0)) ident = TRUE;
3363 if (set_cut(0)) ident = TRUE;
3364 if (set_shero(0,TRUE)) ident = TRUE;
3368 case SV_ROD_RESTORATION:
3370 if (restore_level()) ident = TRUE;
3371 if (do_res_stat(A_STR)) ident = TRUE;
3372 if (do_res_stat(A_INT)) ident = TRUE;
3373 if (do_res_stat(A_WIS)) ident = TRUE;
3374 if (do_res_stat(A_DEX)) ident = TRUE;
3375 if (do_res_stat(A_CON)) ident = TRUE;
3376 if (do_res_stat(A_CHR)) ident = TRUE;
3382 if (set_fast(randint(30) + 15, FALSE)) ident = TRUE;
3386 case SV_ROD_PESTICIDE:
3388 fire_ball(GF_POIS, dir, 10, 3);
3393 case SV_ROD_TELEPORT_AWAY:
3395 if (teleport_monster(dir)) ident = TRUE;
3399 case SV_ROD_DISARMING:
3401 if (disarm_trap(dir)) ident = TRUE;
3408 msg_print("ÀĤ¯µ±¤¯¸÷Àþ¤¬Êü¤¿¤ì¤¿¡£");
3410 msg_print("A line of blue shimmering light appears.");
3413 (void)lite_line(dir);
3418 case SV_ROD_SLEEP_MONSTER:
3420 if (sleep_monster(dir)) ident = TRUE;
3424 case SV_ROD_SLOW_MONSTER:
3426 if (slow_monster(dir)) ident = TRUE;
3430 case SV_ROD_DRAIN_LIFE:
3432 if (drain_life(dir, 70 + 3 * p_ptr->lev / 2)) ident = TRUE;
3436 case SV_ROD_POLYMORPH:
3438 if (poly_monster(dir)) ident = TRUE;
3442 case SV_ROD_ACID_BOLT:
3444 fire_bolt_or_beam(10, GF_ACID, dir, damroll(6 + p_ptr->lev / 7, 8));
3449 case SV_ROD_ELEC_BOLT:
3451 fire_bolt_or_beam(10, GF_ELEC, dir, damroll(4 + p_ptr->lev / 9, 8));
3456 case SV_ROD_FIRE_BOLT:
3458 fire_bolt_or_beam(10, GF_FIRE, dir, damroll(7 + p_ptr->lev / 6, 8));
3463 case SV_ROD_COLD_BOLT:
3465 fire_bolt_or_beam(10, GF_COLD, dir, damroll(5 + p_ptr->lev / 8, 8));
3470 case SV_ROD_ACID_BALL:
3472 fire_ball(GF_ACID, dir, 60 + p_ptr->lev, 2);
3477 case SV_ROD_ELEC_BALL:
3479 fire_ball(GF_ELEC, dir, 40 + p_ptr->lev, 2);
3484 case SV_ROD_FIRE_BALL:
3486 fire_ball(GF_FIRE, dir, 70 + p_ptr->lev, 2);
3491 case SV_ROD_COLD_BALL:
3493 fire_ball(GF_COLD, dir, 50 + p_ptr->lev, 2);
3505 case SV_ROD_STONE_TO_MUD:
3507 if (wall_to_mud(dir)) ident = TRUE;
3511 case SV_ROD_AGGRAVATE:
3513 aggravate_monsters(0);
3522 * Activate (zap) a Rod
3524 * Unstack fully charged rods as needed.
3526 * Hack -- rods of perception/genocide can be "cancelled"
3527 * All rods can be cancelled at the "Direction?" prompt
3529 * pvals are defined for each rod in k_info. -LM-
3531 static void do_cmd_zap_rod_aux(int item)
3533 int ident, chance, dir, lev, fail;
3537 /* Hack -- let perception get aborted */
3538 bool use_charge = TRUE;
3542 /* Get the item (in the pack) */
3545 o_ptr = &inventory[item];
3548 /* Get the item (on the floor) */
3551 o_ptr = &o_list[0 - item];
3555 /* Mega-Hack -- refuse to zap a pile from the ground */
3556 if ((item < 0) && (o_ptr->number > 1))
3559 msg_print("¤Þ¤º¤Ï¥í¥Ã¥É¤ò½¦¤ï¤Ê¤±¤ì¤Ð¡£");
3561 msg_print("You must first pick up the rods.");
3568 /* Get a direction (unless KNOWN not to need it) */
3569 if (((o_ptr->sval >= SV_ROD_MIN_DIRECTION) && (o_ptr->sval != SV_ROD_HAVOC) && (o_ptr->sval != SV_ROD_AGGRAVATE)) ||
3570 !object_aware_p(o_ptr))
3572 /* Get a direction, allow cancel */
3573 if (!get_aim_dir(&dir)) return;
3580 /* Extract the item level */
3581 lev = get_object_level(o_ptr);
3583 /* Base chance of success */
3584 chance = p_ptr->skill_dev;
3586 /* Confusion hurts skill */
3587 if (p_ptr->confused) chance = chance / 2;
3590 if (chance > fail) fail -= (chance - fail)*2;
3591 else chance -= (fail - chance)*2;
3592 if (fail < USE_DEVICE) fail = USE_DEVICE;
3593 if (chance < USE_DEVICE) chance = USE_DEVICE;
3597 if (flush_failure) flush();
3599 msg_print("»ß¤Þ¤Ã¤¿»þ¤ÎÃæ¤Ç¤Ï¤¦¤Þ¤¯Æ¯¤«¤Ê¤¤¤è¤¦¤À¡£");
3601 msg_print("Nothing happen. Maybe this rod is freezing too.");
3608 if (p_ptr->pclass == CLASS_BERSERKER) success = FALSE;
3609 else if (chance > fail)
3611 if (rand_int(chance*2) < fail) success = FALSE;
3612 else success = TRUE;
3616 if (rand_int(fail*2) < chance) success = TRUE;
3617 else success = FALSE;
3620 /* Roll for usage */
3623 if (flush_failure) flush();
3625 msg_print("¤¦¤Þ¤¯¥í¥Ã¥É¤ò»È¤¨¤Ê¤«¤Ã¤¿¡£");
3627 msg_print("You failed to use the rod properly.");
3634 k_ptr = &k_info[o_ptr->k_idx];
3636 /* A single rod is still charging */
3637 if ((o_ptr->number == 1) && (o_ptr->timeout))
3639 if (flush_failure) flush();
3641 msg_print("¤³¤Î¥í¥Ã¥É¤Ï¤Þ¤ÀËâÎϤò½¼Å¶¤·¤Æ¤¤¤ëºÇÃæ¤À¡£");
3643 msg_print("The rod is still charging.");
3648 /* A stack of rods lacks enough energy. */
3649 else if ((o_ptr->number > 1) && (o_ptr->timeout > k_ptr->pval * (o_ptr->number - 1)))
3651 if (flush_failure) flush();
3653 msg_print("¤½¤Î¥í¥Ã¥É¤Ï¤Þ¤À½¼Å¶Ãæ¤Ç¤¹¡£");
3655 msg_print("The rods are all still charging.");
3664 ident = rod_effect(o_ptr->sval, dir, &use_charge, FALSE);
3666 /* Increase the timeout by the rod kind's pval. -LM- */
3667 if (use_charge) o_ptr->timeout += k_ptr->pval;
3669 /* Combine / Reorder the pack (later) */
3670 p_ptr->notice |= (PN_COMBINE | PN_REORDER);
3672 if (!(object_aware_p(o_ptr)))
3674 chg_virtue(V_PATIENCE, -1);
3675 chg_virtue(V_CHANCE, 1);
3676 chg_virtue(V_KNOWLEDGE, -1);
3679 /* Tried the object */
3680 object_tried(o_ptr);
3682 /* Successfully determined the object function */
3683 if (ident && !object_aware_p(o_ptr))
3685 object_aware(o_ptr);
3686 gain_exp((lev + (p_ptr->lev >> 1)) / p_ptr->lev);
3690 p_ptr->window |= (PW_INVEN | PW_EQUIP | PW_PLAYER);
3694 void do_cmd_zap_rod(void)
3699 if (p_ptr->special_defense & (KATA_MUSOU | KATA_KOUKIJIN))
3701 set_action(ACTION_NONE);
3704 /* Restrict choices to rods */
3705 item_tester_tval = TV_ROD;
3709 q = "¤É¤Î¥í¥Ã¥É¤ò¿¶¤ê¤Þ¤¹¤«? ";
3710 s = "»È¤¨¤ë¥í¥Ã¥É¤¬¤Ê¤¤¡£";
3712 q = "Zap which rod? ";
3713 s = "You have no rod to zap.";
3716 if (!get_item(&item, q, s, (USE_INVEN | USE_FLOOR))) return;
3719 do_cmd_zap_rod_aux(item);
3724 * Hook to determine if an object is activatable
3726 static bool item_tester_hook_activate(object_type *o_ptr)
3731 if (!object_known_p(o_ptr)) return (FALSE);
3733 /* Extract the flags */
3734 object_flags(o_ptr, &f1, &f2, &f3);
3736 /* Check activation flag */
3737 if (f3 & (TR3_ACTIVATE)) return (TRUE);
3739 if ((o_ptr->tval > TV_CAPTURE) && o_ptr->xtra3)
3741 switch(o_ptr->xtra3)
3742 case ESSENCE_TMP_RES_ACID:
3743 case ESSENCE_TMP_RES_ELEC:
3744 case ESSENCE_TMP_RES_FIRE:
3745 case ESSENCE_TMP_RES_COLD:
3746 case ESSENCE_EARTHQUAKE:
3756 * Hack -- activate the ring of power
3758 void ring_of_power(int dir)
3760 /* Pick a random effect */
3761 switch (randint(10))
3768 msg_print("¤¢¤Ê¤¿¤Ï°À¤Î¥ª¡¼¥é¤ËÊñ¤ß¹þ¤Þ¤ì¤¿¡£");
3770 msg_print("You are surrounded by a malignant aura.");
3775 /* Decrease all stats (permanently) */
3776 (void)dec_stat(A_STR, 50, TRUE);
3777 (void)dec_stat(A_INT, 50, TRUE);
3778 (void)dec_stat(A_WIS, 50, TRUE);
3779 (void)dec_stat(A_DEX, 50, TRUE);
3780 (void)dec_stat(A_CON, 50, TRUE);
3781 (void)dec_stat(A_CHR, 50, TRUE);
3783 /* Lose some experience (permanently) */
3784 p_ptr->exp -= (p_ptr->exp / 4);
3785 p_ptr->max_exp -= (p_ptr->exp / 4);
3795 msg_print("¤¢¤Ê¤¿¤Ï¶¯ÎϤʥª¡¼¥é¤ËÊñ¤ß¹þ¤Þ¤ì¤¿¡£");
3797 msg_print("You are surrounded by a powerful aura.");
3801 /* Dispel monsters */
3802 dispel_monsters(1000);
3812 fire_ball(GF_MANA, dir, 600, 3);
3823 fire_bolt(GF_MANA, dir, 500);
3831 static bool ang_sort_comp_pet(vptr u, vptr v, int a, int b)
3833 u16b *who = (u16b*)(u);
3838 monster_type *m_ptr1 = &m_list[w1];
3839 monster_type *m_ptr2 = &m_list[w2];
3840 monster_race *r_ptr1 = &r_info[m_ptr1->r_idx];
3841 monster_race *r_ptr2 = &r_info[m_ptr2->r_idx];
3843 if (m_ptr1->nickname && !m_ptr2->nickname) return TRUE;
3844 if (m_ptr2->nickname && !m_ptr1->nickname) return FALSE;
3846 if ((r_ptr1->flags1 & RF1_UNIQUE) && !(r_ptr2->flags1 & RF1_UNIQUE)) return TRUE;
3847 if ((r_ptr2->flags1 & RF1_UNIQUE) && !(r_ptr1->flags1 & RF1_UNIQUE)) return FALSE;
3849 if (r_ptr1->level > r_ptr2->level) return TRUE;
3850 if (r_ptr2->level > r_ptr1->level) return FALSE;
3852 if (m_ptr1->hp > m_ptr2->hp) return TRUE;
3853 if (m_ptr2->hp > m_ptr1->hp) return FALSE;
3859 * Activate a wielded object. Wielded objects never stack.
3860 * And even if they did, activatable objects never stack.
3862 * Currently, only (some) artifacts, and Dragon Scale Mail, can be activated.
3863 * But one could, for example, easily make an activatable "Ring of Plasma".
3865 * Note that it always takes a turn to activate an artifact, even if
3866 * the user hits "escape" at the "direction" prompt.
3868 static void do_cmd_activate_aux(int item)
3870 int k, dir, lev, chance, fail;
3875 /* Get the item (in the pack) */
3878 o_ptr = &inventory[item];
3881 /* Get the item (on the floor) */
3884 o_ptr = &o_list[0 - item];
3890 /* Extract the item level */
3891 lev = get_object_level(o_ptr);
3893 /* Hack -- use artifact level instead */
3894 if (artifact_p(o_ptr)) lev = a_info[o_ptr->name1].level;
3895 else if (((o_ptr->tval == TV_RING) || (o_ptr->tval == TV_AMULET)) && o_ptr->name2) lev = e_info[o_ptr->name2].level;
3897 /* Base chance of success */
3898 chance = p_ptr->skill_dev;
3900 /* Confusion hurts skill */
3901 if (p_ptr->confused) chance = chance / 2;
3904 if (chance > fail) fail -= (chance - fail)*2;
3905 else chance -= (fail - chance)*2;
3906 if (fail < USE_DEVICE) fail = USE_DEVICE;
3907 if (chance < USE_DEVICE) chance = USE_DEVICE;
3911 if (flush_failure) flush();
3913 msg_print("»ß¤Þ¤Ã¤¿»þ¤ÎÃæ¤Ç¤Ï¤¦¤Þ¤¯Æ¯¤«¤Ê¤¤¤è¤¦¤À¡£");
3915 msg_print("It shows no reaction.");
3922 if (p_ptr->pclass == CLASS_BERSERKER) success = FALSE;
3923 else if (chance > fail)
3925 if (rand_int(chance*2) < fail) success = FALSE;
3926 else success = TRUE;
3930 if (rand_int(fail*2) < chance) success = TRUE;
3931 else success = FALSE;
3934 /* Roll for usage */
3937 if (flush_failure) flush();
3939 msg_print("¤¦¤Þ¤¯»ÏÆ°¤µ¤»¤ë¤³¤È¤¬¤Ç¤¤Ê¤«¤Ã¤¿¡£");
3941 msg_print("You failed to activate it properly.");
3948 /* Check the recharge */
3952 msg_print("¤½¤ì¤ÏÈù¤«¤Ë²»¤òΩ¤Æ¡¢µ±¤¡¢¾Ã¤¨¤¿...");
3954 msg_print("It whines, glows and fades...");
3961 /* Activate the artifact */
3963 msg_print("»ÏÆ°¤µ¤»¤¿...");
3965 msg_print("You activate it...");
3973 if (o_ptr->art_name && o_ptr->xtra2)
3975 (void)activate_random_artifact(o_ptr);
3978 p_ptr->window |= (PW_INVEN | PW_EQUIP);
3985 else if (o_ptr->name1)
3988 switch (o_ptr->name1)
3993 msg_print("ààÎÜÉÓ¤«¤éÀ¡¤ó¤À¸÷¤¬¤¢¤Õ¤ì½Ð¤¿...");
3995 msg_print("The phial wells with clear light...");
3998 lite_area(damroll(2, 15), 3);
3999 o_ptr->timeout = rand_int(10) + 10;
4006 msg_print("À±¤¬âÁ¤·¤¯µ±¤¤¤¿...");
4008 msg_print("The star shines brightly...");
4011 map_area(DETECT_RAD_MAP);
4012 lite_area(damroll(2, 15), 3);
4013 o_ptr->timeout = rand_int(50) + 50;
4020 msg_print("¤½¤ÎÊõÀФÏÀÖ¤¯ÌÀ¤ë¤¯¸÷¤Ã¤¿¡ª");
4022 msg_print("The Jewel flashes bright red!");
4025 chg_virtue(V_KNOWLEDGE, 1);
4026 chg_virtue(V_ENLIGHTEN, 1);
4027 wiz_lite(FALSE, FALSE);
4029 msg_print("¤½¤ÎÊõÀФϤ¢¤Ê¤¿¤ÎÂÎÎϤòÃ¥¤Ã¤¿...");
4030 take_hit(DAMAGE_LOSELIFE, damroll(3,8), "¿³È½¤ÎÊõÀÐ", -1);
4032 msg_print("The Jewel drains your vitality...");
4033 take_hit(DAMAGE_LOSELIFE, damroll(3, 8), "the Jewel of Judgement", -1);
4036 (void)detect_traps(DETECT_RAD_DEFAULT);
4037 (void)detect_doors(DETECT_RAD_DEFAULT);
4038 (void)detect_stairs(DETECT_RAD_DEFAULT);
4041 if (get_check("µ¢´Ô¤ÎÎϤò»È¤¤¤Þ¤¹¤«¡©"))
4043 if (get_check("Activate recall? "))
4047 (void)word_of_recall();
4050 o_ptr->timeout = rand_int(20) + 20;
4057 msg_print("¥¢¥ß¥å¥ì¥Ã¥È¤«¤é±Ô¤¤²»¤¬Î®¤ì½Ð¤¿...");
4059 msg_print("The amulet lets out a shrill wail...");
4063 (void)set_protevil(randint(25) + k, FALSE);
4064 o_ptr->timeout = rand_int(225) + 225;
4071 msg_print("¥¢¥ß¥å¥ì¥Ã¥È¤ÏÊÕ¤ê¤òÁ±¤Î¥ª¡¼¥é¤ÇËþ¤¿¤·¤¿...");
4073 msg_print("The amulet floods the area with goodness...");
4076 dispel_evil(p_ptr->lev * 5);
4077 o_ptr->timeout = rand_int(200) + 200;
4084 msg_print("¶À¤ÏÊÕ¤ê¤òÁ±¤Î¥ª¡¼¥é¤ÇËþ¤¿¤·¤¿...");
4086 msg_print("The mirror floods the area with goodness...");
4089 dispel_evil(p_ptr->lev * 5);
4090 o_ptr->timeout = rand_int(200) + 200;
4097 msg_print("¤¢¤Ê¤¿¤Ï¥Õ¥é¥¥¢¤ËŨ¤òÄù¤á»¦¤¹¤è¤¦Ì¿¤¸¤¿¡£");
4099 msg_print("You order Frakir to strangle your opponent.");
4102 if (!get_aim_dir(&dir)) return;
4103 if (drain_life(dir, 100))
4104 o_ptr->timeout = rand_int(100) + 100;
4111 msg_print("»ØÎؤÏÌÀ¤ë¤¯µ±¤¤¤¿...");
4113 msg_print("The ring glows brightly...");
4116 (void)set_fast(randint(75) + 75, FALSE);
4117 o_ptr->timeout = rand_int(150) + 150;
4124 msg_print("»ØÎؤϿ¼¹È¤Ëµ±¤¤¤¿...");
4126 msg_print("The ring glows deep red...");
4129 if (!get_aim_dir(&dir)) return;
4130 fire_ball(GF_FIRE, dir, 300, 3);
4131 o_ptr->timeout = rand_int(225) + 225;
4138 msg_print("»ØÎؤÏÇò¤¯ÌÀ¤ë¤¯µ±¤¤¤¿...");
4140 msg_print("The ring glows bright white...");
4143 if (!get_aim_dir(&dir)) return;
4144 fire_ball(GF_COLD, dir, 400, 3);
4145 o_ptr->timeout = rand_int(325) + 325;
4153 msg_print("»ØÎؤϿ¼¤¤¥Ö¥ë¡¼¤Ëµ±¤¤¤¿...");
4155 msg_print("The ring glows deep blue...");
4158 if (!get_aim_dir(&dir)) return;
4159 fire_ball(GF_ELEC, dir, 500, 3);
4160 o_ptr->timeout = rand_int(425) + 425;
4168 msg_print("»ØÎؤϼ¿¹õ¤Ëµ±¤¤¤¿...");
4170 msg_print("The ring glows intensely black...");
4173 if (!get_aim_dir(&dir)) return;
4175 o_ptr->timeout = rand_int(450) + 450;
4181 int num = damroll(5, 3);
4186 msg_print("³»¤¬°ðºÊ¤Çʤ¤ï¤ì¤¿...");
4188 msg_print("Your armor is surrounded by lightning...");
4192 for (k = 0; k < num; k++)
4198 scatter(&y, &x, py, px, 4, 0);
4200 if (!cave_floor_bold(y, x)) continue;
4202 if ((y != py) || (x != px)) break;
4205 project(0, 3, y, x, 150, GF_ELEC,
4206 (PROJECT_THRU | PROJECT_STOP | PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL), -1);
4209 o_ptr->timeout = 1000;
4213 case ART_BLADETURNER:
4215 if (!get_aim_dir(&dir)) return;
4217 msg_print("¤¢¤Ê¤¿¤Ï¥¨¥ì¥á¥ó¥È¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£");
4219 msg_print("You breathe the elements.");
4222 fire_ball(GF_MISSILE, dir, 300, 4);
4224 msg_print("¥¢¡¼¥Þ¡¼¤¬ÍÍ¡¹¤Ê¿§¤Ëµ±¤¤¤¿...");
4226 msg_print("Your armor glows many colours...");
4229 (void)set_afraid(0);
4230 (void)set_hero(randint(50) + 50, FALSE);
4231 (void)hp_player(10);
4232 (void)set_blessed(randint(50) + 50, FALSE);
4233 (void)set_oppose_acid(randint(50) + 50, FALSE);
4234 (void)set_oppose_elec(randint(50) + 50, FALSE);
4235 (void)set_oppose_fire(randint(50) + 50, FALSE);
4236 (void)set_oppose_cold(randint(50) + 50, FALSE);
4237 (void)set_oppose_pois(randint(50) + 50, FALSE);
4238 o_ptr->timeout = 400;
4242 case ART_SOULKEEPER:
4245 msg_print("¥¢¡¼¥Þ¡¼¤¬Çò¤¯ÌÀ¤ë¤¯µ±¤¤¤¿...");
4246 msg_print("¤Ò¤¸¤ç¤¦¤Ëµ¤Ê¬¤¬¤è¤¤...");
4248 msg_print("Your armor glows a bright white...");
4249 msg_print("You feel much better...");
4252 (void)hp_player(1000);
4254 o_ptr->timeout = 888;
4258 case ART_BELEGENNON:
4261 msg_print("Å·¹ñ¤Î²Î¤¬Ê¹¤³¤¨¤ë...");
4263 msg_print("A heavenly choir sings...");
4266 (void)set_poisoned(0);
4269 (void)set_confused(0);
4271 (void)set_hero(randint(25) + 25, FALSE);
4272 (void)hp_player(777);
4273 o_ptr->timeout = 300;
4280 msg_print("¥¢¡¼¥Þ¡¼¤¬¿¼¤¤¥Ö¥ë¡¼¤Ëµ±¤¤¤¿...");
4282 msg_print("Your armor glows deep blue...");
4285 (void)symbol_genocide(200, TRUE);
4286 o_ptr->timeout = 500;
4293 msg_print("¥¢¡¼¥Þ¡¼¤¬ÀÖ¤¯ÌÀ¤ë¤¯µ±¤¤¤¿...");
4295 msg_print("Your armor glows bright red...");
4298 destroy_doors_touch();
4299 o_ptr->timeout = 10;
4307 turn_monsters(40 + p_ptr->lev);
4308 o_ptr->timeout = 3 * (p_ptr->lev + 10);
4313 case ART_HOLHENNETH:
4316 msg_print("¥Ø¥ë¥á¥Ã¥È¤¬Çò¤¯ÌÀ¤ë¤¯µ±¤¤¤¿...");
4317 msg_print("¿´¤Ë¥¤¥á¡¼¥¸¤¬É⤫¤ó¤Ç¤¤¿...");
4319 msg_print("Your helm glows bright white...");
4320 msg_print("An image forms in your mind...");
4323 detect_all(DETECT_RAD_DEFAULT);
4324 o_ptr->timeout = rand_int(55) + 55;
4331 msg_print("²¦´§¤¬¿¼¤¤¥Ö¥ë¡¼¤Ëµ±¤¤¤¿...");
4332 msg_print("ÂÎÆâ¤ËÃȤ«¤¤¸ÝÆ°¤¬´¶¤¸¤é¤ì¤ë...");
4334 msg_print("Your crown glows deep blue...");
4335 msg_print("You feel a warm tingling inside...");
4338 (void)hp_player(700);
4340 o_ptr->timeout = 250;
4348 msg_format("%s¤¬ÍÍ¡¹¤Ê¿§¤Ëµ±¤¤¤¿...", o_ptr->name1 == ART_COLLUIN ? "¥¯¥í¡¼¥¯" : "³»");
4350 msg_format("Your cloak glows many colours...");
4353 (void)set_oppose_acid(randint(20) + 20, FALSE);
4354 (void)set_oppose_elec(randint(20) + 20, FALSE);
4355 (void)set_oppose_fire(randint(20) + 20, FALSE);
4356 (void)set_oppose_cold(randint(20) + 20, FALSE);
4357 (void)set_oppose_pois(randint(20) + 20, FALSE);
4358 o_ptr->timeout = 111;
4362 case ART_HOLCOLLETH:
4365 msg_print("¥¯¥í¡¼¥¯¤¬¿¼¤¤¥Ö¥ë¡¼¤Ëµ±¤¤¤¿...");
4367 msg_print("Your cloak glows deep blue...");
4370 sleep_monsters_touch();
4371 o_ptr->timeout = 55;
4378 msg_print("¥¯¥í¡¼¥¯¤¬²«¿§¤¯ÌÀ¤ë¤¯µ±¤¤¤¿...");
4380 msg_print("Your cloak glows bright yellow...");
4384 o_ptr->timeout = 70;
4391 msg_print("¥¯¥í¡¼¥¯¤¬ÊÕ¤ê¤Î¶õ´Ö¤ò¤æ¤¬¤Þ¤»¤¿...");
4393 msg_print("Your cloak twists space around you...");
4396 teleport_player(100);
4397 o_ptr->timeout = 45;
4404 msg_print("¥¯¥í¡¼¥¯¤¬¿¼¹È¤Ëµ±¤¤¤¿...");
4406 msg_print("Your cloak glows a deep red...");
4410 o_ptr->timeout = 450;
4414 case ART_CAMMITHRIM:
4417 msg_print("¥°¥í¡¼¥Ö¤¬âÁ¤·¤¤¤¯¤é¤¤¤ËÌÀ¤ë¤¯µ±¤¤¤¿...");
4419 msg_print("Your gloves glow extremely brightly...");
4422 if (!get_aim_dir(&dir)) return;
4423 fire_bolt(GF_MISSILE, dir, damroll(2, 6));
4431 msg_print("¥¬¥ó¥È¥ì¥Ã¥È¤¬±ê¤Ëʤ¤ï¤ì¤¿...");
4433 msg_print("Your gauntlets are covered in fire...");
4436 if (!get_aim_dir(&dir)) return;
4437 fire_bolt(GF_FIRE, dir, damroll(9, 8));
4438 o_ptr->timeout = rand_int(8) + 8;
4442 case ART_PAURNIMMEN:
4445 msg_print("¥¬¥ó¥È¥ì¥Ã¥È¤¬Î䵤¤Ëʤ¤ï¤ì¤¿...");
4447 msg_print("Your gauntlets are covered in frost...");
4450 if (!get_aim_dir(&dir)) return;
4451 fire_bolt(GF_COLD, dir, damroll(6, 8));
4452 o_ptr->timeout = rand_int(7) + 7;
4459 msg_print("¥¬¥ó¥È¥ì¥Ã¥È¤¬²Ð²Ö¤Ëʤ¤ï¤ì¤¿...");
4461 msg_print("Your gauntlets are covered in sparks...");
4464 if (!get_aim_dir(&dir)) return;
4465 fire_bolt(GF_ELEC, dir, damroll(4, 8));
4466 o_ptr->timeout = rand_int(5) + 5;
4473 msg_print("¥¬¥ó¥È¥ì¥Ã¥È¤¬»À¤Ëʤ¤ï¤ì¤¿...");
4475 msg_print("Your gauntlets are covered in acid...");
4478 if (!get_aim_dir(&dir)) return;
4479 fire_bolt(GF_ACID, dir, damroll(5, 8));
4480 o_ptr->timeout = rand_int(6) + 6;
4487 msg_print("¥»¥¹¥¿¥¹¤ËËâË¡¤Î¥È¥²¤¬¸½¤ì¤¿...");
4489 msg_print("Your cesti grows magical spikes...");
4492 if (!get_aim_dir(&dir)) return;
4493 fire_bolt(GF_ARROW, dir, 150);
4494 o_ptr->timeout = rand_int(90) + 90;
4501 msg_print("¥Ö¡¼¥Ä¤¬¥°¥ê¡¼¥ó¤ËÌÀ¤ë¤¯µ±¤¤¤¿...");
4503 msg_print("Your boots glow bright green...");
4506 (void)set_fast(randint(20) + 20, FALSE);
4507 o_ptr->timeout = 200;
4514 msg_print("¥Ö¡¼¥Ä¤¬¿¼¤¤¥Ö¥ë¡¼¤Ëµ±¤¤¤¿...");
4516 msg_print("Your boots glow deep blue...");
4519 (void)set_afraid(0);
4520 (void)set_poisoned(0);
4528 msg_print("¥À¥¬¡¼¤¬±ê¤Ëʤ¤ï¤ì¤¿...");
4530 msg_print("Your dagger is covered in fire...");
4533 if (!get_aim_dir(&dir)) return;
4534 fire_bolt(GF_FIRE, dir, damroll(9, 8));
4535 o_ptr->timeout = rand_int(8) + 8;
4542 msg_print("¥À¥¬¡¼¤¬Î䵤¤Ëʤ¤ï¤ì¤¿...");
4544 msg_print("Your dagger is covered in frost...");
4547 if (!get_aim_dir(&dir)) return;
4548 fire_bolt(GF_COLD, dir, damroll(6, 8));
4549 o_ptr->timeout = rand_int(7) + 7;
4556 msg_print("¥À¥¬¡¼¤¬²Ð²Ö¤Ëʤ¤ï¤ì¤¿...");
4558 msg_print("Your dagger is covered in sparks...");
4561 if (!get_aim_dir(&dir)) return;
4562 fire_bolt(GF_ELEC, dir, damroll(4, 8));
4563 o_ptr->timeout = rand_int(5) + 5;
4570 msg_print("¥À¥¬¡¼¤¬¿¼¤¤Îп§¤Ë¸ÝÆ°¤·¤Æ¤¤¤ë...");
4572 msg_print("Your dagger throbs deep green...");
4575 if (!get_aim_dir(&dir)) return;
4576 fire_ball(GF_POIS, dir, 12, 3);
4577 o_ptr->timeout = rand_int(4) + 4;
4584 msg_print("Ì·¤¬¿¼¤¤ÀÄ¿§¤Ë¸ÝÆ°¤·¤Æ¤¤¤ë...");
4586 msg_print("Your dagger throbs deep blue...");
4589 if (!get_aim_dir(&dir)) return;
4590 fire_ball(GF_WATER, dir, 200, 3);
4591 o_ptr->timeout = 250;
4598 msg_print("¥À¥¬¡¼¤¬Î䵤¤Ëʤ¤ï¤ì¤¿...");
4600 msg_print("Your dagger is covered in frost...");
4603 if (!get_aim_dir(&dir)) return;
4604 fire_ball(GF_COLD, dir, 48, 2);
4605 o_ptr->timeout = rand_int(5) + 5;
4612 switch (randint(13))
4614 case 1: case 2: case 3: case 4: case 5:
4615 teleport_player(10);
4617 case 6: case 7: case 8: case 9: case 10:
4618 teleport_player(222);
4621 (void)stair_creation();
4625 if (get_check("¤³¤Î³¬¤òµî¤ê¤Þ¤¹¤«¡©"))
4627 if (get_check("Leave this level? "))
4631 if (autosave_l) do_cmd_save_game(TRUE);
4634 p_ptr->leaving = TRUE;
4637 o_ptr->timeout = 35;
4643 teleport_player(222);
4644 o_ptr->timeout = 25;
4651 msg_print("¥½¡¼¥É¤¬ÀĤ¯·ã¤·¤¯µ±¤¤¤¿...");
4653 msg_print("Your sword glows an intense blue...");
4656 if (!get_aim_dir(&dir)) return;
4657 fire_ball(GF_COLD, dir, 100, 2);
4658 o_ptr->timeout = 200;
4665 msg_print("¶Ç¤Î»ÕÃĤò¾¤´¤·¤¿¡£");
4667 msg_print("You summon the Legion of the Dawn.");
4670 (void)summon_specific(-1, py, px, dun_level, SUMMON_DAWN, TRUE, TRUE, TRUE, FALSE, FALSE);
4671 o_ptr->timeout = 500 + randint(500);
4678 msg_print("¥½¡¼¥É¤¬ÀÖ¤¯·ã¤·¤¯µ±¤¤¤¿...");
4680 msg_print("Your sword glows an intense red...");
4683 if (!get_aim_dir(&dir)) return;
4684 fire_ball(GF_FIRE, dir, 72, 2);
4685 o_ptr->timeout = 400;
4692 msg_print("¥¢¥Ã¥¯¥¹¤Î¿Ï¤¬¹õ¤¯µ±¤¤¤¿...");
4694 msg_print("Your axe blade glows black...");
4697 if (!get_aim_dir(&dir)) return;
4698 drain_life(dir, 120);
4699 o_ptr->timeout = 400;
4706 msg_print("¤¢¤Ê¤¿¤ÎÁä¤ÏÅŵ¤¤Ç¥¹¥Ñ¡¼¥¯¤·¤Æ¤¤¤ë...");
4708 msg_print("Your spear crackles with electricity...");
4711 if (!get_aim_dir(&dir)) return;
4712 fire_ball(GF_ELEC, dir, 100, 3);
4713 o_ptr->timeout = 200;
4720 msg_print("¥¹¥Ô¥¢¤¬Çò¤¯ÌÀ¤ë¤¯µ±¤¤¤¿...");
4722 msg_print("Your spear glows a bright white...");
4725 if (!get_aim_dir(&dir)) return;
4726 fire_ball(GF_COLD, dir, 100, 3);
4727 o_ptr->timeout = 200;
4734 msg_print("¥¹¥Ô¥¢¤¬¸ÝÆ°¤·¤¿...");
4736 msg_print("Your spear pulsates...");
4739 if (!get_aim_dir(&dir)) return;
4748 msg_print("¤Ä¤ë¤Ï¤·¤¬¸ÝÆ°¤·¤¿...");
4750 msg_print("Your mattock pulsates...");
4753 if (!get_aim_dir(&dir)) return;
4762 msg_print("¥¢¥Ã¥¯¥¹¤«¤é¤Ò¤É¤¯±Ô¤¤²»¤¬Î®¤ì½Ð¤¿...");
4764 msg_print("Your axe lets out a long, shrill note...");
4767 (void)mass_genocide(200, TRUE);
4768 o_ptr->timeout = 1000;
4775 msg_print("¥Ð¥È¥ë¡¦¥¢¥Ã¥¯¥¹¤¬¿¼»ç¤Î¸÷¤òÊü¼Í¤·¤¿...");
4777 msg_print("Your battle axe radiates deep purple...");
4780 hp_player(damroll(4, 8));
4781 (void)set_cut((p_ptr->cut / 2) - 50);
4782 o_ptr->timeout = rand_int(3) + 3;
4789 msg_print("¥È¥é¥¤¥Ç¥ó¥È¤¬¿¼¹È¤Ëµ±¤¤¤¿...");
4791 msg_print("Your trident glows deep red...");
4794 if (!get_aim_dir(&dir)) return;
4795 teleport_monster(dir);
4796 o_ptr->timeout = 150;
4803 msg_print("Âç³ù¤¬½À¤é¤«¤¯Çò¤¯µ±¤¤¤¿...");
4805 msg_print("Your scythe glows soft white...");
4807 if (!word_of_recall()) return;
4808 o_ptr->timeout = 200;
4815 msg_print("¸û¶Ì¤¬½À¤é¤«¤¯Çò¤¯µ±¤¤¤¿...");
4817 msg_print("Your scythe glows soft white...");
4819 if (!word_of_recall()) return;
4820 o_ptr->timeout = 200;
4827 msg_print("¥Õ¥ì¥¤¥ë¤¬ÍÍ¡¹¤Ê¿§¤Î²Ð²Ö¤òȯ¤·¤¿...");
4829 msg_print("Your flail glows in scintillating colours...");
4832 if (!get_aim_dir(&dir)) return;
4833 confuse_monster(dir, 20);
4834 o_ptr->timeout = 15;
4841 msg_print("¥â¡¼¥Ë¥ó¥°¥¹¥¿¡¼¤«¤é±ê¤¬¿á¤½Ð¤·¤¿...");
4843 msg_print("Your morning star rages in fire...");
4846 if (!get_aim_dir(&dir)) return;
4847 fire_ball(GF_FIRE, dir, 72, 3);
4848 o_ptr->timeout = 100;
4855 msg_print("¥à¥Á¤¬¿¼¤¤ÀÖ¿§¤Ëµ±¤¤¤¿...");
4857 msg_print("Your whip glows deep red...");
4860 if (!get_aim_dir(&dir)) return;
4861 fire_ball(GF_FIRE, dir, 120, 3);
4862 o_ptr->timeout = 15;
4869 msg_print("¥á¥¤¥¹¤¬¥°¥ê¡¼¥ó¤ËÌÀ¤ë¤¯µ±¤¤¤¿...");
4871 msg_print("Your mace glows bright green...");
4874 (void)set_fast(randint(20) + 20, FALSE);
4875 o_ptr->timeout = rand_int(100) + 100;
4882 msg_print("¥¯¥©¡¼¥¿¡¼¥¹¥¿¥Ã¥Õ¤¬²«¿§¤¯µ±¤¤¤¿...");
4884 msg_print("Your quarterstaff glows yellow...");
4887 if (!ident_spell(FALSE)) return;
4888 o_ptr->timeout = 10;
4895 msg_print("¾ó¤¬ÌÀ¤ë¤¯µ±¤¤¤¿...");
4897 msg_print("Your quarterstaff glows brightly...");
4900 detect_all(DETECT_RAD_DEFAULT);
4902 identify_fully(FALSE);
4903 o_ptr->timeout = 1000;
4910 msg_print("¥Ï¥ó¥Þ¡¼¤¬Çò¤¯µ±¤¤¤¿...");
4912 msg_print("Your hammer glows white...");
4915 if (!get_aim_dir(&dir)) return;
4916 drain_life(dir, 90);
4917 o_ptr->timeout = 70;
4924 msg_print("¥¯¥í¥¹¥Ü¥¦¤¬¿¼¹È¤Ëµ±¤¤¤¿...");
4926 msg_print("Your crossbow glows deep red...");
4929 (void)brand_bolts();
4930 o_ptr->timeout = 999;
4937 int flg = PROJECT_STOP | PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL | PROJECT_NO_REF;
4940 msg_print("¤»¤Ã¤«¤¯¤À¤«¤é¡Ø¥¯¥ê¥à¥¾¥ó¡Ù¤ò¤Ö¤Ã¤Ñ¤Ê¤¹¤¼¡ª");
4942 msg_print("I'll fire CRIMSON! SEKKAKUDAKARA!");
4945 if (!get_aim_dir(&dir)) return;
4947 /* Use the given direction */
4948 tx = px + 99 * ddx[dir];
4949 ty = py + 99 * ddy[dir];
4951 /* Hack -- Use an actual "target" */
4952 if ((dir == 5) && target_okay())
4958 if (p_ptr->pclass == CLASS_ARCHER)
4960 /* Extra shot at level 10 */
4961 if (p_ptr->lev >= 10) num++;
4963 /* Extra shot at level 30 */
4964 if (p_ptr->lev >= 30) num++;
4966 /* Extra shot at level 45 */
4967 if (p_ptr->lev >= 45) num++;
4970 for (i = 0; i < num; i++)
4971 project(0, p_ptr->lev/20+1, ty, tx, p_ptr->lev*6, GF_ROCKET, flg, -1);
4972 o_ptr->timeout = 15;
4977 monster_type *m_ptr;
4978 monster_race *r_ptr;
4982 msg_print("´ñ̯¤Ê¾ì½ê¤¬Æ¬¤ÎÃæ¤ËÉ⤫¤ó¤À¡¥¡¥¡¥");
4984 msg_print("Some strange places show up in your mind. And you see ...");
4987 /* Process the monsters (backwards) */
4988 for (i = m_max - 1; i >= 1; i--)
4990 /* Access the monster */
4993 /* Ignore "dead" monsters */
4994 if (!m_ptr->r_idx) continue;
4996 r_ptr = &r_info[m_ptr->r_idx];
4998 if(r_ptr->flags1 & RF1_UNIQUE)
5001 msg_format("%s¡¥ ",r_name + r_ptr->name);
5003 msg_format("%s. ",r_name + r_ptr->name);
5007 o_ptr->timeout = 200;
5011 case ART_STONE_LORE:
5014 msg_print("ÀФ¬±£¤µ¤ì¤¿ÈëÌ©¤ò¼Ì¤·½Ð¤·¤¿¡¥¡¥¡¥");
5016 msg_print("The stone reveals hidden mysteries...");
5018 if (!ident_spell(FALSE)) return;
5020 if (mp_ptr->spell_book)
5022 /* Sufficient mana */
5023 if (20 <= p_ptr->csp)
5029 /* Over-exert the player */
5032 int oops = 20 - p_ptr->csp;
5036 p_ptr->csp_frac = 0;
5040 msg_print("ÀФòÀ©¸æ¤Ç¤¤Ê¤¤¡ª");
5042 msg_print("You are too weak to control the stone!");
5045 /* Hack -- Bypass free action */
5046 (void)set_paralyzed(p_ptr->paralyzed +
5047 randint(5 * oops + 1));
5050 (void)set_confused(p_ptr->confused +
5051 randint(5 * oops + 1));
5055 p_ptr->redraw |= (PR_MANA);
5059 take_hit(DAMAGE_LOSELIFE, damroll(1, 12), "´í¸±¤ÊÈëÌ©", -1);
5061 take_hit(DAMAGE_LOSELIFE, damroll(1, 12), "perilous secrets", -1);
5065 if (rand_int(5) == 0) (void)set_confused(p_ptr->confused +
5068 /* Exercise a little care... */
5069 if (rand_int(20) == 0)
5071 take_hit(DAMAGE_LOSELIFE, damroll(4, 10), "´í¸±¤ÊÈëÌ©", -1);
5073 take_hit(DAMAGE_LOSELIFE, damroll(4, 10), "perilous secrets", -1);
5081 msg_print("You wind a mighty blast; your enemies tremble!");
5082 (void)turn_monsters((3 * p_ptr->lev / 2) + 10);
5083 o_ptr->timeout = rand_int(40) + 40;
5089 msg_print("¤¢¤Ê¤¿¤Ï³²Ãî¤ò°ìÁݤ·¤¿¡£");
5091 msg_print("You exterminate small life.");
5093 (void)dispel_monsters(4);
5094 o_ptr->timeout = rand_int(55) + 55;
5101 msg_print("Æߤ¤²»¤¬ÊÕ¤ê¤òÊñ¤ß¤³¤ó¤À¡£");
5103 msg_print("A shrill wailing sound surrounds you.");
5105 (void)set_protevil(randint(25) + p_ptr->lev, FALSE);
5106 o_ptr->timeout = rand_int(200) + 200;
5114 msg_print("¥í¡¼¥Ö¤¬½ã¿è¤ÊËâÎϤǿ̤¨¤¿¡£");
5116 msg_print("The robe pulsates with raw mana...");
5118 if (!get_aim_dir(&dir)) return;
5119 fire_bolt(GF_MANA, dir, 120);
5120 o_ptr->timeout = rand_int(120) + 120;
5125 (void)set_fast(randint(50) + 50, FALSE);
5128 set_hero(randint(50) + 50, FALSE);
5129 o_ptr->timeout = rand_int(200) + 100;
5135 msg_print("¥·¡¼¥ë¥É¤¬âÁ¤·¤¤¸÷¤Çµ±¤¤¤¿¡¥¡¥¡¥");
5137 msg_print("Your shield gleams with blinding light...");
5139 fire_ball(GF_LITE, 0, 300, 6);
5140 confuse_monsters(3 * p_ptr->lev / 2);
5141 o_ptr->timeout = 250;
5147 msg_print("¥«¡¼¥É¤¬Çò¤¯µ±¤¤¤¿¡¥¡¥¡¥");
5149 msg_print("Your card gleams with blinding light...");
5151 if (!recharge(1000)) return;
5152 o_ptr->timeout = 200;
5157 if (get_check("ËÜÅö¤Ë»È¤¤¤Þ¤¹¤«¡©"))
5160 msg_print("¼Àµ¤¬¿Ì¤¨¤¿¡¥¡¥¡¥");
5162 msg_print("The Muramasa pulsates...");
5168 msg_print("¼Àµ¤Ï²õ¤ì¤¿¡ª");
5170 msg_print("The Muramasa is destroyed!");
5172 curse_weapon(TRUE, item);
5180 msg_print("ÀФ¬ÀÄÇò¤¯¸÷¤Ã¤¿¡¥¡¥¡¥");
5182 msg_print("Your stone glows pale...");
5185 if (!get_aim_dir(&dir)) return;
5186 fire_ball(GF_MANA, dir, 400, 4);
5187 o_ptr->timeout = rand_int(250) + 250;
5194 if (!get_rep_dir2(&dir)) return;
5198 if (!(cave[y][x].feat == FEAT_DEEP_WATER) && !(cave[y][x].feat == FEAT_SHAL_WATER))
5201 msg_print("¤½¤³¤ÏΦÃϤÀ¡£");
5203 msg_print("There is no fishing place.");
5207 else if (cave[y][x].m_idx)
5210 monster_desc(m_name, &m_list[cave[y][x].m_idx], 0);
5212 msg_format("%s¤¬¼ÙËâ¤À¡ª", m_name);
5214 msg_format("%^s is stand in your way.", m_name);
5219 set_action(ACTION_FISH);
5220 p_ptr->redraw |= (PR_STATE);
5225 if (!get_aim_dir(&dir)) return;
5227 msg_print("¥à¥Á¤ò¿¤Ð¤·¤¿¡£");
5229 msg_print("You stretched your wip.");
5232 fetch(dir, 500, TRUE);
5233 o_ptr->timeout = rand_int(25) + 25;
5238 bool pet = (randint(5) != 1);
5240 if (summon_specific((pet ? -1 : 0), py, px, ((p_ptr->lev * 3) / 2), SUMMON_HOUND, TRUE, FALSE, pet, FALSE, !pet))
5245 msg_print("¥Ï¥¦¥ó¥É¤¬¤¢¤Ê¤¿¤Î²¼ËͤȤ·¤Æ½Ð¸½¤·¤¿¡£");
5247 msg_print("A group of hounds appear as your servant.");
5252 msg_print("¥Ï¥¦¥ó¥É¤Ï¤¢¤Ê¤¿¤Ë²ç¤ò¸þ¤±¤Æ¤¤¤ë¡ª");
5254 msg_print("A group of hounds appear as your enemy!");
5259 o_ptr->timeout = 300 + randint(150);
5266 msg_print("¥¹¥Ô¥¢¤ÏâÁ¤·¤¯µ±¤¤¤¿...");
5268 msg_print("Your spear grows brightly...");
5271 if (!get_aim_dir(&dir)) return;
5272 fire_ball(GF_LITE, dir, 200, 3);
5273 o_ptr->timeout = rand_int(200) + 200;
5280 monster_type *m_ptr;
5285 if (summon_named_creature(py, px, MON_SUKE, FALSE, FALSE, TRUE, TRUE))
5288 msg_print("¡Ø½õ¤µ¤ó¡Ù¤¬¸½¤ì¤¿¡£");
5290 msg_print("Suke-san apperars.");
5291 kakusan = "Suke-san";
5295 if (summon_named_creature(py, px, MON_KAKU, FALSE, FALSE, TRUE, TRUE))
5298 msg_print("¡Ø³Ê¤µ¤ó¡Ù¤¬¸½¤ì¤¿¡£");
5300 msg_print("Kaku-san appears.");
5301 kakusan = "Kaku-san";
5307 for (i = m_max - 1; i > 0; i--)
5310 if (!m_ptr->r_idx) continue;
5311 if (!((m_ptr->r_idx == MON_SUKE) || (m_ptr->r_idx == MON_KAKU))) continue;
5312 if (!los(m_ptr->fy, m_ptr->fx, py, px)) continue;
5321 msg_print("¡Ö¼Ô¤É¤â¡¢¤Ò¤«¤¨¤ª¤í¤¦¡ª¡ª¡ª¤³¤Î¤ªÊý¤ò¤É¤Ê¤¿¤È¤³¤³¤í¤¨¤ë¡£¡×");
5323 msg_format("%^s says 'WHO do you think this person is! Bow your head, down your knees!'", kakusan);
5328 confuse_monsters(120);
5330 stasis_monsters(120);
5336 msg_print("¤·¤«¤·¡¢²¿¤âµ¯¤¤Ê¤«¤Ã¤¿¡£");
5338 msg_print("Nothing happen.");
5341 o_ptr->timeout = rand_int(150) + 150;
5348 msg_print("Çï»ÒÌÚ¤òÂǤä¿¡£");
5350 msg_print("You beat Your wooden clappers.");
5352 aggravate_monsters(0);
5359 set_hero(randint(25)+25, FALSE);
5361 o_ptr->timeout = rand_int(30) + 30;
5367 (void)set_poisoned(0);
5368 (void)set_confused(0);
5374 o_ptr->timeout = 100;
5380 if (!get_aim_dir(&dir)) return;
5381 (void)charm_animal(dir, p_ptr->lev);
5383 o_ptr->timeout = 200;
5390 msg_print("¥½¡¼¥É¤¬Ã¸¤¤¥Ö¥ë¡¼¤Ëµ±¤¤¤¿...");
5392 msg_print("Your sword glows a pale blue...");
5394 if (!get_aim_dir(&dir)) return;
5395 fire_bolt(GF_COLD, dir, damroll(12, 8));
5396 o_ptr->timeout = 50;
5403 msg_print("³ù¤¬ÌÀ¤ë¤¯µ±¤¤¤¿...");
5405 msg_print("Your scythe glows brightly!");
5407 o_ptr->art_flags1 = a_info[ART_BLOOD].flags1;
5408 o_ptr->art_flags2 = a_info[ART_BLOOD].flags2;
5409 dummy = randint(2)+randint(2);
5410 for (i = 0; i < dummy; i++)
5411 o_ptr->art_flags1 |= (TR1_CHAOTIC << rand_int(18));
5413 for (i = 0; i < dummy; i++)
5414 random_resistance(o_ptr, FALSE, randint(34) + 4);
5416 for (i = 0; i < dummy; i++)
5418 int tmp = rand_int(11);
5419 if (tmp < 6) o_ptr->art_flags1 |= (TR1_STR << tmp);
5420 else o_ptr->art_flags1 |= (TR1_STEALTH << (tmp - 6));
5422 o_ptr->timeout = 3333;
5423 if (p_ptr->prace == RACE_ANDROID) calc_android_exp();
5424 p_ptr->update |= (PU_BONUS | PU_HP);
5430 msg_print("Î϶¯¤¯»Í¸Ô¤òƧ¤ó¤À¡£");
5432 msg_print("You stamp. (as if you are in a ring.)");
5434 (void)set_hero(randint(20) + 20, FALSE);
5435 dispel_evil(p_ptr->lev * 3);
5436 o_ptr->timeout = 100 + randint(100);
5442 msg_print("¥¯¥í¡¼¥¯¤¬Çò¤¯µ±¤¤¤¿...");
5444 msg_print("Your cloak grows white.");
5446 (void)set_oppose_cold(randint(20) + 20, FALSE);
5447 o_ptr->timeout = 40 + randint(40);
5453 msg_print("¥à¥Á¤«¤é±Ô¤¤²»¤¬Î®¤ì½Ð¤¿...");
5455 msg_print("The whip lets out a shrill wail...");
5459 (void)set_protevil(randint(25) + k, FALSE);
5460 o_ptr->timeout = rand_int(225) + 225;
5465 bool pet = (randint(5) != 1);
5467 if (summon_named_creature(py, px, MON_JIZOTAKO, FALSE, TRUE, FALSE, pet))
5471 msg_print("Âý¤¬¤¢¤Ê¤¿¤Î²¼ËͤȤ·¤Æ½Ð¸½¤·¤¿¡£");
5473 msg_print("A group of octopuses appear as your servant.");
5478 msg_print("Âý¤Ï¤¢¤Ê¤¿¤òâˤó¤Ç¤¤¤ë¡ª");
5480 msg_print("A group of octopuses appear as your enemy!");
5485 o_ptr->timeout = 300 + randint(150);
5492 msg_print("Å´µå¤ÏÊÕ¤ê¤òÁ±¤Î¥ª¡¼¥é¤ÇËþ¤¿¤·¤¿...");
5494 msg_print("The iron ball floods the area with goodness...");
5497 dispel_evil(p_ptr->lev * 5);
5498 o_ptr->timeout = rand_int(100) + 100;
5505 msg_print("¥¢¥ß¥å¥ì¥Ã¥È¤¬¿¼¤¤°Ç¤Ëʤ¤ï¤ì¤¿...");
5507 msg_print("nanka.");
5509 if (!get_aim_dir(&dir)) return;
5510 fire_ball(GF_DARK, dir, 250, 4);
5511 o_ptr->timeout = rand_int(150) + 150;
5517 p_ptr->window |= (PW_INVEN | PW_EQUIP);
5523 else if ((o_ptr->tval > TV_CAPTURE) && (o_ptr->xtra3 == ESSENCE_TMP_RES_ACID))
5525 (void)set_oppose_acid(randint(20) + 20, FALSE);
5526 o_ptr->timeout = rand_int(50) + 50;
5530 else if ((o_ptr->tval > TV_CAPTURE) && (o_ptr->xtra3 == ESSENCE_TMP_RES_ELEC))
5532 (void)set_oppose_elec(randint(20) + 20, FALSE);
5533 o_ptr->timeout = rand_int(50) + 50;
5537 else if ((o_ptr->tval > TV_CAPTURE) && (o_ptr->xtra3 == ESSENCE_TMP_RES_FIRE))
5539 (void)set_oppose_fire(randint(20) + 20, FALSE);
5540 o_ptr->timeout = rand_int(50) + 50;
5544 else if ((o_ptr->tval > TV_CAPTURE) && (o_ptr->xtra3 == ESSENCE_TMP_RES_COLD))
5546 (void)set_oppose_cold(randint(20) + 20, FALSE);
5547 o_ptr->timeout = rand_int(50) + 50;
5551 else if ((o_ptr->tval > TV_CAPTURE) && (o_ptr->xtra3 == ESSENCE_EARTHQUAKE))
5553 earthquake(py, px, 5);
5554 o_ptr->timeout = 100 + randint(100);
5557 p_ptr->window |= (PW_INVEN | PW_EQUIP);
5564 else if (o_ptr->name2 == EGO_TRUMP)
5566 teleport_player(100);
5567 o_ptr->timeout = 50 + randint(50);
5570 p_ptr->window |= (PW_INVEN | PW_EQUIP);
5577 else if (o_ptr->name2 == EGO_LITE_ILLUMINATION)
5579 if (!o_ptr->xtra4 && ((o_ptr->sval == SV_LITE_TORCH) || (o_ptr->sval == SV_LITE_LANTERN)))
5581 msg_print("dzÎÁ¤¬¤Ê¤¤¡£");
5585 lite_area(damroll(2, 15), 3);
5586 o_ptr->timeout = rand_int(10) + 10;
5589 p_ptr->window |= (PW_INVEN | PW_EQUIP);
5595 else if (o_ptr->name2 == EGO_EARTHQUAKES)
5597 earthquake(py, px, 5);
5598 o_ptr->timeout = 100 + randint(100);
5601 p_ptr->window |= (PW_INVEN | PW_EQUIP);
5608 else if (o_ptr->name2 == EGO_JUMP)
5610 teleport_player(10);
5611 o_ptr->timeout = 10 + randint(10);
5614 p_ptr->window |= (PW_INVEN | PW_EQUIP);
5621 /* Hack -- Dragon Scale Mail can be activated as well */
5622 else if (o_ptr->tval == TV_DRAG_ARMOR)
5624 /* Get a direction for breathing (or abort) */
5625 if (!get_aim_dir(&dir)) return;
5627 /* Branch on the sub-type */
5628 switch (o_ptr->sval)
5630 case SV_DRAGON_BLUE:
5633 msg_print("¤¢¤Ê¤¿¤Ï°ðºÊ¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£");
5635 msg_print("You breathe lightning.");
5638 fire_ball(GF_ELEC, dir, 100, -2);
5639 o_ptr->timeout = rand_int(150) + 150;
5643 case SV_DRAGON_WHITE:
5646 msg_print("¤¢¤Ê¤¿¤ÏÎ䵤¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£");
5648 msg_print("You breathe frost.");
5651 fire_ball(GF_COLD, dir, 110, -2);
5652 o_ptr->timeout = rand_int(150) + 150;
5656 case SV_DRAGON_BLACK:
5659 msg_print("¤¢¤Ê¤¿¤Ï»À¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£");
5661 msg_print("You breathe acid.");
5664 fire_ball(GF_ACID, dir, 130, -2);
5665 o_ptr->timeout = rand_int(150) + 150;
5669 case SV_DRAGON_GREEN:
5672 msg_print("¤¢¤Ê¤¿¤ÏÆÇ¥¬¥¹¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£");
5674 msg_print("You breathe poison gas.");
5677 fire_ball(GF_POIS, dir, 150, -2);
5678 o_ptr->timeout = rand_int(180) + 180;
5685 msg_print("¤¢¤Ê¤¿¤Ï²Ð±ê¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£");
5687 msg_print("You breathe fire.");
5690 fire_ball(GF_FIRE, dir, 200, -2);
5691 o_ptr->timeout = rand_int(200) + 200;
5695 case SV_DRAGON_MULTIHUED:
5697 chance = rand_int(5);
5699 msg_format("¤¢¤Ê¤¿¤Ï%s¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£",
5700 ((chance == 1) ? "°ðºÊ" :
5701 ((chance == 2) ? "Î䵤" :
5702 ((chance == 3) ? "»À" :
5703 ((chance == 4) ? "ÆÇ¥¬¥¹" : "²Ð±ê")))));
5705 msg_format("You breathe %s.",
5706 ((chance == 1) ? "lightning" :
5707 ((chance == 2) ? "frost" :
5708 ((chance == 3) ? "acid" :
5709 ((chance == 4) ? "poison gas" : "fire")))));
5712 fire_ball(((chance == 1) ? GF_ELEC :
5713 ((chance == 2) ? GF_COLD :
5714 ((chance == 3) ? GF_ACID :
5715 ((chance == 4) ? GF_POIS : GF_FIRE)))),
5717 o_ptr->timeout = rand_int(200) + 200;
5721 case SV_DRAGON_BRONZE:
5724 msg_print("¤¢¤Ê¤¿¤Ïº®Íð¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£");
5726 msg_print("You breathe confusion.");
5729 fire_ball(GF_CONFUSION, dir, 120, -2);
5730 o_ptr->timeout = rand_int(180) + 180;
5734 case SV_DRAGON_GOLD:
5737 msg_print("¤¢¤Ê¤¿¤Ï¹ì²»¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£");
5739 msg_print("You breathe sound.");
5742 fire_ball(GF_SOUND, dir, 130, -2);
5743 o_ptr->timeout = rand_int(180) + 180;
5747 case SV_DRAGON_CHAOS:
5749 chance = rand_int(2);
5751 msg_format("¤¢¤Ê¤¿¤Ï%s¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£",
5752 ((chance == 1 ? "¥«¥ª¥¹" : "Îô²½")));
5754 msg_format("You breathe %s.",
5755 ((chance == 1 ? "chaos" : "disenchantment")));
5758 fire_ball((chance == 1 ? GF_CHAOS : GF_DISENCHANT),
5760 o_ptr->timeout = rand_int(200) + 200;
5766 chance = rand_int(2);
5768 msg_format("¤¢¤Ê¤¿¤Ï%s¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£",
5769 ((chance == 1 ? "¹ì²»" : "ÇËÊÒ")));
5771 msg_format("You breathe %s.",
5772 ((chance == 1 ? "sound" : "shards")));
5775 fire_ball((chance == 1 ? GF_SOUND : GF_SHARDS),
5777 o_ptr->timeout = rand_int(200) + 200;
5781 case SV_DRAGON_BALANCE:
5783 chance = rand_int(4);
5785 msg_format("¤¢¤Ê¤¿¤Ï%s¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿",
5786 ((chance == 1) ? "¥«¥ª¥¹" :
5787 ((chance == 2) ? "Îô²½" :
5788 ((chance == 3) ? "¹ì²»" : "ÇËÊÒ"))));
5790 msg_format("You breathe %s.",
5791 ((chance == 1) ? "chaos" :
5792 ((chance == 2) ? "disenchantment" :
5793 ((chance == 3) ? "sound" : "shards"))));
5796 fire_ball(((chance == 1) ? GF_CHAOS :
5797 ((chance == 2) ? GF_DISENCHANT :
5798 ((chance == 3) ? GF_SOUND : GF_SHARDS))),
5800 o_ptr->timeout = rand_int(200) + 200;
5804 case SV_DRAGON_SHINING:
5806 chance = rand_int(2);
5808 msg_format("¤¢¤Ê¤¿¤Ï%s¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£",
5809 ((chance == 0 ? "Á®¸÷" : "°Å¹õ")));
5811 msg_format("You breathe %s.",
5812 ((chance == 0 ? "light" : "darkness")));
5815 fire_ball((chance == 0 ? GF_LITE : GF_DARK), dir, 200, -2);
5816 o_ptr->timeout = rand_int(200) + 200;
5820 case SV_DRAGON_POWER:
5823 msg_print("¤¢¤Ê¤¿¤Ï¥¨¥ì¥á¥ó¥È¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£");
5825 msg_print("You breathe the elements.");
5828 fire_ball(GF_MISSILE, dir, 300, -3);
5829 o_ptr->timeout = rand_int(200) + 200;
5835 p_ptr->window |= (PW_INVEN | PW_EQUIP);
5841 else if (o_ptr->tval == TV_RING)
5845 bool success = TRUE;
5847 switch (o_ptr->name2)
5850 (void)set_afraid(0);
5851 (void)set_hero(randint(25) + 25, FALSE);
5852 (void)hp_player(10);
5853 o_ptr->timeout = randint(100)+100;
5855 case EGO_RING_MAGIC_MIS:
5856 if (!get_aim_dir(&dir)) return;
5857 fire_bolt(GF_MISSILE, dir, damroll(2, 6));
5860 case EGO_RING_FIRE_BOLT:
5861 if (!get_aim_dir(&dir)) return;
5862 fire_bolt(GF_FIRE, dir, damroll(9, 8));
5863 o_ptr->timeout = rand_int(8) + 8;
5865 case EGO_RING_COLD_BOLT:
5866 if (!get_aim_dir(&dir)) return;
5867 fire_bolt(GF_COLD, dir, damroll(6, 8));
5868 o_ptr->timeout = rand_int(7) + 7;
5870 case EGO_RING_ELEC_BOLT:
5871 if (!get_aim_dir(&dir)) return;
5872 fire_bolt(GF_ELEC, dir, damroll(4, 8));
5873 o_ptr->timeout = rand_int(5) + 5;
5875 case EGO_RING_ACID_BOLT:
5876 if (!get_aim_dir(&dir)) return;
5877 fire_bolt(GF_FIRE, dir, damroll(5, 8));
5878 o_ptr->timeout = rand_int(6) + 6;
5880 case EGO_RING_MANA_BOLT:
5881 if (!get_aim_dir(&dir)) return;
5882 fire_bolt(GF_MANA, dir, 120);
5883 o_ptr->timeout = rand_int(120)+120;
5885 case EGO_RING_FIRE_BALL:
5886 if (!get_aim_dir(&dir)) return;
5887 fire_ball(GF_FIRE, dir, 100, 2);
5888 o_ptr->timeout = rand_int(80) + 80;
5890 case EGO_RING_COLD_BALL:
5891 if (!get_aim_dir(&dir)) return;
5892 fire_ball(GF_COLD, dir, 100, 2);
5893 o_ptr->timeout = rand_int(80) + 80;
5895 case EGO_RING_ELEC_BALL:
5896 if (!get_aim_dir(&dir)) return;
5897 fire_ball(GF_ELEC, dir, 100, 2);
5898 o_ptr->timeout = rand_int(80) + 80;
5900 case EGO_RING_ACID_BALL:
5901 if (!get_aim_dir(&dir)) return;
5902 fire_ball(GF_ACID, dir, 100, 2);
5903 o_ptr->timeout = rand_int(80) + 80;
5905 case EGO_RING_MANA_BALL:
5906 if (!get_aim_dir(&dir)) return;
5907 fire_ball(GF_MANA, dir, 250, 2);
5908 o_ptr->timeout = 300;
5910 case EGO_RING_DRAGON_F:
5911 if (!get_aim_dir(&dir)) return;
5912 fire_ball(GF_FIRE, dir, 200, -2);
5913 if (o_ptr->sval == SV_RING_FLAMES)
5915 (void)set_oppose_fire(randint(20) + 20, FALSE);
5916 o_ptr->timeout = 200;
5918 else o_ptr->timeout = 250;
5920 case EGO_RING_DRAGON_C:
5921 if (!get_aim_dir(&dir)) return;
5922 fire_ball(GF_COLD, dir, 200, -2);
5923 if (o_ptr->sval == SV_RING_ICE)
5925 (void)set_oppose_cold(randint(20) + 20, FALSE);
5926 o_ptr->timeout = 200;
5928 else o_ptr->timeout = 250;
5930 case EGO_RING_M_DETECT:
5931 (void)detect_monsters_invis(255);
5932 (void)detect_monsters_normal(255);
5933 o_ptr->timeout = 150;
5935 case EGO_RING_D_SPEED:
5936 (void)set_fast(randint(30) + 15, FALSE);
5937 o_ptr->timeout = 100;
5939 case EGO_RING_BERSERKER:
5940 (void)set_shero(randint(25) + 25, FALSE);
5941 o_ptr->timeout = rand_int(75)+75;
5943 case EGO_RING_TELE_AWAY:
5944 if (!get_aim_dir(&dir)) return;
5945 teleport_monster(dir);
5946 o_ptr->timeout = 150;
5950 int v = randint(25)+25;
5951 (void)set_afraid(0);
5952 (void)set_hero(v, FALSE);
5953 (void)hp_player(10);
5954 (void)set_blessed(v, FALSE);
5955 (void)set_oppose_acid(v, FALSE);
5956 (void)set_oppose_elec(v, FALSE);
5957 (void)set_oppose_fire(v, FALSE);
5958 (void)set_oppose_cold(v, FALSE);
5959 (void)set_oppose_pois(v, FALSE);
5960 (void)set_ultimate_res(v, FALSE);
5961 o_ptr->timeout = 777;
5968 if (success) return;
5971 /* Get a direction for breathing (or abort) */
5972 if (!get_aim_dir(&dir)) return;
5974 switch (o_ptr->sval)
5978 fire_ball(GF_ACID, dir, 100, 2);
5979 (void)set_oppose_acid(randint(20) + 20, FALSE);
5980 o_ptr->timeout = rand_int(50) + 50;
5986 fire_ball(GF_COLD, dir, 100, 2);
5987 (void)set_oppose_cold(randint(20) + 20, FALSE);
5988 o_ptr->timeout = rand_int(50) + 50;
5992 case SV_RING_FLAMES:
5994 fire_ball(GF_FIRE, dir, 100, 2);
5995 (void)set_oppose_fire(randint(20) + 20, FALSE);
5996 o_ptr->timeout = rand_int(50) + 50;
6002 fire_ball(GF_ELEC, dir, 100, 2);
6003 (void)set_oppose_elec(randint(20) + 20, FALSE);
6004 o_ptr->timeout = rand_int(50) + 50;
6010 p_ptr->window |= (PW_INVEN | PW_EQUIP);
6016 else if (o_ptr->tval == TV_AMULET)
6020 switch (o_ptr->name2)
6023 if (!ident_spell(FALSE)) return;
6024 o_ptr->timeout = 10;
6027 if (!get_aim_dir(&dir)) return;
6028 charm_monster(dir, MAX(20, p_ptr->lev));
6029 o_ptr->timeout = 200;
6032 teleport_player(10);
6033 o_ptr->timeout = rand_int(10) + 10;
6035 case EGO_AMU_TELEPORT:
6036 teleport_player(100);
6037 o_ptr->timeout = rand_int(50) + 50;
6039 case EGO_AMU_D_DOOR:
6040 (void)dimension_door();
6041 o_ptr->timeout = 200;
6043 case EGO_AMU_RES_FIRE_:
6044 (void)set_oppose_fire(randint(20) + 20, FALSE);
6045 o_ptr->timeout = rand_int(50) + 50;
6047 case EGO_AMU_RES_COLD_:
6048 (void)set_oppose_cold(randint(20) + 20, FALSE);
6049 o_ptr->timeout = rand_int(50) + 50;
6051 case EGO_AMU_RES_ELEC_:
6052 (void)set_oppose_elec(randint(20) + 20, FALSE);
6053 o_ptr->timeout = rand_int(50) + 50;
6055 case EGO_AMU_RES_ACID_:
6056 (void)set_oppose_acid(randint(20) + 20, FALSE);
6057 o_ptr->timeout = rand_int(50) + 50;
6059 case EGO_AMU_DETECTION:
6060 detect_all(DETECT_RAD_DEFAULT);
6061 o_ptr->timeout = rand_int(55)+55;
6068 else if (o_ptr->tval == TV_WHISTLE)
6071 if (cursed_p(o_ptr))
6074 msg_print("¥«¥ó¹â¤¤²»¤¬¶Á¤ÅϤä¿¡£");
6076 msg_print("You produce a shrill whistling sound.");
6078 aggravate_monsters(0);
6088 /* Allocate the "who" array */
6089 C_MAKE(who, max_m_idx, u16b);
6091 /* Process the monsters (backwards) */
6092 for (pet_ctr = m_max - 1; pet_ctr >= 1; pet_ctr--)
6094 if (is_pet(&m_list[pet_ctr]) && (p_ptr->riding != pet_ctr))
6095 who[max_pet++] = pet_ctr;
6098 /* Select the sort method */
6099 ang_sort_comp = ang_sort_comp_pet;
6100 ang_sort_swap = ang_sort_swap_hook;
6102 ang_sort(who, &dummy_why, max_pet);
6104 /* Process the monsters (backwards) */
6105 for (i = 0; i < max_pet; i++)
6108 teleport_to_player(pet_ctr, 100);
6111 o_ptr->timeout = 100+randint(100);
6114 else if (o_ptr->tval == TV_CAPTURE)
6118 bool old_target_pet = target_pet;
6120 if (!get_aim_dir(&dir))
6122 target_pet = old_target_pet;
6125 target_pet = old_target_pet;
6127 if(fire_ball(GF_CAPTURE, dir, 0, 0))
6129 o_ptr->pval = cap_mon;
6130 o_ptr->xtra3 = cap_mspeed;
6131 o_ptr->xtra4 = cap_hp;
6132 o_ptr->xtra5 = cap_maxhp;
6139 if (o_ptr->inscription)
6140 strcpy(buf, quark_str(o_ptr->inscription));
6142 for (s = buf;*s && (*s != '#'); s++)
6145 if (iskanji(*s)) s++;
6155 t = quark_str(cap_nickname);
6168 o_ptr->inscription = quark_add(buf);
6174 bool success = FALSE;
6175 if (!get_rep_dir2(&dir)) return;
6176 if (cave_floor_bold(py+ddy[dir],px+ddx[dir]))
6178 if (place_monster_aux(py + ddy[dir], px + ddx[dir], o_ptr->pval, FALSE, FALSE, TRUE, TRUE, TRUE, FALSE))
6180 if (o_ptr->xtra3) m_list[hack_m_idx_ii].mspeed = o_ptr->xtra3;
6181 if (o_ptr->xtra5) m_list[hack_m_idx_ii].max_maxhp = o_ptr->xtra5;
6182 if (o_ptr->xtra4) m_list[hack_m_idx_ii].hp = o_ptr->xtra4;
6183 m_list[hack_m_idx_ii].maxhp = m_list[hack_m_idx_ii].max_maxhp;
6184 if (o_ptr->inscription)
6192 t = quark_str(o_ptr->inscription);
6193 for (t = quark_str(o_ptr->inscription);*t && (*t != '#'); t++)
6196 if (iskanji(*t)) t++;
6221 if (quote && *(s-1) =='\'')
6225 m_list[hack_m_idx_ii].nickname = quark_add(buf);
6226 t = quark_str(o_ptr->inscription);
6228 while(*t && (*t != '#'))
6235 o_ptr->inscription = quark_add(buf);
6247 msg_print("¤ª¤Ã¤È¡¢²òÊü¤Ë¼ºÇÔ¤·¤¿¡£");
6249 msg_print("Oops. You failed to release your pet.");
6257 msg_print("¤ª¤Ã¤È¡¢¤³¤Î¥¢¥¤¥Æ¥à¤Ï»ÏÆ°¤Ç¤¤Ê¤¤¡£");
6259 msg_print("Oops. That object cannot be activated.");
6265 void do_cmd_activate(void)
6271 if (p_ptr->special_defense & (KATA_MUSOU | KATA_KOUKIJIN))
6273 set_action(ACTION_NONE);
6276 item_tester_no_ryoute = TRUE;
6277 /* Prepare the hook */
6278 item_tester_hook = item_tester_hook_activate;
6282 q = "¤É¤Î¥¢¥¤¥Æ¥à¤ò»ÏÆ°¤µ¤»¤Þ¤¹¤«? ";
6283 s = "»ÏÆ°¤Ç¤¤ë¥¢¥¤¥Æ¥à¤òÁõÈ÷¤·¤Æ¤¤¤Ê¤¤¡£";
6285 q = "Activate which item? ";
6286 s = "You have nothing to activate.";
6289 if (!get_item(&item, q, s, (USE_EQUIP))) return;
6291 /* Activate the item */
6292 do_cmd_activate_aux(item);
6297 * Hook to determine if an object is useable
6299 static bool item_tester_hook_use(object_type *o_ptr)
6304 if (o_ptr->tval == p_ptr->tval_ammo)
6307 /* Useable object */
6308 switch (o_ptr->tval)
6326 if (!object_known_p(o_ptr)) return (FALSE);
6328 /* HACK - only items from the equipment can be activated */
6329 for (i = INVEN_RARM; i < INVEN_TOTAL; i++)
6331 if (&inventory[i] == o_ptr)
6333 /* Extract the flags */
6334 object_flags(o_ptr, &f1, &f2, &f3);
6336 /* Check activation flag */
6337 if (f3 & TR3_ACTIVATE) return (TRUE);
6350 * XXX - Add actions for other item types
6352 void do_cmd_use(void)
6358 if (p_ptr->special_defense & (KATA_MUSOU | KATA_KOUKIJIN))
6360 set_action(ACTION_NONE);
6363 item_tester_no_ryoute = TRUE;
6364 /* Prepare the hook */
6365 item_tester_hook = item_tester_hook_use;
6369 q = "¤É¤ì¤ò»È¤¤¤Þ¤¹¤«¡©";
6370 s = "»È¤¨¤ë¤â¤Î¤¬¤¢¤ê¤Þ¤»¤ó¡£";
6372 q = "Use which item? ";
6373 s = "You have nothing to use.";
6376 if (!get_item(&item, q, s, (USE_INVEN | USE_EQUIP | USE_FLOOR))) return;
6378 /* Get the item (in the pack) */
6381 o_ptr = &inventory[item];
6383 /* Get the item (on the floor) */
6386 o_ptr = &o_list[0 - item];
6389 switch (o_ptr->tval)
6401 do_cmd_eat_food_aux(item);
6408 do_cmd_aim_wand_aux(item);
6415 do_cmd_use_staff_aux(item);
6422 do_cmd_zap_rod_aux(item);
6426 /* Quaff a potion */
6429 do_cmd_quaff_potion_aux(item);
6436 /* Check some conditions */
6440 msg_print("Ìܤ¬¸«¤¨¤Ê¤¤¡£");
6442 msg_print("You can't see anything.");
6450 msg_print("ÌÀ¤«¤ê¤¬¤Ê¤¤¤Î¤Ç¡¢°Å¤¯¤ÆÆɤá¤Ê¤¤¡£");
6452 msg_print("You have no light to read by.");
6457 if (p_ptr->confused)
6460 msg_print("º®Í𤷤Ƥ¤¤ÆÆɤá¤Ê¤¤¡ª");
6462 msg_print("You are too confused!");
6468 do_cmd_read_scroll_aux(item);
6477 do_cmd_fire_aux(item, &inventory[INVEN_BOW]);
6481 /* Activate an artifact */
6484 do_cmd_activate_aux(item);
6490 static bool select_magic_eater(int mode)
6496 int ask = TRUE, i = 0;
6499 int menu_line = (use_menu ? 1 : 0);
6503 if (repeat_pull(&sn))
6505 /* Verify the spell */
6506 if (sn > 71 && !(p_ptr->magic_num1[sn] > k_info[lookup_kind(TV_ROD, i)].pval * (p_ptr->magic_num2[sn] - 1) * 0x10000L))
6508 else if (sn < 72 && !(p_ptr->magic_num1[sn] < 0x10000))
6512 #endif /* ALLOW_REPEAT */
6514 for (i = 0; i < 108; i++)
6516 if (p_ptr->magic_num2[i]) break;
6521 msg_print("ËâË¡¤ò³Ð¤¨¤Æ¤¤¤Ê¤¤¡ª");
6523 msg_print("You don't have any magic!");
6535 prt(format(" %s ¾ó", (menu_line == 1) ? "¡Õ" : " "), 2, 14);
6536 prt(format(" %s ËâË¡ËÀ", (menu_line == 2) ? "¡Õ" : " "), 3, 14);
6537 prt(format(" %s ¥í¥Ã¥É", (menu_line == 3) ? "¡Õ" : " "), 4, 14);
6538 prt("¤É¤Î¼ïÎà¤ÎËâË¡¤ò»È¤¤¤Þ¤¹¤«¡©", 0, 0);
6540 prt(format(" %s staff", (menu_line == 1) ? "> " : " "), 2, 14);
6541 prt(format(" %s wand", (menu_line == 2) ? "> " : " "), 3, 14);
6542 prt(format(" %s rod", (menu_line == 3) ? "> " : " "), 4, 14);
6543 prt("Which type of magic do you usu?", 0, 0);
6566 ext = (menu_line-1)*36;
6567 if (menu_line == 1) tval = TV_STAFF;
6568 else if (menu_line == 2) tval = TV_WAND;
6572 if (menu_line > 3) menu_line -= 3;
6581 if (!get_com("[A] ¾ó, [B] ËâË¡ËÀ, [C] ¥í¥Ã¥É:", &choice, TRUE))
6583 if (!get_com("[A] staff, [B] wand, [C] rod:", &choice, TRUE))
6588 if (choice == 'A' || choice == 'a')
6594 if (choice == 'B' || choice == 'b')
6600 if (choice == 'C' || choice == 'c')
6608 for (i = ext; i < ext + 36; i++)
6610 if (p_ptr->magic_num2[i])
6612 if (use_menu) menu_line = i-ext+1;
6619 msg_print("¤½¤Î¼ïÎà¤ÎËâË¡¤Ï³Ð¤¨¤Æ¤¤¤Ê¤¤¡ª");
6621 msg_print("You don't have that type of magic!");
6626 /* Nothing chosen yet */
6632 /* Build a prompt */
6634 (void) strnfmt(out_val, 78, "('*'¤Ç°ìÍ÷, ESC¤ÇÃæÃÇ) ¤É¤ÎËâÎϤò»È¤¤¤Þ¤¹¤«¡©");
6636 (void)strnfmt(out_val, 78, "(*=List, ESC=exit) Use which power? ");
6638 if (use_menu) screen_save();
6640 /* Get a spell from the user */
6642 choice = (always_show_list || use_menu) ? ESCAPE:1;
6645 if( choice==ESCAPE ) choice = ' ';
6646 else if( !get_com(out_val, &choice, FALSE) )break;
6648 if (use_menu && choice != ' ')
6666 if (menu_line > 36) menu_line -= 36;
6667 } while(!p_ptr->magic_num2[menu_line+ext-1]);
6678 if (menu_line > 36) menu_line -= 36;
6679 } while(!p_ptr->magic_num2[menu_line+ext-1]);
6690 bool reverse = FALSE;
6691 if ((choice == '4') || (choice == 'h') || (choice == 'H')) reverse = TRUE;
6698 while(!p_ptr->magic_num2[menu_line+ext-1])
6703 if (menu_line < 2) reverse = FALSE;
6708 if (menu_line > 35) reverse = TRUE;
6724 /* Request redraw */
6725 if ((choice == ' ') || (choice == '*') || (choice == '?') || (use_menu && ask))
6728 if (!redraw || use_menu)
6742 /* Save the screen */
6743 if (!use_menu) screen_save();
6745 for (y = 1; y < 20; y++)
6750 /* Print header(s) */
6752 prt(format(" %s ¼ºÎ¨ %s ¼ºÎ¨", (tval == TV_ROD ? " ¾õÂÖ " : "»ÈÍѲó¿ô"), (tval == TV_ROD ? " ¾õÂÖ " : "»ÈÍѲó¿ô")), y++, x);
6754 prt(format(" %s Fail %s Fail", (tval == TV_ROD ? " Stat " : " Charges"), (tval == TV_ROD ? " Stat " : " Charges")), y++, x);
6758 for (ctr = 0; ctr < 36; ctr++)
6760 if (!p_ptr->magic_num2[ctr+ext]) continue;
6762 k_idx = lookup_kind(tval, ctr);
6766 if (ctr == (menu_line-1))
6768 strcpy(dummy, "¡Õ");
6770 strcpy(dummy, "> ");
6772 else strcpy(dummy, " ");
6775 /* letter/number for power selection */
6782 letter = '0' + ctr - 26;
6783 sprintf(dummy, "%c)",letter);
6785 x1 = ((ctr < 18) ? x : x + 40);
6786 y1 = ((ctr < 18) ? y + ctr : y + ctr - 18);
6787 level = (tval == TV_ROD ? k_info[k_idx].level * 5 / 6 - 5 : k_info[k_idx].level);
6788 chance = level * 4 / 5 + 20;
6789 chance -= 3 * (adj_mag_stat[p_ptr->stat_ind[mp_ptr->spell_stat]] - 1);
6791 if (p_ptr->lev > level)
6793 chance -= 3 * (p_ptr->lev - level);
6795 if (p_ptr->pseikaku == SEIKAKU_NAMAKE) chance += 10;
6796 if (p_ptr->heavy_spell) chance += 20;
6797 if(p_ptr->dec_mana && p_ptr->easy_spell) chance-=4;
6798 else if (p_ptr->easy_spell) chance-=3;
6799 else if (p_ptr->dec_mana) chance-=2;
6800 chance = MAX(chance, adj_mag_fail[p_ptr->stat_ind[mp_ptr->spell_stat]]);
6801 /* Stunning makes spells harder */
6802 if (p_ptr->stun > 50) chance += 25;
6803 else if (p_ptr->stun) chance += 15;
6805 if (chance > 95) chance = 95;
6807 if(p_ptr->dec_mana) chance--;
6808 if (p_ptr->heavy_spell) chance += 5;
6816 strcat(dummy, format(" %-22.22s ½¼Å¶:%2d/%2d%3d%%", k_name + k_info[k_idx].name, p_ptr->magic_num1[ctr+ext] ? (p_ptr->magic_num1[ctr+ext] - 1) / (0x10000L * k_info[k_idx].pval) +1 : 0, p_ptr->magic_num2[ctr+ext], chance));
6817 if (p_ptr->magic_num1[ctr+ext] > k_info[k_idx].pval * (p_ptr->magic_num2[ctr+ext]-1) * 0x10000L) col = TERM_RED;
6821 strcat(dummy, format(" %-22.22s %2d/%2d %3d%%", k_name + k_info[k_idx].name, (s16b)(p_ptr->magic_num1[ctr+ext]/0x10000), p_ptr->magic_num2[ctr+ext], chance));
6822 if (p_ptr->magic_num1[ctr+ext] < 0x10000L) col = TERM_RED;
6827 c_prt(col, dummy, y1, x1);
6837 /* Restore the screen */
6847 if (isalpha(choice))
6850 ask = (isupper(choice));
6853 if (ask) choice = tolower(choice);
6855 /* Extract request */
6856 i = (islower(choice) ? A2I(choice) : -1);
6860 ask = FALSE; /* Can't uppercase digits */
6862 i = choice - '0' + 26;
6866 /* Totally Illegal */
6867 if ((i < 0) || (i > 36) || !p_ptr->magic_num2[i+ext])
6882 (void) strnfmt(tmp_val, 78, "%s¤ò»È¤¤¤Þ¤¹¤«¡© ", k_name + k_info[lookup_kind(tval ,i)].name);
6884 (void) strnfmt(tmp_val, 78, "Use %s?", k_name + k_info[lookup_kind(tval ,i)].name);
6887 /* Belay that order */
6888 if (!get_check(tmp_val)) continue;
6892 if (p_ptr->magic_num1[ext+i] > k_info[lookup_kind(tval, i)].pval * (p_ptr->magic_num2[ext+i] - 1) * 0x10000L)
6895 msg_print("¤½¤ÎËâË¡¤Ï¤Þ¤À½¼Å¶¤·¤Æ¤¤¤ëºÇÃæ¤À¡£");
6897 msg_print("The magic are still charging.");
6900 if (use_menu) ask = TRUE;
6906 if (p_ptr->magic_num1[ext+i] < 0x10000L)
6909 msg_print("¤½¤ÎËâË¡¤Ï»ÈÍѲó¿ô¤¬ÀÚ¤ì¤Æ¤¤¤ë¡£");
6911 msg_print("The magic has no charges left.");
6914 if (use_menu) ask = TRUE;
6924 /* Restore the screen */
6925 if (redraw) screen_load();
6927 if (!flag) return -1;
6931 #endif /* ALLOW_REPEAT */
6935 void do_cmd_magic_eater(void)
6937 int item, dir, chance, level, k_idx, tval, sval;
6938 bool use_charge = TRUE;
6940 /* Not when confused */
6941 if (p_ptr->confused)
6944 msg_print("º®Í𤷤Ƥ¤¤Æ¾§¤¨¤é¤ì¤Ê¤¤¡ª");
6946 msg_print("You are too confused!");
6952 item = select_magic_eater(0);
6958 if (item > 71) {tval = TV_ROD;sval = item - 72;}
6959 else if (item > 35) {tval = TV_WAND;sval = item - 36;}
6960 else {tval = TV_STAFF;sval = item;}
6961 k_idx = lookup_kind(tval, sval);
6963 level = (tval == TV_ROD ? k_info[k_idx].level * 5 / 6 - 5 : k_info[k_idx].level);
6964 chance = level * 4 / 5 + 20;
6965 chance -= 3 * (adj_mag_stat[p_ptr->stat_ind[mp_ptr->spell_stat]] - 1);
6967 if (p_ptr->lev > level)
6969 chance -= 3 * (p_ptr->lev - level);
6971 if (p_ptr->pseikaku == SEIKAKU_NAMAKE) chance += 10;
6972 if (p_ptr->heavy_spell) chance += 20;
6973 if(p_ptr->dec_mana && p_ptr->easy_spell) chance-=4;
6974 else if (p_ptr->easy_spell) chance-=3;
6975 else if (p_ptr->dec_mana) chance-=2;
6976 chance = MAX(chance, adj_mag_fail[p_ptr->stat_ind[mp_ptr->spell_stat]]);
6977 /* Stunning makes spells harder */
6978 if (p_ptr->stun > 50) chance += 25;
6979 else if (p_ptr->stun) chance += 15;
6981 if (chance > 95) chance = 95;
6983 if(p_ptr->dec_mana) chance--;
6984 if (p_ptr->heavy_spell) chance += 5;
6986 if (rand_int(100) < chance)
6988 if (flush_failure) flush();
6991 msg_print("¼öʸ¤ò¤¦¤Þ¤¯¾§¤¨¤é¤ì¤Ê¤«¤Ã¤¿¡ª");
6993 msg_format("You failed to get the magic off!");
6997 if (randint(100) >= chance)
6998 chg_virtue(V_CHANCE,-1);
7007 if ((sval >= SV_ROD_MIN_DIRECTION) && (sval != SV_ROD_HAVOC))
7008 if (!get_aim_dir(&dir)) return;
7009 rod_effect(sval, dir, &use_charge, TRUE);
7010 if (!use_charge) return;
7012 else if (tval == TV_WAND)
7014 if (!get_aim_dir(&dir)) return;
7015 wand_effect(sval, dir, TRUE);
7019 staff_effect(sval, &use_charge, TRUE);
7020 if (!use_charge) return;
7022 if (randint(100) < chance)
7023 chg_virtue(V_CHANCE,1);
7026 if (tval == TV_ROD) p_ptr->magic_num1[item] += k_info[k_idx].pval * 0x10000L;
7027 else p_ptr->magic_num1[item] -= 0x10000L;