コード例 #1
0
        /// <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));
        }
コード例 #2
0
        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));
        }
コード例 #3
0
        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));
        }