OSDN Git Service

[Refactor] #1599 Defined mod_poison() and replaced the calls
authorHourier <66951241+Hourier@users.noreply.github.com>
Fri, 24 Sep 2021 01:17:01 +0000 (10:17 +0900)
committerHourier <66951241+Hourier@users.noreply.github.com>
Fri, 24 Sep 2021 01:17:01 +0000 (10:17 +0900)
src/cmd-item/cmd-eat.cpp
src/core/magic-effects-timeout-reducer.cpp
src/effect/effect-player-resist-hurt.cpp
src/grid/trap.cpp
src/hpmp/hp-mp-processor.cpp
src/monster-attack/monster-attack-lose.cpp
src/monster-attack/monster-attack-switcher.cpp
src/object-use/quaff-execution.cpp
src/specific-object/chest.cpp
src/status/bad-status-setter.cpp
src/status/bad-status-setter.h

index 4d9e02e..e97726e 100644 (file)
@@ -64,7 +64,7 @@ bool exe_eat_food_type_object(player_type *player_ptr, object_type *o_ptr)
     BadStatusSetter bss(player_ptr);
     switch (o_ptr->sval) {
     case SV_FOOD_POISON:
-        return (!(has_resist_pois(player_ptr) || is_oppose_pois(player_ptr))) && bss.poison(player_ptr->poisoned + randint0(10) + 10);
+        return (!(has_resist_pois(player_ptr) || is_oppose_pois(player_ptr))) && bss.mod_poison(randint0(10) + 10);
     case SV_FOOD_BLINDNESS:
         return !has_resist_blind(player_ptr) && bss.mod_blindness(randint0(200) + 200);
     case SV_FOOD_PARANOIA:
index 7bb0807..d8b0484 100644 (file)
@@ -212,7 +212,7 @@ void reduce_magic_effects_timeout(player_type *player_ptr)
 
     if (player_ptr->poisoned) {
         int adjust = adj_con_fix[player_ptr->stat_index[A_CON]] + 1;
-        (void)bss.poison(player_ptr->poisoned - adjust);
+        (void)bss.mod_poison(-adjust);
     }
 
     auto player_stun = effects->stun();
index 1a50fc8..5f0f5e8 100644 (file)
@@ -61,7 +61,7 @@ void effect_player_poison(player_type *player_ptr, effect_player_type *ep_ptr)
     ep_ptr->get_damage = take_hit(player_ptr, DAMAGE_ATTACK, ep_ptr->dam, ep_ptr->killer);
 
     if (!(double_resist || has_resist_pois(player_ptr)) && !check_multishadow(player_ptr)) {
-        (void)BadStatusSetter(player_ptr).poison(player_ptr->poisoned + randint0(ep_ptr->dam) + 10);
+        (void)BadStatusSetter(player_ptr).mod_poison(randint0(ep_ptr->dam) + 10);
     }
 }
 
@@ -77,7 +77,7 @@ void effect_player_nuke(player_type *player_ptr, effect_player_type *ep_ptr)
     if ((double_resist || has_resist_pois(player_ptr)) || check_multishadow(player_ptr))
         return;
 
-    (void)BadStatusSetter(player_ptr).poison(player_ptr->poisoned + randint0(ep_ptr->dam) + 10);
+    (void)BadStatusSetter(player_ptr).mod_poison(randint0(ep_ptr->dam) + 10);
     if (one_in_(5)) /* 6 */
     {
         msg_print(_("奇形的な変身を遂げた!", "You undergo a freakish metamorphosis!"));
index 666b560..0c9a0b4 100644 (file)
@@ -337,7 +337,7 @@ static void hit_trap_pit(player_type *player_ptr, enum trap_type trap_feat_type)
     }
 
     dam = dam * 2;
-    (void)bss.poison(player_ptr->poisoned + randint1(dam));
+    (void)bss.mod_poison(randint1(dam));
     take_hit(player_ptr, DAMAGE_NOESCAPE, dam, trap_name);
 }
 
@@ -515,7 +515,7 @@ void hit_trap(player_type *player_ptr, bool break_trap)
     case TRAP_POISON: {
         msg_print(_("刺激的な緑色のガスに包み込まれた!", "A pungent green gas surrounds you!"));
         if (has_resist_pois(player_ptr) == 0) {
-            (void)BadStatusSetter(player_ptr).poison(player_ptr->poisoned + (TIME_EFFECT)randint0(20) + 10);
+            (void)BadStatusSetter(player_ptr).mod_poison((TIME_EFFECT)randint0(20) + 10);
         }
 
         break;
index 2b064fb..a918b38 100644 (file)
@@ -187,7 +187,7 @@ void process_player_hp_mp(player_type *player_ptr)
         if (deal_damege_by_feat(player_ptr, g_ptr, _("毒気を吸い込んだ!", "The gas poisons you!"), _("に毒された!", "poisons you!"), calc_acid_damage_rate,
                 [](player_type *player_ptr, int damage) {
                     if (!has_resist_pois(player_ptr))
-                        (void)BadStatusSetter(player_ptr).poison(player_ptr->poisoned + damage);
+                        (void)BadStatusSetter(player_ptr).mod_poison(static_cast<TIME_EFFECT>(damage));
                 })) {
             cave_no_regen = true;
             sound(SOUND_TERRAIN_DAMAGE);
index c65fb77..1853817 100644 (file)
@@ -29,7 +29,7 @@ void calc_blow_disease(player_type *player_ptr, monap_type *monap_ptr)
     if (player_ptr->is_dead || check_multishadow(player_ptr))
         return;
 
-    if (!(has_resist_pois(player_ptr) || is_oppose_pois(player_ptr)) && BadStatusSetter(player_ptr).poison(player_ptr->poisoned + randint1(monap_ptr->rlev) + 5))
+    if (!(has_resist_pois(player_ptr) || is_oppose_pois(player_ptr)) && BadStatusSetter(player_ptr).mod_poison(randint1(monap_ptr->rlev) + 5))
         monap_ptr->obvious = true;
 
     bool disease_possibility = randint1(100) > calc_nuke_damage_rate(player_ptr);
index 91698bf..8186af9 100644 (file)
@@ -42,7 +42,7 @@ static void calc_blow_poison(player_type *player_ptr, monap_type *monap_ptr)
         return;
 
     if (!(has_resist_pois(player_ptr) || is_oppose_pois(player_ptr)) && !check_multishadow(player_ptr)
-        && BadStatusSetter(player_ptr).poison(player_ptr->poisoned + randint1(monap_ptr->rlev) + 5))
+        && BadStatusSetter(player_ptr).mod_poison(randint1(monap_ptr->rlev) + 5))
         monap_ptr->obvious = true;
 
     monap_ptr->damage = monap_ptr->damage * calc_nuke_damage_rate(player_ptr) / 100;
index e9e6164..d8f5b99 100644 (file)
@@ -199,7 +199,7 @@ void exe_quaff_potion(player_type *player_ptr, INVENTORY_IDX item)
         }
         case SV_POTION_POISON:
             if (!(has_resist_pois(player_ptr) || is_oppose_pois(player_ptr))) {
-                if (BadStatusSetter(player_ptr).poison(player_ptr->poisoned + randint0(15) + 10)) {
+                if (BadStatusSetter(player_ptr).mod_poison(randint0(15) + 10)) {
                     ident = true;
                 }
             }
index 6c7dab0..676cfeb 100644 (file)
@@ -184,7 +184,7 @@ void chest_trap(player_type *player_ptr, POSITION y, POSITION x, OBJECT_IDX o_id
     if (trap & (CHEST_POISON)) {
         msg_print(_("突如吹き出した緑色のガスに包み込まれた!", "A puff of green gas surrounds you!"));
         if (!(has_resist_pois(player_ptr) || is_oppose_pois(player_ptr))) {
-            (void)BadStatusSetter(player_ptr).poison(player_ptr->poisoned + 10 + randint1(20));
+            (void)BadStatusSetter(player_ptr).mod_poison(10 + randint1(20));
         }
     }
 
index 89e813e..35c534d 100644 (file)
@@ -210,6 +210,11 @@ bool BadStatusSetter::poison(const TIME_EFFECT tmp_v)
     return true;
 }
 
+bool BadStatusSetter::mod_poison(const TIME_EFFECT tmp_v)
+{
+    return this->poison(this->player_ptr->poisoned + tmp_v);
+}
+
 /*!
  * @brief 恐怖の継続時間をセットする / Set "afraid", notice observable changes
  * @param v 継続時間
index 012415d..885528e 100644 (file)
@@ -19,6 +19,7 @@ public:
     bool confusion(const TIME_EFFECT tmp_v);
     bool mod_confusion(const TIME_EFFECT tmp_v);
     bool poison(const TIME_EFFECT tmp_v);
+    bool mod_poison(const TIME_EFFECT tmp_v);
     bool afraidness(const TIME_EFFECT tmp_v);
     bool paralysis(const TIME_EFFECT tmp_v);
     bool hallucination(const TIME_EFFECT tmp_v);