From 4f5a63f1d174fd868eacbe558f8d71cd440a5c3d Mon Sep 17 00:00:00 2001 From: blinkysc <37940565+blinkysc@users.noreply.github.com> Date: Tue, 3 Feb 2026 20:42:26 -0600 Subject: [PATCH] fix(Core/Guild): Fix rare guild bank bug (#24614) Co-authored-by: blinkysc --- src/server/game/Guilds/Guild.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/server/game/Guilds/Guild.cpp b/src/server/game/Guilds/Guild.cpp index d38838121..7ca122b9d 100644 --- a/src/server/game/Guilds/Guild.cpp +++ b/src/server/game/Guilds/Guild.cpp @@ -1715,19 +1715,23 @@ bool Guild::HandleMemberWithdrawMoney(WorldSession* session, uint32 amount, bool sScriptMgr->OnGuildMemberWitdrawMoney(this, player, amount, repair); CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); - // Add money to player (if required) + + if (!_ModifyBankMoney(trans, amount, false)) + return false; + if (!repair) { if (!player->ModifyMoney(amount)) + { + _ModifyBankMoney(trans, amount, true); return false; + } player->SaveGoldToDB(trans); } // Update remaining money amount member->UpdateBankWithdrawValue(trans, GUILD_BANK_MAX_TABS, amount); - // Remove money from bank - _ModifyBankMoney(trans, amount, false); // Log guild bank event _LogBankEvent(trans, repair ? GUILD_BANK_LOG_REPAIR_MONEY : GUILD_BANK_LOG_WITHDRAW_MONEY, uint8(0), player->GetGUID(), amount);