diff options
author | Treeston <treeston.mmoc@gmail.com> | 2019-08-04 12:22:57 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2021-12-18 15:28:45 +0100 |
commit | 51fbda4223442635a35d3225c0797d0151ea7051 (patch) | |
tree | 58c157637d44c568f7d720dddbce2c28c7ee9427 /src/server/game/Handlers | |
parent | 6d5086da1747816e1a4e8518e16ab1923de22e1a (diff) |
Core/Pooling: Quest pooling rewrite: (PR#23627)
- Split quest pooling from PoolMgr (into QuestPoolMgr)
- Proper saving/restoring on server restart
- No more hacking into sObjectMgr to insert/remove available quests
(cherry picked from commit a5e73e41c0e813e674bb0a644e0052052435494e)
Diffstat (limited to 'src/server/game/Handlers')
-rw-r--r-- | src/server/game/Handlers/QueryHandler.cpp | 12 | ||||
-rw-r--r-- | src/server/game/Handlers/QuestHandler.cpp | 3 |
2 files changed, 7 insertions, 8 deletions
diff --git a/src/server/game/Handlers/QueryHandler.cpp b/src/server/game/Handlers/QueryHandler.cpp index c146cefcb91..eca0a1e7556 100644 --- a/src/server/game/Handlers/QueryHandler.cpp +++ b/src/server/game/Handlers/QueryHandler.cpp @@ -258,15 +258,13 @@ void WorldSession::HandleQueryQuestCompletionNPCs(WorldPackets::Query::QueryQues questCompletionNPC.QuestID = questID; - auto creatures = sObjectMgr->GetCreatureQuestInvolvedRelationReverseBounds(questID); - for (auto it = creatures.first; it != creatures.second; ++it) - questCompletionNPC.NPCs.push_back(it->second); + for (auto const& creatures : sObjectMgr->GetCreatureQuestInvolvedRelationReverseBounds(questID)) + questCompletionNPC.NPCs.push_back(creatures.second); - auto gos = sObjectMgr->GetGOQuestInvolvedRelationReverseBounds(questID); - for (auto it = gos.first; it != gos.second; ++it) - questCompletionNPC.NPCs.push_back(it->second | 0x80000000); // GO mask + for (auto const& gos : sObjectMgr->GetGOQuestInvolvedRelationReverseBounds(questID)) + questCompletionNPC.NPCs.push_back(gos.second | 0x80000000); // GO mask - response.QuestCompletionNPCs.push_back(questCompletionNPC); + response.QuestCompletionNPCs.push_back(std::move(questCompletionNPC)); } SendPacket(response.Write()); diff --git a/src/server/game/Handlers/QuestHandler.cpp b/src/server/game/Handlers/QuestHandler.cpp index 467b6b0d421..19e9d914a83 100644 --- a/src/server/game/Handlers/QuestHandler.cpp +++ b/src/server/game/Handlers/QuestHandler.cpp @@ -33,6 +33,7 @@ #include "PoolMgr.h" #include "QuestDef.h" #include "QuestPackets.h" +#include "QuestPools.h" #include "ReputationMgr.h" #include "ScriptMgr.h" #include "World.h" @@ -641,7 +642,7 @@ void WorldSession::HandlePushQuestToParty(WorldPackets::Quest::PushQuestToParty& } // in pool and not currently available (wintergrasp weekly, dalaran weekly) - can't share - if (sPoolMgr->IsPartOfAPool<Quest>(packet.QuestID) && !sPoolMgr->IsSpawnedObject<Quest>(packet.QuestID)) + if (!sQuestPoolMgr->IsQuestActive(packet.QuestID)) { sender->SendPushToPartyResponse(sender, QuestPushReason::NotDaily); return; |