From 512b1bcd336d3547700cebc5c78bc24cfd93ed89 Mon Sep 17 00:00:00 2001 From: theelk801 Date: Fri, 23 Feb 2024 09:58:03 -0500 Subject: [PATCH] [PIP] Implement Boomer Scrapper --- .../src/mage/cards/b/BoomerScrapper.java | 60 +++++++++++++++++++ Mage.Sets/src/mage/sets/Fallout.java | 1 + 2 files changed, 61 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/b/BoomerScrapper.java diff --git a/Mage.Sets/src/mage/cards/b/BoomerScrapper.java b/Mage.Sets/src/mage/cards/b/BoomerScrapper.java new file mode 100644 index 00000000000..c9984b290ef --- /dev/null +++ b/Mage.Sets/src/mage/cards/b/BoomerScrapper.java @@ -0,0 +1,60 @@ +package mage.cards.b; + +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.EntersBattlefieldOrAttacksSourceTriggeredAbility; +import mage.abilities.common.LeavesBattlefieldAllTriggeredAbility; +import mage.abilities.effects.common.CreateTokenEffect; +import mage.abilities.effects.common.LoseLifeSourceControllerEffect; +import mage.abilities.effects.common.counter.AddCountersSourceEffect; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.SubType; +import mage.counters.CounterType; +import mage.filter.FilterPermanent; +import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.permanent.TokenPredicate; +import mage.game.permanent.token.JunkToken; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class BoomerScrapper extends CardImpl { + + private static final FilterPermanent filter = new FilterControlledPermanent("a token you control"); + + static { + filter.add(TokenPredicate.TRUE); + } + + public BoomerScrapper(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}{R}"); + + this.subtype.add(SubType.HUMAN); + this.subtype.add(SubType.SOLDIER); + this.power = new MageInt(1); + this.toughness = new MageInt(1); + + // Whenever Boomer Scrapper enters the battlefield or attacks, you lose 1 life and create a Junk token. + Ability ability = new EntersBattlefieldOrAttacksSourceTriggeredAbility(new LoseLifeSourceControllerEffect(1)); + ability.addEffect(new CreateTokenEffect(new JunkToken()).concatBy("and")); + this.addAbility(ability); + + // Whenever a token you control leaves the battlefield, put a +1/+1 counter on Boomer Scrapper. + this.addAbility(new LeavesBattlefieldAllTriggeredAbility( + new AddCountersSourceEffect(CounterType.P1P1.createInstance()), filter, false + )); + } + + private BoomerScrapper(final BoomerScrapper card) { + super(card); + } + + @Override + public BoomerScrapper copy() { + return new BoomerScrapper(this); + } +} diff --git a/Mage.Sets/src/mage/sets/Fallout.java b/Mage.Sets/src/mage/sets/Fallout.java index 46e69432d9d..d88ae7dece1 100644 --- a/Mage.Sets/src/mage/sets/Fallout.java +++ b/Mage.Sets/src/mage/sets/Fallout.java @@ -37,6 +37,7 @@ public final class Fallout extends ExpansionSet { cards.add(new SetCardInfo("Black Market", 183, Rarity.RARE, mage.cards.b.BlackMarket.class)); cards.add(new SetCardInfo("Blasphemous Act", 188, Rarity.RARE, mage.cards.b.BlasphemousAct.class)); cards.add(new SetCardInfo("Bloodforged Battle-Axe", 226, Rarity.RARE, mage.cards.b.BloodforgedBattleAxe.class)); + cards.add(new SetCardInfo("Boomer Scrapper", 95, Rarity.RARE, mage.cards.b.BoomerScrapper.class)); cards.add(new SetCardInfo("Brass Knuckles", 227, Rarity.UNCOMMON, mage.cards.b.BrassKnuckles.class)); cards.add(new SetCardInfo("Break Down", 74, Rarity.UNCOMMON, mage.cards.b.BreakDown.class)); cards.add(new SetCardInfo("Buried Ruin", 254, Rarity.UNCOMMON, mage.cards.b.BuriedRuin.class));