From bce7efb8cfc0871f971c9a96810d63229325f0b6 Mon Sep 17 00:00:00 2001 From: Evan Kranzler Date: Tue, 27 Oct 2020 09:27:39 -0400 Subject: [PATCH] [CMR] Implemented Rebbec, Architect of Ascension --- .../cards/r/RebbecArchitectOfAscension.java | 79 +++++++++++++++++++ Mage.Sets/src/mage/sets/CommanderLegends.java | 1 + .../main/java/mage/filter/StaticFilters.java | 6 ++ 3 files changed, 86 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/r/RebbecArchitectOfAscension.java diff --git a/Mage.Sets/src/mage/cards/r/RebbecArchitectOfAscension.java b/Mage.Sets/src/mage/cards/r/RebbecArchitectOfAscension.java new file mode 100644 index 00000000000..188c20076ba --- /dev/null +++ b/Mage.Sets/src/mage/cards/r/RebbecArchitectOfAscension.java @@ -0,0 +1,79 @@ +package mage.cards.r; + +import mage.MageInt; +import mage.MageObject; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.effects.common.continuous.GainAbilityControlledEffect; +import mage.abilities.keyword.PartnerAbility; +import mage.abilities.keyword.ProtectionAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.SubType; +import mage.constants.SuperType; +import mage.filter.FilterCard; +import mage.filter.StaticFilters; +import mage.filter.predicate.ObjectSourcePlayer; +import mage.filter.predicate.ObjectSourcePlayerPredicate; +import mage.game.Game; + +import java.util.Objects; +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class RebbecArchitectOfAscension extends CardImpl { + + private static final FilterCard filter + = new FilterCard("each converted mana cost among artifacts you control"); + + static { + filter.add(RebbecArchitectOfAscensionPredicate.instance); + } + + public RebbecArchitectOfAscension(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}"); + + this.addSuperType(SuperType.LEGENDARY); + this.subtype.add(SubType.HUMAN); + this.subtype.add(SubType.ARTIFICER); + this.power = new MageInt(3); + this.toughness = new MageInt(4); + + // Artifacts you control have protection from each converted mana cost among artifacts you control. + this.addAbility(new SimpleStaticAbility(new GainAbilityControlledEffect( + new ProtectionAbility(filter), Duration.WhileOnBattlefield, + StaticFilters.FILTER_PERMANENT_ARTIFACT + ))); + + // Partner + this.addAbility(PartnerAbility.getInstance()); + } + + private RebbecArchitectOfAscension(final RebbecArchitectOfAscension card) { + super(card); + } + + @Override + public RebbecArchitectOfAscension copy() { + return new RebbecArchitectOfAscension(this); + } +} + +enum RebbecArchitectOfAscensionPredicate implements ObjectSourcePlayerPredicate> { + instance; + + @Override + public boolean apply(ObjectSourcePlayer input, Game game) { + return game.getBattlefield() + .getActivePermanents( + StaticFilters.FILTER_CONTROLLED_PERMANENT_ARTIFACT, + game.getControllerId(input.getSourceId()), input.getSourceId(), game + ).stream() + .filter(Objects::nonNull) + .mapToInt(MageObject::getConvertedManaCost) + .anyMatch(n -> input.getObject().getConvertedManaCost() == n); + } +} diff --git a/Mage.Sets/src/mage/sets/CommanderLegends.java b/Mage.Sets/src/mage/sets/CommanderLegends.java index 79acd55d5bc..12d6afd2175 100644 --- a/Mage.Sets/src/mage/sets/CommanderLegends.java +++ b/Mage.Sets/src/mage/sets/CommanderLegends.java @@ -46,6 +46,7 @@ public final class CommanderLegends extends ExpansionSet { cards.add(new SetCardInfo("Prossh, Skyraider of Kher", 530, Rarity.MYTHIC, mage.cards.p.ProsshSkyraiderOfKher.class)); cards.add(new SetCardInfo("Prying Eyes", 86, Rarity.COMMON, mage.cards.p.PryingEyes.class)); cards.add(new SetCardInfo("Raise the Alarm", 41, Rarity.COMMON, mage.cards.r.RaiseTheAlarm.class)); + cards.add(new SetCardInfo("Rebbec, Architect of Ascension", 42, Rarity.UNCOMMON, mage.cards.r.RebbecArchitectOfAscension.class)); cards.add(new SetCardInfo("Rejuvenating Springs", 354, Rarity.RARE, mage.cards.r.RejuvenatingSprings.class)); cards.add(new SetCardInfo("Sengir, the Dark Baron", 149, Rarity.RARE, mage.cards.s.SengirTheDarkBaron.class)); cards.add(new SetCardInfo("Siani, Eye of the Storm", 95, Rarity.UNCOMMON, mage.cards.s.SianiEyeOfTheStorm.class)); diff --git a/Mage/src/main/java/mage/filter/StaticFilters.java b/Mage/src/main/java/mage/filter/StaticFilters.java index 9f269d40209..f22fc7d0813 100644 --- a/Mage/src/main/java/mage/filter/StaticFilters.java +++ b/Mage/src/main/java/mage/filter/StaticFilters.java @@ -216,6 +216,12 @@ public final class StaticFilters { FILTER_PERMANENT_ARTIFACT.setLockedFilter(true); } + public static final FilterArtifactPermanent FILTER_PERMANENT_ARTIFACTS = new FilterArtifactPermanent("artifacts"); + + static { + FILTER_PERMANENT_ARTIFACTS.setLockedFilter(true); + } + public static final FilterArtifactPermanent FILTER_PERMANENT_ARTIFACT_AN = new FilterArtifactPermanent("an artifact"); static {