From aa216dc7426bc1a04e0c9933ec707500207252a9 Mon Sep 17 00:00:00 2001 From: grimreap124 <19590931+grimreap124@users.noreply.github.com> Date: Sun, 23 Jun 2024 02:15:03 +1000 Subject: [PATCH] Implement [ACR] Rooftop Bypass (#12491) * Implement-ACR-Rooftop-Bypass * Implement-ACR-Rooftop-Bypass --- Mage.Sets/src/mage/cards/r/RooftopBypass.java | 36 +++++++++++++++++++ Mage.Sets/src/mage/sets/AssassinsCreed.java | 1 + .../main/java/mage/filter/StaticFilters.java | 9 ++++- 3 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 Mage.Sets/src/mage/cards/r/RooftopBypass.java diff --git a/Mage.Sets/src/mage/cards/r/RooftopBypass.java b/Mage.Sets/src/mage/cards/r/RooftopBypass.java new file mode 100644 index 00000000000..6587c7dd39b --- /dev/null +++ b/Mage.Sets/src/mage/cards/r/RooftopBypass.java @@ -0,0 +1,36 @@ +package mage.cards.r; + +import java.util.UUID; + +import mage.abilities.common.DealCombatDamageControlledTriggeredAbility; +import mage.abilities.effects.common.CreateTokenEffect; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.filter.StaticFilters; +import mage.game.permanent.token.AssassinMenaceToken; + +/** + * + * @author grimreap124 + */ +public final class RooftopBypass extends CardImpl { + + public RooftopBypass(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{U}{B}"); + + + // Whenever one or more nontoken creatures you control deal combat damage to a player, create a 1/1 black Assassin creature token with menace. + this.addAbility(new DealCombatDamageControlledTriggeredAbility(new CreateTokenEffect(new AssassinMenaceToken()), + StaticFilters.FILTER_CONTROLLED_CREATURES_NON_TOKEN)); + } + + private RooftopBypass(final RooftopBypass card) { + super(card); + } + + @Override + public RooftopBypass copy() { + return new RooftopBypass(this); + } +} diff --git a/Mage.Sets/src/mage/sets/AssassinsCreed.java b/Mage.Sets/src/mage/sets/AssassinsCreed.java index 3ef51d68e5e..11d513d5384 100644 --- a/Mage.Sets/src/mage/sets/AssassinsCreed.java +++ b/Mage.Sets/src/mage/sets/AssassinsCreed.java @@ -76,6 +76,7 @@ public final class AssassinsCreed extends ExpansionSet { cards.add(new SetCardInfo("Reconstruct History", 97, Rarity.UNCOMMON, mage.cards.r.ReconstructHistory.class)); cards.add(new SetCardInfo("Rest in Peace", 83, Rarity.RARE, mage.cards.r.RestInPeace.class)); cards.add(new SetCardInfo("Restart Sequence", 30, Rarity.UNCOMMON, mage.cards.r.RestartSequence.class)); + cards.add(new SetCardInfo("Rooftop Bypass", 298, Rarity.RARE, mage.cards.r.RooftopBypass.class)); cards.add(new SetCardInfo("Royal Assassin", 93, Rarity.RARE, mage.cards.r.RoyalAssassin.class)); cards.add(new SetCardInfo("Settlement Blacksmith", 280, Rarity.UNCOMMON, mage.cards.s.SettlementBlacksmith.class)); cards.add(new SetCardInfo("Silent Clearing", 115, Rarity.RARE, mage.cards.s.SilentClearing.class)); diff --git a/Mage/src/main/java/mage/filter/StaticFilters.java b/Mage/src/main/java/mage/filter/StaticFilters.java index cec87e9ec43..ea864e8b4bf 100644 --- a/Mage/src/main/java/mage/filter/StaticFilters.java +++ b/Mage/src/main/java/mage/filter/StaticFilters.java @@ -1003,6 +1003,14 @@ public final class StaticFilters { FILTER_CONTROLLED_CREATURE_NON_TOKEN.setLockedFilter(true); } + public static final FilterCreaturePermanent FILTER_CONTROLLED_CREATURES_NON_TOKEN = new FilterCreaturePermanent("nontoken creatures you control"); + + static { + FILTER_CONTROLLED_CREATURES_NON_TOKEN.add(TargetController.YOU.getControllerPredicate()); + FILTER_CONTROLLED_CREATURES_NON_TOKEN.add(TokenPredicate.FALSE); + FILTER_CONTROLLED_CREATURES_NON_TOKEN.setLockedFilter(true); + } + public static final FilterCreaturePermanent FILTER_CREATURE_NON_TOKEN = new FilterCreaturePermanent("a nontoken creature"); static { @@ -1010,7 +1018,6 @@ public final class StaticFilters { FILTER_CREATURE_NON_TOKEN.setLockedFilter(true); } - public static final FilterCreaturePermanent FILTER_CREATURES_NON_TOKEN = new FilterCreaturePermanent("nontoken creatures"); static {