Core/Spawns: Exterminate CONFIG_SAVE_RESPAWN_TIME_IMMEDIATELY with extreme prejudice. (It didn't work anyway.)
Port From (https://github.com/TrinityCore/TrinityCore/commit/d5e58cef694d3db65f0a27b93099ae4e517685a4)
This commit is contained in:
@@ -1678,7 +1678,6 @@ namespace Framework.Constants
|
|||||||
RespawnMinCheckIntervalMs,
|
RespawnMinCheckIntervalMs,
|
||||||
RespawnRestartQuietTime,
|
RespawnRestartQuietTime,
|
||||||
RestrictedLfgChannel,
|
RestrictedLfgChannel,
|
||||||
SaveRespawnTimeImmediately,
|
|
||||||
SessionAddDelay,
|
SessionAddDelay,
|
||||||
ShowBanInWorld,
|
ShowBanInWorld,
|
||||||
ShowKickInWorld,
|
ShowKickInWorld,
|
||||||
|
|||||||
@@ -208,7 +208,7 @@ namespace Game.Entities
|
|||||||
uint respawnDelay = m_respawnDelay;
|
uint respawnDelay = m_respawnDelay;
|
||||||
m_respawnTime = Math.Max(GameTime.GetGameTime() + respawnDelay, m_respawnTime);
|
m_respawnTime = Math.Max(GameTime.GetGameTime() + respawnDelay, m_respawnTime);
|
||||||
|
|
||||||
SaveRespawnTime(0, false);
|
SaveRespawnTime();
|
||||||
}
|
}
|
||||||
|
|
||||||
TempSummon summon = ToTempSummon();
|
TempSummon summon = ToTempSummon();
|
||||||
@@ -1802,12 +1802,8 @@ namespace Game.Entities
|
|||||||
else
|
else
|
||||||
m_respawnTime = GameTime.GetGameTime() + respawnDelay;
|
m_respawnTime = GameTime.GetGameTime() + respawnDelay;
|
||||||
}
|
}
|
||||||
|
|
||||||
// always save boss respawn time at death to prevent crash cheating
|
SaveRespawnTime();
|
||||||
if (WorldConfig.GetBoolValue(WorldCfg.SaveRespawnTimeImmediately) || IsWorldBoss())
|
|
||||||
SaveRespawnTime();
|
|
||||||
else if (!m_respawnCompatibilityMode)
|
|
||||||
SaveRespawnTime(0, false);
|
|
||||||
|
|
||||||
ReleaseFocus(null, false); // remove spellcast focus
|
ReleaseFocus(null, false); // remove spellcast focus
|
||||||
DoNotReacquireTarget(); // cancel delayed re-target
|
DoNotReacquireTarget(); // cancel delayed re-target
|
||||||
@@ -2265,7 +2261,7 @@ namespace Game.Entities
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void SaveRespawnTime(uint forceDelay = 0, bool saveToDb = true)
|
public void SaveRespawnTime(uint forceDelay = 0)
|
||||||
{
|
{
|
||||||
if (IsSummon() || m_spawnId == 0 || (m_creatureData != null && !m_creatureData.dbData))
|
if (IsSummon() || m_spawnId == 0 || (m_creatureData != null && !m_creatureData.dbData))
|
||||||
return;
|
return;
|
||||||
@@ -2277,7 +2273,7 @@ namespace Game.Entities
|
|||||||
}
|
}
|
||||||
|
|
||||||
long thisRespawnTime = forceDelay != 0 ? GameTime.GetGameTime() + forceDelay : m_respawnTime;
|
long thisRespawnTime = forceDelay != 0 ? GameTime.GetGameTime() + forceDelay : m_respawnTime;
|
||||||
GetMap().SaveRespawnTime(SpawnObjectType.Creature, m_spawnId, GetEntry(), thisRespawnTime, GetMap().GetZoneId(GetPhaseShift(), GetHomePosition()), GridDefines.ComputeGridCoord(GetHomePosition().GetPositionX(), GetHomePosition().GetPositionY()).GetId(), saveToDb && m_creatureData != null && m_creatureData.dbData);
|
GetMap().SaveRespawnTime(SpawnObjectType.Creature, m_spawnId, GetEntry(), thisRespawnTime, GetMap().GetZoneId(GetPhaseShift(), GetHomePosition()), GridDefines.ComputeGridCoord(GetHomePosition().GetPositionX(), GetHomePosition().GetPositionY()).GetId());
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool CanCreatureAttack(Unit victim, bool force = true)
|
public bool CanCreatureAttack(Unit victim, bool force = true)
|
||||||
|
|||||||
@@ -566,7 +566,7 @@ namespace Game.Entities
|
|||||||
SetRespawnTime(Time.Week);
|
SetRespawnTime(Time.Week);
|
||||||
else
|
else
|
||||||
m_respawnTime = (now > linkedRespawntime ? now : linkedRespawntime) + RandomHelper.IRand(5, Time.Minute); // else copy time from master and add a little
|
m_respawnTime = (now > linkedRespawntime ? now : linkedRespawntime) + RandomHelper.IRand(5, Time.Minute); // else copy time from master and add a little
|
||||||
SaveRespawnTime(); // also save to DB immediately
|
SaveRespawnTime();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -625,7 +625,7 @@ namespace Game.Entities
|
|||||||
|
|
||||||
// Set respawn timer
|
// Set respawn timer
|
||||||
if (!m_respawnCompatibilityMode && m_respawnTime > 0)
|
if (!m_respawnCompatibilityMode && m_respawnTime > 0)
|
||||||
SaveRespawnTime(0, false);
|
SaveRespawnTime();
|
||||||
|
|
||||||
if (IsSpawned())
|
if (IsSpawned())
|
||||||
{
|
{
|
||||||
@@ -875,22 +875,13 @@ namespace Game.Entities
|
|||||||
|
|
||||||
// if option not set then object will be saved at grid unload
|
// if option not set then object will be saved at grid unload
|
||||||
// Otherwise just save respawn time to map object memory
|
// Otherwise just save respawn time to map object memory
|
||||||
if (WorldConfig.GetBoolValue(WorldCfg.SaveRespawnTimeImmediately))
|
SaveRespawnTime();
|
||||||
SaveRespawnTime();
|
|
||||||
|
|
||||||
if (!m_respawnCompatibilityMode)
|
if (m_respawnCompatibilityMode)
|
||||||
{
|
DestroyForNearbyPlayers();
|
||||||
// Respawn time was just saved if set to save to DB
|
else
|
||||||
// If not, we save only to map memory
|
|
||||||
if (!WorldConfig.GetBoolValue(WorldCfg.SaveRespawnTimeImmediately))
|
|
||||||
SaveRespawnTime(0, false);
|
|
||||||
|
|
||||||
// Then despawn
|
|
||||||
AddObjectToRemoveList();
|
AddObjectToRemoveList();
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
DestroyForNearbyPlayers(); // old UpdateObjectVisibility()
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1274,7 +1265,7 @@ namespace Game.Entities
|
|||||||
|
|
||||||
public Transport ToTransport() { return GetGoInfo().type == GameObjectTypes.MapObjTransport ? (this as Transport) : null; }
|
public Transport ToTransport() { return GetGoInfo().type == GameObjectTypes.MapObjTransport ? (this as Transport) : null; }
|
||||||
|
|
||||||
public override void SaveRespawnTime(uint forceDelay = 0, bool savetodb = true)
|
public void SaveRespawnTime(uint forceDelay = 0)
|
||||||
{
|
{
|
||||||
if (m_goData != null && (forceDelay != 0 || m_respawnTime > GameTime.GetGameTime()) && m_spawnedByDefault)
|
if (m_goData != null && (forceDelay != 0 || m_respawnTime > GameTime.GetGameTime()) && m_spawnedByDefault)
|
||||||
{
|
{
|
||||||
@@ -1285,7 +1276,7 @@ namespace Game.Entities
|
|||||||
}
|
}
|
||||||
|
|
||||||
long thisRespawnTime = forceDelay != 0 ? GameTime.GetGameTime() + forceDelay : m_respawnTime;
|
long thisRespawnTime = forceDelay != 0 ? GameTime.GetGameTime() + forceDelay : m_respawnTime;
|
||||||
GetMap().SaveRespawnTime(SpawnObjectType.GameObject, m_spawnId, GetEntry(), thisRespawnTime, GetZoneId(), GridDefines.ComputeGridCoord(GetPositionX(), GetPositionY()).GetId(), m_goData.dbData && savetodb);
|
GetMap().SaveRespawnTime(SpawnObjectType.GameObject, m_spawnId, GetEntry(), thisRespawnTime, GetZoneId(), GridDefines.ComputeGridCoord(GetPositionX(), GetPositionY()).GetId());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2821,8 +2821,6 @@ namespace Game.Entities
|
|||||||
|
|
||||||
public virtual uint GetLevelForTarget(WorldObject target) { return 1; }
|
public virtual uint GetLevelForTarget(WorldObject target) { return 1; }
|
||||||
|
|
||||||
public virtual void SaveRespawnTime(uint forceDelay = 0, bool saveToDB = true) { }
|
|
||||||
|
|
||||||
public ZoneScript GetZoneScript() { return m_zoneScript; }
|
public ZoneScript GetZoneScript() { return m_zoneScript; }
|
||||||
|
|
||||||
public void AddToNotify(NotifyFlags f) { m_notifyflags |= f; }
|
public void AddToNotify(NotifyFlags f) { m_notifyflags |= f; }
|
||||||
|
|||||||
@@ -965,12 +965,7 @@ namespace Game.Maps
|
|||||||
obj.ResetMap();
|
obj.ResetMap();
|
||||||
|
|
||||||
if (remove)
|
if (remove)
|
||||||
{
|
|
||||||
// if option set then object already saved at this moment
|
|
||||||
if (!WorldConfig.GetBoolValue(WorldCfg.SaveRespawnTimeImmediately))
|
|
||||||
obj.SaveRespawnTime();
|
|
||||||
DeleteFromWorld(obj);
|
DeleteFromWorld(obj);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RemoveFromMap(Transport obj, bool remove)
|
public void RemoveFromMap(Transport obj, bool remove)
|
||||||
@@ -1002,12 +997,7 @@ namespace Game.Maps
|
|||||||
|
|
||||||
obj.ResetMap();
|
obj.ResetMap();
|
||||||
if (remove)
|
if (remove)
|
||||||
{
|
|
||||||
// if option set then object already saved at this moment
|
|
||||||
if (!WorldConfig.GetBoolValue(WorldCfg.SaveRespawnTimeImmediately))
|
|
||||||
obj.SaveRespawnTime();
|
|
||||||
DeleteFromWorld(obj);
|
DeleteFromWorld(obj);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CheckGridIntegrity<T>(T obj, bool moved) where T : WorldObject
|
bool CheckGridIntegrity<T>(T obj, bool moved) where T : WorldObject
|
||||||
|
|||||||
@@ -280,9 +280,6 @@ namespace Game.Maps
|
|||||||
if (obj.IsTypeId(TypeId.Corpse))
|
if (obj.IsTypeId(TypeId.Corpse))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// if option set then object already saved at this moment
|
|
||||||
if (!WorldConfig.GetBoolValue(WorldCfg.SaveRespawnTimeImmediately))
|
|
||||||
obj.SaveRespawnTime();
|
|
||||||
//Some creatures may summon other temp summons in CleanupsBeforeDelete()
|
//Some creatures may summon other temp summons in CleanupsBeforeDelete()
|
||||||
//So we need this even after cleaner (maybe we can remove cleaner)
|
//So we need this even after cleaner (maybe we can remove cleaner)
|
||||||
//Example: Flame Leviathan Turret 33139 is summoned when a creature is deleted
|
//Example: Flame Leviathan Turret 33139 is summoned when a creature is deleted
|
||||||
|
|||||||
@@ -651,7 +651,7 @@ namespace Game
|
|||||||
{
|
{
|
||||||
// For dynamic spawns, save respawn time here
|
// For dynamic spawns, save respawn time here
|
||||||
if (!creature.GetRespawnCompatibilityMode())
|
if (!creature.GetRespawnCompatibilityMode())
|
||||||
creature.SaveRespawnTime(0, false);
|
creature.SaveRespawnTime();
|
||||||
|
|
||||||
creature.AddObjectToRemoveList();
|
creature.AddObjectToRemoveList();
|
||||||
}
|
}
|
||||||
@@ -673,7 +673,7 @@ namespace Game
|
|||||||
{
|
{
|
||||||
// For dynamic spawns, save respawn time here
|
// For dynamic spawns, save respawn time here
|
||||||
if (!go.GetRespawnCompatibilityMode())
|
if (!go.GetRespawnCompatibilityMode())
|
||||||
go.SaveRespawnTime(0, false);
|
go.SaveRespawnTime();
|
||||||
|
|
||||||
go.AddObjectToRemoveList();
|
go.AddObjectToRemoveList();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -623,13 +623,6 @@ namespace Game
|
|||||||
Values[WorldCfg.MaxOverspeedPings] = 2;
|
Values[WorldCfg.MaxOverspeedPings] = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
Values[WorldCfg.SaveRespawnTimeImmediately] = GetDefaultValue("SaveRespawnTimeImmediately", true);
|
|
||||||
if (!(bool)Values[WorldCfg.SaveRespawnTimeImmediately])
|
|
||||||
{
|
|
||||||
Log.outWarn(LogFilter.ServerLoading, "SaveRespawnTimeImmediately triggers assertions when Disabled, overridden to Enabled");
|
|
||||||
Values[WorldCfg.SaveRespawnTimeImmediately] = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
Values[WorldCfg.Weather] = GetDefaultValue("ActivateWeather", true);
|
Values[WorldCfg.Weather] = GetDefaultValue("ActivateWeather", true);
|
||||||
|
|
||||||
Values[WorldCfg.DisableBreathing] = GetDefaultValue("DisableWaterBreath", (int)AccountTypes.Console);
|
Values[WorldCfg.DisableBreathing] = GetDefaultValue("DisableWaterBreath", (int)AccountTypes.Console);
|
||||||
|
|||||||
@@ -262,14 +262,6 @@ RealmsStateUpdateDelay = 10
|
|||||||
|
|
||||||
PlayerLimit = 0
|
PlayerLimit = 0
|
||||||
|
|
||||||
#
|
|
||||||
# SaveRespawnTimeImmediately
|
|
||||||
# Description: Save respawn time for creatures at death and gameobjects at use/open.
|
|
||||||
# Default: 1 - (Enabled, Save respawn time immediately)
|
|
||||||
# 0 - (Disabled, Save respawn time at grid unloading)
|
|
||||||
|
|
||||||
SaveRespawnTimeImmediately = 1
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# MaxOverspeedPings
|
# MaxOverspeedPings
|
||||||
# Description: Maximum overspeed ping count before character is disconnected.
|
# Description: Maximum overspeed ping count before character is disconnected.
|
||||||
|
|||||||
Reference in New Issue
Block a user