From 3cef126d0a449219f154a6498d26831f86220dfa Mon Sep 17 00:00:00 2001 From: Mikhail Redko Date: Fri, 1 Oct 2021 17:33:21 +0300 Subject: 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 --- src/server/game/Guilds/Guild.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'src/server/game/Guilds/Guild.cpp') diff --git a/src/server/game/Guilds/Guild.cpp b/src/server/game/Guilds/Guild.cpp index 690ecc14e52..01d1bfc3ae4 100644 --- a/src/server/game/Guilds/Guild.cpp +++ b/src/server/game/Guilds/Guild.cpp @@ -2347,6 +2347,15 @@ bool Guild::ChangeMemberRank(CharacterDatabaseTransaction trans, ObjectGuid guid return false; } +uint64 Guild::GetMemberAvailableMoneyForRepairItems(ObjectGuid guid) const +{ + Member const* member = GetMember(guid); + if (!member) + return 0; + + return std::min(m_bankMoney, static_cast(_GetMemberRemainingMoney(*member))); +} + // Bank (items move) void Guild::SwapItems(Player* player, uint8 tabId, uint8 slotId, uint8 destTabId, uint8 destSlotId, uint32 splitedAmount) { -- cgit v1.2.3