From ca7de23eb57f3db7d36c78641774f5df5899d5d9 Mon Sep 17 00:00:00 2001 From: Evan Kranzler Date: Mon, 30 May 2022 10:46:33 -0400 Subject: [PATCH] [CLB] Implemented Nimblewright Schematic --- .../src/mage/cards/i/IchorWellspring.java | 13 +++---- .../src/mage/cards/m/MycosynthWellspring.java | 11 +++--- .../mage/cards/n/NimblewrightSchematic.java | 34 +++++++++++++++++++ .../src/mage/cards/s/ServoSchematic.java | 12 +++---- .../CommanderLegendsBattleForBaldursGate.java | 1 + ...ttlefieldOrDiesSourceTriggeredAbility.java | 19 +++++++---- 6 files changed, 65 insertions(+), 25 deletions(-) create mode 100644 Mage.Sets/src/mage/cards/n/NimblewrightSchematic.java diff --git a/Mage.Sets/src/mage/cards/i/IchorWellspring.java b/Mage.Sets/src/mage/cards/i/IchorWellspring.java index d44250255e6..5e819519b3d 100644 --- a/Mage.Sets/src/mage/cards/i/IchorWellspring.java +++ b/Mage.Sets/src/mage/cards/i/IchorWellspring.java @@ -2,25 +2,26 @@ package mage.cards.i; -import java.util.UUID; -import mage.abilities.common.EntersBattlefieldTriggeredAbility; -import mage.abilities.common.PutIntoGraveFromBattlefieldSourceTriggeredAbility; +import mage.abilities.common.EntersBattlefieldOrDiesSourceTriggeredAbility; import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import java.util.UUID; + /** * @author ayratn */ public final class IchorWellspring extends CardImpl { public IchorWellspring(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}"); + super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}"); // When Ichor Wellspring enters the battlefield or is put into a graveyard from the battlefield, draw a card. - this.addAbility(new EntersBattlefieldTriggeredAbility(new DrawCardSourceControllerEffect(1))); - this.addAbility(new PutIntoGraveFromBattlefieldSourceTriggeredAbility(new DrawCardSourceControllerEffect(1))); + this.addAbility(new EntersBattlefieldOrDiesSourceTriggeredAbility( + new DrawCardSourceControllerEffect(1), false, false + )); } private IchorWellspring(final IchorWellspring card) { diff --git a/Mage.Sets/src/mage/cards/m/MycosynthWellspring.java b/Mage.Sets/src/mage/cards/m/MycosynthWellspring.java index b3725370071..44166a2b92a 100644 --- a/Mage.Sets/src/mage/cards/m/MycosynthWellspring.java +++ b/Mage.Sets/src/mage/cards/m/MycosynthWellspring.java @@ -1,8 +1,7 @@ package mage.cards.m; -import mage.abilities.common.DiesSourceTriggeredAbility; -import mage.abilities.common.EntersBattlefieldTriggeredAbility; +import mage.abilities.common.EntersBattlefieldOrDiesSourceTriggeredAbility; import mage.abilities.effects.common.search.SearchLibraryPutInHandEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -13,18 +12,18 @@ import mage.target.common.TargetCardInLibrary; import java.util.UUID; /** - * * @author North */ public final class MycosynthWellspring extends CardImpl { public MycosynthWellspring(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}"); + super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}"); // When Mycosynth Wellspring enters the battlefield or is put into a graveyard from the battlefield, // you may search your library for a basic land card, reveal it, put it into your hand, then shuffle your library. - this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true, true), true)); - this.addAbility(new DiesSourceTriggeredAbility(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true, true), true)); + this.addAbility(new EntersBattlefieldOrDiesSourceTriggeredAbility(new SearchLibraryPutInHandEffect( + new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND), true, true + ), true, false)); } private MycosynthWellspring(final MycosynthWellspring card) { diff --git a/Mage.Sets/src/mage/cards/n/NimblewrightSchematic.java b/Mage.Sets/src/mage/cards/n/NimblewrightSchematic.java new file mode 100644 index 00000000000..a9c08f54f55 --- /dev/null +++ b/Mage.Sets/src/mage/cards/n/NimblewrightSchematic.java @@ -0,0 +1,34 @@ +package mage.cards.n; + +import mage.abilities.common.EntersBattlefieldOrDiesSourceTriggeredAbility; +import mage.abilities.effects.common.CreateTokenEffect; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.game.permanent.token.ConstructToken; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class NimblewrightSchematic extends CardImpl { + + public NimblewrightSchematic(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}"); + + // When Nimblewright Schematic enters the battlefield or is put into a graveyard from the battlefield, create a 1/1 colorless Construct artifact creature token. + this.addAbility(new EntersBattlefieldOrDiesSourceTriggeredAbility( + new CreateTokenEffect(new ConstructToken()), false, false + )); + } + + private NimblewrightSchematic(final NimblewrightSchematic card) { + super(card); + } + + @Override + public NimblewrightSchematic copy() { + return new NimblewrightSchematic(this); + } +} diff --git a/Mage.Sets/src/mage/cards/s/ServoSchematic.java b/Mage.Sets/src/mage/cards/s/ServoSchematic.java index c3786f35e6e..5b49a104d40 100644 --- a/Mage.Sets/src/mage/cards/s/ServoSchematic.java +++ b/Mage.Sets/src/mage/cards/s/ServoSchematic.java @@ -1,17 +1,16 @@ package mage.cards.s; -import java.util.UUID; -import mage.abilities.common.EntersBattlefieldTriggeredAbility; -import mage.abilities.common.PutIntoGraveFromBattlefieldSourceTriggeredAbility; +import mage.abilities.common.EntersBattlefieldOrDiesSourceTriggeredAbility; import mage.abilities.effects.common.CreateTokenEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.game.permanent.token.ServoToken; +import java.util.UUID; + /** - * * @author fireshoes */ public final class ServoSchematic extends CardImpl { @@ -20,8 +19,9 @@ public final class ServoSchematic extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}"); // When Servo Schematic enters the battlefield or is put into a graveyard from the battlefield, create a 1/1 colorless Servo artifact creature token. - this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new ServoToken()))); - this.addAbility(new PutIntoGraveFromBattlefieldSourceTriggeredAbility(new CreateTokenEffect(new ServoToken()))); + this.addAbility(new EntersBattlefieldOrDiesSourceTriggeredAbility( + new CreateTokenEffect(new ServoToken()), false, false + )); } private ServoSchematic(final ServoSchematic card) { diff --git a/Mage.Sets/src/mage/sets/CommanderLegendsBattleForBaldursGate.java b/Mage.Sets/src/mage/sets/CommanderLegendsBattleForBaldursGate.java index 8f1dda14126..2d61d6c77aa 100644 --- a/Mage.Sets/src/mage/sets/CommanderLegendsBattleForBaldursGate.java +++ b/Mage.Sets/src/mage/sets/CommanderLegendsBattleForBaldursGate.java @@ -191,6 +191,7 @@ public final class CommanderLegendsBattleForBaldursGate extends ExpansionSet { cards.add(new SetCardInfo("Navigation Orb", 329, Rarity.COMMON, mage.cards.n.NavigationOrb.class)); cards.add(new SetCardInfo("Nemesis Phoenix", 189, Rarity.UNCOMMON, mage.cards.n.NemesisPhoenix.class)); cards.add(new SetCardInfo("Nimbleclaw Adept", 86, Rarity.COMMON, mage.cards.n.NimbleclawAdept.class)); + cards.add(new SetCardInfo("Nimblewright Schematic", 330, Rarity.COMMON, mage.cards.n.NimblewrightSchematic.class)); cards.add(new SetCardInfo("Nine-Fingers Keene", 289, Rarity.RARE, mage.cards.n.NineFingersKeene.class)); cards.add(new SetCardInfo("Noble's Purse", 331, Rarity.UNCOMMON, mage.cards.n.NoblesPurse.class)); cards.add(new SetCardInfo("Nothic", 138, Rarity.UNCOMMON, mage.cards.n.Nothic.class)); diff --git a/Mage/src/main/java/mage/abilities/common/EntersBattlefieldOrDiesSourceTriggeredAbility.java b/Mage/src/main/java/mage/abilities/common/EntersBattlefieldOrDiesSourceTriggeredAbility.java index ff5ee68109f..5a881f2f54a 100644 --- a/Mage/src/main/java/mage/abilities/common/EntersBattlefieldOrDiesSourceTriggeredAbility.java +++ b/Mage/src/main/java/mage/abilities/common/EntersBattlefieldOrDiesSourceTriggeredAbility.java @@ -1,5 +1,3 @@ - - package mage.abilities.common; import mage.abilities.TriggeredAbilityImpl; @@ -7,23 +5,28 @@ import mage.abilities.effects.Effect; import mage.constants.Zone; import mage.game.Game; import mage.game.events.GameEvent; -import mage.game.events.GameEvent.EventType; import mage.game.events.ZoneChangeEvent; /** - * * @author LevelX2 */ - public class EntersBattlefieldOrDiesSourceTriggeredAbility extends TriggeredAbilityImpl { + private final boolean diesText; + public EntersBattlefieldOrDiesSourceTriggeredAbility(Effect effect, boolean optional) { + this(effect, optional, true); + } + + public EntersBattlefieldOrDiesSourceTriggeredAbility(Effect effect, boolean optional, boolean diesText) { super(Zone.BATTLEFIELD, effect, optional); + this.diesText = diesText; setLeavesTheBattlefieldTrigger(true); } public EntersBattlefieldOrDiesSourceTriggeredAbility(final EntersBattlefieldOrDiesSourceTriggeredAbility ability) { super(ability); + this.diesText = ability.diesText; } @Override @@ -33,7 +36,8 @@ public class EntersBattlefieldOrDiesSourceTriggeredAbility extends TriggeredAbil @Override public boolean checkEventType(GameEvent event, Game game) { - return event.getType() == GameEvent.EventType.ENTERS_THE_BATTLEFIELD || event.getType() == GameEvent.EventType.ZONE_CHANGE ; + return event.getType() == GameEvent.EventType.ENTERS_THE_BATTLEFIELD + || event.getType() == GameEvent.EventType.ZONE_CHANGE; } @Override @@ -53,6 +57,7 @@ public class EntersBattlefieldOrDiesSourceTriggeredAbility extends TriggeredAbil @Override public String getTriggerPhrase() { - return "When {this} enters the battlefield or dies, " ; + return "When {this} enters the battlefield or " + + (diesText ? "dies" : "is put into a graveyard from the battlefield") + ", "; } }