From d46a25804413868d474e9f563a3de6f4f2f95c2d Mon Sep 17 00:00:00 2001 From: theelk801 Date: Mon, 29 Sep 2025 11:34:07 -0400 Subject: [PATCH] [SLD] Implement Ellie, Brick Master --- .../src/mage/cards/e/EllieBrickMaster.java | 107 ++++++++++++++++++ Mage.Sets/src/mage/sets/SecretLairDrop.java | 1 + 2 files changed, 108 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/e/EllieBrickMaster.java diff --git a/Mage.Sets/src/mage/cards/e/EllieBrickMaster.java b/Mage.Sets/src/mage/cards/e/EllieBrickMaster.java new file mode 100644 index 00000000000..e89acc2d5c8 --- /dev/null +++ b/Mage.Sets/src/mage/cards/e/EllieBrickMaster.java @@ -0,0 +1,107 @@ +package mage.cards.e; + +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.TriggeredAbilityImpl; +import mage.abilities.effects.OneShotEffect; +import mage.abilities.keyword.PartnerSurvivorsAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.*; +import mage.game.Game; +import mage.game.events.DefenderAttackedEvent; +import mage.game.events.GameEvent; +import mage.game.permanent.token.CordycepsInfectedToken; +import mage.target.targetpointer.FixedTarget; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class EllieBrickMaster extends CardImpl { + + public EllieBrickMaster(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}"); + + this.supertype.add(SuperType.LEGENDARY); + this.subtype.add(SubType.HUMAN); + this.subtype.add(SubType.SURVIVOR); + this.power = new MageInt(2); + this.toughness = new MageInt(1); + + // Distract the Horde -- Whenever a player attacks one of your opponents, that attacking player creates a tapped 1/1 black Fungus Zombie creature token named Cordyceps Infected that's attacking that opponent. + this.addAbility(new EllieBrickMasterTriggeredAbility()); + + // Partner--Survivors + this.addAbility(PartnerSurvivorsAbility.getInstance()); + } + + private EllieBrickMaster(final EllieBrickMaster card) { + super(card); + } + + @Override + public EllieBrickMaster copy() { + return new EllieBrickMaster(this); + } +} + +class EllieBrickMasterTriggeredAbility extends TriggeredAbilityImpl { + + EllieBrickMasterTriggeredAbility() { + super(Zone.BATTLEFIELD, new EllieBrickMasterEffect()); + setTriggerPhrase("Whenever a player attacks one of your opponents, "); + withFlavorWord("Distract the Horde"); + } + + private EllieBrickMasterTriggeredAbility(final EllieBrickMasterTriggeredAbility ability) { + super(ability); + } + + @Override + public EllieBrickMasterTriggeredAbility copy() { + return new EllieBrickMasterTriggeredAbility(this); + } + + @Override + public boolean checkEventType(GameEvent event, Game game) { + return event.getType() == GameEvent.EventType.DEFENDER_ATTACKED; + } + + @Override + public boolean checkTrigger(GameEvent event, Game game) { + DefenderAttackedEvent dEvent = (DefenderAttackedEvent) event; + if (!game.getOpponents(this.getControllerId()).contains(event.getTargetId())) { + return false; + } + this.getEffects().setTargetPointer(new FixedTarget(event.getTargetId())); + return true; + } +} + +class EllieBrickMasterEffect extends OneShotEffect { + + EllieBrickMasterEffect() { + super(Outcome.Benefit); + staticText = "that attacking player creates a tapped 1/1 black Fungus Zombie creature token " + + "named Cordyceps Infected that's attacking that opponent"; + } + + private EllieBrickMasterEffect(final EllieBrickMasterEffect effect) { + super(effect); + } + + @Override + public EllieBrickMasterEffect copy() { + return new EllieBrickMasterEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + return new CordycepsInfectedToken().putOntoBattlefield( + 1, game, source, game.getActivePlayerId(), + true, true, getTargetPointer().getFirst(game, source) + ); + } +} diff --git a/Mage.Sets/src/mage/sets/SecretLairDrop.java b/Mage.Sets/src/mage/sets/SecretLairDrop.java index 4b92ee667a7..8c1f650575d 100644 --- a/Mage.Sets/src/mage/sets/SecretLairDrop.java +++ b/Mage.Sets/src/mage/sets/SecretLairDrop.java @@ -2065,6 +2065,7 @@ public class SecretLairDrop extends ExpansionSet { cards.add(new SetCardInfo("Polyraptor", 2194, Rarity.MYTHIC, mage.cards.p.Polyraptor.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Academy Manufactor", 2195, Rarity.RARE, mage.cards.a.AcademyManufactor.class)); cards.add(new SetCardInfo("Wurmcoil Engine", 2196, Rarity.MYTHIC, mage.cards.w.WurmcoilEngine.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ellie, Brick Master", 2197, Rarity.MYTHIC, mage.cards.e.EllieBrickMaster.class)); cards.add(new SetCardInfo("Joel, Resolute Survivor", 2198, Rarity.MYTHIC, mage.cards.j.JoelResoluteSurvivor.class)); cards.add(new SetCardInfo("Abby, Merciless Soldier", 2202, Rarity.MYTHIC, mage.cards.a.AbbyMercilessSoldier.class)); cards.add(new SetCardInfo("Ellie, Vengeful Hunter", 2203, Rarity.MYTHIC, mage.cards.e.EllieVengefulHunter.class));