diff options
author | Shauren <shauren.trinity@gmail.com> | 2013-02-01 11:38:55 +0100 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2013-02-01 11:38:55 +0100 |
commit | 0bf29d45d112130ee4b03fbb66d888964edadc6a (patch) | |
tree | 60ff8db1548acff802f4216366eb6f5ea139c1cc /src/server/game/Guilds/Guild.cpp | |
parent | dc5e9c80fca8a7e17c8d54dd9e7a150c71a7c810 (diff) |
Core/Players: Prevent trading, taking gold from mail and withdrawing from guild bank if it would put the player over gold cap.
Closes #4015
Diffstat (limited to 'src/server/game/Guilds/Guild.cpp')
-rw-r--r-- | src/server/game/Guilds/Guild.cpp | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/server/game/Guilds/Guild.cpp b/src/server/game/Guilds/Guild.cpp index 376ee011638..c424e5d3ffe 100644 --- a/src/server/game/Guilds/Guild.cpp +++ b/src/server/game/Guilds/Guild.cpp @@ -1755,16 +1755,20 @@ bool Guild::HandleMemberWithdrawMoney(WorldSession* session, uint32 amount, bool sScriptMgr->OnGuildMemberWitdrawMoney(this, player, amount, repair); SQLTransaction trans = CharacterDatabase.BeginTransaction(); - // Update remaining money amount - member->UpdateBankWithdrawValue(trans, GUILD_BANK_MAX_TABS, amount); - // Remove money from bank - _ModifyBankMoney(trans, amount, false); // Add money to player (if required) if (!repair) { - player->ModifyMoney(amount); + if (!player->ModifyMoney(amount)) + 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->GetGUIDLow(), amount); CharacterDatabase.CommitTransaction(trans); |