diff options
author | Golrag <golrag.jeremy@gmail.com> | 2023-08-24 12:40:40 +0200 |
---|---|---|
committer | ModoX <moardox@gmail.com> | 2023-08-24 16:15:32 +0200 |
commit | 28c5d71b284a19657a602590cc6fcc2f1746b124 (patch) | |
tree | 2e0e3f0cac65cb93cd98aadd2c9971bc733fdcdc /src | |
parent | 0367e1afc51916cb38c9ceecf1935fad0ea2d26a (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.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) |