X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=src%2Fdo-spell.c;h=e4ddcf70067b424487702e5a88184bd7871f2ae9;hb=fd1d0426e59fc285e58c9f972a561d270bd55d20;hp=04dbe2c1c691dd341d979c62dbab427f2954d03e;hpb=7c3e827173190cf9d75f3b4d7135af5c4c3017a1;p=hengband%2Fhengband.git diff --git a/src/do-spell.c b/src/do-spell.c index 04dbe2c1c..e4ddcf700 100644 --- a/src/do-spell.c +++ b/src/do-spell.c @@ -7,6 +7,7 @@ */ #include "angband.h" +#include "selfinfo.h" /*! @@ -303,12 +304,12 @@ static void cast_wonder(int dir) else if (die < 71) fire_bolt_or_beam(beam_chance(), GF_FIRE, dir, damroll(8 + ((plev - 5) / 4), 8)); - else if (die < 76) drain_life(dir, 75); + else if (die < 76) hypodynamic_bolt(dir, 75); else if (die < 81) fire_ball(GF_ELEC, dir, 30 + plev / 2, 2); else if (die < 86) fire_ball(GF_ACID, dir, 40 + plev, 2); else if (die < 91) fire_ball(GF_ICE, dir, 70 + plev, 3); else if (die < 96) fire_ball(GF_FIRE, dir, 80 + plev, 3); - else if (die < 101) drain_life(dir, 100 + plev); + else if (die < 101) hypodynamic_bolt(dir, 100 + plev); else if (die < 104) { earthquake(p_ptr->y, p_ptr->x, 12); @@ -429,7 +430,7 @@ static void cast_invoke_spirits(int dir) } else if (die < 76) { - drain_life(dir, 75); + hypodynamic_bolt(dir, 75); } else if (die < 81) { @@ -449,7 +450,7 @@ static void cast_invoke_spirits(int dir) } else if (die < 101) { - drain_life(dir, 100 + plev); + hypodynamic_bolt(dir, 100 + plev); } else if (die < 104) { @@ -740,13 +741,7 @@ static void cast_shuffle(void) { msg_print(_("《審判》だ。", "It's the Judgement.")); do_cmd_rerate(FALSE); - if (p_ptr->muta1 || p_ptr->muta2 || p_ptr->muta3) - { - msg_print(_("全ての突然変異が治った。", "You are cured of all mutations.")); - p_ptr->muta1 = p_ptr->muta2 = p_ptr->muta3 = 0; - p_ptr->update |= PU_BONUS; - handle_stuff(); - } + lose_all_mutations(); } else if (die < 120) { @@ -989,10 +984,10 @@ static bool cast_summon_greater_demon(void) static void start_singing(SPELL_IDX spell, MAGIC_NUM1 song) { /* Remember the song index */ - SINGING_SONG_EFFECT(p_ptr) = song; + SINGING_SONG_EFFECT(p_ptr) = (MAGIC_NUM1)song; /* Remember the index of the spell which activated the song */ - SINGING_SONG_ID(p_ptr) = spell; + SINGING_SONG_ID(p_ptr) = (MAGIC_NUM2)spell; /* Now the player is singing */ @@ -3525,8 +3520,8 @@ static cptr do_death_spell(SPELL_IDX spell, BIT_FLAGS mode) case 8: if (name) return _("エントロピーの球", "Orb of Entropy"); - if (desc) return _("生命のある者に効果のある球を放つ。", "Fires a ball which damages living monsters."); - + if (desc) return _("生命のある者のHPと最大HP双方にダメージを与える効果のある球を放つ。", "Fires a ball which damages to both HP and MaxHP of living monsters."); + { int dice = 3; int sides = 6; @@ -3547,7 +3542,7 @@ static cptr do_death_spell(SPELL_IDX spell, BIT_FLAGS mode) { if (!get_aim_dir(&dir)) return NULL; - fire_ball(GF_OLD_DRAIN, dir, damroll(dice, sides) + base, rad); + fire_ball(GF_HYPODYNAMIA, dir, damroll(dice, sides) + base, rad); } } break; @@ -3619,9 +3614,9 @@ static cptr do_death_spell(SPELL_IDX spell, BIT_FLAGS mode) break; case 13: - if (name) return _("吸血ドレイン", "Vampiric Drain"); - if (desc) return _("モンスター1体から生命力を吸いとる。吸いとった生命力によって満腹度が上がる。", - "Absorbs some HP from a monster and gives them to you. You will also gain nutritional sustenance from this."); + if (name) return _("吸血の矢", "Vampiric Bolt"); + if (desc) return _("ボルトによりモンスター1体から生命力を吸いとる。吸いとった生命力によって満腹度が上がる。", + "Absorbs some HP from a monster and gives them to you by bolt. You will also gain nutritional sustenance from this."); { int dice = 1; @@ -3636,7 +3631,7 @@ static cptr do_death_spell(SPELL_IDX spell, BIT_FLAGS mode) if (!get_aim_dir(&dir)) return NULL; - if (drain_life(dir, dam)) + if (hypodynamic_bolt(dir, dam)) { chg_virtue(V_SACRIFICE, -1); chg_virtue(V_VITALITY, -1); @@ -3781,10 +3776,9 @@ static cptr do_death_spell(SPELL_IDX spell, BIT_FLAGS mode) break; case 21: - if (name) return _("真・吸血", "Vampirism True"); - if (desc) return _("モンスター1体から生命力を吸いとる。吸いとった生命力によって体力が回復する。", + if (name) return _("吸血の連矢", "Vampiric Bolts"); + if (desc) return _("3連射のボルトによりモンスター1体から生命力を吸いとる。吸いとった生命力によって体力が回復する。", "Fires 3 bolts. Each of the bolts absorbs some HP from a monster and gives them to you."); - { HIT_POINT dam = 100; @@ -3801,7 +3795,7 @@ static cptr do_death_spell(SPELL_IDX spell, BIT_FLAGS mode) for (i = 0; i < 3; i++) { - if (drain_life(dir, dam)) + if (hypodynamic_bolt(dir, dam)) hp_player(dam); } } @@ -7215,8 +7209,7 @@ static cptr do_music_spell(SPELL_IDX spell, BIT_FLAGS mode) { msg_print(_("静かな音楽が感覚を研ぎ澄まさせた...", "Your quiet music sharpens your sense of hearing...")); /* Hack -- Initialize the turn count */ - p_ptr->magic_num1[2] = 0; - + SINGING_COUNT(p_ptr) = 0; start_singing(spell, MUSIC_DETECT); } @@ -7227,14 +7220,14 @@ static cptr do_music_spell(SPELL_IDX spell, BIT_FLAGS mode) if (cont) { - int count = p_ptr->magic_num1[2]; + int count = SINGING_COUNT(p_ptr); if (count >= 19) wiz_lite(FALSE); if (count >= 11) { map_area(rad); if (plev > 39 && count < 19) - p_ptr->magic_num1[2] = count + 1; + SINGING_COUNT(p_ptr) = count + 1; } if (count >= 6) { @@ -7244,7 +7237,7 @@ static cptr do_music_spell(SPELL_IDX spell, BIT_FLAGS mode) detect_objects_normal(rad); if (plev > 24 && count < 11) - p_ptr->magic_num1[2] = count + 1; + SINGING_COUNT(p_ptr) = count + 1; } if (count >= 3) { @@ -7252,14 +7245,14 @@ static cptr do_music_spell(SPELL_IDX spell, BIT_FLAGS mode) detect_monsters_normal(rad); if (plev > 19 && count < 6) - p_ptr->magic_num1[2] = count + 1; + SINGING_COUNT(p_ptr) = count + 1; } detect_traps(rad, TRUE); detect_doors(rad); detect_stairs(rad); if (plev > 14 && count < 3) - p_ptr->magic_num1[2] = count + 1; + SINGING_COUNT(p_ptr) = count + 1; } } @@ -9049,22 +9042,22 @@ static cptr do_hex_spell(SPELL_IDX spell, BIT_FLAGS mode) if (name) return _("我慢", "Patience"); if (desc) return _("数ターン攻撃を耐えた後、受けたダメージを地獄の業火として周囲に放出する。", "Bursts hell fire strongly after patients any damage while few turns."); - power = MIN(200, (p_ptr->magic_num1[2] * 2)); + power = MIN(200, (HEX_REVENGE_POWER(p_ptr) * 2)); if (info) return info_damage(0, 0, power); if (cast) { int a = 3 - (p_ptr->pspeed - 100) / 10; MAGIC_NUM2 r = 3 + randint1(3) + MAX(0, MIN(3, a)); - if (p_ptr->magic_num2[2] > 0) + if (HEX_REVENGE_TURN(p_ptr) > 0) { msg_print(_("すでに我慢をしている。", "You are already patienting.")); return NULL; } - p_ptr->magic_num2[1] = 1; - p_ptr->magic_num2[2] = r; - p_ptr->magic_num1[2] = 0; + HEX_REVENGE_TYPE(p_ptr) = 1; + HEX_REVENGE_TURN(p_ptr) = r; + HEX_REVENGE_POWER(p_ptr) = 0; msg_print(_("じっと耐えることにした。", "You decide to patient all damages.")); add = FALSE; } @@ -9072,9 +9065,9 @@ static cptr do_hex_spell(SPELL_IDX spell, BIT_FLAGS mode) { int rad = 2 + (power / 50); - p_ptr->magic_num2[2]--; + HEX_REVENGE_TURN(p_ptr)--; - if ((p_ptr->magic_num2[2] <= 0) || (power >= 200)) + if ((HEX_REVENGE_TURN(p_ptr) <= 0) || (power >= 200)) { msg_print(_("我慢が解かれた!", "Time for end of patioence!")); if (power) @@ -9088,9 +9081,9 @@ static cptr do_hex_spell(SPELL_IDX spell, BIT_FLAGS mode) } /* Reset */ - p_ptr->magic_num2[1] = 0; - p_ptr->magic_num2[2] = 0; - p_ptr->magic_num1[2] = 0; + HEX_REVENGE_TYPE(p_ptr) = 0; + HEX_REVENGE_TURN(p_ptr) = 0; + HEX_REVENGE_POWER(p_ptr) = 0; } } break; @@ -9137,14 +9130,14 @@ static cptr do_hex_spell(SPELL_IDX spell, BIT_FLAGS mode) break; case 11: - if (name) return _("吸血霧", "Vampiric mist"); - if (desc) return _("視界内のモンスターに微弱量の生命力吸収のダメージを与える。与えたダメージの分、体力が回復する。", - "Deals few dameges of drain life to all monsters in your sight."); + if (name) return _("衰弱の霧", "Hypodynamic mist"); + if (desc) return _("視界内のモンスターに微弱量の衰弱属性のダメージを与える。", + "Deals few damages of hypodynamia to all monsters in your sight."); power = (plev / 2) + 5; if (info) return info_damage(1, power, 0); if (cast || cont) { - project_hack(GF_OLD_DRAIN, randint1(power)); + project_hack(GF_HYPODYNAMIA, randint1(power)); } break; @@ -9614,7 +9607,7 @@ static cptr do_hex_spell(SPELL_IDX spell, BIT_FLAGS mode) if (name) return _("復讐の宣告", "Revenge sentence"); if (desc) return _("数ターン後にそれまで受けたダメージに応じた威力の地獄の劫火の弾を放つ。", "Fires a ball of hell fire to try revenging after few turns."); - power = p_ptr->magic_num1[2]; + power = HEX_REVENGE_POWER(p_ptr); if (info) return info_damage(0, 0, power); if (cast) { @@ -9622,22 +9615,22 @@ static cptr do_hex_spell(SPELL_IDX spell, BIT_FLAGS mode) int a = 3 - (p_ptr->pspeed - 100) / 10; r = 1 + randint1(2) + MAX(0, MIN(3, a)); - if (p_ptr->magic_num2[2] > 0) + if (HEX_REVENGE_TURN(p_ptr) > 0) { msg_print(_("すでに復讐は宣告済みだ。", "You already pronounced your revenge.")); return NULL; } - p_ptr->magic_num2[1] = 2; - p_ptr->magic_num2[2] = r; + HEX_REVENGE_TYPE(p_ptr) = 2; + HEX_REVENGE_TURN(p_ptr) = r; msg_format(_("あなたは復讐を宣告した。あと %d ターン。", "You pronounce your revenge. %d turns left."), r); add = FALSE; } if (cont) { - p_ptr->magic_num2[2]--; + HEX_REVENGE_TURN(p_ptr)--; - if (p_ptr->magic_num2[2] <= 0) + if (HEX_REVENGE_TURN(p_ptr) <= 0) { int dir; @@ -9662,7 +9655,7 @@ static cptr do_hex_spell(SPELL_IDX spell, BIT_FLAGS mode) { msg_print(_("復讐する気が失せた。", "You are not a mood to revenge.")); } - p_ptr->magic_num1[2] = 0; + HEX_REVENGE_POWER(p_ptr) = 0; } } break;