fix(Core/Movement): Don't move for change in orientation only (#19687)
Changing only the orientation of a unit also flags it as if it were moving, which causes spells to be interrupted.
This commit is contained in:
@@ -101,7 +101,9 @@ namespace Movement
|
|||||||
moveFlags = (moveFlags & ~(MOVEMENTFLAG_FORWARD)) | MOVEMENTFLAG_BACKWARD;
|
moveFlags = (moveFlags & ~(MOVEMENTFLAG_FORWARD)) | MOVEMENTFLAG_BACKWARD;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (moveFlags & MOVEMENTFLAG_ROOT)
|
bool isOrientationOnly = args.path.size() == 2 && args.path[0] == args.path[1];
|
||||||
|
|
||||||
|
if ((moveFlags & MOVEMENTFLAG_ROOT) || isOrientationOnly)
|
||||||
moveFlags &= ~MOVEMENTFLAG_MASK_MOVING;
|
moveFlags &= ~MOVEMENTFLAG_MASK_MOVING;
|
||||||
|
|
||||||
if (!args.HasVelocity)
|
if (!args.HasVelocity)
|
||||||
|
|||||||
@@ -2677,7 +2677,7 @@ void Spell::EffectDistract(SpellEffIndex /*effIndex*/)
|
|||||||
if (unitTarget->HasUnitState(UNIT_STATE_CONFUSED | UNIT_STATE_STUNNED | UNIT_STATE_FLEEING))
|
if (unitTarget->HasUnitState(UNIT_STATE_CONFUSED | UNIT_STATE_STUNNED | UNIT_STATE_FLEEING))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
unitTarget->SetFacingTo(unitTarget->GetAngle(destTarget)); /// @BUG Causes the player to stop moving + interrupts spellcast.
|
unitTarget->SetFacingTo(unitTarget->GetAngle(destTarget)); /// @BUG Causes the player to stop moving.
|
||||||
unitTarget->GetMotionMaster()->MoveDistract(damage * IN_MILLISECONDS);
|
unitTarget->GetMotionMaster()->MoveDistract(damage * IN_MILLISECONDS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user