aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Server
diff options
context:
space:
mode:
author_manuel_ <manue.l@live.com.ar>2010-09-28 00:19:37 -0300
committer_manuel_ <manue.l@live.com.ar>2010-09-28 00:19:37 -0300
commit6246d79b55fa245f01142acdaeff52297c845823 (patch)
treeef6f15e1f0781e8bd433bece1d2bed5b7965d10e /src/server/game/Server
parent952d3cf10e3af3cc5e68110bc75f3c830b4783c9 (diff)
Core/Dungeon Finder: Modified LFGMgr to use DF quests to reward.
* In this way we will store the character's day progress in the db, preventing to lose the information because of a crash/restart/shutdown. Patch by Gyullo and me, thanks to Spp & linencloth for help. * The next commit will modify the current Quest System to support DF quests. --HG-- branch : trunk
Diffstat (limited to 'src/server/game/Server')
-rw-r--r--src/server/game/Server/Protocol/Handlers/LFGHandler.cpp29
1 files changed, 20 insertions, 9 deletions
diff --git a/src/server/game/Server/Protocol/Handlers/LFGHandler.cpp b/src/server/game/Server/Protocol/Handlers/LFGHandler.cpp
index 60636703654..033c26afac1 100644
--- a/src/server/game/Server/Protocol/Handlers/LFGHandler.cpp
+++ b/src/server/game/Server/Protocol/Handlers/LFGHandler.cpp
@@ -194,7 +194,6 @@ void WorldSession::HandleLfgPlayerLockInfoRequestOpcode(WorldPacket &/*recv_data
sLog.outDebug("CMSG_LFD_PLAYER_LOCK_INFO_REQUEST [" UI64FMTD "]", GetPlayer()->GetGUID());
uint32 rsize = 0;
uint32 lsize = 0;
- bool done;
LfgDungeonSet* randomlist = sLFGMgr.GetRandomDungeons(GetPlayer()->getLevel(), GetPlayer()->GetSession()->Expansion());
LfgLockStatusSet* lockSet = sLFGMgr.GetPlayerLockStatusDungeons(GetPlayer());
@@ -212,23 +211,34 @@ void WorldSession::HandleLfgPlayerLockInfoRequestOpcode(WorldPacket &/*recv_data
{
LfgReward const* reward = NULL;
Quest const* qRew = NULL;
+ uint8 done;
data << uint8(randomlist->size()); // Random Dungeon count
for (LfgDungeonSet::iterator it = randomlist->begin(); it != randomlist->end(); ++it)
{
- done = GetPlayer()->isLfgDungeonDone(*it);
- reward = sLFGMgr.GetRandomDungeonReward(*it, GetPlayer()->getLevel());
data << uint32(*it); // Entry
- data << uint8(done);
+ reward = sLFGMgr.GetRandomDungeonReward(*it, GetPlayer()->getLevel());
+ qRew = NULL;
if (reward)
{
- qRew = sObjectMgr.GetQuestTemplate(reward->reward[done].questId);
- data << uint32(qRew ? qRew->GetRewOrReqMoney() : 0);
- data << uint32(qRew ? qRew->XPValue(GetPlayer()) : 0);
+ qRew = sObjectMgr.GetQuestTemplate(reward->reward[0].questId);
+ if (qRew)
+ {
+ done = !GetPlayer()->CanRewardQuest(qRew,false);
+ if (done)
+ qRew = sObjectMgr.GetQuestTemplate(reward->reward[1].questId);
+ }
+
+ }
+ if (qRew)
+ {
+ data << uint8(done);
+ data << uint32(qRew->GetRewOrReqMoney());
+ data << uint32(qRew->XPValue(GetPlayer()));
data << uint32(reward->reward[done].variableMoney);
data << uint32(reward->reward[done].variableXP);
- data << uint8(qRew ? qRew->GetRewItemsCount() : 0);
- if (qRew && qRew->GetRewItemsCount())
+ data << uint8(qRew->GetRewItemsCount());
+ if (qRew->GetRewItemsCount())
{
ItemPrototype const* iProto = NULL;
for (uint8 i = 0; i < QUEST_REWARDS_COUNT; ++i)
@@ -246,6 +256,7 @@ void WorldSession::HandleLfgPlayerLockInfoRequestOpcode(WorldPacket &/*recv_data
}
else
{
+ data << uint8(0);
data << uint32(0);
data << uint32(0);
data << uint32(0);