/// <summary>Returns true if the player takes longer than expected to reach the next node.</summary> public Element IsPathfindingStuck(Element player, Element scalar) { Element leniency = 2; Element defaultSpeed = 5.5; Element nodeDistance = DistanceToNextNode.Get(player); Element timeSinceLastNode = new V_TotalTimeElapsed() - TimeSinceLastNode.Get(player); Element isStuck = new V_Compare( nodeDistance - ((defaultSpeed * scalar * timeSinceLastNode) / leniency), Operators.LessThanOrEqual, new V_Number(0) ); return(Element.Part <V_And>(IsPathfinding(player), isStuck)); }
override protected MethodResult Get(PathfinderInfo info) { Element leniency = 2; Element player = (Element)Parameters[0]; Element scalar = (Element)Parameters[1]; Element defaultSpeed = 5.5; Element nodeDistance = info.DistanceToNext.GetVariable(player); Element timeSinceLastNode = new V_TotalTimeElapsed() - info.LastUpdate.GetVariable(player); Element isStuck = new V_Compare( nodeDistance - ((defaultSpeed * scalar * timeSinceLastNode) / leniency), Operators.LessThanOrEqual, 0 ); isStuck = Element.Part <V_And>(IsPathfinding.Get(info, player), isStuck); return(new MethodResult(null, isStuck)); }
public override IWorkshopTree Get(ActionSet actionSet, IWorkshopTree[] parameterValues) { PathfinderInfo info = actionSet.Translate.DeltinScript.SetupPathfinder(); Element leniency = 2; Element player = (Element)parameterValues[0]; Element scalar = (Element)parameterValues[1]; Element defaultSpeed = 5.5; Element nodeDistance = (Element)info.DistanceToNext.GetVariable(player); Element timeSinceLastNode = new V_TotalTimeElapsed() - (Element)info.LastUpdate.GetVariable(player); Element isStuck = new V_Compare( nodeDistance - ((defaultSpeed * scalar * timeSinceLastNode) / leniency), Operators.LessThanOrEqual, new V_Number(0) ); return(Element.Part <V_And>(IsPathfinding.Get(info, player), isStuck)); }