OSDN Git Service

[Refactor] #2523 PlayerType::poisoned をPlayerPoison の呼び出しに差し替えた
authorHourier <66951241+Hourier@users.noreply.github.com>
Wed, 24 Aug 2022 09:22:53 +0000 (18:22 +0900)
committerHourier <66951241+Hourier@users.noreply.github.com>
Wed, 24 Aug 2022 09:22:53 +0000 (18:22 +0900)
14 files changed:
src/cmd-building/cmd-inn.cpp
src/core/magic-effects-timeout-reducer.cpp
src/hpmp/hp-mp-processor.cpp
src/load/player-info-loader.cpp
src/object-use/quaff/quaff-effects.cpp
src/player-info/self-info.cpp
src/save/player-writer.cpp
src/status/bad-status-setter.cpp
src/status/buff-setter.cpp
src/system/player-type-definition.cpp
src/system/player-type-definition.h
src/timed-effect/timed-effects.cpp
src/timed-effect/timed-effects.h
src/window/main-window-stat-poster.cpp

index b56982a..a62839c 100644 (file)
@@ -16,6 +16,7 @@
 #include "store/rumor.h"
 #include "system/player-type-definition.h"
 #include "timed-effect/player-cut.h"
+#include "timed-effect/player-poison.h"
 #include "timed-effect/player-stun.h"
 #include "timed-effect/timed-effects.h"
 #include "view/display-messages.h"
