From 8d75c8f256b9aedf89214e6c18a03e23142db8d2 Mon Sep 17 00:00:00 2001 From: Daniel Bomar Date: Tue, 30 Aug 2022 17:22:49 -0500 Subject: [PATCH] [DMU] Implemented Ertai's Scorn --- Mage.Sets/src/mage/cards/e/ErtaisScorn.java | 72 ++++++++++++++++++++ Mage.Sets/src/mage/sets/DominariaUnited.java | 1 + 2 files changed, 73 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/e/ErtaisScorn.java diff --git a/Mage.Sets/src/mage/cards/e/ErtaisScorn.java b/Mage.Sets/src/mage/cards/e/ErtaisScorn.java new file mode 100644 index 00000000000..478f61bf52c --- /dev/null +++ b/Mage.Sets/src/mage/cards/e/ErtaisScorn.java @@ -0,0 +1,72 @@ +package mage.cards.e; + +import java.util.UUID; + +import mage.abilities.Ability; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.condition.Condition; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.effects.common.CounterTargetEffect; +import mage.abilities.effects.common.cost.SpellCostReductionSourceEffect; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.Zone; +import mage.game.Game; +import mage.target.TargetSpell; +import mage.watchers.common.CastSpellLastTurnWatcher; + +/** + * + * @author weirddan455 + */ +public final class ErtaisScorn extends CardImpl { + + public ErtaisScorn(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{U}{U}"); + + // This spell costs {U} less to cast if an opponent cast two or more spells this turn. + this.addAbility(new SimpleStaticAbility( + Zone.ALL, + new SpellCostReductionSourceEffect( + new ManaCostsImpl<>("{U}"), + ErtaisScornCondition.instance + ) + ).setRuleAtTheTop(true), new CastSpellLastTurnWatcher()); + + // Counter target spell. + this.getSpellAbility().addTarget(new TargetSpell()); + this.getSpellAbility().addEffect(new CounterTargetEffect()); + } + + private ErtaisScorn(final ErtaisScorn card) { + super(card); + } + + @Override + public ErtaisScorn copy() { + return new ErtaisScorn(this); + } +} + +enum ErtaisScornCondition implements Condition { + instance; + + @Override + public boolean apply(Game game, Ability source) { + CastSpellLastTurnWatcher watcher = game.getState().getWatcher(CastSpellLastTurnWatcher.class); + if (watcher != null) { + for (UUID opponentId : game.getOpponents(source.getControllerId())) { + if (watcher.getAmountOfSpellsPlayerCastOnCurrentTurn(opponentId) >= 2) { + return true; + } + } + } + return false; + } + + @Override + public String toString() { + return "an opponent cast two or more spells this turn"; + } +} diff --git a/Mage.Sets/src/mage/sets/DominariaUnited.java b/Mage.Sets/src/mage/sets/DominariaUnited.java index 2d833cda586..fa869147726 100644 --- a/Mage.Sets/src/mage/sets/DominariaUnited.java +++ b/Mage.Sets/src/mage/sets/DominariaUnited.java @@ -85,6 +85,7 @@ public final class DominariaUnited extends ExpansionSet { cards.add(new SetCardInfo("Electrostatic Infantry", 122, Rarity.UNCOMMON, mage.cards.e.ElectrostaticInfantry.class)); cards.add(new SetCardInfo("Elfhame Wurm", 161, Rarity.COMMON, mage.cards.e.ElfhameWurm.class)); cards.add(new SetCardInfo("Elvish Hydromancer", 162, Rarity.UNCOMMON, mage.cards.e.ElvishHydromancer.class)); + cards.add(new SetCardInfo("Ertai's Scorn", 48, Rarity.UNCOMMON, mage.cards.e.ErtaisScorn.class)); cards.add(new SetCardInfo("Essence Scatter", 49, Rarity.COMMON, mage.cards.e.EssenceScatter.class)); cards.add(new SetCardInfo("Evolved Sleeper", 93, Rarity.RARE, mage.cards.e.EvolvedSleeper.class)); cards.add(new SetCardInfo("Extinguish the Light", 94, Rarity.COMMON, mage.cards.e.ExtinguishTheLight.class));