OSDN Git Service

[Refactor] #1558 Replaced set_slow() to slowness() and transferred it into the class...
authorHourier <66951241+Hourier@users.noreply.github.com>
Mon, 20 Sep 2021 07:21:46 +0000 (16:21 +0900)
committerHourier <66951241+Hourier@users.noreply.github.com>
Wed, 22 Sep 2021 11:37:03 +0000 (20:37 +0900)
14 files changed:
src/cmd-action/cmd-shoot.cpp
src/cmd-item/cmd-usestaff.cpp
src/core/magic-effects-timeout-reducer.cpp
src/effect/effect-player-oldies.cpp
src/effect/effect-player-resist-hurt.cpp
src/effect/effect-player-spirit.cpp
src/grid/trap.cpp
src/monster-attack/monster-attack-switcher.cpp
src/mspell/mspell-dispel.cpp
src/mspell/mspell-status.cpp
src/mutation/mutation-processor.cpp
src/object-use/quaff-execution.cpp
src/status/bad-status-setter.cpp
src/status/bad-status-setter.h

index dc05546..d8650da 100644 (file)
@@ -72,7 +72,8 @@ void do_cmd_fire(player_type *player_ptr, SPELL_IDX snipe_type)
     auto effects = player_ptr->effects();
     if (snipe_type == SP_FINAL) {
         msg_print(_("射撃の反動が体を襲った。", "The weapon's recoil stuns you. "));
-        (void)set_slow(player_ptr, player_ptr->slow + randint0(7) + 7, false);
+        BadStatusSetter bss(player_ptr);
+        (void)bss.slowness(player_ptr->slow + randint0(7) + 7, false);
         (void)set_stun(player_ptr, effects->stun()->current() + randint1(25));
     }
 }
