Core/Maps: Made instance_template no longer required to create and enter instance maps

Port From (https://github.com/TrinityCore/TrinityCore/commit/b8e52fd90bdab6e720d13e44c64483945e139fa2)
This commit is contained in:
hondacrx
2022-07-18 21:41:50 -04:00
parent cef479fd69
commit cee989c731
7 changed files with 13 additions and 44 deletions
+6 -11
View File
@@ -5294,7 +5294,7 @@ namespace Game
{ {
uint mapID = result.Read<uint>(0); uint mapID = result.Read<uint>(0);
if (!Global.MapMgr.IsValidMAP(mapID, true)) if (!Global.MapMgr.IsValidMAP(mapID))
{ {
Log.outError(LogFilter.Sql, "ObjectMgr.LoadInstanceTemplate: bad mapid {0} for template!", mapID); Log.outError(LogFilter.Sql, "ObjectMgr.LoadInstanceTemplate: bad mapid {0} for template!", mapID);
continue; continue;
@@ -10549,8 +10549,7 @@ namespace Game
} }
public AreaTriggerStruct GetGoBackTrigger(uint Map) public AreaTriggerStruct GetGoBackTrigger(uint Map)
{ {
bool useParentDbValue = false; uint? parentId = null;
uint parentId = 0;
MapRecord mapEntry = CliDB.MapStorage.LookupByKey(Map); MapRecord mapEntry = CliDB.MapStorage.LookupByKey(Map);
if (mapEntry == null || mapEntry.CorpseMapID < 0) if (mapEntry == null || mapEntry.CorpseMapID < 0)
return null; return null;
@@ -10558,18 +10557,14 @@ namespace Game
if (mapEntry.IsDungeon()) if (mapEntry.IsDungeon())
{ {
InstanceTemplate iTemplate = GetInstanceTemplate(Map); InstanceTemplate iTemplate = GetInstanceTemplate(Map);
if (iTemplate != null)
if (iTemplate == null) parentId = iTemplate.Parent;
return null;
parentId = iTemplate.Parent;
useParentDbValue = true;
} }
uint entrance_map = (uint)mapEntry.CorpseMapID; uint entrance_map = parentId.GetValueOrDefault((uint)mapEntry.CorpseMapID);
foreach (var pair in _areaTriggerStorage) foreach (var pair in _areaTriggerStorage)
{ {
if ((!useParentDbValue && pair.Value.target_mapId == entrance_map) || (useParentDbValue && pair.Value.target_mapId == parentId)) if (pair.Value.target_mapId == entrance_map)
{ {
AreaTriggerRecord atEntry = CliDB.AreaTriggerStorage.LookupByKey(pair.Key); AreaTriggerRecord atEntry = CliDB.AreaTriggerStorage.LookupByKey(pair.Key);
if (atEntry != null && atEntry.ContinentID == Map) if (atEntry != null && atEntry.ContinentID == Map)
+2 -3
View File
@@ -248,10 +248,9 @@ namespace Game
// get the destination map entry, not the current one, this will fix homebind and reset greeting // get the destination map entry, not the current one, this will fix homebind and reset greeting
MapRecord mapEntry = CliDB.MapStorage.LookupByKey(loc.GetMapId()); MapRecord mapEntry = CliDB.MapStorage.LookupByKey(loc.GetMapId());
InstanceTemplate mInstance = Global.ObjectMgr.GetInstanceTemplate(loc.GetMapId());
// reset instance validity, except if going to an instance inside an instance // reset instance validity, except if going to an instance inside an instance
if (!player.m_InstanceValid && mInstance == null) if (!player.m_InstanceValid && !mapEntry.IsDungeon())
player.m_InstanceValid = true; player.m_InstanceValid = true;
Map oldMap = player.GetMap(); Map oldMap = player.GetMap();
@@ -375,7 +374,7 @@ namespace Game
} }
} }
if (mInstance != null) if (mapEntry.IsDungeon())
{ {
// check if this instance has a reset time and send it to player if so // check if this instance has a reset time and send it to player if so
Difficulty diff = newMap.GetDifficultyID(); Difficulty diff = newMap.GetDifficultyID();
+3 -3
View File
@@ -45,17 +45,17 @@ namespace Game.Maps
public static bool IsValidMapCoord(uint mapid, float x, float y) public static bool IsValidMapCoord(uint mapid, float x, float y)
{ {
return Global.MapMgr.IsValidMAP(mapid, false) && IsValidMapCoord(x, y); return Global.MapMgr.IsValidMAP(mapid) && IsValidMapCoord(x, y);
} }
public static bool IsValidMapCoord(uint mapid, float x, float y, float z) public static bool IsValidMapCoord(uint mapid, float x, float y, float z)
{ {
return Global.MapMgr.IsValidMAP(mapid, false) && IsValidMapCoord(x, y, z); return Global.MapMgr.IsValidMAP(mapid) && IsValidMapCoord(x, y, z);
} }
public static bool IsValidMapCoord(uint mapid, float x, float y, float z, float o) public static bool IsValidMapCoord(uint mapid, float x, float y, float z, float o)
{ {
return Global.MapMgr.IsValidMAP(mapid, false) && IsValidMapCoord(x, y, z, o); return Global.MapMgr.IsValidMAP(mapid) && IsValidMapCoord(x, y, z, o);
} }
public static bool IsValidMapCoord(uint mapid, Position pos) public static bool IsValidMapCoord(uint mapid, Position pos)
@@ -696,11 +696,6 @@ namespace Game.Maps
return GetResetTime(); return GetResetTime();
} }
InstanceTemplate GetTemplate()
{
return Global.ObjectMgr.GetInstanceTemplate(m_mapid);
}
MapRecord GetMapEntry() MapRecord GetMapEntry()
{ {
return CliDB.MapStorage.LookupByKey(m_mapid); return CliDB.MapStorage.LookupByKey(m_mapid);
@@ -184,12 +184,6 @@ namespace Game.Maps
Log.outError(LogFilter.Maps, "CreateInstance: no record for map {0}", GetId()); Log.outError(LogFilter.Maps, "CreateInstance: no record for map {0}", GetId());
Cypher.Assert(false); Cypher.Assert(false);
} }
InstanceTemplate iTemplate = Global.ObjectMgr.GetInstanceTemplate(GetId());
if (iTemplate == null)
{
Log.outError(LogFilter.Maps, "CreateInstance: no instance template for map {0}", GetId());
Cypher.Assert(false);
}
// some instances only have one difficulty // some instances only have one difficulty
Global.DB2Mgr.GetDownscaledMapDifficultyData(GetId(), ref difficulty); Global.DB2Mgr.GetDownscaledMapDifficultyData(GetId(), ref difficulty);
+2 -13
View File
@@ -140,10 +140,6 @@ namespace Game.Entities
if (!entry.IsDungeon()) if (!entry.IsDungeon())
return EnterState.CanEnter; return EnterState.CanEnter;
InstanceTemplate instance = Global.ObjectMgr.GetInstanceTemplate(mapid);
if (instance == null)
return EnterState.CannotEnterUninstancedDungeon;
Difficulty targetDifficulty = player.GetDifficultyID(entry); Difficulty targetDifficulty = player.GetDifficultyID(entry);
// Get the highest available difficulty if current setting is higher than the instance allows // Get the highest available difficulty if current setting is higher than the instance allows
MapDifficultyRecord mapDiff = Global.DB2Mgr.GetDownscaledMapDifficultyData(entry.Id, ref targetDifficulty); MapDifficultyRecord mapDiff = Global.DB2Mgr.GetDownscaledMapDifficultyData(entry.Id, ref targetDifficulty);
@@ -254,16 +250,9 @@ namespace Game.Entities
return Map.ExistMap(mapid, gx, gy) && Map.ExistVMap(mapid, gx, gy); return Map.ExistMap(mapid, gx, gy) && Map.ExistVMap(mapid, gx, gy);
} }
public bool IsValidMAP(uint mapid, bool startUp) public bool IsValidMAP(uint mapId)
{ {
MapRecord mEntry = CliDB.MapStorage.LookupByKey(mapid); return CliDB.MapStorage.ContainsKey(mapId);
if (startUp)
return mEntry != null;
else
return mEntry != null && (!mEntry.IsDungeon() || Global.ObjectMgr.GetInstanceTemplate(mapid) != null);
// TODO: add check for Battlegroundtemplate
} }
public void UnloadAll() public void UnloadAll()
-3
View File
@@ -5435,9 +5435,6 @@ namespace Game.Spells
return SpellCastResult.TargetLockedToRaidInstance; return SpellCastResult.TargetLockedToRaidInstance;
} }
} }
InstanceTemplate instance = Global.ObjectMgr.GetInstanceTemplate(mapId);
if (instance == null)
return SpellCastResult.TargetNotInInstance;
if (!target.Satisfy(Global.ObjectMgr.GetAccessRequirement(mapId, difficulty), mapId)) if (!target.Satisfy(Global.ObjectMgr.GetAccessRequirement(mapId, difficulty), mapId))
return SpellCastResult.BadTargets; return SpellCastResult.BadTargets;
} }