From c51b299707f026ac00d317148f19b56de93042fe Mon Sep 17 00:00:00 2001 From: theelk801 Date: Wed, 3 Apr 2024 20:45:38 -0400 Subject: [PATCH] [BIG] Implement The Big Score --- .../src/mage/cards/a/AncientCornucopia.java | 82 +++++++++++++++++++ Mage.Sets/src/mage/sets/TheBigScore.java | 1 + Utils/mtg-cards-data.txt | 1 + 3 files changed, 84 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/a/AncientCornucopia.java diff --git a/Mage.Sets/src/mage/cards/a/AncientCornucopia.java b/Mage.Sets/src/mage/cards/a/AncientCornucopia.java new file mode 100644 index 00000000000..7ff856fb7b8 --- /dev/null +++ b/Mage.Sets/src/mage/cards/a/AncientCornucopia.java @@ -0,0 +1,82 @@ +package mage.cards.a; + +import mage.ObjectColor; +import mage.abilities.Ability; +import mage.abilities.common.SpellCastControllerTriggeredAbility; +import mage.abilities.dynamicvalue.DynamicValue; +import mage.abilities.effects.Effect; +import mage.abilities.effects.common.GainLifeEffect; +import mage.abilities.mana.AnyColorManaAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.filter.FilterSpell; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.MonocoloredPredicate; +import mage.game.Game; +import mage.game.stack.Spell; + +import java.util.Optional; +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class AncientCornucopia extends CardImpl { + + private static final FilterSpell filter = new FilterSpell("a spell that's one or more colors"); + + static { + filter.add(Predicates.not(MonocoloredPredicate.instance)); + } + + public AncientCornucopia(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}{G}"); + + // Whenever you cast a spell that's one or more colors, you may gain 1 life for each of that spell's colors. Do this only once each turn. + this.addAbility(new SpellCastControllerTriggeredAbility( + new GainLifeEffect(AncientCornucopiaValue.instance), filter, false + ).setDoOnlyOnceEachTurn(true)); + + // {T}: Add one mana of any color. + this.addAbility(new AnyColorManaAbility()); + } + + private AncientCornucopia(final AncientCornucopia card) { + super(card); + } + + @Override + public AncientCornucopia copy() { + return new AncientCornucopia(this); + } +} + +enum AncientCornucopiaValue implements DynamicValue { + instance; + + @Override + public int calculate(Game game, Ability sourceAbility, Effect effect) { + return Optional + .ofNullable(effect.getValue("spellCast")) + .map(Spell.class::cast) + .map(spell -> spell.getColor(game)) + .map(ObjectColor::getColorCount) + .orElse(0); + } + + @Override + public AncientCornucopiaValue copy() { + return this; + } + + @Override + public String getMessage() { + return "of that spell's colors. Do this only once each turn"; + } + + @Override + public String toString() { + return "1"; + } +} diff --git a/Mage.Sets/src/mage/sets/TheBigScore.java b/Mage.Sets/src/mage/sets/TheBigScore.java index 474da7cde22..87fc43d993f 100644 --- a/Mage.Sets/src/mage/sets/TheBigScore.java +++ b/Mage.Sets/src/mage/sets/TheBigScore.java @@ -21,6 +21,7 @@ public final class TheBigScore extends ExpansionSet { this.hasBasicLands = false; this.hasBoosters = false; + cards.add(new SetCardInfo("Ancient Cornucopia", 16, Rarity.MYTHIC, mage.cards.a.AncientCornucopia.class)); cards.add(new SetCardInfo("Bristlebud Farmer", 17, Rarity.MYTHIC, mage.cards.b.BristlebudFarmer.class)); cards.add(new SetCardInfo("Collector's Cage", 1, Rarity.MYTHIC, mage.cards.c.CollectorsCage.class)); cards.add(new SetCardInfo("Esoteric Duplicator", 5, Rarity.MYTHIC, mage.cards.e.EsotericDuplicator.class)); diff --git a/Utils/mtg-cards-data.txt b/Utils/mtg-cards-data.txt index 585ba0a876c..10a91ffb990 100644 --- a/Utils/mtg-cards-data.txt +++ b/Utils/mtg-cards-data.txt @@ -52701,6 +52701,7 @@ Generous Plunderer|The Big Score|11|M|{1}{R}|Creature - Human Rogue|2|2|Menace$A Legion Extruder|The Big Score|12|M|{1}{R}|Artifact|||When Legion Extruder enters the battlefield, it deals 2 damage to any target.${2}, {T}, Sacrifice another artifact: Create a 3/3 colorless Golem artifact creature token.| Memory Vessel|The Big Score|13|M|{3}{R}{R}|Artifact|||{T}, Exile Memory Vessel: Each player exiles the top seven cards of their library. Until your next turn, players may play cards they exiled this way, and they can't play cards from their hand. Activate only as a sorcery.| Molten Duplication|The Big Score|14|M|{1}{R}|Sorcery|||Create a token that's a copy of target artifact or creature you control, except it's an artifact in addition to its other types. It gains haste until end of turn. Sacrifice it at the beginning of the next end step.| +Ancient Cornucopia|The Big Score|16|M|{2}{G}|Artifact|||Whenever you cast a spell that's one or more colors, you may gain 1 life for each of that spell's colors. Do this only once each turn.${T}: Add one mana of any color.| Bristlebud Farmer|The Big Score|17|M|{2}{G}{G}|Creature - Plant Druid|5|5|Trample$When Bristlebud Farmer enters the battlefield, create two Food tokens.$Whenever Bristlebud Farmer attacks, you may sacrifice a Food. If you do, mill three cards. You may put a permanent card from among them into your hand.| Omenpath Journey|The Big Score|18|M|{3}{G}|Enchantment|||When Omenpath Journey enters the battlefield, search your library for up to five land cards that have different names, exile them, then shuffle.$At the beginning of your end step, choose a card at random exiled with Omenpath Journey and put it onto the battlefield tapped.| Vaultborn Tyrant|The Big Score|20|M|{5}{G}{G}|Creature - Dinosaur|6|6|Trample$Whenever Vaultborn Tyrant or another creature with power 4 or greater enters the battlefield under your control, you gain 3 life and draw a card.$When Vaultborn Tyrant dies, if it's not a token, create a token that's a copy of it, except it's an artifact in addition to its other types.|