diff --git a/Mage.Sets/src/mage/sets/alarareborn/MaelstromNexus.java b/Mage.Sets/src/mage/sets/alarareborn/MaelstromNexus.java index 655dea82e26..34dba1ce9a6 100644 --- a/Mage.Sets/src/mage/sets/alarareborn/MaelstromNexus.java +++ b/Mage.Sets/src/mage/sets/alarareborn/MaelstromNexus.java @@ -27,8 +27,6 @@ */ package mage.sets.alarareborn; -import java.util.HashMap; -import java.util.Map; import java.util.UUID; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; @@ -41,15 +39,13 @@ import mage.constants.Layer; import mage.constants.Outcome; import mage.constants.Rarity; import mage.constants.SubLayer; -import mage.constants.WatcherScope; import mage.constants.Zone; import mage.game.Game; -import mage.game.events.GameEvent; -import mage.game.events.GameEvent.EventType; import mage.game.stack.Spell; import mage.game.stack.StackObject; import mage.players.Player; -import mage.watchers.Watcher; +import mage.watchers.common.FirstSpellCastThisTurnWatcher; + /** * @@ -63,7 +59,6 @@ public class MaelstromNexus extends CardImpl { // The first spell you cast each turn has cascade. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new MaelstromNexusGainCascadeFirstSpellEffect()), new FirstSpellCastThisTurnWatcher()); - } public MaelstromNexus(final MaelstromNexus card) { @@ -112,55 +107,4 @@ class MaelstromNexusGainCascadeFirstSpellEffect extends ContinuousEffectImpl { } return false; } -} - -class FirstSpellCastThisTurnWatcher extends Watcher { - - Map playerFirstSpellCast = new HashMap<>(); - Map playerFirstCastSpell = new HashMap<>(); - - public FirstSpellCastThisTurnWatcher() { - super("FirstSpellCastThisTurn", WatcherScope.GAME); - } - - public FirstSpellCastThisTurnWatcher(final FirstSpellCastThisTurnWatcher watcher) { - super(watcher); - } - - @Override - public void watch(GameEvent event, Game game) { - switch (event.getType()) { - case SPELL_CAST: - case CAST_SPELL: - Spell spell = (Spell) game.getObject(event.getTargetId()); - if (spell != null && !playerFirstSpellCast.containsKey(spell.getControllerId())) { - if (event.getType().equals(EventType.SPELL_CAST)) { - playerFirstSpellCast.put(spell.getControllerId(), spell.getId()); - } else if (event.getType().equals(EventType.CAST_SPELL)) { - playerFirstCastSpell.put(spell.getControllerId(), spell.getId()); - } - - } - } - } - - @Override - public FirstSpellCastThisTurnWatcher copy() { - return new FirstSpellCastThisTurnWatcher(this); - } - - @Override - public void reset() { - super.reset(); - playerFirstSpellCast.clear(); - playerFirstCastSpell.clear(); - } - - public UUID getIdOfFirstCastSpell(UUID playerId) { - if (playerFirstSpellCast.get(playerId) == null) { - return playerFirstCastSpell.get(playerId); - } else { - return playerFirstSpellCast.get(playerId); - } - } -} +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/shadowsoverinnistrad/JaceUnravelerOfSecrets.java b/Mage.Sets/src/mage/sets/shadowsoverinnistrad/JaceUnravelerOfSecrets.java index 02aa48cb22a..15c2fd7470f 100644 --- a/Mage.Sets/src/mage/sets/shadowsoverinnistrad/JaceUnravelerOfSecrets.java +++ b/Mage.Sets/src/mage/sets/shadowsoverinnistrad/JaceUnravelerOfSecrets.java @@ -99,23 +99,23 @@ class JaceUnravelerOfSecretsEmblem extends Emblem { this.setName("EMBLEM: Jace, Unraveler of Secrets"); Effect effect = new CounterTargetEffect(); effect.setText("counter that spell"); - this.getAbilities().add(new JaceUnravelerOfSecretsTriggertAbility(effect, false)); + this.getAbilities().add(new JaceUnravelerOfSecretsTriggeredAbility(effect, false)); } } -class JaceUnravelerOfSecretsTriggertAbility extends SpellCastOpponentTriggeredAbility { +class JaceUnravelerOfSecretsTriggeredAbility extends SpellCastOpponentTriggeredAbility { - public JaceUnravelerOfSecretsTriggertAbility(Effect effect, boolean optional) { + public JaceUnravelerOfSecretsTriggeredAbility(Effect effect, boolean optional) { super(effect, optional); } - public JaceUnravelerOfSecretsTriggertAbility(SpellCastOpponentTriggeredAbility ability) { + public JaceUnravelerOfSecretsTriggeredAbility(SpellCastOpponentTriggeredAbility ability) { super(ability); } @Override public SpellCastOpponentTriggeredAbility copy() { - return super.copy(); //To change body of generated methods, choose Tools | Templates. + return super.copy(); } @Override @@ -137,5 +137,4 @@ class JaceUnravelerOfSecretsTriggertAbility extends SpellCastOpponentTriggeredAb public String getRule() { return "Whenever an opponent casts his or her first spell each turn, counter that spell."; } - -} +} \ No newline at end of file diff --git a/Mage/src/main/java/mage/watchers/common/FirstSpellCastThisTurnWatcher.java b/Mage/src/main/java/mage/watchers/common/FirstSpellCastThisTurnWatcher.java new file mode 100644 index 00000000000..c85181d3f44 --- /dev/null +++ b/Mage/src/main/java/mage/watchers/common/FirstSpellCastThisTurnWatcher.java @@ -0,0 +1,66 @@ +package mage.watchers.common; + +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; +import mage.constants.WatcherScope; +import mage.game.Game; +import mage.game.events.GameEvent; +import mage.game.events.GameEvent.EventType; +import static mage.game.events.GameEvent.EventType.CAST_SPELL; +import static mage.game.events.GameEvent.EventType.SPELL_CAST; +import mage.game.stack.Spell; +import mage.watchers.Watcher; + +/** + * @author jeffwadsworth +**/ +public class FirstSpellCastThisTurnWatcher extends Watcher { + + private final Map playerFirstSpellCast = new HashMap<>(); + private final Map playerFirstCastSpell = new HashMap<>(); + + public FirstSpellCastThisTurnWatcher() { + super("FirstSpellCastThisTurn", WatcherScope.GAME); + } + + public FirstSpellCastThisTurnWatcher(final FirstSpellCastThisTurnWatcher watcher) { + super(watcher); + } + + @Override + public void watch(GameEvent event, Game game) { + switch (event.getType()) { + case SPELL_CAST: + case CAST_SPELL: + Spell spell = (Spell) game.getObject(event.getTargetId()); + if (spell != null && !playerFirstSpellCast.containsKey(spell.getControllerId())) { + if (event.getType().equals(EventType.SPELL_CAST)) { + playerFirstSpellCast.put(spell.getControllerId(), spell.getId()); + } else if (event.getType().equals(EventType.CAST_SPELL)) { + playerFirstCastSpell.put(spell.getControllerId(), spell.getId()); + } + } + } + } + + @Override + public FirstSpellCastThisTurnWatcher copy() { + return new FirstSpellCastThisTurnWatcher(this); + } + + @Override + public void reset() { + super.reset(); + playerFirstSpellCast.clear(); + playerFirstCastSpell.clear(); + } + + public UUID getIdOfFirstCastSpell(UUID playerId) { + if (playerFirstSpellCast.get(playerId) == null) { + return playerFirstCastSpell.get(playerId); + } else { + return playerFirstSpellCast.get(playerId); + } + } +} \ No newline at end of file