From dafa7267737ac11b7abb4dcf9943c24ab1e71a8a Mon Sep 17 00:00:00 2001 From: ariel- Date: Fri, 31 Mar 2017 01:58:15 -0300 Subject: Core/Scripts: Fix a logic fail that overriden the script of an entity that changed entry Closes #19389 --- src/server/game/Entities/Creature/Creature.cpp | 3 ++- src/server/game/Entities/GameObject/GameObject.cpp | 3 ++- src/server/game/Globals/ObjectMgr.cpp | 4 ---- 3 files changed, 4 insertions(+), 6 deletions(-) (limited to 'src/server') diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index 3ae04ccbe14..42234afb7fc 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -2591,7 +2591,8 @@ std::string Creature::GetScriptName() const uint32 Creature::GetScriptId() const { if (CreatureData const* creatureData = GetCreatureData()) - return creatureData->ScriptId; + if (uint32 scriptId = creatureData->ScriptId) + return scriptId; return sObjectMgr->GetCreatureTemplate(GetEntry())->ScriptID; } diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index d399de52cdf..1eeacba22ae 100644 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -1957,7 +1957,8 @@ void GameObject::EventInform(uint32 eventId, WorldObject* invoker /*= nullptr*/) uint32 GameObject::GetScriptId() const { if (GameObjectData const* gameObjectData = GetGOData()) - return gameObjectData->ScriptId; + if (uint32 scriptId = gameObjectData->ScriptId) + return scriptId; return GetGOInfo()->ScriptId; } diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index c0e61363f84..9ed9ef05f68 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -1795,8 +1795,6 @@ void ObjectMgr::LoadCreatures() data.unit_flags = fields[20].GetUInt32(); data.dynamicflags = fields[21].GetUInt32(); data.ScriptId = GetScriptId(fields[22].GetString()); - if (!data.ScriptId) - data.ScriptId = cInfo->ScriptID; MapEntry const* mapEntry = sMapStore.LookupEntry(data.mapid); if (!mapEntry) @@ -2137,8 +2135,6 @@ void ObjectMgr::LoadGameobjects() uint32 PoolId = fields[17].GetUInt32(); data.ScriptId = GetScriptId(fields[18].GetString()); - if (!data.ScriptId) - data.ScriptId = gInfo->ScriptId; if (std::abs(data.orientation) > 2 * float(M_PI)) { -- cgit v1.2.3