43 lookupData.
Data.emplace();
44 if (lookupData.
Data->Initialize(guid, player))
88 TC_LOG_DEBUG(
"network",
"WORLD: Sent SMSG_QUERY_CREATURE_RESPONSE");
97 TC_LOG_DEBUG(
"network",
"WORLD: Sent SMSG_QUERY_CREATURE_RESPONSE");
113 TC_LOG_DEBUG(
"network",
"WORLD: Sent SMSG_GAMEOBJECT_QUERY_RESPONSE");
117 TC_LOG_DEBUG(
"network",
"WORLD: CMSG_GAMEOBJECT_QUERY - Missing gameobject info for (ENTRY: {})", packet.
GameObjectID);
123 TC_LOG_DEBUG(
"network",
"WORLD: Sent SMSG_GAMEOBJECT_QUERY_RESPONSE");
133 packet.
Valid =
false;
152 if (corpseMapEntry->IsDungeon() && corpseMapEntry->CorpseMapID >= 0)
155 if (std::shared_ptr<TerrainInfo> entranceTerrain =
sTerrainMgr.LoadTerrain(corpseMapEntry->CorpseMapID))
157 mapID = corpseMapEntry->CorpseMapID;
158 x = corpseMapEntry->Corpse.X;
159 y = corpseMapEntry->Corpse.Y;
169 packet.
MapID = corpseMapID;
192 response.
Allow =
true;
197 TC_LOG_ERROR(
"sql.sql",
"HandleNpcTextQueryOpcode: no BroadcastTextID found for text {} in `npc_text table`", packet.
TextID);
227 response.
Pages.push_back(page);
244 if (
Transport const* transport =
dynamic_cast<Transport const*
>(corpse->GetTransport()))
246 if (transport->GetGUID() == queryCorpseTransport.
Transport)
248 response.
Position = transport->GetPosition();
249 response.
Facing = transport->GetOrientation();
272 questCompletionNPC.
QuestID = questID;
274 for (
auto const& creatures :
sObjectMgr->GetCreatureQuestInvolvedRelationReverseBounds(questID))
275 questCompletionNPC.
NPCs.push_back(creatures.second);
277 for (
auto const& gos :
sObjectMgr->GetGOQuestInvolvedRelationReverseBounds(questID))
278 questCompletionNPC.
NPCs.push_back(gos.second | 0x80000000);
292 std::unordered_set<int32> questIds;
298 for (
uint32 questId : questIds)
314 queryItemTextResponse.
Id = itemTextQuery.
Id;
318 queryItemTextResponse.
Valid =
true;
319 queryItemTextResponse.
Item.
Text = item->GetText();
DB2Storage< MapEntry > sMapStore("Map.db2", &MapLoadInfo::Instance)
#define TC_LOG_DEBUG(filterType__, message__,...)
#define TC_LOG_ERROR(filterType__, message__,...)
#define MAX_NPC_TEXT_OPTIONS
#define MAX_QUEST_LOG_SIZE
ObjectGuid const & GetGUID() const
Difficulty GetDifficultyID() const
static ObjectGuid const Empty
std::string ToString() const
static std::string_view GetLocaleString(std::vector< std::string > const &data, LocaleConstant locale)
WorldLocation const & GetCorpseLocation() const
bool IsInSameRaidWith(Player const *p) const
uint16 FindQuestSlot(uint32 quest_id) const
Corpse * GetCorpse() const
Item * GetItemByGuid(ObjectGuid guid) const
constexpr uint32 GetMapId() const
PhaseShift & GetPhaseShift()
WorldPacket const * Write() override
TaggedPosition<::Position::XYZ > Position
TaggedPosition<::Position::XYZ > Position
WorldPacket const * Write() override
WorldPacket const * Write() override
WorldPacket const * Write() override
WorldPacket const * Write() override
WorldPacket const * Write() override
std::array< float, MAX_NPC_TEXT_OPTIONS > Probabilities
std::array< uint32, MAX_NPC_TEXT_OPTIONS > BroadcastTextID
std::vector< PageTextInfo > Pages
WorldPacket const * Write() override
std::vector< NameCacheLookupResult > Players
WorldPacket const * Write() override
Array< ObjectGuid, 50 > Players
Array< int32, 100 > QuestCompletionNPCs
uint32 VirtualRealmAddress
WorldPacket const * Write() override
std::vector< QuestCompletionNPC > QuestCompletionNPCs
WorldPacket const * Write() override
WorldPacket const * Write() override
std::vector< QuestPOIData const * > QuestPOIDataStats
std::array< int32, 175 > MissingQuestPOIs
WorldPackets::Auth::VirtualRealmNameInfo NameInfo
WorldPacket const * Write() override
uint32 VirtualRealmAddress
WorldPacket const * Write() override
void HandleQueryCorpseTransport(WorldPackets::Query::QueryCorpseTransport &packet)
void HandleCreatureQuery(WorldPackets::Query::QueryCreature &packet)
Only static data is sent in this packet !!!
void HandleQueryPageText(WorldPackets::Query::QueryPageText &packet)
Only static data is sent in this packet !!!
void HandleQueryQuestCompletionNPCs(WorldPackets::Query::QueryQuestCompletionNPCs &queryQuestCompletionNPCs)
LocaleConstant GetSessionDbLocaleIndex() const
void HandleItemTextQuery(WorldPackets::Query::ItemTextQuery &itemTextQuery)
void BuildNameQueryData(ObjectGuid guid, WorldPackets::Query::NameCacheLookupResult &lookupData)
void HandleGameObjectQueryOpcode(WorldPackets::Query::QueryGameObject &packet)
Only static data is sent in this packet !!!
void HandleNpcTextQueryOpcode(WorldPackets::Query::QueryNPCText &packet)
void SendPacket(WorldPacket const *packet, bool forced=false)
Send a packet to the client.
void HandleQueryPlayerNames(WorldPackets::Query::QueryPlayerNames &queryPlayerNames)
void HandleQueryRealmName(WorldPackets::Query::QueryRealmName &queryRealmName)
void HandleQuestPOIQuery(WorldPackets::Query::QuestPOIQuery &questPoiQuery)
void HandleQueryTimeOpcode(WorldPackets::Query::QueryTime &queryTime)
void SendQueryTimeResponse()
void HandleQueryTreasurePicker(WorldPackets::Query::QueryTreasurePicker const &queryTreasurePicker)
void HandleQueryCorpseLocation(WorldPackets::Query::QueryCorpseLocationFromClient &packet)
uint32 GetVirtualRealmAddress()
SystemTimePoint GetSystemTime()
Current chrono system_clock time point.
TC_GAME_API Player * FindConnectedPlayer(ObjectGuid const &)
NpcTextData Data[MAX_NPC_TEXT_OPTIONS]
constexpr float GetPositionX() const
constexpr float GetPositionY() const
constexpr float GetPositionZ() const
std::string RealmNameActual
the name of the realm
std::string RealmNameNormalized
the name of the realm without spaces
bool IsLocal
true if the realm is the same as the account's home realm
Optional< PlayerGuidLookupData > Data
std::vector< int32 > NPCs