5 #include "spell/spells-type.h"
6 #include "spells-status.h"
7 #include "spells-floor.h"
8 #include "player-class.h"
9 #include "player-effects.h"
10 #include "targeting.h"
11 #include "view/display-main-window.h"
12 #include "realm/realm-song.h"
13 #include "spell/process-effect.h"
14 #include "effect/effect-characteristics.h"
15 #include "spell/spells2.h"
16 #include "spell/spells3.h"
19 * @brief 歌の開始を処理する / Start singing if the player is a Bard
20 * @param spell 領域魔法としてのID
24 static void start_singing(player_type *caster_ptr, SPELL_IDX spell, MAGIC_NUM1 song)
26 /* Remember the song index */
27 SINGING_SONG_EFFECT(caster_ptr) = (MAGIC_NUM1)song;
29 /* Remember the index of the spell which activated the song */
30 SINGING_SONG_ID(caster_ptr) = (MAGIC_NUM2)spell;
33 /* Now the player is singing */
34 set_action(caster_ptr, ACTION_SING);
36 caster_ptr->update |= (PU_BONUS);
37 caster_ptr->redraw |= (PR_STATUS);
43 * @param caster_ptr プレーヤーへの参照ポインタ
45 * @param mode 処理内容 (SPELL_NAME / SPELL_DESC / SPELL_INFO / SPELL_CAST / SPELL_FAIL / SPELL_CONT / SPELL_STOP)
46 * @return SPELL_NAME / SPELL_DESC / SPELL_INFO 時には文字列ポインタを返す。SPELL_CAST / SPELL_FAIL / SPELL_CONT / SPELL_STOP 時はNULL文字列を返す。
48 concptr do_music_spell(player_type *caster_ptr, SPELL_IDX spell, spell_type mode)
50 bool name = (mode == SPELL_NAME) ? TRUE : FALSE;
51 bool desc = (mode == SPELL_DESC) ? TRUE : FALSE;
52 bool info = (mode == SPELL_INFO) ? TRUE : FALSE;
53 bool cast = (mode == SPELL_CAST) ? TRUE : FALSE;
54 bool fail = (mode == SPELL_FAIL) ? TRUE : FALSE;
55 bool cont = (mode == SPELL_CONT) ? TRUE : FALSE;
56 bool stop = (mode == SPELL_STOP) ? TRUE : FALSE;
59 PLAYER_LEVEL plev = caster_ptr->lev;
64 if (name) return _("遅鈍の歌", "Song of Holding");
65 if (desc) return _("視界内の全てのモンスターを減速させる。抵抗されると無効。", "Attempts to slow all monsters in sight.");
67 /* Stop singing before start another */
68 if (cast || fail) stop_singing(caster_ptr);
72 msg_print(_("ゆっくりとしたメロディを口ずさみ始めた...", "You start humming a slow, steady melody..."));
73 start_singing(caster_ptr, spell, MUSIC_SLOW);
79 if (info) return info_power(power);
83 slow_monsters(caster_ptr, plev);
89 if (name) return _("祝福の歌", "Song of Blessing");
90 if (desc) return _("命中率とACのボーナスを得る。", "Gives a bonus to hit and AC for a few turns.");
92 /* Stop singing before start another */
93 if (cast || fail) stop_singing(caster_ptr);
97 msg_print(_("厳かなメロディを奏で始めた...", "The holy power of the Music of the Ainur enters you..."));
98 start_singing(caster_ptr, spell, MUSIC_BLESS);
103 if (!caster_ptr->blessed)
105 msg_print(_("高潔な気分が消え失せた。", "The prayer has expired."));
112 if (name) return _("崩壊の音色", "Wrecking Note");
113 if (desc) return _("轟音のボルトを放つ。", "Fires a bolt of sound.");
115 /* Stop singing before start another */
116 if (cast || fail) stop_singing(caster_ptr);
119 DICE_NUMBER dice = 4 + (plev - 1) / 5;
122 if (info) return info_damage(dice, sides, 0);
126 if (!get_aim_dir(caster_ptr, &dir)) return NULL;
128 fire_bolt(caster_ptr, GF_SOUND, dir, damroll(dice, sides));
134 if (name) return _("朦朧の旋律", "Stun Pattern");
135 if (desc) return _("視界内の全てのモンスターを朦朧させる。抵抗されると無効。", "Attempts to stun all monsters in sight.");
137 /* Stop singing before start another */
138 if (cast || fail) stop_singing(caster_ptr);
142 msg_print(_("眩惑させるメロディを奏で始めた...", "You weave a pattern of sounds to bewilder and daze..."));
143 start_singing(caster_ptr, spell, MUSIC_STUN);
147 DICE_NUMBER dice = plev / 10;
150 if (info) return info_power_dice(dice, sides);
154 stun_monsters(caster_ptr, damroll(dice, sides));
161 if (name) return _("生命の流れ", "Flow of Life");
162 if (desc) return _("体力を少し回復させる。", "Heals HP a little.");
164 /* Stop singing before start another */
165 if (cast || fail) stop_singing(caster_ptr);
169 msg_print(_("歌を通して体に活気が戻ってきた...", "Life flows through you as you sing a song of healing..."));
170 start_singing(caster_ptr, spell, MUSIC_L_LIFE);
174 DICE_NUMBER dice = 2;
177 if (info) return info_heal(dice, sides, 0);
181 hp_player(caster_ptr, damroll(dice, sides));
188 if (name) return _("太陽の歌", "Song of the Sun");
189 if (desc) return _("光源が照らしている範囲か部屋全体を永久に明るくする。", "Lights up nearby area and the inside of a room permanently.");
191 /* Stop singing before start another */
192 if (cast || fail) stop_singing(caster_ptr);
195 DICE_NUMBER dice = 2;
196 DICE_SID sides = plev / 2;
197 POSITION rad = plev / 10 + 1;
199 if (info) return info_damage(dice, sides, 0);
203 msg_print(_("光り輝く歌が辺りを照らした。", "Your uplifting song brings brightness to dark places..."));
204 lite_area(caster_ptr, damroll(dice, sides), rad);
210 if (name) return _("恐怖の歌", "Song of Fear");
211 if (desc) return _("視界内の全てのモンスターを恐怖させる。抵抗されると無効。", "Attempts to scare all monsters in sight.");
213 /* Stop singing before start another */
214 if (cast || fail) stop_singing(caster_ptr);
218 msg_print(_("おどろおどろしいメロディを奏で始めた...", "You start weaving a fearful pattern..."));
219 start_singing(caster_ptr, spell, MUSIC_FEAR);
225 if (info) return info_power(power);
229 project_all_los(caster_ptr, GF_TURN_ALL, power);
236 if (name) return _("戦いの歌", "Heroic Ballad");
237 if (desc) return _("ヒーロー気分になる。", "Removes fear. Gives a bonus to hit for a while. Heals you for 10 HP.");
239 /* Stop singing before start another */
240 if (cast || fail) stop_singing(caster_ptr);
244 msg_print(_("激しい戦いの歌を歌った...", "You start singing a song of intense fighting..."));
246 (void)hp_player(caster_ptr, 10);
247 (void)set_afraid(caster_ptr, 0);
249 /* Recalculate hitpoints */
250 caster_ptr->update |= (PU_HP);
252 start_singing(caster_ptr, spell, MUSIC_HERO);
257 if (!caster_ptr->hero)
259 msg_print(_("ヒーローの気分が消え失せた。", "The heroism wears off."));
260 /* Recalculate hitpoints */
261 caster_ptr->update |= (PU_HP);
268 if (name) return _("霊的知覚", "Clairaudience");
269 if (desc) return _("近くの罠/扉/階段を感知する。レベル15で全てのモンスター、20で財宝とアイテムを感知できるようになる。レベル25で周辺の地形を感知し、40でその階全体を永久に照らし、ダンジョン内のすべてのアイテムを感知する。この効果は歌い続けることで順に起こる。",
270 "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 accumulate as the song continues.");
272 /* Stop singing before start another */
273 if (cast || fail) stop_singing(caster_ptr);
277 msg_print(_("静かな音楽が感覚を研ぎ澄まさせた...", "Your quiet music sharpens your sense of hearing..."));
278 /* Hack -- Initialize the turn count */
279 SINGING_COUNT(caster_ptr) = 0;
280 start_singing(caster_ptr, spell, MUSIC_DETECT);
284 POSITION rad = DETECT_RAD_DEFAULT;
286 if (info) return info_radius(rad);
290 int count = SINGING_COUNT(caster_ptr);
292 if (count >= 19) wiz_lite(caster_ptr, FALSE);
295 map_area(caster_ptr, rad);
296 if (plev > 39 && count < 19)
297 SINGING_COUNT(caster_ptr) = count + 1;
301 /* There are too many hidden treasure. So... */
302 /* detect_treasure(rad); */
303 detect_objects_gold(caster_ptr, rad);
304 detect_objects_normal(caster_ptr, rad);
306 if (plev > 24 && count < 11)
307 SINGING_COUNT(caster_ptr) = count + 1;
311 detect_monsters_invis(caster_ptr, rad);
312 detect_monsters_normal(caster_ptr, rad);
314 if (plev > 19 && count < A_MAX)
315 SINGING_COUNT(caster_ptr) = count + 1;
317 detect_traps(caster_ptr, rad, TRUE);
318 detect_doors(caster_ptr, rad);
319 detect_stairs(caster_ptr, rad);
321 if (plev > 14 && count < 3)
322 SINGING_COUNT(caster_ptr) = count + 1;
329 if (name) return _("魂の歌", "Soul Shriek");
330 if (desc) return _("視界内の全てのモンスターに対して精神攻撃を行う。", "Damages all monsters in sight with PSI damages.");
332 /* Stop singing before start another */
333 if (cast || fail) stop_singing(caster_ptr);
337 msg_print(_("精神を捻じ曲げる歌を歌った...", "You start singing a song of soul in pain..."));
338 start_singing(caster_ptr, spell, MUSIC_PSI);
342 DICE_NUMBER dice = 1;
343 DICE_SID sides = plev * 3 / 2;
345 if (info) return info_damage(dice, sides, 0);
349 project_all_los(caster_ptr, GF_PSI, damroll(dice, sides));
356 if (name) return _("知識の歌", "Song of Lore");
357 if (desc) return _("自分のいるマスと隣りのマスに落ちているアイテムを鑑定する。", "Identifies all items which are in the adjacent squares.");
359 /* Stop singing before start another */
360 if (cast || fail) stop_singing(caster_ptr);
364 msg_print(_("この世界の知識が流れ込んできた...", "You recall the rich lore of the world..."));
365 start_singing(caster_ptr, spell, MUSIC_ID);
371 if (info) return info_radius(rad);
375 * MP不足で鑑定が発動される前に歌が中断してしまうのを防止。
379 project(caster_ptr, 0, rad, caster_ptr->y, caster_ptr->x, 0, GF_IDENTIFY, PROJECT_ITEM, -1);
386 if (name) return _("隠遁の歌", "Hiding Tune");
387 if (desc) return _("隠密行動能力を上昇させる。", "Gives improved stealth.");
389 /* Stop singing before start another */
390 if (cast || fail) stop_singing(caster_ptr);
394 msg_print(_("あなたの姿が景色にとけこんでいった...", "Your song carries you beyond the sight of mortal eyes..."));
395 start_singing(caster_ptr, spell, MUSIC_STEALTH);
400 if (!caster_ptr->tim_stealth)
402 msg_print(_("姿がはっきりと見えるようになった。", "You are no longer hidden."));
409 if (name) return _("幻影の旋律", "Illusion Pattern");
410 if (desc) return _("視界内の全てのモンスターを混乱させる。抵抗されると無効。", "Attempts to confuse all monsters in sight.");
412 /* Stop singing before start another */
413 if (cast || fail) stop_singing(caster_ptr);
417 msg_print(_("辺り一面に幻影が現れた...", "You weave a pattern of sounds to beguile and confuse..."));
418 start_singing(caster_ptr, spell, MUSIC_CONF);
422 POWER power = plev * 2;
424 if (info) return info_power(power);
428 confuse_monsters(caster_ptr, power);
435 if (name) return _("破滅の叫び", "Doomcall");
436 if (desc) return _("視界内の全てのモンスターに対して轟音攻撃を行う。", "Damages all monsters in sight with booming sound.");
438 /* Stop singing before start another */
439 if (cast || fail) stop_singing(caster_ptr);
443 msg_print(_("轟音が響いた...", "The fury of the Downfall of Numenor lashes out..."));
444 start_singing(caster_ptr, spell, MUSIC_SOUND);
448 DICE_NUMBER dice = 10 + plev / 5;
451 if (info) return info_damage(dice, sides, 0);
455 project_all_los(caster_ptr, GF_SOUND, damroll(dice, sides));
462 if (name) return _("フィリエルの歌", "Firiel's Song");
463 if (desc) return _("周囲の死体や骨を生き返す。", "Resurrects nearby corpse and skeletons. And makes them your pets.");
466 /* Stop singing before start another */
467 if (cast || fail) stop_singing(caster_ptr);
471 msg_print(_("生命と復活のテーマを奏で始めた...", "The themes of life and revival are woven into your song..."));
472 animate_dead(caster_ptr, 0, caster_ptr->y, caster_ptr->x);
478 if (name) return _("旅の仲間", "Fellowship Chant");
479 if (desc) return _("視界内の全てのモンスターを魅了する。抵抗されると無効。", "Attempts to charm all monsters in sight.");
481 /* Stop singing before start another */
482 if (cast || fail) stop_singing(caster_ptr);
486 msg_print(_("安らかなメロディを奏で始めた...", "You weave a slow, soothing melody of imploration..."));
487 start_singing(caster_ptr, spell, MUSIC_CHARM);
491 DICE_NUMBER dice = 10 + plev / 15;
494 if (info) return info_power_dice(dice, sides);
498 charm_monsters(caster_ptr, damroll(dice, sides));
505 if (name) return _("分解音波", "Sound of disintegration");
506 if (desc) return _("壁を掘り進む。自分の足元のアイテムは蒸発する。", "Makes you be able to burrow into walls. Objects under your feet evaporate.");
508 /* Stop singing before start another */
509 if (cast || fail) stop_singing(caster_ptr);
513 msg_print(_("粉砕するメロディを奏で始めた...", "You weave a violent pattern of sounds to break wall."));
514 start_singing(caster_ptr, spell, MUSIC_WALL);
520 * MP不足で効果が発動される前に歌が中断してしまうのを防止。
524 project(caster_ptr, 0, 0, caster_ptr->y, caster_ptr->x,
525 0, GF_DISINTEGRATE, PROJECT_KILL | PROJECT_ITEM | PROJECT_HIDE, -1);
531 if (name) return _("元素耐性", "Finrod's Resistance");
532 if (desc) return _("酸、電撃、炎、冷気、毒に対する耐性を得る。装備による耐性に累積する。",
533 "Gives resistance to fire, cold, electricity, acid and poison. These resistances can be added to those from equipment for more powerful resistances.");
535 /* Stop singing before start another */
536 if (cast || fail) stop_singing(caster_ptr);
540 msg_print(_("元素の力に対する忍耐の歌を歌った。", "You sing a song of perseverance against powers..."));
541 start_singing(caster_ptr, spell, MUSIC_RESIST);
546 if (!caster_ptr->oppose_acid)
548 msg_print(_("酸への耐性が薄れた気がする。", "You feel less resistant to acid."));
551 if (!caster_ptr->oppose_elec)
553 msg_print(_("電撃への耐性が薄れた気がする。", "You feel less resistant to elec."));
556 if (!caster_ptr->oppose_fire)
558 msg_print(_("火への耐性が薄れた気がする。", "You feel less resistant to fire."));
561 if (!caster_ptr->oppose_cold)
563 msg_print(_("冷気への耐性が薄れた気がする。", "You feel less resistant to cold."));
566 if (!caster_ptr->oppose_pois)
568 msg_print(_("毒への耐性が薄れた気がする。", "You feel less resistant to pois."));
575 if (name) return _("ホビットのメロディ", "Hobbit Melodies");
576 if (desc) return _("加速する。", "Hastes you.");
578 /* Stop singing before start another */
579 if (cast || fail) stop_singing(caster_ptr);
583 msg_print(_("軽快な歌を口ずさみ始めた...", "You start singing joyful pop song..."));
584 start_singing(caster_ptr, spell, MUSIC_SPEED);
589 if (!caster_ptr->fast)
591 msg_print(_("動きの素早さがなくなったようだ。", "You feel yourself slow down."));
598 if (name) return _("歪んだ世界", "World Contortion");
599 if (desc) return _("近くのモンスターをテレポートさせる。抵抗されると無効。", "Teleports all nearby monsters away unless resisted.");
602 POSITION rad = plev / 15 + 1;
603 POWER power = plev * 3 + 1;
605 if (info) return info_radius(rad);
607 /* Stop singing before start another */
608 if (cast || fail) stop_singing(caster_ptr);
612 msg_print(_("歌が空間を歪めた...", "Reality whirls wildly as you sing a dizzying melody..."));
613 project(caster_ptr, 0, rad, caster_ptr->y, caster_ptr->x, power, GF_AWAY_ALL, PROJECT_KILL, -1);
619 if (name) return _("退散の歌", "Dispelling chant");
620 if (desc) return _("視界内の全てのモンスターにダメージを与える。邪悪なモンスターに特に大きなダメージを与える。",
621 "Damages all monsters in sight. Hurts evil monsters greatly.");
623 /* Stop singing before start another */
624 if (cast || fail) stop_singing(caster_ptr);
628 msg_print(_("耐えられない不協和音が敵を責め立てた...", "You cry out in an ear-wracking voice..."));
629 start_singing(caster_ptr, spell, MUSIC_DISPEL);
633 DICE_SID m_sides = plev * 3;
634 DICE_SID e_sides = plev * 3;
636 if (info) return format("%s1d%d+1d%d", KWD_DAM, m_sides, e_sides);
640 dispel_monsters(caster_ptr, randint1(m_sides));
641 dispel_evil(caster_ptr, randint1(e_sides));
647 if (name) return _("サルマンの甘言", "The Voice of Saruman");
648 if (desc) return _("視界内の全てのモンスターを減速させ、眠らせようとする。抵抗されると無効。", "Attempts to slow and put to sleep all monsters in sight.");
650 /* Stop singing before start another */
651 if (cast || fail) stop_singing(caster_ptr);
655 msg_print(_("優しく、魅力的な歌を口ずさみ始めた...", "You start humming a gentle and attractive song..."));
656 start_singing(caster_ptr, spell, MUSIC_SARUMAN);
662 if (info) return info_power(power);
666 slow_monsters(caster_ptr, plev);
667 sleep_monsters(caster_ptr, plev);
674 if (name) return _("嵐の音色", "Song of the Tempest");
675 if (desc) return _("轟音のビームを放つ。", "Fires a beam of sound.");
678 DICE_NUMBER dice = 15 + (plev - 1) / 2;
681 if (info) return info_damage(dice, sides, 0);
683 /* Stop singing before start another */
684 if (cast || fail) stop_singing(caster_ptr);
688 if (!get_aim_dir(caster_ptr, &dir)) return NULL;
690 fire_beam(caster_ptr, GF_SOUND, dir, damroll(dice, sides));
696 if (name) return _("もう一つの世界", "Ambarkanta");
697 if (desc) return _("現在の階を再構成する。", "Recreates current dungeon level.");
703 if (info) return info_delay(base, sides);
705 /* Stop singing before start another */
706 if (cast || fail) stop_singing(caster_ptr);
710 msg_print(_("周囲が変化し始めた...", "You sing of the primeval shaping of Middle-earth..."));
711 reserve_alter_reality(caster_ptr);
717 if (name) return _("破壊の旋律", "Wrecking Pattern");
718 if (desc) return _("周囲のダンジョンを揺らし、壁と床をランダムに入れ変える。",
719 "Shakes dungeon structure, and results in random swapping of floors and walls.");
721 /* Stop singing before start another */
722 if (cast || fail) stop_singing(caster_ptr);
726 msg_print(_("破壊的な歌が響きわたった...", "You weave a pattern of sounds to contort and shatter..."));
727 start_singing(caster_ptr, spell, MUSIC_QUAKE);
733 if (info) return info_radius(rad);
737 earthquake(caster_ptr, caster_ptr->y, caster_ptr->x, 10, 0);
745 if (name) return _("停滞の歌", "Stationary Shriek");
746 if (desc) return _("視界内の全てのモンスターを麻痺させようとする。抵抗されると無効。", "Attempts to freeze all monsters in sight.");
748 /* Stop singing before start another */
749 if (cast || fail) stop_singing(caster_ptr);
753 msg_print(_("ゆっくりとしたメロディを奏で始めた...", "You weave a very slow pattern which is almost likely to stop..."));
754 start_singing(caster_ptr, spell, MUSIC_STASIS);
758 POWER power = plev * 4;
760 if (info) return info_power(power);
764 stasis_monsters(caster_ptr, power);
771 if (name) return _("守りの歌", "Endurance");
772 if (desc) return _("自分のいる床の上に、モンスターが通り抜けたり召喚されたりすることができなくなるルーンを描く。",
773 "Sets a glyph on the floor beneath you. If you are on a glyph, monsters cannot attack you but can try to break the glyph.");
776 /* Stop singing before start another */
777 if (cast || fail) stop_singing(caster_ptr);
781 msg_print(_("歌が神聖な場を作り出した...", "The holy power of the Music is creating sacred field..."));
782 warding_glyph(caster_ptr);
788 if (name) return _("英雄の詩", "The Hero's Poem");
789 if (desc) return _("加速し、ヒーロー気分になり、視界内の全てのモンスターにダメージを与える。",
790 "Hastes you. Gives heroism. Damages all monsters in sight.");
792 /* Stop singing before start another */
793 if (cast || fail) stop_singing(caster_ptr);
797 msg_print(_("英雄の歌を口ずさんだ...", "You chant a powerful, heroic call to arms..."));
798 (void)hp_player(caster_ptr, 10);
799 (void)set_afraid(caster_ptr, 0);
801 /* Recalculate hitpoints */
802 caster_ptr->update |= (PU_HP);
804 start_singing(caster_ptr, spell, MUSIC_SHERO);
809 if (!caster_ptr->hero)
811 msg_print(_("ヒーローの気分が消え失せた。", "The heroism wears off."));
812 /* Recalculate hitpoints */
813 caster_ptr->update |= (PU_HP);
816 if (!caster_ptr->fast)
818 msg_print(_("動きの素早さがなくなったようだ。", "You feel yourself slow down."));
823 DICE_NUMBER dice = 1;
824 DICE_SID sides = plev * 3;
826 if (info) return info_damage(dice, sides, 0);
830 dispel_monsters(caster_ptr, damroll(dice, sides));
836 if (name) return _("ヤヴァンナの助け", "Relief of Yavanna");
837 if (desc) return _("強力な回復の歌で、負傷と朦朧状態も全快する。", "Powerful healing song. Also completely heals cuts and being stunned.");
839 /* Stop singing before start another */
840 if (cast || fail) stop_singing(caster_ptr);
844 msg_print(_("歌を通して体に活気が戻ってきた...", "Life flows through you as you sing the song..."));
845 start_singing(caster_ptr, spell, MUSIC_H_LIFE);
849 DICE_NUMBER dice = 15;
852 if (info) return info_heal(dice, sides, 0);
856 hp_player(caster_ptr, damroll(dice, sides));
857 set_stun(caster_ptr, 0);
858 set_cut(caster_ptr,0);
865 if (name) return _("再生の歌", "Goddess' rebirth");
866 if (desc) return _("すべてのステータスと経験値を回復する。", "Restores all stats and experience.");
869 /* Stop singing before start another */
870 if (cast || fail) stop_singing(caster_ptr);
874 msg_print(_("暗黒の中に光と美をふりまいた。体が元の活力を取り戻した。",
875 "You strew light and beauty in the dark as you sing. You feel refreshed."));
876 (void)restore_all_status(caster_ptr);
877 (void)restore_level(caster_ptr);
883 if (name) return _("サウロンの魔術", "Wizardry of Sauron");
884 if (desc) return _("非常に強力でごく小さい轟音の球を放つ。", "Fires an extremely powerful tiny ball of sound.");
887 DICE_NUMBER dice = 50 + plev;
891 if (info) return info_damage(dice, sides, 0);
893 /* Stop singing before start another */
894 if (cast || fail) stop_singing(caster_ptr);
898 if (!get_aim_dir(caster_ptr, &dir)) return NULL;
900 fire_ball(caster_ptr, GF_SOUND, dir, damroll(dice, sides), rad);
906 if (name) return _("フィンゴルフィンの挑戦", "Fingolfin's Challenge");
907 if (desc) return _("ダメージを受けなくなるバリアを張る。",
908 "Generates a barrier which completely protects you from almost all damage.");
910 /* Stop singing before start another */
911 if (cast || fail) stop_singing(caster_ptr);
915 msg_print(_("フィンゴルフィンの冥王への挑戦を歌った...",
916 "You recall the valor of Fingolfin's challenge to the Dark Lord..."));
918 caster_ptr->redraw |= (PR_MAP);
919 caster_ptr->update |= (PU_MONSTERS);
920 caster_ptr->window |= (PW_OVERHEAD | PW_DUNGEON);
922 start_singing(caster_ptr, spell, MUSIC_INVULN);
927 if (!caster_ptr->invuln)
929 msg_print(_("無敵ではなくなった。", "The invulnerability wears off."));
931 caster_ptr->redraw |= (PR_MAP);
932 caster_ptr->update |= (PU_MONSTERS);
933 caster_ptr->window |= (PW_OVERHEAD | PW_DUNGEON);