OSDN Git Service

#37353 軽傷の治癒の効果をcure_light_wounds()にまとめる。
[hengbandforosx/hengbandosx.git] / src / realm-arcane.c
1 #include "angband.h"\r
2 #include "cmd-spell.h"\r
3 \r
4 /*!\r
5 * @brief \94é\8fp\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_arcane_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         int dir;\r
18         int plev = p_ptr->lev;\r
19 \r
20         switch (spell)\r
21         {\r
22         case 0:\r
23                 if (name) return _("\93d\8c\82", "Zap");\r
24                 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
25 \r
26                 {\r
27                         int dice = 3 + (plev - 1) / 5;\r
28                         int sides = 3;\r
29 \r
30                         if (info) return info_damage(dice, sides, 0);\r
31 \r
32                         if (cast)\r
33                         {\r
34                                 if (!get_aim_dir(&dir)) return NULL;\r
35 \r
36                                 fire_bolt_or_beam(beam_chance() - 10, GF_ELEC, dir, damroll(dice, sides));\r
37                         }\r
38                 }\r
39                 break;\r
40 \r
41         case 1:\r
42                 if (name) return _("\96\82\96@\82Ì\8e{\8fù", "Wizard Lock");\r
43                 if (desc) return _("\94à\82É\8c®\82ð\82©\82¯\82é\81B", "Locks a door.");\r
44 \r
45                 {\r
46                         if (cast)\r
47                         {\r
48                                 if (!get_aim_dir(&dir)) return NULL;\r
49 \r
50                                 wizard_lock(dir);\r
51                         }\r
52                 }\r
53                 break;\r
54 \r
55         case 2:\r
56                 if (name) return _("\93§\96¾\91Ì\8a´\92m", "Detect Invisibility");\r
57                 if (desc) return _("\8bß\82­\82Ì\93§\96¾\82È\83\82\83\93\83X\83^\81[\82ð\8a´\92m\82·\82é\81B", "Detects all invisible monsters in your vicinity.");\r
58 \r
59                 {\r
60                         int rad = DETECT_RAD_DEFAULT;\r
61 \r
62                         if (info) return info_radius(rad);\r
63 \r
64                         if (cast)\r
65                         {\r
66                                 detect_monsters_invis(rad);\r
67                         }\r
68                 }\r
69                 break;\r
70 \r
71         case 3:\r
72                 if (name) return _("\83\82\83\93\83X\83^\81[\8a´\92m", "Detect Monsters");\r
73                 if (desc) return _("\8bß\82­\82Ì\91S\82Ä\82Ì\8c©\82¦\82é\83\82\83\93\83X\83^\81[\82ð\8a´\92m\82·\82é\81B", "Detects all monsters in your vicinity unless invisible.");\r
74 \r
75                 {\r
76                         int rad = DETECT_RAD_DEFAULT;\r
77 \r
78                         if (info) return info_radius(rad);\r
79 \r
80                         if (cast)\r
81                         {\r
82                                 detect_monsters_normal(rad);\r
83                         }\r
84                 }\r
85                 break;\r
86 \r
87         case 4:\r
88                 if (name) return _("\83V\83\87\81[\83g\81E\83e\83\8c\83|\81[\83g", "Blink");\r
89                 if (desc) return _("\8bß\8b\97\97£\82Ì\83e\83\8c\83|\81[\83g\82ð\82·\82é\81B", "Teleport short distance.");\r
90 \r
91                 {\r
92                         POSITION range = 10;\r
93 \r
94                         if (info) return info_range(range);\r
95 \r
96                         if (cast)\r
97                         {\r
98                                 teleport_player(range, 0L);\r
99                         }\r
100                 }\r
101                 break;\r
102 \r
103         case 5:\r
104                 if (name) return _("\83\89\83C\83g\81E\83G\83\8a\83A", "Light Area");\r
105                 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
106 \r
107                 {\r
108                         int dice = 2;\r
109                         int sides = plev / 2;\r
110                         int rad = plev / 10 + 1;\r
111 \r
112                         if (info) return info_damage(dice, sides, 0);\r
113 \r
114                         if (cast)\r
115                         {\r
116                                 lite_area(damroll(dice, sides), rad);\r
117                         }\r
118                 }\r
119                 break;\r
120 \r
121         case 6:\r
122                 if (name) return _("ã©\82Æ\94à \94j\89ó", "Trap & Door Destruction");\r
123                 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
124 \r
125                 {\r
126                         if (cast)\r
127                         {\r
128                                 if (!get_aim_dir(&dir)) return NULL;\r
129 \r
130                                 destroy_door(dir);\r
131                         }\r
132                 }\r
133                 break;\r
134 \r
135         case 7:\r
136                 if (name) return _("\8cy\8f\9d\82Ì\8e¡\96ü", "Cure Light Wounds");\r
137                 if (desc) return _("\89ö\89ä\82Æ\91Ì\97Í\82ð\8f­\82µ\89ñ\95\9c\82³\82¹\82é\81B", "Heals cut and HP a little.");\r
138 \r
139                 {\r
140                         int dice = 2;\r
141                         int sides = 8;\r
142 \r
143                         if (info) return info_heal(dice, sides, 0);\r
144                         if (cast) (void)cure_light_wound(dice, sides);\r
145                 }\r
146                 break;\r
147 \r
148         case 8:\r
149                 if (name) return _("ã©\82Æ\94à \8a´\92m", "Detect Doors & Traps");\r
150                 if (desc) return _("\8bß\82­\82Ì\91S\82Ä\82Ìã©\82Æ\94à\82Æ\8aK\92i\82ð\8a´\92m\82·\82é\81B", "Detects traps, doors, and stairs in your vicinity.");\r
151 \r
152                 {\r
153                         int rad = DETECT_RAD_DEFAULT;\r
154 \r
155                         if (info) return info_radius(rad);\r
156 \r
157                         if (cast)\r
158                         {\r
159                                 detect_traps(rad, TRUE);\r
160                                 detect_doors(rad);\r
161                                 detect_stairs(rad);\r
162                         }\r
163                 }\r
164                 break;\r
165 \r
166         case 9:\r
167                 if (name) return _("\94R\91f", "Phlogiston");\r
168                 if (desc) return _("\8cõ\8c¹\82É\94R\97¿\82ð\95â\8b\8b\82·\82é\81B", "Adds more turns of light to a lantern or torch.");\r
169 \r
170                 {\r
171                         if (cast)\r
172                         {\r
173                                 phlogiston();\r
174                         }\r
175                 }\r
176                 break;\r
177 \r
178         case 10:\r
179                 if (name) return _("\8dà\95ó\8a´\92m", "Detect Treasure");\r
180                 if (desc) return _("\8bß\82­\82Ì\8dà\95ó\82ð\8a´\92m\82·\82é\81B", "Detects all treasures in your vicinity.");\r
181 \r
182                 {\r
183                         int rad = DETECT_RAD_DEFAULT;\r
184 \r
185                         if (info) return info_radius(rad);\r
186 \r
187                         if (cast)\r
188                         {\r
189                                 detect_treasure(rad);\r
190                                 detect_objects_gold(rad);\r
191                         }\r
192                 }\r
193                 break;\r
194 \r
195         case 11:\r
196                 if (name) return _("\96\82\96\8a´\92m", "Detect Enchantment");\r
197                 if (desc) return _("\8bß\82­\82Ì\96\82\96@\82ª\82©\82©\82Á\82½\83A\83C\83e\83\80\82ð\8a´\92m\82·\82é\81B", "Detects all magical items in your vicinity.");\r
198 \r
199                 {\r
200                         int rad = DETECT_RAD_DEFAULT;\r
201 \r
202                         if (info) return info_radius(rad);\r
203 \r
204                         if (cast)\r
205                         {\r
206                                 detect_objects_magic(rad);\r
207                         }\r
208                 }\r
209                 break;\r
210 \r
211         case 12:\r
212                 if (name) return _("\83A\83C\83e\83\80\8a´\92m", "Detect Objects");\r
213                 if (desc) return _("\8bß\82­\82Ì\91S\82Ä\82Ì\83A\83C\83e\83\80\82ð\8a´\92m\82·\82é\81B", "Detects all items in your vicinity.");\r
214 \r
215                 {\r
216                         int rad = DETECT_RAD_DEFAULT;\r
217 \r
218                         if (info) return info_radius(rad);\r
219 \r
220                         if (cast)\r
221                         {\r
222                                 detect_objects_normal(rad);\r
223                         }\r
224                 }\r
225                 break;\r
226 \r
227         case 13:\r
228                 if (name) return _("\89ð\93Å", "Cure Poison");\r
229                 if (desc) return _("\93Å\82ð\91Ì\93à\82©\82ç\8a®\91S\82É\8eæ\82è\8f\9c\82­\81B", "Cures poison status.");\r
230 \r
231                 {\r
232                         if (cast)\r
233                         {\r
234                                 set_poisoned(0);\r
235                         }\r
236                 }\r
237                 break;\r
238 \r
239         case 14:\r
240                 if (name) return _("\91Ï\97â", "Resist Cold");\r
241                 if (desc) return _("\88ê\92è\8e\9e\8aÔ\81A\97â\8bC\82Ö\82Ì\91Ï\90«\82ð\93¾\82é\81B\91\95\94õ\82É\82æ\82é\91Ï\90«\82É\97Ý\90Ï\82·\82é\81B", "Gives resistance to cold. This resistance can be added to which from equipment for more powerful resistance.");\r
242 \r
243                 {\r
244                         int base = 20;\r
245 \r
246                         if (info) return info_duration(base, base);\r
247 \r
248                         if (cast)\r
249                         {\r
250                                 set_oppose_cold(randint1(base) + base, FALSE);\r
251                         }\r
252                 }\r
253                 break;\r
254 \r
255         case 15:\r
256                 if (name) return _("\91Ï\89Î", "Resist Fire");\r
257                 if (desc) return _("\88ê\92è\8e\9e\8aÔ\81A\89\8a\82Ö\82Ì\91Ï\90«\82ð\93¾\82é\81B\91\95\94õ\82É\82æ\82é\91Ï\90«\82É\97Ý\90Ï\82·\82é\81B",\r
258                         "Gives resistance to fire. This resistance can be added to which from equipment for more powerful resistance.");\r
259 \r
260                 {\r
261                         int base = 20;\r
262 \r
263                         if (info) return info_duration(base, base);\r
264 \r
265                         if (cast)\r
266                         {\r
267                                 set_oppose_fire(randint1(base) + base, FALSE);\r
268                         }\r
269                 }\r
270                 break;\r
271 \r
272         case 16:\r
273                 if (name) return _("\91Ï\93d", "Resist Lightning");\r
274                 if (desc) return _("\88ê\92è\8e\9e\8aÔ\81A\93d\8c\82\82Ö\82Ì\91Ï\90«\82ð\93¾\82é\81B\91\95\94õ\82É\82æ\82é\91Ï\90«\82É\97Ý\90Ï\82·\82é\81B",\r
275                         "Gives resistance to electricity. This resistance can be added to which from equipment for more powerful resistance.");\r
276 \r
277                 {\r
278                         int base = 20;\r
279 \r
280                         if (info) return info_duration(base, base);\r
281 \r
282                         if (cast)\r
283                         {\r
284                                 set_oppose_elec(randint1(base) + base, FALSE);\r
285                         }\r
286                 }\r
287                 break;\r
288 \r
289         case 17:\r
290                 if (name) return _("\91Ï\8e_", "Resist Acid");\r
291                 if (desc) return _("\88ê\92è\8e\9e\8aÔ\81A\8e_\82Ö\82Ì\91Ï\90«\82ð\93¾\82é\81B\91\95\94õ\82É\82æ\82é\91Ï\90«\82É\97Ý\90Ï\82·\82é\81B",\r
292                         "Gives resistance to acid. This resistance can be added to which from equipment for more powerful resistance.");\r
293 \r
294                 {\r
295                         int base = 20;\r
296 \r
297                         if (info) return info_duration(base, base);\r
298 \r
299                         if (cast)\r
300                         {\r
301                                 set_oppose_acid(randint1(base) + base, FALSE);\r
302                         }\r
303                 }\r
304                 break;\r
305 \r
306         case 18:\r
307                 if (name) return _("\8fd\8f\9d\82Ì\8e¡\96ü", "Cure Medium Wounds");\r
308                 if (desc) return _("\89ö\89ä\82Æ\91Ì\97Í\82ð\92\86\92ö\93x\89ñ\95\9c\82³\82¹\82é\81B", "Heals cut and HP more.");\r
309 \r
310                 {\r
311                         int dice = 4;\r
312                         int sides = 8;\r
313 \r
314                         if (info) return info_heal(dice, sides, 0);\r
315 \r
316                         if (cast)\r
317                         {\r
318                                 hp_player(damroll(dice, sides));\r
319                                 set_cut((p_ptr->cut / 2) - 50);\r
320                         }\r
321                 }\r
322                 break;\r
323 \r
324         case 19:\r
325                 if (name) return _("\83e\83\8c\83|\81[\83g", "Teleport");\r
326                 if (desc) return _("\89\93\8b\97\97£\82Ì\83e\83\8c\83|\81[\83g\82ð\82·\82é\81B", "Teleport long distance.");\r
327 \r
328                 {\r
329                         POSITION range = plev * 5;\r
330 \r
331                         if (info) return info_range(range);\r
332 \r
333                         if (cast)\r
334                         {\r
335                                 teleport_player(range, 0L);\r
336                         }\r
337                 }\r
338                 break;\r
339 \r
340         case 20:\r
341                 if (name) return _("\8aÓ\92è", "Identify");\r
342                 if (desc) return _("\83A\83C\83e\83\80\82ð\8e¯\95Ê\82·\82é\81B", "Identifies an item.");\r
343 \r
344                 {\r
345                         if (cast)\r
346                         {\r
347                                 if (!ident_spell(FALSE)) return NULL;\r
348                         }\r
349                 }\r
350                 break;\r
351 \r
352         case 21:\r
353                 if (name) return _("\8aâ\90Î\97n\89ð", "Stone to Mud");\r
354                 if (desc) return _("\95Ç\82ð\97n\82©\82µ\82Ä\8f°\82É\82·\82é\81B", "Turns one rock square to mud.");\r
355 \r
356                 {\r
357                         int dice = 1;\r
358                         int sides = 30;\r
359                         int base = 20;\r
360 \r
361                         if (info) return info_damage(dice, sides, base);\r
362 \r
363                         if (cast)\r
364                         {\r
365                                 if (!get_aim_dir(&dir)) return NULL;\r
366 \r
367                                 wall_to_mud(dir, 20 + randint1(30));\r
368                         }\r
369                 }\r
370                 break;\r
371 \r
372         case 22:\r
373                 if (name) return _("\91M\8cõ", "Ray of Light");\r
374                 if (desc) return _("\8cõ\90ü\82ð\95ú\82Â\81B\8cõ\82è\82ð\8c\99\82¤\83\82\83\93\83X\83^\81[\82É\8cø\89Ê\82ª\82 \82é\81B", "Fires a beam of light which damages to light-sensitive monsters.");\r
375 \r
376                 {\r
377                         int dice = 6;\r
378                         int sides = 8;\r
379 \r
380                         if (info) return info_damage(dice, sides, 0);\r
381 \r
382                         if (cast)\r
383                         {\r
384                                 if (!get_aim_dir(&dir)) return NULL;\r
385 \r
386                                 msg_print(_("\8cõ\90ü\82ª\95ú\82½\82ê\82½\81B", "A line of light appears."));\r
387                                 lite_line(dir, damroll(6, 8));\r
388                         }\r
389                 }\r
390                 break;\r
391 \r
392         case 23:\r
393                 if (name) return _("\8bó\95 \8f[\91«", "Satisfy Hunger");\r
394                 if (desc) return _("\96\9e\95 \82É\82·\82é\81B", "Satisfies hunger.");\r
395 \r
396                 {\r
397                         if (cast)\r
398                         {\r
399                                 set_food(PY_FOOD_MAX - 1);\r
400                         }\r
401                 }\r
402                 break;\r
403 \r
404         case 24:\r
405                 if (name) return _("\93§\96¾\8e\8b\94F", "See Invisible");\r
406                 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
407 \r
408                 {\r
409                         int base = 24;\r
410 \r
411                         if (info) return info_duration(base, base);\r
412 \r
413                         if (cast)\r
414                         {\r
415                                 set_tim_invis(randint1(base) + base, FALSE);\r
416                         }\r
417                 }\r
418                 break;\r
419 \r
420         case 25:\r
421                 if (name) return _("\83G\83\8c\83\81\83\93\83^\83\8b\8f¢\8a«", "Conjure Elemental");\r
422                 if (desc) return _("1\91Ì\82Ì\83G\83\8c\83\81\83\93\83^\83\8b\82ð\8f¢\8a«\82·\82é\81B", "Summons an elemental.");\r
423 \r
424                 {\r
425                         if (cast)\r
426                         {\r
427                                 if (!summon_specific(-1, p_ptr->y, p_ptr->x, plev, SUMMON_ELEMENTAL, (PM_ALLOW_GROUP | PM_FORCE_PET)))\r
428                                 {\r
429                                         msg_print(_("\83G\83\8c\83\81\83\93\83^\83\8b\82Í\8c»\82ê\82È\82©\82Á\82½\81B", "No Elementals arrive."));\r
430                                 }\r
431                         }\r
432                 }\r
433                 break;\r
434 \r
435         case 26:\r
436                 if (name) return _("\83e\83\8c\83|\81[\83g\81E\83\8c\83x\83\8b", "Teleport Level");\r
437                 if (desc) return _("\8fu\8e\9e\82É\8fã\82©\89º\82Ì\8aK\82É\83e\83\8c\83|\81[\83g\82·\82é\81B", "Teleport to up or down stairs in a moment.");\r
438 \r
439                 {\r
440                         if (cast)\r
441                         {\r
442                                 if (!get_check(_("\96{\93\96\82É\91¼\82Ì\8aK\82É\83e\83\8c\83|\81[\83g\82µ\82Ü\82·\82©\81H", "Are you sure? (Teleport Level)"))) return NULL;\r
443                                 teleport_level(0);\r
444                         }\r
445                 }\r
446                 break;\r
447 \r
448         case 27:\r
449                 if (name) return _("\83e\83\8c\83|\81[\83g\81E\83\82\83\93\83X\83^\81[", "Teleport Away");\r
450                 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
451 \r
452                 {\r
453                         int power = plev;\r
454 \r
455                         if (info) return info_power(power);\r
456 \r
457                         if (cast)\r
458                         {\r
459                                 if (!get_aim_dir(&dir)) return NULL;\r
460 \r
461                                 fire_beam(GF_AWAY_ALL, dir, power);\r
462                         }\r
463                 }\r
464                 break;\r
465 \r
466         case 28:\r
467                 if (name) return _("\8c³\91f\82Ì\8b\85", "Elemental Ball");\r
468                 if (desc) return _("\89\8a\81A\93d\8c\82\81A\97â\8bC\81A\8e_\82Ì\82Ç\82ê\82©\82Ì\8b\85\82ð\95ú\82Â\81B", "Fires a ball of some elements.");\r
469 \r
470                 {\r
471                         HIT_POINT dam = 75 + plev;\r
472                         int rad = 2;\r
473 \r
474                         if (info) return info_damage(0, 0, dam);\r
475 \r
476                         if (cast)\r
477                         {\r
478                                 int type;\r
479 \r
480                                 if (!get_aim_dir(&dir)) return NULL;\r
481 \r
482                                 switch (randint1(4))\r
483                                 {\r
484                                 case 1:  type = GF_FIRE; break;\r
485                                 case 2:  type = GF_ELEC; break;\r
486                                 case 3:  type = GF_COLD; break;\r
487                                 default: type = GF_ACID; break;\r
488                                 }\r
489 \r
490                                 fire_ball(type, dir, dam, rad);\r
491                         }\r
492                 }\r
493                 break;\r
494 \r
495         case 29:\r
496                 if (name) return _("\91S\8a´\92m", "Detection");\r
497                 if (desc) return _("\8bß\82­\82Ì\91S\82Ä\82Ì\83\82\83\93\83X\83^\81[\81Aã©\81A\94à\81A\8aK\92i\81A\8dà\95ó\81A\82»\82µ\82Ä\83A\83C\83e\83\80\82ð\8a´\92m\82·\82é\81B",\r
498                         "Detects all monsters, traps, doors, stairs, treasures and items in your vicinity.");\r
499 \r
500                 {\r
501                         int rad = DETECT_RAD_DEFAULT;\r
502 \r
503                         if (info) return info_radius(rad);\r
504 \r
505                         if (cast)\r
506                         {\r
507                                 detect_all(rad);\r
508                         }\r
509                 }\r
510                 break;\r
511 \r
512         case 30:\r
513                 if (name) return _("\8bA\8aÒ\82Ì\8eô\95¶", "Word of Recall");\r
514                 if (desc) return _("\92n\8fã\82É\82¢\82é\82Æ\82«\82Í\83_\83\93\83W\83\87\83\93\82Ì\8dÅ\90[\8aK\82Ö\81A\83_\83\93\83W\83\87\83\93\82É\82¢\82é\82Æ\82«\82Í\92n\8fã\82Ö\82Æ\88Ú\93®\82·\82é\81B",\r
515                         "Recalls player from dungeon to town, or from town to the deepest level of dungeon.");\r
516 \r
517                 {\r
518                         int base = 15;\r
519                         int sides = 20;\r
520 \r
521                         if (info) return info_delay(base, sides);\r
522 \r
523                         if (cast)\r
524                         {\r
525                                 if (!word_of_recall()) return NULL;\r
526                         }\r
527                 }\r
528                 break;\r
529 \r
530         case 31:\r
531                 if (name) return _("\90ç\97¢\8aá", "Clairvoyance");\r
532                 if (desc) return _("\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Ì\83A\83C\83e\83\80\82ð\8a´\92m\82·\82é\81B\82³\82ç\82É\81A\88ê\92è\8e\9e\8aÔ\83e\83\8c\83p\83V\81[\94\\97Í\82ð\93¾\82é\81B",\r
533                         "Maps and lights whole dungeon level. Knows all objects location. And gives telepathy for a while.");\r
534 \r
535                 {\r
536                         int base = 25;\r
537                         int sides = 30;\r
538 \r
539                         if (info) return info_duration(base, sides);\r
540 \r
541                         if (cast)\r
542                         {\r
543                                 chg_virtue(V_KNOWLEDGE, 1);\r
544                                 chg_virtue(V_ENLIGHTEN, 1);\r
545 \r
546                                 wiz_lite(FALSE);\r
547 \r
548                                 if (!p_ptr->telepathy)\r
549                                 {\r
550                                         set_tim_esp(randint1(sides) + base, FALSE);\r
551                                 }\r
552                         }\r
553                 }\r
554                 break;\r
555         }\r
556 \r
557         return "";\r
558 }\r