From 05443fb3f48f07078dafe7119b267e872d49804c Mon Sep 17 00:00:00 2001 From: PurpleCrowbar <26198472+PurpleCrowbar@users.noreply.github.com> Date: Tue, 9 May 2023 13:52:49 +0100 Subject: [PATCH] Clean up some code for Marneus Calgar and Elesh Norn, Mother of Machines --- .../cards/e/EleshNornMotherOfMachines.java | 3 +- Mage.Sets/src/mage/cards/m/MarneusCalgar.java | 61 +++++-------------- 2 files changed, 15 insertions(+), 49 deletions(-) diff --git a/Mage.Sets/src/mage/cards/e/EleshNornMotherOfMachines.java b/Mage.Sets/src/mage/cards/e/EleshNornMotherOfMachines.java index bd747eaf376..e02283eef2d 100644 --- a/Mage.Sets/src/mage/cards/e/EleshNornMotherOfMachines.java +++ b/Mage.Sets/src/mage/cards/e/EleshNornMotherOfMachines.java @@ -73,14 +73,13 @@ class EleshNornMotherOfMachinesDoublingEffect extends ReplacementEffectImpl { public boolean applies(GameEvent event, Ability source, Game game) { if (event instanceof NumberOfTriggersEvent) { NumberOfTriggersEvent numberOfTriggersEvent = (NumberOfTriggersEvent) event; - // Only triggers of the controller of Elesh Norn + // Only triggers for the controller of Elesh Norn if (source.isControlledBy(event.getPlayerId())) { GameEvent sourceEvent = numberOfTriggersEvent.getSourceEvent(); // Only EtB triggers if (sourceEvent != null && sourceEvent.getType() == GameEvent.EventType.ENTERS_THE_BATTLEFIELD && sourceEvent instanceof EntersTheBattlefieldEvent) { - EntersTheBattlefieldEvent entersTheBattlefieldEvent = (EntersTheBattlefieldEvent) sourceEvent; // Only for triggers of permanents if (game.getPermanent(numberOfTriggersEvent.getSourceId()) != null) { return true; diff --git a/Mage.Sets/src/mage/cards/m/MarneusCalgar.java b/Mage.Sets/src/mage/cards/m/MarneusCalgar.java index 18b7e56e1d4..63a6921ec49 100644 --- a/Mage.Sets/src/mage/cards/m/MarneusCalgar.java +++ b/Mage.Sets/src/mage/cards/m/MarneusCalgar.java @@ -1,7 +1,7 @@ package mage.cards.m; import mage.MageInt; -import mage.abilities.TriggeredAbilityImpl; +import mage.abilities.common.EntersBattlefieldOneOrMoreTriggeredAbility; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.CreateTokenEffect; @@ -9,16 +9,10 @@ import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.keyword.DoubleStrikeAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.SubType; -import mage.constants.SuperType; -import mage.constants.Zone; -import mage.game.Game; -import mage.game.events.GameEvent; -import mage.game.events.ZoneChangeGroupEvent; -import mage.game.permanent.PermanentImpl; +import mage.constants.*; +import mage.filter.FilterPermanent; +import mage.filter.predicate.permanent.TokenPredicate; -import java.util.Objects; import java.util.UUID; import mage.game.permanent.token.WhiteAstartesWarriorToken; @@ -27,6 +21,12 @@ import mage.game.permanent.token.WhiteAstartesWarriorToken; */ public final class MarneusCalgar extends CardImpl { + static final FilterPermanent filter = new FilterPermanent("tokens"); + + static { + filter.add(TokenPredicate.TRUE); + } + public MarneusCalgar(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}{U}{B}"); @@ -39,7 +39,10 @@ public final class MarneusCalgar extends CardImpl { this.addAbility(DoubleStrikeAbility.getInstance()); // Master Tactician — Whenever one or more tokens enter the battlefield under your control, draw a card. - this.addAbility(new MarneusCalgarTriggeredAbility()); + //this.addAbility(new MarneusCalgarTriggeredAbility()); + this.addAbility(new EntersBattlefieldOneOrMoreTriggeredAbility( + new DrawCardSourceControllerEffect(1), filter, TargetController.YOU + ).withFlavorWord("Master Tactician")); // Chapter Master — {6}: Create two 2/2 white Astartes Warrior creature tokens with vigilance. this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, @@ -57,39 +60,3 @@ public final class MarneusCalgar extends CardImpl { return new MarneusCalgar(this); } } - -class MarneusCalgarTriggeredAbility extends TriggeredAbilityImpl { - - MarneusCalgarTriggeredAbility() { - super(Zone.BATTLEFIELD, new DrawCardSourceControllerEffect(1), false); - this.withFlavorWord("Master Tactician"); - setTriggerPhrase("Whenever one or more tokens enter the battlefield under your control, "); - } - - private MarneusCalgarTriggeredAbility(final MarneusCalgarTriggeredAbility ability) { - super(ability); - } - - @Override - public boolean checkEventType(GameEvent event, Game game) { - return event.getType() == GameEvent.EventType.ZONE_CHANGE_GROUP; - } - - @Override - public boolean checkTrigger(GameEvent event, Game game) { - ZoneChangeGroupEvent zEvent = (ZoneChangeGroupEvent) event; - return Zone.BATTLEFIELD == zEvent.getToZone() - && zEvent.getTokens() != null - && zEvent - .getTokens() - .stream() - .filter(Objects::nonNull) - .map(PermanentImpl::getControllerId) - .anyMatch(this::isControlledBy); - } - - @Override - public MarneusCalgarTriggeredAbility copy() { - return new MarneusCalgarTriggeredAbility(this); - } -}