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:
@@ -5294,7 +5294,7 @@ namespace Game
|
||||
{
|
||||
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);
|
||||
continue;
|
||||
@@ -10549,8 +10549,7 @@ namespace Game
|
||||
}
|
||||
public AreaTriggerStruct GetGoBackTrigger(uint Map)
|
||||
{
|
||||
bool useParentDbValue = false;
|
||||
uint parentId = 0;
|
||||
uint? parentId = null;
|
||||
MapRecord mapEntry = CliDB.MapStorage.LookupByKey(Map);
|
||||
if (mapEntry == null || mapEntry.CorpseMapID < 0)
|
||||
return null;
|
||||
@@ -10558,18 +10557,14 @@ namespace Game
|
||||
if (mapEntry.IsDungeon())
|
||||
{
|
||||
InstanceTemplate iTemplate = GetInstanceTemplate(Map);
|
||||
|
||||
if (iTemplate == null)
|
||||
return null;
|
||||
|
||||
parentId = iTemplate.Parent;
|
||||
useParentDbValue = true;
|
||||
if (iTemplate != null)
|
||||
parentId = iTemplate.Parent;
|
||||
}
|
||||
|
||||
uint entrance_map = (uint)mapEntry.CorpseMapID;
|
||||
uint entrance_map = parentId.GetValueOrDefault((uint)mapEntry.CorpseMapID);
|
||||
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);
|
||||
if (atEntry != null && atEntry.ContinentID == Map)
|
||||
|
||||
@@ -248,10 +248,9 @@ namespace Game
|
||||
|
||||
// get the destination map entry, not the current one, this will fix homebind and reset greeting
|
||||
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
|
||||
if (!player.m_InstanceValid && mInstance == null)
|
||||
if (!player.m_InstanceValid && !mapEntry.IsDungeon())
|
||||
player.m_InstanceValid = true;
|
||||
|
||||
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
|
||||
Difficulty diff = newMap.GetDifficultyID();
|
||||
|
||||
@@ -45,17 +45,17 @@ namespace Game.Maps
|
||||
|
||||
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)
|
||||
{
|
||||
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)
|
||||
{
|
||||
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)
|
||||
|
||||
@@ -696,11 +696,6 @@ namespace Game.Maps
|
||||
return GetResetTime();
|
||||
}
|
||||
|
||||
InstanceTemplate GetTemplate()
|
||||
{
|
||||
return Global.ObjectMgr.GetInstanceTemplate(m_mapid);
|
||||
}
|
||||
|
||||
MapRecord GetMapEntry()
|
||||
{
|
||||
return CliDB.MapStorage.LookupByKey(m_mapid);
|
||||
|
||||
@@ -184,12 +184,6 @@ namespace Game.Maps
|
||||
Log.outError(LogFilter.Maps, "CreateInstance: no record for map {0}", GetId());
|
||||
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
|
||||
Global.DB2Mgr.GetDownscaledMapDifficultyData(GetId(), ref difficulty);
|
||||
|
||||
@@ -140,10 +140,6 @@ namespace Game.Entities
|
||||
if (!entry.IsDungeon())
|
||||
return EnterState.CanEnter;
|
||||
|
||||
InstanceTemplate instance = Global.ObjectMgr.GetInstanceTemplate(mapid);
|
||||
if (instance == null)
|
||||
return EnterState.CannotEnterUninstancedDungeon;
|
||||
|
||||
Difficulty targetDifficulty = player.GetDifficultyID(entry);
|
||||
// Get the highest available difficulty if current setting is higher than the instance allows
|
||||
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);
|
||||
}
|
||||
|
||||
public bool IsValidMAP(uint mapid, bool startUp)
|
||||
public bool IsValidMAP(uint mapId)
|
||||
{
|
||||
MapRecord mEntry = CliDB.MapStorage.LookupByKey(mapid);
|
||||
|
||||
if (startUp)
|
||||
return mEntry != null;
|
||||
else
|
||||
return mEntry != null && (!mEntry.IsDungeon() || Global.ObjectMgr.GetInstanceTemplate(mapid) != null);
|
||||
|
||||
// TODO: add check for Battlegroundtemplate
|
||||
return CliDB.MapStorage.ContainsKey(mapId);
|
||||
}
|
||||
|
||||
public void UnloadAll()
|
||||
|
||||
@@ -5435,9 +5435,6 @@ namespace Game.Spells
|
||||
return SpellCastResult.TargetLockedToRaidInstance;
|
||||
}
|
||||
}
|
||||
InstanceTemplate instance = Global.ObjectMgr.GetInstanceTemplate(mapId);
|
||||
if (instance == null)
|
||||
return SpellCastResult.TargetNotInInstance;
|
||||
if (!target.Satisfy(Global.ObjectMgr.GetAccessRequirement(mapId, difficulty), mapId))
|
||||
return SpellCastResult.BadTargets;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user