diff options
Diffstat (limited to 'src/game/FleeingMovementGenerator.cpp')
| -rw-r--r-- | src/game/FleeingMovementGenerator.cpp | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/src/game/FleeingMovementGenerator.cpp b/src/game/FleeingMovementGenerator.cpp index c64b653d5e9..9f705074d75 100644 --- a/src/game/FleeingMovementGenerator.cpp +++ b/src/game/FleeingMovementGenerator.cpp @@ -301,19 +301,26 @@ FleeingMovementGenerator<T>::Initialize(T &owner) if(!&owner) return; - Unit * fright = ObjectAccessor::GetUnit(owner, i_frightGUID); - if(!fright) - return; - _Init(owner); owner.CastStop(); owner.addUnitState(UNIT_STAT_FLEEING); owner.SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_FLEEING); owner.SetUInt64Value(UNIT_FIELD_TARGET, 0); owner.RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE); - i_caster_x = fright->GetPositionX(); - i_caster_y = fright->GetPositionY(); - i_caster_z = fright->GetPositionZ(); + + if(Unit * fright = ObjectAccessor::GetUnit(owner, i_frightGUID)) + { + i_caster_x = fright->GetPositionX(); + i_caster_y = fright->GetPositionY(); + i_caster_z = fright->GetPositionZ(); + } + else + { + i_caster_x = owner.GetPositionX(); + i_caster_y = owner.GetPositionY(); + i_caster_z = owner.GetPositionZ(); + } + i_only_forward = true; i_cur_angle = 0.0f; i_last_distance_from_caster = 0.0f; |
