diff options
-rw-r--r-- | src/server/game/Entities/Creature/Creature.cpp | 12 | ||||
-rw-r--r-- | src/server/game/Entities/Creature/Creature.h | 2 | ||||
-rw-r--r-- | src/server/game/Entities/GameObject/GameObject.cpp | 25 | ||||
-rw-r--r-- | src/server/game/Entities/GameObject/GameObject.h | 2 | ||||
-rw-r--r-- | src/server/game/Entities/Object/Object.h | 1 | ||||
-rw-r--r-- | src/server/game/Grids/ObjectGridLoader.cpp | 3 | ||||
-rw-r--r-- | src/server/game/Maps/Map.cpp | 10 | ||||
-rw-r--r-- | src/server/game/Pools/PoolMgr.cpp | 4 | ||||
-rw-r--r-- | src/server/game/World/World.cpp | 7 | ||||
-rw-r--r-- | src/server/game/World/World.h | 1 | ||||
-rw-r--r-- | src/server/worldserver/worldserver.conf.dist | 8 |
11 files changed, 16 insertions, 59 deletions
diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index ce5222b5195..70297006b11 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -465,7 +465,7 @@ void Creature::RemoveCorpse(bool setSpawnTime, bool destroyForNearbyPlayers) uint32 respawnDelay = m_respawnDelay; m_respawnTime = std::max<time_t>(GameTime::GetGameTime() + respawnDelay, m_respawnTime); - SaveRespawnTime(0, false); + SaveRespawnTime(); } if (TempSummon* summon = ToTempSummon()) @@ -2109,11 +2109,7 @@ void Creature::setDeathState(DeathState s) m_respawnTime = GameTime::GetGameTime() + respawnDelay; } - // always save boss respawn time at death to prevent crash cheating - if (sWorld->getBoolConfig(CONFIG_SAVE_RESPAWN_TIME_IMMEDIATELY) || isWorldBoss()) - SaveRespawnTime(); - else if (!m_respawnCompatibilityMode) - SaveRespawnTime(0, false); + SaveRespawnTime(); ReleaseFocus(nullptr, false); // remove spellcast focus DoNotReacquireTarget(); // cancel delayed re-target @@ -2572,7 +2568,7 @@ bool Creature::_IsTargetAcceptable(Unit const* target) const return false; } -void Creature::SaveRespawnTime(uint32 forceDelay, bool savetodb) +void Creature::SaveRespawnTime(uint32 forceDelay) { if (IsSummon() || !m_spawnId || (m_creatureData && !m_creatureData->dbData)) return; @@ -2584,7 +2580,7 @@ void Creature::SaveRespawnTime(uint32 forceDelay, bool savetodb) } time_t thisRespawnTime = forceDelay ? GameTime::GetGameTime() + forceDelay : m_respawnTime; - GetMap()->SaveRespawnTime(SPAWN_TYPE_CREATURE, m_spawnId, GetEntry(), thisRespawnTime, GetMap()->GetZoneId(GetPhaseShift(), GetHomePosition()), Trinity::ComputeGridCoord(GetHomePosition().GetPositionX(), GetHomePosition().GetPositionY()).GetId(), savetodb && m_creatureData && m_creatureData->dbData); + GetMap()->SaveRespawnTime(SPAWN_TYPE_CREATURE, m_spawnId, GetEntry(), thisRespawnTime, GetMap()->GetZoneId(GetPhaseShift(), GetHomePosition()), Trinity::ComputeGridCoord(GetHomePosition().GetPositionX(), GetHomePosition().GetPositionY()).GetId()); } // this should not be called by petAI or diff --git a/src/server/game/Entities/Creature/Creature.h b/src/server/game/Entities/Creature/Creature.h index a108630811c..119408a2f2e 100644 --- a/src/server/game/Entities/Creature/Creature.h +++ b/src/server/game/Entities/Creature/Creature.h @@ -266,7 +266,7 @@ class TC_GAME_API Creature : public Unit, public GridObject<Creature>, public Ma time_t GetRespawnTimeEx() const; void SetRespawnTime(uint32 respawn); void Respawn(bool force = false); - void SaveRespawnTime(uint32 forceDelay = 0, bool savetodb = true) override; + void SaveRespawnTime(uint32 forceDelay = 0); uint32 GetRespawnDelay() const { return m_respawnDelay; } void SetRespawnDelay(uint32 delay) { m_respawnDelay = delay; } diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index 0d20d360d55..394a668a9fa 100644 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -669,7 +669,7 @@ void GameObject::Update(uint32 diff) SetRespawnTime(WEEK); else m_respawnTime = (now > linkedRespawntime ? now : linkedRespawntime) + urand(5, MINUTE); // else copy time from master and add a little - SaveRespawnTime(); // also save to DB immediately + SaveRespawnTime(); return; } @@ -730,7 +730,7 @@ void GameObject::Update(uint32 diff) // Set respawn timer if (!m_respawnCompatibilityMode && m_respawnTime > 0) - SaveRespawnTime(0, false); + SaveRespawnTime(); if (isSpawned()) { @@ -967,22 +967,13 @@ void GameObject::Update(uint32 diff) // if option not set then object will be saved at grid unload // Otherwise just save respawn time to map object memory - if (sWorld->getBoolConfig(CONFIG_SAVE_RESPAWN_TIME_IMMEDIATELY)) - SaveRespawnTime(); - - if (!m_respawnCompatibilityMode) - { - // Respawn time was just saved if set to save to DB - // If not, we save only to map memory - if (!sWorld->getBoolConfig(CONFIG_SAVE_RESPAWN_TIME_IMMEDIATELY)) - SaveRespawnTime(0, false); + SaveRespawnTime(); - // Then despawn + if (m_respawnCompatibilityMode) + DestroyForNearbyPlayers(); + else AddObjectToRemoveList(); - return; - } - DestroyForNearbyPlayers(); // old UpdateObjectVisibility() break; } @@ -1389,7 +1380,7 @@ bool GameObject::IsDestructibleBuilding() const return gInfo->type == GAMEOBJECT_TYPE_DESTRUCTIBLE_BUILDING; } -void GameObject::SaveRespawnTime(uint32 forceDelay, bool savetodb) +void GameObject::SaveRespawnTime(uint32 forceDelay) { if (m_goData && (forceDelay || m_respawnTime > GameTime::GetGameTime()) && m_spawnedByDefault) { @@ -1400,7 +1391,7 @@ void GameObject::SaveRespawnTime(uint32 forceDelay, bool savetodb) } uint32 thisRespawnTime = forceDelay ? GameTime::GetGameTime() + forceDelay : m_respawnTime; - GetMap()->SaveRespawnTime(SPAWN_TYPE_GAMEOBJECT, m_spawnId, GetEntry(), thisRespawnTime, GetZoneId(), Trinity::ComputeGridCoord(GetPositionX(), GetPositionY()).GetId(), m_goData->dbData ? savetodb : false); + GetMap()->SaveRespawnTime(SPAWN_TYPE_GAMEOBJECT, m_spawnId, GetEntry(), thisRespawnTime, GetZoneId(), Trinity::ComputeGridCoord(GetPositionX(), GetPositionY()).GetId()); } } diff --git a/src/server/game/Entities/GameObject/GameObject.h b/src/server/game/Entities/GameObject/GameObject.h index 72f466aa327..1bcd010e773 100644 --- a/src/server/game/Entities/GameObject/GameObject.h +++ b/src/server/game/Entities/GameObject/GameObject.h @@ -219,7 +219,7 @@ class TC_GAME_API GameObject : public WorldObject, public GridObject<GameObject> uint32 GetUseCount() const { return m_usetimes; } uint32 GetUniqueUseCount() const { return uint32(m_unique_users.size()); } - void SaveRespawnTime(uint32 forceDelay = 0, bool savetodb = true) override; + void SaveRespawnTime(uint32 forceDelay = 0); Loot loot; diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h index 579a8d16e93..3410da98477 100644 --- a/src/server/game/Entities/Object/Object.h +++ b/src/server/game/Entities/Object/Object.h @@ -539,7 +539,6 @@ class TC_GAME_API WorldObject : public Object, public WorldLocation void PlayDirectSound(uint32 soundId, Player* target = nullptr, uint32 broadcastTextId = 0); void PlayDirectMusic(uint32 musicId, Player* target = nullptr); - virtual void SaveRespawnTime(uint32 /*forceDelay*/ = 0, bool /*saveToDB*/ = true) { } void AddObjectToRemoveList(); float GetGridActivationRange() const; diff --git a/src/server/game/Grids/ObjectGridLoader.cpp b/src/server/game/Grids/ObjectGridLoader.cpp index 58fb0815e87..8d7ba4994e0 100644 --- a/src/server/game/Grids/ObjectGridLoader.cpp +++ b/src/server/game/Grids/ObjectGridLoader.cpp @@ -247,9 +247,6 @@ void ObjectGridUnloader::Visit(GridRefManager<T> &m) while (!m.isEmpty()) { T *obj = m.getFirst()->GetSource(); - // if option set then object already saved at this moment - if (!sWorld->getBoolConfig(CONFIG_SAVE_RESPAWN_TIME_IMMEDIATELY)) - obj->SaveRespawnTime(); //Some creatures may summon other temp summons in CleanupsBeforeDelete() //So we need this even after cleaner (maybe we can remove cleaner) //Example: Flame Leviathan Turret 33139 is summoned when a creature is deleted diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp index 462c75b933c..e38256f5bab 100644 --- a/src/server/game/Maps/Map.cpp +++ b/src/server/game/Maps/Map.cpp @@ -1075,12 +1075,7 @@ void Map::RemoveFromMap(T *obj, bool remove) obj->ResetMap(); if (remove) - { - // if option set then object already saved at this moment - if (!sWorld->getBoolConfig(CONFIG_SAVE_RESPAWN_TIME_IMMEDIATELY)) - obj->SaveRespawnTime(); DeleteFromWorld(obj); - } } template<> @@ -1120,12 +1115,7 @@ void Map::RemoveFromMap(Transport* obj, bool remove) obj->ResetMap(); if (remove) - { - // if option set then object already saved at this moment - if (!sWorld->getBoolConfig(CONFIG_SAVE_RESPAWN_TIME_IMMEDIATELY)) - obj->SaveRespawnTime(); DeleteFromWorld(obj); - } } template <typename T> diff --git a/src/server/game/Pools/PoolMgr.cpp b/src/server/game/Pools/PoolMgr.cpp index 306987c9d7f..4f3c21626de 100644 --- a/src/server/game/Pools/PoolMgr.cpp +++ b/src/server/game/Pools/PoolMgr.cpp @@ -210,7 +210,7 @@ void PoolGroup<Creature>::Despawn1Object(uint64 guid) ++itr; // For dynamic spawns, save respawn time here if (!creature->GetRespawnCompatibilityMode()) - creature->SaveRespawnTime(0, false); + creature->SaveRespawnTime(); creature->AddObjectToRemoveList(); } } @@ -236,7 +236,7 @@ void PoolGroup<GameObject>::Despawn1Object(uint64 guid) // For dynamic spawns, save respawn time here if (!go->GetRespawnCompatibilityMode()) - go->SaveRespawnTime(0, false); + go->SaveRespawnTime(); go->AddObjectToRemoveList(); } } diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index 13c0bcdde0f..0b6c7641b8b 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -1165,13 +1165,6 @@ void World::LoadConfigSettings(bool reload) m_int_configs[CONFIG_MAX_OVERSPEED_PINGS] = 2; } - m_bool_configs[CONFIG_SAVE_RESPAWN_TIME_IMMEDIATELY] = sConfigMgr->GetBoolDefault("SaveRespawnTimeImmediately", true); - if (!m_bool_configs[CONFIG_SAVE_RESPAWN_TIME_IMMEDIATELY]) - { - TC_LOG_WARN("server.loading", "SaveRespawnTimeImmediately triggers assertions when disabled, overridden to Enabled"); - m_bool_configs[CONFIG_SAVE_RESPAWN_TIME_IMMEDIATELY] = true; - } - m_bool_configs[CONFIG_WEATHER] = sConfigMgr->GetBoolDefault("ActivateWeather", true); m_int_configs[CONFIG_DISABLE_BREATHING] = sConfigMgr->GetIntDefault("DisableWaterBreath", SEC_CONSOLE); diff --git a/src/server/game/World/World.h b/src/server/game/World/World.h index a80007ddbf2..ac66c13380d 100644 --- a/src/server/game/World/World.h +++ b/src/server/game/World/World.h @@ -119,7 +119,6 @@ enum WorldBoolConfigs CONFIG_GM_LOWER_SECURITY, CONFIG_SKILL_PROSPECTING, CONFIG_SKILL_MILLING, - CONFIG_SAVE_RESPAWN_TIME_IMMEDIATELY, CONFIG_WEATHER, CONFIG_QUEST_IGNORE_RAID, CONFIG_CHAT_PARTY_RAID_WARNINGS, diff --git a/src/server/worldserver/worldserver.conf.dist b/src/server/worldserver/worldserver.conf.dist index ca6cbed520e..babb30f5c35 100644 --- a/src/server/worldserver/worldserver.conf.dist +++ b/src/server/worldserver/worldserver.conf.dist @@ -289,14 +289,6 @@ Compression = 1 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 # Description: Maximum overspeed ping count before character is disconnected. # Default: 2 - (Enabled, Minimum value) |