protected override IEnumerable <Targets> SelectTargets(TargetingRuleParameters p) { var effectCandidates = PreventNextDamage.GetCandidates(_amount, p, Game); if (effectCandidates.Count == 0) { return(None <Targets>()); } var costCandidates = p.Candidates <Card>() .OrderBy(x => x.Score) .Take(1).Cast <ITarget>() .ToList(); return(Group(costCandidates, effectCandidates, add1: (t, trgs) => trgs.AddCost(t), add2: (t, trgs) => trgs.AddEffect(t))); }
public static IList <ITarget> GetCandidates(int amount, TargetingRuleParameters p, Game game) { var preventNextDamage = new PreventNextDamage(amount, p, game); return(preventNextDamage.GetCandidates()); }
public static IList<ITarget> GetCandidates(int amount, TargetingRuleParameters p, Game game) { var preventNextDamage = new PreventNextDamage(amount, p, game); return preventNextDamage.GetCandidates(); }
protected override IEnumerable <Targets> SelectTargets(TargetingRuleParameters p) { var candidates = PreventNextDamage.GetCandidates(_amount, p, Game); return(Group(candidates, p.MinTargetCount(), p.MaxTargetCount())); }