diff options
author | VladimirMangos <vladimir@getmangos.com> | 2011-09-07 00:04:27 +0200 |
---|---|---|
committer | kaelima <kaelima@live.se> | 2011-09-07 00:04:27 +0200 |
commit | 5823b0379b2fa2f5e8d9fddd9f5b8a035db46896 (patch) | |
tree | f12b6a014b7488212ae294f5d520e6b66e8e74d9 /src | |
parent | 85c7a916a0efcbadaabfa28c1424ae1360ba4142 (diff) |
Core/Loot:
- SMSG_LOOT_MONEY_NOTIFY is sent after SMSG_LOOT_CLEAR_MONEY.
- Fixed chat message displayed when looting gold with > 1 member in group.
Diffstat (limited to 'src')
-rwxr-xr-x | src/server/game/Entities/GameObject/GameObject.cpp | 1 | ||||
-rwxr-xr-x | src/server/game/Server/Protocol/Handlers/LootHandler.cpp | 18 |
2 files changed, 9 insertions, 10 deletions
diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index 8716733f46f..d3d95abce14 100755 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -1791,7 +1791,6 @@ void GameObject::SetDestructibleState(GameObjectDestructibleState state, Player* case GO_DESTRUCTIBLE_DAMAGED: { EventInform(m_goInfo->building.damagedEvent); - if (eventInvoker) { sScriptMgr->OnGameObjectDamaged(this, eventInvoker); diff --git a/src/server/game/Server/Protocol/Handlers/LootHandler.cpp b/src/server/game/Server/Protocol/Handlers/LootHandler.cpp index 196679a4c73..7caf8f9ef07 100755 --- a/src/server/game/Server/Protocol/Handlers/LootHandler.cpp +++ b/src/server/game/Server/Protocol/Handlers/LootHandler.cpp @@ -158,6 +158,7 @@ void WorldSession::HandleLootMoneyOpcode(WorldPacket & /*recv_data*/) if (loot) { + loot->NotifyMoneyRemoved(); if (shareMoney && player->GetGroup()) //item, pickpocket and players can be looted only single player { Group* group = player->GetGroup(); @@ -177,28 +178,27 @@ void WorldSession::HandleLootMoneyOpcode(WorldPacket & /*recv_data*/) for (std::vector<Player*>::const_iterator i = playersNear.begin(); i != playersNear.end(); ++i) { + (*i)->ModifyMoney(goldPerPlayer); + (*i)->GetAchievementMgr().UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_LOOT_MONEY, goldPerPlayer); + WorldPacket data(SMSG_LOOT_MONEY_NOTIFY, 4 + 1); data << uint32(goldPerPlayer); - data << uint8(0); // Controls the text displayed 0 is "Your share is...", 1 "You loot..." + data << uint8(playersNear.size() > 1 ? 0 : 1); // Controls the text displayed in chat. 0 is "Your share is..." and 1 is "You loot..." (*i)->GetSession()->SendPacket(&data); - - (*i)->ModifyMoney(goldPerPlayer); - (*i)->GetAchievementMgr().UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_LOOT_MONEY, goldPerPlayer); } } else { + player->ModifyMoney(loot->gold); + player->GetAchievementMgr().UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_LOOT_MONEY, loot->gold); + WorldPacket data(SMSG_LOOT_MONEY_NOTIFY, 4 + 1); data << uint32(loot->gold); - data << uint8(1); + data << uint8(1); // "You loot..." SendPacket(&data); - - player->ModifyMoney(loot->gold); - player->GetAchievementMgr().UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_LOOT_MONEY, loot->gold); } loot->gold = 0; - loot->NotifyMoneyRemoved(); } } |