3 @brief ËâË¡¤Î¥¤¥ó¥¿¡¼¥Õ¥§¥¤¥¹¤Èȯư / Purpose: Do everything for each spell
6 2013 Deskull rearranged comment for Doxygen.
14 * ËâË¡¤Î¸ú²Ì¤ò¡Ö¥¥ã¥×¥·¥ç¥ó:¥À¥¤¥¹¡ÜÄê¿ôÃ͡פΥե©¡¼¥Þ¥Ã¥È¤Ç½ÐÎϤ¹¤ë / Generate dice info string such as "foo 2d10"
15 * @param str ¥¥ã¥×¥·¥ç¥ó
16 * @param dice ¥À¥¤¥¹¿ô
17 * @param sides ¥À¥¤¥¹ÌÜ
19 * @return ¥Õ¥©¡¼¥Þ¥Ã¥È¤Ë½¾¤¤À°·Á¤µ¤ì¤¿Ê¸»úÎó
21 static cptr info_string_dice(cptr str, int dice, int sides, int base)
25 return format("%s%d", str, base);
29 return format("%s%dd%d", str, dice, sides);
31 /* Dice plus base value */
33 return format("%s%dd%d%+d", str, dice, sides, base);
38 * @brief ËâË¡¤Ë¤è¤ë¥À¥á¡¼¥¸¤ò½ÐÎϤ¹¤ë / Generate damage-dice info string such as "dam 2d10"
39 * @param dice ¥À¥¤¥¹¿ô
40 * @param sides ¥À¥¤¥¹ÌÜ
42 * @return ¥Õ¥©¡¼¥Þ¥Ã¥È¤Ë½¾¤¤À°·Á¤µ¤ì¤¿Ê¸»úÎó
44 static cptr info_damage(int dice, int sides, int base)
47 return info_string_dice("»½ý:", dice, sides, base);
49 return info_string_dice("dam ", dice, sides, base);
54 * @brief ËâË¡¤Î¸ú²Ì»þ´Ö¤ò½ÐÎϤ¹¤ë / Generate duration info string such as "dur 20+1d20"
56 * @param sides ¥À¥¤¥¹ÌÜ
57 * @return ¥Õ¥©¡¼¥Þ¥Ã¥È¤Ë½¾¤¤À°·Á¤µ¤ì¤¿Ê¸»úÎó
59 static cptr info_duration(int base, int sides)
62 return format("´ü´Ö:%d+1d%d", base, sides);
64 return format("dur %d+1d%d", base, sides);
69 * @brief ËâË¡¤Î¸ú²ÌÈϰϤò½ÐÎϤ¹¤ë / Generate range info string such as "range 5"
70 * @param range ¸ú²ÌÈÏ°Ï
71 * @return ¥Õ¥©¡¼¥Þ¥Ã¥È¤Ë½¾¤¤À°·Á¤µ¤ì¤¿Ê¸»úÎó
73 static cptr info_range(int range)
76 return format("ÈÏ°Ï:%d", range);
78 return format("range %d", range);
83 * @brief ËâË¡¤Ë¤è¤ë²óÉüÎ̤ò½ÐÎϤ¹¤ë / Generate heal info string such as "heal 2d8"
84 * @param dice ¥À¥¤¥¹¿ô
85 * @param sides ¥À¥¤¥¹ÌÜ
87 * @return ¥Õ¥©¡¼¥Þ¥Ã¥È¤Ë½¾¤¤À°·Á¤µ¤ì¤¿Ê¸»úÎó
89 static cptr info_heal(int dice, int sides, int base)
92 return info_string_dice("²óÉü:", dice, sides, base);
94 return info_string_dice("heal ", dice, sides, base);
99 * @brief ËâË¡¸ú²Ìȯư¤Þ¤Ç¤ÎÃٱ䥿¡¼¥ó¤ò½ÐÎϤ¹¤ë / Generate delay info string such as "delay 15+1d15"
101 * @param sides ¥À¥¤¥¹ÌÜ
102 * @return ¥Õ¥©¡¼¥Þ¥Ã¥È¤Ë½¾¤¤À°·Á¤µ¤ì¤¿Ê¸»úÎó
104 static cptr info_delay(int base, int sides)
107 return format("ÃÙ±ä:%d+1d%d", base, sides);
109 return format("delay %d+1d%d", base, sides);
115 * @brief ËâË¡¤Ë¤è¤ë¥À¥á¡¼¥¸¤ò½ÐÎϤ¹¤ë(¸ÇÄêÃÍ¡õÊ£¿ô²ó½èÍý) / Generate multiple-damage info string such as "dam 25 each"
117 * @return ¥Õ¥©¡¼¥Þ¥Ã¥È¤Ë½¾¤¤À°·Á¤µ¤ì¤¿Ê¸»úÎó
119 static cptr info_multi_damage(int dam)
122 return format("»½ý:³Æ%d", dam);
124 return format("dam %d each", dam);
130 * @brief ËâË¡¤Ë¤è¤ë¥À¥á¡¼¥¸¤ò½ÐÎϤ¹¤ë(¥À¥¤¥¹¤Î¤ß¡õÊ£¿ô²ó½èÍý) / Generate multiple-damage-dice info string such as "dam 5d2 each"
131 * @param dice ¥À¥¤¥¹¿ô
132 * @param sides ¥À¥¤¥¹ÌÜ
133 * @return ¥Õ¥©¡¼¥Þ¥Ã¥È¤Ë½¾¤¤À°·Á¤µ¤ì¤¿Ê¸»úÎó
135 static cptr info_multi_damage_dice(int dice, int sides)
138 return format("»½ý:³Æ%dd%d", dice, sides);
140 return format("dam %dd%d each", dice, sides);
145 * @brief ËâË¡¤Ë¤è¤ë°ìÈÌŪ¤Ê¸úÎÏÃͤò½ÐÎϤ¹¤ë¡Ê¸ÇÄêÃÍ¡Ë / Generate power info string such as "power 100"
146 * @param power ¸ÇÄêÃÍ
147 * @return ¥Õ¥©¡¼¥Þ¥Ã¥È¤Ë½¾¤¤À°·Á¤µ¤ì¤¿Ê¸»úÎó
149 static cptr info_power(int power)
152 return format("¸úÎÏ:%d", power);
154 return format("power %d", power);
160 * @brief ËâË¡¤Ë¤è¤ë°ìÈÌŪ¤Ê¸úÎÏÃͤò½ÐÎϤ¹¤ë¡Ê¥À¥¤¥¹ÃÍ¡Ë / Generate power info string such as "power 100"
161 * @param dice ¥À¥¤¥¹¿ô
162 * @param sides ¥À¥¤¥¹ÌÜ
163 * @return ¥Õ¥©¡¼¥Þ¥Ã¥È¤Ë½¾¤¤À°·Á¤µ¤ì¤¿Ê¸»úÎó
166 * Generate power info string such as "power 1d100"
168 static cptr info_power_dice(int dice, int sides)
171 return format("¸úÎÏ:%dd%d", dice, sides);
173 return format("power %dd%d", dice, sides);
179 * @brief ËâË¡¤Î¸ú²ÌȾ·Â¤ò½ÐÎϤ¹¤ë / Generate radius info string such as "rad 100"
180 * @param rad ¸ú²ÌȾ·Â
181 * @return ¥Õ¥©¡¼¥Þ¥Ã¥È¤Ë½¾¤¤À°·Á¤µ¤ì¤¿Ê¸»úÎó
183 static cptr info_radius(int rad)
186 return format("Ⱦ·Â:%d", rad);
188 return format("rad %d", rad);
194 * @brief ËâË¡¸ú²Ì¤Î¸Â³¦½ÅÎ̤ò½ÐÎϤ¹¤ë / Generate weight info string such as "max wgt 15"
195 * @param weight ºÇÂç½ÅÎÌ
196 * @return ¥Õ¥©¡¼¥Þ¥Ã¥È¤Ë½¾¤¤À°·Á¤µ¤ì¤¿Ê¸»úÎó
198 static cptr info_weight(int weight)
201 return format("ºÇÂç½ÅÎÌ:%d.%dkg", lbtokg1(weight), lbtokg2(weight));
203 return format("max wgt %d", weight/10);
209 * @brief °ìÉô¥Ü¥ë¥ÈËâË¡¤Î¥Ó¡¼¥à²½³ÎΨ¤ò»»½Ð¤¹¤ë / Prepare standard probability to become beam for fire_bolt_or_beam()
210 * @return ¥Ó¡¼¥à²½³ÎΨ(%)
212 * ¥Ï¡¼¥É¥³¡¼¥Æ¥£¥ó¥°¤Ë¤è¤ë¼ÂÁõ¤¬¹Ô¤ï¤ì¤Æ¤¤¤ë¡£
213 * ¥á¥¤¥¸¤Ï(¥ì¥Ù¥ë)%¡¢¥Ï¥¤¥á¥¤¥¸¡¢¥¹¥Ú¥ë¥Þ¥¹¥¿¡¼¤Ï(¥ì¥Ù¥ë)%¡¢¤½¤ì°Ê³°¤Î¿¦¶È¤Ï(¥ì¥Ù¥ë/2)%
215 static int beam_chance(void)
217 if (p_ptr->pclass == CLASS_MAGE)
219 if (p_ptr->pclass == CLASS_HIGH_MAGE || p_ptr->pclass == CLASS_SORCERER)
220 return p_ptr->lev + 10;
222 return p_ptr->lev / 2;
226 * @brief ¥È¥é¥ó¥×ËâË¡Æȼ«¤Î¾¤´½èÍý¤ò¹Ô¤¦ / Handle summoning and failure of trump spells
227 * @param num summon_specific()´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹²ó¿ô
228 * @param pet ¥Ú¥Ã¥È²½¤È¤·¤Æ¾¤´¤µ¤ì¤ë¤«Èݤ«
229 * @param y ¾¤´°ÌÃÖ¤ÎyºÂɸ
230 * @param x ¾¤´°ÌÃÖ¤ÎxºÂɸ
231 * @param lev ¾¤´¥ì¥Ù¥ë
232 * @param type ¾¤´¾ò·ïID
233 * @param mode ¥â¥ó¥¹¥¿¡¼À¸À®¾ò·ï¥Õ¥é¥°
234 * @return ¥â¥ó¥¹¥¿¡¼¤¬¡ÊŨÂФâ´Þ¤á¤Æ¡Ë¾¤´Ô¤µ¤ì¤¿¤Ê¤é¤ÐTRUE¤òÊÖ¤¹¡£
236 static bool trump_summoning(int num, bool pet, int y, int x, int lev, int type, u32b mode)
238 int plev = p_ptr->lev;
242 bool success = FALSE;
245 if (!lev) lev = plev * 2 / 3 + randint1(plev / 2);
250 mode |= PM_FORCE_PET;
252 /* Only sometimes allow unique monster */
253 if (mode & PM_ALLOW_UNIQUE)
256 if (randint1(50 + plev) >= plev / 10)
257 mode &= ~PM_ALLOW_UNIQUE;
260 /* Player is who summons */
265 /* Prevent taming, allow unique monster */
268 /* Behave as if they appear by themselfs */
272 for (i = 0; i < num; i++)
274 if (summon_specific(who, y, x, lev, type, mode))
281 msg_print("ï¤â¤¢¤Ê¤¿¤Î¥«¡¼¥É¤Î¸Æ¤ÓÀ¼¤ËÅú¤¨¤Ê¤¤¡£");
283 msg_print("Nobody answers to your Trump call.");
292 * @brief ¡Ö¥ï¥ó¥À¡¼¡×¤Î¥é¥ó¥À¥à¤Ê¸ú²Ì¤ò·èÄꤷ¤Æ½èÍý¤¹¤ë¡£
296 * This spell should become more useful (more controlled) as the\n
297 * player gains experience levels. Thus, add 1/5 of the player's\n
298 * level to the die roll. This eliminates the worst effects later on,\n
299 * while keeping the results quite random. It also allows some potent\n
300 * effects only at high level.
302 static void cast_wonder(int dir)
304 int plev = p_ptr->lev;
305 int die = randint1(100) + plev / 5;
306 int vir = virtue_number(V_CHANCE);
310 if (p_ptr->virtues[vir - 1] > 0)
312 while (randint1(400) < p_ptr->virtues[vir - 1]) die++;
316 while (randint1(400) < (0-p_ptr->virtues[vir - 1])) die--;
321 chg_virtue(V_CHANCE, 1);
326 msg_print("¤¢¤Ê¤¿¤ÏÎϤ¬¤ß¤Ê¤®¤ë¤Î¤ò´¶¤¸¤¿¡ª");
328 msg_print("You feel a surge of power!");
332 if (die < 8) clone_monster(dir);
333 else if (die < 14) speed_monster(dir, plev);
334 else if (die < 26) heal_monster(dir, damroll(4, 6));
335 else if (die < 31) poly_monster(dir, plev);
337 fire_bolt_or_beam(beam_chance() - 10, GF_MISSILE, dir,
338 damroll(3 + ((plev - 1) / 5), 4));
339 else if (die < 41) confuse_monster(dir, plev);
340 else if (die < 46) fire_ball(GF_POIS, dir, 20 + (plev / 2), 3);
341 else if (die < 51) (void)lite_line(dir, damroll(6, 8));
343 fire_bolt_or_beam(beam_chance() - 10, GF_ELEC, dir,
344 damroll(3 + ((plev - 5) / 4), 8));
346 fire_bolt_or_beam(beam_chance() - 10, GF_COLD, dir,
347 damroll(5 + ((plev - 5) / 4), 8));
349 fire_bolt_or_beam(beam_chance(), GF_ACID, dir,
350 damroll(6 + ((plev - 5) / 4), 8));
352 fire_bolt_or_beam(beam_chance(), GF_FIRE, dir,
353 damroll(8 + ((plev - 5) / 4), 8));
354 else if (die < 76) drain_life(dir, 75);
355 else if (die < 81) fire_ball(GF_ELEC, dir, 30 + plev / 2, 2);
356 else if (die < 86) fire_ball(GF_ACID, dir, 40 + plev, 2);
357 else if (die < 91) fire_ball(GF_ICE, dir, 70 + plev, 3);
358 else if (die < 96) fire_ball(GF_FIRE, dir, 80 + plev, 3);
359 else if (die < 101) drain_life(dir, 100 + plev);
362 earthquake(py, px, 12);
366 (void)destroy_area(py, px, 13 + randint0(5), FALSE);
370 symbol_genocide(plev+50, TRUE);
372 else if (die < 110) dispel_monsters(120);
375 dispel_monsters(150);
377 sleep_monsters(plev);
384 * @brief ¡Ö°Î´¡×¤Î¥é¥ó¥À¥à¤Ê¸ú²Ì¤ò·èÄꤷ¤Æ½èÍý¤¹¤ë¡£
388 static void cast_invoke_spirits(int dir)
390 int plev = p_ptr->lev;
391 int die = randint1(100) + plev / 5;
392 int vir = virtue_number(V_CHANCE);
396 if (p_ptr->virtues[vir - 1] > 0)
398 while (randint1(400) < p_ptr->virtues[vir - 1]) die++;
402 while (randint1(400) < (0-p_ptr->virtues[vir - 1])) die--;
407 msg_print("¤¢¤Ê¤¿¤Ï»à¼Ô¤¿¤Á¤ÎÎϤò¾·½¸¤·¤¿...");
409 msg_print("You call on the power of the dead...");
412 chg_virtue(V_CHANCE, 1);
417 msg_print("¤¢¤Ê¤¿¤Ï¤ª¤É¤í¤ª¤É¤í¤·¤¤ÎϤΤ¦¤Í¤ê¤ò´¶¤¸¤¿¡ª");
419 msg_print("You feel a surge of eldritch force!");
427 msg_print("¤Ê¤ó¤Æ¤³¤Ã¤¿¡ª¤¢¤Ê¤¿¤Î¼þ¤ê¤ÎÃÏÌ̤«¤éµà¤Á¤¿¿Í±Æ¤¬Î©¤Á¾å¤¬¤Ã¤Æ¤¤¿¡ª");
429 msg_print("Oh no! Mouldering forms rise from the earth around you!");
432 (void)summon_specific(0, py, px, dun_level, SUMMON_UNDEAD, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET));
433 chg_virtue(V_UNLIFE, 1);
438 msg_print("̾¾õ¤·Æñ¤¤¼Ù°¤Ê¸ºß¤¬¤¢¤Ê¤¿¤Î¿´¤òÄ̤ê²á¤®¤Æ¹Ô¤Ã¤¿...");
440 msg_print("An unnamable evil brushes against your mind...");
443 set_afraid(p_ptr->afraid + randint1(4) + 4);
448 msg_print("¤¢¤Ê¤¿¤ÎƬ¤ËÂçÎ̤ÎÍ©Î¤Á¤ÎÁû¡¹¤·¤¤À¼¤¬²¡¤·´ó¤»¤Æ¤¤¿...");
450 msg_print("Your head is invaded by a horde of gibbering spectral voices...");
453 set_confused(p_ptr->confused + randint1(4) + 4);
457 poly_monster(dir, plev);
461 fire_bolt_or_beam(beam_chance() - 10, GF_MISSILE, dir,
462 damroll(3 + ((plev - 1) / 5), 4));
466 confuse_monster (dir, plev);
470 fire_ball(GF_POIS, dir, 20 + (plev / 2), 3);
474 (void)lite_line(dir, damroll(6, 8));
478 fire_bolt_or_beam(beam_chance() - 10, GF_ELEC, dir,
479 damroll(3+((plev-5)/4),8));
483 fire_bolt_or_beam(beam_chance() - 10, GF_COLD, dir,
484 damroll(5+((plev-5)/4),8));
488 fire_bolt_or_beam(beam_chance(), GF_ACID, dir,
489 damroll(6+((plev-5)/4),8));
493 fire_bolt_or_beam(beam_chance(), GF_FIRE, dir,
494 damroll(8+((plev-5)/4),8));
502 fire_ball(GF_ELEC, dir, 30 + plev / 2, 2);
506 fire_ball(GF_ACID, dir, 40 + plev, 2);
510 fire_ball(GF_ICE, dir, 70 + plev, 3);
514 fire_ball(GF_FIRE, dir, 80 + plev, 3);
518 drain_life(dir, 100 + plev);
522 earthquake(py, px, 12);
526 (void)destroy_area(py, px, 13 + randint0(5), FALSE);
530 symbol_genocide(plev+50, TRUE);
534 dispel_monsters(120);
538 dispel_monsters(150);
540 sleep_monsters(plev);
547 msg_print("±¢±µ¤ÊÀ¼¤¬¥¯¥¹¥¯¥¹¾Ð¤¦¡£¡Ö¤â¤¦¤¹¤°¤ª¤Þ¤¨¤Ï²æ¡¹¤ÎÃç´Ö¤Ë¤Ê¤ë¤À¤í¤¦¡£¼å¤¼Ô¤è¡£¡×");
549 msg_print("Sepulchral voices chuckle. 'Soon you will join us, mortal.'");
555 * @brief ¥«¥ª¥¹Åª¸ú²Ì¤¢¤ë¤¤¤ÏµÚ¤Ó¥·¥ã¥Ã¥Õ¥ë¤Î¡Ö±¿Ì¿¤ÎÎء׸ú²Ì¤ò°ú¿ô´ð½à¤Ë½èÍý¤¹¤ë¡£
556 * @param spell ´ð½à¤È¤Ê¤ë°ú¿ôID
559 static void wild_magic(int spell)
562 int type = SUMMON_BIZARRE1 + randint0(6);
564 if (type < SUMMON_BIZARRE1) type = SUMMON_BIZARRE1;
565 else if (type > SUMMON_BIZARRE6) type = SUMMON_BIZARRE6;
567 switch (randint1(spell) + randint1(8) + 1)
572 teleport_player(10, TELEPORT_PASSIVE);
577 teleport_player(100, TELEPORT_PASSIVE);
581 teleport_player(200, TELEPORT_PASSIVE);
591 lite_area(damroll(2, 3), 2);
594 destroy_doors_touch();
599 sleep_monsters_touch();
603 trap_creation(py, px);
612 aggravate_monsters(0);
615 earthquake(py, px, 5);
619 (void)gain_random_mutation(0);
629 fire_ball(GF_CHAOS, 0, spell + 5, 1 + (spell / 10));
636 while (counter++ < 8)
638 (void)summon_specific(0, py, px, (dun_level * 3) / 2, type, (PM_ALLOW_GROUP | PM_NO_PET));
643 activate_hi_summon(py, px, FALSE);
646 (void)summon_cyber(-1, py, px);
651 (void)activate_ty_curse(FALSE, &count);
658 * @brief ¥È¥é¥ó¥×Îΰè¤Î¡Ö¥·¥ã¥Ã¥Õ¥ë¡×¤Î¸ú²Ì¤ò¥é¥ó¥À¥à¤Ë·è¤á¤Æ½èÍý¤¹¤ë¡£
661 static void cast_shuffle(void)
663 int plev = p_ptr->lev;
666 int vir = virtue_number(V_CHANCE);
669 /* Card sharks and high mages get a level bonus */
670 if ((p_ptr->pclass == CLASS_ROGUE) ||
671 (p_ptr->pclass == CLASS_HIGH_MAGE) ||
672 (p_ptr->pclass == CLASS_SORCERER))
673 die = (randint1(110)) + plev / 5;
680 if (p_ptr->virtues[vir - 1] > 0)
682 while (randint1(400) < p_ptr->virtues[vir - 1]) die++;
686 while (randint1(400) < (0-p_ptr->virtues[vir - 1])) die--;
691 msg_print("¤¢¤Ê¤¿¤Ï¥«¡¼¥É¤òÀڤäưìËç°ú¤¤¤¿...");
693 msg_print("You shuffle the deck and draw a card...");
697 chg_virtue(V_CHANCE, 1);
702 msg_print("¤Ê¤ó¤Æ¤³¤Ã¤¿¡ª¡Ô»à¡Õ¤À¡ª");
704 msg_print("Oh no! It's Death!");
707 for (i = 0; i < randint1(3); i++)
708 activate_hi_summon(py, px, FALSE);
713 msg_print("¤Ê¤ó¤Æ¤³¤Ã¤¿¡ª¡Ô°Ëâ¡Õ¤À¡ª");
715 msg_print("Oh no! It's the Devil!");
718 summon_specific(0, py, px, dun_level, SUMMON_DEMON, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET));
724 msg_print("¤Ê¤ó¤Æ¤³¤Ã¤¿¡ª¡ÔÄߤé¤ì¤¿ÃË¡Õ¤À¡ª");
726 msg_print("Oh no! It's the Hanged Man.");
729 activate_ty_curse(FALSE, &count);
734 msg_print("¡ÔÉÔĴϤηõ¡Õ¤À¡£");
736 msg_print("It's the swords of discord.");
739 aggravate_monsters(0);
744 msg_print("¡Ô¶ò¼Ô¡Õ¤À¡£");
746 msg_print("It's the Fool.");
755 msg_print("´ñ̯¤Ê¥â¥ó¥¹¥¿¡¼¤Î³¨¤À¡£");
757 msg_print("It's the picture of a strange monster.");
760 trump_summoning(1, FALSE, py, px, (dun_level * 3 / 2), (32 + randint1(6)), PM_ALLOW_GROUP | PM_ALLOW_UNIQUE);
765 msg_print("¡Ô·î¡Õ¤À¡£");
767 msg_print("It's the Moon.");
775 msg_print("¡Ô±¿Ì¿¤ÎÎØ¡Õ¤À¡£");
777 msg_print("It's the Wheel of Fortune.");
780 wild_magic(randint0(32));
785 msg_print("¥Æ¥ì¥Ý¡¼¥È¡¦¥«¡¼¥É¤À¡£");
787 msg_print("It's a teleport trump card.");
790 teleport_player(10, TELEPORT_PASSIVE);
795 msg_print("¡ÔÀµµÁ¡Õ¤À¡£");
797 msg_print("It's Justice.");
800 set_blessed(p_ptr->lev, FALSE);
805 msg_print("¥Æ¥ì¥Ý¡¼¥È¡¦¥«¡¼¥É¤À¡£");
807 msg_print("It's a teleport trump card.");
810 teleport_player(100, TELEPORT_PASSIVE);
815 msg_print("¥Æ¥ì¥Ý¡¼¥È¡¦¥«¡¼¥É¤À¡£");
817 msg_print("It's a teleport trump card.");
820 teleport_player(200, TELEPORT_PASSIVE);
825 msg_print("¡ÔÅã¡Õ¤À¡£");
827 msg_print("It's the Tower.");
835 msg_print("¡ÔÀáÀ©¡Õ¤À¡£");
837 msg_print("It's Temperance.");
840 sleep_monsters_touch();
845 msg_print("¡ÔÅã¡Õ¤À¡£");
847 msg_print("It's the Tower.");
850 earthquake(py, px, 5);
855 msg_print("ͧ¹¥Åª¤Ê¥â¥ó¥¹¥¿¡¼¤Î³¨¤À¡£");
857 msg_print("It's the picture of a friendly monster.");
860 trump_summoning(1, TRUE, py, px, (dun_level * 3 / 2), SUMMON_BIZARRE1, 0L);
865 msg_print("ͧ¹¥Åª¤Ê¥â¥ó¥¹¥¿¡¼¤Î³¨¤À¡£");
867 msg_print("It's the picture of a friendly monster.");
870 trump_summoning(1, TRUE, py, px, (dun_level * 3 / 2), SUMMON_BIZARRE2, 0L);
875 msg_print("ͧ¹¥Åª¤Ê¥â¥ó¥¹¥¿¡¼¤Î³¨¤À¡£");
877 msg_print("It's the picture of a friendly monster.");
880 trump_summoning(1, TRUE, py, px, (dun_level * 3 / 2), SUMMON_BIZARRE4, 0L);
885 msg_print("ͧ¹¥Åª¤Ê¥â¥ó¥¹¥¿¡¼¤Î³¨¤À¡£");
887 msg_print("It's the picture of a friendly monster.");
890 trump_summoning(1, TRUE, py, px, (dun_level * 3 / 2), SUMMON_BIZARRE5, 0L);
895 msg_print("¡ÔÎø¿Í¡Õ¤À¡£");
897 msg_print("It's the Lovers.");
900 if (get_aim_dir(&dir))
901 charm_monster(dir, MIN(p_ptr->lev, 20));
906 msg_print("¡Ô±£¼Ô¡Õ¤À¡£");
908 msg_print("It's the Hermit.");
916 msg_print("¡Ô¿³È½¡Õ¤À¡£");
918 msg_print("It's the Judgement.");
921 do_cmd_rerate(FALSE);
922 if (p_ptr->muta1 || p_ptr->muta2 || p_ptr->muta3)
925 msg_print("Á´¤Æ¤ÎÆÍÁ³ÊÑ°Û¤¬¼£¤Ã¤¿¡£");
927 msg_print("You are cured of all mutations.");
930 p_ptr->muta1 = p_ptr->muta2 = p_ptr->muta3 = 0;
931 p_ptr->update |= PU_BONUS;
938 msg_print("¡ÔÂÀÍÛ¡Õ¤À¡£");
940 msg_print("It's the Sun.");
943 chg_virtue(V_KNOWLEDGE, 1);
944 chg_virtue(V_ENLIGHTEN, 1);
950 msg_print("¡ÔÀ¤³¦¡Õ¤À¡£");
952 msg_print("It's the World.");
955 if (p_ptr->exp < PY_MAX_EXP)
957 s32b ee = (p_ptr->exp / 25) + 1;
958 if (ee > 5000) ee = 5000;
960 msg_print("¹¹¤Ë·Ð¸³¤òÀѤó¤À¤è¤¦¤Êµ¤¤¬¤¹¤ë¡£");
962 msg_print("You feel more experienced.");
971 * @brief ¥«¥ª¥¹ËâË¡¡ÖήÀ±·²¡×¤Î½èÍý¤È¤·¤Æ¥×¥ì¥¤¥ä¡¼¤òÃæ¿´¤Ëð¨ÀÐÍî²¼½èÍý¤ò10+1d10²ó·«¤êÊÖ¤¹¡£
972 * / Drop 10+1d10 meteor ball at random places near the player
973 * @param dam ¥À¥á¡¼¥¸
974 * @param rad ¸úÎϤÎȾ·Â
977 static void cast_meteor(int dam, int rad)
980 int b = 10 + randint1(10);
982 for (i = 0; i < b; i++)
987 for (count = 0; count <= 20; count++)
991 x = px - 8 + randint0(17);
992 y = py - 8 + randint0(17);
994 dx = (px > x) ? (px - x) : (x - px);
995 dy = (py > y) ? (py - y) : (y - py);
997 /* Approximate distance */
998 d = (dy > dx) ? (dy + (dx >> 1)) : (dx + (dy >> 1));
1000 if (d >= 9) continue;
1002 if (!in_bounds(y, x) || !projectable(py, px, y, x)
1003 || !cave_have_flag_bold(y, x, FF_PROJECT)) continue;
1005 /* Valid position */
1009 if (count > 20) continue;
1011 project(0, rad, y, x, dam, GF_METEOR, PROJECT_KILL | PROJECT_JUMP | PROJECT_ITEM, -1);
1017 * @brief Ç˼ÙËâË¡¡Ö¿À¤ÎÅܤê¡×¤Î½èÍý¤È¤·¤Æ¥¿¡¼¥²¥Ã¥È¤ò»ØÄꤷ¤¿¸åʬ²ò¤Î¥Ü¡¼¥ë¤òºÇÂç20²óȯÀ¸¤µ¤»¤ë¡£
1018 * @param dam ¥À¥á¡¼¥¸
1019 * @param rad ¸úÎϤÎȾ·Â
1020 * @return ¥¿¡¼¥²¥Ã¥È¤ò»ØÄꤷ¡¢¼Â¹Ô¤·¤¿¤Ê¤é¤ÐTRUE¤òÊÖ¤¹¡£
1022 static bool cast_wrath_of_the_god(int dam, int rad)
1027 int b = 10 + randint1(10);
1029 if (!get_aim_dir(&dir)) return FALSE;
1031 /* Use the given direction */
1032 tx = px + 99 * ddx[dir];
1033 ty = py + 99 * ddy[dir];
1035 /* Hack -- Use an actual "target" */
1036 if ((dir == 5) && target_okay())
1047 /* Hack -- Stop at the target */
1048 if ((y == ty) && (x == tx)) break;
1052 mmove2(&ny, &nx, py, px, ty, tx);
1054 /* Stop at maximum range */
1055 if (MAX_RANGE <= distance(py, px, ny, nx)) break;
1057 /* Stopped by walls/doors */
1058 if (!cave_have_flag_bold(ny, nx, FF_PROJECT)) break;
1060 /* Stopped by monsters */
1061 if ((dir != 5) && cave[ny][nx].m_idx != 0) break;
1063 /* Save the new location */
1070 for (i = 0; i < b; i++)
1072 int count = 20, d = 0;
1078 x = tx - 5 + randint0(11);
1079 y = ty - 5 + randint0(11);
1081 dx = (tx > x) ? (tx - x) : (x - tx);
1082 dy = (ty > y) ? (ty - y) : (y - ty);
1084 /* Approximate distance */
1085 d = (dy > dx) ? (dy + (dx >> 1)) : (dx + (dy >> 1));
1086 /* Within the radius */
1090 if (count < 0) continue;
1092 /* Cannot penetrate perm walls */
1093 if (!in_bounds(y,x) ||
1094 cave_stop_disintegration(y,x) ||
1095 !in_disintegration_range(ty, tx, y, x))
1098 project(0, rad, y, x, dam, GF_DISINTEGRATE, PROJECT_JUMP | PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL, -1);
1105 * @brief °ËâÎΰè¤Î¥°¥ì¡¼¥¿¡¼¥Ç¡¼¥â¥ó¾¤´¤ËÍøÍѲÄǽ¤Ê»àÂΤ«¤É¤¦¤«¤òÊÖ¤¹¡£ / An "item_tester_hook" for offer
1106 * @param o_ptr ¥ª¥Ö¥¸¥§¥¯¥È¹½Â¤ÂΤλ²¾È¥Ý¥¤¥ó¥¿
1107 * @return À¸ìӤ˻ÈÍѲÄǽ¤Ê»àÂΤʤé¤ÐTRUE¤òÊÖ¤¹¡£
1109 static bool item_tester_offer(object_type *o_ptr)
1111 /* Flasks of oil are okay */
1112 if (o_ptr->tval != TV_CORPSE) return (FALSE);
1114 if (o_ptr->sval != SV_CORPSE) return (FALSE);
1116 if (my_strchr("pht", r_info[o_ptr->pval].d_char)) return (TRUE);
1118 /* Assume not okay */
1123 * @brief °ËâÎΰè¤Î¥°¥ì¡¼¥¿¡¼¥Ç¡¼¥â¥ó¾¤´¤ò½èÍý¤¹¤ë / Daemon spell Summon Greater Demon
1124 * @return ½èÍý¤ò¼Â¹Ô¤·¤¿¤Ê¤é¤ÐTRUE¤òÊÖ¤¹¡£
1126 static bool cast_summon_greater_demon(void)
1128 int plev = p_ptr->lev;
1134 item_tester_hook = item_tester_offer;
1136 q = "¤É¤Î»àÂΤòÊû¤²¤Þ¤¹¤«? ";
1137 s = "Êû¤²¤é¤ì¤ë»àÂΤò»ý¤Ã¤Æ¤¤¤Ê¤¤¡£";
1139 q = "Sacrifice which corpse? ";
1140 s = "You have nothing to scrifice.";
1142 if (!get_item(&item, q, s, (USE_INVEN | USE_FLOOR))) return FALSE;
1144 /* Get the item (in the pack) */
1147 o_ptr = &inventory[item];
1150 /* Get the item (on the floor) */
1153 o_ptr = &o_list[0 - item];
1156 summon_lev = plev * 2 / 3 + r_info[o_ptr->pval].level;
1158 if (summon_specific(-1, py, px, summon_lev, SUMMON_HI_DEMON, (PM_ALLOW_GROUP | PM_FORCE_PET)))
1161 msg_print("ⲫ¤Î°½¤¬½¼Ëþ¤·¤¿¡£");
1163 msg_print("The area fills with a stench of sulphur and brimstone.");
1168 msg_print("¡Ö¤´ÍѤǤ´¤¶¤¤¤Þ¤¹¤«¡¢¤´¼ç¿ÍÍÍ¡×");
1170 msg_print("'What is thy bidding... Master?'");
1173 /* Decrease the item (from the pack) */
1176 inven_item_increase(item, -1);
1177 inven_item_describe(item);
1178 inven_item_optimize(item);
1181 /* Decrease the item (from the floor) */
1184 floor_item_increase(0 - item, -1);
1185 floor_item_describe(0 - item);
1186 floor_item_optimize(0 - item);
1192 msg_print("°Ëâ¤Ï¸½¤ì¤Ê¤«¤Ã¤¿¡£");
1194 msg_print("No Greater Demon arrive.");
1202 * @brief ²Î¤Î³«»Ï¤ò½èÍý¤¹¤ë / Start singing if the player is a Bard
1203 * @param spell ÎΰèËâË¡¤È¤·¤Æ¤ÎID
1204 * @param song ËâË¡¸ú²Ì¤ÎID
1207 static void start_singing(int spell, int song)
1209 /* Remember the song index */
1210 p_ptr->magic_num1[0] = song;
1212 /* Remember the index of the spell which activated the song */
1213 p_ptr->magic_num2[0] = spell;
1216 /* Now the player is singing */
1217 set_action(ACTION_SING);
1220 /* Recalculate bonuses */
1221 p_ptr->update |= (PU_BONUS);
1223 /* Redraw status bar */
1224 p_ptr->redraw |= (PR_STATUS);
1228 * @brief ²Î¤ÎÄä»ß¤ò½èÍý¤¹¤ë / Stop singing if the player is a Bard
1231 void stop_singing(void)
1233 if (p_ptr->pclass != CLASS_BARD) return;
1235 /* Are there interupted song? */
1236 if (p_ptr->magic_num1[1])
1238 /* Forget interupted song */
1239 p_ptr->magic_num1[1] = 0;
1243 /* The player is singing? */
1244 if (!p_ptr->magic_num1[0]) return;
1246 /* Hack -- if called from set_action(), avoid recursive loop */
1247 if (p_ptr->action == ACTION_SING) set_action(ACTION_NONE);
1249 /* Message text of each song or etc. */
1250 do_spell(REALM_MUSIC, p_ptr->magic_num2[0], SPELL_STOP);
1252 p_ptr->magic_num1[0] = MUSIC_NONE;
1253 p_ptr->magic_num2[0] = 0;
1255 /* Recalculate bonuses */
1256 p_ptr->update |= (PU_BONUS);
1258 /* Redraw status bar */
1259 p_ptr->redraw |= (PR_STATUS);
1264 * @brief À¸Ì¿ÎΰèËâË¡¤Î³Æ½èÍý¤ò¹Ô¤¦
1265 * @param spell ËâË¡ID
1266 * @param mode ½èÍýÆâÍÆ (SPELL_NAME / SPELL_DESC / SPELL_INFO / SPELL_CAST)
1267 * @return SPELL_NAME / SPELL_DESC / SPELL_INFO »þ¤Ë¤Ïʸ»úÎó¥Ý¥¤¥ó¥¿¤òÊÖ¤¹¡£SPELL_CAST»þ¤ÏNULLʸ»úÎó¤òÊÖ¤¹¡£
1269 static cptr do_life_spell(int spell, int mode)
1271 bool name = (mode == SPELL_NAME) ? TRUE : FALSE;
1272 bool desc = (mode == SPELL_DESC) ? TRUE : FALSE;
1273 bool info = (mode == SPELL_INFO) ? TRUE : FALSE;
1274 bool cast = (mode == SPELL_CAST) ? TRUE : FALSE;
1277 int plev = p_ptr->lev;
1283 if (name) return "·Ú½ý¤Î¼£Ìþ";
1284 if (desc) return "²ø²æ¤ÈÂÎÎϤò¾¯¤·²óÉü¤µ¤»¤ë¡£";
1286 if (name) return "Cure Light Wounds";
1287 if (desc) return "Heals cut and HP a little.";
1294 if (info) return info_heal(dice, sides, 0);
1298 hp_player(damroll(dice, sides));
1299 set_cut(p_ptr->cut - 10);
1306 if (name) return "½ËÊ¡";
1307 if (desc) return "°ìÄê»þ´Ö¡¢Ì¿ÃæΨ¤ÈAC¤Ë¥Ü¡¼¥Ê¥¹¤òÆÀ¤ë¡£";
1309 if (name) return "Bless";
1310 if (desc) return "Gives bonus to hit and AC for a few turns.";
1316 if (info) return info_duration(base, base);
1320 set_blessed(randint1(base) + base, FALSE);
1327 if (name) return "·Ú½ý";
1328 if (desc) return "1ÂΤΥâ¥ó¥¹¥¿¡¼¤Ë¾®¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
1330 if (name) return "Cause Light Wounds";
1331 if (desc) return "Wounds a monster a little unless resisted.";
1335 int dice = 3 + (plev - 1) / 5;
1338 if (info) return info_damage(dice, sides, 0);
1342 if (!get_aim_dir(&dir)) return NULL;
1343 fire_ball_hide(GF_WOUNDS, dir, damroll(dice, sides), 0);
1350 if (name) return "¸÷¤Î¾¤´";
1351 if (desc) return "¸÷¸»¤¬¾È¤é¤·¤Æ¤¤¤ëÈϰϤ«Éô²°Á´ÂΤò±Êµ×¤ËÌÀ¤ë¤¯¤¹¤ë¡£";
1353 if (name) return "Call Light";
1354 if (desc) return "Lights up nearby area and the inside of a room permanently.";
1359 int sides = plev / 2;
1360 int rad = plev / 10 + 1;
1362 if (info) return info_damage(dice, sides, 0);
1366 lite_area(damroll(dice, sides), rad);
1373 if (name) return "æ« & ±£¤·Èâ´¶ÃÎ";
1374 if (desc) return "¶á¤¯¤ÎÁ´¤Æ¤Î櫤ÈÈâ¤È³¬Ãʤò´¶ÃΤ¹¤ë¡£";
1376 if (name) return "Detect Doors & Traps";
1377 if (desc) return "Detects traps, doors, and stairs in your vicinity.";
1381 int rad = DETECT_RAD_DEFAULT;
1383 if (info) return info_radius(rad);
1387 detect_traps(rad, TRUE);
1396 if (name) return "½Å½ý¤Î¼£Ìþ";
1397 if (desc) return "²ø²æ¤ÈÂÎÎϤòÃæÄøÅÙ²óÉü¤µ¤»¤ë¡£";
1399 if (name) return "Cure Medium Wounds";
1400 if (desc) return "Heals cut and HP more.";
1407 if (info) return info_heal(dice, sides, 0);
1411 hp_player(damroll(dice, sides));
1412 set_cut((p_ptr->cut / 2) - 20);
1419 if (name) return "²òÆÇ";
1420 if (desc) return "ÂÎÆâ¤ÎÆǤò¼è¤ê½ü¤¯¡£";
1422 if (name) return "Cure Poison";
1423 if (desc) return "Cure poison status.";
1436 if (name) return "¶õÊ¢½¼Â";
1437 if (desc) return "ËþÊ¢¤Ë¤¹¤ë¡£";
1439 if (name) return "Satisfy Hunger";
1440 if (desc) return "Satisfies hunger.";
1446 set_food(PY_FOOD_MAX - 1);
1453 if (name) return "²ò¼ö";
1454 if (desc) return "¥¢¥¤¥Æ¥à¤Ë¤«¤«¤Ã¤¿¼å¤¤¼ö¤¤¤ò²ò½ü¤¹¤ë¡£";
1456 if (name) return "Remove Curse";
1457 if (desc) return "Removes normal curses from equipped items.";
1466 msg_print("狼¤Ë¸«¼é¤é¤ì¤Æ¤¤¤ë¤è¤¦¤Êµ¤¤¬¤¹¤ë¡£");
1468 msg_print("You feel as if someone is watching over you.");
1477 if (name) return "½Å½ý";
1478 if (desc) return "1ÂΤΥâ¥ó¥¹¥¿¡¼¤ËÃæ¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
1480 if (name) return "Cause Medium Wounds";
1481 if (desc) return "Wounds a monster unless resisted.";
1485 int sides = 8 + (plev - 5) / 4;
1488 if (info) return info_damage(dice, sides, 0);
1492 if (!get_aim_dir(&dir)) return NULL;
1493 fire_ball_hide(GF_WOUNDS, dir, damroll(sides, dice), 0);
1500 if (name) return "Ã×Ì¿½ý¤Î¼£Ìþ";
1501 if (desc) return "ÂÎÎϤòÂçÉý¤Ë²óÉü¤µ¤»¡¢Éé½ý¤ÈÛ¯Û°¾õÂÖ¤âÁ´²÷¤¹¤ë¡£";
1503 if (name) return "Cure Critical Wounds";
1504 if (desc) return "Heals cut, stun and HP greatly.";
1511 if (info) return info_heal(dice, sides, 0);
1515 hp_player(damroll(dice, sides));
1524 if (name) return "ÂÑÇ®ÂÑ´¨";
1525 if (desc) return "°ìÄê»þ´Ö¡¢²Ð±ê¤ÈÎ䵤¤ËÂФ¹¤ëÂÑÀ¤òÆÀ¤ë¡£ÁõÈ÷¤Ë¤è¤ëÂÑÀ¤ËÎßÀѤ¹¤ë¡£";
1527 if (name) return "Resist Heat and Cold";
1528 if (desc) return "Gives resistance to fire and cold. These resistances can be added to which from equipment for more powerful resistances.";
1534 if (info) return info_duration(base, base);
1538 set_oppose_cold(randint1(base) + base, FALSE);
1539 set_oppose_fire(randint1(base) + base, FALSE);
1546 if (name) return "¼þÊÕ´¶ÃÎ";
1547 if (desc) return "¼þÊÕ¤ÎÃÏ·Á¤ò´¶ÃΤ¹¤ë¡£";
1549 if (name) return "Sense Surroundings";
1550 if (desc) return "Maps nearby area.";
1554 int rad = DETECT_RAD_MAP;
1556 if (info) return info_radius(rad);
1567 if (name) return "¥Ñ¥Ë¥Ã¥¯¡¦¥¢¥ó¥Ç¥Ã¥É";
1568 if (desc) return "»ë³¦Æâ¤Î¥¢¥ó¥Ç¥Ã¥É¤ò¶²Éݤµ¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
1570 if (name) return "Turn Undead";
1571 if (desc) return "Attempts to scare undead monsters in sight.";
1584 if (name) return "ÂÎÎϲóÉü";
1585 if (desc) return "¶Ë¤á¤Æ¶¯ÎϤʲóÉü¼öʸ¤Ç¡¢Éé½ý¤ÈÛ¯Û°¾õÂÖ¤âÁ´²÷¤¹¤ë¡£";
1587 if (name) return "Healing";
1588 if (desc) return "Much powerful healing magic, and heals cut and stun completely.";
1594 if (info) return info_heal(0, 0, heal);
1607 if (name) return "·ë³¦¤ÎÌæ¾Ï";
1608 if (desc) return "¼«Ê¬¤Î¤¤¤ë¾²¤Î¾å¤Ë¡¢¥â¥ó¥¹¥¿¡¼¤¬Ä̤êÈ´¤±¤¿¤ê¾¤´¤µ¤ì¤¿¤ê¤¹¤ë¤³¤È¤¬¤Ç¤¤Ê¤¯¤Ê¤ë¥ë¡¼¥ó¤òÉÁ¤¯¡£";
1610 if (name) return "Glyph of Warding";
1611 if (desc) return "Sets a glyph on the floor beneath you. Monsters cannot attack you if you are on a glyph, but can try to break glyph.";
1624 if (name) return "*²ò¼ö*";
1625 if (desc) return "¥¢¥¤¥Æ¥à¤Ë¤«¤«¤Ã¤¿¶¯ÎϤʼö¤¤¤ò²ò½ü¤¹¤ë¡£";
1627 if (name) return "Dispel Curse";
1628 if (desc) return "Removes normal and heavy curse from equipped items.";
1634 if (remove_all_curse())
1637 msg_print("狼¤Ë¸«¼é¤é¤ì¤Æ¤¤¤ë¤è¤¦¤Êµ¤¤¬¤¹¤ë¡£");
1639 msg_print("You feel as if someone is watching over you.");
1648 if (name) return "´Õ¼±";
1649 if (desc) return "¥¢¥¤¥Æ¥à¤ò¼±Ê̤¹¤ë¡£";
1651 if (name) return "Perception";
1652 if (desc) return "Identifies an item.";
1658 if (!ident_spell(FALSE)) return NULL;
1665 if (name) return "¥¢¥ó¥Ç¥Ã¥ÉÂ໶";
1666 if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥¢¥ó¥Ç¥Ã¥É¤Ë¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£";
1668 if (name) return "Dispel Undead";
1669 if (desc) return "Damages all undead monsters in sight.";
1674 int sides = plev * 5;
1676 if (info) return info_damage(dice, sides, 0);
1680 dispel_undead(damroll(dice, sides));
1687 if (name) return "Æä¤Î¹ï";
1688 if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤ò̥λ¤¹¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
1690 if (name) return "Day of the Dove";
1691 if (desc) return "Attempts to charm all monsters in sight.";
1695 int power = plev * 2;
1697 if (info) return info_power(power);
1701 charm_monsters(power);
1708 if (name) return "Ã×Ì¿½ý";
1709 if (desc) return "1ÂΤΥâ¥ó¥¹¥¿¡¼¤ËÂç¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
1711 if (name) return "Cause Critical Wounds";
1712 if (desc) return "Wounds a monster critically unless resisted.";
1716 int dice = 5 + (plev - 5) / 3;
1719 if (info) return info_damage(dice, sides, 0);
1723 if (!get_aim_dir(&dir)) return NULL;
1724 fire_ball_hide(GF_WOUNDS, dir, damroll(dice, sides), 0);
1731 if (name) return "µ¢´Ô¤Î¾Û";
1732 if (desc) return "ÃϾå¤Ë¤¤¤ë¤È¤¤Ï¥À¥ó¥¸¥ç¥ó¤ÎºÇ¿¼³¬¤Ø¡¢¥À¥ó¥¸¥ç¥ó¤Ë¤¤¤ë¤È¤¤ÏÃϾå¤Ø¤È°ÜÆ°¤¹¤ë¡£";
1734 if (name) return "Word of Recall";
1735 if (desc) return "Recalls player from dungeon to town, or from town to the deepest level of dungeon.";
1742 if (info) return info_delay(base, sides);
1746 if (!word_of_recall()) return NULL;
1753 if (name) return "¿¿¼Â¤Îº×ÃÅ";
1754 if (desc) return "¸½ºß¤Î³¬¤òºÆ¹½À®¤¹¤ë¡£";
1756 if (name) return "Alter Reality";
1757 if (desc) return "Recreates current dungeon level.";
1764 if (info) return info_delay(base, sides);
1775 if (name) return "¿¿¡¦·ë³¦";
1776 if (desc) return "¼«Ê¬¤Î¤¤¤ë¾²¤È¼þ°Ï8¥Þ¥¹¤Î¾²¤Î¾å¤Ë¡¢¥â¥ó¥¹¥¿¡¼¤¬Ä̤êÈ´¤±¤¿¤ê¾¤´¤µ¤ì¤¿¤ê¤¹¤ë¤³¤È¤¬¤Ç¤¤Ê¤¯¤Ê¤ë¥ë¡¼¥ó¤òÉÁ¤¯¡£";
1778 if (name) return "Warding True";
1779 if (desc) return "Creates glyphs in all adjacent squares and under you.";
1785 if (info) return info_radius(rad);
1797 if (name) return "ÉÔÌÓ²½";
1798 if (desc) return "¤³¤Î³¬¤ÎÁý¿£¤¹¤ë¥â¥ó¥¹¥¿¡¼¤¬Áý¿£¤Ç¤¤Ê¤¯¤Ê¤ë¡£";
1800 if (name) return "Sterilization";
1801 if (desc) return "Prevents any breeders on current level from breeding.";
1807 num_repro += MAX_REPRO;
1814 if (name) return "Á´´¶ÃÎ";
1815 if (desc) return "¶á¤¯¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¡¢æ«¡¢Èâ¡¢³¬ÃÊ¡¢ºâÊõ¡¢¤½¤·¤Æ¥¢¥¤¥Æ¥à¤ò´¶ÃΤ¹¤ë¡£";
1817 if (name) return "Detection";
1818 if (desc) return "Detects all monsters, traps, doors, stairs, treasures and items in your vicinity.";
1822 int rad = DETECT_RAD_DEFAULT;
1824 if (info) return info_radius(rad);
1835 if (name) return "¥¢¥ó¥Ç¥Ã¥É¾ÃÌÇ";
1836 if (desc) return "¼«Ê¬¤Î¼þ°Ï¤Ë¤¤¤ë¥¢¥ó¥Ç¥Ã¥É¤ò¸½ºß¤Î³¬¤«¤é¾Ã¤·µî¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
1838 if (name) return "Annihilate Undead";
1839 if (desc) return "Eliminates all nearby undead monsters, exhausting you. Powerful or unique monsters may be able to resist.";
1843 int power = plev + 50;
1845 if (info) return info_power(power);
1849 mass_genocide_undead(power, TRUE);
1856 if (name) return "ÀéΤ´ã";
1857 if (desc) return "¤½¤Î³¬Á´ÂΤò±Êµ×¤Ë¾È¤é¤·¡¢¥À¥ó¥¸¥ç¥óÆ⤹¤Ù¤Æ¤Î¥¢¥¤¥Æ¥à¤ò´¶ÃΤ¹¤ë¡£";
1859 if (name) return "Clairvoyance";
1860 if (desc) return "Maps and lights whole dungeon level. Knows all objects location. And gives telepathy for a while.";
1873 if (name) return "Á´Éü³è";
1874 if (desc) return "¤¹¤Ù¤Æ¤Î¥¹¥Æ¡¼¥¿¥¹¤È·Ð¸³Ãͤò²óÉü¤¹¤ë¡£";
1876 if (name) return "Restoration";
1877 if (desc) return "Restores all stats and experience.";
1896 if (name) return "*ÂÎÎϲóÉü*";
1897 if (desc) return "ºÇ¶¯¤Î¼£Ìþ¤ÎËâË¡¤Ç¡¢Éé½ý¤ÈÛ¯Û°¾õÂÖ¤âÁ´²÷¤¹¤ë¡£";
1899 if (name) return "Healing True";
1900 if (desc) return "The greatest healing magic. Heals all HP, cut and stun.";
1906 if (info) return info_heal(0, 0, heal);
1919 if (name) return "À»¤Ê¤ë¥Ó¥¸¥ç¥ó";
1920 if (desc) return "¥¢¥¤¥Æ¥à¤Î»ý¤ÄǽÎϤò´°Á´¤ËÃΤ롣";
1922 if (name) return "Holy Vision";
1923 if (desc) return "*Identifies* an item.";
1929 if (!identify_fully(FALSE)) return NULL;
1936 if (name) return "µæ¶Ë¤ÎÂÑÀ";
1937 if (desc) return "°ìÄê»þ´Ö¡¢¤¢¤é¤æ¤ëÂÑÀ¤òÉÕ¤±¡¢AC¤ÈËâË¡ËɸæǽÎϤò¾å¾º¤µ¤»¤ë¡£";
1939 if (name) return "Ultimate Resistance";
1940 if (desc) return "Gives ultimate resistance, bonus to AC and speed.";
1944 int base = plev / 2;
1946 if (info) return info_duration(base, base);
1950 int v = randint1(base) + base;
1952 set_oppose_acid(v, FALSE);
1953 set_oppose_elec(v, FALSE);
1954 set_oppose_fire(v, FALSE);
1955 set_oppose_cold(v, FALSE);
1956 set_oppose_pois(v, FALSE);
1957 set_ultimate_res(v, FALSE);
1967 * @brief Àç½ÑÎΰèËâË¡¤Î³Æ½èÍý¤ò¹Ô¤¦
1968 * @param spell ËâË¡ID
1969 * @param mode ½èÍýÆâÍÆ (SPELL_NAME / SPELL_DESC / SPELL_INFO / SPELL_CAST)
1970 * @return SPELL_NAME / SPELL_DESC / SPELL_INFO »þ¤Ë¤Ïʸ»úÎó¥Ý¥¤¥ó¥¿¤òÊÖ¤¹¡£SPELL_CAST»þ¤ÏNULLʸ»úÎó¤òÊÖ¤¹¡£
1972 static cptr do_sorcery_spell(int spell, int mode)
1974 bool name = (mode == SPELL_NAME) ? TRUE : FALSE;
1975 bool desc = (mode == SPELL_DESC) ? TRUE : FALSE;
1976 bool info = (mode == SPELL_INFO) ? TRUE : FALSE;
1977 bool cast = (mode == SPELL_CAST) ? TRUE : FALSE;
1980 int plev = p_ptr->lev;
1986 if (name) return "¥â¥ó¥¹¥¿¡¼´¶ÃÎ";
1987 if (desc) return "¶á¤¯¤ÎÁ´¤Æ¤Î¸«¤¨¤ë¥â¥ó¥¹¥¿¡¼¤ò´¶ÃΤ¹¤ë¡£";
1989 if (name) return "Detect Monsters";
1990 if (desc) return "Detects all monsters in your vicinity unless invisible.";
1994 int rad = DETECT_RAD_DEFAULT;
1996 if (info) return info_radius(rad);
2000 detect_monsters_normal(rad);
2007 if (name) return "¥·¥ç¡¼¥È¡¦¥Æ¥ì¥Ý¡¼¥È";
2008 if (desc) return "¶áµ÷Î¥¤Î¥Æ¥ì¥Ý¡¼¥È¤ò¤¹¤ë¡£";
2010 if (name) return "Phase Door";
2011 if (desc) return "Teleport short distance.";
2017 if (info) return info_range(range);
2021 teleport_player(range, 0L);
2028 if (name) return "櫤ÈÈâ´¶ÃÎ";
2029 if (desc) return "¶á¤¯¤ÎÁ´¤Æ¤ÎÈâ¤È櫤ò´¶ÃΤ¹¤ë¡£";
2031 if (name) return "Detect Doors and Traps";
2032 if (desc) return "Detects traps, doors, and stairs in your vicinity.";
2036 int rad = DETECT_RAD_DEFAULT;
2038 if (info) return info_radius(rad);
2042 detect_traps(rad, TRUE);
2051 if (name) return "¥é¥¤¥È¡¦¥¨¥ê¥¢";
2052 if (desc) return "¸÷¸»¤¬¾È¤é¤·¤Æ¤¤¤ëÈϰϤ«Éô²°Á´ÂΤò±Êµ×¤ËÌÀ¤ë¤¯¤¹¤ë¡£";
2054 if (name) return "Light Area";
2055 if (desc) return "Lights up nearby area and the inside of a room permanently.";
2060 int sides = plev / 2;
2061 int rad = plev / 10 + 1;
2063 if (info) return info_damage(dice, sides, 0);
2067 lite_area(damroll(dice, sides), rad);
2074 if (name) return "¥Ñ¥Ë¥Ã¥¯¡¦¥â¥ó¥¹¥¿¡¼";
2075 if (desc) return "¥â¥ó¥¹¥¿¡¼1ÂΤòº®Í𤵤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
2077 if (name) return "Confuse Monster";
2078 if (desc) return "Attempts to confuse a monster.";
2082 int power = (plev * 3) / 2;
2084 if (info) return info_power(power);
2088 if (!get_aim_dir(&dir)) return NULL;
2090 confuse_monster(dir, power);
2097 if (name) return "¥Æ¥ì¥Ý¡¼¥È";
2098 if (desc) return "±óµ÷Î¥¤Î¥Æ¥ì¥Ý¡¼¥È¤ò¤¹¤ë¡£";
2100 if (name) return "Teleport";
2101 if (desc) return "Teleport long distance.";
2105 int range = plev * 5;
2107 if (info) return info_range(range);
2111 teleport_player(range, 0L);
2118 if (name) return "¥¹¥ê¡¼¥×¡¦¥â¥ó¥¹¥¿¡¼";
2119 if (desc) return "¥â¥ó¥¹¥¿¡¼1ÂΤò̲¤é¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
2121 if (name) return "Sleep Monster";
2122 if (desc) return "Attempts to sleep a monster.";
2128 if (info) return info_power(power);
2132 if (!get_aim_dir(&dir)) return NULL;
2134 sleep_monster(dir, plev);
2141 if (name) return "ËâÎϽ¼Å¶";
2142 if (desc) return "¾ó/ËâË¡ËÀ¤Î½¼Å¶²ó¿ô¤òÁý¤ä¤¹¤«¡¢½¼Å¶Ãæ¤Î¥í¥Ã¥É¤Î½¼Å¶»þ´Ö¤ò¸º¤é¤¹¡£";
2144 if (name) return "Recharging";
2145 if (desc) return "Recharges staffs, wands or rods.";
2149 int power = plev * 4;
2151 if (info) return info_power(power);
2155 if (!recharge(power)) return NULL;
2162 if (name) return "ËâË¡¤ÎÃÏ¿Þ";
2163 if (desc) return "¼þÊÕ¤ÎÃÏ·Á¤ò´¶ÃΤ¹¤ë¡£";
2165 if (name) return "Magic Mapping";
2166 if (desc) return "Maps nearby area.";
2170 int rad = DETECT_RAD_MAP;
2172 if (info) return info_radius(rad);
2183 if (name) return "´ÕÄê";
2184 if (desc) return "¥¢¥¤¥Æ¥à¤ò¼±Ê̤¹¤ë¡£";
2186 if (name) return "Identify";
2187 if (desc) return "Identifies an item.";
2193 if (!ident_spell(FALSE)) return NULL;
2200 if (name) return "¥¹¥í¥¦¡¦¥â¥ó¥¹¥¿¡¼";
2201 if (desc) return "¥â¥ó¥¹¥¿¡¼1ÂΤò¸ºÂ®¤µ¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
2203 if (name) return "Slow Monster";
2204 if (desc) return "Attempts to slow a monster.";
2210 if (info) return info_power(power);
2214 if (!get_aim_dir(&dir)) return NULL;
2216 slow_monster(dir, plev);
2223 if (name) return "¼þÊÕ¥¹¥ê¡¼¥×";
2224 if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤ò̲¤é¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
2226 if (name) return "Mass Sleep";
2227 if (desc) return "Attempts to sleep all monsters in sight.";
2233 if (info) return info_power(power);
2237 sleep_monsters(plev);
2244 if (name) return "¥Æ¥ì¥Ý¡¼¥È¡¦¥â¥ó¥¹¥¿¡¼";
2245 if (desc) return "¥â¥ó¥¹¥¿¡¼¤ò¥Æ¥ì¥Ý¡¼¥È¤µ¤»¤ë¥Ó¡¼¥à¤òÊü¤Ä¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
2247 if (name) return "Teleport Away";
2248 if (desc) return "Teleports all monsters on the line away unless resisted.";
2254 if (info) return info_power(power);
2258 if (!get_aim_dir(&dir)) return NULL;
2260 fire_beam(GF_AWAY_ALL, dir, power);
2267 if (name) return "¥¹¥Ô¡¼¥É";
2268 if (desc) return "°ìÄê»þ´Ö¡¢²Ã®¤¹¤ë¡£";
2270 if (name) return "Haste Self";
2271 if (desc) return "Hastes you for a while.";
2276 int sides = 20 + plev;
2278 if (info) return info_duration(base, sides);
2282 set_fast(randint1(sides) + base, FALSE);
2289 if (name) return "¿¿¡¦´¶ÃÎ";
2290 if (desc) return "¶á¤¯¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¡¢æ«¡¢Èâ¡¢³¬ÃÊ¡¢ºâÊõ¡¢¤½¤·¤Æ¥¢¥¤¥Æ¥à¤ò´¶ÃΤ¹¤ë¡£";
2292 if (name) return "Detection True";
2293 if (desc) return "Detects all monsters, traps, doors, stairs, treasures and items in your vicinity.";
2297 int rad = DETECT_RAD_DEFAULT;
2299 if (info) return info_radius(rad);
2310 if (name) return "¿¿¡¦´ÕÄê";
2311 if (desc) return "¥¢¥¤¥Æ¥à¤Î»ý¤ÄǽÎϤò´°Á´¤ËÃΤ롣";
2313 if (name) return "Identify True";
2314 if (desc) return "*Identifies* an item.";
2320 if (!identify_fully(FALSE)) return NULL;
2327 if (name) return "ʪÂΤȺâÊõ´¶ÃÎ";
2328 if (desc) return "¶á¤¯¤ÎÁ´¤Æ¤Î¥¢¥¤¥Æ¥à¤ÈºâÊõ¤ò´¶ÃΤ¹¤ë¡£";
2330 if (name) return "Detect items and Treasure";
2331 if (desc) return "Detects all treasures and items in your vicinity.";
2335 int rad = DETECT_RAD_DEFAULT;
2337 if (info) return info_radius(rad);
2341 detect_objects_normal(rad);
2342 detect_treasure(rad);
2343 detect_objects_gold(rad);
2350 if (name) return "¥Á¥ã¡¼¥à¡¦¥â¥ó¥¹¥¿¡¼";
2351 if (desc) return "¥â¥ó¥¹¥¿¡¼1ÂΤò̥λ¤¹¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
2353 if (name) return "Charm Monster";
2354 if (desc) return "Attempts to charm a monster.";
2360 if (info) return info_power(power);
2364 if (!get_aim_dir(&dir)) return NULL;
2366 charm_monster(dir, power);
2373 if (name) return "Àº¿À´¶ÃÎ";
2374 if (desc) return "°ìÄê»þ´Ö¡¢¥Æ¥ì¥Ñ¥·¡¼Ç½ÎϤòÆÀ¤ë¡£";
2376 if (name) return "Sense Minds";
2377 if (desc) return "Gives telepathy for a while.";
2384 if (info) return info_duration(base, sides);
2388 set_tim_esp(randint1(sides) + base, FALSE);
2395 if (name) return "³¹°ÜÆ°";
2396 if (desc) return "³¹¤Ø°ÜÆ°¤¹¤ë¡£ÃϾå¤Ë¤¤¤ë¤È¤¤·¤«»È¤¨¤Ê¤¤¡£";
2398 if (name) return "Teleport to town";
2399 if (desc) return "Teleport to a town which you choose in a moment. Can only be used outdoors.";
2405 if (!tele_town()) return NULL;
2412 if (name) return "¼«¸ÊʬÀÏ";
2413 if (desc) return "¸½ºß¤Î¼«Ê¬¤Î¾õÂÖ¤ò´°Á´¤ËÃΤ롣";
2415 if (name) return "Self Knowledge";
2416 if (desc) return "Gives you useful info regarding your current resistances, the powers of your weapon and maximum limits of your stats.";
2429 if (name) return "¥Æ¥ì¥Ý¡¼¥È¡¦¥ì¥Ù¥ë";
2430 if (desc) return "½Ö»þ¤Ë¾å¤«²¼¤Î³¬¤Ë¥Æ¥ì¥Ý¡¼¥È¤¹¤ë¡£";
2432 if (name) return "Teleport Level";
2433 if (desc) return "Teleport to up or down stairs in a moment.";
2440 if (!get_check("ËÜÅö¤Ë¾¤Î³¬¤Ë¥Æ¥ì¥Ý¡¼¥È¤·¤Þ¤¹¤«¡©")) return NULL;
2442 if (!get_check("Are you sure? (Teleport Level)")) return NULL;
2451 if (name) return "µ¢´Ô¤Î¼öʸ";
2452 if (desc) return "ÃϾå¤Ë¤¤¤ë¤È¤¤Ï¥À¥ó¥¸¥ç¥ó¤ÎºÇ¿¼³¬¤Ø¡¢¥À¥ó¥¸¥ç¥ó¤Ë¤¤¤ë¤È¤¤ÏÃϾå¤Ø¤È°ÜÆ°¤¹¤ë¡£";
2454 if (name) return "Word of Recall";
2455 if (desc) return "Recalls player from dungeon to town, or from town to the deepest level of dungeon.";
2462 if (info) return info_delay(base, sides);
2466 if (!word_of_recall()) return NULL;
2473 if (name) return "¼¡¸µ¤ÎÈâ";
2474 if (desc) return "ûµ÷Î¥Æâ¤Î»ØÄꤷ¤¿¾ì½ê¤Ë¥Æ¥ì¥Ý¡¼¥È¤¹¤ë¡£";
2476 if (name) return "Dimension Door";
2477 if (desc) return "Teleport to given location.";
2481 int range = plev / 2 + 10;
2483 if (info) return info_range(range);
2488 msg_print("¼¡¸µ¤ÎÈ⤬³«¤¤¤¿¡£ÌÜŪÃϤòÁª¤ó¤Ç²¼¤µ¤¤¡£");
2490 msg_print("You open a dimensional gate. Choose a destination.");
2493 if (!dimension_door()) return NULL;
2500 if (name) return "Ä´ºº";
2501 if (desc) return "¥â¥ó¥¹¥¿¡¼¤Î°À¡¢»Ä¤êÂÎÎÏ¡¢ºÇÂçÂÎÎÏ¡¢¥¹¥Ô¡¼¥É¡¢ÀµÂΤòÃΤ롣";
2503 if (name) return "Probing";
2504 if (desc) return "Proves all monsters' alignment, HP, speed and their true character.";
2517 if (name) return "Çúȯ¤Î¥ë¡¼¥ó";
2518 if (desc) return "¼«Ê¬¤Î¤¤¤ë¾²¤Î¾å¤Ë¡¢¥â¥ó¥¹¥¿¡¼¤¬Ä̤ë¤ÈÇúȯ¤·¤Æ¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¥ë¡¼¥ó¤òÉÁ¤¯¡£";
2520 if (name) return "Explosive Rune";
2521 if (desc) return "Sets a glyph under you. The glyph will explode when a monster moves on it.";
2529 if (info) return info_damage(dice, sides, base);
2540 if (name) return "Ç°Æ°ÎÏ";
2541 if (desc) return "¥¢¥¤¥Æ¥à¤ò¼«Ê¬¤Î¸µ¤Ø°ÜÆ°¤µ¤»¤ë¡£";
2543 if (name) return "Telekinesis";
2544 if (desc) return "Pulls a distant item close to you.";
2548 int weight = plev * 15;
2550 if (info) return info_weight(weight);
2554 if (!get_aim_dir(&dir)) return NULL;
2556 fetch(dir, weight, FALSE);
2563 if (name) return "ÀéΤ´ã";
2564 if (desc) return "¤½¤Î³¬Á´ÂΤò±Êµ×¤Ë¾È¤é¤·¡¢¥À¥ó¥¸¥ç¥óÆ⤹¤Ù¤Æ¤Î¥¢¥¤¥Æ¥à¤ò´¶ÃΤ¹¤ë¡£¤µ¤é¤Ë¡¢°ìÄê»þ´Ö¥Æ¥ì¥Ñ¥·¡¼Ç½ÎϤòÆÀ¤ë¡£";
2566 if (name) return "Clairvoyance";
2567 if (desc) return "Maps and lights whole dungeon level. Knows all objects location. And gives telepathy for a while.";
2574 if (info) return info_duration(base, sides);
2578 chg_virtue(V_KNOWLEDGE, 1);
2579 chg_virtue(V_ENLIGHTEN, 1);
2583 if (!p_ptr->telepathy)
2585 set_tim_esp(randint1(sides) + base, FALSE);
2593 if (name) return "̥λ¤Î»ëÀþ";
2594 if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤ò̥λ¤¹¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
2596 if (name) return "Charm monsters";
2597 if (desc) return "Attempts to charm all monsters in sight.";
2601 int power = plev * 2;
2603 if (info) return info_power(power);
2607 charm_monsters(power);
2614 if (name) return "Ï£¶â½Ñ";
2615 if (desc) return "¥¢¥¤¥Æ¥à1¤Ä¤ò¤ª¶â¤ËÊѤ¨¤ë¡£";
2617 if (name) return "Alchemy";
2618 if (desc) return "Turns an item into 1/3 of its value in gold.";
2624 if (!alchemy()) return NULL;
2631 if (name) return "²øʪÄÉÊü";
2632 if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤ò¥Æ¥ì¥Ý¡¼¥È¤µ¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
2634 if (name) return "Banishment";
2635 if (desc) return "Teleports all monsters in sight away unless resisted.";
2639 int power = plev * 4;
2641 if (info) return info_power(power);
2645 banish_monsters(power);
2652 if (name) return "̵½ý¤Îµå";
2653 if (desc) return "°ìÄê»þ´Ö¡¢¥À¥á¡¼¥¸¤ò¼õ¤±¤Ê¤¯¤Ê¤ë¥Ð¥ê¥¢¤òÄ¥¤ë¡£Àڤ줿½Ö´Ö¤Ë¾¯¤·¥¿¡¼¥ó¤ò¾ÃÈñ¤¹¤ë¤Î¤ÇÃí°Õ¡£";
2655 if (name) return "Globe of Invulnerability";
2656 if (desc) return "Generates barrier which completely protect you from almost all damages. Takes a few your turns when the barrier breaks or duration time is exceeded.";
2662 if (info) return info_duration(base, base);
2666 set_invuln(randint1(base) + base, FALSE);
2677 * @brief ¼«Á³ÎΰèËâË¡¤Î³Æ½èÍý¤ò¹Ô¤¦
2678 * @param spell ËâË¡ID
2679 * @param mode ½èÍýÆâÍÆ (SPELL_NAME / SPELL_DESC / SPELL_INFO / SPELL_CAST)
2680 * @return SPELL_NAME / SPELL_DESC / SPELL_INFO »þ¤Ë¤Ïʸ»úÎó¥Ý¥¤¥ó¥¿¤òÊÖ¤¹¡£SPELL_CAST»þ¤ÏNULLʸ»úÎó¤òÊÖ¤¹¡£
2682 static cptr do_nature_spell(int spell, int mode)
2684 bool name = (mode == SPELL_NAME) ? TRUE : FALSE;
2685 bool desc = (mode == SPELL_DESC) ? TRUE : FALSE;
2686 bool info = (mode == SPELL_INFO) ? TRUE : FALSE;
2687 bool cast = (mode == SPELL_CAST) ? TRUE : FALSE;
2690 static const char s_dam[] = "»½ý:";
2691 static const char s_rng[] = "¼ÍÄø";
2693 static const char s_dam[] = "dam ";
2694 static const char s_rng[] = "rng ";
2698 int plev = p_ptr->lev;
2704 if (name) return "¥â¥ó¥¹¥¿¡¼´¶ÃÎ";
2705 if (desc) return "¶á¤¯¤ÎÁ´¤Æ¤Î¸«¤¨¤ë¥â¥ó¥¹¥¿¡¼¤ò´¶ÃΤ¹¤ë¡£";
2707 if (name) return "Detect Creatures";
2708 if (desc) return "Detects all monsters in your vicinity unless invisible.";
2712 int rad = DETECT_RAD_DEFAULT;
2714 if (info) return info_radius(rad);
2718 detect_monsters_normal(rad);
2725 if (name) return "°ðºÊ";
2726 if (desc) return "ÅÅ·â¤Îû¤¤¥Ó¡¼¥à¤òÊü¤Ä¡£";
2728 if (name) return "Lightning";
2729 if (desc) return "Fires a short beam of lightning.";
2733 int dice = 3 + (plev - 1) / 5;
2735 int range = plev / 6 + 2;
2737 if (info) return format("%s%dd%d %s%d", s_dam, dice, sides, s_rng, range);
2741 project_length = range;
2743 if (!get_aim_dir(&dir)) return NULL;
2745 fire_beam(GF_ELEC, dir, damroll(dice, sides));
2752 if (name) return "櫤ÈÈâ´¶ÃÎ";
2753 if (desc) return "¶á¤¯¤ÎÁ´¤Æ¤Î櫤ÈÈâ¤ò´¶ÃΤ¹¤ë¡£";
2755 if (name) return "Detect Doors and Traps";
2756 if (desc) return "Detects traps, doors, and stairs in your vicinity.";
2760 int rad = DETECT_RAD_DEFAULT;
2762 if (info) return info_radius(rad);
2766 detect_traps(rad, TRUE);
2775 if (name) return "¿©ÎÈÀ¸À®";
2776 if (desc) return "¿©ÎÁ¤ò°ì¤Äºî¤ê½Ð¤¹¡£";
2778 if (name) return "Produce Food";
2779 if (desc) return "Produces a Ration of Food.";
2785 object_type forge, *q_ptr = &forge;
2788 msg_print("¿©ÎÁ¤òÀ¸À®¤·¤¿¡£");
2790 msg_print("A food ration is produced.");
2793 /* Create the food ration */
2794 object_prep(q_ptr, lookup_kind(TV_FOOD, SV_FOOD_RATION));
2796 /* Drop the object from heaven */
2797 drop_near(q_ptr, -1, py, px);
2804 if (name) return "Æü¤Î¸÷";
2805 if (desc) return "¸÷¸»¤¬¾È¤é¤·¤Æ¤¤¤ëÈϰϤ«Éô²°Á´ÂΤò±Êµ×¤ËÌÀ¤ë¤¯¤¹¤ë¡£";
2807 if (name) return "Daylight";
2808 if (desc) return "Lights up nearby area and the inside of a room permanently.";
2813 int sides = plev / 2;
2814 int rad = (plev / 10) + 1;
2816 if (info) return info_damage(dice, sides, 0);
2820 lite_area(damroll(dice, sides), rad);
2822 if ((prace_is_(RACE_VAMPIRE) || (p_ptr->mimic_form == MIMIC_VAMPIRE)) && !p_ptr->resist_lite)
2825 msg_print("Æü¤Î¸÷¤¬¤¢¤Ê¤¿¤ÎÆùÂΤò¾Ç¤¬¤·¤¿¡ª");
2827 msg_print("The daylight scorches your flesh!");
2831 take_hit(DAMAGE_NOESCAPE, damroll(2, 2), "Æü¤Î¸÷", -1);
2833 take_hit(DAMAGE_NOESCAPE, damroll(2, 2), "daylight", -1);
2842 if (name) return "ưʪ½¬¤·";
2843 if (desc) return "ưʪ1ÂΤò̥λ¤¹¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
2845 if (name) return "Animal Taming";
2846 if (desc) return "Attempts to charm an animal.";
2852 if (info) return info_power(power);
2856 if (!get_aim_dir(&dir)) return NULL;
2858 charm_animal(dir, power);
2865 if (name) return "´Ä¶¤Ø¤ÎÂÑÀ";
2866 if (desc) return "°ìÄê»þ´Ö¡¢Î䵤¡¢±ê¡¢ÅÅ·â¤ËÂФ¹¤ëÂÑÀ¤òÆÀ¤ë¡£ÁõÈ÷¤Ë¤è¤ëÂÑÀ¤ËÎßÀѤ¹¤ë¡£";
2868 if (name) return "Resist Environment";
2869 if (desc) return "Gives resistance to fire, cold and electricity for a while. These resistances can be added to which from equipment for more powerful resistances.";
2875 if (info) return info_duration(base, base);
2879 set_oppose_cold(randint1(base) + base, FALSE);
2880 set_oppose_fire(randint1(base) + base, FALSE);
2881 set_oppose_elec(randint1(base) + base, FALSE);
2888 if (name) return "½ý¤ÈÆǼ£ÎÅ";
2889 if (desc) return "²ø²æ¤òÁ´²÷¤µ¤»¡¢ÆǤòÂΤ«¤é´°Á´¤Ë¼è¤ê½ü¤¡¢ÂÎÎϤò¾¯¤·²óÉü¤µ¤»¤ë¡£";
2891 if (name) return "Cure Wounds & Poison";
2892 if (desc) return "Heals all cut and poison status. Heals HP a little.";
2899 if (info) return info_heal(dice, sides, 0);
2903 hp_player(damroll(dice, sides));
2912 if (name) return "´äÀÐÍϲò";
2913 if (desc) return "ÊɤòÍϤ«¤·¤Æ¾²¤Ë¤¹¤ë¡£";
2915 if (name) return "Stone to Mud";
2916 if (desc) return "Turns one rock square to mud.";
2924 if (info) return info_damage(dice, sides, base);
2928 if (!get_aim_dir(&dir)) return NULL;
2930 wall_to_mud(dir, 20 + randint1(30));
2937 if (name) return "¥¢¥¤¥¹¡¦¥Ü¥ë¥È";
2938 if (desc) return "Î䵤¤Î¥Ü¥ë¥È¤â¤·¤¯¤Ï¥Ó¡¼¥à¤òÊü¤Ä¡£";
2940 if (name) return "Frost Bolt";
2941 if (desc) return "Fires a bolt or beam of cold.";
2945 int dice = 3 + (plev - 5) / 4;
2948 if (info) return info_damage(dice, sides, 0);
2952 if (!get_aim_dir(&dir)) return NULL;
2953 fire_bolt_or_beam(beam_chance() - 10, GF_COLD, dir, damroll(dice, sides));
2960 if (name) return "¼«Á³¤Î³ÐÀÃ";
2961 if (desc) return "¼þÊÕ¤ÎÃÏ·Á¤ò´¶ÃΤ·¡¢¶á¤¯¤Îæ«¡¢Èâ¡¢³¬ÃÊ¡¢Á´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤ò´¶ÃΤ¹¤ë¡£";
2963 if (name) return "Nature Awareness";
2964 if (desc) return "Maps nearby area. Detects all monsters, traps, doors and stairs.";
2968 int rad1 = DETECT_RAD_MAP;
2969 int rad2 = DETECT_RAD_DEFAULT;
2971 if (info) return info_radius(MAX(rad1, rad2));
2976 detect_traps(rad2, TRUE);
2978 detect_stairs(rad2);
2979 detect_monsters_normal(rad2);
2986 if (name) return "¥Õ¥¡¥¤¥¢¡¦¥Ü¥ë¥È";
2987 if (desc) return "²Ð±ê¤Î¥Ü¥ë¥È¤â¤·¤¯¤Ï¥Ó¡¼¥à¤òÊü¤Ä¡£";
2989 if (name) return "Fire Bolt";
2990 if (desc) return "Fires a bolt or beam of fire.";
2994 int dice = 5 + (plev - 5) / 4;
2997 if (info) return info_damage(dice, sides, 0);
3001 if (!get_aim_dir(&dir)) return NULL;
3002 fire_bolt_or_beam(beam_chance() - 10, GF_FIRE, dir, damroll(dice, sides));
3009 if (name) return "ÂÀÍÛ¸÷Àþ";
3010 if (desc) return "¸÷Àþ¤òÊü¤Ä¡£¸÷¤ê¤ò·ù¤¦¥â¥ó¥¹¥¿¡¼¤Ë¸ú²Ì¤¬¤¢¤ë¡£";
3012 if (name) return "Ray of Sunlight";
3013 if (desc) return "Fires a beam of light which damages to light-sensitive monsters.";
3020 if (info) return info_damage(dice, sides, 0);
3024 if (!get_aim_dir(&dir)) return NULL;
3026 msg_print("ÂÀÍÛ¸÷Àþ¤¬¸½¤ì¤¿¡£");
3028 msg_print("A line of sunlight appears.");
3031 lite_line(dir, damroll(6, 8));
3038 if (name) return "¤«¤»";
3039 if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤ò¸ºÂ®¤µ¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
3041 if (name) return "Entangle";
3042 if (desc) return "Attempts to slow all monsters in sight.";
3048 if (info) return info_power(power);
3052 slow_monsters(plev);
3059 if (name) return "ưʪ¾¤´";
3060 if (desc) return "ưʪ¤ò1Âξ¤´¤¹¤ë¡£";
3062 if (name) return "Summon Animal";
3063 if (desc) return "Summons an animal.";
3069 if (!(summon_specific(-1, py, px, plev, SUMMON_ANIMAL_RANGER, (PM_ALLOW_GROUP | PM_FORCE_PET))))
3072 msg_print("ưʪ¤Ï¸½¤ì¤Ê¤«¤Ã¤¿¡£");
3074 msg_print("No animals arrive.");
3084 if (name) return "ÌôÁð¼£ÎÅ";
3085 if (desc) return "ÂÎÎϤòÂçÉý¤Ë²óÉü¤µ¤»¡¢Éé½ý¡¢Û¯Û°¾õÂÖ¡¢ÆǤ«¤éÁ´²÷¤¹¤ë¡£";
3087 if (name) return "Herbal Healing";
3088 if (desc) return "Heals HP greatly. And heals cut, stun and poison completely.";
3094 if (info) return info_heal(0, 0, heal);
3108 if (name) return "³¬ÃÊÀ¸À®";
3109 if (desc) return "¼«Ê¬¤Î¤¤¤ë°ÌÃ֤˳¬Ãʤòºî¤ë¡£";
3111 if (name) return "Stair Building";
3112 if (desc) return "Creates a stair which goes down or up.";
3125 if (name) return "È©Àв½";
3126 if (desc) return "°ìÄê»þ´Ö¡¢AC¤ò¾å¾º¤µ¤»¤ë¡£";
3128 if (name) return "Stone Skin";
3129 if (desc) return "Gives bonus to AC for a while.";
3136 if (info) return info_duration(base, sides);
3140 set_shield(randint1(sides) + base, FALSE);
3147 if (name) return "¿¿¡¦ÂÑÀ";
3148 if (desc) return "°ìÄê»þ´Ö¡¢»À¡¢ÅÅ·â¡¢±ê¡¢Î䵤¡¢ÆǤËÂФ¹¤ëÂÑÀ¤òÆÀ¤ë¡£ÁõÈ÷¤Ë¤è¤ëÂÑÀ¤ËÎßÀѤ¹¤ë¡£";
3150 if (name) return "Resistance True";
3151 if (desc) return "Gives resistance to fire, cold, electricity, acid and poison for a while. These resistances can be added to which from equipment for more powerful resistances.";
3157 if (info) return info_duration(base, base);
3161 set_oppose_acid(randint1(base) + base, FALSE);
3162 set_oppose_elec(randint1(base) + base, FALSE);
3163 set_oppose_fire(randint1(base) + base, FALSE);
3164 set_oppose_cold(randint1(base) + base, FALSE);
3165 set_oppose_pois(randint1(base) + base, FALSE);
3172 if (name) return "¿¹ÎÓÁϤ";
3173 if (desc) return "¼þ°Ï¤ËÌÚ¤òºî¤ê½Ð¤¹¡£";
3175 if (name) return "Forest Creation";
3176 if (desc) return "Creates trees in all adjacent squares.";
3189 if (name) return "ưʪͧÏÂ";
3190 if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Îưʪ¤ò̥λ¤¹¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
3192 if (name) return "Animal Friendship";
3193 if (desc) return "Attempts to charm all animals in sight.";
3197 int power = plev * 2;
3199 if (info) return info_power(power);
3203 charm_animals(power);
3210 if (name) return "»î¶âÀÐ";
3211 if (desc) return "¥¢¥¤¥Æ¥à¤Î»ý¤ÄǽÎϤò´°Á´¤ËÃΤ롣";
3213 if (name) return "Stone Tell";
3214 if (desc) return "*Identifies* an item.";
3220 if (!identify_fully(FALSE)) return NULL;
3227 if (name) return "ÀФÎÊÉ";
3228 if (desc) return "¼«Ê¬¤Î¼þ°Ï¤Ë²ÖÖ¾´ä¤ÎÊɤòºî¤ë¡£";
3230 if (name) return "Wall of Stone";
3231 if (desc) return "Creates granite walls in all adjacent squares.";
3244 if (name) return "Éå¿©ËÉ»ß";
3245 if (desc) return "¥¢¥¤¥Æ¥à¤ò»À¤Ç½ý¤Ä¤«¤Ê¤¤¤è¤¦²Ã¹©¤¹¤ë¡£";
3247 if (name) return "Protect from Corrosion";
3248 if (desc) return "Makes an equipment acid-proof.";
3254 if (!rustproof()) return NULL;
3261 if (name) return "ÃÏ¿Ì";
3262 if (desc) return "¼þ°Ï¤Î¥À¥ó¥¸¥ç¥ó¤òÍɤ餷¡¢ÊɤȾ²¤ò¥é¥ó¥À¥à¤ËÆþ¤ìÊѤ¨¤ë¡£";
3264 if (name) return "Earthquake";
3265 if (desc) return "Shakes dungeon structure, and results in random swapping of floors and walls.";
3271 if (info) return info_radius(rad);
3275 earthquake(py, px, rad);
3282 if (name) return "¥«¥Þ¥¤¥¿¥Á";
3283 if (desc) return "Á´Êý¸þ¤Ë¸þ¤«¤Ã¤Æ¹¶·â¤¹¤ë¡£";
3285 if (name) return "Cyclone";
3286 if (desc) return "Attacks all adjacent monsters.";
3294 monster_type *m_ptr;
3296 for (dir = 0; dir < 8; dir++)
3298 y = py + ddy_ddd[dir];
3299 x = px + ddx_ddd[dir];
3300 c_ptr = &cave[y][x];
3302 /* Get the monster */
3303 m_ptr = &m_list[c_ptr->m_idx];
3305 /* Hack -- attack monsters */
3306 if (c_ptr->m_idx && (m_ptr->ml || cave_have_flag_bold(y, x, FF_PROJECT)))
3315 if (name) return "¥Ö¥ê¥¶¡¼¥É";
3316 if (desc) return "µðÂç¤ÊÎ䵤¤Îµå¤òÊü¤Ä¡£";
3318 if (name) return "Blizzard";
3319 if (desc) return "Fires a huge ball of cold.";
3323 int dam = 70 + plev * 3 / 2;
3324 int rad = plev / 12 + 1;
3326 if (info) return info_damage(0, 0, dam);
3330 if (!get_aim_dir(&dir)) return NULL;
3332 fire_ball(GF_COLD, dir, dam, rad);
3339 if (name) return "°ðºÊÍò";
3340 if (desc) return "µðÂç¤ÊÅÅ·â¤Îµå¤òÊü¤Ä¡£";
3342 if (name) return "Lightning Storm";
3343 if (desc) return "Fires a huge electric ball.";
3347 int dam = 90 + plev * 3 / 2;
3348 int rad = plev / 12 + 1;
3350 if (info) return info_damage(0, 0, dam);
3354 if (!get_aim_dir(&dir)) return NULL;
3355 fire_ball(GF_ELEC, dir, dam, rad);
3363 if (name) return "±²Ä¬";
3364 if (desc) return "µðÂç¤Ê¿å¤Îµå¤òÊü¤Ä¡£";
3366 if (name) return "Whirlpool";
3367 if (desc) return "Fires a huge ball of water.";
3371 int dam = 100 + plev * 3 / 2;
3372 int rad = plev / 12 + 1;
3374 if (info) return info_damage(0, 0, dam);
3378 if (!get_aim_dir(&dir)) return NULL;
3379 fire_ball(GF_WATER, dir, dam, rad);
3386 if (name) return "ÍÛ¸÷¾¤´";
3387 if (desc) return "¼«Ê¬¤òÃæ¿´¤È¤·¤¿¸÷¤Îµå¤òȯÀ¸¤µ¤»¤ë¡£¤µ¤é¤Ë¡¢¤½¤Î³¬Á´ÂΤò±Êµ×¤Ë¾È¤é¤·¡¢¥À¥ó¥¸¥ç¥óÆ⤹¤Ù¤Æ¤Î¥¢¥¤¥Æ¥à¤ò´¶ÃΤ¹¤ë¡£";
3389 if (name) return "Call Sunlight";
3390 if (desc) return "Generates ball of light centered on you. Maps and lights whole dungeon level. Knows all objects location.";
3397 if (info) return info_damage(0, 0, dam/2);
3401 fire_ball(GF_LITE, 0, dam, rad);
3402 chg_virtue(V_KNOWLEDGE, 1);
3403 chg_virtue(V_ENLIGHTEN, 1);
3406 if ((prace_is_(RACE_VAMPIRE) || (p_ptr->mimic_form == MIMIC_VAMPIRE)) && !p_ptr->resist_lite)
3409 msg_print("Æü¸÷¤¬¤¢¤Ê¤¿¤ÎÆùÂΤò¾Ç¤¬¤·¤¿¡ª");
3411 msg_print("The sunlight scorches your flesh!");
3415 take_hit(DAMAGE_NOESCAPE, 50, "Æü¸÷", -1);
3417 take_hit(DAMAGE_NOESCAPE, 50, "sunlight", -1);
3426 if (name) return "ÀºÎî¤Î¿Ï";
3427 if (desc) return "Éð´ï¤Ë±ê¤«Î䵤¤Î°À¤ò¤Ä¤±¤ë¡£";
3429 if (name) return "Elemental Branding";
3430 if (desc) return "Makes current weapon fire or frost branded.";
3436 brand_weapon(randint0(2));
3443 if (name) return "¼«Á³¤Î¶¼°Ò";
3444 if (desc) return "¶á¤¯¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤Ë¥À¥á¡¼¥¸¤òÍ¿¤¨¡¢ÃϿ̤òµ¯¤³¤·¡¢¼«Ê¬¤òÃæ¿´¤È¤·¤¿Ê¬²ò¤Îµå¤òȯÀ¸¤µ¤»¤ë¡£";
3446 if (name) return "Nature's Wrath";
3447 if (desc) return "Damages all monsters in sight. Makes quake. Generates disintegration ball centered on you.";
3451 int d_dam = 4 * plev;
3452 int b_dam = (100 + plev) * 2;
3453 int b_rad = 1 + plev / 12;
3454 int q_rad = 20 + plev / 2;
3456 if (info) return format("%s%d+%d", s_dam, d_dam, b_dam/2);
3460 dispel_monsters(d_dam);
3461 earthquake(py, px, q_rad);
3462 project(0, b_rad, py, px, b_dam, GF_DISINTEGRATE, PROJECT_KILL | PROJECT_ITEM, -1);
3473 * @brief ¥«¥ª¥¹ÎΰèËâË¡¤Î³Æ½èÍý¤ò¹Ô¤¦
3474 * @param spell ËâË¡ID
3475 * @param mode ½èÍýÆâÍÆ (SPELL_NAME / SPELL_DESC / SPELL_INFO / SPELL_CAST)
3476 * @return SPELL_NAME / SPELL_DESC / SPELL_INFO »þ¤Ë¤Ïʸ»úÎó¥Ý¥¤¥ó¥¿¤òÊÖ¤¹¡£SPELL_CAST»þ¤ÏNULLʸ»úÎó¤òÊÖ¤¹¡£
3478 static cptr do_chaos_spell(int spell, int mode)
3480 bool name = (mode == SPELL_NAME) ? TRUE : FALSE;
3481 bool desc = (mode == SPELL_DESC) ? TRUE : FALSE;
3482 bool info = (mode == SPELL_INFO) ? TRUE : FALSE;
3483 bool cast = (mode == SPELL_CAST) ? TRUE : FALSE;
3486 static const char s_dam[] = "»½ý:";
3487 static const char s_random[] = "¥é¥ó¥À¥à";
3489 static const char s_dam[] = "dam ";
3490 static const char s_random[] = "random";
3494 int plev = p_ptr->lev;
3500 if (name) return "¥Þ¥¸¥Ã¥¯¡¦¥ß¥µ¥¤¥ë";
3501 if (desc) return "¼å¤¤ËâË¡¤ÎÌð¤òÊü¤Ä¡£";
3503 if (name) return "Magic Missile";
3504 if (desc) return "Fires a weak bolt of magic.";
3508 int dice = 3 + ((plev - 1) / 5);
3511 if (info) return info_damage(dice, sides, 0);
3515 if (!get_aim_dir(&dir)) return NULL;
3517 fire_bolt_or_beam(beam_chance() - 10, GF_MISSILE, dir, damroll(dice, sides));
3524 if (name) return "¥È¥é¥Ã¥×/¥É¥¢Ç˲õ";
3525 if (desc) return "ÎÙÀܤ¹¤ë櫤ÈÈâ¤òÇ˲õ¤¹¤ë¡£";
3527 if (name) return "Trap / Door Destruction";
3528 if (desc) return "Destroys all traps in adjacent squares.";
3534 if (info) return info_radius(rad);
3538 destroy_doors_touch();
3545 if (name) return "Á®¸÷";
3546 if (desc) return "¸÷¸»¤¬¾È¤é¤·¤Æ¤¤¤ëÈϰϤ«Éô²°Á´ÂΤò±Êµ×¤ËÌÀ¤ë¤¯¤¹¤ë¡£";
3548 if (name) return "Flash of Light";
3549 if (desc) return "Lights up nearby area and the inside of a room permanently.";
3554 int sides = plev / 2;
3555 int rad = (plev / 10) + 1;
3557 if (info) return info_damage(dice, sides, 0);
3561 lite_area(damroll(dice, sides), rad);
3568 if (name) return "º®Íð¤Î¼ê";
3569 if (desc) return "Áê¼ê¤òº®Í𤵤»¤ë¹¶·â¤ò¤Ç¤¤ë¤è¤¦¤Ë¤¹¤ë¡£";
3571 if (name) return "Touch of Confusion";
3572 if (desc) return "Attempts to confuse the next monster that you hit.";
3578 if (!(p_ptr->special_attack & ATTACK_CONFUSE))
3581 msg_print("¤¢¤Ê¤¿¤Î¼ê¤Ï¸÷¤ê»Ï¤á¤¿¡£");
3583 msg_print("Your hands start glowing.");
3586 p_ptr->special_attack |= ATTACK_CONFUSE;
3587 p_ptr->redraw |= (PR_STATUS);
3595 if (name) return "ËâÎÏßÚÎö";
3596 if (desc) return "ËâË¡¤Îµå¤òÊü¤Ä¡£";
3598 if (name) return "Mana Burst";
3599 if (desc) return "Fires a ball of magic.";
3605 int rad = (plev < 30) ? 2 : 3;
3608 if (p_ptr->pclass == CLASS_MAGE ||
3609 p_ptr->pclass == CLASS_HIGH_MAGE ||
3610 p_ptr->pclass == CLASS_SORCERER)
3611 base = plev + plev / 2;
3613 base = plev + plev / 4;
3616 if (info) return info_damage(dice, sides, base);
3620 if (!get_aim_dir(&dir)) return NULL;
3622 fire_ball(GF_MISSILE, dir, damroll(dice, sides) + base, rad);
3625 * Shouldn't actually use GF_MANA, as
3626 * it will destroy all items on the
3635 if (name) return "¥Õ¥¡¥¤¥¢¡¦¥Ü¥ë¥È";
3636 if (desc) return "±ê¤Î¥Ü¥ë¥È¤â¤·¤¯¤Ï¥Ó¡¼¥à¤òÊü¤Ä¡£";
3638 if (name) return "Fire Bolt";
3639 if (desc) return "Fires a bolt or beam of fire.";
3643 int dice = 8 + (plev - 5) / 4;
3646 if (info) return info_damage(dice, sides, 0);
3650 if (!get_aim_dir(&dir)) return NULL;
3652 fire_bolt_or_beam(beam_chance(), GF_FIRE, dir, damroll(dice, sides));
3659 if (name) return "ÎϤηý";
3660 if (desc) return "¤´¤¯¾®¤µ¤Êʬ²ò¤Îµå¤òÊü¤Ä¡£";
3662 if (name) return "Fist of Force";
3663 if (desc) return "Fires a tiny ball of disintegration.";
3667 int dice = 8 + ((plev - 5) / 4);
3670 if (info) return info_damage(dice, sides, 0);
3674 if (!get_aim_dir(&dir)) return NULL;
3676 fire_ball(GF_DISINTEGRATE, dir,
3677 damroll(dice, sides), 0);
3684 if (name) return "¥Æ¥ì¥Ý¡¼¥È";
3685 if (desc) return "±óµ÷Î¥¤Î¥Æ¥ì¥Ý¡¼¥È¤ò¤¹¤ë¡£";
3687 if (name) return "Teleport Self";
3688 if (desc) return "Teleport long distance.";
3692 int range = plev * 5;
3694 if (info) return info_range(range);
3698 teleport_player(range, 0L);
3705 if (name) return "¥ï¥ó¥À¡¼";
3706 if (desc) return "¥â¥ó¥¹¥¿¡¼¤Ë¥é¥ó¥À¥à¤Ê¸ú²Ì¤òÍ¿¤¨¤ë¡£";
3708 if (name) return "Wonder";
3709 if (desc) return "Fires something with random effects.";
3713 if (info) return s_random;
3718 if (!get_aim_dir(&dir)) return NULL;
3727 if (name) return "¥«¥ª¥¹¡¦¥Ü¥ë¥È";
3728 if (desc) return "¥«¥ª¥¹¤Î¥Ü¥ë¥È¤â¤·¤¯¤Ï¥Ó¡¼¥à¤òÊü¤Ä¡£";
3730 if (name) return "Chaos Bolt";
3731 if (desc) return "Fires a bolt or ball of chaos.";
3735 int dice = 10 + (plev - 5) / 4;
3738 if (info) return info_damage(dice, sides, 0);
3742 if (!get_aim_dir(&dir)) return NULL;
3744 fire_bolt_or_beam(beam_chance(), GF_CHAOS, dir, damroll(dice, sides));
3751 if (name) return "¥½¥Ë¥Ã¥¯¡¦¥Ö¡¼¥à";
3752 if (desc) return "¼«Ê¬¤òÃæ¿´¤È¤·¤¿¹ì²»¤Îµå¤òȯÀ¸¤µ¤»¤ë¡£";
3754 if (name) return "Sonic Boom";
3755 if (desc) return "Generates a ball of sound centered on you.";
3759 int dam = 60 + plev;
3760 int rad = plev / 10 + 2;
3762 if (info) return info_damage(0, 0, dam/2);
3767 msg_print("¥É¡¼¥ó¡ªÉô²°¤¬Íɤ줿¡ª");
3769 msg_print("BOOM! Shake the room!");
3772 project(0, rad, py, px, dam, GF_SOUND, PROJECT_KILL | PROJECT_ITEM, -1);
3779 if (name) return "ÇËÌǤÎÌð";
3780 if (desc) return "½ã¿è¤ÊËâÎϤΥӡ¼¥à¤òÊü¤Ä¡£";
3782 if (name) return "Doom Bolt";
3783 if (desc) return "Fires a beam of pure mana.";
3787 int dice = 11 + (plev - 5) / 4;
3790 if (info) return info_damage(dice, sides, 0);
3794 if (!get_aim_dir(&dir)) return NULL;
3796 fire_beam(GF_MANA, dir, damroll(dice, sides));
3803 if (name) return "¥Õ¥¡¥¤¥¢¡¦¥Ü¡¼¥ë";
3804 if (desc) return "±ê¤Îµå¤òÊü¤Ä¡£";
3806 if (name) return "Fire Ball";
3807 if (desc) return "Fires a ball of fire.";
3811 int dam = plev + 55;
3814 if (info) return info_damage(0, 0, dam);
3818 if (!get_aim_dir(&dir)) return NULL;
3820 fire_ball(GF_FIRE, dir, dam, rad);
3827 if (name) return "¥Æ¥ì¥Ý¡¼¥È¡¦¥¢¥¦¥§¥¤";
3828 if (desc) return "¥â¥ó¥¹¥¿¡¼¤ò¥Æ¥ì¥Ý¡¼¥È¤µ¤»¤ë¥Ó¡¼¥à¤òÊü¤Ä¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
3830 if (name) return "Teleport Other";
3831 if (desc) return "Teleports all monsters on the line away unless resisted.";
3837 if (info) return info_power(power);
3841 if (!get_aim_dir(&dir)) return NULL;
3843 fire_beam(GF_AWAY_ALL, dir, power);
3850 if (name) return "Ç˲õ¤Î¸ÀÍÕ";
3851 if (desc) return "¼þÊդΥ¢¥¤¥Æ¥à¡¢¥â¥ó¥¹¥¿¡¼¡¢ÃÏ·Á¤òÇ˲õ¤¹¤ë¡£";
3853 if (name) return "Word of Destruction";
3854 if (desc) return "Destroy everything in nearby area.";
3863 destroy_area(py, px, base + randint1(sides), FALSE);
3870 if (name) return "¥í¥°¥ë¥¹È¯Æ°";
3871 if (desc) return "µðÂç¤Ê¥«¥ª¥¹¤Îµå¤òÊü¤Ä¡£";
3873 if (name) return "Invoke Logrus";
3874 if (desc) return "Fires a huge ball of chaos.";
3878 int dam = plev * 2 + 99;
3881 if (info) return info_damage(0, 0, dam);
3885 if (!get_aim_dir(&dir)) return NULL;
3887 fire_ball(GF_CHAOS, dir, dam, rad);
3894 if (name) return "¾¼ÔÊÑÍÆ";
3895 if (desc) return "¥â¥ó¥¹¥¿¡¼1ÂΤòÊѿȤµ¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
3897 if (name) return "Polymorph Other";
3898 if (desc) return "Attempts to polymorph a monster.";
3904 if (info) return info_power(power);
3908 if (!get_aim_dir(&dir)) return NULL;
3910 poly_monster(dir, plev);
3917 if (name) return "Ï¢º¿°ðºÊ";
3918 if (desc) return "Á´Êý¸þ¤ËÂФ·¤ÆÅÅ·â¤Î¥Ó¡¼¥à¤òÊü¤Ä¡£";
3920 if (name) return "Chain Lightning";
3921 if (desc) return "Fires lightning beams in all directions.";
3925 int dice = 5 + plev / 10;
3928 if (info) return info_damage(dice, sides, 0);
3932 for (dir = 0; dir <= 9; dir++)
3933 fire_beam(GF_ELEC, dir, damroll(dice, sides));
3940 if (name) return "ËâÎÏÉõÆþ";
3941 if (desc) return "¾ó/ËâË¡ËÀ¤Î½¼Å¶²ó¿ô¤òÁý¤ä¤¹¤«¡¢½¼Å¶Ãæ¤Î¥í¥Ã¥É¤Î½¼Å¶»þ´Ö¤ò¸º¤é¤¹¡£";
3943 if (name) return "Arcane Binding";
3944 if (desc) return "Recharges staffs, wands or rods.";
3950 if (info) return info_power(power);
3954 if (!recharge(power)) return NULL;
3961 if (name) return "¸¶»Òʬ²ò";
3962 if (desc) return "µðÂç¤Êʬ²ò¤Îµå¤òÊü¤Ä¡£";
3964 if (name) return "Disintegrate";
3965 if (desc) return "Fires a huge ball of disintegration.";
3969 int dam = plev + 70;
3970 int rad = 3 + plev / 40;
3972 if (info) return info_damage(0, 0, dam);
3976 if (!get_aim_dir(&dir)) return NULL;
3978 fire_ball(GF_DISINTEGRATE, dir, dam, rad);
3985 if (name) return "¸½¼ÂÊÑÍÆ";
3986 if (desc) return "¸½ºß¤Î³¬¤òºÆ¹½À®¤¹¤ë¡£";
3988 if (name) return "Alter Reality";
3989 if (desc) return "Recreates current dungeon level.";
3996 if (info) return info_delay(base, sides);
4007 if (name) return "¥Þ¥¸¥Ã¥¯¡¦¥í¥±¥Ã¥È";
4008 if (desc) return "¥í¥±¥Ã¥È¤òȯ¼Í¤¹¤ë¡£";
4010 if (name) return "Magic Rocket";
4011 if (desc) return "Fires a magic rocket.";
4015 int dam = 120 + plev * 2;
4018 if (info) return info_damage(0, 0, dam);
4022 if (!get_aim_dir(&dir)) return NULL;
4025 msg_print("¥í¥±¥Ã¥Èȯ¼Í¡ª");
4027 msg_print("You launch a rocket!");
4030 fire_rocket(GF_ROCKET, dir, dam, rad);
4037 if (name) return "º®Æ٤οÏ";
4038 if (desc) return "Éð´ï¤Ë¥«¥ª¥¹¤Î°À¤ò¤Ä¤±¤ë¡£";
4040 if (name) return "Chaos Branding";
4041 if (desc) return "Makes current weapon a Chaotic weapon.";
4054 if (name) return "°Ë⾤´";
4055 if (desc) return "°Ëâ¤ò1Âξ¤´¤¹¤ë¡£";
4057 if (name) return "Summon Demon";
4058 if (desc) return "Summons a demon.";
4065 bool pet = !one_in_(3);
4067 if (pet) mode |= PM_FORCE_PET;
4068 else mode |= PM_NO_PET;
4069 if (!(pet && (plev < 50))) mode |= PM_ALLOW_GROUP;
4071 if (summon_specific((pet ? -1 : 0), py, px, (plev * 3) / 2, SUMMON_DEMON, mode))
4074 msg_print("ⲫ¤Î°½¤¬½¼Ëþ¤·¤¿¡£");
4076 msg_print("The area fills with a stench of sulphur and brimstone.");
4082 msg_print("¡Ö¤´ÍѤǤ´¤¶¤¤¤Þ¤¹¤«¡¢¤´¼ç¿ÍÍÍ¡×");
4084 msg_print("'What is thy bidding... Master?'");
4090 msg_print("¡ÖÈܤ·¤¼Ô¤è¡¢²æ¤ÏÆò¤Î²¼Ëͤˤ¢¤é¤º¡ª ¤ªÁ°¤Îº²¤òĺ¤¯¤¾¡ª¡×");
4092 msg_print("'NON SERVIAM! Wretch! I shall feast on thy mortal soul!'");
4102 if (name) return "½ÅÎϸ÷Àþ";
4103 if (desc) return "½ÅÎϤΥӡ¼¥à¤òÊü¤Ä¡£";
4105 if (name) return "Beam of Gravity";
4106 if (desc) return "Fires a beam of gravity.";
4110 int dice = 9 + (plev - 5) / 4;
4113 if (info) return info_damage(dice, sides, 0);
4117 if (!get_aim_dir(&dir)) return NULL;
4119 fire_beam(GF_GRAVITY, dir, damroll(dice, sides));
4126 if (name) return "ήÀ±·²";
4127 if (desc) return "¼«Ê¬¤Î¼þÊÕ¤Ëð¨ÀФòÍî¤È¤¹¡£";
4129 if (name) return "Meteor Swarm";
4130 if (desc) return "Makes meteor balls fall down to nearby random locations.";
4137 if (info) return info_multi_damage(dam);
4141 cast_meteor(dam, rad);
4148 if (name) return "±ë¤Î°ì·â";
4149 if (desc) return "¼«Ê¬¤òÃæ¿´¤È¤·¤¿Ä¶µðÂç¤Ê±ê¤Îµå¤òȯÀ¸¤µ¤»¤ë¡£";
4151 if (name) return "Flame Strike";
4152 if (desc) return "Generate a huge ball of fire centered on you.";
4156 int dam = 300 + 3 * plev;
4159 if (info) return info_damage(0, 0, dam/2);
4163 fire_ball(GF_FIRE, 0, dam, rad);
4170 if (name) return "º®ÆÙ¾¤Íè";
4171 if (desc) return "¥é¥ó¥À¥à¤Ê°À¤Îµå¤ä¥Ó¡¼¥à¤òȯÀ¸¤µ¤»¤ë¡£";
4173 if (name) return "Call Chaos";
4174 if (desc) return "Generate random kind of balls or beams.";
4178 if (info) return format("%s150 / 250", s_dam);
4189 if (name) return "¼«¸ÊÊÑÍÆ";
4190 if (desc) return "¼«Ê¬¤òÊѿȤµ¤»¤è¤¦¤È¤¹¤ë¡£";
4192 if (name) return "Polymorph Self";
4193 if (desc) return "Polymorphs yourself.";
4200 if (!get_check("ÊѿȤ·¤Þ¤¹¡£¤è¤í¤·¤¤¤Ç¤¹¤«¡©")) return NULL;
4202 if (!get_check("You will polymorph yourself. Are you sure? ")) return NULL;
4211 if (name) return "ËâÎϤÎÍò";
4212 if (desc) return "Èó¾ï¤Ë¶¯ÎϤǵðÂç¤Ê½ã¿è¤ÊËâÎϤεå¤òÊü¤Ä¡£";
4214 if (name) return "Mana Storm";
4215 if (desc) return "Fires an extremely powerful huge ball of pure mana.";
4219 int dam = 300 + plev * 4;
4222 if (info) return info_damage(0, 0, dam);
4226 if (!get_aim_dir(&dir)) return NULL;
4228 fire_ball(GF_MANA, dir, dam, rad);
4235 if (name) return "¥í¥°¥ë¥¹¤Î¥Ö¥ì¥¹";
4236 if (desc) return "Èó¾ï¤Ë¶¯ÎϤʥ«¥ª¥¹¤Îµå¤òÊü¤Ä¡£";
4238 if (name) return "Breathe Logrus";
4239 if (desc) return "Fires an extremely powerful ball of chaos.";
4243 int dam = p_ptr->chp;
4246 if (info) return info_damage(0, 0, dam);
4250 if (!get_aim_dir(&dir)) return NULL;
4252 fire_ball(GF_CHAOS, dir, dam, rad);
4259 if (name) return "µõ̵¾¤Íè";
4260 if (desc) return "¼«Ê¬¤Ë¼þ°Ï¤Ë¸þ¤«¤Ã¤Æ¡¢¥í¥±¥Ã¥È¡¢½ã¿è¤ÊËâÎϤε塢Êü¼ÍÀÇÑ´þʪ¤Îµå¤òÊü¤Ä¡£¤¿¤À¤·¡¢ÊɤËÎÙÀܤ·¤Æ»ÈÍѤ¹¤ë¤È¹ÈϰϤòÇ˲õ¤¹¤ë¡£";
4262 if (name) return "Call the Void";
4263 if (desc) return "Fires rockets, mana balls and nuclear waste balls in all directions each unless you are not adjacent to any walls. Otherwise *destroys* huge area.";
4267 if (info) return format("%s3 * 175", s_dam);
4281 * @brief °Å¹õÎΰèËâË¡¤Î³Æ½èÍý¤ò¹Ô¤¦
4282 * @param spell ËâË¡ID
4283 * @param mode ½èÍýÆâÍÆ (SPELL_NAME / SPELL_DESC / SPELL_INFO / SPELL_CAST)
4284 * @return SPELL_NAME / SPELL_DESC / SPELL_INFO »þ¤Ë¤Ïʸ»úÎó¥Ý¥¤¥ó¥¿¤òÊÖ¤¹¡£SPELL_CAST»þ¤ÏNULLʸ»úÎó¤òÊÖ¤¹¡£
4286 static cptr do_death_spell(int spell, int mode)
4288 bool name = (mode == SPELL_NAME) ? TRUE : FALSE;
4289 bool desc = (mode == SPELL_DESC) ? TRUE : FALSE;
4290 bool info = (mode == SPELL_INFO) ? TRUE : FALSE;
4291 bool cast = (mode == SPELL_CAST) ? TRUE : FALSE;
4294 static const char s_dam[] = "»½ý:";
4295 static const char s_random[] = "¥é¥ó¥À¥à";
4297 static const char s_dam[] = "dam ";
4298 static const char s_random[] = "random";
4302 int plev = p_ptr->lev;
4308 if (name) return "̵À¸Ì¿´¶ÃÎ";
4309 if (desc) return "¶á¤¯¤ÎÀ¸Ì¿¤Î¤Ê¤¤¥â¥ó¥¹¥¿¡¼¤ò´¶ÃΤ¹¤ë¡£";
4311 if (name) return "Detect Unlife";
4312 if (desc) return "Detects all nonliving monsters in your vicinity.";
4316 int rad = DETECT_RAD_DEFAULT;
4318 if (info) return info_radius(rad);
4322 detect_monsters_nonliving(rad);
4329 if (name) return "¼ö»¦ÃÆ";
4330 if (desc) return "¤´¤¯¾®¤µ¤Ê¼Ù°¤ÊÎϤò»ý¤Ä¥Ü¡¼¥ë¤òÊü¤Ä¡£Á±Îɤʥâ¥ó¥¹¥¿¡¼¤Ë¤ÏÂ礤ʥÀ¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£";
4332 if (name) return "Malediction";
4333 if (desc) return "Fires a tiny ball of evil power which hurts good monsters greatly.";
4337 int dice = 3 + (plev - 1) / 5;
4341 if (info) return info_damage(dice, sides, 0);
4345 if (!get_aim_dir(&dir)) return NULL;
4348 * A radius-0 ball may (1) be aimed at
4349 * objects etc., and will affect them;
4350 * (2) may be aimed at ANY visible
4351 * monster, unlike a 'bolt' which must
4352 * travel to the monster.
4355 fire_ball(GF_HELL_FIRE, dir, damroll(dice, sides), rad);
4359 /* Special effect first */
4360 int effect = randint1(1000);
4363 fire_ball_hide(GF_DEATH_RAY, dir, plev * 200, 0);
4364 else if (effect < 500)
4365 fire_ball_hide(GF_TURN_ALL, dir, plev, 0);
4366 else if (effect < 800)
4367 fire_ball_hide(GF_OLD_CONF, dir, plev, 0);
4369 fire_ball_hide(GF_STUN, dir, plev, 0);
4377 if (name) return "¼Ù°´¶ÃÎ";
4378 if (desc) return "¶á¤¯¤Î¼Ù°¤Ê¥â¥ó¥¹¥¿¡¼¤ò´¶ÃΤ¹¤ë¡£";
4380 if (name) return "Detect Evil";
4381 if (desc) return "Detects all evil monsters in your vicinity.";
4385 int rad = DETECT_RAD_DEFAULT;
4387 if (info) return info_radius(rad);
4391 detect_monsters_evil(rad);
4398 if (name) return "°½±À";
4399 if (desc) return "ÆǤεå¤òÊü¤Ä¡£";
4401 if (name) return "Stinking Cloud";
4402 if (desc) return "Fires a ball of poison.";
4406 int dam = 10 + plev / 2;
4409 if (info) return info_damage(0, 0, dam);
4413 if (!get_aim_dir(&dir)) return NULL;
4415 fire_ball(GF_POIS, dir, dam, rad);
4422 if (name) return "¹õ¤¤Ì²¤ê";
4423 if (desc) return "1ÂΤΥâ¥ó¥¹¥¿¡¼¤ò̲¤é¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
4425 if (name) return "Black Sleep";
4426 if (desc) return "Attempts to sleep a monster.";
4432 if (info) return info_power(power);
4436 if (!get_aim_dir(&dir)) return NULL;
4438 sleep_monster(dir, plev);
4445 if (name) return "ÂÑÆÇ";
4446 if (desc) return "°ìÄê»þ´Ö¡¢ÆǤؤÎÂÑÀ¤òÆÀ¤ë¡£ÁõÈ÷¤Ë¤è¤ëÂÑÀ¤ËÎßÀѤ¹¤ë¡£";
4448 if (name) return "Resist Poison";
4449 if (desc) return "Gives resistance to poison. This resistance can be added to which from equipment for more powerful resistance.";
4455 if (info) return info_duration(base, base);
4459 set_oppose_pois(randint1(base) + base, FALSE);
4466 if (name) return "¶²¹²";
4467 if (desc) return "¥â¥ó¥¹¥¿¡¼1ÂΤò¶²Éݤµ¤»¡¢Û¯Û°¤µ¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
4469 if (name) return "Horrify";
4470 if (desc) return "Attempts to scare and stun a monster.";
4476 if (info) return info_power(power);
4480 if (!get_aim_dir(&dir)) return NULL;
4482 fear_monster(dir, power);
4483 stun_monster(dir, power);
4490 if (name) return "¥¢¥ó¥Ç¥Ã¥É½¾Â°";
4491 if (desc) return "¥¢¥ó¥Ç¥Ã¥É1ÂΤò̥λ¤¹¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
4493 if (name) return "Enslave Undead";
4494 if (desc) return "Attempts to charm an undead monster.";
4500 if (info) return info_power(power);
4504 if (!get_aim_dir(&dir)) return NULL;
4506 control_one_undead(dir, power);
4513 if (name) return "¥¨¥ó¥È¥í¥Ô¡¼¤Îµå";
4514 if (desc) return "À¸Ì¿¤Î¤¢¤ë¼Ô¤Ë¸ú²Ì¤Î¤¢¤ëµå¤òÊü¤Ä¡£";
4516 if (name) return "Orb of Entropy";
4517 if (desc) return "Fires a ball which damages living monsters.";
4523 int rad = (plev < 30) ? 2 : 3;
4526 if (p_ptr->pclass == CLASS_MAGE ||
4527 p_ptr->pclass == CLASS_HIGH_MAGE ||
4528 p_ptr->pclass == CLASS_SORCERER)
4529 base = plev + plev / 2;
4531 base = plev + plev / 4;
4534 if (info) return info_damage(dice, sides, base);
4538 if (!get_aim_dir(&dir)) return NULL;
4540 fire_ball(GF_OLD_DRAIN, dir, damroll(dice, dice) + base, rad);
4547 if (name) return "ÃϹö¤ÎÌð";
4548 if (desc) return "ÃϹö¤Î¥Ü¥ë¥È¤â¤·¤¯¤Ï¥Ó¡¼¥à¤òÊü¤Ä¡£";
4550 if (name) return "Nether Bolt";
4551 if (desc) return "Fires a bolt or beam of nether.";
4555 int dice = 8 + (plev - 5) / 4;
4558 if (info) return info_damage(dice, sides, 0);
4562 if (!get_aim_dir(&dir)) return NULL;
4564 fire_bolt_or_beam(beam_chance(), GF_NETHER, dir, damroll(dice, sides));
4571 if (name) return "»¦Ù¤±À";
4572 if (desc) return "¼«Ê¬¤òÃæ¿´¤È¤·¤¿ÆǤεå¤òȯÀ¸¤µ¤»¤ë¡£";
4574 if (name) return "Cloud kill";
4575 if (desc) return "Generate a ball of poison centered on you.";
4579 int dam = (30 + plev) * 2;
4580 int rad = plev / 10 + 2;
4582 if (info) return info_damage(0, 0, dam/2);
4586 project(0, rad, py, px, dam, GF_POIS, PROJECT_KILL | PROJECT_ITEM, -1);
4593 if (name) return "¥â¥ó¥¹¥¿¡¼¾ÃÌÇ";
4594 if (desc) return "¥â¥ó¥¹¥¿¡¼1ÂΤò¾Ã¤·µî¤ë¡£·Ð¸³Ãͤ䥢¥¤¥Æ¥à¤Ï¼ê¤ËÆþ¤é¤Ê¤¤¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
4596 if (name) return "Genocide One";
4597 if (desc) return "Attempts to vanish a monster.";
4601 int power = plev + 50;
4603 if (info) return info_power(power);
4607 if (!get_aim_dir(&dir)) return NULL;
4609 fire_ball_hide(GF_GENOCIDE, dir, power, 0);
4616 if (name) return "ÆǤοÏ";
4617 if (desc) return "Éð´ï¤ËÆǤΰÀ¤ò¤Ä¤±¤ë¡£";
4619 if (name) return "Poison Branding";
4620 if (desc) return "Makes current weapon poison branded.";
4633 if (name) return "µÛ·ì¥É¥ì¥¤¥ó";
4634 if (desc) return "¥â¥ó¥¹¥¿¡¼1ÂΤ«¤éÀ¸Ì¿ÎϤòµÛ¤¤¤È¤ë¡£µÛ¤¤¤È¤Ã¤¿À¸Ì¿ÎϤˤè¤Ã¤ÆËþÊ¢ÅÙ¤¬¾å¤¬¤ë¡£";
4636 if (name) return "Vampiric Drain";
4637 if (desc) return "Absorbs some HP from a monster and gives them to you. You will also gain nutritional sustenance from this.";
4642 int sides = plev * 2;
4643 int base = plev * 2;
4645 if (info) return info_damage(dice, sides, base);
4649 int dam = base + damroll(dice, sides);
4651 if (!get_aim_dir(&dir)) return NULL;
4653 if (drain_life(dir, dam))
4655 chg_virtue(V_SACRIFICE, -1);
4656 chg_virtue(V_VITALITY, -1);
4661 * Gain nutritional sustenance:
4664 * A Food ration gives 5000
4665 * food points (by contrast)
4666 * Don't ever get more than
4667 * "Full" this way But if we
4668 * ARE Gorged, it won't cure
4671 dam = p_ptr->food + MIN(5000, 100 * dam);
4673 /* Not gorged already */
4674 if (p_ptr->food < PY_FOOD_MAX)
4675 set_food(dam >= PY_FOOD_MAX ? PY_FOOD_MAX - 1 : dam);
4683 if (name) return "È¿º²¤Î½Ñ";
4684 if (desc) return "¼þ°Ï¤Î»àÂΤä¹ü¤òÀ¸¤ÊÖ¤¹¡£";
4686 if (name) return "Animate dead";
4687 if (desc) return "Resurrects nearby corpse and skeletons. And makes these your pets.";
4693 animate_dead(0, py, px);
4700 if (name) return "Ëõ»¦";
4701 if (desc) return "»ØÄꤷ¤¿Ê¸»ú¤Î¥â¥ó¥¹¥¿¡¼¤ò¸½ºß¤Î³¬¤«¤é¾Ã¤·µî¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
4703 if (name) return "Genocide";
4704 if (desc) return "Eliminates an entire class of monster, exhausting you. Powerful or unique monsters may resist.";
4708 int power = plev+50;
4710 if (info) return info_power(power);
4714 symbol_genocide(power, TRUE);
4721 if (name) return "¶¸Àï»Î²½";
4722 if (desc) return "¶¸Àï»Î²½¤·¡¢¶²Éݤò½üµî¤¹¤ë¡£";
4724 if (name) return "Berserk";
4725 if (desc) return "Gives bonus to hit and HP, immunity to fear for a while. But decreases AC.";
4731 if (info) return info_duration(base, base);
4735 set_shero(randint1(base) + base, FALSE);
4744 if (name) return "°Î´";
4745 if (desc) return "¥é¥ó¥À¥à¤ÇÍÍ¡¹¤Ê¸ú²Ì¤¬µ¯¤³¤ë¡£";
4747 if (name) return "Invoke Spirits";
4748 if (desc) return "Causes random effects.";
4752 if (info) return s_random;
4756 if (!get_aim_dir(&dir)) return NULL;
4758 cast_invoke_spirits(dir);
4765 if (name) return "°Å¹õ¤ÎÌð";
4766 if (desc) return "°Å¹õ¤Î¥Ü¥ë¥È¤â¤·¤¯¤Ï¥Ó¡¼¥à¤òÊü¤Ä¡£";
4768 if (name) return "Dark Bolt";
4769 if (desc) return "Fires a bolt or beam of darkness.";
4773 int dice = 4 + (plev - 5) / 4;
4776 if (info) return info_damage(dice, sides, 0);
4780 if (!get_aim_dir(&dir)) return NULL;
4782 fire_bolt_or_beam(beam_chance(), GF_DARK, dir, damroll(dice, sides));
4789 if (name) return "¶¸ÍðÀï»Î";
4790 if (desc) return "¶¸Àï»Î²½¤·¡¢¶²Éݤò½üµî¤·¡¢²Ã®¤¹¤ë¡£";
4792 if (name) return "Battle Frenzy";
4793 if (desc) return "Gives another bonus to hit and HP, immunity to fear for a while. Hastes you. But decreases AC.";
4798 int sp_base = plev / 2;
4799 int sp_sides = 20 + plev / 2;
4801 if (info) return info_duration(b_base, b_base);
4805 set_shero(randint1(25) + 25, FALSE);
4808 set_fast(randint1(sp_sides) + sp_base, FALSE);
4815 if (name) return "µÛ·ì¤Î¿Ï";
4816 if (desc) return "Éð´ï¤ËµÛ·ì¤Î°À¤ò¤Ä¤±¤ë¡£";
4818 if (name) return "Vampiric Branding";
4819 if (desc) return "Makes current weapon Vampiric.";
4832 if (name) return "¿¿¡¦µÛ·ì";
4833 if (desc) return "¥â¥ó¥¹¥¿¡¼1ÂΤ«¤éÀ¸Ì¿ÎϤòµÛ¤¤¤È¤ë¡£µÛ¤¤¤È¤Ã¤¿À¸Ì¿ÎϤˤè¤Ã¤ÆÂÎÎϤ¬²óÉü¤¹¤ë¡£";
4835 if (name) return "Vampirism True";
4836 if (desc) return "Fires 3 bolts. Each of the bolts absorbs some HP from a monster and gives them to you.";
4842 if (info) return format("%s3*%d", s_dam, dam);
4848 if (!get_aim_dir(&dir)) return NULL;
4850 chg_virtue(V_SACRIFICE, -1);
4851 chg_virtue(V_VITALITY, -1);
4853 for (i = 0; i < 3; i++)
4855 if (drain_life(dir, dam))
4864 if (name) return "»à¤Î¸Àº²";
4865 if (desc) return "»ë³¦Æâ¤ÎÀ¸Ì¿¤Î¤¢¤ë¥â¥ó¥¹¥¿¡¼¤Ë¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£";
4867 if (name) return "Nether Wave";
4868 if (desc) return "Damages all living monsters in sight.";
4872 int sides = plev * 3;
4874 if (info) return info_damage(1, sides, 0);
4878 dispel_living(randint1(sides));
4885 if (name) return "°Å¹õ¤ÎÍò";
4886 if (desc) return "µðÂç¤Ê°Å¹õ¤Îµå¤òÊü¤Ä¡£";
4888 if (name) return "Darkness Storm";
4889 if (desc) return "Fires a huge ball of darkness.";
4893 int dam = 100 + plev * 2;
4896 if (info) return info_damage(0, 0, dam);
4900 if (!get_aim_dir(&dir)) return NULL;
4902 fire_ball(GF_DARK, dir, dam, rad);
4909 if (name) return "»à¤Î¸÷Àþ";
4910 if (desc) return "»à¤Î¸÷Àþ¤òÊü¤Ä¡£";
4912 if (name) return "Death Ray";
4913 if (desc) return "Fires a beam of death.";
4919 if (!get_aim_dir(&dir)) return NULL;
4921 death_ray(dir, plev);
4928 if (name) return "»à¼Ô¾¤´";
4929 if (desc) return "1ÂΤΥ¢¥ó¥Ç¥Ã¥É¤ò¾¤´¤¹¤ë¡£";
4931 if (name) return "Raise the Dead";
4932 if (desc) return "Summons an undead monster.";
4939 bool pet = one_in_(3);
4942 type = (plev > 47 ? SUMMON_HI_UNDEAD : SUMMON_UNDEAD);
4944 if (!pet || (pet && (plev > 24) && one_in_(3)))
4945 mode |= PM_ALLOW_GROUP;
4947 if (pet) mode |= PM_FORCE_PET;
4948 else mode |= (PM_ALLOW_UNIQUE | PM_NO_PET);
4950 if (summon_specific((pet ? -1 : 0), py, px, (plev * 3) / 2, type, mode))
4953 msg_print("Î䤿¤¤É÷¤¬¤¢¤Ê¤¿¤Î¼þ¤ê¤Ë¿á¤»Ï¤á¤¿¡£¤½¤ì¤ÏÉåÇÔ½¤ò±¿¤ó¤Ç¤¤¤ë...");
4955 msg_print("Cold winds begin to blow around you, carrying with them the stench of decay...");
4962 msg_print("¸Å¤¨¤Î»à¤»¤ë¼Ô¶¦¤¬¤¢¤Ê¤¿¤Ë»Å¤¨¤ë¤¿¤áÅÚ¤«¤éᴤä¿¡ª");
4964 msg_print("Ancient, long-dead forms arise from the ground to serve you!");
4970 msg_print("»à¼Ô¤¬á´¤Ã¤¿¡£Ì²¤ê¤ò˸¤²¤ë¤¢¤Ê¤¿¤òȳ¤¹¤ë¤¿¤á¤Ë¡ª");
4972 msg_print("'The dead arise... to punish you for disturbing them!'");
4976 chg_virtue(V_UNLIFE, 1);
4984 if (name) return "»à¼Ô¤ÎÈëÅÁ";
4985 if (desc) return "¥¢¥¤¥Æ¥à¤ò1¤Ä¼±Ê̤¹¤ë¡£¥ì¥Ù¥ë¤¬¹â¤¤¤È¥¢¥¤¥Æ¥à¤ÎǽÎϤò´°Á´¤ËÃΤ뤳¤È¤¬¤Ç¤¤ë¡£";
4987 if (name) return "Esoteria";
4988 if (desc) return "Identifies an item. Or *identifies* an item at higher level.";
4994 if (randint1(50) > plev)
4996 if (!ident_spell(FALSE)) return NULL;
5000 if (!identify_fully(FALSE)) return NULL;
5008 if (name) return "µÛ·ìµ´ÊѲ½";
5009 if (desc) return "°ìÄê»þ´Ö¡¢µÛ·ìµ´¤ËÊѲ½¤¹¤ë¡£ÊѲ½¤·¤Æ¤¤¤ë´Ö¤ÏËÜÍè¤Î¼ï²¤ÎǽÎϤò¼º¤¤¡¢Âå¤ï¤ê¤ËµÛ·ìµ´¤È¤·¤Æ¤ÎǽÎϤòÆÀ¤ë¡£";
5011 if (name) return "Polymorph Vampire";
5012 if (desc) return "Mimic a vampire for a while. Loses abilities of original race and gets abilities as a vampire.";
5016 int base = 10 + plev / 2;
5018 if (info) return info_duration(base, base);
5022 set_mimic(base + randint1(base), MIMIC_VAMPIRE, FALSE);
5029 if (name) return "·Ð¸³ÃÍÉü³è";
5030 if (desc) return "¼º¤Ã¤¿·Ð¸³Ãͤò²óÉü¤¹¤ë¡£";
5032 if (name) return "Restore Life";
5033 if (desc) return "Restore lost experience.";
5046 if (name) return "¼þÊÕËõ»¦";
5047 if (desc) return "¼«Ê¬¤Î¼þ°Ï¤Ë¤¤¤ë¥â¥ó¥¹¥¿¡¼¤ò¸½ºß¤Î³¬¤«¤é¾Ã¤·µî¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
5049 if (name) return "Mass Genocide";
5050 if (desc) return "Eliminates all nearby monsters, exhausting you. Powerful or unique monsters may be able to resist.";
5054 int power = plev + 50;
5056 if (info) return info_power(power);
5060 mass_genocide(power, TRUE);
5067 if (name) return "ÃϹö¤Î¹å²Ð";
5068 if (desc) return "¼Ù°¤ÊÎϤò»ý¤ÄÊõ¼î¤òÊü¤Ä¡£Á±Îɤʥâ¥ó¥¹¥¿¡¼¤Ë¤ÏÂ礤ʥÀ¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£";
5070 if (name) return "Hellfire";
5071 if (desc) return "Fires a powerful ball of evil power. Hurts good monsters greatly.";
5078 if (info) return info_damage(0, 0, dam);
5082 if (!get_aim_dir(&dir)) return NULL;
5084 fire_ball(GF_HELL_FIRE, dir, dam, rad);
5086 take_hit(DAMAGE_USELIFE, 20 + randint1(30), "ÃϹö¤Î¹å²Ð¤Î¼öʸ¤ò¾§¤¨¤¿ÈèÏ«", -1);
5088 take_hit(DAMAGE_USELIFE, 20 + randint1(30), "the strain of casting Hellfire", -1);
5096 if (name) return "Í©Âβ½";
5097 if (desc) return "°ìÄê»þ´Ö¡¢ÊɤòÄ̤êÈ´¤±¤ë¤³¤È¤¬¤Ç¤¼õ¤±¤ë¥À¥á¡¼¥¸¤¬·Ú¸º¤µ¤ì¤ëÍ©ÂΤξõÂÖ¤ËÊѿȤ¹¤ë¡£";
5099 if (name) return "Wraithform";
5100 if (desc) return "Becomes wraith form which gives ability to pass walls and makes all damages half.";
5104 int base = plev / 2;
5106 if (info) return info_duration(base, base);
5110 set_wraith_form(randint1(base) + base, FALSE);
5121 * @brief ¥È¥é¥ó¥×ÎΰèËâË¡¤Î³Æ½èÍý¤ò¹Ô¤¦
5122 * @param spell ËâË¡ID
5123 * @param mode ½èÍýÆâÍÆ (SPELL_NAME / SPELL_DESC / SPELL_INFO / SPELL_CAST)
5124 * @return SPELL_NAME / SPELL_DESC / SPELL_INFO »þ¤Ë¤Ïʸ»úÎó¥Ý¥¤¥ó¥¿¤òÊÖ¤¹¡£SPELL_CAST»þ¤ÏNULLʸ»úÎó¤òÊÖ¤¹¡£
5126 static cptr do_trump_spell(int spell, int mode)
5128 bool name = (mode == SPELL_NAME) ? TRUE : FALSE;
5129 bool desc = (mode == SPELL_DESC) ? TRUE : FALSE;
5130 bool info = (mode == SPELL_INFO) ? TRUE : FALSE;
5131 bool cast = (mode == SPELL_CAST) ? TRUE : FALSE;
5132 bool fail = (mode == SPELL_FAIL) ? TRUE : FALSE;
5135 static const char s_random[] = "¥é¥ó¥À¥à";
5137 static const char s_random[] = "random";
5141 int plev = p_ptr->lev;
5147 if (name) return "¥·¥ç¡¼¥È¡¦¥Æ¥ì¥Ý¡¼¥È";
5148 if (desc) return "¶áµ÷Î¥¤Î¥Æ¥ì¥Ý¡¼¥È¤ò¤¹¤ë¡£";
5150 if (name) return "Phase Door";
5151 if (desc) return "Teleport short distance.";
5157 if (info) return info_range(range);
5161 teleport_player(range, 0L);
5168 if (name) return "ÃØéá¤Î¥«¡¼¥É";
5169 if (desc) return "ÃØéá¤ò¾¤´¤¹¤ë¡£";
5171 if (name) return "Trump Spiders";
5172 if (desc) return "Summons spiders.";
5179 msg_print("¤¢¤Ê¤¿¤ÏÃØéá¤Î¥«¡¼¥É¤Ë½¸Ã椹¤ë...");
5181 msg_print("You concentrate on the trump of an spider...");
5184 if (trump_summoning(1, !fail, py, px, 0, SUMMON_SPIDER, PM_ALLOW_GROUP))
5189 msg_print("¾¤´¤µ¤ì¤¿ÃØéá¤ÏÅܤäƤ¤¤ë¡ª");
5191 msg_print("The summoned spiders get angry!");
5201 if (name) return "¥·¥ã¥Ã¥Õ¥ë";
5202 if (desc) return "¥«¡¼¥É¤ÎÀꤤ¤ò¤¹¤ë¡£";
5204 if (name) return "Shuffle";
5205 if (desc) return "Causes random effects.";
5209 if (info) return s_random;
5220 if (name) return "¥Õ¥í¥¢¡¦¥ê¥»¥Ã¥È";
5221 if (desc) return "ºÇ¿¼³¬¤òÊѹ¹¤¹¤ë¡£";
5223 if (name) return "Reset Recall";
5224 if (desc) return "Resets the 'deepest' level for recall spell.";
5230 if (!reset_recall()) return NULL;
5237 if (name) return "¥Æ¥ì¥Ý¡¼¥È";
5238 if (desc) return "±óµ÷Î¥¤Î¥Æ¥ì¥Ý¡¼¥È¤ò¤¹¤ë¡£";
5240 if (name) return "Teleport";
5241 if (desc) return "Teleport long distance.";
5245 int range = plev * 4;
5247 if (info) return info_range(range);
5251 teleport_player(range, 0L);
5258 if (name) return "´¶ÃΤΥ«¡¼¥É";
5259 if (desc) return "°ìÄê»þ´Ö¡¢¥Æ¥ì¥Ñ¥·¡¼Ç½ÎϤòÆÀ¤ë¡£";
5261 if (name) return "Trump Spying";
5262 if (desc) return "Gives telepathy for a while.";
5269 if (info) return info_duration(base, sides);
5273 set_tim_esp(randint1(sides) + base, FALSE);
5280 if (name) return "¥Æ¥ì¥Ý¡¼¥È¡¦¥â¥ó¥¹¥¿¡¼";
5281 if (desc) return "¥â¥ó¥¹¥¿¡¼¤ò¥Æ¥ì¥Ý¡¼¥È¤µ¤»¤ë¥Ó¡¼¥à¤òÊü¤Ä¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
5283 if (name) return "Teleport Away";
5284 if (desc) return "Teleports all monsters on the line away unless resisted.";
5290 if (info) return info_power(power);
5294 if (!get_aim_dir(&dir)) return NULL;
5296 fire_beam(GF_AWAY_ALL, dir, power);
5303 if (name) return "ưʪ¤Î¥«¡¼¥É";
5304 if (desc) return "1ÂΤÎưʪ¤ò¾¤´¤¹¤ë¡£";
5306 if (name) return "Trump Animals";
5307 if (desc) return "Summons an animal.";
5313 int type = (!fail ? SUMMON_ANIMAL_RANGER : SUMMON_ANIMAL);
5316 msg_print("¤¢¤Ê¤¿¤Ïưʪ¤Î¥«¡¼¥É¤Ë½¸Ã椹¤ë...");
5318 msg_print("You concentrate on the trump of an animal...");
5321 if (trump_summoning(1, !fail, py, px, 0, type, 0L))
5326 msg_print("¾¤´¤µ¤ì¤¿Æ°Êª¤ÏÅܤäƤ¤¤ë¡ª");
5328 msg_print("The summoned animal gets angry!");
5338 if (name) return "°ÜÆ°¤Î¥«¡¼¥É";
5339 if (desc) return "¥¢¥¤¥Æ¥à¤ò¼«Ê¬¤Î¸µ¤Ø°ÜÆ°¤µ¤»¤ë¡£";
5341 if (name) return "Trump Reach";
5342 if (desc) return "Pulls a distant item close to you.";
5346 int weight = plev * 15;
5348 if (info) return info_weight(weight);
5352 if (!get_aim_dir(&dir)) return NULL;
5354 fetch(dir, weight, FALSE);
5361 if (name) return "¥«¥ß¥«¥¼¤Î¥«¡¼¥É";
5362 if (desc) return "Ê£¿ô¤ÎÇúȯ¤¹¤ë¥â¥ó¥¹¥¿¡¼¤ò¾¤´¤¹¤ë¡£";
5364 if (name) return "Trump Kamikaze";
5365 if (desc) return "Summons monsters which explode by itself.";
5376 if (!target_set(TARGET_KILL)) return NULL;
5382 /* Summons near player when failed */
5387 if (p_ptr->pclass == CLASS_BEASTMASTER)
5388 type = SUMMON_KAMIKAZE_LIVING;
5390 type = SUMMON_KAMIKAZE;
5393 msg_print("¤¢¤Ê¤¿¤Ï¥«¥ß¥«¥¼¤Î¥«¡¼¥É¤Ë½¸Ã椹¤ë...");
5395 msg_print("You concentrate on several trumps at once...");
5398 if (trump_summoning(2 + randint0(plev / 7), !fail, y, x, 0, type, 0L))
5403 msg_print("¾¤´¤µ¤ì¤¿¥â¥ó¥¹¥¿¡¼¤ÏÅܤäƤ¤¤ë¡ª");
5405 msg_print("The summoned creatures get angry!");
5415 if (name) return "¸¸Î´";
5416 if (desc) return "1ÂΤÎÍ©Îî¤ò¾¤´¤¹¤ë¡£";
5418 if (name) return "Phantasmal Servant";
5419 if (desc) return "Summons a ghost.";
5423 /* Phantasmal Servant is not summoned as enemy when failed */
5426 int summon_lev = plev * 2 / 3 + randint1(plev / 2);
5428 if (trump_summoning(1, !fail, py, px, (summon_lev * 3 / 2), SUMMON_PHANTOM, 0L))
5431 msg_print("¸æÍѤǤ´¤¶¤¤¤Þ¤¹¤«¡¢¸æ¼ç¿ÍÍÍ¡©");
5433 msg_print("'Your wish, master?'");
5442 if (name) return "¥¹¥Ô¡¼¥É¡¦¥â¥ó¥¹¥¿¡¼";
5443 if (desc) return "¥â¥ó¥¹¥¿¡¼1ÂΤò²Ã®¤µ¤»¤ë¡£";
5445 if (name) return "Haste Monster";
5446 if (desc) return "Hastes a monster.";
5454 /* Temporary enable target_pet option */
5455 bool old_target_pet = target_pet;
5458 result = get_aim_dir(&dir);
5460 /* Restore target_pet option */
5461 target_pet = old_target_pet;
5463 if (!result) return NULL;
5465 speed_monster(dir, plev);
5472 if (name) return "¥Æ¥ì¥Ý¡¼¥È¡¦¥ì¥Ù¥ë";
5473 if (desc) return "½Ö»þ¤Ë¾å¤«²¼¤Î³¬¤Ë¥Æ¥ì¥Ý¡¼¥È¤¹¤ë¡£";
5475 if (name) return "Teleport Level";
5476 if (desc) return "Teleport to up or down stairs in a moment.";
5483 if (!get_check("ËÜÅö¤Ë¾¤Î³¬¤Ë¥Æ¥ì¥Ý¡¼¥È¤·¤Þ¤¹¤«¡©")) return NULL;
5485 if (!get_check("Are you sure? (Teleport Level)")) return NULL;
5494 if (name) return "¼¡¸µ¤ÎÈâ";
5495 if (desc) return "ûµ÷Î¥Æâ¤Î»ØÄꤷ¤¿¾ì½ê¤Ë¥Æ¥ì¥Ý¡¼¥È¤¹¤ë¡£";
5497 if (name) return "Dimension Door";
5498 if (desc) return "Teleport to given location.";
5502 int range = plev / 2 + 10;
5504 if (info) return info_range(range);
5509 msg_print("¼¡¸µ¤ÎÈ⤬³«¤¤¤¿¡£ÌÜŪÃϤòÁª¤ó¤Ç²¼¤µ¤¤¡£");
5511 msg_print("You open a dimensional gate. Choose a destination.");
5514 if (!dimension_door()) return NULL;
5521 if (name) return "µ¢´Ô¤Î¼öʸ";
5522 if (desc) return "ÃϾå¤Ë¤¤¤ë¤È¤¤Ï¥À¥ó¥¸¥ç¥ó¤ÎºÇ¿¼³¬¤Ø¡¢¥À¥ó¥¸¥ç¥ó¤Ë¤¤¤ë¤È¤¤ÏÃϾå¤Ø¤È°ÜÆ°¤¹¤ë¡£";
5524 if (name) return "Word of Recall";
5525 if (desc) return "Recalls player from dungeon to town, or from town to the deepest level of dungeon.";
5532 if (info) return info_delay(base, sides);
5536 if (!word_of_recall()) return NULL;
5543 if (name) return "²øʪÄÉÊü";
5544 if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤ò¥Æ¥ì¥Ý¡¼¥È¤µ¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
5546 if (name) return "Banish";
5547 if (desc) return "Teleports all monsters in sight away unless resisted.";
5551 int power = plev * 4;
5553 if (info) return info_power(power);
5557 banish_monsters(power);
5564 if (name) return "°ÌÃÖ¸ò´¹¤Î¥«¡¼¥É";
5565 if (desc) return "1ÂΤΥâ¥ó¥¹¥¿¡¼¤È°ÌÃÖ¤ò¸ò´¹¤¹¤ë¡£";
5567 if (name) return "Swap Position";
5568 if (desc) return "Swap positions of you and a monster.";
5576 /* HACK -- No range limit */
5577 project_length = -1;
5579 result = get_aim_dir(&dir);
5581 /* Restore range to default */
5584 if (!result) return NULL;
5593 if (name) return "¥¢¥ó¥Ç¥Ã¥É¤Î¥«¡¼¥É";
5594 if (desc) return "1ÂΤΥ¢¥ó¥Ç¥Ã¥É¤ò¾¤´¤¹¤ë¡£";
5596 if (name) return "Trump Undead";
5597 if (desc) return "Summons an undead monster.";
5604 msg_print("¤¢¤Ê¤¿¤Ï¥¢¥ó¥Ç¥Ã¥É¤Î¥«¡¼¥É¤Ë½¸Ã椹¤ë...");
5606 msg_print("You concentrate on the trump of an undead creature...");
5609 if (trump_summoning(1, !fail, py, px, 0, SUMMON_UNDEAD, 0L))
5614 msg_print("¾¤´¤µ¤ì¤¿¥¢¥ó¥Ç¥Ã¥É¤ÏÅܤäƤ¤¤ë¡ª");
5616 msg_print("The summoned undead creature gets angry!");
5626 if (name) return "à¨ÃîÎà¤Î¥«¡¼¥É";
5627 if (desc) return "1ÂΤΥҥɥé¤ò¾¤´¤¹¤ë¡£";
5629 if (name) return "Trump Reptiles";
5630 if (desc) return "Summons a hydra.";
5637 msg_print("¤¢¤Ê¤¿¤Ïà¨ÃîÎà¤Î¥«¡¼¥É¤Ë½¸Ã椹¤ë...");
5639 msg_print("You concentrate on the trump of a reptile...");
5642 if (trump_summoning(1, !fail, py, px, 0, SUMMON_HYDRA, 0L))
5647 msg_print("¾¤´¤µ¤ì¤¿à¨ÃîÎà¤ÏÅܤäƤ¤¤ë¡ª");
5649 msg_print("The summoned reptile gets angry!");
5659 if (name) return "¥â¥ó¥¹¥¿¡¼¤Î¥«¡¼¥É";
5660 if (desc) return "Ê£¿ô¤Î¥â¥ó¥¹¥¿¡¼¤ò¾¤´¤¹¤ë¡£";
5662 if (name) return "Trump Monsters";
5663 if (desc) return "Summons some monsters.";
5672 msg_print("¤¢¤Ê¤¿¤Ï¥â¥ó¥¹¥¿¡¼¤Î¥«¡¼¥É¤Ë½¸Ã椹¤ë...");
5674 msg_print("You concentrate on several trumps at once...");
5677 if (p_ptr->pclass == CLASS_BEASTMASTER)
5678 type = SUMMON_LIVING;
5682 if (trump_summoning((1 + (plev - 15)/ 10), !fail, py, px, 0, type, 0L))
5687 msg_print("¾¤´¤µ¤ì¤¿¥â¥ó¥¹¥¿¡¼¤ÏÅܤäƤ¤¤ë¡ª");
5689 msg_print("The summoned creatures get angry!");
5700 if (name) return "¥Ï¥¦¥ó¥É¤Î¥«¡¼¥É";
5701 if (desc) return "1¥°¥ë¡¼¥×¤Î¥Ï¥¦¥ó¥É¤ò¾¤´¤¹¤ë¡£";
5703 if (name) return "Trump Hounds";
5704 if (desc) return "Summons a group of hounds.";
5711 msg_print("¤¢¤Ê¤¿¤Ï¥Ï¥¦¥ó¥É¤Î¥«¡¼¥É¤Ë½¸Ã椹¤ë...");
5713 msg_print("You concentrate on the trump of a hound...");
5716 if (trump_summoning(1, !fail, py, px, 0, SUMMON_HOUND, PM_ALLOW_GROUP))
5721 msg_print("¾¤´¤µ¤ì¤¿¥Ï¥¦¥ó¥É¤ÏÅܤäƤ¤¤ë¡ª");
5723 msg_print("The summoned hounds get angry!");
5733 if (name) return "¥È¥é¥ó¥×¤Î¿Ï";
5734 if (desc) return "Éð´ï¤Ë¥È¥é¥ó¥×¤Î°À¤ò¤Ä¤±¤ë¡£";
5736 if (name) return "Trump Branding";
5737 if (desc) return "Makes current weapon a Trump weapon.";
5750 if (name) return "¿Í´Ö¥È¥é¥ó¥×";
5751 if (desc) return "¥é¥ó¥À¥à¤Ë¥Æ¥ì¥Ý¡¼¥È¤¹¤ëÆÍÁ³ÊÑ°Û¤«¡¢¼«Ê¬¤Î°Õ»×¤Ç¥Æ¥ì¥Ý¡¼¥È¤¹¤ëÆÍÁ³ÊÑ°Û¤¬¿È¤Ë¤Ä¤¯¡£";
5753 if (name) return "Living Trump";
5754 if (desc) return "Gives mutation which makes you teleport randomly or makes you able to teleport at will.";
5763 /* Teleport control */
5766 /* Random teleportation (uncontrolled) */
5769 /* Gain the mutation */
5770 if (gain_random_mutation(mutation))
5773 msg_print("¤¢¤Ê¤¿¤ÏÀ¸¤¤Æ¤¤¤ë¥«¡¼¥É¤ËÊѤï¤Ã¤¿¡£");
5775 msg_print("You have turned into a Living Trump.");
5784 if (name) return "¥µ¥¤¥Ð¡¼¥Ç¡¼¥â¥ó¤Î¥«¡¼¥É";
5785 if (desc) return "1ÂΤΥµ¥¤¥Ð¡¼¥Ç¡¼¥â¥ó¤ò¾¤´¤¹¤ë¡£";
5787 if (name) return "Trump Cyberdemon";
5788 if (desc) return "Summons a cyber demon.";
5795 msg_print("¤¢¤Ê¤¿¤Ï¥µ¥¤¥Ð¡¼¥Ç¡¼¥â¥ó¤Î¥«¡¼¥É¤Ë½¸Ã椹¤ë...");
5797 msg_print("You concentrate on the trump of a Cyberdemon...");
5800 if (trump_summoning(1, !fail, py, px, 0, SUMMON_CYBER, 0L))
5805 msg_print("¾¤´¤µ¤ì¤¿¥µ¥¤¥Ð¡¼¥Ç¡¼¥â¥ó¤ÏÅܤäƤ¤¤ë¡ª");
5807 msg_print("The summoned Cyberdemon gets angry!");
5817 if (name) return "ͽ¸«¤Î¥«¡¼¥É";
5818 if (desc) return "¶á¤¯¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¡¢æ«¡¢Èâ¡¢³¬ÃÊ¡¢ºâÊõ¡¢¤½¤·¤Æ¥¢¥¤¥Æ¥à¤ò´¶ÃΤ¹¤ë¡£";
5820 if (name) return "Trump Divination";
5821 if (desc) return "Detects all monsters, traps, doors, stairs, treasures and items in your vicinity.";
5825 int rad = DETECT_RAD_DEFAULT;
5827 if (info) return info_radius(rad);
5838 if (name) return "Ãμ±¤Î¥«¡¼¥É";
5839 if (desc) return "¥¢¥¤¥Æ¥à¤Î»ý¤ÄǽÎϤò´°Á´¤ËÃΤ롣";
5841 if (name) return "Trump Lore";
5842 if (desc) return "*Identifies* an item.";
5848 if (!identify_fully(FALSE)) return NULL;
5855 if (name) return "²óÉü¥â¥ó¥¹¥¿¡¼";
5856 if (desc) return "¥â¥ó¥¹¥¿¡¼1ÂΤÎÂÎÎϤò²óÉü¤µ¤»¤ë¡£";
5858 if (name) return "Heal Monster";
5859 if (desc) return "Heal a monster.";
5863 int heal = plev * 10 + 200;
5865 if (info) return info_heal(0, 0, heal);
5871 /* Temporary enable target_pet option */
5872 bool old_target_pet = target_pet;
5875 result = get_aim_dir(&dir);
5877 /* Restore target_pet option */
5878 target_pet = old_target_pet;
5880 if (!result) return NULL;
5882 heal_monster(dir, heal);
5889 if (name) return "¥É¥é¥´¥ó¤Î¥«¡¼¥É";
5890 if (desc) return "1ÂΤΥɥ饴¥ó¤ò¾¤´¤¹¤ë¡£";
5892 if (name) return "Trump Dragon";
5893 if (desc) return "Summons a dragon.";
5900 msg_print("¤¢¤Ê¤¿¤Ï¥É¥é¥´¥ó¤Î¥«¡¼¥É¤Ë½¸Ã椹¤ë...");
5902 msg_print("You concentrate on the trump of a dragon...");
5905 if (trump_summoning(1, !fail, py, px, 0, SUMMON_DRAGON, 0L))
5910 msg_print("¾¤´¤µ¤ì¤¿¥É¥é¥´¥ó¤ÏÅܤäƤ¤¤ë¡ª");
5912 msg_print("The summoned dragon gets angry!");
5922 if (name) return "ð¨ÀФΥ«¡¼¥É";
5923 if (desc) return "¼«Ê¬¤Î¼þÊÕ¤Ëð¨ÀФòÍî¤È¤¹¡£";
5925 if (name) return "Trump Meteor";
5926 if (desc) return "Makes meteor balls fall down to nearby random locations.";
5933 if (info) return info_multi_damage(dam);
5937 cast_meteor(dam, rad);
5944 if (name) return "¥Ç¡¼¥â¥ó¤Î¥«¡¼¥É";
5945 if (desc) return "1ÂΤΰËâ¤ò¾¤´¤¹¤ë¡£";
5947 if (name) return "Trump Demon";
5948 if (desc) return "Summons a demon.";
5955 msg_print("¤¢¤Ê¤¿¤Ï¥Ç¡¼¥â¥ó¤Î¥«¡¼¥É¤Ë½¸Ã椹¤ë...");
5957 msg_print("You concentrate on the trump of a demon...");
5960 if (trump_summoning(1, !fail, py, px, 0, SUMMON_DEMON, 0L))
5965 msg_print("¾¤´¤µ¤ì¤¿¥Ç¡¼¥â¥ó¤ÏÅܤäƤ¤¤ë¡ª");
5967 msg_print("The summoned demon gets angry!");
5977 if (name) return "ÃϹö¤Î¥«¡¼¥É";
5978 if (desc) return "1ÂΤξåµé¥¢¥ó¥Ç¥Ã¥É¤ò¾¤´¤¹¤ë¡£";
5980 if (name) return "Trump Greater Undead";
5981 if (desc) return "Summons a greater undead.";
5988 msg_print("¤¢¤Ê¤¿¤Ï¶¯ÎϤʥ¢¥ó¥Ç¥Ã¥É¤Î¥«¡¼¥É¤Ë½¸Ã椹¤ë...");
5990 msg_print("You concentrate on the trump of a greater undead being...");
5992 /* May allow unique depend on level and dice roll */
5993 if (trump_summoning(1, !fail, py, px, 0, SUMMON_HI_UNDEAD, PM_ALLOW_UNIQUE))
5998 msg_print("¾¤´¤µ¤ì¤¿¾åµé¥¢¥ó¥Ç¥Ã¥É¤ÏÅܤäƤ¤¤ë¡ª");
6000 msg_print("The summoned greater undead creature gets angry!");
6010 if (name) return "¸ÅÂå¥É¥é¥´¥ó¤Î¥«¡¼¥É";
6011 if (desc) return "1ÂΤθÅÂå¥É¥é¥´¥ó¤ò¾¤´¤¹¤ë¡£";
6013 if (name) return "Trump Ancient Dragon";
6014 if (desc) return "Summons an ancient dragon.";
6022 if (p_ptr->pclass == CLASS_BEASTMASTER)
6023 type = SUMMON_HI_DRAGON_LIVING;
6025 type = SUMMON_HI_DRAGON;
6028 msg_print("¤¢¤Ê¤¿¤Ï¸ÅÂå¥É¥é¥´¥ó¤Î¥«¡¼¥É¤Ë½¸Ã椹¤ë...");
6030 msg_print("You concentrate on the trump of an ancient dragon...");
6033 /* May allow unique depend on level and dice roll */
6034 if (trump_summoning(1, !fail, py, px, 0, type, PM_ALLOW_UNIQUE))
6039 msg_print("¾¤´¤µ¤ì¤¿¸ÅÂå¥É¥é¥´¥ó¤ÏÅܤäƤ¤¤ë¡ª");
6041 msg_print("The summoned ancient dragon gets angry!");
6055 * @brief Èë½ÑÎΰèËâË¡¤Î³Æ½èÍý¤ò¹Ô¤¦
6056 * @param spell ËâË¡ID
6057 * @param mode ½èÍýÆâÍÆ (SPELL_NAME / SPELL_DESC / SPELL_INFO / SPELL_CAST)
6058 * @return SPELL_NAME / SPELL_DESC / SPELL_INFO »þ¤Ë¤Ïʸ»úÎó¥Ý¥¤¥ó¥¿¤òÊÖ¤¹¡£SPELL_CAST»þ¤ÏNULLʸ»úÎó¤òÊÖ¤¹¡£
6060 static cptr do_arcane_spell(int spell, int mode)
6062 bool name = (mode == SPELL_NAME) ? TRUE : FALSE;
6063 bool desc = (mode == SPELL_DESC) ? TRUE : FALSE;
6064 bool info = (mode == SPELL_INFO) ? TRUE : FALSE;
6065 bool cast = (mode == SPELL_CAST) ? TRUE : FALSE;
6068 int plev = p_ptr->lev;
6074 if (name) return "ÅÅ·â";
6075 if (desc) return "ÅÅ·â¤Î¥Ü¥ë¥È¤â¤·¤¯¤Ï¥Ó¡¼¥à¤òÊü¤Ä¡£";
6077 if (name) return "Zap";
6078 if (desc) return "Fires a bolt or beam of lightning.";
6082 int dice = 3 + (plev - 1) / 5;
6085 if (info) return info_damage(dice, sides, 0);
6089 if (!get_aim_dir(&dir)) return NULL;
6091 fire_bolt_or_beam(beam_chance() - 10, GF_ELEC, dir, damroll(dice, sides));
6098 if (name) return "ËâË¡¤Î»Ü¾û";
6099 if (desc) return "Èâ¤Ë¸°¤ò¤«¤±¤ë¡£";
6101 if (name) return "Wizard Lock";
6102 if (desc) return "Locks a door.";
6108 if (!get_aim_dir(&dir)) return NULL;
6117 if (name) return "Æ©ÌÀÂδ¶ÃÎ";
6118 if (desc) return "¶á¤¯¤ÎÆ©ÌÀ¤Ê¥â¥ó¥¹¥¿¡¼¤ò´¶ÃΤ¹¤ë¡£";
6120 if (name) return "Detect Invisibility";
6121 if (desc) return "Detects all invisible monsters in your vicinity.";
6125 int rad = DETECT_RAD_DEFAULT;
6127 if (info) return info_radius(rad);
6131 detect_monsters_invis(rad);
6138 if (name) return "¥â¥ó¥¹¥¿¡¼´¶ÃÎ";
6139 if (desc) return "¶á¤¯¤ÎÁ´¤Æ¤Î¸«¤¨¤ë¥â¥ó¥¹¥¿¡¼¤ò´¶ÃΤ¹¤ë¡£";
6141 if (name) return "Detect Monsters";
6142 if (desc) return "Detects all monsters in your vicinity unless invisible.";
6146 int rad = DETECT_RAD_DEFAULT;
6148 if (info) return info_radius(rad);
6152 detect_monsters_normal(rad);
6159 if (name) return "¥·¥ç¡¼¥È¡¦¥Æ¥ì¥Ý¡¼¥È";
6160 if (desc) return "¶áµ÷Î¥¤Î¥Æ¥ì¥Ý¡¼¥È¤ò¤¹¤ë¡£";
6162 if (name) return "Blink";
6163 if (desc) return "Teleport short distance.";
6169 if (info) return info_range(range);
6173 teleport_player(range, 0L);
6180 if (name) return "¥é¥¤¥È¡¦¥¨¥ê¥¢";
6181 if (desc) return "¸÷¸»¤¬¾È¤é¤·¤Æ¤¤¤ëÈϰϤ«Éô²°Á´ÂΤò±Êµ×¤ËÌÀ¤ë¤¯¤¹¤ë¡£";
6183 if (name) return "Light Area";
6184 if (desc) return "Lights up nearby area and the inside of a room permanently.";
6189 int sides = plev / 2;
6190 int rad = plev / 10 + 1;
6192 if (info) return info_damage(dice, sides, 0);
6196 lite_area(damroll(dice, sides), rad);
6203 if (name) return "櫤ÈÈâ Ç˲õ";
6204 if (desc) return "°ìľÀþ¾å¤ÎÁ´¤Æ¤Î櫤ÈÈâ¤òÇ˲õ¤¹¤ë¡£";
6206 if (name) return "Trap & Door Destruction";
6207 if (desc) return "Fires a beam which destroy traps and doors.";
6213 if (!get_aim_dir(&dir)) return NULL;
6222 if (name) return "·Ú½ý¤Î¼£Ìþ";
6223 if (desc) return "²ø²æ¤ÈÂÎÎϤò¾¯¤·²óÉü¤µ¤»¤ë¡£";
6225 if (name) return "Cure Light Wounds";
6226 if (desc) return "Heals cut and HP a little.";
6233 if (info) return info_heal(dice, sides, 0);
6237 hp_player(damroll(dice, sides));
6238 set_cut(p_ptr->cut - 10);
6245 if (name) return "櫤ÈÈâ ´¶ÃÎ";
6246 if (desc) return "¶á¤¯¤ÎÁ´¤Æ¤Î櫤ÈÈâ¤È³¬Ãʤò´¶ÃΤ¹¤ë¡£";
6248 if (name) return "Detect Doors & Traps";
6249 if (desc) return "Detects traps, doors, and stairs in your vicinity.";
6253 int rad = DETECT_RAD_DEFAULT;
6255 if (info) return info_radius(rad);
6259 detect_traps(rad, TRUE);
6268 if (name) return "dzÁÇ";
6269 if (desc) return "¸÷¸»¤ËdzÎÁ¤òÊäµë¤¹¤ë¡£";
6271 if (name) return "Phlogiston";
6272 if (desc) return "Adds more turns of light to a lantern or torch.";
6285 if (name) return "ºâÊõ´¶ÃÎ";
6286 if (desc) return "¶á¤¯¤ÎºâÊõ¤ò´¶ÃΤ¹¤ë¡£";
6288 if (name) return "Detect Treasure";
6289 if (desc) return "Detects all treasures in your vicinity.";
6293 int rad = DETECT_RAD_DEFAULT;
6295 if (info) return info_radius(rad);
6299 detect_treasure(rad);
6300 detect_objects_gold(rad);
6307 if (name) return "ËâË¡ ´¶ÃÎ";
6308 if (desc) return "¶á¤¯¤ÎËâË¡¤¬¤«¤«¤Ã¤¿¥¢¥¤¥Æ¥à¤ò´¶ÃΤ¹¤ë¡£";
6310 if (name) return "Detect Enchantment";
6311 if (desc) return "Detects all magical items in your vicinity.";
6315 int rad = DETECT_RAD_DEFAULT;
6317 if (info) return info_radius(rad);
6321 detect_objects_magic(rad);
6328 if (name) return "¥¢¥¤¥Æ¥à´¶ÃÎ";
6329 if (desc) return "¶á¤¯¤ÎÁ´¤Æ¤Î¥¢¥¤¥Æ¥à¤ò´¶ÃΤ¹¤ë¡£";
6331 if (name) return "Detect Objects";
6332 if (desc) return "Detects all items in your vicinity.";
6336 int rad = DETECT_RAD_DEFAULT;
6338 if (info) return info_radius(rad);
6342 detect_objects_normal(rad);
6349 if (name) return "²òÆÇ";
6350 if (desc) return "ÆǤòÂÎÆ⤫¤é´°Á´¤Ë¼è¤ê½ü¤¯¡£";
6352 if (name) return "Cure Poison";
6353 if (desc) return "Cures poison status.";
6366 if (name) return "ÂÑÎä";
6367 if (desc) return "°ìÄê»þ´Ö¡¢Î䵤¤Ø¤ÎÂÑÀ¤òÆÀ¤ë¡£ÁõÈ÷¤Ë¤è¤ëÂÑÀ¤ËÎßÀѤ¹¤ë¡£";
6369 if (name) return "Resist Cold";
6370 if (desc) return "Gives resistance to cold. This resistance can be added to which from equipment for more powerful resistance.";
6376 if (info) return info_duration(base, base);
6380 set_oppose_cold(randint1(base) + base, FALSE);
6387 if (name) return "ÂѲÐ";
6388 if (desc) return "°ìÄê»þ´Ö¡¢±ê¤Ø¤ÎÂÑÀ¤òÆÀ¤ë¡£ÁõÈ÷¤Ë¤è¤ëÂÑÀ¤ËÎßÀѤ¹¤ë¡£";
6390 if (name) return "Resist Fire";
6391 if (desc) return "Gives resistance to fire. This resistance can be added to which from equipment for more powerful resistance.";
6397 if (info) return info_duration(base, base);
6401 set_oppose_fire(randint1(base) + base, FALSE);
6408 if (name) return "ÂÑÅÅ";
6409 if (desc) return "°ìÄê»þ´Ö¡¢ÅÅ·â¤Ø¤ÎÂÑÀ¤òÆÀ¤ë¡£ÁõÈ÷¤Ë¤è¤ëÂÑÀ¤ËÎßÀѤ¹¤ë¡£";
6411 if (name) return "Resist Lightning";
6412 if (desc) return "Gives resistance to electricity. This resistance can be added to which from equipment for more powerful resistance.";
6418 if (info) return info_duration(base, base);
6422 set_oppose_elec(randint1(base) + base, FALSE);
6429 if (name) return "ÂÑ»À";
6430 if (desc) return "°ìÄê»þ´Ö¡¢»À¤Ø¤ÎÂÑÀ¤òÆÀ¤ë¡£ÁõÈ÷¤Ë¤è¤ëÂÑÀ¤ËÎßÀѤ¹¤ë¡£";
6432 if (name) return "Resist Acid";
6433 if (desc) return "Gives resistance to acid. This resistance can be added to which from equipment for more powerful resistance.";
6439 if (info) return info_duration(base, base);
6443 set_oppose_acid(randint1(base) + base, FALSE);
6450 if (name) return "½Å½ý¤Î¼£Ìþ";
6451 if (desc) return "²ø²æ¤ÈÂÎÎϤòÃæÄøÅÙ²óÉü¤µ¤»¤ë¡£";
6453 if (name) return "Cure Medium Wounds";
6454 if (desc) return "Heals cut and HP more.";
6461 if (info) return info_heal(dice, sides, 0);
6465 hp_player(damroll(dice, sides));
6466 set_cut((p_ptr->cut / 2) - 50);
6473 if (name) return "¥Æ¥ì¥Ý¡¼¥È";
6474 if (desc) return "±óµ÷Î¥¤Î¥Æ¥ì¥Ý¡¼¥È¤ò¤¹¤ë¡£";
6476 if (name) return "Teleport";
6477 if (desc) return "Teleport long distance.";
6481 int range = plev * 5;
6483 if (info) return info_range(range);
6487 teleport_player(range, 0L);
6494 if (name) return "´ÕÄê";
6495 if (desc) return "¥¢¥¤¥Æ¥à¤ò¼±Ê̤¹¤ë¡£";
6497 if (name) return "Identify";
6498 if (desc) return "Identifies an item.";
6504 if (!ident_spell(FALSE)) return NULL;
6511 if (name) return "´äÀÐÍϲò";
6512 if (desc) return "ÊɤòÍϤ«¤·¤Æ¾²¤Ë¤¹¤ë¡£";
6514 if (name) return "Stone to Mud";
6515 if (desc) return "Turns one rock square to mud.";
6523 if (info) return info_damage(dice, sides, base);
6527 if (!get_aim_dir(&dir)) return NULL;
6529 wall_to_mud(dir, 20 + randint1(30));
6536 if (name) return "Á®¸÷";
6537 if (desc) return "¸÷Àþ¤òÊü¤Ä¡£¸÷¤ê¤ò·ù¤¦¥â¥ó¥¹¥¿¡¼¤Ë¸ú²Ì¤¬¤¢¤ë¡£";
6539 if (name) return "Ray of Light";
6540 if (desc) return "Fires a beam of light which damages to light-sensitive monsters.";
6547 if (info) return info_damage(dice, sides, 0);
6551 if (!get_aim_dir(&dir)) return NULL;
6554 msg_print("¸÷Àþ¤¬Êü¤¿¤ì¤¿¡£");
6556 msg_print("A line of light appears.");
6559 lite_line(dir, damroll(6, 8));
6566 if (name) return "¶õÊ¢½¼Â";
6567 if (desc) return "ËþÊ¢¤Ë¤¹¤ë¡£";
6569 if (name) return "Satisfy Hunger";
6570 if (desc) return "Satisfies hunger.";
6576 set_food(PY_FOOD_MAX - 1);
6583 if (name) return "Æ©ÌÀ»ëǧ";
6584 if (desc) return "°ìÄê»þ´Ö¡¢Æ©ÌÀ¤Ê¤â¤Î¤¬¸«¤¨¤ë¤è¤¦¤Ë¤Ê¤ë¡£";
6586 if (name) return "See Invisible";
6587 if (desc) return "Gives see invisible for a while.";
6593 if (info) return info_duration(base, base);
6597 set_tim_invis(randint1(base) + base, FALSE);
6604 if (name) return "¥¨¥ì¥á¥ó¥¿¥ë¾¤´";
6605 if (desc) return "1ÂΤΥ¨¥ì¥á¥ó¥¿¥ë¤ò¾¤´¤¹¤ë¡£";
6607 if (name) return "Conjure Elemental";
6608 if (desc) return "Summons an elemental.";
6614 if (!summon_specific(-1, py, px, plev, SUMMON_ELEMENTAL, (PM_ALLOW_GROUP | PM_FORCE_PET)))
6617 msg_print("¥¨¥ì¥á¥ó¥¿¥ë¤Ï¸½¤ì¤Ê¤«¤Ã¤¿¡£");
6619 msg_print("No Elementals arrive.");
6628 if (name) return "¥Æ¥ì¥Ý¡¼¥È¡¦¥ì¥Ù¥ë";
6629 if (desc) return "½Ö»þ¤Ë¾å¤«²¼¤Î³¬¤Ë¥Æ¥ì¥Ý¡¼¥È¤¹¤ë¡£";
6631 if (name) return "Teleport Level";
6632 if (desc) return "Teleport to up or down stairs in a moment.";
6639 if (!get_check("ËÜÅö¤Ë¾¤Î³¬¤Ë¥Æ¥ì¥Ý¡¼¥È¤·¤Þ¤¹¤«¡©")) return NULL;
6641 if (!get_check("Are you sure? (Teleport Level)")) return NULL;
6650 if (name) return "¥Æ¥ì¥Ý¡¼¥È¡¦¥â¥ó¥¹¥¿¡¼";
6651 if (desc) return "¥â¥ó¥¹¥¿¡¼¤ò¥Æ¥ì¥Ý¡¼¥È¤µ¤»¤ë¥Ó¡¼¥à¤òÊü¤Ä¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
6653 if (name) return "Teleport Away";
6654 if (desc) return "Teleports all monsters on the line away unless resisted.";
6660 if (info) return info_power(power);
6664 if (!get_aim_dir(&dir)) return NULL;
6666 fire_beam(GF_AWAY_ALL, dir, power);
6673 if (name) return "¸µÁǤεå";
6674 if (desc) return "±ê¡¢ÅÅ·â¡¢Î䵤¡¢»À¤Î¤É¤ì¤«¤Îµå¤òÊü¤Ä¡£";
6676 if (name) return "Elemental Ball";
6677 if (desc) return "Fires a ball of some elements.";
6681 int dam = 75 + plev;
6684 if (info) return info_damage(0, 0, dam);
6690 if (!get_aim_dir(&dir)) return NULL;
6692 switch (randint1(4))
6694 case 1: type = GF_FIRE;break;
6695 case 2: type = GF_ELEC;break;
6696 case 3: type = GF_COLD;break;
6697 default: type = GF_ACID;break;
6700 fire_ball(type, dir, dam, rad);
6707 if (name) return "Á´´¶ÃÎ";
6708 if (desc) return "¶á¤¯¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¡¢æ«¡¢Èâ¡¢³¬ÃÊ¡¢ºâÊõ¡¢¤½¤·¤Æ¥¢¥¤¥Æ¥à¤ò´¶ÃΤ¹¤ë¡£";
6710 if (name) return "Detection";
6711 if (desc) return "Detects all monsters, traps, doors, stairs, treasures and items in your vicinity.";
6715 int rad = DETECT_RAD_DEFAULT;
6717 if (info) return info_radius(rad);
6728 if (name) return "µ¢´Ô¤Î¼öʸ";
6729 if (desc) return "ÃϾå¤Ë¤¤¤ë¤È¤¤Ï¥À¥ó¥¸¥ç¥ó¤ÎºÇ¿¼³¬¤Ø¡¢¥À¥ó¥¸¥ç¥ó¤Ë¤¤¤ë¤È¤¤ÏÃϾå¤Ø¤È°ÜÆ°¤¹¤ë¡£";
6731 if (name) return "Word of Recall";
6732 if (desc) return "Recalls player from dungeon to town, or from town to the deepest level of dungeon.";
6739 if (info) return info_delay(base, sides);
6743 if (!word_of_recall()) return NULL;
6750 if (name) return "ÀéΤ´ã";
6751 if (desc) return "¤½¤Î³¬Á´ÂΤò±Êµ×¤Ë¾È¤é¤·¡¢¥À¥ó¥¸¥ç¥óÆ⤹¤Ù¤Æ¤Î¥¢¥¤¥Æ¥à¤ò´¶ÃΤ¹¤ë¡£¤µ¤é¤Ë¡¢°ìÄê»þ´Ö¥Æ¥ì¥Ñ¥·¡¼Ç½ÎϤòÆÀ¤ë¡£";
6753 if (name) return "Clairvoyance";
6754 if (desc) return "Maps and lights whole dungeon level. Knows all objects location. And gives telepathy for a while.";
6761 if (info) return info_duration(base, sides);
6765 chg_virtue(V_KNOWLEDGE, 1);
6766 chg_virtue(V_ENLIGHTEN, 1);
6770 if (!p_ptr->telepathy)
6772 set_tim_esp(randint1(sides) + base, FALSE);
6783 * @brief ¾¢ÎΰèËâË¡¤Î³Æ½èÍý¤ò¹Ô¤¦
6784 * @param spell ËâË¡ID
6785 * @param mode ½èÍýÆâÍÆ (SPELL_NAME / SPELL_DESC / SPELL_INFO / SPELL_CAST)
6786 * @return SPELL_NAME / SPELL_DESC / SPELL_INFO »þ¤Ë¤Ïʸ»úÎó¥Ý¥¤¥ó¥¿¤òÊÖ¤¹¡£SPELL_CAST»þ¤ÏNULLʸ»úÎó¤òÊÖ¤¹¡£
6788 static cptr do_craft_spell(int spell, int mode)
6790 bool name = (mode == SPELL_NAME) ? TRUE : FALSE;
6791 bool desc = (mode == SPELL_DESC) ? TRUE : FALSE;
6792 bool info = (mode == SPELL_INFO) ? TRUE : FALSE;
6793 bool cast = (mode == SPELL_CAST) ? TRUE : FALSE;
6795 int plev = p_ptr->lev;
6801 if (name) return "ÀÖ³°Àþ»ëÎÏ";
6802 if (desc) return "°ìÄê»þ´Ö¡¢ÀÖ³°Àþ»ëÎϤ¬Áý¶¯¤µ¤ì¤ë¡£";
6804 if (name) return "Infravision";
6805 if (desc) return "Gives infravision for a while.";
6811 if (info) return info_duration(base, base);
6815 set_tim_infra(base + randint1(base), FALSE);
6822 if (name) return "²óÉüÎ϶¯²½";
6823 if (desc) return "°ìÄê»þ´Ö¡¢²óÉüÎϤ¬Áý¶¯¤µ¤ì¤ë¡£";
6825 if (name) return "Regeneration";
6826 if (desc) return "Gives regeneration ability for a while.";
6832 if (info) return info_duration(base, base);
6836 set_tim_regen(base + randint1(base), FALSE);
6843 if (name) return "¶õÊ¢½¼Â";
6844 if (desc) return "ËþÊ¢¤Ë¤Ê¤ë¡£";
6846 if (name) return "Satisfy Hunger";
6847 if (desc) return "Satisfies hunger.";
6853 set_food(PY_FOOD_MAX - 1);
6860 if (name) return "ÂÑÎ䵤";
6861 if (desc) return "°ìÄê»þ´Ö¡¢Î䵤¤Ø¤ÎÂÑÀ¤òÆÀ¤ë¡£ÁõÈ÷¤Ë¤è¤ëÂÑÀ¤ËÎßÀѤ¹¤ë¡£";
6863 if (name) return "Resist Cold";
6864 if (desc) return "Gives resistance to cold. This resistance can be added to which from equipment for more powerful resistance.";
6870 if (info) return info_duration(base, base);
6874 set_oppose_cold(randint1(base) + base, FALSE);
6881 if (name) return "ÂѲбê";
6882 if (desc) return "°ìÄê»þ´Ö¡¢±ê¤Ø¤ÎÂÑÀ¤òÆÀ¤ë¡£ÁõÈ÷¤Ë¤è¤ëÂÑÀ¤ËÎßÀѤ¹¤ë¡£";
6884 if (name) return "Resist Fire";
6885 if (desc) return "Gives resistance to fire. This resistance can be added to which from equipment for more powerful resistance.";
6891 if (info) return info_duration(base, base);
6895 set_oppose_fire(randint1(base) + base, FALSE);
6902 if (name) return "»Îµ¤¹âÍÈ";
6903 if (desc) return "°ìÄê»þ´Ö¡¢¥Ò¡¼¥í¡¼µ¤Ê¬¤Ë¤Ê¤ë¡£";
6905 if (name) return "Heroism";
6906 if (desc) return "Removes fear, and gives bonus to hit and 10 more HP for a while.";
6912 if (info) return info_duration(base, base);
6916 set_hero(randint1(base) + base, FALSE);
6925 if (name) return "ÂÑÅÅ·â";
6926 if (desc) return "°ìÄê»þ´Ö¡¢ÅÅ·â¤Ø¤ÎÂÑÀ¤òÆÀ¤ë¡£ÁõÈ÷¤Ë¤è¤ëÂÑÀ¤ËÎßÀѤ¹¤ë¡£";
6928 if (name) return "Resist Lightning";
6929 if (desc) return "Gives resistance to electricity. This resistance can be added to which from equipment for more powerful resistance.";
6935 if (info) return info_duration(base, base);
6939 set_oppose_elec(randint1(base) + base, FALSE);
6946 if (name) return "ÂÑ»À";
6947 if (desc) return "°ìÄê»þ´Ö¡¢»À¤Ø¤ÎÂÑÀ¤òÆÀ¤ë¡£ÁõÈ÷¤Ë¤è¤ëÂÑÀ¤ËÎßÀѤ¹¤ë¡£";
6949 if (name) return "Resist Acid";
6950 if (desc) return "Gives resistance to acid. This resistance can be added to which from equipment for more powerful resistance.";
6956 if (info) return info_duration(base, base);
6960 set_oppose_acid(randint1(base) + base, FALSE);
6967 if (name) return "Æ©ÌÀ»ëǧ";
6968 if (desc) return "°ìÄê»þ´Ö¡¢Æ©ÌÀ¤Ê¤â¤Î¤¬¸«¤¨¤ë¤è¤¦¤Ë¤Ê¤ë¡£";
6970 if (name) return "See Invisibility";
6971 if (desc) return "Gives see invisible for a while.";
6977 if (info) return info_duration(base, base);
6981 set_tim_invis(randint1(base) + base, FALSE);
6988 if (name) return "²ò¼ö";
6989 if (desc) return "¥¢¥¤¥Æ¥à¤Ë¤«¤«¤Ã¤¿¼å¤¤¼ö¤¤¤ò²ò½ü¤¹¤ë¡£";
6991 if (name) return "Remove Curse";
6992 if (desc) return "Removes normal curses from equipped items.";
7001 msg_print("狼¤Ë¸«¼é¤é¤ì¤Æ¤¤¤ë¤è¤¦¤Êµ¤¤¬¤¹¤ë¡£");
7003 msg_print("You feel as if someone is watching over you.");
7012 if (name) return "ÂÑÆÇ";
7013 if (desc) return "°ìÄê»þ´Ö¡¢ÆǤؤÎÂÑÀ¤òÆÀ¤ë¡£ÁõÈ÷¤Ë¤è¤ëÂÑÀ¤ËÎßÀѤ¹¤ë¡£";
7015 if (name) return "Resist Poison";
7016 if (desc) return "Gives resistance to poison. This resistance can be added to which from equipment for more powerful resistance.";
7022 if (info) return info_duration(base, base);
7026 set_oppose_pois(randint1(base) + base, FALSE);
7033 if (name) return "¶¸Àï»Î²½";
7034 if (desc) return "¶¸Àï»Î²½¤·¡¢¶²Éݤò½üµî¤¹¤ë¡£";
7036 if (name) return "Berserk";
7037 if (desc) return "Gives bonus to hit and HP, immunity to fear for a while. But decreases AC.";
7043 if (info) return info_duration(base, base);
7047 set_shero(randint1(base) + base, FALSE);
7056 if (name) return "¼«¸ÊʬÀÏ";
7057 if (desc) return "¸½ºß¤Î¼«Ê¬¤Î¾õÂÖ¤ò´°Á´¤ËÃΤ롣";
7059 if (name) return "Self Knowledge";
7060 if (desc) return "Gives you useful info regarding your current resistances, the powers of your weapon and maximum limits of your stats.";
7073 if (name) return "Âмٰ·ë³¦";
7074 if (desc) return "¼Ù°¤Ê¥â¥ó¥¹¥¿¡¼¤Î¹¶·â¤òËɤ°¥Ð¥ê¥¢¤òÄ¥¤ë¡£";
7076 if (name) return "Protection from Evil";
7077 if (desc) return "Gives aura which protect you from evil monster's physical attack.";
7081 int base = 3 * plev;
7084 if (info) return info_duration(base, sides);
7088 set_protevil(randint1(sides) + base, FALSE);
7095 if (name) return "Ìþ¤·";
7096 if (desc) return "ÆÇ¡¢Û¯Û°¾õÂÖ¡¢Éé½ý¤òÁ´²÷¤µ¤»¡¢¸¸³Ð¤òľ¤¹¡£";
7098 if (name) return "Cure";
7099 if (desc) return "Heals poison, stun, cut and hallucination completely.";
7115 if (name) return "ËâË¡·õ";
7116 if (desc) return "°ìÄê»þ´Ö¡¢Éð´ï¤ËÎ䵤¡¢±ê¡¢ÅÅ·â¡¢»À¡¢ÆǤΤ¤¤º¤ì¤«¤Î°À¤ò¤Ä¤±¤ë¡£Éð´ï¤ò»ý¤¿¤Ê¤¤¤È»È¤¨¤Ê¤¤¡£";
7118 if (name) return "Mana Branding";
7119 if (desc) return "Makes current weapon some elemental branded. You must wield weapons.";
7123 int base = plev / 2;
7125 if (info) return info_duration(base, base);
7129 if (!choose_ele_attack()) return NULL;
7136 if (name) return "¥Æ¥ì¥Ñ¥·¡¼";
7137 if (desc) return "°ìÄê»þ´Ö¡¢¥Æ¥ì¥Ñ¥·¡¼Ç½ÎϤòÆÀ¤ë¡£";
7139 if (name) return "Telepathy";
7140 if (desc) return "Gives telepathy for a while.";
7147 if (info) return info_duration(base, sides);
7151 set_tim_esp(randint1(sides) + base, FALSE);
7158 if (name) return "È©Àв½";
7159 if (desc) return "°ìÄê»þ´Ö¡¢AC¤ò¾å¾º¤µ¤»¤ë¡£";
7161 if (name) return "Stone Skin";
7162 if (desc) return "Gives bonus to AC for a while.";
7169 if (info) return info_duration(base, sides);
7173 set_shield(randint1(sides) + base, FALSE);
7180 if (name) return "Á´ÂÑÀ";
7181 if (desc) return "°ìÄê»þ´Ö¡¢»À¡¢ÅÅ·â¡¢±ê¡¢Î䵤¡¢ÆǤËÂФ¹¤ëÂÑÀ¤òÆÀ¤ë¡£ÁõÈ÷¤Ë¤è¤ëÂÑÀ¤ËÎßÀѤ¹¤ë¡£";
7183 if (name) return "Resistance";
7184 if (desc) return "Gives resistance to fire, cold, electricity, acid and poison for a while. These resistances can be added to which from equipment for more powerful resistances.";
7190 if (info) return info_duration(base, base);
7194 set_oppose_acid(randint1(base) + base, FALSE);
7195 set_oppose_elec(randint1(base) + base, FALSE);
7196 set_oppose_fire(randint1(base) + base, FALSE);
7197 set_oppose_cold(randint1(base) + base, FALSE);
7198 set_oppose_pois(randint1(base) + base, FALSE);
7205 if (name) return "¥¹¥Ô¡¼¥É";
7206 if (desc) return "°ìÄê»þ´Ö¡¢²Ã®¤¹¤ë¡£";
7208 if (name) return "Haste Self";
7209 if (desc) return "Hastes you for a while.";
7214 int sides = 20 + plev;
7216 if (info) return info_duration(base, sides);
7220 set_fast(randint1(sides) + base, FALSE);
7227 if (name) return "ÊÉÈ´¤±";
7228 if (desc) return "°ìÄê»þ´Ö¡¢È¾Êª¼Á²½¤·ÊɤòÄ̤êÈ´¤±¤é¤ì¤ë¤è¤¦¤Ë¤Ê¤ë¡£";
7230 if (name) return "Walk through Wall";
7231 if (desc) return "Gives ability to pass walls for a while.";
7235 int base = plev / 2;
7237 if (info) return info_duration(base, base);
7241 set_kabenuke(randint1(base) + base, FALSE);
7248 if (name) return "½âËá¤";
7249 if (desc) return "½â¤ËÈ¿¼Í¤Î°À¤ò¤Ä¤±¤ë¡£";
7251 if (name) return "Polish Shield";
7252 if (desc) return "Makes a shield a shield of reflection.";
7265 if (name) return "¥´¡¼¥ì¥àÀ½Â¤";
7266 if (desc) return "1ÂΤΥ´¡¼¥ì¥à¤òÀ½Â¤¤¹¤ë¡£";
7268 if (name) return "Create Golem";
7269 if (desc) return "Creates a golem.";
7275 if (summon_specific(-1, py, px, plev, SUMMON_GOLEM, PM_FORCE_PET))
7278 msg_print("¥´¡¼¥ì¥à¤òºî¤Ã¤¿¡£");
7280 msg_print("You make a golem.");
7286 msg_print("¤¦¤Þ¤¯¥´¡¼¥ì¥à¤òºî¤ì¤Ê¤«¤Ã¤¿¡£");
7288 msg_print("No Golems arrive.");
7297 if (name) return "ËâË¡¤Î³»";
7298 if (desc) return "°ìÄê»þ´Ö¡¢ËâË¡ËɸæÎϤÈAC¤¬¾å¤¬¤ê¡¢º®Íð¤ÈÌÕÌܤÎÂÑÀ¡¢È¿¼ÍǽÎÏ¡¢ËãáãÃΤ餺¡¢ÉâÍ·¤òÆÀ¤ë¡£";
7300 if (name) return "Magical armor";
7301 if (desc) return "Gives resistance to magic, bonus to AC, resistance to confusion, blindness, reflection, free action and levitation for a while.";
7307 if (info) return info_duration(base, base);
7311 set_magicdef(randint1(base) + base, FALSE);
7318 if (name) return "ÁõÈ÷̵Îϲ½";
7319 if (desc) return "Éð´ï¡¦Ëɶñ¤Ë¤«¤±¤é¤ì¤¿¤¢¤é¤æ¤ëËâÎϤò´°Á´¤Ë²ò½ü¤¹¤ë¡£";
7321 if (name) return "Remove Enchantment";
7322 if (desc) return "Removes all magics completely from any weapon or armor.";
7328 if (!mundane_spell(TRUE)) return NULL;
7335 if (name) return "¼ö¤¤Ê´ºÕ";
7336 if (desc) return "¥¢¥¤¥Æ¥à¤Ë¤«¤«¤Ã¤¿¶¯ÎϤʼö¤¤¤ò²ò½ü¤¹¤ë¡£";
7338 if (name) return "Remove All Curse";
7339 if (desc) return "Removes normal and heavy curse from equipped items.";
7345 if (remove_all_curse())
7348 msg_print("狼¤Ë¸«¼é¤é¤ì¤Æ¤¤¤ë¤è¤¦¤Êµ¤¤¬¤¹¤ë¡£");
7350 msg_print("You feel as if someone is watching over you.");
7359 if (name) return "´°Á´¤Ê¤ëÃμ±";
7360 if (desc) return "¥¢¥¤¥Æ¥à¤Î»ý¤ÄǽÎϤò´°Á´¤ËÃΤ롣";
7362 if (name) return "Knowledge True";
7363 if (desc) return "*Identifies* an item.";
7369 if (!identify_fully(FALSE)) return NULL;
7376 if (name) return "Éð´ï¶¯²½";
7377 if (desc) return "Éð´ï¤ÎÌ¿ÃæΨ½¤Àµ¤È¥À¥á¡¼¥¸½¤Àµ¤ò¶¯²½¤¹¤ë¡£";
7379 if (name) return "Enchant Weapon";
7380 if (desc) return "Attempts to increase +to-hit, +to-dam of a weapon.";
7386 if (!enchant_spell(randint0(4) + 1, randint0(4) + 1, 0)) return NULL;
7393 if (name) return "Ëɶñ¶¯²½";
7394 if (desc) return "³»¤ÎËɸ潤Àµ¤ò¶¯²½¤¹¤ë¡£";
7396 if (name) return "Enchant Armor";
7397 if (desc) return "Attempts to increase +AC of an armor.";
7403 if (!enchant_spell(0, 0, randint0(3) + 2)) return NULL;
7410 if (name) return "Éð´ï°ÀÉÕÍ¿";
7411 if (desc) return "Éð´ï¤Ë¥é¥ó¥À¥à¤Ë°À¤ò¤Ä¤±¤ë¡£";
7413 if (name) return "Brand Weapon";
7414 if (desc) return "Makes current weapon a random ego weapon.";
7420 brand_weapon(randint0(18));
7427 if (name) return "¿Í´Ö¥È¥é¥ó¥×";
7428 if (desc) return "¥é¥ó¥À¥à¤Ë¥Æ¥ì¥Ý¡¼¥È¤¹¤ëÆÍÁ³ÊÑ°Û¤«¡¢¼«Ê¬¤Î°Õ»×¤Ç¥Æ¥ì¥Ý¡¼¥È¤¹¤ëÆÍÁ³ÊÑ°Û¤¬¿È¤Ë¤Ä¤¯¡£";
7430 if (name) return "Living Trump";
7431 if (desc) return "Gives mutation which makes you teleport randomly or makes you able to teleport at will.";
7440 /* Teleport control */
7443 /* Random teleportation (uncontrolled) */
7446 /* Gain the mutation */
7447 if (gain_random_mutation(mutation))
7450 msg_print("¤¢¤Ê¤¿¤ÏÀ¸¤¤Æ¤¤¤ë¥«¡¼¥É¤ËÊѤï¤Ã¤¿¡£");
7452 msg_print("You have turned into a Living Trump.");
7461 if (name) return "°À¤Ø¤ÎÌȱÖ";
7462 if (desc) return "°ìÄê»þ´Ö¡¢Î䵤¡¢±ê¡¢ÅÅ·â¡¢»À¤Î¤¤¤º¤ì¤«¤ËÂФ¹¤ëÌȱ֤òÆÀ¤ë¡£";
7464 if (name) return "Immunity";
7465 if (desc) return "Gives an immunity to fire, cold, electricity or acid for a while.";
7471 if (info) return info_duration(base, base);
7475 if (!choose_ele_immune(base + randint1(base))) return NULL;
7485 * @brief °ËâÎΰèËâË¡¤Î³Æ½èÍý¤ò¹Ô¤¦
7486 * @param spell ËâË¡ID
7487 * @param mode ½èÍýÆâÍÆ (SPELL_NAME / SPELL_DESC / SPELL_INFO / SPELL_CAST)
7488 * @return SPELL_NAME / SPELL_DESC / SPELL_INFO »þ¤Ë¤Ïʸ»úÎó¥Ý¥¤¥ó¥¿¤òÊÖ¤¹¡£SPELL_CAST»þ¤ÏNULLʸ»úÎó¤òÊÖ¤¹¡£
7490 static cptr do_daemon_spell(int spell, int mode)
7492 bool name = (mode == SPELL_NAME) ? TRUE : FALSE;
7493 bool desc = (mode == SPELL_DESC) ? TRUE : FALSE;
7494 bool info = (mode == SPELL_INFO) ? TRUE : FALSE;
7495 bool cast = (mode == SPELL_CAST) ? TRUE : FALSE;
7498 static const char s_dam[] = "»½ý:";
7500 static const char s_dam[] = "dam ";
7504 int plev = p_ptr->lev;
7510 if (name) return "¥Þ¥¸¥Ã¥¯¡¦¥ß¥µ¥¤¥ë";
7511 if (desc) return "¼å¤¤ËâË¡¤ÎÌð¤òÊü¤Ä¡£";
7513 if (name) return "Magic Missile";
7514 if (desc) return "Fires a weak bolt of magic.";
7518 int dice = 3 + (plev - 1) / 5;
7521 if (info) return info_damage(dice, sides, 0);
7525 if (!get_aim_dir(&dir)) return NULL;
7527 fire_bolt_or_beam(beam_chance() - 10, GF_MISSILE, dir, damroll(dice, sides));
7534 if (name) return "̵À¸Ì¿´¶ÃÎ";
7535 if (desc) return "¶á¤¯¤ÎÀ¸Ì¿¤Î¤Ê¤¤¥â¥ó¥¹¥¿¡¼¤ò´¶ÃΤ¹¤ë¡£";
7537 if (name) return "Detect Unlife";
7538 if (desc) return "Detects all nonliving monsters in your vicinity.";
7542 int rad = DETECT_RAD_DEFAULT;
7544 if (info) return info_radius(rad);
7548 detect_monsters_nonliving(rad);
7555 if (name) return "¼Ù¤Ê¤ë½ËÊ¡";
7556 if (desc) return "°ìÄê»þ´Ö¡¢Ì¿ÃæΨ¤ÈAC¤Ë¥Ü¡¼¥Ê¥¹¤òÆÀ¤ë¡£";
7558 if (name) return "Evil Bless";
7559 if (desc) return "Gives bonus to hit and AC for a few turns.";
7565 if (info) return info_duration(base, base);
7569 set_blessed(randint1(base) + base, FALSE);
7576 if (name) return "ÂѲбê";
7577 if (desc) return "°ìÄê»þ´Ö¡¢±ê¤Ø¤ÎÂÑÀ¤òÆÀ¤ë¡£ÁõÈ÷¤Ë¤è¤ëÂÑÀ¤ËÎßÀѤ¹¤ë¡£";
7579 if (name) return "Resist Fire";
7580 if (desc) return "Gives resistance to fire, cold and electricity for a while. These resistances can be added to which from equipment for more powerful resistances.";
7586 if (info) return info_duration(base, base);
7590 set_oppose_fire(randint1(base) + base, FALSE);
7597 if (name) return "¶²¹²";
7598 if (desc) return "¥â¥ó¥¹¥¿¡¼1ÂΤò¶²Éݤµ¤»¡¢Û¯Û°¤µ¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
7600 if (name) return "Horrify";
7601 if (desc) return "Attempts to scare and stun a monster.";
7607 if (info) return info_power(power);
7611 if (!get_aim_dir(&dir)) return NULL;
7613 fear_monster(dir, power);
7614 stun_monster(dir, power);
7621 if (name) return "ÃϹö¤ÎÌð";
7622 if (desc) return "ÃϹö¤Î¥Ü¥ë¥È¤â¤·¤¯¤Ï¥Ó¡¼¥à¤òÊü¤Ä¡£";
7624 if (name) return "Nether Bolt";
7625 if (desc) return "Fires a bolt or beam of nether.";
7629 int dice = 6 + (plev - 5) / 4;
7632 if (info) return info_damage(dice, sides, 0);
7636 if (!get_aim_dir(&dir)) return NULL;
7638 fire_bolt_or_beam(beam_chance(), GF_NETHER, dir, damroll(dice, sides));
7645 if (name) return "¸ÅÂå¤Î»àÎ´";
7646 if (desc) return "¸ÅÂå¤Î»àÎî¤ò¾¤´¤¹¤ë¡£";
7648 if (name) return "Summon Manes";
7649 if (desc) return "Summons a manes.";
7655 if (!summon_specific(-1, py, px, (plev * 3) / 2, SUMMON_MANES, (PM_ALLOW_GROUP | PM_FORCE_PET)))
7658 msg_print("¸ÅÂå¤Î»àÎî¤Ï¸½¤ì¤Ê¤«¤Ã¤¿¡£");
7660 msg_print("No Manes arrive.");
7669 if (name) return "ÃϹö¤Î±ë";
7670 if (desc) return "¼Ù°¤ÊÎϤò»ý¤Ä¥Ü¡¼¥ë¤òÊü¤Ä¡£Á±Îɤʥâ¥ó¥¹¥¿¡¼¤Ë¤ÏÂ礤ʥÀ¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£";
7672 if (name) return "Hellish Flame";
7673 if (desc) return "Fires a ball of evil power. Hurts good monsters greatly.";
7679 int rad = (plev < 30) ? 2 : 3;
7682 if (p_ptr->pclass == CLASS_MAGE ||
7683 p_ptr->pclass == CLASS_HIGH_MAGE ||
7684 p_ptr->pclass == CLASS_SORCERER)
7685 base = plev + plev / 2;
7687 base = plev + plev / 4;
7690 if (info) return info_damage(dice, sides, base);
7694 if (!get_aim_dir(&dir)) return NULL;
7696 fire_ball(GF_HELL_FIRE, dir, damroll(dice, sides) + base, rad);
7703 if (name) return "¥Ç¡¼¥â¥ó»ÙÇÛ";
7704 if (desc) return "°Ëâ1ÂΤò̥λ¤¹¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú";
7706 if (name) return "Dominate Demon";
7707 if (desc) return "Attempts to charm a demon.";
7713 if (info) return info_power(power);
7717 if (!get_aim_dir(&dir)) return NULL;
7719 control_one_demon(dir, power);
7726 if (name) return "¥Ó¥¸¥ç¥ó";
7727 if (desc) return "¼þÊÕ¤ÎÃÏ·Á¤ò´¶ÃΤ¹¤ë¡£";
7729 if (name) return "Vision";
7730 if (desc) return "Maps nearby area.";
7734 int rad = DETECT_RAD_MAP;
7736 if (info) return info_radius(rad);
7747 if (name) return "ÂÑÃϹö";
7748 if (desc) return "°ìÄê»þ´Ö¡¢ÃϹö¤Ø¤ÎÂÑÀ¤òÆÀ¤ë¡£";
7750 if (name) return "Resist Nether";
7751 if (desc) return "Gives resistance to nether for a while.";
7757 if (info) return info_duration(base, base);
7761 set_tim_res_nether(randint1(base) + base, FALSE);
7768 if (name) return "¥×¥é¥º¥Þ¡¦¥Ü¥ë¥È";
7769 if (desc) return "¥×¥é¥º¥Þ¤Î¥Ü¥ë¥È¤â¤·¤¯¤Ï¥Ó¡¼¥à¤òÊü¤Ä¡£";
7771 if (name) return "Plasma bolt";
7772 if (desc) return "Fires a bolt or beam of plasma.";
7776 int dice = 11 + (plev - 5) / 4;
7779 if (info) return info_damage(dice, sides, 0);
7783 if (!get_aim_dir(&dir)) return NULL;
7785 fire_bolt_or_beam(beam_chance(), GF_PLASMA, dir, damroll(dice, sides));
7792 if (name) return "¥Õ¥¡¥¤¥¢¡¦¥Ü¡¼¥ë";
7793 if (desc) return "±ê¤Îµå¤òÊü¤Ä¡£";
7795 if (name) return "Fire Ball";
7796 if (desc) return "Fires a ball of fire.";
7800 int dam = plev + 55;
7803 if (info) return info_damage(0, 0, dam);
7807 if (!get_aim_dir(&dir)) return NULL;
7809 fire_ball(GF_FIRE, dir, dam, rad);
7816 if (name) return "±ê¤Î¿Ï";
7817 if (desc) return "Éð´ï¤Ë±ê¤Î°À¤ò¤Ä¤±¤ë¡£";
7819 if (name) return "Fire Branding";
7820 if (desc) return "Makes current weapon fire branded.";
7833 if (name) return "ÃϹöµå";
7834 if (desc) return "Â礤ÊÃϹö¤Îµå¤òÊü¤Ä¡£";
7836 if (name) return "Nether Ball";
7837 if (desc) return "Fires a huge ball of nether.";
7841 int dam = plev * 3 / 2 + 100;
7842 int rad = plev / 20 + 2;
7844 if (info) return info_damage(0, 0, dam);
7848 if (!get_aim_dir(&dir)) return NULL;
7850 fire_ball(GF_NETHER, dir, dam, rad);
7857 if (name) return "¥Ç¡¼¥â¥ó¾¤´";
7858 if (desc) return "°Ëâ1ÂΤò¾¤´¤¹¤ë¡£";
7860 if (name) return "Summon Demon";
7861 if (desc) return "Summons a demon.";
7867 bool pet = !one_in_(3);
7870 if (pet) mode |= PM_FORCE_PET;
7871 else mode |= PM_NO_PET;
7872 if (!(pet && (plev < 50))) mode |= PM_ALLOW_GROUP;
7874 if (summon_specific((pet ? -1 : 0), py, px, plev*2/3+randint1(plev/2), SUMMON_DEMON, mode))
7877 msg_print("ⲫ¤Î°½¤¬½¼Ëþ¤·¤¿¡£");
7879 msg_print("The area fills with a stench of sulphur and brimstone.");
7886 msg_print("¡Ö¤´ÍѤǤ´¤¶¤¤¤Þ¤¹¤«¡¢¤´¼ç¿ÍÍÍ¡×");
7888 msg_print("'What is thy bidding... Master?'");
7894 msg_print("¡ÖÈܤ·¤¼Ô¤è¡¢²æ¤ÏÆò¤Î²¼Ëͤˤ¢¤é¤º¡ª ¤ªÁ°¤Îº²¤òĺ¤¯¤¾¡ª¡×");
7896 msg_print("'NON SERVIAM! Wretch! I shall feast on thy mortal soul!'");
7903 msg_print("°Ëâ¤Ï¸½¤ì¤Ê¤«¤Ã¤¿¡£");
7905 msg_print("No demons arrive.");
7915 if (name) return "°Ëâ¤ÎÌÜ";
7916 if (desc) return "°ìÄê»þ´Ö¡¢¥Æ¥ì¥Ñ¥·¡¼Ç½ÎϤòÆÀ¤ë¡£";
7918 if (name) return "Devilish Eye";
7919 if (desc) return "Gives telepathy for a while.";
7926 if (info) return info_duration(base, sides);
7930 set_tim_esp(randint1(base) + sides, FALSE);
7937 if (name) return "°Ëâ¤Î¥¯¥í¡¼¥¯";
7938 if (desc) return "¶²Éݤò¼è¤ê½ü¤¡¢°ìÄê»þ´Ö¡¢±ê¤ÈÎ䵤¤ÎÂÑÀ¡¢±ê¤Î¥ª¡¼¥é¤òÆÀ¤ë¡£ÂÑÀ¤ÏÁõÈ÷¤Ë¤è¤ëÂÑÀ¤ËÎßÀѤ¹¤ë¡£";
7940 if (name) return "Devil Cloak";
7941 if (desc) return "Removes fear. Gives resistance to fire and cold, and aura of fire. These resistances can be added to which from equipment for more powerful resistances.";
7947 if (info) return info_duration(base, base);
7951 int dur = randint1(base) + base;
7953 set_oppose_fire(dur, FALSE);
7954 set_oppose_cold(dur, FALSE);
7955 set_tim_sh_fire(dur, FALSE);
7964 if (name) return "ÍÏ´äή";
7965 if (desc) return "¼«Ê¬¤òÃæ¿´¤È¤·¤¿±ê¤Îµå¤òºî¤ê½Ð¤·¡¢¾²¤òÍÏ´ä¤ËÊѤ¨¤ë¡£";
7967 if (name) return "The Flow of Lava";
7968 if (desc) return "Generates a ball of fire centered on you which transforms floors to magma.";
7972 int dam = (55 + plev) * 2;
7975 if (info) return info_damage(0, 0, dam/2);
7979 fire_ball(GF_FIRE, 0, dam, rad);
7980 fire_ball_hide(GF_LAVA_FLOW, 0, 2 + randint1(2), rad);
7987 if (name) return "¥×¥é¥º¥Þµå";
7988 if (desc) return "¥×¥é¥º¥Þ¤Îµå¤òÊü¤Ä¡£";
7990 if (name) return "Plasma Ball";
7991 if (desc) return "Fires a ball of plasma.";
7995 int dam = plev * 3 / 2 + 80;
7996 int rad = 2 + plev / 40;
7998 if (info) return info_damage(0, 0, dam);
8002 if (!get_aim_dir(&dir)) return NULL;
8004 fire_ball(GF_PLASMA, dir, dam, rad);
8011 if (name) return "°ËâÊѲ½";
8012 if (desc) return "°ìÄê»þ´Ö¡¢°Ëâ¤ËÊѲ½¤¹¤ë¡£ÊѲ½¤·¤Æ¤¤¤ë´Ö¤ÏËÜÍè¤Î¼ï²¤ÎǽÎϤò¼º¤¤¡¢Âå¤ï¤ê¤Ë°Ëâ¤È¤·¤Æ¤ÎǽÎϤòÆÀ¤ë¡£";
8014 if (name) return "Polymorph Demon";
8015 if (desc) return "Mimic a demon for a while. Loses abilities of original race and gets abilities as a demon.";
8019 int base = 10 + plev / 2;
8021 if (info) return info_duration(base, base);
8025 set_mimic(base + randint1(base), MIMIC_DEMON, FALSE);
8032 if (name) return "ÃϹö¤ÎÇÈÆ°";
8033 if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤Ë¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£Á±Îɤʥâ¥ó¥¹¥¿¡¼¤ËÆäËÂ礤ʥÀ¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£";
8035 if (name) return "Nather Wave";
8036 if (desc) return "Damages all monsters in sight. Hurts good monsters greatly.";
8040 int sides1 = plev * 2;
8041 int sides2 = plev * 2;
8043 if (info) return format("%sd%d+d%d", s_dam, sides1, sides2);
8047 dispel_monsters(randint1(sides1));
8048 dispel_good(randint1(sides2));
8055 if (name) return "¥µ¥¥å¥Ð¥¹¤ÎÀÜÊ";
8056 if (desc) return "°ø²Ìº®Íð¤Îµå¤òÊü¤Ä¡£";
8058 if (name) return "Kiss of Succubus";
8059 if (desc) return "Fires a ball of nexus.";
8063 int dam = 100 + plev * 2;
8066 if (info) return info_damage(0, 0, dam);
8070 if (!get_aim_dir(&dir)) return NULL;
8071 fire_ball(GF_NEXUS, dir, dam, rad);
8078 if (name) return "ÇËÌǤμê";
8079 if (desc) return "ÇËÌǤμê¤òÊü¤Ä¡£¿©¤é¤Ã¤¿¥â¥ó¥¹¥¿¡¼¤Ï¤½¤Î¤È¤¤ÎHP¤ÎȾʬÁ°¸å¤Î¥À¥á¡¼¥¸¤ò¼õ¤±¤ë¡£";
8081 if (name) return "Doom Hand";
8082 if (desc) return "Attempts to make a monster's HP almost half.";
8088 if (!get_aim_dir(&dir)) return NULL;
8090 else msg_print("<ÇËÌǤμê>¤òÊü¤Ã¤¿¡ª");
8092 else msg_print("You invoke the Hand of Doom!");
8095 fire_ball_hide(GF_HAND_DOOM, dir, plev * 2, 0);
8102 if (name) return "»Îµ¤¹âÍÈ";
8103 if (desc) return "°ìÄê»þ´Ö¡¢¥Ò¡¼¥í¡¼µ¤Ê¬¤Ë¤Ê¤ë¡£";
8105 if (name) return "Raise the Morale";
8106 if (desc) return "Removes fear, and gives bonus to hit and 10 more HP for a while.";
8112 if (info) return info_duration(base, base);
8116 set_hero(randint1(base) + base, FALSE);
8125 if (name) return "ÉÔÌǤÎÆùÂÎ";
8126 if (desc) return "°ìÄê»þ´Ö¡¢»þ´ÖµÕž¤Ø¤ÎÂÑÀ¤òÆÀ¤ë¡£";
8128 if (name) return "Immortal Body";
8129 if (desc) return "Gives resistance to time for a while.";
8135 if (info) return info_duration(base, base);
8139 set_tim_res_time(randint1(base)+base, FALSE);
8146 if (name) return "¶¸µ¤¤Î±ß´Ä";
8147 if (desc) return "¼«Ê¬¤òÃæ¿´¤È¤·¤¿¥«¥ª¥¹¤Îµå¡¢º®Íð¤Îµå¤òȯÀ¸¤µ¤»¡¢¶á¤¯¤Î¥â¥ó¥¹¥¿¡¼¤ò̥λ¤¹¤ë¡£";
8149 if (name) return "Insanity Circle";
8150 if (desc) return "Generate balls of chaos, confusion and charm centered on you.";
8154 int dam = 50 + plev;
8155 int power = 20 + plev;
8156 int rad = 3 + plev / 20;
8158 if (info) return format("%s%d+%d", s_dam, dam/2, dam/2);
8162 fire_ball(GF_CHAOS, 0, dam, rad);
8163 fire_ball(GF_CONFUSION, 0, dam, rad);
8164 fire_ball(GF_CHARM, 0, power, rad);
8171 if (name) return "¥Ú¥Ã¥ÈÇúÇË";
8172 if (desc) return "Á´¤Æ¤Î¥Ú¥Ã¥È¤ò¶¯À©Åª¤ËÇúÇˤµ¤»¤ë¡£";
8174 if (name) return "Explode Pets";
8175 if (desc) return "Makes all pets explode.";
8188 if (name) return "¥°¥ì¡¼¥¿¡¼¥Ç¡¼¥â¥ó¾¤´";
8189 if (desc) return "¾åµé¥Ç¡¼¥â¥ó¤ò¾¤´¤¹¤ë¡£¾¤´¤¹¤ë¤Ë¤Ï¿Í´Ö('p','h','t'¤Çɽ¤µ¤ì¤ë¥â¥ó¥¹¥¿¡¼)¤Î»àÂΤòÊû¤²¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£";
8191 if (name) return "Summon Greater Demon";
8192 if (desc) return "Summons greater demon. It need to sacrifice a corpse of human ('p','h' or 't').";
8198 if (!cast_summon_greater_demon()) return NULL;
8205 if (name) return "ÃϹöÍò";
8206 if (desc) return "ĶµðÂç¤ÊÃϹö¤Îµå¤òÊü¤Ä¡£";
8208 if (name) return "Nether Storm";
8209 if (desc) return "Generate a huge ball of nether.";
8213 int dam = plev * 15;
8216 if (info) return info_damage(0, 0, dam);
8220 if (!get_aim_dir(&dir)) return NULL;
8222 fire_ball(GF_NETHER, dir, dam, rad);
8229 if (name) return "·ì¤Î¼ö¤¤";
8230 if (desc) return "¼«Ê¬¤¬¥À¥á¡¼¥¸¤ò¼õ¤±¤ë¤³¤È¤Ë¤è¤Ã¤ÆÂоݤ˼ö¤¤¤ò¤«¤±¡¢¥À¥á¡¼¥¸¤òÍ¿¤¨ÍÍ¡¹¤Ê¸ú²Ì¤ò°ú¤µ¯¤³¤¹¡£";
8232 if (name) return "Bloody Curse";
8233 if (desc) return "Puts blood curse which damages and causes various effects on a monster. You also take damage.";
8240 if (info) return info_damage(0, 0, dam);
8244 if (!get_aim_dir(&dir)) return NULL;
8246 fire_ball_hide(GF_BLOOD_CURSE, dir, dam, rad);
8248 take_hit(DAMAGE_USELIFE, 20 + randint1(30), "·ì¤Î¼ö¤¤", -1);
8250 take_hit(DAMAGE_USELIFE, 20 + randint1(30), "Blood curse", -1);
8258 if (name) return "ËⲦÊѲ½";
8259 if (desc) return "°Ëâ¤Î²¦¤ËÊѲ½¤¹¤ë¡£ÊѲ½¤·¤Æ¤¤¤ë´Ö¤ÏËÜÍè¤Î¼ï²¤ÎǽÎϤò¼º¤¤¡¢Âå¤ï¤ê¤Ë°Ëâ¤Î²¦¤È¤·¤Æ¤ÎǽÎϤòÆÀ¡¢ÊɤòÇ˲õ¤·¤Ê¤¬¤éÊ⤯¡£";
8261 if (name) return "Polymorph Demonlord";
8262 if (desc) return "Mimic a demon lord for a while. Loses abilities of original race and gets great abilities as a demon lord. Even hard walls can't stop your walking.";
8268 if (info) return info_duration(base, base);
8272 set_mimic(base + randint1(base), MIMIC_DEMON_LORD, FALSE);
8282 * @brief Ç˼ÙÎΰèËâË¡¤Î³Æ½èÍý¤ò¹Ô¤¦
8283 * @param spell ËâË¡ID
8284 * @param mode ½èÍýÆâÍÆ (SPELL_NAME / SPELL_DESC / SPELL_INFO / SPELL_CAST)
8285 * @return SPELL_NAME / SPELL_DESC / SPELL_INFO »þ¤Ë¤Ïʸ»úÎó¥Ý¥¤¥ó¥¿¤òÊÖ¤¹¡£SPELL_CAST»þ¤ÏNULLʸ»úÎó¤òÊÖ¤¹¡£
8287 static cptr do_crusade_spell(int spell, int mode)
8289 bool name = (mode == SPELL_NAME) ? TRUE : FALSE;
8290 bool desc = (mode == SPELL_DESC) ? TRUE : FALSE;
8291 bool info = (mode == SPELL_INFO) ? TRUE : FALSE;
8292 bool cast = (mode == SPELL_CAST) ? TRUE : FALSE;
8295 int plev = p_ptr->lev;
8301 if (name) return "Ĩȳ";
8302 if (desc) return "ÅÅ·â¤Î¥Ü¥ë¥È¤â¤·¤¯¤Ï¥Ó¡¼¥à¤òÊü¤Ä¡£";
8304 if (name) return "Punishment";
8305 if (desc) return "Fires a bolt or beam of lightning.";
8309 int dice = 3 + (plev - 1) / 5;
8312 if (info) return info_damage(dice, sides, 0);
8316 if (!get_aim_dir(&dir)) return NULL;
8318 fire_bolt_or_beam(beam_chance() - 10, GF_ELEC, dir, damroll(dice, sides));
8325 if (name) return "¼Ù°Â¸ºß´¶ÃÎ";
8326 if (desc) return "¶á¤¯¤Î¼Ù°¤Ê¥â¥ó¥¹¥¿¡¼¤ò´¶ÃΤ¹¤ë¡£";
8328 if (name) return "Detect Evil";
8329 if (desc) return "Detects all evil monsters in your vicinity.";
8333 int rad = DETECT_RAD_DEFAULT;
8335 if (info) return info_radius(rad);
8339 detect_monsters_evil(rad);
8346 if (name) return "¶²Éݽüµî";
8347 if (desc) return "¶²Éݤò¼è¤ê½ü¤¯¡£";
8349 if (name) return "Remove Fear";
8350 if (desc) return "Removes fear.";
8363 if (name) return "°Ò°µ";
8364 if (desc) return "¥â¥ó¥¹¥¿¡¼1ÂΤò¶²Éݤµ¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
8366 if (name) return "Scare Monster";
8367 if (desc) return "Attempts to scare a monster.";
8373 if (info) return info_power(power);
8377 if (!get_aim_dir(&dir)) return NULL;
8379 fear_monster(dir, power);
8386 if (name) return "À»°è";
8387 if (desc) return "ÎÙÀܤ·¤¿Á´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤ò̲¤é¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
8389 if (name) return "Sanctuary";
8390 if (desc) return "Attempts to sleep monsters in the adjacent squares.";
8396 if (info) return info_power(power);
8400 sleep_monsters_touch();
8407 if (name) return "Æþ¸ý";
8408 if (desc) return "Ãæµ÷Î¥¤Î¥Æ¥ì¥Ý¡¼¥È¤ò¤¹¤ë¡£";
8410 if (name) return "Portal";
8411 if (desc) return "Teleport medium distance.";
8415 int range = 25 + plev / 2;
8417 if (info) return info_range(range);
8421 teleport_player(range, 0L);
8428 if (name) return "¥¹¥¿¡¼¥À¥¹¥È";
8429 if (desc) return "¥¿¡¼¥²¥Ã¥ÈÉÕ¶á¤ËÁ®¸÷¤Î¥Ü¥ë¥È¤òÏ¢¼Í¤¹¤ë¡£";
8431 if (name) return "Star Dust";
8432 if (desc) return "Fires many bolts of light near the target.";
8436 int dice = 3 + (plev - 1) / 9;
8439 if (info) return info_multi_damage_dice(dice, sides);
8443 if (!get_aim_dir(&dir)) return NULL;
8444 fire_blast(GF_LITE, dir, dice, sides, 10, 3);
8451 if (name) return "¿ÈÂξô²½";
8452 if (desc) return "½ý¡¢ÆÇ¡¢Û¯Û°¤«¤éÁ´²÷¤¹¤ë¡£";
8454 if (name) return "Purify";
8455 if (desc) return "Heals all cut, stun and poison status.";
8470 if (name) return "¼Ù°Èô¤Ð¤·";
8471 if (desc) return "¼Ù°¤Ê¥â¥ó¥¹¥¿¡¼1ÂΤò¥Æ¥ì¥Ý¡¼¥È¤µ¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
8473 if (name) return "Scatter Evil";
8474 if (desc) return "Attempts to teleport an evil monster away.";
8478 int power = MAX_SIGHT * 5;
8480 if (info) return info_power(power);
8484 if (!get_aim_dir(&dir)) return NULL;
8485 fire_ball(GF_AWAY_EVIL, dir, power, 0);
8492 if (name) return "À»¤Ê¤ë¸÷µå";
8493 if (desc) return "À»¤Ê¤ëÎϤò¤â¤ÄÊõ¼î¤òÊü¤Ä¡£¼Ù°¤Ê¥â¥ó¥¹¥¿¡¼¤ËÂФ·¤ÆÂ礤ʥÀ¥á¡¼¥¸¤òÍ¿¤¨¤ë¤¬¡¢Á±Îɤʥâ¥ó¥¹¥¿¡¼¤Ë¤Ï¸ú²Ì¤¬¤Ê¤¤¡£";
8495 if (name) return "Holy Orb";
8496 if (desc) return "Fires a ball with holy power. Hurts evil monsters greatly, but don't effect good monsters.";
8502 int rad = (plev < 30) ? 2 : 3;
8505 if (p_ptr->pclass == CLASS_PRIEST ||
8506 p_ptr->pclass == CLASS_HIGH_MAGE ||
8507 p_ptr->pclass == CLASS_SORCERER)
8508 base = plev + plev / 2;
8510 base = plev + plev / 4;
8513 if (info) return info_damage(dice, sides, base);
8517 if (!get_aim_dir(&dir)) return NULL;
8519 fire_ball(GF_HOLY_FIRE, dir, damroll(dice, sides) + base, rad);
8526 if (name) return "°Ëâʧ¤¤";
8527 if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥¢¥ó¥Ç¥Ã¥ÉµÚ¤Ó°Ëâ¤Ë¥À¥á¡¼¥¸¤òÍ¿¤¨¡¢¼Ù°¤Ê¥â¥ó¥¹¥¿¡¼¤ò¶²Éݤµ¤»¤ë¡£";
8529 if (name) return "Exorcism";
8530 if (desc) return "Damages all undead and demons in sight, and scares all evil monsters in sight.";
8537 if (info) return info_damage(1, sides, 0);
8541 dispel_undead(randint1(sides));
8542 dispel_demons(randint1(sides));
8550 if (name) return "²ò¼ö";
8551 if (desc) return "¥¢¥¤¥Æ¥à¤Ë¤«¤«¤Ã¤¿¼å¤¤¼ö¤¤¤ò²ò½ü¤¹¤ë¡£";
8553 if (name) return "Remove Curse";
8554 if (desc) return "Removes normal curses from equipped items.";
8563 msg_print("狼¤Ë¸«¼é¤é¤ì¤Æ¤¤¤ë¤è¤¦¤Êµ¤¤¬¤¹¤ë¡£");
8565 msg_print("You feel as if someone is watching over you.");
8574 if (name) return "Æ©ÌÀ»ëǧ";
8575 if (desc) return "°ìÄê»þ´Ö¡¢Æ©ÌÀ¤Ê¤â¤Î¤¬¸«¤¨¤ë¤è¤¦¤Ë¤Ê¤ë¡£";
8577 if (name) return "Sense Unseen";
8578 if (desc) return "Gives see invisible for a while.";
8584 if (info) return info_duration(base, base);
8588 set_tim_invis(randint1(base) + base, FALSE);
8595 if (name) return "Âмٰ·ë³¦";
8596 if (desc) return "¼Ù°¤Ê¥â¥ó¥¹¥¿¡¼¤Î¹¶·â¤òËɤ°¥Ð¥ê¥¢¤òÄ¥¤ë¡£";
8598 if (name) return "Protection from Evil";
8599 if (desc) return "Gives aura which protect you from evil monster's physical attack.";
8604 int sides = 3 * plev;
8606 if (info) return info_duration(base, sides);
8610 set_protevil(randint1(sides) + sides, FALSE);
8617 if (name) return "ºÛ¤¤ÎÍë";
8618 if (desc) return "¶¯ÎϤÊÅÅ·â¤Î¥Ü¥ë¥È¤òÊü¤Ä¡£";
8620 if (name) return "Judgment Thunder";
8621 if (desc) return "Fires a powerful bolt of lightning.";
8627 if (info) return info_damage(0, 0, dam);
8631 if (!get_aim_dir(&dir)) return NULL;
8632 fire_bolt(GF_ELEC, dir, dam);
8639 if (name) return "À»¤Ê¤ë¸æ¸ÀÍÕ";
8640 if (desc) return "»ë³¦Æâ¤Î¼Ù°¤Ê¸ºß¤ËÂ礤ʥÀ¥á¡¼¥¸¤òÍ¿¤¨¡¢ÂÎÎϤò²óÉü¤·¡¢ÆÇ¡¢¶²ÉÝ¡¢Û¯Û°¾õÂÖ¡¢Éé½ý¤«¤éÁ´²÷¤¹¤ë¡£";
8642 if (name) return "Holy Word";
8643 if (desc) return "Damages all evil monsters in sight, heals HP somewhat, and completely heals poison, fear, stun and cut status.";
8647 int dam_sides = plev * 6;
8651 if (info) return format("»:1d%d/²ó%d", dam_sides, heal);
8653 if (info) return format("dam:d%d/h%d", dam_sides, heal);
8658 dispel_evil(randint1(dam_sides));
8670 if (name) return "³«¤«¤ì¤¿Æ»";
8671 if (desc) return "°ìľÀþ¾å¤ÎÁ´¤Æ¤Î櫤ÈÈâ¤òÇ˲õ¤¹¤ë¡£";
8673 if (name) return "Unbarring Ways";
8674 if (desc) return "Fires a beam which destroy traps and doors.";
8680 if (!get_aim_dir(&dir)) return NULL;
8689 if (name) return "ÉõËâ";
8690 if (desc) return "¼Ù°¤Ê¥â¥ó¥¹¥¿¡¼¤ÎÆ°¤¤ò»ß¤á¤ë¡£";
8692 if (name) return "Arrest";
8693 if (desc) return "Attempts to paralyze an evil monster.";
8697 int power = plev * 2;
8699 if (info) return info_power(power);
8703 if (!get_aim_dir(&dir)) return NULL;
8711 if (name) return "À»¤Ê¤ë¥ª¡¼¥é";
8712 if (desc) return "°ìÄê»þ´Ö¡¢¼Ù°¤Ê¥â¥ó¥¹¥¿¡¼¤ò½ý¤Ä¤±¤ëÀ»¤Ê¤ë¥ª¡¼¥é¤òÆÀ¤ë¡£";
8714 if (name) return "Holy Aura";
8715 if (desc) return "Gives aura of holy power which injures evil monsters which attacked you for a while.";
8721 if (info) return info_duration(base, base);
8725 set_tim_sh_holy(randint1(base) + base, FALSE);
8732 if (name) return "¥¢¥ó¥Ç¥Ã¥É&°ËâÂ໶";
8733 if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥¢¥ó¥Ç¥Ã¥ÉµÚ¤Ó°Ëâ¤Ë¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£";
8735 if (name) return "Dispel Undead & Demons";
8736 if (desc) return "Damages all undead and demons in sight.";
8740 int sides = plev * 4;
8742 if (info) return info_damage(1, sides, 0);
8746 dispel_undead(randint1(sides));
8747 dispel_demons(randint1(sides));
8754 if (name) return "¼Ù°Â໶";
8755 if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¼Ù°¤Ê¥â¥ó¥¹¥¿¡¼¤Ë¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£";
8757 if (name) return "Dispel Evil";
8758 if (desc) return "Damages all evil monsters in sight.";
8762 int sides = plev * 4;
8764 if (info) return info_damage(1, sides, 0);
8768 dispel_evil(randint1(sides));
8775 if (name) return "À»¤Ê¤ë¿Ï";
8776 if (desc) return "Ä̾ï¤ÎÉð´ï¤ËÌǼ٤ΰÀ¤ò¤Ä¤±¤ë¡£";
8778 if (name) return "Holy Blade";
8779 if (desc) return "Makes current weapon especially deadly against evil monsters.";
8792 if (name) return "¥¹¥¿¡¼¥Ð¡¼¥¹¥È";
8793 if (desc) return "µðÂç¤ÊÁ®¸÷¤Îµå¤òÊü¤Ä¡£";
8795 if (name) return "Star Burst";
8796 if (desc) return "Fires a huge ball of powerful light.";
8800 int dam = 100 + plev * 2;
8803 if (info) return info_damage(0, 0, dam);
8807 if (!get_aim_dir(&dir)) return NULL;
8809 fire_ball(GF_LITE, dir, dam, rad);
8816 if (name) return "Å·»È¾¤´";
8817 if (desc) return "Å·»È¤ò1Âξ¤´¤¹¤ë¡£";
8819 if (name) return "Summon Angel";
8820 if (desc) return "Summons an angel.";
8826 bool pet = !one_in_(3);
8829 if (pet) mode |= PM_FORCE_PET;
8830 else mode |= PM_NO_PET;
8831 if (!(pet && (plev < 50))) mode |= PM_ALLOW_GROUP;
8833 if (summon_specific((pet ? -1 : 0), py, px, (plev * 3) / 2, SUMMON_ANGEL, mode))
8838 msg_print("¡Ö¤´ÍѤǤ´¤¶¤¤¤Þ¤¹¤«¡¢¤´¼ç¿ÍÍÍ¡×");
8840 msg_print("'What is thy bidding... Master?'");
8846 msg_print("¡Ö²æ¤ÏÆò¤Î²¼Ëͤˤ¢¤é¤º¡ª °¹Ô¼Ô¤è¡¢²ù¤¤²þ¤á¤è¡ª¡×");
8848 msg_print("Mortal! Repent of thy impiousness.");
8858 if (name) return "»Îµ¤¹âÍÈ";
8859 if (desc) return "°ìÄê»þ´Ö¡¢¥Ò¡¼¥í¡¼µ¤Ê¬¤Ë¤Ê¤ë¡£";
8861 if (name) return "Heroism";
8862 if (desc) return "Removes fear, and gives bonus to hit and 10 more HP for a while.";
8868 if (info) return info_duration(base, base);
8872 set_hero(randint1(base) + base, FALSE);
8881 if (name) return "¼ö¤¤Â໶";
8882 if (desc) return "¥¢¥¤¥Æ¥à¤Ë¤«¤«¤Ã¤¿¶¯ÎϤʼö¤¤¤ò²ò½ü¤¹¤ë¡£";
8884 if (name) return "Dispel Curse";
8885 if (desc) return "Removes normal and heavy curse from equipped items.";
8891 if (remove_all_curse())
8894 msg_print("狼¤Ë¸«¼é¤é¤ì¤Æ¤¤¤ë¤è¤¦¤Êµ¤¤¬¤¹¤ë¡£");
8896 msg_print("You feel as if someone is watching over you.");
8905 if (name) return "¼Ù°ÄÉÊü";
8906 if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¼Ù°¤Ê¥â¥ó¥¹¥¿¡¼¤ò¥Æ¥ì¥Ý¡¼¥È¤µ¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
8908 if (name) return "Banish Evil";
8909 if (desc) return "Teleports all evil monsters in sight away unless resisted.";
8915 if (info) return info_power(power);
8919 if (banish_evil(power))
8922 msg_print("¿ÀÀ»¤ÊÎϤ¬¼Ù°¤òÂǤÁʧ¤Ã¤¿¡ª");
8924 msg_print("The holy power banishes evil!");
8934 if (name) return "¥Ï¥ë¥Þ¥²¥É¥ó";
8935 if (desc) return "¼þÊդΥ¢¥¤¥Æ¥à¡¢¥â¥ó¥¹¥¿¡¼¡¢ÃÏ·Á¤òÇ˲õ¤¹¤ë¡£";
8937 if (name) return "Armageddon";
8938 if (desc) return "Destroy everything in nearby area.";
8947 destroy_area(py, px, base + randint1(sides), FALSE);
8954 if (name) return "ÌܤˤÏÌܤò";
8955 if (desc) return "°ìÄê»þ´Ö¡¢¼«Ê¬¤¬¥À¥á¡¼¥¸¤ò¼õ¤±¤¿¤È¤¤Ë¹¶·â¤ò¹Ô¤Ã¤¿¥â¥ó¥¹¥¿¡¼¤ËÂФ·¤ÆƱÅù¤Î¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£";
8957 if (name) return "An Eye for an Eye";
8958 if (desc) return "Gives special aura for a while. When you are attacked by a monster, the monster are injured with same amount of damage as you take.";
8964 if (info) return info_duration(base, base);
8968 set_tim_eyeeye(randint1(base) + base, FALSE);
8975 if (name) return "¿À¤ÎÅܤê";
8976 if (desc) return "¥¿¡¼¥²¥Ã¥È¤Î¼þ°Ï¤Ëʬ²ò¤Îµå¤ò¿¿ôÍî¤È¤¹¡£";
8978 if (name) return "Wrath of the God";
8979 if (desc) return "Drops many balls of disintegration near the target.";
8983 int dam = plev * 3 + 25;
8986 if (info) return info_multi_damage(dam);
8990 if (!cast_wrath_of_the_god(dam, rad)) return NULL;
8997 if (name) return "¿À°Ò";
8998 if (desc) return "ÎÙÀܤ¹¤ë¥â¥ó¥¹¥¿¡¼¤ËÀ»¤Ê¤ë¥À¥á¡¼¥¸¤òÍ¿¤¨¡¢»ë³¦Æâ¤Î¥â¥ó¥¹¥¿¡¼¤Ë¥À¥á¡¼¥¸¡¢¸ºÂ®¡¢Û¯Û°¡¢º®Í𡢶²ÉÝ¡¢Ì²¤ê¤òÍ¿¤¨¤ë¡£¤µ¤é¤ËÂÎÎϤò²óÉü¤¹¤ë¡£";
9000 if (name) return "Divine Intervention";
9001 if (desc) return "Damages all adjacent monsters with holy power. Damages and attempt to slow, stun, confuse, scare and freeze all monsters in sight. And heals HP.";
9005 int b_dam = plev * 11;
9006 int d_dam = plev * 4;
9008 int power = plev * 4;
9011 if (info) return format("²ó%d/»%d+%d", heal, d_dam, b_dam/2);
9013 if (info) return format("h%d/dm%d+%d", heal, d_dam, b_dam/2);
9018 project(0, 1, py, px, b_dam, GF_HOLY_FIRE, PROJECT_KILL, -1);
9019 dispel_monsters(d_dam);
9020 slow_monsters(plev);
9021 stun_monsters(power);
9022 confuse_monsters(power);
9023 turn_monsters(power);
9024 stasis_monsters(power);
9032 if (name) return "À»Àï";
9033 if (desc) return "»ë³¦Æâ¤ÎÁ±Îɤʥâ¥ó¥¹¥¿¡¼¤ò¥Ú¥Ã¥È¤Ë¤·¤è¤¦¤È¤·¡¢¤Ê¤é¤Ê¤«¤Ã¤¿¾ì¹çµÚ¤ÓÁ±ÎɤǤʤ¤¥â¥ó¥¹¥¿¡¼¤ò¶²Éݤµ¤»¤ë¡£¤µ¤é¤Ë¿¿ô¤Î²Ã®¤µ¤ì¤¿µ³»Î¤ò¾¤´¤·¡¢¥Ò¡¼¥í¡¼¡¢½ËÊ¡¡¢²Ã®¡¢Âмٰ·ë³¦¤òÆÀ¤ë¡£";
9035 if (name) return "Crusade";
9036 if (desc) return "Attempts to charm all good monsters in sight, and scare all non-charmed monsters, and summons great number of knights, and gives heroism, bless, speed and protection from evil.";
9043 int sp_sides = 20 + plev;
9048 for (i = 0; i < 12; i++)
9055 scatter(&my, &mx, py, px, 4, 0);
9057 /* Require empty grids */
9058 if (cave_empty_bold2(my, mx)) break;
9060 if (attempt < 0) continue;
9061 summon_specific(-1, my, mx, plev, SUMMON_KNIGHTS, (PM_ALLOW_GROUP | PM_FORCE_PET | PM_HASTE));
9063 set_hero(randint1(base) + base, FALSE);
9064 set_blessed(randint1(base) + base, FALSE);
9065 set_fast(randint1(sp_sides) + sp_base, FALSE);
9066 set_protevil(randint1(base) + base, FALSE);
9078 * @brief ²Î¤Î³Æ½èÍý¤ò¹Ô¤¦
9080 * @param mode ½èÍýÆâÍÆ (SPELL_NAME / SPELL_DESC / SPELL_INFO / SPELL_CAST / SPELL_FAIL / SPELL_CONT / SPELL_STOP)
9081 * @return SPELL_NAME / SPELL_DESC / SPELL_INFO »þ¤Ë¤Ïʸ»úÎó¥Ý¥¤¥ó¥¿¤òÊÖ¤¹¡£SPELL_CAST / SPELL_FAIL / SPELL_CONT / SPELL_STOP »þ¤ÏNULLʸ»úÎó¤òÊÖ¤¹¡£
9083 static cptr do_music_spell(int spell, int mode)
9085 bool name = (mode == SPELL_NAME) ? TRUE : FALSE;
9086 bool desc = (mode == SPELL_DESC) ? TRUE : FALSE;
9087 bool info = (mode == SPELL_INFO) ? TRUE : FALSE;
9088 bool cast = (mode == SPELL_CAST) ? TRUE : FALSE;
9089 bool fail = (mode == SPELL_FAIL) ? TRUE : FALSE;
9090 bool cont = (mode == SPELL_CONT) ? TRUE : FALSE;
9091 bool stop = (mode == SPELL_STOP) ? TRUE : FALSE;
9094 static const char s_dam[] = "»½ý:";
9096 static const char s_dam[] = "dam ";
9100 int plev = p_ptr->lev;
9106 if (name) return "ÃÙÆߤβÎ";
9107 if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤ò¸ºÂ®¤µ¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
9109 if (name) return "Song of Holding";
9110 if (desc) return "Attempts to slow all monsters in sight.";
9113 /* Stop singing before start another */
9114 if (cast || fail) stop_singing();
9119 msg_print("¤æ¤Ã¤¯¤ê¤È¤·¤¿¥á¥í¥Ç¥£¤ò¸ý¤º¤µ¤ß»Ï¤á¤¿¡¥¡¥¡¥");
9121 msg_print("You start humming a slow, steady melody...");
9123 start_singing(spell, MUSIC_SLOW);
9129 if (info) return info_power(power);
9133 slow_monsters(plev);
9140 if (name) return "½ËÊ¡¤Î²Î";
9141 if (desc) return "Ì¿ÃæΨ¤ÈAC¤Î¥Ü¡¼¥Ê¥¹¤òÆÀ¤ë¡£";
9143 if (name) return "Song of Blessing";
9144 if (desc) return "Gives bonus to hit and AC for a few turns.";
9147 /* Stop singing before start another */
9148 if (cast || fail) stop_singing();
9153 msg_print("¸·¤«¤Ê¥á¥í¥Ç¥£¤òÁդǻϤ᤿¡¥¡¥¡¥");
9155 msg_print("The holy power of the Music of the Ainur enters you...");
9157 start_singing(spell, MUSIC_BLESS);
9162 if (!p_ptr->blessed)
9165 msg_print("¹â·é¤Êµ¤Ê¬¤¬¾Ã¤¨¼º¤»¤¿¡£");
9167 msg_print("The prayer has expired.");
9176 if (name) return "Êø²õ¤Î²»¿§";
9177 if (desc) return "¹ì²»¤Î¥Ü¥ë¥È¤òÊü¤Ä¡£";
9179 if (name) return "Wrecking Note";
9180 if (desc) return "Fires a bolt of sound.";
9183 /* Stop singing before start another */
9184 if (cast || fail) stop_singing();
9187 int dice = 4 + (plev - 1) / 5;
9190 if (info) return info_damage(dice, sides, 0);
9194 if (!get_aim_dir(&dir)) return NULL;
9196 fire_bolt(GF_SOUND, dir, damroll(dice, sides));
9203 if (name) return "Û¯Û°¤ÎÀûΧ";
9204 if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤òÛ¯Û°¤µ¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
9206 if (name) return "Stun Pattern";
9207 if (desc) return "Attempts to stun all monsters in sight.";
9210 /* Stop singing before start another */
9211 if (cast || fail) stop_singing();
9216 msg_print("âÁÏǤµ¤»¤ë¥á¥í¥Ç¥£¤òÁդǻϤ᤿¡¥¡¥¡¥");
9218 msg_print("You weave a pattern of sounds to bewilder and daze...");
9220 start_singing(spell, MUSIC_STUN);
9224 int dice = plev / 10;
9227 if (info) return info_power_dice(dice, sides);
9231 stun_monsters(damroll(dice, sides));
9239 if (name) return "À¸Ì¿¤Îή¤ì";
9240 if (desc) return "ÂÎÎϤò¾¯¤·²óÉü¤µ¤»¤ë¡£";
9242 if (name) return "Flow of Life";
9243 if (desc) return "Heals HP a little.";
9246 /* Stop singing before start another */
9247 if (cast || fail) stop_singing();
9252 msg_print("²Î¤òÄ̤·¤ÆÂΤ˳赤¤¬Ìá¤Ã¤Æ¤¤¿¡¥¡¥¡¥");
9254 msg_print("Life flows through you as you sing a song of healing...");
9256 start_singing(spell, MUSIC_L_LIFE);
9263 if (info) return info_heal(dice, sides, 0);
9267 hp_player(damroll(dice, sides));
9275 if (name) return "ÂÀÍۤβÎ";
9276 if (desc) return "¸÷¸»¤¬¾È¤é¤·¤Æ¤¤¤ëÈϰϤ«Éô²°Á´ÂΤò±Êµ×¤ËÌÀ¤ë¤¯¤¹¤ë¡£";
9278 if (name) return "Song of the Sun";
9279 if (desc) return "Lights up nearby area and the inside of a room permanently.";
9282 /* Stop singing before start another */
9283 if (cast || fail) stop_singing();
9287 int sides = plev / 2;
9288 int rad = plev / 10 + 1;
9290 if (info) return info_damage(dice, sides, 0);
9295 msg_print("¸÷¤êµ±¤¯²Î¤¬ÊÕ¤ê¤ò¾È¤é¤·¤¿¡£");
9297 msg_print("Your uplifting song brings brightness to dark places...");
9300 lite_area(damroll(dice, sides), rad);
9307 if (name) return "¶²ÉݤβÎ";
9308 if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤ò¶²Éݤµ¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
9310 if (name) return "Song of Fear";
9311 if (desc) return "Attempts to scare all monsters in sight.";
9314 /* Stop singing before start another */
9315 if (cast || fail) stop_singing();
9320 msg_print("¤ª¤É¤í¤ª¤É¤í¤·¤¤¥á¥í¥Ç¥£¤òÁդǻϤ᤿¡¥¡¥¡¥");
9322 msg_print("You start weaving a fearful pattern...");
9324 start_singing(spell, MUSIC_FEAR);
9330 if (info) return info_power(power);
9334 project_hack(GF_TURN_ALL, power);
9342 if (name) return "À襤¤Î²Î";
9343 if (desc) return "¥Ò¡¼¥í¡¼µ¤Ê¬¤Ë¤Ê¤ë¡£";
9345 if (name) return "Heroic Ballad";
9346 if (desc) return "Removes fear, and gives bonus to hit and 10 more HP for a while.";
9349 /* Stop singing before start another */
9350 if (cast || fail) stop_singing();
9355 msg_print("·ã¤·¤¤À襤¤Î²Î¤ò²Î¤Ã¤¿¡¥¡¥¡¥");
9357 msg_print("You start singing a song of intense fighting...");
9360 (void)hp_player(10);
9361 (void)set_afraid(0);
9363 /* Recalculate hitpoints */
9364 p_ptr->update |= (PU_HP);
9366 start_singing(spell, MUSIC_HERO);
9374 msg_print("¥Ò¡¼¥í¡¼¤Îµ¤Ê¬¤¬¾Ã¤¨¼º¤»¤¿¡£");
9376 msg_print("The heroism wears off.");
9378 /* Recalculate hitpoints */
9379 p_ptr->update |= (PU_HP);
9387 if (name) return "ÎîŪÃγÐ";
9388 if (desc) return "¶á¤¯¤Îæ«/Èâ/³¬Ãʤò´¶ÃΤ¹¤ë¡£¥ì¥Ù¥ë15¤ÇÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¡¢20¤ÇºâÊõ¤È¥¢¥¤¥Æ¥à¤ò´¶ÃΤǤ¤ë¤è¤¦¤Ë¤Ê¤ë¡£¥ì¥Ù¥ë25¤Ç¼þÊÕ¤ÎÃÏ·Á¤ò´¶ÃΤ·¡¢40¤Ç¤½¤Î³¬Á´ÂΤò±Êµ×¤Ë¾È¤é¤·¡¢¥À¥ó¥¸¥ç¥óÆâ¤Î¤¹¤Ù¤Æ¤Î¥¢¥¤¥Æ¥à¤ò´¶ÃΤ¹¤ë¡£¤³¤Î¸ú²Ì¤Ï²Î¤¤Â³¤±¤ë¤³¤È¤Ç½ç¤Ëµ¯¤³¤ë¡£";
9390 if (name) return "Clairaudience";
9391 if (desc) return "Detects traps, doors and stairs in your vicinity. And detects all monsters at level 15, treasures and items at level 20. Maps nearby area at level 25. Lights and know the whole level at level 40. These effects occurs by turns while this song continues.";
9394 /* Stop singing before start another */
9395 if (cast || fail) stop_singing();
9400 msg_print("ÀŤ«¤Ê²»³Ú¤¬´¶³Ð¤ò¸¦¤®À¡¤Þ¤µ¤»¤¿¡¥¡¥¡¥");
9402 msg_print("Your quiet music sharpens your sense of hearing...");
9405 /* Hack -- Initialize the turn count */
9406 p_ptr->magic_num1[2] = 0;
9408 start_singing(spell, MUSIC_DETECT);
9412 int rad = DETECT_RAD_DEFAULT;
9414 if (info) return info_radius(rad);
9418 int count = p_ptr->magic_num1[2];
9420 if (count >= 19) wiz_lite(FALSE);
9424 if (plev > 39 && count < 19)
9425 p_ptr->magic_num1[2] = count + 1;
9429 /* There are too many hidden treasure. So... */
9430 /* detect_treasure(rad); */
9431 detect_objects_gold(rad);
9432 detect_objects_normal(rad);
9434 if (plev > 24 && count < 11)
9435 p_ptr->magic_num1[2] = count + 1;
9439 detect_monsters_invis(rad);
9440 detect_monsters_normal(rad);
9442 if (plev > 19 && count < 6)
9443 p_ptr->magic_num1[2] = count + 1;
9445 detect_traps(rad, TRUE);
9449 if (plev > 14 && count < 3)
9450 p_ptr->magic_num1[2] = count + 1;
9458 if (name) return "º²¤Î²Î";
9459 if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤ËÂФ·¤ÆÀº¿À¹¶·â¤ò¹Ô¤¦¡£";
9461 if (name) return "Soul Shriek";
9462 if (desc) return "Damages all monsters in sight with PSI damages.";
9465 /* Stop singing before start another */
9466 if (cast || fail) stop_singing();
9471 msg_print("Àº¿À¤òDZ¤¸¶Ê¤²¤ë²Î¤ò²Î¤Ã¤¿¡¥¡¥¡¥");
9473 msg_print("You start singing a song of soul in pain...");
9475 start_singing(spell, MUSIC_PSI);
9480 int sides = plev * 3 / 2;
9482 if (info) return info_damage(dice, sides, 0);
9486 project_hack(GF_PSI, damroll(dice, sides));
9494 if (name) return "Ãμ±¤Î²Î";
9495 if (desc) return "¼«Ê¬¤Î¤¤¤ë¥Þ¥¹¤ÈÎÙ¤ê¤Î¥Þ¥¹¤ËÍî¤Á¤Æ¤¤¤ë¥¢¥¤¥Æ¥à¤ò´ÕÄꤹ¤ë¡£";
9497 if (name) return "Song of Lore";
9498 if (desc) return "Identifies all items which are in the adjacent squares.";
9501 /* Stop singing before start another */
9502 if (cast || fail) stop_singing();
9507 msg_print("¤³¤ÎÀ¤³¦¤ÎÃ챤¬Î®¤ì¹þ¤ó¤Ç¤¤¿¡¥¡¥¡¥");
9509 msg_print("You recall the rich lore of the world...");
9511 start_singing(spell, MUSIC_ID);
9517 if (info) return info_radius(rad);
9520 * ²Î¤Î³«»Ï»þ¤Ë¤â¸ú²Ìȯư¡§
9521 * MPÉÔ¤ǴÕÄ꤬ȯư¤µ¤ì¤ëÁ°¤Ë²Î¤¬ÃæÃǤ·¤Æ¤·¤Þ¤¦¤Î¤òËɻߡ£
9525 project(0, rad, py, px, 0, GF_IDENTIFY, PROJECT_ITEM, -1);
9533 if (name) return "±£ÆۤβÎ";
9534 if (desc) return "±£Ì©¹ÔưǽÎϤò¾å¾º¤µ¤»¤ë¡£";
9536 if (name) return "Hiding Tune";
9537 if (desc) return "Gives improved stealth.";
9540 /* Stop singing before start another */
9541 if (cast || fail) stop_singing();
9546 msg_print("¤¢¤Ê¤¿¤Î»Ñ¤¬·Ê¿§¤Ë¤È¤±¤³¤ó¤Ç¤¤¤Ã¤¿¡¥¡¥¡¥");
9548 msg_print("Your song carries you beyond the sight of mortal eyes...");
9550 start_singing(spell, MUSIC_STEALTH);
9555 if (!p_ptr->tim_stealth)
9558 msg_print("»Ñ¤¬¤Ï¤Ã¤¤ê¤È¸«¤¨¤ë¤è¤¦¤Ë¤Ê¤Ã¤¿¡£");
9560 msg_print("You are no longer hided.");
9569 if (name) return "¸¸±Æ¤ÎÀûΧ";
9570 if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤òº®Í𤵤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
9572 if (name) return "Illusion Pattern";
9573 if (desc) return "Attempts to confuse all monsters in sight.";
9576 /* Stop singing before start another */
9577 if (cast || fail) stop_singing();
9582 msg_print("ÊÕ¤ê°ìÌ̤˸¸±Æ¤¬¸½¤ì¤¿¡¥¡¥¡¥");
9584 msg_print("You weave a pattern of sounds to beguile and confuse...");
9586 start_singing(spell, MUSIC_CONF);
9590 int power = plev * 2;
9592 if (info) return info_power(power);
9596 confuse_monsters(power);
9604 if (name) return "ÇËÌǤ櫤Ó";
9605 if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤ËÂФ·¤Æ¹ì²»¹¶·â¤ò¹Ô¤¦¡£";
9607 if (name) return "Doomcall";
9608 if (desc) return "Damages all monsters in sight with booming sound.";
9611 /* Stop singing before start another */
9612 if (cast || fail) stop_singing();
9617 msg_print("¹ì²»¤¬¶Á¤¤¤¿¡¥¡¥¡¥");
9619 msg_print("The fury of the Downfall of Numenor lashes out...");
9621 start_singing(spell, MUSIC_SOUND);
9625 int dice = 10 + plev / 5;
9628 if (info) return info_damage(dice, sides, 0);
9632 project_hack(GF_SOUND, damroll(dice, sides));
9640 if (name) return "¥Õ¥£¥ê¥¨¥ë¤Î²Î";
9641 if (desc) return "¼þ°Ï¤Î»àÂΤä¹ü¤òÀ¸¤ÊÖ¤¹¡£";
9643 if (name) return "Firiel's Song";
9644 if (desc) return "Resurrects nearby corpse and skeletons. And makes these your pets.";
9648 /* Stop singing before start another */
9649 if (cast || fail) stop_singing();
9654 msg_print("À¸Ì¿¤ÈÉü³è¤Î¥Æ¡¼¥Þ¤òÁդǻϤ᤿¡¥¡¥¡¥");
9656 msg_print("The themes of life and revival are woven into your song...");
9659 animate_dead(0, py, px);
9666 if (name) return "ι¤ÎÃç´Ö";
9667 if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤ò̥λ¤¹¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
9669 if (name) return "Fellowship Chant";
9670 if (desc) return "Attempts to charm all monsters in sight.";
9673 /* Stop singing before start another */
9674 if (cast || fail) stop_singing();
9679 msg_print("°Â¤é¤«¤Ê¥á¥í¥Ç¥£¤òÁդǻϤ᤿¡¥¡¥¡¥");
9681 msg_print("You weave a slow, soothing melody of imploration...");
9683 start_singing(spell, MUSIC_CHARM);
9687 int dice = 10 + plev / 15;
9690 if (info) return info_power_dice(dice, sides);
9694 charm_monsters(damroll(dice, sides));
9702 if (name) return "ʬ²ò²»ÇÈ";
9703 if (desc) return "Êɤò·¡¤ê¿Ê¤à¡£¼«Ê¬¤Î¸µ¤Î¥¢¥¤¥Æ¥à¤Ï¾øȯ¤¹¤ë¡£";
9705 if (name) return "Sound of disintegration";
9706 if (desc) return "Makes you be able to burrow into walls. Objects under your feet evaporate.";
9709 /* Stop singing before start another */
9710 if (cast || fail) stop_singing();
9715 msg_print("Ê´ºÕ¤¹¤ë¥á¥í¥Ç¥£¤òÁդǻϤ᤿¡¥¡¥¡¥");
9717 msg_print("You weave a violent pattern of sounds to break wall.");
9719 start_singing(spell, MUSIC_WALL);
9724 * ²Î¤Î³«»Ï»þ¤Ë¤â¸ú²Ìȯư¡§
9725 * MPÉÔ¤Ǹú²Ì¤¬È¯Æ°¤µ¤ì¤ëÁ°¤Ë²Î¤¬ÃæÃǤ·¤Æ¤·¤Þ¤¦¤Î¤òËɻߡ£
9729 project(0, 0, py, px,
9730 0, GF_DISINTEGRATE, PROJECT_KILL | PROJECT_ITEM | PROJECT_HIDE, -1);
9737 if (name) return "¸µÁÇÂÑÀ";
9738 if (desc) return "»À¡¢ÅÅ·â¡¢±ê¡¢Î䵤¡¢ÆǤËÂФ¹¤ëÂÑÀ¤òÆÀ¤ë¡£ÁõÈ÷¤Ë¤è¤ëÂÑÀ¤ËÎßÀѤ¹¤ë¡£";
9740 if (name) return "Finrod's Resistance";
9741 if (desc) return "Gives resistance to fire, cold, electricity, acid and poison. These resistances can be added to which from equipment for more powerful resistances.";
9744 /* Stop singing before start another */
9745 if (cast || fail) stop_singing();
9750 msg_print("¸µÁǤÎÎϤËÂФ¹¤ëǦÂѤβΤò²Î¤Ã¤¿¡£");
9752 msg_print("You sing a song of perseverance against powers...");
9754 start_singing(spell, MUSIC_RESIST);
9759 if (!p_ptr->oppose_acid)
9762 msg_print("»À¤Ø¤ÎÂÑÀ¤¬Çö¤ì¤¿µ¤¤¬¤¹¤ë¡£");
9764 msg_print("You feel less resistant to acid.");
9768 if (!p_ptr->oppose_elec)
9771 msg_print("ÅÅ·â¤Ø¤ÎÂÑÀ¤¬Çö¤ì¤¿µ¤¤¬¤¹¤ë¡£");
9773 msg_print("You feel less resistant to elec.");
9777 if (!p_ptr->oppose_fire)
9780 msg_print("²Ð¤Ø¤ÎÂÑÀ¤¬Çö¤ì¤¿µ¤¤¬¤¹¤ë¡£");
9782 msg_print("You feel less resistant to fire.");
9786 if (!p_ptr->oppose_cold)
9789 msg_print("Î䵤¤Ø¤ÎÂÑÀ¤¬Çö¤ì¤¿µ¤¤¬¤¹¤ë¡£");
9791 msg_print("You feel less resistant to cold.");
9795 if (!p_ptr->oppose_pois)
9798 msg_print("ÆǤؤÎÂÑÀ¤¬Çö¤ì¤¿µ¤¤¬¤¹¤ë¡£");
9800 msg_print("You feel less resistant to pois.");
9809 if (name) return "¥Û¥Ó¥Ã¥È¤Î¥á¥í¥Ç¥£";
9810 if (desc) return "²Ã®¤¹¤ë¡£";
9812 if (name) return "Hobbit Melodies";
9813 if (desc) return "Hastes you.";
9816 /* Stop singing before start another */
9817 if (cast || fail) stop_singing();
9822 msg_print("·Ú²÷¤Ê²Î¤ò¸ý¤º¤µ¤ß»Ï¤á¤¿¡¥¡¥¡¥");
9824 msg_print("You start singing joyful pop song...");
9826 start_singing(spell, MUSIC_SPEED);
9834 msg_print("Æ°¤¤ÎÁÇÁᤵ¤¬¤Ê¤¯¤Ê¤Ã¤¿¤è¤¦¤À¡£");
9836 msg_print("You feel yourself slow down.");
9845 if (name) return "ÏĤó¤ÀÀ¤³¦";
9846 if (desc) return "¶á¤¯¤Î¥â¥ó¥¹¥¿¡¼¤ò¥Æ¥ì¥Ý¡¼¥È¤µ¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
9848 if (name) return "World Contortion";
9849 if (desc) return "Teleports all nearby monsters away unless resisted.";
9853 int rad = plev / 15 + 1;
9854 int power = plev * 3 + 1;
9856 if (info) return info_radius(rad);
9858 /* Stop singing before start another */
9859 if (cast || fail) stop_singing();
9864 msg_print("²Î¤¬¶õ´Ö¤òÏĤ᤿¡¥¡¥¡¥");
9866 msg_print("Reality whirls wildly as you sing a dizzying melody...");
9869 project(0, rad, py, px, power, GF_AWAY_ALL, PROJECT_KILL, -1);
9876 if (name) return "Â໶¤Î²Î";
9877 if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤Ë¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£¼Ù°¤Ê¥â¥ó¥¹¥¿¡¼¤ËÆäËÂ礤ʥÀ¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£";
9879 if (name) return "Dispelling chant";
9880 if (desc) return "Damages all monsters in sight. Hurts evil monsters greatly.";
9883 /* Stop singing before start another */
9884 if (cast || fail) stop_singing();
9889 msg_print("ÂѤ¨¤é¤ì¤Ê¤¤ÉÔ¶¨Ï²»¤¬Å¨¤òÀÕ¤áΩ¤Æ¤¿¡¥¡¥¡¥");
9891 msg_print("You cry out in an ear-wracking voice...");
9893 start_singing(spell, MUSIC_DISPEL);
9897 int m_sides = plev * 3;
9898 int e_sides = plev * 3;
9900 if (info) return format("%s1d%d+1d%d", s_dam, m_sides, e_sides);
9904 dispel_monsters(randint1(m_sides));
9905 dispel_evil(randint1(e_sides));
9912 if (name) return "¥µ¥ë¥Þ¥ó¤Î´Å¸À";
9913 if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤ò¸ºÂ®¤µ¤»¡¢Ì²¤é¤»¤è¤¦¤È¤¹¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
9915 if (name) return "The Voice of Saruman";
9916 if (desc) return "Attempts to slow and sleep all monsters in sight.";
9919 /* Stop singing before start another */
9920 if (cast || fail) stop_singing();
9925 msg_print("Í¥¤·¤¯¡¢Ì¥ÎÏŪ¤Ê²Î¤ò¸ý¤º¤µ¤ß»Ï¤á¤¿¡¥¡¥¡¥");
9927 msg_print("You start humming a gentle and attractive song...");
9929 start_singing(spell, MUSIC_SARUMAN);
9935 if (info) return info_power(power);
9939 slow_monsters(plev);
9940 sleep_monsters(plev);
9948 if (name) return "Íò¤Î²»¿§";
9949 if (desc) return "¹ì²»¤Î¥Ó¡¼¥à¤òÊü¤Ä¡£";
9951 if (name) return "Song of the Tempest";
9952 if (desc) return "Fires a beam of sound.";
9956 int dice = 15 + (plev - 1) / 2;
9959 if (info) return info_damage(dice, sides, 0);
9961 /* Stop singing before start another */
9962 if (cast || fail) stop_singing();
9966 if (!get_aim_dir(&dir)) return NULL;
9968 fire_beam(GF_SOUND, dir, damroll(dice, sides));
9975 if (name) return "¤â¤¦°ì¤Ä¤ÎÀ¤³¦";
9976 if (desc) return "¸½ºß¤Î³¬¤òºÆ¹½À®¤¹¤ë¡£";
9978 if (name) return "Ambarkanta";
9979 if (desc) return "Recreates current dungeon level.";
9986 if (info) return info_delay(base, sides);
9988 /* Stop singing before start another */
9989 if (cast || fail) stop_singing();
9994 msg_print("¼þ°Ï¤¬ÊѲ½¤·»Ï¤á¤¿¡¥¡¥¡¥");
9996 msg_print("You sing of the primeval shaping of Middle-earth...");
10006 if (name) return "Ç˲õ¤ÎÀûΧ";
10007 if (desc) return "¼þ°Ï¤Î¥À¥ó¥¸¥ç¥ó¤òÍɤ餷¡¢ÊɤȾ²¤ò¥é¥ó¥À¥à¤ËÆþ¤ìÊѤ¨¤ë¡£";
10009 if (name) return "Wrecking Pattern";
10010 if (desc) return "Shakes dungeon structure, and results in random swapping of floors and walls.";
10013 /* Stop singing before start another */
10014 if (cast || fail) stop_singing();
10019 msg_print("Ç˲õŪ¤Ê²Î¤¬¶Á¤¤ï¤¿¤Ã¤¿¡¥¡¥¡¥");
10021 msg_print("You weave a pattern of sounds to contort and shatter...");
10023 start_singing(spell, MUSIC_QUAKE);
10029 if (info) return info_radius(rad);
10033 earthquake(py, px, 10);
10042 if (name) return "ÄäÂڤβÎ";
10043 if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤òËãá㤵¤»¤è¤¦¤È¤¹¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
10045 if (name) return "Stationary Shriek";
10046 if (desc) return "Attempts to freeze all monsters in sight.";
10049 /* Stop singing before start another */
10050 if (cast || fail) stop_singing();
10055 msg_print("¤æ¤Ã¤¯¤ê¤È¤·¤¿¥á¥í¥Ç¥£¤òÁդǻϤ᤿¡¥¡¥¡¥");
10057 msg_print("You weave a very slow pattern which is almost likely to stop...");
10059 start_singing(spell, MUSIC_STASIS);
10063 int power = plev * 4;
10065 if (info) return info_power(power);
10069 stasis_monsters(power);
10077 if (name) return "¼é¤ê¤Î²Î";
10078 if (desc) return "¼«Ê¬¤Î¤¤¤ë¾²¤Î¾å¤Ë¡¢¥â¥ó¥¹¥¿¡¼¤¬Ä̤êÈ´¤±¤¿¤ê¾¤´¤µ¤ì¤¿¤ê¤¹¤ë¤³¤È¤¬¤Ç¤¤Ê¤¯¤Ê¤ë¥ë¡¼¥ó¤òÉÁ¤¯¡£";
10080 if (name) return "Endurance";
10081 if (desc) return "Sets a glyph on the floor beneath you. Monsters cannot attack you if you are on a glyph, but can try to break glyph.";
10085 /* Stop singing before start another */
10086 if (cast || fail) stop_singing();
10091 msg_print("²Î¤¬¿ÀÀ»¤Ê¾ì¤òºî¤ê½Ð¤·¤¿¡¥¡¥¡¥");
10093 msg_print("The holy power of the Music is creating sacred field...");
10103 if (name) return "±Ñͺ¤Î»í";
10104 if (desc) return "²Ã®¤·¡¢¥Ò¡¼¥í¡¼µ¤Ê¬¤Ë¤Ê¤ê¡¢»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤Ë¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£";
10106 if (name) return "The Hero's Poem";
10107 if (desc) return "Hastes you. Gives heroism. Damages all monsters in sight.";
10110 /* Stop singing before start another */
10111 if (cast || fail) stop_singing();
10116 msg_print("±Ñͺ¤Î²Î¤ò¸ý¤º¤µ¤ó¤À¡¥¡¥¡¥");
10118 msg_print("You chant a powerful, heroic call to arms...");
10120 (void)hp_player(10);
10121 (void)set_afraid(0);
10123 /* Recalculate hitpoints */
10124 p_ptr->update |= (PU_HP);
10126 start_singing(spell, MUSIC_SHERO);
10134 msg_print("¥Ò¡¼¥í¡¼¤Îµ¤Ê¬¤¬¾Ã¤¨¼º¤»¤¿¡£");
10136 msg_print("The heroism wears off.");
10138 /* Recalculate hitpoints */
10139 p_ptr->update |= (PU_HP);
10145 msg_print("Æ°¤¤ÎÁÇÁᤵ¤¬¤Ê¤¯¤Ê¤Ã¤¿¤è¤¦¤À¡£");
10147 msg_print("You feel yourself slow down.");
10154 int sides = plev * 3;
10156 if (info) return info_damage(dice, sides, 0);
10160 dispel_monsters(damroll(dice, sides));
10167 if (name) return "¥ä¥ô¥¡¥ó¥Ê¤Î½õ¤±";
10168 if (desc) return "¶¯ÎϤʲóÉü¤Î²Î¤Ç¡¢Éé½ý¤ÈÛ¯Û°¾õÂÖ¤âÁ´²÷¤¹¤ë¡£";
10170 if (name) return "Relief of Yavanna";
10171 if (desc) return "Powerful healing song. Also heals cut and stun completely.";
10174 /* Stop singing before start another */
10175 if (cast || fail) stop_singing();
10180 msg_print("²Î¤òÄ̤·¤ÆÂΤ˳赤¤¬Ìá¤Ã¤Æ¤¤¿¡¥¡¥¡¥");
10182 msg_print("Life flows through you as you sing the song...");
10184 start_singing(spell, MUSIC_H_LIFE);
10191 if (info) return info_heal(dice, sides, 0);
10195 hp_player(damroll(dice, sides));
10205 if (name) return "ºÆÀ¸¤Î²Î";
10206 if (desc) return "¤¹¤Ù¤Æ¤Î¥¹¥Æ¡¼¥¿¥¹¤È·Ð¸³Ãͤò²óÉü¤¹¤ë¡£";
10208 if (name) return "Goddess' rebirth";
10209 if (desc) return "Restores all stats and experience.";
10213 /* Stop singing before start another */
10214 if (cast || fail) stop_singing();
10219 msg_print("°Å¹õ¤ÎÃæ¤Ë¸÷¤ÈÈþ¤ò¤Õ¤ê¤Þ¤¤¤¿¡£ÂΤ¬¸µ¤Î³èÎϤò¼è¤êÌᤷ¤¿¡£");
10221 msg_print("You strewed light and beauty in the dark as you sing. You feel refreshed.");
10223 (void)do_res_stat(A_STR);
10224 (void)do_res_stat(A_INT);
10225 (void)do_res_stat(A_WIS);
10226 (void)do_res_stat(A_DEX);
10227 (void)do_res_stat(A_CON);
10228 (void)do_res_stat(A_CHR);
10229 (void)restore_level();
10236 if (name) return "¥µ¥¦¥í¥ó¤ÎËâ½Ñ";
10237 if (desc) return "Èó¾ï¤Ë¶¯ÎϤǤ´¤¯¾®¤µ¤¤¹ì²»¤Îµå¤òÊü¤Ä¡£";
10239 if (name) return "Wizardry of Sauron";
10240 if (desc) return "Fires an extremely powerful tiny ball of sound.";
10244 int dice = 50 + plev;
10248 if (info) return info_damage(dice, sides, 0);
10250 /* Stop singing before start another */
10251 if (cast || fail) stop_singing();
10255 if (!get_aim_dir(&dir)) return NULL;
10257 fire_ball(GF_SOUND, dir, damroll(dice, sides), rad);
10264 if (name) return "¥Õ¥£¥ó¥´¥ë¥Õ¥£¥ó¤ÎÄ©Àï";
10265 if (desc) return "¥À¥á¡¼¥¸¤ò¼õ¤±¤Ê¤¯¤Ê¤ë¥Ð¥ê¥¢¤òÄ¥¤ë¡£";
10267 if (name) return "Fingolfin's Challenge";
10268 if (desc) return "Generates barrier which completely protect you from almost all damages. Takes a few your turns when the barrier breaks.";
10271 /* Stop singing before start another */
10272 if (cast || fail) stop_singing();
10277 msg_print("¥Õ¥£¥ó¥´¥ë¥Õ¥£¥ó¤Î̽²¦¤Ø¤ÎÄ©Àï¤ò²Î¤Ã¤¿¡¥¡¥¡¥");
10279 msg_print("You recall the valor of Fingolfin's challenge to the Dark Lord...");
10283 p_ptr->redraw |= (PR_MAP);
10285 /* Update monsters */
10286 p_ptr->update |= (PU_MONSTERS);
10289 p_ptr->window |= (PW_OVERHEAD | PW_DUNGEON);
10291 start_singing(spell, MUSIC_INVULN);
10296 if (!p_ptr->invuln)
10299 msg_print("̵Ũ¤Ç¤Ï¤Ê¤¯¤Ê¤Ã¤¿¡£");
10301 msg_print("The invulnerability wears off.");
10304 p_ptr->redraw |= (PR_MAP);
10306 /* Update monsters */
10307 p_ptr->update |= (PU_MONSTERS);
10310 p_ptr->window |= (PW_OVERHEAD | PW_DUNGEON);
10321 * @brief ·õ½Ñ¤Î³Æ½èÍý¤ò¹Ô¤¦
10322 * @param spell ·õ½ÑID
10323 * @param mode ½èÍýÆâÍÆ (SPELL_NAME / SPELL_DESC / SPELL_CAST)
10324 * @return SPELL_NAME / SPELL_DESC »þ¤Ë¤Ïʸ»úÎó¥Ý¥¤¥ó¥¿¤òÊÖ¤¹¡£SPELL_CAST»þ¤ÏNULLʸ»úÎó¤òÊÖ¤¹¡£
10326 static cptr do_hissatsu_spell(int spell, int mode)
10328 bool name = (mode == SPELL_NAME) ? TRUE : FALSE;
10329 bool desc = (mode == SPELL_DESC) ? TRUE : FALSE;
10330 bool cast = (mode == SPELL_CAST) ? TRUE : FALSE;
10333 int plev = p_ptr->lev;
10339 if (name) return "ÈôÈÓ¹Ë";
10340 if (desc) return "2¥Þ¥¹Î¥¤ì¤¿¤È¤³¤í¤Ë¤¤¤ë¥â¥ó¥¹¥¿¡¼¤ò¹¶·â¤¹¤ë¡£";
10342 if (name) return "Tobi-Izuna";
10343 if (desc) return "Attacks a two squares distant monster.";
10348 project_length = 2;
10349 if (!get_aim_dir(&dir)) return NULL;
10351 project_hook(GF_ATTACK, dir, HISSATSU_2, PROJECT_STOP | PROJECT_KILL);
10357 if (name) return "¸Þ·î±«»Â¤ê";
10358 if (desc) return "3Êý¸þ¤ËÂФ·¤Æ¹¶·â¤¹¤ë¡£";
10360 if (name) return "3-Way Attack";
10361 if (desc) return "Attacks in 3 directions in one time.";
10369 if (!get_rep_dir2(&dir)) return NULL;
10370 if (dir == 5) return NULL;
10372 for (cdir = 0;cdir < 8; cdir++)
10374 if (cdd[cdir] == dir) break;
10377 if (cdir == 8) return NULL;
10379 y = py + ddy_cdd[cdir];
10380 x = px + ddx_cdd[cdir];
10381 if (cave[y][x].m_idx)
10382 py_attack(y, x, 0);
10385 msg_print("¹¶·â¤Ï¶õ¤òÀڤä¿¡£");
10387 msg_print("You attack the empty air.");
10389 y = py + ddy_cdd[(cdir + 7) % 8];
10390 x = px + ddx_cdd[(cdir + 7) % 8];
10391 if (cave[y][x].m_idx)
10392 py_attack(y, x, 0);
10395 msg_print("¹¶·â¤Ï¶õ¤òÀڤä¿¡£");
10397 msg_print("You attack the empty air.");
10399 y = py + ddy_cdd[(cdir + 1) % 8];
10400 x = px + ddx_cdd[(cdir + 1) % 8];
10401 if (cave[y][x].m_idx)
10402 py_attack(y, x, 0);
10405 msg_print("¹¶·â¤Ï¶õ¤òÀڤä¿¡£");
10407 msg_print("You attack the empty air.");
10414 if (name) return "¥Ö¡¼¥á¥é¥ó";
10415 if (desc) return "Éð´ï¤ò¼ê¸µ¤ËÌá¤Ã¤Æ¤¯¤ë¤è¤¦¤ËÅꤲ¤ë¡£Ìá¤Ã¤Æ¤³¤Ê¤¤¤³¤È¤â¤¢¤ë¡£";
10417 if (name) return "Boomerang";
10418 if (desc) return "Throws current weapon. And it'll return to your hand unless failed.";
10423 if (!do_cmd_throw_aux(1, TRUE, -1)) return NULL;
10429 if (name) return "±ëÎî";
10430 if (desc) return "²Ð±êÂÑÀ¤Î¤Ê¤¤¥â¥ó¥¹¥¿¡¼¤ËÂç¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£";
10432 if (name) return "Burning Strike";
10433 if (desc) return "Attacks a monster with more damage unless it has resistance to fire.";
10440 if (!get_rep_dir2(&dir)) return NULL;
10441 if (dir == 5) return NULL;
10446 if (cave[y][x].m_idx)
10447 py_attack(y, x, HISSATSU_FIRE);
10451 msg_print("¤½¤ÎÊý¸þ¤Ë¤Ï¥â¥ó¥¹¥¿¡¼¤Ï¤¤¤Þ¤»¤ó¡£");
10453 msg_print("There is no monster.");
10462 if (name) return "»¦µ¤´¶ÃÎ";
10463 if (desc) return "¶á¤¯¤Î»×¹Í¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¥â¥ó¥¹¥¿¡¼¤ò´¶ÃΤ¹¤ë¡£";
10465 if (name) return "Detect Ferocity";
10466 if (desc) return "Detects all monsters except mindless in your vicinity.";
10471 detect_monsters_mind(DETECT_RAD_DEFAULT);
10477 if (name) return "¤ß¤ÍÂǤÁ";
10478 if (desc) return "Áê¼ê¤Ë¥À¥á¡¼¥¸¤òÍ¿¤¨¤Ê¤¤¤¬¡¢Û¯Û°¤È¤µ¤»¤ë¡£";
10480 if (name) return "Strike to Stun";
10481 if (desc) return "Attempts to stun a monster in the adjacent.";
10488 if (!get_rep_dir2(&dir)) return NULL;
10489 if (dir == 5) return NULL;
10494 if (cave[y][x].m_idx)
10495 py_attack(y, x, HISSATSU_MINEUCHI);
10499 msg_print("¤½¤ÎÊý¸þ¤Ë¤Ï¥â¥ó¥¹¥¿¡¼¤Ï¤¤¤Þ¤»¤ó¡£");
10501 msg_print("There is no monster.");
10510 if (name) return "¥«¥¦¥ó¥¿¡¼";
10511 if (desc) return "Áê¼ê¤Ë¹¶·â¤µ¤ì¤¿¤È¤¤ËÈ¿·â¤¹¤ë¡£È¿·â¤¹¤ë¤¿¤Ó¤ËMP¤ò¾ÃÈñ¡£";
10513 if (name) return "Counter";
10514 if (desc) return "Prepares to counterattack. When attack by a monster, strikes back using SP each time.";
10522 msg_print("¾èÇÏÃæ¤Ë¤Ï̵Íý¤À¡£");
10524 msg_print("You cannot do it when riding.");
10529 msg_print("Áê¼ê¤Î¹¶·â¤ËÂФ·¤Æ¿È¹½¤¨¤¿¡£");
10531 msg_print("You prepare to counter blow.");
10533 p_ptr->counter = TRUE;
10539 if (name) return "ʧ¤¤È´¤±";
10540 if (desc) return "¹¶·â¤·¤¿¸å¡¢È¿ÂЦ¤ËÈ´¤±¤ë¡£";
10542 if (name) return "Harainuke";
10543 if (desc) return "Attacks monster with your weapons normally, then move through counter side of the monster.";
10553 msg_print("¾èÇÏÃæ¤Ë¤Ï̵Íý¤À¡£");
10555 msg_print("You cannot do it when riding.");
10560 if (!get_rep_dir2(&dir)) return NULL;
10562 if (dir == 5) return NULL;
10566 if (!cave[y][x].m_idx)
10569 msg_print("¤½¤ÎÊý¸þ¤Ë¤Ï¥â¥ó¥¹¥¿¡¼¤Ï¤¤¤Þ¤»¤ó¡£");
10571 msg_print("There is no monster.");
10576 py_attack(y, x, 0);
10578 if (!player_can_enter(cave[y][x].feat, 0) || is_trap(cave[y][x].feat))
10584 if (player_can_enter(cave[y][x].feat, 0) && !is_trap(cave[y][x].feat) && !cave[y][x].m_idx)
10588 /* Move the player */
10589 (void)move_player_effect(y, x, MPE_FORGET_FLOW | MPE_HANDLE_STUFF | MPE_DONT_PICKUP);
10596 if (name) return "¥µ¡¼¥Ú¥ó¥Ä¥¿¥ó";
10597 if (desc) return "ÆÇÂÑÀ¤Î¤Ê¤¤¥â¥ó¥¹¥¿¡¼¤ËÂç¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£";
10599 if (name) return "Serpent's Tongue";
10600 if (desc) return "Attacks a monster with more damage unless it has resistance to poison.";
10607 if (!get_rep_dir2(&dir)) return NULL;
10608 if (dir == 5) return NULL;
10613 if (cave[y][x].m_idx)
10614 py_attack(y, x, HISSATSU_POISON);
10618 msg_print("¤½¤ÎÊý¸þ¤Ë¤Ï¥â¥ó¥¹¥¿¡¼¤Ï¤¤¤Þ¤»¤ó¡£");
10620 msg_print("There is no monster.");
10629 if (name) return "»ÂËâ·õÆõ¤ÎÂÀÅá";
10630 if (desc) return "À¸Ì¿¤Î¤Ê¤¤¼Ù°¤Ê¥â¥ó¥¹¥¿¡¼¤ËÂç¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¤¬¡¢Â¾¤Î¥â¥ó¥¹¥¿¡¼¤Ë¤ÏÁ´¤¯¸ú²Ì¤¬¤Ê¤¤¡£";
10632 if (name) return "Zammaken";
10633 if (desc) return "Attacks an evil unliving monster with great damage. No effect to other monsters.";
10640 if (!get_rep_dir2(&dir)) return NULL;
10641 if (dir == 5) return NULL;
10646 if (cave[y][x].m_idx)
10647 py_attack(y, x, HISSATSU_ZANMA);
10651 msg_print("¤½¤ÎÊý¸þ¤Ë¤Ï¥â¥ó¥¹¥¿¡¼¤Ï¤¤¤Þ¤»¤ó¡£");
10653 msg_print("There is no monster.");
10662 if (name) return "ÎöÉ÷·õ";
10663 if (desc) return "¹¶·â¤·¤¿Áê¼ê¤ò¸åÊý¤Ø¿á¤Èô¤Ð¤¹¡£";
10665 if (name) return "Wind Blast";
10666 if (desc) return "Attacks an adjacent monster, and blow it away.";
10673 if (!get_rep_dir2(&dir)) return NULL;
10674 if (dir == 5) return NULL;
10679 if (cave[y][x].m_idx)
10680 py_attack(y, x, 0);
10684 msg_print("¤½¤ÎÊý¸þ¤Ë¤Ï¥â¥ó¥¹¥¿¡¼¤Ï¤¤¤Þ¤»¤ó¡£");
10686 msg_print("There is no monster.");
10690 if (d_info[dungeon_type].flags1 & DF1_NO_MELEE)
10694 if (cave[y][x].m_idx)
10697 int ty = y, tx = x;
10698 int oy = y, ox = x;
10699 int m_idx = cave[y][x].m_idx;
10700 monster_type *m_ptr = &m_list[m_idx];
10703 monster_desc(m_name, m_ptr, 0);
10705 for (i = 0; i < 5; i++)
10709 if (cave_empty_bold(y, x))
10716 if ((ty != oy) || (tx != ox))
10719 msg_format("%s¤ò¿á¤Èô¤Ð¤·¤¿¡ª", m_name);
10721 msg_format("You blow %s away!", m_name);
10723 cave[oy][ox].m_idx = 0;
10724 cave[ty][tx].m_idx = m_idx;
10728 update_mon(m_idx, TRUE);
10732 if (r_info[m_ptr->r_idx].flags7 & (RF7_LITE_MASK | RF7_DARK_MASK))
10733 p_ptr->update |= (PU_MON_LITE);
10741 if (name) return "Åá¾¢¤ÎÌÜÍø¤";
10742 if (desc) return "Éð´ï¡¦Ëɶñ¤ò1¤Ä¼±Ê̤¹¤ë¡£¥ì¥Ù¥ë45°Ê¾å¤ÇÉð´ï¡¦Ëɶñ¤ÎǽÎϤò´°Á´¤ËÃΤ뤳¤È¤¬¤Ç¤¤ë¡£";
10744 if (name) return "Judge";
10745 if (desc) return "Identifies a weapon or armor. Or *identifies* these at level 45.";
10752 if (!identify_fully(TRUE)) return NULL;
10756 if (!ident_spell(TRUE)) return NULL;
10763 if (name) return "ÇË´ä»Â";
10764 if (desc) return "´ä¤ò²õ¤·¡¢´äÀзϤΥâ¥ó¥¹¥¿¡¼¤ËÂç¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£";
10766 if (name) return "Rock Smash";
10767 if (desc) return "Breaks rock. Or greatly damage a monster made by rocks.";
10774 if (!get_rep_dir2(&dir)) return NULL;
10775 if (dir == 5) return NULL;
10780 if (cave[y][x].m_idx)
10781 py_attack(y, x, HISSATSU_HAGAN);
10783 if (!cave_have_flag_bold(y, x, FF_HURT_ROCK)) break;
10785 /* Destroy the feature */
10786 cave_alter_feat(y, x, FF_HURT_ROCK);
10788 /* Update some things */
10789 p_ptr->update |= (PU_FLOW);
10795 if (name) return "Íð¤ìÀã·î²Ö";
10796 if (desc) return "¹¶·â²ó¿ô¤¬Áý¤¨¡¢Î䵤ÂÑÀ¤Î¤Ê¤¤¥â¥ó¥¹¥¿¡¼¤ËÂç¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£";
10798 if (name) return "Midare-Setsugekka";
10799 if (desc) return "Attacks a monster with increased number of attacks and more damage unless it has resistance to cold.";
10806 if (!get_rep_dir2(&dir)) return NULL;
10807 if (dir == 5) return NULL;
10812 if (cave[y][x].m_idx)
10813 py_attack(y, x, HISSATSU_COLD);
10817 msg_print("¤½¤ÎÊý¸þ¤Ë¤Ï¥â¥ó¥¹¥¿¡¼¤Ï¤¤¤Þ¤»¤ó¡£");
10819 msg_print("There is no monster.");
10828 if (name) return "µÞ½êÆͤ";
10829 if (desc) return "¥â¥ó¥¹¥¿¡¼¤ò°ì·â¤ÇÅݤ¹¹¶·â¤ò·«¤ê½Ð¤¹¡£¼ºÇÔ¤¹¤ë¤È1ÅÀ¤·¤«¥À¥á¡¼¥¸¤òÍ¿¤¨¤é¤ì¤Ê¤¤¡£";
10831 if (name) return "Spot Aiming";
10832 if (desc) return "Attempts to kill a monster instantly. If failed cause only 1HP of damage.";
10839 if (!get_rep_dir2(&dir)) return NULL;
10840 if (dir == 5) return NULL;
10845 if (cave[y][x].m_idx)
10846 py_attack(y, x, HISSATSU_KYUSHO);
10850 msg_print("¤½¤ÎÊý¸þ¤Ë¤Ï¥â¥ó¥¹¥¿¡¼¤Ï¤¤¤Þ¤»¤ó¡£");
10852 msg_print("There is no monster.");
10861 if (name) return "Ëâ¿À»Â¤ê";
10862 if (desc) return "²ñ¿´¤Î°ì·â¤Ç¹¶·â¤¹¤ë¡£¹¶·â¤¬¤«¤ï¤µ¤ì¤ä¤¹¤¤¡£";
10864 if (name) return "Majingiri";
10865 if (desc) return "Attempts to attack with critical hit. But this attack is easy to evade for a monster.";
10872 if (!get_rep_dir2(&dir)) return NULL;
10873 if (dir == 5) return NULL;
10878 if (cave[y][x].m_idx)
10879 py_attack(y, x, HISSATSU_MAJIN);
10883 msg_print("¤½¤ÎÊý¸þ¤Ë¤Ï¥â¥ó¥¹¥¿¡¼¤Ï¤¤¤Þ¤»¤ó¡£");
10885 msg_print("There is no monster.");
10894 if (name) return "¼Î¤Æ¿È";
10895 if (desc) return "¶¯ÎϤʹ¶·â¤ò·«¤ê½Ð¤¹¡£¼¡¤Î¥¿¡¼¥ó¤Þ¤Ç¤Î´Ö¡¢¿©¤é¤¦¥À¥á¡¼¥¸¤¬Áý¤¨¤ë¡£";
10897 if (name) return "Desperate Attack";
10898 if (desc) return "Attacks with all of your power. But all damages you take will be doubled for one turn.";
10905 if (!get_rep_dir2(&dir)) return NULL;
10906 if (dir == 5) return NULL;
10911 if (cave[y][x].m_idx)
10912 py_attack(y, x, HISSATSU_SUTEMI);
10916 msg_print("¤½¤ÎÊý¸þ¤Ë¤Ï¥â¥ó¥¹¥¿¡¼¤Ï¤¤¤Þ¤»¤ó¡£");
10918 msg_print("There is no monster.");
10922 p_ptr->sutemi = TRUE;
10928 if (name) return "Íë·âÏÉÄÞ»Â";
10929 if (desc) return "ÅÅ·âÂÑÀ¤Î¤Ê¤¤¥â¥ó¥¹¥¿¡¼¤ËÈó¾ï¤ËÂ礤¤¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£";
10931 if (name) return "Lightning Eagle";
10932 if (desc) return "Attacks a monster with more damage unless it has resistance to electricity.";
10939 if (!get_rep_dir2(&dir)) return NULL;
10940 if (dir == 5) return NULL;
10945 if (cave[y][x].m_idx)
10946 py_attack(y, x, HISSATSU_ELEC);
10950 msg_print("¤½¤ÎÊý¸þ¤Ë¤Ï¥â¥ó¥¹¥¿¡¼¤Ï¤¤¤Þ¤»¤ó¡£");
10952 msg_print("There is no monster.");
10961 if (name) return "Æþ¿È";
10962 if (desc) return "ÁÇÁ᤯Áê¼ê¤Ë¶á´ó¤ê¹¶·â¤¹¤ë¡£";
10964 if (name) return "Rush Attack";
10965 if (desc) return "Steps close to a monster and attacks at a time.";
10970 if (!rush_attack(NULL)) return NULL;
10976 if (name) return "ÀÖή±²";
10977 if (desc) return "¼«Ê¬¼«¿È¤â½ý¤òºî¤ê¤Ä¤Ä¡¢¤½¤Î½ý¤¬¿¼¤¤¤Û¤ÉÂ礤¤°ÒÎϤÇÁ´Êý¸þ¤ÎŨ¤ò¹¶·â¤Ç¤¤ë¡£À¸¤¤Æ¤¤¤Ê¤¤¥â¥ó¥¹¥¿¡¼¤Ë¤Ï¸ú²Ì¤¬¤Ê¤¤¡£";
10979 if (name) return "Bloody Maelstrom";
10980 if (desc) return "Attacks all adjacent monsters with power corresponding to your cut status. Then increases your cut status. No effect to unliving monsters.";
10988 monster_type *m_ptr;
10990 if (p_ptr->cut < 300)
10991 set_cut(p_ptr->cut + 300);
10993 set_cut(p_ptr->cut * 2);
10995 for (dir = 0; dir < 8; dir++)
10997 y = py + ddy_ddd[dir];
10998 x = px + ddx_ddd[dir];
10999 c_ptr = &cave[y][x];
11001 /* Get the monster */
11002 m_ptr = &m_list[c_ptr->m_idx];
11004 /* Hack -- attack monsters */
11005 if (c_ptr->m_idx && (m_ptr->ml || cave_have_flag_bold(y, x, FF_PROJECT)))
11007 if (!monster_living(&r_info[m_ptr->r_idx]))
11011 monster_desc(m_name, m_ptr, 0);
11013 msg_format("%s¤Ë¤Ï¸ú²Ì¤¬¤Ê¤¤¡ª", m_name);
11015 msg_format("%s is unharmed!", m_name);
11018 else py_attack(y, x, HISSATSU_SEKIRYUKA);
11026 if (name) return "·ã¿Ì·â";
11027 if (desc) return "ÃϿ̤òµ¯¤³¤¹¡£";
11029 if (name) return "Earthquake Blow";
11030 if (desc) return "Shakes dungeon structure, and results in random swapping of floors and walls.";
11037 if (!get_rep_dir2(&dir)) return NULL;
11038 if (dir == 5) return NULL;
11043 if (cave[y][x].m_idx)
11044 py_attack(y, x, HISSATSU_QUAKE);
11046 earthquake(py, px, 10);
11052 if (name) return "ÃÏÁö¤ê";
11053 if (desc) return "¾×·âÇȤΥӡ¼¥à¤òÊü¤Ä¡£";
11055 if (name) return "Crack";
11056 if (desc) return "Fires a beam of shock wave.";
11061 int total_damage = 0, basedam, i;
11062 u32b flgs[TR_FLAG_SIZE];
11063 object_type *o_ptr;
11064 if (!get_aim_dir(&dir)) return NULL;
11066 msg_print("Éð´ï¤òÂ礤¯¿¶¤ê²¼¤í¤·¤¿¡£");
11068 msg_print("You swing your weapon downward.");
11070 for (i = 0; i < 2; i++)
11074 if (!buki_motteruka(INVEN_RARM+i)) break;
11075 o_ptr = &inventory[INVEN_RARM+i];
11076 basedam = (o_ptr->dd * (o_ptr->ds + 1)) * 50;
11077 damage = o_ptr->to_d * 100;
11078 object_flags(o_ptr, flgs);
11079 if ((o_ptr->name1 == ART_VORPAL_BLADE) || (o_ptr->name1 == ART_CHAINSWORD))
11085 else if (have_flag(flgs, TR_VORPAL))
11087 /* vorpal flag only */
11092 damage *= p_ptr->num_blow[i];
11093 total_damage += damage / 200;
11094 if (i) total_damage = total_damage*7/10;
11096 fire_beam(GF_FORCE, dir, total_damage);
11102 if (name) return "µ¤Ç÷¤Îͺ¶«¤Ó";
11103 if (desc) return "»ë³¦Æâ¤ÎÁ´¥â¥ó¥¹¥¿¡¼¤ËÂФ·¤Æ¹ì²»¤Î¹¶·â¤ò¹Ô¤¦¡£¤µ¤é¤Ë¡¢¶á¤¯¤Ë¤¤¤ë¥â¥ó¥¹¥¿¡¼¤òÅܤ餻¤ë¡£";
11105 if (name) return "War Cry";
11106 if (desc) return "Damages all monsters in sight with sound. Aggravate nearby monsters.";
11112 msg_print("ͺ¶«¤Ó¤ò¤¢¤²¤¿¡ª");
11114 msg_print("You roar out!");
11116 project_hack(GF_SOUND, randint1(plev * 3));
11117 aggravate_monsters(0);
11123 if (name) return "̵Áл°ÃÊ";
11124 if (desc) return "¶¯ÎϤÊ3Ãʹ¶·â¤ò·«¤ê½Ð¤¹¡£";
11126 if (name) return "Musou-Sandan";
11127 if (desc) return "Attacks with powerful 3 strikes.";
11134 if (!get_rep_dir2(&dir)) return NULL;
11135 if (dir == 5) return NULL;
11137 for (i = 0; i < 3; i++)
11143 monster_type *m_ptr;
11147 c_ptr = &cave[y][x];
11150 py_attack(y, x, HISSATSU_3DAN);
11154 msg_print("¤½¤ÎÊý¸þ¤Ë¤Ï¥â¥ó¥¹¥¿¡¼¤Ï¤¤¤Þ¤»¤ó¡£");
11156 msg_print("There is no monster.");
11161 if (d_info[dungeon_type].flags1 & DF1_NO_MELEE)
11166 /* Monster is dead? */
11167 if (!c_ptr->m_idx) break;
11171 m_idx = c_ptr->m_idx;
11172 m_ptr = &m_list[m_idx];
11174 /* Monster cannot move back? */
11175 if (!monster_can_enter(ny, nx, &r_info[m_ptr->r_idx], 0))
11178 if (i < 2) msg_print(NULL);
11183 cave[ny][nx].m_idx = m_idx;
11187 update_mon(m_idx, TRUE);
11189 /* Redraw the old spot */
11192 /* Redraw the new spot */
11195 /* Player can move forward? */
11196 if (player_can_enter(c_ptr->feat, 0))
11198 /* Move the player */
11199 if (!move_player_effect(y, x, MPE_FORGET_FLOW | MPE_HANDLE_STUFF | MPE_DONT_PICKUP)) break;
11207 if (i < 2) msg_print(NULL);
11214 if (name) return "µÛ·ìµ´¤Î²ç";
11215 if (desc) return "¹¶·â¤·¤¿Áê¼ê¤ÎÂÎÎϤòµÛ¤¤¤È¤ê¡¢¼«Ê¬¤ÎÂÎÎϤò²óÉü¤µ¤»¤ë¡£À¸Ì¿¤ò»ý¤¿¤Ê¤¤¥â¥ó¥¹¥¿¡¼¤Ë¤ÏÄ̤¸¤Ê¤¤¡£";
11217 if (name) return "Vampire's Fang";
11218 if (desc) return "Attacks with vampiric strikes which absorbs HP from a monster and gives them to you. No effect to unliving monsters.";
11225 if (!get_rep_dir2(&dir)) return NULL;
11226 if (dir == 5) return NULL;
11231 if (cave[y][x].m_idx)
11232 py_attack(y, x, HISSATSU_DRAIN);
11236 msg_print("¤½¤ÎÊý¸þ¤Ë¤Ï¥â¥ó¥¹¥¿¡¼¤Ï¤¤¤Þ¤»¤ó¡£");
11238 msg_print("There is no monster.");
11247 if (name) return "¸¸ÏÇ";
11248 if (desc) return "»ë³¦Æâ¤Îµ¯¤¤Æ¤¤¤ëÁ´¥â¥ó¥¹¥¿¡¼¤ËÛ¯Û°¡¢º®Íð¡¢Ì²¤ê¤òÍ¿¤¨¤è¤¦¤È¤¹¤ë¡£";
11250 if (name) return "Moon Dazzling";
11251 if (desc) return "Attempts to stun, confuse and sleep all waking monsters.";
11257 msg_print("Éð´ï¤òÉÔµ¬Â§¤ËÍɤ餷¤¿¡¥¡¥¡¥");
11259 msg_print("You irregularly wave your weapon...");
11261 project_hack(GF_ENGETSU, plev * 4);
11262 project_hack(GF_ENGETSU, plev * 4);
11263 project_hack(GF_ENGETSU, plev * 4);
11269 if (name) return "É´¿Í»Â¤ê";
11270 if (desc) return "Ϣ³¤·¤ÆÆþ¿È¤Ç¥â¥ó¥¹¥¿¡¼¤ò¹¶·â¤¹¤ë¡£¹¶·â¤¹¤ë¤¿¤Ó¤ËMP¤ò¾ÃÈñ¡£MP¤¬¤Ê¤¯¤Ê¤ë¤«¡¢¥â¥ó¥¹¥¿¡¼¤òÅݤ»¤Ê¤«¤Ã¤¿¤éÉ´¿Í»Â¤ê¤Ï½ªÎ»¤¹¤ë¡£";
11272 if (name) return "Hundred Slaughter";
11273 if (desc) return "Performs a series of rush attacks. The series continues while killing each monster in a time and SP remains.";
11278 const int mana_cost_per_monster = 8;
11279 bool is_new = TRUE;
11284 if (!rush_attack(&mdeath)) break;
11287 /* Reserve needed mana point */
11288 p_ptr->csp -= technic_info[REALM_HISSATSU - MIN_TECHNIC][26].smana;
11292 p_ptr->csp -= mana_cost_per_monster;
11294 if (!mdeath) break;
11297 p_ptr->redraw |= PR_MANA;
11300 while (p_ptr->csp > mana_cost_per_monster);
11302 if (is_new) return NULL;
11304 /* Restore reserved mana */
11305 p_ptr->csp += technic_info[REALM_HISSATSU - MIN_TECHNIC][26].smana;
11311 if (name) return "Å·æÆζÁ®";
11312 if (desc) return "»ë³¦Æâ¤Î¾ì½ê¤ò»ØÄꤷ¤Æ¡¢¤½¤Î¾ì½ê¤È¼«Ê¬¤Î´Ö¤Ë¤¤¤ëÁ´¥â¥ó¥¹¥¿¡¼¤ò¹¶·â¤·¡¢¤½¤Î¾ì½ê¤Ë°ÜÆ°¤¹¤ë¡£";
11314 if (name) return "Dragonic Flash";
11315 if (desc) return "Runs toward given location while attacking all monsters on the path.";
11322 if (!tgt_pt(&x, &y)) return NULL;
11324 if (!cave_player_teleportable_bold(y, x, 0L) ||
11325 (distance(y, x, py, px) > MAX_SIGHT / 2) ||
11326 !projectable(py, px, y, x))
11329 msg_print("¼ºÇÔ¡ª");
11331 msg_print("You cannot move to that place!");
11335 if (p_ptr->anti_tele)
11338 msg_print("ÉԻ׵ĤÊÎϤ¬¥Æ¥ì¥Ý¡¼¥È¤òËɤ¤¤À¡ª");
11340 msg_print("A mysterious force prevents you from teleporting!");
11345 project(0, 0, y, x, HISSATSU_ISSEN, GF_ATTACK, PROJECT_BEAM | PROJECT_KILL, -1);
11346 teleport_player_to(y, x, 0L);
11352 if (name) return "Æó½Å¤Î·õ·â";
11353 if (desc) return "1¥¿¡¼¥ó¤Ç2ÅÙ¹¶·â¤ò¹Ô¤¦¡£";
11355 if (name) return "Twin Slash";
11356 if (desc) return "double attacks at a time.";
11363 if (!get_rep_dir(&dir, FALSE)) return NULL;
11368 if (cave[y][x].m_idx)
11370 py_attack(y, x, 0);
11371 if (cave[y][x].m_idx)
11374 py_attack(y, x, 0);
11380 msg_print("¤½¤ÎÊý¸þ¤Ë¤Ï¥â¥ó¥¹¥¿¡¼¤Ï¤¤¤Þ¤»¤ó¡£");
11382 msg_print("You don't see any monster in this direction");
11391 if (name) return "¸×ÉúÀäÅáÀª";
11392 if (desc) return "¶¯ÎϤʹ¶·â¤ò¹Ô¤¤¡¢¶á¤¯¤Î¾ì½ê¤Ë¤â¸ú²Ì¤¬µÚ¤Ö¡£";
11394 if (name) return "Kofuku-Zettousei";
11395 if (desc) return "Performs a powerful attack which even effect nearby monsters.";
11400 int total_damage = 0, basedam, i;
11402 u32b flgs[TR_FLAG_SIZE];
11403 object_type *o_ptr;
11405 if (!get_rep_dir2(&dir)) return NULL;
11406 if (dir == 5) return NULL;
11411 if (d_info[dungeon_type].flags1 & DF1_NO_MELEE)
11414 msg_print("¤Ê¤¼¤«¹¶·â¤¹¤ë¤³¤È¤¬¤Ç¤¤Ê¤¤¡£");
11416 msg_print("Something prevent you from attacking.");
11421 msg_print("Éð´ï¤òÂ礤¯¿¶¤ê²¼¤í¤·¤¿¡£");
11423 msg_print("You swing your weapon downward.");
11425 for (i = 0; i < 2; i++)
11428 if (!buki_motteruka(INVEN_RARM+i)) break;
11429 o_ptr = &inventory[INVEN_RARM+i];
11430 basedam = (o_ptr->dd * (o_ptr->ds + 1)) * 50;
11431 damage = o_ptr->to_d * 100;
11432 object_flags(o_ptr, flgs);
11433 if ((o_ptr->name1 == ART_VORPAL_BLADE) || (o_ptr->name1 == ART_CHAINSWORD))
11439 else if (have_flag(flgs, TR_VORPAL))
11441 /* vorpal flag only */
11446 damage += p_ptr->to_d[i] * 100;
11447 damage *= p_ptr->num_blow[i];
11448 total_damage += (damage / 100);
11450 project(0, (cave_have_flag_bold(y, x, FF_PROJECT) ? 5 : 0), y, x, total_damage * 3 / 2, GF_METEOR, PROJECT_KILL | PROJECT_JUMP | PROJECT_ITEM, -1);
11456 if (name) return "·Ä±Àµ´Ç¦·õ";
11457 if (desc) return "¼«Ê¬¤â¥À¥á¡¼¥¸¤ò¤¯¤é¤¦¤¬¡¢Áê¼ê¤ËÈó¾ï¤ËÂ礤ʥÀ¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£¥¢¥ó¥Ç¥Ã¥É¤Ë¤ÏÆä˸ú²Ì¤¬¤¢¤ë¡£";
11459 if (name) return "Keiun-Kininken";
11460 if (desc) return "Attacks a monster with extremely powerful damage. But you also takes some damages. Hurts a undead monster greatly.";
11467 if (!get_rep_dir2(&dir)) return NULL;
11468 if (dir == 5) return NULL;
11473 if (cave[y][x].m_idx)
11474 py_attack(y, x, HISSATSU_UNDEAD);
11478 msg_print("¤½¤ÎÊý¸þ¤Ë¤Ï¥â¥ó¥¹¥¿¡¼¤Ï¤¤¤Þ¤»¤ó¡£");
11480 msg_print("There is no monster.");
11485 take_hit(DAMAGE_NOESCAPE, 100 + randint1(100), "·Ä±Àµ´Ç¦·õ¤ò»È¤Ã¤¿¾×·â", -1);
11487 take_hit(DAMAGE_NOESCAPE, 100 + randint1(100), "exhaustion on using Keiun-Kininken", -1);
11494 if (name) return "ÀÚÊ¢";
11495 if (desc) return "¡ÖÉð»ÎÆ»¤È¤Ï¡¢»à¤Ì¤³¤È¤È¸«¤Ä¤±¤¿¤ê¡£¡×";
11497 if (name) return "Harakiri";
11498 if (desc) return "'Busido is found in death'";
11505 if (!get_check("ËÜÅö¤Ë¼«»¦¤·¤Þ¤¹¤«¡©")) return NULL;
11507 if (!get_check("Do you really want to commit suicide? ")) return NULL;
11509 /* Special Verification for suicide */
11511 prt("³Îǧ¤Î¤¿¤á '@' ¤ò²¡¤·¤Æ²¼¤µ¤¤¡£", 0, 0);
11513 prt("Please verify SUICIDE by typing the '@' sign: ", 0, 0);
11519 if (i != '@') return NULL;
11520 if (p_ptr->total_winner)
11522 take_hit(DAMAGE_FORCE, 9999, "Seppuku", -1);
11523 p_ptr->total_winner = TRUE;
11528 msg_print("Éð»ÎÆ»¤È¤Ï¡¢»à¤Ì¤³¤È¤È¸«¤Ä¤±¤¿¤ê¡£");
11530 msg_print("Meaning of Bushi-do is found in the death.");
11532 take_hit(DAMAGE_FORCE, 9999, "Seppuku", -1);
11542 * @brief ¼ö½ÑÎΰè¤ÎÉð´ï¼öÇû¤ÎÂоݤˤǤ¤ëÉð´ï¤«¤É¤¦¤«¤òÊÖ¤¹¡£ / An "item_tester_hook" for offer
11543 * @param o_ptr ¥ª¥Ö¥¸¥§¥¯¥È¹½Â¤ÂΤλ²¾È¥Ý¥¤¥ó¥¿
11544 * @return ¼öÇû²Äǽ¤ÊÉð´ï¤Ê¤é¤ÐTRUE¤òÊÖ¤¹
11546 static bool item_tester_hook_weapon_except_bow(object_type *o_ptr)
11548 switch (o_ptr->tval)
11563 * @brief ¼ö½ÑÎΰè¤Î³Æ½èÍý¤Ë»È¤¨¤ë¼ö¤ï¤ì¤¿ÁõÈ÷¤«¤É¤¦¤«¤òÊÖ¤¹¡£ / An "item_tester_hook" for offer
11564 * @param o_ptr ¥ª¥Ö¥¸¥§¥¯¥È¹½Â¤ÂΤλ²¾È¥Ý¥¤¥ó¥¿
11565 * @return »È¤¨¤ëÁõÈ÷¤Ê¤é¤ÐTRUE¤òÊÖ¤¹
11567 static bool item_tester_hook_cursed(object_type *o_ptr)
11569 return (bool)(object_is_cursed(o_ptr));
11573 * @brief ¼ö½ÑÎΰèËâË¡¤Î³Æ½èÍý¤ò¹Ô¤¦
11574 * @param spell ËâË¡ID
11575 * @param mode ½èÍýÆâÍÆ (SPELL_NAME / SPELL_DESC / SPELL_INFO / SPELL_CAST / SPELL_CONT / SPELL_STOP)
11576 * @return SPELL_NAME / SPELL_DESC / SPELL_INFO »þ¤Ë¤Ïʸ»úÎó¥Ý¥¤¥ó¥¿¤òÊÖ¤¹¡£SPELL_CAST / SPELL_CONT / SPELL_STOP »þ¤ÏNULLʸ»úÎó¤òÊÖ¤¹¡£
11578 static cptr do_hex_spell(int spell, int mode)
11580 bool name = (mode == SPELL_NAME) ? TRUE : FALSE;
11581 bool desc = (mode == SPELL_DESC) ? TRUE : FALSE;
11582 bool info = (mode == SPELL_INFO) ? TRUE : FALSE;
11583 bool cast = (mode == SPELL_CAST) ? TRUE : FALSE;
11584 bool cont = (mode == SPELL_CONT) ? TRUE : FALSE;
11585 bool stop = (mode == SPELL_STOP) ? TRUE : FALSE;
11589 int plev = p_ptr->lev;
11594 /*** 1st book (0-7) ***/
11597 if (name) return "¼Ù¤Ê¤ë½ËÊ¡";
11598 if (desc) return "½ËÊ¡¤Ë¤è¤ê¹¶·âÀºÅÙ¤ÈËɸæÎϤ¬¾å¤¬¤ë¡£";
11600 if (name) return "Evily blessing";
11601 if (desc) return "Attempts to increase +to_hit of a weapon and AC";
11605 if (!p_ptr->blessed)
11608 msg_print("¹â·é¤Êµ¤Ê¬¤Ë¤Ê¤Ã¤¿¡ª");
11610 msg_print("You feel righteous!");
11616 if (!p_ptr->blessed)
11619 msg_print("¹â·é¤Êµ¤Ê¬¤¬¾Ã¤¨¼º¤»¤¿¡£");
11621 msg_print("The prayer has expired.");
11629 if (name) return "·Ú½ý¤Î¼£Ìþ";
11630 if (desc) return "HP¤ä½ý¤ò¾¯¤·²óÉü¤µ¤»¤ë¡£";
11632 if (name) return "Cure light wounds";
11633 if (desc) return "Heals cut and HP a little.";
11635 if (info) return info_heal(1, 10, 0);
11639 msg_print("µ¤Ê¬¤¬Îɤ¯¤Ê¤Ã¤Æ¤¯¤ë¡£");
11641 msg_print("You feel better and better.");
11646 hp_player(damroll(1, 10));
11647 set_cut(p_ptr->cut - 10);
11653 if (name) return "°Ëâ¤Î¥ª¡¼¥é";
11654 if (desc) return "±ê¤Î¥ª¡¼¥é¤ò¿È¤Ë¤Þ¤È¤¤¡¢²óÉü®ÅÙ¤¬Â®¤¯¤Ê¤ë¡£";
11656 if (name) return "Demonic aura";
11657 if (desc) return "Gives fire aura and regeneration.";
11662 msg_print("ÂΤ¬±ê¤Î¥ª¡¼¥é¤Çʤ¤ï¤ì¤¿¡£");
11664 msg_print("You have enveloped by fiery aura!");
11670 msg_print("±ê¤Î¥ª¡¼¥é¤¬¾Ã¤¨µî¤Ã¤¿¡£");
11672 msg_print("Fiery aura disappeared.");
11679 if (name) return "°½Ì¸";
11680 if (desc) return "»ë³¦Æâ¤Î¥â¥ó¥¹¥¿¡¼¤ËÈù¼åÎ̤ÎÆǤΥÀ¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£";
11682 if (name) return "Stinking mist";
11683 if (desc) return "Deals few damages of poison to all monsters in your sight.";
11685 power = plev / 2 + 5;
11686 if (info) return info_damage(1, power, 0);
11689 project_hack(GF_POIS, randint1(power));
11695 if (name) return "ÏÓÎ϶¯²½";
11696 if (desc) return "½Ñ¼Ô¤ÎÏÓÎϤò¾å¾º¤µ¤»¤ë¡£";
11698 if (name) return "Extra might";
11699 if (desc) return "Attempts to increase your strength.";
11704 msg_print("²¿¤À¤«ÎϤ¬Í¯¤¤¤ÆÍè¤ë¡£");
11706 msg_print("You feel you get stronger.");
11713 if (name) return "Éð´ï¼öÇû";
11714 if (desc) return "ÁõÈ÷¤·¤Æ¤¤¤ëÉð´ï¤ò¼ö¤¦¡£";
11716 if (name) return "Curse weapon";
11717 if (desc) return "Curses your weapon.";
11723 char o_name[MAX_NLEN];
11724 object_type *o_ptr;
11725 u32b f[TR_FLAG_SIZE];
11727 item_tester_hook = item_tester_hook_weapon_except_bow;
11729 q = "¤É¤ì¤ò¼ö¤¤¤Þ¤¹¤«¡©";
11730 s = "Éð´ï¤òÁõÈ÷¤·¤Æ¤¤¤Ê¤¤¡£";
11732 q = "Which weapon do you curse?";
11733 s = "You wield no weapons.";
11736 if (!get_item(&item, q, s, (USE_EQUIP))) return FALSE;
11738 o_ptr = &inventory[item];
11739 object_desc(o_name, o_ptr, OD_NAME_ONLY);
11740 object_flags(o_ptr, f);
11743 if (!get_check(format("ËÜÅö¤Ë %s ¤ò¼ö¤¤¤Þ¤¹¤«¡©", o_name))) return FALSE;
11745 if (!get_check(format("Do you curse %s, really¡©", o_name))) return FALSE;
11749 (object_is_artifact(o_ptr) || have_flag(f, TR_BLESSED)))
11752 msg_format("%s ¤Ï¼ö¤¤¤òÄ·¤ÍÊÖ¤·¤¿¡£", o_name);
11754 msg_format("%s resists the effect.", o_name);
11758 if (o_ptr->to_d > 0)
11760 o_ptr->to_d -= randint1(3) % 2;
11761 if (o_ptr->to_d < 0) o_ptr->to_d = 0;
11763 if (o_ptr->to_h > 0)
11765 o_ptr->to_h -= randint1(3) % 2;
11766 if (o_ptr->to_h < 0) o_ptr->to_h = 0;
11768 if (o_ptr->to_a > 0)
11770 o_ptr->to_a -= randint1(3) % 2;
11771 if (o_ptr->to_a < 0) o_ptr->to_a = 0;
11774 msg_format("%s ¤ÏÎô²½¤·¤Æ¤·¤Þ¤Ã¤¿¡£", o_name);
11776 msg_format("Your %s was disenchanted!", o_name);
11784 msg_format("¶²ÉݤΰŹõ¥ª¡¼¥é¤¬¤¢¤Ê¤¿¤Î%s¤òÊñ¤ß¹þ¤ó¤À¡ª", o_name);
11786 msg_format("A terrible black aura blasts your %s!", o_name);
11788 o_ptr->curse_flags |= (TRC_CURSED);
11790 if (object_is_artifact(o_ptr) || object_is_ego(o_ptr))
11793 if (one_in_(3)) o_ptr->curse_flags |= (TRC_HEAVY_CURSE);
11796 o_ptr->curse_flags |= (TRC_TY_CURSE);
11797 if (one_in_(666)) o_ptr->curse_flags |= (TRC_PERMA_CURSE);
11799 add_flag(o_ptr->art_flags, TR_AGGRAVATE);
11800 add_flag(o_ptr->art_flags, TR_VORPAL);
11801 add_flag(o_ptr->art_flags, TR_VAMPIRIC);
11803 msg_print("·ì¤À¡ª·ì¤À¡ª·ì¤À¡ª");
11805 msg_print("Blood, Blood, Blood!");
11811 o_ptr->curse_flags |= get_curse(power, o_ptr);
11814 p_ptr->update |= (PU_BONUS);
11821 if (name) return "¼Ù°´¶ÃÎ";
11822 if (desc) return "¼þ°Ï¤Î¼Ù°¤Ê¥â¥ó¥¹¥¿¡¼¤ò´¶ÃΤ¹¤ë¡£";
11824 if (name) return "Evil detection";
11825 if (desc) return "Detects evil monsters.";
11827 if (info) return info_range(MAX_SIGHT);
11831 msg_print("¼Ù°¤ÊÀ¸Êª¤Î¸ºß¤ò´¶¤¸¼è¤í¤¦¤È¤·¤¿¡£");
11833 msg_print("You attend to the presence of evil creatures.");
11840 if (name) return "²æËý";
11841 if (desc) return "¿ô¥¿¡¼¥ó¹¶·â¤òÂѤ¨¤¿¸å¡¢¼õ¤±¤¿¥À¥á¡¼¥¸¤òÃϹö¤Î¶È²Ð¤È¤·¤Æ¼þ°Ï¤ËÊü½Ð¤¹¤ë¡£";
11843 if (name) return "Patience";
11844 if (desc) return "Bursts hell fire strongly after patients any damage while few turns.";
11846 power = MIN(200, (p_ptr->magic_num1[2] * 2));
11847 if (info) return info_damage(0, 0, power);
11850 int a = 3 - (p_ptr->pspeed - 100) / 10;
11851 int r = 3 + randint1(3) + MAX(0, MIN(3, a));
11853 if (p_ptr->magic_num2[2] > 0)
11856 msg_print("¤¹¤Ç¤Ë²æËý¤ò¤·¤Æ¤¤¤ë¡£");
11858 msg_print("You are already patienting.");
11863 p_ptr->magic_num2[1] = 1;
11864 p_ptr->magic_num2[2] = r;
11865 p_ptr->magic_num1[2] = 0;
11867 msg_print("¤¸¤Ã¤ÈÂѤ¨¤ë¤³¤È¤Ë¤·¤¿¡£");
11869 msg_print("You decide to patient all damages.");
11875 int rad = 2 + (power / 50);
11877 p_ptr->magic_num2[2]--;
11879 if ((p_ptr->magic_num2[2] <= 0) || (power >= 200))
11882 msg_print("²æËý¤¬²ò¤«¤ì¤¿¡ª");
11884 msg_print("Time for end of patioence!");
11888 project(0, rad, py, px, power, GF_HELL_FIRE,
11889 (PROJECT_STOP | PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL), -1);
11894 msg_format("%dÅÀ¤Î¥À¥á¡¼¥¸¤òÊÖ¤·¤¿¡£", power);
11896 msg_format("You return %d damages.", power);
11901 p_ptr->magic_num2[1] = 0;
11902 p_ptr->magic_num2[2] = 0;
11903 p_ptr->magic_num1[2] = 0;
11908 /*** 2nd book (8-15) ***/
11911 if (name) return "ɹ¤Î³»";
11912 if (desc) return "ɹ¤Î¥ª¡¼¥é¤ò¿È¤Ë¤Þ¤È¤¤¡¢ËɸæÎϤ¬¾å¾º¤¹¤ë¡£";
11914 if (name) return "Ice armor";
11915 if (desc) return "Gives fire aura and bonus to AC.";
11920 msg_print("ÂΤ¬É¹¤Î³»¤Çʤ¤ï¤ì¤¿¡£");
11922 msg_print("You have enveloped by ice armor!");
11928 msg_print("ɹ¤Î³»¤¬¾Ã¤¨µî¤Ã¤¿¡£");
11930 msg_print("Ice armor disappeared.");
11937 if (name) return "½Å½ý¤Î¼£Ìþ";
11938 if (desc) return "ÂÎÎϤä½ý¤ò¿¾¯²óÉü¤µ¤»¤ë¡£";
11940 if (name) return "Cure serious wounds";
11941 if (desc) return "Heals cut and HP more.";
11943 if (info) return info_heal(2, 10, 0);
11947 msg_print("µ¤Ê¬¤¬Îɤ¯¤Ê¤Ã¤Æ¤¯¤ë¡£");
11949 msg_print("You feel better and better.");
11954 hp_player(damroll(2, 10));
11955 set_cut((p_ptr->cut / 2) - 10);
11961 if (name) return "ÌôÉʵÛÆþ";
11962 if (desc) return "¼öʸ±Ó¾§¤òÃæ»ß¤¹¤ë¤³¤È¤Ê¤¯¡¢Ìô¤Î¸ú²Ì¤òÆÀ¤ë¤³¤È¤¬¤Ç¤¤ë¡£";
11964 if (name) return "Inhail potion";
11965 if (desc) return "Quaffs a potion without canceling of casting a spell.";
11969 p_ptr->magic_num1[0] |= (1L << HEX_INHAIL);
11970 do_cmd_quaff_potion();
11971 p_ptr->magic_num1[0] &= ~(1L << HEX_INHAIL);
11978 if (name) return "µÛ·ì̸";
11979 if (desc) return "»ë³¦Æâ¤Î¥â¥ó¥¹¥¿¡¼¤ËÈù¼åÎ̤ÎÀ¸Ì¿Îϵۼý¤Î¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£Í¿¤¨¤¿¥À¥á¡¼¥¸¤Îʬ¡¢ÂÎÎϤ¬²óÉü¤¹¤ë¡£";
11981 if (name) return "Vampiric mist";
11982 if (desc) return "Deals few dameges of drain life to all monsters in your sight.";
11984 power = (plev / 2) + 5;
11985 if (info) return info_damage(1, power, 0);
11988 project_hack(GF_OLD_DRAIN, randint1(power));
11994 if (name) return "Ëâ·õ²½";
11995 if (desc) return "Éð´ï¤Î¹¶·âÎϤò¾å¤²¤ë¡£ÀÚ¤ìÌ£¤òÆÀ¡¢¼ö¤¤¤Ë±þ¤¸¤ÆÍ¿¤¨¤ë¥À¥á¡¼¥¸¤¬¾å¾º¤·¡¢Á±Îɤʥâ¥ó¥¹¥¿¡¼¤ËÂФ¹¤ë¥À¥á¡¼¥¸¤¬2Çܤˤʤ롣";
11997 if (name) return "Swords to runeswords";
11998 if (desc) return "Gives vorpal ability to your weapon. Increases damages by your weapon acccording to curse of your weapon.";
12003 msg_print("¤¢¤Ê¤¿¤ÎÉð´ï¤¬¹õ¤¯µ±¤¤¤¿¡£");
12005 if (!empty_hands(FALSE))
12006 msg_print("Your weapons glow bright black.");
12008 msg_print("Your weapon glows bright black.");
12014 msg_print("Éð´ï¤Îµ±¤¤¬¾Ã¤¨µî¤Ã¤¿¡£");
12016 msg_format("Brightness of weapon%s disappeared.", (empty_hands(FALSE)) ? "" : "s");
12023 if (name) return "º®Íð¤Î¼ê";
12024 if (desc) return "¹¶·â¤·¤¿ºÝ¥â¥ó¥¹¥¿¡¼¤òº®Í𤵤»¤ë¡£";
12026 if (name) return "Touch of confusion";
12027 if (desc) return "Confuses a monster when you attack.";
12032 msg_print("¤¢¤Ê¤¿¤Î¼ê¤¬ÀÖ¤¯µ±¤»Ï¤á¤¿¡£");
12034 msg_print("Your hands glow bright red.");
12040 msg_print("¼ê¤Îµ±¤¤¬¤Ê¤¯¤Ê¤Ã¤¿¡£");
12042 msg_print("Brightness on your hands disappeard.");
12049 if (name) return "ÆùÂζ¯²½";
12050 if (desc) return "½Ñ¼Ô¤ÎÏÓÎÏ¡¢´ïÍѤµ¡¢Âѵ×ÎϤò¾å¾º¤µ¤»¤ë¡£¹¶·â²ó¿ô¤Î¾å¸Â¤ò 1 Áý²Ã¤µ¤»¤ë¡£";
12052 if (name) return "Building up";
12053 if (desc) return "Attempts to increases your strength, dexterity and constitusion.";
12058 msg_print("¿ÈÂΤ¬¶¯¤¯¤Ê¤Ã¤¿µ¤¤¬¤·¤¿¡£");
12060 msg_print("You feel your body is developed more now.");
12067 if (name) return "È¿¥Æ¥ì¥Ý¡¼¥È·ë³¦";
12068 if (desc) return "»ë³¦Æâ¤Î¥â¥ó¥¹¥¿¡¼¤Î¥Æ¥ì¥Ý¡¼¥È¤òÁ˳²¤¹¤ë¥Ð¥ê¥¢¤òÄ¥¤ë¡£";
12070 if (name) return "Anti teleport barrier";
12071 if (desc) return "Obstructs all teleportations by monsters in your sight.";
12073 power = plev * 3 / 2;
12074 if (info) return info_power(power);
12078 msg_print("¥Æ¥ì¥Ý¡¼¥È¤òËɤ°¼ö¤¤¤ò¤«¤±¤¿¡£");
12080 msg_print("You feel anyone can not teleport except you.");
12085 /*** 3rd book (16-23) ***/
12088 if (name) return "¾×·â¤Î¥¯¥í¡¼¥¯";
12089 if (desc) return "Åŵ¤¤Î¥ª¡¼¥é¤ò¿È¤Ë¤Þ¤È¤¤¡¢Æ°¤¤¬Â®¤¯¤Ê¤ë¡£";
12091 if (name) return "Cloak of shock";
12092 if (desc) return "Gives lightning aura and a bonus to speed.";
12097 msg_print("ÂΤ¬°ðºÊ¤Î¥ª¡¼¥é¤Çʤ¤ï¤ì¤¿¡£");
12099 msg_print("You have enveloped by electrical aura!");
12105 msg_print("°ðºÊ¤Î¥ª¡¼¥é¤¬¾Ã¤¨µî¤Ã¤¿¡£");
12107 msg_print("Electrical aura disappeared.");
12114 if (name) return "Ã×Ì¿½ý¤Î¼£Ìþ";
12115 if (desc) return "ÂÎÎϤä½ý¤ò²óÉü¤µ¤»¤ë¡£";
12117 if (name) return "Cure critical wounds";
12118 if (desc) return "Heals cut and HP greatry.";
12120 if (info) return info_heal(4, 10, 0);
12124 msg_print("µ¤Ê¬¤¬Îɤ¯¤Ê¤Ã¤Æ¤¯¤ë¡£");
12126 msg_print("You feel better and better.");
12131 hp_player(damroll(4, 10));
12140 if (name) return "¼öÎÏÉõÆþ";
12141 if (desc) return "ËâË¡¤ÎÆ»¶ñ¤ËËâÎϤòºÆ½¼Å¶¤¹¤ë¡£";
12143 if (name) return "Recharging";
12144 if (desc) return "Recharges a magic device.";
12147 if (info) return info_power(power);
12150 if (!recharge(power)) return NULL;
12157 if (name) return "»à¼ÔÉü³è";
12158 if (desc) return "»àÂΤòÁɤ餻¤Æ¥Ú¥Ã¥È¤Ë¤¹¤ë¡£";
12160 if (name) return "Animate Dead";
12161 if (desc) return "Raises corpses and skeletons from dead.";
12166 msg_print("»à¼Ô¤Ø¤Î¸Æ¤Ó¤«¤±¤ò»Ï¤á¤¿¡£");
12168 msg_print("You start to call deads.!");
12173 animate_dead(0, py, px);
12179 if (name) return "Ëɶñ¼öÇû";
12180 if (desc) return "ÁõÈ÷¤·¤Æ¤¤¤ëËɶñ¤Ë¼ö¤¤¤ò¤«¤±¤ë¡£";
12182 if (name) return "Curse armor";
12183 if (desc) return "Curse a piece of armour that you wielding.";
12189 char o_name[MAX_NLEN];
12190 object_type *o_ptr;
12191 u32b f[TR_FLAG_SIZE];
12193 item_tester_hook = object_is_armour;
12195 q = "¤É¤ì¤ò¼ö¤¤¤Þ¤¹¤«¡©";
12196 s = "Ëɶñ¤òÁõÈ÷¤·¤Æ¤¤¤Ê¤¤¡£";
12198 q = "Which piece of armour do you curse?";
12199 s = "You wield no piece of armours.";
12202 if (!get_item(&item, q, s, (USE_EQUIP))) return FALSE;
12204 o_ptr = &inventory[item];
12205 object_desc(o_name, o_ptr, OD_NAME_ONLY);
12206 object_flags(o_ptr, f);
12209 if (!get_check(format("ËÜÅö¤Ë %s ¤ò¼ö¤¤¤Þ¤¹¤«¡©", o_name))) return FALSE;
12211 if (!get_check(format("Do you curse %s, really¡©", o_name))) return FALSE;
12215 (object_is_artifact(o_ptr) || have_flag(f, TR_BLESSED)))
12218 msg_format("%s ¤Ï¼ö¤¤¤òÄ·¤ÍÊÖ¤·¤¿¡£", o_name);
12220 msg_format("%s resists the effect.", o_name);
12224 if (o_ptr->to_d > 0)
12226 o_ptr->to_d -= randint1(3) % 2;
12227 if (o_ptr->to_d < 0) o_ptr->to_d = 0;
12229 if (o_ptr->to_h > 0)
12231 o_ptr->to_h -= randint1(3) % 2;
12232 if (o_ptr->to_h < 0) o_ptr->to_h = 0;
12234 if (o_ptr->to_a > 0)
12236 o_ptr->to_a -= randint1(3) % 2;
12237 if (o_ptr->to_a < 0) o_ptr->to_a = 0;
12240 msg_format("%s ¤ÏÎô²½¤·¤Æ¤·¤Þ¤Ã¤¿¡£", o_name);
12242 msg_format("Your %s was disenchanted!", o_name);
12250 msg_format("¶²ÉݤΰŹõ¥ª¡¼¥é¤¬¤¢¤Ê¤¿¤Î%s¤òÊñ¤ß¹þ¤ó¤À¡ª", o_name);
12252 msg_format("A terrible black aura blasts your %s!", o_name);
12254 o_ptr->curse_flags |= (TRC_CURSED);
12256 if (object_is_artifact(o_ptr) || object_is_ego(o_ptr))
12259 if (one_in_(3)) o_ptr->curse_flags |= (TRC_HEAVY_CURSE);
12262 o_ptr->curse_flags |= (TRC_TY_CURSE);
12263 if (one_in_(666)) o_ptr->curse_flags |= (TRC_PERMA_CURSE);
12265 add_flag(o_ptr->art_flags, TR_AGGRAVATE);
12266 add_flag(o_ptr->art_flags, TR_RES_POIS);
12267 add_flag(o_ptr->art_flags, TR_RES_DARK);
12268 add_flag(o_ptr->art_flags, TR_RES_NETHER);
12270 msg_print("·ì¤À¡ª·ì¤À¡ª·ì¤À¡ª");
12272 msg_print("Blood, Blood, Blood!");
12278 o_ptr->curse_flags |= get_curse(power, o_ptr);
12281 p_ptr->update |= (PU_BONUS);
12288 if (name) return "±Æ¤Î¥¯¥í¡¼¥¯";
12289 if (desc) return "±Æ¤Î¥ª¡¼¥é¤ò¿È¤Ë¤Þ¤È¤¤¡¢Å¨¤Ë±Æ¤Î¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£";
12291 if (name) return "Cloak of shadow";
12292 if (desc) return "Gives aura of shadow.";
12296 object_type *o_ptr = &inventory[INVEN_OUTER];
12301 msg_print("¥¯¥í¡¼¥¯¤ò¿È¤Ë¤Ä¤±¤Æ¤¤¤Ê¤¤¡ª");
12303 msg_print("You don't ware any cloak.");
12307 else if (!object_is_cursed(o_ptr))
12310 msg_print("¥¯¥í¡¼¥¯¤Ï¼ö¤ï¤ì¤Æ¤¤¤Ê¤¤¡ª");
12312 msg_print("Your cloak is not cursed.");
12319 msg_print("±Æ¤Î¥ª¡¼¥é¤ò¿È¤Ë¤Þ¤È¤Ã¤¿¡£");
12321 msg_print("You have enveloped by shadow aura!");
12327 object_type *o_ptr = &inventory[INVEN_OUTER];
12329 if ((!o_ptr->k_idx) || (!object_is_cursed(o_ptr)))
12331 do_spell(REALM_HEX, spell, SPELL_STOP);
12332 p_ptr->magic_num1[0] &= ~(1L << spell);
12333 p_ptr->magic_num2[0]--;
12334 if (!p_ptr->magic_num2[0]) set_action(ACTION_NONE);
12340 msg_print("±Æ¤Î¥ª¡¼¥é¤¬¾Ã¤¨µî¤Ã¤¿¡£");
12342 msg_print("Shadow aura disappeared.");
12349 if (name) return "¶ìÄˤòËâÎϤË";
12350 if (desc) return "»ë³¦Æâ¤Î¥â¥ó¥¹¥¿¡¼¤ËÀº¿À¥À¥á¡¼¥¸Í¿¤¨¡¢ËâÎϤòµÛ¤¤¼è¤ë¡£";
12352 if (name) return "Pains to mana";
12353 if (desc) return "Deals psychic damages to all monsters in sight, and drains some mana.";
12355 power = plev * 3 / 2;
12356 if (info) return info_damage(1, power, 0);
12359 project_hack(GF_PSI_DRAIN, randint1(power));
12365 if (name) return "ÌܤˤÏÌܤò";
12366 if (desc) return "ÂÇ·â¤äËâË¡¤Ç¼õ¤±¤¿¥À¥á¡¼¥¸¤ò¡¢¹¶·â¸µ¤Î¥â¥ó¥¹¥¿¡¼¤Ë¤âÍ¿¤¨¤ë¡£";
12368 if (name) return "Eye for an eye";
12369 if (desc) return "Returns same damage which you got to the monster which damaged you.";
12374 msg_print("Éü½²¤·¤¿¤¤Íß˾¤Ë¤«¤é¤ì¤¿¡£");
12376 msg_print("You wish strongly you want to revenge anything.");
12381 /*** 4th book (24-31) ***/
12384 if (name) return "È¿Áý¿£·ë³¦";
12385 if (desc) return "¤½¤Î³¬¤ÎÁý¿£¤¹¤ë¥â¥ó¥¹¥¿¡¼¤ÎÁý¿£¤òÁ˻ߤ¹¤ë¡£";
12387 if (name) return "Anti multiply barrier";
12388 if (desc) return "Obstructs all multiplying by monsters in entire floor.";
12393 msg_print("Áý¿£¤òÁ˻ߤ¹¤ë¼ö¤¤¤ò¤«¤±¤¿¡£");
12395 msg_print("You feel anyone can not already multiply.");
12402 if (name) return "Á´Éü³è";
12403 if (desc) return "·Ð¸³Ãͤò½ù¡¹¤ËÉü³è¤·¡¢¸º¾¯¤·¤¿Ç½ÎÏÃͤò²óÉü¤µ¤»¤ë¡£";
12405 if (name) return "Restoration";
12406 if (desc) return "Restores experience and status.";
12411 msg_print("ÂΤ¬¸µ¤Î³èÎϤò¼è¤êÌᤷ»Ï¤á¤¿¡£");
12413 msg_print("You feel your lost status starting to return.");
12419 int d = (p_ptr->max_exp - p_ptr->exp);
12420 int r = (p_ptr->exp / 20);
12426 p_ptr->exp = p_ptr->max_exp;
12430 /* Check the experience */
12431 check_experience();
12435 for (i = A_STR; i < 6; i ++)
12437 if (p_ptr->stat_cur[i] < p_ptr->stat_max[i])
12439 if (p_ptr->stat_cur[i] < 18)
12440 p_ptr->stat_cur[i]++;
12442 p_ptr->stat_cur[i] += 10;
12444 if (p_ptr->stat_cur[i] > p_ptr->stat_max[i])
12445 p_ptr->stat_cur[i] = p_ptr->stat_max[i];
12447 /* Recalculate bonuses */
12448 p_ptr->update |= (PU_BONUS);
12457 msg_format("%s¤Î¼öʸ¤Î±Ó¾§¤ò¤ä¤á¤¿¡£", do_spell(REALM_HEX, HEX_RESTORE, SPELL_NAME));
12459 msg_format("Finish casting '%^s'.", do_spell(REALM_HEX, HEX_RESTORE, SPELL_NAME));
12461 p_ptr->magic_num1[0] &= ~(1L << HEX_RESTORE);
12462 if (cont) p_ptr->magic_num2[0]--;
12463 if (p_ptr->magic_num2) p_ptr->action = ACTION_NONE;
12465 /* Redraw status */
12466 p_ptr->update |= (PU_BONUS | PU_HP | PU_MANA | PU_SPELLS);
12467 p_ptr->redraw |= (PR_EXTRA);
12476 if (name) return "¼öÎϵۼý";
12477 if (desc) return "¼ö¤ï¤ì¤¿Éð´ï¤Î¼ö¤¤¤òµÛ¼ý¤·¤ÆËâÎϤò²óÉü¤¹¤ë¡£";
12479 if (name) return "Drain curse power";
12480 if (desc) return "Drains curse on your weapon and heals SP a little.";
12486 u32b f[TR_FLAG_SIZE];
12487 object_type *o_ptr;
12489 item_tester_hook = item_tester_hook_cursed;
12491 q = "¤É¤ÎÁõÈ÷Éʤ«¤éµÛ¼ý¤·¤Þ¤¹¤«¡©";
12492 s = "¼ö¤ï¤ì¤¿¥¢¥¤¥Æ¥à¤òÁõÈ÷¤·¤Æ¤¤¤Ê¤¤¡£";
12494 q = "Which cursed equipment do you drain mana from?";
12495 s = "You have no cursed equipment.";
12498 if (!get_item(&item, q, s, (USE_EQUIP))) return FALSE;
12500 o_ptr = &inventory[item];
12501 object_flags(o_ptr, f);
12503 p_ptr->csp += (p_ptr->lev / 5) + randint1(p_ptr->lev / 5);
12504 if (have_flag(f, TR_TY_CURSE) || (o_ptr->curse_flags & TRC_TY_CURSE)) p_ptr->csp += randint1(5);
12505 if (p_ptr->csp > p_ptr->msp) p_ptr->csp = p_ptr->msp;
12507 if (o_ptr->curse_flags & TRC_PERMA_CURSE)
12511 else if (o_ptr->curse_flags & TRC_HEAVY_CURSE)
12516 msg_print("¼ö¤¤¤òÁ´¤ÆµÛ¤¤¼è¤Ã¤¿¡£");
12518 msg_print("Heavy curse vanished away.");
12520 o_ptr->curse_flags = 0L;
12523 else if ((o_ptr->curse_flags & (TRC_CURSED)) && one_in_(3))
12526 msg_print("¼ö¤¤¤òÁ´¤ÆµÛ¤¤¼è¤Ã¤¿¡£");
12528 msg_print("Curse vanished away.");
12530 o_ptr->curse_flags = 0L;
12539 if (name) return "µÛ·ì¤Î¿Ï";
12540 if (desc) return "µÛ·ì°À¤Ç¹¶·â¤¹¤ë¡£";
12542 if (name) return "Swords to vampires";
12543 if (desc) return "Gives vampiric ability to your weapon.";
12548 msg_print("¤¢¤Ê¤¿¤ÎÉð´ï¤¬·ì¤òÍߤ·¤Æ¤¤¤ë¡£");
12550 if (!empty_hands(FALSE))
12551 msg_print("Your weapons want more blood now.");
12553 msg_print("Your weapon wants more blood now.");
12559 msg_print("Éð´ï¤Î³é˾¤¬¾Ã¤¨µî¤Ã¤¿¡£");
12561 msg_format("Thirsty of weapon%s disappeared.", (empty_hands(FALSE)) ? "" : "s");
12568 if (name) return "Û¯Û°¤Î¸ÀÍÕ";
12569 if (desc) return "»ë³¦Æâ¤Î¥â¥ó¥¹¥¿¡¼¤òÛ¯Û°¤È¤µ¤»¤ë¡£";
12571 if (name) return "Word of stun";
12572 if (desc) return "Stuns all monsters in your sight.";
12575 if (info) return info_power(power);
12578 stun_monsters(power);
12584 if (name) return "±Æ°ÜÆ°";
12585 if (desc) return "¥â¥ó¥¹¥¿¡¼¤ÎÎ٤Υޥ¹¤Ë½Ö´Ö°ÜÆ°¤¹¤ë¡£";
12587 if (name) return "Moving into shadow";
12588 if (desc) return "Teleports you close to a monster.";
12595 for (i = 0; i < 3; i++)
12597 if (!tgt_pt(&x, &y)) return FALSE;
12601 for (dir = 0; dir < 8; dir++)
12603 int dy = y + ddy_ddd[dir];
12604 int dx = x + ddx_ddd[dir];
12605 if (dir == 5) continue;
12606 if(cave[dy][dx].m_idx) flag = TRUE;
12609 if (!cave_empty_bold(y, x) || (cave[y][x].info & CAVE_ICKY) ||
12610 (distance(y, x, py, px) > plev + 2))
12613 msg_print("¤½¤³¤Ë¤Ï°ÜÆ°¤Ç¤¤Ê¤¤¡£");
12615 msg_print("Can not teleport to there.");
12622 if (flag && randint0(plev * plev / 2))
12624 teleport_player_to(y, x, 0L);
12629 msg_print("¤ª¤Ã¤È¡ª");
12631 msg_print("Oops!");
12633 teleport_player(30, 0L);
12642 if (name) return "È¿ËâË¡·ë³¦";
12643 if (desc) return "»ë³¦Æâ¤Î¥â¥ó¥¹¥¿¡¼¤ÎËâË¡¤òÁ˳²¤¹¤ë¥Ð¥ê¥¢¤òÄ¥¤ë¡£";
12645 if (name) return "Anti magic barrier";
12646 if (desc) return "Obstructs all magic spell of monsters in your sight.";
12648 power = plev * 3 / 2;
12649 if (info) return info_power(power);
12653 msg_print("ËâË¡¤òËɤ°¼ö¤¤¤ò¤«¤±¤¿¡£");
12655 msg_print("You feel anyone can not cast spells except you.");
12662 if (name) return "Éü½²¤ÎÀë¹ð";
12663 if (desc) return "¿ô¥¿¡¼¥ó¸å¤Ë¤½¤ì¤Þ¤Ç¼õ¤±¤¿¥À¥á¡¼¥¸¤Ë±þ¤¸¤¿°ÒÎϤÎÃϹö¤Î¹å²Ð¤ÎÃƤòÊü¤Ä¡£";
12665 if (name) return "Revenge sentence";
12666 if (desc) return "Fires a ball of hell fire to try revenging after few turns.";
12668 power = p_ptr->magic_num1[2];
12669 if (info) return info_damage(0, 0, power);
12673 int a = 3 - (p_ptr->pspeed - 100) / 10;
12674 r = 1 + randint1(2) + MAX(0, MIN(3, a));
12676 if (p_ptr->magic_num2[2] > 0)
12679 msg_print("¤¹¤Ç¤ËÉü½²¤ÏÀë¹ðºÑ¤ß¤À¡£");
12681 msg_print("You already pronounced your revenge.");
12686 p_ptr->magic_num2[1] = 2;
12687 p_ptr->magic_num2[2] = r;
12689 msg_format("¤¢¤Ê¤¿¤ÏÉü½²¤òÀë¹ð¤·¤¿¡£¤¢¤È %d ¥¿¡¼¥ó¡£", r);
12691 msg_format("You pronounce your revenge. %d turns left.", r);
12697 p_ptr->magic_num2[2]--;
12699 if (p_ptr->magic_num2[2] <= 0)
12710 msg_print("Éü½²¤Î»þ¤À¡ª");
12712 msg_print("Time to revenge!");
12715 while (!get_aim_dir(&dir));
12717 fire_ball(GF_HELL_FIRE, dir, power, 1);
12722 msg_format("%dÅÀ¤Î¥À¥á¡¼¥¸¤òÊÖ¤·¤¿¡£", power);
12724 msg_format("You return %d damages.", power);
12731 msg_print("Éü½²¤¹¤ëµ¤¤¬¼º¤»¤¿¡£");
12733 msg_print("You are not a mood to revenge.");
12736 p_ptr->magic_num1[2] = 0;
12742 /* start casting */
12743 if ((cast) && (add))
12746 p_ptr->magic_num1[0] |= 1L << (spell);
12747 p_ptr->magic_num2[0]++;
12749 if (p_ptr->action != ACTION_SPELL) set_action(ACTION_SPELL);
12752 /* Redraw status */
12755 p_ptr->update |= (PU_BONUS | PU_HP | PU_MANA | PU_SPELLS);
12756 p_ptr->redraw |= (PR_EXTRA | PR_HP | PR_MANA);
12764 * @brief ËâË¡½èÍý¤Î¥á¥¤¥ó¥ë¡¼¥Á¥ó
12765 * @param realm ËâË¡Îΰè¤ÎID
12766 * @param spell ³ÆÎΰè¤ÎËâË¡ID
12767 * @param mode µá¤á¤ë½èÍý
12768 * @return ³ÆÎΰèËâË¡¤Ë³Æ¼ï¥Æ¥¥¹¥È¤òµá¤á¤¿¾ì¹ç¤Ïʸ»úÎ󻲾ȥݥ¤¥ó¥¿¡¢¤½¤¦¤Ç¤Ê¤¤¾ì¹ç¤ÏNULL¥Ý¥¤¥ó¥¿¤òÊÖ¤¹¡£
12770 cptr do_spell(int realm, int spell, int mode)
12774 case REALM_LIFE: return do_life_spell(spell, mode);
12775 case REALM_SORCERY: return do_sorcery_spell(spell, mode);
12776 case REALM_NATURE: return do_nature_spell(spell, mode);
12777 case REALM_CHAOS: return do_chaos_spell(spell, mode);
12778 case REALM_DEATH: return do_death_spell(spell, mode);
12779 case REALM_TRUMP: return do_trump_spell(spell, mode);
12780 case REALM_ARCANE: return do_arcane_spell(spell, mode);
12781 case REALM_CRAFT: return do_craft_spell(spell, mode);
12782 case REALM_DAEMON: return do_daemon_spell(spell, mode);
12783 case REALM_CRUSADE: return do_crusade_spell(spell, mode);
12784 case REALM_MUSIC: return do_music_spell(spell, mode);
12785 case REALM_HISSATSU: return do_hissatsu_spell(spell, mode);
12786 case REALM_HEX: return do_hex_spell(spell, mode);