From da21ca80fc35a325df0fb0ef2f687a91121d42de Mon Sep 17 00:00:00 2001 From: Treeston Date: Tue, 28 Aug 2018 12:52:50 +0200 Subject: Core/Unit: Some charm fixes: * Properly restore react state after possession expires. Closes #20769. * Possessed creatures now don't override player control with random/waypoint motion * SmartAI creatures now properly re-aggress charmer after charm expires --- src/server/game/AI/SmartScripts/SmartAI.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'src/server/game/AI/SmartScripts') diff --git a/src/server/game/AI/SmartScripts/SmartAI.cpp b/src/server/game/AI/SmartScripts/SmartAI.cpp index 058652563c3..a831649589a 100644 --- a/src/server/game/AI/SmartScripts/SmartAI.cpp +++ b/src/server/game/AI/SmartScripts/SmartAI.cpp @@ -679,8 +679,13 @@ void SmartAI::OnCharmed(bool /*isNew*/) else me->SetWalk(!mRun); - if (Unit* charmer = me->GetCharmer()) - AttackStart(charmer); + if (me->LastCharmerGUID) + { + if (!me->HasReactState(REACT_PASSIVE)) + if (Unit* lastCharmer = ObjectAccessor::GetUnit(*me, me->LastCharmerGUID)) + me->EngageWithTarget(lastCharmer); + me->LastCharmerGUID.Clear(); + } } GetScript()->ProcessEventsFor(SMART_EVENT_CHARMED, nullptr, 0, 0, charmed); -- cgit v1.2.3