diff options
Diffstat (limited to 'src/game/FleeingMovementGenerator.cpp')
| -rw-r--r-- | src/game/FleeingMovementGenerator.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/game/FleeingMovementGenerator.cpp b/src/game/FleeingMovementGenerator.cpp index 69c2c37dffe..6566ad4320e 100644 --- a/src/game/FleeingMovementGenerator.cpp +++ b/src/game/FleeingMovementGenerator.cpp @@ -306,6 +306,10 @@ FleeingMovementGenerator<T>::Initialize(T &owner) 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(); @@ -323,7 +327,7 @@ FleeingMovementGenerator<Creature>::_Init(Creature &owner) { if(!&owner) return; - owner.SetUInt64Value(UNIT_FIELD_TARGET, 0); + is_water_ok = owner.canSwim(); is_land_ok = owner.canWalk(); } @@ -340,7 +344,10 @@ template<class T> void FleeingMovementGenerator<T>::Finalize(T &owner) { + owner.RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_FLEEING); owner.clearUnitState(UNIT_STAT_FLEEING); + if(owner.GetTypeId() == TYPEID_UNIT && owner.getVictim()) + owner.SetUInt64Value(UNIT_FIELD_TARGET, owner.getVictim()->GetGUID()); } template<class T> |
