OSDN Git Service

[Refactor] #37353 魔術師系クラスの定義をIS_WIZARD_CLASS()にまとめる。
[hengband/hengband.git] / src / realm-chaos.c
1 #include "angband.h"\r
2 #include "cmd-spell.h"\r
3 \r
4 /*!\r
5 * @brief \83J\83I\83X\97Ì\88æ\96\82\96@\82Ì\8ae\8f\88\97\9d\82ð\8ds\82¤\r
6 * @param spell \96\82\96@ID\r
7 * @param mode \8f\88\97\9d\93à\97e (SPELL_NAME / SPELL_DESC / SPELL_INFO / SPELL_CAST)\r
8 * @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\8e\9e\82ÍNULL\95\8e\9a\97ñ\82ð\95Ô\82·\81B\r
9 */\r
10 cptr do_chaos_spell(SPELL_IDX spell, BIT_FLAGS mode)\r
11 {\r
12         bool name = (mode == SPELL_NAME) ? TRUE : FALSE;\r
13         bool desc = (mode == SPELL_DESC) ? TRUE : FALSE;\r
14         bool info = (mode == SPELL_INFO) ? TRUE : FALSE;\r
15         bool cast = (mode == SPELL_CAST) ? TRUE : FALSE;\r
16 \r
17         static const char s_dam[] = _("\91¹\8f\9d:", "dam ");\r
18         static const char s_random[] = _("\83\89\83\93\83_\83\80", "random");\r
19 \r
20         int dir;\r
21         int plev = p_ptr->lev;\r
22 \r
23         switch (spell)\r
24         {\r
25         case 0:\r
26                 if (name) return _("\83}\83W\83b\83N\81E\83~\83T\83C\83\8b", "Magic Missile");\r
27                 if (desc) return _("\8eã\82¢\96\82\96@\82Ì\96î\82ð\95ú\82Â\81B", "Fires a weak bolt of magic.");\r
28 \r
29                 {\r
30                         int dice = 3 + ((plev - 1) / 5);\r
31                         int sides = 4;\r
32 \r
33                         if (info) return info_damage(dice, sides, 0);\r
34 \r
35                         if (cast)\r
36                         {\r
37                                 if (!get_aim_dir(&dir)) return NULL;\r
38 \r
39                                 fire_bolt_or_beam(beam_chance() - 10, GF_MISSILE, dir, damroll(dice, sides));\r
40                         }\r
41                 }\r
42                 break;\r
43 \r
44         case 1:\r
45                 if (name) return _("\83g\83\89\83b\83v/\83h\83A\94j\89ó", "Trap / Door Destruction");\r
46                 if (desc) return _("\97×\90Ú\82·\82éã©\82Æ\94à\82ð\94j\89ó\82·\82é\81B", "Destroys all traps in adjacent squares.");\r
47 \r
48                 {\r
49                         int rad = 1;\r
50 \r
51                         if (info) return info_radius(rad);\r
52 \r
53                         if (cast)\r
54                         {\r
55                                 destroy_doors_touch();\r
56                         }\r
57                 }\r
58                 break;\r
59 \r
60         case 2:\r
61                 if (name) return _("\91M\8cõ", "Flash of Light");\r
62                 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
63 \r
64                 {\r
65                         int dice = 2;\r
66                         int sides = plev / 2;\r
67                         int rad = (plev / 10) + 1;\r
68 \r
69                         if (info) return info_damage(dice, sides, 0);\r
70 \r
71                         if (cast)\r
72                         {\r
73                                 lite_area(damroll(dice, sides), rad);\r
74                         }\r
75                 }\r
76                 break;\r
77 \r
78         case 3:\r
79                 if (name) return _("\8d¬\97\90\82Ì\8eè", "Touch of Confusion");\r
80                 if (desc) return _("\91\8a\8eè\82ð\8d¬\97\90\82³\82¹\82é\8dU\8c\82\82ð\82Å\82«\82é\82æ\82¤\82É\82·\82é\81B", "Attempts to confuse the next monster that you hit.");\r
81 \r
82                 {\r
83                         if (cast)\r
84                         {\r
85                                 if (!(p_ptr->special_attack & ATTACK_CONFUSE))\r
86                                 {\r
87                                         msg_print(_("\82 \82È\82½\82Ì\8eè\82Í\8cõ\82è\8en\82ß\82½\81B", "Your hands start glowing."));\r
88                                         p_ptr->special_attack |= ATTACK_CONFUSE;\r
89                                         p_ptr->redraw |= (PR_STATUS);\r
90                                 }\r
91                         }\r
92                 }\r
93                 break;\r
94 \r
95         case 4:\r
96                 if (name) return _("\96\82\97Íày\97ô", "Mana Burst");\r
97                 if (desc) return _("\96\82\96@\82Ì\8b\85\82ð\95ú\82Â\81B", "Fires a ball of magic.");\r
98 \r
99                 {\r
100                         int dice = 3;\r
101                         int sides = 5;\r
102                         int rad = (plev < 30) ? 2 : 3;\r
103                         int base;\r
104 \r
105                         if (IS_WIZARD_CLASS())\r
106                                 base = plev + plev / 2;\r
107                         else\r
108                                 base = plev + plev / 4;\r
109 \r
110 \r
111                         if (info) return info_damage(dice, sides, base);\r
112 \r
113                         if (cast)\r
114                         {\r
115                                 if (!get_aim_dir(&dir)) return NULL;\r
116 \r
117                                 fire_ball(GF_MISSILE, dir, damroll(dice, sides) + base, rad);\r
118 \r
119                                 /*\r
120                                 * Shouldn't actually use GF_MANA, as\r
121                                 * it will destroy all items on the\r
122                                 * floor\r
123                                 */\r
124                         }\r
125                 }\r
126                 break;\r
127 \r
128         case 5:\r
129                 if (name) return _("\83t\83@\83C\83A\81E\83{\83\8b\83g", "Fire Bolt");\r
130                 if (desc) return _("\89\8a\82Ì\83{\83\8b\83g\82à\82µ\82­\82Í\83r\81[\83\80\82ð\95ú\82Â\81B", "Fires a bolt or beam of fire.");\r
131 \r
132                 {\r
133                         int dice = 8 + (plev - 5) / 4;\r
134                         int sides = 8;\r
135 \r
136                         if (info) return info_damage(dice, sides, 0);\r
137 \r
138                         if (cast)\r
139                         {\r
140                                 if (!get_aim_dir(&dir)) return NULL;\r
141 \r
142                                 fire_bolt_or_beam(beam_chance(), GF_FIRE, dir, damroll(dice, sides));\r
143                         }\r
144                 }\r
145                 break;\r
146 \r
147         case 6:\r
148                 if (name) return _("\97Í\82Ì\8c\9d", "Fist of Force");\r
149                 if (desc) return _("\82²\82­\8f¬\82³\82È\95ª\89ð\82Ì\8b\85\82ð\95ú\82Â\81B", "Fires a tiny ball of disintegration.");\r
150 \r
151                 {\r
152                         int dice = 8 + ((plev - 5) / 4);\r
153                         int sides = 8;\r
154 \r
155                         if (info) return info_damage(dice, sides, 0);\r
156 \r
157                         if (cast)\r
158                         {\r
159                                 if (!get_aim_dir(&dir)) return NULL;\r
160 \r
161                                 fire_ball(GF_DISINTEGRATE, dir, damroll(dice, sides), 0);\r
162                         }\r
163                 }\r
164                 break;\r
165 \r
166         case 7:\r
167                 if (name) return _("\83e\83\8c\83|\81[\83g", "Teleport Self");\r
168                 if (desc) return _("\89\93\8b\97\97£\82Ì\83e\83\8c\83|\81[\83g\82ð\82·\82é\81B", "Teleport long distance.");\r
169 \r
170                 {\r
171                         POSITION range = plev * 5;\r
172 \r
173                         if (info) return info_range(range);\r
174 \r
175                         if (cast)\r
176                         {\r
177                                 teleport_player(range, 0L);\r
178                         }\r
179                 }\r
180                 break;\r
181 \r
182         case 8:\r
183                 if (name) return _("\83\8f\83\93\83_\81[", "Wonder");\r
184                 if (desc) return _("\83\82\83\93\83X\83^\81[\82É\83\89\83\93\83_\83\80\82È\8cø\89Ê\82ð\97^\82¦\82é\81B", "Fires something with random effects.");\r
185 \r
186                 {\r
187                         if (info) return s_random;\r
188 \r
189                         if (cast)\r
190                         {\r
191 \r
192                                 if (!get_aim_dir(&dir)) return NULL;\r
193 \r
194                                 cast_wonder(dir);\r
195                         }\r
196                 }\r
197                 break;\r
198 \r
199         case 9:\r
200                 if (name) return _("\83J\83I\83X\81E\83{\83\8b\83g", "Chaos Bolt");\r
201                 if (desc) return _("\83J\83I\83X\82Ì\83{\83\8b\83g\82à\82µ\82­\82Í\83r\81[\83\80\82ð\95ú\82Â\81B", "Fires a bolt or ball of chaos.");\r
202 \r
203                 {\r
204                         int dice = 10 + (plev - 5) / 4;\r
205                         int sides = 8;\r
206 \r
207                         if (info) return info_damage(dice, sides, 0);\r
208 \r
209                         if (cast)\r
210                         {\r
211                                 if (!get_aim_dir(&dir)) return NULL;\r
212 \r
213                                 fire_bolt_or_beam(beam_chance(), GF_CHAOS, dir, damroll(dice, sides));\r
214                         }\r
215                 }\r
216                 break;\r
217 \r
218         case 10:\r
219                 if (name) return _("\83\\83j\83b\83N\81E\83u\81[\83\80", "Sonic Boom");\r
220                 if (desc) return _("\8e©\95ª\82ð\92\86\90S\82Æ\82µ\82½\8d\8c\89¹\82Ì\8b\85\82ð\94­\90\82³\82¹\82é\81B", "Generates a ball of sound centered on you.");\r
221 \r
222                 {\r
223                         HIT_POINT dam = 60 + plev;\r
224                         int rad = plev / 10 + 2;\r
225 \r
226                         if (info) return info_damage(0, 0, dam / 2);\r
227 \r
228                         if (cast)\r
229                         {\r
230                                 msg_print(_("\83h\81[\83\93\81I\95\94\89®\82ª\97h\82ê\82½\81I", "BOOM! Shake the room!"));\r
231                                 project(0, rad, p_ptr->y, p_ptr->x, dam, GF_SOUND, PROJECT_KILL | PROJECT_ITEM, -1);\r
232                         }\r
233                 }\r
234                 break;\r
235 \r
236         case 11:\r
237                 if (name) return _("\94j\96Å\82Ì\96î", "Doom Bolt");\r
238                 if (desc) return _("\8f\83\90\88\82È\96\82\97Í\82Ì\83r\81[\83\80\82ð\95ú\82Â\81B", "Fires a beam of pure mana.");\r
239 \r
240                 {\r
241                         int dice = 11 + (plev - 5) / 4;\r
242                         int sides = 8;\r
243 \r
244                         if (info) return info_damage(dice, sides, 0);\r
245 \r
246                         if (cast)\r
247                         {\r
248                                 if (!get_aim_dir(&dir)) return NULL;\r
249 \r
250                                 fire_beam(GF_MANA, dir, damroll(dice, sides));\r
251                         }\r
252                 }\r
253                 break;\r
254 \r
255         case 12:\r
256                 if (name) return _("\83t\83@\83C\83A\81E\83{\81[\83\8b", "Fire Ball");\r
257                 if (desc) return _("\89\8a\82Ì\8b\85\82ð\95ú\82Â\81B", "Fires a ball of fire.");\r
258 \r
259                 {\r
260                         HIT_POINT dam = plev + 55;\r
261                         int rad = 2;\r
262 \r
263                         if (info) return info_damage(0, 0, dam);\r
264 \r
265                         if (cast)\r
266                         {\r
267                                 if (!get_aim_dir(&dir)) return NULL;\r
268 \r
269                                 fire_ball(GF_FIRE, dir, dam, rad);\r
270                         }\r
271                 }\r
272                 break;\r
273 \r
274         case 13:\r
275                 if (name) return _("\83e\83\8c\83|\81[\83g\81E\83A\83E\83F\83C", "Teleport Other");\r
276                 if (desc) return _("\83\82\83\93\83X\83^\81[\82ð\83e\83\8c\83|\81[\83g\82³\82¹\82é\83r\81[\83\80\82ð\95ú\82Â\81B\92ï\8dR\82³\82ê\82é\82Æ\96³\8cø\81B", "Teleports all monsters on the line away unless resisted.");\r
277 \r
278                 {\r
279                         int power = plev;\r
280 \r
281                         if (info) return info_power(power);\r
282 \r
283                         if (cast)\r
284                         {\r
285                                 if (!get_aim_dir(&dir)) return NULL;\r
286 \r
287                                 fire_beam(GF_AWAY_ALL, dir, power);\r
288                         }\r
289                 }\r
290                 break;\r
291 \r
292         case 14:\r
293                 if (name) return _("\94j\89ó\82Ì\8c¾\97t", "Word of Destruction");\r
294                 if (desc) return _("\8eü\95Ó\82Ì\83A\83C\83e\83\80\81A\83\82\83\93\83X\83^\81[\81A\92n\8c`\82ð\94j\89ó\82·\82é\81B", "Destroy everything in nearby area.");\r
295 \r
296                 {\r
297                         int base = 12;\r
298                         int sides = 4;\r
299 \r
300                         if (cast)\r
301                         {\r
302                                 destroy_area(p_ptr->y, p_ptr->x, base + randint1(sides), FALSE);\r
303                         }\r
304                 }\r
305                 break;\r
306 \r
307         case 15:\r
308                 if (name) return _("\83\8d\83O\83\8b\83X\94­\93®", "Invoke Logrus");\r
309                 if (desc) return _("\8b\90\91å\82È\83J\83I\83X\82Ì\8b\85\82ð\95ú\82Â\81B", "Fires a huge ball of chaos.");\r
310 \r
311                 {\r
312                         HIT_POINT dam = plev * 2 + 99;\r
313                         int rad = plev / 5;\r
314 \r
315                         if (info) return info_damage(0, 0, dam);\r
316 \r
317                         if (cast)\r
318                         {\r
319                                 if (!get_aim_dir(&dir)) return NULL;\r
320 \r
321                                 fire_ball(GF_CHAOS, dir, dam, rad);\r
322                         }\r
323                 }\r
324                 break;\r
325 \r
326         case 16:\r
327                 if (name) return _("\91¼\8eÒ\95Ï\97e", "Polymorph Other");\r
328                 if (desc) return _("\83\82\83\93\83X\83^\81[1\91Ì\82ð\95Ï\90g\82³\82¹\82é\81B\92ï\8dR\82³\82ê\82é\82Æ\96³\8cø\81B", "Attempts to polymorph a monster.");\r
329 \r
330                 {\r
331                         int power = plev;\r
332 \r
333                         if (info) return info_power(power);\r
334 \r
335                         if (cast)\r
336                         {\r
337                                 if (!get_aim_dir(&dir)) return NULL;\r
338 \r
339                                 poly_monster(dir, plev);\r
340                         }\r
341                 }\r
342                 break;\r
343 \r
344         case 17:\r
345                 if (name) return _("\98A\8d½\88î\8dÈ", "Chain Lightning");\r
346                 if (desc) return _("\91S\95û\8cü\82É\91Î\82µ\82Ä\93d\8c\82\82Ì\83r\81[\83\80\82ð\95ú\82Â\81B", "Fires lightning beams in all directions.");\r
347 \r
348                 {\r
349                         int dice = 5 + plev / 10;\r
350                         int sides = 8;\r
351 \r
352                         if (info) return info_damage(dice, sides, 0);\r
353 \r
354                         if (cast)\r
355                         {\r
356                                 for (dir = 0; dir <= 9; dir++)\r
357                                         fire_beam(GF_ELEC, dir, damroll(dice, sides));\r
358                         }\r
359                 }\r
360                 break;\r
361 \r
362         case 18:\r
363                 if (name) return _("\96\82\97Í\95\95\93ü", "Arcane Binding");\r
364                 if (desc) return _("\8fñ/\96\82\96@\96_\82Ì\8f[\93U\89ñ\90\94\82ð\91\9d\82â\82·\82©\81A\8f[\93U\92\86\82Ì\83\8d\83b\83h\82Ì\8f[\93U\8e\9e\8aÔ\82ð\8c¸\82ç\82·\81B", "Recharges staffs, wands or rods.");\r
365 \r
366                 {\r
367                         int power = 90;\r
368 \r
369                         if (info) return info_power(power);\r
370                         if (cast)\r
371                         {\r
372                                 if (!recharge(power)) return NULL;\r
373                         }\r
374                 }\r
375                 break;\r
376 \r
377         case 19:\r
378                 if (name) return _("\8c´\8eq\95ª\89ð", "Disintegrate");\r
379                 if (desc) return _("\8b\90\91å\82È\95ª\89ð\82Ì\8b\85\82ð\95ú\82Â\81B", "Fires a huge ball of disintegration.");\r
380 \r
381                 {\r
382                         HIT_POINT dam = plev + 70;\r
383                         int rad = 3 + plev / 40;\r
384 \r
385                         if (info) return info_damage(0, 0, dam);\r
386 \r
387                         if (cast)\r
388                         {\r
389                                 if (!get_aim_dir(&dir)) return NULL;\r
390 \r
391                                 fire_ball(GF_DISINTEGRATE, dir, dam, rad);\r
392                         }\r
393                 }\r
394                 break;\r
395 \r
396         case 20:\r
397                 if (name) return _("\8c»\8eÀ\95Ï\97e", "Alter Reality");\r
398                 if (desc) return _("\8c»\8dÝ\82Ì\8aK\82ð\8dÄ\8d\\90¬\82·\82é\81B", "Recreates current dungeon level.");\r
399 \r
400                 {\r
401                         int base = 15;\r
402                         int sides = 20;\r
403 \r
404                         if (info) return info_delay(base, sides);\r
405 \r
406                         if (cast)\r
407                         {\r
408                                 alter_reality();\r
409                         }\r
410                 }\r
411                 break;\r
412 \r
413         case 21:\r
414                 if (name) return _("\83}\83W\83b\83N\81E\83\8d\83P\83b\83g", "Magic Rocket");\r
415                 if (desc) return _("\83\8d\83P\83b\83g\82ð\94­\8eË\82·\82é\81B", "Fires a magic rocket.");\r
416 \r
417                 {\r
418                         HIT_POINT dam = 120 + plev * 2;\r
419                         int rad = 2;\r
420 \r
421                         if (info) return info_damage(0, 0, dam);\r
422 \r
423                         if (cast)\r
424                         {\r
425                                 if (!get_aim_dir(&dir)) return NULL;\r
426 \r
427                                 msg_print(_("\83\8d\83P\83b\83g\94­\8eË\81I", "You launch a rocket!"));\r
428                                 fire_rocket(GF_ROCKET, dir, dam, rad);\r
429                         }\r
430                 }\r
431                 break;\r
432 \r
433         case 22:\r
434                 if (name) return _("\8d¬\93×\82Ì\90n", "Chaos Branding");\r
435                 if (desc) return _("\95\90\8aí\82É\83J\83I\83X\82Ì\91®\90«\82ð\82Â\82¯\82é\81B", "Makes current weapon a Chaotic weapon.");\r
436 \r
437                 {\r
438                         if (cast)\r
439                         {\r
440                                 brand_weapon(2);\r
441                         }\r
442                 }\r
443                 break;\r
444 \r
445         case 23:\r
446                 if (name) return _("\88«\96\82\8f¢\8a«", "Summon Demon");\r
447                 if (desc) return _("\88«\96\82\82ð1\91Ì\8f¢\8a«\82·\82é\81B", "Summons a demon.");\r
448 \r
449                 {\r
450                         if (cast)\r
451                         {\r
452                                 u32b flg = 0L;\r
453                                 bool pet = !one_in_(3);\r
454 \r
455                                 if (pet) flg |= PM_FORCE_PET;\r
456                                 else flg |= PM_NO_PET;\r
457                                 if (!(pet && (plev < 50))) flg |= PM_ALLOW_GROUP;\r
458 \r
459                                 if (summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, (plev * 3) / 2, SUMMON_DEMON, flg))\r
460                                 {\r
461                                         msg_print(_("\97°\89©\82Ì\88«\8fL\82ª\8f[\96\9e\82µ\82½\81B", "The area fills with a stench of sulphur and brimstone."));\r
462                                         if (pet)\r
463                                         {\r
464                                                 msg_print(_("\81u\82²\97p\82Å\82²\82´\82¢\82Ü\82·\82©\81A\82²\8eå\90l\97l\81v", "'What is thy bidding... Master?'"));\r
465                                         }\r
466                                         else\r
467                                         {\r
468                                                 msg_print(_("\81u\94Ú\82µ\82«\8eÒ\82æ\81A\89ä\82Í\93ð\82Ì\89º\96l\82É\82 \82ç\82¸\81\82¨\91O\82Ì\8d°\82ð\92¸\82­\82¼\81I\81v",\r
469                                                         "'NON SERVIAM! Wretch! I shall feast on thy mortal soul!'"));\r
470                                         }\r
471                                 }\r
472                         }\r
473                 }\r
474                 break;\r
475 \r
476         case 24:\r
477                 if (name) return _("\8fd\97Í\8cõ\90ü", "Beam of Gravity");\r
478                 if (desc) return _("\8fd\97Í\82Ì\83r\81[\83\80\82ð\95ú\82Â\81B", "Fires a beam of gravity.");\r
479 \r
480                 {\r
481                         int dice = 9 + (plev - 5) / 4;\r
482                         int sides = 8;\r
483 \r
484                         if (info) return info_damage(dice, sides, 0);\r
485 \r
486                         if (cast)\r
487                         {\r
488                                 if (!get_aim_dir(&dir)) return NULL;\r
489                                 fire_beam(GF_GRAVITY, dir, damroll(dice, sides));\r
490                         }\r
491                 }\r
492                 break;\r
493 \r
494         case 25:\r
495                 if (name) return _("\97¬\90¯\8cQ", "Meteor Swarm");\r
496                 if (desc) return _("\8e©\95ª\82Ì\8eü\95Ó\82Éè¦\90Î\82ð\97\8e\82Æ\82·\81B", "Makes meteor balls fall down to nearby random locations.");\r
497 \r
498                 {\r
499                         HIT_POINT dam = plev * 2;\r
500                         int rad = 2;\r
501 \r
502                         if (info) return info_multi_damage(dam);\r
503 \r
504                         if (cast)\r
505                         {\r
506                                 cast_meteor(dam, rad);\r
507                         }\r
508                 }\r
509                 break;\r
510 \r
511         case 26:\r
512                 if (name) return _("\89\8b\82Ì\88ê\8c\82", "Flame Strike");\r
513                 if (desc) return _("\8e©\95ª\82ð\92\86\90S\82Æ\82µ\82½\92´\8b\90\91å\82È\89\8a\82Ì\8b\85\82ð\94­\90\82³\82¹\82é\81B", "Generate a huge ball of fire centered on you.");\r
514 \r
515                 {\r
516                         HIT_POINT dam = 300 + 3 * plev;\r
517                         int rad = 8;\r
518 \r
519                         if (info) return info_damage(0, 0, dam / 2);\r
520 \r
521                         if (cast)\r
522                         {\r
523                                 fire_ball(GF_FIRE, 0, dam, rad);\r
524                         }\r
525                 }\r
526                 break;\r
527 \r
528         case 27:\r
529                 if (name) return _("\8d¬\93×\8f¢\97\88", "Call Chaos");\r
530                 if (desc) return _("\83\89\83\93\83_\83\80\82È\91®\90«\82Ì\8b\85\82â\83r\81[\83\80\82ð\94­\90\82³\82¹\82é\81B", "Generate random kind of balls or beams.");\r
531 \r
532                 {\r
533                         if (info) return format("%s150 / 250", s_dam);\r
534 \r
535                         if (cast)\r
536                         {\r
537                                 call_chaos();\r
538                         }\r
539                 }\r
540                 break;\r
541 \r
542         case 28:\r
543                 if (name) return _("\8e©\8cÈ\95Ï\97e", "Polymorph Self");\r
544                 if (desc) return _("\8e©\95ª\82ð\95Ï\90g\82³\82¹\82æ\82¤\82Æ\82·\82é\81B", "Polymorphs yourself.");\r
545 \r
546                 {\r
547                         if (cast)\r
548                         {\r
549                                 if (!get_check(_("\95Ï\90g\82µ\82Ü\82·\81B\82æ\82ë\82µ\82¢\82Å\82·\82©\81H", "You will polymorph yourself. Are you sure? "))) return NULL;\r
550                                 do_poly_self();\r
551                         }\r
552                 }\r
553                 break;\r
554 \r
555         case 29:\r
556                 if (name) return _("\96\82\97Í\82Ì\97\92", "Mana Storm");\r
557                 if (desc) return _("\94ñ\8fí\82É\8b­\97Í\82Å\8b\90\91å\82È\8f\83\90\88\82È\96\82\97Í\82Ì\8b\85\82ð\95ú\82Â\81B", "Fires an extremely powerful huge ball of pure mana.");\r
558 \r
559                 {\r
560                         HIT_POINT dam = 300 + plev * 4;\r
561                         int rad = 4;\r
562 \r
563                         if (info) return info_damage(0, 0, dam);\r
564 \r
565                         if (cast)\r
566                         {\r
567                                 if (!get_aim_dir(&dir)) return NULL;\r
568                                 fire_ball(GF_MANA, dir, dam, rad);\r
569                         }\r
570                 }\r
571                 break;\r
572 \r
573         case 30:\r
574                 if (name) return _("\83\8d\83O\83\8b\83X\82Ì\83u\83\8c\83X", "Breathe Logrus");\r
575                 if (desc) return _("\94ñ\8fí\82É\8b­\97Í\82È\83J\83I\83X\82Ì\8b\85\82ð\95ú\82Â\81B", "Fires an extremely powerful ball of chaos.");\r
576 \r
577                 {\r
578                         HIT_POINT dam = p_ptr->chp;\r
579                         int rad = 2;\r
580 \r
581                         if (info) return info_damage(0, 0, dam);\r
582 \r
583                         if (cast)\r
584                         {\r
585                                 if (!get_aim_dir(&dir)) return NULL;\r
586 \r
587                                 fire_ball(GF_CHAOS, dir, dam, rad);\r
588                         }\r
589                 }\r
590                 break;\r
591 \r
592         case 31:\r
593                 if (name) return _("\8b\95\96³\8f¢\97\88", "Call the Void");\r
594                 if (desc) return _("\8e©\95ª\82Ì\8eü\88Í\82É\8cü\82©\82Á\82Ä\81A\83\8d\83P\83b\83g\81A\8f\83\90\88\82È\96\82\97Í\82Ì\8b\85\81A\95ú\8eË\90«\94p\8aü\95¨\82Ì\8b\85\82ð\95ú\82Â\81B\82½\82¾\82µ\81A\95Ç\82É\97×\90Ú\82µ\82Ä\8eg\97p\82·\82é\82Æ\8dL\94Í\88Í\82ð\94j\89ó\82·\82é\81B",\r
595                         "Fires rockets, mana balls and nuclear waste balls in all directions each unless you are not adjacent to any walls. Otherwise *destroys* huge area.");\r
596 \r
597                 {\r
598                         if (info) return format("%s3 * 175", s_dam);\r
599 \r
600                         if (cast)\r
601                         {\r
602                                 call_the_();\r
603                         }\r
604                 }\r
605                 break;\r
606         }\r
607 \r
608         return "";\r
609 }