From 1852de2f47c6d5c816b48f3db0cfa652d36ba428 Mon Sep 17 00:00:00 2001 From: Ingmar Goudt Date: Sun, 7 Apr 2019 20:22:14 +0200 Subject: [PATCH 1/8] refactor the copy functionality for no-args watchers --- Mage/src/main/java/mage/game/GameImpl.java | 10 ++- Mage/src/main/java/mage/watchers/Watcher.java | 71 +++++++++++++++---- ...fDamageAPlayerReceivedThisTurnWatcher.java | 12 ---- .../common/AttackedLastTurnWatcher.java | 17 ----- .../AttackedOrBlockedThisCombatWatcher.java | 11 --- .../common/AttackedThisTurnWatcher.java | 11 --- .../common/BlockedAttackerWatcher.java | 14 ---- ...kedByOnlyOneCreatureThisCombatWatcher.java | 9 --- .../common/BlockedThisTurnWatcher.java | 13 +--- .../watchers/common/BloodthirstWatcher.java | 6 +- .../CardsAmountDrawnThisTurnWatcher.java | 9 --- .../CardsDrawnDuringDrawStepWatcher.java | 11 --- .../common/CardsPutIntoGraveyardWatcher.java | 12 ---- .../common/CastFromGraveyardWatcher.java | 9 --- .../watchers/common/CastFromHandWatcher.java | 7 -- .../common/CastSpellLastTurnWatcher.java | 17 ----- .../common/CastSpellYourLastTurnWatcher.java | 10 --- .../ChooseBlockersRedundancyWatcher.java | 11 --- .../CreatureAttackedWhichPlayerWatcher.java | 12 ---- .../common/CreatureWasCastWatcher.java | 9 --- .../watchers/common/CreaturesDiedWatcher.java | 11 --- .../watchers/common/DamageDoneWatcher.java | 6 -- ...heBattlefieldWhileSpellWasCastWatcher.java | 10 --- .../common/FirstSpellCastThisTurnWatcher.java | 11 --- .../watchers/common/GravestormWatcher.java | 10 --- .../mage/watchers/common/LandfallWatcher.java | 11 --- .../LifeLossOtherFromCombatWatcher.java | 10 --- .../common/ManaSpentToCastWatcher.java | 10 --- .../mage/watchers/common/MiracleWatcher.java | 12 ---- .../mage/watchers/common/MorbidWatcher.java | 10 --- ...rOfTimesPermanentTargetedATurnWatcher.java | 10 --- .../PermanentsEnteredBattlefieldWatcher.java | 11 --- ...EnteredBattlefieldYourLastTurnWatcher.java | 11 --- .../common/PermanentsSacrificedWatcher.java | 9 --- .../watchers/common/PlanarRollWatcher.java | 7 -- .../mage/watchers/common/PlayLandWatcher.java | 11 --- .../common/PlayerAttackedStepWatcher.java | 12 ---- .../common/PlayerAttackedWatcher.java | 13 ---- .../common/PlayerCastCreatureWatcher.java | 10 --- .../common/PlayerDamagedBySourceWatcher.java | 9 +-- .../common/PlayerGainedLifeWatcher.java | 11 --- .../PlayerLostLifeNonCombatWatcher.java | 12 ---- .../common/PlayerLostLifeWatcher.java | 12 ---- .../PlayersAttackedLastTurnWatcher.java | 12 ---- .../PlayersAttackedThisTurnWatcher.java | 13 ---- .../mage/watchers/common/ProwlWatcher.java | 12 ---- .../mage/watchers/common/RevoltWatcher.java | 10 --- .../common/SourceDidDamageWatcher.java | 10 --- .../watchers/common/SpellsCastWatcher.java | 10 --- .../common/WasBlockedThisTurnWatcher.java | 10 --- .../watchers/common/ZuberasDiedWatcher.java | 10 --- Mage/src/test/java/mage/WatcherTest.java | 4 ++ 52 files changed, 73 insertions(+), 538 deletions(-) create mode 100644 Mage/src/test/java/mage/WatcherTest.java diff --git a/Mage/src/main/java/mage/game/GameImpl.java b/Mage/src/main/java/mage/game/GameImpl.java index 8d2589f68f4..58b50ee951b 100644 --- a/Mage/src/main/java/mage/game/GameImpl.java +++ b/Mage/src/main/java/mage/game/GameImpl.java @@ -1025,8 +1025,14 @@ public abstract class GameImpl implements Game, Serializable { } public void initPlayerDefaultWatchers(UUID playerId) { - getState().addWatcher(new PlayerDamagedBySourceWatcher(playerId)); - getState().addWatcher(new BloodthirstWatcher(playerId)); + PlayerDamagedBySourceWatcher playerDamagedBySourceWatcher = new PlayerDamagedBySourceWatcher(); + playerDamagedBySourceWatcher.setControllerId(playerId); + + getState().addWatcher(playerDamagedBySourceWatcher); + + BloodthirstWatcher bloodthirstWatcher = new BloodthirstWatcher(); + bloodthirstWatcher.setControllerId(playerId); + getState().addWatcher(bloodthirstWatcher); } protected void sendStartMessage(Player choosingPlayer, Player startingPlayer) { diff --git a/Mage/src/main/java/mage/watchers/Watcher.java b/Mage/src/main/java/mage/watchers/Watcher.java index af3ceddd727..f954166119e 100644 --- a/Mage/src/main/java/mage/watchers/Watcher.java +++ b/Mage/src/main/java/mage/watchers/Watcher.java @@ -1,17 +1,20 @@ package mage.watchers; -import java.io.Serializable; -import java.lang.reflect.Constructor; -import java.lang.reflect.InvocationTargetException; -import java.util.UUID; +import mage.Mana; import mage.constants.WatcherScope; import mage.game.Game; +import mage.game.turn.Step; import mage.game.events.GameEvent; import org.apache.log4j.Logger; +import java.io.Serializable; +import java.lang.reflect.Constructor; +import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; +import java.util.*; + /** - * * watches for certain game events to occur and flags condition * * @author BetaSteward_at_googlemail.com @@ -26,7 +29,6 @@ public abstract class Watcher implements Serializable { protected final WatcherScope scope; - public Watcher(WatcherScope scope) { this.scope = scope; } @@ -62,8 +64,8 @@ public abstract class Watcher implements Serializable { return controllerId + getBasicKey(); case CARD: return sourceId + getBasicKey(); - default: - return getBasicKey(); + default: + return getBasicKey(); } } @@ -75,18 +77,61 @@ public abstract class Watcher implements Serializable { condition = false; } - protected String getBasicKey(){ + protected String getBasicKey() { return getClass().getSimpleName(); } public abstract void watch(GameEvent event, Game game); - public T copy(){ + public T copy() { try { - Constructor constructor = this.getClass().getDeclaredConstructor(getClass()); + List constructors = Arrays.asList(this.getClass().getConstructors()); + if (constructors.size() > 1) { + logger.error(getClass().getSimpleName() + " has multiple constructors"); + return null; + } + + Constructor constructor = (Constructor) constructors.get(0); + if (constructor.getParameterCount() > 0) { + logger.error(getClass().getSimpleName() + " constructor has arguments, should be 0 and inject the parameters by setters"); + return null; + } constructor.setAccessible(true); - return (T) constructor.newInstance(this); - } catch (InstantiationException | IllegalAccessException | NoSuchMethodException | InvocationTargetException e) { + T watcher = (T) constructor.newInstance(); + List allFields = new ArrayList<>(); + allFields.addAll(Arrays.asList(getClass().getDeclaredFields())); + allFields.addAll(Arrays.asList(getClass().getSuperclass().getDeclaredFields())); + for (Field field : allFields) { + field.setAccessible(true); + if (field.getType().isPrimitive()) { + field.set(watcher, field.get(this)); + } + else if(field.getType() == Step.class){ + field.set(watcher, field.get(this)); + } + else if (field.getType() == Mana.class) { + field.set(watcher, field.get(this)); + } else if (field.getType() == UUID.class) { + field.set(watcher, field.get(this)); + } else if (field.getType().isEnum()) { + field.set(watcher, field.get(this)); + } else if (field.getType() == Set.class) { + ((Set) field.get(watcher)).clear(); + ((Set) field.get(watcher)).addAll((Set) field.get(this)); + } else if (field.getType() == Map.class) { + ((Map) field.get(watcher)).clear(); + ((Map) field.get(watcher)).putAll((Map) field.get(this)); + } else if (field.getType() == List.class) { + ((List) field.get(watcher)).clear(); + ((List) field.get(watcher)).addAll((List) field.get(this)); + } else { + if (field.getType() != Logger.class) { + logger.error(field.getType() + " can not be copied"); + } + } + } + return watcher; + } catch (InstantiationException | IllegalAccessException | InvocationTargetException e) { logger.error("Can't copy watcher: " + e.getMessage(), e); } return null; diff --git a/Mage/src/main/java/mage/watchers/common/AmountOfDamageAPlayerReceivedThisTurnWatcher.java b/Mage/src/main/java/mage/watchers/common/AmountOfDamageAPlayerReceivedThisTurnWatcher.java index c7e63fc85fe..26dda05ed90 100644 --- a/Mage/src/main/java/mage/watchers/common/AmountOfDamageAPlayerReceivedThisTurnWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/AmountOfDamageAPlayerReceivedThisTurnWatcher.java @@ -24,13 +24,6 @@ public class AmountOfDamageAPlayerReceivedThisTurnWatcher extends Watcher { super(WatcherScope.GAME); } - public AmountOfDamageAPlayerReceivedThisTurnWatcher(final AmountOfDamageAPlayerReceivedThisTurnWatcher watcher) { - super(watcher); - for (Entry entry : watcher.amountOfDamageReceivedThisTurn.entrySet()) { - amountOfDamageReceivedThisTurn.put(entry.getKey(), entry.getValue()); - } - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.DAMAGED_PLAYER) { @@ -50,9 +43,4 @@ public class AmountOfDamageAPlayerReceivedThisTurnWatcher extends Watcher { public void reset() { amountOfDamageReceivedThisTurn.clear(); } - - @Override - public AmountOfDamageAPlayerReceivedThisTurnWatcher copy() { - return new AmountOfDamageAPlayerReceivedThisTurnWatcher(this); - } } diff --git a/Mage/src/main/java/mage/watchers/common/AttackedLastTurnWatcher.java b/Mage/src/main/java/mage/watchers/common/AttackedLastTurnWatcher.java index c6af696380d..93a26edd102 100644 --- a/Mage/src/main/java/mage/watchers/common/AttackedLastTurnWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/AttackedLastTurnWatcher.java @@ -27,18 +27,6 @@ public class AttackedLastTurnWatcher extends Watcher { super(WatcherScope.GAME); } - public AttackedLastTurnWatcher(final AttackedLastTurnWatcher watcher) { - super(watcher); - for (Entry> entry : watcher.attackedLastTurnCreatures.entrySet()) { - Set allAttackersCopy = new HashSet<>(entry.getValue()); - attackedLastTurnCreatures.put(entry.getKey(), allAttackersCopy); - } - for (Entry> entry : watcher.attackedThisTurnCreatures.entrySet()) { - Set allAttackersCopy = new HashSet<>(entry.getValue()); - attackedThisTurnCreatures.put(entry.getKey(), allAttackersCopy); - } - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.BEGINNING_PHASE_PRE) { @@ -79,9 +67,4 @@ public class AttackedLastTurnWatcher extends Watcher { return new HashSet<>(); } - @Override - public AttackedLastTurnWatcher copy() { - return new AttackedLastTurnWatcher(this); - } - } diff --git a/Mage/src/main/java/mage/watchers/common/AttackedOrBlockedThisCombatWatcher.java b/Mage/src/main/java/mage/watchers/common/AttackedOrBlockedThisCombatWatcher.java index 0af8f15aa7a..7a9bf240a90 100644 --- a/Mage/src/main/java/mage/watchers/common/AttackedOrBlockedThisCombatWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/AttackedOrBlockedThisCombatWatcher.java @@ -26,12 +26,6 @@ public class AttackedOrBlockedThisCombatWatcher extends Watcher { super(WatcherScope.GAME); } - public AttackedOrBlockedThisCombatWatcher(final AttackedOrBlockedThisCombatWatcher watcher) { - super(watcher); - this.getAttackedThisTurnCreatures().addAll(watcher.getAttackedThisTurnCreatures()); - this.getBlockedThisTurnCreatures().addAll(watcher.getBlockedThisTurnCreatures()); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.BEGIN_COMBAT_STEP_PRE) { @@ -53,9 +47,4 @@ public class AttackedOrBlockedThisCombatWatcher extends Watcher { return this.blockedThisTurnCreatures; } - @Override - public AttackedOrBlockedThisCombatWatcher copy() { - return new AttackedOrBlockedThisCombatWatcher(this); - } - } diff --git a/Mage/src/main/java/mage/watchers/common/AttackedThisTurnWatcher.java b/Mage/src/main/java/mage/watchers/common/AttackedThisTurnWatcher.java index adedcff2cc5..72ea6cfae37 100644 --- a/Mage/src/main/java/mage/watchers/common/AttackedThisTurnWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/AttackedThisTurnWatcher.java @@ -25,12 +25,6 @@ public class AttackedThisTurnWatcher extends Watcher { super(WatcherScope.GAME); } - public AttackedThisTurnWatcher(final AttackedThisTurnWatcher watcher) { - super(watcher); - this.attackedThisTurnCreatures.addAll(watcher.attackedThisTurnCreatures); - this.attackedThisTurnCreaturesCounts.putAll(watcher.attackedThisTurnCreaturesCounts); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.ATTACKER_DECLARED) { @@ -58,11 +52,6 @@ public class AttackedThisTurnWatcher extends Watcher { return false; } - @Override - public AttackedThisTurnWatcher copy() { - return new AttackedThisTurnWatcher(this); - } - @Override public void reset() { super.reset(); diff --git a/Mage/src/main/java/mage/watchers/common/BlockedAttackerWatcher.java b/Mage/src/main/java/mage/watchers/common/BlockedAttackerWatcher.java index 57506bf6832..7d70b8f10ed 100644 --- a/Mage/src/main/java/mage/watchers/common/BlockedAttackerWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/BlockedAttackerWatcher.java @@ -25,20 +25,6 @@ public class BlockedAttackerWatcher extends Watcher { super(WatcherScope.GAME); } - public BlockedAttackerWatcher(final BlockedAttackerWatcher watcher) { - super(watcher); - for (MageObjectReference mageObjectReference : watcher.blockData.keySet()) { - Set blockedAttackers = new HashSet<>(); - blockedAttackers.addAll(watcher.blockData.get(mageObjectReference)); - blockData.put(mageObjectReference, blockedAttackers); - } - } - -// @Override -// public BlockedAttackerWatcher copy() { -// return new BlockedAttackerWatcher(this); -// } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == EventType.BLOCKER_DECLARED) { diff --git a/Mage/src/main/java/mage/watchers/common/BlockedByOnlyOneCreatureThisCombatWatcher.java b/Mage/src/main/java/mage/watchers/common/BlockedByOnlyOneCreatureThisCombatWatcher.java index b058d6136ea..901ef40009e 100644 --- a/Mage/src/main/java/mage/watchers/common/BlockedByOnlyOneCreatureThisCombatWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/BlockedByOnlyOneCreatureThisCombatWatcher.java @@ -21,11 +21,6 @@ public class BlockedByOnlyOneCreatureThisCombatWatcher extends Watcher { super(WatcherScope.GAME); } - public BlockedByOnlyOneCreatureThisCombatWatcher(final BlockedByOnlyOneCreatureThisCombatWatcher watcher) { - super(watcher); - this.blockedByOneCreature.putAll(watcher.blockedByOneCreature); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.BEGIN_COMBAT_STEP_PRE) { @@ -64,8 +59,4 @@ public class BlockedByOnlyOneCreatureThisCombatWatcher extends Watcher { return null; } - @Override - public BlockedByOnlyOneCreatureThisCombatWatcher copy() { - return new BlockedByOnlyOneCreatureThisCombatWatcher(this); - } } diff --git a/Mage/src/main/java/mage/watchers/common/BlockedThisTurnWatcher.java b/Mage/src/main/java/mage/watchers/common/BlockedThisTurnWatcher.java index 6d8b27ad052..70b08e29c3d 100644 --- a/Mage/src/main/java/mage/watchers/common/BlockedThisTurnWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/BlockedThisTurnWatcher.java @@ -16,21 +16,10 @@ import java.util.Set; */ public class BlockedThisTurnWatcher extends Watcher { - private final Set blockedThisTurnCreatures; + private final Set blockedThisTurnCreatures = new HashSet<>(); public BlockedThisTurnWatcher() { super(WatcherScope.GAME); - blockedThisTurnCreatures = new HashSet<>(); - } - - public BlockedThisTurnWatcher(final BlockedThisTurnWatcher watcher) { - super(watcher); - blockedThisTurnCreatures = new HashSet<>(watcher.blockedThisTurnCreatures); - } - - @Override - public Watcher copy() { - return new BlockedThisTurnWatcher(this); } @Override diff --git a/Mage/src/main/java/mage/watchers/common/BloodthirstWatcher.java b/Mage/src/main/java/mage/watchers/common/BloodthirstWatcher.java index b27a6a62473..b70f17779b0 100644 --- a/Mage/src/main/java/mage/watchers/common/BloodthirstWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/BloodthirstWatcher.java @@ -15,14 +15,10 @@ import java.util.UUID; * @author Loki */ public class BloodthirstWatcher extends Watcher { - public BloodthirstWatcher(UUID controllerId) { + public BloodthirstWatcher() { super(WatcherScope.PLAYER); - this.controllerId = controllerId; } - public BloodthirstWatcher(final BloodthirstWatcher watcher) { - super(watcher); - } @Override public void watch(GameEvent event, Game game) { diff --git a/Mage/src/main/java/mage/watchers/common/CardsAmountDrawnThisTurnWatcher.java b/Mage/src/main/java/mage/watchers/common/CardsAmountDrawnThisTurnWatcher.java index 71c1a703060..60be9cbbbe7 100644 --- a/Mage/src/main/java/mage/watchers/common/CardsAmountDrawnThisTurnWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/CardsAmountDrawnThisTurnWatcher.java @@ -25,10 +25,6 @@ public class CardsAmountDrawnThisTurnWatcher extends Watcher { super(WatcherScope.GAME); } - public CardsAmountDrawnThisTurnWatcher(final CardsAmountDrawnThisTurnWatcher watcher) { - super(watcher); - amountOfCardsDrawnThisTurn.putAll(watcher.amountOfCardsDrawnThisTurn); - } @Override public void watch(GameEvent event, Game game) { @@ -61,9 +57,4 @@ public class CardsAmountDrawnThisTurnWatcher extends Watcher { public int getAmountCardsDrawn(UUID playerId) { return amountOfCardsDrawnThisTurn.getOrDefault(playerId, 0); } - - @Override - public CardsAmountDrawnThisTurnWatcher copy() { - return new CardsAmountDrawnThisTurnWatcher(this); - } } diff --git a/Mage/src/main/java/mage/watchers/common/CardsDrawnDuringDrawStepWatcher.java b/Mage/src/main/java/mage/watchers/common/CardsDrawnDuringDrawStepWatcher.java index 60cc296e91f..c416860cc8e 100644 --- a/Mage/src/main/java/mage/watchers/common/CardsDrawnDuringDrawStepWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/CardsDrawnDuringDrawStepWatcher.java @@ -27,13 +27,6 @@ public class CardsDrawnDuringDrawStepWatcher extends Watcher { super(WatcherScope.GAME); } - public CardsDrawnDuringDrawStepWatcher(final CardsDrawnDuringDrawStepWatcher watcher) { - super(watcher); - for (Entry entry : watcher.amountOfCardsDrawnThisTurn.entrySet()) { - amountOfCardsDrawnThisTurn.put(entry.getKey(), entry.getValue()); - } - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.DREW_CARD @@ -57,8 +50,4 @@ public class CardsDrawnDuringDrawStepWatcher extends Watcher { amountOfCardsDrawnThisTurn.clear(); } - @Override - public CardsDrawnDuringDrawStepWatcher copy() { - return new CardsDrawnDuringDrawStepWatcher(this); - } } diff --git a/Mage/src/main/java/mage/watchers/common/CardsPutIntoGraveyardWatcher.java b/Mage/src/main/java/mage/watchers/common/CardsPutIntoGraveyardWatcher.java index 004019037d5..6ab8c8a9528 100644 --- a/Mage/src/main/java/mage/watchers/common/CardsPutIntoGraveyardWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/CardsPutIntoGraveyardWatcher.java @@ -32,14 +32,6 @@ public class CardsPutIntoGraveyardWatcher extends Watcher { super(WatcherScope.GAME); } - public CardsPutIntoGraveyardWatcher(final CardsPutIntoGraveyardWatcher watcher) { - super(watcher); - for (Entry entry : watcher.amountOfCardsThisTurn.entrySet()) { - amountOfCardsThisTurn.put(entry.getKey(), entry.getValue()); - } - this.cardsPutToGraveyardFromBattlefield.addAll(watcher.cardsPutToGraveyardFromBattlefield); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.UNTAP_STEP_PRE) { @@ -73,8 +65,4 @@ public class CardsPutIntoGraveyardWatcher extends Watcher { cardsPutToGraveyardFromBattlefield.clear(); } - @Override - public CardsPutIntoGraveyardWatcher copy() { - return new CardsPutIntoGraveyardWatcher(this); - } } diff --git a/Mage/src/main/java/mage/watchers/common/CastFromGraveyardWatcher.java b/Mage/src/main/java/mage/watchers/common/CastFromGraveyardWatcher.java index 2950ef15b03..3391c0bf9fb 100644 --- a/Mage/src/main/java/mage/watchers/common/CastFromGraveyardWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/CastFromGraveyardWatcher.java @@ -23,10 +23,6 @@ public class CastFromGraveyardWatcher extends Watcher { super(WatcherScope.GAME); } - public CastFromGraveyardWatcher(final CastFromGraveyardWatcher watcher) { - super(watcher); - } - @Override public void watch(GameEvent event, Game game) { /** @@ -55,9 +51,4 @@ public class CastFromGraveyardWatcher extends Watcher { super.reset(); spellsCastFromGraveyard.clear(); } - - @Override - public CastFromGraveyardWatcher copy() { - return new CastFromGraveyardWatcher(this); - } } diff --git a/Mage/src/main/java/mage/watchers/common/CastFromHandWatcher.java b/Mage/src/main/java/mage/watchers/common/CastFromHandWatcher.java index 58983d93bf7..5fbaebb330d 100644 --- a/Mage/src/main/java/mage/watchers/common/CastFromHandWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/CastFromHandWatcher.java @@ -21,9 +21,6 @@ public class CastFromHandWatcher extends Watcher { super(WatcherScope.GAME); } - public CastFromHandWatcher(final CastFromHandWatcher watcher) { - super(watcher); - } @Override public void watch(GameEvent event, Game game) { @@ -58,8 +55,4 @@ public class CastFromHandWatcher extends Watcher { spellsCastFromHand.clear(); } - @Override - public CastFromHandWatcher copy() { - return new CastFromHandWatcher(this); - } } diff --git a/Mage/src/main/java/mage/watchers/common/CastSpellLastTurnWatcher.java b/Mage/src/main/java/mage/watchers/common/CastSpellLastTurnWatcher.java index 7f30b3b5ca4..718f7bc56a3 100644 --- a/Mage/src/main/java/mage/watchers/common/CastSpellLastTurnWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/CastSpellLastTurnWatcher.java @@ -23,17 +23,6 @@ public class CastSpellLastTurnWatcher extends Watcher { super(WatcherScope.GAME); } - public CastSpellLastTurnWatcher(final CastSpellLastTurnWatcher watcher) { - super(watcher); - for (Entry entry : watcher.amountOfSpellsCastOnCurrentTurn.entrySet()) { - amountOfSpellsCastOnCurrentTurn.put(entry.getKey(), entry.getValue()); - } - for (Entry entry : watcher.amountOfSpellsCastOnPrevTurn.entrySet()) { - amountOfSpellsCastOnPrevTurn.put(entry.getKey(), entry.getValue()); - } - this.spellsCastThisTurnInOrder.addAll(watcher.spellsCastThisTurnInOrder); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.SPELL_CAST) { @@ -81,10 +70,4 @@ public class CastSpellLastTurnWatcher extends Watcher { } return 0; } -// -// @Override -// public CastSpellLastTurnWatcher copy() { -// return new CastSpellLastTurnWatcher(this); -// } - } diff --git a/Mage/src/main/java/mage/watchers/common/CastSpellYourLastTurnWatcher.java b/Mage/src/main/java/mage/watchers/common/CastSpellYourLastTurnWatcher.java index f99ca683b4d..b13b6858382 100644 --- a/Mage/src/main/java/mage/watchers/common/CastSpellYourLastTurnWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/CastSpellYourLastTurnWatcher.java @@ -22,16 +22,6 @@ public class CastSpellYourLastTurnWatcher extends Watcher { super(WatcherScope.GAME); } - public CastSpellYourLastTurnWatcher(final CastSpellYourLastTurnWatcher watcher) { - super(watcher); - for (Entry entry : watcher.amountOfSpellsCastOnCurrentTurn.entrySet()) { - amountOfSpellsCastOnCurrentTurn.put(entry.getKey(), entry.getValue()); - } - for (Entry entry : watcher.amountOfSpellsCastOnPrevTurn.entrySet()) { - amountOfSpellsCastOnPrevTurn.put(entry.getKey(), entry.getValue()); - } - } - @Override public void watch(GameEvent event, Game game) { lastActivePlayer = game.getActivePlayerId(); diff --git a/Mage/src/main/java/mage/watchers/common/ChooseBlockersRedundancyWatcher.java b/Mage/src/main/java/mage/watchers/common/ChooseBlockersRedundancyWatcher.java index 4d8fceaef50..c93ed3b0a67 100644 --- a/Mage/src/main/java/mage/watchers/common/ChooseBlockersRedundancyWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/ChooseBlockersRedundancyWatcher.java @@ -20,23 +20,12 @@ public class ChooseBlockersRedundancyWatcher extends Watcher { // workaround for super(WatcherScope.GAME); } - public ChooseBlockersRedundancyWatcher(final ChooseBlockersRedundancyWatcher watcher) { - super(watcher); - this.copyCount = watcher.copyCount; - this.copyCountApply = watcher.copyCountApply; - } - @Override public void reset() { copyCount = 0; copyCountApply = 0; } - @Override - public ChooseBlockersRedundancyWatcher copy() { - return new ChooseBlockersRedundancyWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { } diff --git a/Mage/src/main/java/mage/watchers/common/CreatureAttackedWhichPlayerWatcher.java b/Mage/src/main/java/mage/watchers/common/CreatureAttackedWhichPlayerWatcher.java index 6ebaee8ee60..f9d647a932e 100644 --- a/Mage/src/main/java/mage/watchers/common/CreatureAttackedWhichPlayerWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/CreatureAttackedWhichPlayerWatcher.java @@ -23,13 +23,6 @@ public class CreatureAttackedWhichPlayerWatcher extends Watcher { super(WatcherScope.GAME); } - public CreatureAttackedWhichPlayerWatcher(final CreatureAttackedWhichPlayerWatcher watcher) { - super(watcher); - for (Entry entry : watcher.getPlayerAttackedThisTurnByCreature.entrySet()) { - getPlayerAttackedThisTurnByCreature.put(entry.getKey(), entry.getValue()); - } - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.ATTACKER_DECLARED) { @@ -50,9 +43,4 @@ public class CreatureAttackedWhichPlayerWatcher extends Watcher { public void reset() { getPlayerAttackedThisTurnByCreature.clear(); } - - @Override - public CreatureAttackedWhichPlayerWatcher copy() { - return new CreatureAttackedWhichPlayerWatcher(this); - } } diff --git a/Mage/src/main/java/mage/watchers/common/CreatureWasCastWatcher.java b/Mage/src/main/java/mage/watchers/common/CreatureWasCastWatcher.java index 11f1fbf5b9f..79da22b221e 100644 --- a/Mage/src/main/java/mage/watchers/common/CreatureWasCastWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/CreatureWasCastWatcher.java @@ -25,10 +25,6 @@ public class CreatureWasCastWatcher extends Watcher { super(WatcherScope.GAME); } - public CreatureWasCastWatcher(final CreatureWasCastWatcher watcher) { - super(watcher); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.SPELL_CAST) { @@ -58,9 +54,4 @@ public class CreatureWasCastWatcher extends Watcher { super.reset(); creaturesCasted.clear(); } - - @Override - public CreatureWasCastWatcher copy() { - return new CreatureWasCastWatcher(this); - } } diff --git a/Mage/src/main/java/mage/watchers/common/CreaturesDiedWatcher.java b/Mage/src/main/java/mage/watchers/common/CreaturesDiedWatcher.java index cf30c774900..f48166180e4 100644 --- a/Mage/src/main/java/mage/watchers/common/CreaturesDiedWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/CreaturesDiedWatcher.java @@ -22,12 +22,6 @@ public class CreaturesDiedWatcher extends Watcher { super(WatcherScope.GAME); } - public CreaturesDiedWatcher(final CreaturesDiedWatcher watcher) { - super(watcher); - this.amountOfCreaturesThatDiedByController.putAll(watcher.amountOfCreaturesThatDiedByController); - this.amountOfCreaturesThatDiedByOwner.putAll(watcher.amountOfCreaturesThatDiedByOwner); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.ZONE_CHANGE) { @@ -57,11 +51,6 @@ public class CreaturesDiedWatcher extends Watcher { return amountOfCreaturesThatDiedByOwner.getOrDefault(playerId, 0); } - @Override - public CreaturesDiedWatcher copy() { - return new CreaturesDiedWatcher(this); - } - public int getAmountOfCreaturesDiedThisTurn() { return amountOfCreaturesThatDiedByController.values().stream().mapToInt(x -> x).sum(); } diff --git a/Mage/src/main/java/mage/watchers/common/DamageDoneWatcher.java b/Mage/src/main/java/mage/watchers/common/DamageDoneWatcher.java index 0f28c0a3966..6e4008ab16a 100644 --- a/Mage/src/main/java/mage/watchers/common/DamageDoneWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/DamageDoneWatcher.java @@ -40,12 +40,6 @@ public class DamageDoneWatcher extends Watcher { this.damagedObjects = new HashMap<>(); } - private DamageDoneWatcher(final DamageDoneWatcher watcher) { - super(watcher); - this.damagingObjects = new HashMap<>(watcher.damagingObjects); - this.damagedObjects = new HashMap<>(watcher.damagedObjects); - } - @Override public void watch(GameEvent event, Game game) { switch (event.getType()) { diff --git a/Mage/src/main/java/mage/watchers/common/DragonOnTheBattlefieldWhileSpellWasCastWatcher.java b/Mage/src/main/java/mage/watchers/common/DragonOnTheBattlefieldWhileSpellWasCastWatcher.java index 46266a82184..66a0b24ce0c 100644 --- a/Mage/src/main/java/mage/watchers/common/DragonOnTheBattlefieldWhileSpellWasCastWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/DragonOnTheBattlefieldWhileSpellWasCastWatcher.java @@ -29,11 +29,6 @@ public class DragonOnTheBattlefieldWhileSpellWasCastWatcher extends Watcher { super(WatcherScope.GAME); } - public DragonOnTheBattlefieldWhileSpellWasCastWatcher(final DragonOnTheBattlefieldWhileSpellWasCastWatcher watcher) { - super(watcher); - this.castWithDragonOnTheBattlefield.addAll(watcher.castWithDragonOnTheBattlefield); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.SPELL_CAST) { @@ -67,9 +62,4 @@ public class DragonOnTheBattlefieldWhileSpellWasCastWatcher extends Watcher { public boolean castWithConditionTrue(UUID spellId) { return castWithDragonOnTheBattlefield.contains(spellId); } - - @Override - public DragonOnTheBattlefieldWhileSpellWasCastWatcher copy() { - return new DragonOnTheBattlefieldWhileSpellWasCastWatcher(this); - } } diff --git a/Mage/src/main/java/mage/watchers/common/FirstSpellCastThisTurnWatcher.java b/Mage/src/main/java/mage/watchers/common/FirstSpellCastThisTurnWatcher.java index c60052f27dd..80a1a329ee2 100644 --- a/Mage/src/main/java/mage/watchers/common/FirstSpellCastThisTurnWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/FirstSpellCastThisTurnWatcher.java @@ -22,12 +22,6 @@ public class FirstSpellCastThisTurnWatcher extends Watcher { super(WatcherScope.GAME); } - public FirstSpellCastThisTurnWatcher(final FirstSpellCastThisTurnWatcher watcher) { - super(watcher); - playerFirstSpellCast.putAll(watcher.playerFirstSpellCast); - playerFirstCastSpell.putAll(watcher.playerFirstCastSpell); - } - @Override public void watch(GameEvent event, Game game) { switch (event.getType()) { @@ -44,11 +38,6 @@ public class FirstSpellCastThisTurnWatcher extends Watcher { } } - @Override - public FirstSpellCastThisTurnWatcher copy() { - return new FirstSpellCastThisTurnWatcher(this); - } - @Override public void reset() { super.reset(); diff --git a/Mage/src/main/java/mage/watchers/common/GravestormWatcher.java b/Mage/src/main/java/mage/watchers/common/GravestormWatcher.java index 3b9afad51f9..86f25b35f89 100644 --- a/Mage/src/main/java/mage/watchers/common/GravestormWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/GravestormWatcher.java @@ -22,11 +22,6 @@ public class GravestormWatcher extends Watcher { super(WatcherScope.GAME); } - public GravestormWatcher(final GravestormWatcher watcher) { - super(watcher); - this.gravestormCount = watcher.gravestormCount; - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == EventType.ZONE_CHANGE) { @@ -46,9 +41,4 @@ public class GravestormWatcher extends Watcher { public int getGravestormCount() { return this.gravestormCount; } - - @Override - public GravestormWatcher copy() { - return new GravestormWatcher(this); - } } diff --git a/Mage/src/main/java/mage/watchers/common/LandfallWatcher.java b/Mage/src/main/java/mage/watchers/common/LandfallWatcher.java index ce1827b8c38..36e1293c5ef 100644 --- a/Mage/src/main/java/mage/watchers/common/LandfallWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/LandfallWatcher.java @@ -22,17 +22,6 @@ public class LandfallWatcher extends Watcher { super(WatcherScope.GAME); } - private LandfallWatcher(final LandfallWatcher watcher) { - super(watcher); - playerPlayedLand.addAll(watcher.playerPlayedLand); - landEnteredBattlefield.addAll(watcher.landEnteredBattlefield); - } - - @Override - public LandfallWatcher copy() { - return new LandfallWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.ENTERS_THE_BATTLEFIELD) { diff --git a/Mage/src/main/java/mage/watchers/common/LifeLossOtherFromCombatWatcher.java b/Mage/src/main/java/mage/watchers/common/LifeLossOtherFromCombatWatcher.java index d35a740342f..71790be2359 100644 --- a/Mage/src/main/java/mage/watchers/common/LifeLossOtherFromCombatWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/LifeLossOtherFromCombatWatcher.java @@ -22,11 +22,6 @@ public class LifeLossOtherFromCombatWatcher extends Watcher { super(WatcherScope.GAME); } - public LifeLossOtherFromCombatWatcher(final LifeLossOtherFromCombatWatcher watcher) { - super(watcher); - this.players.addAll(watcher.players); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.LOST_LIFE && !event.getFlag()) { @@ -52,9 +47,4 @@ public class LifeLossOtherFromCombatWatcher extends Watcher { super.reset(); players.clear(); } - - @Override - public LifeLossOtherFromCombatWatcher copy() { - return new LifeLossOtherFromCombatWatcher(this); - } } diff --git a/Mage/src/main/java/mage/watchers/common/ManaSpentToCastWatcher.java b/Mage/src/main/java/mage/watchers/common/ManaSpentToCastWatcher.java index 127574ca081..797640be338 100644 --- a/Mage/src/main/java/mage/watchers/common/ManaSpentToCastWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/ManaSpentToCastWatcher.java @@ -23,11 +23,6 @@ public class ManaSpentToCastWatcher extends Watcher { super(WatcherScope.CARD); } - public ManaSpentToCastWatcher(final ManaSpentToCastWatcher watcher) { - super(watcher); - this.payment = watcher.payment; - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.SPELL_CAST && event.getZone() == Zone.HAND) { @@ -43,11 +38,6 @@ public class ManaSpentToCastWatcher extends Watcher { } } - @Override - public ManaSpentToCastWatcher copy() { - return new ManaSpentToCastWatcher(this); - } - public Mana getAndResetLastPayment() { Mana returnPayment = null; if (payment != null) { diff --git a/Mage/src/main/java/mage/watchers/common/MiracleWatcher.java b/Mage/src/main/java/mage/watchers/common/MiracleWatcher.java index 325b958d594..555afc47f44 100644 --- a/Mage/src/main/java/mage/watchers/common/MiracleWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/MiracleWatcher.java @@ -32,13 +32,6 @@ public class MiracleWatcher extends Watcher { super(WatcherScope.GAME); } - public MiracleWatcher(final MiracleWatcher watcher) { - super(watcher); - for (Entry entry : watcher.amountOfCardsDrawnThisTurn.entrySet()) { - amountOfCardsDrawnThisTurn.put(entry.getKey(), entry.getValue()); - } - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.UNTAP_STEP_PRE) { @@ -82,9 +75,4 @@ public class MiracleWatcher extends Watcher { public void reset() { amountOfCardsDrawnThisTurn.clear(); } - - @Override - public MiracleWatcher copy() { - return new MiracleWatcher(this); - } } diff --git a/Mage/src/main/java/mage/watchers/common/MorbidWatcher.java b/Mage/src/main/java/mage/watchers/common/MorbidWatcher.java index 349c6ce5332..0b7fb9ac7a5 100644 --- a/Mage/src/main/java/mage/watchers/common/MorbidWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/MorbidWatcher.java @@ -17,10 +17,6 @@ public class MorbidWatcher extends Watcher { super(WatcherScope.GAME); } - public MorbidWatcher(final MorbidWatcher watcher) { - super(watcher); - } - @Override public void watch(GameEvent event, Game game) { if (condition) { @@ -32,10 +28,4 @@ public class MorbidWatcher extends Watcher { condition = true; } } - -// @Override -// public MorbidWatcher copy() { -// return new MorbidWatcher(this); -// } - } diff --git a/Mage/src/main/java/mage/watchers/common/NumberOfTimesPermanentTargetedATurnWatcher.java b/Mage/src/main/java/mage/watchers/common/NumberOfTimesPermanentTargetedATurnWatcher.java index fa14361fd55..e71a844b28d 100644 --- a/Mage/src/main/java/mage/watchers/common/NumberOfTimesPermanentTargetedATurnWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/NumberOfTimesPermanentTargetedATurnWatcher.java @@ -23,11 +23,6 @@ public class NumberOfTimesPermanentTargetedATurnWatcher extends Watcher { super(WatcherScope.GAME); } - public NumberOfTimesPermanentTargetedATurnWatcher(final NumberOfTimesPermanentTargetedATurnWatcher watcher) { - super(watcher); - this.permanentsTargeted.putAll(watcher.permanentsTargeted); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.TARGETED) { @@ -55,9 +50,4 @@ public class NumberOfTimesPermanentTargetedATurnWatcher extends Watcher { super.reset(); permanentsTargeted.clear(); } - - @Override - public NumberOfTimesPermanentTargetedATurnWatcher copy() { - return new NumberOfTimesPermanentTargetedATurnWatcher(this); - } } diff --git a/Mage/src/main/java/mage/watchers/common/PermanentsEnteredBattlefieldWatcher.java b/Mage/src/main/java/mage/watchers/common/PermanentsEnteredBattlefieldWatcher.java index b4bc3df198e..9e74b0bae7b 100644 --- a/Mage/src/main/java/mage/watchers/common/PermanentsEnteredBattlefieldWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/PermanentsEnteredBattlefieldWatcher.java @@ -26,17 +26,6 @@ public class PermanentsEnteredBattlefieldWatcher extends Watcher { super(WatcherScope.GAME); } - public PermanentsEnteredBattlefieldWatcher(final PermanentsEnteredBattlefieldWatcher watcher) { - super(watcher); - this.enteringBattlefield.putAll(watcher.enteringBattlefield); - this.enteringBattlefieldLastTurn.putAll(watcher.enteringBattlefieldLastTurn); - } - - @Override - public PermanentsEnteredBattlefieldWatcher copy() { - return new PermanentsEnteredBattlefieldWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.ENTERS_THE_BATTLEFIELD) { diff --git a/Mage/src/main/java/mage/watchers/common/PermanentsEnteredBattlefieldYourLastTurnWatcher.java b/Mage/src/main/java/mage/watchers/common/PermanentsEnteredBattlefieldYourLastTurnWatcher.java index 2c52ef3ed81..5e71320ed1c 100644 --- a/Mage/src/main/java/mage/watchers/common/PermanentsEnteredBattlefieldYourLastTurnWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/PermanentsEnteredBattlefieldYourLastTurnWatcher.java @@ -27,17 +27,6 @@ public class PermanentsEnteredBattlefieldYourLastTurnWatcher extends Watcher { super(WatcherScope.GAME); } - public PermanentsEnteredBattlefieldYourLastTurnWatcher(final PermanentsEnteredBattlefieldYourLastTurnWatcher watcher) { - super(watcher); - this.enteringBattlefield.putAll(watcher.enteringBattlefield); - this.enteringBattlefieldLastTurn.putAll(watcher.enteringBattlefieldLastTurn); - } - - @Override - public PermanentsEnteredBattlefieldYourLastTurnWatcher copy() { - return new PermanentsEnteredBattlefieldYourLastTurnWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { lastActivePlayer = game.getActivePlayerId(); diff --git a/Mage/src/main/java/mage/watchers/common/PermanentsSacrificedWatcher.java b/Mage/src/main/java/mage/watchers/common/PermanentsSacrificedWatcher.java index 9db7329017a..c157be5f23c 100644 --- a/Mage/src/main/java/mage/watchers/common/PermanentsSacrificedWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/PermanentsSacrificedWatcher.java @@ -25,15 +25,6 @@ public class PermanentsSacrificedWatcher extends Watcher { super(WatcherScope.GAME); } - public PermanentsSacrificedWatcher(final PermanentsSacrificedWatcher watcher) { - super(watcher); - } - - @Override - public PermanentsSacrificedWatcher copy() { - return new PermanentsSacrificedWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.SACRIFICED_PERMANENT) { diff --git a/Mage/src/main/java/mage/watchers/common/PlanarRollWatcher.java b/Mage/src/main/java/mage/watchers/common/PlanarRollWatcher.java index 21ab1cc6a1f..b373d3c73c8 100644 --- a/Mage/src/main/java/mage/watchers/common/PlanarRollWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/PlanarRollWatcher.java @@ -24,13 +24,6 @@ public class PlanarRollWatcher extends Watcher { super(WatcherScope.GAME); } - public PlanarRollWatcher(final PlanarRollWatcher watcher) { - super(watcher); - for (Entry entry : watcher.numberTimesPlanarDieRolled.entrySet()) { - numberTimesPlanarDieRolled.put(entry.getKey(), entry.getValue()); - } - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.PLANAR_DIE_ROLLED) { diff --git a/Mage/src/main/java/mage/watchers/common/PlayLandWatcher.java b/Mage/src/main/java/mage/watchers/common/PlayLandWatcher.java index bc6769e219e..f8b1ba53173 100644 --- a/Mage/src/main/java/mage/watchers/common/PlayLandWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/PlayLandWatcher.java @@ -21,17 +21,6 @@ public class PlayLandWatcher extends Watcher { super(WatcherScope.GAME); } - public PlayLandWatcher(final PlayLandWatcher watcher) { - super(watcher); - playerPlayedLand.addAll(watcher.playerPlayedLand); - landPlayed.addAll(watcher.landPlayed); - } - - @Override - public PlayLandWatcher copy() { - return new PlayLandWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.LAND_PLAYED) { diff --git a/Mage/src/main/java/mage/watchers/common/PlayerAttackedStepWatcher.java b/Mage/src/main/java/mage/watchers/common/PlayerAttackedStepWatcher.java index 57e37025870..a710a145fa5 100644 --- a/Mage/src/main/java/mage/watchers/common/PlayerAttackedStepWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/PlayerAttackedStepWatcher.java @@ -21,18 +21,6 @@ public class PlayerAttackedStepWatcher extends Watcher { super(WatcherScope.GAME); } - public PlayerAttackedStepWatcher(final PlayerAttackedStepWatcher watcher) { - super(watcher); - for (Map.Entry entry : watcher.playerAttacked.entrySet()) { - this.playerAttacked.put(entry.getKey(), entry.getValue()); - } - } - - @Override - public PlayerAttackedStepWatcher copy() { - return new PlayerAttackedStepWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.DECLARE_ATTACKERS_STEP_POST) { diff --git a/Mage/src/main/java/mage/watchers/common/PlayerAttackedWatcher.java b/Mage/src/main/java/mage/watchers/common/PlayerAttackedWatcher.java index be67da9b4f2..c806e4d68cb 100644 --- a/Mage/src/main/java/mage/watchers/common/PlayerAttackedWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/PlayerAttackedWatcher.java @@ -24,19 +24,6 @@ public class PlayerAttackedWatcher extends Watcher { super(WatcherScope.GAME); } - public PlayerAttackedWatcher(final PlayerAttackedWatcher watcher) { - super(watcher); - for (Map.Entry entry : watcher.playerAttacked.entrySet()) { - this.playerAttacked.put(entry.getKey(), entry.getValue()); - - } - } - - @Override - public PlayerAttackedWatcher copy() { - return new PlayerAttackedWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.ATTACKER_DECLARED) { diff --git a/Mage/src/main/java/mage/watchers/common/PlayerCastCreatureWatcher.java b/Mage/src/main/java/mage/watchers/common/PlayerCastCreatureWatcher.java index 420a019923a..591731ca84c 100644 --- a/Mage/src/main/java/mage/watchers/common/PlayerCastCreatureWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/PlayerCastCreatureWatcher.java @@ -22,11 +22,6 @@ public class PlayerCastCreatureWatcher extends Watcher { super(WatcherScope.GAME); } - public PlayerCastCreatureWatcher(final PlayerCastCreatureWatcher watcher) { - super(watcher); - this.playerIds.addAll(watcher.playerIds); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.SPELL_CAST) { @@ -37,11 +32,6 @@ public class PlayerCastCreatureWatcher extends Watcher { } } - @Override - public PlayerCastCreatureWatcher copy() { - return new PlayerCastCreatureWatcher(this); - } - @Override public void reset() { super.reset(); diff --git a/Mage/src/main/java/mage/watchers/common/PlayerDamagedBySourceWatcher.java b/Mage/src/main/java/mage/watchers/common/PlayerDamagedBySourceWatcher.java index d3e26cfa744..c30c552ec41 100644 --- a/Mage/src/main/java/mage/watchers/common/PlayerDamagedBySourceWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/PlayerDamagedBySourceWatcher.java @@ -20,17 +20,10 @@ public class PlayerDamagedBySourceWatcher extends Watcher { private final Set damageSourceIds = new HashSet<>(); - public PlayerDamagedBySourceWatcher(UUID playerId) { + public PlayerDamagedBySourceWatcher() { super(WatcherScope.PLAYER); - setControllerId(playerId); } - public PlayerDamagedBySourceWatcher(final PlayerDamagedBySourceWatcher watcher) { - super(watcher); - this.damageSourceIds.addAll(watcher.damageSourceIds); - } - - @Override public void watch(GameEvent event, Game game) { if (event.getType() == EventType.DAMAGED_PLAYER) { diff --git a/Mage/src/main/java/mage/watchers/common/PlayerGainedLifeWatcher.java b/Mage/src/main/java/mage/watchers/common/PlayerGainedLifeWatcher.java index e067a5fb905..4c24cc1d226 100644 --- a/Mage/src/main/java/mage/watchers/common/PlayerGainedLifeWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/PlayerGainedLifeWatcher.java @@ -24,12 +24,6 @@ public class PlayerGainedLifeWatcher extends Watcher { super(WatcherScope.GAME); } - private PlayerGainedLifeWatcher(final PlayerGainedLifeWatcher watcher) { - super(watcher); - for (Entry entry : watcher.amountOfLifeGainedThisTurn.entrySet()) { - amountOfLifeGainedThisTurn.put(entry.getKey(), entry.getValue()); - } - } @Override public void watch(GameEvent event, Game game) { @@ -54,9 +48,4 @@ public class PlayerGainedLifeWatcher extends Watcher { super.reset(); amountOfLifeGainedThisTurn.clear(); } - - @Override - public PlayerGainedLifeWatcher copy() { - return new PlayerGainedLifeWatcher(this); - } } diff --git a/Mage/src/main/java/mage/watchers/common/PlayerLostLifeNonCombatWatcher.java b/Mage/src/main/java/mage/watchers/common/PlayerLostLifeNonCombatWatcher.java index d6a28c4d396..785cb528af3 100644 --- a/Mage/src/main/java/mage/watchers/common/PlayerLostLifeNonCombatWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/PlayerLostLifeNonCombatWatcher.java @@ -28,13 +28,6 @@ public class PlayerLostLifeNonCombatWatcher extends Watcher { super(WatcherScope.GAME); } - public PlayerLostLifeNonCombatWatcher(final PlayerLostLifeNonCombatWatcher watcher) { - super(watcher); - for (Entry entry : watcher.amountOfLifeLostThisTurn.entrySet()) { - amountOfLifeLostThisTurn.put(entry.getKey(), entry.getValue()); - } - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.LOST_LIFE && !event.getFlag()) { @@ -76,9 +69,4 @@ public class PlayerLostLifeNonCombatWatcher extends Watcher { amountOfLifeLostLastTurn.putAll(amountOfLifeLostThisTurn); amountOfLifeLostThisTurn.clear(); } - -// @Override -// public PlayerLostLifeNonCombatWatcher copy() { -// return new PlayerLostLifeNonCombatWatcher(this); -// } } diff --git a/Mage/src/main/java/mage/watchers/common/PlayerLostLifeWatcher.java b/Mage/src/main/java/mage/watchers/common/PlayerLostLifeWatcher.java index b90a4e44578..40a233421be 100644 --- a/Mage/src/main/java/mage/watchers/common/PlayerLostLifeWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/PlayerLostLifeWatcher.java @@ -26,13 +26,6 @@ public class PlayerLostLifeWatcher extends Watcher { super(WatcherScope.GAME); } - public PlayerLostLifeWatcher(final PlayerLostLifeWatcher watcher) { - super(watcher); - for (Entry entry : watcher.amountOfLifeLostThisTurn.entrySet()) { - amountOfLifeLostThisTurn.put(entry.getKey(), entry.getValue()); - } - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.LOST_LIFE) { @@ -74,9 +67,4 @@ public class PlayerLostLifeWatcher extends Watcher { amountOfLifeLostLastTurn.putAll(amountOfLifeLostThisTurn); amountOfLifeLostThisTurn.clear(); } - -// @Override -// public PlayerLostLifeWatcher copy() { -// return new PlayerLostLifeWatcher(this); -// } } diff --git a/Mage/src/main/java/mage/watchers/common/PlayersAttackedLastTurnWatcher.java b/Mage/src/main/java/mage/watchers/common/PlayersAttackedLastTurnWatcher.java index 2416759fb63..2b5f73c08a4 100644 --- a/Mage/src/main/java/mage/watchers/common/PlayersAttackedLastTurnWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/PlayersAttackedLastTurnWatcher.java @@ -23,18 +23,6 @@ public class PlayersAttackedLastTurnWatcher extends Watcher { super(WatcherScope.GAME); } - public PlayersAttackedLastTurnWatcher(final PlayersAttackedLastTurnWatcher watcher) { - super(watcher); - for (Map.Entry entry : watcher.playersAttackedInLastTurn.entrySet()) { - this.playersAttackedInLastTurn.put(entry.getKey(), entry.getValue()); - } - } - - @Override - public PlayersAttackedLastTurnWatcher copy() { - return new PlayersAttackedLastTurnWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.BEGINNING_PHASE_PRE) { diff --git a/Mage/src/main/java/mage/watchers/common/PlayersAttackedThisTurnWatcher.java b/Mage/src/main/java/mage/watchers/common/PlayersAttackedThisTurnWatcher.java index b10eb74ab6b..fe39ea98e88 100644 --- a/Mage/src/main/java/mage/watchers/common/PlayersAttackedThisTurnWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/PlayersAttackedThisTurnWatcher.java @@ -23,19 +23,6 @@ public class PlayersAttackedThisTurnWatcher extends Watcher { super(WatcherScope.GAME); } - public PlayersAttackedThisTurnWatcher(final PlayersAttackedThisTurnWatcher watcher) { - super(watcher); - - for (Map.Entry entry : watcher.playersAttackedThisTurn.entrySet()) { - this.playersAttackedThisTurn.putIfAbsent(entry.getKey(), entry.getValue()); - } - - for (Map.Entry entry : watcher.opponentsAttackedThisTurn.entrySet()) { - this.opponentsAttackedThisTurn.putIfAbsent(entry.getKey(), entry.getValue()); - } - } - - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.BEGINNING_PHASE_PRE) { diff --git a/Mage/src/main/java/mage/watchers/common/ProwlWatcher.java b/Mage/src/main/java/mage/watchers/common/ProwlWatcher.java index 33573832651..f7c13409049 100644 --- a/Mage/src/main/java/mage/watchers/common/ProwlWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/ProwlWatcher.java @@ -29,18 +29,6 @@ public class ProwlWatcher extends Watcher { super(WatcherScope.GAME); } - private ProwlWatcher(final ProwlWatcher watcher) { - super(watcher); - for (Entry> entry : watcher.damagingSubtypes.entrySet()) { - damagingSubtypes.put(entry.getKey(), entry.getValue()); - } - } - - @Override - public ProwlWatcher copy() { - return new ProwlWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == EventType.DAMAGED_PLAYER) { diff --git a/Mage/src/main/java/mage/watchers/common/RevoltWatcher.java b/Mage/src/main/java/mage/watchers/common/RevoltWatcher.java index 65084d84cd8..8007ef86fee 100644 --- a/Mage/src/main/java/mage/watchers/common/RevoltWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/RevoltWatcher.java @@ -25,11 +25,6 @@ public class RevoltWatcher extends Watcher { super(WatcherScope.GAME); } - public RevoltWatcher(final RevoltWatcher watcher) { - super(watcher); - this.revoltActivePlayerIds.addAll(watcher.revoltActivePlayerIds); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == EventType.ZONE_CHANGE && event instanceof ZoneChangeEvent) { @@ -51,9 +46,4 @@ public class RevoltWatcher extends Watcher { public void reset() { revoltActivePlayerIds.clear(); } - - @Override - public RevoltWatcher copy() { - return new RevoltWatcher(this); - } } diff --git a/Mage/src/main/java/mage/watchers/common/SourceDidDamageWatcher.java b/Mage/src/main/java/mage/watchers/common/SourceDidDamageWatcher.java index e790aee96b8..f338ea1cb02 100644 --- a/Mage/src/main/java/mage/watchers/common/SourceDidDamageWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/SourceDidDamageWatcher.java @@ -22,16 +22,6 @@ public class SourceDidDamageWatcher extends Watcher { super(WatcherScope.GAME); } - public SourceDidDamageWatcher(final SourceDidDamageWatcher watcher) { - super(watcher); - this.damageSources.addAll(watcher.damageSources); - } - - @Override - public SourceDidDamageWatcher copy() { - return new SourceDidDamageWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == EventType.DAMAGED_CREATURE diff --git a/Mage/src/main/java/mage/watchers/common/SpellsCastWatcher.java b/Mage/src/main/java/mage/watchers/common/SpellsCastWatcher.java index 64fe3db2d6b..883ab6f9ef6 100644 --- a/Mage/src/main/java/mage/watchers/common/SpellsCastWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/SpellsCastWatcher.java @@ -30,16 +30,6 @@ public class SpellsCastWatcher extends Watcher { super(WatcherScope.GAME); } - public SpellsCastWatcher(final SpellsCastWatcher watcher) { - super(watcher); - this.spellsCast.putAll(watcher.spellsCast); - } - - @Override - public SpellsCastWatcher copy() { - return new SpellsCastWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (EventType.SPELL_CAST == event.getType()) { diff --git a/Mage/src/main/java/mage/watchers/common/WasBlockedThisTurnWatcher.java b/Mage/src/main/java/mage/watchers/common/WasBlockedThisTurnWatcher.java index c142833210f..89ad6edb0dd 100644 --- a/Mage/src/main/java/mage/watchers/common/WasBlockedThisTurnWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/WasBlockedThisTurnWatcher.java @@ -23,16 +23,6 @@ public class WasBlockedThisTurnWatcher extends Watcher { wasBlockedThisTurnCreatures = new HashSet<>(); } - private WasBlockedThisTurnWatcher(final WasBlockedThisTurnWatcher watcher) { - super(watcher); - wasBlockedThisTurnCreatures = new HashSet<>(watcher.wasBlockedThisTurnCreatures); - } - - @Override - public Watcher copy() { - return new WasBlockedThisTurnWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.BLOCKER_DECLARED) { diff --git a/Mage/src/main/java/mage/watchers/common/ZuberasDiedWatcher.java b/Mage/src/main/java/mage/watchers/common/ZuberasDiedWatcher.java index 61c555cffe0..840b428da39 100644 --- a/Mage/src/main/java/mage/watchers/common/ZuberasDiedWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/ZuberasDiedWatcher.java @@ -24,16 +24,6 @@ public class ZuberasDiedWatcher extends Watcher { super(WatcherScope.GAME); } - public ZuberasDiedWatcher(final ZuberasDiedWatcher watcher) { - super(watcher); - this.zuberasDiedThisTurn = watcher.zuberasDiedThisTurn; - } - - @Override - public ZuberasDiedWatcher copy() { - return new ZuberasDiedWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.ZONE_CHANGE && ((ZoneChangeEvent) event).isDiesEvent()) { diff --git a/Mage/src/test/java/mage/WatcherTest.java b/Mage/src/test/java/mage/WatcherTest.java new file mode 100644 index 00000000000..8b8c44b160e --- /dev/null +++ b/Mage/src/test/java/mage/WatcherTest.java @@ -0,0 +1,4 @@ +package mage; + +public class WatcherTest { +} From a8708e61d74b8c6815e0efbc0a7f15ed497cfa19 Mon Sep 17 00:00:00 2001 From: Ingmar Goudt Date: Tue, 30 Apr 2019 16:41:06 +0200 Subject: [PATCH 2/8] simplify some of the field setters --- Mage/src/main/java/mage/watchers/Watcher.java | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/Mage/src/main/java/mage/watchers/Watcher.java b/Mage/src/main/java/mage/watchers/Watcher.java index f954166119e..05efdc76f39 100644 --- a/Mage/src/main/java/mage/watchers/Watcher.java +++ b/Mage/src/main/java/mage/watchers/Watcher.java @@ -103,19 +103,7 @@ public abstract class Watcher implements Serializable { allFields.addAll(Arrays.asList(getClass().getSuperclass().getDeclaredFields())); for (Field field : allFields) { field.setAccessible(true); - if (field.getType().isPrimitive()) { - field.set(watcher, field.get(this)); - } - else if(field.getType() == Step.class){ - field.set(watcher, field.get(this)); - } - else if (field.getType() == Mana.class) { - field.set(watcher, field.get(this)); - } else if (field.getType() == UUID.class) { - field.set(watcher, field.get(this)); - } else if (field.getType().isEnum()) { - field.set(watcher, field.get(this)); - } else if (field.getType() == Set.class) { + if (field.getType() == Set.class) { ((Set) field.get(watcher)).clear(); ((Set) field.get(watcher)).addAll((Set) field.get(this)); } else if (field.getType() == Map.class) { @@ -126,7 +114,7 @@ public abstract class Watcher implements Serializable { ((List) field.get(watcher)).addAll((List) field.get(this)); } else { if (field.getType() != Logger.class) { - logger.error(field.getType() + " can not be copied"); + field.set(watcher, field.get(this)); } } } From 6703ba693dfba9b7bdbc52561fdf501e47ecc066 Mon Sep 17 00:00:00 2001 From: Ingmar Goudt Date: Sun, 7 Apr 2019 20:22:14 +0200 Subject: [PATCH 3/8] refactor the copy functionality for no-args watchers --- Mage/src/main/java/mage/game/GameImpl.java | 10 ++- Mage/src/main/java/mage/watchers/Watcher.java | 71 +++++++++++++++---- ...fDamageAPlayerReceivedThisTurnWatcher.java | 12 ---- .../common/AttackedLastTurnWatcher.java | 17 ----- .../AttackedOrBlockedThisCombatWatcher.java | 11 --- .../common/AttackedThisTurnWatcher.java | 11 --- .../common/BlockedAttackerWatcher.java | 14 ---- ...kedByOnlyOneCreatureThisCombatWatcher.java | 9 --- .../common/BlockedThisTurnWatcher.java | 13 +--- .../watchers/common/BloodthirstWatcher.java | 6 +- .../CardsAmountDrawnThisTurnWatcher.java | 9 --- .../CardsDrawnDuringDrawStepWatcher.java | 11 --- .../common/CardsPutIntoGraveyardWatcher.java | 12 ---- .../common/CastFromGraveyardWatcher.java | 9 --- .../watchers/common/CastFromHandWatcher.java | 7 -- .../common/CastSpellLastTurnWatcher.java | 17 ----- .../common/CastSpellYourLastTurnWatcher.java | 10 --- .../ChooseBlockersRedundancyWatcher.java | 11 --- .../CreatureAttackedWhichPlayerWatcher.java | 12 ---- .../common/CreatureWasCastWatcher.java | 9 --- .../watchers/common/CreaturesDiedWatcher.java | 11 --- .../watchers/common/DamageDoneWatcher.java | 6 -- ...heBattlefieldWhileSpellWasCastWatcher.java | 10 --- .../common/FirstSpellCastThisTurnWatcher.java | 11 --- .../watchers/common/GravestormWatcher.java | 10 --- .../mage/watchers/common/LandfallWatcher.java | 11 --- .../LifeLossOtherFromCombatWatcher.java | 10 --- .../common/ManaSpentToCastWatcher.java | 10 --- .../mage/watchers/common/MiracleWatcher.java | 12 ---- .../mage/watchers/common/MorbidWatcher.java | 10 --- ...rOfTimesPermanentTargetedATurnWatcher.java | 10 --- .../PermanentsEnteredBattlefieldWatcher.java | 11 --- ...EnteredBattlefieldYourLastTurnWatcher.java | 11 --- .../common/PermanentsSacrificedWatcher.java | 9 --- .../watchers/common/PlanarRollWatcher.java | 7 -- .../mage/watchers/common/PlayLandWatcher.java | 11 --- .../common/PlayerAttackedStepWatcher.java | 12 ---- .../common/PlayerAttackedWatcher.java | 13 ---- .../common/PlayerCastCreatureWatcher.java | 10 --- .../common/PlayerDamagedBySourceWatcher.java | 9 +-- .../common/PlayerGainedLifeWatcher.java | 11 --- .../PlayerLostLifeNonCombatWatcher.java | 12 ---- .../common/PlayerLostLifeWatcher.java | 12 ---- .../PlayersAttackedLastTurnWatcher.java | 12 ---- .../PlayersAttackedThisTurnWatcher.java | 13 ---- .../mage/watchers/common/ProwlWatcher.java | 12 ---- .../mage/watchers/common/RevoltWatcher.java | 10 --- .../common/SourceDidDamageWatcher.java | 10 --- .../watchers/common/SpellsCastWatcher.java | 10 --- .../common/WasBlockedThisTurnWatcher.java | 10 --- .../watchers/common/ZuberasDiedWatcher.java | 10 --- Mage/src/test/java/mage/WatcherTest.java | 4 ++ 52 files changed, 73 insertions(+), 538 deletions(-) create mode 100644 Mage/src/test/java/mage/WatcherTest.java diff --git a/Mage/src/main/java/mage/game/GameImpl.java b/Mage/src/main/java/mage/game/GameImpl.java index 3594cf3062f..7c6fb4370fc 100644 --- a/Mage/src/main/java/mage/game/GameImpl.java +++ b/Mage/src/main/java/mage/game/GameImpl.java @@ -1025,8 +1025,14 @@ public abstract class GameImpl implements Game, Serializable { } public void initPlayerDefaultWatchers(UUID playerId) { - getState().addWatcher(new PlayerDamagedBySourceWatcher(playerId)); - getState().addWatcher(new BloodthirstWatcher(playerId)); + PlayerDamagedBySourceWatcher playerDamagedBySourceWatcher = new PlayerDamagedBySourceWatcher(); + playerDamagedBySourceWatcher.setControllerId(playerId); + + getState().addWatcher(playerDamagedBySourceWatcher); + + BloodthirstWatcher bloodthirstWatcher = new BloodthirstWatcher(); + bloodthirstWatcher.setControllerId(playerId); + getState().addWatcher(bloodthirstWatcher); } protected void sendStartMessage(Player choosingPlayer, Player startingPlayer) { diff --git a/Mage/src/main/java/mage/watchers/Watcher.java b/Mage/src/main/java/mage/watchers/Watcher.java index af3ceddd727..f954166119e 100644 --- a/Mage/src/main/java/mage/watchers/Watcher.java +++ b/Mage/src/main/java/mage/watchers/Watcher.java @@ -1,17 +1,20 @@ package mage.watchers; -import java.io.Serializable; -import java.lang.reflect.Constructor; -import java.lang.reflect.InvocationTargetException; -import java.util.UUID; +import mage.Mana; import mage.constants.WatcherScope; import mage.game.Game; +import mage.game.turn.Step; import mage.game.events.GameEvent; import org.apache.log4j.Logger; +import java.io.Serializable; +import java.lang.reflect.Constructor; +import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; +import java.util.*; + /** - * * watches for certain game events to occur and flags condition * * @author BetaSteward_at_googlemail.com @@ -26,7 +29,6 @@ public abstract class Watcher implements Serializable { protected final WatcherScope scope; - public Watcher(WatcherScope scope) { this.scope = scope; } @@ -62,8 +64,8 @@ public abstract class Watcher implements Serializable { return controllerId + getBasicKey(); case CARD: return sourceId + getBasicKey(); - default: - return getBasicKey(); + default: + return getBasicKey(); } } @@ -75,18 +77,61 @@ public abstract class Watcher implements Serializable { condition = false; } - protected String getBasicKey(){ + protected String getBasicKey() { return getClass().getSimpleName(); } public abstract void watch(GameEvent event, Game game); - public T copy(){ + public T copy() { try { - Constructor constructor = this.getClass().getDeclaredConstructor(getClass()); + List constructors = Arrays.asList(this.getClass().getConstructors()); + if (constructors.size() > 1) { + logger.error(getClass().getSimpleName() + " has multiple constructors"); + return null; + } + + Constructor constructor = (Constructor) constructors.get(0); + if (constructor.getParameterCount() > 0) { + logger.error(getClass().getSimpleName() + " constructor has arguments, should be 0 and inject the parameters by setters"); + return null; + } constructor.setAccessible(true); - return (T) constructor.newInstance(this); - } catch (InstantiationException | IllegalAccessException | NoSuchMethodException | InvocationTargetException e) { + T watcher = (T) constructor.newInstance(); + List allFields = new ArrayList<>(); + allFields.addAll(Arrays.asList(getClass().getDeclaredFields())); + allFields.addAll(Arrays.asList(getClass().getSuperclass().getDeclaredFields())); + for (Field field : allFields) { + field.setAccessible(true); + if (field.getType().isPrimitive()) { + field.set(watcher, field.get(this)); + } + else if(field.getType() == Step.class){ + field.set(watcher, field.get(this)); + } + else if (field.getType() == Mana.class) { + field.set(watcher, field.get(this)); + } else if (field.getType() == UUID.class) { + field.set(watcher, field.get(this)); + } else if (field.getType().isEnum()) { + field.set(watcher, field.get(this)); + } else if (field.getType() == Set.class) { + ((Set) field.get(watcher)).clear(); + ((Set) field.get(watcher)).addAll((Set) field.get(this)); + } else if (field.getType() == Map.class) { + ((Map) field.get(watcher)).clear(); + ((Map) field.get(watcher)).putAll((Map) field.get(this)); + } else if (field.getType() == List.class) { + ((List) field.get(watcher)).clear(); + ((List) field.get(watcher)).addAll((List) field.get(this)); + } else { + if (field.getType() != Logger.class) { + logger.error(field.getType() + " can not be copied"); + } + } + } + return watcher; + } catch (InstantiationException | IllegalAccessException | InvocationTargetException e) { logger.error("Can't copy watcher: " + e.getMessage(), e); } return null; diff --git a/Mage/src/main/java/mage/watchers/common/AmountOfDamageAPlayerReceivedThisTurnWatcher.java b/Mage/src/main/java/mage/watchers/common/AmountOfDamageAPlayerReceivedThisTurnWatcher.java index c7e63fc85fe..26dda05ed90 100644 --- a/Mage/src/main/java/mage/watchers/common/AmountOfDamageAPlayerReceivedThisTurnWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/AmountOfDamageAPlayerReceivedThisTurnWatcher.java @@ -24,13 +24,6 @@ public class AmountOfDamageAPlayerReceivedThisTurnWatcher extends Watcher { super(WatcherScope.GAME); } - public AmountOfDamageAPlayerReceivedThisTurnWatcher(final AmountOfDamageAPlayerReceivedThisTurnWatcher watcher) { - super(watcher); - for (Entry entry : watcher.amountOfDamageReceivedThisTurn.entrySet()) { - amountOfDamageReceivedThisTurn.put(entry.getKey(), entry.getValue()); - } - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.DAMAGED_PLAYER) { @@ -50,9 +43,4 @@ public class AmountOfDamageAPlayerReceivedThisTurnWatcher extends Watcher { public void reset() { amountOfDamageReceivedThisTurn.clear(); } - - @Override - public AmountOfDamageAPlayerReceivedThisTurnWatcher copy() { - return new AmountOfDamageAPlayerReceivedThisTurnWatcher(this); - } } diff --git a/Mage/src/main/java/mage/watchers/common/AttackedLastTurnWatcher.java b/Mage/src/main/java/mage/watchers/common/AttackedLastTurnWatcher.java index c6af696380d..93a26edd102 100644 --- a/Mage/src/main/java/mage/watchers/common/AttackedLastTurnWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/AttackedLastTurnWatcher.java @@ -27,18 +27,6 @@ public class AttackedLastTurnWatcher extends Watcher { super(WatcherScope.GAME); } - public AttackedLastTurnWatcher(final AttackedLastTurnWatcher watcher) { - super(watcher); - for (Entry> entry : watcher.attackedLastTurnCreatures.entrySet()) { - Set allAttackersCopy = new HashSet<>(entry.getValue()); - attackedLastTurnCreatures.put(entry.getKey(), allAttackersCopy); - } - for (Entry> entry : watcher.attackedThisTurnCreatures.entrySet()) { - Set allAttackersCopy = new HashSet<>(entry.getValue()); - attackedThisTurnCreatures.put(entry.getKey(), allAttackersCopy); - } - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.BEGINNING_PHASE_PRE) { @@ -79,9 +67,4 @@ public class AttackedLastTurnWatcher extends Watcher { return new HashSet<>(); } - @Override - public AttackedLastTurnWatcher copy() { - return new AttackedLastTurnWatcher(this); - } - } diff --git a/Mage/src/main/java/mage/watchers/common/AttackedOrBlockedThisCombatWatcher.java b/Mage/src/main/java/mage/watchers/common/AttackedOrBlockedThisCombatWatcher.java index 0af8f15aa7a..7a9bf240a90 100644 --- a/Mage/src/main/java/mage/watchers/common/AttackedOrBlockedThisCombatWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/AttackedOrBlockedThisCombatWatcher.java @@ -26,12 +26,6 @@ public class AttackedOrBlockedThisCombatWatcher extends Watcher { super(WatcherScope.GAME); } - public AttackedOrBlockedThisCombatWatcher(final AttackedOrBlockedThisCombatWatcher watcher) { - super(watcher); - this.getAttackedThisTurnCreatures().addAll(watcher.getAttackedThisTurnCreatures()); - this.getBlockedThisTurnCreatures().addAll(watcher.getBlockedThisTurnCreatures()); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.BEGIN_COMBAT_STEP_PRE) { @@ -53,9 +47,4 @@ public class AttackedOrBlockedThisCombatWatcher extends Watcher { return this.blockedThisTurnCreatures; } - @Override - public AttackedOrBlockedThisCombatWatcher copy() { - return new AttackedOrBlockedThisCombatWatcher(this); - } - } diff --git a/Mage/src/main/java/mage/watchers/common/AttackedThisTurnWatcher.java b/Mage/src/main/java/mage/watchers/common/AttackedThisTurnWatcher.java index adedcff2cc5..72ea6cfae37 100644 --- a/Mage/src/main/java/mage/watchers/common/AttackedThisTurnWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/AttackedThisTurnWatcher.java @@ -25,12 +25,6 @@ public class AttackedThisTurnWatcher extends Watcher { super(WatcherScope.GAME); } - public AttackedThisTurnWatcher(final AttackedThisTurnWatcher watcher) { - super(watcher); - this.attackedThisTurnCreatures.addAll(watcher.attackedThisTurnCreatures); - this.attackedThisTurnCreaturesCounts.putAll(watcher.attackedThisTurnCreaturesCounts); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.ATTACKER_DECLARED) { @@ -58,11 +52,6 @@ public class AttackedThisTurnWatcher extends Watcher { return false; } - @Override - public AttackedThisTurnWatcher copy() { - return new AttackedThisTurnWatcher(this); - } - @Override public void reset() { super.reset(); diff --git a/Mage/src/main/java/mage/watchers/common/BlockedAttackerWatcher.java b/Mage/src/main/java/mage/watchers/common/BlockedAttackerWatcher.java index 57506bf6832..7d70b8f10ed 100644 --- a/Mage/src/main/java/mage/watchers/common/BlockedAttackerWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/BlockedAttackerWatcher.java @@ -25,20 +25,6 @@ public class BlockedAttackerWatcher extends Watcher { super(WatcherScope.GAME); } - public BlockedAttackerWatcher(final BlockedAttackerWatcher watcher) { - super(watcher); - for (MageObjectReference mageObjectReference : watcher.blockData.keySet()) { - Set blockedAttackers = new HashSet<>(); - blockedAttackers.addAll(watcher.blockData.get(mageObjectReference)); - blockData.put(mageObjectReference, blockedAttackers); - } - } - -// @Override -// public BlockedAttackerWatcher copy() { -// return new BlockedAttackerWatcher(this); -// } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == EventType.BLOCKER_DECLARED) { diff --git a/Mage/src/main/java/mage/watchers/common/BlockedByOnlyOneCreatureThisCombatWatcher.java b/Mage/src/main/java/mage/watchers/common/BlockedByOnlyOneCreatureThisCombatWatcher.java index b058d6136ea..901ef40009e 100644 --- a/Mage/src/main/java/mage/watchers/common/BlockedByOnlyOneCreatureThisCombatWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/BlockedByOnlyOneCreatureThisCombatWatcher.java @@ -21,11 +21,6 @@ public class BlockedByOnlyOneCreatureThisCombatWatcher extends Watcher { super(WatcherScope.GAME); } - public BlockedByOnlyOneCreatureThisCombatWatcher(final BlockedByOnlyOneCreatureThisCombatWatcher watcher) { - super(watcher); - this.blockedByOneCreature.putAll(watcher.blockedByOneCreature); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.BEGIN_COMBAT_STEP_PRE) { @@ -64,8 +59,4 @@ public class BlockedByOnlyOneCreatureThisCombatWatcher extends Watcher { return null; } - @Override - public BlockedByOnlyOneCreatureThisCombatWatcher copy() { - return new BlockedByOnlyOneCreatureThisCombatWatcher(this); - } } diff --git a/Mage/src/main/java/mage/watchers/common/BlockedThisTurnWatcher.java b/Mage/src/main/java/mage/watchers/common/BlockedThisTurnWatcher.java index 6d8b27ad052..70b08e29c3d 100644 --- a/Mage/src/main/java/mage/watchers/common/BlockedThisTurnWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/BlockedThisTurnWatcher.java @@ -16,21 +16,10 @@ import java.util.Set; */ public class BlockedThisTurnWatcher extends Watcher { - private final Set blockedThisTurnCreatures; + private final Set blockedThisTurnCreatures = new HashSet<>(); public BlockedThisTurnWatcher() { super(WatcherScope.GAME); - blockedThisTurnCreatures = new HashSet<>(); - } - - public BlockedThisTurnWatcher(final BlockedThisTurnWatcher watcher) { - super(watcher); - blockedThisTurnCreatures = new HashSet<>(watcher.blockedThisTurnCreatures); - } - - @Override - public Watcher copy() { - return new BlockedThisTurnWatcher(this); } @Override diff --git a/Mage/src/main/java/mage/watchers/common/BloodthirstWatcher.java b/Mage/src/main/java/mage/watchers/common/BloodthirstWatcher.java index b27a6a62473..b70f17779b0 100644 --- a/Mage/src/main/java/mage/watchers/common/BloodthirstWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/BloodthirstWatcher.java @@ -15,14 +15,10 @@ import java.util.UUID; * @author Loki */ public class BloodthirstWatcher extends Watcher { - public BloodthirstWatcher(UUID controllerId) { + public BloodthirstWatcher() { super(WatcherScope.PLAYER); - this.controllerId = controllerId; } - public BloodthirstWatcher(final BloodthirstWatcher watcher) { - super(watcher); - } @Override public void watch(GameEvent event, Game game) { diff --git a/Mage/src/main/java/mage/watchers/common/CardsAmountDrawnThisTurnWatcher.java b/Mage/src/main/java/mage/watchers/common/CardsAmountDrawnThisTurnWatcher.java index 71c1a703060..60be9cbbbe7 100644 --- a/Mage/src/main/java/mage/watchers/common/CardsAmountDrawnThisTurnWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/CardsAmountDrawnThisTurnWatcher.java @@ -25,10 +25,6 @@ public class CardsAmountDrawnThisTurnWatcher extends Watcher { super(WatcherScope.GAME); } - public CardsAmountDrawnThisTurnWatcher(final CardsAmountDrawnThisTurnWatcher watcher) { - super(watcher); - amountOfCardsDrawnThisTurn.putAll(watcher.amountOfCardsDrawnThisTurn); - } @Override public void watch(GameEvent event, Game game) { @@ -61,9 +57,4 @@ public class CardsAmountDrawnThisTurnWatcher extends Watcher { public int getAmountCardsDrawn(UUID playerId) { return amountOfCardsDrawnThisTurn.getOrDefault(playerId, 0); } - - @Override - public CardsAmountDrawnThisTurnWatcher copy() { - return new CardsAmountDrawnThisTurnWatcher(this); - } } diff --git a/Mage/src/main/java/mage/watchers/common/CardsDrawnDuringDrawStepWatcher.java b/Mage/src/main/java/mage/watchers/common/CardsDrawnDuringDrawStepWatcher.java index 60cc296e91f..c416860cc8e 100644 --- a/Mage/src/main/java/mage/watchers/common/CardsDrawnDuringDrawStepWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/CardsDrawnDuringDrawStepWatcher.java @@ -27,13 +27,6 @@ public class CardsDrawnDuringDrawStepWatcher extends Watcher { super(WatcherScope.GAME); } - public CardsDrawnDuringDrawStepWatcher(final CardsDrawnDuringDrawStepWatcher watcher) { - super(watcher); - for (Entry entry : watcher.amountOfCardsDrawnThisTurn.entrySet()) { - amountOfCardsDrawnThisTurn.put(entry.getKey(), entry.getValue()); - } - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.DREW_CARD @@ -57,8 +50,4 @@ public class CardsDrawnDuringDrawStepWatcher extends Watcher { amountOfCardsDrawnThisTurn.clear(); } - @Override - public CardsDrawnDuringDrawStepWatcher copy() { - return new CardsDrawnDuringDrawStepWatcher(this); - } } diff --git a/Mage/src/main/java/mage/watchers/common/CardsPutIntoGraveyardWatcher.java b/Mage/src/main/java/mage/watchers/common/CardsPutIntoGraveyardWatcher.java index 004019037d5..6ab8c8a9528 100644 --- a/Mage/src/main/java/mage/watchers/common/CardsPutIntoGraveyardWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/CardsPutIntoGraveyardWatcher.java @@ -32,14 +32,6 @@ public class CardsPutIntoGraveyardWatcher extends Watcher { super(WatcherScope.GAME); } - public CardsPutIntoGraveyardWatcher(final CardsPutIntoGraveyardWatcher watcher) { - super(watcher); - for (Entry entry : watcher.amountOfCardsThisTurn.entrySet()) { - amountOfCardsThisTurn.put(entry.getKey(), entry.getValue()); - } - this.cardsPutToGraveyardFromBattlefield.addAll(watcher.cardsPutToGraveyardFromBattlefield); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.UNTAP_STEP_PRE) { @@ -73,8 +65,4 @@ public class CardsPutIntoGraveyardWatcher extends Watcher { cardsPutToGraveyardFromBattlefield.clear(); } - @Override - public CardsPutIntoGraveyardWatcher copy() { - return new CardsPutIntoGraveyardWatcher(this); - } } diff --git a/Mage/src/main/java/mage/watchers/common/CastFromGraveyardWatcher.java b/Mage/src/main/java/mage/watchers/common/CastFromGraveyardWatcher.java index 2950ef15b03..3391c0bf9fb 100644 --- a/Mage/src/main/java/mage/watchers/common/CastFromGraveyardWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/CastFromGraveyardWatcher.java @@ -23,10 +23,6 @@ public class CastFromGraveyardWatcher extends Watcher { super(WatcherScope.GAME); } - public CastFromGraveyardWatcher(final CastFromGraveyardWatcher watcher) { - super(watcher); - } - @Override public void watch(GameEvent event, Game game) { /** @@ -55,9 +51,4 @@ public class CastFromGraveyardWatcher extends Watcher { super.reset(); spellsCastFromGraveyard.clear(); } - - @Override - public CastFromGraveyardWatcher copy() { - return new CastFromGraveyardWatcher(this); - } } diff --git a/Mage/src/main/java/mage/watchers/common/CastFromHandWatcher.java b/Mage/src/main/java/mage/watchers/common/CastFromHandWatcher.java index 58983d93bf7..5fbaebb330d 100644 --- a/Mage/src/main/java/mage/watchers/common/CastFromHandWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/CastFromHandWatcher.java @@ -21,9 +21,6 @@ public class CastFromHandWatcher extends Watcher { super(WatcherScope.GAME); } - public CastFromHandWatcher(final CastFromHandWatcher watcher) { - super(watcher); - } @Override public void watch(GameEvent event, Game game) { @@ -58,8 +55,4 @@ public class CastFromHandWatcher extends Watcher { spellsCastFromHand.clear(); } - @Override - public CastFromHandWatcher copy() { - return new CastFromHandWatcher(this); - } } diff --git a/Mage/src/main/java/mage/watchers/common/CastSpellLastTurnWatcher.java b/Mage/src/main/java/mage/watchers/common/CastSpellLastTurnWatcher.java index 7f30b3b5ca4..718f7bc56a3 100644 --- a/Mage/src/main/java/mage/watchers/common/CastSpellLastTurnWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/CastSpellLastTurnWatcher.java @@ -23,17 +23,6 @@ public class CastSpellLastTurnWatcher extends Watcher { super(WatcherScope.GAME); } - public CastSpellLastTurnWatcher(final CastSpellLastTurnWatcher watcher) { - super(watcher); - for (Entry entry : watcher.amountOfSpellsCastOnCurrentTurn.entrySet()) { - amountOfSpellsCastOnCurrentTurn.put(entry.getKey(), entry.getValue()); - } - for (Entry entry : watcher.amountOfSpellsCastOnPrevTurn.entrySet()) { - amountOfSpellsCastOnPrevTurn.put(entry.getKey(), entry.getValue()); - } - this.spellsCastThisTurnInOrder.addAll(watcher.spellsCastThisTurnInOrder); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.SPELL_CAST) { @@ -81,10 +70,4 @@ public class CastSpellLastTurnWatcher extends Watcher { } return 0; } -// -// @Override -// public CastSpellLastTurnWatcher copy() { -// return new CastSpellLastTurnWatcher(this); -// } - } diff --git a/Mage/src/main/java/mage/watchers/common/CastSpellYourLastTurnWatcher.java b/Mage/src/main/java/mage/watchers/common/CastSpellYourLastTurnWatcher.java index f99ca683b4d..b13b6858382 100644 --- a/Mage/src/main/java/mage/watchers/common/CastSpellYourLastTurnWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/CastSpellYourLastTurnWatcher.java @@ -22,16 +22,6 @@ public class CastSpellYourLastTurnWatcher extends Watcher { super(WatcherScope.GAME); } - public CastSpellYourLastTurnWatcher(final CastSpellYourLastTurnWatcher watcher) { - super(watcher); - for (Entry entry : watcher.amountOfSpellsCastOnCurrentTurn.entrySet()) { - amountOfSpellsCastOnCurrentTurn.put(entry.getKey(), entry.getValue()); - } - for (Entry entry : watcher.amountOfSpellsCastOnPrevTurn.entrySet()) { - amountOfSpellsCastOnPrevTurn.put(entry.getKey(), entry.getValue()); - } - } - @Override public void watch(GameEvent event, Game game) { lastActivePlayer = game.getActivePlayerId(); diff --git a/Mage/src/main/java/mage/watchers/common/ChooseBlockersRedundancyWatcher.java b/Mage/src/main/java/mage/watchers/common/ChooseBlockersRedundancyWatcher.java index 4d8fceaef50..c93ed3b0a67 100644 --- a/Mage/src/main/java/mage/watchers/common/ChooseBlockersRedundancyWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/ChooseBlockersRedundancyWatcher.java @@ -20,23 +20,12 @@ public class ChooseBlockersRedundancyWatcher extends Watcher { // workaround for super(WatcherScope.GAME); } - public ChooseBlockersRedundancyWatcher(final ChooseBlockersRedundancyWatcher watcher) { - super(watcher); - this.copyCount = watcher.copyCount; - this.copyCountApply = watcher.copyCountApply; - } - @Override public void reset() { copyCount = 0; copyCountApply = 0; } - @Override - public ChooseBlockersRedundancyWatcher copy() { - return new ChooseBlockersRedundancyWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { } diff --git a/Mage/src/main/java/mage/watchers/common/CreatureAttackedWhichPlayerWatcher.java b/Mage/src/main/java/mage/watchers/common/CreatureAttackedWhichPlayerWatcher.java index 6ebaee8ee60..f9d647a932e 100644 --- a/Mage/src/main/java/mage/watchers/common/CreatureAttackedWhichPlayerWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/CreatureAttackedWhichPlayerWatcher.java @@ -23,13 +23,6 @@ public class CreatureAttackedWhichPlayerWatcher extends Watcher { super(WatcherScope.GAME); } - public CreatureAttackedWhichPlayerWatcher(final CreatureAttackedWhichPlayerWatcher watcher) { - super(watcher); - for (Entry entry : watcher.getPlayerAttackedThisTurnByCreature.entrySet()) { - getPlayerAttackedThisTurnByCreature.put(entry.getKey(), entry.getValue()); - } - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.ATTACKER_DECLARED) { @@ -50,9 +43,4 @@ public class CreatureAttackedWhichPlayerWatcher extends Watcher { public void reset() { getPlayerAttackedThisTurnByCreature.clear(); } - - @Override - public CreatureAttackedWhichPlayerWatcher copy() { - return new CreatureAttackedWhichPlayerWatcher(this); - } } diff --git a/Mage/src/main/java/mage/watchers/common/CreatureWasCastWatcher.java b/Mage/src/main/java/mage/watchers/common/CreatureWasCastWatcher.java index 11f1fbf5b9f..79da22b221e 100644 --- a/Mage/src/main/java/mage/watchers/common/CreatureWasCastWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/CreatureWasCastWatcher.java @@ -25,10 +25,6 @@ public class CreatureWasCastWatcher extends Watcher { super(WatcherScope.GAME); } - public CreatureWasCastWatcher(final CreatureWasCastWatcher watcher) { - super(watcher); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.SPELL_CAST) { @@ -58,9 +54,4 @@ public class CreatureWasCastWatcher extends Watcher { super.reset(); creaturesCasted.clear(); } - - @Override - public CreatureWasCastWatcher copy() { - return new CreatureWasCastWatcher(this); - } } diff --git a/Mage/src/main/java/mage/watchers/common/CreaturesDiedWatcher.java b/Mage/src/main/java/mage/watchers/common/CreaturesDiedWatcher.java index cf30c774900..f48166180e4 100644 --- a/Mage/src/main/java/mage/watchers/common/CreaturesDiedWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/CreaturesDiedWatcher.java @@ -22,12 +22,6 @@ public class CreaturesDiedWatcher extends Watcher { super(WatcherScope.GAME); } - public CreaturesDiedWatcher(final CreaturesDiedWatcher watcher) { - super(watcher); - this.amountOfCreaturesThatDiedByController.putAll(watcher.amountOfCreaturesThatDiedByController); - this.amountOfCreaturesThatDiedByOwner.putAll(watcher.amountOfCreaturesThatDiedByOwner); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.ZONE_CHANGE) { @@ -57,11 +51,6 @@ public class CreaturesDiedWatcher extends Watcher { return amountOfCreaturesThatDiedByOwner.getOrDefault(playerId, 0); } - @Override - public CreaturesDiedWatcher copy() { - return new CreaturesDiedWatcher(this); - } - public int getAmountOfCreaturesDiedThisTurn() { return amountOfCreaturesThatDiedByController.values().stream().mapToInt(x -> x).sum(); } diff --git a/Mage/src/main/java/mage/watchers/common/DamageDoneWatcher.java b/Mage/src/main/java/mage/watchers/common/DamageDoneWatcher.java index 0f28c0a3966..6e4008ab16a 100644 --- a/Mage/src/main/java/mage/watchers/common/DamageDoneWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/DamageDoneWatcher.java @@ -40,12 +40,6 @@ public class DamageDoneWatcher extends Watcher { this.damagedObjects = new HashMap<>(); } - private DamageDoneWatcher(final DamageDoneWatcher watcher) { - super(watcher); - this.damagingObjects = new HashMap<>(watcher.damagingObjects); - this.damagedObjects = new HashMap<>(watcher.damagedObjects); - } - @Override public void watch(GameEvent event, Game game) { switch (event.getType()) { diff --git a/Mage/src/main/java/mage/watchers/common/DragonOnTheBattlefieldWhileSpellWasCastWatcher.java b/Mage/src/main/java/mage/watchers/common/DragonOnTheBattlefieldWhileSpellWasCastWatcher.java index 46266a82184..66a0b24ce0c 100644 --- a/Mage/src/main/java/mage/watchers/common/DragonOnTheBattlefieldWhileSpellWasCastWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/DragonOnTheBattlefieldWhileSpellWasCastWatcher.java @@ -29,11 +29,6 @@ public class DragonOnTheBattlefieldWhileSpellWasCastWatcher extends Watcher { super(WatcherScope.GAME); } - public DragonOnTheBattlefieldWhileSpellWasCastWatcher(final DragonOnTheBattlefieldWhileSpellWasCastWatcher watcher) { - super(watcher); - this.castWithDragonOnTheBattlefield.addAll(watcher.castWithDragonOnTheBattlefield); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.SPELL_CAST) { @@ -67,9 +62,4 @@ public class DragonOnTheBattlefieldWhileSpellWasCastWatcher extends Watcher { public boolean castWithConditionTrue(UUID spellId) { return castWithDragonOnTheBattlefield.contains(spellId); } - - @Override - public DragonOnTheBattlefieldWhileSpellWasCastWatcher copy() { - return new DragonOnTheBattlefieldWhileSpellWasCastWatcher(this); - } } diff --git a/Mage/src/main/java/mage/watchers/common/FirstSpellCastThisTurnWatcher.java b/Mage/src/main/java/mage/watchers/common/FirstSpellCastThisTurnWatcher.java index c60052f27dd..80a1a329ee2 100644 --- a/Mage/src/main/java/mage/watchers/common/FirstSpellCastThisTurnWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/FirstSpellCastThisTurnWatcher.java @@ -22,12 +22,6 @@ public class FirstSpellCastThisTurnWatcher extends Watcher { super(WatcherScope.GAME); } - public FirstSpellCastThisTurnWatcher(final FirstSpellCastThisTurnWatcher watcher) { - super(watcher); - playerFirstSpellCast.putAll(watcher.playerFirstSpellCast); - playerFirstCastSpell.putAll(watcher.playerFirstCastSpell); - } - @Override public void watch(GameEvent event, Game game) { switch (event.getType()) { @@ -44,11 +38,6 @@ public class FirstSpellCastThisTurnWatcher extends Watcher { } } - @Override - public FirstSpellCastThisTurnWatcher copy() { - return new FirstSpellCastThisTurnWatcher(this); - } - @Override public void reset() { super.reset(); diff --git a/Mage/src/main/java/mage/watchers/common/GravestormWatcher.java b/Mage/src/main/java/mage/watchers/common/GravestormWatcher.java index 3b9afad51f9..86f25b35f89 100644 --- a/Mage/src/main/java/mage/watchers/common/GravestormWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/GravestormWatcher.java @@ -22,11 +22,6 @@ public class GravestormWatcher extends Watcher { super(WatcherScope.GAME); } - public GravestormWatcher(final GravestormWatcher watcher) { - super(watcher); - this.gravestormCount = watcher.gravestormCount; - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == EventType.ZONE_CHANGE) { @@ -46,9 +41,4 @@ public class GravestormWatcher extends Watcher { public int getGravestormCount() { return this.gravestormCount; } - - @Override - public GravestormWatcher copy() { - return new GravestormWatcher(this); - } } diff --git a/Mage/src/main/java/mage/watchers/common/LandfallWatcher.java b/Mage/src/main/java/mage/watchers/common/LandfallWatcher.java index ce1827b8c38..36e1293c5ef 100644 --- a/Mage/src/main/java/mage/watchers/common/LandfallWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/LandfallWatcher.java @@ -22,17 +22,6 @@ public class LandfallWatcher extends Watcher { super(WatcherScope.GAME); } - private LandfallWatcher(final LandfallWatcher watcher) { - super(watcher); - playerPlayedLand.addAll(watcher.playerPlayedLand); - landEnteredBattlefield.addAll(watcher.landEnteredBattlefield); - } - - @Override - public LandfallWatcher copy() { - return new LandfallWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.ENTERS_THE_BATTLEFIELD) { diff --git a/Mage/src/main/java/mage/watchers/common/LifeLossOtherFromCombatWatcher.java b/Mage/src/main/java/mage/watchers/common/LifeLossOtherFromCombatWatcher.java index d35a740342f..71790be2359 100644 --- a/Mage/src/main/java/mage/watchers/common/LifeLossOtherFromCombatWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/LifeLossOtherFromCombatWatcher.java @@ -22,11 +22,6 @@ public class LifeLossOtherFromCombatWatcher extends Watcher { super(WatcherScope.GAME); } - public LifeLossOtherFromCombatWatcher(final LifeLossOtherFromCombatWatcher watcher) { - super(watcher); - this.players.addAll(watcher.players); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.LOST_LIFE && !event.getFlag()) { @@ -52,9 +47,4 @@ public class LifeLossOtherFromCombatWatcher extends Watcher { super.reset(); players.clear(); } - - @Override - public LifeLossOtherFromCombatWatcher copy() { - return new LifeLossOtherFromCombatWatcher(this); - } } diff --git a/Mage/src/main/java/mage/watchers/common/ManaSpentToCastWatcher.java b/Mage/src/main/java/mage/watchers/common/ManaSpentToCastWatcher.java index 127574ca081..797640be338 100644 --- a/Mage/src/main/java/mage/watchers/common/ManaSpentToCastWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/ManaSpentToCastWatcher.java @@ -23,11 +23,6 @@ public class ManaSpentToCastWatcher extends Watcher { super(WatcherScope.CARD); } - public ManaSpentToCastWatcher(final ManaSpentToCastWatcher watcher) { - super(watcher); - this.payment = watcher.payment; - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.SPELL_CAST && event.getZone() == Zone.HAND) { @@ -43,11 +38,6 @@ public class ManaSpentToCastWatcher extends Watcher { } } - @Override - public ManaSpentToCastWatcher copy() { - return new ManaSpentToCastWatcher(this); - } - public Mana getAndResetLastPayment() { Mana returnPayment = null; if (payment != null) { diff --git a/Mage/src/main/java/mage/watchers/common/MiracleWatcher.java b/Mage/src/main/java/mage/watchers/common/MiracleWatcher.java index 325b958d594..555afc47f44 100644 --- a/Mage/src/main/java/mage/watchers/common/MiracleWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/MiracleWatcher.java @@ -32,13 +32,6 @@ public class MiracleWatcher extends Watcher { super(WatcherScope.GAME); } - public MiracleWatcher(final MiracleWatcher watcher) { - super(watcher); - for (Entry entry : watcher.amountOfCardsDrawnThisTurn.entrySet()) { - amountOfCardsDrawnThisTurn.put(entry.getKey(), entry.getValue()); - } - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.UNTAP_STEP_PRE) { @@ -82,9 +75,4 @@ public class MiracleWatcher extends Watcher { public void reset() { amountOfCardsDrawnThisTurn.clear(); } - - @Override - public MiracleWatcher copy() { - return new MiracleWatcher(this); - } } diff --git a/Mage/src/main/java/mage/watchers/common/MorbidWatcher.java b/Mage/src/main/java/mage/watchers/common/MorbidWatcher.java index 349c6ce5332..0b7fb9ac7a5 100644 --- a/Mage/src/main/java/mage/watchers/common/MorbidWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/MorbidWatcher.java @@ -17,10 +17,6 @@ public class MorbidWatcher extends Watcher { super(WatcherScope.GAME); } - public MorbidWatcher(final MorbidWatcher watcher) { - super(watcher); - } - @Override public void watch(GameEvent event, Game game) { if (condition) { @@ -32,10 +28,4 @@ public class MorbidWatcher extends Watcher { condition = true; } } - -// @Override -// public MorbidWatcher copy() { -// return new MorbidWatcher(this); -// } - } diff --git a/Mage/src/main/java/mage/watchers/common/NumberOfTimesPermanentTargetedATurnWatcher.java b/Mage/src/main/java/mage/watchers/common/NumberOfTimesPermanentTargetedATurnWatcher.java index fa14361fd55..e71a844b28d 100644 --- a/Mage/src/main/java/mage/watchers/common/NumberOfTimesPermanentTargetedATurnWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/NumberOfTimesPermanentTargetedATurnWatcher.java @@ -23,11 +23,6 @@ public class NumberOfTimesPermanentTargetedATurnWatcher extends Watcher { super(WatcherScope.GAME); } - public NumberOfTimesPermanentTargetedATurnWatcher(final NumberOfTimesPermanentTargetedATurnWatcher watcher) { - super(watcher); - this.permanentsTargeted.putAll(watcher.permanentsTargeted); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.TARGETED) { @@ -55,9 +50,4 @@ public class NumberOfTimesPermanentTargetedATurnWatcher extends Watcher { super.reset(); permanentsTargeted.clear(); } - - @Override - public NumberOfTimesPermanentTargetedATurnWatcher copy() { - return new NumberOfTimesPermanentTargetedATurnWatcher(this); - } } diff --git a/Mage/src/main/java/mage/watchers/common/PermanentsEnteredBattlefieldWatcher.java b/Mage/src/main/java/mage/watchers/common/PermanentsEnteredBattlefieldWatcher.java index b4bc3df198e..9e74b0bae7b 100644 --- a/Mage/src/main/java/mage/watchers/common/PermanentsEnteredBattlefieldWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/PermanentsEnteredBattlefieldWatcher.java @@ -26,17 +26,6 @@ public class PermanentsEnteredBattlefieldWatcher extends Watcher { super(WatcherScope.GAME); } - public PermanentsEnteredBattlefieldWatcher(final PermanentsEnteredBattlefieldWatcher watcher) { - super(watcher); - this.enteringBattlefield.putAll(watcher.enteringBattlefield); - this.enteringBattlefieldLastTurn.putAll(watcher.enteringBattlefieldLastTurn); - } - - @Override - public PermanentsEnteredBattlefieldWatcher copy() { - return new PermanentsEnteredBattlefieldWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.ENTERS_THE_BATTLEFIELD) { diff --git a/Mage/src/main/java/mage/watchers/common/PermanentsEnteredBattlefieldYourLastTurnWatcher.java b/Mage/src/main/java/mage/watchers/common/PermanentsEnteredBattlefieldYourLastTurnWatcher.java index 2c52ef3ed81..5e71320ed1c 100644 --- a/Mage/src/main/java/mage/watchers/common/PermanentsEnteredBattlefieldYourLastTurnWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/PermanentsEnteredBattlefieldYourLastTurnWatcher.java @@ -27,17 +27,6 @@ public class PermanentsEnteredBattlefieldYourLastTurnWatcher extends Watcher { super(WatcherScope.GAME); } - public PermanentsEnteredBattlefieldYourLastTurnWatcher(final PermanentsEnteredBattlefieldYourLastTurnWatcher watcher) { - super(watcher); - this.enteringBattlefield.putAll(watcher.enteringBattlefield); - this.enteringBattlefieldLastTurn.putAll(watcher.enteringBattlefieldLastTurn); - } - - @Override - public PermanentsEnteredBattlefieldYourLastTurnWatcher copy() { - return new PermanentsEnteredBattlefieldYourLastTurnWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { lastActivePlayer = game.getActivePlayerId(); diff --git a/Mage/src/main/java/mage/watchers/common/PermanentsSacrificedWatcher.java b/Mage/src/main/java/mage/watchers/common/PermanentsSacrificedWatcher.java index 9db7329017a..c157be5f23c 100644 --- a/Mage/src/main/java/mage/watchers/common/PermanentsSacrificedWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/PermanentsSacrificedWatcher.java @@ -25,15 +25,6 @@ public class PermanentsSacrificedWatcher extends Watcher { super(WatcherScope.GAME); } - public PermanentsSacrificedWatcher(final PermanentsSacrificedWatcher watcher) { - super(watcher); - } - - @Override - public PermanentsSacrificedWatcher copy() { - return new PermanentsSacrificedWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.SACRIFICED_PERMANENT) { diff --git a/Mage/src/main/java/mage/watchers/common/PlanarRollWatcher.java b/Mage/src/main/java/mage/watchers/common/PlanarRollWatcher.java index 21ab1cc6a1f..b373d3c73c8 100644 --- a/Mage/src/main/java/mage/watchers/common/PlanarRollWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/PlanarRollWatcher.java @@ -24,13 +24,6 @@ public class PlanarRollWatcher extends Watcher { super(WatcherScope.GAME); } - public PlanarRollWatcher(final PlanarRollWatcher watcher) { - super(watcher); - for (Entry entry : watcher.numberTimesPlanarDieRolled.entrySet()) { - numberTimesPlanarDieRolled.put(entry.getKey(), entry.getValue()); - } - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.PLANAR_DIE_ROLLED) { diff --git a/Mage/src/main/java/mage/watchers/common/PlayLandWatcher.java b/Mage/src/main/java/mage/watchers/common/PlayLandWatcher.java index bc6769e219e..f8b1ba53173 100644 --- a/Mage/src/main/java/mage/watchers/common/PlayLandWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/PlayLandWatcher.java @@ -21,17 +21,6 @@ public class PlayLandWatcher extends Watcher { super(WatcherScope.GAME); } - public PlayLandWatcher(final PlayLandWatcher watcher) { - super(watcher); - playerPlayedLand.addAll(watcher.playerPlayedLand); - landPlayed.addAll(watcher.landPlayed); - } - - @Override - public PlayLandWatcher copy() { - return new PlayLandWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.LAND_PLAYED) { diff --git a/Mage/src/main/java/mage/watchers/common/PlayerAttackedStepWatcher.java b/Mage/src/main/java/mage/watchers/common/PlayerAttackedStepWatcher.java index 57e37025870..a710a145fa5 100644 --- a/Mage/src/main/java/mage/watchers/common/PlayerAttackedStepWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/PlayerAttackedStepWatcher.java @@ -21,18 +21,6 @@ public class PlayerAttackedStepWatcher extends Watcher { super(WatcherScope.GAME); } - public PlayerAttackedStepWatcher(final PlayerAttackedStepWatcher watcher) { - super(watcher); - for (Map.Entry entry : watcher.playerAttacked.entrySet()) { - this.playerAttacked.put(entry.getKey(), entry.getValue()); - } - } - - @Override - public PlayerAttackedStepWatcher copy() { - return new PlayerAttackedStepWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.DECLARE_ATTACKERS_STEP_POST) { diff --git a/Mage/src/main/java/mage/watchers/common/PlayerAttackedWatcher.java b/Mage/src/main/java/mage/watchers/common/PlayerAttackedWatcher.java index be67da9b4f2..c806e4d68cb 100644 --- a/Mage/src/main/java/mage/watchers/common/PlayerAttackedWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/PlayerAttackedWatcher.java @@ -24,19 +24,6 @@ public class PlayerAttackedWatcher extends Watcher { super(WatcherScope.GAME); } - public PlayerAttackedWatcher(final PlayerAttackedWatcher watcher) { - super(watcher); - for (Map.Entry entry : watcher.playerAttacked.entrySet()) { - this.playerAttacked.put(entry.getKey(), entry.getValue()); - - } - } - - @Override - public PlayerAttackedWatcher copy() { - return new PlayerAttackedWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.ATTACKER_DECLARED) { diff --git a/Mage/src/main/java/mage/watchers/common/PlayerCastCreatureWatcher.java b/Mage/src/main/java/mage/watchers/common/PlayerCastCreatureWatcher.java index 420a019923a..591731ca84c 100644 --- a/Mage/src/main/java/mage/watchers/common/PlayerCastCreatureWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/PlayerCastCreatureWatcher.java @@ -22,11 +22,6 @@ public class PlayerCastCreatureWatcher extends Watcher { super(WatcherScope.GAME); } - public PlayerCastCreatureWatcher(final PlayerCastCreatureWatcher watcher) { - super(watcher); - this.playerIds.addAll(watcher.playerIds); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.SPELL_CAST) { @@ -37,11 +32,6 @@ public class PlayerCastCreatureWatcher extends Watcher { } } - @Override - public PlayerCastCreatureWatcher copy() { - return new PlayerCastCreatureWatcher(this); - } - @Override public void reset() { super.reset(); diff --git a/Mage/src/main/java/mage/watchers/common/PlayerDamagedBySourceWatcher.java b/Mage/src/main/java/mage/watchers/common/PlayerDamagedBySourceWatcher.java index d3e26cfa744..c30c552ec41 100644 --- a/Mage/src/main/java/mage/watchers/common/PlayerDamagedBySourceWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/PlayerDamagedBySourceWatcher.java @@ -20,17 +20,10 @@ public class PlayerDamagedBySourceWatcher extends Watcher { private final Set damageSourceIds = new HashSet<>(); - public PlayerDamagedBySourceWatcher(UUID playerId) { + public PlayerDamagedBySourceWatcher() { super(WatcherScope.PLAYER); - setControllerId(playerId); } - public PlayerDamagedBySourceWatcher(final PlayerDamagedBySourceWatcher watcher) { - super(watcher); - this.damageSourceIds.addAll(watcher.damageSourceIds); - } - - @Override public void watch(GameEvent event, Game game) { if (event.getType() == EventType.DAMAGED_PLAYER) { diff --git a/Mage/src/main/java/mage/watchers/common/PlayerGainedLifeWatcher.java b/Mage/src/main/java/mage/watchers/common/PlayerGainedLifeWatcher.java index e067a5fb905..4c24cc1d226 100644 --- a/Mage/src/main/java/mage/watchers/common/PlayerGainedLifeWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/PlayerGainedLifeWatcher.java @@ -24,12 +24,6 @@ public class PlayerGainedLifeWatcher extends Watcher { super(WatcherScope.GAME); } - private PlayerGainedLifeWatcher(final PlayerGainedLifeWatcher watcher) { - super(watcher); - for (Entry entry : watcher.amountOfLifeGainedThisTurn.entrySet()) { - amountOfLifeGainedThisTurn.put(entry.getKey(), entry.getValue()); - } - } @Override public void watch(GameEvent event, Game game) { @@ -54,9 +48,4 @@ public class PlayerGainedLifeWatcher extends Watcher { super.reset(); amountOfLifeGainedThisTurn.clear(); } - - @Override - public PlayerGainedLifeWatcher copy() { - return new PlayerGainedLifeWatcher(this); - } } diff --git a/Mage/src/main/java/mage/watchers/common/PlayerLostLifeNonCombatWatcher.java b/Mage/src/main/java/mage/watchers/common/PlayerLostLifeNonCombatWatcher.java index d6a28c4d396..785cb528af3 100644 --- a/Mage/src/main/java/mage/watchers/common/PlayerLostLifeNonCombatWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/PlayerLostLifeNonCombatWatcher.java @@ -28,13 +28,6 @@ public class PlayerLostLifeNonCombatWatcher extends Watcher { super(WatcherScope.GAME); } - public PlayerLostLifeNonCombatWatcher(final PlayerLostLifeNonCombatWatcher watcher) { - super(watcher); - for (Entry entry : watcher.amountOfLifeLostThisTurn.entrySet()) { - amountOfLifeLostThisTurn.put(entry.getKey(), entry.getValue()); - } - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.LOST_LIFE && !event.getFlag()) { @@ -76,9 +69,4 @@ public class PlayerLostLifeNonCombatWatcher extends Watcher { amountOfLifeLostLastTurn.putAll(amountOfLifeLostThisTurn); amountOfLifeLostThisTurn.clear(); } - -// @Override -// public PlayerLostLifeNonCombatWatcher copy() { -// return new PlayerLostLifeNonCombatWatcher(this); -// } } diff --git a/Mage/src/main/java/mage/watchers/common/PlayerLostLifeWatcher.java b/Mage/src/main/java/mage/watchers/common/PlayerLostLifeWatcher.java index b90a4e44578..40a233421be 100644 --- a/Mage/src/main/java/mage/watchers/common/PlayerLostLifeWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/PlayerLostLifeWatcher.java @@ -26,13 +26,6 @@ public class PlayerLostLifeWatcher extends Watcher { super(WatcherScope.GAME); } - public PlayerLostLifeWatcher(final PlayerLostLifeWatcher watcher) { - super(watcher); - for (Entry entry : watcher.amountOfLifeLostThisTurn.entrySet()) { - amountOfLifeLostThisTurn.put(entry.getKey(), entry.getValue()); - } - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.LOST_LIFE) { @@ -74,9 +67,4 @@ public class PlayerLostLifeWatcher extends Watcher { amountOfLifeLostLastTurn.putAll(amountOfLifeLostThisTurn); amountOfLifeLostThisTurn.clear(); } - -// @Override -// public PlayerLostLifeWatcher copy() { -// return new PlayerLostLifeWatcher(this); -// } } diff --git a/Mage/src/main/java/mage/watchers/common/PlayersAttackedLastTurnWatcher.java b/Mage/src/main/java/mage/watchers/common/PlayersAttackedLastTurnWatcher.java index 2416759fb63..2b5f73c08a4 100644 --- a/Mage/src/main/java/mage/watchers/common/PlayersAttackedLastTurnWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/PlayersAttackedLastTurnWatcher.java @@ -23,18 +23,6 @@ public class PlayersAttackedLastTurnWatcher extends Watcher { super(WatcherScope.GAME); } - public PlayersAttackedLastTurnWatcher(final PlayersAttackedLastTurnWatcher watcher) { - super(watcher); - for (Map.Entry entry : watcher.playersAttackedInLastTurn.entrySet()) { - this.playersAttackedInLastTurn.put(entry.getKey(), entry.getValue()); - } - } - - @Override - public PlayersAttackedLastTurnWatcher copy() { - return new PlayersAttackedLastTurnWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.BEGINNING_PHASE_PRE) { diff --git a/Mage/src/main/java/mage/watchers/common/PlayersAttackedThisTurnWatcher.java b/Mage/src/main/java/mage/watchers/common/PlayersAttackedThisTurnWatcher.java index b10eb74ab6b..fe39ea98e88 100644 --- a/Mage/src/main/java/mage/watchers/common/PlayersAttackedThisTurnWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/PlayersAttackedThisTurnWatcher.java @@ -23,19 +23,6 @@ public class PlayersAttackedThisTurnWatcher extends Watcher { super(WatcherScope.GAME); } - public PlayersAttackedThisTurnWatcher(final PlayersAttackedThisTurnWatcher watcher) { - super(watcher); - - for (Map.Entry entry : watcher.playersAttackedThisTurn.entrySet()) { - this.playersAttackedThisTurn.putIfAbsent(entry.getKey(), entry.getValue()); - } - - for (Map.Entry entry : watcher.opponentsAttackedThisTurn.entrySet()) { - this.opponentsAttackedThisTurn.putIfAbsent(entry.getKey(), entry.getValue()); - } - } - - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.BEGINNING_PHASE_PRE) { diff --git a/Mage/src/main/java/mage/watchers/common/ProwlWatcher.java b/Mage/src/main/java/mage/watchers/common/ProwlWatcher.java index 33573832651..f7c13409049 100644 --- a/Mage/src/main/java/mage/watchers/common/ProwlWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/ProwlWatcher.java @@ -29,18 +29,6 @@ public class ProwlWatcher extends Watcher { super(WatcherScope.GAME); } - private ProwlWatcher(final ProwlWatcher watcher) { - super(watcher); - for (Entry> entry : watcher.damagingSubtypes.entrySet()) { - damagingSubtypes.put(entry.getKey(), entry.getValue()); - } - } - - @Override - public ProwlWatcher copy() { - return new ProwlWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == EventType.DAMAGED_PLAYER) { diff --git a/Mage/src/main/java/mage/watchers/common/RevoltWatcher.java b/Mage/src/main/java/mage/watchers/common/RevoltWatcher.java index 65084d84cd8..8007ef86fee 100644 --- a/Mage/src/main/java/mage/watchers/common/RevoltWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/RevoltWatcher.java @@ -25,11 +25,6 @@ public class RevoltWatcher extends Watcher { super(WatcherScope.GAME); } - public RevoltWatcher(final RevoltWatcher watcher) { - super(watcher); - this.revoltActivePlayerIds.addAll(watcher.revoltActivePlayerIds); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == EventType.ZONE_CHANGE && event instanceof ZoneChangeEvent) { @@ -51,9 +46,4 @@ public class RevoltWatcher extends Watcher { public void reset() { revoltActivePlayerIds.clear(); } - - @Override - public RevoltWatcher copy() { - return new RevoltWatcher(this); - } } diff --git a/Mage/src/main/java/mage/watchers/common/SourceDidDamageWatcher.java b/Mage/src/main/java/mage/watchers/common/SourceDidDamageWatcher.java index e790aee96b8..f338ea1cb02 100644 --- a/Mage/src/main/java/mage/watchers/common/SourceDidDamageWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/SourceDidDamageWatcher.java @@ -22,16 +22,6 @@ public class SourceDidDamageWatcher extends Watcher { super(WatcherScope.GAME); } - public SourceDidDamageWatcher(final SourceDidDamageWatcher watcher) { - super(watcher); - this.damageSources.addAll(watcher.damageSources); - } - - @Override - public SourceDidDamageWatcher copy() { - return new SourceDidDamageWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == EventType.DAMAGED_CREATURE diff --git a/Mage/src/main/java/mage/watchers/common/SpellsCastWatcher.java b/Mage/src/main/java/mage/watchers/common/SpellsCastWatcher.java index 64fe3db2d6b..883ab6f9ef6 100644 --- a/Mage/src/main/java/mage/watchers/common/SpellsCastWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/SpellsCastWatcher.java @@ -30,16 +30,6 @@ public class SpellsCastWatcher extends Watcher { super(WatcherScope.GAME); } - public SpellsCastWatcher(final SpellsCastWatcher watcher) { - super(watcher); - this.spellsCast.putAll(watcher.spellsCast); - } - - @Override - public SpellsCastWatcher copy() { - return new SpellsCastWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (EventType.SPELL_CAST == event.getType()) { diff --git a/Mage/src/main/java/mage/watchers/common/WasBlockedThisTurnWatcher.java b/Mage/src/main/java/mage/watchers/common/WasBlockedThisTurnWatcher.java index c142833210f..89ad6edb0dd 100644 --- a/Mage/src/main/java/mage/watchers/common/WasBlockedThisTurnWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/WasBlockedThisTurnWatcher.java @@ -23,16 +23,6 @@ public class WasBlockedThisTurnWatcher extends Watcher { wasBlockedThisTurnCreatures = new HashSet<>(); } - private WasBlockedThisTurnWatcher(final WasBlockedThisTurnWatcher watcher) { - super(watcher); - wasBlockedThisTurnCreatures = new HashSet<>(watcher.wasBlockedThisTurnCreatures); - } - - @Override - public Watcher copy() { - return new WasBlockedThisTurnWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.BLOCKER_DECLARED) { diff --git a/Mage/src/main/java/mage/watchers/common/ZuberasDiedWatcher.java b/Mage/src/main/java/mage/watchers/common/ZuberasDiedWatcher.java index 61c555cffe0..840b428da39 100644 --- a/Mage/src/main/java/mage/watchers/common/ZuberasDiedWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/ZuberasDiedWatcher.java @@ -24,16 +24,6 @@ public class ZuberasDiedWatcher extends Watcher { super(WatcherScope.GAME); } - public ZuberasDiedWatcher(final ZuberasDiedWatcher watcher) { - super(watcher); - this.zuberasDiedThisTurn = watcher.zuberasDiedThisTurn; - } - - @Override - public ZuberasDiedWatcher copy() { - return new ZuberasDiedWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.ZONE_CHANGE && ((ZoneChangeEvent) event).isDiesEvent()) { diff --git a/Mage/src/test/java/mage/WatcherTest.java b/Mage/src/test/java/mage/WatcherTest.java new file mode 100644 index 00000000000..8b8c44b160e --- /dev/null +++ b/Mage/src/test/java/mage/WatcherTest.java @@ -0,0 +1,4 @@ +package mage; + +public class WatcherTest { +} From 853bdac0e1892a8b99c4f5e5bd2aea7558917566 Mon Sep 17 00:00:00 2001 From: Ingmar Goudt Date: Tue, 30 Apr 2019 16:41:06 +0200 Subject: [PATCH 4/8] simplify some of the field setters --- Mage/src/main/java/mage/watchers/Watcher.java | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/Mage/src/main/java/mage/watchers/Watcher.java b/Mage/src/main/java/mage/watchers/Watcher.java index f954166119e..05efdc76f39 100644 --- a/Mage/src/main/java/mage/watchers/Watcher.java +++ b/Mage/src/main/java/mage/watchers/Watcher.java @@ -103,19 +103,7 @@ public abstract class Watcher implements Serializable { allFields.addAll(Arrays.asList(getClass().getSuperclass().getDeclaredFields())); for (Field field : allFields) { field.setAccessible(true); - if (field.getType().isPrimitive()) { - field.set(watcher, field.get(this)); - } - else if(field.getType() == Step.class){ - field.set(watcher, field.get(this)); - } - else if (field.getType() == Mana.class) { - field.set(watcher, field.get(this)); - } else if (field.getType() == UUID.class) { - field.set(watcher, field.get(this)); - } else if (field.getType().isEnum()) { - field.set(watcher, field.get(this)); - } else if (field.getType() == Set.class) { + if (field.getType() == Set.class) { ((Set) field.get(watcher)).clear(); ((Set) field.get(watcher)).addAll((Set) field.get(this)); } else if (field.getType() == Map.class) { @@ -126,7 +114,7 @@ public abstract class Watcher implements Serializable { ((List) field.get(watcher)).addAll((List) field.get(this)); } else { if (field.getType() != Logger.class) { - logger.error(field.getType() + " can not be copied"); + field.set(watcher, field.get(this)); } } } From e80ba6383f8f8f3997fe75dcc8ac890aad88a939 Mon Sep 17 00:00:00 2001 From: Oleg Agafonov Date: Sat, 18 May 2019 10:58:30 +0400 Subject: [PATCH 5/8] Added verify tests for watchers copy; --- Mage.Sets/src/mage/cards/w/WookieeMystic.java | 40 ++++++++----------- .../java/mage/verify/VerifyCardDataTest.java | 37 ++++++++++++++++- Mage/src/main/java/mage/watchers/Watcher.java | 14 +++---- 3 files changed, 59 insertions(+), 32 deletions(-) diff --git a/Mage.Sets/src/mage/cards/w/WookieeMystic.java b/Mage.Sets/src/mage/cards/w/WookieeMystic.java index 1d8f1d879d9..655ffc900a7 100644 --- a/Mage.Sets/src/mage/cards/w/WookieeMystic.java +++ b/Mage.Sets/src/mage/cards/w/WookieeMystic.java @@ -1,16 +1,12 @@ - package mage.cards.w; -import java.util.ArrayList; -import java.util.List; -import java.util.UUID; import mage.MageInt; import mage.MageObject; import mage.Mana; import mage.abilities.Ability; import mage.abilities.costs.common.TapSourceCost; -import mage.abilities.effects.mana.BasicManaEffect; import mage.abilities.effects.common.ManaEffect; +import mage.abilities.effects.mana.BasicManaEffect; import mage.abilities.mana.SimpleManaAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -26,14 +22,17 @@ import mage.game.permanent.Permanent; import mage.game.stack.Spell; import mage.watchers.Watcher; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + /** - * * @author Styxo */ public final class WookieeMystic extends CardImpl { public WookieeMystic(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}{G}{W}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{R}{G}{W}"); this.subtype.add(SubType.WOOKIEE); this.subtype.add(SubType.SHAMAN); this.power = new MageInt(2); @@ -45,21 +44,21 @@ public final class WookieeMystic extends CardImpl { ManaEffect effect = new BasicManaEffect(mana); effect.setText("Add {R}. If that mana is spent on a creature spell, it enters the battlefield with a +1/+1 counter on it"); Ability ability = new SimpleManaAbility(Zone.BATTLEFIELD, effect, new TapSourceCost()); - this.addAbility(ability, new WookieeMysticWatcher(ability)); + this.addAbility(ability, new WookieeMysticWatcher().withParams(ability)); mana = Mana.GreenMana(1); mana.setFlag(true); effect = new BasicManaEffect(mana); effect.setText("Add {G}. If that mana is spent on a creature spell, it enters the battlefield with a +1/+1 counter on it"); ability = new SimpleManaAbility(Zone.BATTLEFIELD, effect, new TapSourceCost()); - this.addAbility(ability, new WookieeMysticWatcher(ability)); + this.addAbility(ability, new WookieeMysticWatcher().withParams(ability)); mana = Mana.WhiteMana(1); mana.setFlag(true); effect = new BasicManaEffect(mana); effect.setText("Add {W}. If that mana is spent on a creature spell, it enters the battlefield with a +1/+1 counter on it"); ability = new SimpleManaAbility(Zone.BATTLEFIELD, effect, new TapSourceCost()); - this.addAbility(ability, new WookieeMysticWatcher(ability)); + this.addAbility(ability, new WookieeMysticWatcher().withParams(ability)); } public WookieeMystic(final WookieeMystic card) { @@ -74,23 +73,16 @@ public final class WookieeMystic extends CardImpl { class WookieeMysticWatcher extends Watcher { - private final Ability source; - private final List creatures = new ArrayList<>(); + private Ability source; + private List creatures = new ArrayList<>(); - WookieeMysticWatcher(Ability source) { + WookieeMysticWatcher() { super(WatcherScope.CARD); + } + + Watcher withParams(Ability source) { this.source = source; - } - - WookieeMysticWatcher(final WookieeMysticWatcher watcher) { - super(watcher); - this.creatures.addAll(watcher.creatures); - this.source = watcher.source; - } - - @Override - public WookieeMysticWatcher copy() { - return new WookieeMysticWatcher(this); + return this; } @Override diff --git a/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java b/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java index 4ea8fb15cb9..b3fcd37e40d 100644 --- a/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java +++ b/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java @@ -414,7 +414,7 @@ public class VerifyCardDataTest { } @Test - @Ignore // TODO: enable it on copy() methods removing + //@Ignore // TODO: enable it on copy() methods removing public void checkWatcherCopyMethods() { Collection errorsList = new ArrayList<>(); @@ -424,6 +424,13 @@ public class VerifyCardDataTest { Set> watcherClassesList = reflections.getSubTypesOf(Watcher.class); for (Class watcherClass : watcherClassesList) { + + // only watcher class can be extended (e.g. final) + if (!watcherClass.getSuperclass().equals(Watcher.class)) { + errorsList.add("error, only Watcher class can be extended: " + watcherClass.getName()); + } + + // no copy methods try { Method m = watcherClass.getMethod("copy"); if (!m.getGenericReturnType().getTypeName().equals("T")) { @@ -432,6 +439,34 @@ public class VerifyCardDataTest { } catch (NoSuchMethodException e) { errorsList.add("error, can't find copy() method in watcher class: " + watcherClass.getName()); } + + // no constructor for copy + try { + Constructor constructor = watcherClass.getDeclaredConstructor(watcherClass); + errorsList.add("error, copy constructor is not allowed in watcher class: " + watcherClass.getName()); + } catch (NoSuchMethodException e) { + // all fine, no needs in copy constructors + } + + // errors on create + try { + Constructor constructor = watcherClass.getDeclaredConstructor(); + constructor.setAccessible(true); + Watcher w1 = constructor.newInstance(); + + // errors on copy + try { + Watcher w2 = w1.copy(); + if (w2 == null) { + errorsList.add("error, can't copy watcher with unknown error, look at error logs above: " + watcherClass.getName()); + } + } catch (Exception e) { + errorsList.add("error, can't copy watcher: " + watcherClass.getName() + " (" + e.getMessage() + ")"); + } + } catch (Exception e) { + errorsList.add("error, can't create watcher: " + watcherClass.getName() + " (" + e.getMessage() + ")"); + } + } printMessages(warningsList); diff --git a/Mage/src/main/java/mage/watchers/Watcher.java b/Mage/src/main/java/mage/watchers/Watcher.java index 05efdc76f39..1beb4e73930 100644 --- a/Mage/src/main/java/mage/watchers/Watcher.java +++ b/Mage/src/main/java/mage/watchers/Watcher.java @@ -1,10 +1,7 @@ - package mage.watchers; -import mage.Mana; import mage.constants.WatcherScope; import mage.game.Game; -import mage.game.turn.Step; import mage.game.events.GameEvent; import org.apache.log4j.Logger; @@ -26,8 +23,7 @@ public abstract class Watcher implements Serializable { protected UUID controllerId; protected UUID sourceId; protected boolean condition; - protected final WatcherScope scope; - + protected WatcherScope scope; public Watcher(WatcherScope scope) { this.scope = scope; @@ -81,11 +77,15 @@ public abstract class Watcher implements Serializable { return getClass().getSimpleName(); } + public void setScope(WatcherScope scope) { + this.scope = scope; + } + public abstract void watch(GameEvent event, Game game); public T copy() { try { - List constructors = Arrays.asList(this.getClass().getConstructors()); + List constructors = Arrays.asList(this.getClass().getDeclaredConstructors()); // needs private constructor if (constructors.size() > 1) { logger.error(getClass().getSimpleName() + " has multiple constructors"); return null; @@ -103,7 +103,7 @@ public abstract class Watcher implements Serializable { allFields.addAll(Arrays.asList(getClass().getSuperclass().getDeclaredFields())); for (Field field : allFields) { field.setAccessible(true); - if (field.getType() == Set.class) { + if (field.getType() == Set.class) { ((Set) field.get(watcher)).clear(); ((Set) field.get(watcher)).addAll((Set) field.get(this)); } else if (field.getType() == Map.class) { From 702a1f2498389e492b783236f3ed8c37793b64d6 Mon Sep 17 00:00:00 2001 From: Ingmar Goudt Date: Sun, 29 Dec 2019 19:18:20 +0100 Subject: [PATCH 6/8] remove all copy constructors and copy methods for all watchers --- .../classes/mage/game/OathbreakerDuel.class | Bin 0 -> 1540 bytes .../mage/game/OathbreakerDuelMatch.class | Bin 0 -> 1573 bytes .../mage/game/OathbreakerDuelType.class | Bin 0 -> 995 bytes .../mage/game/OathbreakerFreeForAll$1.class | Bin 0 -> 803 bytes .../mage/game/OathbreakerFreeForAll.class | Bin 0 -> 7859 bytes .../game/OathbreakerFreeForAllMatch.class | Bin 0 -> 1603 bytes .../mage/game/OathbreakerFreeForAllType.class | Bin 0 -> 1023 bytes .../mage/cards/a/AbandonedSarcophagus.java | 12 ---- .../src/mage/cards/a/AdmiralBeckettBrass.java | 16 +----- Mage.Sets/src/mage/cards/a/Aggravate.java | 2 +- .../src/mage/cards/a/AngerOfTheGods.java | 2 +- .../src/mage/cards/a/AnnihilatingFire.java | 2 +- .../mage/cards/a/ApproachOfTheSecondSun.java | 9 --- Mage.Sets/src/mage/cards/a/ArchiveTrap.java | 10 ---- .../src/mage/cards/a/ArclightPhoenix.java | 10 ---- .../src/mage/cards/a/AsmiraHolyAvenger.java | 10 ---- Mage.Sets/src/mage/cards/a/AureliasFury.java | 11 ---- Mage.Sets/src/mage/cards/b/Berserk.java | 8 --- Mage.Sets/src/mage/cards/b/BlazingEffigy.java | 10 ---- .../mage/cards/b/BoseijuWhoSheltersAll.java | 17 +----- .../BurningCinderFuryOfCrimsonChaosFire.java | 9 --- .../src/mage/cards/c/CallerOfTheClaw.java | 10 ---- Mage.Sets/src/mage/cards/c/Carbonize.java | 2 +- .../src/mage/cards/c/CathedralMembrane.java | 10 ---- Mage.Sets/src/mage/cards/c/CavernOfSouls.java | 17 +----- .../src/mage/cards/c/CerebralVortex.java | 12 ---- Mage.Sets/src/mage/cards/c/CobraTrap.java | 9 --- Mage.Sets/src/mage/cards/c/ConduitOfRuin.java | 11 ---- Mage.Sets/src/mage/cards/c/CorrosiveOoze.java | 18 ------ .../src/mage/cards/c/CustodiSoulcaller.java | 10 ---- Mage.Sets/src/mage/cards/c/CyclopeanTomb.java | 14 ----- .../src/mage/cards/d/DarkbladeAgent.java | 10 ---- Mage.Sets/src/mage/cards/d/Demonfire.java | 2 +- Mage.Sets/src/mage/cards/d/Desolation.java | 13 +---- .../src/mage/cards/d/DiseasedVermin.java | 11 ---- Mage.Sets/src/mage/cards/d/DreamSalvage.java | 12 ---- Mage.Sets/src/mage/cards/d/DungeonGeists.java | 9 --- .../src/mage/cards/e/ErdwalIlluminator.java | 9 --- .../src/mage/cards/e/EtherswornCanonist.java | 11 ---- .../mage/cards/f/FairgroundsTrumpeter.java | 9 --- Mage.Sets/src/mage/cards/f/FaithsReward.java | 10 ---- Mage.Sets/src/mage/cards/f/FblthpTheLost.java | 10 ---- Mage.Sets/src/mage/cards/f/FellShepherd.java | 10 ---- Mage.Sets/src/mage/cards/f/Flamebreak.java | 2 +- Mage.Sets/src/mage/cards/f/FleshAllergy.java | 9 --- .../src/mage/cards/f/FreeRangeChicken.java | 12 ---- Mage.Sets/src/mage/cards/f/Frostwielder.java | 2 +- .../src/mage/cards/g/GarnaTheBloodflame.java | 10 ---- .../src/mage/cards/g/GeneratorServant.java | 10 ---- .../src/mage/cards/g/GideonsTriumph.java | 11 ---- Mage.Sets/src/mage/cards/g/GisaAndGeralf.java | 10 ---- Mage.Sets/src/mage/cards/g/Gomazoa.java | 10 ---- .../src/mage/cards/g/GontisMachinations.java | 9 --- .../src/mage/cards/g/GrandWarlordRadha.java | 11 ---- Mage.Sets/src/mage/cards/g/GrimReminder.java | 12 ---- .../mage/cards/g/GrothamaAllDevouring.java | 16 ------ .../src/mage/cards/g/GuildmagesForum.java | 10 ---- .../src/mage/cards/h/HallOfTheBanditLord.java | 11 ---- .../mage/cards/h/HomicidalBruteWatcher.java | 9 --- .../src/mage/cards/h/HopeOfGhirapur.java | 14 ----- .../src/mage/cards/h/HotheadedGiant.java | 10 ---- Mage.Sets/src/mage/cards/i/IcefallRegent.java | 9 --- .../src/mage/cards/i/IchneumonDruid.java | 12 ---- .../src/mage/cards/i/ImpactResonance.java | 10 ---- .../src/mage/cards/i/IncendiaryFlow.java | 2 +- Mage.Sets/src/mage/cards/i/Incinerate.java | 2 +- Mage.Sets/src/mage/cards/i/InfernoTrap.java | 9 --- .../src/mage/cards/i/InsatiableRakghoul.java | 9 --- Mage.Sets/src/mage/cards/i/Insist.java | 10 ---- Mage.Sets/src/mage/cards/j/JandorsRing.java | 12 +--- .../src/mage/cards/j/JayaBallardTaskMage.java | 2 +- .../mage/cards/j/JelevaNephaliasScourge.java | 9 --- .../mage/cards/k/KaradorGhostChieftain.java | 10 ---- .../src/mage/cards/k/KessDissidentMage.java | 11 ---- .../mage/cards/k/KnightsOfTheBlackRose.java | 7 --- .../src/mage/cards/k/KrovikanVampire.java | 20 ------- .../mage/cards/k/KumanoMasterYamabushi.java | 2 +- .../src/mage/cards/k/KumanosBlessing.java | 10 ---- Mage.Sets/src/mage/cards/k/KumanosPupils.java | 2 +- .../mage/cards/k/KydeleChosenOfKruphix.java | 10 ---- Mage.Sets/src/mage/cards/m/ManaMaze.java | 10 ---- .../src/mage/cards/m/MasterWarcraft.java | 10 ---- .../src/mage/cards/m/MindstormCrown.java | 9 --- Mage.Sets/src/mage/cards/m/MoltenPsyche.java | 10 ---- .../mage/cards/m/MuldrothaTheGravetide.java | 10 ---- .../src/mage/cards/m/MultanisPresence.java | 10 ---- .../src/mage/cards/n/NoRestForTheWicked.java | 11 ---- Mage.Sets/src/mage/cards/o/OathOfChandra.java | 10 ---- Mage.Sets/src/mage/cards/o/OathOfLiliana.java | 9 --- Mage.Sets/src/mage/cards/o/OpalPalace.java | 11 ---- Mage.Sets/src/mage/cards/o/Overmaster.java | 9 --- .../mage/cards/p/PalladiaMorsTheRuiner.java | 10 ---- .../src/mage/cards/p/PatriciansScorn.java | 9 --- Mage.Sets/src/mage/cards/p/PillarOfFlame.java | 2 +- Mage.Sets/src/mage/cards/p/PowerSurge.java | 10 ---- .../src/mage/cards/p/PredatoryAdvantage.java | 9 --- .../src/mage/cards/p/PrematureBurial.java | 13 ----- Mage.Sets/src/mage/cards/q/Quicken.java | 9 --- .../src/mage/cards/r/RageOfPurphoros.java | 2 +- .../src/mage/cards/r/RasputinDreamweaver.java | 12 +--- Mage.Sets/src/mage/cards/r/RedSunsZenith.java | 2 +- .../src/mage/cards/r/ReversePolarity.java | 11 ---- .../src/mage/cards/r/RocketLauncher.java | 10 ---- Mage.Sets/src/mage/cards/r/Runesword.java | 2 +- .../src/mage/cards/s/SavageSummoning.java | 16 ------ Mage.Sets/src/mage/cards/s/ScoutsWarning.java | 9 --- Mage.Sets/src/mage/cards/s/SeaTroll.java | 10 ---- .../src/mage/cards/s/SeasonOfTheWitch.java | 10 ---- Mage.Sets/src/mage/cards/s/SecondSunrise.java | 10 ---- Mage.Sets/src/mage/cards/s/SentinelTower.java | 10 ---- .../src/mage/cards/s/SerpentineSpike.java | 2 +- .../src/mage/cards/s/ShapeOfTheWiitigo.java | 13 ----- .../src/mage/cards/s/ShipbreakerKraken.java | 9 --- .../src/mage/cards/s/SiftThroughSands.java | 13 +---- Mage.Sets/src/mage/cards/s/Skeletonize.java | 2 +- Mage.Sets/src/mage/cards/s/SoulReap.java | 10 ---- .../src/mage/cards/s/SpinerockKnoll.java | 12 ---- Mage.Sets/src/mage/cards/s/SpinyStarfish.java | 34 +++--------- .../mage/cards/s/SpiritOfTheLabyrinth.java | 11 ---- Mage.Sets/src/mage/cards/s/SpoilsOfBlood.java | 9 --- Mage.Sets/src/mage/cards/s/SteelHellkite.java | 10 ---- .../src/mage/cards/s/StorrevDevkarinLich.java | 9 --- Mage.Sets/src/mage/cards/s/SummoningTrap.java | 10 ---- Mage.Sets/src/mage/cards/s/SylvanLibrary.java | 10 ---- .../src/mage/cards/t/TalarasBattalion.java | 10 ---- .../src/mage/cards/t/TapestryOfTheAges.java | 10 ---- .../src/mage/cards/t/TerritorialHellkite.java | 17 +----- Mage.Sets/src/mage/cards/t/TheChainVeil.java | 10 ---- Mage.Sets/src/mage/cards/t/TheFallen.java | 10 ---- Mage.Sets/src/mage/cards/t/ThirstingAxe.java | 10 ---- .../src/mage/cards/t/ThousandYearStorm.java | 13 ----- .../src/mage/cards/t/TidebinderMage.java | 9 --- Mage.Sets/src/mage/cards/t/TimeOfIce.java | 9 --- Mage.Sets/src/mage/cards/t/TimeToReflect.java | 10 ---- .../src/mage/cards/t/TouchOfTheVoid.java | 2 +- Mage.Sets/src/mage/cards/t/TritonTactics.java | 9 --- Mage.Sets/src/mage/cards/t/TunnelIgnus.java | 12 ---- .../src/mage/cards/t/TuvasaTheSunlit.java | 10 ---- .../src/mage/cards/t/TymnaTheWeaver.java | 14 ----- Mage.Sets/src/mage/cards/u/UbaMask.java | 10 ---- Mage.Sets/src/mage/cards/u/UphillBattle.java | 11 ---- Mage.Sets/src/mage/cards/u/UrzasMiter.java | 10 ---- .../src/mage/cards/v/VeneratedLoxodon.java | 13 ----- Mage.Sets/src/mage/cards/v/Vengevine.java | 10 ---- Mage.Sets/src/mage/cards/v/VileRedeemer.java | 10 ---- .../src/mage/cards/v/VizierOfManyFaces.java | 10 ---- .../src/mage/cards/v/VodalianWarMachine.java | 15 +---- .../src/mage/cards/w/WhisperingSnitch.java | 9 --- Mage.Sets/src/mage/cards/w/Wiitigo.java | 13 ----- Mage.Sets/src/mage/cards/w/WookieeMystic.java | 2 +- .../src/mage/cards/y/YamabushisFlame.java | 2 +- .../src/mage/cards/y/YamabushisStorm.java | 2 +- .../java/mage/verify/VerifyCardDataTest.java | 19 ++++++- .../mage/abilities/keyword/ExertAbility.java | 10 ---- .../mage/abilities/keyword/MeleeAbility.java | 12 +--- Mage/src/main/java/mage/watchers/Watcher.java | 52 +++++++++++------- ...CardsCycledOrDiscardedThisTurnWatcher.java | 16 ------ .../watchers/common/CommanderInfoWatcher.java | 11 ---- .../watchers/common/DamagedByWatcher.java | 15 ----- .../watchers/common/FirstTimeStepWatcher.java | 10 ---- 160 files changed, 94 insertions(+), 1445 deletions(-) create mode 100644 Mage.Server.Plugins/Mage.Game.OathbreakerDuel/target/classes/mage/game/OathbreakerDuel.class create mode 100644 Mage.Server.Plugins/Mage.Game.OathbreakerDuel/target/classes/mage/game/OathbreakerDuelMatch.class create mode 100644 Mage.Server.Plugins/Mage.Game.OathbreakerDuel/target/classes/mage/game/OathbreakerDuelType.class create mode 100644 Mage.Server.Plugins/Mage.Game.OathbreakerFreeForAll/target/classes/mage/game/OathbreakerFreeForAll$1.class create mode 100644 Mage.Server.Plugins/Mage.Game.OathbreakerFreeForAll/target/classes/mage/game/OathbreakerFreeForAll.class create mode 100644 Mage.Server.Plugins/Mage.Game.OathbreakerFreeForAll/target/classes/mage/game/OathbreakerFreeForAllMatch.class create mode 100644 Mage.Server.Plugins/Mage.Game.OathbreakerFreeForAll/target/classes/mage/game/OathbreakerFreeForAllType.class diff --git a/Mage.Server.Plugins/Mage.Game.OathbreakerDuel/target/classes/mage/game/OathbreakerDuel.class b/Mage.Server.Plugins/Mage.Game.OathbreakerDuel/target/classes/mage/game/OathbreakerDuel.class new file mode 100644 index 0000000000000000000000000000000000000000..14929cf0617aef8a9108bc15053c51bb4f46ac8c GIT binary patch literal 1540 zcmbVMYflqV5IvV}--YrP2mPQ; zB=HCMql`1#g)X&5W14K|&dxb==FIN?`1$QSfOWh`Ac0&Q5#%{qiefnd4J%O;5|n(* z$tN7GMzJOkd1+XNyCHC%Dc5906?EHbxYBYPh25s<8g)}%DreJmrGBwjcMaPrcGta? zRz>Zdm8>(fsVrUj1r=FSg<8`zjf%9G%nOR8?2&->%05*B>9S#|*Uj3Aat`E)NtxlY ztxNMrItHKpq~=zQhQM^YvB$e7-Rg;>+X<^^VZmUg5IOn6(oabf?$s5iD8`GI!& zPGIp5JMA!dR?li%o$}jmPz_f_a`_fQ zoo)#)J4XEDUZ?SP)lH`erl}{5kGq)hxmKx$d&jPz9k&qvL~&bt#LG{4Ogu0T-_}eo z1ZI8w68-bNzVOE`SUM7vur1_uIf2#7^IfEe7w93J|l1^Q=I;oMimyA|~Z6ouO~9{ACJf(e%K HT+99f8k9H! literal 0 HcmV?d00001 diff --git a/Mage.Server.Plugins/Mage.Game.OathbreakerDuel/target/classes/mage/game/OathbreakerDuelMatch.class b/Mage.Server.Plugins/Mage.Game.OathbreakerDuel/target/classes/mage/game/OathbreakerDuelMatch.class new file mode 100644 index 0000000000000000000000000000000000000000..57f30413e5d558c516f5d50efed1c21e67b26ab6 GIT binary patch literal 1573 zcmaJ>=~5Fx5dJ0!YzWJJiQM230wIcs3J4-+AR!8fCI5zH2n(AHwV7D*RF+j%D7DH5 z@S!Ywb^}?0@MCAEd%o`e`k49i_vdc_Q`n231&`~{jA#U-h^b{Pf^oz(Oei6tmM0O^ z;;C9DBLsb>c2jEiTv<-n;{{%7c%@;6p?1!+O*zjn6iwxLRwS}KClWa>jpIaGt(h}v z=Iz4l=pI98DSs#!no_1Mwu-p};q3AQi!`mNyuqzK?wCq0D?{?wEHDiE{ARd3K5zs- z70z-|SZ;t>1}*OeVd(dP|3iYIt{}N1*N7xTFsev-nv{7&8kS@T=ZcnPX1UGK=l53D zCeq~%#SN)s8G3xMDux7#tb8$q$4`Tjck)HY5UZw2yt@kTW;AiaKXV+ZuLs?BWBJ z?N(ndp=-f>WliSJEQYR%v8wA;x(vOQ6Q5OiB4`e>LS9yL_xy~?F%lj1)$+0tS0z^< zs$etOtvW(n+R~6vE2(t@zIfH`@&eTRLegkOlXu3WSc>DKl-xM=XfwnvIT|$9lH0PN z_(}83;^)HgW63;B=G)xP`g5z;xhI*Uq9(ZPRiG)0=mt)SEvf^hO@gWIh$0Y z-&GKD=~x)2OZi-m+lO?kxGEt{c646>It{vPQmD4>sC$zZg@SwDPDM~tny@Ij#Ex`K zJFBWi4zB|{qBn8Mb67na-ZgCVzZ^>Cz7;iD+EHhlJ^P|GtwhQ!NQ%Sevu|jAVVRGGyAW`q2aB*5EiPj8JS|CyzL`V^hc@)Y- kgIGr&`iW)-rZIp)q8cZ82*c!QgzzCcdqCeq+6VCHA2|q^(EtDd literal 0 HcmV?d00001 diff --git a/Mage.Server.Plugins/Mage.Game.OathbreakerDuel/target/classes/mage/game/OathbreakerDuelType.class b/Mage.Server.Plugins/Mage.Game.OathbreakerDuel/target/classes/mage/game/OathbreakerDuelType.class new file mode 100644 index 0000000000000000000000000000000000000000..59b0495b1711c40f16aa86d891a8909acb5254e7 GIT binary patch literal 995 zcmah{U2hUm5IvXgUA6_Ot)&B8m2(%sqNX}kwCmsZ3-lw`5h&YtJ|J>HFR4lXvmgBnL^!fOQ$IVo8u^% z2z&NGV6*PZuClt)Ro00Nd#ympGZj1^DyK2(t3!dU$`usut+_I6_qc+5wEg}_pj@e5 zQ7Ewf7iXej9sgFM-ukIO4BG02&10?ZBgj^5)r}UiB#)zBAF%k?( zGd@O&A>K&84UCzu=r5bLWuyC73>np=gIQ z>4=u6l9u{Bo{Xg6heEcb5Uo&}zW?xmA9Lzq1&$v^UNG*8coMoARyC~YFtDzph)X)| zp{k>XIu%kW4W9?&MlZBy&ZOlD-?gL+rH=cGwt*_ciu&!wm`_FH+|I@$2E82wGzXtY zk%$;dXO;V-1L4FB%NJB(s3eTj@ixvGZ|<1;Gu2?dR^RJf#D7lnH+#DbtN%mQLg{(| z_mfAXS1dRC-LBbtZ4LJObj;z~R|Cu3v<5U}yZxqT4&M!|eS6F5bV?OkqyjA#E0xud zl}8aBb7U_Q`h+xjz_TAHpl8?x-Wb3fJ!7(``$3~KsSVWc_DRwGR2&2_VnrJmE zc4y zdMx8ZjZiXr5~~J&H;La%;==}>O7YM~Wc8ydG~oB^@iBbVz{gYAhR5XECk#AYk1Ozu zfji4B#|A!~!j<@pfzPI}2cI+W`4slzPYnF2fj>*)&r{fkzeu4S ze`(+g2L39AZakL67v=X$a^TnDGGll=ce;arnR);Q8wTkqTc@) z_@;sXRWOHL*Uk@StwO;rD5Tut;;F24&dzh9h84Cg>Dh!c=UQGdZ%-`Q*(~=qjofM7 zWu=RrlTDwrmiiRx!ZQj3Yj=-Crl(I2AMcCICv2~3`)J=$5^VHYk6GUQbl$cWv`j67 zV<%7cj~*Wyzhkuje2nGJ(Ex8PZ>cgD&V zZH3(x6efmm9__#F^!U&n6Q_noMigp~IIiOzRk*WbWYLtoh3^*V+RN3tVKJ$Sj=XfIm;DddeArAc}5{Vn46(=n?@Yh z9xX0T+xgq9=`2?oM{*e}d&bH;G7lEx-n>IE?C}|Ex)D3wl(+4ha{2yjmin7kL{f#z z)=43e7d1jIWiwQ%r;seErLZd^RB5%WECYq!$a^EsEJ?Qo;=G6k+BmYWuyxM%26Kyx zmODf9oLjO-^>TYjCo4ZwNDuPa*STIK)MZL{6*dPhD_>!xOo&Sv&DzKYzD14_3L(qe zEiW@~=M|1sbDZk*DW3Ju6c{y&i#azPUS=@l0s{2PRualAgqz1Li8Q9%R3*=$*;zZ| z(bxUeJbjLSJQmWYbfyNOW=%U;$8+pLx?hjZ^@$y60e6PWIaguOzg<2U?v+H3MAVo& zz%a_%vyPpe87vW@9)^GaoWd2A^h%7GQND;olXWFlXb@v*uLhU6uZFq(pE3Z=U4C6!g;#qwc4$$ zb}}Y|4BZogNuOOiQySt^^fT^MZ&otGI*I{Cy13iV9Bo0)HtcTDn* zAl`N6E=tg|4)7`4w95vbCXD$p$>^===wvn7P*}Sf@9?oNlUrg0?Oj7N5`Am%tRV^l zh2a?zKM`o-`?4Yv%CHscFA$;S3}8Z6G2fpthpMK+a3t~CLQwKHhpVOg3Rn37{bD?* zd)_Xv?J)3v2A(tUZI)<-ssAULs{%%s&NY@4uhAuD)>@pNvD#ewY}?BydNlGXQ$>s+ zzOPxZ>6pY_e(8)-xSD2~$QAP$`zA-qRLi>lIw)O&i66iu)3@9)oUjV>Ojg(m-7l<-dZ|od-J)O!lqiK8dPkPp=uiNh^gW#VW?VD87j%O zIzy#QRj*8iD|O-4vAM2XEVLoIvXYU9E@*8_SU?Xke;C>KfvesSe{lCRACc;cV8P zv$A4jd+6?rty^GfecD}cb7$Sw5GGqaGHn&LUT)$6JSf^+tFWUisvuJs(!+FJ$-pnH zh(K3ESs1^~SJ+aGz*~!1r38^PrLI%gE9?(2R>#8F^quVFf@&RI;c;wGH?Y)L88Ii{pQ7|5F%v0- z(b6?rbTg8z=>dnKSST*qc`3nV&4{&Z)n;?~AuBUq0sZS;_9f~iO8N#2yJXtSDGdAX zQ)Bsw9N|BIPTPx(Yl4+onx#fopE7StDB@UmOpOKT7213xITLC zg-z&_idvPu9Ubpkj>{sxZ5=9|6gg>S3%L{QJlWsKaKxF;TcS}%a6z{QT7{{psR)xm z0}*(;wow_1Lfoli&s72zR@;hWB^2^c=xV#AimA|F6ATh;FWK-#>{=@1*H!VSaRLly z%=n`!!oq%y=^|>^T1!i|7_KL3+tPt5Qw12vxNP(rxFupVUufkOjt<&dikS#(@@&$} z`4kmy_#QNf5)mB?dcw!%!&Ou?g3Bgf8Y^5Bc#?8#EZE+7F>9Z33L-RL2s(7IrbsyS z_l_#sB?2Nt%~Fx!T*C`&4@%lbI?tpN!q4_K+a*|{7{OYCX!B1-VK#`#NJy@^sNV#>uT7t2lvOq1sO5s)K`Wb`ptt)B zHK5R5Wsvps;diSSKZia1w)aYY@J#TND7$BlV$xaj!{@DfJkB|r?8v+Yx8XGBXY~Fi ze%8D_GT(?z++*j?=M+!8m6Q|wZSU$n(6cSR4Ar%Y*yJ*5oRjFgBm@usa9MIH5&+Z zA9v)`Kv(xNjItDK1nT}El20JXpLo}k6a*_s#lUHT)B0dqmUuS|QtY5?JNZ?37j~eN zA9cHMh@VmWaX?GH-RBxgK7cvupt#C+fk3u#JqI>-uYj*44AT1!2K*w7>I4`H?YX5iyWWgka0>VcG=CuwOGs8wSwI-@WhqDiDk6vrET$t@y=E3ne6fzg!dEcGF--0 zy$O=pJK3D@k1nH46Iw<4z!)9GUHqPY zKZfwjT)lu{e3i-fHGX)1mdPiveS)^TpONdKNIzY`jl6M|4yQds`(Fy}e+hTvoQ|nW z_#vLFA-_-Khv}2J4gdzqb9h$bi`_n-;{T_3N)j^NeL$5w(i?A%KZEUopL*ln2b$w6 zxVDBG#(P$99aR<8;yN^1v^b}T8@Hm7;k1MJ&`tz6NJJ>7XF3!&jW=lgkcfRF?$P3= z@uM8okj7Q`F}#VC-%R>`ddPW60)Ow`K$WDZ(r(}_0WQ6jC-@%Y2OS>bDGBO6qRcX` zr;~N+v~-n&u;lm~&Z9||gHQ>V%f9omXNqdRnqc-C+Vr*jx0C5eF7$=U_2DOUx{0rS zUr6G`5!<(gqWvV^9te1dYD>~4SJBJ3>Z{DOSxw#a&ji#JehT*m_tX59`w2>(e4K-5 znl3~xC&J73eT=0Cbf;;!JB;N{z8^a@3!>F+f@fPn)SFnI7$as&$%1>m2A$`1bR=ijlOX2TEh z^B8T8%Y?x6Fa{#)*ET1@^{&YJ?o}Koe)vc+L~tOln>0Y&{M7m9mwLoDe$pIeB!Rh_ zWS*ML(EZHF0p_I5V1FA^;Q=PZJD3RXV`ueeSl|w2Oq=} J!Dt0fd>2#N8DIba literal 0 HcmV?d00001 diff --git a/Mage.Server.Plugins/Mage.Game.OathbreakerFreeForAll/target/classes/mage/game/OathbreakerFreeForAllMatch.class b/Mage.Server.Plugins/Mage.Game.OathbreakerFreeForAll/target/classes/mage/game/OathbreakerFreeForAllMatch.class new file mode 100644 index 0000000000000000000000000000000000000000..a3dbe6e9b70eaa461ea5e1516e7df3289e456724 GIT binary patch literal 1603 zcmah}ZBx@g5Pq&Lq?CxfBjOvNSgN&(hzf`z@=|H30^;bmBOE1=rc8Qukv4FLg$yru z6KKUfUM3O*z0bQz-aTN?sdhZXBLj~OObfKm+ODnV1csBjk}RrBQI=GuB(=4d$@5w` z)OOje%#3dd#1_gsO5l9XcGX(7w5_~Nx$TgqJ6E=(vn4&7<+?Ja_w0(mSSW5m>b-4G z$phsrc}gvny?Mv+)657M9%G1G6TcV9vx-JTowF;yD&5K%)UoLz#GiMH5R{=1?mpvUq7?6*&`mteGg_m5J9_ zH?U!16K@2r|0kkPPGGPB3za)tI&=gE8aA%?X#oT-H7p^o`n=GT6qP=y^5)SY6=*a$ z9;)$4gHBt)AgXC6`SEa^_|gbbi>ald@-+1oXb+_nxR%VGnU8WY$9b)#br8@NNS$!B zXy~r|C%@!9t4m#hK$SMZ=v4cuSB z&Z^{0maoJ>Md^h-WgRS(OC{;jmeIr~-!q`!qN}JCw{?T>Q(jdnzP*=u|RohM`XIC_3>F_h3 zYN-2iXGh?VRE6z*W$Bsm_ZX%Zt&849AOd=a&_io4NpmDe=--;Ubqw*@xA)PS@U`dA zf)4bP+#jGYfD0rMp6@5c5E#NGvT>|Wq>a&kwX=6N^#zd{qQNg#LreZUTHght5&Yt} zhmO&C&AOMu2*!Q`JF27y literal 0 HcmV?d00001 diff --git a/Mage.Server.Plugins/Mage.Game.OathbreakerFreeForAll/target/classes/mage/game/OathbreakerFreeForAllType.class b/Mage.Server.Plugins/Mage.Game.OathbreakerFreeForAll/target/classes/mage/game/OathbreakerFreeForAllType.class new file mode 100644 index 0000000000000000000000000000000000000000..dd02f0e8f209c5407a653806626f07929ef30125 GIT binary patch literal 1023 zcma))ZEq4m6ot?5zRMPnS}d(?seOa3cGXtD)HER`BqnH$B_#T7fC;Q+cgeD-{a5+{ zn`q(>@JAW%UC<(l2_ZSm+&%NmxijhkwLr1>nKy( z8(aw-lq(A@7ufj68Ir7*e|VHbzwkzWTh(lCZ1cZ~kKW4<(m)nDfz=sTi5n|XXC-RQ zz#;A%cz`1V7Ry7HM|f=DnB{~eizfm*3mg(#3kFtE6e!;K=USj6ap|o2QaGa3mu}a( z2z=Y^a(9mW^tvyvluuV9UU0#7{}xj2$Z06)(6{VpsH#CA+n48q!1i2nzY|DN^$h_D zzdW=%s^v+)LuBgJ`=~l}V6(S4m+Z9C#5TRH3_VXE2HFHU(pxkO5TOxZn%59!J~Bqs z%;{sq%)}URGdf1XjE#|GN%2(sLhcCir2EiF(?m3&V~Lm|$s}wd{IEU~Mw_5=RRXL{0T%r;AZ~ue()?m=W^sI)Lts7J;_h#r(#?1P literal 0 HcmV?d00001 diff --git a/Mage.Sets/src/mage/cards/a/AbandonedSarcophagus.java b/Mage.Sets/src/mage/cards/a/AbandonedSarcophagus.java index e66954c891e..17c45bb926d 100644 --- a/Mage.Sets/src/mage/cards/a/AbandonedSarcophagus.java +++ b/Mage.Sets/src/mage/cards/a/AbandonedSarcophagus.java @@ -138,13 +138,6 @@ class AbandonedSarcophagusWatcher extends Watcher { super(WatcherScope.GAME); } - private AbandonedSarcophagusWatcher(final AbandonedSarcophagusWatcher watcher) { - super(watcher); - for (Entry entry : watcher.cycledCardsThisTurn.entrySet()) { - cycledCardsThisTurn.put(entry.getKey(), entry.getValue().copy()); - } - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.CYCLE_CARD @@ -170,9 +163,4 @@ class AbandonedSarcophagusWatcher extends Watcher { super.reset(); cycledCardsThisTurn.clear(); } - - @Override - public AbandonedSarcophagusWatcher copy() { - return new AbandonedSarcophagusWatcher(this); - } } diff --git a/Mage.Sets/src/mage/cards/a/AdmiralBeckettBrass.java b/Mage.Sets/src/mage/cards/a/AdmiralBeckettBrass.java index 8f3a011dcf0..9c1bc82650c 100644 --- a/Mage.Sets/src/mage/cards/a/AdmiralBeckettBrass.java +++ b/Mage.Sets/src/mage/cards/a/AdmiralBeckettBrass.java @@ -74,27 +74,13 @@ class DamagedByPiratesWatcher extends Watcher { super(WatcherScope.GAME); } - private DamagedByPiratesWatcher(final DamagedByPiratesWatcher watcher) { - super(watcher); - for (UUID playerId : watcher.damageSourceIds.keySet()) { - Set creatures = new HashSet<>(); - creatures.addAll(watcher.damageSourceIds.get(playerId)); - this.damageSourceIds.put(playerId, creatures); - } - } - - @Override - public DamagedByPiratesWatcher copy() { - return new DamagedByPiratesWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.DAMAGED_PLAYER) { if (((DamagedPlayerEvent) event).isCombatDamage()) { Permanent creature = game.getPermanentOrLKIBattlefield(event.getSourceId()); if (creature != null && creature.hasSubtype(SubType.PIRATE, game)) { - if (damageSourceIds.keySet().contains(event.getTargetId())) { + if (damageSourceIds.containsKey(event.getTargetId())) { damageSourceIds.get(event.getTargetId()).add(creature.getId()); } else { Set creatureSet = new HashSet<>(); diff --git a/Mage.Sets/src/mage/cards/a/Aggravate.java b/Mage.Sets/src/mage/cards/a/Aggravate.java index 21d95858548..03dc189b340 100644 --- a/Mage.Sets/src/mage/cards/a/Aggravate.java +++ b/Mage.Sets/src/mage/cards/a/Aggravate.java @@ -30,7 +30,7 @@ public final class Aggravate extends CardImpl { this.getSpellAbility().addTarget(new TargetPlayer()); // Each creature dealt damage this way attacks this turn if able. this.getSpellAbility().addEffect(new AggravateRequirementEffect()); - this.getSpellAbility().addWatcher(new DamagedByWatcher()); + this.getSpellAbility().addWatcher(new DamagedByWatcher(false)); } public Aggravate(final Aggravate card) { diff --git a/Mage.Sets/src/mage/cards/a/AngerOfTheGods.java b/Mage.Sets/src/mage/cards/a/AngerOfTheGods.java index b728ff4450d..e0b651856d2 100644 --- a/Mage.Sets/src/mage/cards/a/AngerOfTheGods.java +++ b/Mage.Sets/src/mage/cards/a/AngerOfTheGods.java @@ -26,7 +26,7 @@ public final class AngerOfTheGods extends CardImpl { //If a creature dealt damage this way would die this turn, exile it instead. this.getSpellAbility().addEffect(new DealtDamageToCreatureBySourceDies(this, Duration.EndOfTurn)); - this.getSpellAbility().addWatcher(new DamagedByWatcher()); + this.getSpellAbility().addWatcher(new DamagedByWatcher(false)); } public AngerOfTheGods(final AngerOfTheGods card) { diff --git a/Mage.Sets/src/mage/cards/a/AnnihilatingFire.java b/Mage.Sets/src/mage/cards/a/AnnihilatingFire.java index a504f930557..111d248ebed 100644 --- a/Mage.Sets/src/mage/cards/a/AnnihilatingFire.java +++ b/Mage.Sets/src/mage/cards/a/AnnihilatingFire.java @@ -54,7 +54,7 @@ public final class AnnihilatingFire extends CardImpl { // If a creature dealt damage this way would die this turn, exile it instead. this.getSpellAbility().addEffect(new DealtDamageToCreatureBySourceDies(this, Duration.EndOfTurn)); - this.getSpellAbility().addWatcher(new DamagedByWatcher()); + this.getSpellAbility().addWatcher(new DamagedByWatcher(false)); } public AnnihilatingFire(final AnnihilatingFire card) { diff --git a/Mage.Sets/src/mage/cards/a/ApproachOfTheSecondSun.java b/Mage.Sets/src/mage/cards/a/ApproachOfTheSecondSun.java index 76cf887d40a..ea4a3c95484 100644 --- a/Mage.Sets/src/mage/cards/a/ApproachOfTheSecondSun.java +++ b/Mage.Sets/src/mage/cards/a/ApproachOfTheSecondSun.java @@ -99,11 +99,6 @@ class ApproachOfTheSecondSunWatcher extends Watcher { super(WatcherScope.GAME); } - public ApproachOfTheSecondSunWatcher(final ApproachOfTheSecondSunWatcher watcher) { - super(watcher); - approachesCast = new HashMap<>(watcher.approachesCast); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.SPELL_CAST) { @@ -118,8 +113,4 @@ class ApproachOfTheSecondSunWatcher extends Watcher { return approachesCast.getOrDefault(player, 0); } - @Override - public ApproachOfTheSecondSunWatcher copy() { - return new ApproachOfTheSecondSunWatcher(this); - } } diff --git a/Mage.Sets/src/mage/cards/a/ArchiveTrap.java b/Mage.Sets/src/mage/cards/a/ArchiveTrap.java index ead89d87a50..0f9f757cc4c 100644 --- a/Mage.Sets/src/mage/cards/a/ArchiveTrap.java +++ b/Mage.Sets/src/mage/cards/a/ArchiveTrap.java @@ -57,16 +57,6 @@ class ArchiveTrapWatcher extends Watcher { super(WatcherScope.GAME); } - private ArchiveTrapWatcher(final ArchiveTrapWatcher watcher) { - super(watcher); - this.playerIds.addAll(watcher.playerIds); - } - - @Override - public ArchiveTrapWatcher copy() { - return new ArchiveTrapWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == EventType.LIBRARY_SEARCHED diff --git a/Mage.Sets/src/mage/cards/a/ArclightPhoenix.java b/Mage.Sets/src/mage/cards/a/ArclightPhoenix.java index 5cb55edbc2b..ee0bfe50ecc 100644 --- a/Mage.Sets/src/mage/cards/a/ArclightPhoenix.java +++ b/Mage.Sets/src/mage/cards/a/ArclightPhoenix.java @@ -87,16 +87,6 @@ class ArclightPhoenixWatcher extends Watcher { super(WatcherScope.GAME); } - public ArclightPhoenixWatcher(final ArclightPhoenixWatcher watcher) { - super(watcher); - this.instantSorceryCount.putAll(watcher.instantSorceryCount); - } - - @Override - public ArclightPhoenixWatcher copy() { - return new ArclightPhoenixWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.SPELL_CAST) { diff --git a/Mage.Sets/src/mage/cards/a/AsmiraHolyAvenger.java b/Mage.Sets/src/mage/cards/a/AsmiraHolyAvenger.java index ee45b419a18..8785e050668 100644 --- a/Mage.Sets/src/mage/cards/a/AsmiraHolyAvenger.java +++ b/Mage.Sets/src/mage/cards/a/AsmiraHolyAvenger.java @@ -60,16 +60,6 @@ class AsmiraHolyAvengerWatcher extends Watcher { condition = true; } - public AsmiraHolyAvengerWatcher(final AsmiraHolyAvengerWatcher watcher) { - super(watcher); - this.creaturesCount = watcher.creaturesCount; - } - - @Override - public AsmiraHolyAvengerWatcher copy() { - return new AsmiraHolyAvengerWatcher(this); - } - public int getCreaturesCount() { return creaturesCount; } diff --git a/Mage.Sets/src/mage/cards/a/AureliasFury.java b/Mage.Sets/src/mage/cards/a/AureliasFury.java index 634de83e29e..170392da35e 100644 --- a/Mage.Sets/src/mage/cards/a/AureliasFury.java +++ b/Mage.Sets/src/mage/cards/a/AureliasFury.java @@ -175,17 +175,6 @@ class AureliasFuryDamagedByWatcher extends Watcher { super(WatcherScope.CARD); } - private AureliasFuryDamagedByWatcher(final AureliasFuryDamagedByWatcher watcher) { - super(watcher); - this.damagedCreatures.addAll(watcher.damagedCreatures); - this.damagedPlayers.addAll(watcher.damagedPlayers); - } - - @Override - public AureliasFuryDamagedByWatcher copy() { - return new AureliasFuryDamagedByWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == EventType.DAMAGED_CREATURE) { diff --git a/Mage.Sets/src/mage/cards/b/Berserk.java b/Mage.Sets/src/mage/cards/b/Berserk.java index 4a5cbc64407..cd620758c5a 100644 --- a/Mage.Sets/src/mage/cards/b/Berserk.java +++ b/Mage.Sets/src/mage/cards/b/Berserk.java @@ -99,10 +99,6 @@ class CombatDamageStepStartedWatcher extends Watcher { super(WatcherScope.GAME); } - public CombatDamageStepStartedWatcher(final CombatDamageStepStartedWatcher watcher) { - super(watcher); - } - @Override public void watch(GameEvent event, Game game) { // if no damage happens, the first event after is END_COMBAT_STEP_PRE @@ -111,10 +107,6 @@ class CombatDamageStepStartedWatcher extends Watcher { } } - @Override - public CombatDamageStepStartedWatcher copy() { - return new CombatDamageStepStartedWatcher(this); - } } class BerserkDestroyEffect extends OneShotEffect { diff --git a/Mage.Sets/src/mage/cards/b/BlazingEffigy.java b/Mage.Sets/src/mage/cards/b/BlazingEffigy.java index b61c69b42cf..ddf098cd72d 100644 --- a/Mage.Sets/src/mage/cards/b/BlazingEffigy.java +++ b/Mage.Sets/src/mage/cards/b/BlazingEffigy.java @@ -87,16 +87,6 @@ class BlazingEffigyWatcher extends Watcher { super(WatcherScope.GAME); } - public BlazingEffigyWatcher(final BlazingEffigyWatcher watcher) { - super(watcher); - this.damagedObjects.putAll(watcher.damagedObjects); - } - - @Override - public BlazingEffigyWatcher copy() { - return new BlazingEffigyWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.DAMAGED_CREATURE) { diff --git a/Mage.Sets/src/mage/cards/b/BoseijuWhoSheltersAll.java b/Mage.Sets/src/mage/cards/b/BoseijuWhoSheltersAll.java index 5a8195beb8a..86f68cfe0b8 100644 --- a/Mage.Sets/src/mage/cards/b/BoseijuWhoSheltersAll.java +++ b/Mage.Sets/src/mage/cards/b/BoseijuWhoSheltersAll.java @@ -59,28 +59,17 @@ public final class BoseijuWhoSheltersAll extends CardImpl { class BoseijuWhoSheltersAllWatcher extends Watcher { private List spells = new ArrayList<>(); - private final String originalId; + private final UUID originalId; public BoseijuWhoSheltersAllWatcher(UUID originalId) { super(WatcherScope.CARD); - this.originalId = originalId.toString(); - } - - public BoseijuWhoSheltersAllWatcher(final BoseijuWhoSheltersAllWatcher watcher) { - super(watcher); - this.spells.addAll(watcher.spells); - this.originalId = watcher.originalId; - } - - @Override - public BoseijuWhoSheltersAllWatcher copy() { - return new BoseijuWhoSheltersAllWatcher(this); + this.originalId = originalId; } @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.MANA_PAID) { - if (event.getData() != null && event.getData().equals(originalId)) { + if (event.getData() != null && event.getData().equals(originalId.toString())) { Card spell = game.getSpell(event.getTargetId()); if (spell != null && (spell.isInstant() || spell.isSorcery())) { spells.add(event.getTargetId()); diff --git a/Mage.Sets/src/mage/cards/b/BurningCinderFuryOfCrimsonChaosFire.java b/Mage.Sets/src/mage/cards/b/BurningCinderFuryOfCrimsonChaosFire.java index 6cda9d99cea..eb514f24ddf 100644 --- a/Mage.Sets/src/mage/cards/b/BurningCinderFuryOfCrimsonChaosFire.java +++ b/Mage.Sets/src/mage/cards/b/BurningCinderFuryOfCrimsonChaosFire.java @@ -204,10 +204,6 @@ class BurningCinderFuryOfCrimsonChaosFireWatcher extends Watcher { super(WatcherScope.GAME); } - public BurningCinderFuryOfCrimsonChaosFireWatcher(final BurningCinderFuryOfCrimsonChaosFireWatcher watcher) { - super(watcher); - this.tappedActivePlayerIds.addAll(watcher.tappedActivePlayerIds); - } @Override public void watch(GameEvent event, Game game) { @@ -227,9 +223,4 @@ class BurningCinderFuryOfCrimsonChaosFireWatcher extends Watcher { public void reset() { tappedActivePlayerIds.clear(); } - - @Override - public BurningCinderFuryOfCrimsonChaosFireWatcher copy() { - return new BurningCinderFuryOfCrimsonChaosFireWatcher(this); - } } diff --git a/Mage.Sets/src/mage/cards/c/CallerOfTheClaw.java b/Mage.Sets/src/mage/cards/c/CallerOfTheClaw.java index fc0c0aee3f2..97a4917a438 100644 --- a/Mage.Sets/src/mage/cards/c/CallerOfTheClaw.java +++ b/Mage.Sets/src/mage/cards/c/CallerOfTheClaw.java @@ -64,16 +64,6 @@ class CallerOfTheClawWatcher extends Watcher { condition = true; } - public CallerOfTheClawWatcher(final CallerOfTheClawWatcher watcher) { - super(watcher); - this.creaturesCount = watcher.creaturesCount; - } - - @Override - public CallerOfTheClawWatcher copy() { - return new CallerOfTheClawWatcher(this); - } - public int getCreaturesCount() { return creaturesCount; } diff --git a/Mage.Sets/src/mage/cards/c/Carbonize.java b/Mage.Sets/src/mage/cards/c/Carbonize.java index 94dd6beab07..d53273d0541 100644 --- a/Mage.Sets/src/mage/cards/c/Carbonize.java +++ b/Mage.Sets/src/mage/cards/c/Carbonize.java @@ -26,7 +26,7 @@ public final class Carbonize extends CardImpl { this.getSpellAbility().addEffect(new CantRegenerateTargetEffect(Duration.EndOfTurn, "That creature")); this.getSpellAbility().addEffect(new ExileTargetIfDiesEffect().setText("If the creature would die this turn, exile it instead")); this.getSpellAbility().addTarget(new TargetAnyTarget()); - this.getSpellAbility().addWatcher(new DamagedByWatcher()); + this.getSpellAbility().addWatcher(new DamagedByWatcher(false)); } diff --git a/Mage.Sets/src/mage/cards/c/CathedralMembrane.java b/Mage.Sets/src/mage/cards/c/CathedralMembrane.java index 80ce89d1f8a..e6fc406db16 100644 --- a/Mage.Sets/src/mage/cards/c/CathedralMembrane.java +++ b/Mage.Sets/src/mage/cards/c/CathedralMembrane.java @@ -114,16 +114,6 @@ class CathedralMembraneWatcher extends Watcher { super(WatcherScope.CARD); } - private CathedralMembraneWatcher(final CathedralMembraneWatcher watcher) { - super(watcher); - this.blockedCreatures.addAll(watcher.blockedCreatures); - } - - @Override - public CathedralMembraneWatcher copy() { - return new CathedralMembraneWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.BLOCKER_DECLARED && event.getSourceId().equals(sourceId)) { diff --git a/Mage.Sets/src/mage/cards/c/CavernOfSouls.java b/Mage.Sets/src/mage/cards/c/CavernOfSouls.java index 0cb6fdf7282..1700ea17be9 100644 --- a/Mage.Sets/src/mage/cards/c/CavernOfSouls.java +++ b/Mage.Sets/src/mage/cards/c/CavernOfSouls.java @@ -122,28 +122,17 @@ class CavernOfSoulsManaCondition extends CreatureCastManaCondition { class CavernOfSoulsWatcher extends Watcher { private List spells = new ArrayList<>(); - private final String originalId; + private final UUID originalId; public CavernOfSoulsWatcher(UUID originalId) { super(WatcherScope.CARD); - this.originalId = originalId.toString(); - } - - public CavernOfSoulsWatcher(final CavernOfSoulsWatcher watcher) { - super(watcher); - this.spells.addAll(watcher.spells); - this.originalId = watcher.originalId; - } - - @Override - public CavernOfSoulsWatcher copy() { - return new CavernOfSoulsWatcher(this); + this.originalId = originalId; } @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.MANA_PAID) { - if (event.getData() != null && event.getData().equals(originalId)) { + if (event.getData() != null && event.getData().equals(originalId.toString())) { spells.add(event.getTargetId()); } } diff --git a/Mage.Sets/src/mage/cards/c/CerebralVortex.java b/Mage.Sets/src/mage/cards/c/CerebralVortex.java index 1329470ef84..573ef7aa018 100644 --- a/Mage.Sets/src/mage/cards/c/CerebralVortex.java +++ b/Mage.Sets/src/mage/cards/c/CerebralVortex.java @@ -84,13 +84,6 @@ class CerebralVortexWatcher extends Watcher { super(WatcherScope.GAME); } - CerebralVortexWatcher(final CerebralVortexWatcher watcher) { - super(watcher); - for (Entry entry: watcher.draws.entrySet()) { - draws.put(entry.getKey(), entry.getValue()); - } - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == EventType.DREW_CARD) { @@ -111,9 +104,4 @@ class CerebralVortexWatcher extends Watcher { public int getDraws(UUID playerId) { return draws.getOrDefault(playerId, 0); } - - @Override - public CerebralVortexWatcher copy() { - return new CerebralVortexWatcher(this); - } } diff --git a/Mage.Sets/src/mage/cards/c/CobraTrap.java b/Mage.Sets/src/mage/cards/c/CobraTrap.java index 69b1011f58f..2ecb0f346b6 100644 --- a/Mage.Sets/src/mage/cards/c/CobraTrap.java +++ b/Mage.Sets/src/mage/cards/c/CobraTrap.java @@ -74,15 +74,6 @@ class CobraTrapWatcher extends Watcher { super(WatcherScope.GAME); } - public CobraTrapWatcher(final CobraTrapWatcher watcher) { - super(watcher); - } - - @Override - public CobraTrapWatcher copy() { - return new CobraTrapWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == EventType.DESTROYED_PERMANENT) { diff --git a/Mage.Sets/src/mage/cards/c/ConduitOfRuin.java b/Mage.Sets/src/mage/cards/c/ConduitOfRuin.java index b5f0b3842af..3e857fc82d3 100644 --- a/Mage.Sets/src/mage/cards/c/ConduitOfRuin.java +++ b/Mage.Sets/src/mage/cards/c/ConduitOfRuin.java @@ -78,12 +78,6 @@ class ConduitOfRuinWatcher extends Watcher { playerCreatureSpells = new HashMap<>(); } - public ConduitOfRuinWatcher(final ConduitOfRuinWatcher watcher) { - super(watcher); - this.playerCreatureSpells = new HashMap<>(); - playerCreatureSpells.putAll(watcher.playerCreatureSpells); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.SPELL_CAST) { @@ -98,11 +92,6 @@ class ConduitOfRuinWatcher extends Watcher { return playerCreatureSpells.getOrDefault(playerId, 0); } - @Override - public ConduitOfRuinWatcher copy() { - return new ConduitOfRuinWatcher(this); - } - @Override public void reset() { super.reset(); diff --git a/Mage.Sets/src/mage/cards/c/CorrosiveOoze.java b/Mage.Sets/src/mage/cards/c/CorrosiveOoze.java index c1965a1d60f..d6845d3243b 100644 --- a/Mage.Sets/src/mage/cards/c/CorrosiveOoze.java +++ b/Mage.Sets/src/mage/cards/c/CorrosiveOoze.java @@ -125,18 +125,6 @@ class CorrosiveOozeCombatWatcher extends Watcher { super(WatcherScope.GAME); } - public CorrosiveOozeCombatWatcher(final CorrosiveOozeCombatWatcher watcher) { - super(watcher); - for (Map.Entry> entry : watcher.oozeBlocksOrBlocked.entrySet()) { - Set newSet = new HashSet<>(entry.getValue()); - oozeBlocksOrBlocked.put(entry.getKey(), newSet); - } - for (Map.Entry> entry : watcher.oozeEquipmentsToDestroy.entrySet()) { - Set newSet = new HashSet<>(entry.getValue()); - oozeEquipmentsToDestroy.put(entry.getKey(), newSet); - } - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.BEGIN_COMBAT_STEP_PRE) { @@ -208,10 +196,4 @@ class CorrosiveOozeCombatWatcher extends Watcher { oozeEquipmentsToDestroy.remove(ooze); // remove here to get no overlap with creatures leaving meanwhile return equipmentsToDestroy; } - - @Override - public CorrosiveOozeCombatWatcher copy() { - return new CorrosiveOozeCombatWatcher(this); - } - } diff --git a/Mage.Sets/src/mage/cards/c/CustodiSoulcaller.java b/Mage.Sets/src/mage/cards/c/CustodiSoulcaller.java index b8950d773cf..be2e69ad380 100644 --- a/Mage.Sets/src/mage/cards/c/CustodiSoulcaller.java +++ b/Mage.Sets/src/mage/cards/c/CustodiSoulcaller.java @@ -86,11 +86,6 @@ class CustodiSoulcallerWatcher extends Watcher { super(WatcherScope.GAME); } - CustodiSoulcallerWatcher(final CustodiSoulcallerWatcher watcher) { - super(watcher); - this.playersAttacked.putAll(watcher.playersAttacked); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == EventType.BEGIN_COMBAT_STEP_PRE) { @@ -105,9 +100,4 @@ class CustodiSoulcallerWatcher extends Watcher { public int getNumberOfAttackedPlayers(UUID attackerId) { return this.playersAttacked.get(attackerId).size(); } - - @Override - public CustodiSoulcallerWatcher copy() { - return new CustodiSoulcallerWatcher(this); - } } diff --git a/Mage.Sets/src/mage/cards/c/CyclopeanTomb.java b/Mage.Sets/src/mage/cards/c/CyclopeanTomb.java index d572a307b39..66d2a6f2caa 100644 --- a/Mage.Sets/src/mage/cards/c/CyclopeanTomb.java +++ b/Mage.Sets/src/mage/cards/c/CyclopeanTomb.java @@ -193,20 +193,6 @@ class CyclopeanTombCounterWatcher extends Watcher { super(WatcherScope.GAME); } - private CyclopeanTombCounterWatcher(final CyclopeanTombCounterWatcher watcher) { - super(watcher); - for (MageObjectReference mageObjectReference : watcher.counterData.keySet()) { - Set miredLands = new HashSet<>(); - miredLands.addAll(watcher.counterData.get(mageObjectReference)); - counterData.put(mageObjectReference, miredLands); - } - } - - @Override - public CyclopeanTombCounterWatcher copy() { - return new CyclopeanTombCounterWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.COUNTERS_ADDED && event.getData().equals(CounterType.MIRE.getName()) && event.getAmount() > 0) { diff --git a/Mage.Sets/src/mage/cards/d/DarkbladeAgent.java b/Mage.Sets/src/mage/cards/d/DarkbladeAgent.java index 8af32ccef82..169b2cee2fa 100644 --- a/Mage.Sets/src/mage/cards/d/DarkbladeAgent.java +++ b/Mage.Sets/src/mage/cards/d/DarkbladeAgent.java @@ -88,16 +88,6 @@ class DarkbladeAgentWatcher extends Watcher { super(WatcherScope.GAME); } - public DarkbladeAgentWatcher(final DarkbladeAgentWatcher watcher) { - super(watcher); - this.surveiledThisTurn.addAll(watcher.surveiledThisTurn); - } - - @Override - public DarkbladeAgentWatcher copy() { - return new DarkbladeAgentWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.SURVEILED) { diff --git a/Mage.Sets/src/mage/cards/d/Demonfire.java b/Mage.Sets/src/mage/cards/d/Demonfire.java index b8dfbc7148c..3ed35ff32fa 100644 --- a/Mage.Sets/src/mage/cards/d/Demonfire.java +++ b/Mage.Sets/src/mage/cards/d/Demonfire.java @@ -37,7 +37,7 @@ public final class Demonfire extends CardImpl { // If a creature dealt damage this way would die this turn, exile it instead. this.getSpellAbility().addEffect(new DealtDamageToCreatureBySourceDies(this, Duration.EndOfTurn)); - this.getSpellAbility().addWatcher(new DamagedByWatcher()); + this.getSpellAbility().addWatcher(new DamagedByWatcher(false)); // Hellbent - If you have no cards in hand, Demonfire can't be countered and the damage can't be prevented. this.getSpellAbility().addEffect(new ConditionalOneShotEffect( diff --git a/Mage.Sets/src/mage/cards/d/Desolation.java b/Mage.Sets/src/mage/cards/d/Desolation.java index 27824d61c07..532dd4f9c34 100644 --- a/Mage.Sets/src/mage/cards/d/Desolation.java +++ b/Mage.Sets/src/mage/cards/d/Desolation.java @@ -109,10 +109,6 @@ class DesolationWatcher extends Watcher { super( WatcherScope.GAME); } - public DesolationWatcher(final DesolationWatcher watcher) { - super(watcher); - this.tappedForManaThisTurnPlayers.addAll(watcher.tappedForManaThisTurnPlayers); - } @Override public void watch(GameEvent event, Game game) { @@ -131,10 +127,7 @@ class DesolationWatcher extends Watcher { } public Set getPlayersTappedForMana() { - if (tappedForManaThisTurnPlayers != null) { - return tappedForManaThisTurnPlayers; - } - return new HashSet<>(); + return tappedForManaThisTurnPlayers; } @Override @@ -143,8 +136,4 @@ class DesolationWatcher extends Watcher { tappedForManaThisTurnPlayers.clear(); } - @Override - public DesolationWatcher copy() { - return new DesolationWatcher(this); - } } diff --git a/Mage.Sets/src/mage/cards/d/DiseasedVermin.java b/Mage.Sets/src/mage/cards/d/DiseasedVermin.java index e4c8c5108a9..8cb88d9f1bb 100644 --- a/Mage.Sets/src/mage/cards/d/DiseasedVermin.java +++ b/Mage.Sets/src/mage/cards/d/DiseasedVermin.java @@ -141,17 +141,6 @@ class DiseasedVerminWatcher extends Watcher { damagedPlayers = new HashSet<>(); } - public DiseasedVerminWatcher(final DiseasedVerminWatcher watcher) { - super(watcher); - this.damagedPlayers = new HashSet<>(); - this.damagedPlayers.addAll(watcher.damagedPlayers); - } - - @Override - public DiseasedVerminWatcher copy() { - return new DiseasedVerminWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == EventType.DAMAGED_PLAYER diff --git a/Mage.Sets/src/mage/cards/d/DreamSalvage.java b/Mage.Sets/src/mage/cards/d/DreamSalvage.java index df6fe89ffc4..a62f2ea0c59 100644 --- a/Mage.Sets/src/mage/cards/d/DreamSalvage.java +++ b/Mage.Sets/src/mage/cards/d/DreamSalvage.java @@ -52,13 +52,6 @@ class CardsDiscardedThisTurnWatcher extends Watcher { super(WatcherScope.GAME); } - public CardsDiscardedThisTurnWatcher(final CardsDiscardedThisTurnWatcher watcher) { - super(watcher); - for (Entry entry : watcher.amountOfCardsDiscardedThisTurn.entrySet()) { - amountOfCardsDiscardedThisTurn.put(entry.getKey(), entry.getValue()); - } - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.DISCARDED_CARD) { @@ -77,11 +70,6 @@ class CardsDiscardedThisTurnWatcher extends Watcher { public void reset() { amountOfCardsDiscardedThisTurn.clear(); } - - @Override - public CardsDiscardedThisTurnWatcher copy() { - return new CardsDiscardedThisTurnWatcher(this); - } } class DreamSalvageEffect extends OneShotEffect { diff --git a/Mage.Sets/src/mage/cards/d/DungeonGeists.java b/Mage.Sets/src/mage/cards/d/DungeonGeists.java index fe37bde78bb..ff105f4b1ee 100644 --- a/Mage.Sets/src/mage/cards/d/DungeonGeists.java +++ b/Mage.Sets/src/mage/cards/d/DungeonGeists.java @@ -134,10 +134,6 @@ class DungeonGeistsWatcher extends Watcher { super(WatcherScope.CARD); } - DungeonGeistsWatcher(DungeonGeistsWatcher watcher) { - super(watcher); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.LOST_CONTROL && event.getPlayerId().equals(controllerId) && event.getTargetId().equals(sourceId)) { @@ -158,9 +154,4 @@ class DungeonGeistsWatcher extends Watcher { public void reset() { //don't reset condition each turn - only when this leaves the battlefield } - - @Override - public DungeonGeistsWatcher copy() { - return new DungeonGeistsWatcher(this); - } } diff --git a/Mage.Sets/src/mage/cards/e/ErdwalIlluminator.java b/Mage.Sets/src/mage/cards/e/ErdwalIlluminator.java index 048335a056e..bca010845b8 100644 --- a/Mage.Sets/src/mage/cards/e/ErdwalIlluminator.java +++ b/Mage.Sets/src/mage/cards/e/ErdwalIlluminator.java @@ -89,15 +89,6 @@ class InvestigatedWatcher extends Watcher { super(WatcherScope.GAME); } - public InvestigatedWatcher(final InvestigatedWatcher watcher) { - super(watcher); - } - - @Override - public InvestigatedWatcher copy() { - return new InvestigatedWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == EventType.INVESTIGATED) { diff --git a/Mage.Sets/src/mage/cards/e/EtherswornCanonist.java b/Mage.Sets/src/mage/cards/e/EtherswornCanonist.java index 9cfb604d03a..740ac5348e7 100644 --- a/Mage.Sets/src/mage/cards/e/EtherswornCanonist.java +++ b/Mage.Sets/src/mage/cards/e/EtherswornCanonist.java @@ -54,11 +54,6 @@ class EtherswornCanonistWatcher extends Watcher { super(WatcherScope.GAME); } - public EtherswornCanonistWatcher(final EtherswornCanonistWatcher watcher) { - super(watcher); - this.castNonartifactSpell.addAll(watcher.castNonartifactSpell); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.SPELL_CAST && event.getPlayerId() != null) { @@ -83,12 +78,6 @@ class EtherswornCanonistWatcher extends Watcher { public boolean castNonArtifactSpell(UUID playerId) { return castNonartifactSpell.contains(playerId); } - - @Override - public EtherswornCanonistWatcher copy() { - return new EtherswornCanonistWatcher(this); - } - } class EtherswornCanonistReplacementEffect extends ContinuousRuleModifyingEffectImpl { diff --git a/Mage.Sets/src/mage/cards/f/FairgroundsTrumpeter.java b/Mage.Sets/src/mage/cards/f/FairgroundsTrumpeter.java index 1ae545be109..7edce41a7cd 100644 --- a/Mage.Sets/src/mage/cards/f/FairgroundsTrumpeter.java +++ b/Mage.Sets/src/mage/cards/f/FairgroundsTrumpeter.java @@ -76,11 +76,6 @@ class FairgroundsTrumpeterWatcher extends Watcher { super(WatcherScope.GAME); } - public FairgroundsTrumpeterWatcher(final FairgroundsTrumpeterWatcher watcher) { - super(watcher); - this.players.addAll(watcher.players); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.COUNTER_ADDED && event.getData().equals(CounterType.P1P1.getName())) { @@ -103,8 +98,4 @@ class FairgroundsTrumpeterWatcher extends Watcher { return players.contains(playerId); } - @Override - public FairgroundsTrumpeterWatcher copy() { - return new FairgroundsTrumpeterWatcher(this); - } } diff --git a/Mage.Sets/src/mage/cards/f/FaithsReward.java b/Mage.Sets/src/mage/cards/f/FaithsReward.java index 17121aa83c2..32b993daf10 100644 --- a/Mage.Sets/src/mage/cards/f/FaithsReward.java +++ b/Mage.Sets/src/mage/cards/f/FaithsReward.java @@ -83,11 +83,6 @@ class FaithsRewardWatcher extends Watcher { super(WatcherScope.GAME); } - public FaithsRewardWatcher(final FaithsRewardWatcher watcher) { - super(watcher); - this.cards.addAll(watcher.cards); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.ZONE_CHANGE && ((ZoneChangeEvent)event).isDiesEvent()) { @@ -99,11 +94,6 @@ class FaithsRewardWatcher extends Watcher { return cards; } - @Override - public FaithsRewardWatcher copy() { - return new FaithsRewardWatcher(this); - } - @Override public void reset() { super.reset(); diff --git a/Mage.Sets/src/mage/cards/f/FblthpTheLost.java b/Mage.Sets/src/mage/cards/f/FblthpTheLost.java index 3de4f8abcd0..1effc82a04c 100644 --- a/Mage.Sets/src/mage/cards/f/FblthpTheLost.java +++ b/Mage.Sets/src/mage/cards/f/FblthpTheLost.java @@ -104,11 +104,6 @@ class FblthpTheLostWatcher extends Watcher { super(WatcherScope.GAME); } - private FblthpTheLostWatcher(final FblthpTheLostWatcher watcher) { - super(watcher); - spellsCastFromLibrary.addAll(watcher.spellsCastFromLibrary); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.SPELL_CAST && event.getZone() == Zone.LIBRARY) { @@ -130,11 +125,6 @@ class FblthpTheLostWatcher extends Watcher { super.reset(); spellsCastFromLibrary.clear(); } - - @Override - public FblthpTheLostWatcher copy() { - return new FblthpTheLostWatcher(this); - } } class FblthpTheLostTargetedTriggeredAbility extends TriggeredAbilityImpl { diff --git a/Mage.Sets/src/mage/cards/f/FellShepherd.java b/Mage.Sets/src/mage/cards/f/FellShepherd.java index 6e2e8333917..d194211d725 100644 --- a/Mage.Sets/src/mage/cards/f/FellShepherd.java +++ b/Mage.Sets/src/mage/cards/f/FellShepherd.java @@ -69,16 +69,6 @@ class FellShepherdWatcher extends Watcher { condition = true; } - public FellShepherdWatcher(final FellShepherdWatcher watcher) { - super(watcher); - this.creatureIds.addAll(watcher.creatureIds); - } - - @Override - public FellShepherdWatcher copy() { - return new FellShepherdWatcher(this); - } - public Set getCreaturesIds() { return creatureIds; } diff --git a/Mage.Sets/src/mage/cards/f/Flamebreak.java b/Mage.Sets/src/mage/cards/f/Flamebreak.java index 1e834bd05a4..ecda085357a 100644 --- a/Mage.Sets/src/mage/cards/f/Flamebreak.java +++ b/Mage.Sets/src/mage/cards/f/Flamebreak.java @@ -39,7 +39,7 @@ public final class Flamebreak extends CardImpl { // Flamebreak deals 3 damage to each creature without flying and each player. Creatures dealt damage this way can't be regenerated this turn. this.getSpellAbility().addEffect(new DamageEverythingEffect(new StaticValue(3), filter1)); this.getSpellAbility().addEffect(new FlamebreakCantRegenerateEffect()); - this.getSpellAbility().addWatcher(new DamagedByWatcher()); + this.getSpellAbility().addWatcher(new DamagedByWatcher(false)); } public Flamebreak(final Flamebreak card) { diff --git a/Mage.Sets/src/mage/cards/f/FleshAllergy.java b/Mage.Sets/src/mage/cards/f/FleshAllergy.java index 1ea3c3d811a..7ac5f4227f0 100644 --- a/Mage.Sets/src/mage/cards/f/FleshAllergy.java +++ b/Mage.Sets/src/mage/cards/f/FleshAllergy.java @@ -60,15 +60,6 @@ class FleshAllergyWatcher extends Watcher { super(WatcherScope.GAME); } - private FleshAllergyWatcher(final FleshAllergyWatcher watcher) { - super(watcher); - } - - @Override - public FleshAllergyWatcher copy() { - return new FleshAllergyWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == EventType.ZONE_CHANGE && ((ZoneChangeEvent) event).isDiesEvent()) { diff --git a/Mage.Sets/src/mage/cards/f/FreeRangeChicken.java b/Mage.Sets/src/mage/cards/f/FreeRangeChicken.java index 44fa8632139..b52ab4b477c 100644 --- a/Mage.Sets/src/mage/cards/f/FreeRangeChicken.java +++ b/Mage.Sets/src/mage/cards/f/FreeRangeChicken.java @@ -101,13 +101,6 @@ class FreeRangeChickenWatcher extends Watcher { super(WatcherScope.GAME); } - public FreeRangeChickenWatcher(final FreeRangeChickenWatcher watcher) { - super(watcher); - for (Map.Entry entry : watcher.totalRolls.entrySet()) { - this.totalRolls.put(entry.getKey(), entry.getValue()); - } - } - @Override public void watch(GameEvent event, Game game) { } @@ -117,11 +110,6 @@ class FreeRangeChickenWatcher extends Watcher { totalRolls.clear(); } - @Override - public FreeRangeChickenWatcher copy() { - return new FreeRangeChickenWatcher(this); - } - public void addRoll(UUID sourceId, int roll) { totalRolls.put(sourceId, roll); } diff --git a/Mage.Sets/src/mage/cards/f/Frostwielder.java b/Mage.Sets/src/mage/cards/f/Frostwielder.java index 909e6c7c72e..2863b56a692 100644 --- a/Mage.Sets/src/mage/cards/f/Frostwielder.java +++ b/Mage.Sets/src/mage/cards/f/Frostwielder.java @@ -37,7 +37,7 @@ public final class Frostwielder extends CardImpl { ability.addTarget(new TargetAnyTarget()); this.addAbility(ability); // If a creature dealt damage by Frostwielder this turn would die, exile it instead. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new DealtDamageToCreatureBySourceDies(this, Duration.WhileOnBattlefield)), new DamagedByWatcher()); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new DealtDamageToCreatureBySourceDies(this, Duration.WhileOnBattlefield)), new DamagedByWatcher(false)); } diff --git a/Mage.Sets/src/mage/cards/g/GarnaTheBloodflame.java b/Mage.Sets/src/mage/cards/g/GarnaTheBloodflame.java index 2583df059c3..2158c290c1f 100644 --- a/Mage.Sets/src/mage/cards/g/GarnaTheBloodflame.java +++ b/Mage.Sets/src/mage/cards/g/GarnaTheBloodflame.java @@ -112,11 +112,6 @@ class GarnaTheBloodflameWatcher extends Watcher { super(WatcherScope.GAME); } - public GarnaTheBloodflameWatcher(final GarnaTheBloodflameWatcher watcher) { - super(watcher); - this.cards.addAll(watcher.cards); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.ZONE_CHANGE && ((ZoneChangeEvent) event).getToZone() == Zone.GRAVEYARD) { @@ -127,11 +122,6 @@ class GarnaTheBloodflameWatcher extends Watcher { } } - @Override - public GarnaTheBloodflameWatcher copy() { - return new GarnaTheBloodflameWatcher(this); - } - public Set getCardsPutToGraveyardThisTurn() { return cards; } diff --git a/Mage.Sets/src/mage/cards/g/GeneratorServant.java b/Mage.Sets/src/mage/cards/g/GeneratorServant.java index 1cf33279dfc..31bd03c29f5 100644 --- a/Mage.Sets/src/mage/cards/g/GeneratorServant.java +++ b/Mage.Sets/src/mage/cards/g/GeneratorServant.java @@ -66,16 +66,6 @@ class GeneratorServantWatcher extends Watcher { super(WatcherScope.CARD); } - private GeneratorServantWatcher(final GeneratorServantWatcher watcher) { - super(watcher); - this.creatures.addAll(watcher.creatures); - } - - @Override - public GeneratorServantWatcher copy() { - return new GeneratorServantWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.MANA_PAID) { diff --git a/Mage.Sets/src/mage/cards/g/GideonsTriumph.java b/Mage.Sets/src/mage/cards/g/GideonsTriumph.java index cd8c9b62420..8a9cec0d9d5 100644 --- a/Mage.Sets/src/mage/cards/g/GideonsTriumph.java +++ b/Mage.Sets/src/mage/cards/g/GideonsTriumph.java @@ -101,11 +101,6 @@ class GideonsTriumphWatcher extends Watcher { super(WatcherScope.GAME); } - private GideonsTriumphWatcher(final GideonsTriumphWatcher watcher) { - super(watcher); - this.attackedOrBlockedThisTurnCreatures.addAll(watcher.attackedOrBlockedThisTurnCreatures); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.ATTACKER_DECLARED || event.getType() == GameEvent.EventType.BLOCKER_DECLARED) { @@ -117,12 +112,6 @@ class GideonsTriumphWatcher extends Watcher { return this.attackedOrBlockedThisTurnCreatures.contains(new MageObjectReference(permanent, game)); } - - @Override - public GideonsTriumphWatcher copy() { - return new GideonsTriumphWatcher(this); - } - @Override public void reset() { attackedOrBlockedThisTurnCreatures.clear(); diff --git a/Mage.Sets/src/mage/cards/g/GisaAndGeralf.java b/Mage.Sets/src/mage/cards/g/GisaAndGeralf.java index b0080c17d20..22a8b290211 100644 --- a/Mage.Sets/src/mage/cards/g/GisaAndGeralf.java +++ b/Mage.Sets/src/mage/cards/g/GisaAndGeralf.java @@ -136,11 +136,6 @@ class GisaAndGeralfWatcher extends Watcher { super(WatcherScope.CARD); } - GisaAndGeralfWatcher(final GisaAndGeralfWatcher watcher) { - super(watcher); - this.abilityUsed = watcher.abilityUsed; - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.SPELL_CAST && event.getZone() == Zone.GRAVEYARD) { @@ -151,11 +146,6 @@ class GisaAndGeralfWatcher extends Watcher { } } - @Override - public GisaAndGeralfWatcher copy() { - return new GisaAndGeralfWatcher(this); - } - @Override public void reset() { super.reset(); diff --git a/Mage.Sets/src/mage/cards/g/Gomazoa.java b/Mage.Sets/src/mage/cards/g/Gomazoa.java index fb217b8627e..d402f5ae662 100644 --- a/Mage.Sets/src/mage/cards/g/Gomazoa.java +++ b/Mage.Sets/src/mage/cards/g/Gomazoa.java @@ -123,16 +123,6 @@ class BlockedByWatcher extends Watcher { super(WatcherScope.CARD); } - private BlockedByWatcher(final BlockedByWatcher watcher) { - super(watcher); - this.blockedByWatcher.addAll(watcher.blockedByWatcher); - } - - @Override - public BlockedByWatcher copy() { - return new BlockedByWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.BLOCKER_DECLARED) { diff --git a/Mage.Sets/src/mage/cards/g/GontisMachinations.java b/Mage.Sets/src/mage/cards/g/GontisMachinations.java index c69a3692b4c..7222bdb4833 100644 --- a/Mage.Sets/src/mage/cards/g/GontisMachinations.java +++ b/Mage.Sets/src/mage/cards/g/GontisMachinations.java @@ -100,11 +100,6 @@ class GontisMachinationsFirstLostLifeThisTurnWatcher extends Watcher { super(WatcherScope.GAME); } - public GontisMachinationsFirstLostLifeThisTurnWatcher(final GontisMachinationsFirstLostLifeThisTurnWatcher watcher) { - super(watcher); - this.playersLostLife.putAll(watcher.playersLostLife); - } - @Override public void watch(GameEvent event, Game game) { switch (event.getType()) { @@ -115,10 +110,6 @@ class GontisMachinationsFirstLostLifeThisTurnWatcher extends Watcher { } } - @Override - public GontisMachinationsFirstLostLifeThisTurnWatcher copy() { - return new GontisMachinationsFirstLostLifeThisTurnWatcher(this); - } @Override public void reset() { diff --git a/Mage.Sets/src/mage/cards/g/GrandWarlordRadha.java b/Mage.Sets/src/mage/cards/g/GrandWarlordRadha.java index 9eefb0a7f13..a12f01e9c59 100644 --- a/Mage.Sets/src/mage/cards/g/GrandWarlordRadha.java +++ b/Mage.Sets/src/mage/cards/g/GrandWarlordRadha.java @@ -68,11 +68,6 @@ class CreaturesAttackedWatcher extends Watcher { super(WatcherScope.GAME); } - public CreaturesAttackedWatcher(final CreaturesAttackedWatcher watcher) { - super(watcher); - this.attackedThisTurnCreatures.addAll(watcher.attackedThisTurnCreatures); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.BEGIN_COMBAT_STEP_PRE) { @@ -86,12 +81,6 @@ class CreaturesAttackedWatcher extends Watcher { public Set getAttackedThisTurnCreatures() { return this.attackedThisTurnCreatures; } - - @Override - public CreaturesAttackedWatcher copy() { - return new CreaturesAttackedWatcher(this); - } - } class GrandWarlordRadhaTriggeredAbility extends TriggeredAbilityImpl { diff --git a/Mage.Sets/src/mage/cards/g/GrimReminder.java b/Mage.Sets/src/mage/cards/g/GrimReminder.java index b2c5af2216b..e864a5d2fbb 100644 --- a/Mage.Sets/src/mage/cards/g/GrimReminder.java +++ b/Mage.Sets/src/mage/cards/g/GrimReminder.java @@ -119,13 +119,6 @@ class GrimReminderWatcher extends Watcher { super(WatcherScope.GAME); } - public GrimReminderWatcher(final GrimReminderWatcher watcher) { - super(watcher); - for (Map.Entry> entry : watcher.playersCastSpell.entrySet()) { - playersCastSpell.put(entry.getKey(), entry.getValue()); - } - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.SPELL_CAST) { @@ -147,9 +140,4 @@ class GrimReminderWatcher extends Watcher { return playersCastSpell.getOrDefault(spellName, new HashSet<>()); } - @Override - public GrimReminderWatcher copy() { - return new GrimReminderWatcher(this); - } - } diff --git a/Mage.Sets/src/mage/cards/g/GrothamaAllDevouring.java b/Mage.Sets/src/mage/cards/g/GrothamaAllDevouring.java index 21997da89ad..c576139f725 100644 --- a/Mage.Sets/src/mage/cards/g/GrothamaAllDevouring.java +++ b/Mage.Sets/src/mage/cards/g/GrothamaAllDevouring.java @@ -174,22 +174,6 @@ class GrothamaAllDevouringWatcher extends Watcher { super(WatcherScope.GAME); } - GrothamaAllDevouringWatcher(final GrothamaAllDevouringWatcher watcher) { - super(watcher); - for (MageObjectReference mor : watcher.damageMap.keySet()) { - this.damageMap.putIfAbsent(mor, new HashMap<>()); - for (UUID key : watcher.damageMap.get(mor).keySet()) { - this.damageMap.get(mor).putIfAbsent(key, 0); - this.damageMap.get(mor).compute(key, (k, damage) -> damage + watcher.damageMap.get(mor).get(key)); - } - } - } - - @Override - public GrothamaAllDevouringWatcher copy() { - return new GrothamaAllDevouringWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() != GameEvent.EventType.DAMAGED_CREATURE) { diff --git a/Mage.Sets/src/mage/cards/g/GuildmagesForum.java b/Mage.Sets/src/mage/cards/g/GuildmagesForum.java index f13e1700f9e..c2ad5d97657 100644 --- a/Mage.Sets/src/mage/cards/g/GuildmagesForum.java +++ b/Mage.Sets/src/mage/cards/g/GuildmagesForum.java @@ -62,16 +62,6 @@ class GuildmagesForumWatcher extends Watcher { this.source = source; } - GuildmagesForumWatcher(final GuildmagesForumWatcher watcher) { - super(watcher); - this.source = watcher.source; - } - - @Override - public GuildmagesForumWatcher copy() { - return new GuildmagesForumWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == EventType.MANA_PAID) { diff --git a/Mage.Sets/src/mage/cards/h/HallOfTheBanditLord.java b/Mage.Sets/src/mage/cards/h/HallOfTheBanditLord.java index 067ac1c399e..74b4f6f11ca 100644 --- a/Mage.Sets/src/mage/cards/h/HallOfTheBanditLord.java +++ b/Mage.Sets/src/mage/cards/h/HallOfTheBanditLord.java @@ -70,17 +70,6 @@ class HallOfTheBanditLordWatcher extends Watcher { this.source = source; } - HallOfTheBanditLordWatcher(final HallOfTheBanditLordWatcher watcher) { - super(watcher); - this.creatures.addAll(watcher.creatures); - this.source = watcher.source; - } - - @Override - public HallOfTheBanditLordWatcher copy() { - return new HallOfTheBanditLordWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == EventType.MANA_PAID) { diff --git a/Mage.Sets/src/mage/cards/h/HomicidalBruteWatcher.java b/Mage.Sets/src/mage/cards/h/HomicidalBruteWatcher.java index 944a7481400..4425e8cba38 100644 --- a/Mage.Sets/src/mage/cards/h/HomicidalBruteWatcher.java +++ b/Mage.Sets/src/mage/cards/h/HomicidalBruteWatcher.java @@ -11,15 +11,6 @@ public class HomicidalBruteWatcher extends Watcher { super(WatcherScope.CARD); } - public HomicidalBruteWatcher(final HomicidalBruteWatcher watcher) { - super(watcher); - } - - @Override - public HomicidalBruteWatcher copy() { - return new HomicidalBruteWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (condition) { diff --git a/Mage.Sets/src/mage/cards/h/HopeOfGhirapur.java b/Mage.Sets/src/mage/cards/h/HopeOfGhirapur.java index c20236e8c10..0143975285d 100644 --- a/Mage.Sets/src/mage/cards/h/HopeOfGhirapur.java +++ b/Mage.Sets/src/mage/cards/h/HopeOfGhirapur.java @@ -142,20 +142,6 @@ class HopeOfGhirapurCombatDamageWatcher extends Watcher { super(WatcherScope.GAME); } - public HopeOfGhirapurCombatDamageWatcher(final HopeOfGhirapurCombatDamageWatcher watcher) { - super(watcher); - for (MageObjectReference damager : watcher.combatDamagedPlayers.keySet()) { - Set players = new HashSet<>(); - players.addAll(watcher.combatDamagedPlayers.get(damager)); - this.combatDamagedPlayers.put(damager, players); - } - } - - @Override - public HopeOfGhirapurCombatDamageWatcher copy() { - return new HopeOfGhirapurCombatDamageWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == EventType.DAMAGED_PLAYER && ((DamagedPlayerEvent) event).isCombatDamage()) { diff --git a/Mage.Sets/src/mage/cards/h/HotheadedGiant.java b/Mage.Sets/src/mage/cards/h/HotheadedGiant.java index e475b41aad9..deb65034b7c 100644 --- a/Mage.Sets/src/mage/cards/h/HotheadedGiant.java +++ b/Mage.Sets/src/mage/cards/h/HotheadedGiant.java @@ -85,16 +85,6 @@ class HotHeadedGiantWatcher extends Watcher { this.cardId = cardId; } - public HotHeadedGiantWatcher(final HotHeadedGiantWatcher watcher) { - super(watcher); - this.cardId = watcher.cardId; - } - - @Override - public HotHeadedGiantWatcher copy() { - return new HotHeadedGiantWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (condition == true) { //no need to check - condition has already occured diff --git a/Mage.Sets/src/mage/cards/i/IcefallRegent.java b/Mage.Sets/src/mage/cards/i/IcefallRegent.java index ec71d655531..c18b3920063 100644 --- a/Mage.Sets/src/mage/cards/i/IcefallRegent.java +++ b/Mage.Sets/src/mage/cards/i/IcefallRegent.java @@ -146,10 +146,6 @@ class IcefallRegentWatcher extends Watcher { super(WatcherScope.CARD); } - IcefallRegentWatcher(IcefallRegentWatcher watcher) { - super(watcher); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.LOST_CONTROL && event.getPlayerId().equals(controllerId) && event.getTargetId().equals(sourceId)) { @@ -170,11 +166,6 @@ class IcefallRegentWatcher extends Watcher { public void reset() { //don't reset condition each turn - only when this leaves the battlefield } - - @Override - public IcefallRegentWatcher copy() { - return new IcefallRegentWatcher(this); - } } class IcefallRegentCostIncreaseEffect extends CostModificationEffectImpl { diff --git a/Mage.Sets/src/mage/cards/i/IchneumonDruid.java b/Mage.Sets/src/mage/cards/i/IchneumonDruid.java index 0e878b98155..c3410562516 100644 --- a/Mage.Sets/src/mage/cards/i/IchneumonDruid.java +++ b/Mage.Sets/src/mage/cards/i/IchneumonDruid.java @@ -100,18 +100,6 @@ class IchneumonDruidWatcher extends Watcher { super(WatcherScope.GAME); } - public IchneumonDruidWatcher(final IchneumonDruidWatcher watcher) { - super(watcher); - for (Map.Entry entry : watcher.playerInstantCount.entrySet()) { - playerInstantCount.put(entry.getKey(), entry.getValue()); - } - } - - @Override - public IchneumonDruidWatcher copy() { - return new IchneumonDruidWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == EventType.SPELL_CAST) { diff --git a/Mage.Sets/src/mage/cards/i/ImpactResonance.java b/Mage.Sets/src/mage/cards/i/ImpactResonance.java index 2706a616066..6a570a9fe3f 100644 --- a/Mage.Sets/src/mage/cards/i/ImpactResonance.java +++ b/Mage.Sets/src/mage/cards/i/ImpactResonance.java @@ -93,16 +93,6 @@ class GreatestAmountOfDamageWatcher extends Watcher { super(WatcherScope.GAME); } - public GreatestAmountOfDamageWatcher(final GreatestAmountOfDamageWatcher watcher) { - super(watcher); - this.damageAmount = watcher.damageAmount; - } - - @Override - public GreatestAmountOfDamageWatcher copy() { - return new GreatestAmountOfDamageWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { switch(event.getType()) { diff --git a/Mage.Sets/src/mage/cards/i/IncendiaryFlow.java b/Mage.Sets/src/mage/cards/i/IncendiaryFlow.java index 5aad5c9cb51..d65967082a7 100644 --- a/Mage.Sets/src/mage/cards/i/IncendiaryFlow.java +++ b/Mage.Sets/src/mage/cards/i/IncendiaryFlow.java @@ -27,7 +27,7 @@ public final class IncendiaryFlow extends CardImpl { Effect effect = new DealtDamageToCreatureBySourceDies(this, Duration.EndOfTurn); effect.setText("If a creature dealt damage this way would die this turn, exile it instead"); this.getSpellAbility().addEffect(effect); - this.getSpellAbility().addWatcher(new DamagedByWatcher()); + this.getSpellAbility().addWatcher(new DamagedByWatcher(false)); } public IncendiaryFlow(final IncendiaryFlow card) { diff --git a/Mage.Sets/src/mage/cards/i/Incinerate.java b/Mage.Sets/src/mage/cards/i/Incinerate.java index 4a0a926243b..bf0a47ca757 100644 --- a/Mage.Sets/src/mage/cards/i/Incinerate.java +++ b/Mage.Sets/src/mage/cards/i/Incinerate.java @@ -29,7 +29,7 @@ public final class Incinerate extends CardImpl { this.getSpellAbility().addEffect(new DamageTargetEffect(3)); this.getSpellAbility().addTarget(new TargetAnyTarget()); this.getSpellAbility().addEffect(new IncinerateEffect()); - this.getSpellAbility().addWatcher(new DamagedByWatcher()); + this.getSpellAbility().addWatcher(new DamagedByWatcher(false)); } public Incinerate(final Incinerate card) { diff --git a/Mage.Sets/src/mage/cards/i/InfernoTrap.java b/Mage.Sets/src/mage/cards/i/InfernoTrap.java index f2fcc17d1c4..45a6e425944 100644 --- a/Mage.Sets/src/mage/cards/i/InfernoTrap.java +++ b/Mage.Sets/src/mage/cards/i/InfernoTrap.java @@ -75,11 +75,6 @@ class InfernoTrapWatcher extends Watcher { super(WatcherScope.GAME); } - public InfernoTrapWatcher(final InfernoTrapWatcher watcher) { - super(watcher); - playerDamagedByCreature.putAll(watcher.playerDamagedByCreature); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.DAMAGED_PLAYER @@ -106,8 +101,4 @@ class InfernoTrapWatcher extends Watcher { playerDamagedByCreature.clear(); } - @Override - public InfernoTrapWatcher copy() { - return new InfernoTrapWatcher(this); - } } diff --git a/Mage.Sets/src/mage/cards/i/InsatiableRakghoul.java b/Mage.Sets/src/mage/cards/i/InsatiableRakghoul.java index 37b3660d767..d4d4765c4f9 100644 --- a/Mage.Sets/src/mage/cards/i/InsatiableRakghoul.java +++ b/Mage.Sets/src/mage/cards/i/InsatiableRakghoul.java @@ -86,10 +86,6 @@ class NonArtifactCreaturesDiedWatcher extends Watcher { super(WatcherScope.GAME); } - public NonArtifactCreaturesDiedWatcher(final NonArtifactCreaturesDiedWatcher watcher) { - super(watcher); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.ZONE_CHANGE) { @@ -102,9 +98,4 @@ class NonArtifactCreaturesDiedWatcher extends Watcher { } } - @Override - public NonArtifactCreaturesDiedWatcher copy() { - return new NonArtifactCreaturesDiedWatcher(this); - } - } diff --git a/Mage.Sets/src/mage/cards/i/Insist.java b/Mage.Sets/src/mage/cards/i/Insist.java index 8d2f4d559b3..f2d7b9d1e36 100644 --- a/Mage.Sets/src/mage/cards/i/Insist.java +++ b/Mage.Sets/src/mage/cards/i/Insist.java @@ -107,16 +107,6 @@ class InsistWatcher extends Watcher { super(WatcherScope.PLAYER); } - InsistWatcher(final InsistWatcher watcher) { - super(watcher); - this.uncounterableSpell = watcher.uncounterableSpell; - } - - @Override - public InsistWatcher copy() { - return new InsistWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.SPELL_CAST && ready) { diff --git a/Mage.Sets/src/mage/cards/j/JandorsRing.java b/Mage.Sets/src/mage/cards/j/JandorsRing.java index eab1ac4cfbd..c9022834ae4 100644 --- a/Mage.Sets/src/mage/cards/j/JandorsRing.java +++ b/Mage.Sets/src/mage/cards/j/JandorsRing.java @@ -100,11 +100,6 @@ class JandorsRingWatcher extends Watcher { super(WatcherScope.GAME); } - public JandorsRingWatcher(final JandorsRingWatcher watcher) { - super(watcher); - this.lastDrawnCards.putAll(watcher.lastDrawnCards); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.DREW_CARD) { @@ -112,11 +107,6 @@ class JandorsRingWatcher extends Watcher { } } - @Override - public JandorsRingWatcher copy() { - return new JandorsRingWatcher(this); - } - @Override public void reset() { super.reset(); @@ -124,7 +114,7 @@ class JandorsRingWatcher extends Watcher { } public UUID getLastDrewCard(UUID playerId) { - return lastDrawnCards.getOrDefault(null, playerId); + return lastDrawnCards.get(playerId); } } diff --git a/Mage.Sets/src/mage/cards/j/JayaBallardTaskMage.java b/Mage.Sets/src/mage/cards/j/JayaBallardTaskMage.java index 2939117b8bf..7fb9ad232ca 100644 --- a/Mage.Sets/src/mage/cards/j/JayaBallardTaskMage.java +++ b/Mage.Sets/src/mage/cards/j/JayaBallardTaskMage.java @@ -59,7 +59,7 @@ public final class JayaBallardTaskMage extends CardImpl { ability.addCost(new TapSourceCost()); ability.addCost(new DiscardCardCost()); ability.addEffect(new CantRegenerateEffect()); - this.addAbility(ability, new DamagedByWatcher()); + this.addAbility(ability, new DamagedByWatcher(false)); // {5}{R}{R}, {tap}, Discard a card: Jaya Ballard deals 6 damage to each creature and each player. ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageEverythingEffect(6), new ManaCostsImpl("{5}{R}{R}")); diff --git a/Mage.Sets/src/mage/cards/j/JelevaNephaliasScourge.java b/Mage.Sets/src/mage/cards/j/JelevaNephaliasScourge.java index 4dc59ed8f2c..77a311f8562 100644 --- a/Mage.Sets/src/mage/cards/j/JelevaNephaliasScourge.java +++ b/Mage.Sets/src/mage/cards/j/JelevaNephaliasScourge.java @@ -147,15 +147,6 @@ class JelevaNephaliasWatcher extends Watcher { super(WatcherScope.GAME); } - public JelevaNephaliasWatcher(final JelevaNephaliasWatcher watcher) { - super(watcher); - } - - @Override - public JelevaNephaliasWatcher copy() { - return new JelevaNephaliasWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { // Watcher saves all casts becaus of possible Clone cards that copy Jeleva diff --git a/Mage.Sets/src/mage/cards/k/KaradorGhostChieftain.java b/Mage.Sets/src/mage/cards/k/KaradorGhostChieftain.java index 1ea6ab2fe60..8fb5c83c0a4 100644 --- a/Mage.Sets/src/mage/cards/k/KaradorGhostChieftain.java +++ b/Mage.Sets/src/mage/cards/k/KaradorGhostChieftain.java @@ -178,11 +178,6 @@ class KaradorGhostChieftainWatcher extends Watcher { super(WatcherScope.CARD); } - KaradorGhostChieftainWatcher(final KaradorGhostChieftainWatcher watcher) { - super(watcher); - this.abilityUsed = watcher.abilityUsed; - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.SPELL_CAST @@ -194,11 +189,6 @@ class KaradorGhostChieftainWatcher extends Watcher { } } - @Override - public KaradorGhostChieftainWatcher copy() { - return new KaradorGhostChieftainWatcher(this); - } - @Override public void reset() { super.reset(); diff --git a/Mage.Sets/src/mage/cards/k/KessDissidentMage.java b/Mage.Sets/src/mage/cards/k/KessDissidentMage.java index 3e4e88f6078..618935d7f3c 100644 --- a/Mage.Sets/src/mage/cards/k/KessDissidentMage.java +++ b/Mage.Sets/src/mage/cards/k/KessDissidentMage.java @@ -162,12 +162,6 @@ class KessDissidentMageWatcher extends Watcher { super(WatcherScope.GAME); } - private KessDissidentMageWatcher(final KessDissidentMageWatcher watcher) { - super(watcher); - this.allowingObjects.addAll(watcher.allowingObjects); - this.castSpells.putAll(watcher.castSpells); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.SPELL_CAST @@ -184,11 +178,6 @@ class KessDissidentMageWatcher extends Watcher { } } - @Override - public KessDissidentMageWatcher copy() { - return new KessDissidentMageWatcher(this); - } - @Override public void reset() { super.reset(); diff --git a/Mage.Sets/src/mage/cards/k/KnightsOfTheBlackRose.java b/Mage.Sets/src/mage/cards/k/KnightsOfTheBlackRose.java index 7d0f2532e8f..7862b083448 100644 --- a/Mage.Sets/src/mage/cards/k/KnightsOfTheBlackRose.java +++ b/Mage.Sets/src/mage/cards/k/KnightsOfTheBlackRose.java @@ -108,9 +108,6 @@ class MonarchAtTurnStartWatcher extends Watcher { super(WatcherScope.GAME); } - public MonarchAtTurnStartWatcher(final MonarchAtTurnStartWatcher watcher) { - super(watcher); - } @Override public void watch(GameEvent event, Game game) { @@ -120,10 +117,6 @@ class MonarchAtTurnStartWatcher extends Watcher { } } - @Override - public MonarchAtTurnStartWatcher copy() { - return new MonarchAtTurnStartWatcher(this); - } @Override public void reset() { diff --git a/Mage.Sets/src/mage/cards/k/KrovikanVampire.java b/Mage.Sets/src/mage/cards/k/KrovikanVampire.java index 47197080a50..b8247dd765f 100644 --- a/Mage.Sets/src/mage/cards/k/KrovikanVampire.java +++ b/Mage.Sets/src/mage/cards/k/KrovikanVampire.java @@ -147,16 +147,6 @@ class KrovikanVampireCreaturesDamagedWatcher extends Watcher { super(WatcherScope.GAME); } - public KrovikanVampireCreaturesDamagedWatcher(final KrovikanVampireCreaturesDamagedWatcher watcher) { - super(watcher); - this.damagedBySource.addAll(watcher.damagedBySource); - } - - @Override - public KrovikanVampireCreaturesDamagedWatcher copy() { - return new KrovikanVampireCreaturesDamagedWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == EventType.DAMAGED_CREATURE @@ -183,11 +173,6 @@ class KrovikanVampireCreaturesDiedWatcher extends Watcher { super(WatcherScope.GAME); } - public KrovikanVampireCreaturesDiedWatcher(final KrovikanVampireCreaturesDiedWatcher watcher) { - super(watcher); - this.diedThisTurn.addAll(watcher.diedThisTurn); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.ZONE_CHANGE) { @@ -208,11 +193,6 @@ class KrovikanVampireCreaturesDiedWatcher extends Watcher { public Set getDiedThisTurn() { return this.diedThisTurn; } - - @Override - public KrovikanVampireCreaturesDiedWatcher copy() { - return new KrovikanVampireCreaturesDiedWatcher(this); - } } class KrovikanVampireDelayedTriggeredAbility extends DelayedTriggeredAbility { diff --git a/Mage.Sets/src/mage/cards/k/KumanoMasterYamabushi.java b/Mage.Sets/src/mage/cards/k/KumanoMasterYamabushi.java index d7ee89ce657..371a716cbfe 100644 --- a/Mage.Sets/src/mage/cards/k/KumanoMasterYamabushi.java +++ b/Mage.Sets/src/mage/cards/k/KumanoMasterYamabushi.java @@ -67,7 +67,7 @@ public final class KumanoMasterYamabushi extends CardImpl { ability.addTarget(new TargetAnyTarget()); this.addAbility(ability); // If a creature dealt damage by Kumano this turn would die, exile it instead. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new DealtDamageToCreatureBySourceDies(this, Duration.WhileOnBattlefield)), new DamagedByWatcher()); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new DealtDamageToCreatureBySourceDies(this, Duration.WhileOnBattlefield)), new DamagedByWatcher(false)); } diff --git a/Mage.Sets/src/mage/cards/k/KumanosBlessing.java b/Mage.Sets/src/mage/cards/k/KumanosBlessing.java index 675c8c6973b..196790799e4 100644 --- a/Mage.Sets/src/mage/cards/k/KumanosBlessing.java +++ b/Mage.Sets/src/mage/cards/k/KumanosBlessing.java @@ -112,16 +112,6 @@ class DamagedByEnchantedWatcher extends Watcher { super(WatcherScope.CARD); } - public DamagedByEnchantedWatcher(final DamagedByEnchantedWatcher watcher) { - super(watcher); - this.damagedCreatures.addAll(watcher.damagedCreatures); - } - - @Override - public DamagedByEnchantedWatcher copy() { - return new DamagedByEnchantedWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == EventType.DAMAGED_CREATURE) { diff --git a/Mage.Sets/src/mage/cards/k/KumanosPupils.java b/Mage.Sets/src/mage/cards/k/KumanosPupils.java index 5dc8e2ceb87..160eeebc173 100644 --- a/Mage.Sets/src/mage/cards/k/KumanosPupils.java +++ b/Mage.Sets/src/mage/cards/k/KumanosPupils.java @@ -28,7 +28,7 @@ public final class KumanosPupils extends CardImpl { this.toughness = new MageInt(3); // If a creature dealt damage by Kumano's Pupils this turn would die, exile it instead. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new DealtDamageToCreatureBySourceDies(this, Duration.WhileOnBattlefield)), new DamagedByWatcher()); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new DealtDamageToCreatureBySourceDies(this, Duration.WhileOnBattlefield)), new DamagedByWatcher(false)); } public KumanosPupils(final KumanosPupils card) { diff --git a/Mage.Sets/src/mage/cards/k/KydeleChosenOfKruphix.java b/Mage.Sets/src/mage/cards/k/KydeleChosenOfKruphix.java index 2bd53139c84..413693b66db 100644 --- a/Mage.Sets/src/mage/cards/k/KydeleChosenOfKruphix.java +++ b/Mage.Sets/src/mage/cards/k/KydeleChosenOfKruphix.java @@ -88,11 +88,6 @@ class KydeleCardsDrawnThisTurnWatcher extends Watcher { super(WatcherScope.GAME); } - public KydeleCardsDrawnThisTurnWatcher(final KydeleCardsDrawnThisTurnWatcher watcher) { - super(watcher); - this.cardsDrawnThisTurn.putAll(watcher.cardsDrawnThisTurn); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.DREW_CARD) { @@ -111,9 +106,4 @@ class KydeleCardsDrawnThisTurnWatcher extends Watcher { cardsDrawnThisTurn.clear(); } - - @Override - public KydeleCardsDrawnThisTurnWatcher copy() { - return new KydeleCardsDrawnThisTurnWatcher(this); - } } diff --git a/Mage.Sets/src/mage/cards/m/ManaMaze.java b/Mage.Sets/src/mage/cards/m/ManaMaze.java index 3d3504a2b4d..bcdb38d061e 100644 --- a/Mage.Sets/src/mage/cards/m/ManaMaze.java +++ b/Mage.Sets/src/mage/cards/m/ManaMaze.java @@ -90,16 +90,6 @@ class LastSpellCastWatcher extends Watcher { super(WatcherScope.GAME); } - public LastSpellCastWatcher(final LastSpellCastWatcher watcher) { - super(watcher); - this.lastSpellCast = watcher.getLastSpellCast(); - } - - @Override - public LastSpellCastWatcher copy() { - return new LastSpellCastWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == EventType.SPELL_CAST) { diff --git a/Mage.Sets/src/mage/cards/m/MasterWarcraft.java b/Mage.Sets/src/mage/cards/m/MasterWarcraft.java index 4889ff1da7b..3fabd6af7e9 100644 --- a/Mage.Sets/src/mage/cards/m/MasterWarcraft.java +++ b/Mage.Sets/src/mage/cards/m/MasterWarcraft.java @@ -257,11 +257,6 @@ class MasterWarcraftCastWatcher extends Watcher { super(WatcherScope.GAME); } - public MasterWarcraftCastWatcher(final MasterWarcraftCastWatcher watcher) { - super(watcher); - this.copyCount = watcher.copyCount; - this.copyCountApply = watcher.copyCountApply; - } @Override public void reset() { @@ -269,11 +264,6 @@ class MasterWarcraftCastWatcher extends Watcher { copyCountApply = 0; } - @Override - public MasterWarcraftCastWatcher copy() { - return new MasterWarcraftCastWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { } diff --git a/Mage.Sets/src/mage/cards/m/MindstormCrown.java b/Mage.Sets/src/mage/cards/m/MindstormCrown.java index 61b16ec2573..bb350724be4 100644 --- a/Mage.Sets/src/mage/cards/m/MindstormCrown.java +++ b/Mage.Sets/src/mage/cards/m/MindstormCrown.java @@ -83,11 +83,6 @@ class MindstormCrownWatcher extends Watcher { super(WatcherScope.GAME); } - public MindstormCrownWatcher(final MindstormCrownWatcher watcher) { - super(watcher); - cardsInHandCount = watcher.cardsInHandCount; - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.BEGINNING_PHASE_PRE @@ -110,8 +105,4 @@ class MindstormCrownWatcher extends Watcher { cardsInHandCount = 0; } - @Override - public MindstormCrownWatcher copy() { - return new MindstormCrownWatcher(this); - } } diff --git a/Mage.Sets/src/mage/cards/m/MoltenPsyche.java b/Mage.Sets/src/mage/cards/m/MoltenPsyche.java index b8b6f7f18cd..74a8fef6c59 100644 --- a/Mage.Sets/src/mage/cards/m/MoltenPsyche.java +++ b/Mage.Sets/src/mage/cards/m/MoltenPsyche.java @@ -114,11 +114,6 @@ class MoltenPsycheWatcher extends Watcher { super(WatcherScope.GAME); } - public MoltenPsycheWatcher(final MoltenPsycheWatcher watcher) { - super(watcher); - this.draws.putAll(watcher.draws); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.DREW_CARD) { @@ -140,9 +135,4 @@ class MoltenPsycheWatcher extends Watcher { return draws.getOrDefault(playerId, 0); } - @Override - public MoltenPsycheWatcher copy() { - return new MoltenPsycheWatcher(this); - } - } diff --git a/Mage.Sets/src/mage/cards/m/MuldrothaTheGravetide.java b/Mage.Sets/src/mage/cards/m/MuldrothaTheGravetide.java index fc550654167..67f5a5ff6d6 100644 --- a/Mage.Sets/src/mage/cards/m/MuldrothaTheGravetide.java +++ b/Mage.Sets/src/mage/cards/m/MuldrothaTheGravetide.java @@ -124,16 +124,6 @@ class MuldrothaTheGravetideWatcher extends Watcher { super(WatcherScope.GAME); } - public MuldrothaTheGravetideWatcher(final MuldrothaTheGravetideWatcher watcher) { - super(watcher); - sourcePlayedPermanentTypes.putAll(watcher.sourcePlayedPermanentTypes); - } - - @Override - public MuldrothaTheGravetideWatcher copy() { - return new MuldrothaTheGravetideWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.PLAY_LAND) { diff --git a/Mage.Sets/src/mage/cards/m/MultanisPresence.java b/Mage.Sets/src/mage/cards/m/MultanisPresence.java index 3000f24d968..20268de1939 100644 --- a/Mage.Sets/src/mage/cards/m/MultanisPresence.java +++ b/Mage.Sets/src/mage/cards/m/MultanisPresence.java @@ -78,16 +78,6 @@ class MultanisPresenceWatcher extends Watcher { super(WatcherScope.GAME); } - public MultanisPresenceWatcher(final MultanisPresenceWatcher watcher) { - super(watcher); - this.spellsCast.putAll(watcher.spellsCast); - } - - @Override - public MultanisPresenceWatcher copy() { - return new MultanisPresenceWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (GameEvent.EventType.SPELL_CAST == event.getType()) { diff --git a/Mage.Sets/src/mage/cards/n/NoRestForTheWicked.java b/Mage.Sets/src/mage/cards/n/NoRestForTheWicked.java index 0b0ceb3c9b3..30a203e54bb 100644 --- a/Mage.Sets/src/mage/cards/n/NoRestForTheWicked.java +++ b/Mage.Sets/src/mage/cards/n/NoRestForTheWicked.java @@ -98,12 +98,6 @@ class NoRestForTheWickedWatcher extends Watcher { this.cards = new ArrayList<>(); } - public NoRestForTheWickedWatcher(final NoRestForTheWickedWatcher watcher) { - super(watcher); - this.cards = new ArrayList<>(); - this.cards.addAll(watcher.cards); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.ZONE_CHANGE @@ -113,11 +107,6 @@ class NoRestForTheWickedWatcher extends Watcher { } } - @Override - public NoRestForTheWickedWatcher copy() { - return new NoRestForTheWickedWatcher(this); - } - @Override public void reset() { super.reset(); diff --git a/Mage.Sets/src/mage/cards/o/OathOfChandra.java b/Mage.Sets/src/mage/cards/o/OathOfChandra.java index 57f63826f98..a6018a68aa1 100644 --- a/Mage.Sets/src/mage/cards/o/OathOfChandra.java +++ b/Mage.Sets/src/mage/cards/o/OathOfChandra.java @@ -88,11 +88,6 @@ class OathOfChandraWatcher extends Watcher { super(WatcherScope.GAME); } - public OathOfChandraWatcher(final OathOfChandraWatcher watcher) { - super(watcher); - this.players.addAll(watcher.players); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.ZONE_CHANGE) { @@ -113,9 +108,4 @@ class OathOfChandraWatcher extends Watcher { return players.contains(playerId); } - @Override - public OathOfChandraWatcher copy() { - return new OathOfChandraWatcher(this); - } - } diff --git a/Mage.Sets/src/mage/cards/o/OathOfLiliana.java b/Mage.Sets/src/mage/cards/o/OathOfLiliana.java index d6e81fc7755..cfa8e7ebef9 100644 --- a/Mage.Sets/src/mage/cards/o/OathOfLiliana.java +++ b/Mage.Sets/src/mage/cards/o/OathOfLiliana.java @@ -76,11 +76,6 @@ class OathOfLilianaWatcher extends Watcher { super(WatcherScope.GAME); } - public OathOfLilianaWatcher(final OathOfLilianaWatcher watcher) { - super(watcher); - this.players.addAll(watcher.players); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.ZONE_CHANGE) { @@ -101,9 +96,5 @@ class OathOfLilianaWatcher extends Watcher { return players.contains(playerId); } - @Override - public OathOfLilianaWatcher copy() { - return new OathOfLilianaWatcher(this); - } } diff --git a/Mage.Sets/src/mage/cards/o/OpalPalace.java b/Mage.Sets/src/mage/cards/o/OpalPalace.java index e010390c4f1..7e1111639a0 100644 --- a/Mage.Sets/src/mage/cards/o/OpalPalace.java +++ b/Mage.Sets/src/mage/cards/o/OpalPalace.java @@ -71,21 +71,10 @@ class OpalPalaceWatcher extends Watcher { this.originalId = originalId; } - private OpalPalaceWatcher(final OpalPalaceWatcher watcher) { - super(watcher); - this.commanderId.addAll(watcher.commanderId); - this.originalId = watcher.originalId; - } - public boolean manaUsedToCastCommander(UUID id){ return commanderId.contains(id); } - @Override - public OpalPalaceWatcher copy() { - return new OpalPalaceWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.MANA_PAID) { diff --git a/Mage.Sets/src/mage/cards/o/Overmaster.java b/Mage.Sets/src/mage/cards/o/Overmaster.java index 1f91bc98411..cad85af450f 100644 --- a/Mage.Sets/src/mage/cards/o/Overmaster.java +++ b/Mage.Sets/src/mage/cards/o/Overmaster.java @@ -109,15 +109,6 @@ class OvermasterWatcher extends Watcher { super(WatcherScope.PLAYER); } - OvermasterWatcher(final OvermasterWatcher watcher) { - super(watcher); - this.uncounterableSpell = watcher.uncounterableSpell; - } - - @Override - public OvermasterWatcher copy() { - return new OvermasterWatcher(this); - } @Override public void watch(GameEvent event, Game game) { diff --git a/Mage.Sets/src/mage/cards/p/PalladiaMorsTheRuiner.java b/Mage.Sets/src/mage/cards/p/PalladiaMorsTheRuiner.java index f65845133d1..87a4da96fe9 100644 --- a/Mage.Sets/src/mage/cards/p/PalladiaMorsTheRuiner.java +++ b/Mage.Sets/src/mage/cards/p/PalladiaMorsTheRuiner.java @@ -97,16 +97,6 @@ class PalladiaMorsTheRuinerWatcher extends Watcher { super(WatcherScope.GAME); } - public PalladiaMorsTheRuinerWatcher(final PalladiaMorsTheRuinerWatcher watcher) { - super(watcher); - damagers.addAll(watcher.damagers); - } - - @Override - public PalladiaMorsTheRuinerWatcher copy() { - return new PalladiaMorsTheRuinerWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { switch (event.getType()) { diff --git a/Mage.Sets/src/mage/cards/p/PatriciansScorn.java b/Mage.Sets/src/mage/cards/p/PatriciansScorn.java index c9f0ed7d5f0..55f37ce127e 100644 --- a/Mage.Sets/src/mage/cards/p/PatriciansScorn.java +++ b/Mage.Sets/src/mage/cards/p/PatriciansScorn.java @@ -76,15 +76,6 @@ class PatriciansScornWatcher extends Watcher { super(WatcherScope.CARD); } - public PatriciansScornWatcher(final PatriciansScornWatcher watcher) { - super(watcher); - } - - @Override - public PatriciansScornWatcher copy() { - return new PatriciansScornWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (condition) { //no need to check - condition has already occured diff --git a/Mage.Sets/src/mage/cards/p/PillarOfFlame.java b/Mage.Sets/src/mage/cards/p/PillarOfFlame.java index 1c8fc6bbf05..a860c2b310f 100644 --- a/Mage.Sets/src/mage/cards/p/PillarOfFlame.java +++ b/Mage.Sets/src/mage/cards/p/PillarOfFlame.java @@ -25,7 +25,7 @@ public final class PillarOfFlame extends CardImpl { this.getSpellAbility().addTarget(new TargetAnyTarget()); // If a creature dealt damage this way would die this turn, exile it instead. this.getSpellAbility().addEffect(new DealtDamageToCreatureBySourceDies(this, Duration.EndOfTurn)); - this.getSpellAbility().addWatcher(new DamagedByWatcher()); + this.getSpellAbility().addWatcher(new DamagedByWatcher(false)); } public PillarOfFlame(final PillarOfFlame card) { diff --git a/Mage.Sets/src/mage/cards/p/PowerSurge.java b/Mage.Sets/src/mage/cards/p/PowerSurge.java index dd2ee01afdd..22ca93093d1 100644 --- a/Mage.Sets/src/mage/cards/p/PowerSurge.java +++ b/Mage.Sets/src/mage/cards/p/PowerSurge.java @@ -94,11 +94,6 @@ class PowerSurgeWatcher extends Watcher { super(WatcherScope.GAME); } - public PowerSurgeWatcher(final PowerSurgeWatcher watcher) { - super(watcher); - untappedLandCount = watcher.untappedLandCount; - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.BEGINNING_PHASE_PRE @@ -115,9 +110,4 @@ class PowerSurgeWatcher extends Watcher { public void reset() { untappedLandCount = 0; } - - @Override - public PowerSurgeWatcher copy() { - return new PowerSurgeWatcher(this); - } } diff --git a/Mage.Sets/src/mage/cards/p/PredatoryAdvantage.java b/Mage.Sets/src/mage/cards/p/PredatoryAdvantage.java index 8b7bba0c138..fc3ca9a5b9e 100644 --- a/Mage.Sets/src/mage/cards/p/PredatoryAdvantage.java +++ b/Mage.Sets/src/mage/cards/p/PredatoryAdvantage.java @@ -68,10 +68,6 @@ class CastCreatureWatcher extends Watcher { super(WatcherScope.CARD); } - public CastCreatureWatcher(final CastCreatureWatcher watcher) { - super(watcher); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.SPELL_CAST @@ -83,9 +79,4 @@ class CastCreatureWatcher extends Watcher { } } } - - @Override - public CastCreatureWatcher copy() { - return new CastCreatureWatcher(this); - } } diff --git a/Mage.Sets/src/mage/cards/p/PrematureBurial.java b/Mage.Sets/src/mage/cards/p/PrematureBurial.java index a4542bed63f..090465914fd 100644 --- a/Mage.Sets/src/mage/cards/p/PrematureBurial.java +++ b/Mage.Sets/src/mage/cards/p/PrematureBurial.java @@ -107,14 +107,6 @@ class ETBSinceYourLastTurnWatcher extends Watcher { this.playerToETBMap = new HashMap<>(); } - public ETBSinceYourLastTurnWatcher(ETBSinceYourLastTurnWatcher watcher) { - super(watcher); - this.playerToETBMap = new HashMap<>(); - for (UUID player : watcher.playerToETBMap.keySet()){ - this.playerToETBMap.put(player, new HashSet<>(watcher.playerToETBMap.get(player))); - } - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.END_TURN_STEP_POST){ @@ -137,9 +129,4 @@ class ETBSinceYourLastTurnWatcher extends Watcher { public boolean enteredSinceLastTurn(UUID player, MageObjectReference mor){ return playerToETBMap.get(player).contains(mor); } - - @Override - public ETBSinceYourLastTurnWatcher copy() { - return new ETBSinceYourLastTurnWatcher(this); - } } \ No newline at end of file diff --git a/Mage.Sets/src/mage/cards/q/Quicken.java b/Mage.Sets/src/mage/cards/q/Quicken.java index 3ccc2a178b6..e476a897f85 100644 --- a/Mage.Sets/src/mage/cards/q/Quicken.java +++ b/Mage.Sets/src/mage/cards/q/Quicken.java @@ -103,15 +103,6 @@ class QuickenWatcher extends Watcher { super(WatcherScope.GAME); } - private QuickenWatcher(final QuickenWatcher watcher) { - super(watcher); - } - - @Override - public QuickenWatcher copy() { - return new QuickenWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.SPELL_CAST) { diff --git a/Mage.Sets/src/mage/cards/r/RageOfPurphoros.java b/Mage.Sets/src/mage/cards/r/RageOfPurphoros.java index 90d17015112..c6dd62267eb 100644 --- a/Mage.Sets/src/mage/cards/r/RageOfPurphoros.java +++ b/Mage.Sets/src/mage/cards/r/RageOfPurphoros.java @@ -28,7 +28,7 @@ public final class RageOfPurphoros extends CardImpl { this.getSpellAbility().addEffect(new CantRegenerateTargetEffect(Duration.EndOfTurn, "It")); this.getSpellAbility().addEffect(new ScryEffect(1)); - this.getSpellAbility().addWatcher(new DamagedByWatcher()); + this.getSpellAbility().addWatcher(new DamagedByWatcher(false)); } public RageOfPurphoros(final RageOfPurphoros card) { diff --git a/Mage.Sets/src/mage/cards/r/RasputinDreamweaver.java b/Mage.Sets/src/mage/cards/r/RasputinDreamweaver.java index 73f4feebf41..e3fc6822f81 100644 --- a/Mage.Sets/src/mage/cards/r/RasputinDreamweaver.java +++ b/Mage.Sets/src/mage/cards/r/RasputinDreamweaver.java @@ -107,20 +107,10 @@ class RasputinDreamweaverStartedUntappedWatcher extends Watcher { super(WatcherScope.GAME); } - RasputinDreamweaverStartedUntappedWatcher(final RasputinDreamweaverStartedUntappedWatcher watcher) { - super(watcher); - this.startedUntapped.addAll(watcher.startedUntapped); - } - - @Override - public RasputinDreamweaverStartedUntappedWatcher copy() { - return new RasputinDreamweaverStartedUntappedWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == EventType.BEGINNING_PHASE_PRE) { - game.getBattlefield().getAllActivePermanents(filter, game).stream().forEach(permanent -> startedUntapped.add(permanent.getId())); + game.getBattlefield().getAllActivePermanents(filter, game).forEach(permanent -> startedUntapped.add(permanent.getId())); } } diff --git a/Mage.Sets/src/mage/cards/r/RedSunsZenith.java b/Mage.Sets/src/mage/cards/r/RedSunsZenith.java index 9d39917e0ce..49507924fe2 100644 --- a/Mage.Sets/src/mage/cards/r/RedSunsZenith.java +++ b/Mage.Sets/src/mage/cards/r/RedSunsZenith.java @@ -29,7 +29,7 @@ public final class RedSunsZenith extends CardImpl { this.getSpellAbility().addEffect(new DamageTargetEffect(ManacostVariableValue.instance)); this.getSpellAbility().addEffect(new DealtDamageToCreatureBySourceDies(this, Duration.EndOfTurn)); this.getSpellAbility().addEffect(ShuffleSpellEffect.getInstance()); - this.getSpellAbility().addWatcher(new DamagedByWatcher()); + this.getSpellAbility().addWatcher(new DamagedByWatcher(false)); } public RedSunsZenith(final RedSunsZenith card) { diff --git a/Mage.Sets/src/mage/cards/r/ReversePolarity.java b/Mage.Sets/src/mage/cards/r/ReversePolarity.java index 360daa6ed25..98c2ba67386 100644 --- a/Mage.Sets/src/mage/cards/r/ReversePolarity.java +++ b/Mage.Sets/src/mage/cards/r/ReversePolarity.java @@ -72,13 +72,6 @@ class ReversePolarityWatcher extends Watcher { super(WatcherScope.GAME); } - public ReversePolarityWatcher(final ReversePolarityWatcher watcher) { - super(watcher); - for (Entry entry : watcher.artifactDamageReceivedThisTurn.entrySet()) { - artifactDamageReceivedThisTurn.put(entry.getKey(), entry.getValue()); - } - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.DAMAGED_PLAYER) { @@ -102,8 +95,4 @@ class ReversePolarityWatcher extends Watcher { artifactDamageReceivedThisTurn.clear(); } - @Override - public ReversePolarityWatcher copy() { - return new ReversePolarityWatcher(this); - } } diff --git a/Mage.Sets/src/mage/cards/r/RocketLauncher.java b/Mage.Sets/src/mage/cards/r/RocketLauncher.java index ed0fcbcc7be..498e8556528 100644 --- a/Mage.Sets/src/mage/cards/r/RocketLauncher.java +++ b/Mage.Sets/src/mage/cards/r/RocketLauncher.java @@ -61,12 +61,6 @@ class RocketLauncherWatcher extends Watcher { this.cardId = cardId; } - public RocketLauncherWatcher(final RocketLauncherWatcher watcher) { - super(watcher); - this.changedControllerOR1stTurn = watcher.isChangedControllerOR1stTurn(); - this.cardId = watcher.cardId; - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.CLEANUP_STEP_POST) { @@ -78,10 +72,6 @@ class RocketLauncherWatcher extends Watcher { } } - @Override - public RocketLauncherWatcher copy() { - return new RocketLauncherWatcher(this); - } @Override public void reset() { diff --git a/Mage.Sets/src/mage/cards/r/Runesword.java b/Mage.Sets/src/mage/cards/r/Runesword.java index 5692512b9ee..0f879aa7a70 100644 --- a/Mage.Sets/src/mage/cards/r/Runesword.java +++ b/Mage.Sets/src/mage/cards/r/Runesword.java @@ -47,7 +47,7 @@ public final class Runesword extends CardImpl { ability.addEffect(new RuneswordCantBeRegeneratedEffect()); // If a creature dealt damage by the targeted creature would die this turn, exile that creature instead. SimpleStaticAbility ability2 = new SimpleStaticAbility(Zone.BATTLEFIELD, new DealtDamageToCreatureBySourceDies(this, Duration.Custom)); - ability2.addWatcher(new DamagedByWatcher()); + ability2.addWatcher(new DamagedByWatcher(false)); ability2.setRuleVisible(false); ability.addEffect(new GainAbilityTargetEffect(ability2, Duration.EndOfTurn, null, false).setText( "If a creature dealt damage by the targeted creature would die this turn, exile that creature instead")); diff --git a/Mage.Sets/src/mage/cards/s/SavageSummoning.java b/Mage.Sets/src/mage/cards/s/SavageSummoning.java index f20f939cf87..8c4d07ebba3 100644 --- a/Mage.Sets/src/mage/cards/s/SavageSummoning.java +++ b/Mage.Sets/src/mage/cards/s/SavageSummoning.java @@ -125,22 +125,6 @@ class SavageSummoningWatcher extends Watcher { super(WatcherScope.PLAYER); } - public SavageSummoningWatcher(final SavageSummoningWatcher watcher) { - super(watcher); - this.savageSummoningSpells.addAll(watcher.savageSummoningSpells); - for (Entry> entry : watcher.spellsCastWithSavageSummoning.entrySet()) { - this.spellsCastWithSavageSummoning.put(entry.getKey(), entry.getValue()); - } - for (Entry> entry : watcher.cardsCastWithSavageSummoning.entrySet()) { - this.cardsCastWithSavageSummoning.put(entry.getKey(), entry.getValue()); - } - } - - @Override - public SavageSummoningWatcher copy() { - return new SavageSummoningWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.SPELL_CAST) { diff --git a/Mage.Sets/src/mage/cards/s/ScoutsWarning.java b/Mage.Sets/src/mage/cards/s/ScoutsWarning.java index 0310f8d1f5d..4797b0fffbd 100644 --- a/Mage.Sets/src/mage/cards/s/ScoutsWarning.java +++ b/Mage.Sets/src/mage/cards/s/ScoutsWarning.java @@ -104,15 +104,6 @@ class ScoutsWarningWatcher extends Watcher { super(WatcherScope.PLAYER); } - public ScoutsWarningWatcher(final ScoutsWarningWatcher watcher) { - super(watcher); - } - - @Override - public ScoutsWarningWatcher copy() { - return new ScoutsWarningWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.SPELL_CAST) { diff --git a/Mage.Sets/src/mage/cards/s/SeaTroll.java b/Mage.Sets/src/mage/cards/s/SeaTroll.java index 2db49072d52..fecb5898b07 100644 --- a/Mage.Sets/src/mage/cards/s/SeaTroll.java +++ b/Mage.Sets/src/mage/cards/s/SeaTroll.java @@ -62,11 +62,6 @@ class SeaTrollWatcher extends Watcher { blockedOrBlockedByBlueThisTurnCreatures = new HashSet<>(); } - public SeaTrollWatcher(SeaTrollWatcher watcher) { - super(watcher); - this.blockedOrBlockedByBlueThisTurnCreatures = new HashSet<>(watcher.blockedOrBlockedByBlueThisTurnCreatures); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.BLOCKER_DECLARED) { @@ -90,11 +85,6 @@ class SeaTrollWatcher extends Watcher { public boolean blockedOrBlockedByBlueCreatureThisTurn(MageObjectReference creature){ return blockedOrBlockedByBlueThisTurnCreatures.contains(creature); } - - @Override - public SeaTrollWatcher copy() { - return new SeaTrollWatcher(this); - } } class SeaTrollCondition implements Condition { diff --git a/Mage.Sets/src/mage/cards/s/SeasonOfTheWitch.java b/Mage.Sets/src/mage/cards/s/SeasonOfTheWitch.java index f50857d9f2a..35ec167b157 100644 --- a/Mage.Sets/src/mage/cards/s/SeasonOfTheWitch.java +++ b/Mage.Sets/src/mage/cards/s/SeasonOfTheWitch.java @@ -115,11 +115,6 @@ class CouldAttackThisTurnWatcher extends Watcher { super(WatcherScope.GAME); } - public CouldAttackThisTurnWatcher(final CouldAttackThisTurnWatcher watcher) { - super(watcher); - this.couldAttackThisTurnCreatures.addAll(watcher.couldAttackThisTurnCreatures); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.DECLARE_ATTACKERS_STEP_PRE) { @@ -151,11 +146,6 @@ class CouldAttackThisTurnWatcher extends Watcher { return this.couldAttackThisTurnCreatures; } - @Override - public CouldAttackThisTurnWatcher copy() { - return new CouldAttackThisTurnWatcher(this); - } - @Override public void reset() { super.reset(); diff --git a/Mage.Sets/src/mage/cards/s/SecondSunrise.java b/Mage.Sets/src/mage/cards/s/SecondSunrise.java index 80eab7a411c..3d173af8853 100644 --- a/Mage.Sets/src/mage/cards/s/SecondSunrise.java +++ b/Mage.Sets/src/mage/cards/s/SecondSunrise.java @@ -85,11 +85,6 @@ class SecondSunriseWatcher extends Watcher { super(WatcherScope.GAME); } - public SecondSunriseWatcher(final SecondSunriseWatcher watcher) { - super(watcher); - this.cards.addAll(watcher.cards); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.ZONE_CHANGE && ((ZoneChangeEvent)event).isDiesEvent()) { @@ -97,11 +92,6 @@ class SecondSunriseWatcher extends Watcher { } } - @Override - public SecondSunriseWatcher copy() { - return new SecondSunriseWatcher(this); - } - @Override public void reset() { super.reset(); diff --git a/Mage.Sets/src/mage/cards/s/SentinelTower.java b/Mage.Sets/src/mage/cards/s/SentinelTower.java index 7b0f0667b16..bc33d74c3b3 100644 --- a/Mage.Sets/src/mage/cards/s/SentinelTower.java +++ b/Mage.Sets/src/mage/cards/s/SentinelTower.java @@ -105,16 +105,6 @@ class SentinelTowerWatcher extends Watcher { this.spellsThisTurn = new ArrayList<>(); } - SentinelTowerWatcher(final SentinelTowerWatcher effect) { - super(effect); - this.spellsThisTurn = effect.spellsThisTurn; - } - - @Override - public SentinelTowerWatcher copy() { - return new SentinelTowerWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.SPELL_CAST) { diff --git a/Mage.Sets/src/mage/cards/s/SerpentineSpike.java b/Mage.Sets/src/mage/cards/s/SerpentineSpike.java index 4a88f807b40..1f60475aee1 100644 --- a/Mage.Sets/src/mage/cards/s/SerpentineSpike.java +++ b/Mage.Sets/src/mage/cards/s/SerpentineSpike.java @@ -53,7 +53,7 @@ public final class SerpentineSpike extends CardImpl { Effect effect = new DealtDamageToCreatureBySourceDies(this, Duration.EndOfTurn); effect.setText("If a creature dealt damage this way would die this turn, exile it instead"); this.getSpellAbility().addEffect(effect); - this.getSpellAbility().addWatcher(new DamagedByWatcher()); + this.getSpellAbility().addWatcher(new DamagedByWatcher(false)); } public SerpentineSpike(final SerpentineSpike card) { diff --git a/Mage.Sets/src/mage/cards/s/ShapeOfTheWiitigo.java b/Mage.Sets/src/mage/cards/s/ShapeOfTheWiitigo.java index 1d2774317e5..ee651c858ae 100644 --- a/Mage.Sets/src/mage/cards/s/ShapeOfTheWiitigo.java +++ b/Mage.Sets/src/mage/cards/s/ShapeOfTheWiitigo.java @@ -98,14 +98,6 @@ class AttackedOrBlockedSinceYourLastUpkeepWatcher extends Watcher{ super(WatcherScope.GAME); } - public AttackedOrBlockedSinceYourLastUpkeepWatcher(AttackedOrBlockedSinceYourLastUpkeepWatcher watcher) { - super(watcher); - for (Map.Entry> entry : watcher.attackedOrBlockedCreatures.entrySet()) { - Set allAttackersCopy = new HashSet<>(entry.getValue()); - attackedOrBlockedCreatures.put(entry.getKey(), allAttackersCopy); - } - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.UPKEEP_STEP_POST){ @@ -125,9 +117,4 @@ class AttackedOrBlockedSinceYourLastUpkeepWatcher extends Watcher{ public boolean attackedSinceLastUpkeep(MageObjectReference mor, UUID upkeepPlayer){ return attackedOrBlockedCreatures.get(upkeepPlayer).contains(mor); } - - @Override - public AttackedOrBlockedSinceYourLastUpkeepWatcher copy() { - return new AttackedOrBlockedSinceYourLastUpkeepWatcher(this); - } } \ No newline at end of file diff --git a/Mage.Sets/src/mage/cards/s/ShipbreakerKraken.java b/Mage.Sets/src/mage/cards/s/ShipbreakerKraken.java index 8fa28484983..2d20ff90ff7 100644 --- a/Mage.Sets/src/mage/cards/s/ShipbreakerKraken.java +++ b/Mage.Sets/src/mage/cards/s/ShipbreakerKraken.java @@ -124,10 +124,6 @@ class ShipbreakerKrakenWatcher extends Watcher { super(WatcherScope.CARD); } - ShipbreakerKrakenWatcher(ShipbreakerKrakenWatcher watcher) { - super(watcher); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.LOST_CONTROL && event.getPlayerId().equals(controllerId) && event.getTargetId().equals(sourceId)) { @@ -148,9 +144,4 @@ class ShipbreakerKrakenWatcher extends Watcher { public void reset() { //don't reset condition each turn - only when this leaves the battlefield } - - @Override - public ShipbreakerKrakenWatcher copy() { - return new ShipbreakerKrakenWatcher(this); - } } diff --git a/Mage.Sets/src/mage/cards/s/SiftThroughSands.java b/Mage.Sets/src/mage/cards/s/SiftThroughSands.java index 496d32332fd..72fcbdae294 100644 --- a/Mage.Sets/src/mage/cards/s/SiftThroughSands.java +++ b/Mage.Sets/src/mage/cards/s/SiftThroughSands.java @@ -83,20 +83,9 @@ class SiftThroughSandsWatcher extends Watcher { super(WatcherScope.PLAYER); } - public SiftThroughSandsWatcher(final SiftThroughSandsWatcher watcher) { - super(watcher); - this.castPeerThroughDepths = watcher.castPeerThroughDepths; - this.castReachThroughMists = watcher.castReachThroughMists; - } - - @Override - public SiftThroughSandsWatcher copy() { - return new SiftThroughSandsWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { - if (condition == true) { //no need to check - condition has already occured + if (condition) { //no need to check - condition has already occured return; } if (event.getType() == EventType.SPELL_CAST diff --git a/Mage.Sets/src/mage/cards/s/Skeletonize.java b/Mage.Sets/src/mage/cards/s/Skeletonize.java index d00c5ef3749..edf74e58413 100644 --- a/Mage.Sets/src/mage/cards/s/Skeletonize.java +++ b/Mage.Sets/src/mage/cards/s/Skeletonize.java @@ -34,7 +34,7 @@ public final class Skeletonize extends CardImpl { this.getSpellAbility().addTarget(new TargetCreaturePermanent()); // When a creature dealt damage this way dies this turn, create a 1/1 black Skeleton creature token with "{B}: Regenerate this creature." this.getSpellAbility().addEffect(new SkeletonizeEffect()); - this.getSpellAbility().addWatcher(new DamagedByWatcher()); + this.getSpellAbility().addWatcher(new DamagedByWatcher(false)); } public Skeletonize(final Skeletonize card) { diff --git a/Mage.Sets/src/mage/cards/s/SoulReap.java b/Mage.Sets/src/mage/cards/s/SoulReap.java index d0b9a7d1df9..ba1fb190a2d 100644 --- a/Mage.Sets/src/mage/cards/s/SoulReap.java +++ b/Mage.Sets/src/mage/cards/s/SoulReap.java @@ -88,16 +88,6 @@ class SoulReapWatcher extends Watcher { this.cardId = cardId; } - public SoulReapWatcher(final SoulReapWatcher watcher) { - super(watcher); - this.cardId = watcher.cardId; - } - - @Override - public SoulReapWatcher copy() { - return new SoulReapWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (condition == true) { //no need to check - condition has already occured diff --git a/Mage.Sets/src/mage/cards/s/SpinerockKnoll.java b/Mage.Sets/src/mage/cards/s/SpinerockKnoll.java index b4f870c9e94..2a9ea0a9dd3 100644 --- a/Mage.Sets/src/mage/cards/s/SpinerockKnoll.java +++ b/Mage.Sets/src/mage/cards/s/SpinerockKnoll.java @@ -94,13 +94,6 @@ class SpinerockKnollWatcher extends Watcher { super(WatcherScope.CARD); } - SpinerockKnollWatcher(final SpinerockKnollWatcher watcher) { - super(watcher); - for (Entry entry : watcher.amountOfDamageReceivedThisTurn.entrySet()) { - amountOfDamageReceivedThisTurn.put(entry.getKey(), entry.getValue()); - } - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == EventType.DAMAGED_PLAYER) { @@ -121,9 +114,4 @@ class SpinerockKnollWatcher extends Watcher { public void reset() { amountOfDamageReceivedThisTurn.clear(); } - - @Override - public SpinerockKnollWatcher copy() { - return new SpinerockKnollWatcher(this); - } } diff --git a/Mage.Sets/src/mage/cards/s/SpinyStarfish.java b/Mage.Sets/src/mage/cards/s/SpinyStarfish.java index e5c93b37510..8c577809ac4 100644 --- a/Mage.Sets/src/mage/cards/s/SpinyStarfish.java +++ b/Mage.Sets/src/mage/cards/s/SpinyStarfish.java @@ -1,8 +1,5 @@ package mage.cards.s; -import java.util.HashMap; -import java.util.Map; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.BeginningOfEndStepTriggeredAbility; @@ -16,16 +13,16 @@ import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.RegenerateSourceEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.SubType; -import mage.constants.TargetController; -import mage.constants.WatcherScope; -import mage.constants.Zone; +import mage.constants.*; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.permanent.token.StarfishToken; import mage.watchers.Watcher; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + /** * @author spike */ @@ -36,10 +33,10 @@ public final class SpinyStarfish extends CardImpl { this.subtype.add(SubType.STARFISH); this.power = new MageInt(0); this.toughness = new MageInt(1); - + // {U}: Regenerate Spiny Starfish. this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new RegenerateSourceEffect(), new ManaCostsImpl("{U}"))); - + // At the beginning of each end step, if Spiny Starfish regenerated this turn, create a 0/1 blue Starfish creature token for each time it regenerated this turn. this.addAbility( new ConditionalInterveningIfTriggeredAbility( @@ -48,7 +45,7 @@ public final class SpinyStarfish extends CardImpl { new StarfishToken(), new SpinyStarfishDynamicValue()), TargetController.ANY, - false), + false), SpinyStarfishCondition.instance, "At the beginning of each end step, if {this} regenerated this turn, create a 0/1 blue Starfish creature token for each time it regenerated this turn."), new SpinyStarfishWatcher()); @@ -91,11 +88,6 @@ class SpinyStarfishWatcher extends Watcher { super(WatcherScope.GAME); } - public SpinyStarfishWatcher(final SpinyStarfishWatcher watcher) { - super(watcher); - this.regeneratedCount.putAll(watcher.regeneratedCount); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.REGENERATED) { @@ -115,17 +107,9 @@ class SpinyStarfishWatcher extends Watcher { } public int regeneratedCount(UUID sourceId) { - Integer count = regeneratedCount.get(sourceId); - if (count == null) { - return 0; - } - return count; + return regeneratedCount.getOrDefault(sourceId, 0); } - @Override - public SpinyStarfishWatcher copy() { - return new SpinyStarfishWatcher(this); - } } class SpinyStarfishDynamicValue implements DynamicValue { diff --git a/Mage.Sets/src/mage/cards/s/SpiritOfTheLabyrinth.java b/Mage.Sets/src/mage/cards/s/SpiritOfTheLabyrinth.java index 9742ff206e8..e2b15723872 100644 --- a/Mage.Sets/src/mage/cards/s/SpiritOfTheLabyrinth.java +++ b/Mage.Sets/src/mage/cards/s/SpiritOfTheLabyrinth.java @@ -54,17 +54,6 @@ class SpiritOfTheLabyrinthWatcher extends Watcher { this.playersThatDrewCard = new HashSet<>(); } - public SpiritOfTheLabyrinthWatcher(final SpiritOfTheLabyrinthWatcher watcher) { - super(watcher); - this.playersThatDrewCard = new HashSet<>(); - playersThatDrewCard.addAll(watcher.playersThatDrewCard); - } - - @Override - public SpiritOfTheLabyrinthWatcher copy() { - return new SpiritOfTheLabyrinthWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.DREW_CARD ) { diff --git a/Mage.Sets/src/mage/cards/s/SpoilsOfBlood.java b/Mage.Sets/src/mage/cards/s/SpoilsOfBlood.java index 065afc0eafc..ba8ba86f38e 100644 --- a/Mage.Sets/src/mage/cards/s/SpoilsOfBlood.java +++ b/Mage.Sets/src/mage/cards/s/SpoilsOfBlood.java @@ -87,15 +87,6 @@ class CreaturesDiedThisTurnWatcher extends Watcher { super(WatcherScope.GAME); } - public CreaturesDiedThisTurnWatcher(final CreaturesDiedThisTurnWatcher watcher) { - super(watcher); - } - - @Override - public CreaturesDiedThisTurnWatcher copy() { - return new CreaturesDiedThisTurnWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == EventType.ZONE_CHANGE && ((ZoneChangeEvent) event).isDiesEvent()) { diff --git a/Mage.Sets/src/mage/cards/s/SteelHellkite.java b/Mage.Sets/src/mage/cards/s/SteelHellkite.java index b114bfb4d66..52b43564935 100644 --- a/Mage.Sets/src/mage/cards/s/SteelHellkite.java +++ b/Mage.Sets/src/mage/cards/s/SteelHellkite.java @@ -107,11 +107,6 @@ class SteelHellkiteWatcher extends Watcher { super(WatcherScope.GAME); } - public SteelHellkiteWatcher(final SteelHellkiteWatcher watcher) { - super(watcher); - this.damageMap.putAll(watcher.damageMap); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.DAMAGED_PLAYER @@ -127,11 +122,6 @@ class SteelHellkiteWatcher extends Watcher { this.damageMap.clear(); } - @Override - public Watcher copy() { - return new SteelHellkiteWatcher(this); - } - public Set getDamagedPlayers(UUID damagerId) { return damageMap.getOrDefault(damagerId, new HashSet<>()); } diff --git a/Mage.Sets/src/mage/cards/s/StorrevDevkarinLich.java b/Mage.Sets/src/mage/cards/s/StorrevDevkarinLich.java index 1190dcee438..37f697ef688 100644 --- a/Mage.Sets/src/mage/cards/s/StorrevDevkarinLich.java +++ b/Mage.Sets/src/mage/cards/s/StorrevDevkarinLich.java @@ -93,11 +93,6 @@ class StorrevDevkarinLichWatcher extends Watcher { super(WatcherScope.GAME); } - private StorrevDevkarinLichWatcher(final StorrevDevkarinLichWatcher watcher) { - super(watcher); - this.cards.addAll(watcher.cards); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.BEGIN_COMBAT_STEP_PRE) { @@ -112,10 +107,6 @@ class StorrevDevkarinLichWatcher extends Watcher { } } - @Override - public StorrevDevkarinLichWatcher copy() { - return new StorrevDevkarinLichWatcher(this); - } boolean wasPutInAGraveyardThisCombat(UUID cardId, Game game) { for (MageObjectReference mor : cards) { diff --git a/Mage.Sets/src/mage/cards/s/SummoningTrap.java b/Mage.Sets/src/mage/cards/s/SummoningTrap.java index f7d55ddde26..26b70f88fdf 100644 --- a/Mage.Sets/src/mage/cards/s/SummoningTrap.java +++ b/Mage.Sets/src/mage/cards/s/SummoningTrap.java @@ -73,16 +73,6 @@ class SummoningTrapWatcher extends Watcher { super(WatcherScope.GAME); } - public SummoningTrapWatcher(final SummoningTrapWatcher watcher) { - super(watcher); - this.players.addAll(watcher.players); - } - - @Override - public SummoningTrapWatcher copy() { - return new SummoningTrapWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == EventType.COUNTERED) { diff --git a/Mage.Sets/src/mage/cards/s/SylvanLibrary.java b/Mage.Sets/src/mage/cards/s/SylvanLibrary.java index 259f1d96226..f18b270789c 100644 --- a/Mage.Sets/src/mage/cards/s/SylvanLibrary.java +++ b/Mage.Sets/src/mage/cards/s/SylvanLibrary.java @@ -122,11 +122,6 @@ class SylvanLibraryCardsDrawnThisTurnWatcher extends Watcher { super(WatcherScope.GAME); } - public SylvanLibraryCardsDrawnThisTurnWatcher(final SylvanLibraryCardsDrawnThisTurnWatcher watcher) { - super(watcher); - this.cardsDrawnThisTurn.putAll(watcher.cardsDrawnThisTurn); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.DREW_CARD) { @@ -146,11 +141,6 @@ class SylvanLibraryCardsDrawnThisTurnWatcher extends Watcher { super.reset(); cardsDrawnThisTurn.clear(); } - - @Override - public SylvanLibraryCardsDrawnThisTurnWatcher copy() { - return new SylvanLibraryCardsDrawnThisTurnWatcher(this); - } } class CardIdPredicate implements Predicate { diff --git a/Mage.Sets/src/mage/cards/t/TalarasBattalion.java b/Mage.Sets/src/mage/cards/t/TalarasBattalion.java index cba7bb5c0fb..105b37f6e3e 100644 --- a/Mage.Sets/src/mage/cards/t/TalarasBattalion.java +++ b/Mage.Sets/src/mage/cards/t/TalarasBattalion.java @@ -116,16 +116,6 @@ class TalarasBattalionWatcher extends Watcher { this.cardId = cardId; } - public TalarasBattalionWatcher(final TalarasBattalionWatcher watcher) { - super(watcher); - this.cardId = watcher.cardId; - } - - @Override - public TalarasBattalionWatcher copy() { - return new TalarasBattalionWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (condition == true) { //no need to check - condition has already occured diff --git a/Mage.Sets/src/mage/cards/t/TapestryOfTheAges.java b/Mage.Sets/src/mage/cards/t/TapestryOfTheAges.java index f73f6f41518..9bd1cbbc3cf 100644 --- a/Mage.Sets/src/mage/cards/t/TapestryOfTheAges.java +++ b/Mage.Sets/src/mage/cards/t/TapestryOfTheAges.java @@ -74,11 +74,6 @@ class PlayerCastNonCreatureSpellWatcher extends Watcher { super(WatcherScope.GAME); } - public PlayerCastNonCreatureSpellWatcher(final PlayerCastNonCreatureSpellWatcher watcher) { - super(watcher); - this.playerIds.addAll(watcher.playerIds); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.SPELL_CAST) { @@ -89,11 +84,6 @@ class PlayerCastNonCreatureSpellWatcher extends Watcher { } } - @Override - public PlayerCastNonCreatureSpellWatcher copy() { - return new PlayerCastNonCreatureSpellWatcher(this); - } - @Override public void reset() { super.reset(); diff --git a/Mage.Sets/src/mage/cards/t/TerritorialHellkite.java b/Mage.Sets/src/mage/cards/t/TerritorialHellkite.java index 6dfeef82323..216087e911c 100644 --- a/Mage.Sets/src/mage/cards/t/TerritorialHellkite.java +++ b/Mage.Sets/src/mage/cards/t/TerritorialHellkite.java @@ -67,21 +67,12 @@ public final class TerritorialHellkite extends CardImpl { class AttackedLastCombatWatcher extends Watcher { // Map> - public final Map> attackedLastCombatPlayers = new HashMap<>(); + private final Map> attackedLastCombatPlayers = new HashMap<>(); public AttackedLastCombatWatcher() { super(WatcherScope.GAME); } - public AttackedLastCombatWatcher(final AttackedLastCombatWatcher watcher) { - super(watcher); - for (Entry> entry : watcher.attackedLastCombatPlayers.entrySet()) { - Map allAttackersCopy = new HashMap<>(); - allAttackersCopy.putAll(entry.getValue()); - attackedLastCombatPlayers.put(entry.getKey(), allAttackersCopy); - } - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.DECLARE_ATTACKERS_STEP_PRE) { @@ -104,12 +95,6 @@ class AttackedLastCombatWatcher extends Watcher { public Map getAttackedLastCombatPlayers(UUID combatPlayerId) { return attackedLastCombatPlayers.get(combatPlayerId); } - - @Override - public AttackedLastCombatWatcher copy() { - return new AttackedLastCombatWatcher(this); - } - } class AttackIfAbleTargetRandoOpponentSourceEffect extends OneShotEffect { diff --git a/Mage.Sets/src/mage/cards/t/TheChainVeil.java b/Mage.Sets/src/mage/cards/t/TheChainVeil.java index 972b89e991f..a7b8d242350 100644 --- a/Mage.Sets/src/mage/cards/t/TheChainVeil.java +++ b/Mage.Sets/src/mage/cards/t/TheChainVeil.java @@ -63,11 +63,6 @@ class ActivatedLoyaltyAbilityWatcher extends Watcher { super(WatcherScope.GAME); } - public ActivatedLoyaltyAbilityWatcher(final ActivatedLoyaltyAbilityWatcher watcher) { - super(watcher); - playerIds.addAll(watcher.playerIds); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.ACTIVATED_ABILITY) { @@ -85,11 +80,6 @@ class ActivatedLoyaltyAbilityWatcher extends Watcher { playerIds.clear(); } - @Override - public ActivatedLoyaltyAbilityWatcher copy() { - return new ActivatedLoyaltyAbilityWatcher(this); - } - public boolean activatedLoyaltyAbility(UUID playerId) { return playerIds.contains(playerId); } diff --git a/Mage.Sets/src/mage/cards/t/TheFallen.java b/Mage.Sets/src/mage/cards/t/TheFallen.java index 1696dd0d6db..38e010e4664 100644 --- a/Mage.Sets/src/mage/cards/t/TheFallen.java +++ b/Mage.Sets/src/mage/cards/t/TheFallen.java @@ -83,11 +83,6 @@ class TheFallenWatcher extends Watcher { super(WatcherScope.GAME); } - public TheFallenWatcher(final TheFallenWatcher watcher) { - super(watcher); - playersAndWalkersDealtDamageThisGame = new HashMap<>(watcher.playersAndWalkersDealtDamageThisGame); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.DAMAGED_PLAYER @@ -109,9 +104,4 @@ class TheFallenWatcher extends Watcher { public Set getPlayersAndWalkersDealtDamageThisGame(UUID creatureId) { return playersAndWalkersDealtDamageThisGame.get(creatureId); } - - @Override - public TheFallenWatcher copy() { - return new TheFallenWatcher(this); - } } diff --git a/Mage.Sets/src/mage/cards/t/ThirstingAxe.java b/Mage.Sets/src/mage/cards/t/ThirstingAxe.java index 7462f5396c3..d00bb9320ee 100644 --- a/Mage.Sets/src/mage/cards/t/ThirstingAxe.java +++ b/Mage.Sets/src/mage/cards/t/ThirstingAxe.java @@ -91,16 +91,6 @@ class CombatDamageToCreatureWatcher extends Watcher { dealtCombatDamageToCreature = new HashSet<>(); } - public CombatDamageToCreatureWatcher(final CombatDamageToCreatureWatcher watcher) { - super(watcher); - dealtCombatDamageToCreature = new HashSet<>(watcher.dealtCombatDamageToCreature); - } - - @Override - public CombatDamageToCreatureWatcher copy() { - return new CombatDamageToCreatureWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.DAMAGED_CREATURE) { diff --git a/Mage.Sets/src/mage/cards/t/ThousandYearStorm.java b/Mage.Sets/src/mage/cards/t/ThousandYearStorm.java index 77f82d9ddde..1e23deb5036 100644 --- a/Mage.Sets/src/mage/cards/t/ThousandYearStorm.java +++ b/Mage.Sets/src/mage/cards/t/ThousandYearStorm.java @@ -91,13 +91,6 @@ class ThousandYearWatcher extends Watcher { super(WatcherScope.GAME); } - public ThousandYearWatcher(final ThousandYearWatcher watcher) { - super(watcher); - for (Entry entry : watcher.amountOfInstantSorcerySpellsCastOnCurrentTurn.entrySet()) { - amountOfInstantSorcerySpellsCastOnCurrentTurn.put(entry.getKey(), entry.getValue()); - } - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.SPELL_CAST && !sourceId.equals(event.getTargetId())) { @@ -124,10 +117,4 @@ class ThousandYearWatcher extends Watcher { public int getAmountOfSpellsPlayerCastOnCurrentTurn(UUID playerId) { return amountOfInstantSorcerySpellsCastOnCurrentTurn.getOrDefault(playerId, 0); } - - @Override - public ThousandYearWatcher copy() { - return new ThousandYearWatcher(this); - } - } diff --git a/Mage.Sets/src/mage/cards/t/TidebinderMage.java b/Mage.Sets/src/mage/cards/t/TidebinderMage.java index c4f3efa11ba..b7bf7262d8e 100644 --- a/Mage.Sets/src/mage/cards/t/TidebinderMage.java +++ b/Mage.Sets/src/mage/cards/t/TidebinderMage.java @@ -133,10 +133,6 @@ class TidebinderMageWatcher extends Watcher { super(WatcherScope.CARD); } - TidebinderMageWatcher(TidebinderMageWatcher watcher) { - super(watcher); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.LOST_CONTROL && event.getPlayerId().equals(controllerId) && event.getTargetId().equals(sourceId)) { @@ -157,9 +153,4 @@ class TidebinderMageWatcher extends Watcher { public void reset() { //don't reset condition each turn - only when this leaves the battlefield } - - @Override - public TidebinderMageWatcher copy() { - return new TidebinderMageWatcher(this); - } } diff --git a/Mage.Sets/src/mage/cards/t/TimeOfIce.java b/Mage.Sets/src/mage/cards/t/TimeOfIce.java index 580d0b9c173..8307685b694 100644 --- a/Mage.Sets/src/mage/cards/t/TimeOfIce.java +++ b/Mage.Sets/src/mage/cards/t/TimeOfIce.java @@ -144,10 +144,6 @@ class TimeOfIceWatcher extends Watcher { super(WatcherScope.CARD); } - TimeOfIceWatcher(TimeOfIceWatcher watcher) { - super(watcher); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.LOST_CONTROL && event.getPlayerId().equals(controllerId) && event.getTargetId().equals(sourceId)) { @@ -168,9 +164,4 @@ class TimeOfIceWatcher extends Watcher { public void reset() { //don't reset condition each turn - only when this leaves the battlefield } - - @Override - public TimeOfIceWatcher copy() { - return new TimeOfIceWatcher(this); - } } diff --git a/Mage.Sets/src/mage/cards/t/TimeToReflect.java b/Mage.Sets/src/mage/cards/t/TimeToReflect.java index 8dfd1c7131e..ab4fa8e02dc 100644 --- a/Mage.Sets/src/mage/cards/t/TimeToReflect.java +++ b/Mage.Sets/src/mage/cards/t/TimeToReflect.java @@ -76,16 +76,6 @@ class BlockedOrWasBlockedByAZombieWatcher extends Watcher { blockedOrWasBlockedByAZombieWatcher = new HashSet<>(); } - public BlockedOrWasBlockedByAZombieWatcher(final BlockedOrWasBlockedByAZombieWatcher watcher) { - super(watcher); - blockedOrWasBlockedByAZombieWatcher = new HashSet<>(watcher.blockedOrWasBlockedByAZombieWatcher); - } - - @Override - public BlockedOrWasBlockedByAZombieWatcher copy() { - return new BlockedOrWasBlockedByAZombieWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.BLOCKER_DECLARED) { diff --git a/Mage.Sets/src/mage/cards/t/TouchOfTheVoid.java b/Mage.Sets/src/mage/cards/t/TouchOfTheVoid.java index d09585e40b6..f59386bd04f 100644 --- a/Mage.Sets/src/mage/cards/t/TouchOfTheVoid.java +++ b/Mage.Sets/src/mage/cards/t/TouchOfTheVoid.java @@ -31,7 +31,7 @@ public final class TouchOfTheVoid extends CardImpl { Effect effect = new DealtDamageToCreatureBySourceDies(this, Duration.EndOfTurn); effect.setText("If a creature dealt damage this way would die this turn, exile it instead"); this.getSpellAbility().addEffect(effect); - this.getSpellAbility().addWatcher(new DamagedByWatcher()); + this.getSpellAbility().addWatcher(new DamagedByWatcher(false)); } public TouchOfTheVoid(final TouchOfTheVoid card) { diff --git a/Mage.Sets/src/mage/cards/t/TritonTactics.java b/Mage.Sets/src/mage/cards/t/TritonTactics.java index f5f5a68fb8d..16fc8601f6d 100644 --- a/Mage.Sets/src/mage/cards/t/TritonTactics.java +++ b/Mage.Sets/src/mage/cards/t/TritonTactics.java @@ -188,10 +188,6 @@ class BlockedCreaturesWatcher extends Watcher { super(WatcherScope.CARD); } - public BlockedCreaturesWatcher(final BlockedCreaturesWatcher watcher) { - super(watcher); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.BLOCKER_DECLARED) { @@ -226,9 +222,4 @@ class BlockedCreaturesWatcher extends Watcher { attackers.add(CardUtil.getCardZoneString(null, attackerId, game)); game.getState().setValue("blockedAttackers" + getSourceId().toString(), attackerMap); } - - @Override - public BlockedCreaturesWatcher copy() { - return new BlockedCreaturesWatcher(this); - } } diff --git a/Mage.Sets/src/mage/cards/t/TunnelIgnus.java b/Mage.Sets/src/mage/cards/t/TunnelIgnus.java index 7de16b3c3ea..696611db50a 100644 --- a/Mage.Sets/src/mage/cards/t/TunnelIgnus.java +++ b/Mage.Sets/src/mage/cards/t/TunnelIgnus.java @@ -56,18 +56,6 @@ class TunnelIgnusWatcher extends Watcher { super(WatcherScope.PLAYER); } - public TunnelIgnusWatcher(final TunnelIgnusWatcher watcher) { - super(watcher); - for (Entry entry : watcher.counts.entrySet()) { - counts.put(entry.getKey(), entry.getValue()); - } - } - - @Override - public TunnelIgnusWatcher copy() { - return new TunnelIgnusWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.ENTERS_THE_BATTLEFIELD) { diff --git a/Mage.Sets/src/mage/cards/t/TuvasaTheSunlit.java b/Mage.Sets/src/mage/cards/t/TuvasaTheSunlit.java index 3cda3fa3977..f0e8b6b7027 100644 --- a/Mage.Sets/src/mage/cards/t/TuvasaTheSunlit.java +++ b/Mage.Sets/src/mage/cards/t/TuvasaTheSunlit.java @@ -122,11 +122,6 @@ class TuvasaTheSunlitWatcher extends Watcher { super( WatcherScope.GAME); } - public TuvasaTheSunlitWatcher(final TuvasaTheSunlitWatcher watcher) { - super(watcher); - this.firstEnchantmentThisTurn.putAll(watcher.firstEnchantmentThisTurn); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.SPELL_CAST) { @@ -148,9 +143,4 @@ class TuvasaTheSunlitWatcher extends Watcher { public UUID getFirstEnchantmentThisTurn(UUID playerId) { return firstEnchantmentThisTurn.get(playerId); } - - @Override - public Watcher copy() { - return new TuvasaTheSunlitWatcher(this); - } } diff --git a/Mage.Sets/src/mage/cards/t/TymnaTheWeaver.java b/Mage.Sets/src/mage/cards/t/TymnaTheWeaver.java index 648aa4891d9..9dd2b4b8d4b 100644 --- a/Mage.Sets/src/mage/cards/t/TymnaTheWeaver.java +++ b/Mage.Sets/src/mage/cards/t/TymnaTheWeaver.java @@ -100,20 +100,6 @@ class TymnaTheWeaverWatcher extends Watcher { super(WatcherScope.GAME); } - public TymnaTheWeaverWatcher(final TymnaTheWeaverWatcher watcher) { - super(watcher); - for (UUID playerId : watcher.players.keySet()) { - Set opponents = new HashSet<>(); - opponents.addAll(watcher.players.get(playerId)); - players.put(playerId, opponents); - } - } - - @Override - public TymnaTheWeaverWatcher copy() { - return new TymnaTheWeaverWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == EventType.DAMAGED_PLAYER) { diff --git a/Mage.Sets/src/mage/cards/u/UbaMask.java b/Mage.Sets/src/mage/cards/u/UbaMask.java index 9f56aea2efb..5e2597bf0dc 100644 --- a/Mage.Sets/src/mage/cards/u/UbaMask.java +++ b/Mage.Sets/src/mage/cards/u/UbaMask.java @@ -135,16 +135,6 @@ class UbaMaskExiledCardsWatcher extends Watcher { super(WatcherScope.GAME); } - public UbaMaskExiledCardsWatcher(final UbaMaskExiledCardsWatcher watcher) { - super(watcher); - exiledCards.putAll(watcher.exiledCards); - } - - @Override - public UbaMaskExiledCardsWatcher copy() { - return new UbaMaskExiledCardsWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { // no events to watch diff --git a/Mage.Sets/src/mage/cards/u/UphillBattle.java b/Mage.Sets/src/mage/cards/u/UphillBattle.java index de4f6e2521b..c17232c30f0 100644 --- a/Mage.Sets/src/mage/cards/u/UphillBattle.java +++ b/Mage.Sets/src/mage/cards/u/UphillBattle.java @@ -53,17 +53,6 @@ class PlayCreatureLandWatcher extends Watcher { super(WatcherScope.GAME); } - public PlayCreatureLandWatcher(final PlayCreatureLandWatcher watcher) { - super(watcher); - playerPlayedLand.addAll(watcher.playerPlayedLand); - landPlayed.addAll(watcher.landPlayed); - } - - @Override - public PlayCreatureLandWatcher copy() { - return new PlayCreatureLandWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.PLAY_LAND) { diff --git a/Mage.Sets/src/mage/cards/u/UrzasMiter.java b/Mage.Sets/src/mage/cards/u/UrzasMiter.java index 9294d12231b..ff4a772bee1 100644 --- a/Mage.Sets/src/mage/cards/u/UrzasMiter.java +++ b/Mage.Sets/src/mage/cards/u/UrzasMiter.java @@ -78,11 +78,6 @@ class UrzasMiterWatcher extends Watcher { this.cards = new ArrayList<>(); } - public UrzasMiterWatcher(final UrzasMiterWatcher watcher) { - super(watcher); - this.cards = new ArrayList<>(); - this.cards.addAll(watcher.cards); - } @Override public void watch(GameEvent event, Game game) { @@ -91,11 +86,6 @@ class UrzasMiterWatcher extends Watcher { } } - @Override - public UrzasMiterWatcher copy() { - return new UrzasMiterWatcher(this); - } - @Override public void reset() { super.reset(); diff --git a/Mage.Sets/src/mage/cards/v/VeneratedLoxodon.java b/Mage.Sets/src/mage/cards/v/VeneratedLoxodon.java index b1696346d9a..fe6e849c35f 100644 --- a/Mage.Sets/src/mage/cards/v/VeneratedLoxodon.java +++ b/Mage.Sets/src/mage/cards/v/VeneratedLoxodon.java @@ -100,15 +100,6 @@ class VeneratedLoxodonWatcher extends Watcher { super(WatcherScope.GAME); } - public VeneratedLoxodonWatcher(final VeneratedLoxodonWatcher watcher) { - super(watcher); - for (Entry> entry : watcher.convokingCreatures.entrySet()) { - Set creatures = new HashSet<>(); - creatures.addAll(entry.getValue()); - convokingCreatures.put(entry.getKey(), creatures); - } - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.CONVOKED) { @@ -138,8 +129,4 @@ class VeneratedLoxodonWatcher extends Watcher { convokingCreatures.clear(); } - @Override - public VeneratedLoxodonWatcher copy() { - return new VeneratedLoxodonWatcher(this); - } } diff --git a/Mage.Sets/src/mage/cards/v/Vengevine.java b/Mage.Sets/src/mage/cards/v/Vengevine.java index 925fe3fc64b..5b52c37b3f3 100644 --- a/Mage.Sets/src/mage/cards/v/Vengevine.java +++ b/Mage.Sets/src/mage/cards/v/Vengevine.java @@ -94,16 +94,6 @@ class VengevineWatcher extends Watcher { super(WatcherScope.PLAYER); } - public VengevineWatcher(final VengevineWatcher watcher) { - super(watcher); - this.creatureSpellCount = watcher.creatureSpellCount; - } - - @Override - public VengevineWatcher copy() { - return new VengevineWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { condition = false; diff --git a/Mage.Sets/src/mage/cards/v/VileRedeemer.java b/Mage.Sets/src/mage/cards/v/VileRedeemer.java index c766a49f458..e4fc6d5fb1c 100644 --- a/Mage.Sets/src/mage/cards/v/VileRedeemer.java +++ b/Mage.Sets/src/mage/cards/v/VileRedeemer.java @@ -100,10 +100,6 @@ class VileRedeemerNonTokenCreaturesDiedWatcher extends Watcher { super(WatcherScope.GAME); } - public VileRedeemerNonTokenCreaturesDiedWatcher(final VileRedeemerNonTokenCreaturesDiedWatcher watcher) { - super(watcher); - this.amountOfCreaturesThatDied.putAll(watcher.amountOfCreaturesThatDied); - } @Override public void watch(GameEvent event, Game game) { @@ -127,10 +123,4 @@ class VileRedeemerNonTokenCreaturesDiedWatcher extends Watcher { public int getAmountOfNontokenCreatureDiedThisTurn(UUID playerId) { return amountOfCreaturesThatDied.getOrDefault(playerId, 0); } - - @Override - public VileRedeemerNonTokenCreaturesDiedWatcher copy() { - return new VileRedeemerNonTokenCreaturesDiedWatcher(this); - } - } diff --git a/Mage.Sets/src/mage/cards/v/VizierOfManyFaces.java b/Mage.Sets/src/mage/cards/v/VizierOfManyFaces.java index 27efbbf6524..ba8cc9edb23 100644 --- a/Mage.Sets/src/mage/cards/v/VizierOfManyFaces.java +++ b/Mage.Sets/src/mage/cards/v/VizierOfManyFaces.java @@ -101,16 +101,6 @@ class EmbalmedThisTurnWatcher extends Watcher { embalmedThisTurnTokens = new HashSet<>(); } - public EmbalmedThisTurnWatcher(final EmbalmedThisTurnWatcher watcher) { - super(watcher); - embalmedThisTurnTokens = new HashSet<>(watcher.embalmedThisTurnTokens); - } - - @Override - public Watcher copy() { - return new EmbalmedThisTurnWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.EMBALMED_CREATURE) { diff --git a/Mage.Sets/src/mage/cards/v/VodalianWarMachine.java b/Mage.Sets/src/mage/cards/v/VodalianWarMachine.java index 8c925e69cc6..4a319095d8e 100644 --- a/Mage.Sets/src/mage/cards/v/VodalianWarMachine.java +++ b/Mage.Sets/src/mage/cards/v/VodalianWarMachine.java @@ -160,25 +160,12 @@ class VodalianWarMachineEffect extends OneShotEffect { class VodalianWarMachineWatcher extends Watcher { - public Map> tappedMerfolkIds = new HashMap<>(); + private Map> tappedMerfolkIds = new HashMap<>(); public VodalianWarMachineWatcher() { super(WatcherScope.GAME); } - public VodalianWarMachineWatcher(final VodalianWarMachineWatcher watcher) { - super(watcher); - // We have for sure to use copied collections, but there is no need to copy the MageObjectReference objects. - for (Entry> entry : watcher.tappedMerfolkIds.entrySet()) { - this.tappedMerfolkIds.put(entry.getKey(), new HashSet<>(entry.getValue())); - } - } - - @Override - public VodalianWarMachineWatcher copy() { - return new VodalianWarMachineWatcher(this); - } - public Set getTappedMerfolkIds(Permanent permanent, Game game) { return tappedMerfolkIds.get(new MageObjectReference(permanent, game)); } diff --git a/Mage.Sets/src/mage/cards/w/WhisperingSnitch.java b/Mage.Sets/src/mage/cards/w/WhisperingSnitch.java index 3452d35243a..9a7e7f7aaa0 100644 --- a/Mage.Sets/src/mage/cards/w/WhisperingSnitch.java +++ b/Mage.Sets/src/mage/cards/w/WhisperingSnitch.java @@ -92,15 +92,6 @@ class WhisperingSnitchWatcher extends Watcher { super(WatcherScope.GAME); } - public WhisperingSnitchWatcher(final WhisperingSnitchWatcher watcher) { - super(watcher); - } - - @Override - public WhisperingSnitchWatcher copy() { - return new WhisperingSnitchWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.SURVEILED) { diff --git a/Mage.Sets/src/mage/cards/w/Wiitigo.java b/Mage.Sets/src/mage/cards/w/Wiitigo.java index 7493405c22a..74ba69202aa 100644 --- a/Mage.Sets/src/mage/cards/w/Wiitigo.java +++ b/Mage.Sets/src/mage/cards/w/Wiitigo.java @@ -99,14 +99,6 @@ class BlockedOrBeenBlockedSinceYourLastUpkeepWatcher extends Watcher { super(WatcherScope.GAME); } - public BlockedOrBeenBlockedSinceYourLastUpkeepWatcher(BlockedOrBeenBlockedSinceYourLastUpkeepWatcher watcher) { - super(watcher); - for (Map.Entry> entry : watcher.blockedOrBeenBlockedCreatures.entrySet()) { - Set creaturesThatBlockedOrWereBlocked = new HashSet<>(entry.getValue()); - blockedOrBeenBlockedCreatures.put(entry.getKey(), creaturesThatBlockedOrWereBlocked); - } - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.UPKEEP_STEP_POST) { @@ -128,9 +120,4 @@ class BlockedOrBeenBlockedSinceYourLastUpkeepWatcher extends Watcher { return (blockedOrBeenBlockedCreatures.get(player) != null) && blockedOrBeenBlockedCreatures.get(player).contains(mor); } - - @Override - public BlockedOrBeenBlockedSinceYourLastUpkeepWatcher copy() { - return new BlockedOrBeenBlockedSinceYourLastUpkeepWatcher(this); - } } diff --git a/Mage.Sets/src/mage/cards/w/WookieeMystic.java b/Mage.Sets/src/mage/cards/w/WookieeMystic.java index 655ffc900a7..f9551231db2 100644 --- a/Mage.Sets/src/mage/cards/w/WookieeMystic.java +++ b/Mage.Sets/src/mage/cards/w/WookieeMystic.java @@ -76,7 +76,7 @@ class WookieeMysticWatcher extends Watcher { private Ability source; private List creatures = new ArrayList<>(); - WookieeMysticWatcher() { + public WookieeMysticWatcher() { super(WatcherScope.CARD); } diff --git a/Mage.Sets/src/mage/cards/y/YamabushisFlame.java b/Mage.Sets/src/mage/cards/y/YamabushisFlame.java index d26477cde81..6bcd0ec8312 100644 --- a/Mage.Sets/src/mage/cards/y/YamabushisFlame.java +++ b/Mage.Sets/src/mage/cards/y/YamabushisFlame.java @@ -54,7 +54,7 @@ public final class YamabushisFlame extends CardImpl { // If a creature dealt damage this way would die this turn, exile it instead. this.getSpellAbility().addEffect(new DealtDamageToCreatureBySourceDies(this, Duration.EndOfTurn)); - this.getSpellAbility().addWatcher(new DamagedByWatcher()); + this.getSpellAbility().addWatcher(new DamagedByWatcher(false)); } public YamabushisFlame(final YamabushisFlame card) { diff --git a/Mage.Sets/src/mage/cards/y/YamabushisStorm.java b/Mage.Sets/src/mage/cards/y/YamabushisStorm.java index f4345489b81..bfe867d8a76 100644 --- a/Mage.Sets/src/mage/cards/y/YamabushisStorm.java +++ b/Mage.Sets/src/mage/cards/y/YamabushisStorm.java @@ -53,7 +53,7 @@ public final class YamabushisStorm extends CardImpl { // If a creature dealt damage this way would die this turn, exile it instead. this.getSpellAbility().addEffect(new DealtDamageToCreatureBySourceDies(this, Duration.EndOfTurn)); - this.getSpellAbility().addWatcher(new DamagedByWatcher()); + this.getSpellAbility().addWatcher(new DamagedByWatcher(false)); } public YamabushisStorm(final YamabushisStorm card) { diff --git a/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java b/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java index b3fcd37e40d..eb2eaed0f32 100644 --- a/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java +++ b/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java @@ -450,9 +450,24 @@ public class VerifyCardDataTest { // errors on create try { - Constructor constructor = watcherClass.getDeclaredConstructor(); + List constructors = Arrays.asList(watcherClass.getDeclaredConstructors()); + + Constructor constructor = (Constructor) constructors.get(0); + + Object[] args = new Object[constructor.getParameterCount()]; + for (int index = 0; index < constructor.getParameterTypes().length; index++) { + Class parameterType = constructor.getParameterTypes()[index]; + if(parameterType.getSimpleName().equalsIgnoreCase("boolean")){ + args[index]=false; + } + else { + args[index] = null; + } + + } + constructor.setAccessible(true); - Watcher w1 = constructor.newInstance(); + Watcher w1 = constructor.newInstance(args); // errors on copy try { diff --git a/Mage/src/main/java/mage/abilities/keyword/ExertAbility.java b/Mage/src/main/java/mage/abilities/keyword/ExertAbility.java index 18f10b42895..61258ee24ac 100644 --- a/Mage/src/main/java/mage/abilities/keyword/ExertAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/ExertAbility.java @@ -149,16 +149,6 @@ class ExertedThisTurnWatcher extends Watcher { exertedThisTurnCreatures = new HashSet<>(); } - public ExertedThisTurnWatcher(final ExertedThisTurnWatcher watcher) { - super(watcher); - exertedThisTurnCreatures = new HashSet<>(watcher.exertedThisTurnCreatures); - } - - @Override - public Watcher copy() { - return new ExertedThisTurnWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.BECOMES_EXERTED) { diff --git a/Mage/src/main/java/mage/abilities/keyword/MeleeAbility.java b/Mage/src/main/java/mage/abilities/keyword/MeleeAbility.java index 061c000e83a..2e4f406775f 100644 --- a/Mage/src/main/java/mage/abilities/keyword/MeleeAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/MeleeAbility.java @@ -45,15 +45,10 @@ class MeleeWatcher extends Watcher { private Map> playersAttacked = new HashMap<>(0); - MeleeWatcher() { + public MeleeWatcher() { super(WatcherScope.GAME); } - MeleeWatcher(final MeleeWatcher watcher) { - super(watcher); - this.playersAttacked.putAll(watcher.playersAttacked); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == EventType.BEGIN_COMBAT_STEP_PRE) { @@ -72,11 +67,6 @@ class MeleeWatcher extends Watcher { } return 0; } - - @Override - public MeleeWatcher copy() { - return new MeleeWatcher(this); - } } class MeleeDynamicValue implements DynamicValue { diff --git a/Mage/src/main/java/mage/watchers/Watcher.java b/Mage/src/main/java/mage/watchers/Watcher.java index 05efdc76f39..6e7c28a0b07 100644 --- a/Mage/src/main/java/mage/watchers/Watcher.java +++ b/Mage/src/main/java/mage/watchers/Watcher.java @@ -1,10 +1,8 @@ package mage.watchers; -import mage.Mana; import mage.constants.WatcherScope; import mage.game.Game; -import mage.game.turn.Step; import mage.game.events.GameEvent; import org.apache.log4j.Logger; @@ -12,6 +10,7 @@ import java.io.Serializable; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Modifier; import java.util.*; /** @@ -85,35 +84,48 @@ public abstract class Watcher implements Serializable { public T copy() { try { - List constructors = Arrays.asList(this.getClass().getConstructors()); + //use getDeclaredConstructors to allow for package-private constructors (i.e. omit public) + List constructors = Arrays.asList(this.getClass().getDeclaredConstructors()); if (constructors.size() > 1) { logger.error(getClass().getSimpleName() + " has multiple constructors"); return null; } Constructor constructor = (Constructor) constructors.get(0); - if (constructor.getParameterCount() > 0) { - logger.error(getClass().getSimpleName() + " constructor has arguments, should be 0 and inject the parameters by setters"); - return null; - } + constructor.setAccessible(true); - T watcher = (T) constructor.newInstance(); + Object[] args = new Object[constructor.getParameterCount()]; + for (int index = 0; index < constructor.getParameterTypes().length; index++) { + Class parameterType = constructor.getParameterTypes()[index]; + if(parameterType.isPrimitive()){ + if(parameterType.getSimpleName().equalsIgnoreCase("boolean")){ + args[index]=false; + } + } + else { + args[index] = null; + } + + } + T watcher = (T) constructor.newInstance(args); List allFields = new ArrayList<>(); allFields.addAll(Arrays.asList(getClass().getDeclaredFields())); allFields.addAll(Arrays.asList(getClass().getSuperclass().getDeclaredFields())); for (Field field : allFields) { - field.setAccessible(true); - if (field.getType() == Set.class) { - ((Set) field.get(watcher)).clear(); - ((Set) field.get(watcher)).addAll((Set) field.get(this)); - } else if (field.getType() == Map.class) { - ((Map) field.get(watcher)).clear(); - ((Map) field.get(watcher)).putAll((Map) field.get(this)); - } else if (field.getType() == List.class) { - ((List) field.get(watcher)).clear(); - ((List) field.get(watcher)).addAll((List) field.get(this)); - } else { - if (field.getType() != Logger.class) { + if (!Modifier.isStatic(field.getModifiers())) { + + field.setAccessible(true); + if (field.getType() == Set.class) { + ((Set) field.get(watcher)).clear(); + ((Set) field.get(watcher)).addAll((Set) field.get(this)); + } else if (field.getType() == Map.class) { + ((Map) field.get(watcher)).clear(); + ((Map) field.get(watcher)).putAll((Map) field.get(this)); + } else if (field.getType() == List.class) { + ((List) field.get(watcher)).clear(); + ((List) field.get(watcher)).addAll((List) field.get(this)); + + } else { field.set(watcher, field.get(this)); } } diff --git a/Mage/src/main/java/mage/watchers/common/CardsCycledOrDiscardedThisTurnWatcher.java b/Mage/src/main/java/mage/watchers/common/CardsCycledOrDiscardedThisTurnWatcher.java index 05f94ff6c89..0cb116c282b 100644 --- a/Mage/src/main/java/mage/watchers/common/CardsCycledOrDiscardedThisTurnWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/CardsCycledOrDiscardedThisTurnWatcher.java @@ -30,18 +30,6 @@ public class CardsCycledOrDiscardedThisTurnWatcher extends Watcher { super(WatcherScope.GAME); } - public CardsCycledOrDiscardedThisTurnWatcher(final CardsCycledOrDiscardedThisTurnWatcher watcher) { - super(watcher); - for (Entry entry : watcher.cycledOrDiscardedCardsThisTurn.entrySet()) { - cycledOrDiscardedCardsThisTurn.put(entry.getKey(), entry.getValue().copy()); - } - for (Entry> entry : watcher.numberOfCycledOrDiscardedCardsThisTurn.entrySet()) { - Set cycledOrDiscardedCards = new HashSet<>(); - cycledOrDiscardedCards.addAll(entry.getValue()); - numberOfCycledOrDiscardedCardsThisTurn.put(entry.getKey(), cycledOrDiscardedCards); - } - numberOfCycledOrDiscardedCardsThisTurn.putAll(watcher.numberOfCycledOrDiscardedCardsThisTurn); - } @Override public void watch(GameEvent event, Game game) { @@ -81,8 +69,4 @@ public class CardsCycledOrDiscardedThisTurnWatcher extends Watcher { numberOfCycledOrDiscardedCardsThisTurn.clear(); } - @Override - public CardsCycledOrDiscardedThisTurnWatcher copy() { - return new CardsCycledOrDiscardedThisTurnWatcher(this); - } } diff --git a/Mage/src/main/java/mage/watchers/common/CommanderInfoWatcher.java b/Mage/src/main/java/mage/watchers/common/CommanderInfoWatcher.java index 99e7996ac08..30b8cfc5570 100644 --- a/Mage/src/main/java/mage/watchers/common/CommanderInfoWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/CommanderInfoWatcher.java @@ -33,17 +33,6 @@ public class CommanderInfoWatcher extends Watcher { this.checkCommanderDamage = checkCommanderDamage; } - public CommanderInfoWatcher(final CommanderInfoWatcher watcher) { - super(watcher); - this.damageToPlayer.putAll(watcher.damageToPlayer); - this.checkCommanderDamage = watcher.checkCommanderDamage; - } - - @Override - public CommanderInfoWatcher copy() { - return new CommanderInfoWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (checkCommanderDamage && event.getType() == EventType.DAMAGED_PLAYER && event instanceof DamagedPlayerEvent) { diff --git a/Mage/src/main/java/mage/watchers/common/DamagedByWatcher.java b/Mage/src/main/java/mage/watchers/common/DamagedByWatcher.java index 746d286f451..b7c3243f985 100644 --- a/Mage/src/main/java/mage/watchers/common/DamagedByWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/DamagedByWatcher.java @@ -23,26 +23,11 @@ public class DamagedByWatcher extends Watcher { private final boolean watchPlaneswalkers; - public DamagedByWatcher() { - this(false); - } - public DamagedByWatcher(boolean watchPlaneswalkers) { super(WatcherScope.CARD); this.watchPlaneswalkers = watchPlaneswalkers; } - public DamagedByWatcher(final DamagedByWatcher watcher) { - super(watcher); - this.damagedBySource.addAll(watcher.damagedBySource); - this.watchPlaneswalkers = watcher.watchPlaneswalkers; - } - - @Override - public DamagedByWatcher copy() { - return new DamagedByWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { boolean eventHasAppropriateType = (event.getType() == EventType.DAMAGED_CREATURE) || diff --git a/Mage/src/main/java/mage/watchers/common/FirstTimeStepWatcher.java b/Mage/src/main/java/mage/watchers/common/FirstTimeStepWatcher.java index 26d8a0d3933..ebb2f8c232b 100644 --- a/Mage/src/main/java/mage/watchers/common/FirstTimeStepWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/FirstTimeStepWatcher.java @@ -22,16 +22,6 @@ public class FirstTimeStepWatcher extends Watcher { this.eventType = eventType; } - public FirstTimeStepWatcher(final FirstTimeStepWatcher watcher) { - super(watcher); - this.eventType = watcher.eventType; - } - - @Override - public FirstTimeStepWatcher copy() { - return new FirstTimeStepWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == eventType) { From 1a8723697ec547f4c9659dc61a0dc876f05dcf90 Mon Sep 17 00:00:00 2001 From: Ingmar Goudt Date: Sun, 29 Dec 2019 21:05:28 +0100 Subject: [PATCH 7/8] fix for Set as value of Map, make sure the set is new --- Mage/src/main/java/mage/watchers/Watcher.java | 33 ++++++++++++------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/Mage/src/main/java/mage/watchers/Watcher.java b/Mage/src/main/java/mage/watchers/Watcher.java index 6e7c28a0b07..97ebc27bc06 100644 --- a/Mage/src/main/java/mage/watchers/Watcher.java +++ b/Mage/src/main/java/mage/watchers/Watcher.java @@ -5,12 +5,10 @@ import mage.constants.WatcherScope; import mage.game.Game; import mage.game.events.GameEvent; import org.apache.log4j.Logger; +import sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl; import java.io.Serializable; -import java.lang.reflect.Constructor; -import java.lang.reflect.Field; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Modifier; +import java.lang.reflect.*; import java.util.*; /** @@ -97,12 +95,11 @@ public abstract class Watcher implements Serializable { Object[] args = new Object[constructor.getParameterCount()]; for (int index = 0; index < constructor.getParameterTypes().length; index++) { Class parameterType = constructor.getParameterTypes()[index]; - if(parameterType.isPrimitive()){ - if(parameterType.getSimpleName().equalsIgnoreCase("boolean")){ - args[index]=false; + if (parameterType.isPrimitive()) { + if (parameterType.getSimpleName().equalsIgnoreCase("boolean")) { + args[index] = false; } - } - else { + } else { args[index] = null; } @@ -119,8 +116,22 @@ public abstract class Watcher implements Serializable { ((Set) field.get(watcher)).clear(); ((Set) field.get(watcher)).addAll((Set) field.get(this)); } else if (field.getType() == Map.class) { - ((Map) field.get(watcher)).clear(); - ((Map) field.get(watcher)).putAll((Map) field.get(this)); + Map target = ((Map) field.get(watcher)); + target.clear(); + Map source = (Map) field.get(this); + + ParameterizedType parameterizedType = (ParameterizedType) field.getGenericType(); + Type valueType = parameterizedType.getActualTypeArguments()[1]; + if (valueType instanceof ParameterizedTypeImpl && ((ParameterizedTypeImpl) valueType).getRawType().getSimpleName().contains("Set")) { + source.entrySet().forEach(kv -> { + Object key = ((Map.Entry) kv).getKey(); + Set value = (Set) ((Map.Entry) kv).getValue(); + target.put(key, new HashSet<>(value)); + }); + } + else { + ((Map) field.get(watcher)).putAll((Map) field.get(this)); + } } else if (field.getType() == List.class) { ((List) field.get(watcher)).clear(); ((List) field.get(watcher)).addAll((List) field.get(this)); From ee71495a3fc1042dc8daadf78836b0713771f887 Mon Sep 17 00:00:00 2001 From: Ingmar Goudt Date: Sun, 29 Dec 2019 23:08:47 +0100 Subject: [PATCH 8/8] fix latest cards from master --- Mage.Sets/src/mage/cards/b/BellowingElk.java | 10 ---------- .../src/mage/cards/c/ChainerNightmareAdept.java | 10 ---------- Mage.Sets/src/mage/cards/d/DeafeningSilence.java | 12 ------------ Mage.Sets/src/mage/cards/g/GadwickTheWizened.java | 10 ---------- .../src/mage/cards/g/GerrardWeatherlightHero.java | 10 ---------- Mage.Sets/src/mage/cards/i/IdolOfOblivion.java | 10 ---------- .../src/mage/cards/k/KadenaSlinkingSorcerer.java | 10 ---------- Mage.Sets/src/mage/cards/o/OnceUponATime.java | 10 ---------- Mage.Sets/src/mage/cards/r/RobberOfTheRich.java | 9 --------- Mage.Sets/src/mage/cards/s/SaddledRimestag.java | 10 ---------- .../src/mage/cards/s/SevinneTheChronoclasm.java | 9 --------- Mage.Sets/src/mage/cards/s/SilumgarScavenger.java | 10 ---------- Mage.Sets/src/mage/cards/v/VeilOfSummer.java | 10 ---------- Mage.Sets/src/mage/cards/v/VengefulWarchief.java | 10 ---------- Mage.Sets/src/mage/cards/z/ZhalfirinDecoy.java | 9 --------- .../watchers/common/CardsDrawnThisTurnWatcher.java | 10 ---------- .../watchers/common/CommanderPlaysCountWatcher.java | 10 ---------- 17 files changed, 169 deletions(-) diff --git a/Mage.Sets/src/mage/cards/b/BellowingElk.java b/Mage.Sets/src/mage/cards/b/BellowingElk.java index 79d1ebc2b54..7bdef947828 100644 --- a/Mage.Sets/src/mage/cards/b/BellowingElk.java +++ b/Mage.Sets/src/mage/cards/b/BellowingElk.java @@ -76,11 +76,6 @@ class BellowingElkWatcher extends Watcher { super(WatcherScope.GAME); } - private BellowingElkWatcher(final BellowingElkWatcher watcher) { - super(watcher); - this.playerMap.putAll(watcher.playerMap); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.ZONE_CHANGE) { @@ -102,10 +97,5 @@ class BellowingElkWatcher extends Watcher { Set s = playerMap.getOrDefault(playerId, null); return s != null && s.stream().anyMatch((UUID id) -> (id != creatureId)); } - - @Override - public BellowingElkWatcher copy() { - return new BellowingElkWatcher(this); - } } // I'm not THAT loud... diff --git a/Mage.Sets/src/mage/cards/c/ChainerNightmareAdept.java b/Mage.Sets/src/mage/cards/c/ChainerNightmareAdept.java index c13928044bb..8d82cb6d1e5 100644 --- a/Mage.Sets/src/mage/cards/c/ChainerNightmareAdept.java +++ b/Mage.Sets/src/mage/cards/c/ChainerNightmareAdept.java @@ -140,11 +140,6 @@ class ChainerNightmareAdeptWatcher extends Watcher { super(WatcherScope.CARD); } - ChainerNightmareAdeptWatcher(final ChainerNightmareAdeptWatcher watcher) { - super(watcher); - this.abilityUsed = watcher.abilityUsed; - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.SPELL_CAST && event.getZone() == Zone.GRAVEYARD) { @@ -155,11 +150,6 @@ class ChainerNightmareAdeptWatcher extends Watcher { } } - @Override - public ChainerNightmareAdeptWatcher copy() { - return new ChainerNightmareAdeptWatcher(this); - } - @Override public void reset() { super.reset(); diff --git a/Mage.Sets/src/mage/cards/d/DeafeningSilence.java b/Mage.Sets/src/mage/cards/d/DeafeningSilence.java index 247b09f06ea..531fbd1cf55 100644 --- a/Mage.Sets/src/mage/cards/d/DeafeningSilence.java +++ b/Mage.Sets/src/mage/cards/d/DeafeningSilence.java @@ -92,13 +92,6 @@ class DeafeningSilenceWatcher extends Watcher { super(WatcherScope.GAME); } - private DeafeningSilenceWatcher(final DeafeningSilenceWatcher watcher) { - super(watcher); - for (Map.Entry entry : watcher.spellsCastByPlayerThisTurnNonCreature.entrySet()) { - spellsCastByPlayerThisTurnNonCreature.put(entry.getKey(), entry.getValue()); - } - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() != GameEvent.EventType.SPELL_CAST) { @@ -125,9 +118,4 @@ class DeafeningSilenceWatcher extends Watcher { public int spellsCastByPlayerThisTurnNonCreature(UUID playerId) { return spellsCastByPlayerThisTurnNonCreature.getOrDefault(playerId, 0); } - - @Override - public DeafeningSilenceWatcher copy() { - return new DeafeningSilenceWatcher(this); - } } diff --git a/Mage.Sets/src/mage/cards/g/GadwickTheWizened.java b/Mage.Sets/src/mage/cards/g/GadwickTheWizened.java index cfdece046c4..7a206429041 100644 --- a/Mage.Sets/src/mage/cards/g/GadwickTheWizened.java +++ b/Mage.Sets/src/mage/cards/g/GadwickTheWizened.java @@ -109,11 +109,6 @@ class GadwickTheWizenedWatcher extends Watcher { super(WatcherScope.GAME); } - private GadwickTheWizenedWatcher(final GadwickTheWizenedWatcher watcher) { - super(watcher); - this.xMap.putAll(watcher.xMap); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() != GameEvent.EventType.SPELL_CAST) { @@ -128,11 +123,6 @@ class GadwickTheWizenedWatcher extends Watcher { ), spell.getSpellAbility().getManaCostsToPay().getX()); } - @Override - public GadwickTheWizenedWatcher copy() { - return new GadwickTheWizenedWatcher(this); - } - @Override public void reset() { super.reset(); diff --git a/Mage.Sets/src/mage/cards/g/GerrardWeatherlightHero.java b/Mage.Sets/src/mage/cards/g/GerrardWeatherlightHero.java index df7f53ce36e..63374c19733 100644 --- a/Mage.Sets/src/mage/cards/g/GerrardWeatherlightHero.java +++ b/Mage.Sets/src/mage/cards/g/GerrardWeatherlightHero.java @@ -98,11 +98,6 @@ class GerrardWeatherlightHeroWatcher extends Watcher { super(WatcherScope.GAME); } - private GerrardWeatherlightHeroWatcher(final GerrardWeatherlightHeroWatcher watcher) { - super(watcher); - this.cards.addAll(watcher.cards); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.ZONE_CHANGE @@ -118,11 +113,6 @@ class GerrardWeatherlightHeroWatcher extends Watcher { return cards.stream().anyMatch(mageObjectReference -> mageObjectReference.refersTo(card, game)); } - @Override - public GerrardWeatherlightHeroWatcher copy() { - return new GerrardWeatherlightHeroWatcher(this); - } - @Override public void reset() { super.reset(); diff --git a/Mage.Sets/src/mage/cards/i/IdolOfOblivion.java b/Mage.Sets/src/mage/cards/i/IdolOfOblivion.java index bdbdd229991..3e7b2931594 100644 --- a/Mage.Sets/src/mage/cards/i/IdolOfOblivion.java +++ b/Mage.Sets/src/mage/cards/i/IdolOfOblivion.java @@ -81,11 +81,6 @@ class IdolOfOblivionWatcher extends Watcher { super(WatcherScope.GAME); } - private IdolOfOblivionWatcher(final IdolOfOblivionWatcher watcher) { - super(watcher); - playerIds.addAll(watcher.playerIds); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() != GameEvent.EventType.ENTERS_THE_BATTLEFIELD) { @@ -102,11 +97,6 @@ class IdolOfOblivionWatcher extends Watcher { playerIds.clear(); } - @Override - public IdolOfOblivionWatcher copy() { - return new IdolOfOblivionWatcher(this); - } - boolean tokenEntered(UUID playerId) { return playerIds.contains(playerId); } diff --git a/Mage.Sets/src/mage/cards/k/KadenaSlinkingSorcerer.java b/Mage.Sets/src/mage/cards/k/KadenaSlinkingSorcerer.java index a1f77ce079d..1b8349cf815 100644 --- a/Mage.Sets/src/mage/cards/k/KadenaSlinkingSorcerer.java +++ b/Mage.Sets/src/mage/cards/k/KadenaSlinkingSorcerer.java @@ -96,12 +96,6 @@ class KadenaSlinkingSorcererWatcher extends Watcher { castFaceDown = new HashSet<>(); } - private KadenaSlinkingSorcererWatcher(final KadenaSlinkingSorcererWatcher watcher) { - super(watcher); - this.castFaceDown = new HashSet<>(); - castFaceDown.addAll(watcher.castFaceDown); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() != GameEvent.EventType.SPELL_CAST) { @@ -118,10 +112,6 @@ class KadenaSlinkingSorcererWatcher extends Watcher { return castFaceDown.contains(playerId); } - @Override - public KadenaSlinkingSorcererWatcher copy() { - return new KadenaSlinkingSorcererWatcher(this); - } @Override public void reset() { diff --git a/Mage.Sets/src/mage/cards/o/OnceUponATime.java b/Mage.Sets/src/mage/cards/o/OnceUponATime.java index 3a3559d9fa9..871e8985a41 100644 --- a/Mage.Sets/src/mage/cards/o/OnceUponATime.java +++ b/Mage.Sets/src/mage/cards/o/OnceUponATime.java @@ -83,16 +83,6 @@ class OnceUponATimeWatcher extends Watcher { super(WatcherScope.GAME); } - private OnceUponATimeWatcher(final OnceUponATimeWatcher watcher) { - super(watcher); - this.castSpells.addAll(watcher.castSpells); - } - - @Override - public OnceUponATimeWatcher copy() { - return new OnceUponATimeWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (GameEvent.EventType.SPELL_CAST == event.getType()) { diff --git a/Mage.Sets/src/mage/cards/r/RobberOfTheRich.java b/Mage.Sets/src/mage/cards/r/RobberOfTheRich.java index f86c8b999a5..9562df0bdcb 100644 --- a/Mage.Sets/src/mage/cards/r/RobberOfTheRich.java +++ b/Mage.Sets/src/mage/cards/r/RobberOfTheRich.java @@ -216,15 +216,6 @@ class RobberOfTheRichWatcher extends Watcher { super(WatcherScope.GAME); } - private RobberOfTheRichWatcher(final RobberOfTheRichWatcher watcher) { - super(watcher); - this.rogueAttackers.addAll(watcher.rogueAttackers); - } - - @Override - public RobberOfTheRichWatcher copy() { - return new RobberOfTheRichWatcher(this); - } @Override public void watch(GameEvent event, Game game) { diff --git a/Mage.Sets/src/mage/cards/s/SaddledRimestag.java b/Mage.Sets/src/mage/cards/s/SaddledRimestag.java index 0aa3cd7b7ff..92190b5aab6 100644 --- a/Mage.Sets/src/mage/cards/s/SaddledRimestag.java +++ b/Mage.Sets/src/mage/cards/s/SaddledRimestag.java @@ -70,11 +70,6 @@ class SaddledRimestagWatcher extends Watcher { super(WatcherScope.GAME); } - private SaddledRimestagWatcher(final SaddledRimestagWatcher watcher) { - super(watcher); - this.playerMap.putAll(watcher.playerMap); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.ZONE_CHANGE) { @@ -96,9 +91,4 @@ class SaddledRimestagWatcher extends Watcher { Set s = playerMap.getOrDefault(playerId, null); return s != null && s.stream().anyMatch((UUID id) -> (id != creatureId)); } - - @Override - public SaddledRimestagWatcher copy() { - return new SaddledRimestagWatcher(this); - } } diff --git a/Mage.Sets/src/mage/cards/s/SevinneTheChronoclasm.java b/Mage.Sets/src/mage/cards/s/SevinneTheChronoclasm.java index 79b6f7f9184..55c53e53135 100644 --- a/Mage.Sets/src/mage/cards/s/SevinneTheChronoclasm.java +++ b/Mage.Sets/src/mage/cards/s/SevinneTheChronoclasm.java @@ -97,11 +97,6 @@ class SevinneTheChronoclasmWatcher extends Watcher { super(WatcherScope.GAME); } - private SevinneTheChronoclasmWatcher(final SevinneTheChronoclasmWatcher watcher) { - super(watcher); - this.firstSpellThisTurn.putAll(watcher.firstSpellThisTurn); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() != GameEvent.EventType.SPELL_CAST @@ -123,8 +118,4 @@ class SevinneTheChronoclasmWatcher extends Watcher { return targetId != null && targetId.equals(firstSpellThisTurn.getOrDefault(playerId, null)); } - @Override - public Watcher copy() { - return new SevinneTheChronoclasmWatcher(this); - } } diff --git a/Mage.Sets/src/mage/cards/s/SilumgarScavenger.java b/Mage.Sets/src/mage/cards/s/SilumgarScavenger.java index d155991c42b..dfe6278b0ac 100644 --- a/Mage.Sets/src/mage/cards/s/SilumgarScavenger.java +++ b/Mage.Sets/src/mage/cards/s/SilumgarScavenger.java @@ -78,16 +78,6 @@ class SilumgarScavengerExploitedWatcher extends Watcher { super(WatcherScope.GAME); } - private SilumgarScavengerExploitedWatcher(final SilumgarScavengerExploitedWatcher watcher) { - super(watcher); - this.exploitedPermanents.putAll(watcher.exploitedPermanents); - } - - @Override - public SilumgarScavengerExploitedWatcher copy() { - return new SilumgarScavengerExploitedWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.EXPLOITED_CREATURE) { diff --git a/Mage.Sets/src/mage/cards/v/VeilOfSummer.java b/Mage.Sets/src/mage/cards/v/VeilOfSummer.java index 4e97295d8ad..c6a5284ff5e 100644 --- a/Mage.Sets/src/mage/cards/v/VeilOfSummer.java +++ b/Mage.Sets/src/mage/cards/v/VeilOfSummer.java @@ -75,16 +75,6 @@ class VeilOfSummerWatcher extends Watcher { super(WatcherScope.GAME); } - private VeilOfSummerWatcher(final VeilOfSummerWatcher watcher) { - super(watcher); - this.opponentsCastBlueBlackSpell.addAll(watcher.opponentsCastBlueBlackSpell); - } - - @Override - public VeilOfSummerWatcher copy() { - return new VeilOfSummerWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (GameEvent.EventType.SPELL_CAST == event.getType()) { diff --git a/Mage.Sets/src/mage/cards/v/VengefulWarchief.java b/Mage.Sets/src/mage/cards/v/VengefulWarchief.java index bec090c9249..611f1324a25 100644 --- a/Mage.Sets/src/mage/cards/v/VengefulWarchief.java +++ b/Mage.Sets/src/mage/cards/v/VengefulWarchief.java @@ -88,11 +88,6 @@ class VengefulWarchiefWatcher extends Watcher { super(WatcherScope.GAME); } - private VengefulWarchiefWatcher(final VengefulWarchiefWatcher watcher) { - super(watcher); - this.playersLostLife.putAll(watcher.playersLostLife); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.LOST_LIFE) { @@ -102,11 +97,6 @@ class VengefulWarchiefWatcher extends Watcher { } } - @Override - public VengefulWarchiefWatcher copy() { - return new VengefulWarchiefWatcher(this); - } - @Override public void reset() { super.reset(); diff --git a/Mage.Sets/src/mage/cards/z/ZhalfirinDecoy.java b/Mage.Sets/src/mage/cards/z/ZhalfirinDecoy.java index 79e8507767b..0087d44cc71 100644 --- a/Mage.Sets/src/mage/cards/z/ZhalfirinDecoy.java +++ b/Mage.Sets/src/mage/cards/z/ZhalfirinDecoy.java @@ -76,11 +76,6 @@ class ZhalfirinDecoyWatcher extends Watcher { super(WatcherScope.GAME); } - private ZhalfirinDecoyWatcher(final ZhalfirinDecoyWatcher watcher) { - super(watcher); - this.players.addAll(watcher.players); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.ZONE_CHANGE) { @@ -101,8 +96,4 @@ class ZhalfirinDecoyWatcher extends Watcher { return players.contains(playerId); } - @Override - public ZhalfirinDecoyWatcher copy() { - return new ZhalfirinDecoyWatcher(this); - } } diff --git a/Mage/src/main/java/mage/watchers/common/CardsDrawnThisTurnWatcher.java b/Mage/src/main/java/mage/watchers/common/CardsDrawnThisTurnWatcher.java index 63d138593d7..c865d22a31a 100644 --- a/Mage/src/main/java/mage/watchers/common/CardsDrawnThisTurnWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/CardsDrawnThisTurnWatcher.java @@ -21,11 +21,6 @@ public class CardsDrawnThisTurnWatcher extends Watcher { super(WatcherScope.GAME); } - private CardsDrawnThisTurnWatcher(final CardsDrawnThisTurnWatcher watcher) { - super(watcher); - this.cardsDrawnThisTurn.putAll(watcher.cardsDrawnThisTurn); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.DREW_CARD) { @@ -44,9 +39,4 @@ public class CardsDrawnThisTurnWatcher extends Watcher { cardsDrawnThisTurn.clear(); } - - @Override - public CardsDrawnThisTurnWatcher copy() { - return new CardsDrawnThisTurnWatcher(this); - } } diff --git a/Mage/src/main/java/mage/watchers/common/CommanderPlaysCountWatcher.java b/Mage/src/main/java/mage/watchers/common/CommanderPlaysCountWatcher.java index d354aadb44e..e8a093451ab 100644 --- a/Mage/src/main/java/mage/watchers/common/CommanderPlaysCountWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/CommanderPlaysCountWatcher.java @@ -26,16 +26,6 @@ public class CommanderPlaysCountWatcher extends Watcher { super(WatcherScope.GAME); } - public CommanderPlaysCountWatcher(final CommanderPlaysCountWatcher watcher) { - super(watcher); - this.playsCount.putAll(watcher.playsCount); - } - - @Override - public CommanderPlaysCountWatcher copy() { - return new CommanderPlaysCountWatcher(this); - } - @Override public void watch(GameEvent event, Game game) { if (event.getType() != EventType.LAND_PLAYED && event.getType() != EventType.SPELL_CAST) {