diff options
author | Treeston <treeston.mmoc@gmail.com> | 2018-01-29 03:07:43 +0100 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2021-06-19 01:35:40 +0200 |
commit | fdc1c5b6c952262f98f15f35dcf19fe293c65d5b (patch) | |
tree | 14cdac7c3e69fb55bf2375120cd76412d1a51356 /src/server | |
parent | 75a3b2f122f04a70f3e9eeed21cbe71d131c425f (diff) |
Combat/Threat: Now set engaged state for all units on offline reference registration (vanished/invis'd units). For non-PASSIVE units, this will immediately cause an evade.
This fixes an exploit where creating the reference as offline (by vanishing while a spell was mid-flight) you could damage a creature further without it ever engaging you.
(cherry picked from commit 24024062280e6963f713348baba2b8c69437891a)
Diffstat (limited to 'src/server')
-rw-r--r-- | src/server/game/Combat/ThreatManager.cpp | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/src/server/game/Combat/ThreatManager.cpp b/src/server/game/Combat/ThreatManager.cpp index 3cbd1c39bf3..9cc86ceb625 100644 --- a/src/server/game/Combat/ThreatManager.cpp +++ b/src/server/game/Combat/ThreatManager.cpp @@ -380,13 +380,12 @@ void ThreatManager::AddThreat(Unit* target, float amount, SpellInfo const* spell ThreatReference* ref = new ThreatReference(this, target, amount); PutThreatListRef(target->GetGUID(), ref); target->GetThreatManager().PutThreatenedByMeRef(_owner->GetGUID(), ref); - - Creature* cOwner = _owner->ToCreature(); - ASSERT(cOwner); // if we got here the owner can have a threat list, and must be a creature! - if (!_ownerEngaged && (cOwner->HasReactState(REACT_PASSIVE) || !ref->IsOffline())) + if (!_ownerEngaged) { _ownerEngaged = true; + Creature* cOwner = _owner->ToCreature(); + ASSERT(cOwner); // if we got here the owner can have a threat list, and must be a creature! SaveCreatureHomePositionIfNeed(cOwner); if (cOwner->IsAIEnabled) cOwner->AI()->JustEngagedWith(target); |