diff --git a/Mage.Sets/src/mage/cards/b/BetorAncestorsVoice.java b/Mage.Sets/src/mage/cards/b/BetorAncestorsVoice.java new file mode 100644 index 00000000000..88e1cac8d2a --- /dev/null +++ b/Mage.Sets/src/mage/cards/b/BetorAncestorsVoice.java @@ -0,0 +1,99 @@ +package mage.cards.b; + +import java.util.UUID; +import mage.MageInt; +import mage.MageObject; +import mage.abilities.Ability; +import mage.abilities.dynamicvalue.common.ControllerGainedLifeCount; +import mage.abilities.dynamicvalue.common.ControllerLostLifeCount; +import mage.abilities.effects.common.ReturnFromGraveyardToBattlefieldTargetEffect; +import mage.abilities.effects.common.counter.AddCountersTargetEffect; +import mage.abilities.triggers.BeginningOfEndStepTriggeredAbility; +import mage.constants.SubType; +import mage.constants.SuperType; +import mage.abilities.keyword.FlyingAbility; +import mage.abilities.keyword.LifelinkAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.counters.CounterType; +import mage.filter.FilterCard; +import mage.filter.StaticFilters; +import mage.filter.predicate.ObjectSourcePlayer; +import mage.filter.predicate.ObjectSourcePlayerPredicate; +import mage.game.Game; +import mage.target.common.TargetCardInGraveyard; +import mage.target.common.TargetControlledCreaturePermanent; +import mage.target.targetpointer.SecondTargetPointer; +import mage.watchers.common.PlayerGainedLifeWatcher; + +/** + * + * @author Grath + */ +public final class BetorAncestorsVoice extends CardImpl { + + final private static FilterCard filter + = new FilterCard("creature card with mana value less than or equal to the amount of life you lost this turn"); + + static { + filter.add(CardType.CREATURE.getPredicate()); + filter.add(BetorPredicate.instance); + } + + public BetorAncestorsVoice(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}{B}{G}"); + + this.supertype.add(SuperType.LEGENDARY); + this.subtype.add(SubType.SPIRIT); + this.subtype.add(SubType.DRAGON); + this.power = new MageInt(3); + this.toughness = new MageInt(5); + + // Flying + this.addAbility(FlyingAbility.getInstance()); + + // Lifelink + this.addAbility(LifelinkAbility.getInstance()); + + // At the beginning of your end step, put a number of +1/+1 counters on up to one other target creature you + // control equal to the amount of life you gained this turn. Return up to one target creature card with mana + // value less than or equal to the amount of life you lost this turn from your graveyard to the battlefield. + Ability ability = new BeginningOfEndStepTriggeredAbility( + new AddCountersTargetEffect(CounterType.P1P1.createInstance(), ControllerGainedLifeCount.instance) + .setText("put a number of +1/+1 counters on up to one other target creature you " + + "control equal to the amount of life you gained this turn.") + ); + ability.addTarget(new TargetControlledCreaturePermanent(0, 1, StaticFilters.FILTER_ANOTHER_TARGET_CREATURE_YOU_CONTROL, false)); + ability.addEffect(new ReturnFromGraveyardToBattlefieldTargetEffect().setTargetPointer(new SecondTargetPointer()) + .setText("Return up to one target creature card with mana value less than or equal to the amount of " + + "life you lost this turn from your graveyard to the battlefield.")); + ability.addTarget(new TargetCardInGraveyard(0, 1, filter)); + ability.addHint(ControllerGainedLifeCount.getHint()); + ability.addHint(ControllerLostLifeCount.getHint()); + this.addAbility(ability, new PlayerGainedLifeWatcher()); + } + + private BetorAncestorsVoice(final BetorAncestorsVoice card) { + super(card); + } + + @Override + public BetorAncestorsVoice copy() { + return new BetorAncestorsVoice(this); + } +} + +enum BetorPredicate implements ObjectSourcePlayerPredicate { + instance; + + @Override + public boolean apply(ObjectSourcePlayer input, Game game) { + return input.getObject().getManaValue() <= ControllerLostLifeCount.instance.calculate(game, input.getSource(), null); + } + + @Override + public String toString() { + return "mana value less than or equal to the amount of life you lost this turn"; + } +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/TarkirDragonstormCommander.java b/Mage.Sets/src/mage/sets/TarkirDragonstormCommander.java index b968e03fbf5..9e5f74393d1 100644 --- a/Mage.Sets/src/mage/sets/TarkirDragonstormCommander.java +++ b/Mage.Sets/src/mage/sets/TarkirDragonstormCommander.java @@ -19,6 +19,7 @@ public final class TarkirDragonstormCommander extends ExpansionSet { super("Tarkir: Dragonstorm Commander", "TDC", ExpansionSet.buildDate(2025, 4, 11), SetType.SUPPLEMENTAL); this.hasBasicLands = false; + cards.add(new SetCardInfo("Betor, Ancestor's Voice", 1, Rarity.MYTHIC, mage.cards.b.BetorAncestorsVoice.class)); cards.add(new SetCardInfo("Teval, the Balanced Scale", 8, Rarity.MYTHIC, mage.cards.t.TevalTheBalancedScale.class)); } } diff --git a/Utils/mtg-cards-data.txt b/Utils/mtg-cards-data.txt index 66151efc0c2..d585e63d623 100644 --- a/Utils/mtg-cards-data.txt +++ b/Utils/mtg-cards-data.txt @@ -57207,3 +57207,4 @@ Shiko, Paragon of the Way|Tarkir: Dragonstorm|223|M|{2}{U}{R}{W}|Legendary Creat Skirmish Rhino|Tarkir: Dragonstorm|224|U|{W}{B}{G}|Creature - Rhino|3|4|Trample$When this creature enters, each opponent loses 2 life and you gain 2 life.| Mox Jasper|Tarkir: Dragonstorm|246|M|{0}|Legendary Artifact|||{T}: Add one mana of any color. Activate only if you control a Dragon.| Teval, the Balanced Scale|Tarkir: Dragonstorm Commander|8|M|{1}{B}{G}{U}|Legendary Creature - Spirit Dragon|4|4|Flying$Whenever Teval attacks, mill three cards. Then you may return a land card from your graveyard to the battlefield tapped.$Whenever one or more cards leave your graveyard, create a 2/2 black Zombie Druid creature token.| +Betor, Ancestor's Voice|Tarkir: Dragonstorm Commander|1|M|{2}{W}{B}{G}|Legendary Creature - Spirit Dragon|3|5|Flying, lifelink$At the beginning of your end step, put a number of +1/+1 counters on up to one other target creature you control equal to the amount of life you gained this turn. Return up to one target creature card with mana value less than or equal to the amount of life you lost this turn from your graveyard to the battlefield.