aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts/Commands
diff options
context:
space:
mode:
authorariel- <ariel-@users.noreply.github.com>2018-02-24 20:57:55 -0300
committerariel- <ariel-@users.noreply.github.com>2018-02-24 20:57:55 -0300
commit34967e9c32b2c7e871bb93f41609a3b08ad92931 (patch)
tree575a6bd4c3b83c33b82975b9b0ae2e3ce7b9a943 /src/server/scripts/Commands
parent02739c2cbb1c6956e26a21120ddef42d017923c2 (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.cpp17
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());