OSDN Git Service

[Refactor] #1473 Replaced casting_hex_num() to set_revenge_power()
authorHourier <grapefox.whitelucifer.0408@gmail.com>
Sat, 11 Sep 2021 15:27:29 +0000 (00:27 +0900)
committerHourier <66951241+Hourier@users.noreply.github.com>
Tue, 14 Sep 2021 14:07:49 +0000 (23:07 +0900)
src/realm/realm-hex.cpp
src/spell-realm/spells-hex.cpp
src/spell-realm/spells-hex.h

index 3e96014..f615e1e 100644 (file)
@@ -268,13 +268,17 @@ concptr do_hex_spell(player_type *player_ptr, spell_hex_type spell, spell_type m
         }
         break;
 
-    case HEX_PATIENCE:
-        if (name)
+    case HEX_PATIENCE: {
+        if (name) {
             return _("我慢", "Patience");
-        if (desc)
-            return _(
-                "数ターン攻撃を耐えた後、受けたダメージを地獄の業火として周囲に放出する。", "Bursts hell fire strongly after enduring damage for a few turns.");
-        power = MIN(200, (SpellHex(player_ptr).get_revenge_power() * 2));
+        }
+
+        if (desc) {
+            return _("数ターン攻撃を耐えた後、受けたダメージを地獄の業火として周囲に放出する。", "Bursts hell fire strongly after enduring damage for a few turns.");
+        }
+
+        SpellHex spell_hex(player_ptr);
+        power = MIN(200, spell_hex.get_revenge_power() * 2);
         if (info)
             return info_damage(0, 0, power);
         if (cast) {
@@ -288,7 +292,7 @@ concptr do_hex_spell(player_type *player_ptr, spell_hex_type spell, spell_type m
 
             hex_revenge_type(player_ptr) = 1;
             hex_revenge_turn(player_ptr) = r;
-            hex_revenge_power(player_ptr) = 0;
+            spell_hex.set_revenge_power(0, true);
             msg_print(_("じっと耐えることにした。", "You decide to endure damage for future retribution."));
             add = false;
         }
@@ -310,10 +314,11 @@ concptr do_hex_spell(player_type *player_ptr, spell_hex_type spell, spell_type m
                 /* Reset */
                 hex_revenge_type(player_ptr) = 0;
                 hex_revenge_turn(player_ptr) = 0;
-                hex_revenge_power(player_ptr) = 0;
+                spell_hex.set_revenge_power(0, true);
             }
         }
         break;
+    }
 
         /*** 2nd book (8-15) ***/
     case HEX_ICE_ARMOR:
@@ -833,15 +838,21 @@ concptr do_hex_spell(player_type *player_ptr, spell_hex_type spell, spell_type m
         }
         break;
 
-    case HEX_REVENGE:
-        if (name)
+    case HEX_REVENGE: {
+        if (name) {
             return _("復讐の宣告", "Revenge sentence");
-        if (desc)
-            return _(
-                "数ターン後にそれまで受けたダメージに応じた威力の地獄の劫火の弾を放つ。", "Fires a ball of hell fire to try avenging damage from a few turns.");
-        power = SpellHex(player_ptr).get_revenge_power();
-        if (info)
+        }
+
+        if (desc) {
+            return _("数ターン後にそれまで受けたダメージに応じた威力の地獄の劫火の弾を放つ。", "Fires a ball of hell fire to try avenging damage from a few turns.");
+        }
+
+        SpellHex spell_hex(player_ptr);
+        power = spell_hex.get_revenge_power();
+        if (info) {
             return info_damage(0, 0, power);
+        }
+
         if (cast) {
             byte r;
             int a = 3 - (player_ptr->pspeed - 100) / 10;
@@ -857,9 +868,9 @@ concptr do_hex_spell(player_type *player_ptr, spell_hex_type spell, spell_type m
             msg_format(_("あなたは復讐を宣告した。あと %d ターン。", "You declare your revenge. %d turns left."), r);
             add = false;
         }
+
         if (cont) {
             hex_revenge_turn(player_ptr)--;
-
             if (hex_revenge_turn(player_ptr) <= 0) {
                 DIRECTION dir;
 
@@ -878,11 +889,14 @@ concptr do_hex_spell(player_type *player_ptr, spell_hex_type spell, spell_type m
                 } else {
                     msg_print(_("復讐する気が失せた。", "You are not in the mood for revenge."));
                 }
-                hex_revenge_power(player_ptr) = 0;
+
+                spell_hex.set_revenge_power(0, true);
             }
         }
+
         break;
     }
+    }
 
     /* start casting */
     if (cast && add) {
index 444bba3..b5f15f6 100644 (file)
@@ -361,7 +361,7 @@ void SpellHex::store_vengeful_damage(HIT_POINT dam)
         return;
     }
 
-    hex_revenge_power(this->player_ptr) += dam;
+    this->set_revenge_power(dam, false);
 }
 
 /*!
@@ -473,3 +473,12 @@ int32_t SpellHex::get_revenge_power() const
 {
     return this->player_ptr->magic_num1[2];
 }
+
+void SpellHex::set_revenge_power(int32_t power, bool substitution)
+{
+    if (substitution) {
+        this->player_ptr->magic_num1[2] = power;
+    } else {
+        this->player_ptr->magic_num1[2] += power;
+    }
+}
index 47426e1..e9b9355 100644 (file)
@@ -28,6 +28,7 @@ public:
     int32_t get_casting_num() const;
     void add_casting_num(bool is_incremental);
     int32_t get_revenge_power() const;
+    void set_revenge_power(int32_t power, bool substitution);
 
 private:
     player_type *player_ptr;
@@ -45,6 +46,5 @@ private:
     void gain_exp_master(const int spell);
 };
 
-#define hex_revenge_power(P_PTR) ((P_PTR)->magic_num1[2])
 #define hex_revenge_turn(P_PTR) ((P_PTR)->magic_num2[2])
 #define hex_revenge_type(P_PTR) ((P_PTR)->magic_num2[1])