Core/Objects: Treat areas that have ParentAreaID filled but dont have IsSubzone flag as zones instead of areas
Port From (https://github.com/TrinityCore/TrinityCore/commit/0ce96adb7a8ae29a577cce268c8bd3742253cf69)
This commit is contained in:
@@ -1841,7 +1841,7 @@ namespace Game.AI
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (areaEntry.ParentAreaID != 0)
|
if (areaEntry.ParentAreaID != 0 && areaEntry.GetFlags().HasFlag(AreaFlags.IsSubzone))
|
||||||
{
|
{
|
||||||
Log.outError(LogFilter.Sql, $"SmartAIMgr: {e} uses subzone (ID: {e.Action.overrideLight.zoneId}) instead of zone, skipped.");
|
Log.outError(LogFilter.Sql, $"SmartAIMgr: {e} uses subzone (ID: {e.Action.overrideLight.zoneId}) instead of zone, skipped.");
|
||||||
return false;
|
return false;
|
||||||
@@ -1870,7 +1870,7 @@ namespace Game.AI
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (areaEntry.ParentAreaID != 0)
|
if (areaEntry.ParentAreaID != 0 && areaEntry.GetFlags().HasFlag(AreaFlags.IsSubzone))
|
||||||
{
|
{
|
||||||
Log.outError(LogFilter.Sql, $"SmartAIMgr: {e} uses subzone (ID: {e.Action.overrideWeather.zoneId}) instead of zone, skipped.");
|
Log.outError(LogFilter.Sql, $"SmartAIMgr: {e} uses subzone (ID: {e.Action.overrideWeather.zoneId}) instead of zone, skipped.");
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@@ -331,9 +331,12 @@ namespace Game.Chat
|
|||||||
{
|
{
|
||||||
Locale locale = session.GetSessionDbcLocale();
|
Locale locale = session.GetSessionDbcLocale();
|
||||||
areaName = area.AreaName[locale];
|
areaName = area.AreaName[locale];
|
||||||
var zone = CliDB.AreaTableStorage.LookupByKey(area.ParentAreaID);
|
if (area.GetFlags().HasFlag(AreaFlags.IsSubzone))
|
||||||
if (zone != null)
|
{
|
||||||
zoneName = zone.AreaName[locale];
|
var zone = CliDB.AreaTableStorage.LookupByKey(area.ParentAreaID);
|
||||||
|
if (zone != null)
|
||||||
|
zoneName = zone.AreaName[locale];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Log.outCommand(session.GetAccountId(), $"Command: {cmdStr} [Player: {player.GetName()} ({player.GetGUID()}) (Account: {session.GetAccountId()}) " +
|
Log.outCommand(session.GetAccountId(), $"Command: {cmdStr} [Player: {player.GetName()} ({player.GetGUID()}) (Account: {session.GetAccountId()}) " +
|
||||||
|
|||||||
@@ -405,14 +405,16 @@ namespace Game.Chat.Commands
|
|||||||
}
|
}
|
||||||
|
|
||||||
// update to parent zone if exist (client map show only zones without parents)
|
// update to parent zone if exist (client map show only zones without parents)
|
||||||
AreaTableRecord zoneEntry = areaEntry.ParentAreaID != 0 ? CliDB.AreaTableStorage.LookupByKey(areaEntry.ParentAreaID) : areaEntry;
|
var zoneEntry = areaEntry.ParentAreaID != 0 && areaEntry.GetFlags().HasFlag(AreaFlags.IsSubzone)
|
||||||
|
? CliDB.AreaTableStorage.LookupByKey(areaEntry.ParentAreaID)
|
||||||
|
: areaEntry;
|
||||||
Cypher.Assert(zoneEntry != null);
|
Cypher.Assert(zoneEntry != null);
|
||||||
|
|
||||||
x /= 100.0f;
|
x /= 100.0f;
|
||||||
y /= 100.0f;
|
y /= 100.0f;
|
||||||
|
|
||||||
TerrainInfo terrain = Global.TerrainMgr.LoadTerrain(zoneEntry.ContinentID);
|
TerrainInfo terrain = Global.TerrainMgr.LoadTerrain(zoneEntry.ContinentID);
|
||||||
if (!Global.DB2Mgr.Zone2MapCoordinates(areaEntry.ParentAreaID != 0 ? areaEntry.ParentAreaID : areaId, ref x, ref y))
|
if (!Global.DB2Mgr.Zone2MapCoordinates(zoneEntry.Id, ref x, ref y))
|
||||||
{
|
{
|
||||||
handler.SendSysMessage(CypherStrings.InvalidZoneMap, areaId, areaEntry.AreaName[handler.GetSessionDbcLocale()], terrain.GetId(), terrain.GetMapName());
|
handler.SendSysMessage(CypherStrings.InvalidZoneMap, areaId, areaEntry.AreaName[handler.GetSessionDbcLocale()], terrain.GetId(), terrain.GetMapName());
|
||||||
return false;
|
return false;
|
||||||
@@ -545,7 +547,7 @@ namespace Game.Chat.Commands
|
|||||||
{
|
{
|
||||||
GameObjectData spawnpoint = null;
|
GameObjectData spawnpoint = null;
|
||||||
foreach (var pair in Global.ObjectMgr.GetAllGameObjectData())
|
foreach (var pair in Global.ObjectMgr.GetAllGameObjectData())
|
||||||
{
|
{
|
||||||
if (pair.Value.Id != goId)
|
if (pair.Value.Id != goId)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
|||||||
@@ -203,7 +203,7 @@ namespace Game.Chat
|
|||||||
phases = PhasingHandler.FormatPhases(player.GetPhaseShift());
|
phases = PhasingHandler.FormatPhases(player.GetPhaseShift());
|
||||||
|
|
||||||
AreaTableRecord area = CliDB.AreaTableStorage.LookupByKey(player.GetAreaId());
|
AreaTableRecord area = CliDB.AreaTableStorage.LookupByKey(player.GetAreaId());
|
||||||
if (area != null)
|
if (area != null && area.GetFlags().HasFlag(AreaFlags.IsSubzone))
|
||||||
{
|
{
|
||||||
AreaTableRecord zone = CliDB.AreaTableStorage.LookupByKey(area.ParentAreaID);
|
AreaTableRecord zone = CliDB.AreaTableStorage.LookupByKey(area.ParentAreaID);
|
||||||
if (zone != null)
|
if (zone != null)
|
||||||
|
|||||||
@@ -213,7 +213,7 @@ namespace Game.Chat
|
|||||||
}
|
}
|
||||||
|
|
||||||
[CommandNonGroup("damage", RBACPermissions.CommandDamage)]
|
[CommandNonGroup("damage", RBACPermissions.CommandDamage)]
|
||||||
static bool HandleDamageCommand(CommandHandler handler, uint damage, SpellSchools? school, [OptionalArg]SpellInfo spellInfo)
|
static bool HandleDamageCommand(CommandHandler handler, uint damage, SpellSchools? school, [OptionalArg] SpellInfo spellInfo)
|
||||||
{
|
{
|
||||||
Unit target = handler.GetSelectedUnit();
|
Unit target = handler.GetSelectedUnit();
|
||||||
if (target == null || handler.GetSession().GetPlayer().GetTarget().IsEmpty())
|
if (target == null || handler.GetSession().GetPlayer().GetTarget().IsEmpty())
|
||||||
@@ -784,7 +784,7 @@ namespace Game.Chat
|
|||||||
uint zoneId = player.GetZoneId();
|
uint zoneId = player.GetZoneId();
|
||||||
|
|
||||||
AreaTableRecord areaEntry = CliDB.AreaTableStorage.LookupByKey(zoneId);
|
AreaTableRecord areaEntry = CliDB.AreaTableStorage.LookupByKey(zoneId);
|
||||||
if (areaEntry == null || areaEntry.ParentAreaID != 0)
|
if (areaEntry == null || areaEntry.GetFlags().HasFlag(AreaFlags.IsSubzone))
|
||||||
{
|
{
|
||||||
handler.SendSysMessage(CypherStrings.CommandGraveyardwrongzone, graveyardId, zoneId);
|
handler.SendSysMessage(CypherStrings.CommandGraveyardwrongzone, graveyardId, zoneId);
|
||||||
return false;
|
return false;
|
||||||
@@ -1102,7 +1102,7 @@ namespace Game.Chat
|
|||||||
}
|
}
|
||||||
|
|
||||||
[CommandNonGroup("pinfo", RBACPermissions.CommandPinfo, true)]
|
[CommandNonGroup("pinfo", RBACPermissions.CommandPinfo, true)]
|
||||||
static bool HandlePInfoCommand(CommandHandler handler, [OptionalArg]PlayerIdentifier arg)
|
static bool HandlePInfoCommand(CommandHandler handler, [OptionalArg] PlayerIdentifier arg)
|
||||||
{
|
{
|
||||||
if (arg == null)
|
if (arg == null)
|
||||||
arg = PlayerIdentifier.FromTargetOrSelf(handler);
|
arg = PlayerIdentifier.FromTargetOrSelf(handler);
|
||||||
@@ -1403,11 +1403,14 @@ namespace Game.Chat
|
|||||||
{
|
{
|
||||||
zoneName = area.AreaName[locale];
|
zoneName = area.AreaName[locale];
|
||||||
|
|
||||||
AreaTableRecord zone = CliDB.AreaTableStorage.LookupByKey(area.ParentAreaID);
|
if (area.GetFlags().HasFlag(AreaFlags.IsSubzone))
|
||||||
if (zone != null)
|
|
||||||
{
|
{
|
||||||
areaName = zoneName;
|
AreaTableRecord zone = CliDB.AreaTableStorage.LookupByKey(area.ParentAreaID);
|
||||||
zoneName = zone.AreaName[locale];
|
if (zone != null)
|
||||||
|
{
|
||||||
|
areaName = zoneName;
|
||||||
|
zoneName = zone.AreaName[locale];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1348,7 +1348,7 @@ namespace Game
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (areaEntry.ParentAreaID != 0)
|
if (areaEntry.ParentAreaID != 0 && areaEntry.GetFlags().HasFlag(AreaFlags.IsSubzone))
|
||||||
{
|
{
|
||||||
Log.outError(LogFilter.Sql, "{0} requires to be in area ({1}) which is a subzone but zone expected, skipped.", cond.ToString(true), cond.ConditionValue1);
|
Log.outError(LogFilter.Sql, "{0} requires to be in area ({1}) which is a subzone but zone expected, skipped.", cond.ToString(true), cond.ConditionValue1);
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@@ -114,7 +114,7 @@ namespace Game.Entities
|
|||||||
|
|
||||||
var area = CliDB.AreaTableStorage.LookupByKey(m_areaId);
|
var area = CliDB.AreaTableStorage.LookupByKey(m_areaId);
|
||||||
if (area != null)
|
if (area != null)
|
||||||
if (area.ParentAreaID != 0)
|
if (area.ParentAreaID != 0 && area.GetFlags().HasFlag(AreaFlags.IsSubzone))
|
||||||
m_zoneId = area.ParentAreaID;
|
m_zoneId = area.ParentAreaID;
|
||||||
|
|
||||||
m_outdoors = data.outdoors;
|
m_outdoors = data.outdoors;
|
||||||
|
|||||||
@@ -785,7 +785,7 @@ namespace Game.Maps
|
|||||||
uint areaId = GetAreaId(phaseShift, mapId, x, y, z, dynamicMapTree);
|
uint areaId = GetAreaId(phaseShift, mapId, x, y, z, dynamicMapTree);
|
||||||
var area = CliDB.AreaTableStorage.LookupByKey(areaId);
|
var area = CliDB.AreaTableStorage.LookupByKey(areaId);
|
||||||
if (area != null)
|
if (area != null)
|
||||||
if (area.ParentAreaID != 0)
|
if (area.ParentAreaID != 0 && area.GetFlags().HasFlag(AreaFlags.IsSubzone))
|
||||||
return area.ParentAreaID;
|
return area.ParentAreaID;
|
||||||
|
|
||||||
return areaId;
|
return areaId;
|
||||||
@@ -798,7 +798,7 @@ namespace Game.Maps
|
|||||||
areaid = zoneid = GetAreaId(phaseShift, mapId, x, y, z, dynamicMapTree);
|
areaid = zoneid = GetAreaId(phaseShift, mapId, x, y, z, dynamicMapTree);
|
||||||
var area = CliDB.AreaTableStorage.LookupByKey(areaid);
|
var area = CliDB.AreaTableStorage.LookupByKey(areaid);
|
||||||
if (area != null)
|
if (area != null)
|
||||||
if (area.ParentAreaID != 0)
|
if (area.ParentAreaID != 0 && area.GetFlags().HasFlag(AreaFlags.IsSubzone))
|
||||||
zoneid = area.ParentAreaID;
|
zoneid = area.ParentAreaID;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user