diff options
| author | Shauren <shauren.trinity@gmail.com> | 2026-01-06 23:31:25 +0100 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2026-01-06 23:31:25 +0100 |
| commit | 9271ad75177a7c906975abda562d250f8c3f8458 (patch) | |
| tree | 1521bf5cbce440884e0e4a67d1f035d64c735a4e /src/server | |
| parent | eafa223270fcf776bd17f1f9dc31a1c594d0119c (diff) | |
Core/Misc: Change AreaTriggerTeleport to be just an alias for WorldSafeLocsEntry
Diffstat (limited to 'src/server')
| -rw-r--r-- | src/server/game/DungeonFinding/LFGMgr.cpp | 10 | ||||
| -rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 6 | ||||
| -rw-r--r-- | src/server/game/Globals/ObjectMgr.cpp | 24 | ||||
| -rw-r--r-- | src/server/game/Globals/ObjectMgr.h | 11 | ||||
| -rw-r--r-- | src/server/game/Handlers/CharacterHandler.cpp | 5 | ||||
| -rw-r--r-- | src/server/game/Handlers/MiscHandler.cpp | 32 | ||||
| -rw-r--r-- | src/server/scripts/Commands/cs_go.cpp | 6 |
7 files changed, 38 insertions, 56 deletions
diff --git a/src/server/game/DungeonFinding/LFGMgr.cpp b/src/server/game/DungeonFinding/LFGMgr.cpp index adbc5a07bea..2b2d3bb2fd5 100644 --- a/src/server/game/DungeonFinding/LFGMgr.cpp +++ b/src/server/game/DungeonFinding/LFGMgr.cpp @@ -265,11 +265,11 @@ void LFGMgr::LoadLFGDungeons() continue; } - dungeon.map = at->target_mapId; - dungeon.x = at->target_X; - dungeon.y = at->target_Y; - dungeon.z = at->target_Z; - dungeon.o = at->target_Orientation; + dungeon.map = at->Loc.GetMapId(); + dungeon.x = at->Loc.GetPositionX(); + dungeon.y = at->Loc.GetPositionY(); + dungeon.z = at->Loc.GetPositionZ(); + dungeon.o = at->Loc.GetOrientation(); } if (dungeon.type != LFG_TYPE_RANDOM) diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 4eb409c8b12..78e55b7c5e0 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -18221,10 +18221,10 @@ bool Player::LoadFromDB(ObjectGuid guid, CharacterDatabaseQueryHolder const& hol { if (areaTrigger) // ... if we have an areatrigger, then relocate to new map/coordinates. { - Relocate(areaTrigger->target_X, areaTrigger->target_Y, areaTrigger->target_Z, GetOrientation()); - if (mapId != areaTrigger->target_mapId) + Relocate(areaTrigger->Loc); + if (mapId != areaTrigger->Loc.GetMapId()) { - mapId = areaTrigger->target_mapId; + mapId = areaTrigger->Loc.GetMapId(); map = sMapMgr->CreateMap(mapId, this); } } diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index d55e44b774c..f4b6c19c6a9 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -7137,10 +7137,7 @@ Trinity::IteratorPair<std::unordered_map<uint32, WorldSafeLocsEntry>::const_iter AreaTriggerTeleport const* ObjectMgr::GetAreaTrigger(uint32 trigger) const { - AreaTriggerContainer::const_iterator itr = _areaTriggerStore.find(trigger); - if (itr != _areaTriggerStore.end()) - return &itr->second; - return nullptr; + return Trinity::Containers::MapGetValuePtr(_areaTriggerStore, trigger); } AccessRequirement const* ObjectMgr::GetAccessRequirement(uint32 mapid, Difficulty difficulty) const @@ -7239,13 +7236,7 @@ void ObjectMgr::LoadAreaTriggerTeleports() continue; } - AreaTriggerTeleport& at = _areaTriggerStore[Trigger_ID]; - - at.target_mapId = portLoc->Loc.GetMapId(); - at.target_X = portLoc->Loc.GetPositionX(); - at.target_Y = portLoc->Loc.GetPositionY(); - at.target_Z = portLoc->Loc.GetPositionZ(); - at.target_Orientation = portLoc->Loc.GetOrientation(); + _areaTriggerStore[Trigger_ID] = portLoc; } while (result->NextRow()); @@ -7393,11 +7384,11 @@ AreaTriggerTeleport const* ObjectMgr::GetGoBackTrigger(uint32 Map) const uint32 entrance_map = parentId.value_or(mapEntry->CorpseMapID); for (AreaTriggerContainer::const_iterator itr = _areaTriggerStore.begin(); itr != _areaTriggerStore.end(); ++itr) { - if (itr->second.target_mapId == entrance_map) + if (itr->second->Loc.GetMapId() == entrance_map) { AreaTriggerEntry const* atEntry = sAreaTriggerStore.LookupEntry(itr->first); if (atEntry && atEntry->ContinentID == Map) - return &itr->second; + return itr->second; } } return nullptr; @@ -7410,11 +7401,10 @@ AreaTriggerTeleport const* ObjectMgr::GetMapEntranceTrigger(uint32 Map) const { for (AreaTriggerContainer::const_iterator itr = _areaTriggerStore.begin(); itr != _areaTriggerStore.end(); ++itr) { - if (itr->second.target_mapId == Map) + if (itr->second->Loc.GetMapId() == Map) { - AreaTriggerEntry const* atEntry = sAreaTriggerStore.LookupEntry(itr->first); - if (atEntry) - return &itr->second; + if (sAreaTriggerStore.HasRecord(itr->first)) + return itr->second; } } return nullptr; diff --git a/src/server/game/Globals/ObjectMgr.h b/src/server/game/Globals/ObjectMgr.h index 15a59853a1d..66802e67363 100644 --- a/src/server/game/Globals/ObjectMgr.h +++ b/src/server/game/Globals/ObjectMgr.h @@ -449,14 +449,7 @@ struct TC_GAME_API SpellClickInfo typedef std::multimap<uint32, SpellClickInfo> SpellClickInfoContainer; -struct AreaTriggerTeleport -{ - uint32 target_mapId; - float target_X; - float target_Y; - float target_Z; - float target_Orientation; -}; +using AreaTriggerTeleport = WorldSafeLocsEntry; struct AreaTriggerPolygon { @@ -986,7 +979,7 @@ class TC_GAME_API ObjectMgr typedef std::unordered_map<uint32, Trinity::unique_trackable_ptr<Quest>> QuestContainer; typedef std::unordered_map<uint32 /*questObjectiveId*/, QuestObjective const*> QuestObjectivesByIdContainer; - typedef std::unordered_map<uint32, AreaTriggerTeleport> AreaTriggerContainer; + typedef std::unordered_map<uint32, AreaTriggerTeleport const*> AreaTriggerContainer; typedef std::unordered_map<uint32, uint32> AreaTriggerScriptContainer; diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp index 6c0505fca7e..dcca524b3df 100644 --- a/src/server/game/Handlers/CharacterHandler.cpp +++ b/src/server/game/Handlers/CharacterHandler.cpp @@ -1273,9 +1273,8 @@ void WorldSession::HandlePlayerLogin(LoginQueryHolder const& holder) if (!pCurrChar->GetMap()->AddPlayerToMap(pCurrChar)) { - AreaTriggerTeleport const* at = sObjectMgr->GetGoBackTrigger(pCurrChar->GetMapId()); - if (at) - pCurrChar->TeleportTo(at->target_mapId, at->target_X, at->target_Y, at->target_Z, pCurrChar->GetOrientation()); + if (AreaTriggerTeleport const* at = sObjectMgr->GetGoBackTrigger(pCurrChar->GetMapId())) + pCurrChar->TeleportTo(at->Loc); else pCurrChar->TeleportTo(pCurrChar->m_homebind); } diff --git a/src/server/game/Handlers/MiscHandler.cpp b/src/server/game/Handlers/MiscHandler.cpp index fab4f104900..8087463d58f 100644 --- a/src/server/game/Handlers/MiscHandler.cpp +++ b/src/server/game/Handlers/MiscHandler.cpp @@ -599,7 +599,7 @@ void WorldSession::HandleAreaTriggerOpcode(WorldPackets::AreaTrigger::AreaTrigge return; bool teleported = false; - if (player->GetMapId() != at->target_mapId) + if (player->GetMapId() != at->Loc.GetMapId()) { if (!player->IsAlive()) { @@ -609,7 +609,7 @@ void WorldSession::HandleAreaTriggerOpcode(WorldPackets::AreaTrigger::AreaTrigge uint32 corpseMap = player->GetCorpseLocation().GetMapId(); do { - if (corpseMap == at->target_mapId) + if (corpseMap == at->Loc.GetMapId()) break; InstanceTemplate const* corpseInstance = sObjectMgr->GetInstanceTemplate(corpseMap); @@ -622,52 +622,52 @@ void WorldSession::HandleAreaTriggerOpcode(WorldPackets::AreaTrigger::AreaTrigge return; } - TC_LOG_DEBUG("maps", "MAP: Player '{}' has corpse in instance {} and can enter.", player->GetName(), at->target_mapId); + TC_LOG_DEBUG("maps", "MAP: Player '{}' has corpse in instance {} and can enter.", player->GetName(), at->Loc.GetMapId()); } else TC_LOG_DEBUG("maps", "Map::CanPlayerEnter - player '{}' is dead but does not have a corpse!", player->GetName()); } - if (TransferAbortParams denyReason = Map::PlayerCannotEnter(at->target_mapId, player)) + if (TransferAbortParams denyReason = Map::PlayerCannotEnter(at->Loc.GetMapId(), player)) { switch (denyReason.Reason) { case TRANSFER_ABORT_MAP_NOT_ALLOWED: - TC_LOG_DEBUG("maps", "MAP: Player '{}' attempted to enter map with id {} which has no entry", player->GetName(), at->target_mapId); + TC_LOG_DEBUG("maps", "MAP: Player '{}' attempted to enter map with id {} which has no entry", player->GetName(), at->Loc.GetMapId()); break; case TRANSFER_ABORT_DIFFICULTY: - TC_LOG_DEBUG("maps", "MAP: Player '{}' attempted to enter instance map {} but the requested difficulty was not found", player->GetName(), at->target_mapId); + TC_LOG_DEBUG("maps", "MAP: Player '{}' attempted to enter instance map {} but the requested difficulty was not found", player->GetName(), at->Loc.GetMapId()); break; case TRANSFER_ABORT_NEED_GROUP: - TC_LOG_DEBUG("maps", "MAP: Player '{}' must be in a raid group to enter map {}", player->GetName(), at->target_mapId); + TC_LOG_DEBUG("maps", "MAP: Player '{}' must be in a raid group to enter map {}", player->GetName(), at->Loc.GetMapId()); player->SendRaidGroupOnlyMessage(RAID_GROUP_ERR_ONLY, 0); break; case TRANSFER_ABORT_LOCKED_TO_DIFFERENT_INSTANCE: - TC_LOG_DEBUG("maps", "MAP: Player '{}' cannot enter instance map {} because their permanent bind is incompatible with their group's", player->GetName(), at->target_mapId); + TC_LOG_DEBUG("maps", "MAP: Player '{}' cannot enter instance map {} because their permanent bind is incompatible with their group's", player->GetName(), at->Loc.GetMapId()); break; case TRANSFER_ABORT_ALREADY_COMPLETED_ENCOUNTER: - TC_LOG_DEBUG("maps", "MAP: Player '{}' cannot enter instance map {} because their permanent bind is incompatible with their group's", player->GetName(), at->target_mapId); + TC_LOG_DEBUG("maps", "MAP: Player '{}' cannot enter instance map {} because their permanent bind is incompatible with their group's", player->GetName(), at->Loc.GetMapId()); break; case TRANSFER_ABORT_TOO_MANY_INSTANCES: - TC_LOG_DEBUG("maps", "MAP: Player '{}' cannot enter instance map {} because he has exceeded the maximum number of instances per hour.", player->GetName(), at->target_mapId); + TC_LOG_DEBUG("maps", "MAP: Player '{}' cannot enter instance map {} because he has exceeded the maximum number of instances per hour.", player->GetName(), at->Loc.GetMapId()); break; case TRANSFER_ABORT_MAX_PLAYERS: break; case TRANSFER_ABORT_ZONE_IN_COMBAT: break; case TRANSFER_ABORT_NOT_FOUND: - TC_LOG_DEBUG("maps", "MAP: Player '{}' cannot enter instance map {} because instance is resetting.", player->GetName(), at->target_mapId); + TC_LOG_DEBUG("maps", "MAP: Player '{}' cannot enter instance map {} because instance is resetting.", player->GetName(), at->Loc.GetMapId()); break; default: break; } if (denyReason.Reason != TRANSFER_ABORT_NEED_GROUP) - player->SendTransferAborted(at->target_mapId, denyReason.Reason, denyReason.Arg, denyReason.MapDifficultyXConditionId); + player->SendTransferAborted(at->Loc.GetMapId(), denyReason.Reason, denyReason.Arg, denyReason.MapDifficultyXConditionId); if (!player->IsAlive() && player->HasCorpse()) { - if (player->GetCorpseLocation().GetMapId() == at->target_mapId) + if (player->GetCorpseLocation().GetMapId() == at->Loc.GetMapId()) { player->ResurrectPlayer(0.5f); player->SpawnCorpseBones(); @@ -684,11 +684,11 @@ void WorldSession::HandleAreaTriggerOpcode(WorldPackets::AreaTrigger::AreaTrigge if (!teleported) { - WorldSafeLocsEntry const* entranceLocation = player->GetInstanceEntrance(at->target_mapId); - if (entranceLocation && player->GetMapId() != at->target_mapId) + WorldSafeLocsEntry const* entranceLocation = player->GetInstanceEntrance(at->Loc.GetMapId()); + if (entranceLocation && player->GetMapId() != at->Loc.GetMapId()) player->TeleportTo(entranceLocation->Loc, TELE_TO_NOT_LEAVE_TRANSPORT); else - player->TeleportTo(at->target_mapId, at->target_X, at->target_Y, at->target_Z, at->target_Orientation, TELE_TO_NOT_LEAVE_TRANSPORT); + player->TeleportTo(at->Loc, TELE_TO_NOT_LEAVE_TRANSPORT); } } diff --git a/src/server/scripts/Commands/cs_go.cpp b/src/server/scripts/Commands/cs_go.cpp index 84c23972916..4db279eee2a 100644 --- a/src/server/scripts/Commands/cs_go.cpp +++ b/src/server/scripts/Commands/cs_go.cpp @@ -483,14 +483,14 @@ public: // try going to entrance if (AreaTriggerTeleport const* exit = sObjectMgr->GetGoBackTrigger(mapId)) { - if (player->TeleportTo(exit->target_mapId, exit->target_X, exit->target_Y, exit->target_Z, exit->target_Orientation + M_PI)) + if (player->TeleportTo(exit->Loc.GetMapId(), exit->Loc.GetPositionX(), exit->Loc.GetPositionY(), exit->Loc.GetPositionZ(), exit->Loc.GetOrientation() + M_PI)) { handler->PSendSysMessage(LANG_COMMAND_WENT_TO_INSTANCE_GATE, mapName, mapId); return true; } else { - uint32 const parentMapId = exit->target_mapId; + uint32 const parentMapId = exit->Loc.GetMapId(); char const* const parentMapName = ASSERT_NOTNULL(sMapStore.LookupEntry(parentMapId))->MapName[handler->GetSessionDbcLocale()]; handler->PSendSysMessage(LANG_COMMAND_GO_INSTANCE_GATE_FAILED, mapName, mapId, parentMapName, parentMapId); } @@ -501,7 +501,7 @@ public: // try going to start if (AreaTriggerTeleport const* entrance = sObjectMgr->GetMapEntranceTrigger(mapId)) { - if (player->TeleportTo(entrance->target_mapId, entrance->target_X, entrance->target_Y, entrance->target_Z, entrance->target_Orientation)) + if (player->TeleportTo(entrance->Loc)) { handler->PSendSysMessage(LANG_COMMAND_WENT_TO_INSTANCE_START, mapName, mapId); return true; |
