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
29 if (info) return info_heal(dice, sides, 0);
\r
33 hp_player(damroll(dice, sides));
\r
34 set_cut(p_ptr->cut - 10);
\r
40 if (name) return _("
\8fj
\95\9f", "Bless");
\r
41 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
45 if (info) return info_duration(base, base);
\r
49 set_blessed(randint1(base) + base, FALSE);
\r
55 if (name) return _("
\8cy
\8f\9d", "Cause Light Wounds");
\r
56 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
58 int dice = 3 + (plev - 1) / 5;
\r
61 if (info) return info_damage(dice, sides, 0);
\r
65 if (!get_aim_dir(&dir)) return NULL;
\r
66 fire_ball_hide(GF_WOUNDS, dir, damroll(dice, sides), 0);
\r
72 if (name) return _("
\8cõ
\82Ì
\8f¢
\8a«", "Call Light");
\r
73 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
76 int sides = plev / 2;
\r
77 int rad = plev / 10 + 1;
\r
79 if (info) return info_damage(dice, sides, 0);
\r
83 lite_area(damroll(dice, sides), rad);
\r
89 if (name) return _("ã© &
\89B
\82µ
\94à
\8a´
\92m", "Detect Doors & Traps");
\r
90 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
92 int rad = DETECT_RAD_DEFAULT;
\r
94 if (info) return info_radius(rad);
\r
98 detect_traps(rad, TRUE);
\r
100 detect_stairs(rad);
\r
106 if (name) return _("
\8fd
\8f\9d\82Ì
\8e¡
\96ü", "Cure Medium Wounds");
\r
107 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
112 if (info) return info_heal(dice, sides, 0);
\r
116 hp_player(damroll(dice, sides));
\r
117 set_cut((p_ptr->cut / 2) - 20);
\r
123 if (name) return _("
\89ð
\93Å", "Cure Poison");
\r
124 if (desc) return _("
\91Ì
\93à
\82Ì
\93Å
\82ð
\8eæ
\82è
\8f\9c\82
\81B", "Cure poison status.");
\r
134 if (name) return _("
\8bó
\95 \8f[
\91«", "Satisfy Hunger");
\r
135 if (desc) return _("
\96\9e\95 \82É
\82·
\82é
\81B", "Satisfies hunger.");
\r
139 set_food(PY_FOOD_MAX - 1);
\r
145 if (name) return _("
\89ð
\8eô", "Remove Curse");
\r
146 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
150 if (remove_curse())
\r
152 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
159 if (name) return _("
\8fd
\8f\9d", "Cause Medium Wounds");
\r
160 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
162 int sides = 8 + (plev - 5) / 4;
\r
165 if (info) return info_damage(dice, sides, 0);
\r
169 if (!get_aim_dir(&dir)) return NULL;
\r
170 fire_ball_hide(GF_WOUNDS, dir, damroll(dice, sides), 0);
\r
176 if (name) return _("
\92v
\96½
\8f\9d\82Ì
\8e¡
\96ü", "Cure Critical Wounds");
\r
177 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
182 if (info) return info_heal(dice, sides, 0);
\r
186 hp_player(damroll(dice, sides));
\r
194 if (name) return _("
\91Ï
\94M
\91Ï
\8a¦", "Resist Heat and Cold");
\r
195 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
196 "Gives resistance to fire and cold. These resistances can be added to which from equipment for more powerful resistances.");
\r
201 if (info) return info_duration(base, base);
\r
205 set_oppose_cold(randint1(base) + base, FALSE);
\r
206 set_oppose_fire(randint1(base) + base, FALSE);
\r
212 if (name) return _("
\8eü
\95Ó
\8a´
\92m", "Sense Surroundings");
\r
213 if (desc) return _("
\8eü
\95Ó
\82Ì
\92n
\8c`
\82ð
\8a´
\92m
\82·
\82é
\81B", "Maps nearby area.");
\r
216 int rad = DETECT_RAD_MAP;
\r
218 if (info) return info_radius(rad);
\r
228 if (name) return _("
\83p
\83j
\83b
\83N
\81E
\83A
\83\93\83f
\83b
\83h", "Turn Undead");
\r
229 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
240 if (name) return _("
\91Ì
\97Í
\89ñ
\95\9c", "Healing");
\r
241 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
246 if (info) return info_heal(0, 0, heal);
\r
258 if (name) return _("
\8c\8b\8aE
\82Ì
\96ä
\8fÍ", "Glyph of Warding");
\r
259 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
260 "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
271 if (name) return _("*
\89ð
\8eô*", "Dispel Curse");
\r
272 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
277 if (remove_all_curse())
\r
279 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
286 if (name) return _("
\8aÓ
\8e¯", "Perception");
\r
287 if (desc) return _("
\83A
\83C
\83e
\83\80\82ð
\8e¯
\95Ê
\82·
\82é
\81B", "Identifies an item.");
\r
292 if (!ident_spell(FALSE)) return NULL;
\r
298 if (name) return _("
\83A
\83\93\83f
\83b
\83h
\91Þ
\8eU", "Dispel Undead");
\r
299 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
303 int sides = plev * 5;
\r
305 if (info) return info_damage(dice, sides, 0);
\r
309 dispel_undead(damroll(dice, sides));
\r
315 if (name) return _("
\93â
\82Ì
\8d\8f", "Day of the Dove");
\r
316 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
319 int power = plev * 2;
\r
321 if (info) return info_power(power);
\r
325 charm_monsters(power);
\r
331 if (name) return _("
\92v
\96½
\8f\9d", "Cause Critical Wounds");
\r
332 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
335 int dice = 5 + (plev - 5) / 3;
\r
338 if (info) return info_damage(dice, sides, 0);
\r
342 if (!get_aim_dir(&dir)) return NULL;
\r
343 fire_ball_hide(GF_WOUNDS, dir, damroll(dice, sides), 0);
\r
349 if (name) return _("
\8bA
\8aÒ
\82Ì
\8fÙ", "Word of Recall");
\r
350 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
356 if (info) return info_delay(base, sides);
\r
360 if (!word_of_recall()) return NULL;
\r
366 if (name) return _("
\90^
\8eÀ
\82Ì
\8dÕ
\92d", "Alter Reality");
\r
367 if (desc) return _("
\8c»
\8dÝ
\82Ì
\8aK
\82ð
\8dÄ
\8d\
\90¬
\82·
\82é
\81B", "Recreates current dungeon level.");
\r
373 if (info) return info_delay(base, sides);
\r
383 if (name) return _("
\90^
\81E
\8c\8b\8aE", "Warding True");
\r
384 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
389 if (info) return info_radius(rad);
\r
400 if (name) return _("
\95s
\96Ñ
\89»", "Sterilization");
\r
401 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
406 num_repro += MAX_REPRO;
\r
412 if (name) return _("
\91S
\8a´
\92m", "Detection");
\r
413 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
416 int rad = DETECT_RAD_DEFAULT;
\r
418 if (info) return info_radius(rad);
\r
428 if (name) return _("
\83A
\83\93\83f
\83b
\83h
\8fÁ
\96Å", "Annihilate Undead");
\r
429 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
430 "Eliminates all nearby undead monsters, exhausting you. Powerful or unique monsters may be able to resist.");
\r
433 int power = plev + 50;
\r
435 if (info) return info_power(power);
\r
439 mass_genocide_undead(power, TRUE);
\r
445 if (name) return _("
\90ç
\97¢
\8aá", "Clairvoyance");
\r
446 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
457 if (name) return _("
\91S
\95\9c\8a\88", "Restoration");
\r
458 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
463 do_res_stat(A_STR);
\r
464 do_res_stat(A_INT);
\r
465 do_res_stat(A_WIS);
\r
466 do_res_stat(A_DEX);
\r
467 do_res_stat(A_CON);
\r
468 do_res_stat(A_CHR);
\r
475 if (name) return _("*
\91Ì
\97Í
\89ñ
\95\9c*", "Healing True");
\r
476 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
481 if (info) return info_heal(0, 0, heal);
\r
493 if (name) return _("
\90¹
\82È
\82é
\83r
\83W
\83\87\83\93", "Holy Vision");
\r
494 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
499 if (!identify_fully(FALSE)) return NULL;
\r
505 if (name) return _("
\8b\86\8bÉ
\82Ì
\91Ï
\90«", "Ultimate Resistance");
\r
506 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
509 TIME_EFFECT base = (TIME_EFFECT)plev / 2;
\r
511 if (info) return info_duration(base, base);
\r
515 TIME_EFFECT v = randint1(base) + base;
\r
516 set_fast(v, FALSE);
\r
517 set_oppose_acid(v, FALSE);
\r
518 set_oppose_elec(v, FALSE);
\r
519 set_oppose_fire(v, FALSE);
\r
520 set_oppose_cold(v, FALSE);
\r
521 set_oppose_pois(v, FALSE);
\r
522 set_ultimate_res(v, FALSE);
\r