[FIN] Implement Cid, Timeless Artificer

This commit is contained in:
theelk801 2025-05-10 18:04:51 -04:00
parent 54d7401bd6
commit 6533e2b03c
4 changed files with 85 additions and 0 deletions

View file

@ -0,0 +1,82 @@
package mage.cards.c;
import mage.MageInt;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.dynamicvalue.AdditiveDynamicValue;
import mage.abilities.dynamicvalue.DynamicValue;
import mage.abilities.dynamicvalue.common.CardsInControllerGraveyardCount;
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
import mage.abilities.effects.common.InfoEffect;
import mage.abilities.effects.common.continuous.BoostControlledEffect;
import mage.abilities.hint.Hint;
import mage.abilities.hint.ValueHint;
import mage.abilities.keyword.CyclingAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.constants.SuperType;
import mage.filter.FilterCard;
import mage.filter.common.FilterControlledPermanent;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.Predicates;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class CidTimelessArtificer extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
private static final FilterCard filter2 = new FilterCard();
static {
filter.add(Predicates.or(
CardType.ARTIFACT.getPredicate(),
SubType.HERO.getPredicate()
));
filter2.add(SubType.ARTIFICER.getPredicate());
}
private static final DynamicValue xValue = new AdditiveDynamicValue(
new PermanentsOnBattlefieldCount(new FilterControlledPermanent(SubType.ARTIFICER)),
new CardsInControllerGraveyardCount(filter2)
);
private static final Hint hint = new ValueHint(
"Artificers you control and Artificer cards in your graveyard", xValue
);
public CidTimelessArtificer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}{U}");
this.supertype.add(SuperType.LEGENDARY);
this.subtype.add(SubType.HUMAN);
this.subtype.add(SubType.ARTIFICER);
this.power = new MageInt(4);
this.toughness = new MageInt(4);
// Artifact creatures and Heroes you control get +1/+1 for each Artificer you control and each Artificer card in your graveyard.
this.addAbility(new SimpleStaticAbility(new BoostControlledEffect(
xValue, xValue, Duration.WhileOnBattlefield, filter, false
).setText("artifact creatures and Heroes you control get +1/+1 " +
"for each Artificer you control and each Artificer card in your graveyard")).addHint(hint));
// A deck can have any number of cards named Cid, Timeless Artificer.
this.getSpellAbility().addEffect(new InfoEffect("a deck can have any number of cards named Cid, Timeless Artificer"));
// Cycling {W}{U}
this.addAbility(new CyclingAbility(new ManaCostsImpl<>("{W}{U}")));
}
private CidTimelessArtificer(final CidTimelessArtificer card) {
super(card);
}
@Override
public CidTimelessArtificer copy() {
return new CidTimelessArtificer(this);
}
}

View file

@ -23,6 +23,7 @@ public final class FinalFantasy extends ExpansionSet {
cards.add(new SetCardInfo("Adventurer's Inn", 271, Rarity.COMMON, mage.cards.a.AdventurersInn.class));
cards.add(new SetCardInfo("Black Mage's Rod", 90, Rarity.COMMON, mage.cards.b.BlackMagesRod.class));
cards.add(new SetCardInfo("Chaos, the Endless", 221, Rarity.UNCOMMON, mage.cards.c.ChaosTheEndless.class));
cards.add(new SetCardInfo("Cid, Timeless Artificer", 216, Rarity.UNCOMMON, mage.cards.c.CidTimelessArtificer.class));
cards.add(new SetCardInfo("Cloud, Planet's Champion", 552, Rarity.MYTHIC, mage.cards.c.CloudPlanetsChampion.class));
cards.add(new SetCardInfo("Commune with Beavers", 102, Rarity.COMMON, mage.cards.c.CommuneWithBeavers.class));
cards.add(new SetCardInfo("Cooking Campsite", 31, Rarity.UNCOMMON, mage.cards.c.CookingCampsite.class));

View file

@ -50,6 +50,7 @@ public abstract class DeckValidator implements Serializable {
maxCopiesMap.put("Templar Knight", Integer.MAX_VALUE);
maxCopiesMap.put("Hare Apparent", Integer.MAX_VALUE);
maxCopiesMap.put("Tempest Hawk", Integer.MAX_VALUE);
maxCopiesMap.put("Cid, Timeless Artificer", Integer.MAX_VALUE);
maxCopiesMap.put("Once More with Feeling", 1);
maxCopiesMap.put("Seven Dwarves", 7);
maxCopiesMap.put("Nazgul", 9);

View file

@ -57198,6 +57198,7 @@ Shinryu, Transcendent Rival|Final Fantasy|127|R||Legendary Creature - Human Nobl
Zell Dincht|Final Fantasy|170|R|{2}{R}|Legendary Creature - Human Monk|0|3|You may play an additional land on each of your turns.$Zell Dincht gets +1/+0 for each land you control.$At the beginning of your end step, return a land you control to its owner's hand.|
Jumbo Cactuar|Final Fantasy|191|R|{5}{G}{G}|Creature - Plant|1|7|10,000 Needles -- Whenever this creature attacks, it gets +9999/+0 until end of turn.|
Sazh's Chocobo|Final Fantasy|200|U|{G}|Creature - Bird|0|1|Landfall -- Whenever a land you control enters, put a +1/+1 counter on this creature.|
Cid, Timeless Artificer|Final Fantasy|216|U|{2}{W}{U}|Legendary Creature - Human Artificer|4|4|Artifact creatures and Heroes you control get +1/+1 for each Artificer you control and each Artificer card in your graveyard.$A deck can have any number of cards named Cid, Timeless Artificer.$Cycling {W}{U}|
Emet-Selch, Unsundered|Final Fantasy|218|M|{1}{U}{B}|Legendary Creature - Elder Wizard|2|4|Vigilance$Whenever Emet-Selch enters or attacks, draw a card, then discard a card.$At the beginning of your upkeep, if there are fourteen or more cards in your graveyard, you may transform Emet-Selch.|
Hades, Sorcerer of Eld|Final Fantasy|218|M||Legendary Creature - Avatar|6|6|Vigilance$Echo of the Lost -- During your turn, you may play cards from your graveyard.$If a card or token would be put into your graveyard from anywhere, exile it instead.|
Garland, Knight of Cornelia|Final Fantasy|221|U|{B}{R}|Legendary Creature - Human Knight|3|2|Whenever you cast a noncreature spell, surveil 1.${3}{B}{B}{R}{R}: Return this card from your graveyard to the battlefield transformed. Activate only as a sorcery.|