diff options
Diffstat (limited to 'src/server/game/Handlers/LootHandler.cpp')
-rwxr-xr-x | src/server/game/Handlers/LootHandler.cpp | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/server/game/Handlers/LootHandler.cpp b/src/server/game/Handlers/LootHandler.cpp index aa4b7b85023..897f03d0850 100755 --- a/src/server/game/Handlers/LootHandler.cpp +++ b/src/server/game/Handlers/LootHandler.cpp @@ -181,9 +181,19 @@ void WorldSession::HandleLootMoneyOpcode(WorldPacket& /*recvData*/) (*i)->ModifyMoney(goldPerPlayer); (*i)->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_LOOT_MONEY, goldPerPlayer); + uint32 guildGold = 0; + + if (Guild* guild = sGuildMgr->GetGuildById((*i)->GetGuildId())) + { + guildGold = CalculatePctN(goldPerPlayer, (*i)->GetTotalAuraModifier(SPELL_AURA_DEPOSIT_BONUS_MONEY_IN_GUILD_BANK_ON_LOOT)); + if (guildGold) + guild->HandleMemberDepositMoney(this, guildGold, true); + } + WorldPacket data(SMSG_LOOT_MONEY_NOTIFY, 4 + 1); data << uint32(goldPerPlayer); data << uint8(playersNear.size() > 1 ? 0 : 1); // Controls the text displayed in chat. 0 is "Your share is..." and 1 is "You loot..." + data << uint32(guildGold); (*i)->GetSession()->SendPacket(&data); } } @@ -192,9 +202,19 @@ void WorldSession::HandleLootMoneyOpcode(WorldPacket& /*recvData*/) player->ModifyMoney(loot->gold); player->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_LOOT_MONEY, loot->gold); + uint32 guildGold = 0; + + if (Guild* guild = sGuildMgr->GetGuildById(player->GetGuildId())) + { + guildGold = CalculatePctN(loot->gold, player->GetTotalAuraModifier(SPELL_AURA_DEPOSIT_BONUS_MONEY_IN_GUILD_BANK_ON_LOOT)); + if (guildGold) + guild->HandleMemberDepositMoney(this, guildGold, true); + } + WorldPacket data(SMSG_LOOT_MONEY_NOTIFY, 4 + 1); data << uint32(loot->gold); data << uint8(1); // "You loot..." + data << uint32(guildGold); SendPacket(&data); } |