aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/AI/SmartScripts/SmartScriptMgr.cpp4
-rw-r--r--src/server/game/Chat/ChatCommands/ChatCommand.cpp5
-rw-r--r--src/server/game/Conditions/ConditionMgr.cpp2
-rw-r--r--src/server/game/Entities/Object/Object.cpp2
-rw-r--r--src/server/game/Entities/Player/Player.cpp5
-rw-r--r--src/server/game/Maps/TerrainMgr.cpp4
-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
9 files changed, 25 insertions, 18 deletions
diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp
index b20f669bcd8..5ab032a1ac6 100644
--- a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp
+++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp
@@ -2072,7 +2072,7 @@ bool SmartAIMgr::IsEventValid(SmartScriptHolder& e)
return false;
}
- if (areaEntry->ParentAreaID != 0)
+ if (areaEntry->ParentAreaID != 0 && areaEntry->GetFlags().HasFlag(AreaFlags::IsSubzone))
{
TC_LOG_ERROR("sql.sql", "SmartAIMgr: Entry {} SourceType {} Event {} Action {} uses subzone (ID: {}) instead of zone, skipped.", e.entryOrGuid, e.GetScriptType(), e.event_id, e.GetActionType(), e.action.overrideLight.zoneId);
return false;
@@ -2101,7 +2101,7 @@ bool SmartAIMgr::IsEventValid(SmartScriptHolder& e)
return false;
}
- if (areaEntry->ParentAreaID != 0)
+ if (areaEntry->ParentAreaID != 0 && areaEntry->GetFlags().HasFlag(AreaFlags::IsSubzone))
{
TC_LOG_ERROR("sql.sql", "SmartAIMgr: Entry {} SourceType {} Event {} Action {} uses subzone (ID: {}) instead of zone, skipped.", e.entryOrGuid, e.GetScriptType(), e.event_id, e.GetActionType(), e.action.overrideWeather.zoneId);
return false;
diff --git a/src/server/game/Chat/ChatCommands/ChatCommand.cpp b/src/server/game/Chat/ChatCommands/ChatCommand.cpp
index 4d7c1792f8e..a26cb7aa7b4 100644
--- a/src/server/game/Chat/ChatCommands/ChatCommand.cpp
+++ b/src/server/game/Chat/ChatCommands/ChatCommand.cpp
@@ -153,8 +153,9 @@ static void LogCommandUsage(WorldSession const& session, uint32 permission, std:
{
LocaleConstant locale = session.GetSessionDbcLocale();
areaName = area->AreaName[locale];
- if (AreaTableEntry const* zone = sAreaTableStore.LookupEntry(area->ParentAreaID))
- zoneName = zone->AreaName[locale];
+ if (area->GetFlags().HasFlag(AreaFlags::IsSubzone))
+ if (AreaTableEntry const* zone = sAreaTableStore.LookupEntry(area->ParentAreaID))
+ zoneName = zone->AreaName[locale];
}
sLog->OutCommand(session.GetAccountId(), "Command: {} [Player: {} ({}) (Account: {}) X: {} Y: {} Z: {} Map: {} ({}) Area: {} ({}) Zone: {} Selected: {} ({})]",
diff --git a/src/server/game/Conditions/ConditionMgr.cpp b/src/server/game/Conditions/ConditionMgr.cpp
index 7e35dd31e03..3d049d00b1b 100644
--- a/src/server/game/Conditions/ConditionMgr.cpp
+++ b/src/server/game/Conditions/ConditionMgr.cpp
@@ -2266,7 +2266,7 @@ bool ConditionMgr::isConditionTypeValid(Condition* cond) const
return false;
}
- if (areaEntry->ParentAreaID != 0)
+ if (areaEntry->ParentAreaID != 0 && areaEntry->GetFlags().HasFlag(AreaFlags::IsSubzone))
{
TC_LOG_ERROR("sql.sql", "{} requires to be in area ({}) which is a subzone but zone expected, skipped.", cond->ToString(true), cond->ConditionValue1);
return false;
diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp
index 3678284124f..1a141a7203d 100644
--- a/src/server/game/Entities/Object/Object.cpp
+++ b/src/server/game/Entities/Object/Object.cpp
@@ -992,7 +992,7 @@ void WorldObject::ProcessPositionDataChanged(PositionFullTerrainStatus const& da
{
m_zoneId = m_areaId = data.areaId;
if (AreaTableEntry const* area = sAreaTableStore.LookupEntry(m_areaId))
- if (area->ParentAreaID)
+ if (area->ParentAreaID && area->GetFlags().HasFlag(AreaFlags::IsSubzone))
m_zoneId = area->ParentAreaID;
m_outdoors = data.outdoors;
m_staticFloorZ = data.floorZ;
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 9184adfb473..c49a21ead31 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -29006,8 +29006,9 @@ std::string Player::GetMapAreaAndZoneString() const
if (AreaTableEntry const* area = sAreaTableStore.LookupEntry(areaId))
{
areaName = area->AreaName[GetSession()->GetSessionDbcLocale()];
- if (AreaTableEntry const* zone = sAreaTableStore.LookupEntry(area->ParentAreaID))
- zoneName = zone->AreaName[GetSession()->GetSessionDbcLocale()];
+ if (area->GetFlags().HasFlag(AreaFlags::IsSubzone))
+ if (AreaTableEntry const* zone = sAreaTableStore.LookupEntry(area->ParentAreaID))
+ zoneName = zone->AreaName[GetSession()->GetSessionDbcLocale()];
}
std::ostringstream str;
diff --git a/src/server/game/Maps/TerrainMgr.cpp b/src/server/game/Maps/TerrainMgr.cpp
index 10151fa4127..4e9a0c65e92 100644
--- a/src/server/game/Maps/TerrainMgr.cpp
+++ b/src/server/game/Maps/TerrainMgr.cpp
@@ -646,7 +646,7 @@ uint32 TerrainInfo::GetZoneId(PhaseShift const& phaseShift, uint32 mapId, float
{
uint32 areaId = GetAreaId(phaseShift, mapId, x, y, z, dynamicMapTree);
if (AreaTableEntry const* area = sAreaTableStore.LookupEntry(areaId))
- if (area->ParentAreaID)
+ if (area->ParentAreaID && area->GetFlags().HasFlag(AreaFlags::IsSubzone))
return area->ParentAreaID;
return areaId;
@@ -656,7 +656,7 @@ void TerrainInfo::GetZoneAndAreaId(PhaseShift const& phaseShift, uint32 mapId, u
{
areaid = zoneid = GetAreaId(phaseShift, mapId, x, y, z, dynamicMapTree);
if (AreaTableEntry const* area = sAreaTableStore.LookupEntry(areaid))
- if (area->ParentAreaID)
+ if (area->ParentAreaID && area->GetFlags().HasFlag(AreaFlags::IsSubzone))
zoneid = area->ParentAreaID;
}
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];
+ }
}
}