From dfb2d431863d3da9b118b6403510b5173cd55378 Mon Sep 17 00:00:00 2001 From: grimreap124 <19590931+grimreap124@users.noreply.github.com> Date: Tue, 4 Jun 2024 16:59:52 +1000 Subject: [PATCH 01/10] Implement-M3C-Hourglass-of-the-Lost --- .../src/mage/cards/h/HourglassOfTheLost.java | 47 +++++++++++++++++++ .../mage/sets/ModernHorizons3Commander.java | 1 + 2 files changed, 48 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/h/HourglassOfTheLost.java diff --git a/Mage.Sets/src/mage/cards/h/HourglassOfTheLost.java b/Mage.Sets/src/mage/cards/h/HourglassOfTheLost.java new file mode 100644 index 00000000000..551752d3844 --- /dev/null +++ b/Mage.Sets/src/mage/cards/h/HourglassOfTheLost.java @@ -0,0 +1,47 @@ +package mage.cards.h; + +import java.util.UUID; + +import mage.abilities.Ability; +import mage.abilities.costs.common.TapSourceCost; +import mage.abilities.dynamicvalue.DynamicValue; +import mage.abilities.dynamicvalue.common.CountersSourceCount; +import mage.abilities.effects.common.ReturnFromGraveyardToBattlefieldTargetEffect; +import mage.abilities.effects.common.counter.AddCountersSourceEffect; +import mage.abilities.mana.WhiteManaAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.counters.CounterType; + +/** + * + * @author grimreap124 + */ +public final class HourglassOfTheLost extends CardImpl { + + private static final DynamicValue timeCounter = new CountersSourceCount(CounterType.TIME); + + public HourglassOfTheLost(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}{W}"); + + + // {T}: Add {W}. Put a time counter on Hourglass of the Lost. + Ability ability = new WhiteManaAbility(); + ability.addEffect(new AddCountersSourceEffect(CounterType.TIME.createInstance())); + ability.addCost(new TapSourceCost()); + this.addAbility(ability); + // {T}, Remove X time counters from Hourglass of the Lost and exile it: Return each nonland permanent card with mana value X from your graveyard to the battlefield. Activate only as a sorcery. + ability = new Return(timeCounter); + this.addAbility(new HourglassOfTheLostAbility()); + } + + private HourglassOfTheLost(final HourglassOfTheLost card) { + super(card); + } + + @Override + public HourglassOfTheLost copy() { + return new HourglassOfTheLost(this); + } +} diff --git a/Mage.Sets/src/mage/sets/ModernHorizons3Commander.java b/Mage.Sets/src/mage/sets/ModernHorizons3Commander.java index 58ee5012f24..f574b332822 100644 --- a/Mage.Sets/src/mage/sets/ModernHorizons3Commander.java +++ b/Mage.Sets/src/mage/sets/ModernHorizons3Commander.java @@ -141,6 +141,7 @@ public final class ModernHorizons3Commander extends ExpansionSet { cards.add(new SetCardInfo("Hideous Taskmaster", 57, Rarity.RARE, mage.cards.h.HideousTaskmaster.class)); cards.add(new SetCardInfo("Horizon of Progress", 78, Rarity.RARE, mage.cards.h.HorizonOfProgress.class)); cards.add(new SetCardInfo("Hour of Promise", 232, Rarity.RARE, mage.cards.h.HourOfPromise.class)); + cards.add(new SetCardInfo("Hourglass of the Lost", 40, Rarity.RARE, mage.cards.h.HourglassOfTheLost.class)); cards.add(new SetCardInfo("Hydra Broodmaster", 233, Rarity.RARE, mage.cards.h.HydraBroodmaster.class)); cards.add(new SetCardInfo("Hydroid Krasis", 266, Rarity.RARE, mage.cards.h.HydroidKrasis.class)); cards.add(new SetCardInfo("Idol of Oblivion", 297, Rarity.UNCOMMON, mage.cards.i.IdolOfOblivion.class)); From a937ef07468f6945f64a3070b36287188ef250bd Mon Sep 17 00:00:00 2001 From: grimreap124 <19590931+grimreap124@users.noreply.github.com> Date: Tue, 4 Jun 2024 19:52:07 +1000 Subject: [PATCH 02/10] Update HourglassOfTheLost.java --- .../src/mage/cards/h/HourglassOfTheLost.java | 61 +++++++++++++++++-- 1 file changed, 55 insertions(+), 6 deletions(-) diff --git a/Mage.Sets/src/mage/cards/h/HourglassOfTheLost.java b/Mage.Sets/src/mage/cards/h/HourglassOfTheLost.java index 551752d3844..879d90d5bce 100644 --- a/Mage.Sets/src/mage/cards/h/HourglassOfTheLost.java +++ b/Mage.Sets/src/mage/cards/h/HourglassOfTheLost.java @@ -3,16 +3,35 @@ package mage.cards.h; import java.util.UUID; import mage.abilities.Ability; -import mage.abilities.costs.common.TapSourceCost; +import mage.abilities.common.ActivateAsSorceryActivatedAbility; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.common.*; import mage.abilities.dynamicvalue.DynamicValue; import mage.abilities.dynamicvalue.common.CountersSourceCount; +import mage.abilities.dynamicvalue.common.GetXValue; +import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.ReturnFromGraveyardToBattlefieldTargetEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.mana.WhiteManaAbility; +import mage.cards.Card; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.ComparisonType; +import mage.constants.Outcome; +import mage.constants.Zone; import mage.counters.CounterType; +import mage.filter.FilterCard; +import mage.filter.common.FilterCreatureCard; +import mage.filter.common.FilterNonlandCard; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.ManaValuePredicate; +import mage.game.Game; +import mage.game.permanent.Permanent; +import mage.players.Player; +import mage.target.Target; +import mage.target.common.TargetCardInGraveyard; +import mage.util.CardUtil; /** * @@ -20,20 +39,19 @@ import mage.counters.CounterType; */ public final class HourglassOfTheLost extends CardImpl { - private static final DynamicValue timeCounter = new CountersSourceCount(CounterType.TIME); public HourglassOfTheLost(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}{W}"); - // {T}: Add {W}. Put a time counter on Hourglass of the Lost. Ability ability = new WhiteManaAbility(); ability.addEffect(new AddCountersSourceEffect(CounterType.TIME.createInstance())); - ability.addCost(new TapSourceCost()); this.addAbility(ability); // {T}, Remove X time counters from Hourglass of the Lost and exile it: Return each nonland permanent card with mana value X from your graveyard to the battlefield. Activate only as a sorcery. - ability = new Return(timeCounter); - this.addAbility(new HourglassOfTheLostAbility()); + Ability returnAbility = new ActivateAsSorceryActivatedAbility(new HourglassOfTheLostEffect(), new TapSourceCost()); + returnAbility.addCost(new RemoveVariableCountersSourceCost(CounterType.TIME)); + returnAbility.addCost(new ExileSourceCost().setText("and exile it")); + this.addAbility(returnAbility); } private HourglassOfTheLost(final HourglassOfTheLost card) { @@ -45,3 +63,34 @@ public final class HourglassOfTheLost extends CardImpl { return new HourglassOfTheLost(this); } } + +class HourglassOfTheLostEffect extends OneShotEffect { + + HourglassOfTheLostEffect() { + super(Outcome.Benefit); + this.staticText = "Return each nonland permanent card with mana value X from your graveyard to the battlefield."; + } + + private HourglassOfTheLostEffect(final HourglassOfTheLostEffect effect) { + super(effect); + } + + @Override + public HourglassOfTheLostEffect copy() { + return new HourglassOfTheLostEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + Player controller = game.getPlayer(source.getControllerId()); + if (controller != null) { + FilterCard filter = new FilterNonlandCard(); + int xValue = CardUtil.getSourceCostsTag(game, source, "X", 0); + game.informPlayers(xValue + " Time counters removed"); + filter.add(new ManaValuePredicate(ComparisonType.EQUAL_TO, xValue)); + return controller.moveCards(controller.getGraveyard().getCards(filter, game), Zone.BATTLEFIELD, source, game); + } + game.informPlayers("controller is null"); + return false; + } +} From a3468e0989c8d6c7dfb8f97a24f18b81c45cbf34 Mon Sep 17 00:00:00 2001 From: grimreap124 <19590931+grimreap124@users.noreply.github.com> Date: Tue, 4 Jun 2024 20:01:21 +1000 Subject: [PATCH 03/10] Update HourglassOfTheLost.java --- Mage.Sets/src/mage/cards/h/HourglassOfTheLost.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Mage.Sets/src/mage/cards/h/HourglassOfTheLost.java b/Mage.Sets/src/mage/cards/h/HourglassOfTheLost.java index 879d90d5bce..60e57a33da5 100644 --- a/Mage.Sets/src/mage/cards/h/HourglassOfTheLost.java +++ b/Mage.Sets/src/mage/cards/h/HourglassOfTheLost.java @@ -48,7 +48,8 @@ public final class HourglassOfTheLost extends CardImpl { ability.addEffect(new AddCountersSourceEffect(CounterType.TIME.createInstance())); this.addAbility(ability); // {T}, Remove X time counters from Hourglass of the Lost and exile it: Return each nonland permanent card with mana value X from your graveyard to the battlefield. Activate only as a sorcery. - Ability returnAbility = new ActivateAsSorceryActivatedAbility(new HourglassOfTheLostEffect(), new TapSourceCost()); + Ability returnAbility = new ActivateAsSorceryActivatedAbility(new HourglassOfTheLostEffect(), null); + returnAbility.addCost(new TapSourceCost()); returnAbility.addCost(new RemoveVariableCountersSourceCost(CounterType.TIME)); returnAbility.addCost(new ExileSourceCost().setText("and exile it")); this.addAbility(returnAbility); From 8e2276b10e4d3ea0cc113ccf68627b8d42994e04 Mon Sep 17 00:00:00 2001 From: grimreap124 <19590931+grimreap124@users.noreply.github.com> Date: Wed, 5 Jun 2024 22:25:38 +1000 Subject: [PATCH 04/10] Create HourglassOfTheLostTest.java --- .../single/m3c/HourglassOfTheLostTest.java | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 Mage.Tests/src/test/java/org/mage/test/cards/single/m3c/HourglassOfTheLostTest.java diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/single/m3c/HourglassOfTheLostTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/single/m3c/HourglassOfTheLostTest.java new file mode 100644 index 00000000000..734902febb8 --- /dev/null +++ b/Mage.Tests/src/test/java/org/mage/test/cards/single/m3c/HourglassOfTheLostTest.java @@ -0,0 +1,40 @@ +package org.mage.test.cards.single.m3c; + +import mage.constants.PhaseStep; +import mage.constants.Zone; +import mage.counters.CounterType; +import org.junit.Test; +import org.mage.test.player.TestPlayer; +import org.mage.test.serverside.base.CardTestPlayerBase; + +/** + * @author Susucr + */ +public class HourglassOfTheLostTest extends CardTestPlayerBase { + + /** + * {@link mage.cards.h.HourglassOfTheLost HourglassOfTheLost} {2}{U} + */ + private static final String hourglass = "Hourglass Of The Lost"; + + @Test + public void test_Simple() { + setStrictChooseMode(true); + skipInitShuffling(); + + addCard(Zone.BATTLEFIELD, playerA, hourglass); + addCard(Zone.GRAVEYARD, playerA, "Birds of Paradise"); // Tribal Enchantment + + activateManaAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "{T}: Add {W}"); + setStopAt(1, PhaseStep.POSTCOMBAT_MAIN); + execute(); + assertCounterCount(playerA, hourglass, CounterType.TIME,1); + activateAbility(3, PhaseStep.PRECOMBAT_MAIN, playerA, "{T},"); + setStopAt(3, PhaseStep.POSTCOMBAT_MAIN); + execute(); + assertExileCount(playerA, 1); + assertGraveyardCount(playerA, 0); + assertPermanentCount(playerA, "Birds of Paradise", 1); + + } +} \ No newline at end of file From 909f627f147a278399858075326d5b298f0012d8 Mon Sep 17 00:00:00 2001 From: grimreap124 <19590931+grimreap124@users.noreply.github.com> Date: Thu, 6 Jun 2024 10:19:01 +1000 Subject: [PATCH 05/10] Update HourglassOfTheLostTest.java --- .../cards/single/m3c/HourglassOfTheLostTest.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/single/m3c/HourglassOfTheLostTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/single/m3c/HourglassOfTheLostTest.java index 734902febb8..40ead8e6017 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/single/m3c/HourglassOfTheLostTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/single/m3c/HourglassOfTheLostTest.java @@ -4,7 +4,6 @@ import mage.constants.PhaseStep; import mage.constants.Zone; import mage.counters.CounterType; import org.junit.Test; -import org.mage.test.player.TestPlayer; import org.mage.test.serverside.base.CardTestPlayerBase; /** @@ -15,7 +14,7 @@ public class HourglassOfTheLostTest extends CardTestPlayerBase { /** * {@link mage.cards.h.HourglassOfTheLost HourglassOfTheLost} {2}{U} */ - private static final String hourglass = "Hourglass Of The Lost"; + private static final String hourglass = "Hourglass of the Lost"; @Test public void test_Simple() { @@ -23,14 +22,18 @@ public class HourglassOfTheLostTest extends CardTestPlayerBase { skipInitShuffling(); addCard(Zone.BATTLEFIELD, playerA, hourglass); - addCard(Zone.GRAVEYARD, playerA, "Birds of Paradise"); // Tribal Enchantment - + addCard(Zone.GRAVEYARD, playerA, "Birds of Paradise"); // Tribal Enchantment + activateManaAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "{T}: Add {W}"); setStopAt(1, PhaseStep.POSTCOMBAT_MAIN); execute(); assertCounterCount(playerA, hourglass, CounterType.TIME,1); - activateAbility(3, PhaseStep.PRECOMBAT_MAIN, playerA, "{T},"); + + showAvailableAbilities("Abilities: ", 3, PhaseStep.PRECOMBAT_MAIN, playerA); + activateAbility(3, PhaseStep.PRECOMBAT_MAIN, playerA, "{T}, Remove X"); + setChoice(playerA, "X=1"); setStopAt(3, PhaseStep.POSTCOMBAT_MAIN); + execute(); assertExileCount(playerA, 1); assertGraveyardCount(playerA, 0); From 379db22832d2d669e282645225891dc918575e56 Mon Sep 17 00:00:00 2001 From: grimreap124 <19590931+grimreap124@users.noreply.github.com> Date: Thu, 6 Jun 2024 13:05:20 +1000 Subject: [PATCH 06/10] Update HourglassOfTheLostTest.java --- .../org/mage/test/cards/single/m3c/HourglassOfTheLostTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/single/m3c/HourglassOfTheLostTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/single/m3c/HourglassOfTheLostTest.java index 40ead8e6017..05813f332a3 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/single/m3c/HourglassOfTheLostTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/single/m3c/HourglassOfTheLostTest.java @@ -30,8 +30,8 @@ public class HourglassOfTheLostTest extends CardTestPlayerBase { assertCounterCount(playerA, hourglass, CounterType.TIME,1); showAvailableAbilities("Abilities: ", 3, PhaseStep.PRECOMBAT_MAIN, playerA); - activateAbility(3, PhaseStep.PRECOMBAT_MAIN, playerA, "{T}, Remove X"); setChoice(playerA, "X=1"); + activateAbility(3, PhaseStep.PRECOMBAT_MAIN, playerA, "{T}, Remove X"); setStopAt(3, PhaseStep.POSTCOMBAT_MAIN); execute(); From 015a19f6c64be079cf1d0ff8e4f06644feb95010 Mon Sep 17 00:00:00 2001 From: grimreap124 <19590931+grimreap124@users.noreply.github.com> Date: Thu, 6 Jun 2024 15:42:51 +1000 Subject: [PATCH 07/10] Update HourglassOfTheLostTest.java --- .../org/mage/test/cards/single/m3c/HourglassOfTheLostTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/single/m3c/HourglassOfTheLostTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/single/m3c/HourglassOfTheLostTest.java index 05813f332a3..75364f145ed 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/single/m3c/HourglassOfTheLostTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/single/m3c/HourglassOfTheLostTest.java @@ -30,7 +30,7 @@ public class HourglassOfTheLostTest extends CardTestPlayerBase { assertCounterCount(playerA, hourglass, CounterType.TIME,1); showAvailableAbilities("Abilities: ", 3, PhaseStep.PRECOMBAT_MAIN, playerA); - setChoice(playerA, "X=1"); + setChoiceAmount(playerA, 1); activateAbility(3, PhaseStep.PRECOMBAT_MAIN, playerA, "{T}, Remove X"); setStopAt(3, PhaseStep.POSTCOMBAT_MAIN); From f7b38a80f1fc6d2383ff6e30ea35cf0a5198932e Mon Sep 17 00:00:00 2001 From: grimreap124 <19590931+grimreap124@users.noreply.github.com> Date: Fri, 7 Jun 2024 10:45:34 +1000 Subject: [PATCH 08/10] VariableCosts added to costs VariableCosts will now be added to the costs list right after its select so it is in the same order as intended by the card --- .../single/m3c/HourglassOfTheLostTest.java | 12 ++++--- .../main/java/mage/abilities/AbilityImpl.java | 33 ++++++++++++++++++- 2 files changed, 39 insertions(+), 6 deletions(-) diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/single/m3c/HourglassOfTheLostTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/single/m3c/HourglassOfTheLostTest.java index 75364f145ed..b9f3e149385 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/single/m3c/HourglassOfTheLostTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/single/m3c/HourglassOfTheLostTest.java @@ -22,21 +22,23 @@ public class HourglassOfTheLostTest extends CardTestPlayerBase { skipInitShuffling(); addCard(Zone.BATTLEFIELD, playerA, hourglass); - addCard(Zone.GRAVEYARD, playerA, "Birds of Paradise"); // Tribal Enchantment + addCard(Zone.GRAVEYARD, playerA, "Birds of Paradise"); // Mana value 1 + addCard(Zone.GRAVEYARD, playerA, "+2 Mace"); // Mana value 2 activateManaAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "{T}: Add {W}"); setStopAt(1, PhaseStep.POSTCOMBAT_MAIN); execute(); assertCounterCount(playerA, hourglass, CounterType.TIME,1); + assertExileCount(playerA, 0); + assertGraveyardCount(playerA, 2); - showAvailableAbilities("Abilities: ", 3, PhaseStep.PRECOMBAT_MAIN, playerA); - setChoiceAmount(playerA, 1); - activateAbility(3, PhaseStep.PRECOMBAT_MAIN, playerA, "{T}, Remove X"); + setChoiceAmount(playerA, 1); // Remove 1 counter + activateAbility(3, PhaseStep.PRECOMBAT_MAIN, playerA, "{T}, Remove X"); // Return all with mana value 1 setStopAt(3, PhaseStep.POSTCOMBAT_MAIN); execute(); assertExileCount(playerA, 1); - assertGraveyardCount(playerA, 0); + assertGraveyardCount(playerA, 1); // +2 Mace still in graveyard assertPermanentCount(playerA, "Birds of Paradise", 1); } diff --git a/Mage/src/main/java/mage/abilities/AbilityImpl.java b/Mage/src/main/java/mage/abilities/AbilityImpl.java index dd4a4d9e2fb..a1ea0e2e62f 100644 --- a/Mage/src/main/java/mage/abilities/AbilityImpl.java +++ b/Mage/src/main/java/mage/abilities/AbilityImpl.java @@ -550,7 +550,12 @@ public abstract class AbilityImpl implements Ability { if (!(variableCost instanceof VariableManaCost) && !((Cost) variableCost).isPaid()) { int xValue = variableCost.announceXValue(this, game); Cost fixedCost = variableCost.getFixedCostsFromAnnouncedValue(xValue); - addCost(fixedCost); + int index = getCosts().indexOf(variableCost); + if (index == -1) { + addCost(fixedCost); + } else { + addCost(fixedCost, index + 1); + } // set the xcosts to paid // no x events - rules from Unbound Flourishing: // - Spells with additional costs that include X won't be affected by Unbound Flourishing. X must be in the spell's mana cost. @@ -928,6 +933,32 @@ public abstract class AbilityImpl implements Ability { } } + public void addCost(Cost cost, int index) { + if (cost == null) { + return; + } + if (cost instanceof Costs) { + // as list of costs + Costs list = (Costs) cost; + for (Cost single : list) { + addCost(single); + } + } else { + // as single cost + if (cost instanceof ManaCost) { + manaCosts.add((ManaCost) cost); + manaCostsToPay.add((ManaCost) cost); + } else { + if (index > costs.size()) { + costs.add(cost); + } else { + costs.add(index, cost); + } + costs.add(index, cost); + } + } + } + @Override public void addManaCostsToPay(ManaCost manaCost) { if (manaCost == null) { From 8b41224f0a8349331264eddc53b9dc7d2a4932e0 Mon Sep 17 00:00:00 2001 From: grimreap124 <19590931+grimreap124@users.noreply.github.com> Date: Fri, 7 Jun 2024 10:47:17 +1000 Subject: [PATCH 09/10] Update AbilityImpl.java --- Mage/src/main/java/mage/abilities/AbilityImpl.java | 1 - 1 file changed, 1 deletion(-) diff --git a/Mage/src/main/java/mage/abilities/AbilityImpl.java b/Mage/src/main/java/mage/abilities/AbilityImpl.java index a1ea0e2e62f..dc32620f872 100644 --- a/Mage/src/main/java/mage/abilities/AbilityImpl.java +++ b/Mage/src/main/java/mage/abilities/AbilityImpl.java @@ -954,7 +954,6 @@ public abstract class AbilityImpl implements Ability { } else { costs.add(index, cost); } - costs.add(index, cost); } } } From 253c31f2ab77509cea9de4d778c8c6f9b83cc412 Mon Sep 17 00:00:00 2001 From: grimreap124 <19590931+grimreap124@users.noreply.github.com> Date: Fri, 7 Jun 2024 10:48:43 +1000 Subject: [PATCH 10/10] Update AbilityImpl.java --- Mage/src/main/java/mage/abilities/AbilityImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Mage/src/main/java/mage/abilities/AbilityImpl.java b/Mage/src/main/java/mage/abilities/AbilityImpl.java index dc32620f872..c5f23841967 100644 --- a/Mage/src/main/java/mage/abilities/AbilityImpl.java +++ b/Mage/src/main/java/mage/abilities/AbilityImpl.java @@ -941,7 +941,7 @@ public abstract class AbilityImpl implements Ability { // as list of costs Costs list = (Costs) cost; for (Cost single : list) { - addCost(single); + addCost(single, index); } } else { // as single cost