[DFT] Implement Valor's Flagship

This commit is contained in:
theelk801 2025-01-27 12:44:04 -05:00
parent 13adabd169
commit 3a479073e9
2 changed files with 105 additions and 0 deletions

View file

@ -0,0 +1,104 @@
package mage.cards.v;
import mage.MageInt;
import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.keyword.*;
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.game.Game;
import mage.game.events.GameEvent;
import mage.game.permanent.token.PilotSaddleCrewToken;
import mage.game.stack.StackObject;
import mage.util.CardUtil;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class ValorsFlagship extends CardImpl {
public ValorsFlagship(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}{W}{W}{W}");
this.supertype.add(SuperType.LEGENDARY);
this.subtype.add(SubType.VEHICLE);
this.power = new MageInt(7);
this.toughness = new MageInt(7);
// Flying
this.addAbility(FlyingAbility.getInstance());
// First strike
this.addAbility(FirstStrikeAbility.getInstance());
// Lifelink
this.addAbility(LifelinkAbility.getInstance());
// Crew 3
this.addAbility(new CrewAbility(3));
// Cycling {X}{2}{W}
this.addAbility(new CyclingAbility(new ManaCostsImpl<>("{X}{2}{W}")));
// When you cycle this card, create X 1/1 colorless Pilot creature tokens with "This token saddles Mounts and crews Vehicles as though its power were 2 greater."
this.addAbility(new ValorsFlagshipTriggeredAbility());
}
private ValorsFlagship(final ValorsFlagship card) {
super(card);
}
@Override
public ValorsFlagship copy() {
return new ValorsFlagship(this);
}
}
class ValorsFlagshipTriggeredAbility extends TriggeredAbilityImpl {
ValorsFlagshipTriggeredAbility() {
super(Zone.ALL, null);
}
private ValorsFlagshipTriggeredAbility(final ValorsFlagshipTriggeredAbility ability) {
super(ability);
}
@Override
public ValorsFlagshipTriggeredAbility copy() {
return new ValorsFlagshipTriggeredAbility(this);
}
@Override
public boolean checkEventType(GameEvent event, Game game) {
return event.getType() == GameEvent.EventType.ACTIVATED_ABILITY;
}
@Override
public boolean checkTrigger(GameEvent event, Game game) {
if (!event.getSourceId().equals(this.getSourceId())) {
return false;
}
StackObject object = game.getStack().getStackObject(event.getSourceId());
if (object == null || !(object.getStackAbility() instanceof CyclingAbility)) {
return false;
}
this.getEffects().clear();
int amount = CardUtil.getSourceCostsTag(game, object.getStackAbility(), "X", 0);
this.addEffect(new CreateTokenEffect(new PilotSaddleCrewToken(), amount));
return true;
}
@Override
public String getRule() {
return "When you cycle this card, create X 1/1 colorless Pilot creature tokens with " +
"\"This token saddles Mounts and crews Vehicles as though its power were 2 greater.\"";
}
}

View file

@ -115,6 +115,7 @@ public final class Aetherdrift extends ExpansionSet {
cards.add(new SetCardInfo("Tranquil Cove", 267, Rarity.COMMON, mage.cards.t.TranquilCove.class));
cards.add(new SetCardInfo("Transit Mage", 70, Rarity.UNCOMMON, mage.cards.t.TransitMage.class));
cards.add(new SetCardInfo("Unswerving Sloth", 34, Rarity.UNCOMMON, mage.cards.u.UnswervingSloth.class));
cards.add(new SetCardInfo("Valor's Flagship", 35, Rarity.MYTHIC, mage.cards.v.ValorsFlagship.class));
cards.add(new SetCardInfo("Veloheart Bike", 184, Rarity.COMMON, mage.cards.v.VeloheartBike.class));
cards.add(new SetCardInfo("Venomsac Lagac", 185, Rarity.COMMON, mage.cards.v.VenomsacLagac.class));
cards.add(new SetCardInfo("Wastewood Verge", 268, Rarity.RARE, mage.cards.w.WastewoodVerge.class));