diff --git a/Mage.Sets/src/mage/cards/g/GondGate.java b/Mage.Sets/src/mage/cards/g/GondGate.java index 8949ba5b79a..572361eea6b 100644 --- a/Mage.Sets/src/mage/cards/g/GondGate.java +++ b/Mage.Sets/src/mage/cards/g/GondGate.java @@ -1,19 +1,16 @@ package mage.cards.g; -import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; -import mage.abilities.effects.ReplacementEffectImpl; +import mage.abilities.effects.common.EnterUntappedAllEffect; import mage.abilities.mana.AnyColorLandsProduceManaAbility; import mage.abilities.mana.ColorlessManaAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.*; +import mage.constants.CardType; +import mage.constants.SubType; +import mage.constants.TargetController; import mage.filter.FilterPermanent; import mage.filter.common.FilterControlledPermanent; -import mage.game.Game; -import mage.game.events.EntersTheBattlefieldEvent; -import mage.game.events.GameEvent; -import mage.game.permanent.Permanent; import java.util.UUID; @@ -22,7 +19,8 @@ import java.util.UUID; */ public final class GondGate extends CardImpl { - private static final FilterPermanent filter = new FilterControlledPermanent(SubType.GATE, "Gate"); + private static final FilterPermanent filter = new FilterControlledPermanent(SubType.GATE, "Gates you control"); + private static final FilterPermanent filter2 = new FilterControlledPermanent(SubType.GATE, "Gate"); public GondGate(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.LAND}, ""); @@ -30,13 +28,13 @@ public final class GondGate extends CardImpl { this.subtype.add(SubType.GATE); // Gates you control enter the battlefield untapped. - this.addAbility(new SimpleStaticAbility(new GondGateEffect())); + this.addAbility(new SimpleStaticAbility(new EnterUntappedAllEffect(filter))); // {T}: Add {C}. this.addAbility(new ColorlessManaAbility()); // {T}: Add one mana of any color that a Gate you control could produce. - this.addAbility(new AnyColorLandsProduceManaAbility(TargetController.YOU, true, filter)); + this.addAbility(new AnyColorLandsProduceManaAbility(TargetController.YOU, true, filter2)); } private GondGate(final GondGate card) { @@ -48,52 +46,3 @@ public final class GondGate extends CardImpl { return new GondGate(this); } } - -class GondGateEffect extends ReplacementEffectImpl { - - GondGateEffect() { - super(Duration.WhileOnBattlefield, Outcome.Benefit); - staticText = "Gates you control enter the battlefield untapped"; - } - - private GondGateEffect(final GondGateEffect effect) { - super(effect); - } - - @Override - public boolean replaceEvent(GameEvent event, Ability source, Game game) { - Permanent target = ((EntersTheBattlefieldEvent) event).getTarget(); - if (target != null) { - target.setTapped(false); - } - - return false; - } - - @Override - public boolean checksEventType(GameEvent event, Game game) { - return event.getType() == GameEvent.EventType.ENTERS_THE_BATTLEFIELD; - } - - @Override - public boolean applies(GameEvent event, Ability source, Game game) { - Permanent sourceObject = game.getPermanent(source.getSourceId()); - if (sourceObject == null) { - return false; - } - - Permanent targetObject = ((EntersTheBattlefieldEvent) event).getTarget(); - if (targetObject == null) { - return false; - } - - return !sourceObject.getId().equals(targetObject.getId()) - && targetObject.isControlledBy(source.getControllerId()) - && targetObject.hasSubtype(SubType.GATE, game); - } - - @Override - public GondGateEffect copy() { - return new GondGateEffect(this); - } -} diff --git a/Mage.Sets/src/mage/cards/s/Spelunking.java b/Mage.Sets/src/mage/cards/s/Spelunking.java index 12cf3e1fe55..547eb054d69 100644 --- a/Mage.Sets/src/mage/cards/s/Spelunking.java +++ b/Mage.Sets/src/mage/cards/s/Spelunking.java @@ -4,16 +4,17 @@ import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.OneShotEffect; -import mage.abilities.effects.ReplacementEffectImpl; +import mage.abilities.effects.common.DrawCardSourceControllerEffect; +import mage.abilities.effects.common.EnterUntappedAllEffect; import mage.cards.Card; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.*; +import mage.constants.CardType; +import mage.constants.Outcome; +import mage.constants.SubType; +import mage.constants.Zone; import mage.filter.StaticFilters; import mage.game.Game; -import mage.game.events.EntersTheBattlefieldEvent; -import mage.game.events.GameEvent; -import mage.game.permanent.Permanent; import mage.players.Player; import mage.target.common.TargetCardInHand; @@ -28,10 +29,12 @@ public final class Spelunking extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{G}"); // When Spelunking enters the battlefield, draw a card, then you may put a land card from your hand onto the battlefield. If you put a Cave onto the battlefield this way, you gain 4 life. - this.addAbility(new EntersBattlefieldTriggeredAbility(new SpelunkingEffect())); + Ability ability = new EntersBattlefieldTriggeredAbility(new DrawCardSourceControllerEffect(1)); + ability.addEffect(new SpelunkingEffect()); + this.addAbility(ability); // Lands you control enter the battlefield untapped. - this.addAbility(new SimpleStaticAbility(new SpelunkingReplacementEffect())); + this.addAbility(new SimpleStaticAbility(new EnterUntappedAllEffect(StaticFilters.FILTER_CONTROLLED_PERMANENT_LANDS))); } private Spelunking(final Spelunking card) { @@ -48,7 +51,7 @@ class SpelunkingEffect extends OneShotEffect { SpelunkingEffect() { super(Outcome.Benefit); - staticText = "draw a card, then you may put a land card from your hand onto the battlefield. " + staticText = ", then you may put a land card from your hand onto the battlefield. " + "If you put a Cave onto the battlefield this way, you gain 4 life"; } @@ -67,75 +70,16 @@ class SpelunkingEffect extends OneShotEffect { if (controller == null) { return false; } - - // draw a card - controller.drawCards(1, source, game); - - // you may put a land card from your hand onto the battlefield TargetCardInHand target = new TargetCardInHand(0, 1, StaticFilters.FILTER_CARD_LAND); - if (controller.choose(Outcome.PutLandInPlay, target, source, game)) { - Card landInHand = game.getCard(target.getFirstTarget()); - if (landInHand != null) { - controller.moveCards(landInHand, Zone.BATTLEFIELD, source, game); - if (landInHand.hasSubtype(SubType.CAVE, game)) { - // If you put a Cave onto the battlefield this way, you gain 4 life - controller.gainLife(4, game, source); - } - } + controller.choose(Outcome.PutLandInPlay, target, source, game); + Card landInHand = game.getCard(target.getFirstTarget()); + if (landInHand == null) { + return false; + } + controller.moveCards(landInHand, Zone.BATTLEFIELD, source, game); + if (landInHand.hasSubtype(SubType.CAVE, game)) { + controller.gainLife(4, game, source); } - return true; } - -} - -/** - * Inspired by {@link mage.cards.g.GondGate} - */ -class SpelunkingReplacementEffect extends ReplacementEffectImpl { - - SpelunkingReplacementEffect() { - super(Duration.WhileOnBattlefield, Outcome.Benefit); - staticText = "Lands you control enter the battlefield untapped"; - } - - private SpelunkingReplacementEffect(final SpelunkingReplacementEffect effect) { - super(effect); - } - - @Override - public boolean replaceEvent(GameEvent event, Ability source, Game game) { - Permanent target = ((EntersTheBattlefieldEvent) event).getTarget(); - if (target != null) { - target.setTapped(false); - } - - return false; - } - - @Override - public boolean checksEventType(GameEvent event, Game game) { - return event.getType() == GameEvent.EventType.ENTERS_THE_BATTLEFIELD; - } - - @Override - public boolean applies(GameEvent event, Ability source, Game game) { - Permanent sourceObject = game.getPermanent(source.getSourceId()); - if (sourceObject == null) { - return false; - } - - Permanent targetObject = ((EntersTheBattlefieldEvent) event).getTarget(); - if (targetObject == null) { - return false; - } - - return !sourceObject.getId().equals(targetObject.getId()) - && targetObject.isControlledBy(source.getControllerId()); - } - - @Override - public SpelunkingReplacementEffect copy() { - return new SpelunkingReplacementEffect(this); - } } diff --git a/Mage.Sets/src/mage/cards/t/TheWanderingMinstrel.java b/Mage.Sets/src/mage/cards/t/TheWanderingMinstrel.java new file mode 100644 index 00000000000..5ebdc0313d4 --- /dev/null +++ b/Mage.Sets/src/mage/cards/t/TheWanderingMinstrel.java @@ -0,0 +1,74 @@ +package mage.cards.t; + +import mage.MageInt; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.condition.Condition; +import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.dynamicvalue.DynamicValue; +import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; +import mage.abilities.effects.common.CreateTokenEffect; +import mage.abilities.effects.common.EnterUntappedAllEffect; +import mage.abilities.effects.common.continuous.BoostControlledEffect; +import mage.abilities.hint.Hint; +import mage.abilities.hint.ValueHint; +import mage.abilities.triggers.BeginningOfCombatTriggeredAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.*; +import mage.filter.StaticFilters; +import mage.filter.common.FilterControlledPermanent; +import mage.game.permanent.token.ElementalAllColorsToken; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class TheWanderingMinstrel extends CardImpl { + + private static final Condition condition = new PermanentsOnTheBattlefieldCondition( + new FilterControlledPermanent(SubType.TOWN, "you control five or more Towns"), + ComparisonType.MORE_THAN, 4 + ); + private static final DynamicValue xValue = new PermanentsOnBattlefieldCount( + new FilterControlledPermanent(SubType.TOWN, "Towns you control"), null + ); + private static final Hint hint = new ValueHint("Towns you control", xValue); + + public TheWanderingMinstrel(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{G}{U}"); + + this.supertype.add(SuperType.LEGENDARY); + this.subtype.add(SubType.HUMAN); + this.subtype.add(SubType.BARD); + this.power = new MageInt(1); + this.toughness = new MageInt(3); + + // Lands you control enter untapped. + this.addAbility(new SimpleStaticAbility(new EnterUntappedAllEffect(StaticFilters.FILTER_CONTROLLED_PERMANENT_LANDS))); + + // The Minstrel's Ballad -- At the beginning of combat on your turn, if you control five or more Towns, create a 2/2 Elemental creature token that's all colors. + this.addAbility(new BeginningOfCombatTriggeredAbility( + new CreateTokenEffect(new ElementalAllColorsToken()) + ).withInterveningIf(condition)); + + // {3}{W}{U}{B}{R}{G}: Other creatures you control get +X/+X until end of turn, where X is the number of Towns you control. + this.addAbility(new SimpleActivatedAbility( + new BoostControlledEffect( + xValue, xValue, Duration.EndOfTurn, + StaticFilters.FILTER_PERMANENT_CREATURES, true + ), new ManaCostsImpl<>("{3}{W}{U}{B}{R}{G}") + ).addHint(hint)); + } + + private TheWanderingMinstrel(final TheWanderingMinstrel card) { + super(card); + } + + @Override + public TheWanderingMinstrel copy() { + return new TheWanderingMinstrel(this); + } +} diff --git a/Mage.Sets/src/mage/sets/FinalFantasy.java b/Mage.Sets/src/mage/sets/FinalFantasy.java index 5093e92081f..29eb28f3529 100644 --- a/Mage.Sets/src/mage/sets/FinalFantasy.java +++ b/Mage.Sets/src/mage/sets/FinalFantasy.java @@ -554,6 +554,10 @@ public final class FinalFantasy extends ExpansionSet { cards.add(new SetCardInfo("The Masamune", 353, Rarity.RARE, mage.cards.t.TheMasamune.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("The Prima Vista", 64, Rarity.UNCOMMON, mage.cards.t.ThePrimaVista.class)); cards.add(new SetCardInfo("The Regalia", 267, Rarity.RARE, mage.cards.t.TheRegalia.class)); + cards.add(new SetCardInfo("The Wandering Minstrel", 249, Rarity.RARE, mage.cards.t.TheWanderingMinstrel.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("The Wandering Minstrel", 403, Rarity.RARE, mage.cards.t.TheWanderingMinstrel.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("The Wandering Minstrel", 515, Rarity.RARE, mage.cards.t.TheWanderingMinstrel.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("The Wandering Minstrel", 548, Rarity.RARE, mage.cards.t.TheWanderingMinstrel.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("The Water Crystal", 333, Rarity.RARE, mage.cards.t.TheWaterCrystal.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("The Water Crystal", 85, Rarity.RARE, mage.cards.t.TheWaterCrystal.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("The Wind Crystal", 330, Rarity.RARE, mage.cards.t.TheWindCrystal.class, NON_FULL_USE_VARIOUS)); diff --git a/Mage/src/main/java/mage/abilities/effects/common/EnterUntappedAllEffect.java b/Mage/src/main/java/mage/abilities/effects/common/EnterUntappedAllEffect.java new file mode 100644 index 00000000000..966088bbaa9 --- /dev/null +++ b/Mage/src/main/java/mage/abilities/effects/common/EnterUntappedAllEffect.java @@ -0,0 +1,52 @@ +package mage.abilities.effects.common; + +import mage.abilities.Ability; +import mage.abilities.effects.ReplacementEffectImpl; +import mage.constants.Duration; +import mage.constants.Outcome; +import mage.filter.FilterPermanent; +import mage.game.Game; +import mage.game.events.EntersTheBattlefieldEvent; +import mage.game.events.GameEvent; +import mage.game.permanent.Permanent; + +public class EnterUntappedAllEffect extends ReplacementEffectImpl { + + private final FilterPermanent filter; + + public EnterUntappedAllEffect(FilterPermanent filter) { + super(Duration.WhileOnBattlefield, Outcome.Benefit); + this.filter = filter; + staticText = filter.getMessage() + " enter untapped"; + } + + private EnterUntappedAllEffect(final EnterUntappedAllEffect effect) { + super(effect); + this.filter = effect.filter; + } + + @Override + public EnterUntappedAllEffect copy() { + return new EnterUntappedAllEffect(this); + } + + @Override + public boolean replaceEvent(GameEvent event, Ability source, Game game) { + Permanent target = ((EntersTheBattlefieldEvent) event).getTarget(); + if (target != null) { + target.setTapped(false); + } + return false; + } + + @Override + public boolean checksEventType(GameEvent event, Game game) { + return event.getType() == GameEvent.EventType.ENTERS_THE_BATTLEFIELD; + } + + @Override + public boolean applies(GameEvent event, Ability source, Game game) { + Permanent targetObject = ((EntersTheBattlefieldEvent) event).getTarget(); + return targetObject != null && filter.match(targetObject, source.getControllerId(), source, game); + } +} diff --git a/Mage/src/main/java/mage/game/permanent/token/ElementalAllColorsToken.java b/Mage/src/main/java/mage/game/permanent/token/ElementalAllColorsToken.java new file mode 100644 index 00000000000..0d42f387201 --- /dev/null +++ b/Mage/src/main/java/mage/game/permanent/token/ElementalAllColorsToken.java @@ -0,0 +1,33 @@ +package mage.game.permanent.token; + +import mage.MageInt; +import mage.constants.CardType; +import mage.constants.SubType; + +/** + * @author TheElk801 + */ +public final class ElementalAllColorsToken extends TokenImpl { + + public ElementalAllColorsToken() { + super("Elemental Token", "2/2 Elemental creature token that's all colors"); + cardType.add(CardType.CREATURE); + color.setWhite(true); + color.setBlue(true); + color.setBlack(true); + color.setRed(true); + color.setGreen(true); + subtype.add(SubType.ELEMENTAL); + power = new MageInt(2); + toughness = new MageInt(2); + } + + private ElementalAllColorsToken(final ElementalAllColorsToken token) { + super(token); + } + + @Override + public ElementalAllColorsToken copy() { + return new ElementalAllColorsToken(this); + } +} diff --git a/Utils/mtg-cards-data.txt b/Utils/mtg-cards-data.txt index 0b193d98713..2b1f06e7c48 100644 --- a/Utils/mtg-cards-data.txt +++ b/Utils/mtg-cards-data.txt @@ -57894,6 +57894,7 @@ Tidus, Blitzball Star|Final Fantasy|246|U|{1}{W}{U}|Legendary Creature - Human W Ultimecia, Time Sorceress|Final Fantasy|247|U|{3}{U}{B}|Legendary Creature - Human Warlock|4|5|Whenever Ultimecia enters or attacks, surveil 2.$At the beginning of your end step, you may pay {4}{U}{U}{B}{B} and exile eight cards from your graveyard. If you do, transform Ultimecia.| Ultimecia, Omnipotent|Final Fantasy|247|U||Legendary Creature - Nightmare Warlock|7|7|Menace$Time Compression -- When this creature transforms into Ultimecia, Omnipotent, take an extra turn after this one.| Vivi Ornitier|Final Fantasy|248|M|{1}{U}{R}|Legendary Creature - Wizard|0|3|{0}: Add X mana in any combination of {U} and/or {R}, where X is Vivi Ornitier's power. Activate only during your turn and only once each turn.$Whenever you cast a noncreature spell, put a +1/+1 counter on Vivi Ornitier and it deals 1 damage to each opponent.| +The Wandering Minstrel|Final Fantasy|249|R|{G}{U}|Legendary Creature - Human Bard|1|3|Lands you control enter untapped.$The Minstrel's Ballad -- At the beginning of combat on your turn, if you control five or more Towns, create a 2/2 Elemental creature$token that's all colors.${3}{W}{U}{B}{R}{G}: Other creatures you control get +X/+X until end of turn, where X is the number of Towns you control.| Yuna, Hope of Spira|Final Fantasy|250|M|{3}{G}{W}|Legendary Creature - Human Cleric|3|5|During your turn, Yuna and enchantment creatures you control have trample, lifelink, and ward {2}.$At the beginning of your end step, return up to one target enchantment card from your graveyard to the battlefield with a finality counter on it.| Zidane, Tantalus Thief|Final Fantasy|251|U|{3}{R}{W}|Legendary Creature - Human Mutant Scout|3|3|When Zidane enters, gain control of target creature an opponent controls until end of turn. Untap it. It gains lifelink and haste until end of turn.$Whenever an opponent gains control of a permanent from you, create a Treasure token.| Adventurer's Airship|Final Fantasy|252|C|{3}|Artifact - Vehicle|3|2|Flying$When this Vehicle attacks, draw a card then discard a card.$Crew 2| @@ -58074,6 +58075,7 @@ Trance Kuja, Fate Defied|Final Fantasy|399|R||Legendary Creature - Avatar Wizard Lightning, Army of One|Final Fantasy|400|M|{1}{R}{W}|Legendary Creature - Human Soldier|3|2|First strike, trample, lifelink$Stagger -- Whenever Lightning deals combat damage to a player, until your next turn, if a source would deal damage to that player or a permanent that player controls, it deals double that damage instead.| Noctis, Prince of Lucis|Final Fantasy|401|R|{1}{W}{U}{B}|Legendary Creature - Human Noble|4|3|Lifelink$You may cast artifact spells from your graveyard by paying 3 life in addition to paying their other costs. If you cast a spell this way, that artifact enters with a finality counter on it.| Squall, SeeD Mercenary|Final Fantasy|402|R|{2}{W}{B}|Legendary Creature - Human Knight Mercenary|3|4|Rough Divide -- Whenever a creature you control attacks alone, it gains double strike until end of turn.$Whenever Squall deals combat damage to a player, return target permanent card with mana value 3 or less from your graveyard to the battlefield.| +The Wandering Minstrel|Final Fantasy|403|R|{G}{U}|Legendary Creature - Human Bard|1|3|Lands you control enter untapped.$The Minstrel's Ballad -- At the beginning of combat on your turn, if you control five or more Towns, create a 2/2 Elemental creature$token that's all colors.${3}{W}{U}{B}{R}{G}: Other creatures you control get +X/+X until end of turn, where X is the number of Towns you control.| Yuna, Hope of Spira|Final Fantasy|404|M|{3}{G}{W}|Legendary Creature - Human Cleric|3|5|During your turn, Yuna and enchantment creatures you control have trample, lifelink, and ward {2}.$At the beginning of your end step, return up to one target enchantment card from your graveyard to the battlefield with a finality counter on it.| Zidane, Tantalus Thief|Final Fantasy|405|U|{3}{R}{W}|Legendary Creature - Human Mutant Scout|3|3|When Zidane enters, gain control of target creature an opponent controls until end of turn. Untap it. It gains lifelink and haste until end of turn.$Whenever an opponent gains control of a permanent from you, create a Treasure token.| Traveling Chocobo|Final Fantasy|406|M|{2}{G}|Creature - Bird|3|2|You may look at the top card of your library any time.$You may play lands and cast Bird spells from the top of your library.$If a land or Bird you control entering the battlefield causes a triggered ability of a permanent you control to trigger, that ability triggers an additional time.| @@ -58198,6 +58200,7 @@ Tidus, Blitzball Star|Final Fantasy|512|U|{1}{W}{U}|Legendary Creature - Human W Ultimecia, Time Sorceress|Final Fantasy|513|U|{3}{U}{B}|Legendary Creature - Human Warlock|4|5|Whenever Ultimecia enters or attacks, surveil 2.$At the beginning of your end step, you may pay {4}{U}{U}{B}{B} and exile eight cards from your graveyard. If you do, transform Ultimecia.| Ultimecia, Omnipotent|Final Fantasy|513|U||Legendary Creature - Nightmare Warlock|7|7|Menace$Time Compression -- When this creature transforms into Ultimecia, Omnipotent, take an extra turn after this one.| Vivi Ornitier|Final Fantasy|514|M|{1}{U}{R}|Legendary Creature - Wizard|0|3|{0}: Add X mana in any combination of {U} and/or {R}, where X is Vivi Ornitier's power. Activate only during your turn and only once each turn.$Whenever you cast a noncreature spell, put a +1/+1 counter on Vivi Ornitier and it deals 1 damage to each opponent.| +The Wandering Minstrel|Final Fantasy|515|R|{G}{U}|Legendary Creature - Human Bard|1|3|Lands you control enter untapped.$The Minstrel's Ballad -- At the beginning of combat on your turn, if you control five or more Towns, create a 2/2 Elemental creature$token that's all colors.${3}{W}{U}{B}{R}{G}: Other creatures you control get +X/+X until end of turn, where X is the number of Towns you control.| Xande, Dark Mage|Final Fantasy|516|R|{2}{U}{B}|Legendary Creature - Human Wizard|3|3|Menace$Xande gets +1/+1 for each noncreature, nonland card in your graveyard.| Yuna, Hope of Spira|Final Fantasy|517|M|{3}{G}{W}|Legendary Creature - Human Cleric|3|5|During your turn, Yuna and enchantment creatures you control have trample, lifelink, and ward {2}.$At the beginning of your end step, return up to one target enchantment card from your graveyard to the battlefield with a finality counter on it.| Zidane, Tantalus Thief|Final Fantasy|518|U|{3}{R}{W}|Legendary Creature - Human Mutant Scout|3|3|When Zidane enters, gain control of target creature an opponent controls until end of turn. Untap it. It gains lifelink and haste until end of turn.$Whenever an opponent gains control of a permanent from you, create a Treasure token.| @@ -58241,6 +58244,7 @@ Trance Kuja, Fate Defied|Final Fantasy|544|R||Legendary Creature - Avatar Wizard Lightning, Army of One|Final Fantasy|545|M|{1}{R}{W}|Legendary Creature - Human Soldier|3|2|First strike, trample, lifelink$Stagger -- Whenever Lightning deals combat damage to a player, until your next turn, if a source would deal damage to that player or a permanent that player controls, it deals double that damage instead.| Noctis, Prince of Lucis|Final Fantasy|546|R|{1}{W}{U}{B}|Legendary Creature - Human Noble|4|3|Lifelink$You may cast artifact spells from your graveyard by paying 3 life in addition to paying their other costs. If you cast a spell this way, that artifact enters with a finality counter on it.| Squall, SeeD Mercenary|Final Fantasy|547|R|{2}{W}{B}|Legendary Creature - Human Knight Mercenary|3|4|Rough Divide -- Whenever a creature you control attacks alone, it gains double strike until end of turn.$Whenever Squall deals combat damage to a player, return target permanent card with mana value 3 or less from your graveyard to the battlefield.| +The Wandering Minstrel|Final Fantasy|548|R|{G}{U}|Legendary Creature - Human Bard|1|3|Lands you control enter untapped.$The Minstrel's Ballad -- At the beginning of combat on your turn, if you control five or more Towns, create a 2/2 Elemental creature$token that's all colors.${3}{W}{U}{B}{R}{G}: Other creatures you control get +X/+X until end of turn, where X is the number of Towns you control.| Yuna, Hope of Spira|Final Fantasy|549|M|{3}{G}{W}|Legendary Creature - Human Cleric|3|5|During your turn, Yuna and enchantment creatures you control have trample, lifelink, and ward {2}.$At the beginning of your end step, return up to one target enchantment card from your graveyard to the battlefield with a finality counter on it.| Zidane, Tantalus Thief|Final Fantasy|550|U|{3}{R}{W}|Legendary Creature - Human Mutant Scout|3|3|When Zidane enters, gain control of target creature an opponent controls until end of turn. Untap it. It gains lifelink and haste until end of turn.$Whenever an opponent gains control of a permanent from you, create a Treasure token.| Traveling Chocobo|Final Fantasy|551|M|{2}{G}|Creature - Bird|3|2|You may look at the top card of your library any time.$You may play lands and cast Bird spells from the top of your library.$If a land or Bird you control entering the battlefield causes a triggered ability of a permanent you control to trigger, that ability triggers an additional time.|