diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/GameObject/GameObject.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index 05126b2be41..6f7a769d8d9 100644 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -2948,6 +2948,13 @@ void GameObject::Use(Unit* user) if (user->GetTypeId() != TYPEID_PLAYER) return; + GameObjectType::NewFlag const* newFlag = dynamic_cast<GameObjectType::NewFlag const*>(m_goTypeImpl.get()); + if (!newFlag) + return; + + if (newFlag->GetState() != FlagState::InBase) + return; + spellId = info->newflag.pickupSpell; spellCaster = nullptr; break; @@ -2965,6 +2972,13 @@ void GameObject::Use(Unit* user) { if (owner->GetGoType() == GAMEOBJECT_TYPE_NEW_FLAG) { + GameObjectType::NewFlag const* newFlag = dynamic_cast<GameObjectType::NewFlag const*>(m_goTypeImpl.get()); + if (!newFlag) + return; + + if (newFlag->GetState() != FlagState::Dropped) + return; + // friendly with enemy flag means you're taking it bool defenderInteract = !owner->IsFriendlyTo(user); if (defenderInteract && owner->GetGOInfo()->newflag.ReturnonDefenderInteract) |