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
175 hp_player(damroll(dice, sides));
\r
183 if (name) return _("
\91Ï
\94M
\91Ï
\8a¦", "Resist Heat and Cold");
\r
184 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
185 "Gives resistance to fire and cold. These resistances can be added to which from equipment for more powerful resistances.");
\r
190 if (info) return info_duration(base, base);
\r
194 set_oppose_cold(randint1(base) + base, FALSE);
\r
195 set_oppose_fire(randint1(base) + base, FALSE);
\r
201 if (name) return _("
\8eü
\95Ó
\8a´
\92m", "Sense Surroundings");
\r
202 if (desc) return _("
\8eü
\95Ó
\82Ì
\92n
\8c`
\82ð
\8a´
\92m
\82·
\82é
\81B", "Maps nearby area.");
\r
205 int rad = DETECT_RAD_MAP;
\r
207 if (info) return info_radius(rad);
\r
217 if (name) return _("
\83p
\83j
\83b
\83N
\81E
\83A
\83\93\83f
\83b
\83h", "Turn Undead");
\r
218 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
229 if (name) return _("
\91Ì
\97Í
\89ñ
\95\9c", "Healing");
\r
230 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
235 if (info) return info_heal(0, 0, heal);
\r
247 if (name) return _("
\8c\8b\8aE
\82Ì
\96ä
\8fÍ", "Glyph of Warding");
\r
248 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
249 "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
260 if (name) return _("*
\89ð
\8eô*", "Dispel Curse");
\r
261 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
266 if (remove_all_curse())
\r
268 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
275 if (name) return _("
\8aÓ
\8e¯", "Perception");
\r
276 if (desc) return _("
\83A
\83C
\83e
\83\80\82ð
\8e¯
\95Ê
\82·
\82é
\81B", "Identifies an item.");
\r
281 if (!ident_spell(FALSE)) return NULL;
\r
287 if (name) return _("
\83A
\83\93\83f
\83b
\83h
\91Þ
\8eU", "Dispel Undead");
\r
288 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
292 int sides = plev * 5;
\r
294 if (info) return info_damage(dice, sides, 0);
\r
298 dispel_undead(damroll(dice, sides));
\r
304 if (name) return _("
\93â
\82Ì
\8d\8f", "Day of the Dove");
\r
305 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
308 int power = plev * 2;
\r
310 if (info) return info_power(power);
\r
314 charm_monsters(power);
\r
320 if (name) return _("
\92v
\96½
\8f\9d", "Cause Critical Wounds");
\r
321 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
324 int dice = 5 + (plev - 5) / 3;
\r
327 if (info) return info_damage(dice, sides, 0);
\r
331 if (!get_aim_dir(&dir)) return NULL;
\r
332 fire_ball_hide(GF_WOUNDS, dir, damroll(dice, sides), 0);
\r
338 if (name) return _("
\8bA
\8aÒ
\82Ì
\8fÙ", "Word of Recall");
\r
339 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
345 if (info) return info_delay(base, sides);
\r
349 if (!word_of_recall()) return NULL;
\r
355 if (name) return _("
\90^
\8eÀ
\82Ì
\8dÕ
\92d", "Alter Reality");
\r
356 if (desc) return _("
\8c»
\8dÝ
\82Ì
\8aK
\82ð
\8dÄ
\8d\
\90¬
\82·
\82é
\81B", "Recreates current dungeon level.");
\r
362 if (info) return info_delay(base, sides);
\r
372 if (name) return _("
\90^
\81E
\8c\8b\8aE", "Warding True");
\r
373 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
378 if (info) return info_radius(rad);
\r
389 if (name) return _("
\95s
\96Ñ
\89»", "Sterilization");
\r
390 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
395 num_repro += MAX_REPRO;
\r
401 if (name) return _("
\91S
\8a´
\92m", "Detection");
\r
402 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
405 int rad = DETECT_RAD_DEFAULT;
\r
407 if (info) return info_radius(rad);
\r
417 if (name) return _("
\83A
\83\93\83f
\83b
\83h
\8fÁ
\96Å", "Annihilate Undead");
\r
418 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
419 "Eliminates all nearby undead monsters, exhausting you. Powerful or unique monsters may be able to resist.");
\r
422 int power = plev + 50;
\r
424 if (info) return info_power(power);
\r
428 mass_genocide_undead(power, TRUE);
\r
434 if (name) return _("
\90ç
\97¢
\8aá", "Clairvoyance");
\r
435 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
446 if (name) return _("
\91S
\95\9c\8a\88", "Restoration");
\r
447 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
452 do_res_stat(A_STR);
\r
453 do_res_stat(A_INT);
\r
454 do_res_stat(A_WIS);
\r
455 do_res_stat(A_DEX);
\r
456 do_res_stat(A_CON);
\r
457 do_res_stat(A_CHR);
\r
464 if (name) return _("*
\91Ì
\97Í
\89ñ
\95\9c*", "Healing True");
\r
465 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
470 if (info) return info_heal(0, 0, heal);
\r
482 if (name) return _("
\90¹
\82È
\82é
\83r
\83W
\83\87\83\93", "Holy Vision");
\r
483 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
488 if (!identify_fully(FALSE)) return NULL;
\r
494 if (name) return _("
\8b\86\8bÉ
\82Ì
\91Ï
\90«", "Ultimate Resistance");
\r
495 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
498 TIME_EFFECT base = (TIME_EFFECT)plev / 2;
\r
500 if (info) return info_duration(base, base);
\r
504 TIME_EFFECT v = randint1(base) + base;
\r
505 set_fast(v, FALSE);
\r
506 set_oppose_acid(v, FALSE);
\r
507 set_oppose_elec(v, FALSE);
\r
508 set_oppose_fire(v, FALSE);
\r
509 set_oppose_cold(v, FALSE);
\r
510 set_oppose_pois(v, FALSE);
\r
511 set_ultimate_res(v, FALSE);
\r