Пример #1
0
        public virtual bool ShouldWalk(out Vector3 position)
        {
            position = Vector3.Zero;

            var closestGlobe = Targeting.ClosestGlobe(15f);

            if (Player.CurrentHealthPct < 0.50 && Player.Position.EasyNavToPosition(closestGlobe.Position))
            {
                Core.Logger.Error(LogCategory.Routine,
                                  $"[Walk] - Grabbing Health Globe.");
                position = closestGlobe.Position;
                return(true);
            }

            if (Target == null)
            {
                return(false);
            }

            if (!Target.IsInLineOfSight)
            {
                Core.Logger.Error(LogCategory.Routine,
                                  $"[Walk] - Target is not in Line Of Sight.");
                position = Target.Position;
                return(true);
            }
            if (Target != null && Target.RadiusDistance > 50f)
            {
                Core.Logger.Error(LogCategory.Routine,
                                  $"[Walk] - To get into Range with Target.");
                position = Target.Position;
                return(true);
            }
            return(false);

            if (_loiterPosition != Vector3.Zero && !_loiterPosition.InCriticalAvoidance() &&
                _loiterPosition.Distance(Player.Position) < 25f)
            {
                position = _loiterPosition;
                return(true);
            }
            else
            {
                position = Targeting.GetLoiterPosition(Target, 25f);
                Core.Logger.Error(LogCategory.Routine,
                                  $"[Walk] - To Best Loiter Position.");
                return(true);
            }

            return(false);
        }
Пример #2
0
        public virtual bool ShouldWalk(out Vector3 position)
        {
            position = Vector3.Zero;

            var closestGlobe = Targeting.ClosestGlobe(15f);

            if (Player.CurrentHealthPct < 0.50 && Player.Position.EasyNavToPosition(closestGlobe.Position))
            {
                position = closestGlobe.Position;
                return(true);
            }

            if (Target == null)
            {
                return(false);
            }

            if (!Target.IsInLineOfSight)
            {
                position = Target.Position;
                return(true);
            }

            if (Targeting.BestBuffPosition(10f, Player.Position, false, out position) &&
                Player.Position.Distance(position) > 5 && position.EasyNavToPosition(Player.Position))
            {
                Core.Logger.Error(LogCategory.Routine,
                                  $"[Walk] - To Best Buff Position.");
                return(true);
            }
            return(CurrentTarget != null && (!Target.IsInLineOfSight || Target.RadiusDistance > 65f));

            if (_loiterPosition != Vector3.Zero && !_loiterPosition.InCriticalAvoidance() &&
                _loiterPosition.Distance(Player.Position) < 25f)
            {
                position = _loiterPosition;
                return(true);
            }
            else
            {
                position = Targeting.GetLoiterPosition(Target, 25f);
                Core.Logger.Error(LogCategory.Routine,
                                  $"[Walk] - To Best Loiter Position.");
                return(true);
            }

            return(false);
        }
Пример #3
0
        public TrinityPower GetDefensivePower()
        {
            var position = Targeting.HealthGlobeExists(35f) ? Targeting.GetBestHealthGlobeClusterPoint(35f) : Targeting.GetLoiterPosition(Targeting.ClosestUnit(35f), 35f);

            return(Spells.FuriousCharge(position));
        }