aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Handlers/LootHandler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game/Handlers/LootHandler.cpp')
-rw-r--r--src/server/game/Handlers/LootHandler.cpp24
1 files changed, 11 insertions, 13 deletions
diff --git a/src/server/game/Handlers/LootHandler.cpp b/src/server/game/Handlers/LootHandler.cpp
index 5b96b4260e4..c9ac113c623 100644
--- a/src/server/game/Handlers/LootHandler.cpp
+++ b/src/server/game/Handlers/LootHandler.cpp
@@ -145,7 +145,7 @@ void WorldSession::HandleAutostoreLootItemOpcode(WorldPackets::Loot::LootItem& p
void WorldSession::HandleLootMoneyOpcode(WorldPackets::Loot::LootMoney& /*packet*/)
{
Player* player = GetPlayer();
- for (std::pair<ObjectGuid, ObjectGuid> const& lootView : player->GetAELootView())
+ for (std::pair<ObjectGuid const, ObjectGuid> const& lootView : player->GetAELootView())
{
ObjectGuid guid = lootView.second;
Loot* loot = nullptr;
@@ -222,34 +222,32 @@ void WorldSession::HandleLootMoneyOpcode(WorldPackets::Loot::LootMoney& /*packet
playersNear.push_back(member);
}
- uint32 goldPerPlayer = uint32((loot->gold) / (playersNear.size()));
+ uint64 goldPerPlayer = uint64(loot->gold / playersNear.size());
for (std::vector<Player*>::const_iterator i = playersNear.begin(); i != playersNear.end(); ++i)
{
- (*i)->ModifyMoney(goldPerPlayer);
- (*i)->UpdateCriteria(CRITERIA_TYPE_LOOT_MONEY, goldPerPlayer);
+ uint64 goldMod = CalculatePct(goldPerPlayer, (*i)->GetTotalAuraModifierByMiscValue(SPELL_AURA_MOD_MONEY_GAIN, 1));
- if (Guild* guild = sGuildMgr->GetGuildById((*i)->GetGuildId()))
- if (uint32 guildGold = CalculatePct(goldPerPlayer, (*i)->GetTotalAuraModifier(SPELL_AURA_DEPOSIT_BONUS_MONEY_IN_GUILD_BANK_ON_LOOT)))
- guild->HandleMemberDepositMoney(this, guildGold, true);
+ (*i)->ModifyMoney(goldPerPlayer + goldMod);
+ (*i)->UpdateCriteria(CRITERIA_TYPE_LOOT_MONEY, goldPerPlayer);
WorldPackets::Loot::LootMoneyNotify packet;
packet.Money = goldPerPlayer;
+ packet.MoneyMod = goldMod;
packet.SoleLooter = playersNear.size() <= 1 ? true : false;
(*i)->SendDirectMessage(packet.Write());
}
}
else
{
- player->ModifyMoney(loot->gold);
- player->UpdateCriteria(CRITERIA_TYPE_LOOT_MONEY, loot->gold);
+ uint64 goldMod = CalculatePct(loot->gold, player->GetTotalAuraModifierByMiscValue(SPELL_AURA_MOD_MONEY_GAIN, 1));
- if (Guild* guild = sGuildMgr->GetGuildById(player->GetGuildId()))
- if (uint32 guildGold = CalculatePct(loot->gold, player->GetTotalAuraModifier(SPELL_AURA_DEPOSIT_BONUS_MONEY_IN_GUILD_BANK_ON_LOOT)))
- guild->HandleMemberDepositMoney(this, guildGold, true);
+ player->ModifyMoney(loot->gold + goldMod);
+ player->UpdateCriteria(CRITERIA_TYPE_LOOT_MONEY, loot->gold);
WorldPackets::Loot::LootMoneyNotify packet;
packet.Money = loot->gold;
+ packet.MoneyMod = goldMod;
packet.SoleLooter = true; // "You loot..."
SendPacket(packet.Write());
}
@@ -447,7 +445,7 @@ void WorldSession::DoLootRelease(ObjectGuid lguid)
void WorldSession::DoLootReleaseAll()
{
std::unordered_map<ObjectGuid, ObjectGuid> lootView = _player->GetAELootView();
- for (std::pair<ObjectGuid, ObjectGuid> lootPair : lootView)
+ for (std::pair<ObjectGuid const, ObjectGuid> const& lootPair : lootView)
DoLootRelease(lootPair.second);
}