2 #include "cmd-spell.h"
\r
5 * @brief
\89Ì
\82Ì
\8aJ
\8en
\82ð
\8f\88\97\9d\82·
\82é / Start singing if the player is a Bard
\r
6 * @param spell
\97Ì
\88æ
\96\82\96@
\82Æ
\82µ
\82Ä
\82ÌID
\r
7 * @param song
\96\82\96@
\8cø
\89Ê
\82ÌID
\r
10 static void start_singing(SPELL_IDX spell, MAGIC_NUM1 song)
\r
12 /* Remember the song index */
\r
13 SINGING_SONG_EFFECT(p_ptr) = (MAGIC_NUM1)song;
\r
15 /* Remember the index of the spell which activated the song */
\r
16 SINGING_SONG_ID(p_ptr) = (MAGIC_NUM2)spell;
\r
19 /* Now the player is singing */
\r
20 set_action(ACTION_SING);
\r
23 /* Recalculate bonuses */
\r
24 p_ptr->update |= (PU_BONUS);
\r
26 /* Redraw status bar */
\r
27 p_ptr->redraw |= (PR_STATUS);
\r
31 * @brief
\89Ì
\82Ì
\92â
\8e~
\82ð
\8f\88\97\9d\82·
\82é / Stop singing if the player is a Bard
\r
34 void stop_singing(void)
\r
36 if (p_ptr->pclass != CLASS_BARD) return;
\r
38 /* Are there interupted song? */
\r
39 if (INTERUPTING_SONG_EFFECT(p_ptr))
\r
41 /* Forget interupted song */
\r
42 INTERUPTING_SONG_EFFECT(p_ptr) = MUSIC_NONE;
\r
46 /* The player is singing? */
\r
47 if (!SINGING_SONG_EFFECT(p_ptr)) return;
\r
49 /* Hack -- if called from set_action(), avoid recursive loop */
\r
50 if (p_ptr->action == ACTION_SING) set_action(ACTION_NONE);
\r
52 /* Message text of each song or etc. */
\r
53 do_spell(REALM_MUSIC, SINGING_SONG_ID(p_ptr), SPELL_STOP);
\r
55 SINGING_SONG_EFFECT(p_ptr) = MUSIC_NONE;
\r
56 SINGING_SONG_ID(p_ptr) = 0;
\r
58 /* Recalculate bonuses */
\r
59 p_ptr->update |= (PU_BONUS);
\r
61 /* Redraw status bar */
\r
62 p_ptr->redraw |= (PR_STATUS);
\r
66 * @brief
\89Ì
\82Ì
\8ae
\8f\88\97\9d\82ð
\8ds
\82¤
\r
67 * @param spell
\89ÌID
\r
68 * @param mode
\8f\88\97\9d\93à
\97e (SPELL_NAME / SPELL_DESC / SPELL_INFO / SPELL_CAST / SPELL_FAIL / SPELL_CONT / SPELL_STOP)
\r
69 * @return SPELL_NAME / SPELL_DESC / SPELL_INFO
\8e\9e\82É
\82Í
\95¶
\8e\9a\97ñ
\83|
\83C
\83\93\83^
\82ð
\95Ô
\82·
\81BSPELL_CAST / SPELL_FAIL / SPELL_CONT / SPELL_STOP
\8e\9e\82ÍNULL
\95¶
\8e\9a\97ñ
\82ð
\95Ô
\82·
\81B
\r
71 cptr do_music_spell(SPELL_IDX spell, BIT_FLAGS mode)
\r
73 bool name = (mode == SPELL_NAME) ? TRUE : FALSE;
\r
74 bool desc = (mode == SPELL_DESC) ? TRUE : FALSE;
\r
75 bool info = (mode == SPELL_INFO) ? TRUE : FALSE;
\r
76 bool cast = (mode == SPELL_CAST) ? TRUE : FALSE;
\r
77 bool fail = (mode == SPELL_FAIL) ? TRUE : FALSE;
\r
78 bool cont = (mode == SPELL_CONT) ? TRUE : FALSE;
\r
79 bool stop = (mode == SPELL_STOP) ? TRUE : FALSE;
\r
80 static const char s_dam[] = _("
\91¹
\8f\9d:", "dam ");
\r
83 int plev = p_ptr->lev;
\r
88 if (name) return _("
\92x
\93Ý
\82Ì
\89Ì", "Song of Holding");
\r
89 if (desc) return _("
\8e\8b\8aE
\93à
\82Ì
\91S
\82Ä
\82Ì
\83\82\83\93\83X
\83^
\81[
\82ð
\8c¸
\91¬
\82³
\82¹
\82é
\81B
\92ï
\8dR
\82³
\82ê
\82é
\82Æ
\96³
\8cø
\81B", "Attempts to slow all monsters in sight.");
\r
91 /* Stop singing before start another */
\r
92 if (cast || fail) stop_singing();
\r
96 msg_print(_("
\82ä
\82Á
\82
\82è
\82Æ
\82µ
\82½
\83\81\83\8d\83f
\83B
\82ð
\8cû
\82¸
\82³
\82Ý
\8en
\82ß
\82½
\81D
\81D
\81D", "You start humming a slow, steady melody..."));
\r
97 start_singing(spell, MUSIC_SLOW);
\r
103 if (info) return info_power(power);
\r
107 slow_monsters(plev);
\r
113 if (name) return _("
\8fj
\95\9f\82Ì
\89Ì", "Song of Blessing");
\r
114 if (desc) return _("
\96½
\92\86\97¦
\82ÆAC
\82Ì
\83{
\81[
\83i
\83X
\82ð
\93¾
\82é
\81B", "Gives bonus to hit and AC for a few turns.");
\r
116 /* Stop singing before start another */
\r
117 if (cast || fail) stop_singing();
\r
121 msg_print(_("
\8cµ
\82©
\82È
\83\81\83\8d\83f
\83B
\82ð
\91t
\82Å
\8en
\82ß
\82½
\81D
\81D
\81D", "The holy power of the Music of the Ainur enters you..."));
\r
122 start_singing(spell, MUSIC_BLESS);
\r
127 if (!p_ptr->blessed)
\r
129 msg_print(_("
\8d\82\8c\89\82È
\8bC
\95ª
\82ª
\8fÁ
\82¦
\8e¸
\82¹
\82½
\81B", "The prayer has expired."));
\r
136 if (name) return _("
\95ö
\89ó
\82Ì
\89¹
\90F", "Wrecking Note");
\r
137 if (desc) return _("
\8d\8c\89¹
\82Ì
\83{
\83\8b\83g
\82ð
\95ú
\82Â
\81B", "Fires a bolt of sound.");
\r
139 /* Stop singing before start another */
\r
140 if (cast || fail) stop_singing();
\r
143 int dice = 4 + (plev - 1) / 5;
\r
146 if (info) return info_damage(dice, sides, 0);
\r
150 if (!get_aim_dir(&dir)) return NULL;
\r
152 fire_bolt(GF_SOUND, dir, damroll(dice, sides));
\r
158 if (name) return _("
\9eN
\9eO
\82Ì
\90ù
\97¥", "Stun Pattern");
\r
159 if (desc) return _("
\8e\8b\8aE
\93à
\82Ì
\91S
\82Ä
\82Ì
\83\82\83\93\83X
\83^
\81[
\82ð
\9eN
\9eO
\82³
\82¹
\82é
\81B
\92ï
\8dR
\82³
\82ê
\82é
\82Æ
\96³
\8cø
\81B", "Attempts to stun all monsters in sight.");
\r
161 /* Stop singing before start another */
\r
162 if (cast || fail) stop_singing();
\r
166 msg_print(_("á¿
\98f
\82³
\82¹
\82é
\83\81\83\8d\83f
\83B
\82ð
\91t
\82Å
\8en
\82ß
\82½
\81D
\81D
\81D", "You weave a pattern of sounds to bewilder and daze..."));
\r
167 start_singing(spell, MUSIC_STUN);
\r
171 int dice = plev / 10;
\r
174 if (info) return info_power_dice(dice, sides);
\r
178 stun_monsters(damroll(dice, sides));
\r
185 if (name) return _("
\90¶
\96½
\82Ì
\97¬
\82ê", "Flow of Life");
\r
186 if (desc) return _("
\91Ì
\97Í
\82ð
\8f
\82µ
\89ñ
\95\9c\82³
\82¹
\82é
\81B", "Heals HP a little.");
\r
188 /* Stop singing before start another */
\r
189 if (cast || fail) stop_singing();
\r
193 msg_print(_("
\89Ì
\82ð
\92Ê
\82µ
\82Ä
\91Ì
\82É
\8a\88\8bC
\82ª
\96ß
\82Á
\82Ä
\82«
\82½
\81D
\81D
\81D", "Life flows through you as you sing a song of healing..."));
\r
194 start_singing(spell, MUSIC_L_LIFE);
\r
201 if (info) return info_heal(dice, sides, 0);
\r
205 hp_player(damroll(dice, sides));
\r
212 if (name) return _("
\91¾
\97z
\82Ì
\89Ì", "Song of the Sun");
\r
213 if (desc) return _("
\8cõ
\8c¹
\82ª
\8fÆ
\82ç
\82µ
\82Ä
\82¢
\82é
\94Í
\88Í
\82©
\95\94\89®
\91S
\91Ì
\82ð
\89i
\8bv
\82É
\96¾
\82é
\82
\82·
\82é
\81B", "Lights up nearby area and the inside of a room permanently.");
\r
215 /* Stop singing before start another */
\r
216 if (cast || fail) stop_singing();
\r
220 int sides = plev / 2;
\r
221 int rad = plev / 10 + 1;
\r
223 if (info) return info_damage(dice, sides, 0);
\r
227 msg_print(_("
\8cõ
\82è
\8bP
\82
\89Ì
\82ª
\95Ó
\82è
\82ð
\8fÆ
\82ç
\82µ
\82½
\81B", "Your uplifting song brings brightness to dark places..."));
\r
228 lite_area(damroll(dice, sides), rad);
\r
234 if (name) return _("
\8b°
\95|
\82Ì
\89Ì", "Song of Fear");
\r
235 if (desc) return _("
\8e\8b\8aE
\93à
\82Ì
\91S
\82Ä
\82Ì
\83\82\83\93\83X
\83^
\81[
\82ð
\8b°
\95|
\82³
\82¹
\82é
\81B
\92ï
\8dR
\82³
\82ê
\82é
\82Æ
\96³
\8cø
\81B", "Attempts to scare all monsters in sight.");
\r
237 /* Stop singing before start another */
\r
238 if (cast || fail) stop_singing();
\r
242 msg_print(_("
\82¨
\82Ç
\82ë
\82¨
\82Ç
\82ë
\82µ
\82¢
\83\81\83\8d\83f
\83B
\82ð
\91t
\82Å
\8en
\82ß
\82½
\81D
\81D
\81D", "You start weaving a fearful pattern..."));
\r
243 start_singing(spell, MUSIC_FEAR);
\r
249 if (info) return info_power(power);
\r
253 project_hack(GF_TURN_ALL, power);
\r
260 if (name) return _("
\90í
\82¢
\82Ì
\89Ì", "Heroic Ballad");
\r
261 if (desc) return _("
\83q
\81[
\83\8d\81[
\8bC
\95ª
\82É
\82È
\82é
\81B", "Removes fear, and gives bonus to hit and 10 more HP for a while.");
\r
263 /* Stop singing before start another */
\r
264 if (cast || fail) stop_singing();
\r
268 msg_print(_("
\8c\83\82µ
\82¢
\90í
\82¢
\82Ì
\89Ì
\82ð
\89Ì
\82Á
\82½
\81D
\81D
\81D", "You start singing a song of intense fighting..."));
\r
270 (void)hp_player(10);
\r
271 (void)set_afraid(0);
\r
273 /* Recalculate hitpoints */
\r
274 p_ptr->update |= (PU_HP);
\r
276 start_singing(spell, MUSIC_HERO);
\r
283 msg_print(_("
\83q
\81[
\83\8d\81[
\82Ì
\8bC
\95ª
\82ª
\8fÁ
\82¦
\8e¸
\82¹
\82½
\81B", "The heroism wears off."));
\r
284 /* Recalculate hitpoints */
\r
285 p_ptr->update |= (PU_HP);
\r
292 if (name) return _("
\97ì
\93I
\92m
\8ao", "Clairaudience");
\r
293 if (desc) return _("
\8bß
\82
\82Ìã©/
\94à/
\8aK
\92i
\82ð
\8a´
\92m
\82·
\82é
\81B
\83\8c\83x
\83\8b15
\82Å
\91S
\82Ä
\82Ì
\83\82\83\93\83X
\83^
\81[
\81A20
\82Å
\8dà
\95ó
\82Æ
\83A
\83C
\83e
\83\80\82ð
\8a´
\92m
\82Å
\82«
\82é
\82æ
\82¤
\82É
\82È
\82é
\81B
\83\8c\83x
\83\8b25
\82Å
\8eü
\95Ó
\82Ì
\92n
\8c`
\82ð
\8a´
\92m
\82µ
\81A40
\82Å
\82»
\82Ì
\8aK
\91S
\91Ì
\82ð
\89i
\8bv
\82É
\8fÆ
\82ç
\82µ
\81A
\83_
\83\93\83W
\83\87\83\93\93à
\82Ì
\82·
\82×
\82Ä
\82Ì
\83A
\83C
\83e
\83\80\82ð
\8a´
\92m
\82·
\82é
\81B
\82±
\82Ì
\8cø
\89Ê
\82Í
\89Ì
\82¢
\91±
\82¯
\82é
\82±
\82Æ
\82Å
\8f\87\82É
\8bN
\82±
\82é
\81B",
\r
294 "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.");
\r
296 /* Stop singing before start another */
\r
297 if (cast || fail) stop_singing();
\r
301 msg_print(_("
\90Ã
\82©
\82È
\89¹
\8ay
\82ª
\8a´
\8ao
\82ð
\8c¤
\82¬
\90\9f\82Ü
\82³
\82¹
\82½
\81D
\81D
\81D", "Your quiet music sharpens your sense of hearing..."));
\r
302 /* Hack -- Initialize the turn count */
\r
303 SINGING_COUNT(p_ptr) = 0;
\r
304 start_singing(spell, MUSIC_DETECT);
\r
308 int rad = DETECT_RAD_DEFAULT;
\r
310 if (info) return info_radius(rad);
\r
314 int count = SINGING_COUNT(p_ptr);
\r
316 if (count >= 19) wiz_lite(FALSE);
\r
320 if (plev > 39 && count < 19)
\r
321 SINGING_COUNT(p_ptr) = count + 1;
\r
325 /* There are too many hidden treasure. So... */
\r
326 /* detect_treasure(rad); */
\r
327 detect_objects_gold(rad);
\r
328 detect_objects_normal(rad);
\r
330 if (plev > 24 && count < 11)
\r
331 SINGING_COUNT(p_ptr) = count + 1;
\r
335 detect_monsters_invis(rad);
\r
336 detect_monsters_normal(rad);
\r
338 if (plev > 19 && count < 6)
\r
339 SINGING_COUNT(p_ptr) = count + 1;
\r
341 detect_traps(rad, TRUE);
\r
343 detect_stairs(rad);
\r
345 if (plev > 14 && count < 3)
\r
346 SINGING_COUNT(p_ptr) = count + 1;
\r
353 if (name) return _("
\8d°
\82Ì
\89Ì", "Soul Shriek");
\r
354 if (desc) return _("
\8e\8b\8aE
\93à
\82Ì
\91S
\82Ä
\82Ì
\83\82\83\93\83X
\83^
\81[
\82É
\91Î
\82µ
\82Ä
\90¸
\90_
\8dU
\8c\82\82ð
\8ds
\82¤
\81B", "Damages all monsters in sight with PSI damages.");
\r
356 /* Stop singing before start another */
\r
357 if (cast || fail) stop_singing();
\r
361 msg_print(_("
\90¸
\90_
\82ð
\94P
\82¶
\8bÈ
\82°
\82é
\89Ì
\82ð
\89Ì
\82Á
\82½
\81D
\81D
\81D", "You start singing a song of soul in pain..."));
\r
362 start_singing(spell, MUSIC_PSI);
\r
367 int sides = plev * 3 / 2;
\r
369 if (info) return info_damage(dice, sides, 0);
\r
373 project_hack(GF_PSI, damroll(dice, sides));
\r
380 if (name) return _("
\92m
\8e¯
\82Ì
\89Ì", "Song of Lore");
\r
381 if (desc) return _("
\8e©
\95ª
\82Ì
\82¢
\82é
\83}
\83X
\82Æ
\97×
\82è
\82Ì
\83}
\83X
\82É
\97\8e\82¿
\82Ä
\82¢
\82é
\83A
\83C
\83e
\83\80\82ð
\8aÓ
\92è
\82·
\82é
\81B", "Identifies all items which are in the adjacent squares.");
\r
383 /* Stop singing before start another */
\r
384 if (cast || fail) stop_singing();
\r
388 msg_print(_("
\82±
\82Ì
\90¢
\8aE
\82Ì
\92m
\8e¯
\82ª
\97¬
\82ê
\8d\9e\82ñ
\82Å
\82«
\82½
\81D
\81D
\81D", "You recall the rich lore of the world..."));
\r
389 start_singing(spell, MUSIC_ID);
\r
395 if (info) return info_radius(rad);
\r
398 *
\89Ì
\82Ì
\8aJ
\8en
\8e\9e\82É
\82à
\8cø
\89Ê
\94
\93®
\81F
\r
399 * MP
\95s
\91«
\82Å
\8aÓ
\92è
\82ª
\94
\93®
\82³
\82ê
\82é
\91O
\82É
\89Ì
\82ª
\92\86\92f
\82µ
\82Ä
\82µ
\82Ü
\82¤
\82Ì
\82ð
\96h
\8e~
\81B
\r
403 project(0, rad, p_ptr->y, p_ptr->x, 0, GF_IDENTIFY, PROJECT_ITEM, -1);
\r
410 if (name) return _("
\89B
\93Ù
\82Ì
\89Ì", "Hiding Tune");
\r
411 if (desc) return _("
\89B
\96§
\8ds
\93®
\94\
\97Í
\82ð
\8fã
\8f¸
\82³
\82¹
\82é
\81B", "Gives improved stealth.");
\r
413 /* Stop singing before start another */
\r
414 if (cast || fail) stop_singing();
\r
418 msg_print(_("
\82 \82È
\82½
\82Ì
\8ep
\82ª
\8ci
\90F
\82É
\82Æ
\82¯
\82±
\82ñ
\82Å
\82¢
\82Á
\82½
\81D
\81D
\81D", "Your song carries you beyond the sight of mortal eyes..."));
\r
419 start_singing(spell, MUSIC_STEALTH);
\r
424 if (!p_ptr->tim_stealth)
\r
426 msg_print(_("
\8ep
\82ª
\82Í
\82Á
\82«
\82è
\82Æ
\8c©
\82¦
\82é
\82æ
\82¤
\82É
\82È
\82Á
\82½
\81B", "You are no longer hided."));
\r
433 if (name) return _("
\8c¶
\89e
\82Ì
\90ù
\97¥", "Illusion Pattern");
\r
434 if (desc) return _("
\8e\8b\8aE
\93à
\82Ì
\91S
\82Ä
\82Ì
\83\82\83\93\83X
\83^
\81[
\82ð
\8d¬
\97\90\82³
\82¹
\82é
\81B
\92ï
\8dR
\82³
\82ê
\82é
\82Æ
\96³
\8cø
\81B", "Attempts to confuse all monsters in sight.");
\r
436 /* Stop singing before start another */
\r
437 if (cast || fail) stop_singing();
\r
441 msg_print(_("
\95Ó
\82è
\88ê
\96Ê
\82É
\8c¶
\89e
\82ª
\8c»
\82ê
\82½
\81D
\81D
\81D", "You weave a pattern of sounds to beguile and confuse..."));
\r
442 start_singing(spell, MUSIC_CONF);
\r
446 int power = plev * 2;
\r
448 if (info) return info_power(power);
\r
452 confuse_monsters(power);
\r
459 if (name) return _("
\94j
\96Å
\82Ì
\8b©
\82Ñ", "Doomcall");
\r
460 if (desc) return _("
\8e\8b\8aE
\93à
\82Ì
\91S
\82Ä
\82Ì
\83\82\83\93\83X
\83^
\81[
\82É
\91Î
\82µ
\82Ä
\8d\8c\89¹
\8dU
\8c\82\82ð
\8ds
\82¤
\81B", "Damages all monsters in sight with booming sound.");
\r
462 /* Stop singing before start another */
\r
463 if (cast || fail) stop_singing();
\r
467 msg_print(_("
\8d\8c\89¹
\82ª
\8b¿
\82¢
\82½
\81D
\81D
\81D", "The fury of the Downfall of Numenor lashes out..."));
\r
468 start_singing(spell, MUSIC_SOUND);
\r
472 int dice = 10 + plev / 5;
\r
475 if (info) return info_damage(dice, sides, 0);
\r
479 project_hack(GF_SOUND, damroll(dice, sides));
\r
486 if (name) return _("
\83t
\83B
\83\8a\83G
\83\8b\82Ì
\89Ì", "Firiel's Song");
\r
487 if (desc) return _("
\8eü
\88Í
\82Ì
\8e\80\91Ì
\82â
\8d\9c\82ð
\90¶
\82«
\95Ô
\82·
\81B", "Resurrects nearby corpse and skeletons. And makes these your pets.");
\r
490 /* Stop singing before start another */
\r
491 if (cast || fail) stop_singing();
\r
495 msg_print(_("
\90¶
\96½
\82Æ
\95\9c\8a\88\82Ì
\83e
\81[
\83}
\82ð
\91t
\82Å
\8en
\82ß
\82½
\81D
\81D
\81D", "The themes of life and revival are woven into your song..."));
\r
496 animate_dead(0, p_ptr->y, p_ptr->x);
\r
502 if (name) return _("
\97·
\82Ì
\92\87\8aÔ", "Fellowship Chant");
\r
503 if (desc) return _("
\8e\8b\8aE
\93à
\82Ì
\91S
\82Ä
\82Ì
\83\82\83\93\83X
\83^
\81[
\82ð
\96£
\97¹
\82·
\82é
\81B
\92ï
\8dR
\82³
\82ê
\82é
\82Æ
\96³
\8cø
\81B", "Attempts to charm all monsters in sight.");
\r
505 /* Stop singing before start another */
\r
506 if (cast || fail) stop_singing();
\r
510 msg_print(_("
\88À
\82ç
\82©
\82È
\83\81\83\8d\83f
\83B
\82ð
\91t
\82Å
\8en
\82ß
\82½
\81D
\81D
\81D", "You weave a slow, soothing melody of imploration..."));
\r
511 start_singing(spell, MUSIC_CHARM);
\r
515 int dice = 10 + plev / 15;
\r
518 if (info) return info_power_dice(dice, sides);
\r
522 charm_monsters(damroll(dice, sides));
\r
529 if (name) return _("
\95ª
\89ð
\89¹
\94g", "Sound of disintegration");
\r
530 if (desc) return _("
\95Ç
\82ð
\8c@
\82è
\90i
\82Þ
\81B
\8e©
\95ª
\82Ì
\91«
\8c³
\82Ì
\83A
\83C
\83e
\83\80\82Í
\8fö
\94
\82·
\82é
\81B", "Makes you be able to burrow into walls. Objects under your feet evaporate.");
\r
532 /* Stop singing before start another */
\r
533 if (cast || fail) stop_singing();
\r
537 msg_print(_("
\95²
\8dÓ
\82·
\82é
\83\81\83\8d\83f
\83B
\82ð
\91t
\82Å
\8en
\82ß
\82½
\81D
\81D
\81D", "You weave a violent pattern of sounds to break wall."));
\r
538 start_singing(spell, MUSIC_WALL);
\r
543 *
\89Ì
\82Ì
\8aJ
\8en
\8e\9e\82É
\82à
\8cø
\89Ê
\94
\93®
\81F
\r
544 * MP
\95s
\91«
\82Å
\8cø
\89Ê
\82ª
\94
\93®
\82³
\82ê
\82é
\91O
\82É
\89Ì
\82ª
\92\86\92f
\82µ
\82Ä
\82µ
\82Ü
\82¤
\82Ì
\82ð
\96h
\8e~
\81B
\r
548 project(0, 0, p_ptr->y, p_ptr->x,
\r
549 0, GF_DISINTEGRATE, PROJECT_KILL | PROJECT_ITEM | PROJECT_HIDE, -1);
\r
555 if (name) return _("
\8c³
\91f
\91Ï
\90«", "Finrod's Resistance");
\r
556 if (desc) return _("
\8e_
\81A
\93d
\8c\82\81A
\89\8a\81A
\97â
\8bC
\81A
\93Å
\82É
\91Î
\82·
\82é
\91Ï
\90«
\82ð
\93¾
\82é
\81B
\91\95\94õ
\82É
\82æ
\82é
\91Ï
\90«
\82É
\97Ý
\90Ï
\82·
\82é
\81B",
\r
557 "Gives resistance to fire, cold, electricity, acid and poison. These resistances can be added to which from equipment for more powerful resistances.");
\r
559 /* Stop singing before start another */
\r
560 if (cast || fail) stop_singing();
\r
564 msg_print(_("
\8c³
\91f
\82Ì
\97Í
\82É
\91Î
\82·
\82é
\94E
\91Ï
\82Ì
\89Ì
\82ð
\89Ì
\82Á
\82½
\81B", "You sing a song of perseverance against powers..."));
\r
565 start_singing(spell, MUSIC_RESIST);
\r
570 if (!p_ptr->oppose_acid)
\r
572 msg_print(_("
\8e_
\82Ö
\82Ì
\91Ï
\90«
\82ª
\94\96\82ê
\82½
\8bC
\82ª
\82·
\82é
\81B", "You feel less resistant to acid."));
\r
575 if (!p_ptr->oppose_elec)
\r
577 msg_print(_("
\93d
\8c\82\82Ö
\82Ì
\91Ï
\90«
\82ª
\94\96\82ê
\82½
\8bC
\82ª
\82·
\82é
\81B", "You feel less resistant to elec."));
\r
580 if (!p_ptr->oppose_fire)
\r
582 msg_print(_("
\89Î
\82Ö
\82Ì
\91Ï
\90«
\82ª
\94\96\82ê
\82½
\8bC
\82ª
\82·
\82é
\81B", "You feel less resistant to fire."));
\r
585 if (!p_ptr->oppose_cold)
\r
587 msg_print(_("
\97â
\8bC
\82Ö
\82Ì
\91Ï
\90«
\82ª
\94\96\82ê
\82½
\8bC
\82ª
\82·
\82é
\81B", "You feel less resistant to cold."));
\r
590 if (!p_ptr->oppose_pois)
\r
592 msg_print(_("
\93Å
\82Ö
\82Ì
\91Ï
\90«
\82ª
\94\96\82ê
\82½
\8bC
\82ª
\82·
\82é
\81B", "You feel less resistant to pois."));
\r
599 if (name) return _("
\83z
\83r
\83b
\83g
\82Ì
\83\81\83\8d\83f
\83B", "Hobbit Melodies");
\r
600 if (desc) return _("
\89Á
\91¬
\82·
\82é
\81B", "Hastes you.");
\r
602 /* Stop singing before start another */
\r
603 if (cast || fail) stop_singing();
\r
607 msg_print(_("
\8cy
\89õ
\82È
\89Ì
\82ð
\8cû
\82¸
\82³
\82Ý
\8en
\82ß
\82½
\81D
\81D
\81D", "You start singing joyful pop song..."));
\r
608 start_singing(spell, MUSIC_SPEED);
\r
615 msg_print(_("
\93®
\82«
\82Ì
\91f
\91\81\82³
\82ª
\82È
\82
\82È
\82Á
\82½
\82æ
\82¤
\82¾
\81B", "You feel yourself slow down."));
\r
622 if (name) return _("
\98c
\82ñ
\82¾
\90¢
\8aE", "World Contortion");
\r
623 if (desc) return _("
\8bß
\82
\82Ì
\83\82\83\93\83X
\83^
\81[
\82ð
\83e
\83\8c\83|
\81[
\83g
\82³
\82¹
\82é
\81B
\92ï
\8dR
\82³
\82ê
\82é
\82Æ
\96³
\8cø
\81B", "Teleports all nearby monsters away unless resisted.");
\r
626 int rad = plev / 15 + 1;
\r
627 int power = plev * 3 + 1;
\r
629 if (info) return info_radius(rad);
\r
631 /* Stop singing before start another */
\r
632 if (cast || fail) stop_singing();
\r
636 msg_print(_("
\89Ì
\82ª
\8bó
\8aÔ
\82ð
\98c
\82ß
\82½
\81D
\81D
\81D", "Reality whirls wildly as you sing a dizzying melody..."));
\r
637 project(0, rad, p_ptr->y, p_ptr->x, power, GF_AWAY_ALL, PROJECT_KILL, -1);
\r
643 if (name) return _("
\91Þ
\8eU
\82Ì
\89Ì", "Dispelling chant");
\r
644 if (desc) return _("
\8e\8b\8aE
\93à
\82Ì
\91S
\82Ä
\82Ì
\83\82\83\93\83X
\83^
\81[
\82É
\83_
\83\81\81[
\83W
\82ð
\97^
\82¦
\82é
\81B
\8e×
\88«
\82È
\83\82\83\93\83X
\83^
\81[
\82É
\93Á
\82É
\91å
\82«
\82È
\83_
\83\81\81[
\83W
\82ð
\97^
\82¦
\82é
\81B",
\r
645 "Damages all monsters in sight. Hurts evil monsters greatly.");
\r
647 /* Stop singing before start another */
\r
648 if (cast || fail) stop_singing();
\r
652 msg_print(_("
\91Ï
\82¦
\82ç
\82ê
\82È
\82¢
\95s
\8b¦
\98a
\89¹
\82ª
\93G
\82ð
\90Ó
\82ß
\97§
\82Ä
\82½
\81D
\81D
\81D", "You cry out in an ear-wracking voice..."));
\r
653 start_singing(spell, MUSIC_DISPEL);
\r
657 int m_sides = plev * 3;
\r
658 int e_sides = plev * 3;
\r
660 if (info) return format("%s1d%d+1d%d", s_dam, m_sides, e_sides);
\r
664 dispel_monsters(randint1(m_sides));
\r
665 dispel_evil(randint1(e_sides));
\r
671 if (name) return _("
\83T
\83\8b\83}
\83\93\82Ì
\8aÃ
\8c¾", "The Voice of Saruman");
\r
672 if (desc) return _("
\8e\8b\8aE
\93à
\82Ì
\91S
\82Ä
\82Ì
\83\82\83\93\83X
\83^
\81[
\82ð
\8c¸
\91¬
\82³
\82¹
\81A
\96°
\82ç
\82¹
\82æ
\82¤
\82Æ
\82·
\82é
\81B
\92ï
\8dR
\82³
\82ê
\82é
\82Æ
\96³
\8cø
\81B", "Attempts to slow and sleep all monsters in sight.");
\r
674 /* Stop singing before start another */
\r
675 if (cast || fail) stop_singing();
\r
679 msg_print(_("
\97D
\82µ
\82
\81A
\96£
\97Í
\93I
\82È
\89Ì
\82ð
\8cû
\82¸
\82³
\82Ý
\8en
\82ß
\82½
\81D
\81D
\81D", "You start humming a gentle and attractive song..."));
\r
680 start_singing(spell, MUSIC_SARUMAN);
\r
686 if (info) return info_power(power);
\r
690 slow_monsters(plev);
\r
691 sleep_monsters(plev);
\r
698 if (name) return _("
\97\92\82Ì
\89¹
\90F", "Song of the Tempest");
\r
699 if (desc) return _("
\8d\8c\89¹
\82Ì
\83r
\81[
\83\80\82ð
\95ú
\82Â
\81B", "Fires a beam of sound.");
\r
702 int dice = 15 + (plev - 1) / 2;
\r
705 if (info) return info_damage(dice, sides, 0);
\r
707 /* Stop singing before start another */
\r
708 if (cast || fail) stop_singing();
\r
712 if (!get_aim_dir(&dir)) return NULL;
\r
714 fire_beam(GF_SOUND, dir, damroll(dice, sides));
\r
720 if (name) return _("
\82à
\82¤
\88ê
\82Â
\82Ì
\90¢
\8aE", "Ambarkanta");
\r
721 if (desc) return _("
\8c»
\8dÝ
\82Ì
\8aK
\82ð
\8dÄ
\8d\
\90¬
\82·
\82é
\81B", "Recreates current dungeon level.");
\r
727 if (info) return info_delay(base, sides);
\r
729 /* Stop singing before start another */
\r
730 if (cast || fail) stop_singing();
\r
734 msg_print(_("
\8eü
\88Í
\82ª
\95Ï
\89»
\82µ
\8en
\82ß
\82½
\81D
\81D
\81D", "You sing of the primeval shaping of Middle-earth..."));
\r
741 if (name) return _("
\94j
\89ó
\82Ì
\90ù
\97¥", "Wrecking Pattern");
\r
742 if (desc) return _("
\8eü
\88Í
\82Ì
\83_
\83\93\83W
\83\87\83\93\82ð
\97h
\82ç
\82µ
\81A
\95Ç
\82Æ
\8f°
\82ð
\83\89\83\93\83_
\83\80\82É
\93ü
\82ê
\95Ï
\82¦
\82é
\81B",
\r
743 "Shakes dungeon structure, and results in random swapping of floors and walls.");
\r
745 /* Stop singing before start another */
\r
746 if (cast || fail) stop_singing();
\r
750 msg_print(_("
\94j
\89ó
\93I
\82È
\89Ì
\82ª
\8b¿
\82«
\82í
\82½
\82Á
\82½
\81D
\81D
\81D", "You weave a pattern of sounds to contort and shatter..."));
\r
751 start_singing(spell, MUSIC_QUAKE);
\r
757 if (info) return info_radius(rad);
\r
761 earthquake(p_ptr->y, p_ptr->x, 10);
\r
769 if (name) return _("
\92â
\91Ø
\82Ì
\89Ì", "Stationary Shriek");
\r
770 if (desc) return _("
\8e\8b\8aE
\93à
\82Ì
\91S
\82Ä
\82Ì
\83\82\83\93\83X
\83^
\81[
\82ð
\96\83á
\83\82³
\82¹
\82æ
\82¤
\82Æ
\82·
\82é
\81B
\92ï
\8dR
\82³
\82ê
\82é
\82Æ
\96³
\8cø
\81B", "Attempts to freeze all monsters in sight.");
\r
772 /* Stop singing before start another */
\r
773 if (cast || fail) stop_singing();
\r
777 msg_print(_("
\82ä
\82Á
\82
\82è
\82Æ
\82µ
\82½
\83\81\83\8d\83f
\83B
\82ð
\91t
\82Å
\8en
\82ß
\82½
\81D
\81D
\81D", "You weave a very slow pattern which is almost likely to stop..."));
\r
778 start_singing(spell, MUSIC_STASIS);
\r
782 int power = plev * 4;
\r
784 if (info) return info_power(power);
\r
788 stasis_monsters(power);
\r
795 if (name) return _("
\8eç
\82è
\82Ì
\89Ì", "Endurance");
\r
796 if (desc) return _("
\8e©
\95ª
\82Ì
\82¢
\82é
\8f°
\82Ì
\8fã
\82É
\81A
\83\82\83\93\83X
\83^
\81[
\82ª
\92Ê
\82è
\94²
\82¯
\82½
\82è
\8f¢
\8a«
\82³
\82ê
\82½
\82è
\82·
\82é
\82±
\82Æ
\82ª
\82Å
\82«
\82È
\82
\82È
\82é
\83\8b\81[
\83\93\82ð
\95`
\82
\81B",
\r
797 "Sets a glyph on the floor beneath you. Monsters cannot attack you if you are on a glyph, but can try to break glyph.");
\r
800 /* Stop singing before start another */
\r
801 if (cast || fail) stop_singing();
\r
805 msg_print(_("
\89Ì
\82ª
\90_
\90¹
\82È
\8fê
\82ð
\8dì
\82è
\8fo
\82µ
\82½
\81D
\81D
\81D", "The holy power of the Music is creating sacred field..."));
\r
812 if (name) return _("
\89p
\97Y
\82Ì
\8e\8d", "The Hero's Poem");
\r
813 if (desc) return _("
\89Á
\91¬
\82µ
\81A
\83q
\81[
\83\8d\81[
\8bC
\95ª
\82É
\82È
\82è
\81A
\8e\8b\8aE
\93à
\82Ì
\91S
\82Ä
\82Ì
\83\82\83\93\83X
\83^
\81[
\82É
\83_
\83\81\81[
\83W
\82ð
\97^
\82¦
\82é
\81B",
\r
814 "Hastes you. Gives heroism. Damages all monsters in sight.");
\r
816 /* Stop singing before start another */
\r
817 if (cast || fail) stop_singing();
\r
821 msg_print(_("
\89p
\97Y
\82Ì
\89Ì
\82ð
\8cû
\82¸
\82³
\82ñ
\82¾
\81D
\81D
\81D", "You chant a powerful, heroic call to arms..."));
\r
822 (void)hp_player(10);
\r
823 (void)set_afraid(0);
\r
825 /* Recalculate hitpoints */
\r
826 p_ptr->update |= (PU_HP);
\r
828 start_singing(spell, MUSIC_SHERO);
\r
835 msg_print(_("
\83q
\81[
\83\8d\81[
\82Ì
\8bC
\95ª
\82ª
\8fÁ
\82¦
\8e¸
\82¹
\82½
\81B", "The heroism wears off."));
\r
836 /* Recalculate hitpoints */
\r
837 p_ptr->update |= (PU_HP);
\r
842 msg_print(_("
\93®
\82«
\82Ì
\91f
\91\81\82³
\82ª
\82È
\82
\82È
\82Á
\82½
\82æ
\82¤
\82¾
\81B", "You feel yourself slow down."));
\r
848 int sides = plev * 3;
\r
850 if (info) return info_damage(dice, sides, 0);
\r
854 dispel_monsters(damroll(dice, sides));
\r
860 if (name) return _("
\83\84\83\94\83@
\83\93\83i
\82Ì
\8f\95\82¯", "Relief of Yavanna");
\r
861 if (desc) return _("
\8b
\97Í
\82È
\89ñ
\95\9c\82Ì
\89Ì
\82Å
\81A
\95\89\8f\9d\82Æ
\9eN
\9eO
\8fó
\91Ô
\82à
\91S
\89õ
\82·
\82é
\81B", "Powerful healing song. Also heals cut and stun completely.");
\r
863 /* Stop singing before start another */
\r
864 if (cast || fail) stop_singing();
\r
868 msg_print(_("
\89Ì
\82ð
\92Ê
\82µ
\82Ä
\91Ì
\82É
\8a\88\8bC
\82ª
\96ß
\82Á
\82Ä
\82«
\82½
\81D
\81D
\81D", "Life flows through you as you sing the song..."));
\r
869 start_singing(spell, MUSIC_H_LIFE);
\r
876 if (info) return info_heal(dice, sides, 0);
\r
880 hp_player(damroll(dice, sides));
\r
889 if (name) return _("
\8dÄ
\90¶
\82Ì
\89Ì", "Goddess' rebirth");
\r
890 if (desc) return _("
\82·
\82×
\82Ä
\82Ì
\83X
\83e
\81[
\83^
\83X
\82Æ
\8co
\8c±
\92l
\82ð
\89ñ
\95\9c\82·
\82é
\81B", "Restores all stats and experience.");
\r
893 /* Stop singing before start another */
\r
894 if (cast || fail) stop_singing();
\r
898 msg_print(_("
\88Ã
\8d\95\82Ì
\92\86\82É
\8cõ
\82Æ
\94ü
\82ð
\82Ó
\82è
\82Ü
\82¢
\82½
\81B
\91Ì
\82ª
\8c³
\82Ì
\8a\88\97Í
\82ð
\8eæ
\82è
\96ß
\82µ
\82½
\81B",
\r
899 "You strewed light and beauty in the dark as you sing. You feel refreshed."));
\r
900 (void)do_res_stat(A_STR);
\r
901 (void)do_res_stat(A_INT);
\r
902 (void)do_res_stat(A_WIS);
\r
903 (void)do_res_stat(A_DEX);
\r
904 (void)do_res_stat(A_CON);
\r
905 (void)do_res_stat(A_CHR);
\r
906 (void)restore_level();
\r
912 if (name) return _("
\83T
\83E
\83\8d\83\93\82Ì
\96\82\8fp", "Wizardry of Sauron");
\r
913 if (desc) return _("
\94ñ
\8fí
\82É
\8b
\97Í
\82Å
\82²
\82
\8f¬
\82³
\82¢
\8d\8c\89¹
\82Ì
\8b\85\82ð
\95ú
\82Â
\81B", "Fires an extremely powerful tiny ball of sound.");
\r
916 int dice = 50 + plev;
\r
920 if (info) return info_damage(dice, sides, 0);
\r
922 /* Stop singing before start another */
\r
923 if (cast || fail) stop_singing();
\r
927 if (!get_aim_dir(&dir)) return NULL;
\r
929 fire_ball(GF_SOUND, dir, damroll(dice, sides), rad);
\r
935 if (name) return _("
\83t
\83B
\83\93\83S
\83\8b\83t
\83B
\83\93\82Ì
\92§
\90í", "Fingolfin's Challenge");
\r
936 if (desc) return _("
\83_
\83\81\81[
\83W
\82ð
\8eó
\82¯
\82È
\82
\82È
\82é
\83o
\83\8a\83A
\82ð
\92£
\82é
\81B",
\r
937 "Generates barrier which completely protect you from almost all damages. Takes a few your turns when the barrier breaks.");
\r
939 /* Stop singing before start another */
\r
940 if (cast || fail) stop_singing();
\r
944 msg_print(_("
\83t
\83B
\83\93\83S
\83\8b\83t
\83B
\83\93\82Ì
\96»
\89¤
\82Ö
\82Ì
\92§
\90í
\82ð
\89Ì
\82Á
\82½
\81D
\81D
\81D",
\r
945 "You recall the valor of Fingolfin's challenge to the Dark Lord..."));
\r
948 p_ptr->redraw |= (PR_MAP);
\r
950 /* Update monsters */
\r
951 p_ptr->update |= (PU_MONSTERS);
\r
954 p_ptr->window |= (PW_OVERHEAD | PW_DUNGEON);
\r
956 start_singing(spell, MUSIC_INVULN);
\r
961 if (!p_ptr->invuln)
\r
963 msg_print(_("
\96³
\93G
\82Å
\82Í
\82È
\82
\82È
\82Á
\82½
\81B", "The invulnerability wears off."));
\r
965 p_ptr->redraw |= (PR_MAP);
\r
967 /* Update monsters */
\r
968 p_ptr->update |= (PU_MONSTERS);
\r
971 p_ptr->window |= (PW_OVERHEAD | PW_DUNGEON);
\r