mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-22 18:15:31 +01:00
Core/Objects: Treat areas that have ParentAreaID filled but dont have IsSubzone flag as zones instead of areas
This commit is contained in:
@@ -338,14 +338,16 @@ public:
|
||||
}
|
||||
|
||||
// update to parent zone if exist (client map show only zones without parents)
|
||||
AreaTableEntry const* zoneEntry = areaEntry->ParentAreaID ? sAreaTableStore.LookupEntry(areaEntry->ParentAreaID) : areaEntry;
|
||||
AreaTableEntry const* zoneEntry = areaEntry->ParentAreaID && areaEntry->GetFlags().HasFlag(AreaFlags::IsSubzone)
|
||||
? sAreaTableStore.LookupEntry(areaEntry->ParentAreaID)
|
||||
: areaEntry;
|
||||
ASSERT(zoneEntry);
|
||||
|
||||
x /= 100.0f;
|
||||
y /= 100.0f;
|
||||
|
||||
std::shared_ptr<TerrainInfo> terrain = sTerrainMgr.LoadTerrain(zoneEntry->ContinentID);
|
||||
if (!sDB2Manager.Zone2MapCoordinates(areaEntry->ParentAreaID ? uint32(areaEntry->ParentAreaID) : areaId, x, y))
|
||||
if (!sDB2Manager.Zone2MapCoordinates(zoneEntry->ID, x, y))
|
||||
{
|
||||
handler->PSendSysMessage(LANG_INVALID_ZONE_MAP, areaId, areaEntry->AreaName[handler->GetSessionDbcLocale()], terrain->GetId(), terrain->GetMapName());
|
||||
handler->SetSentErrorMessage(true);
|
||||
|
||||
@@ -506,7 +506,7 @@ public:
|
||||
phases = PhasingHandler::FormatPhases(p->GetPhaseShift());
|
||||
|
||||
AreaTableEntry const* area = sAreaTableStore.LookupEntry(p->GetAreaId());
|
||||
if (area)
|
||||
if (area && area->GetFlags().HasFlag(AreaFlags::IsSubzone))
|
||||
{
|
||||
AreaTableEntry const* zone = sAreaTableStore.LookupEntry(area->ParentAreaID);
|
||||
if (zone)
|
||||
|
||||
@@ -1014,7 +1014,7 @@ public:
|
||||
uint32 zoneId = player->GetZoneId();
|
||||
|
||||
AreaTableEntry const* areaEntry = sAreaTableStore.LookupEntry(zoneId);
|
||||
if (!areaEntry || areaEntry->ParentAreaID !=0)
|
||||
if (!areaEntry || areaEntry->GetFlags().HasFlag(AreaFlags::IsSubzone))
|
||||
{
|
||||
handler->PSendSysMessage(LANG_COMMAND_GRAVEYARDWRONGZONE, graveyardId, zoneId);
|
||||
handler->SetSentErrorMessage(true);
|
||||
@@ -1953,11 +1953,14 @@ public:
|
||||
{
|
||||
zoneName = area->AreaName[locale];
|
||||
|
||||
AreaTableEntry const* zone = sAreaTableStore.LookupEntry(area->ParentAreaID);
|
||||
if (zone)
|
||||
if (area->GetFlags().HasFlag(AreaFlags::IsSubzone))
|
||||
{
|
||||
areaName = zoneName;
|
||||
zoneName = zone->AreaName[locale];
|
||||
AreaTableEntry const* zone = sAreaTableStore.LookupEntry(area->ParentAreaID);
|
||||
if (zone)
|
||||
{
|
||||
areaName = zoneName;
|
||||
zoneName = zone->AreaName[locale];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user