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:
hondacrx
2021-12-27 17:39:42 -05:00
parent 0f98aec1cd
commit 9b2d1e67b6
9 changed files with 15 additions and 59 deletions
@@ -1678,7 +1678,6 @@ namespace Framework.Constants
RespawnMinCheckIntervalMs, RespawnMinCheckIntervalMs,
RespawnRestartQuietTime, RespawnRestartQuietTime,
RestrictedLfgChannel, RestrictedLfgChannel,
SaveRespawnTimeImmediately,
SessionAddDelay, SessionAddDelay,
ShowBanInWorld, ShowBanInWorld,
ShowKickInWorld, ShowKickInWorld,
+3 -7
View File
@@ -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();
@@ -1803,11 +1803,7 @@ namespace Game.Entities
m_respawnTime = GameTime.GetGameTime() + respawnDelay; m_respawnTime = GameTime.GetGameTime() + respawnDelay;
} }
// always save boss respawn time at death to prevent crash cheating
if (WorldConfig.GetBoolValue(WorldCfg.SaveRespawnTimeImmediately) || IsWorldBoss())
SaveRespawnTime(); 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)
+7 -16
View File
@@ -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; }
-10
View File
@@ -965,13 +965,8 @@ 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,13 +997,8 @@ 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
{ {
-3
View File
@@ -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
+2 -2
View File
@@ -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();
} }
-7
View File
@@ -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);
-8
View File
@@ -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.