diff --git a/Mage.Sets/src/mage/cards/a/AncientGreenwarden.java b/Mage.Sets/src/mage/cards/a/AncientGreenwarden.java index 05c89acde16..74aebc13b10 100644 --- a/Mage.Sets/src/mage/cards/a/AncientGreenwarden.java +++ b/Mage.Sets/src/mage/cards/a/AncientGreenwarden.java @@ -16,6 +16,7 @@ import mage.game.Game; import mage.game.events.EntersTheBattlefieldEvent; import mage.game.events.GameEvent; import mage.game.events.NumberOfTriggersEvent; +import mage.util.CardUtil; import java.util.UUID; @@ -75,26 +76,25 @@ class AncientGreenwardenEffect extends ReplacementEffectImpl { @Override public boolean applies(GameEvent event, Ability source, Game game) { - if (!(event instanceof NumberOfTriggersEvent)) { - return false; - } - NumberOfTriggersEvent numberOfTriggersEvent = (NumberOfTriggersEvent) event; + // Only triggers for the source controller if (!source.isControlledBy(event.getPlayerId())) { return false; } - GameEvent sourceEvent = numberOfTriggersEvent.getSourceEvent(); + GameEvent sourceEvent = ((NumberOfTriggersEvent) event).getSourceEvent(); + // Only EtB triggers of lands if (sourceEvent == null || sourceEvent.getType() != GameEvent.EventType.ENTERS_THE_BATTLEFIELD || !(sourceEvent instanceof EntersTheBattlefieldEvent) || !((EntersTheBattlefieldEvent) sourceEvent).getTarget().isLand(game)) { return false; } - return game.getPermanent(numberOfTriggersEvent.getSourceId()) != null; + // Only for triggers of permanents + return game.getPermanent(event.getSourceId()) != null; } @Override public boolean replaceEvent(GameEvent event, Ability source, Game game) { - event.setAmount(event.getAmount() + 1); + event.setAmount(CardUtil.overflowInc(event.getAmount(), 1)); return false; } } diff --git a/Mage.Sets/src/mage/cards/a/AnnieJoinsUp.java b/Mage.Sets/src/mage/cards/a/AnnieJoinsUp.java index 452997f951b..94eb69faf2e 100644 --- a/Mage.Sets/src/mage/cards/a/AnnieJoinsUp.java +++ b/Mage.Sets/src/mage/cards/a/AnnieJoinsUp.java @@ -12,7 +12,6 @@ import mage.filter.FilterPermanent; import mage.filter.common.FilterCreatureOrPlaneswalkerPermanent; import mage.game.Game; import mage.game.events.GameEvent; -import mage.game.events.NumberOfTriggersEvent; import mage.game.permanent.Permanent; import mage.target.TargetPermanent; import mage.util.CardUtil; @@ -79,10 +78,7 @@ class AnnieJoinsUpEffect extends ReplacementEffectImpl { @Override public boolean applies(GameEvent event, Ability source, Game game) { - if (!(event instanceof NumberOfTriggersEvent)) { - return false; - } - Permanent permanent = game.getPermanent(((NumberOfTriggersEvent) event).getSourceId()); + Permanent permanent = game.getPermanentOrLKIBattlefield(event.getSourceId()); return permanent != null && permanent.isControlledBy(source.getControllerId()) && permanent.isLegendary(game) diff --git a/Mage.Sets/src/mage/cards/c/ClaraOswald.java b/Mage.Sets/src/mage/cards/c/ClaraOswald.java index 53b1863d768..f01bc7bd579 100644 --- a/Mage.Sets/src/mage/cards/c/ClaraOswald.java +++ b/Mage.Sets/src/mage/cards/c/ClaraOswald.java @@ -11,7 +11,6 @@ import mage.cards.CardSetInfo; import mage.constants.*; import mage.game.Game; import mage.game.events.GameEvent; -import mage.game.events.NumberOfTriggersEvent; import mage.game.permanent.Permanent; import mage.util.CardUtil; @@ -75,10 +74,7 @@ class ClaraOswaldEffect extends ReplacementEffectImpl { @Override public boolean applies(GameEvent event, Ability source, Game game) { - if (!(event instanceof NumberOfTriggersEvent)) { - return false; - } - Permanent permanent = game.getPermanent(((NumberOfTriggersEvent) event).getSourceId()); + Permanent permanent = game.getPermanentOrLKIBattlefield(event.getSourceId()); return permanent != null && permanent.isControlledBy(source.getControllerId()) && permanent.hasSubtype(SubType.DOCTOR, game); diff --git a/Mage.Sets/src/mage/cards/e/EchoesOfEternity.java b/Mage.Sets/src/mage/cards/e/EchoesOfEternity.java index 7bb66fb6f2e..c074ba92de9 100644 --- a/Mage.Sets/src/mage/cards/e/EchoesOfEternity.java +++ b/Mage.Sets/src/mage/cards/e/EchoesOfEternity.java @@ -12,7 +12,6 @@ import mage.filter.FilterSpell; import mage.filter.predicate.mageobject.ColorlessPredicate; import mage.game.Game; import mage.game.events.GameEvent; -import mage.game.events.NumberOfTriggersEvent; import mage.game.permanent.Permanent; import mage.game.stack.Spell; import mage.util.CardUtil; @@ -78,11 +77,10 @@ class EchoesOfEternityEffect extends ReplacementEffectImpl { @Override public boolean applies(GameEvent event, Ability source, Game game) { - if (!(event instanceof NumberOfTriggersEvent) - || !source.isControlledBy(game.getControllerId(event.getSourceId()))) { + if (!source.isControlledBy(event.getPlayerId())) { return false; } - Permanent permanent = game.getPermanent(event.getSourceId()); + Permanent permanent = game.getPermanentOrLKIBattlefield(event.getSourceId()); if (permanent != null && permanent.getColor(game).isColorless() && !permanent.getId().equals(source.getSourceId())) { return true; diff --git a/Mage.Sets/src/mage/cards/h/HarmonicProdigy.java b/Mage.Sets/src/mage/cards/h/HarmonicProdigy.java index 6928a35e2b4..b2de60e0ab3 100644 --- a/Mage.Sets/src/mage/cards/h/HarmonicProdigy.java +++ b/Mage.Sets/src/mage/cards/h/HarmonicProdigy.java @@ -13,8 +13,8 @@ import mage.constants.Outcome; import mage.constants.SubType; import mage.game.Game; import mage.game.events.GameEvent; -import mage.game.events.NumberOfTriggersEvent; import mage.game.permanent.Permanent; +import mage.util.CardUtil; import java.util.UUID; @@ -72,10 +72,7 @@ class HarmonicProdigyEffect extends ReplacementEffectImpl { @Override public boolean applies(GameEvent event, Ability source, Game game) { - if (!(event instanceof NumberOfTriggersEvent)) { - return false; - } - Permanent permanent = game.getPermanentOrLKIBattlefield(((NumberOfTriggersEvent) event).getSourceId()); + Permanent permanent = game.getPermanentOrLKIBattlefield(event.getSourceId()); return permanent != null && permanent.isControlledBy(source.getControllerId()) && (permanent.hasSubtype(SubType.SHAMAN, game) @@ -85,7 +82,7 @@ class HarmonicProdigyEffect extends ReplacementEffectImpl { @Override public boolean replaceEvent(GameEvent event, Ability source, Game game) { - event.setAmount(event.getAmount() + 1); + event.setAmount(CardUtil.overflowInc(event.getAmount(), 1)); return false; } } diff --git a/Mage.Sets/src/mage/cards/r/RoamingThrone.java b/Mage.Sets/src/mage/cards/r/RoamingThrone.java index 73858795131..08a8c7ce511 100644 --- a/Mage.Sets/src/mage/cards/r/RoamingThrone.java +++ b/Mage.Sets/src/mage/cards/r/RoamingThrone.java @@ -18,8 +18,8 @@ import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.predicate.mageobject.AnotherPredicate; import mage.game.Game; import mage.game.events.GameEvent; -import mage.game.events.NumberOfTriggersEvent; import mage.game.permanent.Permanent; +import mage.util.CardUtil; import java.util.UUID; @@ -90,14 +90,10 @@ class RoamingThroneReplacementEffect extends ReplacementEffectImpl { @Override public boolean applies(GameEvent event, Ability source, Game game) { - if (!(event instanceof NumberOfTriggersEvent)) { - return false; - } - NumberOfTriggersEvent numberOfTriggersEvent = (NumberOfTriggersEvent) event; if (!source.isControlledBy(event.getPlayerId())) { return false; } - Permanent permanentSource = game.getPermanentOrLKIBattlefield(numberOfTriggersEvent.getSourceId()); + Permanent permanentSource = game.getPermanentOrLKIBattlefield(event.getSourceId()); return permanentSource != null && filter.match(permanentSource, source.getControllerId(), source, game) && permanentSource.hasSubtype(ChooseCreatureTypeEffect.getChosenCreatureType(source.getSourceId(), game), game); @@ -105,7 +101,7 @@ class RoamingThroneReplacementEffect extends ReplacementEffectImpl { @Override public boolean replaceEvent(GameEvent event, Ability source, Game game) { - event.setAmount(event.getAmount() + 1); + event.setAmount(CardUtil.overflowInc(event.getAmount(), 1)); return false; } } diff --git a/Mage/src/main/java/mage/abilities/effects/common/replacement/AdditionalTriggerControlledETBReplacementEffect.java b/Mage/src/main/java/mage/abilities/effects/common/replacement/AdditionalTriggerControlledETBReplacementEffect.java index 38267422654..c4b4b464a24 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/replacement/AdditionalTriggerControlledETBReplacementEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/replacement/AdditionalTriggerControlledETBReplacementEffect.java @@ -8,6 +8,7 @@ import mage.game.Game; import mage.game.events.EntersTheBattlefieldEvent; import mage.game.events.GameEvent; import mage.game.events.NumberOfTriggersEvent; +import mage.util.CardUtil; /** * @author TheElk801 @@ -36,15 +37,11 @@ public class AdditionalTriggerControlledETBReplacementEffect extends Replacement @Override public boolean applies(GameEvent event, Ability source, Game game) { - if (!(event instanceof NumberOfTriggersEvent)) { - return false; - } - NumberOfTriggersEvent numberOfTriggersEvent = (NumberOfTriggersEvent) event; // Only triggers for the source controller if (!source.isControlledBy(event.getPlayerId())) { return false; } - GameEvent sourceEvent = numberOfTriggersEvent.getSourceEvent(); + GameEvent sourceEvent = ((NumberOfTriggersEvent) event).getSourceEvent(); // Only EtB triggers if (sourceEvent == null || sourceEvent.getType() != GameEvent.EventType.ENTERS_THE_BATTLEFIELD @@ -52,12 +49,12 @@ public class AdditionalTriggerControlledETBReplacementEffect extends Replacement return false; } // Only for triggers of permanents - return game.getPermanent(numberOfTriggersEvent.getSourceId()) != null; + return game.getPermanent(event.getSourceId()) != null; } @Override public boolean replaceEvent(GameEvent event, Ability source, Game game) { - event.setAmount(event.getAmount() + 1); + event.setAmount(CardUtil.overflowInc(event.getAmount(), 1)); return false; } }