diff options
| author | Mikhail Redko <ovitnez@gmail.com> | 2021-10-01 17:33:21 +0300 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2022-03-19 16:55:55 +0100 |
| commit | 72a4fccaab4e83801c33c533cbcfdba1c6c43022 (patch) | |
| tree | 5703361b82071bd33b551536450a91d83193cf02 /src/server/game/Guilds | |
| parent | e33b3e4a81c64fc7c9918c2c15f66f1f259d1fde (diff) | |
Core/Misc: Improvement item durability repair logic. (#26911)
* Core/Misc: Improvement item durability repair logic.
* Move item repair cost calculation logic from Player::DurabilityRepair to Item::CalculateDurabilityRepairCost
* Make item repair cost calculation more congruent with client logic (std::round)
* Do not repair items if player does not have enough money to pay for the repair of all items at once
* Withdrawing money from guild bank only once to avoid spam in the guild bank log and reduce number of transactions in the database
Closes #25937
* Fix build
* Remove unnecessary scope
* Fix visual studio warning and one more check for reliability
(cherry picked from commit 3cef126d0a449219f154a6498d26831f86220dfa)
Diffstat (limited to 'src/server/game/Guilds')
| -rw-r--r-- | src/server/game/Guilds/Guild.cpp | 9 | ||||
| -rw-r--r-- | src/server/game/Guilds/Guild.h | 1 |
2 files changed, 10 insertions, 0 deletions
diff --git a/src/server/game/Guilds/Guild.cpp b/src/server/game/Guilds/Guild.cpp index 0f79f57358c..83c8894fc82 100644 --- a/src/server/game/Guilds/Guild.cpp +++ b/src/server/game/Guilds/Guild.cpp @@ -2884,6 +2884,15 @@ bool Guild::IsMember(ObjectGuid guid) const return m_members.find(guid) != m_members.end(); } +uint64 Guild::GetMemberAvailableMoneyForRepairItems(ObjectGuid guid) const +{ + Member const* member = GetMember(guid); + if (!member) + return 0; + + return std::min(m_bankMoney, static_cast<uint64>(_GetMemberRemainingMoney(*member))); +} + // Bank (items move) void Guild::SwapItems(Player* player, uint8 tabId, uint8 slotId, uint8 destTabId, uint8 destSlotId, uint32 splitedAmount) { diff --git a/src/server/game/Guilds/Guild.h b/src/server/game/Guilds/Guild.h index d02feb29fed..179ee6073de 100644 --- a/src/server/game/Guilds/Guild.h +++ b/src/server/game/Guilds/Guild.h @@ -824,6 +824,7 @@ class TC_GAME_API Guild bool ChangeMemberRank(CharacterDatabaseTransaction trans, ObjectGuid guid, GuildRankId newRank); bool IsMember(ObjectGuid guid) const; uint32 GetMembersCount() const { return uint32(m_members.size()); } + uint64 GetMemberAvailableMoneyForRepairItems(ObjectGuid guid) const; // Bank void SwapItems(Player* player, uint8 tabId, uint8 slotId, uint8 destTabId, uint8 destSlotId, uint32 splitedAmount); |
