public void Process(ActivationContext c) { if (c.HasTargets == false) { var p = new CostRuleParameters(c.Card, c.MaxX.Value.GetValueOrDefault()); c.X = CalculateX(p); if (c.X > c.MaxX.Value) { c.CancelActivation = true; } return; } var targetsCombinations = c.TargetsCombinations().ToList(); foreach (var targetsCombination in targetsCombinations) { var p = new CostRuleParameters(c.Card, c.MaxX.Value.GetValueOrDefault(), targetsCombination.Targets); targetsCombination.X = CalculateX(p); if (targetsCombination.X > c.MaxX.Value) { c.RemoveTargetCombination(targetsCombination); } } if (c.HasTargets == false) { c.CancelActivation = true; } }
public override int CalculateX(CostRuleParameters p) { var bestX = p.MaxX + 1; var bestScore = -1; for (var i = p.MaxX; i >= 0; i--) { var yourScore = p.Controller.Battlefield .Where(x => _selector(x)) .Where(x => x.ConvertedCost <= i) .Sum(x => x.Score); var opponentsScore = p.Controller.Opponent.Battlefield .Where(x => _selector(x)) .Where(x => x.ConvertedCost <= i) .Sum(x => x.Score); var diff = opponentsScore - yourScore; if (diff >= bestScore) { bestScore = diff; bestX = i; } } return(bestX); }
public override int CalculateX(CostRuleParameters p) { var bestX = p.MaxX + 1; var bestScore = -1; for (var i = p.MaxX; i >= 0; i--) { var yourScore = p.Controller.Battlefield .Where(x => _selector(x)) .Where(x => x.ConvertedCost <= i) .Sum(x => x.Score); var opponentsScore = p.Controller.Opponent.Battlefield .Where(x => _selector(x)) .Where(x => x.ConvertedCost <= i) .Sum(x => x.Score); var diff = opponentsScore - yourScore; if (diff >= bestScore) { bestScore = diff; bestX = i; } } return bestX; }
public void Process(ActivationContext c) { if (c.HasTargets == false) { var p = new CostRuleParameters(c.Card, c.MaxX.Value.GetValueOrDefault()); c.X = CalculateX(p); if (c.X > c.MaxX.Value) { c.CancelActivation = true; } return; } var targetsCombinations = c.TargetsCombinations().ToList(); foreach (var targetsCombination in targetsCombinations) { var p = new CostRuleParameters(c.Card, c.MaxX.Value.GetValueOrDefault(), targetsCombination.Targets); targetsCombination.X = CalculateX(p); if (targetsCombination.X > c.MaxX.Value) { c.RemoveTargetCombination(targetsCombination); } } if (c.HasTargets == false) c.CancelActivation = true; }
public override int CalculateX(CostRuleParameters p) { if (p.Targets.Effect[0].IsPlayer()) { return p.MaxX; } var lifepoints = p.Targets.Max(x => x.Life()); return lifepoints; }
public override int CalculateX(CostRuleParameters p) { if (p.Targets.Effect[0].IsPlayer()) { return(p.MaxX); } var lifepoints = p.Targets.Max(x => x.Life()); return(lifepoints); }
public override int CalculateX(CostRuleParameters p) { var cards = p.Controller.Library .Where(_filter) .ToList(); var maxConverted = cards.Count > 0 ? cards.Max(x => x.ConvertedCost) : 0; return(Math.Min(maxConverted, p.MaxX)); }
public override int CalculateX(CostRuleParameters p) { var cards = p.Controller.Library .Where(_filter) .ToList(); var maxConverted = cards.Count > 0 ? cards.Max(x => x.ConvertedCost) : 0; return Math.Min(maxConverted, p.MaxX); }
public override int CalculateX(CostRuleParameters p) { var maxX = p.Controller.GetAvailableConvertedMana(ManaUsage.Spells) - p.OwningCard.ManaCost.Converted; if (maxX >= _x) { var yourScore = p.Controller.Battlefield.Creatures.Sum(x => x.Score); var opponentScore = p.Controller.Opponent.Battlefield.Creatures.Sum(x => x.Score); return opponentScore >= yourScore ? maxX : 4; } return maxX; }
public override int CalculateX(CostRuleParameters p) { var maxX = p.Controller.GetAvailableConvertedMana(ManaUsage.Spells) - p.OwningCard.ManaCost.Converted; if (maxX >= _x) { var yourScore = p.Controller.Battlefield.Creatures.Sum(x => x.Score); var opponentScore = p.Controller.Opponent.Battlefield.Creatures.Sum(x => x.Score); return(opponentScore >= yourScore ? maxX : 4); } return(maxX); }
public override int CalculateX(CostRuleParameters p) { var maxX = p.Controller.GetAvailableManaCount( new ConvokeAndDelveOptions { CanUseConvoke = p.OwningCard.Has().Convoke, CanUseDelve = p.OwningCard.Has().Delve }, ManaUsage.Spells) - p.OwningCard.ManaCost.Converted; if (maxX >= _x) { var yourScore = p.Controller.Battlefield.Creatures.Sum(x => x.Score); var opponentScore = p.Controller.Opponent.Battlefield.Creatures.Sum(x => x.Score); return(opponentScore >= yourScore ? maxX : 4); } return(maxX); }
public override int CalculateX(CostRuleParameters p) { var value = _selector(p.Controller); return value > p.MaxX ? p.MaxX : value; }
public override int CalculateX(CostRuleParameters p) { return(p.Controller.Opponent.Battlefield.Lands.Count()); }
public override int CalculateX(CostRuleParameters p) { var value = _selector(p.Controller); return(value > p.MaxX ? p.MaxX : value); }
public override int CalculateX(CostRuleParameters p) { return(p.Controller.Battlefield.Creatures.Count(x => x.HasBlockers)); }
public abstract int CalculateX(CostRuleParameters p);
public abstract int CalculateX(CostRuleParameters p);
public override int CalculateX(CostRuleParameters p) { return p.Controller.Opponent.Battlefield.Lands.Count(); }
public override int CalculateX(CostRuleParameters p) { return p.Controller.Battlefield.Creatures.Count(x => x.HasBlockers); }