From ce972d294d99ae9da8a9af361ee793e724624eee Mon Sep 17 00:00:00 2001 From: theelk801 Date: Sun, 7 Dec 2025 10:53:46 -0500 Subject: [PATCH] [FIC] Implement Chocobo Camp --- Mage.Sets/src/mage/cards/b/BaradDur.java | 15 +---- Mage.Sets/src/mage/cards/c/ChocoboCamp.java | 62 +++++++++++++++++++ .../src/mage/cards/e/EsquireOfTheKing.java | 11 +--- .../mage/cards/h/HauntOfTheDeadMarshes.java | 26 ++------ Mage.Sets/src/mage/cards/m/MinasTirith.java | 15 +---- Mage.Sets/src/mage/cards/m/MinesOfMoria.java | 15 +---- Mage.Sets/src/mage/cards/p/PriceOfFame.java | 13 +--- Mage.Sets/src/mage/cards/r/Rivendell.java | 18 ++---- Mage.Sets/src/mage/cards/t/TheShire.java | 15 +---- .../src/mage/sets/FinalFantasyCommander.java | 1 + ...YouControlALegendaryCreatureCondition.java | 30 +++++++++ 11 files changed, 119 insertions(+), 102 deletions(-) create mode 100644 Mage.Sets/src/mage/cards/c/ChocoboCamp.java create mode 100644 Mage/src/main/java/mage/abilities/condition/common/YouControlALegendaryCreatureCondition.java diff --git a/Mage.Sets/src/mage/cards/b/BaradDur.java b/Mage.Sets/src/mage/cards/b/BaradDur.java index d51f2572517..0a448e697a4 100644 --- a/Mage.Sets/src/mage/cards/b/BaradDur.java +++ b/Mage.Sets/src/mage/cards/b/BaradDur.java @@ -4,7 +4,7 @@ import mage.abilities.Ability; import mage.abilities.common.ActivateIfConditionActivatedAbility; import mage.abilities.common.EntersBattlefieldTappedUnlessAbility; import mage.abilities.condition.common.MorbidCondition; -import mage.abilities.condition.common.YouControlPermanentCondition; +import mage.abilities.condition.common.YouControlALegendaryCreatureCondition; import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.dynamicvalue.common.GetXValue; @@ -16,8 +16,6 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.constants.SuperType; -import mage.filter.FilterPermanent; -import mage.filter.common.FilterControlledCreaturePermanent; import java.util.UUID; @@ -26,21 +24,14 @@ import java.util.UUID; */ public final class BaradDur extends CardImpl { - private static final FilterPermanent filter = new FilterControlledCreaturePermanent("a legendary creature"); - - static { - filter.add(SuperType.LEGENDARY.getPredicate()); - } - - private static final YouControlPermanentCondition condition = new YouControlPermanentCondition(filter); - public BaradDur(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.LAND}, ""); this.supertype.add(SuperType.LEGENDARY); // Barad-dur enters the battlefield tapped unless you control a legendary creature. - this.addAbility(new EntersBattlefieldTappedUnlessAbility(condition).addHint(condition.getHint())); + this.addAbility(new EntersBattlefieldTappedUnlessAbility(YouControlALegendaryCreatureCondition.instance) + .addHint(YouControlALegendaryCreatureCondition.getHint())); // {T}: Add {B}. this.addAbility(new BlackManaAbility()); diff --git a/Mage.Sets/src/mage/cards/c/ChocoboCamp.java b/Mage.Sets/src/mage/cards/c/ChocoboCamp.java new file mode 100644 index 00000000000..2c106ed9b3e --- /dev/null +++ b/Mage.Sets/src/mage/cards/c/ChocoboCamp.java @@ -0,0 +1,62 @@ +package mage.cards.c; + +import mage.abilities.Ability; +import mage.abilities.common.EntersBattlefieldTappedUnlessAbility; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.common.delayed.AddCounterNextSpellDelayedTriggeredAbility; +import mage.abilities.condition.common.YouControlALegendaryCreatureCondition; +import mage.abilities.costs.common.TapSourceCost; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect; +import mage.abilities.effects.common.CreateTokenEffect; +import mage.abilities.mana.BasicManaAbility; +import mage.abilities.mana.GreenManaAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.SubType; +import mage.filter.FilterSpell; +import mage.filter.common.FilterCreatureSpell; +import mage.game.permanent.token.ChocoboToken; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class ChocoboCamp extends CardImpl { + + private static final FilterSpell filter = new FilterCreatureSpell("a Bird creature spell"); + + static { + filter.add(SubType.BIRD.getPredicate()); + } + + public ChocoboCamp(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.LAND}, ""); + + // This land enters tapped unless you control a legendary creature. + this.addAbility(new EntersBattlefieldTappedUnlessAbility(YouControlALegendaryCreatureCondition.instance) + .addHint(YouControlALegendaryCreatureCondition.getHint())); + + // {T}: Add {G}. When you next cast a Bird creature spell this turn, it enters with an additional +1/+1 counter on it. + BasicManaAbility manaAbility = new GreenManaAbility(); + manaAbility.addEffect(new CreateDelayedTriggeredAbilityEffect(new AddCounterNextSpellDelayedTriggeredAbility(filter))); + manaAbility.setUndoPossible(false); + this.addAbility(manaAbility); + + // {2}{G}{G}, {T}: Create a 2/2 green Bird creature token with "Whenever a land you control enters, this token gets +1/+0 until end of turn." + Ability ability = new SimpleActivatedAbility(new CreateTokenEffect(new ChocoboToken()), new ManaCostsImpl<>("{2}{G}{G}")); + ability.addCost(new TapSourceCost()); + this.addAbility(ability); + } + + private ChocoboCamp(final ChocoboCamp card) { + super(card); + } + + @Override + public ChocoboCamp copy() { + return new ChocoboCamp(this); + } +} diff --git a/Mage.Sets/src/mage/cards/e/EsquireOfTheKing.java b/Mage.Sets/src/mage/cards/e/EsquireOfTheKing.java index 86d81519f8d..4c0c1812a77 100644 --- a/Mage.Sets/src/mage/cards/e/EsquireOfTheKing.java +++ b/Mage.Sets/src/mage/cards/e/EsquireOfTheKing.java @@ -3,14 +3,12 @@ package mage.cards.e; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; -import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition; +import mage.abilities.condition.common.YouControlALegendaryCreatureCondition; import mage.abilities.costs.CostAdjuster; import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.InfoEffect; import mage.abilities.effects.common.continuous.BoostControlledEffect; -import mage.abilities.hint.ConditionHint; -import mage.abilities.hint.Hint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -27,11 +25,6 @@ import java.util.UUID; */ public final class EsquireOfTheKing extends CardImpl { - private static final Hint hint = new ConditionHint( - new PermanentsOnTheBattlefieldCondition(StaticFilters.FILTER_CONTROLLED_CREATURE_LEGENDARY), - "You control a legendary creature" - ); - public EsquireOfTheKing(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}"); @@ -47,7 +40,7 @@ public final class EsquireOfTheKing extends CardImpl { ability.addCost(new TapSourceCost()); ability.setCostAdjuster(EsquireOfTheKingAdjuster.instance); ability.addEffect(new InfoEffect("This ability costs {2} less to activate if you control a legendary creature.")); - this.addAbility(ability.addHint(hint)); + this.addAbility(ability.addHint(YouControlALegendaryCreatureCondition.getHint())); } private EsquireOfTheKing(final EsquireOfTheKing card) { diff --git a/Mage.Sets/src/mage/cards/h/HauntOfTheDeadMarshes.java b/Mage.Sets/src/mage/cards/h/HauntOfTheDeadMarshes.java index f587b2cfd43..0d8337fffdd 100644 --- a/Mage.Sets/src/mage/cards/h/HauntOfTheDeadMarshes.java +++ b/Mage.Sets/src/mage/cards/h/HauntOfTheDeadMarshes.java @@ -1,23 +1,17 @@ package mage.cards.h; import mage.MageInt; -import mage.abilities.common.EntersBattlefieldTriggeredAbility; -import mage.abilities.condition.Condition; -import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition; -import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.common.ActivateIfConditionActivatedAbility; +import mage.abilities.common.EntersBattlefieldTriggeredAbility; +import mage.abilities.condition.common.YouControlALegendaryCreatureCondition; +import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.ReturnSourceFromGraveyardToBattlefieldEffect; import mage.abilities.effects.keyword.ScryEffect; -import mage.abilities.hint.ConditionHint; -import mage.abilities.hint.Hint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; -import mage.constants.SuperType; import mage.constants.Zone; -import mage.filter.FilterPermanent; -import mage.filter.common.FilterControlledCreaturePermanent; import java.util.UUID; @@ -26,16 +20,6 @@ import java.util.UUID; */ public final class HauntOfTheDeadMarshes extends CardImpl { - private static final FilterPermanent filter - = new FilterControlledCreaturePermanent("you control a legendary creature"); - - static { - filter.add(SuperType.LEGENDARY.getPredicate()); - } - - private static final Condition condition = new PermanentsOnTheBattlefieldCondition(filter); - private static final Hint hint = new ConditionHint(condition, "You control a legendary creature"); - public HauntOfTheDeadMarshes(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}"); @@ -50,8 +34,8 @@ public final class HauntOfTheDeadMarshes extends CardImpl { // {2}{B}: Return Haunt of the Dead Marshes from your graveyard to the battlefield tapped. Activate only if you control a legendary creature. this.addAbility(new ActivateIfConditionActivatedAbility( Zone.GRAVEYARD, new ReturnSourceFromGraveyardToBattlefieldEffect(true, false), - new ManaCostsImpl<>("{2}{B}"), condition - ).addHint(hint)); + new ManaCostsImpl<>("{2}{B}"), YouControlALegendaryCreatureCondition.instance + ).addHint(YouControlALegendaryCreatureCondition.getHint())); } private HauntOfTheDeadMarshes(final HauntOfTheDeadMarshes card) { diff --git a/Mage.Sets/src/mage/cards/m/MinasTirith.java b/Mage.Sets/src/mage/cards/m/MinasTirith.java index 6e580899c59..a284fc8d02e 100644 --- a/Mage.Sets/src/mage/cards/m/MinasTirith.java +++ b/Mage.Sets/src/mage/cards/m/MinasTirith.java @@ -4,7 +4,7 @@ import mage.abilities.Ability; import mage.abilities.common.ActivateIfConditionActivatedAbility; import mage.abilities.common.EntersBattlefieldTappedUnlessAbility; import mage.abilities.condition.Condition; -import mage.abilities.condition.common.YouControlPermanentCondition; +import mage.abilities.condition.common.YouControlALegendaryCreatureCondition; import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.DrawCardSourceControllerEffect; @@ -16,8 +16,6 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SuperType; import mage.constants.WatcherScope; -import mage.filter.FilterPermanent; -import mage.filter.common.FilterControlledCreaturePermanent; import mage.game.Game; import mage.game.events.GameEvent; import mage.util.CardUtil; @@ -32,21 +30,14 @@ import java.util.UUID; */ public final class MinasTirith extends CardImpl { - private static final FilterPermanent filter = new FilterControlledCreaturePermanent("a legendary creature"); - - static { - filter.add(SuperType.LEGENDARY.getPredicate()); - } - - private static final YouControlPermanentCondition condition = new YouControlPermanentCondition(filter); - public MinasTirith(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.LAND}, ""); this.supertype.add(SuperType.LEGENDARY); // Minas Tirith enters the battlefield tapped unless you control a legendary creature. - this.addAbility(new EntersBattlefieldTappedUnlessAbility(condition).addHint(condition.getHint())); + this.addAbility(new EntersBattlefieldTappedUnlessAbility(YouControlALegendaryCreatureCondition.instance) + .addHint(YouControlALegendaryCreatureCondition.getHint())); // {T}: Add {W}. this.addAbility(new WhiteManaAbility()); diff --git a/Mage.Sets/src/mage/cards/m/MinesOfMoria.java b/Mage.Sets/src/mage/cards/m/MinesOfMoria.java index 6738cdaceda..b940d83cd11 100644 --- a/Mage.Sets/src/mage/cards/m/MinesOfMoria.java +++ b/Mage.Sets/src/mage/cards/m/MinesOfMoria.java @@ -3,7 +3,7 @@ package mage.cards.m; import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTappedUnlessAbility; import mage.abilities.common.SimpleActivatedAbility; -import mage.abilities.condition.common.YouControlPermanentCondition; +import mage.abilities.condition.common.YouControlALegendaryCreatureCondition; import mage.abilities.costs.common.ExileFromGraveCost; import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.mana.ManaCostsImpl; @@ -13,8 +13,6 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SuperType; -import mage.filter.FilterPermanent; -import mage.filter.common.FilterControlledCreaturePermanent; import mage.game.permanent.token.TreasureToken; import mage.target.common.TargetCardInYourGraveyard; @@ -25,21 +23,14 @@ import java.util.UUID; */ public final class MinesOfMoria extends CardImpl { - private static final FilterPermanent filter = new FilterControlledCreaturePermanent("a legendary creature"); - - static { - filter.add(SuperType.LEGENDARY.getPredicate()); - } - - private static final YouControlPermanentCondition condition = new YouControlPermanentCondition(filter); - public MinesOfMoria(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.LAND}, ""); this.supertype.add(SuperType.LEGENDARY); // Mines of Moria enters the battlefield tapped unless you control a legendary creature. - this.addAbility(new EntersBattlefieldTappedUnlessAbility(condition).addHint(condition.getHint())); + this.addAbility(new EntersBattlefieldTappedUnlessAbility(YouControlALegendaryCreatureCondition.instance) + .addHint(YouControlALegendaryCreatureCondition.getHint())); // {T}: Add {R}. this.addAbility(new RedManaAbility()); diff --git a/Mage.Sets/src/mage/cards/p/PriceOfFame.java b/Mage.Sets/src/mage/cards/p/PriceOfFame.java index a05d3bfaebe..ac07b684cf0 100644 --- a/Mage.Sets/src/mage/cards/p/PriceOfFame.java +++ b/Mage.Sets/src/mage/cards/p/PriceOfFame.java @@ -9,10 +9,8 @@ import mage.abilities.effects.keyword.SurveilEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.SuperType; import mage.constants.Zone; -import mage.filter.FilterPermanent; -import mage.filter.common.FilterCreaturePermanent; +import mage.filter.StaticFilters; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -22,14 +20,7 @@ import java.util.UUID; */ public final class PriceOfFame extends CardImpl { - private static final FilterPermanent filter - = new FilterCreaturePermanent("a legendary creature"); - - static { - filter.add(SuperType.LEGENDARY.getPredicate()); - } - - private static final Condition condition = new SourceTargetsPermanentCondition(filter); + private static final Condition condition = new SourceTargetsPermanentCondition(StaticFilters.FILTER_CONTROLLED_CREATURE_LEGENDARY); public PriceOfFame(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{B}"); diff --git a/Mage.Sets/src/mage/cards/r/Rivendell.java b/Mage.Sets/src/mage/cards/r/Rivendell.java index 2f0d377e354..b7903de9c0e 100644 --- a/Mage.Sets/src/mage/cards/r/Rivendell.java +++ b/Mage.Sets/src/mage/cards/r/Rivendell.java @@ -3,7 +3,7 @@ package mage.cards.r; import mage.abilities.Ability; import mage.abilities.common.ActivateIfConditionActivatedAbility; import mage.abilities.common.EntersBattlefieldTappedUnlessAbility; -import mage.abilities.condition.common.YouControlPermanentCondition; +import mage.abilities.condition.common.YouControlALegendaryCreatureCondition; import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.keyword.ScryEffect; @@ -12,8 +12,6 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SuperType; -import mage.filter.FilterPermanent; -import mage.filter.common.FilterControlledCreaturePermanent; import java.util.UUID; @@ -22,28 +20,22 @@ import java.util.UUID; */ public final class Rivendell extends CardImpl { - private static final FilterPermanent filter = new FilterControlledCreaturePermanent("a legendary creature"); - - static { - filter.add(SuperType.LEGENDARY.getPredicate()); - } - - private static final YouControlPermanentCondition condition = new YouControlPermanentCondition(filter); - public Rivendell(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.LAND}, ""); this.supertype.add(SuperType.LEGENDARY); // Rivendell enters the battlefield tapped unless you control a legendary creature. - this.addAbility(new EntersBattlefieldTappedUnlessAbility(condition).addHint(condition.getHint())); + this.addAbility(new EntersBattlefieldTappedUnlessAbility(YouControlALegendaryCreatureCondition.instance) + .addHint(YouControlALegendaryCreatureCondition.getHint())); // {T}: Add {U}. this.addAbility(new BlueManaAbility()); // {1}{U}, {T}: Scry 2. Activate only if you control a legendary creature. Ability ability = new ActivateIfConditionActivatedAbility( - new ScryEffect(2, false), new ManaCostsImpl<>("{1}{U}"), condition + new ScryEffect(2, false), new ManaCostsImpl<>("{1}{U}"), + YouControlALegendaryCreatureCondition.instance ); ability.addCost(new TapSourceCost()); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/t/TheShire.java b/Mage.Sets/src/mage/cards/t/TheShire.java index 1bfbc46d91b..e6744fbc6e1 100644 --- a/Mage.Sets/src/mage/cards/t/TheShire.java +++ b/Mage.Sets/src/mage/cards/t/TheShire.java @@ -3,7 +3,7 @@ package mage.cards.t; import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTappedUnlessAbility; import mage.abilities.common.SimpleActivatedAbility; -import mage.abilities.condition.common.YouControlPermanentCondition; +import mage.abilities.condition.common.YouControlALegendaryCreatureCondition; import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.common.TapTargetCost; import mage.abilities.costs.mana.ManaCostsImpl; @@ -13,9 +13,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SuperType; -import mage.filter.FilterPermanent; import mage.filter.StaticFilters; -import mage.filter.common.FilterControlledCreaturePermanent; import mage.game.permanent.token.FoodToken; import mage.target.common.TargetControlledPermanent; @@ -26,21 +24,14 @@ import java.util.UUID; */ public final class TheShire extends CardImpl { - private static final FilterPermanent filter = new FilterControlledCreaturePermanent("a legendary creature"); - - static { - filter.add(SuperType.LEGENDARY.getPredicate()); - } - - private static final YouControlPermanentCondition condition = new YouControlPermanentCondition(filter); - public TheShire(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.LAND}, ""); this.supertype.add(SuperType.LEGENDARY); // The Shire enters the battlefield tapped unless you control a legendary creature. - this.addAbility(new EntersBattlefieldTappedUnlessAbility(condition).addHint(condition.getHint())); + this.addAbility(new EntersBattlefieldTappedUnlessAbility(YouControlALegendaryCreatureCondition.instance) + .addHint(YouControlALegendaryCreatureCondition.getHint())); // {T}: Add {G}. this.addAbility(new GreenManaAbility()); diff --git a/Mage.Sets/src/mage/sets/FinalFantasyCommander.java b/Mage.Sets/src/mage/sets/FinalFantasyCommander.java index 0e687484c67..3735cf1f758 100644 --- a/Mage.Sets/src/mage/sets/FinalFantasyCommander.java +++ b/Mage.Sets/src/mage/sets/FinalFantasyCommander.java @@ -88,6 +88,7 @@ public final class FinalFantasyCommander extends ExpansionSet { cards.add(new SetCardInfo("Champions from Beyond", 11, Rarity.RARE, mage.cards.c.ChampionsFromBeyond.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Chaos Warp", 291, Rarity.RARE, mage.cards.c.ChaosWarp.class)); cards.add(new SetCardInfo("Chasm Skulker", 262, Rarity.RARE, mage.cards.c.ChasmSkulker.class)); + cards.add(new SetCardInfo("Chocobo Camp", 462, Rarity.RARE, mage.cards.c.ChocoboCamp.class)); cards.add(new SetCardInfo("Chocobo Knights", 102, Rarity.RARE, mage.cards.c.ChocoboKnights.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Chocobo Knights", 12, Rarity.RARE, mage.cards.c.ChocoboKnights.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Choked Estuary", 379, Rarity.RARE, mage.cards.c.ChokedEstuary.class)); diff --git a/Mage/src/main/java/mage/abilities/condition/common/YouControlALegendaryCreatureCondition.java b/Mage/src/main/java/mage/abilities/condition/common/YouControlALegendaryCreatureCondition.java new file mode 100644 index 00000000000..99f509bc1e7 --- /dev/null +++ b/Mage/src/main/java/mage/abilities/condition/common/YouControlALegendaryCreatureCondition.java @@ -0,0 +1,30 @@ +package mage.abilities.condition.common; + +import mage.abilities.Ability; +import mage.abilities.condition.Condition; +import mage.abilities.hint.ConditionHint; +import mage.abilities.hint.Hint; +import mage.filter.StaticFilters; +import mage.game.Game; + +/** + * @author TheElk801 + */ +public enum YouControlALegendaryCreatureCondition implements Condition { + instance; + private static final Hint hint = new ConditionHint(instance); + + public static Hint getHint() { + return hint; + } + + @Override + public boolean apply(Game game, Ability source) { + return game.getBattlefield().contains(StaticFilters.FILTER_CONTROLLED_CREATURE_LEGENDARY, source.getControllerId(), source, game, 1); + } + + @Override + public String toString() { + return "you control a legendary creature"; + } +}