mirror of
https://github.com/correl/mage.git
synced 2024-12-24 11:50:45 +00:00
remove all copy constructors and copy methods for all watchers
This commit is contained in:
parent
e8303d551d
commit
702a1f2498
160 changed files with 94 additions and 1445 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -138,13 +138,6 @@ class AbandonedSarcophagusWatcher extends Watcher {
|
|||
super(WatcherScope.GAME);
|
||||
}
|
||||
|
||||
private AbandonedSarcophagusWatcher(final AbandonedSarcophagusWatcher watcher) {
|
||||
super(watcher);
|
||||
for (Entry<UUID, Cards> 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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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<UUID> 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<UUID> creatureSet = new HashSet<>();
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -87,16 +87,6 @@ class ArclightPhoenixWatcher extends Watcher {
|
|||
super(WatcherScope.GAME);
|
||||
}
|
||||
|
||||
public ArclightPhoenixWatcher(final ArclightPhoenixWatcher watcher) {
|
||||
super(watcher);
|
||||
this.instantSorceryCount.putAll(watcher.instantSorceryCount);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ArclightPhoenixWatcher copy() {
|
||||
return new ArclightPhoenixWatcher(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void watch(GameEvent event, Game game) {
|
||||
if (event.getType() == GameEvent.EventType.SPELL_CAST) {
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -59,28 +59,17 @@ public final class BoseijuWhoSheltersAll extends CardImpl {
|
|||
class BoseijuWhoSheltersAllWatcher extends Watcher {
|
||||
|
||||
private List<UUID> 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());
|
||||
|
|
|
@ -204,10 +204,6 @@ class BurningCinderFuryOfCrimsonChaosFireWatcher extends Watcher {
|
|||
super(WatcherScope.GAME);
|
||||
}
|
||||
|
||||
public BurningCinderFuryOfCrimsonChaosFireWatcher(final BurningCinderFuryOfCrimsonChaosFireWatcher watcher) {
|
||||
super(watcher);
|
||||
this.tappedActivePlayerIds.addAll(watcher.tappedActivePlayerIds);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void watch(GameEvent event, Game game) {
|
||||
|
@ -227,9 +223,4 @@ class BurningCinderFuryOfCrimsonChaosFireWatcher extends Watcher {
|
|||
public void reset() {
|
||||
tappedActivePlayerIds.clear();
|
||||
}
|
||||
|
||||
@Override
|
||||
public BurningCinderFuryOfCrimsonChaosFireWatcher copy() {
|
||||
return new BurningCinderFuryOfCrimsonChaosFireWatcher(this);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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));
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -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)) {
|
||||
|
|
|
@ -122,28 +122,17 @@ class CavernOfSoulsManaCondition extends CreatureCastManaCondition {
|
|||
class CavernOfSoulsWatcher extends Watcher {
|
||||
|
||||
private List<UUID> 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());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -84,13 +84,6 @@ class CerebralVortexWatcher extends Watcher {
|
|||
super(WatcherScope.GAME);
|
||||
}
|
||||
|
||||
CerebralVortexWatcher(final CerebralVortexWatcher watcher) {
|
||||
super(watcher);
|
||||
for (Entry<UUID, Integer> 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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -125,18 +125,6 @@ class CorrosiveOozeCombatWatcher extends Watcher {
|
|||
super(WatcherScope.GAME);
|
||||
}
|
||||
|
||||
public CorrosiveOozeCombatWatcher(final CorrosiveOozeCombatWatcher watcher) {
|
||||
super(watcher);
|
||||
for (Map.Entry<MageObjectReference, Set<MageObjectReference>> entry : watcher.oozeBlocksOrBlocked.entrySet()) {
|
||||
Set<MageObjectReference> newSet = new HashSet<>(entry.getValue());
|
||||
oozeBlocksOrBlocked.put(entry.getKey(), newSet);
|
||||
}
|
||||
for (Map.Entry<MageObjectReference, Set<MageObjectReference>> entry : watcher.oozeEquipmentsToDestroy.entrySet()) {
|
||||
Set<MageObjectReference> 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);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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<MageObjectReference> 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) {
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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(
|
||||
|
|
|
@ -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<UUID> 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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -52,13 +52,6 @@ class CardsDiscardedThisTurnWatcher extends Watcher {
|
|||
super(WatcherScope.GAME);
|
||||
}
|
||||
|
||||
public CardsDiscardedThisTurnWatcher(final CardsDiscardedThisTurnWatcher watcher) {
|
||||
super(watcher);
|
||||
for (Entry<UUID, Integer> 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 {
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -104,11 +104,6 @@ class FblthpTheLostWatcher extends Watcher {
|
|||
super(WatcherScope.GAME);
|
||||
}
|
||||
|
||||
private FblthpTheLostWatcher(final FblthpTheLostWatcher watcher) {
|
||||
super(watcher);
|
||||
spellsCastFromLibrary.addAll(watcher.spellsCastFromLibrary);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void watch(GameEvent event, Game game) {
|
||||
if (event.getType() == GameEvent.EventType.SPELL_CAST && event.getZone() == Zone.LIBRARY) {
|
||||
|
@ -130,11 +125,6 @@ class FblthpTheLostWatcher extends Watcher {
|
|||
super.reset();
|
||||
spellsCastFromLibrary.clear();
|
||||
}
|
||||
|
||||
@Override
|
||||
public FblthpTheLostWatcher copy() {
|
||||
return new FblthpTheLostWatcher(this);
|
||||
}
|
||||
}
|
||||
|
||||
class FblthpTheLostTargetedTriggeredAbility extends TriggeredAbilityImpl {
|
||||
|
|
|
@ -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<UUID> getCreaturesIds() {
|
||||
return creatureIds;
|
||||
}
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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()) {
|
||||
|
|
|
@ -101,13 +101,6 @@ class FreeRangeChickenWatcher extends Watcher {
|
|||
super(WatcherScope.GAME);
|
||||
}
|
||||
|
||||
public FreeRangeChickenWatcher(final FreeRangeChickenWatcher watcher) {
|
||||
super(watcher);
|
||||
for (Map.Entry<UUID, Integer> 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);
|
||||
}
|
||||
|
|
|
@ -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));
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -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<UUID> getCardsPutToGraveyardThisTurn() {
|
||||
return cards;
|
||||
}
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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() {
|
||||
|
|
|
@ -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<MageObjectReference> getAttackedThisTurnCreatures() {
|
||||
return this.attackedThisTurnCreatures;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CreaturesAttackedWatcher copy() {
|
||||
return new CreaturesAttackedWatcher(this);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
class GrandWarlordRadhaTriggeredAbility extends TriggeredAbilityImpl {
|
||||
|
|
|
@ -119,13 +119,6 @@ class GrimReminderWatcher extends Watcher {
|
|||
super(WatcherScope.GAME);
|
||||
}
|
||||
|
||||
public GrimReminderWatcher(final GrimReminderWatcher watcher) {
|
||||
super(watcher);
|
||||
for (Map.Entry<String, Set<UUID>> 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);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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<UUID> 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()) {
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -146,10 +146,6 @@ class IcefallRegentWatcher extends Watcher {
|
|||
super(WatcherScope.CARD);
|
||||
}
|
||||
|
||||
IcefallRegentWatcher(IcefallRegentWatcher watcher) {
|
||||
super(watcher);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void watch(GameEvent event, Game game) {
|
||||
if (event.getType() == GameEvent.EventType.LOST_CONTROL && event.getPlayerId().equals(controllerId) && event.getTargetId().equals(sourceId)) {
|
||||
|
@ -170,11 +166,6 @@ class IcefallRegentWatcher extends Watcher {
|
|||
public void reset() {
|
||||
//don't reset condition each turn - only when this leaves the battlefield
|
||||
}
|
||||
|
||||
@Override
|
||||
public IcefallRegentWatcher copy() {
|
||||
return new IcefallRegentWatcher(this);
|
||||
}
|
||||
}
|
||||
|
||||
class IcefallRegentCostIncreaseEffect extends CostModificationEffectImpl {
|
||||
|
|
|
@ -100,18 +100,6 @@ class IchneumonDruidWatcher extends Watcher {
|
|||
super(WatcherScope.GAME);
|
||||
}
|
||||
|
||||
public IchneumonDruidWatcher(final IchneumonDruidWatcher watcher) {
|
||||
super(watcher);
|
||||
for (Map.Entry<UUID, Integer> 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) {
|
||||
|
|
|
@ -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()) {
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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}"));
|
||||
|
|
|
@ -147,15 +147,6 @@ class JelevaNephaliasWatcher extends Watcher {
|
|||
super(WatcherScope.GAME);
|
||||
}
|
||||
|
||||
public JelevaNephaliasWatcher(final JelevaNephaliasWatcher watcher) {
|
||||
super(watcher);
|
||||
}
|
||||
|
||||
@Override
|
||||
public JelevaNephaliasWatcher copy() {
|
||||
return new JelevaNephaliasWatcher(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void watch(GameEvent event, Game game) {
|
||||
// Watcher saves all casts becaus of possible Clone cards that copy Jeleva
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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() {
|
||||
|
|
|
@ -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<UUID> getDiedThisTurn() {
|
||||
return this.diedThisTurn;
|
||||
}
|
||||
|
||||
@Override
|
||||
public KrovikanVampireCreaturesDiedWatcher copy() {
|
||||
return new KrovikanVampireCreaturesDiedWatcher(this);
|
||||
}
|
||||
}
|
||||
|
||||
class KrovikanVampireDelayedTriggeredAbility extends DelayedTriggeredAbility {
|
||||
|
|
|
@ -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));
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -88,11 +88,6 @@ class KydeleCardsDrawnThisTurnWatcher extends Watcher {
|
|||
super(WatcherScope.GAME);
|
||||
}
|
||||
|
||||
public KydeleCardsDrawnThisTurnWatcher(final KydeleCardsDrawnThisTurnWatcher watcher) {
|
||||
super(watcher);
|
||||
this.cardsDrawnThisTurn.putAll(watcher.cardsDrawnThisTurn);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void watch(GameEvent event, Game game) {
|
||||
if (event.getType() == GameEvent.EventType.DREW_CARD) {
|
||||
|
@ -111,9 +106,4 @@ class KydeleCardsDrawnThisTurnWatcher extends Watcher {
|
|||
cardsDrawnThisTurn.clear();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public KydeleCardsDrawnThisTurnWatcher copy() {
|
||||
return new KydeleCardsDrawnThisTurnWatcher(this);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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) {
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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()) {
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -71,21 +71,10 @@ class OpalPalaceWatcher extends Watcher {
|
|||
this.originalId = originalId;
|
||||
}
|
||||
|
||||
private OpalPalaceWatcher(final OpalPalaceWatcher watcher) {
|
||||
super(watcher);
|
||||
this.commanderId.addAll(watcher.commanderId);
|
||||
this.originalId = watcher.originalId;
|
||||
}
|
||||
|
||||
public boolean manaUsedToCastCommander(UUID id){
|
||||
return commanderId.contains(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public OpalPalaceWatcher copy() {
|
||||
return new OpalPalaceWatcher(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void watch(GameEvent event, Game game) {
|
||||
if (event.getType() == GameEvent.EventType.MANA_PAID) {
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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()) {
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -107,14 +107,6 @@ class ETBSinceYourLastTurnWatcher extends Watcher {
|
|||
this.playerToETBMap = new HashMap<>();
|
||||
}
|
||||
|
||||
public ETBSinceYourLastTurnWatcher(ETBSinceYourLastTurnWatcher watcher) {
|
||||
super(watcher);
|
||||
this.playerToETBMap = new HashMap<>();
|
||||
for (UUID player : watcher.playerToETBMap.keySet()){
|
||||
this.playerToETBMap.put(player, new HashSet<>(watcher.playerToETBMap.get(player)));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void watch(GameEvent event, Game game) {
|
||||
if (event.getType() == GameEvent.EventType.END_TURN_STEP_POST){
|
||||
|
@ -137,9 +129,4 @@ class ETBSinceYourLastTurnWatcher extends Watcher {
|
|||
public boolean enteredSinceLastTurn(UUID player, MageObjectReference mor){
|
||||
return playerToETBMap.get(player).contains(mor);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ETBSinceYourLastTurnWatcher copy() {
|
||||
return new ETBSinceYourLastTurnWatcher(this);
|
||||
}
|
||||
}
|
|
@ -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) {
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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()));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue