From 176c4369a11683712feee4280b60a0e4cf087d2a Mon Sep 17 00:00:00 2001 From: theelk801 Date: Mon, 9 Sep 2024 12:04:01 -0400 Subject: [PATCH] [DSK] Implement Valgavoth's Onslaught --- .../src/mage/cards/v/ValgavothsOnslaught.java | 77 +++++++++++++++++++ .../src/mage/sets/DuskmournHouseOfHorror.java | 1 + 2 files changed, 78 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/v/ValgavothsOnslaught.java diff --git a/Mage.Sets/src/mage/cards/v/ValgavothsOnslaught.java b/Mage.Sets/src/mage/cards/v/ValgavothsOnslaught.java new file mode 100644 index 00000000000..5d3fa854750 --- /dev/null +++ b/Mage.Sets/src/mage/cards/v/ValgavothsOnslaught.java @@ -0,0 +1,77 @@ +package mage.cards.v; + +import mage.abilities.Ability; +import mage.abilities.effects.OneShotEffect; +import mage.abilities.effects.keyword.ManifestDreadEffect; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.Outcome; +import mage.counters.CounterType; +import mage.game.Game; +import mage.game.permanent.Permanent; +import mage.players.Player; +import mage.util.CardUtil; + +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class ValgavothsOnslaught extends CardImpl { + + public ValgavothsOnslaught(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{X}{G}"); + + // Manifest dread X times, then put X +1/+1 counters on each of those creatures. + this.getSpellAbility().addEffect(new ValgavothsOnslaughtEffect()); + } + + private ValgavothsOnslaught(final ValgavothsOnslaught card) { + super(card); + } + + @Override + public ValgavothsOnslaught copy() { + return new ValgavothsOnslaught(this); + } +} + +class ValgavothsOnslaughtEffect extends OneShotEffect { + + ValgavothsOnslaughtEffect() { + super(Outcome.Benefit); + staticText = "manifest dread X times, then put X +1/+1 counters on each of those creatures"; + } + + private ValgavothsOnslaughtEffect(final ValgavothsOnslaughtEffect effect) { + super(effect); + } + + @Override + public ValgavothsOnslaughtEffect copy() { + return new ValgavothsOnslaughtEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + Player player = game.getPlayer(source.getControllerId()); + int amount = CardUtil.getSourceCostsTag(game, source, "X", 0); + if (player == null || amount < 1) { + return false; + } + List permanents = new ArrayList<>(); + for (int i = 0; i < amount; i++) { + permanents.add(ManifestDreadEffect.doManifestDread(player, source, game)); + game.processAction(); + } + permanents.removeIf(Objects::isNull); + for (Permanent permanent : permanents) { + permanent.addCounters(CounterType.P1P1.createInstance(amount), source, game); + } + return true; + } +} diff --git a/Mage.Sets/src/mage/sets/DuskmournHouseOfHorror.java b/Mage.Sets/src/mage/sets/DuskmournHouseOfHorror.java index b5ef785aeeb..f2599c1b60f 100644 --- a/Mage.Sets/src/mage/sets/DuskmournHouseOfHorror.java +++ b/Mage.Sets/src/mage/sets/DuskmournHouseOfHorror.java @@ -144,6 +144,7 @@ public final class DuskmournHouseOfHorror extends ExpansionSet { cards.add(new SetCardInfo("Unwilling Vessel", 81, Rarity.UNCOMMON, mage.cards.u.UnwillingVessel.class)); cards.add(new SetCardInfo("Valgavoth's Faithful", 121, Rarity.UNCOMMON, mage.cards.v.ValgavothsFaithful.class)); cards.add(new SetCardInfo("Valgavoth's Lair", 271, Rarity.RARE, mage.cards.v.ValgavothsLair.class)); + cards.add(new SetCardInfo("Valgavoth's Onslaught", 204, Rarity.RARE, mage.cards.v.ValgavothsOnslaught.class)); cards.add(new SetCardInfo("Vanish from Sight", 82, Rarity.COMMON, mage.cards.v.VanishFromSight.class)); cards.add(new SetCardInfo("Vengeful Possession", 162, Rarity.UNCOMMON, mage.cards.v.VengefulPossession.class)); cards.add(new SetCardInfo("Veteran Survivor", 40, Rarity.UNCOMMON, mage.cards.v.VeteranSurvivor.class));