From 07f49bb863f36627f6f239fa2830490a03d62ea2 Mon Sep 17 00:00:00 2001 From: Evan Kranzler Date: Mon, 30 May 2022 22:15:59 -0400 Subject: [PATCH] [CLB] Implemented Cloudkill --- Mage.Sets/src/mage/cards/c/Cloudkill.java | 74 +++++++++++++++++++ .../CommanderLegendsBattleForBaldursGate.java | 1 + 2 files changed, 75 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/c/Cloudkill.java diff --git a/Mage.Sets/src/mage/cards/c/Cloudkill.java b/Mage.Sets/src/mage/cards/c/Cloudkill.java new file mode 100644 index 00000000000..8f452869140 --- /dev/null +++ b/Mage.Sets/src/mage/cards/c/Cloudkill.java @@ -0,0 +1,74 @@ +package mage.cards.c; + +import mage.MageObject; +import mage.abilities.Ability; +import mage.abilities.dynamicvalue.DynamicValue; +import mage.abilities.effects.Effect; +import mage.abilities.effects.common.continuous.BoostAllEffect; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.CommanderCardType; +import mage.constants.Duration; +import mage.constants.Zone; +import mage.game.Game; +import mage.players.Player; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class Cloudkill extends CardImpl { + + public Cloudkill(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{B}{B}"); + + // All creatures gets -X/-X until end of turn, where X is the greatest mana value of a commander you own on the battlefield or in the command zone. + this.getSpellAbility().addEffect(new BoostAllEffect( + CloudkillValue.instance, CloudkillValue.instance, Duration.EndOfTurn + )); + } + + private Cloudkill(final Cloudkill card) { + super(card); + } + + @Override + public Cloudkill copy() { + return new Cloudkill(this); + } +} + +enum CloudkillValue implements DynamicValue { + instance; + + @Override + public int calculate(Game game, Ability sourceAbility, Effect effect) { + Player player = game.getPlayer(sourceAbility.getControllerId()); + return player != null ? -game + .getCommanderCardsFromAnyZones( + player, CommanderCardType.ANY, + Zone.BATTLEFIELD, Zone.COMMAND + ) + .stream() + .mapToInt(MageObject::getManaValue) + .max() + .orElse(0) : 0; + } + + @Override + public CloudkillValue copy() { + return this; + } + + @Override + public String getMessage() { + return "the greatest mana value of a commander you own on the battlefield or in the command zone"; + } + + @Override + public String toString() { + return "X"; + } +} diff --git a/Mage.Sets/src/mage/sets/CommanderLegendsBattleForBaldursGate.java b/Mage.Sets/src/mage/sets/CommanderLegendsBattleForBaldursGate.java index 9ae604d3015..69895322220 100644 --- a/Mage.Sets/src/mage/sets/CommanderLegendsBattleForBaldursGate.java +++ b/Mage.Sets/src/mage/sets/CommanderLegendsBattleForBaldursGate.java @@ -81,6 +81,7 @@ public final class CommanderLegendsBattleForBaldursGate extends ExpansionSet { cards.add(new SetCardInfo("Cloakwood Hermit", 221, Rarity.UNCOMMON, mage.cards.c.CloakwoodHermit.class)); cards.add(new SetCardInfo("Cloakwood Swarmkeeper", 222, Rarity.COMMON, mage.cards.c.CloakwoodSwarmkeeper.class)); cards.add(new SetCardInfo("Clockwork Fox", 308, Rarity.COMMON, mage.cards.c.ClockworkFox.class)); + cards.add(new SetCardInfo("Cloudkill", 121, Rarity.UNCOMMON, mage.cards.c.Cloudkill.class)); cards.add(new SetCardInfo("Colossal Badger", 223, Rarity.COMMON, mage.cards.c.ColossalBadger.class)); cards.add(new SetCardInfo("Command Tower", 351, Rarity.COMMON, mage.cards.c.CommandTower.class)); cards.add(new SetCardInfo("Cone of Cold", 61, Rarity.UNCOMMON, mage.cards.c.ConeOfCold.class));