diff --git a/Source/Game/AI/CoreAI/PassiveAI.cs b/Source/Game/AI/CoreAI/PassiveAI.cs index b7b000afc..e94d53f56 100644 --- a/Source/Game/AI/CoreAI/PassiveAI.cs +++ b/Source/Game/AI/CoreAI/PassiveAI.cs @@ -118,7 +118,7 @@ namespace Game.AI me.SetControlled(true, UnitState.Fleeing); } - public override void OnMovementGeneratorFinalized(MovementGeneratorType type) + public override void MovementInform(MovementGeneratorType type, uint id) { if (type == MovementGeneratorType.TimedFleeing) EnterEvadeMode(EvadeReason.Other); diff --git a/Source/Game/AI/CoreAI/UnitAI.cs b/Source/Game/AI/CoreAI/UnitAI.cs index a21cdaf05..a3fea8e66 100644 --- a/Source/Game/AI/CoreAI/UnitAI.cs +++ b/Source/Game/AI/CoreAI/UnitAI.cs @@ -498,8 +498,6 @@ namespace Game.AI /// public virtual void OnGameEvent(bool start, ushort eventId) { } - public virtual void OnMovementGeneratorFinalized(MovementGeneratorType type) { } - public virtual string GetDebugInfo() { return $"Me: {(me != null ? me.GetDebugInfo() : "NULL")}"; diff --git a/Source/Game/Movement/Generators/FleeingMovementGenerator.cs b/Source/Game/Movement/Generators/FleeingMovementGenerator.cs index 245abea2b..23896d072 100644 --- a/Source/Game/Movement/Generators/FleeingMovementGenerator.cs +++ b/Source/Game/Movement/Generators/FleeingMovementGenerator.cs @@ -16,6 +16,7 @@ */ using Framework.Constants; +using Game.AI; using Game.Entities; using System; @@ -208,9 +209,9 @@ namespace Game.Movement TimeTracker _timer; } - public class TimedFleeingGenerator : FleeingMovementGenerator + public class TimedFleeingMovementGenerator : FleeingMovementGenerator { - public TimedFleeingGenerator(ObjectGuid fright, uint time) : base(fright) + public TimedFleeingMovementGenerator(ObjectGuid fright, uint time) : base(fright) { _totalFleeTime = new TimeTracker(time); } @@ -243,6 +244,14 @@ namespace Game.Movement owner.ToCreature().GetAI().AttackStart(victim); } } + + if (movementInform) + { + Creature ownerCreature = owner.ToCreature(); + CreatureAI ai = ownerCreature != null ? ownerCreature.GetAI() : null; + if (ai != null) + ai.MovementInform(MovementGeneratorType.TimedFleeing, 0); + } } public override MovementGeneratorType GetMovementGeneratorType() diff --git a/Source/Game/Movement/Generators/MovementGenerators.cs b/Source/Game/Movement/Generators/MovementGenerators.cs index 760ca1ce5..99da56025 100644 --- a/Source/Game/Movement/Generators/MovementGenerators.cs +++ b/Source/Game/Movement/Generators/MovementGenerators.cs @@ -61,12 +61,6 @@ namespace Game.Movement return false; } - public void NotifyAIOnFinalize(Unit obj) - { - UnitAI ai = obj.GetAI(); - ai?.OnMovementGeneratorFinalized(GetMovementGeneratorType()); - } - public void AddFlag(MovementGeneratorFlags flag) { Flags |= flag; } public bool HasFlag(MovementGeneratorFlags flag) { return (Flags & flag) != 0; } public void RemoveFlag(MovementGeneratorFlags flag) { Flags &= ~flag; } diff --git a/Source/Game/Movement/MotionMaster.cs b/Source/Game/Movement/MotionMaster.cs index 7c77dcc8a..2bc25454d 100644 --- a/Source/Game/Movement/MotionMaster.cs +++ b/Source/Game/Movement/MotionMaster.cs @@ -580,7 +580,7 @@ namespace Game.Movement if (_owner.IsCreature()) { if (time != 0) - Add(new TimedFleeingGenerator(enemy.GetGUID(), time)); + Add(new TimedFleeingMovementGenerator(enemy.GetGUID(), time)); else Add(new FleeingMovementGenerator(enemy.GetGUID())); } @@ -1119,10 +1119,7 @@ namespace Game.Movement { case MovementSlot.Default: if (_defaultGenerator != null) - { _defaultGenerator.Finalize(_owner, _generators.Empty(), false); - _defaultGenerator.NotifyAIOnFinalize(_owner); - } _defaultGenerator = movement; if (IsStatic(movement)) @@ -1160,14 +1157,12 @@ namespace Game.Movement void Delete(MovementGenerator movement, bool active, bool movementInform) { movement.Finalize(_owner, active, movementInform); - movement.NotifyAIOnFinalize(_owner); ClearBaseUnitState(movement); } void DeleteDefault(bool active, bool movementInform) { _defaultGenerator.Finalize(_owner, active, movementInform); - _defaultGenerator.NotifyAIOnFinalize(_owner); _defaultGenerator = GetIdleMovementGenerator(); AddFlag(MotionMasterFlags.StaticInitializationPending); }