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/Movement/MovementGenerators/RandomMovementGenerator.cpp | 2 +- .../game/Movement/MovementGenerators/WaypointMovementGenerator.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'src/server/game/Movement') diff --git a/src/server/game/Movement/MovementGenerators/RandomMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/RandomMovementGenerator.cpp index 5648bcf9120..a1d9f564f46 100644 --- a/src/server/game/Movement/MovementGenerators/RandomMovementGenerator.cpp +++ b/src/server/game/Movement/MovementGenerators/RandomMovementGenerator.cpp @@ -86,7 +86,7 @@ void RandomMovementGenerator::SetRandomLocation(Creature* owner) if (!owner) return; - if (owner->HasUnitState(UNIT_STATE_NOT_MOVE) || owner->IsMovementPreventedByCasting()) + if (owner->HasUnitState(UNIT_STATE_NOT_MOVE | UNIT_STATE_LOST_CONTROL) || owner->IsMovementPreventedByCasting()) { AddFlag(MOVEMENTGENERATOR_FLAG_INTERRUPTED); owner->StopMoving(); diff --git a/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp index aa81d6d0d92..5de1e7b9061 100755 --- a/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp +++ b/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp @@ -139,7 +139,7 @@ bool WaypointMovementGenerator::DoUpdate(Creature* owner, uint32 diff) if (HasFlag(MOVEMENTGENERATOR_FLAG_FINALIZED | MOVEMENTGENERATOR_FLAG_PAUSED) || !_path || _path->nodes.empty()) return true; - if (owner->HasUnitState(UNIT_STATE_NOT_MOVE) || owner->IsMovementPreventedByCasting()) + if (owner->HasUnitState(UNIT_STATE_NOT_MOVE | UNIT_STATE_LOST_CONTROL) || owner->IsMovementPreventedByCasting()) { AddFlag(MOVEMENTGENERATOR_FLAG_INTERRUPTED); owner->StopMoving(); -- cgit v1.2.3