4 * Copyright (c) 1997 Ben Harrison, James E. Wilson, Robert A. Koeneke
6 * This software may be copied and distributed for educational, research,
7 * and not for profit purposes provided that this copyright and statement
8 * are included in all such copies. Other copyrights may also apply.
11 /* Purpose: Racial powers (and mutations) */
16 * Hook to determine if an object is contertible in an arrow/bolt
18 static bool item_tester_hook_convertible(object_type *o_ptr)
20 if((o_ptr->tval==TV_JUNK) || (o_ptr->tval==TV_SKELETON)) return TRUE;
22 if ((o_ptr->tval == TV_CORPSE) && (o_ptr->sval == SV_SKELETON)) return TRUE;
29 * do_cmd_cast calls this function if the player's class
32 static bool do_cmd_archer(void)
41 char o_name[MAX_NLEN];
47 sprintf(com, "[S]ÃÆ, [A]Ìð, [B]¥¯¥í¥¹¥Ü¥¦¤ÎÌð :");
49 sprintf(com, "Create [S]hots, Create [A]rrow or Create [B]olt ?");
51 else if(p_ptr->lev >= 10)
53 sprintf(com, "[S]ÃÆ, [A]Ìð:");
55 sprintf(com, "Create [S]hots or Create [A]rrow ?");
59 sprintf(com, "[S]ÃÆ:");
61 sprintf(com, "Create [S]hots ?");
67 msg_print("º®Í𤷤Ƥ롪");
69 msg_print("You are too confused!");
77 msg_print("Ìܤ¬¸«¤¨¤Ê¤¤¡ª");
79 msg_print("You are blind!");
86 if (!get_com(com, &ch, TRUE))
90 if (ch == 'S' || ch == 's')
95 if ((ch == 'A' || ch == 'a')&&(p_ptr->lev >= 10))
100 if ((ch == 'B' || ch == 'b')&&(p_ptr->lev >= 20))
107 /**********Create shots*********/
113 if (!get_rep_dir(&dir, FALSE)) return FALSE;
118 if (!have_flag(f_info[get_feat_mimic(c_ptr)].flags, FF_CAN_DIG))
121 msg_print("¤½¤³¤Ë¤Ï´äÀФ¬¤Ê¤¤¡£");
123 msg_print("You need pile of rubble.");
127 else if (!cave_have_flag_grid(c_ptr, FF_CAN_DIG) || !cave_have_flag_grid(c_ptr, FF_HURT_ROCK))
130 msg_print("¹Å¤¹¤®¤ÆÊø¤»¤Ê¤«¤Ã¤¿¡£");
132 msg_print("You failed to make ammo.");
139 /* Get local object */
142 /* Hack -- Give the player some small firestones */
143 object_prep(q_ptr, lookup_kind(TV_SHOT, m_bonus(1, p_ptr->lev) + 1));
144 q_ptr->number = (byte)rand_range(15,30);
147 apply_magic(q_ptr, p_ptr->lev, AM_NO_FIXED_ART);
148 q_ptr->discount = 99;
150 slot = inven_carry(q_ptr);
152 object_desc(o_name, q_ptr, 0);
154 msg_format("%s¤òºî¤Ã¤¿¡£", o_name);
156 msg_print("You make some ammo.");
159 /* Auto-inscription */
160 if (slot > 0) autopick_alter_item(slot, FALSE);
162 /* Destroy the wall */
163 cave_alter_feat(y, x, FF_HURT_ROCK);
165 p_ptr->update |= (PU_FLOW);
168 /**********Create arrows*********/
175 item_tester_hook = item_tester_hook_convertible;
179 q = "¤É¤Î¥¢¥¤¥Æ¥à¤«¤éºî¤ê¤Þ¤¹¤«¡© ";
180 s = "ºàÎÁ¤ò»ý¤Ã¤Æ¤¤¤Ê¤¤¡£";
182 q = "Convert which item? ";
183 s = "You have no item to convert.";
185 if (!get_item(&item, q, s, (USE_INVEN | USE_FLOOR))) return FALSE;
187 /* Get the item (in the pack) */
190 q_ptr = &inventory[item];
193 /* Get the item (on the floor) */
196 q_ptr = &o_list[0 - item];
199 /* Get local object */
202 /* Hack -- Give the player some small firestones */
203 object_prep(q_ptr, lookup_kind(TV_ARROW, m_bonus(1, p_ptr->lev)+ 1));
204 q_ptr->number = (byte)rand_range(5, 10);
207 apply_magic(q_ptr, p_ptr->lev, AM_NO_FIXED_ART);
209 q_ptr->discount = 99;
211 object_desc(o_name, q_ptr, 0);
213 msg_format("%s¤òºî¤Ã¤¿¡£", o_name);
215 msg_print("You make some ammo.");
220 inven_item_increase(item, -1);
221 inven_item_describe(item);
222 inven_item_optimize(item);
226 floor_item_increase(0 - item, -1);
227 floor_item_describe(0 - item);
228 floor_item_optimize(0 - item);
231 slot = inven_carry(q_ptr);
233 /* Auto-inscription */
234 if (slot > 0) autopick_alter_item(slot, FALSE);
236 /**********Create bolts*********/
243 item_tester_hook = item_tester_hook_convertible;
247 q = "¤É¤Î¥¢¥¤¥Æ¥à¤«¤éºî¤ê¤Þ¤¹¤«¡© ";
248 s = "ºàÎÁ¤ò»ý¤Ã¤Æ¤¤¤Ê¤¤¡£";
250 q = "Convert which item? ";
251 s = "You have no item to convert.";
253 if (!get_item(&item, q, s, (USE_INVEN | USE_FLOOR))) return FALSE;
255 /* Get the item (in the pack) */
258 q_ptr = &inventory[item];
261 /* Get the item (on the floor) */
264 q_ptr = &o_list[0 - item];
267 /* Get local object */
270 /* Hack -- Give the player some small firestones */
271 object_prep(q_ptr, lookup_kind(TV_BOLT, m_bonus(1, p_ptr->lev)+1));
272 q_ptr->number = (byte)rand_range(4, 8);
275 apply_magic(q_ptr, p_ptr->lev, AM_NO_FIXED_ART);
277 q_ptr->discount = 99;
279 object_desc(o_name, q_ptr, 0);
281 msg_format("%s¤òºî¤Ã¤¿¡£", o_name);
283 msg_print("You make some ammo.");
288 inven_item_increase(item, -1);
289 inven_item_describe(item);
290 inven_item_optimize(item);
294 floor_item_increase(0 - item, -1);
295 floor_item_describe(0 - item);
296 floor_item_optimize(0 - item);
299 slot = inven_carry(q_ptr);
301 /* Auto-inscription */
302 if (slot > 0) autopick_alter_item(slot, FALSE);
307 bool gain_magic(void)
314 char o_name[MAX_NLEN];
316 /* Only accept legal items */
317 item_tester_hook = item_tester_hook_recharge;
321 q = "¤É¤Î¥¢¥¤¥Æ¥à¤ÎËâÎϤò¼è¤ê¹þ¤ß¤Þ¤¹¤«? ";
322 s = "ËâÎϤò¼è¤ê¹þ¤á¤ë¥¢¥¤¥Æ¥à¤¬¤Ê¤¤¡£";
324 q = "Gain power of which item? ";
325 s = "You have nothing to gain power.";
328 if (!get_item(&item, q, s, (USE_INVEN | USE_FLOOR))) return (FALSE);
330 /* Get the item (in the pack) */
333 o_ptr = &inventory[item];
336 /* Get the item (on the floor) */
339 o_ptr = &o_list[0 - item];
342 if (o_ptr->tval == TV_STAFF && o_ptr->sval == SV_STAFF_NOTHING)
345 msg_print("¤³¤Î¾ó¤Ë¤Ïȯư¤Î°Ù¤ÎǽÎϤϲ¿¤âÈ÷¤ï¤Ã¤Æ¤¤¤Ê¤¤¤è¤¦¤À¡£");
347 msg_print("This staff doesn't have any magical ability.");
353 if (!object_is_known(o_ptr))
356 msg_print("´ÕÄꤵ¤ì¤Æ¤¤¤Ê¤¤¤È¼è¤ê¹þ¤á¤Ê¤¤¡£");
358 msg_print("You need to identify before absorbing.");
366 msg_print("½¼Å¶Ãæ¤Î¥¢¥¤¥Æ¥à¤Ï¼è¤ê¹þ¤á¤Ê¤¤¡£");
368 msg_print("This item is still charging.");
374 if (o_ptr->tval == TV_ROD)
376 else if (o_ptr->tval == TV_WAND)
379 if (o_ptr->tval == TV_ROD)
381 p_ptr->magic_num2[o_ptr->sval + ext] += o_ptr->number;
382 if (p_ptr->magic_num2[o_ptr->sval + ext] > 99) p_ptr->magic_num2[o_ptr->sval + ext] = 99;
387 for (num = o_ptr->number; num; num--)
390 if (o_ptr->tval == TV_WAND) gain_num = (pval + num - 1) / num;
391 if (p_ptr->magic_num2[o_ptr->sval + ext])
394 gain_num = (gain_num/3 + randint0(gain_num/3)) / 256;
395 if (gain_num < 1) gain_num = 1;
397 p_ptr->magic_num2[o_ptr->sval + ext] += gain_num;
398 if (p_ptr->magic_num2[o_ptr->sval + ext] > 99) p_ptr->magic_num2[o_ptr->sval + ext] = 99;
399 p_ptr->magic_num1[o_ptr->sval + ext] += pval * 0x10000;
400 if (p_ptr->magic_num1[o_ptr->sval + ext] > 99 * 0x10000) p_ptr->magic_num1[o_ptr->sval + ext] = 99 * 0x10000;
401 if (p_ptr->magic_num1[o_ptr->sval + ext] > p_ptr->magic_num2[o_ptr->sval + ext] * 0x10000) p_ptr->magic_num1[o_ptr->sval + ext] = p_ptr->magic_num2[o_ptr->sval + ext] * 0x10000;
402 if (o_ptr->tval == TV_WAND) pval -= (pval + num - 1) / num;
406 object_desc(o_name, o_ptr, 0);
409 msg_format("%s¤ÎËâÎϤò¼è¤ê¹þ¤ó¤À¡£", o_name);
411 msg_format("You absorb magic of %s.", o_name);
414 /* Eliminate the item (from the pack) */
417 inven_item_increase(item, -999);
418 inven_item_describe(item);
419 inven_item_optimize(item);
422 /* Eliminate the item (from the floor) */
425 floor_item_increase(0 - item, -999);
426 floor_item_describe(0 - item);
427 floor_item_optimize(0 - item);
434 static bool choose_kamae(void)
444 msg_print("º®Í𤷤Ƥ¤¤Æ¹½¤¨¤é¤ì¤Ê¤¤¡ª");
446 msg_print("Too confused.");
455 prt(" a) ¹½¤¨¤ò¤È¤¯", 2, 20);
457 prt(" a) No form", 2, 20);
460 for (i = 0; i < MAX_KAMAE; i++)
462 if (p_ptr->lev >= kamae_shurui[i].min_level)
464 sprintf(buf," %c) %-12s %s",I2A(i+1), kamae_shurui[i].desc, kamae_shurui[i].info);
471 prt(" ¤É¤Î¹½¤¨¤ò¤È¤ê¤Þ¤¹¤«¡©", 1, 14);
473 prt(" Choose Form: ", 1, 14);
480 if (choice == ESCAPE)
485 else if ((choice == 'a') || (choice == 'A'))
487 if (p_ptr->action == ACTION_KAMAE)
489 set_action(ACTION_NONE);
493 msg_print("¤â¤È¤â¤È¹½¤¨¤Æ¤¤¤Ê¤¤¡£");
495 msg_print("You are not assuming a posture.");
500 else if ((choice == 'b') || (choice == 'B'))
505 else if (((choice == 'c') || (choice == 'C')) && (p_ptr->lev > 29))
510 else if (((choice == 'd') || (choice == 'D')) && (p_ptr->lev > 34))
515 else if (((choice == 'e') || (choice == 'E')) && (p_ptr->lev > 39))
521 set_action(ACTION_KAMAE);
523 if (p_ptr->special_defense & (KAMAE_GENBU << new_kamae))
526 msg_print("¹½¤¨Ä¾¤·¤¿¡£");
528 msg_print("You reassume a posture.");
533 p_ptr->special_defense &= ~(KAMAE_MASK);
534 p_ptr->update |= (PU_BONUS);
535 p_ptr->redraw |= (PR_STATE);
537 msg_format("%s¤Î¹½¤¨¤ò¤È¤Ã¤¿¡£",kamae_shurui[new_kamae].desc);
539 msg_format("You assume a posture of %s form.",kamae_shurui[new_kamae].desc);
541 p_ptr->special_defense |= (KAMAE_GENBU << new_kamae);
543 p_ptr->redraw |= PR_STATE;
548 static bool choose_kata(void)
558 msg_print("º®Í𤷤Ƥ¤¤Æ¹½¤¨¤é¤ì¤Ê¤¤¡ª");
560 msg_print("Too confused.");
568 msg_print("°Õ¼±¤¬¤Ï¤Ã¤¤ê¤È¤·¤Ê¤¤¡£");
570 msg_print("You are not clear headed");
578 msg_print("ÂΤ¬¿Ì¤¨¤Æ¹½¤¨¤é¤ì¤Ê¤¤¡ª");
580 msg_print("You are trembling with fear!");
589 prt(" a) ·¿¤òÊø¤¹", 2, 20);
591 prt(" a) No Form", 2, 20);
594 for (i = 0; i < MAX_KATA; i++)
596 if (p_ptr->lev >= kata_shurui[i].min_level)
599 sprintf(buf," %c) %s¤Î·¿ %s",I2A(i+1), kata_shurui[i].desc, kata_shurui[i].info);
601 sprintf(buf," %c) Form of %-12s %s",I2A(i+1), kata_shurui[i].desc, kata_shurui[i].info);
609 prt(" ¤É¤Î·¿¤Ç¹½¤¨¤Þ¤¹¤«¡©", 1, 14);
611 prt(" Choose Form: ", 1, 14);
618 if (choice == ESCAPE)
623 else if ((choice == 'a') || (choice == 'A'))
625 if (p_ptr->action == ACTION_KATA)
627 set_action(ACTION_NONE);
631 msg_print("¤â¤È¤â¤È¹½¤¨¤Æ¤¤¤Ê¤¤¡£");
633 msg_print("You are not assuming posture.");
638 else if ((choice == 'b') || (choice == 'B'))
643 else if (((choice == 'c') || (choice == 'C')) && (p_ptr->lev > 29))
648 else if (((choice == 'd') || (choice == 'D')) && (p_ptr->lev > 34))
653 else if (((choice == 'e') || (choice == 'E')) && (p_ptr->lev > 39))
659 set_action(ACTION_KATA);
661 if (p_ptr->special_defense & (KATA_IAI << new_kata))
664 msg_print("¹½¤¨Ä¾¤·¤¿¡£");
666 msg_print("You reassume a posture.");
671 p_ptr->special_defense &= ~(KATA_MASK);
672 p_ptr->update |= (PU_BONUS);
673 p_ptr->update |= (PU_MONSTERS);
675 msg_format("%s¤Î·¿¤Ç¹½¤¨¤¿¡£",kata_shurui[new_kata].desc);
677 msg_format("You assume a posture of %s form.",kata_shurui[new_kata].desc);
679 p_ptr->special_defense |= (KATA_IAI << new_kata);
681 p_ptr->redraw |= (PR_STATE);
682 p_ptr->redraw |= (PR_STATUS);
688 typedef struct power_desc_type power_desc_type;
690 struct power_desc_type
702 * Returns the chance to activate a racial power/mutation
704 static int racial_chance(power_desc_type *pd_ptr)
706 s16b min_level = pd_ptr->level;
707 int difficulty = pd_ptr->fail;
712 int stat = p_ptr->stat_cur[pd_ptr->stat];
714 /* No chance for success */
715 if ((p_ptr->lev < min_level) || p_ptr->confused)
720 if (difficulty == 0) return 100;
722 /* Calculate difficulty */
725 difficulty += p_ptr->stun;
727 else if (p_ptr->lev > min_level)
729 int lev_adj = ((p_ptr->lev - min_level) / 3);
730 if (lev_adj > 10) lev_adj = 10;
731 difficulty -= lev_adj;
734 if (difficulty < 5) difficulty = 5;
736 /* We only need halfs of the difficulty */
737 difficulty = difficulty / 2;
739 for (i = 1; i <= stat; i++)
741 val = i - difficulty;
743 sum += (val <= difficulty) ? val : difficulty;
749 return (((sum * 100) / difficulty) / stat);
753 static int racial_cost;
756 * Note: return value indicates that we have succesfully used the power
757 * 1: Succeeded, 0: Cancelled, -1: Failed
759 static int racial_aux(power_desc_type *pd_ptr)
761 s16b min_level = pd_ptr->level;
762 int use_stat = pd_ptr->stat;
763 int difficulty = pd_ptr->fail;
766 racial_cost = pd_ptr->cost;
768 /* Not enough mana - use hp */
769 if (p_ptr->csp < racial_cost) use_hp = racial_cost - p_ptr->csp;
771 /* Power is not available yet */
772 if (p_ptr->lev < min_level)
775 msg_format("¤³¤ÎǽÎϤò»ÈÍѤ¹¤ë¤Ë¤Ï¥ì¥Ù¥ë %d ¤Ë㤷¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£", min_level);
777 msg_format("You need to attain level %d to use this power.", min_level);
785 else if (p_ptr->confused)
788 msg_print("º®Í𤷤Ƥ¤¤Æ¤½¤ÎǽÎϤϻȤ¨¤Ê¤¤¡£");
790 msg_print("You are too confused to use this power.");
798 else if (p_ptr->chp < use_hp)
801 if (!get_check("ËÜÅö¤Ëº£¤Î¿ê¼å¤·¤¿¾õÂ֤Ǥ³¤ÎǽÎϤò»È¤¤¤Þ¤¹¤«¡©"))
803 if (!get_check("Really use the power in your weakened state? "))
811 /* Else attempt to do it! */
817 difficulty += p_ptr->stun;
819 else if (p_ptr->lev > min_level)
821 int lev_adj = ((p_ptr->lev - min_level) / 3);
822 if (lev_adj > 10) lev_adj = 10;
823 difficulty -= lev_adj;
826 if (difficulty < 5) difficulty = 5;
829 /* take time and pay the price */
833 if (randint1(p_ptr->stat_cur[use_stat]) >=
834 ((difficulty / 2) + randint1(difficulty / 2)))
839 if (flush_failure) flush();
841 msg_print("½¼Ê¬¤Ë½¸Ãæ¤Ç¤¤Ê¤«¤Ã¤¿¡£");
843 msg_print("You've failed to concentrate hard enough.");
850 static bool cmd_racial_power_aux(s32b command)
852 s16b plev = p_ptr->lev;
857 switch (p_ptr->pclass)
864 for (i = 0; i < 6; i++)
867 y = py + ddy_ddd[dir];
868 x = px + ddx_ddd[dir];
871 /* Hack -- attack monsters */
877 msg_print("¹¶·â¤¬¶õ¤ò¤¤Ã¤¿¡£");
879 msg_print("You attack the empty air.");
886 case CLASS_HIGH_MAGE:
889 if (!eat_magic(p_ptr->lev * 2)) return FALSE;
894 if (is_good_realm(p_ptr->realm1))
896 if (!bless_weapon()) return FALSE;
900 (void)dispel_monsters(plev * 4);
901 turn_monsters(plev * 4);
902 banish_monsters(plev * 4);
910 if (!get_rep_dir(&dir, FALSE)) return FALSE;
913 if (cave[y][x].m_idx)
916 if (randint0(p_ptr->skill_dis) < 7)
918 msg_print("¤¦¤Þ¤¯Æ¨¤²¤é¤ì¤Ê¤«¤Ã¤¿¡£");
920 msg_print("You are failed to run away.");
922 else teleport_player(30, 0L);
927 msg_print("¤½¤ÎÊý¸þ¤Ë¤Ï¥â¥ó¥¹¥¿¡¼¤Ï¤¤¤Þ¤»¤ó¡£");
929 msg_print("You don't see any monster in this direction");
939 msg_print("Ũ¤òÄ´ºº¤·¤¿...");
941 msg_print("You examine your foes...");
949 if (!get_aim_dir(&dir)) return FALSE;
950 fire_beam(is_good_realm(p_ptr->realm1) ? GF_HOLY_FIRE : GF_HELL_FIRE,
954 case CLASS_WARRIOR_MAGE:
959 int gain_sp = take_hit(DAMAGE_USELIFE, p_ptr->lev, "£È£Ð¤«¤é£Í£Ð¤Ø¤Î̵ËŤÊÊÑ´¹", -1) / 5;
961 int gain_sp = take_hit(DAMAGE_USELIFE, p_ptr->lev, "thoughtless convertion from HP to SP", -1) / 5;
965 p_ptr->csp += gain_sp;
966 if (p_ptr->csp > p_ptr->msp)
968 p_ptr->csp = p_ptr->msp;
974 msg_print("ÊÑ´¹¤Ë¼ºÇÔ¤·¤¿¡£");
976 msg_print("You failed to convert.");
979 else if (command == -4)
981 if (p_ptr->csp >= p_ptr->lev / 5)
983 p_ptr->csp -= p_ptr->lev / 5;
984 hp_player(p_ptr->lev);
988 msg_print("ÊÑ´¹¤Ë¼ºÇÔ¤·¤¿¡£");
990 msg_print("You failed to convert.");
994 /* Redraw mana and hp */
995 p_ptr->redraw |= (PR_HP | PR_MANA);
999 case CLASS_CHAOS_WARRIOR:
1002 msg_print("ÊÕ¤ê¤òâˤó¤À...");
1004 msg_print("You glare nearby monsters...");
1007 stun_monsters(p_ptr->lev * 4);
1008 confuse_monsters(p_ptr->lev * 4);
1009 turn_monsters(p_ptr->lev * 4);
1010 stasis_monsters(p_ptr->lev * 4);
1015 if (!(empty_hands(TRUE) & EMPTY_HAND_RARM))
1018 msg_print("ÁǼꤸ¤ã¤Ê¤¤¤È¤Ç¤¤Þ¤»¤ó¡£");
1020 msg_print("You need to be bare hand.");
1027 msg_print("¾èÇÏÃæ¤Ï¤Ç¤¤Þ¤»¤ó¡£");
1029 msg_print("You need to get off a pet.");
1036 if (!choose_kamae()) return FALSE;
1037 p_ptr->update |= (PU_BONUS);
1039 else if (command == -4)
1043 if (!get_rep_dir(&dir, FALSE)) return FALSE;
1046 if (cave[y][x].m_idx)
1049 if (one_in_(2)) msg_print("¤¢¡¼¤¿¤¿¤¿¤¿¤¿¤¿¤¿¤¿¤¿¤¿¤¿¤¿¤¿¤¿¤¿¤¿¤¿¤¿¤¿¤¿¤¿¤¿¡ª¡ª¡ª");
1050 else msg_print("¥ª¥é¥ª¥é¥ª¥é¥ª¥é¥ª¥é¥ª¥é¥ª¥é¥ª¥é¥ª¥é¥ª¥é¥ª¥é¥ª¥é¡ª¡ª¡ª");
1052 if (one_in_(2)) msg_print("Ahhhtatatatatatatatatatatatatatataatatatatattaaaaa!!!!");
1053 else msg_print("Oraoraoraoraoraoraoraoraoraoraoraoraoraoraoraoraora!!!!");
1057 if (cave[y][x].m_idx)
1062 p_ptr->energy_need += ENERGY_NEED();
1067 msg_print("¤½¤ÎÊý¸þ¤Ë¤Ï¥â¥ó¥¹¥¿¡¼¤Ï¤¤¤Þ¤»¤ó¡£");
1069 msg_print("You don't see any monster in this direction");
1077 case CLASS_MINDCRAFTER:
1078 case CLASS_FORCETRAINER:
1083 msg_print("º£¤Ï¥Ú¥Ã¥È¤òÁà¤ë¤³¤È¤Ë½¸Ã椷¤Æ¤¤¤Ê¤¤¤È¡£");
1085 msg_print("You need concentration on the pets now.");
1090 msg_print("¾¯¤·Æ¬¤¬¥Ï¥Ã¥¥ê¤·¤¿¡£");
1092 msg_print("You feel your head clear a little.");
1095 p_ptr->csp += (3 + p_ptr->lev/20);
1096 if (p_ptr->csp >= p_ptr->msp)
1098 p_ptr->csp = p_ptr->msp;
1099 p_ptr->csp_frac = 0;
1103 p_ptr->redraw |= (PR_MANA);
1110 if (!get_aim_dir(&dir)) return FALSE;
1112 fire_beam(GF_PHOTO, dir, 1);
1114 else if (command == -4)
1116 if (!identify_fully(FALSE)) return FALSE;
1120 case CLASS_IMITATOR:
1123 if (!do_cmd_mane(TRUE)) return FALSE;
1126 case CLASS_BEASTMASTER:
1130 if (!get_aim_dir(&dir)) return FALSE;
1131 (void)fire_ball_hide(GF_CONTROL_LIVING, dir, p_ptr->lev, 0);
1133 else if (command == -4)
1135 project_hack(GF_CONTROL_LIVING, p_ptr->lev);
1141 if (!do_cmd_archer()) return FALSE;
1144 case CLASS_MAGIC_EATER:
1146 if (!gain_magic()) return FALSE;
1151 /* Singing is already stopped */
1152 if (!p_ptr->magic_num1[0] && !p_ptr->magic_num1[1]) return FALSE;
1158 case CLASS_RED_MAGE:
1163 if (!p_ptr->paralyzed)
1171 int max_csp = MAX(p_ptr->msp*4, p_ptr->lev*5+5);
1176 msg_print("º£¤Ï¥Ú¥Ã¥È¤òÁà¤ë¤³¤È¤Ë½¸Ã椷¤Æ¤¤¤Ê¤¤¤È¡£");
1178 msg_print("You need concentration on the pets now.");
1182 if (p_ptr->special_defense & KATA_MASK)
1185 msg_print("º£¤Ï¹½¤¨¤Ë½¸Ã椷¤Æ¤¤¤ë¡£");
1187 msg_print("You need concentration on your form.");
1192 msg_print("Àº¿À¤ò½¸Ã椷¤Æµ¤¹ç¤¤¤òί¤á¤¿¡£");
1194 msg_print("You concentrate to charge your power.");
1197 p_ptr->csp += p_ptr->msp / 2;
1198 if (p_ptr->csp >= max_csp)
1200 p_ptr->csp = max_csp;
1201 p_ptr->csp_frac = 0;
1205 p_ptr->redraw |= (PR_MANA);
1207 else if (command == -4)
1209 if (!buki_motteruka(INVEN_RARM) && !buki_motteruka(INVEN_LARM))
1212 msg_print("Éð´ï¤ò»ý¤¿¤Ê¤¤¤È¤¤¤±¤Þ¤»¤ó¡£");
1214 msg_print("You need to wield a weapon.");
1218 if (!choose_kata()) return FALSE;
1219 p_ptr->update |= (PU_BONUS);
1223 case CLASS_BLUE_MAGE:
1225 if (p_ptr->action == ACTION_LEARN)
1227 set_action(ACTION_NONE);
1231 set_action(ACTION_LEARN);
1239 monster_type *m_ptr;
1240 monster_race *r_ptr;
1246 msg_print("º£¤Ï¾èÇÏÃæ¤À¡£");
1248 msg_print("You ARE riding.");
1252 if (!do_riding(TRUE)) return TRUE;
1253 m_ptr = &m_list[p_ptr->riding];
1254 r_ptr = &r_info[m_ptr->r_idx];
1255 monster_desc(m_name, m_ptr, 0);
1257 msg_format("%s¤Ë¾è¤Ã¤¿¡£",m_name);
1259 msg_format("You ride on %s.",m_name);
1261 if (is_pet(m_ptr)) break;
1262 rlev = r_ptr->level;
1263 if (r_ptr->flags1 & RF1_UNIQUE) rlev = rlev * 3 / 2;
1264 if (rlev > 60) rlev = 60+(rlev-60)/2;
1265 if ((randint1(p_ptr->skill_exp[GINOU_RIDING] / 120 + p_ptr->lev * 2 / 3) > rlev)
1266 && one_in_(2) && !p_ptr->inside_arena && !p_ptr->inside_battle
1267 && !(r_ptr->flags7 & (RF7_GUARDIAN)) && !(r_ptr->flags1 & (RF1_QUESTOR))
1268 && (rlev < p_ptr->lev * 3 / 2 + randint0(p_ptr->lev / 5)))
1271 msg_format("%s¤ò¼ê¤Ê¤º¤±¤¿¡£",m_name);
1273 msg_format("You tame %s.",m_name);
1280 msg_format("%s¤Ë¿¶¤êÍî¤È¤µ¤ì¤¿¡ª",m_name);
1282 msg_format("You have thrown off by %s.",m_name);
1287 /* ÍîÇϽèÍý¤Ë¼ºÇÔ¤·¤Æ¤â¤È¤Ë¤«¤¯¾èÇϲò½ü */
1292 case CLASS_BERSERKER:
1294 if (!word_of_recall()) return FALSE;
1299 if (p_ptr->lev > 29)
1301 if (!identify_fully(TRUE)) return FALSE;
1305 if (!ident_spell(TRUE)) return FALSE;
1309 case CLASS_MIRROR_MASTER:
1313 /* Explode all mirrors */
1314 remove_all_mirrors(TRUE);
1316 else if (command == -4)
1321 msg_print("º£¤Ï¥Ú¥Ã¥È¤òÁà¤ë¤³¤È¤Ë½¸Ã椷¤Æ¤¤¤Ê¤¤¤È¡£");
1323 msg_print("You need concentration on the pets now.");
1327 if (is_mirror_grid(&cave[py][px]))
1330 msg_print("¾¯¤·Æ¬¤¬¥Ï¥Ã¥¥ê¤·¤¿¡£");
1332 msg_print("You feel your head clear a little.");
1335 p_ptr->csp += (5 + p_ptr->lev * p_ptr->lev / 100);
1336 if (p_ptr->csp >= p_ptr->msp)
1338 p_ptr->csp = p_ptr->msp;
1339 p_ptr->csp_frac = 0;
1343 p_ptr->redraw |= (PR_MANA);
1348 msg_print("¶À¤Î¾å¤Ç¤Ê¤¤¤È½¸Ãæ¤Ç¤¤Ê¤¤¡ª");
1350 msg_print("Here are not any mirrors!");
1358 if (p_ptr->action == ACTION_HAYAGAKE) set_action(ACTION_NONE);
1359 else set_action(ACTION_HAYAGAKE);
1365 else if (p_ptr->mimic_form)
1367 switch (p_ptr->mimic_form)
1370 case MIMIC_DEMON_LORD:
1372 int type = (one_in_(2) ? GF_NETHER : GF_FIRE);
1373 if (!get_aim_dir(&dir)) return FALSE;
1374 if (music_singing_any()) stop_singing();
1376 msg_format("¤¢¤Ê¤¿¤Ï%s¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£",((type == GF_NETHER) ? "ÃϹö" : "²Ð±ê"));
1378 msg_format("You breathe %s.",((type == GF_NETHER) ? "nether" : "fire"));
1381 fire_ball(type, dir, plev * 3, -(plev / 15) - 1);
1385 if (d_info[dungeon_type].flags1 & DF1_NO_MELEE)
1388 msg_print("¤Ê¤¼¤«¹¶·â¤¹¤ë¤³¤È¤¬¤Ç¤¤Ê¤¤¡£");
1390 msg_print("Something prevent you from attacking.");
1396 int y, x, dummy = 0;
1399 /* Only works on adjacent monsters */
1400 if (!get_rep_dir(&dir, FALSE)) return FALSE; /* was get_aim_dir */
1403 c_ptr = &cave[y][x];
1405 if (music_singing_any()) stop_singing();
1410 msg_print("²¿¤â¤Ê¤¤¾ì½ê¤Ë³ú¤ß¤Ä¤¤¤¿¡ª");
1412 msg_print("You bite into thin air!");
1419 msg_print("¤¢¤Ê¤¿¤Ï¥Ë¥ä¥ê¤È¤·¤Æ²ç¤ò¤à¤¤¤¿...");
1421 msg_print("You grin and bare your fangs...");
1424 dummy = plev + randint1(plev) * MAX(1, plev / 10); /* Dmg */
1425 if (drain_life(dir, dummy))
1427 if (p_ptr->food < PY_FOOD_FULL)
1428 /* No heal if we are "full" */
1429 (void)hp_player(dummy);
1432 msg_print("¤¢¤Ê¤¿¤Ï¶õÊ¢¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£");
1434 msg_print("You were not hungry.");
1437 /* Gain nutritional sustenance: 150/hp drained */
1438 /* A Food ration gives 5000 food points (by contrast) */
1439 /* Don't ever get more than "Full" this way */
1440 /* But if we ARE Gorged, it won't cure us */
1441 dummy = p_ptr->food + MIN(5000, 100 * dummy);
1442 if (p_ptr->food < PY_FOOD_MAX) /* Not gorged already */
1443 (void)set_food(dummy >= PY_FOOD_MAX ? PY_FOOD_MAX - 1 : dummy);
1447 msg_print("¤²¤§¡£¤Ò¤É¤¤Ì£¤À¡£");
1449 msg_print("Yechh. That tastes foul.");
1460 switch (p_ptr->prace)
1464 msg_print("¼þ°Ï¤òÄ´¤Ù¤¿¡£");
1466 msg_print("You examine your surroundings.");
1469 (void)detect_traps(DETECT_RAD_DEFAULT, TRUE);
1470 (void)detect_doors(DETECT_RAD_DEFAULT);
1471 (void)detect_stairs(DETECT_RAD_DEFAULT);
1479 /* Get local object */
1482 /* Create the food ration */
1483 object_prep(q_ptr, lookup_kind(TV_FOOD, SV_FOOD_RATION));
1485 /* Drop the object from heaven */
1486 (void)drop_near(q_ptr, -1, py, px);
1488 msg_print("¿©»ö¤òÎÁÍý¤·¤Æºî¤Ã¤¿¡£");
1490 msg_print("You cook some food.");
1498 msg_print("¥Ñ¥Ã¡ª");
1500 msg_print("Blink!");
1503 teleport_player(10, 0L);
1508 msg_print("ͦµ¤¤ò½Ð¤·¤¿¡£");
1510 msg_print("You play tough.");
1513 (void)set_afraid(0);
1516 case RACE_HALF_TROLL:
1518 msg_print("¤¦¤¬¤¡¤¡¡ª");
1520 msg_print("RAAAGH!");
1523 (void)set_afraid(0);
1524 (void)set_shero(10 + randint1(plev), FALSE);
1525 (void)hp_player(30);
1532 msg_print("¤¢¤Ê¤¿¤ÏÊ⤼þ¤ê»Ï¤á¤¿¡£");
1534 msg_print("You start walking around. ");
1538 else if (command == -2)
1541 msg_print("¤¢¤Ê¤¿¤Ï¡Ö¥Ñ¥¿¡¼¥ó¡×¤ò¿´¤ËÉÁ¤¤¤Æ¤½¤Î¾å¤òÊ⤤¤¿...");
1543 msg_print("You picture the Pattern in your mind and walk it...");
1546 (void)set_poisoned(0);
1551 (void)set_afraid(0);
1552 (void)do_res_stat(A_STR);
1553 (void)do_res_stat(A_INT);
1554 (void)do_res_stat(A_WIS);
1555 (void)do_res_stat(A_DEX);
1556 (void)do_res_stat(A_CON);
1557 (void)do_res_stat(A_CHR);
1558 (void)restore_level();
1562 case RACE_BARBARIAN:
1564 msg_print("¤¦¤©¤©¤ª¤ª¡ª");
1566 msg_print("Raaagh!");
1569 (void)set_afraid(0);
1570 (void)set_shero(10 + randint1(plev), FALSE);
1571 (void)hp_player(30);
1574 case RACE_HALF_OGRE:
1576 msg_print("Çúȯ¤Î¥ë¡¼¥ó¤ò¿µ½Å¤Ë»Å³Ý¤±¤¿...");
1578 msg_print("You carefully set an explosive rune...");
1584 case RACE_HALF_GIANT:
1585 if (!get_aim_dir(&dir)) return FALSE;
1586 (void)wall_to_mud(dir);
1589 case RACE_HALF_TITAN:
1591 msg_print("Ũ¤òÄ´ºº¤·¤¿...");
1593 msg_print("You examine your foes...");
1600 if (!get_aim_dir(&dir)) return FALSE;
1602 msg_print("µðÂç¤Ê´ä¤òÅꤲ¤¿¡£");
1604 msg_print("You throw a huge boulder.");
1607 fire_bolt(GF_MISSILE, dir, (3 * plev) / 2);
1611 if (!get_aim_dir(&dir)) return FALSE;
1612 if (music_singing_any()) stop_singing();
1614 msg_print("¿È¤ÎÌÓ¤â¤è¤À¤Ä¶«¤ÓÀ¼¤ò¾å¤²¤¿¡ª");
1616 msg_print("You make a horrible scream!");
1619 (void)fear_monster(dir, plev);
1623 if (!get_aim_dir(&dir)) return FALSE;
1624 if (music_singing_any()) stop_singing();
1626 msg_print("»À¤òÅǤ¤¤¿¡£");
1628 msg_print("You spit acid.");
1631 if (plev < 25) fire_bolt(GF_ACID, dir, plev);
1632 else fire_ball(GF_ACID, dir, plev, 2);
1636 if (!get_aim_dir(&dir)) return FALSE;
1638 msg_print("ÆǤΥÀ¡¼¥Ä¤òÅꤲ¤¿¡£");
1640 msg_print("You throw a dart of poison.");
1643 fire_bolt(GF_POIS, dir, plev);
1648 msg_print("¼þ°Ï¤òÄ´ºº¤·¤¿¡£");
1650 msg_print("You examine your surroundings.");
1653 (void)detect_traps(DETECT_RAD_DEFAULT, TRUE);
1654 (void)detect_doors(DETECT_RAD_DEFAULT);
1655 (void)detect_stairs(DETECT_RAD_DEFAULT);
1659 if (!get_aim_dir(&dir)) return FALSE;
1661 msg_print("¥Þ¥¸¥Ã¥¯¡¦¥ß¥µ¥¤¥ë¤òÊü¤Ã¤¿¡£");
1663 msg_print("You cast a magic missile.");
1666 fire_bolt_or_beam(10, GF_MISSILE, dir,
1667 damroll(3 + ((plev - 1) / 5), 4));
1670 case RACE_DRACONIAN:
1672 int Type = (one_in_(3) ? GF_COLD : GF_FIRE);
1674 cptr Type_desc = ((Type == GF_COLD) ? "Î䵤" : "±ê");
1676 cptr Type_desc = ((Type == GF_COLD) ? "cold" : "fire");
1679 if (!get_aim_dir(&dir)) return FALSE;
1681 if (randint1(100) < plev)
1683 switch (p_ptr->pclass)
1686 case CLASS_BERSERKER:
1689 case CLASS_IMITATOR:
1696 Type_desc = "¥¨¥ì¥á¥ó¥È";
1698 Type_desc = "the elements";
1707 Type_desc = "shards";
1712 case CLASS_WARRIOR_MAGE:
1713 case CLASS_HIGH_MAGE:
1714 case CLASS_SORCERER:
1715 case CLASS_MAGIC_EATER:
1716 case CLASS_RED_MAGE:
1717 case CLASS_BLUE_MAGE:
1718 case CLASS_MIRROR_MASTER:
1730 Type = GF_DISENCHANT;
1734 Type_desc = "disenchantment";
1738 case CLASS_CHAOS_WARRIOR:
1741 Type = GF_CONFUSION;
1745 Type_desc = "confusion";
1752 Type_desc = "¥«¥ª¥¹";
1754 Type_desc = "chaos";
1760 case CLASS_FORCETRAINER:
1763 Type = GF_CONFUSION;
1767 Type_desc = "confusion";
1776 Type_desc = "sound";
1780 case CLASS_MINDCRAFTER:
1783 Type = GF_CONFUSION;
1787 Type_desc = "confusion";
1794 Type_desc = "Àº¿À¥¨¥Í¥ë¥®¡¼";
1796 Type_desc = "mental energy";
1804 Type = GF_HELL_FIRE;
1806 Type_desc = "ÃϹö¤Î¹å²Ð";
1808 Type_desc = "hellfire";
1813 Type = GF_HOLY_FIRE;
1815 Type_desc = "À»¤Ê¤ë±ê";
1817 Type_desc = "holy fire";
1829 Type_desc = "darkness";
1838 Type_desc = "poison";
1849 Type_desc = "sound";
1854 Type = GF_CONFUSION;
1858 Type_desc = "confusion";
1865 if (music_singing_any()) stop_singing();
1868 msg_format("¤¢¤Ê¤¿¤Ï%s¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£", Type_desc);
1870 msg_format("You breathe %s.", Type_desc);
1873 fire_ball(Type, dir, plev * 2,
1878 case RACE_MIND_FLAYER:
1879 if (!get_aim_dir(&dir)) return FALSE;
1881 msg_print("¤¢¤Ê¤¿¤Ï½¸Ã椷¡¢Ìܤ¬ÀÖ¤¯µ±¤¤¤¿...");
1883 msg_print("You concentrate and your eyes glow red...");
1886 fire_bolt(GF_PSI, dir, plev);
1890 if (!get_aim_dir(&dir)) return FALSE;
1894 msg_print("¥Õ¥¡¥¤¥¢¡¦¥Ü¡¼¥ë¤òÊü¤Ã¤¿¡£");
1896 msg_print("You cast a ball of fire.");
1899 fire_ball(GF_FIRE, dir, plev, 2);
1904 msg_print("¥Õ¥¡¥¤¥¢¡¦¥Ü¥ë¥È¤òÊü¤Ã¤¿¡£");
1906 msg_print("You cast a bolt of fire.");
1909 fire_bolt(GF_FIRE, dir, plev);
1914 (void)set_shield(randint1(20) + 30, FALSE);
1920 msg_print("¤¢¤Ê¤¿¤Ï¼º¤Ã¤¿¥¨¥Í¥ë¥®¡¼¤ò¼è¤êÌ᤽¤¦¤È»î¤ß¤¿¡£");
1922 msg_print("You attempt to restore your lost energies.");
1925 (void)restore_level();
1929 if (d_info[dungeon_type].flags1 & DF1_NO_MELEE)
1932 msg_print("¤Ê¤¼¤«¹¶·â¤¹¤ë¤³¤È¤¬¤Ç¤¤Ê¤¤¡£");
1934 msg_print("Something prevent you from attacking.");
1940 int y, x, dummy = 0;
1943 /* Only works on adjacent monsters */
1944 if (!get_rep_dir(&dir,FALSE)) return FALSE; /* was get_aim_dir */
1947 c_ptr = &cave[y][x];
1949 if (music_singing_any()) stop_singing();
1954 msg_print("²¿¤â¤Ê¤¤¾ì½ê¤Ë³ú¤ß¤Ä¤¤¤¿¡ª");
1956 msg_print("You bite into thin air!");
1963 msg_print("¤¢¤Ê¤¿¤Ï¥Ë¥ä¥ê¤È¤·¤Æ²ç¤ò¤à¤¤¤¿...");
1965 msg_print("You grin and bare your fangs...");
1968 dummy = plev + randint1(plev) * MAX(1, plev / 10); /* Dmg */
1969 if (drain_life(dir, dummy))
1971 if (p_ptr->food < PY_FOOD_FULL)
1972 /* No heal if we are "full" */
1973 (void)hp_player(dummy);
1976 msg_print("¤¢¤Ê¤¿¤Ï¶õÊ¢¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£");
1978 msg_print("You were not hungry.");
1981 /* Gain nutritional sustenance: 150/hp drained */
1982 /* A Food ration gives 5000 food points (by contrast) */
1983 /* Don't ever get more than "Full" this way */
1984 /* But if we ARE Gorged, it won't cure us */
1985 dummy = p_ptr->food + MIN(5000, 100 * dummy);
1986 if (p_ptr->food < PY_FOOD_MAX) /* Not gorged already */
1987 (void)set_food(dummy >= PY_FOOD_MAX ? PY_FOOD_MAX - 1 : dummy);
1991 msg_print("¤²¤§¡£¤Ò¤É¤¤Ì£¤À¡£");
1993 msg_print("Yechh. That tastes foul.");
2000 if (!get_aim_dir(&dir)) return FALSE;
2001 if (music_singing_any()) stop_singing();
2003 msg_print("¤¢¤Ê¤¿¤Ï¤ª¤É¤í¤ª¤É¤í¤·¤¤¶«¤ÓÀ¼¤ò¤¢¤²¤¿¡ª");
2005 msg_print("You emit an eldritch howl!");
2008 (void)fear_monster(dir, plev);
2013 msg_print("¤¢¤Ê¤¿¤ÏËâË¡¤ÎÊ´¤òÅꤲ¤Ä¤±¤¿...");
2015 msg_print("You throw some magic dust...");
2018 if (plev < 25) sleep_monsters_touch();
2019 else (void)sleep_monsters();
2024 int type = (one_in_(2) ? GF_NETHER : GF_FIRE);
2025 if (!get_aim_dir(&dir)) return FALSE;
2026 if (music_singing_any()) stop_singing();
2028 msg_format("¤¢¤Ê¤¿¤Ï%s¤Î¥Ö¥ì¥¹¤òÅǤ¤¤¿¡£",((type == GF_NETHER) ? "ÃϹö" : "²Ð±ê"));
2030 msg_format("You breathe %s.",((type == GF_NETHER) ? "nether" : "fire"));
2033 fire_ball(type, dir, plev * 3, -(plev / 15) - 1);
2038 (void)set_tsubureru(randint1(20) + 30, FALSE);
2042 if (!get_aim_dir(&dir)) return FALSE;
2046 msg_print("¥ì¥¤¥¬¥ó¤òȯ¼Í¤·¤¿¡£");
2048 msg_print("You fire your ray gun.");
2050 fire_bolt(GF_MISSILE, dir, (plev+1) / 2);
2055 msg_print("¥Ö¥é¥¹¥¿¡¼¤òȯ¼Í¤·¤¿¡£");
2057 msg_print("You fire your blaster.");
2059 fire_bolt(GF_MISSILE, dir, plev);
2064 msg_print("¥Ð¥º¡¼¥«¤òȯ¼Í¤·¤¿¡£");
2066 msg_print("You fire your bazooka.");
2068 fire_ball(GF_MISSILE, dir, plev * 2, 2);
2073 msg_print("¥Ó¡¼¥à¥¥ã¥Î¥ó¤òȯ¼Í¤·¤¿¡£");
2075 msg_print("You fire a beam cannon.");
2077 fire_beam(GF_MISSILE, dir, plev * 2);
2082 msg_print("¥í¥±¥Ã¥È¤òȯ¼Í¤·¤¿¡£");
2084 msg_print("You fire a rocket.");
2086 fire_rocket(GF_ROCKET, dir, plev * 5, 2);
2092 msg_print("¤³¤Î¼ï²¤ÏÆüì¤ÊǽÎϤò»ý¤Ã¤Æ¤¤¤Þ¤»¤ó¡£");
2094 msg_print("This race has no bonus power.");
2105 * Allow user to choose a power (racial / mutation) to activate
2107 void do_cmd_racial_power(void)
2109 power_desc_type power_desc[36];
2112 int lvl = p_ptr->lev;
2113 bool flag, redraw, cast = FALSE;
2114 bool warrior = ((p_ptr->pclass == CLASS_WARRIOR || p_ptr->pclass == CLASS_BERSERKER) ? TRUE : FALSE);
2117 int menu_line = (use_menu ? 1 : 0);
2120 for (num = 0; num < 36; num++)
2122 strcpy(power_desc[num].name, "");
2123 power_desc[num].number = 0;
2128 if (p_ptr->confused)
2131 msg_print("º®Í𤷤Ƥ¤¤ÆÆüìǽÎϤò»È¤¨¤Þ¤»¤ó¡ª");
2133 msg_print("You are too confused to use any powers!");
2140 if (p_ptr->special_defense & (KATA_MUSOU | KATA_KOUKIJIN))
2142 set_action(ACTION_NONE);
2145 switch (p_ptr->pclass)
2150 strcpy(power_desc[num].name, "·õ¤ÎÉñ¤¤");
2152 strcpy(power_desc[num].name, "Sword Dancing");
2155 power_desc[num].level = 40;
2156 power_desc[num].cost = 75;
2157 power_desc[num].stat = A_DEX;
2158 power_desc[num].fail = 35;
2159 power_desc[num++].number = -3;
2163 case CLASS_HIGH_MAGE:
2164 case CLASS_SORCERER:
2167 strcpy(power_desc[num].name, "ËâÎÏ¿©¤¤");
2169 strcpy(power_desc[num].name, "Eat Magic");
2172 power_desc[num].level = 25;
2173 power_desc[num].cost = 1;
2174 power_desc[num].stat = A_INT;
2175 power_desc[num].fail = 25;
2176 power_desc[num++].number = -3;
2181 if (is_good_realm(p_ptr->realm1))
2184 strcpy(power_desc[num].name, "Éð´ï½ËÊ¡");
2186 strcpy(power_desc[num].name, "Bless Weapon");
2189 power_desc[num].level = 35;
2190 power_desc[num].cost = 70;
2191 power_desc[num].stat = A_WIS;
2192 power_desc[num].fail = 50;
2193 power_desc[num++].number = -3;
2198 strcpy(power_desc[num].name, "¾¤º²");
2200 strcpy(power_desc[num].name, "Evocation");
2203 power_desc[num].level = 42;
2204 power_desc[num].cost = 40;
2205 power_desc[num].stat = A_WIS;
2206 power_desc[num].fail = 35;
2207 power_desc[num++].number = -3;
2214 strcpy(power_desc[num].name, "¥Ò¥Ã¥È¡õ¥¢¥¦¥§¥¤");
2216 strcpy(power_desc[num].name, "Hit and Away");
2219 power_desc[num].level = 8;
2220 power_desc[num].cost = 12;
2221 power_desc[num].stat = A_DEX;
2222 power_desc[num].fail = 14;
2223 power_desc[num++].number = -3;
2229 strcpy(power_desc[num].name, "¥â¥ó¥¹¥¿¡¼Ä´ºº");
2231 strcpy(power_desc[num].name, "Probe Monster");
2234 power_desc[num].level = 15;
2235 power_desc[num].cost = 20;
2236 power_desc[num].stat = A_INT;
2237 power_desc[num].fail = 12;
2238 power_desc[num++].number = -3;
2243 if (is_good_realm(p_ptr->realm1))
2246 strcpy(power_desc[num].name, "¥Û¡¼¥ê¡¼¡¦¥é¥ó¥¹");
2248 strcpy(power_desc[num].name, "Holy Lance");
2251 power_desc[num].level = 30;
2252 power_desc[num].cost = 30;
2253 power_desc[num].stat = A_WIS;
2254 power_desc[num].fail = 30;
2255 power_desc[num++].number = -3;
2260 strcpy(power_desc[num].name, "¥Ø¥ë¡¦¥é¥ó¥¹");
2262 strcpy(power_desc[num].name, "Hell Lance");
2265 power_desc[num].level = 30;
2266 power_desc[num].cost = 30;
2267 power_desc[num].stat = A_WIS;
2268 power_desc[num].fail = 30;
2269 power_desc[num++].number = -3;
2273 case CLASS_WARRIOR_MAGE:
2276 strcpy(power_desc[num].name, "ÊÑ´¹: £È£Ð¢ª£Í£Ð");
2278 strcpy(power_desc[num].name, "Convert HP to SP");
2281 power_desc[num].level = 25;
2282 power_desc[num].cost = 0;
2283 power_desc[num].stat = A_INT;
2284 power_desc[num].fail = 10;
2285 power_desc[num++].number = -3;
2287 strcpy(power_desc[num].name, "ÊÑ´¹: £Í£Ð¢ª£È£Ð");
2289 strcpy(power_desc[num].name, "Convert SP to HP");
2292 power_desc[num].level = 25;
2293 power_desc[num].cost = 0;
2294 power_desc[num].stat = A_INT;
2295 power_desc[num].fail = 10;
2296 power_desc[num++].number = -4;
2299 case CLASS_CHAOS_WARRIOR:
2302 strcpy(power_desc[num].name, "¸¸ÏǤθ÷");
2304 strcpy(power_desc[num].name, "Confusing Light");
2307 power_desc[num].level = 40;
2308 power_desc[num].cost = 50;
2309 power_desc[num].stat = A_INT;
2310 power_desc[num].fail = 25;
2311 power_desc[num++].number = -3;
2317 strcpy(power_desc[num].name, "¹½¤¨¤ë");
2319 strcpy(power_desc[num].name, "Assume a Posture");
2322 power_desc[num].level = 25;
2323 power_desc[num].cost = 0;
2324 power_desc[num].stat = A_DEX;
2325 power_desc[num].fail = 0;
2326 power_desc[num++].number = -3;
2328 strcpy(power_desc[num].name, "É´Îö·ý");
2330 strcpy(power_desc[num].name, "Double Attack");
2333 power_desc[num].level = 30;
2334 power_desc[num].cost = 30;
2335 power_desc[num].stat = A_STR;
2336 power_desc[num].fail = 20;
2337 power_desc[num++].number = -4;
2340 case CLASS_MINDCRAFTER:
2341 case CLASS_FORCETRAINER:
2344 strcpy(power_desc[num].name, "ÌÀ¶À»ß¿å");
2346 strcpy(power_desc[num].name, "Clear Mind");
2349 power_desc[num].level = 15;
2350 power_desc[num].cost = 0;
2351 power_desc[num].stat = A_WIS;
2352 power_desc[num].fail = 10;
2353 power_desc[num++].number = -3;
2359 strcpy(power_desc[num].name, "¼Ì¿¿»£±Æ");
2361 strcpy(power_desc[num].name, "Take a Photograph");
2364 power_desc[num].level = 1;
2365 power_desc[num].cost = 0;
2366 power_desc[num].stat = A_DEX;
2367 power_desc[num].fail = 0;
2368 power_desc[num++].number = -3;
2370 strcpy(power_desc[num].name, "¿¿¡¦´ÕÄê");
2372 strcpy(power_desc[num].name, "Identify True");
2375 power_desc[num].level = 25;
2376 power_desc[num].cost = 20;
2377 power_desc[num].stat = A_INT;
2378 power_desc[num].fail = 20;
2379 power_desc[num++].number = -4;
2382 case CLASS_IMITATOR:
2385 strcpy(power_desc[num].name, "ÇÜÊÖ¤·");
2387 strcpy(power_desc[num].name, "Double Revenge");
2390 power_desc[num].level = 30;
2391 power_desc[num].cost = 100;
2392 power_desc[num].stat = A_DEX;
2393 power_desc[num].fail = 30;
2394 power_desc[num++].number = -3;
2397 case CLASS_BEASTMASTER:
2400 strcpy(power_desc[num].name, "À¸Êª»ÙÇÛ");
2402 strcpy(power_desc[num].name, "Dominate a Living Thing");
2405 power_desc[num].level = 1;
2406 power_desc[num].cost = (p_ptr->lev+3)/4;
2407 power_desc[num].stat = A_CHR;
2408 power_desc[num].fail = 10;
2409 power_desc[num++].number = -3;
2411 strcpy(power_desc[num].name, "¿¿¡¦À¸Êª»ÙÇÛ");
2413 strcpy(power_desc[num].name, "Dominate Living Things");
2416 power_desc[num].level = 30;
2417 power_desc[num].cost = (p_ptr->lev+20)/2;
2418 power_desc[num].stat = A_CHR;
2419 power_desc[num].fail = 10;
2420 power_desc[num++].number = -4;
2426 strcpy(power_desc[num].name, "ÃÆ/Ìð¤ÎÀ½Â¤");
2428 strcpy(power_desc[num].name, "Create Ammo");
2431 power_desc[num].level = 1;
2432 power_desc[num].cost = 0;
2433 power_desc[num].stat = A_DEX;
2434 power_desc[num].fail = 0;
2435 power_desc[num++].number = -3;
2438 case CLASS_MAGIC_EATER:
2441 strcpy(power_desc[num].name, "ËâÎϤμè¤ê¹þ¤ß");
2443 strcpy(power_desc[num].name, "Absorb Magic");
2446 power_desc[num].level = 1;
2447 power_desc[num].cost = 0;
2448 power_desc[num].stat = A_INT;
2449 power_desc[num].fail = 0;
2450 power_desc[num++].number = -3;
2456 strcpy(power_desc[num].name, "²Î¤ò»ß¤á¤ë");
2458 strcpy(power_desc[num].name, "Stop Singing");
2461 power_desc[num].level = 1;
2462 power_desc[num].cost = 0;
2463 power_desc[num].stat = A_CHR;
2464 power_desc[num].fail = 0;
2465 power_desc[num++].number = -3;
2468 case CLASS_RED_MAGE:
2471 strcpy(power_desc[num].name, "Ϣ³Ëâ");
2473 strcpy(power_desc[num].name, "Double Magic");
2476 power_desc[num].level = 48;
2477 power_desc[num].cost = 20;
2478 power_desc[num].stat = A_INT;
2479 power_desc[num].fail = 0;
2480 power_desc[num++].number = -3;
2486 strcpy(power_desc[num].name, "µ¤¹ç¤¤¤¿¤á");
2488 strcpy(power_desc[num].name, "Concentration");
2491 power_desc[num].level = 1;
2492 power_desc[num].cost = 0;
2493 power_desc[num].stat = A_WIS;
2494 power_desc[num].fail = 0;
2495 power_desc[num++].number = -3;
2497 strcpy(power_desc[num].name, "·¿");
2499 strcpy(power_desc[num].name, "Assume a Posture");
2502 power_desc[num].level = 25;
2503 power_desc[num].cost = 0;
2504 power_desc[num].stat = A_DEX;
2505 power_desc[num].fail = 0;
2506 power_desc[num++].number = -4;
2509 case CLASS_BLUE_MAGE:
2512 strcpy(power_desc[num].name, "¥é¡¼¥Ë¥ó¥°");
2514 strcpy(power_desc[num].name, "Learning");
2517 power_desc[num].level = 1;
2518 power_desc[num].cost = 0;
2519 power_desc[num].stat = A_INT;
2520 power_desc[num].fail = 0;
2521 power_desc[num++].number = -3;
2527 strcpy(power_desc[num].name, "¹ÓÇϤʤ餷");
2529 strcpy(power_desc[num].name, "Rodeo");
2532 power_desc[num].level = 10;
2533 power_desc[num].cost = 0;
2534 power_desc[num].stat = A_STR;
2535 power_desc[num].fail = 10;
2536 power_desc[num++].number = -3;
2539 case CLASS_BERSERKER:
2542 strcpy(power_desc[num].name, "µ¢´Ô");
2544 strcpy(power_desc[num].name, "Recall");
2547 power_desc[num].level = 10;
2548 power_desc[num].cost = 10;
2549 power_desc[num].stat = A_DEX;
2550 power_desc[num].fail = 20;
2551 power_desc[num++].number = -3;
2554 case CLASS_MIRROR_MASTER:
2557 strcpy(power_desc[num].name, "¶À³ä¤ê");
2559 strcpy(power_desc[num].name, "Break Mirrors");
2562 power_desc[num].level = 1;
2563 power_desc[num].cost = 0;
2564 power_desc[num].stat = A_INT;
2565 power_desc[num].fail = 0;
2566 power_desc[num++].number = -3;
2568 strcpy(power_desc[num].name, "ÀÅ¿å");
2570 strcpy(power_desc[num].name, "Mirror Concentration");
2573 power_desc[num].level = 30;
2574 power_desc[num].cost = 0;
2575 power_desc[num].stat = A_INT;
2576 power_desc[num].fail = 20;
2577 power_desc[num++].number = -4;
2583 strcpy(power_desc[num].name, "ÌÜÍø¤");
2585 strcpy(power_desc[num].name, "Judgment");
2588 power_desc[num].level = 5;
2589 power_desc[num].cost = 15;
2590 power_desc[num].stat = A_INT;
2591 power_desc[num].fail = 20;
2592 power_desc[num++].number = -3;
2598 strcpy(power_desc[num].name, "®¶î¤±");
2600 strcpy(power_desc[num].name, "Quick Walk");
2603 power_desc[num].level = 20;
2604 power_desc[num].cost = 0;
2605 power_desc[num].stat = A_DEX;
2606 power_desc[num].fail = 0;
2607 power_desc[num++].number = -3;
2612 strcpy(power_desc[0].name, "(¤Ê¤·)");
2614 strcpy(power_desc[0].name, "(none)");
2619 if (p_ptr->mimic_form)
2621 switch (p_ptr->mimic_form)
2624 case MIMIC_DEMON_LORD:
2626 sprintf(power_desc[num].name, "ÃϹö/²Ð±ê¤Î¥Ö¥ì¥¹ (¥À¥á¡¼¥¸ %d)", lvl * 3);
2628 sprintf(power_desc[num].name, "Nether or Fire Breath (dam %d)", lvl * 3);
2631 power_desc[num].level = 15;
2632 power_desc[num].cost = 10+lvl/3;
2633 power_desc[num].stat = A_CON;
2634 power_desc[num].fail = 20;
2635 power_desc[num++].number = -1;
2639 strcpy(power_desc[num].name, "À¸Ì¿Îϵۼý");
2641 strcpy(power_desc[num].name, "Drain Life");
2644 power_desc[num].level = 2;
2645 power_desc[num].cost = 1 + (lvl / 3);
2646 power_desc[num].stat = A_CON;
2647 power_desc[num].fail = 9;
2648 power_desc[num++].number = -1;
2654 switch (p_ptr->prace)
2658 strcpy(power_desc[num].name, "¥É¥¢¤Èæ« ´¶ÃÎ");
2660 strcpy(power_desc[num].name, "Detect Doors+Traps");
2663 power_desc[num].level = 5;
2664 power_desc[num].cost = 5;
2665 power_desc[num].stat = A_WIS;
2666 power_desc[num].fail = 12;
2667 power_desc[num++].number = -1;
2671 strcpy(power_desc[num].name, "¥É¥¢¤Èæ« ´¶ÃÎ");
2673 strcpy(power_desc[num].name, "Detect Doors+Traps");
2676 power_desc[num].level = 10;
2677 power_desc[num].cost = 5;
2678 power_desc[num].stat = A_WIS;
2679 power_desc[num].fail = 10;
2680 power_desc[num++].number = -1;
2684 strcpy(power_desc[num].name, "¿©ÎÈÀ¸À®");
2686 strcpy(power_desc[num].name, "Create Food");
2689 power_desc[num].level = 15;
2690 power_desc[num].cost = 10;
2691 power_desc[num].stat = A_INT;
2692 power_desc[num].fail = 10;
2693 power_desc[num++].number = -1;
2697 sprintf(power_desc[num].name, "¥·¥ç¡¼¥È¡¦¥Æ¥ì¥Ý¡¼¥È");
2699 sprintf(power_desc[num].name, "Blink");
2702 power_desc[num].level = 5;
2703 power_desc[num].cost = 5;
2704 power_desc[num].stat = A_INT;
2705 power_desc[num].fail = 12;
2706 power_desc[num++].number = -1;
2710 strcpy(power_desc[num].name, "¶²Éݽüµî");
2712 strcpy(power_desc[num].name, "Remove Fear");
2715 power_desc[num].level = 3;
2716 power_desc[num].cost = 5;
2717 power_desc[num].stat = A_WIS;
2718 power_desc[num].fail = warrior ? 5 : 10;
2719 power_desc[num++].number = -1;
2721 case RACE_HALF_TROLL:
2723 strcpy(power_desc[num].name, "¶¸Àï»Î²½");
2725 strcpy(power_desc[num].name, "Berserk");
2728 power_desc[num].level = 10;
2729 power_desc[num].cost = 12;
2730 power_desc[num].stat = A_STR;
2731 power_desc[num].fail = warrior ? 6 : 12;
2732 power_desc[num++].number = -1;
2734 case RACE_BARBARIAN:
2736 strcpy(power_desc[num].name, "¶¸Àï»Î²½");
2738 strcpy(power_desc[num].name, "Berserk");
2741 power_desc[num].level = 8;
2742 power_desc[num].cost = 10;
2743 power_desc[num].stat = A_STR;
2744 power_desc[num].fail = warrior ? 6 : 12;
2745 power_desc[num++].number = -1;
2749 strcpy(power_desc[num].name, "¥·¥ã¥É¥¦¡¦¥·¥Õ¥È");
2751 strcpy(power_desc[num].name, "Shadow Shifting");
2754 power_desc[num].level = 30;
2755 power_desc[num].cost = 50;
2756 power_desc[num].stat = A_INT;
2757 power_desc[num].fail = 50;
2758 power_desc[num++].number = -1;
2760 strcpy(power_desc[num].name, "¥Ñ¥¿¡¼¥ó¡¦¥¦¥©¡¼¥¯");
2762 strcpy(power_desc[num].name, "Pattern Mindwalking");
2765 power_desc[num].level = 40;
2766 power_desc[num].cost = 75;
2767 power_desc[num].stat = A_WIS;
2768 power_desc[num].fail = 50;
2769 power_desc[num++].number = -2;
2771 case RACE_HALF_OGRE:
2773 strcpy(power_desc[num].name, "Çúȯ¤Î¥ë¡¼¥ó");
2775 strcpy(power_desc[num].name, "Explosive Rune");
2778 power_desc[num].level = 25;
2779 power_desc[num].cost = 35;
2780 power_desc[num].stat = A_INT;
2781 power_desc[num].fail = 15;
2782 power_desc[num++].number = -1;
2784 case RACE_HALF_GIANT:
2786 strcpy(power_desc[num].name, "´äÀÐÍϲò");
2788 strcpy(power_desc[num].name, "Stone to Mud");
2791 power_desc[num].level = 20;
2792 power_desc[num].cost = 10;
2793 power_desc[num].stat = A_STR;
2794 power_desc[num].fail = 12;
2795 power_desc[num++].number = -1;
2797 case RACE_HALF_TITAN:
2799 strcpy(power_desc[num].name, "¥¹¥¥ã¥ó¡¦¥â¥ó¥¹¥¿¡¼");
2801 strcpy(power_desc[num].name, "Probing");
2804 power_desc[num].level = 15;
2805 power_desc[num].cost = 10;
2806 power_desc[num].stat = A_INT;
2807 power_desc[num].fail = 12;
2808 power_desc[num++].number = -1;
2812 sprintf(power_desc[num].name, "´äÀÐÅꤲ¡Ê¥À¥á¡¼¥¸ %d¡Ë", (3 * lvl) / 2);
2814 sprintf(power_desc[num].name, "Throw Boulder (dam %d)", (3 * lvl) / 2);
2817 power_desc[num].level = 20;
2818 power_desc[num].cost = 15;
2819 power_desc[num].stat = A_STR;
2820 power_desc[num].fail = 12;
2821 power_desc[num++].number = -1;
2825 strcpy(power_desc[num].name, "¥â¥ó¥¹¥¿¡¼¶²¹²");
2827 strcpy(power_desc[num].name, "Scare Monster");
2830 power_desc[num].level = 15;
2831 power_desc[num].cost = 15;
2832 power_desc[num].stat = A_WIS;
2833 power_desc[num].fail = 10;
2834 power_desc[num++].number = -1;
2838 strcpy(power_desc[num].name, "¥â¥ó¥¹¥¿¡¼¶²¹²");
2840 strcpy(power_desc[num].name, "Scare Monster");
2843 power_desc[num].level = 4;
2844 power_desc[num].cost = 6;
2845 power_desc[num].stat = A_INT;
2846 power_desc[num].fail = 3;
2847 power_desc[num++].number = -1;
2851 sprintf(power_desc[num].name, "»À¤ÎÂà (¥À¥á¡¼¥¸ %d)", lvl);
2853 sprintf(power_desc[num].name, "Spit Acid (dam %d)", lvl);
2856 power_desc[num].level = 9;
2857 power_desc[num].cost = 9;
2858 power_desc[num].stat = A_DEX;
2859 power_desc[num].fail = 14;
2860 power_desc[num++].number = -1;
2864 sprintf(power_desc[num].name, "ÆǤΥÀ¡¼¥Ä (¥À¥á¡¼¥¸ %d)", lvl);
2866 sprintf(power_desc[num].name, "Poison Dart (dam %d)", lvl);
2869 power_desc[num].level = 12;
2870 power_desc[num].cost = 8;
2871 power_desc[num].stat = A_DEX;
2872 power_desc[num].fail = 14;
2873 power_desc[num++].number = -1;
2877 sprintf(power_desc[num].name, "¥Þ¥¸¥Ã¥¯¡¦¥ß¥µ¥¤¥ë (¥À¥á¡¼¥¸ %dd%d)", 3 + ((lvl - 1) / 5), 4);
2879 sprintf(power_desc[num].name, "Magic Missile (dm %dd%d)", 3 + ((lvl - 1) / 5), 4);
2882 power_desc[num].level = 2;
2883 power_desc[num].cost = 2;
2884 power_desc[num].stat = A_INT;
2885 power_desc[num].fail = 9;
2886 power_desc[num++].number = -1;
2888 case RACE_DRACONIAN:
2890 sprintf(power_desc[num].name, "¥Ö¥ì¥¹ (¥À¥á¡¼¥¸ %d)", lvl * 2);
2892 sprintf(power_desc[num].name, "Breath Weapon (dam %d)", lvl * 2);
2895 power_desc[num].level = 1;
2896 power_desc[num].cost = lvl;
2897 power_desc[num].stat = A_CON;
2898 power_desc[num].fail = 12;
2899 power_desc[num++].number = -1;
2901 case RACE_MIND_FLAYER:
2903 sprintf(power_desc[num].name, "Àº¿À¹¶·â (¥À¥á¡¼¥¸ %d)", lvl);
2905 sprintf(power_desc[num].name, "Mind Blast (dam %d)", lvl);
2908 power_desc[num].level = 15;
2909 power_desc[num].cost = 12;
2910 power_desc[num].stat = A_INT;
2911 power_desc[num].fail = 14;
2912 power_desc[num++].number = -1;
2916 sprintf(power_desc[num].name, "¥Õ¥¡¥¤¥¢¡¦¥Ü¥ë¥È/¥Ü¡¼¥ë (¥À¥á¡¼¥¸ %d)", lvl);
2918 sprintf(power_desc[num].name, "Fire Bolt/Ball (dam %d)", lvl);
2921 power_desc[num].level = 9;
2922 power_desc[num].cost = 15;
2923 power_desc[num].stat = A_WIS;
2924 power_desc[num].fail = 15;
2925 power_desc[num++].number = -1;
2929 strcpy(power_desc[num].name, "È©Àв½ (´ü´Ö 1d20+30)");
2931 strcpy(power_desc[num].name, "Stone Skin (dur 1d20+30)");
2934 power_desc[num].level = 20;
2935 power_desc[num].cost = 15;
2936 power_desc[num].stat = A_CON;
2937 power_desc[num].fail = 8;
2938 power_desc[num++].number = -1;
2943 strcpy(power_desc[num].name, "·Ð¸³ÃÍÉü³è");
2945 strcpy(power_desc[num].name, "Restore Life");
2948 power_desc[num].level = 30;
2949 power_desc[num].cost = 30;
2950 power_desc[num].stat = A_WIS;
2951 power_desc[num].fail = 18;
2952 power_desc[num++].number = -1;
2956 strcpy(power_desc[num].name, "À¸Ì¿Îϵۼý");
2958 strcpy(power_desc[num].name, "Drain Life");
2961 power_desc[num].level = 2;
2962 power_desc[num].cost = 1 + (lvl / 3);
2963 power_desc[num].stat = A_CON;
2964 power_desc[num].fail = 9;
2965 power_desc[num++].number = -1;
2969 strcpy(power_desc[num].name, "̲¤êÊ´");
2971 strcpy(power_desc[num].name, "Sleeping Dust");
2974 power_desc[num].level = 12;
2975 power_desc[num].cost = 12;
2976 power_desc[num].stat = A_INT;
2977 power_desc[num].fail = 15;
2978 power_desc[num++].number = -1;
2982 sprintf(power_desc[num].name, "ÃϹö/²Ð±ê¤Î¥Ö¥ì¥¹ (¥À¥á¡¼¥¸ %d)", lvl * 3);
2984 sprintf(power_desc[num].name, "Nether or Fire Breath (dam %d)", lvl * 3);
2987 power_desc[num].level = 15;
2988 power_desc[num].cost = 10+lvl/3;
2989 power_desc[num].stat = A_CON;
2990 power_desc[num].fail = 20;
2991 power_desc[num++].number = -1;
2995 strcpy(power_desc[num].name, "²£¤Ë¿¤Ó¤ë");
2997 strcpy(power_desc[num].name, "Expand Horizontally (dur 30+1d20)");
3000 power_desc[num].level = 20;
3001 power_desc[num].cost = 15;
3002 power_desc[num].stat = A_CHR;
3003 power_desc[num].fail = 8;
3004 power_desc[num++].number = -1;
3007 if (p_ptr->lev < 10)
3010 strcpy(power_desc[num].name, "¥ì¥¤¥¬¥ó");
3012 strcpy(power_desc[num].name, "Ray Gun");
3015 power_desc[num].level = 1;
3016 power_desc[num].cost = 7;
3017 power_desc[num].fail = 8;
3019 else if (p_ptr->lev < 25)
3022 strcpy(power_desc[num].name, "¥Ö¥é¥¹¥¿¡¼");
3024 strcpy(power_desc[num].name, "Blaster");
3027 power_desc[num].level = 10;
3028 power_desc[num].cost = 13;
3029 power_desc[num].fail = 10;
3031 else if (p_ptr->lev < 35)
3034 strcpy(power_desc[num].name, "¥Ð¥º¡¼¥«");
3036 strcpy(power_desc[num].name, "Bazooka");
3039 power_desc[num].level = 25;
3040 power_desc[num].cost = 26;
3041 power_desc[num].fail = 12;
3043 else if (p_ptr->lev < 45)
3046 strcpy(power_desc[num].name, "¥Ó¡¼¥à¥¥ã¥Î¥ó");
3048 strcpy(power_desc[num].name, "Beam Cannon");
3051 power_desc[num].level = 35;
3052 power_desc[num].cost = 40;
3053 power_desc[num].fail = 15;
3058 strcpy(power_desc[num].name, "¥í¥±¥Ã¥È");
3060 strcpy(power_desc[num].name, "Rocket");
3063 power_desc[num].level = 45;
3064 power_desc[num].cost = 60;
3065 power_desc[num].fail = 18;
3067 power_desc[num].stat = A_STR;
3068 power_desc[num++].number = -1;
3079 if (p_ptr->muta1 & MUT1_SPIT_ACID)
3082 strcpy(power_desc[num].name, "»À¤ÎÂÃ");
3084 strcpy(power_desc[num].name, "Spit Acid");
3087 power_desc[num].level = 9;
3088 power_desc[num].cost = 9;
3089 power_desc[num].stat = A_DEX;
3090 power_desc[num].fail = 15;
3091 power_desc[num++].number = MUT1_SPIT_ACID;
3094 if (p_ptr->muta1 & MUT1_BR_FIRE)
3097 strcpy(power_desc[num].name, "±ê¤Î¥Ö¥ì¥¹");
3099 strcpy(power_desc[num].name, "Fire Breath");
3102 power_desc[num].level = 20;
3103 power_desc[num].cost = lvl;
3104 power_desc[num].stat = A_CON;
3105 power_desc[num].fail = 18;
3106 power_desc[num++].number = MUT1_BR_FIRE;
3109 if (p_ptr->muta1 & MUT1_HYPN_GAZE)
3112 strcpy(power_desc[num].name, "ºÅ̲âˤß");
3114 strcpy(power_desc[num].name, "Hypnotic Gaze");
3117 power_desc[num].level = 12;
3118 power_desc[num].cost = 12;
3119 power_desc[num].stat = A_CHR;
3120 power_desc[num].fail = 18;
3121 power_desc[num++].number = MUT1_HYPN_GAZE;
3124 if (p_ptr->muta1 & MUT1_TELEKINES)
3127 strcpy(power_desc[num].name, "Ç°Æ°ÎÏ");
3129 strcpy(power_desc[num].name, "Telekinesis");
3132 power_desc[num].level = 9;
3133 power_desc[num].cost = 9;
3134 power_desc[num].stat = A_WIS;
3135 power_desc[num].fail = 14;
3136 power_desc[num++].number = MUT1_TELEKINES;
3139 if (p_ptr->muta1 & MUT1_VTELEPORT)
3142 strcpy(power_desc[num].name, "¥Æ¥ì¥Ý¡¼¥È");
3144 strcpy(power_desc[num].name, "Teleport");
3147 power_desc[num].level = 7;
3148 power_desc[num].cost = 7;
3149 power_desc[num].stat = A_WIS;
3150 power_desc[num].fail = 15;
3151 power_desc[num++].number = MUT1_VTELEPORT;
3154 if (p_ptr->muta1 & MUT1_MIND_BLST)
3157 strcpy(power_desc[num].name, "Àº¿À¹¶·â");
3159 strcpy(power_desc[num].name, "Mind Blast");
3162 power_desc[num].level = 5;
3163 power_desc[num].cost = 3;
3164 power_desc[num].stat = A_WIS;
3165 power_desc[num].fail = 15;
3166 power_desc[num++].number = MUT1_MIND_BLST;
3169 if (p_ptr->muta1 & MUT1_RADIATION)
3172 strcpy(power_desc[num].name, "Êü¼Íǽ");
3174 strcpy(power_desc[num].name, "Emit Radiation");
3177 power_desc[num].level = 15;
3178 power_desc[num].cost = 15;
3179 power_desc[num].stat = A_CON;
3180 power_desc[num].fail = 14;
3181 power_desc[num++].number = MUT1_RADIATION;
3184 if (p_ptr->muta1 & MUT1_VAMPIRISM)
3187 strcpy(power_desc[num].name, "µÛ·ì¥É¥ì¥¤¥ó");
3189 strcpy(power_desc[num].name, "Vampiric Drain");
3192 power_desc[num].level = 2;
3193 power_desc[num].cost = (1 + (lvl / 3));
3194 power_desc[num].stat = A_CON;
3195 power_desc[num].fail = 9;
3196 power_desc[num++].number = MUT1_VAMPIRISM;
3199 if (p_ptr->muta1 & MUT1_SMELL_MET)
3202 strcpy(power_desc[num].name, "¶â°Ó̳Ð");
3204 strcpy(power_desc[num].name, "Smell Metal");
3207 power_desc[num].level = 3;
3208 power_desc[num].cost = 2;
3209 power_desc[num].stat = A_INT;
3210 power_desc[num].fail = 12;
3211 power_desc[num++].number = MUT1_SMELL_MET;
3214 if (p_ptr->muta1 & MUT1_SMELL_MON)
3217 strcpy(power_desc[num].name, "Ũ½Ó̳Ð");
3219 strcpy(power_desc[num].name, "Smell Monsters");
3222 power_desc[num].level = 5;
3223 power_desc[num].cost = 4;
3224 power_desc[num].stat = A_INT;
3225 power_desc[num].fail = 15;
3226 power_desc[num++].number = MUT1_SMELL_MON;
3229 if (p_ptr->muta1 & MUT1_BLINK)
3232 strcpy(power_desc[num].name, "¥·¥ç¡¼¥È¡¦¥Æ¥ì¥Ý¡¼¥È");
3234 strcpy(power_desc[num].name, "Blink");
3237 power_desc[num].level = 3;
3238 power_desc[num].cost = 3;
3239 power_desc[num].stat = A_WIS;
3240 power_desc[num].fail = 12;
3241 power_desc[num++].number = MUT1_BLINK;
3244 if (p_ptr->muta1 & MUT1_EAT_ROCK)
3247 strcpy(power_desc[num].name, "´ä¿©¤¤");
3249 strcpy(power_desc[num].name, "Eat Rock");
3252 power_desc[num].level = 8;
3253 power_desc[num].cost = 12;
3254 power_desc[num].stat = A_CON;
3255 power_desc[num].fail = 18;
3256 power_desc[num++].number = MUT1_EAT_ROCK;
3259 if (p_ptr->muta1 & MUT1_SWAP_POS)
3262 strcpy(power_desc[num].name, "°ÌÃÖ¸ò´¹");
3264 strcpy(power_desc[num].name, "Swap Position");
3267 power_desc[num].level = 15;
3268 power_desc[num].cost = 12;
3269 power_desc[num].stat = A_DEX;
3270 power_desc[num].fail = 16;
3271 power_desc[num++].number = MUT1_SWAP_POS;
3274 if (p_ptr->muta1 & MUT1_SHRIEK)
3277 strcpy(power_desc[num].name, "¶«¤Ó");
3279 strcpy(power_desc[num].name, "Shriek");
3282 power_desc[num].level = 20;
3283 power_desc[num].cost = 14;
3284 power_desc[num].stat = A_CON;
3285 power_desc[num].fail = 16;
3286 power_desc[num++].number = MUT1_SHRIEK;
3289 if (p_ptr->muta1 & MUT1_ILLUMINE)
3292 strcpy(power_desc[num].name, "¾ÈÌÀ");
3294 strcpy(power_desc[num].name, "Illuminate");
3297 power_desc[num].level = 3;
3298 power_desc[num].cost = 2;
3299 power_desc[num].stat = A_INT;
3300 power_desc[num].fail = 10;
3301 power_desc[num++].number = MUT1_ILLUMINE;
3304 if (p_ptr->muta1 & MUT1_DET_CURSE)
3307 strcpy(power_desc[num].name, "¼ö¤¤´¶ÃÎ");
3309 strcpy(power_desc[num].name, "Detect Curses");
3312 power_desc[num].level = 7;
3313 power_desc[num].cost = 14;
3314 power_desc[num].stat = A_WIS;
3315 power_desc[num].fail = 14;
3316 power_desc[num++].number = MUT1_DET_CURSE;
3319 if (p_ptr->muta1 & MUT1_BERSERK)
3322 strcpy(power_desc[num].name, "¶¸Àï»Î²½");
3324 strcpy(power_desc[num].name, "Berserk");
3327 power_desc[num].level = 8;
3328 power_desc[num].cost = 8;
3329 power_desc[num].stat = A_STR;
3330 power_desc[num].fail = 14;
3331 power_desc[num++].number = MUT1_BERSERK;
3334 if (p_ptr->muta1 & MUT1_POLYMORPH)
3337 strcpy(power_desc[num].name, "ÊÑ¿È");
3339 strcpy(power_desc[num].name, "Polymorph");
3342 power_desc[num].level = 18;
3343 power_desc[num].cost = 20;
3344 power_desc[num].stat = A_CON;
3345 power_desc[num].fail = 18;
3346 power_desc[num++].number = MUT1_POLYMORPH;
3349 if (p_ptr->muta1 & MUT1_MIDAS_TCH)
3352 strcpy(power_desc[num].name, "¥ß¥À¥¹¤Î¼ê");
3354 strcpy(power_desc[num].name, "Midas Touch");
3357 power_desc[num].level = 10;
3358 power_desc[num].cost = 5;
3359 power_desc[num].stat = A_INT;
3360 power_desc[num].fail = 12;
3361 power_desc[num++].number = MUT1_MIDAS_TCH;
3364 if (p_ptr->muta1 & MUT1_GROW_MOLD)
3367 strcpy(power_desc[num].name, "¥«¥ÓȯÀ¸");
3369 strcpy(power_desc[num].name, "Grow Mold");
3372 power_desc[num].level = 1;
3373 power_desc[num].cost = 6;
3374 power_desc[num].stat = A_CON;
3375 power_desc[num].fail = 14;
3376 power_desc[num++].number = MUT1_GROW_MOLD;
3379 if (p_ptr->muta1 & MUT1_RESIST)
3382 strcpy(power_desc[num].name, "¥¨¥ì¥á¥ó¥ÈÂÑÀ");
3384 strcpy(power_desc[num].name, "Resist Elements");
3387 power_desc[num].level = 10;
3388 power_desc[num].cost = 12;
3389 power_desc[num].stat = A_CON;
3390 power_desc[num].fail = 12;
3391 power_desc[num++].number = MUT1_RESIST;
3394 if (p_ptr->muta1 & MUT1_EARTHQUAKE)
3397 strcpy(power_desc[num].name, "ÃÏ¿Ì");
3399 strcpy(power_desc[num].name, "Earthquake");
3402 power_desc[num].level = 12;
3403 power_desc[num].cost = 12;
3404 power_desc[num].stat = A_STR;
3405 power_desc[num].fail = 16;
3406 power_desc[num++].number = MUT1_EARTHQUAKE;
3409 if (p_ptr->muta1 & MUT1_EAT_MAGIC)
3412 strcpy(power_desc[num].name, "ËâÎÏ¿©¤¤");
3414 strcpy(power_desc[num].name, "Eat Magic");
3417 power_desc[num].level = 17;
3418 power_desc[num].cost = 1;
3419 power_desc[num].stat = A_WIS;
3420 power_desc[num].fail = 15;
3421 power_desc[num++].number = MUT1_EAT_MAGIC;
3424 if (p_ptr->muta1 & MUT1_WEIGH_MAG)
3427 strcpy(power_desc[num].name, "ËâÎÏ´¶ÃÎ");
3429 strcpy(power_desc[num].name, "Weigh Magic");
3432 power_desc[num].level = 6;
3433 power_desc[num].cost = 6;
3434 power_desc[num].stat = A_INT;
3435 power_desc[num].fail = 10;
3436 power_desc[num++].number = MUT1_WEIGH_MAG;
3439 if (p_ptr->muta1 & MUT1_STERILITY)
3442 strcpy(power_desc[num].name, "Áý¿£ÁË»ß");
3444 strcpy(power_desc[num].name, "Sterilize");
3447 power_desc[num].level = 12;
3448 power_desc[num].cost = 23;
3449 power_desc[num].stat = A_CHR;
3450 power_desc[num].fail = 15;
3451 power_desc[num++].number = MUT1_STERILITY;
3454 if (p_ptr->muta1 & MUT1_PANIC_HIT)
3457 strcpy(power_desc[num].name, "¥Ò¥Ã¥È¡õ¥¢¥¦¥§¥¤");
3459 strcpy(power_desc[num].name, "Panic Hit");
3462 power_desc[num].level = 10;
3463 power_desc[num].cost = 12;
3464 power_desc[num].stat = A_DEX;
3465 power_desc[num].fail = 14;
3466 power_desc[num++].number = MUT1_PANIC_HIT;
3469 if (p_ptr->muta1 & MUT1_DAZZLE)
3472 strcpy(power_desc[num].name, "âÁÏÇ");
3474 strcpy(power_desc[num].name, "Dazzle");
3477 power_desc[num].level = 7;
3478 power_desc[num].cost = 15;
3479 power_desc[num].stat = A_CHR;
3480 power_desc[num].fail = 8;
3481 power_desc[num++].number = MUT1_DAZZLE;
3484 if (p_ptr->muta1 & MUT1_LASER_EYE)
3487 strcpy(power_desc[num].name, "¥ì¡¼¥¶¡¼¡¦¥¢¥¤");
3489 strcpy(power_desc[num].name, "Laser Eye");
3492 power_desc[num].level = 7;
3493 power_desc[num].cost = 10;
3494 power_desc[num].stat = A_WIS;
3495 power_desc[num].fail = 9;
3496 power_desc[num++].number = MUT1_LASER_EYE;
3499 if (p_ptr->muta1 & MUT1_RECALL)
3502 strcpy(power_desc[num].name, "µ¢´Ô");
3504 strcpy(power_desc[num].name, "Recall");
3507 power_desc[num].level = 17;
3508 power_desc[num].cost = 50;
3509 power_desc[num].stat = A_INT;
3510 power_desc[num].fail = 16;
3511 power_desc[num++].number = MUT1_RECALL;
3514 if (p_ptr->muta1 & MUT1_BANISH)
3517 strcpy(power_desc[num].name, "¼Ù°¾ÃÌÇ");
3519 strcpy(power_desc[num].name, "Banish Evil");
3522 power_desc[num].level = 25;
3523 power_desc[num].cost = 25;
3524 power_desc[num].stat = A_WIS;
3525 power_desc[num].fail = 18;
3526 power_desc[num++].number = MUT1_BANISH;
3529 if (p_ptr->muta1 & MUT1_COLD_TOUCH)
3532 strcpy(power_desc[num].name, "Åà·ë¤Î¼ê");
3534 strcpy(power_desc[num].name, "Cold Touch");
3537 power_desc[num].level = 2;
3538 power_desc[num].cost = 2;
3539 power_desc[num].stat = A_CON;
3540 power_desc[num].fail = 11;
3541 power_desc[num++].number = MUT1_COLD_TOUCH;
3544 if (p_ptr->muta1 & MUT1_LAUNCHER)
3547 strcpy(power_desc[num].name, "¥¢¥¤¥Æ¥àÅꤲ");
3549 strcpy(power_desc[num].name, "Throw Object");
3552 power_desc[num].level = 1;
3553 power_desc[num].cost = lvl;
3554 power_desc[num].stat = A_STR;
3555 power_desc[num].fail = 6;
3556 /* XXX_XXX_XXX Hack! MUT1_LAUNCHER counts as negative... */
3557 power_desc[num++].number = 3;
3561 /* Nothing chosen yet */
3567 /* Build a prompt */
3569 (void) strnfmt(out_val, 78, "(ÆüìǽÎÏ %c-%c, *'¤Ç°ìÍ÷, ESC¤ÇÃæÃÇ) ¤É¤ÎÆüìǽÎϤò»È¤¤¤Þ¤¹¤«¡©",
3571 (void)strnfmt(out_val, 78, "(Powers %c-%c, *=List, ESC=exit) Use which power? ",
3574 I2A(0), (num <= 26) ? I2A(num - 1) : '0' + num - 27);
3577 if (!repeat_pull(&i) || i<0 || i>=num) {
3578 #endif /* ALLOW_REPEAT */
3579 if (use_menu) screen_save();
3580 /* Get a spell from the user */
3582 choice = (always_show_list || use_menu) ? ESCAPE:1;
3585 if( choice==ESCAPE ) choice = ' ';
3586 else if( !get_com(out_val, &choice, FALSE) )break;
3588 if (use_menu && choice != ' ')
3603 menu_line += (num - 1);
3624 else if (menu_line+18 <= num)
3638 if (menu_line > num) menu_line -= num;
3640 /* Request redraw */
3641 if ((choice == ' ') || (choice == '*') || (choice == '?') || (use_menu && ask))
3644 if (!redraw || use_menu)
3657 /* Save the screen */
3658 if (!use_menu) screen_save();
3660 /* Print header(s) */
3663 prt(" Lv MP ¼ºÎ¨", y++, x);
3665 prt(" Lv Cost Fail", y++, x);
3670 prt(" Lv MP ¼ºÎ¨ Lv MP ¼ºÎ¨", y++, x);
3672 prt(" Lv Cost Fail Lv Cost Fail", y++, x);
3679 x1 = ((ctr < 18) ? x : x + 40);
3680 y1 = ((ctr < 18) ? y + ctr : y + ctr - 18);
3685 if (ctr == (menu_line-1)) strcpy(dummy, " ¡Õ ");
3687 if (ctr == (menu_line-1)) strcpy(dummy, " > ");
3689 else strcpy(dummy, " ");
3693 /* letter/number for power selection */
3697 letter = '0' + ctr - 26;
3698 sprintf(dummy, " %c) ",letter);
3700 strcat(dummy, format("%-23.23s %2d %4d %3d%%",
3701 power_desc[ctr].name, power_desc[ctr].level, power_desc[ctr].cost,
3702 100 - racial_chance(&power_desc[ctr])));
3714 /* Restore the screen */
3724 if (choice == '\r' && num == 1)
3729 if (isalpha(choice))
3732 ask = (isupper(choice));
3735 if (ask) choice = tolower(choice);
3737 /* Extract request */
3738 i = (islower(choice) ? A2I(choice) : -1);
3742 ask = FALSE; /* Can't uppercase digits */
3744 i = choice - '0' + 26;
3748 /* Totally Illegal */
3749 if ((i < 0) || (i >= num))
3762 (void) strnfmt(tmp_val, 78, "%s¤ò»È¤¤¤Þ¤¹¤«¡© ", power_desc[i].name);
3764 (void)strnfmt(tmp_val, 78, "Use %s? ", power_desc[i].name);
3768 /* Belay that order */
3769 if (!get_check(tmp_val)) continue;
3776 /* Restore the screen */
3777 if (redraw) screen_load();
3779 /* Abort if needed */
3787 } /*if (!repeat_pull(&i) || ...)*/
3788 #endif /* ALLOW_REPEAT */
3789 switch (racial_aux(&power_desc[i]))
3792 if (power_desc[i].number < 0)
3793 cast = cmd_racial_power_aux(power_desc[i].number);
3795 cast = mutation_power_aux(power_desc[i].number);
3809 int actual_racial_cost = racial_cost / 2 + randint1(racial_cost / 2);
3811 /* If mana is not enough, player consumes hit point! */
3812 if (p_ptr->csp < actual_racial_cost)
3814 actual_racial_cost -= p_ptr->csp;
3817 take_hit(DAMAGE_USELIFE, actual_racial_cost, "²áÅ٤ν¸Ãæ", -1);
3819 take_hit(DAMAGE_USELIFE, actual_racial_cost, "concentrating too hard", -1);
3822 else p_ptr->csp -= actual_racial_cost;
3824 /* Redraw mana and hp */
3825 p_ptr->redraw |= (PR_HP | PR_MANA);
3828 p_ptr->window |= (PW_PLAYER | PW_SPELL);
3831 else energy_use = 0;