From 264dd0c65afc33e9613e42dee656697d088d8a74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francesco=20Borz=C3=AC?= Date: Sat, 2 Feb 2019 14:34:50 +0100 Subject: [PATCH] fix(gobject): elevator bug + prevent bugs related to faction and flags (#1402) - Closes #1396 --- src/server/game/Entities/GameObject/GameObject.cpp | 2 +- src/server/game/Entities/GameObject/GameObject.h | 2 -- src/server/game/Entities/Transport/Transport.cpp | 7 +++++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index 358646267..cee784535 100644 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -1890,7 +1890,7 @@ void GameObject::CastSpell(Unit* target, uint32 spellId) else { // xinef: set faction of gameobject, if no faction - assume hostile - trigger->setFaction(GetGOInfo()->faction ? GetGOInfo()->faction : 14); + trigger->setFaction(GetTemplateAddon() && GetTemplateAddon()->faction ? GetTemplateAddon()->faction : 14); // Set owner guid for target if no owner availble - needed by trigger auras // - trigger gets despawned and there's no caster avalible (see AuraEffect::TriggerSpell()) // xinef: set proper orientation, fixes cast against stealthed targets diff --git a/src/server/game/Entities/GameObject/GameObject.h b/src/server/game/Entities/GameObject/GameObject.h index 280913c9a..ffb85fc05 100644 --- a/src/server/game/Entities/GameObject/GameObject.h +++ b/src/server/game/Entities/GameObject/GameObject.h @@ -32,8 +32,6 @@ struct GameObjectTemplate std::string IconName; std::string castBarCaption; std::string unk1; - uint32 faction; - uint32 flags; float size; union // different GO types have different data field { diff --git a/src/server/game/Entities/Transport/Transport.cpp b/src/server/game/Entities/Transport/Transport.cpp index 79f773bb2..7001d2bad 100644 --- a/src/server/game/Entities/Transport/Transport.cpp +++ b/src/server/game/Entities/Transport/Transport.cpp @@ -700,8 +700,11 @@ bool StaticTransport::Create(uint32 guidlow, uint32 name_id, Map* map, uint32 ph SetObjectScale(goinfo->size); - SetUInt32Value(GAMEOBJECT_FACTION, goinfo->faction); - SetUInt32Value(GAMEOBJECT_FLAGS, goinfo->flags); + if (GameObjectTemplateAddon const* addon = GetTemplateAddon()) + { + SetUInt32Value(GAMEOBJECT_FACTION, addon->faction); + SetUInt32Value(GAMEOBJECT_FLAGS, addon->flags); + } SetEntry(goinfo->entry); SetName(goinfo->name);