protected override IEnumerable <RunStatus> Execute(object context) { RoutineContext ctx = context as RoutineContext; if (ctx != null) { if (ctx.SkillNames.Contains(SpellName)) { Gw2Skill spell = ctx.GetSpell(SpellName); if (spell != null) { bool currentCondition = Condition == null || Condition(ctx); if (currentCondition) { if (spell.IsReady && BuddyGw.IsVisible(Object)) { Logger.WriteVerbose("Casting {0} on position {1}.", spell.Name, Object.Position); SpellManager.Cast(spell.Name, Object); return(new List <RunStatus>() { RunStatus.Success }); } } } } } return(new List <RunStatus>() { RunStatus.Failure }); }
public static List <Gw2Object> GetAllWeight() { return(BuddyGw.Objects.GetObjectsOfType <Gw2Character>().Where(o => BuddyGw.Objects.IsValid(o) && !Blacklist.Contains(o.AgentId) && o.IsAlive && !o.IsCritter && o.Distance < CharacterSettings.Instance.PullRange && (o.IsHostile || o.IsIndifferent || o.IsFriendly) && BuddyGw.IsVisible(o)) .Select(o => new { Unit = o, Weight = o.IsFriendly ? Calculations.CalculateFriendlyWeight(o) : Calculations.CalculateEnemyWeight(o) }) .OrderByDescending(o => o.Weight) .Select(o => o.Unit) .Cast <Gw2Object>() .ToList()); }
internal int CountViableFriendlies(float radius) { return(FriendlyPositions.CachedPositions.Where(u => BuddyGw.IsVisible(u.Position) && Calculations.Distance(CurrentPlayerPosition, u.Position) < radius).Count()); }