From 8fe6fd03509087871629c082211b09b3ed9dd455 Mon Sep 17 00:00:00 2001 From: Evan Kranzler Date: Thu, 3 Feb 2022 22:09:33 -0500 Subject: [PATCH] [NEO] Implemented Unforgiving One --- .../src/mage/cards/u/UnforgivingOne.java | 91 +++++++++++++++++++ .../src/mage/sets/KamigawaNeonDynasty.java | 1 + Utils/mtg-cards-data.txt | 1 + 3 files changed, 93 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/u/UnforgivingOne.java diff --git a/Mage.Sets/src/mage/cards/u/UnforgivingOne.java b/Mage.Sets/src/mage/cards/u/UnforgivingOne.java new file mode 100644 index 0000000000..8fce59a9b3 --- /dev/null +++ b/Mage.Sets/src/mage/cards/u/UnforgivingOne.java @@ -0,0 +1,91 @@ +package mage.cards.u; + +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.AttacksTriggeredAbility; +import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; +import mage.abilities.effects.common.ReturnFromGraveyardToBattlefieldTargetEffect; +import mage.abilities.hint.Hint; +import mage.abilities.hint.ValueHint; +import mage.abilities.keyword.MenaceAbility; +import mage.cards.Card; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.SubType; +import mage.filter.FilterCard; +import mage.filter.FilterPermanent; +import mage.filter.common.FilterControlledCreaturePermanent; +import mage.filter.common.FilterCreatureCard; +import mage.filter.predicate.ObjectSourcePlayer; +import mage.filter.predicate.ObjectSourcePlayerPredicate; +import mage.filter.predicate.permanent.ModifiedPredicate; +import mage.game.Game; +import mage.target.common.TargetCardInYourGraveyard; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class UnforgivingOne extends CardImpl { + + private static final FilterCard filter = new FilterCreatureCard( + "creature card with mana value less than or equal " + + "to the number of modified creatures you control" + ); + + static { + filter.add(UnforgivingOnePredicate.instance); + } + + public UnforgivingOne(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}"); + + this.subtype.add(SubType.SPIRIT); + this.power = new MageInt(2); + this.toughness = new MageInt(3); + + // Menace + this.addAbility(new MenaceAbility()); + + // Whenever Unforgiving One attacks, return target creature card with mana value X or less from your graveyard to the battlefield, where X is the number of modified creatures you control. + Ability ability = new AttacksTriggeredAbility(new ReturnFromGraveyardToBattlefieldTargetEffect() + .setText("return target creature card with mana value X or less from your graveyard " + + "to the battlefield, where X is the number of modified creatures you control")); + ability.addTarget(new TargetCardInYourGraveyard(filter)); + this.addAbility(ability.addHint(UnforgivingOnePredicate.getHint())); + } + + private UnforgivingOne(final UnforgivingOne card) { + super(card); + } + + @Override + public UnforgivingOne copy() { + return new UnforgivingOne(this); + } +} + +enum UnforgivingOnePredicate implements ObjectSourcePlayerPredicate { + instance; + private static final FilterPermanent filter = new FilterControlledCreaturePermanent(); + + static { + filter.add(ModifiedPredicate.instance); + } + + private static final Hint hint = new ValueHint( + "Modified creatures you control", new PermanentsOnBattlefieldCount(filter) + ); + + public static Hint getHint() { + return hint; + } + + @Override + public boolean apply(ObjectSourcePlayer input, Game game) { + return input.getObject().getManaValue() + <= game.getBattlefield().count(filter, input.getSourceId(), input.getPlayerId(), game); + } +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/KamigawaNeonDynasty.java b/Mage.Sets/src/mage/sets/KamigawaNeonDynasty.java index 487adb233f..f1a955392c 100644 --- a/Mage.Sets/src/mage/sets/KamigawaNeonDynasty.java +++ b/Mage.Sets/src/mage/sets/KamigawaNeonDynasty.java @@ -158,6 +158,7 @@ public final class KamigawaNeonDynasty extends ExpansionSet { cards.add(new SetCardInfo("Towashi Guide-Bot", 262, Rarity.UNCOMMON, mage.cards.t.TowashiGuideBot.class)); cards.add(new SetCardInfo("Tribute to Horobi", 124, Rarity.RARE, mage.cards.t.TributeToHorobi.class)); cards.add(new SetCardInfo("Twinshot Sniper", 168, Rarity.UNCOMMON, mage.cards.t.TwinshotSniper.class)); + cards.add(new SetCardInfo("Unforgiving One", 127, Rarity.COMMON, mage.cards.u.UnforgivingOne.class)); cards.add(new SetCardInfo("Unstoppable Ogre", 169, Rarity.COMMON, mage.cards.u.UnstoppableOgre.class)); cards.add(new SetCardInfo("Upriser Renegade", 170, Rarity.UNCOMMON, mage.cards.u.UpriserRenegade.class)); cards.add(new SetCardInfo("Vector Glider", 66, Rarity.COMMON, mage.cards.v.VectorGlider.class)); diff --git a/Utils/mtg-cards-data.txt b/Utils/mtg-cards-data.txt index 7c01bbe485..4138e5a74b 100644 --- a/Utils/mtg-cards-data.txt +++ b/Utils/mtg-cards-data.txt @@ -43597,6 +43597,7 @@ Soul Transfer|Kamigawa: Neon Dynasty|122|R|{1}{B}{B}|Sorcery|||Choose one. If yo Tatsunari, Toad Rider|Kamigawa: Neon Dynasty|123|R|{2}{B}|Legendary Creature - Human Ninja|3|3|Whenever you cast an enchantment spell, if you don't control a creature named Keimi, create Keimi, a legendary 3/3 black and green Frog creature token with "Whenever you cast an enchantment spell, each opponent loses 1 life and you gain 1 life."${1}{G/U}: Tatsunari, Toad Rider and target Frog you control can't be blocked this turn except by creatures with flying or reach.| Tribute to Horobi|Kamigawa: Neon Dynasty|124|R|{1}{B}|Enchantment - Saga|||(As this Saga enters and after your draw step, add a lore counter.)$I, II — Each opponent creates a 1/1 black Rat Rouge creature token.$III — Exile this Saga, then return it to the battlefield transformed under your control.| Echo of Death's Wail|Kamigawa: Neon Dynasty|124|R||Enchantment Creature - Spirit|3|3|Flying, haste$When Echo of Death's Wail enters the battlefield, gain control of all Rat tokens.$Whenever Echo of Death's Wail attacks, you may sacrifice another creature. If you do, draw a card.| +Unforgiving One|Kamigawa: Neon Dynasty|127|C|{2}{B}|Creature - Spirit|2|3|Menace$Whenever Unforgiving One attacks, return target creature card with mana value X or less from your graveyard to the battlefield, where X is the number of modified creatures you control.| You Are Already Dead|Kamigawa: Neon Dynasty|129|C|{B}|Instant|||Destroy target creature that was dealt damage this turn.$Draw a card.| Akki Ember-Keeper|Kamigawa: Neon Dynasty|130|C|{1}{R}|Enchantment Creature - Goblin Warrior|2|1|Whenever a nontoken modified creature you control dies, create a 1/1 colorless Spirit creature token.| Akki Ronin|Kamigawa: Neon Dynasty|131|C|{1}{R}|Creature - Goblin Samurai|1|3|Whenever a Samurai or Warrior you control attacks alone, you may discard a card. If you do, draw a card.|