OSDN Git Service

[Refactor] #37353 未コミットファイル追加。 orz
[hengband/hengband.git] / src / realm-crusade.c
1 #include "angband.h"\r
2 #include "cmd-spell.h"\r
3 \r
4 \r
5 \r
6 /*!\r
7 * @brief \94j\8e×\97Ì\88æ\96\82\96@\82Ì\8ae\8f\88\97\9d\82ð\8ds\82¤\r
8 * @param spell \96\82\96@ID\r
9 * @param mode \8f\88\97\9d\93à\97e (SPELL_NAME / SPELL_DESC / SPELL_INFO / SPELL_CAST)\r
10 * @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
11 */\r
12 cptr do_crusade_spell(SPELL_IDX spell, BIT_FLAGS mode)\r
13 {\r
14         bool name = (mode == SPELL_NAME) ? TRUE : FALSE;\r
15         bool desc = (mode == SPELL_DESC) ? TRUE : FALSE;\r
16         bool info = (mode == SPELL_INFO) ? TRUE : FALSE;\r
17         bool cast = (mode == SPELL_CAST) ? TRUE : FALSE;\r
18 \r
19         int dir;\r
20         int plev = p_ptr->lev;\r
21 \r
22         switch (spell)\r
23         {\r
24         case 0:\r
25                 if (name) return _("\92¦\94±", "Punishment");\r
26                 if (desc) return _("\93d\8c\82\82Ì\83{\83\8b\83g\82à\82µ\82­\82Í\83r\81[\83\80\82ð\95ú\82Â\81B", "Fires a bolt or beam of lightning.");\r
27 \r
28                 {\r
29                         int dice = 3 + (plev - 1) / 5;\r
30                         int sides = 4;\r
31 \r
32                         if (info) return info_damage(dice, sides, 0);\r
33 \r
34                         if (cast)\r
35                         {\r
36                                 if (!get_aim_dir(&dir)) return NULL;\r
37 \r
38                                 fire_bolt_or_beam(beam_chance() - 10, GF_ELEC, dir, damroll(dice, sides));\r
39                         }\r
40                 }\r
41                 break;\r
42 \r
43         case 1:\r
44                 if (name) return _("\8e×\88«\91\8dÝ\8a´\92m", "Detect Evil");\r
45                 if (desc) return _("\8bß\82­\82Ì\8e×\88«\82È\83\82\83\93\83X\83^\81[\82ð\8a´\92m\82·\82é\81B", "Detects all evil monsters in your vicinity.");\r
46 \r
47                 {\r
48                         int rad = DETECT_RAD_DEFAULT;\r
49 \r
50                         if (info) return info_radius(rad);\r
51 \r
52                         if (cast)\r
53                         {\r
54                                 detect_monsters_evil(rad);\r
55                         }\r
56                 }\r
57                 break;\r
58 \r
59         case 2:\r
60                 if (name) return _("\8b°\95|\8f\9c\8b\8e", "Remove Fear");\r
61                 if (desc) return _("\8b°\95|\82ð\8eæ\82è\8f\9c\82­\81B", "Removes fear.");\r
62 \r
63                 {\r
64                         if (cast)\r
65                         {\r
66                                 set_afraid(0);\r
67                         }\r
68                 }\r
69                 break;\r
70 \r
71         case 3:\r
72                 if (name) return _("\88Ð\88³", "Scare Monster");\r
73                 if (desc) return _("\83\82\83\93\83X\83^\81[1\91Ì\82ð\8b°\95|\82³\82¹\82é\81B\92ï\8dR\82³\82ê\82é\82Æ\96³\8cø\81B", "Attempts to scare a monster.");\r
74 \r
75                 {\r
76                         int power = plev;\r
77 \r
78                         if (info) return info_power(power);\r
79 \r
80                         if (cast)\r
81                         {\r
82                                 if (!get_aim_dir(&dir)) return NULL;\r
83 \r
84                                 fear_monster(dir, power);\r
85                         }\r
86                 }\r
87                 break;\r
88 \r
89         case 4:\r
90                 if (name) return _("\90¹\88æ", "Sanctuary");\r
91                 if (desc) return _("\97×\90Ú\82µ\82½\91S\82Ä\82Ì\83\82\83\93\83X\83^\81[\82ð\96°\82ç\82¹\82é\81B\92ï\8dR\82³\82ê\82é\82Æ\96³\8cø\81B", "Attempts to sleep monsters in the adjacent squares.");\r
92 \r
93                 {\r
94                         int power = plev;\r
95 \r
96                         if (info) return info_power(power);\r
97 \r
98                         if (cast)\r
99                         {\r
100                                 sleep_monsters_touch();\r
101                         }\r
102                 }\r
103                 break;\r
104 \r
105         case 5:\r
106                 if (name) return _("\93ü\8cû", "Portal");\r
107                 if (desc) return _("\92\86\8b\97\97£\82Ì\83e\83\8c\83|\81[\83g\82ð\82·\82é\81B", "Teleport medium distance.");\r
108 \r
109                 {\r
110                         POSITION range = 25 + plev / 2;\r
111 \r
112                         if (info) return info_range(range);\r
113 \r
114                         if (cast)\r
115                         {\r
116                                 teleport_player(range, 0L);\r
117                         }\r
118                 }\r
119                 break;\r
120 \r
121         case 6:\r
122                 if (name) return _("\83X\83^\81[\83_\83X\83g", "Star Dust");\r
123                 if (desc) return _("\83^\81[\83Q\83b\83g\95t\8bß\82É\91M\8cõ\82Ì\83{\83\8b\83g\82ð\98A\8eË\82·\82é\81B", "Fires many bolts of light near the target.");\r
124 \r
125                 {\r
126                         int dice = 3 + (plev - 1) / 9;\r
127                         int sides = 2;\r
128 \r
129                         if (info) return info_multi_damage_dice(dice, sides);\r
130 \r
131                         if (cast)\r
132                         {\r
133                                 if (!get_aim_dir(&dir)) return NULL;\r
134                                 fire_blast(GF_LITE, dir, dice, sides, 10, 3);\r
135                         }\r
136                 }\r
137                 break;\r
138 \r
139         case 7:\r
140                 if (name) return _("\90g\91Ì\8fò\89»", "Purify");\r
141                 if (desc) return _("\8f\9d\81A\93Å\81A\9eN\9eO\82©\82ç\91S\89õ\82·\82é\81B", "Heals all cut, stun and poison status.");\r
142 \r
143                 {\r
144                         if (cast)\r
145                         {\r
146                                 set_cut(0);\r
147                                 set_poisoned(0);\r
148                                 set_stun(0);\r
149                         }\r
150                 }\r
151                 break;\r
152 \r
153         case 8:\r
154                 if (name) return _("\8e×\88«\94ò\82Î\82µ", "Scatter Evil");\r
155                 if (desc) return _("\8e×\88«\82È\83\82\83\93\83X\83^\81[1\91Ì\82ð\83e\83\8c\83|\81[\83g\82³\82¹\82é\81B\92ï\8dR\82³\82ê\82é\82Æ\96³\8cø\81B", "Attempts to teleport an evil monster away.");\r
156 \r
157                 {\r
158                         int power = MAX_SIGHT * 5;\r
159 \r
160                         if (info) return info_power(power);\r
161 \r
162                         if (cast)\r
163                         {\r
164                                 if (!get_aim_dir(&dir)) return NULL;\r
165                                 fire_ball(GF_AWAY_EVIL, dir, power, 0);\r
166                         }\r
167                 }\r
168                 break;\r
169 \r
170         case 9:\r
171                 if (name) return _("\90¹\82È\82é\8cõ\8b\85", "Holy Orb");\r
172                 if (desc) return _("\90¹\82È\82é\97Í\82ð\82à\82Â\95ó\8eì\82ð\95ú\82Â\81B\8e×\88«\82È\83\82\83\93\83X\83^\81[\82É\91Î\82µ\82Ä\91å\82«\82È\83_\83\81\81[\83W\82ð\97^\82¦\82é\82ª\81A\91P\97Ç\82È\83\82\83\93\83X\83^\81[\82É\82Í\8cø\89Ê\82ª\82È\82¢\81B",\r
173                         "Fires a ball with holy power. Hurts evil monsters greatly, but don't effect good monsters.");\r
174 \r
175                 {\r
176                         int dice = 3;\r
177                         int sides = 6;\r
178                         int rad = (plev < 30) ? 2 : 3;\r
179                         int base;\r
180 \r
181                         if (p_ptr->pclass == CLASS_PRIEST ||\r
182                                 p_ptr->pclass == CLASS_HIGH_MAGE ||\r
183                                 p_ptr->pclass == CLASS_SORCERER)\r
184                                 base = plev + plev / 2;\r
185                         else\r
186                                 base = plev + plev / 4;\r
187 \r
188 \r
189                         if (info) return info_damage(dice, sides, base);\r
190 \r
191                         if (cast)\r
192                         {\r
193                                 if (!get_aim_dir(&dir)) return NULL;\r
194 \r
195                                 fire_ball(GF_HOLY_FIRE, dir, damroll(dice, sides) + base, rad);\r
196                         }\r
197                 }\r
198                 break;\r
199 \r
200         case 10:\r
201                 if (name) return _("\88«\96\82\95¥\82¢", "Exorcism");\r
202                 if (desc) return _("\8e\8b\8aE\93à\82Ì\91S\82Ä\82Ì\83A\83\93\83f\83b\83h\8by\82Ñ\88«\96\82\82É\83_\83\81\81[\83W\82ð\97^\82¦\81A\8e×\88«\82È\83\82\83\93\83X\83^\81[\82ð\8b°\95|\82³\82¹\82é\81B",\r
203                         "Damages all undead and demons in sight, and scares all evil monsters in sight.");\r
204 \r
205                 {\r
206                         int sides = plev;\r
207                         int power = plev;\r
208 \r
209                         if (info) return info_damage(1, sides, 0);\r
210 \r
211                         if (cast)\r
212                         {\r
213                                 dispel_undead(randint1(sides));\r
214                                 dispel_demons(randint1(sides));\r
215                                 turn_evil(power);\r
216                         }\r
217                 }\r
218                 break;\r
219 \r
220         case 11:\r
221                 if (name) return _("\89ð\8eô", "Remove Curse");\r
222                 if (desc) return _("\83A\83C\83e\83\80\82É\82©\82©\82Á\82½\8eã\82¢\8eô\82¢\82ð\89ð\8f\9c\82·\82é\81B", "Removes normal curses from equipped items.");\r
223 \r
224                 {\r
225                         if (cast)\r
226                         {\r
227                                 if (remove_curse())\r
228                                 {\r
229                                         msg_print(_("\92N\82©\82É\8c©\8eç\82ç\82ê\82Ä\82¢\82é\82æ\82¤\82È\8bC\82ª\82·\82é\81B", "You feel as if someone is watching over you."));\r
230                                 }\r
231                         }\r
232                 }\r
233                 break;\r
234 \r
235         case 12:\r
236                 if (name) return _("\93§\96¾\8e\8b\94F", "Sense Unseen");\r
237                 if (desc) return _("\88ê\92è\8e\9e\8aÔ\81A\93§\96¾\82È\82à\82Ì\82ª\8c©\82¦\82é\82æ\82¤\82É\82È\82é\81B", "Gives see invisible for a while.");\r
238 \r
239                 {\r
240                         int base = 24;\r
241 \r
242                         if (info) return info_duration(base, base);\r
243 \r
244                         if (cast)\r
245                         {\r
246                                 set_tim_invis(randint1(base) + base, FALSE);\r
247                         }\r
248                 }\r
249                 break;\r
250 \r
251         case 13:\r
252                 if (name) return _("\91Î\8e×\88«\8c\8b\8aE", "Protection from Evil");\r
253                 if (desc) return _("\8e×\88«\82È\83\82\83\93\83X\83^\81[\82Ì\8dU\8c\82\82ð\96h\82®\83o\83\8a\83A\82ð\92£\82é\81B", "Gives aura which protect you from evil monster's physical attack.");\r
254 \r
255                 {\r
256                         int base = 25;\r
257                         int sides = 3 * plev;\r
258 \r
259                         if (info) return info_duration(base, sides);\r
260 \r
261                         if (cast)\r
262                         {\r
263                                 set_protevil(randint1(sides) + base, FALSE);\r
264                         }\r
265                 }\r
266                 break;\r
267 \r
268         case 14:\r
269                 if (name) return _("\8dÙ\82«\82Ì\97\8b", "Judgment Thunder");\r
270                 if (desc) return _("\8b­\97Í\82È\93d\8c\82\82Ì\83{\83\8b\83g\82ð\95ú\82Â\81B", "Fires a powerful bolt of lightning.");\r
271 \r
272                 {\r
273                         HIT_POINT dam = plev * 5;\r
274 \r
275                         if (info) return info_damage(0, 0, dam);\r
276 \r
277                         if (cast)\r
278                         {\r
279                                 if (!get_aim_dir(&dir)) return NULL;\r
280                                 fire_bolt(GF_ELEC, dir, dam);\r
281                         }\r
282                 }\r
283                 break;\r
284 \r
285         case 15:\r
286                 if (name) return _("\90¹\82È\82é\8cä\8c¾\97t", "Holy Word");\r
287                 if (desc) return _("\8e\8b\8aE\93à\82Ì\8e×\88«\82È\91\8dÝ\82É\91å\82«\82È\83_\83\81\81[\83W\82ð\97^\82¦\81A\91Ì\97Í\82ð\89ñ\95\9c\82µ\81A\93Å\81A\8b°\95|\81A\9eN\9eO\8fó\91Ô\81A\95\89\8f\9d\82©\82ç\91S\89õ\82·\82é\81B",\r
288                         "Damages all evil monsters in sight, heals HP somewhat, and completely heals poison, fear, stun and cut status.");\r
289 \r
290                 {\r
291                         int dam_sides = plev * 6;\r
292                         int heal = 100;\r
293 \r
294                         if (info) return format(_("\91¹:1d%d/\89ñ%d", "dam:d%d/h%d"), dam_sides, heal);\r
295                         if (cast)\r
296                         {\r
297                                 dispel_evil(randint1(dam_sides));\r
298                                 hp_player(heal);\r
299                                 set_afraid(0);\r
300                                 set_poisoned(0);\r
301                                 set_stun(0);\r
302                                 set_cut(0);\r
303                         }\r
304                 }\r
305                 break;\r
306 \r
307         case 16:\r
308                 if (name) return _("\8aJ\82©\82ê\82½\93¹", "Unbarring Ways");\r
309                 if (desc) return _("\88ê\92¼\90ü\8fã\82Ì\91S\82Ä\82Ìã©\82Æ\94à\82ð\94j\89ó\82·\82é\81B", "Fires a beam which destroy traps and doors.");\r
310 \r
311                 {\r
312                         if (cast)\r
313                         {\r
314                                 if (!get_aim_dir(&dir)) return NULL;\r
315 \r
316                                 destroy_door(dir);\r
317                         }\r
318                 }\r
319                 break;\r
320 \r
321         case 17:\r
322                 if (name) return _("\95\95\96\82", "Arrest");\r
323                 if (desc) return _("\8e×\88«\82È\83\82\83\93\83X\83^\81[\82Ì\93®\82«\82ð\8e~\82ß\82é\81B", "Attempts to paralyze an evil monster.");\r
324 \r
325                 {\r
326                         int power = plev * 2;\r
327 \r
328                         if (info) return info_power(power);\r
329 \r
330                         if (cast)\r
331                         {\r
332                                 if (!get_aim_dir(&dir)) return NULL;\r
333                                 stasis_evil(dir);\r
334                         }\r
335                 }\r
336                 break;\r
337 \r
338         case 18:\r
339                 if (name) return _("\90¹\82È\82é\83I\81[\83\89", "Holy Aura");\r
340                 if (desc) return _("\88ê\92è\8e\9e\8aÔ\81A\8e×\88«\82È\83\82\83\93\83X\83^\81[\82ð\8f\9d\82Â\82¯\82é\90¹\82È\82é\83I\81[\83\89\82ð\93¾\82é\81B",\r
341                         "Gives aura of holy power which injures evil monsters which attacked you for a while.");\r
342 \r
343                 {\r
344                         int base = 20;\r
345 \r
346                         if (info) return info_duration(base, base);\r
347 \r
348                         if (cast)\r
349                         {\r
350                                 set_tim_sh_holy(randint1(base) + base, FALSE);\r
351                         }\r
352                 }\r
353                 break;\r
354 \r
355         case 19:\r
356                 if (name) return _("\83A\83\93\83f\83b\83h&\88«\96\82\91Þ\8eU", "Dispel Undead & Demons");\r
357                 if (desc) return _("\8e\8b\8aE\93à\82Ì\91S\82Ä\82Ì\83A\83\93\83f\83b\83h\8by\82Ñ\88«\96\82\82É\83_\83\81\81[\83W\82ð\97^\82¦\82é\81B", "Damages all undead and demons in sight.");\r
358 \r
359                 {\r
360                         int sides = plev * 4;\r
361 \r
362                         if (info) return info_damage(1, sides, 0);\r
363 \r
364                         if (cast)\r
365                         {\r
366                                 dispel_undead(randint1(sides));\r
367                                 dispel_demons(randint1(sides));\r
368                         }\r
369                 }\r
370                 break;\r
371 \r
372         case 20:\r
373                 if (name) return _("\8e×\88«\91Þ\8eU", "Dispel Evil");\r
374                 if (desc) return _("\8e\8b\8aE\93à\82Ì\91S\82Ä\82Ì\8e×\88«\82È\83\82\83\93\83X\83^\81[\82É\83_\83\81\81[\83W\82ð\97^\82¦\82é\81B", "Damages all evil monsters in sight.");\r
375 \r
376                 {\r
377                         int sides = plev * 4;\r
378 \r
379                         if (info) return info_damage(1, sides, 0);\r
380 \r
381                         if (cast)\r
382                         {\r
383                                 dispel_evil(randint1(sides));\r
384                         }\r
385                 }\r
386                 break;\r
387 \r
388         case 21:\r
389                 if (name) return _("\90¹\82È\82é\90n", "Holy Blade");\r
390                 if (desc) return _("\92Ê\8fí\82Ì\95\90\8aí\82É\96Å\8e×\82Ì\91®\90«\82ð\82Â\82¯\82é\81B", "Makes current weapon especially deadly against evil monsters.");\r
391 \r
392                 {\r
393                         if (cast)\r
394                         {\r
395                                 brand_weapon(13);\r
396                         }\r
397                 }\r
398                 break;\r
399 \r
400         case 22:\r
401                 if (name) return _("\83X\83^\81[\83o\81[\83X\83g", "Star Burst");\r
402                 if (desc) return _("\8b\90\91å\82È\91M\8cõ\82Ì\8b\85\82ð\95ú\82Â\81B", "Fires a huge ball of powerful light.");\r
403 \r
404                 {\r
405                         HIT_POINT dam = 100 + plev * 2;\r
406                         int rad = 4;\r
407 \r
408                         if (info) return info_damage(0, 0, dam);\r
409 \r
410                         if (cast)\r
411                         {\r
412                                 if (!get_aim_dir(&dir)) return NULL;\r
413 \r
414                                 fire_ball(GF_LITE, dir, dam, rad);\r
415                         }\r
416                 }\r
417                 break;\r
418 \r
419         case 23:\r
420                 if (name) return _("\93V\8eg\8f¢\8a«", "Summon Angel");\r
421                 if (desc) return _("\93V\8eg\82ð1\91Ì\8f¢\8a«\82·\82é\81B", "Summons an angel.");\r
422 \r
423                 {\r
424                         if (cast)\r
425                         {\r
426                                 bool pet = !one_in_(3);\r
427                                 u32b flg = 0L;\r
428 \r
429                                 if (pet) flg |= PM_FORCE_PET;\r
430                                 else flg |= PM_NO_PET;\r
431                                 if (!(pet && (plev < 50))) flg |= PM_ALLOW_GROUP;\r
432 \r
433                                 if (summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, (plev * 3) / 2, SUMMON_ANGEL, flg))\r
434                                 {\r
435                                         if (pet)\r
436                                         {\r
437                                                 msg_print(_("\81u\82²\97p\82Å\82²\82´\82¢\82Ü\82·\82©\81A\82²\8eå\90l\97l\81v", "'What is thy bidding... Master?'"));\r
438                                         }\r
439                                         else\r
440                                         {\r
441                                                 msg_print(_("\81u\89ä\82Í\93ð\82Ì\89º\96l\82É\82 \82ç\82¸\81\88«\8ds\8eÒ\82æ\81A\89÷\82¢\89ü\82ß\82æ\81I\81v", "Mortal! Repent of thy impiousness."));\r
442                                         }\r
443                                 }\r
444                         }\r
445                 }\r
446                 break;\r
447 \r
448         case 24:\r
449                 if (name) return _("\8em\8bC\8d\82\97g", "Heroism");\r
450                 if (desc) return _("\88ê\92è\8e\9e\8aÔ\81A\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
451 \r
452                 {\r
453                         int base = 25;\r
454 \r
455                         if (info) return info_duration(base, base);\r
456 \r
457                         if (cast)\r
458                         {\r
459                                 set_hero(randint1(base) + base, FALSE);\r
460                                 hp_player(10);\r
461                                 set_afraid(0);\r
462                         }\r
463                 }\r
464                 break;\r
465 \r
466         case 25:\r
467                 if (name) return _("\8eô\82¢\91Þ\8eU", "Dispel Curse");\r
468                 if (desc) return _("\83A\83C\83e\83\80\82É\82©\82©\82Á\82½\8b­\97Í\82È\8eô\82¢\82ð\89ð\8f\9c\82·\82é\81B", "Removes normal and heavy curse from equipped items.");\r
469 \r
470                 {\r
471                         if (cast)\r
472                         {\r
473                                 if (remove_all_curse())\r
474                                 {\r
475                                         msg_print(_("\92N\82©\82É\8c©\8eç\82ç\82ê\82Ä\82¢\82é\82æ\82¤\82È\8bC\82ª\82·\82é\81B", "You feel as if someone is watching over you."));\r
476                                 }\r
477                         }\r
478                 }\r
479                 break;\r
480 \r
481         case 26:\r
482                 if (name) return _("\8e×\88«\92Ç\95ú", "Banish Evil");\r
483                 if (desc) return _("\8e\8b\8aE\93à\82Ì\91S\82Ä\82Ì\8e×\88«\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",\r
484                         "Teleports all evil monsters in sight away unless resisted.");\r
485 \r
486                 {\r
487                         int power = 100;\r
488 \r
489                         if (info) return info_power(power);\r
490 \r
491                         if (cast)\r
492                         {\r
493                                 if (banish_evil(power))\r
494                                 {\r
495                                         msg_print(_("\90_\90¹\82È\97Í\82ª\8e×\88«\82ð\91Å\82¿\95¥\82Á\82½\81I", "The holy power banishes evil!"));\r
496                                 }\r
497                         }\r
498                 }\r
499                 break;\r
500 \r
501         case 27:\r
502                 if (name) return _("\83n\83\8b\83}\83Q\83h\83\93", "Armageddon");\r
503                 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
504 \r
505                 {\r
506                         int base = 12;\r
507                         int sides = 4;\r
508 \r
509                         if (cast)\r
510                         {\r
511                                 destroy_area(p_ptr->y, p_ptr->x, base + randint1(sides), FALSE);\r
512                         }\r
513                 }\r
514                 break;\r
515 \r
516         case 28:\r
517                 if (name) return _("\96Ú\82É\82Í\96Ú\82ð", "An Eye for an Eye");\r
518                 if (desc) return _("\88ê\92è\8e\9e\8aÔ\81A\8e©\95ª\82ª\83_\83\81\81[\83W\82ð\8eó\82¯\82½\82Æ\82«\82É\8dU\8c\82\82ð\8ds\82Á\82½\83\82\83\93\83X\83^\81[\82É\91Î\82µ\82Ä\93¯\93\99\82Ì\83_\83\81\81[\83W\82ð\97^\82¦\82é\81B",\r
519                         "Gives special aura for a while. When you are attacked by a monster, the monster are injured with same amount of damage as you take.");\r
520 \r
521                 {\r
522                         int base = 10;\r
523 \r
524                         if (info) return info_duration(base, base);\r
525 \r
526                         if (cast)\r
527                         {\r
528                                 set_tim_eyeeye(randint1(base) + base, FALSE);\r
529                         }\r
530                 }\r
531                 break;\r
532 \r
533         case 29:\r
534                 if (name) return _("\90_\82Ì\93{\82è", "Wrath of the God");\r
535                 if (desc) return _("\83^\81[\83Q\83b\83g\82Ì\8eü\88Í\82É\95ª\89ð\82Ì\8b\85\82ð\91½\90\94\97\8e\82Æ\82·\81B", "Drops many balls of disintegration near the target.");\r
536 \r
537                 {\r
538                         HIT_POINT dam = plev * 3 + 25;\r
539                         int rad = 2;\r
540 \r
541                         if (info) return info_multi_damage(dam);\r
542 \r
543                         if (cast)\r
544                         {\r
545                                 if (!cast_wrath_of_the_god(dam, rad)) return NULL;\r
546                         }\r
547                 }\r
548                 break;\r
549 \r
550         case 30:\r
551                 if (name) return _("\90_\88Ð", "Divine Intervention");\r
552                 if (desc) return _("\97×\90Ú\82·\82é\83\82\83\93\83X\83^\81[\82É\90¹\82È\82é\83_\83\81\81[\83W\82ð\97^\82¦\81A\8e\8b\8aE\93à\82Ì\83\82\83\93\83X\83^\81[\82É\83_\83\81\81[\83W\81A\8c¸\91¬\81A\9eN\9eO\81A\8d¬\97\90\81A\8b°\95|\81A\96°\82è\82ð\97^\82¦\82é\81B\82³\82ç\82É\91Ì\97Í\82ð\89ñ\95\9c\82·\82é\81B",\r
553                         "Damages all adjacent monsters with holy power. Damages and attempt to slow, stun, confuse, scare and freeze all monsters in sight. And heals HP.");\r
554 \r
555                 {\r
556                         int b_dam = plev * 11;\r
557                         int d_dam = plev * 4;\r
558                         int heal = 100;\r
559                         int power = plev * 4;\r
560 \r
561                         if (info) return format(_("\89ñ%d/\91¹%d+%d", "h%d/dm%d+%d"), heal, d_dam, b_dam / 2);\r
562                         if (cast)\r
563                         {\r
564                                 project(0, 1, p_ptr->y, p_ptr->x, b_dam, GF_HOLY_FIRE, PROJECT_KILL, -1);\r
565                                 dispel_monsters(d_dam);\r
566                                 slow_monsters(plev);\r
567                                 stun_monsters(power);\r
568                                 confuse_monsters(power);\r
569                                 turn_monsters(power);\r
570                                 stasis_monsters(power);\r
571                                 hp_player(heal);\r
572                         }\r
573                 }\r
574                 break;\r
575 \r
576         case 31:\r
577                 if (name) return _("\90¹\90í", "Crusade");\r
578                 if (desc) return _("\8e\8b\8aE\93à\82Ì\91P\97Ç\82È\83\82\83\93\83X\83^\81[\82ð\83y\83b\83g\82É\82µ\82æ\82¤\82Æ\82µ\81A\82È\82ç\82È\82©\82Á\82½\8fê\8d\87\8by\82Ñ\91P\97Ç\82Å\82È\82¢\83\82\83\93\83X\83^\81[\82ð\8b°\95|\82³\82¹\82é\81B\82³\82ç\82É\91½\90\94\82Ì\89Á\91¬\82³\82ê\82½\8bR\8em\82ð\8f¢\8a«\82µ\81A\83q\81[\83\8d\81[\81A\8fj\95\9f\81A\89Á\91¬\81A\91Î\8e×\88«\8c\8b\8aE\82ð\93¾\82é\81B",\r
579                         "Attempts to charm all good monsters in sight, and scare all non-charmed monsters, and summons great number of knights, and gives heroism, bless, speed and protection from evil.");\r
580 \r
581                 {\r
582                         if (cast)\r
583                         {\r
584                                 int base = 25;\r
585                                 int sp_sides = 20 + plev;\r
586                                 int sp_base = plev;\r
587 \r
588                                 int i;\r
589                                 crusade();\r
590                                 for (i = 0; i < 12; i++)\r
591                                 {\r
592                                         int attempt = 10;\r
593                                         POSITION my = 0, mx = 0;\r
594 \r
595                                         while (attempt--)\r
596                                         {\r
597                                                 scatter(&my, &mx, p_ptr->y, p_ptr->x, 4, 0);\r
598 \r
599                                                 /* Require empty grids */\r
600                                                 if (cave_empty_bold2(my, mx)) break;\r
601                                         }\r
602                                         if (attempt < 0) continue;\r
603                                         summon_specific(-1, my, mx, plev, SUMMON_KNIGHTS, (PM_ALLOW_GROUP | PM_FORCE_PET | PM_HASTE));\r
604                                 }\r
605                                 set_hero(randint1(base) + base, FALSE);\r
606                                 set_blessed(randint1(base) + base, FALSE);\r
607                                 set_fast(randint1(sp_sides) + sp_base, FALSE);\r
608                                 set_protevil(randint1(base) + base, FALSE);\r
609                                 set_afraid(0);\r
610                         }\r
611                 }\r
612                 break;\r
613         }\r
614 \r
615         return "";\r
616 }\r
617 \r