diff options
| author | ariel- <ariel-@users.noreply.github.com> | 2018-02-24 20:57:55 -0300 |
|---|---|---|
| committer | ariel- <ariel-@users.noreply.github.com> | 2018-02-24 20:57:55 -0300 |
| commit | 34967e9c32b2c7e871bb93f41609a3b08ad92931 (patch) | |
| tree | 575a6bd4c3b83c33b82975b9b0ae2e3ce7b9a943 /src/server/scripts/Commands | |
| parent | 02739c2cbb1c6956e26a21120ddef42d017923c2 (diff) | |
Core/GameObject: implemented gameobject_overrides table to change faction and flags values on a per-spawn basis
Updates #20957
Closes #20958
Diffstat (limited to 'src/server/scripts/Commands')
| -rw-r--r-- | src/server/scripts/Commands/cs_gobject.cpp | 17 |
1 files changed, 13 insertions, 4 deletions
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()); |
