aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/GameObject/GameObject.cpp14
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)