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 00000000000..14929cf0617 Binary files /dev/null and b/Mage.Server.Plugins/Mage.Game.OathbreakerDuel/target/classes/mage/game/OathbreakerDuel.class differ 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 00000000000..57f30413e5d Binary files /dev/null and b/Mage.Server.Plugins/Mage.Game.OathbreakerDuel/target/classes/mage/game/OathbreakerDuelMatch.class differ 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 00000000000..59b0495b171 Binary files /dev/null and b/Mage.Server.Plugins/Mage.Game.OathbreakerDuel/target/classes/mage/game/OathbreakerDuelType.class differ diff --git a/Mage.Server.Plugins/Mage.Game.OathbreakerFreeForAll/target/classes/mage/game/OathbreakerFreeForAll$1.class b/Mage.Server.Plugins/Mage.Game.OathbreakerFreeForAll/target/classes/mage/game/OathbreakerFreeForAll$1.class new file mode 100644 index 00000000000..bbcf45ac347 Binary files /dev/null and b/Mage.Server.Plugins/Mage.Game.OathbreakerFreeForAll/target/classes/mage/game/OathbreakerFreeForAll$1.class differ diff --git a/Mage.Server.Plugins/Mage.Game.OathbreakerFreeForAll/target/classes/mage/game/OathbreakerFreeForAll.class b/Mage.Server.Plugins/Mage.Game.OathbreakerFreeForAll/target/classes/mage/game/OathbreakerFreeForAll.class new file mode 100644 index 00000000000..0bbfcbecd25 Binary files /dev/null and b/Mage.Server.Plugins/Mage.Game.OathbreakerFreeForAll/target/classes/mage/game/OathbreakerFreeForAll.class differ 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 00000000000..a3dbe6e9b70 Binary files /dev/null and b/Mage.Server.Plugins/Mage.Game.OathbreakerFreeForAll/target/classes/mage/game/OathbreakerFreeForAllMatch.class differ 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 00000000000..dd02f0e8f20 Binary files /dev/null and b/Mage.Server.Plugins/Mage.Game.OathbreakerFreeForAll/target/classes/mage/game/OathbreakerFreeForAllType.class differ 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 980eb061dc2..c7bfab45777 100644 --- a/Mage.Sets/src/mage/cards/a/ArclightPhoenix.java +++ b/Mage.Sets/src/mage/cards/a/ArclightPhoenix.java @@ -80,16 +80,6 @@ class ArclightPhoenixWatcher extends Watcher { super(WatcherScope.GAME); } - private 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 859e15973c9..1c766ebc4c7 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/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/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 3a6da47394a..b21dab2e6dd 100644 --- a/Mage.Sets/src/mage/cards/b/BurningCinderFuryOfCrimsonChaosFire.java +++ b/Mage.Sets/src/mage/cards/b/BurningCinderFuryOfCrimsonChaosFire.java @@ -200,10 +200,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) { @@ -223,9 +219,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 5960710391b..45bbf41c7f3 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/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/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/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/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 67831c8d3cc..172f1b45793 100644 --- a/Mage.Sets/src/mage/cards/f/FblthpTheLost.java +++ b/Mage.Sets/src/mage/cards/f/FblthpTheLost.java @@ -105,11 +105,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) { 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/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/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/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/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 d801d62515a..cb9d1eaee1d 100644 --- a/Mage.Sets/src/mage/cards/i/IcefallRegent.java +++ b/Mage.Sets/src/mage/cards/i/IcefallRegent.java @@ -137,10 +137,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)) { @@ -161,11 +157,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/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/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 29010cd8236..78836b9dcb2 100644 --- a/Mage.Sets/src/mage/cards/j/JelevaNephaliasScourge.java +++ b/Mage.Sets/src/mage/cards/j/JelevaNephaliasScourge.java @@ -162,15 +162,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/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/k/KaradorGhostChieftain.java b/Mage.Sets/src/mage/cards/k/KaradorGhostChieftain.java index d9dff8edaa0..b5ac0e5a96d 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/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/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/o/OpalPalace.java b/Mage.Sets/src/mage/cards/o/OpalPalace.java index 1ab89afe676..3e0895934b8 100644 --- a/Mage.Sets/src/mage/cards/o/OpalPalace.java +++ b/Mage.Sets/src/mage/cards/o/OpalPalace.java @@ -67,21 +67,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) { + 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 2d3396ce2f9..deb177e1b12 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 46d0f886d77..cea038acf32 100644 --- a/Mage.Sets/src/mage/cards/p/PrematureBurial.java +++ b/Mage.Sets/src/mage/cards/p/PrematureBurial.java @@ -103,14 +103,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) { 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/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/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/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/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/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/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/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/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 67db063283e..f520069d780 100644 --- a/Mage.Sets/src/mage/cards/t/ThousandYearStorm.java +++ b/Mage.Sets/src/mage/cards/t/ThousandYearStorm.java @@ -138,13 +138,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())) { @@ -171,12 +164,6 @@ class ThousandYearWatcher extends Watcher { public int getAmountOfSpellsPlayerCastOnCurrentTurn(UUID playerId) { return amountOfInstantSorcerySpellsCastOnCurrentTurn.getOrDefault(playerId, 0); } - - @Override - public ThousandYearWatcher copy() { - return new ThousandYearWatcher(this); - } - } enum ThousandYearSpellsCastThatTurnValue implements DynamicValue { 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 90521396c5a..327c081cd05 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/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/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/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/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 1d8f1d879d9..f9551231db2 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) { + public 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.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.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.Verify/src/test/java/mage/verify/VerifyCardDataTest.java b/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java index 33a8039a614..6c01d05f5d7 100644 --- a/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java +++ b/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java @@ -433,7 +433,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<>(); @@ -443,6 +443,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")) { @@ -451,6 +458,49 @@ 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 { + 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(args); + + // 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/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/game/GameImpl.java b/Mage/src/main/java/mage/game/GameImpl.java index 4f038a6b1f3..2bcadb7f8c9 100644 --- a/Mage/src/main/java/mage/game/GameImpl.java +++ b/Mage/src/main/java/mage/game/GameImpl.java @@ -1052,8 +1052,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..97ebc27bc06 100644 --- a/Mage/src/main/java/mage/watchers/Watcher.java +++ b/Mage/src/main/java/mage/watchers/Watcher.java @@ -1,17 +1,17 @@ package mage.watchers; -import java.io.Serializable; -import java.lang.reflect.Constructor; -import java.lang.reflect.InvocationTargetException; -import java.util.UUID; 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.*; +import java.util.*; /** - * * watches for certain game events to occur and flags condition * * @author BetaSteward_at_googlemail.com @@ -26,7 +26,6 @@ public abstract class Watcher implements Serializable { protected final WatcherScope scope; - public Watcher(WatcherScope scope) { this.scope = scope; } @@ -62,8 +61,8 @@ public abstract class Watcher implements Serializable { return controllerId + getBasicKey(); case CARD: return sourceId + getBasicKey(); - default: - return getBasicKey(); + default: + return getBasicKey(); } } @@ -75,18 +74,75 @@ 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()); + //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); + constructor.setAccessible(true); - return (T) constructor.newInstance(this); - } catch (InstantiationException | IllegalAccessException | NoSuchMethodException | InvocationTargetException e) { + 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) { + 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 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)); + + } else { + field.set(watcher, field.get(this)); + } + } + } + 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 44025aef23f..3466db407f7 100644 --- a/Mage/src/main/java/mage/watchers/common/AmountOfDamageAPlayerReceivedThisTurnWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/AmountOfDamageAPlayerReceivedThisTurnWatcher.java @@ -23,13 +23,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 { super.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/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/CardsDrawnDuringDrawStepWatcher.java b/Mage/src/main/java/mage/watchers/common/CardsDrawnDuringDrawStepWatcher.java index 4e26b9aeb24..e6b9499a124 100644 --- a/Mage/src/main/java/mage/watchers/common/CardsDrawnDuringDrawStepWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/CardsDrawnDuringDrawStepWatcher.java @@ -25,13 +25,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 @@ -56,8 +49,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/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/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 7189709f78d..328c6353112 100644 --- a/Mage/src/main/java/mage/watchers/common/CastSpellLastTurnWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/CastSpellLastTurnWatcher.java @@ -22,17 +22,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 0b6167c1013..656868ad253 100644 --- a/Mage/src/main/java/mage/watchers/common/CastSpellYourLastTurnWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/CastSpellYourLastTurnWatcher.java @@ -23,16 +23,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 b6e04c91f90..0b9660699c2 100644 --- a/Mage/src/main/java/mage/watchers/common/ChooseBlockersRedundancyWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/ChooseBlockersRedundancyWatcher.java @@ -18,12 +18,6 @@ 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() { super.reset(); @@ -31,11 +25,6 @@ public class ChooseBlockersRedundancyWatcher extends Watcher { // workaround for 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/CommanderInfoWatcher.java b/Mage/src/main/java/mage/watchers/common/CommanderInfoWatcher.java index 0cfc776fc30..9547ff10525 100644 --- a/Mage/src/main/java/mage/watchers/common/CommanderInfoWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/CommanderInfoWatcher.java @@ -35,18 +35,6 @@ public class CommanderInfoWatcher extends Watcher { this.commanderTypeName = commanderTypeName; } - public CommanderInfoWatcher(final CommanderInfoWatcher watcher) { - super(watcher); - this.damageToPlayer.putAll(watcher.damageToPlayer); - this.checkCommanderDamage = watcher.checkCommanderDamage; - this.commanderTypeName = watcher.commanderTypeName; - } - - @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/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) { diff --git a/Mage/src/main/java/mage/watchers/common/CreatureAttackedWhichPlayerWatcher.java b/Mage/src/main/java/mage/watchers/common/CreatureAttackedWhichPlayerWatcher.java index 39c111cd112..df816d4d6d9 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) { @@ -51,9 +44,4 @@ public class CreatureAttackedWhichPlayerWatcher extends Watcher { super.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 c58764c006f..f97b7af0692 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) { @@ -58,11 +52,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/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/DragonOnTheBattlefieldWhileSpellWasCastWatcher.java b/Mage/src/main/java/mage/watchers/common/DragonOnTheBattlefieldWhileSpellWasCastWatcher.java index 0e3c2638cd9..0d5ee938bda 100644 --- a/Mage/src/main/java/mage/watchers/common/DragonOnTheBattlefieldWhileSpellWasCastWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/DragonOnTheBattlefieldWhileSpellWasCastWatcher.java @@ -27,11 +27,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) { @@ -68,9 +63,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/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) { 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 240d87aa66d..2b4afc98bd3 100644 --- a/Mage/src/main/java/mage/watchers/common/LandfallWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/LandfallWatcher.java @@ -23,17 +23,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 7654246820b..d3245b586ae 100644 --- a/Mage/src/main/java/mage/watchers/common/ManaSpentToCastWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/ManaSpentToCastWatcher.java @@ -22,11 +22,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) { // There was a check for the from zone being the hand, but that should not matter @@ -44,11 +39,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 fe0b93fb87b..69aa90939cf 100644 --- a/Mage/src/main/java/mage/watchers/common/MiracleWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/MiracleWatcher.java @@ -31,13 +31,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 { super.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 ef61b18a8f4..f0a2c4f20ab 100644 --- a/Mage/src/main/java/mage/watchers/common/PermanentsEnteredBattlefieldYourLastTurnWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/PermanentsEnteredBattlefieldYourLastTurnWatcher.java @@ -26,17 +26,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 3bd32a1a883..bd44334499e 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 c17eb95da6c..d0af1cecc23 100644 --- a/Mage/src/main/java/mage/watchers/common/PlayLandWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/PlayLandWatcher.java @@ -22,17 +22,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 de6d9b6ebc4..348e72ba1d6 100644 --- a/Mage/src/main/java/mage/watchers/common/PlayerLostLifeNonCombatWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/PlayerLostLifeNonCombatWatcher.java @@ -26,13 +26,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()) { @@ -75,9 +68,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 83576742abd..1b13d0957dd 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) { @@ -75,9 +68,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 69522a27c77..b2fb2e4ab79 100644 --- a/Mage/src/main/java/mage/watchers/common/RevoltWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/RevoltWatcher.java @@ -24,11 +24,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 { super.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 { +}