Fix fleeing speed to 66% run speed

Port From (https://github.com/TrinityCore/TrinityCore/commit/d095d4afe95125bba64312025528a2c4aab157e0)
This commit is contained in:
hondacrx
2022-01-05 23:51:18 -05:00
parent acfe9946c6
commit 654c9743e3
7 changed files with 17 additions and 26 deletions
+2 -8
View File
@@ -713,7 +713,6 @@ namespace Game.Entities
var creature = searcher.GetTarget();
SetNoSearchAssistance(true);
UpdateSpeed(UnitMoveType.Run);
if (!creature)
SetControlled(true, UnitState.Fleeing);
@@ -1810,13 +1809,8 @@ namespace Game.Entities
SetMountDisplayId(0); // if creature is mounted on a virtual mount, remove it at death
SetActive(false);
if (HasSearchedAssistance())
{
SetNoSearchAssistance(false);
UpdateSpeed(UnitMoveType.Run);
}
SetActive(false);
SetNoSearchAssistance(false);
//Dismiss group if is leader
if (m_formation != null && m_formation.GetLeader() == this)
-8
View File
@@ -400,16 +400,8 @@ namespace Game.Entities
// reset only at real combat stop
Creature creature = ToCreature();
if (creature != null)
{
creature.SetNoCallAssistance(false);
if (creature.HasSearchedAssistance())
{
creature.SetNoSearchAssistance(false);
UpdateSpeed(UnitMoveType.Run);
}
}
SendMeleeAttackStop(victim);
return true;
}
@@ -543,10 +543,6 @@ namespace Game.Entities
Creature creature = ToCreature();
if (creature != null)
{
// for creature case, we check explicit if mob searched for assistance
if (ToCreature().HasSearchedAssistance())
speed *= 0.66f; // best guessed value, so this will be 33% reduction. Based off initial speed, mob can then "run", "walk fast" or "walk".
if (creature.HasUnitTypeMask(UnitTypeMask.Minion) && !creature.IsInCombat())
{
if (GetMotionMaster().GetCurrentMovementGeneratorType() == MovementGeneratorType.Follow)
@@ -36,6 +36,8 @@ namespace Game.AI
RemoveFlag(MovementGeneratorFlags.InitializationPending | MovementGeneratorFlags.Deactivated);
AddFlag(MovementGeneratorFlags.Initialized);
owner.SetNoSearchAssistance(false);
SetTargetLocation(owner);
}
@@ -185,7 +185,7 @@ namespace Game.Movement
public class AssistanceMovementGenerator : PointMovementGenerator<Creature>
{
public AssistanceMovementGenerator(uint id, float x, float y, float z, float speed = 0.0f) : base(id, x, y, z, true, speed) { }
public AssistanceMovementGenerator(uint id, float x, float y, float z) : base(id, x, y, z, true) { }
public override void Finalize(Unit owner, bool active, bool movementInform)
{
+8 -5
View File
@@ -914,12 +914,15 @@ namespace Game.Movement
public void MoveSeekAssistance(float x, float y, float z)
{
if (_owner.IsCreature())
Creature creature = _owner.ToCreature();
if (creature != null)
{
_owner.AttackStop();
_owner.CastStop();
_owner.ToCreature().SetReactState(ReactStates.Passive);
Add(new AssistanceMovementGenerator(EventId.AssistMove, x, y, z, _owner.GetSpeed(UnitMoveType.Run) * 0.66f));
Log.outDebug(LogFilter.Movement, $"MotionMaster::MoveSeekAssistance: '{creature.GetGUID()}', seeks assistance (X: {x}, Y: {y}, Z: {z})");
creature.AttackStop();
creature.CastStop();
creature.DoNotReacquireSpellFocusTarget();
creature.SetReactState(ReactStates.Passive);
Add(new AssistanceMovementGenerator(EventId.AssistMove, x, y, z));
}
else
Log.outError(LogFilter.Server, $"MotionMaster::MoveSeekAssistance: {_owner.GetGUID()}, attempted to seek assistance");
+4
View File
@@ -122,6 +122,10 @@ namespace Game.Movement
moveFlagsForSpeed &= ~MovementFlag.Walking;
args.velocity = unit.GetSpeed(SelectSpeedType(moveFlagsForSpeed));
Creature creature = unit.ToCreature();
if (creature != null)
if (creature.HasSearchedAssistance())
args.velocity *= 0.66f;
}
// limit the speed in the same way the client does