OSDN Git Service

[Refactor] #37353 cmd1~melee1間整理。 / Refactor between cmd1 and melee1.
[hengband/hengband.git] / src / realm-song.c
1 #include "angband.h"\r
2 #include "cmd-spell.h"\r
3 \r
4 /*!\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
8 * @return \82È\82µ\r
9 */\r
10 static void start_singing(SPELL_IDX spell, MAGIC_NUM1 song)\r
11 {\r
12         /* Remember the song index */\r
13         SINGING_SONG_EFFECT(p_ptr) = (MAGIC_NUM1)song;\r
14 \r
15         /* Remember the index of the spell which activated the song */\r
16         SINGING_SONG_ID(p_ptr) = (MAGIC_NUM2)spell;\r
17 \r
18 \r
19         /* Now the player is singing */\r
20         set_action(ACTION_SING);\r
21 \r
22 \r
23         /* Recalculate bonuses */\r
24         p_ptr->update |= (PU_BONUS);\r
25 \r
26         /* Redraw status bar */\r
27         p_ptr->redraw |= (PR_STATUS);\r
28 }\r
29 \r
30 /*!\r
31 * @brief \89Ì\82Ì\92â\8e~\82ð\8f\88\97\9d\82·\82é / Stop singing if the player is a Bard\r
32 * @return \82È\82µ\r
33 */\r
34 void stop_singing(void)\r
35 {\r
36         if (p_ptr->pclass != CLASS_BARD) return;\r
37 \r
38         /* Are there interupted song? */\r
39         if (INTERUPTING_SONG_EFFECT(p_ptr))\r
40         {\r
41                 /* Forget interupted song */\r
42                 INTERUPTING_SONG_EFFECT(p_ptr) = MUSIC_NONE;\r
43                 return;\r
44         }\r
45 \r
46         /* The player is singing? */\r
47         if (!SINGING_SONG_EFFECT(p_ptr)) return;\r
48 \r
49         /* Hack -- if called from set_action(), avoid recursive loop */\r
50         if (p_ptr->action == ACTION_SING) set_action(ACTION_NONE);\r
51 \r
52         /* Message text of each song or etc. */\r
53         do_spell(REALM_MUSIC, SINGING_SONG_ID(p_ptr), SPELL_STOP);\r
54 \r
55         SINGING_SONG_EFFECT(p_ptr) = MUSIC_NONE;\r
56         SINGING_SONG_ID(p_ptr) = 0;\r
57 \r
58         /* Recalculate bonuses */\r
59         p_ptr->update |= (PU_BONUS);\r
60 \r
61         /* Redraw status bar */\r
62         p_ptr->redraw |= (PR_STATUS);\r
63 }\r
64 \r
65 /*!\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
70 */\r
71 cptr do_music_spell(SPELL_IDX spell, BIT_FLAGS mode)\r
72 {\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
81 \r
82         int dir;\r
83         int plev = p_ptr->lev;\r
84 \r
85         switch (spell)\r
86         {\r
87         case 0:\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
90 \r
91                 /* Stop singing before start another */\r
92                 if (cast || fail) stop_singing();\r
93 \r
94                 if (cast)\r
95                 {\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
98                 }\r
99 \r
100                 {\r
101                         int power = plev;\r
102 \r
103                         if (info) return info_power(power);\r
104 \r
105                         if (cont)\r
106                         {\r
107                                 slow_monsters(plev);\r
108                         }\r
109                 }\r
110                 break;\r
111 \r
112         case 1:\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
115 \r
116                 /* Stop singing before start another */\r
117                 if (cast || fail) stop_singing();\r
118 \r
119                 if (cast)\r
120                 {\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
123                 }\r
124 \r
125                 if (stop)\r
126                 {\r
127                         if (!p_ptr->blessed)\r
128                         {\r
129                                 msg_print(_("\8d\82\8c\89\82È\8bC\95ª\82ª\8fÁ\82¦\8e¸\82¹\82½\81B", "The prayer has expired."));\r
130                         }\r
131                 }\r
132 \r
133                 break;\r
134 \r
135         case 2:\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
138 \r
139                 /* Stop singing before start another */\r
140                 if (cast || fail) stop_singing();\r
141 \r
142                 {\r
143                         int dice = 4 + (plev - 1) / 5;\r
144                         int sides = 4;\r
145 \r
146                         if (info) return info_damage(dice, sides, 0);\r
147 \r
148                         if (cast)\r
149                         {\r
150                                 if (!get_aim_dir(&dir)) return NULL;\r
151 \r
152                                 fire_bolt(GF_SOUND, dir, damroll(dice, sides));\r
153                         }\r
154                 }\r
155                 break;\r
156 \r
157         case 3:\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
160 \r
161                 /* Stop singing before start another */\r
162                 if (cast || fail) stop_singing();\r
163 \r
164                 if (cast)\r
165                 {\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
168                 }\r
169 \r
170                 {\r
171                         int dice = plev / 10;\r
172                         int sides = 2;\r
173 \r
174                         if (info) return info_power_dice(dice, sides);\r
175 \r
176                         if (cont)\r
177                         {\r
178                                 stun_monsters(damroll(dice, sides));\r
179                         }\r
180                 }\r
181 \r
182                 break;\r
183 \r
184         case 4:\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
187 \r
188                 /* Stop singing before start another */\r
189                 if (cast || fail) stop_singing();\r
190 \r
191                 if (cast)\r
192                 {\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
195                 }\r
196 \r
197                 {\r
198                         int dice = 2;\r
199                         int sides = 6;\r
200 \r
201                         if (info) return info_heal(dice, sides, 0);\r
202 \r
203                         if (cont)\r
204                         {\r
205                                 hp_player(damroll(dice, sides));\r
206                         }\r
207                 }\r
208 \r
209                 break;\r
210 \r
211         case 5:\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
214 \r
215                 /* Stop singing before start another */\r
216                 if (cast || fail) stop_singing();\r
217 \r
218                 {\r
219                         int dice = 2;\r
220                         int sides = plev / 2;\r
221                         int rad = plev / 10 + 1;\r
222 \r
223                         if (info) return info_damage(dice, sides, 0);\r
224 \r
225                         if (cast)\r
226                         {\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
229                         }\r
230                 }\r
231                 break;\r
232 \r
233         case 6:\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
236 \r
237                 /* Stop singing before start another */\r
238                 if (cast || fail) stop_singing();\r
239 \r
240                 if (cast)\r
241                 {\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
244                 }\r
245 \r
246                 {\r
247                         int power = plev;\r
248 \r
249                         if (info) return info_power(power);\r
250 \r
251                         if (cont)\r
252                         {\r
253                                 project_hack(GF_TURN_ALL, power);\r
254                         }\r
255                 }\r
256 \r
257                 break;\r
258 \r
259         case 7:\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
262 \r
263                 /* Stop singing before start another */\r
264                 if (cast || fail) stop_singing();\r
265 \r
266                 if (cast)\r
267                 {\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
269 \r
270                         (void)hp_player(10);\r
271                         (void)set_afraid(0);\r
272 \r
273                         /* Recalculate hitpoints */\r
274                         p_ptr->update |= (PU_HP);\r
275 \r
276                         start_singing(spell, MUSIC_HERO);\r
277                 }\r
278 \r
279                 if (stop)\r
280                 {\r
281                         if (!p_ptr->hero)\r
282                         {\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
286                         }\r
287                 }\r
288 \r
289                 break;\r
290 \r
291         case 8:\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
295 \r
296                 /* Stop singing before start another */\r
297                 if (cast || fail) stop_singing();\r
298 \r
299                 if (cast)\r
300                 {\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
305                 }\r
306 \r
307                 {\r
308                         int rad = DETECT_RAD_DEFAULT;\r
309 \r
310                         if (info) return info_radius(rad);\r
311 \r
312                         if (cont)\r
313                         {\r
314                                 int count = SINGING_COUNT(p_ptr);\r
315 \r
316                                 if (count >= 19) wiz_lite(FALSE);\r
317                                 if (count >= 11)\r
318                                 {\r
319                                         map_area(rad);\r
320                                         if (plev > 39 && count < 19)\r
321                                                 SINGING_COUNT(p_ptr) = count + 1;\r
322                                 }\r
323                                 if (count >= 6)\r
324                                 {\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
329 \r
330                                         if (plev > 24 && count < 11)\r
331                                                 SINGING_COUNT(p_ptr) = count + 1;\r
332                                 }\r
333                                 if (count >= 3)\r
334                                 {\r
335                                         detect_monsters_invis(rad);\r
336                                         detect_monsters_normal(rad);\r
337 \r
338                                         if (plev > 19 && count < 6)\r
339                                                 SINGING_COUNT(p_ptr) = count + 1;\r
340                                 }\r
341                                 detect_traps(rad, TRUE);\r
342                                 detect_doors(rad);\r
343                                 detect_stairs(rad);\r
344 \r
345                                 if (plev > 14 && count < 3)\r
346                                         SINGING_COUNT(p_ptr) = count + 1;\r
347                         }\r
348                 }\r
349 \r
350                 break;\r
351 \r
352         case 9:\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
355 \r
356                 /* Stop singing before start another */\r
357                 if (cast || fail) stop_singing();\r
358 \r
359                 if (cast)\r
360                 {\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
363                 }\r
364 \r
365                 {\r
366                         int dice = 1;\r
367                         int sides = plev * 3 / 2;\r
368 \r
369                         if (info) return info_damage(dice, sides, 0);\r
370 \r
371                         if (cont)\r
372                         {\r
373                                 project_hack(GF_PSI, damroll(dice, sides));\r
374                         }\r
375                 }\r
376 \r
377                 break;\r
378 \r
379         case 10:\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
382 \r
383                 /* Stop singing before start another */\r
384                 if (cast || fail) stop_singing();\r
385 \r
386                 if (cast)\r
387                 {\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
390                 }\r
391 \r
392                 {\r
393                         int rad = 1;\r
394 \r
395                         if (info) return info_radius(rad);\r
396 \r
397                         /*\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
400                         */\r
401                         if (cont || cast)\r
402                         {\r
403                                 project(0, rad, p_ptr->y, p_ptr->x, 0, GF_IDENTIFY, PROJECT_ITEM, -1);\r
404                         }\r
405                 }\r
406 \r
407                 break;\r
408 \r
409         case 11:\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
412 \r
413                 /* Stop singing before start another */\r
414                 if (cast || fail) stop_singing();\r
415 \r
416                 if (cast)\r
417                 {\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
420                 }\r
421 \r
422                 if (stop)\r
423                 {\r
424                         if (!p_ptr->tim_stealth)\r
425                         {\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
427                         }\r
428                 }\r
429 \r
430                 break;\r
431 \r
432         case 12:\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
435 \r
436                 /* Stop singing before start another */\r
437                 if (cast || fail) stop_singing();\r
438 \r
439                 if (cast)\r
440                 {\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
443                 }\r
444 \r
445                 {\r
446                         int power = plev * 2;\r
447 \r
448                         if (info) return info_power(power);\r
449 \r
450                         if (cont)\r
451                         {\r
452                                 confuse_monsters(power);\r
453                         }\r
454                 }\r
455 \r
456                 break;\r
457 \r
458         case 13:\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
461 \r
462                 /* Stop singing before start another */\r
463                 if (cast || fail) stop_singing();\r
464 \r
465                 if (cast)\r
466                 {\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
469                 }\r
470 \r
471                 {\r
472                         int dice = 10 + plev / 5;\r
473                         int sides = 7;\r
474 \r
475                         if (info) return info_damage(dice, sides, 0);\r
476 \r
477                         if (cont)\r
478                         {\r
479                                 project_hack(GF_SOUND, damroll(dice, sides));\r
480                         }\r
481                 }\r
482 \r
483                 break;\r
484 \r
485         case 14:\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
488 \r
489                 {\r
490                         /* Stop singing before start another */\r
491                         if (cast || fail) stop_singing();\r
492 \r
493                         if (cast)\r
494                         {\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
497                         }\r
498                 }\r
499                 break;\r
500 \r
501         case 15:\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
504 \r
505                 /* Stop singing before start another */\r
506                 if (cast || fail) stop_singing();\r
507 \r
508                 if (cast)\r
509                 {\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
512                 }\r
513 \r
514                 {\r
515                         int dice = 10 + plev / 15;\r
516                         int sides = 6;\r
517 \r
518                         if (info) return info_power_dice(dice, sides);\r
519 \r
520                         if (cont)\r
521                         {\r
522                                 charm_monsters(damroll(dice, sides));\r
523                         }\r
524                 }\r
525 \r
526                 break;\r
527 \r
528         case 16:\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
531 \r
532                 /* Stop singing before start another */\r
533                 if (cast || fail) stop_singing();\r
534 \r
535                 if (cast)\r
536                 {\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
539                 }\r
540 \r
541                 {\r
542                         /*\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
545                         */\r
546                         if (cont || cast)\r
547                         {\r
548                                 project(0, 0, p_ptr->y, p_ptr->x,\r
549                                         0, GF_DISINTEGRATE, PROJECT_KILL | PROJECT_ITEM | PROJECT_HIDE, -1);\r
550                         }\r
551                 }\r
552                 break;\r
553 \r
554         case 17:\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
558 \r
559                 /* Stop singing before start another */\r
560                 if (cast || fail) stop_singing();\r
561 \r
562                 if (cast)\r
563                 {\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
566                 }\r
567 \r
568                 if (stop)\r
569                 {\r
570                         if (!p_ptr->oppose_acid)\r
571                         {\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
573                         }\r
574 \r
575                         if (!p_ptr->oppose_elec)\r
576                         {\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
578                         }\r
579 \r
580                         if (!p_ptr->oppose_fire)\r
581                         {\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
583                         }\r
584 \r
585                         if (!p_ptr->oppose_cold)\r
586                         {\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
588                         }\r
589 \r
590                         if (!p_ptr->oppose_pois)\r
591                         {\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
593                         }\r
594                 }\r
595 \r
596                 break;\r
597 \r
598         case 18:\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
601 \r
602                 /* Stop singing before start another */\r
603                 if (cast || fail) stop_singing();\r
604 \r
605                 if (cast)\r
606                 {\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
609                 }\r
610 \r
611                 if (stop)\r
612                 {\r
613                         if (!p_ptr->fast)\r
614                         {\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
616                         }\r
617                 }\r
618 \r
619                 break;\r
620 \r
621         case 19:\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
624 \r
625                 {\r
626                         int rad = plev / 15 + 1;\r
627                         int power = plev * 3 + 1;\r
628 \r
629                         if (info) return info_radius(rad);\r
630 \r
631                         /* Stop singing before start another */\r
632                         if (cast || fail) stop_singing();\r
633 \r
634                         if (cast)\r
635                         {\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
638                         }\r
639                 }\r
640                 break;\r
641 \r
642         case 20:\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
646 \r
647                 /* Stop singing before start another */\r
648                 if (cast || fail) stop_singing();\r
649 \r
650                 if (cast)\r
651                 {\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
654                 }\r
655 \r
656                 {\r
657                         int m_sides = plev * 3;\r
658                         int e_sides = plev * 3;\r
659 \r
660                         if (info) return format("%s1d%d+1d%d", s_dam, m_sides, e_sides);\r
661 \r
662                         if (cont)\r
663                         {\r
664                                 dispel_monsters(randint1(m_sides));\r
665                                 dispel_evil(randint1(e_sides));\r
666                         }\r
667                 }\r
668                 break;\r
669 \r
670         case 21:\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
673 \r
674                 /* Stop singing before start another */\r
675                 if (cast || fail) stop_singing();\r
676 \r
677                 if (cast)\r
678                 {\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
681                 }\r
682 \r
683                 {\r
684                         int power = plev;\r
685 \r
686                         if (info) return info_power(power);\r
687 \r
688                         if (cont)\r
689                         {\r
690                                 slow_monsters(plev);\r
691                                 sleep_monsters(plev);\r
692                         }\r
693                 }\r
694 \r
695                 break;\r
696 \r
697         case 22:\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
700 \r
701                 {\r
702                         int dice = 15 + (plev - 1) / 2;\r
703                         int sides = 10;\r
704 \r
705                         if (info) return info_damage(dice, sides, 0);\r
706 \r
707                         /* Stop singing before start another */\r
708                         if (cast || fail) stop_singing();\r
709 \r
710                         if (cast)\r
711                         {\r
712                                 if (!get_aim_dir(&dir)) return NULL;\r
713 \r
714                                 fire_beam(GF_SOUND, dir, damroll(dice, sides));\r
715                         }\r
716                 }\r
717                 break;\r
718 \r
719         case 23:\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
722 \r
723                 {\r
724                         int base = 15;\r
725                         int sides = 20;\r
726 \r
727                         if (info) return info_delay(base, sides);\r
728 \r
729                         /* Stop singing before start another */\r
730                         if (cast || fail) stop_singing();\r
731 \r
732                         if (cast)\r
733                         {\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
735                                 alter_reality();\r
736                         }\r
737                 }\r
738                 break;\r
739 \r
740         case 24:\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
744 \r
745                 /* Stop singing before start another */\r
746                 if (cast || fail) stop_singing();\r
747 \r
748                 if (cast)\r
749                 {\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
752                 }\r
753 \r
754                 {\r
755                         int rad = 10;\r
756 \r
757                         if (info) return info_radius(rad);\r
758 \r
759                         if (cont)\r
760                         {\r
761                                 earthquake(p_ptr->y, p_ptr->x, 10);\r
762                         }\r
763                 }\r
764 \r
765                 break;\r
766 \r
767 \r
768         case 25:\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
771 \r
772                 /* Stop singing before start another */\r
773                 if (cast || fail) stop_singing();\r
774 \r
775                 if (cast)\r
776                 {\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
779                 }\r
780 \r
781                 {\r
782                         int power = plev * 4;\r
783 \r
784                         if (info) return info_power(power);\r
785 \r
786                         if (cont)\r
787                         {\r
788                                 stasis_monsters(power);\r
789                         }\r
790                 }\r
791 \r
792                 break;\r
793 \r
794         case 26:\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
798 \r
799                 {\r
800                         /* Stop singing before start another */\r
801                         if (cast || fail) stop_singing();\r
802 \r
803                         if (cast)\r
804                         {\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
806                                 warding_glyph();\r
807                         }\r
808                 }\r
809                 break;\r
810 \r
811         case 27:\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
815 \r
816                 /* Stop singing before start another */\r
817                 if (cast || fail) stop_singing();\r
818 \r
819                 if (cast)\r
820                 {\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
824 \r
825                         /* Recalculate hitpoints */\r
826                         p_ptr->update |= (PU_HP);\r
827 \r
828                         start_singing(spell, MUSIC_SHERO);\r
829                 }\r
830 \r
831                 if (stop)\r
832                 {\r
833                         if (!p_ptr->hero)\r
834                         {\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
838                         }\r
839 \r
840                         if (!p_ptr->fast)\r
841                         {\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
843                         }\r
844                 }\r
845 \r
846                 {\r
847                         int dice = 1;\r
848                         int sides = plev * 3;\r
849 \r
850                         if (info) return info_damage(dice, sides, 0);\r
851 \r
852                         if (cont)\r
853                         {\r
854                                 dispel_monsters(damroll(dice, sides));\r
855                         }\r
856                 }\r
857                 break;\r
858 \r
859         case 28:\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
862 \r
863                 /* Stop singing before start another */\r
864                 if (cast || fail) stop_singing();\r
865 \r
866                 if (cast)\r
867                 {\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
870                 }\r
871 \r
872                 {\r
873                         int dice = 15;\r
874                         int sides = 10;\r
875 \r
876                         if (info) return info_heal(dice, sides, 0);\r
877 \r
878                         if (cont)\r
879                         {\r
880                                 hp_player(damroll(dice, sides));\r
881                                 set_stun(0);\r
882                                 set_cut(0);\r
883                         }\r
884                 }\r
885 \r
886                 break;\r
887 \r
888         case 29:\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
891 \r
892                 {\r
893                         /* Stop singing before start another */\r
894                         if (cast || fail) stop_singing();\r
895 \r
896                         if (cast)\r
897                         {\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
907                         }\r
908                 }\r
909                 break;\r
910 \r
911         case 30:\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
914 \r
915                 {\r
916                         int dice = 50 + plev;\r
917                         int sides = 10;\r
918                         int rad = 0;\r
919 \r
920                         if (info) return info_damage(dice, sides, 0);\r
921 \r
922                         /* Stop singing before start another */\r
923                         if (cast || fail) stop_singing();\r
924 \r
925                         if (cast)\r
926                         {\r
927                                 if (!get_aim_dir(&dir)) return NULL;\r
928 \r
929                                 fire_ball(GF_SOUND, dir, damroll(dice, sides), rad);\r
930                         }\r
931                 }\r
932                 break;\r
933 \r
934         case 31:\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
938 \r
939                 /* Stop singing before start another */\r
940                 if (cast || fail) stop_singing();\r
941 \r
942                 if (cast)\r
943                 {\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
946 \r
947                         /* Redraw map */\r
948                         p_ptr->redraw |= (PR_MAP);\r
949 \r
950                         /* Update monsters */\r
951                         p_ptr->update |= (PU_MONSTERS);\r
952 \r
953                         /* Window stuff */\r
954                         p_ptr->window |= (PW_OVERHEAD | PW_DUNGEON);\r
955 \r
956                         start_singing(spell, MUSIC_INVULN);\r
957                 }\r
958 \r
959                 if (stop)\r
960                 {\r
961                         if (!p_ptr->invuln)\r
962                         {\r
963                                 msg_print(_("\96³\93G\82Å\82Í\82È\82­\82È\82Á\82½\81B", "The invulnerability wears off."));\r
964                                 /* Redraw map */\r
965                                 p_ptr->redraw |= (PR_MAP);\r
966 \r
967                                 /* Update monsters */\r
968                                 p_ptr->update |= (PU_MONSTERS);\r
969 \r
970                                 /* Window stuff */\r
971                                 p_ptr->window |= (PW_OVERHEAD | PW_DUNGEON);\r
972                         }\r
973                 }\r
974 \r
975                 break;\r
976         }\r
977 \r
978         return "";\r
979 }\r
980 \r