X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=src%2Fdo-spell.c;h=e4ddcf70067b424487702e5a88184bd7871f2ae9;hb=fd1d0426e59fc285e58c9f972a561d270bd55d20;hp=4ab9f0b02d3e18f6ca06d0f60167fe95be476a6c;hpb=9d4b877c27a36774ae5256db6237264298837607;p=hengband%2Fhengband.git diff --git a/src/do-spell.c b/src/do-spell.c index 4ab9f0b02..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) { @@ -487,7 +488,7 @@ static void cast_invoke_spirits(int dir) * @param spell 基準となる引数ID * @return なし */ -static void wild_magic(int spell) +static void wild_magic(SPELL_IDX spell) { int counter = 0; int type = SUMMON_MOLD + randint0(6); @@ -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) { @@ -986,13 +981,13 @@ static bool cast_summon_greater_demon(void) * @param song 魔法効果のID * @return なし */ -static void start_singing(MAGIC_NUM2 spell, MAGIC_NUM1 song) +static void start_singing(SPELL_IDX spell, MAGIC_NUM1 song) { /* Remember the song index */ - p_ptr->magic_num1[0] = song; + SINGING_SONG_EFFECT(p_ptr) = (MAGIC_NUM1)song; /* Remember the index of the spell which activated the song */ - p_ptr->magic_num2[0] = spell; + SINGING_SONG_ID(p_ptr) = (MAGIC_NUM2)spell; /* Now the player is singing */ @@ -1015,24 +1010,24 @@ void stop_singing(void) if (p_ptr->pclass != CLASS_BARD) return; /* Are there interupted song? */ - if (p_ptr->magic_num1[1]) + if (INTERUPTING_SONG_EFFECT(p_ptr)) { /* Forget interupted song */ - p_ptr->magic_num1[1] = 0; + INTERUPTING_SONG_EFFECT(p_ptr) = MUSIC_NONE; return; } /* The player is singing? */ - if (!p_ptr->magic_num1[0]) return; + if (!SINGING_SONG_EFFECT(p_ptr)) return; /* Hack -- if called from set_action(), avoid recursive loop */ if (p_ptr->action == ACTION_SING) set_action(ACTION_NONE); /* Message text of each song or etc. */ - do_spell(REALM_MUSIC, p_ptr->magic_num2[0], SPELL_STOP); + do_spell(REALM_MUSIC, SINGING_SONG_ID(p_ptr), SPELL_STOP); - p_ptr->magic_num1[0] = MUSIC_NONE; - p_ptr->magic_num2[0] = 0; + SINGING_SONG_EFFECT(p_ptr) = MUSIC_NONE; + SINGING_SONG_ID(p_ptr) = 0; /* Recalculate bonuses */ p_ptr->update |= (PU_BONUS); @@ -1048,7 +1043,7 @@ void stop_singing(void) * @param mode 処理内容 (SPELL_NAME / SPELL_DESC / SPELL_INFO / SPELL_CAST) * @return SPELL_NAME / SPELL_DESC / SPELL_INFO 時には文字列ポインタを返す。SPELL_CAST時はNULL文字列を返す。 */ -static cptr do_life_spell(int spell, int mode) +static cptr do_life_spell(SPELL_IDX spell, BIT_FLAGS mode) { bool name = (mode == SPELL_NAME) ? TRUE : FALSE; bool desc = (mode == SPELL_DESC) ? TRUE : FALSE; @@ -1575,7 +1570,7 @@ static cptr do_life_spell(int spell, int mode) * @param mode 処理内容 (SPELL_NAME / SPELL_DESC / SPELL_INFO / SPELL_CAST) * @return SPELL_NAME / SPELL_DESC / SPELL_INFO 時には文字列ポインタを返す。SPELL_CAST時はNULL文字列を返す。 */ -static cptr do_sorcery_spell(int spell, int mode) +static cptr do_sorcery_spell(SPELL_IDX spell, BIT_FLAGS mode) { bool name = (mode == SPELL_NAME) ? TRUE : FALSE; bool desc = (mode == SPELL_DESC) ? TRUE : FALSE; @@ -2123,7 +2118,7 @@ static cptr do_sorcery_spell(int spell, int mode) * @param mode 処理内容 (SPELL_NAME / SPELL_DESC / SPELL_INFO / SPELL_CAST) * @return SPELL_NAME / SPELL_DESC / SPELL_INFO 時には文字列ポインタを返す。SPELL_CAST時はNULL文字列を返す。 */ -static cptr do_nature_spell(int spell, int mode) +static cptr do_nature_spell(SPELL_IDX spell, BIT_FLAGS mode) { bool name = (mode == SPELL_NAME) ? TRUE : FALSE; bool desc = (mode == SPELL_DESC) ? TRUE : FALSE; @@ -2728,7 +2723,7 @@ static cptr do_nature_spell(int spell, int mode) * @param mode 処理内容 (SPELL_NAME / SPELL_DESC / SPELL_INFO / SPELL_CAST) * @return SPELL_NAME / SPELL_DESC / SPELL_INFO 時には文字列ポインタを返す。SPELL_CAST時はNULL文字列を返す。 */ -static cptr do_chaos_spell(int spell, int mode) +static cptr do_chaos_spell(SPELL_IDX spell, BIT_FLAGS mode) { bool name = (mode == SPELL_NAME) ? TRUE : FALSE; bool desc = (mode == SPELL_DESC) ? TRUE : FALSE; @@ -3341,7 +3336,7 @@ static cptr do_chaos_spell(int spell, int mode) * @param mode 処理内容 (SPELL_NAME / SPELL_DESC / SPELL_INFO / SPELL_CAST) * @return SPELL_NAME / SPELL_DESC / SPELL_INFO 時には文字列ポインタを返す。SPELL_CAST時はNULL文字列を返す。 */ -static cptr do_death_spell(int spell, int mode) +static cptr do_death_spell(SPELL_IDX spell, BIT_FLAGS mode) { bool name = (mode == SPELL_NAME) ? TRUE : FALSE; bool desc = (mode == SPELL_DESC) ? TRUE : FALSE; @@ -3525,8 +3520,8 @@ static cptr do_death_spell(int spell, int 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(int spell, int 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(int spell, int 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(int spell, int 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(int spell, int 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(int spell, int mode) for (i = 0; i < 3; i++) { - if (drain_life(dir, dam)) + if (hypodynamic_bolt(dir, dam)) hp_player(dam); } } @@ -4014,7 +4008,7 @@ static cptr do_death_spell(int spell, int mode) * @param mode 処理内容 (SPELL_NAME / SPELL_DESC / SPELL_INFO / SPELL_CAST) * @return SPELL_NAME / SPELL_DESC / SPELL_INFO 時には文字列ポインタを返す。SPELL_CAST時はNULL文字列を返す。 */ -static cptr do_trump_spell(int spell, int mode) +static cptr do_trump_spell(SPELL_IDX spell, BIT_FLAGS mode) { bool name = (mode == SPELL_NAME) ? TRUE : FALSE; bool desc = (mode == SPELL_DESC) ? TRUE : FALSE; @@ -4660,7 +4654,7 @@ static cptr do_trump_spell(int spell, int mode) * @param mode 処理内容 (SPELL_NAME / SPELL_DESC / SPELL_INFO / SPELL_CAST) * @return SPELL_NAME / SPELL_DESC / SPELL_INFO 時には文字列ポインタを返す。SPELL_CAST時はNULL文字列を返す。 */ -static cptr do_arcane_spell(int spell, int mode) +static cptr do_arcane_spell(SPELL_IDX spell, BIT_FLAGS mode) { bool name = (mode == SPELL_NAME) ? TRUE : FALSE; bool desc = (mode == SPELL_DESC) ? TRUE : FALSE; @@ -5221,7 +5215,7 @@ static cptr do_arcane_spell(int spell, int mode) * @param mode 処理内容 (SPELL_NAME / SPELL_DESC / SPELL_INFO / SPELL_CAST) * @return SPELL_NAME / SPELL_DESC / SPELL_INFO 時には文字列ポインタを返す。SPELL_CAST時はNULL文字列を返す。 */ -static cptr do_craft_spell(int spell, int mode) +static cptr do_craft_spell(SPELL_IDX spell, BIT_FLAGS mode) { bool name = (mode == SPELL_NAME) ? TRUE : FALSE; bool desc = (mode == SPELL_DESC) ? TRUE : FALSE; @@ -5754,7 +5748,7 @@ static cptr do_craft_spell(int spell, int mode) * @param mode 処理内容 (SPELL_NAME / SPELL_DESC / SPELL_INFO / SPELL_CAST) * @return SPELL_NAME / SPELL_DESC / SPELL_INFO 時には文字列ポインタを返す。SPELL_CAST時はNULL文字列を返す。 */ -static cptr do_daemon_spell(int spell, int mode) +static cptr do_daemon_spell(SPELL_IDX spell, BIT_FLAGS mode) { bool name = (mode == SPELL_NAME) ? TRUE : FALSE; bool desc = (mode == SPELL_DESC) ? TRUE : FALSE; @@ -6370,7 +6364,7 @@ static cptr do_daemon_spell(int spell, int mode) * @param mode 処理内容 (SPELL_NAME / SPELL_DESC / SPELL_INFO / SPELL_CAST) * @return SPELL_NAME / SPELL_DESC / SPELL_INFO 時には文字列ポインタを返す。SPELL_CAST時はNULL文字列を返す。 */ -static cptr do_crusade_spell(int spell, int mode) +static cptr do_crusade_spell(SPELL_IDX spell, BIT_FLAGS mode) { bool name = (mode == SPELL_NAME) ? TRUE : FALSE; bool desc = (mode == SPELL_DESC) ? TRUE : FALSE; @@ -6983,7 +6977,7 @@ static cptr do_crusade_spell(int spell, int mode) * @param mode 処理内容 (SPELL_NAME / SPELL_DESC / SPELL_INFO / SPELL_CAST / SPELL_FAIL / SPELL_CONT / SPELL_STOP) * @return SPELL_NAME / SPELL_DESC / SPELL_INFO 時には文字列ポインタを返す。SPELL_CAST / SPELL_FAIL / SPELL_CONT / SPELL_STOP 時はNULL文字列を返す。 */ -static cptr do_music_spell(MAGIC_NUM2 spell, int mode) +static cptr do_music_spell(SPELL_IDX spell, BIT_FLAGS mode) { bool name = (mode == SPELL_NAME) ? TRUE : FALSE; bool desc = (mode == SPELL_DESC) ? TRUE : FALSE; @@ -7215,8 +7209,7 @@ static cptr do_music_spell(MAGIC_NUM2 spell, int 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(MAGIC_NUM2 spell, int 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(MAGIC_NUM2 spell, int 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(MAGIC_NUM2 spell, int 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; } } @@ -7900,7 +7893,7 @@ static cptr do_music_spell(MAGIC_NUM2 spell, int mode) * @param mode 処理内容 (SPELL_NAME / SPELL_DESC / SPELL_CAST) * @return SPELL_NAME / SPELL_DESC 時には文字列ポインタを返す。SPELL_CAST時はNULL文字列を返す。 */ -static cptr do_hissatsu_spell(int spell, int mode) +static cptr do_hissatsu_spell(SPELL_IDX spell, BIT_FLAGS mode) { bool name = (mode == SPELL_NAME) ? TRUE : FALSE; bool desc = (mode == SPELL_DESC) ? TRUE : FALSE; @@ -8873,7 +8866,7 @@ static bool item_tester_hook_cursed(object_type *o_ptr) * @param mode 処理内容 (SPELL_NAME / SPELL_DESC / SPELL_INFO / SPELL_CAST / SPELL_CONT / SPELL_STOP) * @return SPELL_NAME / SPELL_DESC / SPELL_INFO 時には文字列ポインタを返す。SPELL_CAST / SPELL_CONT / SPELL_STOP 時はNULL文字列を返す。 */ -static cptr do_hex_spell(int spell, int mode) +static cptr do_hex_spell(SPELL_IDX spell, BIT_FLAGS mode) { bool name = (mode == SPELL_NAME) ? TRUE : FALSE; bool desc = (mode == SPELL_DESC) ? TRUE : FALSE; @@ -9049,22 +9042,22 @@ static cptr do_hex_spell(int spell, int 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(int spell, int 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(int spell, int 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; @@ -9129,22 +9122,22 @@ static cptr do_hex_spell(int spell, int mode) if (desc) return _("呪文詠唱を中止することなく、薬の効果を得ることができる。", "Quaffs a potion without canceling of casting a spell."); if (cast) { - p_ptr->magic_num1[0] |= (1L << HEX_INHAIL); + CASTING_HEX_FLAGS(p_ptr) |= (1L << HEX_INHAIL); do_cmd_quaff_potion(); - p_ptr->magic_num1[0] &= ~(1L << HEX_INHAIL); + CASTING_HEX_FLAGS(p_ptr) &= ~(1L << HEX_INHAIL); add = FALSE; } 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; @@ -9371,9 +9364,9 @@ static cptr do_hex_spell(int spell, int mode) if ((!o_ptr->k_idx) || (!object_is_cursed(o_ptr))) { do_spell(REALM_HEX, spell, SPELL_STOP); - p_ptr->magic_num1[0] &= ~(1L << spell); - p_ptr->magic_num2[0]--; - if (!p_ptr->magic_num2[0]) set_action(ACTION_NONE); + CASTING_HEX_FLAGS(p_ptr) &= ~(1L << spell); + CASTING_HEX_NUM(p_ptr)--; + if (!SINGING_SONG_ID(p_ptr)) set_action(ACTION_NONE); } } if (stop) @@ -9460,9 +9453,9 @@ static cptr do_hex_spell(int spell, int mode) if (!flag) { msg_format(_("%sの呪文の詠唱をやめた。", "Finish casting '%^s'."), do_spell(REALM_HEX, HEX_RESTORE, SPELL_NAME)); - p_ptr->magic_num1[0] &= ~(1L << HEX_RESTORE); - if (cont) p_ptr->magic_num2[0]--; - if (p_ptr->magic_num2) p_ptr->action = ACTION_NONE; + CASTING_HEX_FLAGS(p_ptr) &= ~(1L << HEX_RESTORE); + if (cont) CASTING_HEX_NUM(p_ptr)--; + if (CASTING_HEX_NUM(p_ptr)) p_ptr->action = ACTION_NONE; /* Redraw status */ p_ptr->update |= (PU_BONUS | PU_HP | PU_MANA | PU_SPELLS); @@ -9614,7 +9607,7 @@ static cptr do_hex_spell(int spell, int 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(int spell, int 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(int spell, int mode) { msg_print(_("復讐する気が失せた。", "You are not a mood to revenge.")); } - p_ptr->magic_num1[2] = 0; + HEX_REVENGE_POWER(p_ptr) = 0; } } break; @@ -9672,8 +9665,8 @@ static cptr do_hex_spell(int spell, int mode) if ((cast) && (add)) { /* add spell */ - p_ptr->magic_num1[0] |= 1L << (spell); - p_ptr->magic_num2[0]++; + CASTING_HEX_FLAGS(p_ptr) |= 1L << (spell); + CASTING_HEX_NUM(p_ptr)++; if (p_ptr->action != ACTION_SPELL) set_action(ACTION_SPELL); } @@ -9696,7 +9689,7 @@ static cptr do_hex_spell(int spell, int mode) * @param mode 求める処理 * @return 各領域魔法に各種テキストを求めた場合は文字列参照ポインタ、そうでない場合はNULLポインタを返す。 */ -cptr do_spell(REALM_IDX realm, SPELL_IDX spell, int mode) +cptr do_spell(REALM_IDX realm, SPELL_IDX spell, BIT_FLAGS mode) { switch (realm) {