From 2f0a3cd50dd6c834ad98ebe9b6ffcc9cb85ceca2 Mon Sep 17 00:00:00 2001 From: theelk801 Date: Fri, 26 Jan 2024 10:58:04 -0500 Subject: [PATCH] [MKM] Implement Rune-Brand Juggler --- .../src/mage/cards/r/RuneBrandJuggler.java | 64 +++++++++++++++++++ .../src/mage/sets/MurdersAtKarlovManor.java | 1 + Utils/mtg-cards-data.txt | 1 + 3 files changed, 66 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/r/RuneBrandJuggler.java diff --git a/Mage.Sets/src/mage/cards/r/RuneBrandJuggler.java b/Mage.Sets/src/mage/cards/r/RuneBrandJuggler.java new file mode 100644 index 00000000000..0d80a99847a --- /dev/null +++ b/Mage.Sets/src/mage/cards/r/RuneBrandJuggler.java @@ -0,0 +1,64 @@ +package mage.cards.r; + +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.EntersBattlefieldTriggeredAbility; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.common.SacrificeTargetCost; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.effects.common.SuspectTargetEffect; +import mage.abilities.effects.common.continuous.BoostTargetEffect; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.SubType; +import mage.filter.FilterPermanent; +import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.permanent.SuspectedPredicate; +import mage.target.common.TargetControlledCreaturePermanent; +import mage.target.common.TargetCreaturePermanent; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class RuneBrandJuggler extends CardImpl { + + private static final FilterPermanent filter = new FilterCreaturePermanent("a suspected creature"); + + static { + filter.add(SuspectedPredicate.instance); + } + + public RuneBrandJuggler(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}{R}"); + + this.subtype.add(SubType.HUMAN); + this.subtype.add(SubType.SHAMAN); + this.power = new MageInt(2); + this.toughness = new MageInt(2); + + // When Rune-Brand Juggler enters the battlefield, suspect up to one target creature you control. + Ability ability = new EntersBattlefieldTriggeredAbility(new SuspectTargetEffect()); + ability.addTarget(new TargetControlledCreaturePermanent(0, 1)); + this.addAbility(ability); + + // {3}{B}{R}, Sacrifice a suspected creature: Target creature gets -5/-5 until end of turn. + ability = new SimpleActivatedAbility( + new BoostTargetEffect(-5, -5), new ManaCostsImpl<>("{3}{B}{R}") + ); + ability.addCost(new SacrificeTargetCost(filter)); + ability.addTarget(new TargetCreaturePermanent()); + this.addAbility(ability); + } + + private RuneBrandJuggler(final RuneBrandJuggler card) { + super(card); + } + + @Override + public RuneBrandJuggler copy() { + return new RuneBrandJuggler(this); + } +} diff --git a/Mage.Sets/src/mage/sets/MurdersAtKarlovManor.java b/Mage.Sets/src/mage/sets/MurdersAtKarlovManor.java index 5ab459d67db..3b9ad8da387 100644 --- a/Mage.Sets/src/mage/sets/MurdersAtKarlovManor.java +++ b/Mage.Sets/src/mage/sets/MurdersAtKarlovManor.java @@ -138,6 +138,7 @@ public final class MurdersAtKarlovManor extends ExpansionSet { cards.add(new SetCardInfo("Rot Farm Mortipede", 102, Rarity.COMMON, mage.cards.r.RotFarmMortipede.class)); cards.add(new SetCardInfo("Rubblebelt Braggart", 143, Rarity.COMMON, mage.cards.r.RubblebeltBraggart.class)); cards.add(new SetCardInfo("Rubblebelt Maverick", 174, Rarity.COMMON, mage.cards.r.RubblebeltMaverick.class)); + cards.add(new SetCardInfo("Rune-Brand Juggler", 229, Rarity.UNCOMMON, mage.cards.r.RuneBrandJuggler.class)); cards.add(new SetCardInfo("Sanctuary Wall", 32, Rarity.UNCOMMON, mage.cards.s.SanctuaryWall.class)); cards.add(new SetCardInfo("Sanguine Savior", 230, Rarity.COMMON, mage.cards.s.SanguineSavior.class)); cards.add(new SetCardInfo("Sanitation Automaton", 256, Rarity.COMMON, mage.cards.s.SanitationAutomaton.class)); diff --git a/Utils/mtg-cards-data.txt b/Utils/mtg-cards-data.txt index 97f4a1bb139..77493e3cd84 100644 --- a/Utils/mtg-cards-data.txt +++ b/Utils/mtg-cards-data.txt @@ -51924,6 +51924,7 @@ Rakish Scoundrel|Murders at Karlov Manor|225|C|{2}{B}{G}|Creature - Elf Rogue|3| Relive the Past|Murders at Karlov Manor|226|R|{5}{G}{W}|Sorcery|||Return up to one target artifact card, up to one target land card, and up to one target non-Aura enchantment card from your graveyard to the battlefield. They are 5/5 Elemental creatures in addition to their other types.| Repulsive Mutation|Murders at Karlov Manor|227|U|{X}{G}{U}|Instant|||Put X +1/+1 counters on target creature you control. Then counter up to one target spell unless its controller pays mana equal to the greatest power among creatures you control.| Riftburst Hellion|Murders at Karlov Manor|228|C|{5}{R}{G}|Creature - Hellion|6|7|Reach$Disguise {4}{R/G}{R/G}| +Rune-Brand Juggler|Murders at Karlov Manor|229|U|{B}{R}|Creature - Human Shaman|2|2|When Rune-Brand Juggler enters the battlefield, suspect up to one target creature you control.${3}{B}{R}, Sacrifice a suspected creature: Target creature gets -5/-5 until end of turn.| Sanguine Savior|Murders at Karlov Manor|230|C|{1}{W}{B}|Creature - Vampire Cleric|2|1|Flying, lifelink$Disguise {W/B}{W/B}$When Sanguine Savior is turned face up, another target creature you control gains lifelink until end of turn.| Shady Informant|Murders at Karlov Manor|231|C|{3}{B}{R}|Creature - Ogre Rogue|4|2|When Shady Informant dies, it deals 2 damage to any target.$Disguise {2}{B/R}{B/R}| Soul Search|Murders at Karlov Manor|232|U|{W}{B}|Sorcery|||Target opponent reveals their hand. You choose a nonland card from it. Exile that card. If the card's mana value is 1 or less, create a 1/1 white and black Spirit creature token with flying.|