diff --git a/Mage.Sets/src/mage/cards/f/FoodChain.java b/Mage.Sets/src/mage/cards/f/FoodChain.java index 7e13b133a95..70b6ef75a73 100644 --- a/Mage.Sets/src/mage/cards/f/FoodChain.java +++ b/Mage.Sets/src/mage/cards/f/FoodChain.java @@ -1,6 +1,7 @@ - package mage.cards.f; +import java.util.ArrayList; +import java.util.List; import java.util.UUID; import mage.ConditionalMana; import mage.Mana; @@ -20,6 +21,7 @@ import mage.constants.Outcome; import mage.constants.Zone; import mage.filter.StaticFilters; import mage.game.Game; +import mage.game.permanent.Permanent; import mage.players.Player; import mage.target.common.TargetControlledCreaturePermanent; @@ -63,6 +65,8 @@ class FoodChainManaBuilder extends ConditionalManaBuilder { class FoodChainManaEffect extends ManaEffect { + ConditionalManaBuilder manaBuilder = new FoodChainManaBuilder(); + FoodChainManaEffect() { this.staticText = "Add X mana of any one color, where X is 1 plus the exiled creature's converted mana cost. Spend this mana only to cast creature spells"; } @@ -88,6 +92,25 @@ class FoodChainManaEffect extends ManaEffect { return false; } + @Override + public List getNetMana(Game game, Ability source) { + List netMana = new ArrayList<>(); + int cmc = -1; + for (Permanent permanent : game.getBattlefield().getAllActivePermanents(source.getControllerId())) { + if (permanent.isCreature()) { + cmc = Math.max(cmc, permanent.getManaCost().convertedManaCost()); + } + } + if (cmc != -1) { + netMana.add(manaBuilder.setMana(Mana.BlackMana(cmc + 1), source, game).build()); + netMana.add(manaBuilder.setMana(Mana.BlueMana(cmc + 1), source, game).build()); + netMana.add(manaBuilder.setMana(Mana.RedMana(cmc + 1), source, game).build()); + netMana.add(manaBuilder.setMana(Mana.GreenMana(cmc + 1), source, game).build()); + netMana.add(manaBuilder.setMana(Mana.WhiteMana(cmc + 1), source, game).build()); + } + return netMana; + } + @Override public Mana produceMana(boolean netMana, Game game, Ability source) { if (netMana) { @@ -108,7 +131,7 @@ class FoodChainManaEffect extends ManaEffect { return null; } Mana chosen = choice.getMana(manaCostExiled + 1); - return new FoodChainManaBuilder().setMana(chosen, source, game).build(); + return manaBuilder.setMana(chosen, source, game).build(); } return null; diff --git a/Mage/src/main/java/mage/abilities/mana/ActivatedManaAbilityImpl.java b/Mage/src/main/java/mage/abilities/mana/ActivatedManaAbilityImpl.java index 1be6c66f778..0d5f9b861f3 100644 --- a/Mage/src/main/java/mage/abilities/mana/ActivatedManaAbilityImpl.java +++ b/Mage/src/main/java/mage/abilities/mana/ActivatedManaAbilityImpl.java @@ -1,4 +1,3 @@ - package mage.abilities.mana; import java.util.ArrayList; @@ -71,11 +70,13 @@ public abstract class ActivatedManaAbilityImpl extends ActivatedAbilityImpl impl @Override public List getNetMana(Game game) { if (netMana.isEmpty()) { + ArrayList dynamicNetMana = new ArrayList<>(); for (Effect effect : getEffects()) { if (effect instanceof ManaEffect) { - netMana.addAll(((ManaEffect) effect).getNetMana(game, this)); + dynamicNetMana.addAll(((ManaEffect) effect).getNetMana(game, this)); } } + return dynamicNetMana; } ArrayList netManaCopy = new ArrayList<>(); for (Mana mana : netMana) {