OSDN Git Service

[Refactor] #38997 mass_genocide() に player_type * 引数を追加. / Add player_type * argument...
authordeskull <deskull@users.sourceforge.jp>
Sat, 14 Dec 2019 06:40:12 +0000 (15:40 +0900)
committerdeskull <deskull@users.sourceforge.jp>
Sat, 14 Dec 2019 06:40:12 +0000 (15:40 +0900)
src/cmd/cmd-activate.c
src/cmd/cmd-read.c
src/patron.c
src/realm-death.c
src/spells.h
src/spells2.c

index 15c6667..0ab4e67 100644 (file)
@@ -1120,7 +1120,7 @@ bool activate_artifact(player_type *user_ptr, object_type *o_ptr)
        case ACT_MASS_GENO:
        {
                msg_print(_("ひどく鋭い音が流れ出た...", "It lets out a long, shrill note..."));
-               (void)mass_genocide(200, TRUE);
+               (void)mass_genocide(user_ptr, 200, TRUE);
                break;
        }
 
index a62609c..4fe2325 100644 (file)
@@ -423,7 +423,7 @@ void exe_read(player_type *creature_ptr, INVENTORY_IDX item, bool known)
 
                case SV_SCROLL_MASS_GENOCIDE:
                {
-                       (void)mass_genocide(300, TRUE);
+                       (void)mass_genocide(creature_ptr, 300, TRUE);
                        ident = TRUE;
                        break;
                }
index 1f9b364..dc731d7 100644 (file)
@@ -614,7 +614,7 @@ void gain_level_reward(player_type *creature_ptr, int chosen_reward)
                        msg_format(_("%sの声が響き渡った:", "The voice of %s booms out:"), chaos_patrons[creature_ptr->chaos_patron]);
                        msg_print(_("「我、汝の敵を抹殺せん!」", "'Let me relieve thee of thine oppressors!'"));
 
-                       (void)mass_genocide(0, FALSE);
+                       (void)mass_genocide(creature_ptr, 0, FALSE);
                        reward = _("モンスターが抹殺された。", "genociding nearby monsters");
                        break;
 
index 21cf8a6..adf9790 100644 (file)
@@ -591,7 +591,7 @@ concptr do_death_spell(player_type *caster_ptr, SPELL_IDX spell, BIT_FLAGS mode)
 
                        if (cast)
                        {
-                               mass_genocide(power, TRUE);
+                               mass_genocide(caster_ptr, power, TRUE);
                        }
                }
                break;
index e876313..8439b5e 100644 (file)
@@ -178,7 +178,7 @@ extern bool sleep_monsters(int power);
 extern void aggravate_monsters(MONSTER_IDX who);
 extern bool genocide_aux(MONSTER_IDX m_idx, int power, bool player_cast, int dam_side, concptr spell_name);
 extern bool symbol_genocide(int power, bool player_cast);
-extern bool mass_genocide(int power, bool player_cast);
+extern bool mass_genocide(player_type *caster_ptr, int power, bool player_cast);
 extern bool mass_genocide_undead(int power, bool player_cast);
 extern bool probing(void);
 extern bool banish_evil(int dist);
index d28507f..9cebb0f 100644 (file)
@@ -1151,21 +1151,21 @@ bool symbol_genocide(int power, bool player_cast)
  * @param player_cast プレイヤーの魔法によるものならば TRUE
  * @return 効力があった場合TRUEを返す
  */
-bool mass_genocide(int power, bool player_cast)
+bool mass_genocide(player_type *caster_ptr, int power, bool player_cast)
 {
        MONSTER_IDX i;
        bool result = FALSE;
 
        /* Prevent mass genocide in quest levels */
-       if ((p_ptr->current_floor_ptr->inside_quest && !random_quest_number(p_ptr->current_floor_ptr->dun_level)) || p_ptr->current_floor_ptr->inside_arena || p_ptr->phase_out)
+       if ((caster_ptr->current_floor_ptr->inside_quest && !random_quest_number(caster_ptr->current_floor_ptr->dun_level)) || caster_ptr->current_floor_ptr->inside_arena || caster_ptr->phase_out)
        {
                return (FALSE);
        }
 
        /* Delete the (nearby) monsters */
-       for (i = 1; i < p_ptr->current_floor_ptr->m_max; i++)
+       for (i = 1; i < caster_ptr->current_floor_ptr->m_max; i++)
        {
-               monster_type *m_ptr = &p_ptr->current_floor_ptr->m_list[i];
+               monster_type *m_ptr = &caster_ptr->current_floor_ptr->m_list[i];
                if (!monster_is_valid(m_ptr)) continue;
 
                /* Skip distant monsters */
@@ -1177,8 +1177,8 @@ bool mass_genocide(int power, bool player_cast)
 
        if (result)
        {
-               chg_virtue(p_ptr, V_VITALITY, -2);
-               chg_virtue(p_ptr, V_CHANCE, -1);
+               chg_virtue(caster_ptr, V_VITALITY, -2);
+               chg_virtue(caster_ptr, V_CHANCE, -1);
        }
 
        return result;