From 489bf1f26def09f94629eeb2839b277e54dc96c0 Mon Sep 17 00:00:00 2001 From: xenohedron Date: Sat, 25 Nov 2023 01:56:02 -0500 Subject: [PATCH] implement [LCC] Redemption Choir --- .../src/mage/cards/r/RedemptionChoir.java | 65 +++++++++++++++++++ .../sets/LostCavernsOfIxalanCommander.java | 1 + 2 files changed, 66 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/r/RedemptionChoir.java diff --git a/Mage.Sets/src/mage/cards/r/RedemptionChoir.java b/Mage.Sets/src/mage/cards/r/RedemptionChoir.java new file mode 100644 index 00000000000..b1c860bc235 --- /dev/null +++ b/Mage.Sets/src/mage/cards/r/RedemptionChoir.java @@ -0,0 +1,65 @@ +package mage.cards.r; + +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.EntersBattlefieldOrAttacksSourceTriggeredAbility; +import mage.abilities.condition.common.CovenCondition; +import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; +import mage.abilities.effects.common.ReturnFromGraveyardToBattlefieldTargetEffect; +import mage.abilities.hint.common.CovenHint; +import mage.abilities.keyword.LifelinkAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.AbilityWord; +import mage.constants.CardType; +import mage.constants.ComparisonType; +import mage.constants.SubType; +import mage.filter.common.FilterPermanentCard; +import mage.filter.predicate.mageobject.ManaValuePredicate; +import mage.target.common.TargetCardInYourGraveyard; + +import java.util.UUID; + +/** + * @author xenohedron + */ +public final class RedemptionChoir extends CardImpl { + + private static final FilterPermanentCard filter = new FilterPermanentCard("permanent card with mana value 3 or less from your graveyard"); + static { + filter.add(new ManaValuePredicate(ComparisonType.OR_LESS, 3)); + } + + public RedemptionChoir(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}{W}"); + + this.subtype.add(SubType.VAMPIRE); + this.subtype.add(SubType.CLERIC); + this.power = new MageInt(3); + this.toughness = new MageInt(3); + + // Lifelink + this.addAbility(LifelinkAbility.getInstance()); + + // Coven -- Whenever Redemption Choir enters the battlefield or attacks, if you control three or more creatures with different powers, return target permanent card with mana value 3 or less from your graveyard to the battlefield. + Ability ability = new ConditionalInterveningIfTriggeredAbility( + new EntersBattlefieldOrAttacksSourceTriggeredAbility( + new ReturnFromGraveyardToBattlefieldTargetEffect() + ), CovenCondition.instance, "Whenever {this} enters the battlefield or attacks, " + + "if you control three or more creatures with different powers, " + + "return target permanent card with mana value 3 or less from your graveyard to the battlefield." + ); + ability.addTarget(new TargetCardInYourGraveyard(filter)); + this.addAbility(ability.addHint(CovenHint.instance).setAbilityWord(AbilityWord.COVEN)); + + } + + private RedemptionChoir(final RedemptionChoir card) { + super(card); + } + + @Override + public RedemptionChoir copy() { + return new RedemptionChoir(this); + } +} diff --git a/Mage.Sets/src/mage/sets/LostCavernsOfIxalanCommander.java b/Mage.Sets/src/mage/sets/LostCavernsOfIxalanCommander.java index 27006ec4376..e83f4d37394 100644 --- a/Mage.Sets/src/mage/sets/LostCavernsOfIxalanCommander.java +++ b/Mage.Sets/src/mage/sets/LostCavernsOfIxalanCommander.java @@ -208,6 +208,7 @@ public final class LostCavernsOfIxalanCommander extends ExpansionSet { cards.add(new SetCardInfo("Rapid Hybridization", 166, Rarity.UNCOMMON, mage.cards.r.RapidHybridization.class)); cards.add(new SetCardInfo("Ravenform", 167, Rarity.COMMON, mage.cards.r.Ravenform.class)); cards.add(new SetCardInfo("Realmwalker", 250, Rarity.RARE, mage.cards.r.Realmwalker.class)); + cards.add(new SetCardInfo("Redemption Choir", 74, Rarity.RARE, mage.cards.r.RedemptionChoir.class)); cards.add(new SetCardInfo("Reflections of Littjara", 168, Rarity.RARE, mage.cards.r.ReflectionsOfLittjara.class)); cards.add(new SetCardInfo("Regal Behemoth", 251, Rarity.RARE, mage.cards.r.RegalBehemoth.class)); cards.add(new SetCardInfo("Regisaur Alpha", 286, Rarity.RARE, mage.cards.r.RegisaurAlpha.class));