From 454c7e01167984bb04ee7ff1b531fc4fc9f2ff46 Mon Sep 17 00:00:00 2001 From: theelk801 Date: Sun, 28 Sep 2025 18:59:41 -0400 Subject: [PATCH] [ECL] Implement Bitterbloom Bearer --- .../src/mage/cards/b/BitterbloomBearer.java | 51 +++++++++++++++++++ Mage.Sets/src/mage/sets/LorwynEclipsed.java | 3 ++ .../permanent/token/FaerieBlueBlackToken.java | 32 ++++++++++++ 3 files changed, 86 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/b/BitterbloomBearer.java create mode 100644 Mage/src/main/java/mage/game/permanent/token/FaerieBlueBlackToken.java diff --git a/Mage.Sets/src/mage/cards/b/BitterbloomBearer.java b/Mage.Sets/src/mage/cards/b/BitterbloomBearer.java new file mode 100644 index 00000000000..9f12a8bd738 --- /dev/null +++ b/Mage.Sets/src/mage/cards/b/BitterbloomBearer.java @@ -0,0 +1,51 @@ +package mage.cards.b; + +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.effects.common.CreateTokenEffect; +import mage.abilities.effects.common.LoseLifeSourceControllerEffect; +import mage.abilities.keyword.FlashAbility; +import mage.abilities.keyword.FlyingAbility; +import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.SubType; +import mage.game.permanent.token.FaerieBlueBlackToken; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class BitterbloomBearer extends CardImpl { + + public BitterbloomBearer(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}{B}"); + + this.subtype.add(SubType.FAERIE); + this.subtype.add(SubType.ROGUE); + this.power = new MageInt(1); + this.toughness = new MageInt(1); + + // Flash + this.addAbility(FlashAbility.getInstance()); + + // Flying + this.addAbility(FlyingAbility.getInstance()); + + // At the beginning of your upkeep, you lose 1 life and create a 1/1 blue and black Faerie creature token with flying. + Ability ability = new BeginningOfUpkeepTriggeredAbility(new LoseLifeSourceControllerEffect(1)); + ability.addEffect(new CreateTokenEffect(new FaerieBlueBlackToken()).concatBy("and")); + this.addAbility(ability); + } + + private BitterbloomBearer(final BitterbloomBearer card) { + super(card); + } + + @Override + public BitterbloomBearer copy() { + return new BitterbloomBearer(this); + } +} diff --git a/Mage.Sets/src/mage/sets/LorwynEclipsed.java b/Mage.Sets/src/mage/sets/LorwynEclipsed.java index 784a9d038bc..ecb60af409b 100644 --- a/Mage.Sets/src/mage/sets/LorwynEclipsed.java +++ b/Mage.Sets/src/mage/sets/LorwynEclipsed.java @@ -20,6 +20,9 @@ public final class LorwynEclipsed extends ExpansionSet { this.blockName = "Lorwyn Eclipsed"; // for sorting in GUI this.hasBasicLands = true; + 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)); cards.add(new SetCardInfo("Blood Crypt", 262, Rarity.RARE, mage.cards.b.BloodCrypt.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Blood Crypt", 349, Rarity.RARE, mage.cards.b.BloodCrypt.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Hallowed Fountain", 265, Rarity.RARE, mage.cards.h.HallowedFountain.class, NON_FULL_USE_VARIOUS)); diff --git a/Mage/src/main/java/mage/game/permanent/token/FaerieBlueBlackToken.java b/Mage/src/main/java/mage/game/permanent/token/FaerieBlueBlackToken.java new file mode 100644 index 00000000000..d5be3d0f3ee --- /dev/null +++ b/Mage/src/main/java/mage/game/permanent/token/FaerieBlueBlackToken.java @@ -0,0 +1,32 @@ +package mage.game.permanent.token; + +import mage.MageInt; +import mage.abilities.keyword.FlyingAbility; +import mage.constants.CardType; +import mage.constants.SubType; + +/** + * @author spjspj + */ +public final class FaerieBlueBlackToken extends TokenImpl { + + public FaerieBlueBlackToken() { + super("Faerie Rogue Token", "1/1 blue and black Faerie Rogue creature token with flying"); + cardType.add(CardType.CREATURE); + color.setBlue(true); + color.setBlack(true); + subtype.add(SubType.FAERIE); + subtype.add(SubType.ROGUE); + power = new MageInt(1); + toughness = new MageInt(1); + this.addAbility(FlyingAbility.getInstance()); + } + + private FaerieBlueBlackToken(final FaerieBlueBlackToken token) { + super(token); + } + + public FaerieBlueBlackToken copy() { + return new FaerieBlueBlackToken(this); + } +}