diff options
-rw-r--r-- | src/server/game/Groups/Group.cpp | 12 | ||||
-rw-r--r-- | src/server/game/Groups/Group.h | 2 | ||||
-rw-r--r-- | src/server/game/Handlers/GroupHandler.cpp | 3 |
3 files changed, 10 insertions, 7 deletions
diff --git a/src/server/game/Groups/Group.cpp b/src/server/game/Groups/Group.cpp index 791960facd5..9b0b13f0518 100644 --- a/src/server/game/Groups/Group.cpp +++ b/src/server/game/Groups/Group.cpp @@ -1385,21 +1385,21 @@ void Group::MasterLoot(Loot* loot, WorldObject* pLootedObject) } } -void Group::CountRollVote(ObjectGuid playerGUID, ObjectGuid Guid, uint8 Choice) +bool Group::CountRollVote(ObjectGuid playerGUID, ObjectGuid Guid, uint8 Choice) { Rolls::iterator rollI = GetRoll(Guid); if (rollI == RollId.end()) - return; + return false; Roll* roll = *rollI; Roll::PlayerVote::iterator itr = roll->playerVote.find(playerGUID); // this condition means that player joins to the party after roll begins - if (itr == roll->playerVote.end()) - return; + if (itr == roll->playerVote.end() || itr->second != NOT_EMITED_YET) + return false; if (roll->getLoot()) if (roll->getLoot()->items.empty()) - return; + return false; switch (Choice) { @@ -1427,6 +1427,8 @@ void Group::CountRollVote(ObjectGuid playerGUID, ObjectGuid Guid, uint8 Choice) if (roll->totalPass + roll->totalNeed + roll->totalGreed >= roll->totalPlayersRolling) CountTheRoll(rollI, nullptr); + + return true; } //called when roll timer expires diff --git a/src/server/game/Groups/Group.h b/src/server/game/Groups/Group.h index d316bfeaddc..4bf4378686b 100644 --- a/src/server/game/Groups/Group.h +++ b/src/server/game/Groups/Group.h @@ -312,7 +312,7 @@ class TC_GAME_API Group void MasterLoot(Loot* loot, WorldObject* pLootedObject); Rolls::iterator GetRoll(ObjectGuid Guid); void CountTheRoll(Rolls::iterator roll, Map* allowedMap); - void CountRollVote(ObjectGuid playerGUID, ObjectGuid Guid, uint8 Choise); + bool CountRollVote(ObjectGuid playerGUID, ObjectGuid Guid, uint8 Choise); void EndRoll(Loot* loot, Map* allowedMap); // related to disenchant rolls diff --git a/src/server/game/Handlers/GroupHandler.cpp b/src/server/game/Handlers/GroupHandler.cpp index 85fabdf254a..d6bcfd04741 100644 --- a/src/server/game/Handlers/GroupHandler.cpp +++ b/src/server/game/Handlers/GroupHandler.cpp @@ -480,7 +480,8 @@ void WorldSession::HandleLootRoll(WorldPacket& recvData) if (!group) return; - group->CountRollVote(GetPlayer()->GetGUID(), guid, rollType); + if (!group->CountRollVote(GetPlayer()->GetGUID(), guid, rollType)) + return; switch (rollType) { |