mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 07:30:42 +01:00
Core/Movement: Fix an edge case crash in HomeMovementGenerator.
(cherry picked from commit f2067d3557)
This commit is contained in:
@@ -44,8 +44,8 @@ void HomeMovementGenerator<Creature>::DoReset(Creature*) { }
|
||||
void HomeMovementGenerator<Creature>::_setTargetLocation(Creature* owner)
|
||||
{
|
||||
if (owner->HasUnitState(UNIT_STATE_ROOT | UNIT_STATE_STUNNED | UNIT_STATE_DISTRACTED))
|
||||
{ // if we are ROOT/STUNNED/DISTRACTED even after aura clear, immediately finalize - otherwise we would get stuck in evade
|
||||
arrived = true;
|
||||
{ // if we are ROOT/STUNNED/DISTRACTED even after aura clear, finalize on next update - otherwise we would get stuck in evade
|
||||
skipToHome = true;
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -61,6 +61,7 @@ void HomeMovementGenerator<Creature>::_setTargetLocation(Creature* owner)
|
||||
init.SetWalk(false);
|
||||
init.Launch();
|
||||
|
||||
skipToHome = false;
|
||||
arrived = false;
|
||||
|
||||
owner->ClearUnitState(uint32(UNIT_STATE_ALL_STATE & ~(UNIT_STATE_EVADE | UNIT_STATE_IGNORE_PATHFINDING)));
|
||||
@@ -68,6 +69,6 @@ void HomeMovementGenerator<Creature>::_setTargetLocation(Creature* owner)
|
||||
|
||||
bool HomeMovementGenerator<Creature>::DoUpdate(Creature* owner, const uint32 /*time_diff*/)
|
||||
{
|
||||
arrived = arrived || owner->movespline->Finalized();
|
||||
arrived = skipToHome || owner->movespline->Finalized();
|
||||
return !arrived;
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@ class HomeMovementGenerator<Creature> : public MovementGeneratorMedium< Creature
|
||||
{
|
||||
public:
|
||||
|
||||
HomeMovementGenerator() : arrived(false) { }
|
||||
HomeMovementGenerator() : arrived(false), skipToHome(false) { }
|
||||
~HomeMovementGenerator() { }
|
||||
|
||||
void DoInitialize(Creature*);
|
||||
@@ -43,5 +43,6 @@ class HomeMovementGenerator<Creature> : public MovementGeneratorMedium< Creature
|
||||
private:
|
||||
void _setTargetLocation(Creature*);
|
||||
bool arrived;
|
||||
bool skipToHome;
|
||||
};
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user