OSDN Git Service

[Refactor] #38997 polymorph_monster() に player_type * 引数を追加. / Add player_type *...
authordeskull <deskull@users.sourceforge.jp>
Sun, 27 Oct 2019 06:11:55 +0000 (15:11 +0900)
committerdeskull <deskull@users.sourceforge.jp>
Sun, 27 Oct 2019 06:11:55 +0000 (15:11 +0900)
src/combat/melee1.c
src/spells.h
src/spells1.c
src/spells3.c

index b08bded..8029a90 100644 (file)
@@ -1988,7 +1988,7 @@ static void py_attack_aux(player_type *attacker_ptr, POSITION y, POSITION x, boo
                                if (!(r_ptr->flags1 & (RF1_UNIQUE | RF1_QUESTOR)) &&
                                        !(r_ptr->flagsr & RFR_EFF_RES_CHAO_MASK))
                                {
-                                       if (polymorph_monster(y, x))
+                                       if (polymorph_monster(attacker_ptr, y, x))
                                        {
                                                msg_format(_("%^sは変化した!", "%^s changes!"), m_name);
                                                *fear = FALSE;
index 3db7180..90c854a 100644 (file)
@@ -316,7 +316,7 @@ extern PERCENTAGE mod_spell_chance_1(PERCENTAGE chance);
 extern PERCENTAGE mod_spell_chance_2(PERCENTAGE chance);
 extern PERCENTAGE spell_chance(SPELL_IDX spell, REALM_IDX realm);
 extern void print_spells(SPELL_IDX target_spell, SPELL_IDX *spells, int num, TERM_LEN y, TERM_LEN x, REALM_IDX realm);
-extern bool polymorph_monster(POSITION y, POSITION x);
+extern bool polymorph_monster(player_type *caster_ptr, POSITION y, POSITION x);
 extern bool dimension_door(void);
 extern bool mirror_tunnel(void);
 extern void massacre(void);
index fab5417..e360635 100644 (file)
@@ -3709,7 +3709,7 @@ static bool project_m(MONSTER_IDX who, POSITION r, POSITION y, POSITION x, HIT_P
                /* Mega-Hack -- Handle "polymorph" -- monsters get a saving throw */
                if (do_poly && (randint1(90) > r_ptr->level))
                {
-                       if (polymorph_monster(y, x))
+                       if (polymorph_monster(p_ptr, y, x))
                        {
                                if (seen) obvious = TRUE;
 
index d4b2300..d8ddca5 100644 (file)
@@ -2852,20 +2852,20 @@ static MONRACE_IDX poly_r_idx(MONRACE_IDX r_idx)
  * @param x 指定のX座標
  * @return 実際に変身したらTRUEを返す
  */
-bool polymorph_monster(POSITION y, POSITION x)
+bool polymorph_monster(player_type *caster_ptr, POSITION y, POSITION x)
 {
-       grid_type *g_ptr = &p_ptr->current_floor_ptr->grid_array[y][x];
-       monster_type *m_ptr = &p_ptr->current_floor_ptr->m_list[g_ptr->m_idx];
+       grid_type *g_ptr = &caster_ptr->current_floor_ptr->grid_array[y][x];
+       monster_type *m_ptr = &caster_ptr->current_floor_ptr->m_list[g_ptr->m_idx];
        bool polymorphed = FALSE;
        MONRACE_IDX new_r_idx;
        MONRACE_IDX old_r_idx = m_ptr->r_idx;
        bool targeted = (target_who == g_ptr->m_idx) ? TRUE : FALSE;
-       bool health_tracked = (p_ptr->health_who == g_ptr->m_idx) ? TRUE : FALSE;
+       bool health_tracked = (caster_ptr->health_who == g_ptr->m_idx) ? TRUE : FALSE;
        monster_type back_m;
 
-       if (p_ptr->inside_arena || p_ptr->phase_out) return (FALSE);
+       if (caster_ptr->inside_arena || caster_ptr->phase_out) return (FALSE);
 
-       if ((p_ptr->riding == g_ptr->m_idx) || (m_ptr->mflag2 & MFLAG2_KAGE)) return (FALSE);
+       if ((caster_ptr->riding == g_ptr->m_idx) || (m_ptr->mflag2 & MFLAG2_KAGE)) return (FALSE);
 
        /* Memorize the monster before polymorphing */
        back_m = *m_ptr;
@@ -2894,9 +2894,9 @@ bool polymorph_monster(POSITION y, POSITION x)
                /* Create a new monster (no groups) */
                if (place_monster_aux(0, y, x, new_r_idx, mode))
                {
-                       p_ptr->current_floor_ptr->m_list[hack_m_idx_ii].nickname = back_m.nickname;
-                       p_ptr->current_floor_ptr->m_list[hack_m_idx_ii].parent_m_idx = back_m.parent_m_idx;
-                       p_ptr->current_floor_ptr->m_list[hack_m_idx_ii].hold_o_idx = back_m.hold_o_idx;
+                       caster_ptr->current_floor_ptr->m_list[hack_m_idx_ii].nickname = back_m.nickname;
+                       caster_ptr->current_floor_ptr->m_list[hack_m_idx_ii].parent_m_idx = back_m.parent_m_idx;
+                       caster_ptr->current_floor_ptr->m_list[hack_m_idx_ii].hold_o_idx = back_m.hold_o_idx;
 
                        /* Success */
                        polymorphed = TRUE;
@@ -2906,7 +2906,7 @@ bool polymorph_monster(POSITION y, POSITION x)
                        /* Placing the new monster failed */
                        if (place_monster_aux(0, y, x, old_r_idx, (mode | PM_NO_KAGE | PM_IGNORE_TERRAIN)))
                        {
-                               p_ptr->current_floor_ptr->m_list[hack_m_idx_ii] = back_m;
+                               caster_ptr->current_floor_ptr->m_list[hack_m_idx_ii] = back_m;
 
                                /* Re-initialize monster process */
                                mproc_init();
@@ -2919,7 +2919,7 @@ bool polymorph_monster(POSITION y, POSITION x)
                {
                        for (this_o_idx = back_m.hold_o_idx; this_o_idx; this_o_idx = next_o_idx)
                        {
-                               object_type *o_ptr = &p_ptr->current_floor_ptr->o_list[this_o_idx];
+                               object_type *o_ptr = &caster_ptr->current_floor_ptr->o_list[this_o_idx];
                                next_o_idx = o_ptr->next_o_idx;
 
                                /* Held by new monster */
@@ -2930,7 +2930,7 @@ bool polymorph_monster(POSITION y, POSITION x)
                {
                        for (this_o_idx = back_m.hold_o_idx; this_o_idx; this_o_idx = next_o_idx)
                        {
-                               next_o_idx = p_ptr->current_floor_ptr->o_list[this_o_idx].next_o_idx;
+                               next_o_idx = caster_ptr->current_floor_ptr->o_list[this_o_idx].next_o_idx;
                                delete_object_idx(this_o_idx);
                        }
                }