public override int PreventDamage(PreventDamageParameters p) { if (p.Target.IsPlayer()) return 0; var targetCard = p.Target.Card(); if (targetCard.Controller != _player) return 0; if (_filter(targetCard) == false) return 0; if (p.QueryOnly) return p.Amount; var mp = new ModifierParameters { SourceCard = targetCard, }; var modifier = new AddCounters(_counter, p.Amount); targetCard.AddModifier(modifier, mp); return p.Amount; }
public override int PreventDamage(PreventDamageParameters p) { if (p.Target.IsPlayer()) { return(0); } var targetCard = p.Target.Card(); if (targetCard.Controller != _player) { return(0); } if (_filter(targetCard) == false) { return(0); } if (p.QueryOnly) { return(p.Amount); } var mp = new ModifierParameters { SourceCard = targetCard, }; var modifier = new AddCounters(_counter, p.Amount); targetCard.AddModifier(modifier, mp); return(p.Amount); }
public override IEnumerable <CardTemplate> GetCards() { yield return(Card .Named("Briber's Purse") .ManaCost("{0}").HasXInCost() .Type("Artifact") .Text("Briber's Purse enters the battlefield with X gem counters on it.{EOL}{1},{T}, Remove a gem counter from Briber's Purse: Target creature can't attack or block this turn.") .FlavorText("Victory is certain. The price, negotiable.") .Cast(p => { p.CostRule(new XIsAvailableMana(-1)); p.AfterResolve = (c, ctx) => { var x = ctx.X ?? 0; c.PutToBattlefield(); var mp = new ModifierParameters { SourceEffect = ctx.Effect, SourceCard = c, X = x }; var addCounters = new AddCounters(() => new SimpleCounter(CounterType.Gem), Value.PlusX); c.AddModifier(addCounters, mp); }; }) .ActivatedAbility(p => { p.Text = "{1},{T}, Remove a gem counter from Briber's Purse: Target creature can't attack or block this turn."; p.Cost = new AggregateCost( new PayMana(1.Colorless()), new Tap(), new RemoveCounters(CounterType.Gem, count: 1)); p.Effect = () => new ApplyModifiersToTargets( () => new AddSimpleAbility(Static.CannotBlock) { UntilEot = true }, () => new AddSimpleAbility(Static.CannotAttack) { UntilEot = true }).SetTags(EffectTag.CombatDisabler); p.TargetSelector.AddEffect(trg => trg.Is.Creature().On.Battlefield()); p.TimingRule(new OnStep(Step.BeginningOfCombat)); p.TargetingRule(new EffectCannotBlockAttack()); })); }
public void ProcessResults(BooleanResult results) { if (results.IsTrue) { var p = new ModifierParameters { SourceCard = Source.OwningCard, SourceEffect = this, }; var addCounter = new AddCounters(() => new SimpleCounter(_counterType), 1); Source.OwningCard.AddModifier(addCounter, p); } }
private static void AddCounters(ScenarioCard scenarioCard, Card card) { if (scenarioCard.HasCounters) { var p = new ModifierParameters { SourceCard = card, }; var counters = new AddCounters(() => new SimpleCounter(scenarioCard.Counters.Type), scenarioCard.Counters.Count); card.AddModifier(counters, p); } }
protected override void ResolveEffect() { var p = new ModifierParameters { SourceEffect = this, SourceCard = Source.OwningCard, X = X }; var modifier = new AddCounters(() => new PowerToughness(1, 1), count: _count.Value); var targetCreature = (Card)Target; targetCreature.AddModifier(modifier, p); }
public override void ProcessResults(ChosenOptions results) { var lifeToPay = (int) results.Options[0]; Controller.Life -= lifeToPay; var p = new ModifierParameters { SourceEffect = this, SourceCard = Source.OwningCard, X = X }; var addCounters = new AddCounters(() => new SimpleCounter(_counterType), lifeToPay); Source.OwningCard.AddModifier(addCounters, p); }
public override void ProcessResults(ChosenOptions results) { var lifeToPay = (int)results.Options[0]; Controller.Life -= lifeToPay; var p = new ModifierParameters { SourceEffect = this, SourceCard = Source.OwningCard, X = X }; var addCounters = new AddCounters(() => new SimpleCounter(_counterType), lifeToPay); Source.OwningCard.AddModifier(addCounters, p); }
protected override void ResolveEffect() { if (Source.OwningCard.Has().Monstrosity) { return; } var p = new ModifierParameters { SourceEffect = this, SourceCard = Source.OwningCard, X = X }; var modifier1 = new AddCounters(() => new PowerToughness(1, 1), count: _counterCount); var modifier2 = new AddSimpleAbility(Static.Monstrosity); Source.OwningCard.AddModifier(modifier1, p); Source.OwningCard.AddModifier(modifier2, p); }
protected override void ResolveEffect() { var p = new ModifierParameters { SourceEffect = this, SourceCard = Source.OwningCard, X = X }; for (var i = 0; i < Targets.Effect.Count; i++) { var target = Targets.Effect[i]; var count = Targets.Distribution[i]; if (IsValid(target) && count > 0) { var modifier = new AddCounters(_createCounter, count); target.Card().AddModifier(modifier, p); } } }
private static void AddCounters(ScenarioCard scenarioCard, Card card) { if (scenarioCard.HasCounters) { var p = new ModifierParameters { SourceCard = card, }; var counters = new AddCounters(() => { if (scenarioCard.Counters.Type == CounterType.PowerToughness) { return(new PowerToughness(1, 1)); } return(new SimpleCounter(scenarioCard.Counters.Type)); }, scenarioCard.Counters.Count); card.AddModifier(counters, p); } }