diff --git a/Mage.Sets/src/mage/cards/f/FireNavyTrebuchet.java b/Mage.Sets/src/mage/cards/f/FireNavyTrebuchet.java new file mode 100644 index 00000000000..14384d8587e --- /dev/null +++ b/Mage.Sets/src/mage/cards/f/FireNavyTrebuchet.java @@ -0,0 +1,83 @@ +package mage.cards.f; + +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.AttacksWithCreaturesTriggeredAbility; +import mage.abilities.common.delayed.AtTheBeginOfNextEndStepDelayedTriggeredAbility; +import mage.abilities.effects.OneShotEffect; +import mage.abilities.effects.common.SacrificeTargetEffect; +import mage.abilities.keyword.DefenderAbility; +import mage.abilities.keyword.ReachAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.Outcome; +import mage.constants.SubType; +import mage.game.Game; +import mage.game.permanent.token.BallisticBoulder; +import mage.game.permanent.token.Token; +import mage.target.targetpointer.FixedTargets; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class FireNavyTrebuchet extends CardImpl { + + public FireNavyTrebuchet(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{2}{B}"); + + this.subtype.add(SubType.WALL); + this.power = new MageInt(0); + this.toughness = new MageInt(4); + + // Defender + this.addAbility(DefenderAbility.getInstance()); + + // Reach + this.addAbility(ReachAbility.getInstance()); + + // Whenever you attack, create a 2/1 colorless Construct artifact creature token with flying named Ballistic Boulder that's tapped and attacking. Sacrifice that token at the beginning of the next end step. + this.addAbility(new AttacksWithCreaturesTriggeredAbility(new FireNavyTrebuchetEffect(), 1)); + } + + private FireNavyTrebuchet(final FireNavyTrebuchet card) { + super(card); + } + + @Override + public FireNavyTrebuchet copy() { + return new FireNavyTrebuchet(this); + } +} + +class FireNavyTrebuchetEffect extends OneShotEffect { + + FireNavyTrebuchetEffect() { + super(Outcome.Benefit); + staticText = "create a 2/1 colorless Construct artifact creature token with flying named Ballistic Boulder " + + "that's tapped and attacking. Sacrifice that token at the beginning of the next end step."; + } + + private FireNavyTrebuchetEffect(final FireNavyTrebuchetEffect effect) { + super(effect); + } + + @Override + public FireNavyTrebuchetEffect copy() { + return new FireNavyTrebuchetEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + Token token = new BallisticBoulder(); + token.putOntoBattlefield(1, game, source, source.getControllerId(), true, true); + game.addDelayedTriggeredAbility(new AtTheBeginOfNextEndStepDelayedTriggeredAbility( + new SacrificeTargetEffect() + .setTargetPointer(new FixedTargets(token, game)) + .setText("sacrifice those tokens") + ), source); + return true; + } +} diff --git a/Mage.Sets/src/mage/sets/AvatarTheLastAirbender.java b/Mage.Sets/src/mage/sets/AvatarTheLastAirbender.java index 8df57f70d93..ea3ff8cca11 100644 --- a/Mage.Sets/src/mage/sets/AvatarTheLastAirbender.java +++ b/Mage.Sets/src/mage/sets/AvatarTheLastAirbender.java @@ -139,6 +139,7 @@ public final class AvatarTheLastAirbender extends ExpansionSet { cards.add(new SetCardInfo("Fire Nation Palace", 389, Rarity.RARE, mage.cards.f.FireNationPalace.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Fire Nation Raider", 135, Rarity.COMMON, mage.cards.f.FireNationRaider.class)); cards.add(new SetCardInfo("Fire Nation Warship", 256, Rarity.UNCOMMON, mage.cards.f.FireNationWarship.class)); + cards.add(new SetCardInfo("Fire Navy Trebuchet", 100, Rarity.UNCOMMON, mage.cards.f.FireNavyTrebuchet.class)); cards.add(new SetCardInfo("Fire Sages", 136, Rarity.UNCOMMON, mage.cards.f.FireSages.class)); cards.add(new SetCardInfo("Firebender Ascension", 137, Rarity.RARE, mage.cards.f.FirebenderAscension.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Firebender Ascension", 312, Rarity.RARE, mage.cards.f.FirebenderAscension.class, NON_FULL_USE_VARIOUS));