// Find Range // This is virtual so Volcano Targetting can call base() public virtual IEnumerable <Space> GetTargetOptionsFromKnownSource( Spirit self, GameState gameState, TargettingFrom powerType, IEnumerable <Space> source, TargetCriteria targetCriteria ) { var ctx = self.BindMyPower(gameState); // !!! should this be Power??? return(source // starting here .SelectMany(x => x.Range(targetCriteria.Range)) .Distinct() .Where(s => ctx.Target(s).Matches(targetCriteria.Filter))); // matching this destination }
public IEnumerable <Space> GetTargetOptionsFromKnownSource(Spirit self, GameState gameState, TargettingFrom powerType, IEnumerable <Space> source, TargetCriteria tc) { return(originalApi.GetTargetOptionsFromKnownSource(self, gameState, powerType, source, new TargetCriteria(tc.Range + extension, tc.Filter))); }
public override IEnumerable <Space> GetTargetOptionsFromKnownSource(Spirit self, GameState gameState, TargettingFrom powerType, IEnumerable <Space> source, TargetCriteria tc) { // original options List <Space> spaces = originalApi.GetTargetOptionsFromKnownSource(self, gameState, powerType, source, tc).ToList(); // Target Spirit gains +1 range with their Powers that originate from a Mountain var mountainSource = source.Where(x => x.IsMountain).ToArray(); return(mountainSource.Length == 0 ? spaces : spaces .Union(originalApi.GetTargetOptionsFromKnownSource(self, gameState, powerType, mountainSource, new TargetCriteria(tc.Range + 1, tc.Filter))) .Distinct()); }
IEnumerable <Space> GetTargetOptionsFromKnownSources(IEnumerable <Space> sources, TargetCriteria tc) => spirit.RangeCalc.GetTargetOptionsFromKnownSource(spirit, gameState, powerType, sources, tc);
public override IEnumerable <Space> GetTargetOptionsFromKnownSource(Spirit self, GameState gameState, TargettingFrom powerType, IEnumerable <Space> source, TargetCriteria tc) { List <Space> spaces = base.GetTargetOptionsFromKnownSource(self, gameState, powerType, source, tc) .ToList(); // Add towers if (powerType != TargettingFrom.Innate) { var towers = self.Presence.Placed.Where(s => 3 <= self.Presence.CountOn(s)).ToArray(); if (towers.Length > 0) { spaces.AddRange(base.GetTargetOptionsFromKnownSource(self, gameState, powerType, towers, new TargetCriteria(tc.Range + 1, tc.Filter))); } } return(spaces.Distinct()); }
public AssignTarget(Agent agentPerformingAction, TargetType targetType, TargetCriteria targetCriteria) : base(agentPerformingAction) { this.targetType = targetType; this.targetCriteria = targetCriteria; }
public override IEnumerable <Space> GetTargetOptionsFromKnownSource(Spirit self, GameState gameState, TargettingFrom powerType, IEnumerable <Space> source, TargetCriteria tc) { var normal = orig.GetTargetOptionsFromKnownSource(self, gameState, powerType, source, tc); var shore = orig.GetTargetOptionsFromKnownSource(self, gameState, powerType, source, new TargetCriteria(tc.Range + 3, tc.Filter)).Where(x => x.IsCoastal); return(normal.Union(shore)); }