@@ -45,7 +46,8 @@ static bool buy_food(PlayerType *player_ptr)
  */
 static bool is_healthy_stay(PlayerType *player_ptr)
 {
-    if (!player_ptr->poisoned && !player_ptr->effects()->cut()->is_cut()) {
+    const auto effects = player_ptr->effects();
+    if (!effects->poison()->is_poisoned() && !effects->cut()->is_cut()) {
         return true;
     }
 
index 366dac8..0970dab 100644 (file)
@@ -24,6 +24,7 @@
 #include "timed-effect/player-fear.h"
 #include "timed-effect/player-hallucination.h"
 #include "timed-effect/player-paralysis.h"
+#include "timed-effect/player-poison.h"
 #include "timed-effect/player-stun.h"
 #include "timed-effect/timed-effects.h"
 
@@ -217,7 +218,7 @@ void reduce_magic_effects_timeout(PlayerType *player_ptr)
         (void)set_ultimate_res(player_ptr, player_ptr->ult_res - 1, true);
     }
 
-    if (player_ptr->poisoned) {
+    if (effects->poison()->is_poisoned()) {
         int adjust = adj_con_fix[player_ptr->stat_index[A_CON]] + 1;
         (void)bss.mod_poison(-adjust);
     }
index 69bf5e5..06d8a60 100644 (file)
@@ -44,6 +44,7 @@
 #include "system/object-type-definition.h"
 #include "system/player-type-definition.h"
 #include "timed-effect/player-cut.h"
+#include "timed-effect/player-poison.h"
 #include "timed-effect/timed-effects.h"
 #include "util/bit-flags-calculator.h"
 #include "view/display-messages.h"
@@ -118,13 +119,15 @@ void process_player_hp_mp(PlayerType *player_ptr)
     bool cave_no_regen = false;
     int upkeep_factor = 0;
     int regen_amount = PY_REGEN_NORMAL;
-    if (player_ptr->poisoned && !is_invuln(player_ptr)) {
+    const auto effects = player_ptr->effects();
+    const auto player_poison = effects->poison();
+    if (player_poison->is_poisoned() && !is_invuln(player_ptr)) {
         if (take_hit(player_ptr, DAMAGE_NOESCAPE, 1, _("毒", "poison")) > 0) {
             sound(SOUND_DAMAGE_OVER_TIME);
         }
     }
 
-    auto player_cut = player_ptr->effects()->cut();
+    const auto player_cut = effects->cut();
     if (player_cut->is_cut() && !is_invuln(player_ptr)) {
         auto dam = player_cut->get_damage();
         if (take_hit(player_ptr, DAMAGE_NOESCAPE, dam, _("致命傷", "a mortal wound")) > 0) {
@@ -401,7 +404,7 @@ void process_player_hp_mp(PlayerType *player_ptr)
         }
     }
 
-    if (player_ptr->poisoned) {
+    if (player_poison->is_poisoned()) {
         regen_amount = 0;
     }
     if (player_cut->is_cut()) {
index 051ab94..a014aae 100644 (file)
@@ -30,6 +30,7 @@
 #include "timed-effect/player-fear.h"
 #include "timed-effect/player-hallucination.h"
 #include "timed-effect/player-paralysis.h"
+#include "timed-effect/player-poison.h"
 #include "timed-effect/player-stun.h"
 #include "timed-effect/timed-effects.h"
 #include "world/world.h"
@@ -361,13 +362,13 @@ static void rd_energy(PlayerType *player_ptr)
  */
 static void rd_status(PlayerType *player_ptr)
 {
-    auto effects = player_ptr->effects();
+    const auto effects = player_ptr->effects();
     effects->acceleration()->set(rd_s16b());
     effects->deceleration()->set(rd_s16b());
     effects->fear()->set(rd_s16b());
     effects->cut()->set(rd_s16b());
     effects->stun()->set(rd_s16b());
-    player_ptr->poisoned = rd_s16b();
+    effects->poison()->set(rd_s16b());
     effects->hallucination()->set(rd_s16b());
     player_ptr->protevil = rd_s16b();
     player_ptr->invuln = rd_s16b();
index bd5b72f..84b6312 100644 (file)
@@ -38,6 +38,7 @@
 #include "system/object-type-definition.h"
 #include "system/player-type-definition.h"
 #include "timed-effect/player-acceleration.h"
+#include "timed-effect/player-poison.h"
 #include "timed-effect/timed-effects.h"
 #include "util/bit-flags-calculator.h"
 #include "view/display-messages.h"
@@ -103,8 +104,10 @@ bool QuaffEffects::influence(const ObjectType &o_ref)
         return set_tim_infra(this->player_ptr, this->player_ptr->tim_infra + 100 + randint1(100), false);
     case SV_POTION_DETECT_INVIS:
         return set_tim_invis(this->player_ptr, this->player_ptr->tim_invis + 12 + randint1(12), false);
-    case SV_POTION_SLOW_POISON:
-        return BadStatusSetter(this->player_ptr).poison(this->player_ptr->poisoned / 2);
+    case SV_POTION_SLOW_POISON: {
+        const auto player_poison = this->player_ptr->effects()->poison();
+        return BadStatusSetter(this->player_ptr).poison(player_poison->current() / 2);
+    }
     case SV_POTION_CURE_POISON:
         return BadStatusSetter(this->player_ptr).poison(0);
     case SV_POTION_BOLDNESS:
index e1d81e9..2593b21 100644 (file)
@@ -32,6 +32,7 @@
 #include "timed-effect/player-cut.h"
 #include "timed-effect/player-fear.h"
 #include "timed-effect/player-hallucination.h"
+#include "timed-effect/player-poison.h"
 #include "timed-effect/player-stun.h"
 #include "timed-effect/timed-effects.h"
 #include "view/display-self-info.h"
@@ -59,7 +60,7 @@ static void set_bad_status_info(PlayerType *player_ptr, self_info_type *self_ptr
         self_ptr->info[self_ptr->line++] = _("あなたはもうろうとしている。", "You are stunned.");
     }
 
-    if (player_ptr->poisoned) {
+    if (effects->poison()->is_poisoned()) {
         self_ptr->info[self_ptr->line++] = _("あなたは毒に侵されている。", "You are poisoned.");
     }
 
@@ -335,8 +336,9 @@ void report_magics(PlayerType *player_ptr)
         info[i++] = _("あなたは恐怖に侵されている", "You are terrified");
     }
 
-    if (player_ptr->poisoned) {
-        info2[i] = report_magics_aux(player_ptr->poisoned);
+    const auto player_poison = effects->poison();
+    if (player_poison->is_poisoned()) {
+        info2[i] = report_magics_aux(player_poison->current());
         info[i++] = _("あなたは毒に侵されている", "You are poisoned");
     }
 
index 85c87af..6f41223 100644 (file)
@@ -17,6 +17,7 @@
 #include "timed-effect/player-fear.h"
 #include "timed-effect/player-hallucination.h"
 #include "timed-effect/player-paralysis.h"
+#include "timed-effect/player-poison.h"
 #include "timed-effect/player-stun.h"
 #include "timed-effect/timed-effects.h"
 #include "world/world.h"
@@ -171,7 +172,7 @@ void wr_player(PlayerType *player_ptr)
     wr_s16b(effects->fear()->current());
     wr_s16b(effects->cut()->current());
     wr_s16b(effects->stun()->current());
-    wr_s16b(player_ptr->poisoned);
+    wr_s16b(effects->poison()->current());
     wr_s16b(effects->hallucination()->current());
     wr_s16b(player_ptr->protevil);
     wr_s16b(player_ptr->invuln);
index 895d9f0..b531443 100644 (file)
@@ -25,6 +25,7 @@
 #include "timed-effect/player-fear.h"
 #include "timed-effect/player-hallucination.h"
 #include "timed-effect/player-paralysis.h"
+#include "timed-effect/player-poison.h"
 #include "timed-effect/player-stun.h"
 #include "timed-effect/timed-effects.h"
 #include "view/display-messages.h"
@@ -189,19 +190,21 @@ bool BadStatusSetter::poison(const TIME_EFFECT tmp_v)
         return false;
     }
 
+    const auto player_poison = this->player_ptr->effects()->poison();
+    const auto is_poisoned = player_poison->is_poisoned();
     if (v > 0) {
-        if (!this->player_ptr->poisoned) {
+        if (!is_poisoned) {
             msg_print(_("毒に侵されてしまった!", "You are poisoned!"));
             notice = true;
         }
     } else {
-        if (this->player_ptr->poisoned) {
+        if (is_poisoned) {
             msg_print(_("やっと毒の痛みがなくなった。", "You are no longer poisoned."));
             notice = true;
         }
     }
 
-    this->player_ptr->poisoned = v;
+    player_poison->set(v);
     this->player_ptr->redraw |= PR_STATUS;
     if (!notice) {
         return false;
@@ -217,7 +220,7 @@ bool BadStatusSetter::poison(const TIME_EFFECT tmp_v)
 
 bool BadStatusSetter::mod_poison(const TIME_EFFECT tmp_v)
 {
-    return this->poison(this->player_ptr->poisoned + tmp_v);
+    return this->poison(this->player_ptr->effects()->poison()->current() + tmp_v);
 }
 
 /*!
index 6a24a24..abafc09 100644 (file)
@@ -26,6 +26,7 @@
 #include "timed-effect/player-fear.h"
 #include "timed-effect/player-hallucination.h"
 #include "timed-effect/player-paralysis.h"
+#include "timed-effect/player-poison.h"
 #include "timed-effect/player-stun.h"
 #include "timed-effect/timed-effects.h"
 #include "view/display-messages.h"
@@ -44,7 +45,7 @@ void reset_tim_flags(PlayerType *player_ptr)
     effects->confusion()->reset();
     effects->fear()->reset();
     effects->hallucination()->reset();
-    player_ptr->poisoned = 0; /* Timed -- Poisoned */
+    effects->poison()->reset();
     effects->cut()->reset();
     effects->stun()->reset();
 
index ba6b95c..eea85df 100644 (file)
@@ -6,6 +6,7 @@
 #include "timed-effect/player-fear.h"
 #include "timed-effect/player-hallucination.h"
 #include "timed-effect/player-paralysis.h"
+#include "timed-effect/player-poison.h"
 #include "timed-effect/player-stun.h"
 #include "timed-effect/timed-effects.h"
 #include "world/world.h"
@@ -47,7 +48,7 @@ bool PlayerType::is_fully_healthy() const
     is_fully_healthy &= this->csp >= this->msp;
     is_fully_healthy &= !this->blind;
     is_fully_healthy &= !effects->confusion()->is_confused();
-    is_fully_healthy &= !this->poisoned;
+    is_fully_healthy &= !effects->poison()->is_poisoned();
     is_fully_healthy &= !effects->fear()->is_fearful();
     is_fully_healthy &= !effects->stun()->is_stunned();
     is_fully_healthy &= !effects->cut()->is_cut();
index ca15c97..cfe2c48 100644 (file)
@@ -95,7 +95,6 @@ public:
     uint32_t count{};
 
     TIME_EFFECT blind{}; /* Timed -- Blindness */
-    TIME_EFFECT poisoned{}; /* Timed -- Poisoned */
 
     TIME_EFFECT protevil{}; /* Timed -- Protection */
     TIME_EFFECT invuln{}; /* Timed -- Invulnerable */
index 2cad2ca..39a57f4 100644 (file)
@@ -12,6 +12,7 @@
 #include "timed-effect/player-fear.h"
 #include "timed-effect/player-hallucination.h"
 #include "timed-effect/player-paralysis.h"
+#include "timed-effect/player-poison.h"
 #include "timed-effect/player-stun.h"
 
 TimedEffects::TimedEffects()
@@ -23,6 +24,7 @@ TimedEffects::TimedEffects()
     , player_stun(std::make_shared<PlayerStun>())
     , player_acceleration(std::make_shared<PlayerAcceleration>())
     , player_deceleration(std::make_shared<PlayerDeceleration>())
+    , player_poison(std::make_shared<PlayerPoison>())
 {
 }
 
@@ -65,3 +67,8 @@ std::shared_ptr<PlayerDeceleration> TimedEffects::deceleration() const
 {
     return this->player_deceleration;
 }
+
+std::shared_ptr<PlayerPoison> TimedEffects::poison() const
+{
+    return this->player_poison;
+}
index 22f0693..f89ece7 100644 (file)
@@ -8,6 +8,7 @@ class PlayerDeceleration;
 class PlayerFear;
 class PlayerHallucination;
 class PlayerParalysis;
+class PlayerPoison;
 class PlayerCut;
 class PlayerStun;
 class TimedEffects {
@@ -23,6 +24,7 @@ public:
     std::shared_ptr<PlayerStun> stun() const;
     std::shared_ptr<PlayerAcceleration> acceleration() const;
     std::shared_ptr<PlayerDeceleration> deceleration() const;
+    std::shared_ptr<PlayerPoison> poison() const;
 
 private:
     std::shared_ptr<PlayerConfusion> player_confusion;
@@ -33,4 +35,5 @@ private:
     std::shared_ptr<PlayerStun> player_stun;
     std::shared_ptr<PlayerAcceleration> player_acceleration;
     std::shared_ptr<PlayerDeceleration> player_deceleration;
+    std::shared_ptr<PlayerPoison> player_poison;
 };
index 9e17d08..9372653 100644 (file)
@@ -28,6 +28,7 @@
 #include "timed-effect/player-fear.h"
 #include "timed-effect/player-hallucination.h"
 #include "timed-effect/player-paralysis.h"
+#include "timed-effect/player-poison.h"
 #include "timed-effect/player-stun.h"
 #include "timed-effect/timed-effects.h"
 #include "view/status-bars-table.h"
@@ -481,7 +482,7 @@ void print_status(PlayerType *player_ptr)
         ADD_BAR_FLAG(BAR_CONFUSE);
     }
 
-    if (player_ptr->poisoned) {
+    if (effects->poison()->is_poisoned()) {
         ADD_BAR_FLAG(BAR_POISONED);
     }