aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Server
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2011-02-03 22:20:40 +0100
committerShauren <shauren.trinity@gmail.com>2011-02-03 22:20:40 +0100
commitc2b0bcbd6c8155812857523681cd787059cd9bf9 (patch)
treeb325612ecdddbb1235c676a862435c83374f95cf /src/server/game/Server
parent7ea8bad07f64ed5886130fcc8016c0c72a32758e (diff)
Core/Instances: Implemented DungeonEncounter.dbc for creating completed encounters mask to use in packets
Core/Dungeon Finder: Implemented new way of giving random dungeon rewards, linked to DungeonEncounter.dbc
Diffstat (limited to 'src/server/game/Server')
-rwxr-xr-xsrc/server/game/Server/Protocol/Handlers/LFGHandler.cpp24
1 files changed, 22 insertions, 2 deletions
diff --git a/src/server/game/Server/Protocol/Handlers/LFGHandler.cpp b/src/server/game/Server/Protocol/Handlers/LFGHandler.cpp
index 2ac129973a9..ac8ce189f4b 100755
--- a/src/server/game/Server/Protocol/Handlers/LFGHandler.cpp
+++ b/src/server/game/Server/Protocol/Handlers/LFGHandler.cpp
@@ -22,7 +22,7 @@
#include "Group.h"
#include "LFGMgr.h"
#include "ObjectMgr.h"
-
+#include "InstanceScript.h"
void BuildPlayerLockDungeonBlock(WorldPacket& data, const LfgLockMap& lock)
{
@@ -555,6 +555,7 @@ void WorldSession::SendLfgUpdateProposal(uint32 proposalId, const LfgProposal* p
bool isSameDungeon = false;
bool isContinue = false;
Group* grp = dLowGuid ? sObjectMgr->GetGroupByGUID(dLowGuid) : NULL;
+ uint32 completedEncounters = 0;
if (grp)
{
uint64 gguid = grp->GetGUID();
@@ -571,12 +572,31 @@ void WorldSession::SendLfgUpdateProposal(uint32 proposalId, const LfgProposal* p
if (playerDungeons.size() == 1)
dungeonId = (*playerDungeons.begin());
}
+
if (LFGDungeonEntry const* dungeon = sLFGDungeonStore.LookupEntry(dungeonId))
+ {
dungeonId = dungeon->Entry();
+
+ // Select a player inside to be get completed encounters from
+ if (grp)
+ {
+ for (GroupReference* itr = grp->GetFirstMember(); itr != NULL; itr = itr->next())
+ {
+ Player* groupMember = itr->getSource();
+ if (groupMember && groupMember->GetMapId() == uint32(dungeon->map))
+ {
+ if (InstanceScript* instance = groupMember->GetInstanceScript())
+ completedEncounters = instance->GetCompletedEncounterMask();
+ break;
+ }
+ }
+ }
+ }
+
data << uint32(dungeonId); // Dungeon
data << uint8(pProp->state); // Result state
data << uint32(proposalId); // Internal Proposal ID
- data << uint32(0); // Bosses killed - FIXME
+ data << uint32(completedEncounters); // Bosses killed
data << uint8(isSameDungeon); // Silent (show client window)
data << uint8(pProp->players.size()); // Group size