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 (p_ptr->pclass == CLASS_MAGE ||
\r
205 p_ptr->pclass == CLASS_HIGH_MAGE ||
\r
206 p_ptr->pclass == CLASS_SORCERER)
\r
207 base = plev + plev / 2;
\r
209 base = plev + plev / 4;
\r
212 if (info) return info_damage(dice, sides, base);
\r
216 if (!get_aim_dir(&dir)) return NULL;
\r
218 fire_ball(GF_HYPODYNAMIA, dir, damroll(dice, sides) + base, rad);
\r
224 if (name) return _("
\92n
\8d\96\82Ì
\96î", "Nether Bolt");
\r
225 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
228 int dice = 8 + (plev - 5) / 4;
\r
231 if (info) return info_damage(dice, sides, 0);
\r
235 if (!get_aim_dir(&dir)) return NULL;
\r
237 fire_bolt_or_beam(beam_chance(), GF_NETHER, dir, damroll(dice, sides));
\r
243 if (name) return _("
\8eE
\9dC
\89_", "Cloud kill");
\r
244 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
247 HIT_POINT dam = (30 + plev) * 2;
\r
248 int rad = plev / 10 + 2;
\r
250 if (info) return info_damage(0, 0, dam / 2);
\r
254 project(0, rad, p_ptr->y, p_ptr->x, dam, GF_POIS, PROJECT_KILL | PROJECT_ITEM, -1);
\r
260 if (name) return _("
\83\82\83\93\83X
\83^
\81[
\8fÁ
\96Å", "Genocide One");
\r
261 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
264 int power = plev + 50;
\r
266 if (info) return info_power(power);
\r
270 if (!get_aim_dir(&dir)) return NULL;
\r
272 fire_ball_hide(GF_GENOCIDE, dir, power, 0);
\r
278 if (name) return _("
\93Å
\82Ì
\90n", "Poison Branding");
\r
279 if (desc) return _("
\95\90\8aí
\82É
\93Å
\82Ì
\91®
\90«
\82ð
\82Â
\82¯
\82é
\81B", "Makes current weapon poison branded.");
\r
290 if (name) return _("
\8bz
\8c\8c\82Ì
\96î", "Vampiric Bolt");
\r
291 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
292 "Absorbs some HP from a monster and gives them to you by bolt. You will also gain nutritional sustenance from this.");
\r
296 int sides = plev * 2;
\r
297 int base = plev * 2;
\r
299 if (info) return info_damage(dice, sides, base);
\r
303 HIT_POINT dam = base + damroll(dice, sides);
\r
305 if (!get_aim_dir(&dir)) return NULL;
\r
307 if (hypodynamic_bolt(dir, dam))
\r
309 chg_virtue(V_SACRIFICE, -1);
\r
310 chg_virtue(V_VITALITY, -1);
\r
315 * Gain nutritional sustenance:
\r
318 * A Food ration gives 5000
\r
319 * food points (by contrast)
\r
320 * Don't ever get more than
\r
321 * "Full" this way But if we
\r
322 * ARE Gorged, it won't cure
\r
325 dam = p_ptr->food + MIN(5000, 100 * dam);
\r
327 /* Not gorged already */
\r
328 if (p_ptr->food < PY_FOOD_MAX)
\r
329 set_food(dam >= PY_FOOD_MAX ? PY_FOOD_MAX - 1 : dam);
\r
336 if (name) return _("
\94½
\8d°
\82Ì
\8fp", "Animate dead");
\r
337 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
342 animate_dead(0, p_ptr->y, p_ptr->x);
\r
348 if (name) return _("
\96\95\8eE", "Genocide");
\r
349 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
350 "Eliminates an entire class of monster, exhausting you. Powerful or unique monsters may resist.");
\r
353 int power = plev + 50;
\r
355 if (info) return info_power(power);
\r
359 symbol_genocide(power, TRUE);
\r
365 if (name) return _("
\8b¶
\90í
\8em
\89»", "Berserk");
\r
366 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
371 if (info) return info_duration(base, base);
\r
375 set_shero(randint1(base) + base, FALSE);
\r
383 if (name) return _("
\88«
\97ì
\8f¢
\8a«", "Invoke Spirits");
\r
384 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
387 if (info) return s_random;
\r
391 if (!get_aim_dir(&dir)) return NULL;
\r
393 cast_invoke_spirits(dir);
\r
399 if (name) return _("
\88Ã
\8d\95\82Ì
\96î", "Dark Bolt");
\r
400 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
403 int dice = 4 + (plev - 5) / 4;
\r
406 if (info) return info_damage(dice, sides, 0);
\r
410 if (!get_aim_dir(&dir)) return NULL;
\r
412 fire_bolt_or_beam(beam_chance(), GF_DARK, dir, damroll(dice, sides));
\r
418 if (name) return _("
\8b¶
\97\90\90í
\8em", "Battle Frenzy");
\r
419 if (desc) return _("
\8b¶
\90í
\8em
\89»
\82µ
\81A
\8b°
\95|
\82ð
\8f\9c\8b\8e\82µ
\81A
\89Á
\91¬
\82·
\82é
\81B",
\r
420 "Gives another bonus to hit and HP, immunity to fear for a while. Hastes you. But decreases AC.");
\r
424 int sp_base = plev / 2;
\r
425 int sp_sides = 20 + plev / 2;
\r
427 if (info) return info_duration(b_base, b_base);
\r
431 set_shero(randint1(25) + 25, FALSE);
\r
434 set_fast(randint1(sp_sides) + sp_base, FALSE);
\r
440 if (name) return _("
\8bz
\8c\8c\82Ì
\90n", "Vampiric Branding");
\r
441 if (desc) return _("
\95\90\8aí
\82É
\8bz
\8c\8c\82Ì
\91®
\90«
\82ð
\82Â
\82¯
\82é
\81B", "Makes current weapon Vampiric.");
\r
452 if (name) return _("
\8bz
\8c\8c\82Ì
\98A
\96î", "Vampiric Bolts");
\r
453 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
454 "Fires 3 bolts. Each of the bolts absorbs some HP from a monster and gives them to you.");
\r
456 HIT_POINT dam = 100;
\r
458 if (info) return format("%s3*%d", s_dam, dam);
\r
464 if (!get_aim_dir(&dir)) return NULL;
\r
466 chg_virtue(V_SACRIFICE, -1);
\r
467 chg_virtue(V_VITALITY, -1);
\r
469 for (i = 0; i < 3; i++)
\r
471 if (hypodynamic_bolt(dir, dam))
\r
479 if (name) return _("
\8e\80\82Ì
\8c¾
\8d°", "Nether Wave");
\r
480 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
483 int sides = plev * 3;
\r
485 if (info) return info_damage(1, sides, 0);
\r
489 dispel_living(randint1(sides));
\r
495 if (name) return _("
\88Ã
\8d\95\82Ì
\97\92", "Darkness Storm");
\r
496 if (desc) return _("
\8b\90\91å
\82È
\88Ã
\8d\95\82Ì
\8b\85\82ð
\95ú
\82Â
\81B", "Fires a huge ball of darkness.");
\r
499 HIT_POINT dam = 100 + plev * 2;
\r
502 if (info) return info_damage(0, 0, dam);
\r
506 if (!get_aim_dir(&dir)) return NULL;
\r
508 fire_ball(GF_DARK, dir, dam, rad);
\r
514 if (name) return _("
\8e\80\82Ì
\8cõ
\90ü", "Death Ray");
\r
515 if (desc) return _("
\8e\80\82Ì
\8cõ
\90ü
\82ð
\95ú
\82Â
\81B", "Fires a beam of death.");
\r
520 if (!get_aim_dir(&dir)) return NULL;
\r
522 death_ray(dir, plev);
\r
528 if (name) return _("
\8e\80\8eÒ
\8f¢
\8a«", "Raise the Dead");
\r
529 if (desc) return _("1
\91Ì
\82Ì
\83A
\83\93\83f
\83b
\83h
\82ð
\8f¢
\8a«
\82·
\82é
\81B", "Summons an undead monster.");
\r
535 bool pet = one_in_(3);
\r
538 type = (plev > 47 ? SUMMON_HI_UNDEAD : SUMMON_UNDEAD);
\r
540 if (!pet || (pet && (plev > 24) && one_in_(3)))
\r
541 flg |= PM_ALLOW_GROUP;
\r
543 if (pet) flg |= PM_FORCE_PET;
\r
544 else flg |= (PM_ALLOW_UNIQUE | PM_NO_PET);
\r
546 if (summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, (plev * 3) / 2, type, flg))
\r
548 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
549 "Cold winds begin to blow around you, carrying with them the stench of decay..."));
\r
554 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
555 "Ancient, long-dead forms arise from the ground to serve you!"));
\r
559 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
560 "'The dead arise... to punish you for disturbing them!'"));
\r
563 chg_virtue(V_UNLIFE, 1);
\r
570 if (name) return _("
\8e\80\8eÒ
\82Ì
\94é
\93`", "Esoteria");
\r
571 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
572 "Identifies an item. Or *identifies* an item at higher level.");
\r
577 if (randint1(50) > plev)
\r
579 if (!ident_spell(FALSE)) return NULL;
\r
583 if (!identify_fully(FALSE)) return NULL;
\r
590 if (name) return _("
\8bz
\8c\8c\8bS
\95Ï
\89»", "Polymorph Vampire");
\r
591 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
592 "Mimic a vampire for a while. Loses abilities of original race and gets abilities as a vampire.");
\r
595 int base = 10 + plev / 2;
\r
597 if (info) return info_duration(base, base);
\r
601 set_mimic(base + randint1(base), MIMIC_VAMPIRE, FALSE);
\r
607 if (name) return _("
\8co
\8c±
\92l
\95\9c\8a\88", "Restore Life");
\r
608 if (desc) return _("
\8e¸
\82Á
\82½
\8co
\8c±
\92l
\82ð
\89ñ
\95\9c\82·
\82é
\81B", "Restore lost experience.");
\r
619 if (name) return _("
\8eü
\95Ó
\96\95\8eE", "Mass Genocide");
\r
620 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
621 "Eliminates all nearby monsters, exhausting you. Powerful or unique monsters may be able to resist.");
\r
624 int power = plev + 50;
\r
626 if (info) return info_power(power);
\r
630 mass_genocide(power, TRUE);
\r
636 if (name) return _("
\92n
\8d\96\82Ì
\8d\85\89Î", "Hellfire");
\r
637 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
638 "Fires a powerful ball of evil power. Hurts good monsters greatly.");
\r
641 HIT_POINT dam = 666;
\r
644 if (info) return info_damage(0, 0, dam);
\r
648 if (!get_aim_dir(&dir)) return NULL;
\r
650 fire_ball(GF_HELL_FIRE, dir, dam, rad);
\r
651 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
657 if (name) return _("
\97H
\91Ì
\89»", "Wraithform");
\r
658 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
659 "Becomes wraith form which gives ability to pass walls and makes all damages half.");
\r
662 int base = plev / 2;
\r
664 if (info) return info_duration(base, base);
\r
668 set_wraith_form(randint1(base) + base, FALSE);
\r