コード例 #1
0
    // 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
    }
コード例 #2
0
 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)));
 }
コード例 #3
0
        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());
        }
コード例 #4
0
 IEnumerable <Space> GetTargetOptionsFromKnownSources(IEnumerable <Space> sources, TargetCriteria tc)
 => spirit.RangeCalc.GetTargetOptionsFromKnownSource(spirit, gameState, powerType, sources, tc);
コード例 #5
0
    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());
    }
コード例 #6
0
 public AssignTarget(Agent agentPerformingAction, TargetType targetType, TargetCriteria targetCriteria) : base(agentPerformingAction)
 {
     this.targetType     = targetType;
     this.targetCriteria = targetCriteria;
 }
コード例 #7
0
    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));
    }