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_critical_wounds(damroll(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
228 if (info) return info_heal(0, 0, heal);
\r
229 if (cast) (void)cure_critical_wounds(heal);
\r
234 if (name) return _("
\8c\8b\8aE
\82Ì
\96ä
\8fÍ", "Glyph of Warding");
\r
235 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
236 "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
247 if (name) return _("*
\89ð
\8eô*", "Dispel Curse");
\r
248 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
253 if (remove_all_curse())
\r
255 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
262 if (name) return _("
\8aÓ
\8e¯", "Perception");
\r
263 if (desc) return _("
\83A
\83C
\83e
\83\80\82ð
\8e¯
\95Ê
\82·
\82é
\81B", "Identifies an item.");
\r
268 if (!ident_spell(FALSE)) return NULL;
\r
274 if (name) return _("
\83A
\83\93\83f
\83b
\83h
\91Þ
\8eU", "Dispel Undead");
\r
275 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
279 int sides = plev * 5;
\r
281 if (info) return info_damage(dice, sides, 0);
\r
285 dispel_undead(damroll(dice, sides));
\r
291 if (name) return _("
\93â
\82Ì
\8d\8f", "Day of the Dove");
\r
292 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
295 int power = plev * 2;
\r
297 if (info) return info_power(power);
\r
301 charm_monsters(power);
\r
307 if (name) return _("
\92v
\96½
\8f\9d", "Cause Critical Wounds");
\r
308 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
311 int dice = 5 + (plev - 5) / 3;
\r
314 if (info) return info_damage(dice, sides, 0);
\r
318 if (!get_aim_dir(&dir)) return NULL;
\r
319 fire_ball_hide(GF_WOUNDS, dir, damroll(dice, sides), 0);
\r
325 if (name) return _("
\8bA
\8aÒ
\82Ì
\8fÙ", "Word of Recall");
\r
326 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
332 if (info) return info_delay(base, sides);
\r
336 if (!word_of_recall()) return NULL;
\r
342 if (name) return _("
\90^
\8eÀ
\82Ì
\8dÕ
\92d", "Alter Reality");
\r
343 if (desc) return _("
\8c»
\8dÝ
\82Ì
\8aK
\82ð
\8dÄ
\8d\
\90¬
\82·
\82é
\81B", "Recreates current dungeon level.");
\r
349 if (info) return info_delay(base, sides);
\r
359 if (name) return _("
\90^
\81E
\8c\8b\8aE", "Warding True");
\r
360 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
365 if (info) return info_radius(rad);
\r
376 if (name) return _("
\95s
\96Ñ
\89»", "Sterilization");
\r
377 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
382 num_repro += MAX_REPRO;
\r
388 if (name) return _("
\91S
\8a´
\92m", "Detection");
\r
389 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
392 int rad = DETECT_RAD_DEFAULT;
\r
394 if (info) return info_radius(rad);
\r
404 if (name) return _("
\83A
\83\93\83f
\83b
\83h
\8fÁ
\96Å", "Annihilate Undead");
\r
405 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
406 "Eliminates all nearby undead monsters, exhausting you. Powerful or unique monsters may be able to resist.");
\r
409 int power = plev + 50;
\r
411 if (info) return info_power(power);
\r
415 mass_genocide_undead(power, TRUE);
\r
421 if (name) return _("
\90ç
\97¢
\8aá", "Clairvoyance");
\r
422 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
433 if (name) return _("
\91S
\95\9c\8a\88", "Restoration");
\r
434 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
439 (void)restore_all_status();
\r
446 if (name) return _("*
\91Ì
\97Í
\89ñ
\95\9c*", "Healing True");
\r
447 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
451 if (info) return info_heal(0, 0, heal);
\r
452 if (cast) (void)cure_critical_wounds(heal);
\r
457 if (name) return _("
\90¹
\82È
\82é
\83r
\83W
\83\87\83\93", "Holy Vision");
\r
458 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
463 if (!identify_fully(FALSE)) return NULL;
\r
469 if (name) return _("
\8b\86\8bÉ
\82Ì
\91Ï
\90«", "Ultimate Resistance");
\r
470 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
473 TIME_EFFECT base = (TIME_EFFECT)plev / 2;
\r
475 if (info) return info_duration(base, base);
\r
479 TIME_EFFECT v = randint1(base) + base;
\r
480 set_fast(v, FALSE);
\r
481 set_oppose_acid(v, FALSE);
\r
482 set_oppose_elec(v, FALSE);
\r
483 set_oppose_fire(v, FALSE);
\r
484 set_oppose_cold(v, FALSE);
\r
485 set_oppose_pois(v, FALSE);
\r
486 set_ultimate_res(v, FALSE);
\r