aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2021-11-27 16:36:04 +0100
committerShauren <shauren.trinity@gmail.com>2022-03-23 00:06:51 +0100
commit57d9d16442677201bc7c27729e3f167830b2e495 (patch)
tree733690bf4bec02b71c211a48913c6bed5b5ccde3 /src
parent83b4c8cd37bd3b6894cfbd1f48c1c7e7234f853f (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.cpp6
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())