diff options
Diffstat (limited to 'src/server/game/Handlers/QuestHandler.cpp')
-rw-r--r-- | src/server/game/Handlers/QuestHandler.cpp | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/src/server/game/Handlers/QuestHandler.cpp b/src/server/game/Handlers/QuestHandler.cpp index 956b4135d3a..2c6b809c0dc 100644 --- a/src/server/game/Handlers/QuestHandler.cpp +++ b/src/server/game/Handlers/QuestHandler.cpp @@ -879,19 +879,19 @@ void WorldSession::HandleSpawnTrackingUpdate(WorldPackets::Quest::SpawnTrackingU { WorldPackets::Quest::QuestPOIUpdateResponse response; - auto hasObjectTypeRequested = [](TypeMask objectTypeMask, SpawnObjectType objectType) -> bool + auto spawnTypeForObjectType = [](TypeMask objectTypeMask) -> SpawnObjectType { if (objectTypeMask & TYPEMASK_UNIT) - return objectType == SPAWN_TYPE_CREATURE; - else if (objectTypeMask & TYPEMASK_GAMEOBJECT) - return objectType == SPAWN_TYPE_GAMEOBJECT; + return SPAWN_TYPE_CREATURE; + if (objectTypeMask & TYPEMASK_GAMEOBJECT) + return SPAWN_TYPE_GAMEOBJECT; - return false; + return NUM_SPAWN_TYPES; }; for (WorldPackets::Quest::SpawnTrackingRequestInfo const& requestInfo : spawnTrackingUpdate.SpawnTrackingRequests) { - WorldPackets::Quest::SpawnTrackingResponseInfo responseInfo; + WorldPackets::Quest::SpawnTrackingResponseInfo& responseInfo = response.SpawnTrackingResponses.emplace_back(); responseInfo.SpawnTrackingID = requestInfo.SpawnTrackingID; responseInfo.ObjectID = requestInfo.ObjectID; @@ -906,7 +906,8 @@ void WorldSession::HandleSpawnTrackingUpdate(WorldPackets::Quest::SpawnTrackingU responseInfo.PhaseUseFlags = spawnTrackingTemplateData->PhaseUseFlags; // Send spawn visibility data if available - if (requestInfo.ObjectTypeMask && requestInfo.ObjectTypeMask & (TYPEMASK_UNIT | TYPEMASK_GAMEOBJECT)) + SpawnObjectType spawnType = spawnTypeForObjectType(TypeMask(requestInfo.ObjectTypeMask)); + if (spawnType != NUM_SPAWN_TYPES) { // There should only be one entity for (auto const& [spawnTrackingId, data] : sObjectMgr->GetSpawnMetadataForSpawnTracking(requestInfo.SpawnTrackingID)) @@ -915,10 +916,10 @@ void WorldSession::HandleSpawnTrackingUpdate(WorldPackets::Quest::SpawnTrackingU if (!spawnData) continue; - if (spawnData->id != (uint32)requestInfo.ObjectID) + if (spawnData->id != uint32(requestInfo.ObjectID)) continue; - if (!hasObjectTypeRequested(TypeMask(requestInfo.ObjectTypeMask), data->type)) + if (spawnType != data->type) continue; if (activeQuestObjective) @@ -930,8 +931,6 @@ void WorldSession::HandleSpawnTrackingUpdate(WorldPackets::Quest::SpawnTrackingU } } } - - response.SpawnTrackingResponses.push_back(std::move(responseInfo)); } SendPacket(response.Write()); |