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/Guild.cpp | |
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/Guild.cpp')
-rw-r--r-- | src/server/game/Guilds/Guild.cpp | 9 |
1 files changed, 9 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) { |