From 97427a7faff024772e00ff8de5c86c6c7d3cbfd3 Mon Sep 17 00:00:00 2001 From: Hourier Date: Sun, 12 Sep 2021 10:37:40 +0900 Subject: [PATCH] [Refactor] #1473 Replaced hex_revenge_turn() to set_revenge_turn() --- src/realm/realm-hex.cpp | 17 +++++++++-------- src/spell-realm/spells-hex.cpp | 14 ++++++++++++++ src/spell-realm/spells-hex.h | 2 +- 3 files changed, 24 insertions(+), 9 deletions(-) diff --git a/src/realm/realm-hex.cpp b/src/realm/realm-hex.cpp index e46ab7215..6c9f81333 100644 --- a/src/realm/realm-hex.cpp +++ b/src/realm/realm-hex.cpp @@ -279,8 +279,10 @@ concptr do_hex_spell(player_type *player_ptr, spell_hex_type spell, spell_type m SpellHex spell_hex(player_ptr); power = MIN(200, spell_hex.get_revenge_power() * 2); - if (info) + if (info) { return info_damage(0, 0, power); + } + if (cast) { int a = 3 - (player_ptr->pspeed - 100) / 10; byte r = 3 + randint1(3) + MAX(0, MIN(3, a)); @@ -291,16 +293,15 @@ 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; + spell_hex.set_revenge_turn(r, true); spell_hex.set_revenge_power(0, true); msg_print(_("じっと耐えることにした。", "You decide to endure damage for future retribution.")); add = false; } + if (cont) { POSITION rad = 2 + (power / 50); - - hex_revenge_turn(player_ptr)--; - + spell_hex.set_revenge_turn(1, false); if ((spell_hex.get_revenge_turn() == 0) || (power >= 200)) { msg_print(_("我慢が解かれた!", "My patience is at an end!")); if (power) { @@ -313,7 +314,7 @@ 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; + spell_hex.set_revenge_turn(0, true); spell_hex.set_revenge_power(0, true); } } @@ -864,13 +865,13 @@ concptr do_hex_spell(player_type *player_ptr, spell_hex_type spell, spell_type m } hex_revenge_type(player_ptr) = 2; - hex_revenge_turn(player_ptr) = r; + spell_hex.set_revenge_turn(r, true); msg_format(_("あなたは復讐を宣告した。あと %d ターン。", "You declare your revenge. %d turns left."), r); add = false; } if (cont) { - hex_revenge_turn(player_ptr)--; + spell_hex.set_revenge_turn(1, false); if (spell_hex.get_revenge_turn() == 0) { DIRECTION dir; diff --git a/src/spell-realm/spells-hex.cpp b/src/spell-realm/spells-hex.cpp index af01aca5f..3cd862153 100644 --- a/src/spell-realm/spells-hex.cpp +++ b/src/spell-realm/spells-hex.cpp @@ -487,3 +487,17 @@ byte SpellHex::get_revenge_turn() const { return this->player_ptr->magic_num2[2]; } + +/*! + * @brief 復讐の残りターンをセットするか、残りターン数を減らす + * @param turn 残りターン (非負整数であること) + * @param substitution セットならtrue、ターン減少ならfalse + */ +void SpellHex::set_revenge_turn(byte turn, bool substitution) +{ + if (substitution) { + this->player_ptr->magic_num2[2] = turn; + } else { + this->player_ptr->magic_num2[2] -= turn; + } +} diff --git a/src/spell-realm/spells-hex.h b/src/spell-realm/spells-hex.h index 689949200..76e996a5d 100644 --- a/src/spell-realm/spells-hex.h +++ b/src/spell-realm/spells-hex.h @@ -30,6 +30,7 @@ public: int32_t get_revenge_power() const; void set_revenge_power(int32_t power, bool substitution); byte get_revenge_turn() const; + void set_revenge_turn(byte power, bool substitution); private: player_type *player_ptr; @@ -47,5 +48,4 @@ private: void gain_exp_master(const int spell); }; -#define hex_revenge_turn(P_PTR) ((P_PTR)->magic_num2[2]) #define hex_revenge_type(P_PTR) ((P_PTR)->magic_num2[1]) -- 2.11.0