From e20af7989506724c16211318cff84f0eece93be2 Mon Sep 17 00:00:00 2001 From: Evan Kranzler Date: Sat, 7 Nov 2020 21:04:42 -0500 Subject: [PATCH] [CMR] Implemented Juri, Master of the Revue --- .../mage/cards/j/JuriMasterOfTheRevue.java | 77 +++++++++++++++++++ Mage.Sets/src/mage/sets/CommanderLegends.java | 1 + 2 files changed, 78 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/j/JuriMasterOfTheRevue.java diff --git a/Mage.Sets/src/mage/cards/j/JuriMasterOfTheRevue.java b/Mage.Sets/src/mage/cards/j/JuriMasterOfTheRevue.java new file mode 100644 index 00000000000..03e23d2ec6f --- /dev/null +++ b/Mage.Sets/src/mage/cards/j/JuriMasterOfTheRevue.java @@ -0,0 +1,77 @@ +package mage.cards.j; + +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.DiesSourceTriggeredAbility; +import mage.abilities.common.SacrificePermanentTriggeredAbility; +import mage.abilities.dynamicvalue.DynamicValue; +import mage.abilities.effects.Effect; +import mage.abilities.effects.common.DamageTargetEffect; +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.constants.SuperType; +import mage.counters.CounterType; +import mage.game.Game; +import mage.game.permanent.Permanent; +import mage.target.common.TargetAnyTarget; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class JuriMasterOfTheRevue extends CardImpl { + + public JuriMasterOfTheRevue(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}{R}"); + + this.addSuperType(SuperType.LEGENDARY); + this.subtype.add(SubType.HUMAN); + this.subtype.add(SubType.SHAMAN); + this.power = new MageInt(1); + this.toughness = new MageInt(1); + + // Whenever you sacrifice a permanent, put a +1/+1 counter on Juri, Master of the Revue. + this.addAbility(new SacrificePermanentTriggeredAbility( + new AddCountersSourceEffect(CounterType.P1P1.createInstance()) + )); + + // When Juri dies, it deals damage equal its power to any target. + Ability ability = new DiesSourceTriggeredAbility(new DamageTargetEffect(JuriMasterOfTheRevueValue.instance) + .setText("it deals damage equal its power to any target")); + ability.addTarget(new TargetAnyTarget()); + this.addAbility(ability); + } + + private JuriMasterOfTheRevue(final JuriMasterOfTheRevue card) { + super(card); + } + + @Override + public JuriMasterOfTheRevue copy() { + return new JuriMasterOfTheRevue(this); + } +} + +enum JuriMasterOfTheRevueValue implements DynamicValue { + instance; + + @Override + public int calculate(Game game, Ability sourceAbility, Effect effect) { + Permanent permanent = (Permanent) effect.getValue("permanentLeftBattlefield"); + return permanent == null ? 0 : permanent.getPower().getValue(); + } + + @Override + public JuriMasterOfTheRevueValue copy() { + return instance; + } + + @Override + public String getMessage() { + return ""; + } +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/CommanderLegends.java b/Mage.Sets/src/mage/sets/CommanderLegends.java index 10a55b974dc..a48109bf250 100644 --- a/Mage.Sets/src/mage/sets/CommanderLegends.java +++ b/Mage.Sets/src/mage/sets/CommanderLegends.java @@ -241,6 +241,7 @@ public final class CommanderLegends extends ExpansionSet { cards.add(new SetCardInfo("Jeska, Thrice Reborn", 186, Rarity.MYTHIC, mage.cards.j.JeskaThriceReborn.class)); cards.add(new SetCardInfo("Jeweled Lotus", 319, Rarity.MYTHIC, mage.cards.j.JeweledLotus.class)); cards.add(new SetCardInfo("Jungle Basin", 484, Rarity.UNCOMMON, mage.cards.j.JungleBasin.class)); + cards.add(new SetCardInfo("Juri, Master of the Revue", 282, Rarity.UNCOMMON, mage.cards.j.JuriMasterOfTheRevue.class)); cards.add(new SetCardInfo("Kamahl's Will", 238, Rarity.RARE, mage.cards.k.KamahlsWill.class)); cards.add(new SetCardInfo("Kamahl, Heart of Krosa", 237, Rarity.MYTHIC, mage.cards.k.KamahlHeartOfKrosa.class)); cards.add(new SetCardInfo("Kangee's Lieutenant", 26, Rarity.UNCOMMON, mage.cards.k.KangeesLieutenant.class));