2 #include "cmd-spell.h"
\r
5 * @brief
\90¶
\96½
\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
10 cptr do_life_spell(SPELL_IDX spell, BIT_FLAGS mode)
\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
18 int plev = p_ptr->lev;
\r
23 if (name) return _("
\8cy
\8f\9d\82Ì
\8e¡
\96ü", "Cure Light Wounds");
\r
24 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
28 if (info) return info_heal(dice, sides, 0);
\r
29 if (cast) (void)cure_light_wounds(dice, sides);
\r
34 if (name) return _("
\8fj
\95\9f", "Bless");
\r
35 if (desc) return _("
\88ê
\92è
\8e\9e\8aÔ
\81A
\96½
\92\86\97¦
\82ÆAC
\82É
\83{
\81[
\83i
\83X
\82ð
\93¾
\82é
\81B", "Gives bonus to hit and AC for a few turns.");
\r
39 if (info) return info_duration(base, base);
\r
43 set_blessed(randint1(base) + base, FALSE);
\r
49 if (name) return _("
\8cy
\8f\9d", "Cause Light Wounds");
\r
50 if (desc) return _("1
\91Ì
\82Ì
\83\82\83\93\83X
\83^
\81[
\82É
\8f¬
\83_
\83\81\81[
\83W
\82ð
\97^
\82¦
\82é
\81B
\92ï
\8dR
\82³
\82ê
\82é
\82Æ
\96³
\8cø
\81B", "Wounds a monster a little unless resisted.");
\r
52 int dice = 3 + (plev - 1) / 5;
\r
55 if (info) return info_damage(dice, sides, 0);
\r
59 if (!get_aim_dir(&dir)) return NULL;
\r
60 fire_ball_hide(GF_WOUNDS, dir, damroll(dice, sides), 0);
\r
66 if (name) return _("
\8cõ
\82Ì
\8f¢
\8a«", "Call Light");
\r
67 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
70 int sides = plev / 2;
\r
71 int rad = plev / 10 + 1;
\r
73 if (info) return info_damage(dice, sides, 0);
\r
77 lite_area(damroll(dice, sides), rad);
\r
83 if (name) return _("ã© &
\89B
\82µ
\94à
\8a´
\92m", "Detect Doors & Traps");
\r
84 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
86 int rad = DETECT_RAD_DEFAULT;
\r
88 if (info) return info_radius(rad);
\r
92 detect_traps(rad, TRUE);
\r
100 if (name) return _("
\8fd
\8f\9d\82Ì
\8e¡
\96ü", "Cure Medium Wounds");
\r
101 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
106 if (info) return info_heal(dice, sides, 0);
\r
107 if (cast) (void)cure_serious_wounds(dice, sides);
\r
112 if (name) return _("
\89ð
\93Å", "Cure Poison");
\r
113 if (desc) return _("
\91Ì
\93à
\82Ì
\93Å
\82ð
\8eæ
\82è
\8f\9c\82
\81B", "Cure poison status.");
\r
123 if (name) return _("
\8bó
\95 \8f[
\91«", "Satisfy Hunger");
\r
124 if (desc) return _("
\96\9e\95 \82É
\82·
\82é
\81B", "Satisfies hunger.");
\r
128 set_food(PY_FOOD_MAX - 1);
\r
134 if (name) return _("
\89ð
\8eô", "Remove Curse");
\r
135 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
139 if (remove_curse())
\r
141 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
148 if (name) return _("
\8fd
\8f\9d", "Cause Medium Wounds");
\r
149 if (desc) return _("1
\91Ì
\82Ì
\83\82\83\93\83X
\83^
\81[
\82É
\92\86\83_
\83\81\81[
\83W
\82ð
\97^
\82¦
\82é
\81B
\92ï
\8dR
\82³
\82ê
\82é
\82Æ
\96³
\8cø
\81B", "Wounds a monster unless resisted.");
\r
151 int sides = 8 + (plev - 5) / 4;
\r
154 if (info) return info_damage(dice, sides, 0);
\r
158 if (!get_aim_dir(&dir)) return NULL;
\r
159 fire_ball_hide(GF_WOUNDS, dir, damroll(dice, sides), 0);
\r
165 if (name) return _("
\92v
\96½
\8f\9d\82Ì
\8e¡
\96ü", "Cure Critical Wounds");
\r
166 if (desc) return _("
\91Ì
\97Í
\82ð
\91å
\95\9d\82É
\89ñ
\95\9c\82³
\82¹
\81A
\95\89\8f\9d\82Æ
\9eN
\9eO
\8fó
\91Ô
\82à
\91S
\89õ
\82·
\82é
\81B", "Heals cut, stun and HP greatly.");
\r
171 if (info) return info_heal(dice, sides, 0);
\r
172 if (cast) (void)cure_serious_wounds(dice, sides);
\r
177 if (name) return _("
\91Ï
\94M
\91Ï
\8a¦", "Resist Heat and Cold");
\r
178 if (desc) return _("
\88ê
\92è
\8e\9e\8aÔ
\81A
\89Î
\89\8a\82Æ
\97â
\8bC
\82É
\91Î
\82·
\82é
\91Ï
\90«
\82ð
\93¾
\82é
\81B
\91\95\94õ
\82É
\82æ
\82é
\91Ï
\90«
\82É
\97Ý
\90Ï
\82·
\82é
\81B",
\r
179 "Gives resistance to fire and cold. These resistances can be added to which from equipment for more powerful resistances.");
\r
184 if (info) return info_duration(base, base);
\r
188 set_oppose_cold(randint1(base) + base, FALSE);
\r
189 set_oppose_fire(randint1(base) + base, FALSE);
\r
195 if (name) return _("
\8eü
\95Ó
\8a´
\92m", "Sense Surroundings");
\r
196 if (desc) return _("
\8eü
\95Ó
\82Ì
\92n
\8c`
\82ð
\8a´
\92m
\82·
\82é
\81B", "Maps nearby area.");
\r
199 int rad = DETECT_RAD_MAP;
\r
201 if (info) return info_radius(rad);
\r
211 if (name) return _("
\83p
\83j
\83b
\83N
\81E
\83A
\83\93\83f
\83b
\83h", "Turn Undead");
\r
212 if (desc) return _("
\8e\8b\8aE
\93à
\82Ì
\83A
\83\93\83f
\83b
\83h
\82ð
\8b°
\95|
\82³
\82¹
\82é
\81B
\92ï
\8dR
\82³
\82ê
\82é
\82Æ
\96³
\8cø
\81B", "Attempts to scare undead monsters in sight.");
\r
223 if (name) return _("
\91Ì
\97Í
\89ñ
\95\9c", "Healing");
\r
224 if (desc) return _("
\8bÉ
\82ß
\82Ä
\8b
\97Í
\82È
\89ñ
\95\9c\8eô
\95¶
\82Å
\81A
\95\89\8f\9d\82Æ
\9eN
\9eO
\8fó
\91Ô
\82à
\91S
\89õ
\82·
\82é
\81B", "Much powerful healing magic, and heals cut and stun completely.");
\r
229 if (info) return info_heal(0, 0, heal);
\r
241 if (name) return _("
\8c\8b\8aE
\82Ì
\96ä
\8fÍ", "Glyph of Warding");
\r
242 if (desc) return _("
\8e©
\95ª
\82Ì
\82¢
\82é
\8f°
\82Ì
\8fã
\82É
\81A
\83\82\83\93\83X
\83^
\81[
\82ª
\92Ê
\82è
\94²
\82¯
\82½
\82è
\8f¢
\8a«
\82³
\82ê
\82½
\82è
\82·
\82é
\82±
\82Æ
\82ª
\82Å
\82«
\82È
\82
\82È
\82é
\83\8b\81[
\83\93\82ð
\95`
\82
\81B",
\r
243 "Sets a glyph on the floor beneath you. Monsters cannot attack you if you are on a glyph, but can try to break glyph.");
\r
254 if (name) return _("*
\89ð
\8eô*", "Dispel Curse");
\r
255 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
260 if (remove_all_curse())
\r
262 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
269 if (name) return _("
\8aÓ
\8e¯", "Perception");
\r
270 if (desc) return _("
\83A
\83C
\83e
\83\80\82ð
\8e¯
\95Ê
\82·
\82é
\81B", "Identifies an item.");
\r
275 if (!ident_spell(FALSE)) return NULL;
\r
281 if (name) return _("
\83A
\83\93\83f
\83b
\83h
\91Þ
\8eU", "Dispel Undead");
\r
282 if (desc) return _("
\8e\8b\8aE
\93à
\82Ì
\91S
\82Ä
\82Ì
\83A
\83\93\83f
\83b
\83h
\82É
\83_
\83\81\81[
\83W
\82ð
\97^
\82¦
\82é
\81B", "Damages all undead monsters in sight.");
\r
286 int sides = plev * 5;
\r
288 if (info) return info_damage(dice, sides, 0);
\r
292 dispel_undead(damroll(dice, sides));
\r
298 if (name) return _("
\93â
\82Ì
\8d\8f", "Day of the Dove");
\r
299 if (desc) return _("
\8e\8b\8aE
\93à
\82Ì
\91S
\82Ä
\82Ì
\83\82\83\93\83X
\83^
\81[
\82ð
\96£
\97¹
\82·
\82é
\81B
\92ï
\8dR
\82³
\82ê
\82é
\82Æ
\96³
\8cø
\81B", "Attempts to charm all monsters in sight.");
\r
302 int power = plev * 2;
\r
304 if (info) return info_power(power);
\r
308 charm_monsters(power);
\r
314 if (name) return _("
\92v
\96½
\8f\9d", "Cause Critical Wounds");
\r
315 if (desc) return _("1
\91Ì
\82Ì
\83\82\83\93\83X
\83^
\81[
\82É
\91å
\83_
\83\81\81[
\83W
\82ð
\97^
\82¦
\82é
\81B
\92ï
\8dR
\82³
\82ê
\82é
\82Æ
\96³
\8cø
\81B", "Wounds a monster critically unless resisted.");
\r
318 int dice = 5 + (plev - 5) / 3;
\r
321 if (info) return info_damage(dice, sides, 0);
\r
325 if (!get_aim_dir(&dir)) return NULL;
\r
326 fire_ball_hide(GF_WOUNDS, dir, damroll(dice, sides), 0);
\r
332 if (name) return _("
\8bA
\8aÒ
\82Ì
\8fÙ", "Word of Recall");
\r
333 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", "Recalls player from dungeon to town, or from town to the deepest level of dungeon.");
\r
339 if (info) return info_delay(base, sides);
\r
343 if (!word_of_recall()) return NULL;
\r
349 if (name) return _("
\90^
\8eÀ
\82Ì
\8dÕ
\92d", "Alter Reality");
\r
350 if (desc) return _("
\8c»
\8dÝ
\82Ì
\8aK
\82ð
\8dÄ
\8d\
\90¬
\82·
\82é
\81B", "Recreates current dungeon level.");
\r
356 if (info) return info_delay(base, sides);
\r
366 if (name) return _("
\90^
\81E
\8c\8b\8aE", "Warding True");
\r
367 if (desc) return _("
\8e©
\95ª
\82Ì
\82¢
\82é
\8f°
\82Æ
\8eü
\88Í8
\83}
\83X
\82Ì
\8f°
\82Ì
\8fã
\82É
\81A
\83\82\83\93\83X
\83^
\81[
\82ª
\92Ê
\82è
\94²
\82¯
\82½
\82è
\8f¢
\8a«
\82³
\82ê
\82½
\82è
\82·
\82é
\82±
\82Æ
\82ª
\82Å
\82«
\82È
\82
\82È
\82é
\83\8b\81[
\83\93\82ð
\95`
\82
\81B", "Creates glyphs in all adjacent squares and under you.");
\r
372 if (info) return info_radius(rad);
\r
383 if (name) return _("
\95s
\96Ñ
\89»", "Sterilization");
\r
384 if (desc) return _("
\82±
\82Ì
\8aK
\82Ì
\91\9d\90B
\82·
\82é
\83\82\83\93\83X
\83^
\81[
\82ª
\91\9d\90B
\82Å
\82«
\82È
\82
\82È
\82é
\81B", "Prevents any breeders on current level from breeding.");
\r
389 num_repro += MAX_REPRO;
\r
395 if (name) return _("
\91S
\8a´
\92m", "Detection");
\r
396 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", "Detects all monsters, traps, doors, stairs, treasures and items in your vicinity.");
\r
399 int rad = DETECT_RAD_DEFAULT;
\r
401 if (info) return info_radius(rad);
\r
411 if (name) return _("
\83A
\83\93\83f
\83b
\83h
\8fÁ
\96Å", "Annihilate Undead");
\r
412 if (desc) return _("
\8e©
\95ª
\82Ì
\8eü
\88Í
\82É
\82¢
\82é
\83A
\83\93\83f
\83b
\83h
\82ð
\8c»
\8dÝ
\82Ì
\8aK
\82©
\82ç
\8fÁ
\82µ
\8b\8e\82é
\81B
\92ï
\8dR
\82³
\82ê
\82é
\82Æ
\96³
\8cø
\81B",
\r
413 "Eliminates all nearby undead monsters, exhausting you. Powerful or unique monsters may be able to resist.");
\r
416 int power = plev + 50;
\r
418 if (info) return info_power(power);
\r
422 mass_genocide_undead(power, TRUE);
\r
428 if (name) return _("
\90ç
\97¢
\8aá", "Clairvoyance");
\r
429 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", "Maps and lights whole dungeon level. Knows all objects location. And gives telepathy for a while.");
\r
440 if (name) return _("
\91S
\95\9c\8a\88", "Restoration");
\r
441 if (desc) return _("
\82·
\82×
\82Ä
\82Ì
\83X
\83e
\81[
\83^
\83X
\82Æ
\8co
\8c±
\92l
\82ð
\89ñ
\95\9c\82·
\82é
\81B", "Restores all stats and experience.");
\r
446 do_res_stat(A_STR);
\r
447 do_res_stat(A_INT);
\r
448 do_res_stat(A_WIS);
\r
449 do_res_stat(A_DEX);
\r
450 do_res_stat(A_CON);
\r
451 do_res_stat(A_CHR);
\r
458 if (name) return _("*
\91Ì
\97Í
\89ñ
\95\9c*", "Healing True");
\r
459 if (desc) return _("
\8dÅ
\8b
\82Ì
\8e¡
\96ü
\82Ì
\96\82\96@
\82Å
\81A
\95\89\8f\9d\82Æ
\9eN
\9eO
\8fó
\91Ô
\82à
\91S
\89õ
\82·
\82é
\81B", "The greatest healing magic. Heals all HP, cut and stun.");
\r
464 if (info) return info_heal(0, 0, heal);
\r
476 if (name) return _("
\90¹
\82È
\82é
\83r
\83W
\83\87\83\93", "Holy Vision");
\r
477 if (desc) return _("
\83A
\83C
\83e
\83\80\82Ì
\8e\9d\82Â
\94\
\97Í
\82ð
\8a®
\91S
\82É
\92m
\82é
\81B", "*Identifies* an item.");
\r
482 if (!identify_fully(FALSE)) return NULL;
\r
488 if (name) return _("
\8b\86\8bÉ
\82Ì
\91Ï
\90«", "Ultimate Resistance");
\r
489 if (desc) return _("
\88ê
\92è
\8e\9e\8aÔ
\81A
\82 \82ç
\82ä
\82é
\91Ï
\90«
\82ð
\95t
\82¯
\81AAC
\82Æ
\96\82\96@
\96h
\8cä
\94\
\97Í
\82ð
\8fã
\8f¸
\82³
\82¹
\82é
\81B", "Gives ultimate resistance, bonus to AC and speed.");
\r
492 TIME_EFFECT base = (TIME_EFFECT)plev / 2;
\r
494 if (info) return info_duration(base, base);
\r
498 TIME_EFFECT v = randint1(base) + base;
\r
499 set_fast(v, FALSE);
\r
500 set_oppose_acid(v, FALSE);
\r
501 set_oppose_elec(v, FALSE);
\r
502 set_oppose_fire(v, FALSE);
\r
503 set_oppose_cold(v, FALSE);
\r
504 set_oppose_pois(v, FALSE);
\r
505 set_ultimate_res(v, FALSE);
\r