aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGolrag <golrag.jeremy@gmail.com>2023-08-24 12:40:40 +0200
committerModoX <moardox@gmail.com>2023-08-24 16:15:32 +0200
commit28c5d71b284a19657a602590cc6fcc2f1746b124 (patch)
tree2e0e3f0cac65cb93cd98aadd2c9971bc733fdcdc /src
parent0367e1afc51916cb38c9ceecf1935fad0ea2d26a (diff)
Core/GameObject: Added additional checks for GAMEOBJECT_TYPE_NEW_FLAG and GAMEOBJECT_TYPE_NEW_FLAG_DROP for potential exploits / lag issues
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)