[FIN] Implement The Wandering Minstrel

This commit is contained in:
theelk801 2025-05-29 11:37:16 -04:00
parent 1b757a9e16
commit fe9e7d3e60
7 changed files with 194 additions and 134 deletions

View file

@ -1,19 +1,16 @@
package mage.cards.g; package mage.cards.g;
import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility; 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.AnyColorLandsProduceManaAbility;
import mage.abilities.mana.ColorlessManaAbility; import mage.abilities.mana.ColorlessManaAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; 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.FilterPermanent;
import mage.filter.common.FilterControlledPermanent; 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; import java.util.UUID;
@ -22,7 +19,8 @@ import java.util.UUID;
*/ */
public final class GondGate extends CardImpl { 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) { public GondGate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, ""); super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
@ -30,13 +28,13 @@ public final class GondGate extends CardImpl {
this.subtype.add(SubType.GATE); this.subtype.add(SubType.GATE);
// Gates you control enter the battlefield untapped. // Gates you control enter the battlefield untapped.
this.addAbility(new SimpleStaticAbility(new GondGateEffect())); this.addAbility(new SimpleStaticAbility(new EnterUntappedAllEffect(filter)));
// {T}: Add {C}. // {T}: Add {C}.
this.addAbility(new ColorlessManaAbility()); this.addAbility(new ColorlessManaAbility());
// {T}: Add one mana of any color that a Gate you control could produce. // {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) { private GondGate(final GondGate card) {
@ -48,52 +46,3 @@ public final class GondGate extends CardImpl {
return new GondGate(this); 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);
}
}

View file

@ -4,16 +4,17 @@ import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.OneShotEffect; 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.Card;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; 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.filter.StaticFilters;
import mage.game.Game; 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.players.Player;
import mage.target.common.TargetCardInHand; import mage.target.common.TargetCardInHand;
@ -28,10 +29,12 @@ public final class Spelunking extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{G}"); 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. // 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. // 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) { private Spelunking(final Spelunking card) {
@ -48,7 +51,7 @@ class SpelunkingEffect extends OneShotEffect {
SpelunkingEffect() { SpelunkingEffect() {
super(Outcome.Benefit); 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"; + "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) { if (controller == null) {
return false; 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); TargetCardInHand target = new TargetCardInHand(0, 1, StaticFilters.FILTER_CARD_LAND);
if (controller.choose(Outcome.PutLandInPlay, target, source, game)) { controller.choose(Outcome.PutLandInPlay, target, source, game);
Card landInHand = game.getCard(target.getFirstTarget()); Card landInHand = game.getCard(target.getFirstTarget());
if (landInHand != null) { if (landInHand == null) {
return false;
}
controller.moveCards(landInHand, Zone.BATTLEFIELD, source, game); controller.moveCards(landInHand, Zone.BATTLEFIELD, source, game);
if (landInHand.hasSubtype(SubType.CAVE, 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.gainLife(4, game, source);
} }
}
}
return true; 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);
}
} }

View file

@ -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);
}
}

View file

@ -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 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 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 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", 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 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)); cards.add(new SetCardInfo("The Wind Crystal", 330, Rarity.RARE, mage.cards.t.TheWindCrystal.class, NON_FULL_USE_VARIOUS));

View file

@ -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);
}
}

View file

@ -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);
}
}

View file

@ -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, 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.| 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.| 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.| 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.| 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| 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.| 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.| 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.| 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.| 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.| 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.| 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, 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.| 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.| 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.| 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.| 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.| 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.| 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.| 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.| 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.| 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.| 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.| 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.|