diff options
author | Shauren <shauren.trinity@gmail.com> | 2021-11-27 16:36:04 +0100 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2022-03-23 00:06:51 +0100 |
commit | 57d9d16442677201bc7c27729e3f167830b2e495 (patch) | |
tree | 733690bf4bec02b71c211a48913c6bed5b5ccde3 /src | |
parent | 83b4c8cd37bd3b6894cfbd1f48c1c7e7234f853f (diff) |
Core/Auras: Properly clean up partial charm applications
Ref #24876
(cherry picked from commit 9174281b9253712982273b9b703d9fbac5cef9cd)
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 8d4e9c22ec7..0d950e15739 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -11129,7 +11129,13 @@ bool Unit::SetCharmedBy(Unit* charmer, CharmType type, AuraApplication const* au // charm is set by aura, and aura effect remove handler was called during apply handler execution // prevent undefined behaviour if (aurApp && aurApp->GetRemoveMode()) + { + // properly clean up charm changes up to this point to avoid leaving the unit in partially charmed state + SetFaction(_oldFactionId); + GetMotionMaster()->InitializeDefault(); + charmer->SetCharm(this, false); return false; + } // Pets already have a properly initialized CharmInfo, don't overwrite it. if (type != CHARM_TYPE_VEHICLE && !GetCharmInfo()) |