aboutsummaryrefslogtreecommitdiff
path: root/src/server
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2026-01-06 23:31:25 +0100
committerShauren <shauren.trinity@gmail.com>2026-01-06 23:31:25 +0100
commit9271ad75177a7c906975abda562d250f8c3f8458 (patch)
tree1521bf5cbce440884e0e4a67d1f035d64c735a4e /src/server
parenteafa223270fcf776bd17f1f9dc31a1c594d0119c (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.cpp10
-rw-r--r--src/server/game/Entities/Player/Player.cpp6
-rw-r--r--src/server/game/Globals/ObjectMgr.cpp24
-rw-r--r--src/server/game/Globals/ObjectMgr.h11
-rw-r--r--src/server/game/Handlers/CharacterHandler.cpp5
-rw-r--r--src/server/game/Handlers/MiscHandler.cpp32
-rw-r--r--src/server/scripts/Commands/cs_go.cpp6
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;