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); }
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); }
public TrinityPower GetDefensivePower() { var position = Targeting.HealthGlobeExists(35f) ? Targeting.GetBestHealthGlobeClusterPoint(35f) : Targeting.GetLoiterPosition(Targeting.ClosestUnit(35f), 35f); return(Spells.FuriousCharge(position)); }