From fbc0cd61dd5a7566846c41d50d8ec1efa364116a Mon Sep 17 00:00:00 2001 From: Susucre <34709007+Susucre@users.noreply.github.com> Date: Mon, 31 Jul 2023 01:26:26 +0200 Subject: [PATCH] [LTC] Implement Banquet Guests (#10706) * make a StaticFilter for "a food" * [LTC] Implement Banquet Guests Made a Static Filters for controlled food, with the next eldraine set we'll certaintly see more of that. * future proof static text for mulitplier > 2 --- Mage.Sets/src/mage/cards/b/BanquetGuests.java | 78 +++++++++++++++++++ Mage.Sets/src/mage/cards/b/BillThePony.java | 4 +- Mage.Sets/src/mage/cards/b/BogNaughty.java | 6 +- .../src/mage/cards/c/CauldronFamiliar.java | 6 +- Mage.Sets/src/mage/cards/g/GildedGoose.java | 12 +-- .../src/mage/cards/g/GyomeMasterChef.java | 5 +- .../src/mage/cards/i/InsatiableAppetite.java | 7 +- Mage.Sets/src/mage/cards/m/MaraleafRider.java | 6 +- .../src/mage/cards/m/MushroomWatchdogs.java | 6 +- Mage.Sets/src/mage/cards/t/TemptingWitch.java | 6 +- Mage.Sets/src/mage/cards/w/WickedWolf.java | 6 +- .../sets/TalesOfMiddleEarthCommander.java | 1 + .../EntersBattlefieldWithXCountersEffect.java | 20 ++++- .../main/java/mage/filter/StaticFilters.java | 6 ++ 14 files changed, 122 insertions(+), 47 deletions(-) create mode 100644 Mage.Sets/src/mage/cards/b/BanquetGuests.java diff --git a/Mage.Sets/src/mage/cards/b/BanquetGuests.java b/Mage.Sets/src/mage/cards/b/BanquetGuests.java new file mode 100644 index 00000000000..b184f3aa97f --- /dev/null +++ b/Mage.Sets/src/mage/cards/b/BanquetGuests.java @@ -0,0 +1,78 @@ +package mage.cards.b; + +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.EntersBattlefieldAbility; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.costs.common.SacrificeTargetCost; +import mage.abilities.costs.mana.GenericManaCost; +import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; +import mage.abilities.effects.common.AffinityEffect; +import mage.abilities.effects.common.EntersBattlefieldWithXCountersEffect; +import mage.abilities.effects.common.continuous.GainAbilitySourceEffect; +import mage.abilities.hint.Hint; +import mage.abilities.hint.ValueHint; +import mage.abilities.keyword.IndestructibleAbility; +import mage.abilities.keyword.TrampleAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.SubType; +import mage.constants.Zone; +import mage.counters.CounterType; +import mage.filter.StaticFilters; +import mage.target.common.TargetControlledPermanent; + +import java.util.UUID; + +/** + * @author Susucr + */ +public final class BanquetGuests extends CardImpl { + + private static final Hint hint = new ValueHint("Food you control", new PermanentsOnBattlefieldCount(StaticFilters.FILTER_CONTROLLED_FOOD)); + + public BanquetGuests(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{X}{G}{W}"); + + this.subtype.add(SubType.HALFLING); + this.subtype.add(SubType.CITIZEN); + this.power = new MageInt(0); + this.toughness = new MageInt(0); + + // Affinity for Food + this.addAbility( + new SimpleStaticAbility( + Zone.ALL, + new AffinityEffect(StaticFilters.FILTER_CONTROLLED_FOOD) + ).addHint(hint) + ); + + // Trample + this.addAbility(TrampleAbility.getInstance()); + + // Banquet Guests enters the battlefield with twice X +1/+1 counters on it. + this.addAbility(new EntersBattlefieldAbility( + new EntersBattlefieldWithXCountersEffect(CounterType.P1P1.createInstance(), 2) + )); + + // {2}, Sacrifice a Food: Banquet Guests gains indestructible until end of turn. + Ability ability = new SimpleActivatedAbility( + new GainAbilitySourceEffect(IndestructibleAbility.getInstance(), Duration.EndOfTurn), + new GenericManaCost(2) + ); + ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent(StaticFilters.FILTER_CONTROLLED_FOOD))); + this.addAbility(ability); + } + + private BanquetGuests(final BanquetGuests card) { + super(card); + } + + @Override + public BanquetGuests copy() { + return new BanquetGuests(this); + } +} diff --git a/Mage.Sets/src/mage/cards/b/BillThePony.java b/Mage.Sets/src/mage/cards/b/BillThePony.java index fe716191e38..ddea33ae923 100644 --- a/Mage.Sets/src/mage/cards/b/BillThePony.java +++ b/Mage.Sets/src/mage/cards/b/BillThePony.java @@ -30,8 +30,6 @@ import mage.target.common.TargetControlledPermanent; */ public final class BillThePony extends CardImpl { - private static final FilterControlledPermanent foodFilter = new FilterControlledPermanent(SubType.FOOD, "a Food");; - public BillThePony(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}"); @@ -46,7 +44,7 @@ public final class BillThePony extends CardImpl { // Sacrifice a Food: Until end of turn, target creature you control assigns combat damage equal to its toughness rather than its power. Ability ability = new SimpleActivatedAbility( new BillThePonyEffect(), - new SacrificeTargetCost(new TargetControlledPermanent(foodFilter)) + new SacrificeTargetCost(new TargetControlledPermanent(StaticFilters.FILTER_CONTROLLED_FOOD)) ); ability.addTarget(new TargetPermanent(StaticFilters.FILTER_CONTROLLED_CREATURE)); diff --git a/Mage.Sets/src/mage/cards/b/BogNaughty.java b/Mage.Sets/src/mage/cards/b/BogNaughty.java index 8ddb48efa60..ce1a5206b7b 100644 --- a/Mage.Sets/src/mage/cards/b/BogNaughty.java +++ b/Mage.Sets/src/mage/cards/b/BogNaughty.java @@ -12,7 +12,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; import mage.constants.SubType; -import mage.filter.common.FilterControlledPermanent; +import mage.filter.StaticFilters; import mage.target.common.TargetControlledPermanent; import mage.target.common.TargetCreaturePermanent; @@ -23,8 +23,6 @@ import java.util.UUID; */ public final class BogNaughty extends CardImpl { - private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.FOOD, "a Food"); - public BogNaughty(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}{B}"); @@ -39,7 +37,7 @@ public final class BogNaughty extends CardImpl { Ability ability = new SimpleActivatedAbility( new BoostTargetEffect(-3, -3, Duration.EndOfTurn), new ManaCostsImpl<>("{2}{B}") ); - ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent(filter))); + ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent(StaticFilters.FILTER_CONTROLLED_FOOD))); ability.addTarget(new TargetCreaturePermanent()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/c/CauldronFamiliar.java b/Mage.Sets/src/mage/cards/c/CauldronFamiliar.java index 295b121f08c..dbce19bf7bc 100644 --- a/Mage.Sets/src/mage/cards/c/CauldronFamiliar.java +++ b/Mage.Sets/src/mage/cards/c/CauldronFamiliar.java @@ -13,7 +13,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.constants.Zone; -import mage.filter.common.FilterControlledPermanent; +import mage.filter.StaticFilters; import mage.target.common.TargetControlledPermanent; import java.util.UUID; @@ -23,8 +23,6 @@ import java.util.UUID; */ public final class CauldronFamiliar extends CardImpl { - private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.FOOD, "a Food"); - public CauldronFamiliar(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}"); @@ -41,7 +39,7 @@ public final class CauldronFamiliar extends CardImpl { this.addAbility(new SimpleActivatedAbility( Zone.GRAVEYARD, new ReturnSourceFromGraveyardToBattlefieldEffect(false, false), - new SacrificeTargetCost(new TargetControlledPermanent(filter)) + new SacrificeTargetCost(new TargetControlledPermanent(StaticFilters.FILTER_CONTROLLED_FOOD)) )); } diff --git a/Mage.Sets/src/mage/cards/g/GildedGoose.java b/Mage.Sets/src/mage/cards/g/GildedGoose.java index 769fb3f793f..86af432a7e1 100644 --- a/Mage.Sets/src/mage/cards/g/GildedGoose.java +++ b/Mage.Sets/src/mage/cards/g/GildedGoose.java @@ -16,7 +16,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.constants.Zone; -import mage.filter.common.FilterControlledPermanent; +import mage.filter.StaticFilters; import mage.game.permanent.token.FoodToken; import mage.target.common.TargetControlledPermanent; @@ -27,13 +27,7 @@ import java.util.UUID; */ public final class GildedGoose extends CardImpl { - - private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Food"); - - static { - filter.add(SubType.FOOD.getPredicate()); - } - + public GildedGoose(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{G}"); this.subtype.add(SubType.BIRD); @@ -54,7 +48,7 @@ public final class GildedGoose extends CardImpl { // {T}, Sacrifice a Food: Add one mana of any color. ActivatedManaAbilityImpl ability1 = new AnyColorManaAbility(new TapSourceCost()); - ability1.addCost(new SacrificeTargetCost(new TargetControlledPermanent(filter))); + ability1.addCost(new SacrificeTargetCost(new TargetControlledPermanent(StaticFilters.FILTER_CONTROLLED_FOOD))); this.addAbility(ability1); } diff --git a/Mage.Sets/src/mage/cards/g/GyomeMasterChef.java b/Mage.Sets/src/mage/cards/g/GyomeMasterChef.java index 3994218017c..061d232a1dc 100644 --- a/Mage.Sets/src/mage/cards/g/GyomeMasterChef.java +++ b/Mage.Sets/src/mage/cards/g/GyomeMasterChef.java @@ -18,7 +18,7 @@ import mage.abilities.keyword.TrampleAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.*; -import mage.filter.common.FilterControlledPermanent; +import mage.filter.StaticFilters; import mage.game.Game; import mage.game.events.EntersTheBattlefieldEvent; import mage.game.events.GameEvent; @@ -39,7 +39,6 @@ import java.util.UUID; */ public final class GyomeMasterChef extends CardImpl { - private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.FOOD, "a Food"); private static final Hint hint = new ValueHint("Nontoken creatures entered this turn", GyomeMasterChefValue.instance); public GyomeMasterChef(UUID ownerId, CardSetInfo setInfo) { @@ -67,7 +66,7 @@ public final class GyomeMasterChef extends CardImpl { Ability ability = new SimpleActivatedAbility(new GainAbilityTargetEffect( IndestructibleAbility.getInstance(), Duration.EndOfTurn ), new GenericManaCost(1)); - ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent(filter))); + ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent(StaticFilters.FILTER_CONTROLLED_FOOD))); ability.addEffect(new TapTargetEffect("tap it")); ability.addTarget(new TargetCreaturePermanent()); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/i/InsatiableAppetite.java b/Mage.Sets/src/mage/cards/i/InsatiableAppetite.java index 60bc2bfaadd..aa28304573d 100644 --- a/Mage.Sets/src/mage/cards/i/InsatiableAppetite.java +++ b/Mage.Sets/src/mage/cards/i/InsatiableAppetite.java @@ -7,8 +7,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; -import mage.constants.SubType; -import mage.filter.common.FilterControlledPermanent; +import mage.filter.StaticFilters; import mage.target.common.TargetControlledPermanent; import mage.target.common.TargetCreaturePermanent; @@ -19,8 +18,6 @@ import java.util.UUID; */ public final class InsatiableAppetite extends CardImpl { - private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.FOOD, "a Food"); - public InsatiableAppetite(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{G}"); @@ -28,7 +25,7 @@ public final class InsatiableAppetite extends CardImpl { this.getSpellAbility().addEffect(new DoIfCostPaid( new BoostTargetEffect(5, 5, Duration.EndOfTurn), new BoostTargetEffect(3, 3, Duration.EndOfTurn), - new SacrificeTargetCost(new TargetControlledPermanent(filter)) + new SacrificeTargetCost(new TargetControlledPermanent(StaticFilters.FILTER_CONTROLLED_FOOD)) ).setText("You may sacrifice a Food. If you do, target creature gets +5/+5 until end of turn. " + "Otherwise, that creature gets +3/+3 until end of turn.")); this.getSpellAbility().addTarget(new TargetCreaturePermanent()); diff --git a/Mage.Sets/src/mage/cards/m/MaraleafRider.java b/Mage.Sets/src/mage/cards/m/MaraleafRider.java index 25f1baba2bf..0c81a7f7beb 100644 --- a/Mage.Sets/src/mage/cards/m/MaraleafRider.java +++ b/Mage.Sets/src/mage/cards/m/MaraleafRider.java @@ -9,7 +9,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; -import mage.filter.common.FilterControlledPermanent; +import mage.filter.StaticFilters; import mage.target.common.TargetControlledPermanent; import mage.target.common.TargetCreaturePermanent; @@ -20,8 +20,6 @@ import java.util.UUID; */ public final class MaraleafRider extends CardImpl { - private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.FOOD, "a Food"); - public MaraleafRider(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}"); @@ -32,7 +30,7 @@ public final class MaraleafRider extends CardImpl { // Sacrifice a Food: Target creature blocks Maraleaf Rider this turn if able. Ability ability = new SimpleActivatedAbility( - new MustBeBlockedByTargetSourceEffect(), new SacrificeTargetCost(new TargetControlledPermanent(filter)) + new MustBeBlockedByTargetSourceEffect(), new SacrificeTargetCost(new TargetControlledPermanent(StaticFilters.FILTER_CONTROLLED_FOOD)) ); ability.addTarget(new TargetCreaturePermanent()); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/m/MushroomWatchdogs.java b/Mage.Sets/src/mage/cards/m/MushroomWatchdogs.java index 0dd551368d6..a3652333c09 100644 --- a/Mage.Sets/src/mage/cards/m/MushroomWatchdogs.java +++ b/Mage.Sets/src/mage/cards/m/MushroomWatchdogs.java @@ -13,7 +13,7 @@ import mage.constants.CardType; import mage.constants.Duration; import mage.constants.SubType; import mage.counters.CounterType; -import mage.filter.common.FilterControlledPermanent; +import mage.filter.StaticFilters; import java.util.UUID; @@ -22,8 +22,6 @@ import java.util.UUID; */ public final class MushroomWatchdogs extends CardImpl { - private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.FOOD, "a Food"); - public MushroomWatchdogs(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}"); @@ -33,7 +31,7 @@ public final class MushroomWatchdogs extends CardImpl { // Sacrifice a Food: Put a +1/+1 counter on Mushroom Watchdogs. It gains vigilance until end of turn. Activate only as a sorcery. Ability ability = new ActivateAsSorceryActivatedAbility( - new AddCountersSourceEffect(CounterType.P1P1.createInstance()), new SacrificeTargetCost(filter) + new AddCountersSourceEffect(CounterType.P1P1.createInstance()), new SacrificeTargetCost(StaticFilters.FILTER_CONTROLLED_FOOD) ); ability.addEffect(new GainAbilitySourceEffect( VigilanceAbility.getInstance(), Duration.EndOfTurn diff --git a/Mage.Sets/src/mage/cards/t/TemptingWitch.java b/Mage.Sets/src/mage/cards/t/TemptingWitch.java index 2af415f5284..a48d400cf81 100644 --- a/Mage.Sets/src/mage/cards/t/TemptingWitch.java +++ b/Mage.Sets/src/mage/cards/t/TemptingWitch.java @@ -13,7 +13,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; -import mage.filter.common.FilterControlledPermanent; +import mage.filter.StaticFilters; import mage.game.permanent.token.FoodToken; import mage.target.TargetPlayer; import mage.target.common.TargetControlledPermanent; @@ -25,8 +25,6 @@ import java.util.UUID; */ public final class TemptingWitch extends CardImpl { - private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.FOOD, "a Food"); - public TemptingWitch(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}"); @@ -43,7 +41,7 @@ public final class TemptingWitch extends CardImpl { new LoseLifeTargetEffect(3), new GenericManaCost(2) ); ability.addCost(new TapSourceCost()); - ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent(filter))); + ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent(StaticFilters.FILTER_CONTROLLED_FOOD))); ability.addTarget(new TargetPlayer()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/w/WickedWolf.java b/Mage.Sets/src/mage/cards/w/WickedWolf.java index 9661a39126f..1a9670c1aa6 100644 --- a/Mage.Sets/src/mage/cards/w/WickedWolf.java +++ b/Mage.Sets/src/mage/cards/w/WickedWolf.java @@ -17,7 +17,6 @@ import mage.constants.Duration; import mage.constants.SubType; import mage.counters.CounterType; import mage.filter.StaticFilters; -import mage.filter.common.FilterControlledPermanent; import mage.target.TargetPermanent; import mage.target.common.TargetControlledPermanent; @@ -28,9 +27,6 @@ import java.util.UUID; */ public final class WickedWolf extends CardImpl { - private static final FilterControlledPermanent filter - = new FilterControlledPermanent(SubType.FOOD, "a Food"); - public WickedWolf(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}{G}"); @@ -48,7 +44,7 @@ public final class WickedWolf extends CardImpl { // Sacrifice a Food: Put a +1/+1 counter on Wicked Wolf. It gains indestructible until end of turn. Tap it. ability = new SimpleActivatedAbility( new AddCountersSourceEffect(CounterType.P1P1.createInstance()), - new SacrificeTargetCost(new TargetControlledPermanent(filter)) + new SacrificeTargetCost(new TargetControlledPermanent(StaticFilters.FILTER_CONTROLLED_FOOD)) ); ability.addEffect(new GainAbilitySourceEffect( IndestructibleAbility.getInstance(), Duration.EndOfTurn diff --git a/Mage.Sets/src/mage/sets/TalesOfMiddleEarthCommander.java b/Mage.Sets/src/mage/sets/TalesOfMiddleEarthCommander.java index f34fff94d15..7e5196048c9 100644 --- a/Mage.Sets/src/mage/sets/TalesOfMiddleEarthCommander.java +++ b/Mage.Sets/src/mage/sets/TalesOfMiddleEarthCommander.java @@ -29,6 +29,7 @@ public final class TalesOfMiddleEarthCommander extends ExpansionSet { cards.add(new SetCardInfo("Asceticism", 233, Rarity.RARE, mage.cards.a.Asceticism.class)); cards.add(new SetCardInfo("Ash Barrens", 295, Rarity.UNCOMMON, mage.cards.a.AshBarrens.class)); cards.add(new SetCardInfo("Banishing Light", 161, Rarity.UNCOMMON, mage.cards.b.BanishingLight.class)); + cards.add(new SetCardInfo("Banquet Guests", 47, Rarity.RARE, mage.cards.b.BanquetGuests.class)); cards.add(new SetCardInfo("Basalt Monolith", 274, Rarity.UNCOMMON, mage.cards.b.BasaltMonolith.class)); cards.add(new SetCardInfo("Bastion Protector", 162, Rarity.RARE, mage.cards.b.BastionProtector.class)); cards.add(new SetCardInfo("Battlefield Forge", 296, Rarity.RARE, mage.cards.b.BattlefieldForge.class)); diff --git a/Mage/src/main/java/mage/abilities/effects/common/EntersBattlefieldWithXCountersEffect.java b/Mage/src/main/java/mage/abilities/effects/common/EntersBattlefieldWithXCountersEffect.java index 85df1238c73..0be9a53763a 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/EntersBattlefieldWithXCountersEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/EntersBattlefieldWithXCountersEffect.java @@ -9,6 +9,7 @@ import mage.constants.Outcome; import mage.counters.Counter; import mage.game.Game; import mage.game.permanent.Permanent; +import mage.util.CardUtil; import java.util.ArrayList; import java.util.List; @@ -22,16 +23,31 @@ import java.util.UUID; public class EntersBattlefieldWithXCountersEffect extends OneShotEffect { protected final Counter counter; + private final int multiplier; public EntersBattlefieldWithXCountersEffect(Counter counter) { + this(counter, 1); + } + + public EntersBattlefieldWithXCountersEffect(Counter counter, int multiplier) { super(Outcome.BoostCreature); this.counter = counter; - staticText = "with X " + counter.getName() + " counters on it"; + this.multiplier = multiplier; + + String countText = "X"; + if (multiplier == 2) { + countText = "twice " + countText; + } + if (multiplier > 2) { + countText = CardUtil.numberToText(multiplier) + " times " + countText; + } + staticText = "with " + countText + " " + counter.getName() + " counters on it"; } public EntersBattlefieldWithXCountersEffect(final EntersBattlefieldWithXCountersEffect effect) { super(effect); this.counter = effect.counter.copy(); + this.multiplier = effect.multiplier; } @Override @@ -48,7 +64,7 @@ public class EntersBattlefieldWithXCountersEffect extends OneShotEffect { && spellAbility.getSourceId().equals(source.getSourceId()) && permanent.getZoneChangeCounter(game) == spellAbility.getSourceObjectZoneChangeCounter()) { if (spellAbility.getSourceId().equals(source.getSourceId())) { // put into play by normal cast - int amount = spellAbility.getManaCostsToPay().getX(); + int amount = spellAbility.getManaCostsToPay().getX() * this.multiplier; if (amount > 0) { Counter counterToAdd = counter.copy(); counterToAdd.add(amount - counter.getCount()); diff --git a/Mage/src/main/java/mage/filter/StaticFilters.java b/Mage/src/main/java/mage/filter/StaticFilters.java index 68bb5973e9c..9ef0e4dde28 100644 --- a/Mage/src/main/java/mage/filter/StaticFilters.java +++ b/Mage/src/main/java/mage/filter/StaticFilters.java @@ -1202,4 +1202,10 @@ public final class StaticFilters { FILTER_PLAYER_CONTROLLER.add(TargetController.YOU.getPlayerPredicate()); FILTER_PLAYER_CONTROLLER.setLockedFilter(true); } + + public static final FilterControlledPermanent FILTER_CONTROLLED_FOOD = new FilterControlledPermanent(SubType.FOOD, "Food"); + + static { + FILTER_CONTROLLED_FOOD.setLockedFilter(true); + } }