From 28c5d71b284a19657a602590cc6fcc2f1746b124 Mon Sep 17 00:00:00 2001 From: Golrag Date: Thu, 24 Aug 2023 12:40:40 +0200 Subject: Core/GameObject: Added additional checks for GAMEOBJECT_TYPE_NEW_FLAG and GAMEOBJECT_TYPE_NEW_FLAG_DROP for potential exploits / lag issues --- src/server/game/Entities/GameObject/GameObject.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'src') 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(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(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) -- cgit v1.2.3