diff --git a/Mage.Sets/src/mage/cards/d/DusyutEarthcarver.java b/Mage.Sets/src/mage/cards/d/DusyutEarthcarver.java new file mode 100644 index 00000000000..bd2a15c7b7d --- /dev/null +++ b/Mage.Sets/src/mage/cards/d/DusyutEarthcarver.java @@ -0,0 +1,42 @@ +package mage.cards.d; + +import mage.MageInt; +import mage.abilities.common.EntersBattlefieldTriggeredAbility; +import mage.abilities.effects.keyword.EndureSourceEffect; +import mage.abilities.keyword.ReachAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.SubType; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class DusyutEarthcarver extends CardImpl { + + public DusyutEarthcarver(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{G}"); + + this.subtype.add(SubType.ELEPHANT); + this.subtype.add(SubType.DRUID); + this.power = new MageInt(4); + this.toughness = new MageInt(4); + + // Reach + this.addAbility(ReachAbility.getInstance()); + + // When this creature enters, it endures 3. + this.addAbility(new EntersBattlefieldTriggeredAbility(new EndureSourceEffect(3))); + } + + private DusyutEarthcarver(final DusyutEarthcarver card) { + super(card); + } + + @Override + public DusyutEarthcarver copy() { + return new DusyutEarthcarver(this); + } +} diff --git a/Mage.Sets/src/mage/sets/TarkirDragonstorm.java b/Mage.Sets/src/mage/sets/TarkirDragonstorm.java index 48ee80d5169..4298b38f479 100644 --- a/Mage.Sets/src/mage/sets/TarkirDragonstorm.java +++ b/Mage.Sets/src/mage/sets/TarkirDragonstorm.java @@ -37,6 +37,7 @@ public final class TarkirDragonstorm extends ExpansionSet { cards.add(new SetCardInfo("Dracogenesis", 105, Rarity.MYTHIC, mage.cards.d.Dracogenesis.class)); cards.add(new SetCardInfo("Dragonback Assault", 179, Rarity.MYTHIC, mage.cards.d.DragonbackAssault.class)); cards.add(new SetCardInfo("Dragonback Lancer", 9, Rarity.COMMON, mage.cards.d.DragonbackLancer.class)); + cards.add(new SetCardInfo("Dusyut Earthcarver", 141, Rarity.COMMON, mage.cards.d.DusyutEarthcarver.class)); cards.add(new SetCardInfo("Equilibrium Adept", 106, Rarity.UNCOMMON, mage.cards.e.EquilibriumAdept.class)); cards.add(new SetCardInfo("Evolving Wilds", 255, Rarity.COMMON, mage.cards.e.EvolvingWilds.class)); cards.add(new SetCardInfo("Forest", 285, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); diff --git a/Mage/src/main/java/mage/abilities/effects/keyword/EndureSourceEffect.java b/Mage/src/main/java/mage/abilities/effects/keyword/EndureSourceEffect.java new file mode 100644 index 00000000000..488ae1100c5 --- /dev/null +++ b/Mage/src/main/java/mage/abilities/effects/keyword/EndureSourceEffect.java @@ -0,0 +1,53 @@ +package mage.abilities.effects.keyword; + +import mage.abilities.Ability; +import mage.abilities.effects.OneShotEffect; +import mage.constants.Outcome; +import mage.counters.CounterType; +import mage.game.Game; +import mage.game.permanent.Permanent; +import mage.game.permanent.token.SpiritXXToken; +import mage.players.Player; +import mage.util.CardUtil; + +/** + * @author TheElk801 + */ +public class EndureSourceEffect extends OneShotEffect { + + private final int amount; + + public EndureSourceEffect(int amount) { + super(Outcome.Benefit); + staticText = "it endures " + amount; + this.amount = amount; + } + + private EndureSourceEffect(final EndureSourceEffect effect) { + super(effect); + this.amount = effect.amount; + } + + @Override + public EndureSourceEffect copy() { + return new EndureSourceEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + Player player = game.getPlayer(source.getControllerId()); + if (player == null) { + return false; + } + Permanent permanent = source.getSourcePermanentIfItStillExists(game); + if (permanent != null && player.chooseUse( + Outcome.BoostCreature, "Put " + CardUtil.numberToText(amount, "a") + " +1/+1 counter" + + (amount > 1 ? "s" : "") + " on " + permanent.getName() + " or create " + + CardUtil.addArticle("" + amount) + ' ' + amount + '/' + amount + " Spirit token?", + null, "Add counters", "Create token", source, game + )) { + return permanent.addCounters(CounterType.P1P1.createInstance(amount), source, game); + } + return new SpiritXXToken(amount).putOntoBattlefield(1, game, source); + } +} diff --git a/Mage/src/main/java/mage/game/permanent/token/SpiritXXToken.java b/Mage/src/main/java/mage/game/permanent/token/SpiritXXToken.java new file mode 100644 index 00000000000..9cdd78ab040 --- /dev/null +++ b/Mage/src/main/java/mage/game/permanent/token/SpiritXXToken.java @@ -0,0 +1,33 @@ +package mage.game.permanent.token; + +import mage.MageInt; +import mage.constants.CardType; +import mage.constants.SubType; + +/** + * @author nantuko + */ +public final class SpiritXXToken extends TokenImpl { + + public SpiritXXToken() { + this(0); + } + + public SpiritXXToken(int amount) { + super("Spirit Token", amount + '/' + amount + " white Spirit creature token"); + cardType.add(CardType.CREATURE); + subtype.add(SubType.SPIRIT); + color.setWhite(true); + power = new MageInt(amount); + toughness = new MageInt(amount); + } + + private SpiritXXToken(final SpiritXXToken token) { + super(token); + } + + @Override + public SpiritXXToken copy() { + return new SpiritXXToken(this); + } +}