aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2023-10-06 20:22:14 +0200
committerShauren <shauren.trinity@gmail.com>2023-10-06 20:22:14 +0200
commit0ce96adb7a8ae29a577cce268c8bd3742253cf69 (patch)
tree11baa1795dd2258c7dc4047b536ccdfd9314eaa4 /src/server/scripts
parentf774c4e855b372676190279b2bc1ba12ed15f028 (diff)
Core/Objects: Treat areas that have ParentAreaID filled but dont have IsSubzone flag as zones instead of areas
Diffstat (limited to 'src/server/scripts')
-rw-r--r--src/server/scripts/Commands/cs_go.cpp6
-rw-r--r--src/server/scripts/Commands/cs_group.cpp2
-rw-r--r--src/server/scripts/Commands/cs_misc.cpp13
3 files changed, 13 insertions, 8 deletions
diff --git a/src/server/scripts/Commands/cs_go.cpp b/src/server/scripts/Commands/cs_go.cpp
index 5ab5395612f..5645425f356 100644
--- a/src/server/scripts/Commands/cs_go.cpp
+++ b/src/server/scripts/Commands/cs_go.cpp
@@ -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);
diff --git a/src/server/scripts/Commands/cs_group.cpp b/src/server/scripts/Commands/cs_group.cpp
index 6ddaa03c675..24e412e0c93 100644
--- a/src/server/scripts/Commands/cs_group.cpp
+++ b/src/server/scripts/Commands/cs_group.cpp
@@ -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)
diff --git a/src/server/scripts/Commands/cs_misc.cpp b/src/server/scripts/Commands/cs_misc.cpp
index a368b7033e5..30504875544 100644
--- a/src/server/scripts/Commands/cs_misc.cpp
+++ b/src/server/scripts/Commands/cs_misc.cpp
@@ -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];
+ }
}
}