From a73c3ce553c45b87c88617e08ae1cd4c490b4747 Mon Sep 17 00:00:00 2001 From: theelk801 Date: Thu, 4 Dec 2025 11:02:10 -0500 Subject: [PATCH] [ECL] Implement Ashling, Rekindled / Ashling, Rimebound --- .../src/mage/cards/a/AshlingRekindled.java | 76 +++++++++++++++++++ Mage.Sets/src/mage/sets/LorwynEclipsed.java | 2 + .../src/main/java/mage/constants/SubType.java | 1 + 3 files changed, 79 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/a/AshlingRekindled.java diff --git a/Mage.Sets/src/mage/cards/a/AshlingRekindled.java b/Mage.Sets/src/mage/cards/a/AshlingRekindled.java new file mode 100644 index 00000000000..aa3a0ebf23e --- /dev/null +++ b/Mage.Sets/src/mage/cards/a/AshlingRekindled.java @@ -0,0 +1,76 @@ +package mage.cards.a; + +import mage.abilities.common.TransformIntoSourceTriggeredAbility; +import mage.abilities.common.TransformsOrEntersTriggeredAbility; +import mage.abilities.costs.common.DiscardCardCost; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.effects.common.DoIfCostPaid; +import mage.abilities.effects.common.DrawCardSourceControllerEffect; +import mage.abilities.effects.common.TransformSourceEffect; +import mage.abilities.effects.mana.AddConditionalManaOfAnyColorEffect; +import mage.abilities.mana.conditional.ConditionalSpellManaBuilder; +import mage.abilities.meta.OrTriggeredAbility; +import mage.abilities.triggers.BeginningOfFirstMainTriggeredAbility; +import mage.cards.CardSetInfo; +import mage.cards.TransformingDoubleFacedCard; +import mage.constants.*; +import mage.filter.FilterSpell; +import mage.filter.predicate.mageobject.ManaValuePredicate; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class AshlingRekindled extends TransformingDoubleFacedCard { + + private static final FilterSpell filter = new FilterSpell("spells with mana value 4 or greater"); + + static { + filter.add(new ManaValuePredicate(ComparisonType.MORE_THAN, 3)); + } + + public AshlingRekindled(UUID ownerId, CardSetInfo setInfo) { + super( + ownerId, setInfo, + new SuperType[]{SuperType.LEGENDARY}, new CardType[]{CardType.CREATURE}, new SubType[]{SubType.ELEMENTAL, SubType.SORCERER}, "{1}{R}", + "Ashling, Rimebound", + new SuperType[]{SuperType.LEGENDARY}, new CardType[]{CardType.CREATURE}, new SubType[]{SubType.ELEMENTAL, SubType.WIZARD}, "U" + ); + this.getLeftHalfCard().setPT(1, 3); + this.getRightHalfCard().setPT(1, 3); + + // Whenever this creature enters or transforms into Ashling, Rekindled, you may discard a card. If you do, draw a card. + this.getLeftHalfCard().addAbility(new TransformsOrEntersTriggeredAbility( + new DoIfCostPaid(new DrawCardSourceControllerEffect(1), new DiscardCardCost()), false + )); + + // At the beginning of your first main phase, you may pay {U}. If you do, transform Ashling. + this.getLeftHalfCard().addAbility(new BeginningOfFirstMainTriggeredAbility( + new DoIfCostPaid(new TransformSourceEffect(), new ManaCostsImpl<>("{U}")) + )); + + // Ashling, Rimebound + // Whenever this creature transforms into Ashling, Rimebound and at the beginning of your first main phase, add two mana of any one color. Spend this mana only to cast spells with mana value 4 or greater. + this.getRightHalfCard().addAbility(new OrTriggeredAbility( + Zone.BATTLEFIELD, + new AddConditionalManaOfAnyColorEffect(2, new ConditionalSpellManaBuilder(filter)), + new TransformIntoSourceTriggeredAbility(null), + new BeginningOfFirstMainTriggeredAbility(null) + )); + + // At the beginning of your first main phase, you may pay {R}. If you do, transform Ashling. + this.getRightHalfCard().addAbility(new BeginningOfFirstMainTriggeredAbility( + new DoIfCostPaid(new TransformSourceEffect(), new ManaCostsImpl<>("{R}")) + )); + } + + private AshlingRekindled(final AshlingRekindled card) { + super(card); + } + + @Override + public AshlingRekindled copy() { + return new AshlingRekindled(this); + } +} diff --git a/Mage.Sets/src/mage/sets/LorwynEclipsed.java b/Mage.Sets/src/mage/sets/LorwynEclipsed.java index befe63c281e..c4ef7fb4555 100644 --- a/Mage.Sets/src/mage/sets/LorwynEclipsed.java +++ b/Mage.Sets/src/mage/sets/LorwynEclipsed.java @@ -22,6 +22,8 @@ public final class LorwynEclipsed extends ExpansionSet { cards.add(new SetCardInfo("Ashling's Command", 205, Rarity.RARE, mage.cards.a.AshlingsCommand.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Ashling's Command", 330, Rarity.RARE, mage.cards.a.AshlingsCommand.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ashling, Rekindled", 124, Rarity.RARE, mage.cards.a.AshlingRekindled.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ashling, Rekindled", 290, Rarity.RARE, mage.cards.a.AshlingRekindled.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Bitterbloom Bearer", 310, Rarity.MYTHIC, mage.cards.b.BitterbloomBearer.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Bitterbloom Bearer", 352, Rarity.MYTHIC, mage.cards.b.BitterbloomBearer.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Bitterbloom Bearer", 88, Rarity.MYTHIC, mage.cards.b.BitterbloomBearer.class, NON_FULL_USE_VARIOUS)); diff --git a/Mage/src/main/java/mage/constants/SubType.java b/Mage/src/main/java/mage/constants/SubType.java index ac396d048b2..ee879b56228 100644 --- a/Mage/src/main/java/mage/constants/SubType.java +++ b/Mage/src/main/java/mage/constants/SubType.java @@ -391,6 +391,7 @@ public enum SubType { SNAKE("Snake", SubTypeSet.CreatureType), SOLDIER("Soldier", SubTypeSet.CreatureType), SOLTARI("Soltari", SubTypeSet.CreatureType), + SORCERER("Sorcerer", SubTypeSet.CreatureType), SPAWN("Spawn", SubTypeSet.CreatureType), SPECTER("Specter", SubTypeSet.CreatureType), SPELLSHAPER("Spellshaper", SubTypeSet.CreatureType),