From 0224b620eb807078f1cb466686c17902c096983a Mon Sep 17 00:00:00 2001 From: theelk801 Date: Sun, 2 Apr 2023 20:40:20 -0400 Subject: [PATCH] [MOM] Implement Tiller of Flesh --- Mage.Sets/src/mage/cards/t/TillerOfFlesh.java | 67 +++++++++++++++++++ .../src/mage/sets/MarchOfTheMachine.java | 1 + 2 files changed, 68 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/t/TillerOfFlesh.java diff --git a/Mage.Sets/src/mage/cards/t/TillerOfFlesh.java b/Mage.Sets/src/mage/cards/t/TillerOfFlesh.java new file mode 100644 index 00000000000..cd083287f33 --- /dev/null +++ b/Mage.Sets/src/mage/cards/t/TillerOfFlesh.java @@ -0,0 +1,67 @@ +package mage.cards.t; + +import mage.MageInt; +import mage.abilities.common.SpellCastControllerTriggeredAbility; +import mage.abilities.effects.keyword.IncubateEffect; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.SubType; +import mage.filter.FilterSpell; +import mage.filter.predicate.Predicate; +import mage.game.Game; +import mage.game.stack.StackObject; +import mage.target.Target; + +import java.util.Collection; +import java.util.Objects; +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class TillerOfFlesh extends CardImpl { + + private static final FilterSpell filter = new FilterSpell("a spell that targets one or more permanents"); + + static { + filter.add(TillerOfFleshPredicate.instance); + } + + public TillerOfFlesh(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}"); + + this.subtype.add(SubType.PHYREXIAN); + this.subtype.add(SubType.KNIGHT); + this.power = new MageInt(2); + this.toughness = new MageInt(4); + + // Whenever you cast a spell that targets one or more permanents, incubate 2. + this.addAbility(new SpellCastControllerTriggeredAbility(new IncubateEffect(2), filter, false)); + } + + private TillerOfFlesh(final TillerOfFlesh card) { + super(card); + } + + @Override + public TillerOfFlesh copy() { + return new TillerOfFlesh(this); + } +} + +enum TillerOfFleshPredicate implements Predicate { + instance; + + @Override + public boolean apply(StackObject input, Game game) { + return input + .getStackAbility() + .getTargets() + .stream() + .map(Target::getTargets) + .flatMap(Collection::stream) + .map(game::getPermanent) + .anyMatch(Objects::nonNull); + } +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/MarchOfTheMachine.java b/Mage.Sets/src/mage/sets/MarchOfTheMachine.java index 06aabf6ec06..5d0764db49e 100644 --- a/Mage.Sets/src/mage/sets/MarchOfTheMachine.java +++ b/Mage.Sets/src/mage/sets/MarchOfTheMachine.java @@ -91,6 +91,7 @@ public final class MarchOfTheMachine extends ExpansionSet { cards.add(new SetCardInfo("Swamp", 279, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Swiftwater Cliffs", 273, Rarity.COMMON, mage.cards.s.SwiftwaterCliffs.class)); cards.add(new SetCardInfo("Thornwood Falls", 274, Rarity.COMMON, mage.cards.t.ThornwoodFalls.class)); + cards.add(new SetCardInfo("Tiller of Flesh", 44, Rarity.UNCOMMON, mage.cards.t.TillerOfFlesh.class)); cards.add(new SetCardInfo("Tranquil Cove", 275, Rarity.COMMON, mage.cards.t.TranquilCove.class)); cards.add(new SetCardInfo("Transcendent Message", 83, Rarity.RARE, mage.cards.t.TranscendentMessage.class)); cards.add(new SetCardInfo("Voldaren Thrillseeker", 171, Rarity.RARE, mage.cards.v.VoldarenThrillseeker.class));