From a2c046993deeaea5a5e960fabf8c8515890dc507 Mon Sep 17 00:00:00 2001 From: Oleg Agafonov Date: Sun, 20 Dec 2020 14:30:42 +0400 Subject: [PATCH] * Cards drawn this turn - fixed rollback error on some cards usage; --- Mage.Sets/src/mage/cards/e/Eyekite.java | 2 +- Mage.Sets/src/mage/cards/f/FistsOfFlame.java | 1 - Mage.Sets/src/mage/cards/g/GnarledSage.java | 2 +- Mage.Sets/src/mage/cards/k/KydeleChosenOfKruphix.java | 2 +- Mage.Sets/src/mage/cards/s/SpinehornMinotaur.java | 2 +- Mage.Sets/src/mage/cards/t/ThoughtSponge.java | 2 +- Mage.Sets/src/mage/cards/t/ThunderingDjinn.java | 2 +- Mage.Sets/src/mage/cards/t/TomeAnima.java | 2 +- Mage/src/main/java/mage/game/GameImpl.java | 1 + .../java/mage/watchers/common/CardsDrawnThisTurnWatcher.java | 3 +++ 10 files changed, 11 insertions(+), 8 deletions(-) diff --git a/Mage.Sets/src/mage/cards/e/Eyekite.java b/Mage.Sets/src/mage/cards/e/Eyekite.java index 66ee3a30c1a..7e45ea536fa 100644 --- a/Mage.Sets/src/mage/cards/e/Eyekite.java +++ b/Mage.Sets/src/mage/cards/e/Eyekite.java @@ -36,7 +36,7 @@ public final class Eyekite extends CardImpl { this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect( new BoostSourceEffect(2, 0, Duration.WhileOnBattlefield), EyekiteCondition.instance, "{this} gets +2/+0 as long as you've drawn two or more cards this turn." - )), new CardsDrawnThisTurnWatcher()); + ))); } private Eyekite(final Eyekite card) { diff --git a/Mage.Sets/src/mage/cards/f/FistsOfFlame.java b/Mage.Sets/src/mage/cards/f/FistsOfFlame.java index 6b5af78da9a..cb9f3ed87c2 100644 --- a/Mage.Sets/src/mage/cards/f/FistsOfFlame.java +++ b/Mage.Sets/src/mage/cards/f/FistsOfFlame.java @@ -33,7 +33,6 @@ public final class FistsOfFlame extends CardImpl { StaticValue.get(0), Duration.EndOfTurn ).setText("and gets +1/+0 for each card you've drawn this turn.")); this.getSpellAbility().addTarget(new TargetCreaturePermanent()); - this.getSpellAbility().addWatcher(new CardsDrawnThisTurnWatcher()); } private FistsOfFlame(final FistsOfFlame card) { diff --git a/Mage.Sets/src/mage/cards/g/GnarledSage.java b/Mage.Sets/src/mage/cards/g/GnarledSage.java index 8b5ff451c9b..a2a6ea284d7 100644 --- a/Mage.Sets/src/mage/cards/g/GnarledSage.java +++ b/Mage.Sets/src/mage/cards/g/GnarledSage.java @@ -48,7 +48,7 @@ public final class GnarledSage extends CardImpl { "and has vigilance" )); - this.addAbility(ability, new CardsDrawnThisTurnWatcher()); + this.addAbility(ability); } private GnarledSage(final GnarledSage card) { diff --git a/Mage.Sets/src/mage/cards/k/KydeleChosenOfKruphix.java b/Mage.Sets/src/mage/cards/k/KydeleChosenOfKruphix.java index 43411eb8cb9..d3b9c5d55da 100644 --- a/Mage.Sets/src/mage/cards/k/KydeleChosenOfKruphix.java +++ b/Mage.Sets/src/mage/cards/k/KydeleChosenOfKruphix.java @@ -33,7 +33,7 @@ public final class KydeleChosenOfKruphix extends CardImpl { DynamicManaAbility ability = new DynamicManaAbility( Mana.ColorlessMana(1), CardsDrawnThisTurnDynamicValue.instance, new TapSourceCost(), null, false, CardsDrawnThisTurnDynamicValue.instance); - this.addAbility(ability, new CardsDrawnThisTurnWatcher()); + this.addAbility(ability); // Partner this.addAbility(PartnerAbility.getInstance()); diff --git a/Mage.Sets/src/mage/cards/s/SpinehornMinotaur.java b/Mage.Sets/src/mage/cards/s/SpinehornMinotaur.java index 62305472dd2..36f410b81f7 100644 --- a/Mage.Sets/src/mage/cards/s/SpinehornMinotaur.java +++ b/Mage.Sets/src/mage/cards/s/SpinehornMinotaur.java @@ -35,7 +35,7 @@ public final class SpinehornMinotaur extends CardImpl { new GainAbilitySourceEffect(DoubleStrikeAbility.getInstance(), Duration.WhileOnBattlefield), SpinehornMinotaurCondition.instance, "As long as you've drawn two or more cards this turn, " + "{this} has double strike" - )), new CardsDrawnThisTurnWatcher()); + ))); } private SpinehornMinotaur(final SpinehornMinotaur card) { diff --git a/Mage.Sets/src/mage/cards/t/ThoughtSponge.java b/Mage.Sets/src/mage/cards/t/ThoughtSponge.java index da1d3a75f02..342f7700f43 100644 --- a/Mage.Sets/src/mage/cards/t/ThoughtSponge.java +++ b/Mage.Sets/src/mage/cards/t/ThoughtSponge.java @@ -42,7 +42,7 @@ public final class ThoughtSponge extends CardImpl { CounterType.P1P1.createInstance(), ThoughtSpongeValue.instance, false ), "with a number of +1/+1 counters on it equal to " + "the greatest number of cards an opponent has drawn this turn" - ), new CardsDrawnThisTurnWatcher()); + )); // When Thought Sponge dies, draw cards equal to its power. this.addAbility(new DiesSourceTriggeredAbility( diff --git a/Mage.Sets/src/mage/cards/t/ThunderingDjinn.java b/Mage.Sets/src/mage/cards/t/ThunderingDjinn.java index 0339b662019..a8479e0ecbe 100644 --- a/Mage.Sets/src/mage/cards/t/ThunderingDjinn.java +++ b/Mage.Sets/src/mage/cards/t/ThunderingDjinn.java @@ -35,7 +35,7 @@ public final class ThunderingDjinn extends CardImpl { CardsDrawnThisTurnDynamicValue.instance ).setText("it deals damage to any target equal to the number of cards you've drawn this turn."), false); ability.addTarget(new TargetAnyTarget()); - this.addAbility(ability, new CardsDrawnThisTurnWatcher()); + this.addAbility(ability); } private ThunderingDjinn(final ThunderingDjinn card) { diff --git a/Mage.Sets/src/mage/cards/t/TomeAnima.java b/Mage.Sets/src/mage/cards/t/TomeAnima.java index 28a29266eab..0ea1b1dbd7e 100644 --- a/Mage.Sets/src/mage/cards/t/TomeAnima.java +++ b/Mage.Sets/src/mage/cards/t/TomeAnima.java @@ -34,7 +34,7 @@ public final class TomeAnima extends CardImpl { new GainAbilitySourceEffect(new CantBeBlockedSourceAbility(), Duration.WhileOnBattlefield), TomeAnimaCondition.instance, "{this} can't be blocked as long as you've drawn two or more cards this turn" - )), new CardsDrawnThisTurnWatcher()); + ))); } private TomeAnima(final TomeAnima card) { diff --git a/Mage/src/main/java/mage/game/GameImpl.java b/Mage/src/main/java/mage/game/GameImpl.java index 96f6c9e1cbc..181f9f7c479 100644 --- a/Mage/src/main/java/mage/game/GameImpl.java +++ b/Mage/src/main/java/mage/game/GameImpl.java @@ -1123,6 +1123,7 @@ public abstract class GameImpl implements Game, Serializable { getState().addWatcher(new DamageDoneWatcher()); getState().addWatcher(new PlanarRollWatcher()); getState().addWatcher(new PlayersAttackedThisTurnWatcher()); + getState().addWatcher(new CardsDrawnThisTurnWatcher()); } public void initPlayerDefaultWatchers(UUID playerId) { diff --git a/Mage/src/main/java/mage/watchers/common/CardsDrawnThisTurnWatcher.java b/Mage/src/main/java/mage/watchers/common/CardsDrawnThisTurnWatcher.java index c865d22a31a..f7b04aeec21 100644 --- a/Mage/src/main/java/mage/watchers/common/CardsDrawnThisTurnWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/CardsDrawnThisTurnWatcher.java @@ -17,6 +17,9 @@ public class CardsDrawnThisTurnWatcher extends Watcher { private final Map cardsDrawnThisTurn = new HashMap<>(); + /** + * It's a default game watcher, so no need to init it with card code + */ public CardsDrawnThisTurnWatcher() { super(WatcherScope.GAME); }