index 597cb9b..705dd2c 100644 (file)
@@ -86,7 +86,7 @@ int staff_effect(player_type *player_ptr, OBJECT_SUBTYPE_VALUE sval, bool *use_c
 
         break;
     case SV_STAFF_SLOWNESS: {
-        if (set_slow(player_ptr, player_ptr->slow + randint1(30) + 15, false))
+        if (bss.slowness(player_ptr->slow + randint1(30) + 15, false))
             ident = true;
         break;
     }
index a33e0a2..b5fb098 100644 (file)
@@ -142,7 +142,7 @@ void reduce_magic_effects_timeout(player_type *player_ptr)
     }
 
     if (player_ptr->slow) {
-        (void)set_slow(player_ptr, player_ptr->slow - dec_count, true);
+        (void)bss.slowness(player_ptr->slow - dec_count, true);
     }
 
     if (player_ptr->protevil) {
index 579c361..7e6e0a1 100644 (file)
@@ -29,10 +29,11 @@ void effect_player_old_speed(player_type *player_ptr, effect_player_type *ep_ptr
 
 void effect_player_old_slow(player_type *player_ptr)
 {
-    if (player_ptr->blind)
+    if (player_ptr->blind) {
         msg_print(_("何か遅いもので攻撃された!", "You are hit by something slow!"));
+    }
 
-    (void)set_slow(player_ptr, player_ptr->slow + randint0(4) + 4, false);
+    (void)BadStatusSetter(player_ptr).slowness(player_ptr->slow + randint0(4) + 4, false);
 }
 
 void effect_player_old_sleep(player_type *player_ptr, effect_player_type *ep_ptr)
index 212fae4..f794486 100644 (file)
@@ -370,10 +370,13 @@ void effect_player_rocket(player_type *player_ptr, effect_player_type *ep_ptr)
 
 void effect_player_inertial(player_type *player_ptr, effect_player_type *ep_ptr)
 {
-    if (player_ptr->blind)
+    if (player_ptr->blind) {
         msg_print(_("何か遅いもので攻撃された!", "You are hit by something slow!"));
-    if (!check_multishadow(player_ptr))
-        (void)set_slow(player_ptr, player_ptr->slow + randint0(4) + 4, false);
+    }
+
+    if (!check_multishadow(player_ptr)) {
+        (void)BadStatusSetter(player_ptr).slowness(player_ptr->slow + randint0(4) + 4, false);
+    }
 
     ep_ptr->get_damage = take_hit(player_ptr, DAMAGE_ATTACK, ep_ptr->dam, ep_ptr->killer);
 }
@@ -529,8 +532,11 @@ void effect_player_gravity(player_type *player_ptr, effect_player_type *ep_ptr)
 
     if (!check_multishadow(player_ptr)) {
         teleport_player(player_ptr, 5, TELEPORT_PASSIVE);
-        if (!player_ptr->levitation)
-            (void)set_slow(player_ptr, player_ptr->slow + randint0(4) + 4, false);
+        BadStatusSetter bss(player_ptr);
+        if (!player_ptr->levitation) {
+            (void)bss.slowness(player_ptr->slow + randint0(4) + 4, false);
+        }
+
         if (!(has_resist_sound(player_ptr) || player_ptr->levitation)) {
             int plus_stun = (randint1((ep_ptr->dam > 90) ? 35 : (ep_ptr->dam / 3 + 5)));
             (void)set_stun(player_ptr, player_ptr->effects()->stun()->current() + plus_stun);
@@ -634,18 +640,14 @@ void effect_player_hand_doom(player_type *player_ptr, effect_player_type *ep_ptr
 
 void effect_player_void(player_type *player_ptr, effect_player_type *ep_ptr)
 {
-    if (player_ptr->blind)
-        msg_print(_("何かに身体が引っ張りこまれる!", "Something absorbs you!"));
-    else
-        msg_print(_("周辺の空間が歪んだ。", "Sight warps around you."));
-
-    if (!check_multishadow(player_ptr)) {
-        if (!player_ptr->levitation && !player_ptr->anti_tele)
-            (void)set_slow(player_ptr, player_ptr->slow + randint0(4) + 4, false);
+    auto effect_mes = player_ptr->blind ? _("何かに身体が引っ張りこまれる!", "Something absorbs you!")
+                                        : _("周辺の空間が歪んだ。", "Sight warps around you.");
+    msg_print(effect_mes);
+    if (!check_multishadow(player_ptr) && !player_ptr->levitation && !player_ptr->anti_tele) {
+        (void)BadStatusSetter(player_ptr).slowness(player_ptr->slow + randint0(4) + 4, false);
     }
 
     ep_ptr->dam = ep_ptr->dam * calc_void_damage_rate(player_ptr, CALC_RAND) / 100;
-
     if (!player_ptr->levitation || one_in_(13)) {
         inventory_damage(player_ptr, BreakerCold(), 2);
     }
@@ -663,7 +665,7 @@ void effect_player_abyss(player_type *player_ptr, effect_player_type *ep_ptr)
     }
 
     if (!player_ptr->levitation) {
-        (void)set_slow(player_ptr, player_ptr->slow + randint0(4) + 4, false);
+        (void)bss.slowness(player_ptr->slow + randint0(4) + 4, false);
     }
 
     if (player_ptr->blind) {
@@ -671,7 +673,6 @@ void effect_player_abyss(player_type *player_ptr, effect_player_type *ep_ptr)
     }
 
     msg_print(_("深淵から何かがあなたを覗き込んでいる!", "Something gazes you from abyss!"));
-
     if (!has_resist_chaos(player_ptr)) {
         (void)bss.hallucination(player_ptr->hallucinated + randint1(10));
     }
index 93f971a..1db5c70 100644 (file)
@@ -130,7 +130,7 @@ void effect_player_brain_smash(player_type *player_ptr, effect_player_type *ep_p
         (void)bss.paralysis(player_ptr->paralyzed + randint0(4) + 4);
     }
 
-    (void)set_slow(player_ptr, player_ptr->slow + randint0(4) + 4, false);
+    (void)bss.slowness(player_ptr->slow + randint0(4) + 4, false);
 
     while (randint0(100 + ep_ptr->rlev / 2) > (MAX(5, player_ptr->skill_sav)))
         (void)do_dec_stat(player_ptr, A_INT);
index 516cd39..eff453f 100644 (file)
@@ -374,7 +374,7 @@ static void hit_trap_lose_stat(player_type *player_ptr, int stat)
 static void hit_trap_slow(player_type *player_ptr)
 {
     if (hit_trap_dart(player_ptr)) {
-        set_slow(player_ptr, player_ptr->slow + randint0(20) + 20, false);
+        (void)BadStatusSetter(player_ptr).slowness(player_ptr->slow + randint0(20) + 20, false);
     }
 }
 
index e9eb377..6edcb91 100644 (file)
@@ -282,7 +282,7 @@ static void calc_blow_inertia(player_type *player_ptr, monap_type *monap_ptr)
     if (player_ptr->is_dead || check_multishadow(player_ptr))
         return;
 
-    if (set_slow(player_ptr, (player_ptr->slow + 4 + randint0(monap_ptr->rlev / 10)), false))
+    if (BadStatusSetter(player_ptr).slowness(player_ptr->slow + 4 + randint0(monap_ptr->rlev / 10), false))
         monap_ptr->obvious = true;
 }
 
index 937ec58..d7caf16 100644 (file)
@@ -38,7 +38,7 @@ static void dispel_player(player_type *player_ptr)
 {
     (void)set_fast(player_ptr, 0, true);
     set_lightspeed(player_ptr, 0, true);
-    (void)set_slow(player_ptr, 0, true);
+    (void)BadStatusSetter(player_ptr).slowness(0, true);
     (void)set_shield(player_ptr, 0, true);
     (void)set_blessed(player_ptr, 0, true);
     (void)set_tsuyoshi(player_ptr, 0, true);
index b0ee446..140730f 100644 (file)
@@ -485,7 +485,7 @@ MonsterSpellResult spell_RF5_SLOW(MONSTER_IDX m_idx, player_type *player_ptr, MO
             _("しかし効力を跳ね返した!", "You resist the effects!"), resist, saving_throw, TARGET_TYPE);
 
         if (!resist && !saving_throw) {
-            (void)set_slow(player_ptr, player_ptr->slow + randint0(4) + 4, false);
+            (void)BadStatusSetter(player_ptr).slowness(player_ptr->slow + randint0(4) + 4, false);
         }
 
         update_smart_learn(player_ptr, m_idx, DRS_FREE);
index 736b3ba..aceb394 100644 (file)
@@ -221,17 +221,15 @@ void process_world_aux_mutation(player_type *player_ptr)
         disturb(player_ptr, false, true);
         if (one_in_(2)) {
             msg_print(_("精力的でなくなった気がする。", "You feel less energetic."));
-
             if (player_ptr->fast > 0) {
                 set_fast(player_ptr, 0, true);
             } else {
-                set_slow(player_ptr, randint1(30) + 10, false);
+                (void)bss.slowness(randint1(30) + 10, false);
             }
         } else {
             msg_print(_("精力的になった気がする。", "You feel more energetic."));
-
             if (player_ptr->slow > 0) {
-                set_slow(player_ptr, 0, true);
+                (void)bss.slowness(0, true);
             } else {
                 set_fast(player_ptr, randint1(30) + 10, false);
             }
index 1981918..5251f96 100644 (file)
@@ -172,7 +172,7 @@ void exe_quaff_potion(player_type *player_ptr, INVENTORY_IDX item)
             break;
 
         case SV_POTION_SLOWNESS:
-            if (set_slow(player_ptr, randint1(25) + 15, false))
+            if (BadStatusSetter(player_ptr).slowness(randint1(25) + 15, false))
                 ident = true;
             break;
 
index d4f241e..0126379 100644 (file)
@@ -362,37 +362,42 @@ bool BadStatusSetter::hallucination(TIME_EFFECT v)
  * @param do_dec 現在の継続時間より長い値のみ上書きする
  * @return ステータスに影響を及ぼす変化があった場合TRUEを返す。
  */
-bool set_slow(player_type *player_ptr, TIME_EFFECT v, bool do_dec)
+bool BadStatusSetter::slowness(TIME_EFFECT v, bool do_dec)
 {
     bool notice = false;
     v = (v > 10000) ? 10000 : (v < 0) ? 0 : v;
 
-    if (player_ptr->is_dead)
+    if (this->player_ptr->is_dead) {
         return false;
+    }
 
     if (v) {
-        if (player_ptr->slow && !do_dec) {
-            if (player_ptr->slow > v)
+        if (this->player_ptr->slow && !do_dec) {
+            if (this->player_ptr->slow > v) {
                 return false;
-        } else if (!player_ptr->slow) {
+            }
+        } else if (!this->player_ptr->slow) {
             msg_print(_("体の動きが遅くなってしまった!", "You feel yourself moving slower!"));
             notice = true;
         }
     } else {
-        if (player_ptr->slow) {
+        if (this->player_ptr->slow) {
             msg_print(_("動きの遅さがなくなったようだ。", "You feel yourself speed up."));
             notice = true;
         }
     }
 
-    player_ptr->slow = v;
-    if (!notice)
+    this->player_ptr->slow = v;
+    if (!notice) {
         return false;
+    }
 
-    if (disturb_state)
-        disturb(player_ptr, false, false);
-    player_ptr->update |= (PU_BONUS);
-    handle_stuff(player_ptr);
+    if (disturb_state) {
+        disturb(this->player_ptr, false, false);
+    }
+
+    this->player_ptr->update |= PU_BONUS;
+    handle_stuff(this->player_ptr);
     return true;
 }
 
index a6a52f4..63afcde 100644 (file)
@@ -15,11 +15,11 @@ public:
     bool afraidness(TIME_EFFECT v);
     bool paralysis(TIME_EFFECT v);
     bool hallucination(TIME_EFFECT v);
+    bool slowness(TIME_EFFECT v, bool do_dec);
 
 private:
     player_type *player_ptr;
 };
 
-bool set_slow(player_type *player_ptr, TIME_EFFECT v, bool do_dec);
 bool set_stun(player_type *player_ptr, TIME_EFFECT v);
 bool set_cut(player_type *player_ptr, TIME_EFFECT v);