2 #include "cmd-spell.h"
\r
7 * @brief
\88Ã
\8d\95\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
12 cptr do_death_spell(SPELL_IDX spell, BIT_FLAGS mode)
\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
19 static const char s_dam[] = _("
\91¹
\8f\9d:", "dam ");
\r
20 static const char s_random[] = _("
\83\89\83\93\83_
\83\80", "random");
\r
23 int plev = p_ptr->lev;
\r
28 if (name) return _("
\96³
\90¶
\96½
\8a´
\92m", "Detect Unlife");
\r
29 if (desc) return _("
\8bß
\82
\82Ì
\90¶
\96½
\82Ì
\82È
\82¢
\83\82\83\93\83X
\83^
\81[
\82ð
\8a´
\92m
\82·
\82é
\81B", "Detects all nonliving monsters in your vicinity.");
\r
32 int rad = DETECT_RAD_DEFAULT;
\r
34 if (info) return info_radius(rad);
\r
38 detect_monsters_nonliving(rad);
\r
44 if (name) return _("
\8eô
\8eE
\92e", "Malediction");
\r
45 if (desc) return _("
\82²
\82
\8f¬
\82³
\82È
\8e×
\88«
\82È
\97Í
\82ð
\8e\9d\82Â
\83{
\81[
\83\8b\82ð
\95ú
\82Â
\81B
\91P
\97Ç
\82È
\83\82\83\93\83X
\83^
\81[
\82É
\82Í
\91å
\82«
\82È
\83_
\83\81\81[
\83W
\82ð
\97^
\82¦
\82é
\81B",
\r
46 "Fires a tiny ball of evil power which hurts good monsters greatly.");
\r
49 int dice = 3 + (plev - 1) / 5;
\r
53 if (info) return info_damage(dice, sides, 0);
\r
57 if (!get_aim_dir(&dir)) return NULL;
\r
60 * A radius-0 ball may (1) be aimed at
\r
61 * objects etc., and will affect them;
\r
62 * (2) may be aimed at ANY visible
\r
63 * monster, unlike a 'bolt' which must
\r
64 * travel to the monster.
\r
67 fire_ball(GF_HELL_FIRE, dir, damroll(dice, sides), rad);
\r
71 /* Special effect first */
\r
72 int effect = randint1(1000);
\r
75 fire_ball_hide(GF_DEATH_RAY, dir, plev * 200, 0);
\r
76 else if (effect < 500)
\r
77 fire_ball_hide(GF_TURN_ALL, dir, plev, 0);
\r
78 else if (effect < 800)
\r
79 fire_ball_hide(GF_OLD_CONF, dir, plev, 0);
\r
81 fire_ball_hide(GF_STUN, dir, plev, 0);
\r
88 if (name) return _("
\8e×
\88«
\8a´
\92m", "Detect Evil");
\r
89 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
92 int rad = DETECT_RAD_DEFAULT;
\r
94 if (info) return info_radius(rad);
\r
98 detect_monsters_evil(rad);
\r
104 if (name) return _("
\88«
\8fL
\89_", "Stinking Cloud");
\r
105 if (desc) return _("
\93Å
\82Ì
\8b\85\82ð
\95ú
\82Â
\81B", "Fires a ball of poison.");
\r
108 HIT_POINT dam = 10 + plev / 2;
\r
111 if (info) return info_damage(0, 0, dam);
\r
115 if (!get_aim_dir(&dir)) return NULL;
\r
117 fire_ball(GF_POIS, dir, dam, rad);
\r
123 if (name) return _("
\8d\95\82¢
\96°
\82è", "Black Sleep");
\r
124 if (desc) return _("1
\91Ì
\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 a monster.");
\r
129 if (info) return info_power(power);
\r
133 if (!get_aim_dir(&dir)) return NULL;
\r
135 sleep_monster(dir, plev);
\r
141 if (name) return _("
\91Ï
\93Å", "Resist Poison");
\r
142 if (desc) return _("
\88ê
\92è
\8e\9e\8aÔ
\81A
\93Å
\82Ö
\82Ì
\91Ï
\90«
\82ð
\93¾
\82é
\81B
\91\95\94õ
\82É
\82æ
\82é
\91Ï
\90«
\82É
\97Ý
\90Ï
\82·
\82é
\81B",
\r
143 "Gives resistance to poison. This resistance can be added to which from equipment for more powerful resistance.");
\r
148 if (info) return info_duration(base, base);
\r
152 set_oppose_pois(randint1(base) + base, FALSE);
\r
158 if (name) return _("
\8b°
\8dQ", "Horrify");
\r
159 if (desc) return _("
\83\82\83\93\83X
\83^
\81[1
\91Ì
\82ð
\8b°
\95|
\82³
\82¹
\81A
\9eN
\9eO
\82³
\82¹
\82é
\81B
\92ï
\8dR
\82³
\82ê
\82é
\82Æ
\96³
\8cø
\81B", "Attempts to scare and stun a monster.");
\r
164 if (info) return info_power(power);
\r
168 if (!get_aim_dir(&dir)) return NULL;
\r
170 fear_monster(dir, power);
\r
171 stun_monster(dir, power);
\r
177 if (name) return _("
\83A
\83\93\83f
\83b
\83h
\8f]
\91®", "Enslave Undead");
\r
178 if (desc) return _("
\83A
\83\93\83f
\83b
\83h1
\91Ì
\82ð
\96£
\97¹
\82·
\82é
\81B
\92ï
\8dR
\82³
\82ê
\82é
\82Æ
\96³
\8cø
\81B", "Attempts to charm an undead monster.");
\r
183 if (info) return info_power(power);
\r
187 if (!get_aim_dir(&dir)) return NULL;
\r
189 control_one_undead(dir, power);
\r
195 if (name) return _("
\83G
\83\93\83g
\83\8d\83s
\81[
\82Ì
\8b\85", "Orb of Entropy");
\r
196 if (desc) return _("
\90¶
\96½
\82Ì
\82 \82é
\8eÒ
\82ÌHP
\82Æ
\8dÅ
\91åHP
\91o
\95û
\82É
\83_
\83\81\81[
\83W
\82ð
\97^
\82¦
\82é
\8cø
\89Ê
\82Ì
\82 \82é
\8b\85\82ð
\95ú
\82Â
\81B", "Fires a ball which damages to both HP and MaxHP of living monsters.");
\r
201 int rad = (plev < 30) ? 2 : 3;
\r
204 if (IS_WIZARD_CLASS())
\r
205 base = plev + plev / 2;
\r
207 base = plev + plev / 4;
\r
210 if (info) return info_damage(dice, sides, base);
\r
214 if (!get_aim_dir(&dir)) return NULL;
\r
216 fire_ball(GF_HYPODYNAMIA, dir, damroll(dice, sides) + base, rad);
\r
222 if (name) return _("
\92n
\8d\96\82Ì
\96î", "Nether Bolt");
\r
223 if (desc) return _("
\92n
\8d\96\82Ì
\83{
\83\8b\83g
\82à
\82µ
\82
\82Í
\83r
\81[
\83\80\82ð
\95ú
\82Â
\81B", "Fires a bolt or beam of nether.");
\r
226 int dice = 8 + (plev - 5) / 4;
\r
229 if (info) return info_damage(dice, sides, 0);
\r
233 if (!get_aim_dir(&dir)) return NULL;
\r
235 fire_bolt_or_beam(beam_chance(), GF_NETHER, dir, damroll(dice, sides));
\r
241 if (name) return _("
\8eE
\9dC
\89_", "Cloud kill");
\r
242 if (desc) return _("
\8e©
\95ª
\82ð
\92\86\90S
\82Æ
\82µ
\82½
\93Å
\82Ì
\8b\85\82ð
\94
\90¶
\82³
\82¹
\82é
\81B", "Generate a ball of poison centered on you.");
\r
245 HIT_POINT dam = (30 + plev) * 2;
\r
246 int rad = plev / 10 + 2;
\r
248 if (info) return info_damage(0, 0, dam / 2);
\r
252 project(0, rad, p_ptr->y, p_ptr->x, dam, GF_POIS, PROJECT_KILL | PROJECT_ITEM, -1);
\r
258 if (name) return _("
\83\82\83\93\83X
\83^
\81[
\8fÁ
\96Å", "Genocide One");
\r
259 if (desc) return _("
\83\82\83\93\83X
\83^
\81[1
\91Ì
\82ð
\8fÁ
\82µ
\8b\8e\82é
\81B
\8co
\8c±
\92l
\82â
\83A
\83C
\83e
\83\80\82Í
\8eè
\82É
\93ü
\82ç
\82È
\82¢
\81B
\92ï
\8dR
\82³
\82ê
\82é
\82Æ
\96³
\8cø
\81B", "Attempts to vanish a monster.");
\r
262 int power = plev + 50;
\r
264 if (info) return info_power(power);
\r
268 if (!get_aim_dir(&dir)) return NULL;
\r
270 fire_ball_hide(GF_GENOCIDE, dir, power, 0);
\r
276 if (name) return _("
\93Å
\82Ì
\90n", "Poison Branding");
\r
277 if (desc) return _("
\95\90\8aí
\82É
\93Å
\82Ì
\91®
\90«
\82ð
\82Â
\82¯
\82é
\81B", "Makes current weapon poison branded.");
\r
288 if (name) return _("
\8bz
\8c\8c\82Ì
\96î", "Vampiric Bolt");
\r
289 if (desc) return _("
\83{
\83\8b\83g
\82É
\82æ
\82è
\83\82\83\93\83X
\83^
\81[1
\91Ì
\82©
\82ç
\90¶
\96½
\97Í
\82ð
\8bz
\82¢
\82Æ
\82é
\81B
\8bz
\82¢
\82Æ
\82Á
\82½
\90¶
\96½
\97Í
\82É
\82æ
\82Á
\82Ä
\96\9e\95 \93x
\82ª
\8fã
\82ª
\82é
\81B",
\r
290 "Absorbs some HP from a monster and gives them to you by bolt. You will also gain nutritional sustenance from this.");
\r
294 int sides = plev * 2;
\r
295 int base = plev * 2;
\r
297 if (info) return info_damage(dice, sides, base);
\r
301 HIT_POINT dam = base + damroll(dice, sides);
\r
303 if (!get_aim_dir(&dir)) return NULL;
\r
305 if (hypodynamic_bolt(dir, dam))
\r
307 chg_virtue(V_SACRIFICE, -1);
\r
308 chg_virtue(V_VITALITY, -1);
\r
313 * Gain nutritional sustenance:
\r
316 * A Food ration gives 5000
\r
317 * food points (by contrast)
\r
318 * Don't ever get more than
\r
319 * "Full" this way But if we
\r
320 * ARE Gorged, it won't cure
\r
323 dam = p_ptr->food + MIN(5000, 100 * dam);
\r
325 /* Not gorged already */
\r
326 if (p_ptr->food < PY_FOOD_MAX)
\r
327 set_food(dam >= PY_FOOD_MAX ? PY_FOOD_MAX - 1 : dam);
\r
334 if (name) return _("
\94½
\8d°
\82Ì
\8fp", "Animate dead");
\r
335 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
340 animate_dead(0, p_ptr->y, p_ptr->x);
\r
346 if (name) return _("
\96\95\8eE", "Genocide");
\r
347 if (desc) return _("
\8ew
\92è
\82µ
\82½
\95¶
\8e\9a\82Ì
\83\82\83\93\83X
\83^
\81[
\82ð
\8c»
\8dÝ
\82Ì
\8aK
\82©
\82ç
\8fÁ
\82µ
\8b\8e\82é
\81B
\92ï
\8dR
\82³
\82ê
\82é
\82Æ
\96³
\8cø
\81B",
\r
348 "Eliminates an entire class of monster, exhausting you. Powerful or unique monsters may resist.");
\r
351 int power = plev + 50;
\r
353 if (info) return info_power(power);
\r
357 symbol_genocide(power, TRUE);
\r
363 if (name) return _("
\8b¶
\90í
\8em
\89»", "Berserk");
\r
364 if (desc) return _("
\8b¶
\90í
\8em
\89»
\82µ
\81A
\8b°
\95|
\82ð
\8f\9c\8b\8e\82·
\82é
\81B", "Gives bonus to hit and HP, immunity to fear for a while. But decreases AC.");
\r
369 if (info) return info_duration(base, base);
\r
373 (void)berserk(base + randint1(base));
\r
379 if (name) return _("
\88«
\97ì
\8f¢
\8a«", "Invoke Spirits");
\r
380 if (desc) return _("
\83\89\83\93\83_
\83\80\82Å
\97l
\81X
\82È
\8cø
\89Ê
\82ª
\8bN
\82±
\82é
\81B", "Causes random effects.");
\r
383 if (info) return s_random;
\r
387 if (!get_aim_dir(&dir)) return NULL;
\r
389 cast_invoke_spirits(dir);
\r
395 if (name) return _("
\88Ã
\8d\95\82Ì
\96î", "Dark Bolt");
\r
396 if (desc) return _("
\88Ã
\8d\95\82Ì
\83{
\83\8b\83g
\82à
\82µ
\82
\82Í
\83r
\81[
\83\80\82ð
\95ú
\82Â
\81B", "Fires a bolt or beam of darkness.");
\r
399 int dice = 4 + (plev - 5) / 4;
\r
402 if (info) return info_damage(dice, sides, 0);
\r
406 if (!get_aim_dir(&dir)) return NULL;
\r
408 fire_bolt_or_beam(beam_chance(), GF_DARK, dir, damroll(dice, sides));
\r
414 if (name) return _("
\8b¶
\97\90\90í
\8em", "Battle Frenzy");
\r
415 if (desc) return _("
\8b¶
\90í
\8em
\89»
\82µ
\81A
\8b°
\95|
\82ð
\8f\9c\8b\8e\82µ
\81A
\89Á
\91¬
\82·
\82é
\81B",
\r
416 "Gives another bonus to hit and HP, immunity to fear for a while. Hastes you. But decreases AC.");
\r
420 int sp_base = plev / 2;
\r
421 int sp_sides = 20 + plev / 2;
\r
423 if (info) return info_duration(b_base, b_base);
\r
427 (void)berserk(b_base + randint1(b_base));
\r
428 set_fast(randint1(sp_sides) + sp_base, FALSE);
\r
434 if (name) return _("
\8bz
\8c\8c\82Ì
\90n", "Vampiric Branding");
\r
435 if (desc) return _("
\95\90\8aí
\82É
\8bz
\8c\8c\82Ì
\91®
\90«
\82ð
\82Â
\82¯
\82é
\81B", "Makes current weapon Vampiric.");
\r
446 if (name) return _("
\8bz
\8c\8c\82Ì
\98A
\96î", "Vampiric Bolts");
\r
447 if (desc) return _("3
\98A
\8eË
\82Ì
\83{
\83\8b\83g
\82É
\82æ
\82è
\83\82\83\93\83X
\83^
\81[1
\91Ì
\82©
\82ç
\90¶
\96½
\97Í
\82ð
\8bz
\82¢
\82Æ
\82é
\81B
\8bz
\82¢
\82Æ
\82Á
\82½
\90¶
\96½
\97Í
\82É
\82æ
\82Á
\82Ä
\91Ì
\97Í
\82ª
\89ñ
\95\9c\82·
\82é
\81B",
\r
448 "Fires 3 bolts. Each of the bolts absorbs some HP from a monster and gives them to you.");
\r
450 HIT_POINT dam = 100;
\r
452 if (info) return format("%s3*%d", s_dam, dam);
\r
458 if (!get_aim_dir(&dir)) return NULL;
\r
460 chg_virtue(V_SACRIFICE, -1);
\r
461 chg_virtue(V_VITALITY, -1);
\r
463 for (i = 0; i < 3; i++)
\r
465 if (hypodynamic_bolt(dir, dam))
\r
473 if (name) return _("
\8e\80\82Ì
\8c¾
\8d°", "Nether Wave");
\r
474 if (desc) return _("
\8e\8b\8aE
\93à
\82Ì
\90¶
\96½
\82Ì
\82 \82é
\83\82\83\93\83X
\83^
\81[
\82É
\83_
\83\81\81[
\83W
\82ð
\97^
\82¦
\82é
\81B", "Damages all living monsters in sight.");
\r
477 int sides = plev * 3;
\r
479 if (info) return info_damage(1, sides, 0);
\r
483 dispel_living(randint1(sides));
\r
489 if (name) return _("
\88Ã
\8d\95\82Ì
\97\92", "Darkness Storm");
\r
490 if (desc) return _("
\8b\90\91å
\82È
\88Ã
\8d\95\82Ì
\8b\85\82ð
\95ú
\82Â
\81B", "Fires a huge ball of darkness.");
\r
493 HIT_POINT dam = 100 + plev * 2;
\r
496 if (info) return info_damage(0, 0, dam);
\r
500 if (!get_aim_dir(&dir)) return NULL;
\r
502 fire_ball(GF_DARK, dir, dam, rad);
\r
508 if (name) return _("
\8e\80\82Ì
\8cõ
\90ü", "Death Ray");
\r
509 if (desc) return _("
\8e\80\82Ì
\8cõ
\90ü
\82ð
\95ú
\82Â
\81B", "Fires a beam of death.");
\r
514 if (!get_aim_dir(&dir)) return NULL;
\r
516 death_ray(dir, plev);
\r
522 if (name) return _("
\8e\80\8eÒ
\8f¢
\8a«", "Raise the Dead");
\r
523 if (desc) return _("1
\91Ì
\82Ì
\83A
\83\93\83f
\83b
\83h
\82ð
\8f¢
\8a«
\82·
\82é
\81B", "Summons an undead monster.");
\r
529 bool pet = one_in_(3);
\r
532 type = (plev > 47 ? SUMMON_HI_UNDEAD : SUMMON_UNDEAD);
\r
534 if (!pet || (pet && (plev > 24) && one_in_(3)))
\r
535 flg |= PM_ALLOW_GROUP;
\r
537 if (pet) flg |= PM_FORCE_PET;
\r
538 else flg |= (PM_ALLOW_UNIQUE | PM_NO_PET);
\r
540 if (summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, (plev * 3) / 2, type, flg))
\r
542 msg_print(_("
\97â
\82½
\82¢
\95\97\82ª
\82 \82È
\82½
\82Ì
\8eü
\82è
\82É
\90\81\82«
\8en
\82ß
\82½
\81B
\82»
\82ê
\82Í
\95\85\94s
\8fL
\82ð
\89^
\82ñ
\82Å
\82¢
\82é...",
\r
543 "Cold winds begin to blow around you, carrying with them the stench of decay..."));
\r
548 msg_print(_("
\8cÃ
\82¦
\82Ì
\8e\80\82¹
\82é
\8eÒ
\8b¤
\82ª
\82 \82È
\82½
\82É
\8ed
\82¦
\82é
\82½
\82ß
\93y
\82©
\82çáS
\82Á
\82½
\81I",
\r
549 "Ancient, long-dead forms arise from the ground to serve you!"));
\r
553 msg_print(_("
\8e\80\8eÒ
\82ªáS
\82Á
\82½
\81B
\96°
\82è
\82ð
\96W
\82°
\82é
\82 \82È
\82½
\82ð
\94±
\82·
\82é
\82½
\82ß
\82É
\81I",
\r
554 "'The dead arise... to punish you for disturbing them!'"));
\r
557 chg_virtue(V_UNLIFE, 1);
\r
564 if (name) return _("
\8e\80\8eÒ
\82Ì
\94é
\93`", "Esoteria");
\r
565 if (desc) return _("
\83A
\83C
\83e
\83\80\82ð1
\82Â
\8e¯
\95Ê
\82·
\82é
\81B
\83\8c\83x
\83\8b\82ª
\8d\82\82¢
\82Æ
\83A
\83C
\83e
\83\80\82Ì
\94\
\97Í
\82ð
\8a®
\91S
\82É
\92m
\82é
\82±
\82Æ
\82ª
\82Å
\82«
\82é
\81B",
\r
566 "Identifies an item. Or *identifies* an item at higher level.");
\r
571 if (randint1(50) > plev)
\r
573 if (!ident_spell(FALSE)) return NULL;
\r
577 if (!identify_fully(FALSE)) return NULL;
\r
584 if (name) return _("
\8bz
\8c\8c\8bS
\95Ï
\89»", "Polymorph Vampire");
\r
585 if (desc) return _("
\88ê
\92è
\8e\9e\8aÔ
\81A
\8bz
\8c\8c\8bS
\82É
\95Ï
\89»
\82·
\82é
\81B
\95Ï
\89»
\82µ
\82Ä
\82¢
\82é
\8aÔ
\82Í
\96{
\97\88\82Ì
\8eí
\91°
\82Ì
\94\
\97Í
\82ð
\8e¸
\82¢
\81A
\91ã
\82í
\82è
\82É
\8bz
\8c\8c\8bS
\82Æ
\82µ
\82Ä
\82Ì
\94\
\97Í
\82ð
\93¾
\82é
\81B",
\r
586 "Mimic a vampire for a while. Loses abilities of original race and gets abilities as a vampire.");
\r
589 int base = 10 + plev / 2;
\r
591 if (info) return info_duration(base, base);
\r
595 set_mimic(base + randint1(base), MIMIC_VAMPIRE, FALSE);
\r
601 if (name) return _("
\8co
\8c±
\92l
\95\9c\8a\88", "Restore Life");
\r
602 if (desc) return _("
\8e¸
\82Á
\82½
\8co
\8c±
\92l
\82ð
\89ñ
\95\9c\82·
\82é
\81B", "Restore lost experience.");
\r
613 if (name) return _("
\8eü
\95Ó
\96\95\8eE", "Mass Genocide");
\r
614 if (desc) return _("
\8e©
\95ª
\82Ì
\8eü
\88Í
\82É
\82¢
\82é
\83\82\83\93\83X
\83^
\81[
\82ð
\8c»
\8dÝ
\82Ì
\8aK
\82©
\82ç
\8fÁ
\82µ
\8b\8e\82é
\81B
\92ï
\8dR
\82³
\82ê
\82é
\82Æ
\96³
\8cø
\81B",
\r
615 "Eliminates all nearby monsters, exhausting you. Powerful or unique monsters may be able to resist.");
\r
618 int power = plev + 50;
\r
620 if (info) return info_power(power);
\r
624 mass_genocide(power, TRUE);
\r
630 if (name) return _("
\92n
\8d\96\82Ì
\8d\85\89Î", "Hellfire");
\r
631 if (desc) return _("
\8e×
\88«
\82È
\97Í
\82ð
\8e\9d\82Â
\95ó
\8eì
\82ð
\95ú
\82Â
\81B
\91P
\97Ç
\82È
\83\82\83\93\83X
\83^
\81[
\82É
\82Í
\91å
\82«
\82È
\83_
\83\81\81[
\83W
\82ð
\97^
\82¦
\82é
\81B",
\r
632 "Fires a powerful ball of evil power. Hurts good monsters greatly.");
\r
635 HIT_POINT dam = 666;
\r
638 if (info) return info_damage(0, 0, dam);
\r
642 if (!get_aim_dir(&dir)) return NULL;
\r
644 fire_ball(GF_HELL_FIRE, dir, dam, rad);
\r
645 take_hit(DAMAGE_USELIFE, 20 + randint1(30), _("
\92n
\8d\96\82Ì
\8d\85\89Î
\82Ì
\8eô
\95¶
\82ð
\8f¥
\82¦
\82½
\94æ
\98J", "the strain of casting Hellfire"), -1);
\r
651 if (name) return _("
\97H
\91Ì
\89»", "Wraithform");
\r
652 if (desc) return _("
\88ê
\92è
\8e\9e\8aÔ
\81A
\95Ç
\82ð
\92Ê
\82è
\94²
\82¯
\82é
\82±
\82Æ
\82ª
\82Å
\82«
\8eó
\82¯
\82é
\83_
\83\81\81[
\83W
\82ª
\8cy
\8c¸
\82³
\82ê
\82é
\97H
\91Ì
\82Ì
\8fó
\91Ô
\82É
\95Ï
\90g
\82·
\82é
\81B",
\r
653 "Becomes wraith form which gives ability to pass walls and makes all damages half.");
\r
656 int base = plev / 2;
\r
658 if (info) return info_duration(base, base);
\r
662 set_wraith_form(randint1(base) + base, FALSE);
\r