4 #include "realm-song.h"
8 #include "spells-status.h"
9 #include "spells-floor.h"
10 #include "player-effects.h"
11 #include "targeting.h"
12 #include "view-mainwindow.h"
15 * @brief 歌の開始を処理する / Start singing if the player is a Bard
16 * @param spell 領域魔法としてのID
20 static void start_singing(player_type *caster_ptr, SPELL_IDX spell, MAGIC_NUM1 song)
22 /* Remember the song index */
23 SINGING_SONG_EFFECT(caster_ptr) = (MAGIC_NUM1)song;
25 /* Remember the index of the spell which activated the song */
26 SINGING_SONG_ID(caster_ptr) = (MAGIC_NUM2)spell;
29 /* Now the player is singing */
30 set_action(caster_ptr, ACTION_SING);
32 caster_ptr->update |= (PU_BONUS);
33 caster_ptr->redraw |= (PR_STATUS);
39 * @param caster_ptr プレーヤーへの参照ポインタ
41 * @param mode 処理内容 (SPELL_NAME / SPELL_DESC / SPELL_INFO / SPELL_CAST / SPELL_FAIL / SPELL_CONT / SPELL_STOP)
42 * @return SPELL_NAME / SPELL_DESC / SPELL_INFO 時には文字列ポインタを返す。SPELL_CAST / SPELL_FAIL / SPELL_CONT / SPELL_STOP 時はNULL文字列を返す。
44 concptr do_music_spell(player_type *caster_ptr, SPELL_IDX spell, BIT_FLAGS mode)
46 bool name = (mode == SPELL_NAME) ? TRUE : FALSE;
47 bool desc = (mode == SPELL_DESC) ? TRUE : FALSE;
48 bool info = (mode == SPELL_INFO) ? TRUE : FALSE;
49 bool cast = (mode == SPELL_CAST) ? TRUE : FALSE;
50 bool fail = (mode == SPELL_FAIL) ? TRUE : FALSE;
51 bool cont = (mode == SPELL_CONT) ? TRUE : FALSE;
52 bool stop = (mode == SPELL_STOP) ? TRUE : FALSE;
55 PLAYER_LEVEL plev = caster_ptr->lev;
60 if (name) return _("遅鈍の歌", "Song of Holding");
61 if (desc) return _("視界内の全てのモンスターを減速させる。抵抗されると無効。", "Attempts to slow all monsters in sight.");
63 /* Stop singing before start another */
64 if (cast || fail) stop_singing(caster_ptr);
68 msg_print(_("ゆっくりとしたメロディを口ずさみ始めた...", "You start humming a slow, steady melody..."));
69 start_singing(caster_ptr, spell, MUSIC_SLOW);
75 if (info) return info_power(power);
79 slow_monsters(caster_ptr, plev);
85 if (name) return _("祝福の歌", "Song of Blessing");
86 if (desc) return _("命中率とACのボーナスを得る。", "Gives bonus to hit and AC for a few turns.");
88 /* Stop singing before start another */
89 if (cast || fail) stop_singing(caster_ptr);
93 msg_print(_("厳かなメロディを奏で始めた...", "The holy power of the Music of the Ainur enters you..."));
94 start_singing(caster_ptr, spell, MUSIC_BLESS);
99 if (!caster_ptr->blessed)
101 msg_print(_("高潔な気分が消え失せた。", "The prayer has expired."));
108 if (name) return _("崩壊の音色", "Wrecking Note");
109 if (desc) return _("轟音のボルトを放つ。", "Fires a bolt of sound.");
111 /* Stop singing before start another */
112 if (cast || fail) stop_singing(caster_ptr);
115 DICE_NUMBER dice = 4 + (plev - 1) / 5;
118 if (info) return info_damage(dice, sides, 0);
122 if (!get_aim_dir(&dir)) return NULL;
124 fire_bolt(caster_ptr, GF_SOUND, dir, damroll(dice, sides));
130 if (name) return _("朦朧の旋律", "Stun Pattern");
131 if (desc) return _("視界内の全てのモンスターを朦朧させる。抵抗されると無効。", "Attempts to stun all monsters in sight.");
133 /* Stop singing before start another */
134 if (cast || fail) stop_singing(caster_ptr);
138 msg_print(_("眩惑させるメロディを奏で始めた...", "You weave a pattern of sounds to bewilder and daze..."));
139 start_singing(caster_ptr, spell, MUSIC_STUN);
143 DICE_NUMBER dice = plev / 10;
146 if (info) return info_power_dice(dice, sides);
150 stun_monsters(caster_ptr, damroll(dice, sides));
157 if (name) return _("生命の流れ", "Flow of Life");
158 if (desc) return _("体力を少し回復させる。", "Heals HP a little.");
160 /* Stop singing before start another */
161 if (cast || fail) stop_singing(caster_ptr);
165 msg_print(_("歌を通して体に活気が戻ってきた...", "Life flows through you as you sing a song of healing..."));
166 start_singing(caster_ptr, spell, MUSIC_L_LIFE);
170 DICE_NUMBER dice = 2;
173 if (info) return info_heal(dice, sides, 0);
177 hp_player(caster_ptr, damroll(dice, sides));
184 if (name) return _("太陽の歌", "Song of the Sun");
185 if (desc) return _("光源が照らしている範囲か部屋全体を永久に明るくする。", "Lights up nearby area and the inside of a room permanently.");
187 /* Stop singing before start another */
188 if (cast || fail) stop_singing(caster_ptr);
191 DICE_NUMBER dice = 2;
192 DICE_SID sides = plev / 2;
193 POSITION rad = plev / 10 + 1;
195 if (info) return info_damage(dice, sides, 0);
199 msg_print(_("光り輝く歌が辺りを照らした。", "Your uplifting song brings brightness to dark places..."));
200 lite_area(caster_ptr, damroll(dice, sides), rad);
206 if (name) return _("恐怖の歌", "Song of Fear");
207 if (desc) return _("視界内の全てのモンスターを恐怖させる。抵抗されると無効。", "Attempts to scare all monsters in sight.");
209 /* Stop singing before start another */
210 if (cast || fail) stop_singing(caster_ptr);
214 msg_print(_("おどろおどろしいメロディを奏で始めた...", "You start weaving a fearful pattern..."));
215 start_singing(caster_ptr, spell, MUSIC_FEAR);
221 if (info) return info_power(power);
225 project_all_los(caster_ptr, GF_TURN_ALL, power);
232 if (name) return _("戦いの歌", "Heroic Ballad");
233 if (desc) return _("ヒーロー気分になる。", "Removes fear, and gives bonus to hit and 10 more HP for a while.");
235 /* Stop singing before start another */
236 if (cast || fail) stop_singing(caster_ptr);
240 msg_print(_("激しい戦いの歌を歌った...", "You start singing a song of intense fighting..."));
242 (void)hp_player(caster_ptr, 10);
243 (void)set_afraid(caster_ptr, 0);
245 /* Recalculate hitpoints */
246 caster_ptr->update |= (PU_HP);
248 start_singing(caster_ptr, spell, MUSIC_HERO);
253 if (!caster_ptr->hero)
255 msg_print(_("ヒーローの気分が消え失せた。", "The heroism wears off."));
256 /* Recalculate hitpoints */
257 caster_ptr->update |= (PU_HP);
264 if (name) return _("霊的知覚", "Clairaudience");
265 if (desc) return _("近くの罠/扉/階段を感知する。レベル15で全てのモンスター、20で財宝とアイテムを感知できるようになる。レベル25で周辺の地形を感知し、40でその階全体を永久に照らし、ダンジョン内のすべてのアイテムを感知する。この効果は歌い続けることで順に起こる。",
266 "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.");
268 /* Stop singing before start another */
269 if (cast || fail) stop_singing(caster_ptr);
273 msg_print(_("静かな音楽が感覚を研ぎ澄まさせた...", "Your quiet music sharpens your sense of hearing..."));
274 /* Hack -- Initialize the turn count */
275 SINGING_COUNT(caster_ptr) = 0;
276 start_singing(caster_ptr, spell, MUSIC_DETECT);
280 POSITION rad = DETECT_RAD_DEFAULT;
282 if (info) return info_radius(rad);
286 int count = SINGING_COUNT(caster_ptr);
288 if (count >= 19) wiz_lite(caster_ptr, FALSE);
291 map_area(caster_ptr, rad);
292 if (plev > 39 && count < 19)
293 SINGING_COUNT(caster_ptr) = count + 1;
297 /* There are too many hidden treasure. So... */
298 /* detect_treasure(rad); */
299 detect_objects_gold(caster_ptr, rad);
300 detect_objects_normal(caster_ptr, rad);
302 if (plev > 24 && count < 11)
303 SINGING_COUNT(caster_ptr) = count + 1;
307 detect_monsters_invis(caster_ptr, rad);
308 detect_monsters_normal(caster_ptr, rad);
310 if (plev > 19 && count < A_MAX)
311 SINGING_COUNT(caster_ptr) = count + 1;
313 detect_traps(caster_ptr, rad, TRUE);
314 detect_doors(caster_ptr, rad);
315 detect_stairs(caster_ptr, rad);
317 if (plev > 14 && count < 3)
318 SINGING_COUNT(caster_ptr) = count + 1;
325 if (name) return _("魂の歌", "Soul Shriek");
326 if (desc) return _("視界内の全てのモンスターに対して精神攻撃を行う。", "Damages all monsters in sight with PSI damages.");
328 /* Stop singing before start another */
329 if (cast || fail) stop_singing(caster_ptr);
333 msg_print(_("精神を捻じ曲げる歌を歌った...", "You start singing a song of soul in pain..."));
334 start_singing(caster_ptr, spell, MUSIC_PSI);
338 DICE_NUMBER dice = 1;
339 DICE_SID sides = plev * 3 / 2;
341 if (info) return info_damage(dice, sides, 0);
345 project_all_los(caster_ptr, GF_PSI, damroll(dice, sides));
352 if (name) return _("知識の歌", "Song of Lore");
353 if (desc) return _("自分のいるマスと隣りのマスに落ちているアイテムを鑑定する。", "Identifies all items which are in the adjacent squares.");
355 /* Stop singing before start another */
356 if (cast || fail) stop_singing(caster_ptr);
360 msg_print(_("この世界の知識が流れ込んできた...", "You recall the rich lore of the world..."));
361 start_singing(caster_ptr, spell, MUSIC_ID);
367 if (info) return info_radius(rad);
371 * MP不足で鑑定が発動される前に歌が中断してしまうのを防止。
375 project(caster_ptr, 0, rad, caster_ptr->y, caster_ptr->x, 0, GF_IDENTIFY, PROJECT_ITEM, -1);
382 if (name) return _("隠遁の歌", "Hiding Tune");
383 if (desc) return _("隠密行動能力を上昇させる。", "Gives improved stealth.");
385 /* Stop singing before start another */
386 if (cast || fail) stop_singing(caster_ptr);
390 msg_print(_("あなたの姿が景色にとけこんでいった...", "Your song carries you beyond the sight of mortal eyes..."));
391 start_singing(caster_ptr, spell, MUSIC_STEALTH);
396 if (!caster_ptr->tim_stealth)
398 msg_print(_("姿がはっきりと見えるようになった。", "You are no longer hided."));
405 if (name) return _("幻影の旋律", "Illusion Pattern");
406 if (desc) return _("視界内の全てのモンスターを混乱させる。抵抗されると無効。", "Attempts to confuse all monsters in sight.");
408 /* Stop singing before start another */
409 if (cast || fail) stop_singing(caster_ptr);
413 msg_print(_("辺り一面に幻影が現れた...", "You weave a pattern of sounds to beguile and confuse..."));
414 start_singing(caster_ptr, spell, MUSIC_CONF);
418 POWER power = plev * 2;
420 if (info) return info_power(power);
424 confuse_monsters(caster_ptr, power);
431 if (name) return _("破滅の叫び", "Doomcall");
432 if (desc) return _("視界内の全てのモンスターに対して轟音攻撃を行う。", "Damages all monsters in sight with booming sound.");
434 /* Stop singing before start another */
435 if (cast || fail) stop_singing(caster_ptr);
439 msg_print(_("轟音が響いた...", "The fury of the Downfall of Numenor lashes out..."));
440 start_singing(caster_ptr, spell, MUSIC_SOUND);
444 DICE_NUMBER dice = 10 + plev / 5;
447 if (info) return info_damage(dice, sides, 0);
451 project_all_los(caster_ptr, GF_SOUND, damroll(dice, sides));
458 if (name) return _("フィリエルの歌", "Firiel's Song");
459 if (desc) return _("周囲の死体や骨を生き返す。", "Resurrects nearby corpse and skeletons. And makes these your pets.");
462 /* Stop singing before start another */
463 if (cast || fail) stop_singing(caster_ptr);
467 msg_print(_("生命と復活のテーマを奏で始めた...", "The themes of life and revival are woven into your song..."));
468 animate_dead(caster_ptr, 0, caster_ptr->y, caster_ptr->x);
474 if (name) return _("旅の仲間", "Fellowship Chant");
475 if (desc) return _("視界内の全てのモンスターを魅了する。抵抗されると無効。", "Attempts to charm all monsters in sight.");
477 /* Stop singing before start another */
478 if (cast || fail) stop_singing(caster_ptr);
482 msg_print(_("安らかなメロディを奏で始めた...", "You weave a slow, soothing melody of imploration..."));
483 start_singing(caster_ptr, spell, MUSIC_CHARM);
487 DICE_NUMBER dice = 10 + plev / 15;
490 if (info) return info_power_dice(dice, sides);
494 charm_monsters(caster_ptr, damroll(dice, sides));
501 if (name) return _("分解音波", "Sound of disintegration");
502 if (desc) return _("壁を掘り進む。自分の足元のアイテムは蒸発する。", "Makes you be able to burrow into walls. Objects under your feet evaporate.");
504 /* Stop singing before start another */
505 if (cast || fail) stop_singing(caster_ptr);
509 msg_print(_("粉砕するメロディを奏で始めた...", "You weave a violent pattern of sounds to break wall."));
510 start_singing(caster_ptr, spell, MUSIC_WALL);
516 * MP不足で効果が発動される前に歌が中断してしまうのを防止。
520 project(caster_ptr, 0, 0, caster_ptr->y, caster_ptr->x,
521 0, GF_DISINTEGRATE, PROJECT_KILL | PROJECT_ITEM | PROJECT_HIDE, -1);
527 if (name) return _("元素耐性", "Finrod's Resistance");
528 if (desc) return _("酸、電撃、炎、冷気、毒に対する耐性を得る。装備による耐性に累積する。",
529 "Gives resistance to fire, cold, electricity, acid and poison. These resistances can be added to which from equipment for more powerful resistances.");
531 /* Stop singing before start another */
532 if (cast || fail) stop_singing(caster_ptr);
536 msg_print(_("元素の力に対する忍耐の歌を歌った。", "You sing a song of perseverance against powers..."));
537 start_singing(caster_ptr, spell, MUSIC_RESIST);
542 if (!caster_ptr->oppose_acid)
544 msg_print(_("酸への耐性が薄れた気がする。", "You feel less resistant to acid."));
547 if (!caster_ptr->oppose_elec)
549 msg_print(_("電撃への耐性が薄れた気がする。", "You feel less resistant to elec."));
552 if (!caster_ptr->oppose_fire)
554 msg_print(_("火への耐性が薄れた気がする。", "You feel less resistant to fire."));
557 if (!caster_ptr->oppose_cold)
559 msg_print(_("冷気への耐性が薄れた気がする。", "You feel less resistant to cold."));
562 if (!caster_ptr->oppose_pois)
564 msg_print(_("毒への耐性が薄れた気がする。", "You feel less resistant to pois."));
571 if (name) return _("ホビットのメロディ", "Hobbit Melodies");
572 if (desc) return _("加速する。", "Hastes you.");
574 /* Stop singing before start another */
575 if (cast || fail) stop_singing(caster_ptr);
579 msg_print(_("軽快な歌を口ずさみ始めた...", "You start singing joyful pop song..."));
580 start_singing(caster_ptr, spell, MUSIC_SPEED);
585 if (!caster_ptr->fast)
587 msg_print(_("動きの素早さがなくなったようだ。", "You feel yourself slow down."));
594 if (name) return _("歪んだ世界", "World Contortion");
595 if (desc) return _("近くのモンスターをテレポートさせる。抵抗されると無効。", "Teleports all nearby monsters away unless resisted.");
598 POSITION rad = plev / 15 + 1;
599 POWER power = plev * 3 + 1;
601 if (info) return info_radius(rad);
603 /* Stop singing before start another */
604 if (cast || fail) stop_singing(caster_ptr);
608 msg_print(_("歌が空間を歪めた...", "Reality whirls wildly as you sing a dizzying melody..."));
609 project(caster_ptr, 0, rad, caster_ptr->y, caster_ptr->x, power, GF_AWAY_ALL, PROJECT_KILL, -1);
615 if (name) return _("退散の歌", "Dispelling chant");
616 if (desc) return _("視界内の全てのモンスターにダメージを与える。邪悪なモンスターに特に大きなダメージを与える。",
617 "Damages all monsters in sight. Hurts evil monsters greatly.");
619 /* Stop singing before start another */
620 if (cast || fail) stop_singing(caster_ptr);
624 msg_print(_("耐えられない不協和音が敵を責め立てた...", "You cry out in an ear-wracking voice..."));
625 start_singing(caster_ptr, spell, MUSIC_DISPEL);
629 DICE_SID m_sides = plev * 3;
630 DICE_SID e_sides = plev * 3;
632 if (info) return format("%s1d%d+1d%d", KWD_DAM, m_sides, e_sides);
636 dispel_monsters(caster_ptr, randint1(m_sides));
637 dispel_evil(caster_ptr, randint1(e_sides));
643 if (name) return _("サルマンの甘言", "The Voice of Saruman");
644 if (desc) return _("視界内の全てのモンスターを減速させ、眠らせようとする。抵抗されると無効。", "Attempts to slow and sleep all monsters in sight.");
646 /* Stop singing before start another */
647 if (cast || fail) stop_singing(caster_ptr);
651 msg_print(_("優しく、魅力的な歌を口ずさみ始めた...", "You start humming a gentle and attractive song..."));
652 start_singing(caster_ptr, spell, MUSIC_SARUMAN);
658 if (info) return info_power(power);
662 slow_monsters(caster_ptr, plev);
663 sleep_monsters(caster_ptr, plev);
670 if (name) return _("嵐の音色", "Song of the Tempest");
671 if (desc) return _("轟音のビームを放つ。", "Fires a beam of sound.");
674 DICE_NUMBER dice = 15 + (plev - 1) / 2;
677 if (info) return info_damage(dice, sides, 0);
679 /* Stop singing before start another */
680 if (cast || fail) stop_singing(caster_ptr);
684 if (!get_aim_dir(&dir)) return NULL;
686 fire_beam(caster_ptr, GF_SOUND, dir, damroll(dice, sides));
692 if (name) return _("もう一つの世界", "Ambarkanta");
693 if (desc) return _("現在の階を再構成する。", "Recreates current dungeon level.");
699 if (info) return info_delay(base, sides);
701 /* Stop singing before start another */
702 if (cast || fail) stop_singing(caster_ptr);
706 msg_print(_("周囲が変化し始めた...", "You sing of the primeval shaping of Middle-earth..."));
707 reserve_alter_reality(caster_ptr);
713 if (name) return _("破壊の旋律", "Wrecking Pattern");
714 if (desc) return _("周囲のダンジョンを揺らし、壁と床をランダムに入れ変える。",
715 "Shakes dungeon structure, and results in random swapping of floors and walls.");
717 /* Stop singing before start another */
718 if (cast || fail) stop_singing(caster_ptr);
722 msg_print(_("破壊的な歌が響きわたった...", "You weave a pattern of sounds to contort and shatter..."));
723 start_singing(caster_ptr, spell, MUSIC_QUAKE);
729 if (info) return info_radius(rad);
733 earthquake(caster_ptr, caster_ptr->y, caster_ptr->x, 10, 0);
741 if (name) return _("停滞の歌", "Stationary Shriek");
742 if (desc) return _("視界内の全てのモンスターを麻痺させようとする。抵抗されると無効。", "Attempts to freeze all monsters in sight.");
744 /* Stop singing before start another */
745 if (cast || fail) stop_singing(caster_ptr);
749 msg_print(_("ゆっくりとしたメロディを奏で始めた...", "You weave a very slow pattern which is almost likely to stop..."));
750 start_singing(caster_ptr, spell, MUSIC_STASIS);
754 POWER power = plev * 4;
756 if (info) return info_power(power);
760 stasis_monsters(caster_ptr, power);
767 if (name) return _("守りの歌", "Endurance");
768 if (desc) return _("自分のいる床の上に、モンスターが通り抜けたり召喚されたりすることができなくなるルーンを描く。",
769 "Sets a glyph on the floor beneath you. Monsters cannot attack you if you are on a glyph, but can try to break glyph.");
772 /* Stop singing before start another */
773 if (cast || fail) stop_singing(caster_ptr);
777 msg_print(_("歌が神聖な場を作り出した...", "The holy power of the Music is creating sacred field..."));
778 warding_glyph(caster_ptr);
784 if (name) return _("英雄の詩", "The Hero's Poem");
785 if (desc) return _("加速し、ヒーロー気分になり、視界内の全てのモンスターにダメージを与える。",
786 "Hastes you. Gives heroism. Damages all monsters in sight.");
788 /* Stop singing before start another */
789 if (cast || fail) stop_singing(caster_ptr);
793 msg_print(_("英雄の歌を口ずさんだ...", "You chant a powerful, heroic call to arms..."));
794 (void)hp_player(caster_ptr, 10);
795 (void)set_afraid(caster_ptr, 0);
797 /* Recalculate hitpoints */
798 caster_ptr->update |= (PU_HP);
800 start_singing(caster_ptr, spell, MUSIC_SHERO);
805 if (!caster_ptr->hero)
807 msg_print(_("ヒーローの気分が消え失せた。", "The heroism wears off."));
808 /* Recalculate hitpoints */
809 caster_ptr->update |= (PU_HP);
812 if (!caster_ptr->fast)
814 msg_print(_("動きの素早さがなくなったようだ。", "You feel yourself slow down."));
819 DICE_NUMBER dice = 1;
820 DICE_SID sides = plev * 3;
822 if (info) return info_damage(dice, sides, 0);
826 dispel_monsters(caster_ptr, damroll(dice, sides));
832 if (name) return _("ヤヴァンナの助け", "Relief of Yavanna");
833 if (desc) return _("強力な回復の歌で、負傷と朦朧状態も全快する。", "Powerful healing song. Also heals cut and stun completely.");
835 /* Stop singing before start another */
836 if (cast || fail) stop_singing(caster_ptr);
840 msg_print(_("歌を通して体に活気が戻ってきた...", "Life flows through you as you sing the song..."));
841 start_singing(caster_ptr, spell, MUSIC_H_LIFE);
845 DICE_NUMBER dice = 15;
848 if (info) return info_heal(dice, sides, 0);
852 hp_player(caster_ptr, damroll(dice, sides));
853 set_stun(caster_ptr, 0);
854 set_cut(caster_ptr,0);
861 if (name) return _("再生の歌", "Goddess' rebirth");
862 if (desc) return _("すべてのステータスと経験値を回復する。", "Restores all stats and experience.");
865 /* Stop singing before start another */
866 if (cast || fail) stop_singing(caster_ptr);
870 msg_print(_("暗黒の中に光と美をふりまいた。体が元の活力を取り戻した。",
871 "You strewed light and beauty in the dark as you sing. You feel refreshed."));
872 (void)restore_all_status(caster_ptr);
873 (void)restore_level(caster_ptr);
879 if (name) return _("サウロンの魔術", "Wizardry of Sauron");
880 if (desc) return _("非常に強力でごく小さい轟音の球を放つ。", "Fires an extremely powerful tiny ball of sound.");
883 DICE_NUMBER dice = 50 + plev;
887 if (info) return info_damage(dice, sides, 0);
889 /* Stop singing before start another */
890 if (cast || fail) stop_singing(caster_ptr);
894 if (!get_aim_dir(&dir)) return NULL;
896 fire_ball(caster_ptr, GF_SOUND, dir, damroll(dice, sides), rad);
902 if (name) return _("フィンゴルフィンの挑戦", "Fingolfin's Challenge");
903 if (desc) return _("ダメージを受けなくなるバリアを張る。",
904 "Generates a barrier which completely protects you from almost all damage.");
906 /* Stop singing before start another */
907 if (cast || fail) stop_singing(caster_ptr);
911 msg_print(_("フィンゴルフィンの冥王への挑戦を歌った...",
912 "You recall the valor of Fingolfin's challenge to the Dark Lord..."));
914 caster_ptr->redraw |= (PR_MAP);
915 caster_ptr->update |= (PU_MONSTERS);
916 caster_ptr->window |= (PW_OVERHEAD | PW_DUNGEON);
918 start_singing(caster_ptr, spell, MUSIC_INVULN);
923 if (!caster_ptr->invuln)
925 msg_print(_("無敵ではなくなった。", "The invulnerability wears off."));
927 caster_ptr->redraw |= (PR_MAP);
928 caster_ptr->update |= (PU_MONSTERS);
929 caster_ptr->window |= (PW_OVERHEAD | PW_DUNGEON);