OSDN Git Service

[Fix] #4489 賭け金の倍率と払戻金が同一変数で管理されていた設計不具合を修正し、別々のフィールドとして再定義した
authorHourier <66951241+Hourier@users.noreply.github.com>
Thu, 15 Aug 2024 04:03:01 +0000 (13:03 +0900)
committerHourier <66951241+Hourier@users.noreply.github.com>
Wed, 21 Aug 2024 13:29:35 +0000 (22:29 +0900)
src/market/melee-arena.cpp
src/system/building-type-definition.cpp
src/system/building-type-definition.h
src/world/world-turn-processor.cpp

index 498fbc2..ef9ac59 100644 (file)
@@ -73,15 +73,13 @@ bool melee_arena_comm(PlayerType *player_ptr)
             return false;
         }
 
-        if (i >= '1' && i <= '4') {
+        if ((i >= '1') && (i <= '4')) {
             melee_arena.set_bet_number(i - '1');
             melee_arena.update_odds();
             break;
         }
 
-        else {
-            bell();
-        }
+        bell();
     }
 
     clear_bldg(4, 4);
@@ -108,7 +106,7 @@ bool melee_arena_comm(PlayerType *player_ptr)
     }
 
     msg_print(nullptr);
-    melee_arena.set_odds(*wager);
+    melee_arena.set_payback(*wager);
     melee_arena.set_wager(*wager);
     player_ptr->au -= *wager;
     reset_tim_flags(player_ptr);
index 6358f84..863f4bf 100644 (file)
@@ -48,14 +48,14 @@ void MeleeArena::set_wager(int value)
     this->wager = value;
 }
 
-int MeleeArena::get_odds() const
+int MeleeArena::get_payback() const
 {
-    return this->odds;
+    return this->payback;
 }
 
-void MeleeArena::set_odds(int input_wager)
+void MeleeArena::set_payback(int input_wager)
 {
-    this->odds = std::max(input_wager + 1, input_wager * this->get_odds() / 100);
+    this->payback = std::max(input_wager + 1, input_wager * this->odds / 100);
 }
 
 void MeleeArena::update_odds()
index 8b414dc..787fbd1 100644 (file)
@@ -53,8 +53,8 @@ public:
     void set_bet_number(int value);
     int get_wager() const;
     void set_wager(int value);
-    int get_odds() const;
-    void set_odds(int input_wager);
+    int get_payback() const;
+    void set_payback(int input_wager);
     void update_odds();
     MeleeGladiator &get_gladiator(int n);
     const MeleeGladiator &get_gladiator(int n) const;
@@ -70,6 +70,7 @@ private:
     int bet_number = 0;
     int wager = 0; //!< @detail 引き分け時の払い戻しに必要.
     int odds = 0;
+    int payback = 0;
     std::array<MeleeGladiator, NUM_GLADIATORS> gladiators{};
 
     int decide_max_level() const;
index f4377d0..8f3f61d 100644 (file)
@@ -181,7 +181,7 @@ void WorldTurnProcessor::process_monster_arena_winner(int win_m_idx)
     auto &melee_arena = MeleeArena::get_instance();
     if (melee_arena.matches_bet_number(win_m_idx - 1)) {
         msg_print(_("おめでとうございます。", "Congratulations."));
-        const auto odds = melee_arena.get_odds();
+        const auto odds = melee_arena.get_payback();
         msg_format(_("%d$を受け取った。", "You received %d gold."), odds);
         this->player_ptr->au += odds;
     } else {