From 34967e9c32b2c7e871bb93f41609a3b08ad92931 Mon Sep 17 00:00:00 2001 From: ariel- Date: Sat, 24 Feb 2018 20:57:55 -0300 Subject: Core/GameObject: implemented gameobject_overrides table to change faction and flags values on a per-spawn basis Updates #20957 Closes #20958 --- src/server/scripts/Commands/cs_gobject.cpp | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) (limited to 'src/server/scripts/Commands') diff --git a/src/server/scripts/Commands/cs_gobject.cpp b/src/server/scripts/Commands/cs_gobject.cpp index 75259a81ef1..45a816a6a77 100644 --- a/src/server/scripts/Commands/cs_gobject.cpp +++ b/src/server/scripts/Commands/cs_gobject.cpp @@ -614,14 +614,15 @@ public: if (!param1) return false; + ObjectGuid::LowType spawnId = 0; if (strcmp(param1, "guid") == 0) { char* tail = strtok(nullptr, ""); char* cValue = handler->extractKeyFromLink(tail, "Hgameobject"); if (!cValue) return false; - ObjectGuid::LowType guidLow = atoul(cValue); - GameObjectData const* data = sObjectMgr->GetGameObjectData(guidLow); + spawnId = atoul(cValue); + GameObjectData const* data = sObjectMgr->GetGameObjectData(spawnId); if (!data) return false; entry = data->id; @@ -684,8 +685,16 @@ public: handler->PSendSysMessage(LANG_GOINFO_NAME, name.c_str()); handler->PSendSysMessage(LANG_GOINFO_SIZE, gameObjectInfo->size); - if (GameObjectTemplateAddon const* addon = sObjectMgr->GetGameObjectTemplateAddon(entry)) - handler->PSendSysMessage(LANG_GOINFO_ADDON, addon->faction, addon->flags); + GameObjectOverride const* goOverride = nullptr; + if (spawnId) + if (GameObjectOverride const* ovr = sObjectMgr->GetGameObjectOverride(spawnId)) + goOverride = ovr; + + if (!goOverride) + goOverride = sObjectMgr->GetGameObjectTemplateAddon(entry); + + if (goOverride) + handler->PSendSysMessage(LANG_GOINFO_ADDON, goOverride->Faction, goOverride->Flags); handler->PSendSysMessage(LANG_OBJECTINFO_AIINFO, gameObjectInfo->AIName.c_str(), sObjectMgr->GetScriptName(gameObjectInfo->ScriptId).c_str()); -- cgit v1.2.3