From cadeeeee662b5b924822b8db5b60fe7e10e8ffbc Mon Sep 17 00:00:00 2001 From: theelk801 Date: Wed, 10 Jul 2024 16:27:03 -0400 Subject: [PATCH] [BLB] Implement Tender Wildguide --- .../src/mage/cards/t/TenderWildguide.java | 52 +++++++++++++++++++ Mage.Sets/src/mage/sets/Bloomburrow.java | 7 +++ .../abilities/keyword/OffspringAbility.java | 35 +++++++++++++ Utils/keywords.txt | 1 + Utils/mtg-cards-data.txt | 2 +- 5 files changed, 96 insertions(+), 1 deletion(-) create mode 100644 Mage.Sets/src/mage/cards/t/TenderWildguide.java create mode 100644 Mage/src/main/java/mage/abilities/keyword/OffspringAbility.java diff --git a/Mage.Sets/src/mage/cards/t/TenderWildguide.java b/Mage.Sets/src/mage/cards/t/TenderWildguide.java new file mode 100644 index 00000000000..a977a3468c0 --- /dev/null +++ b/Mage.Sets/src/mage/cards/t/TenderWildguide.java @@ -0,0 +1,52 @@ +package mage.cards.t; + +import mage.MageInt; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.common.TapSourceCost; +import mage.abilities.effects.common.counter.AddCountersSourceEffect; +import mage.abilities.keyword.OffspringAbility; +import mage.abilities.mana.AnyColorManaAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.SubType; +import mage.counters.CounterType; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class TenderWildguide extends CardImpl { + + public TenderWildguide(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}"); + + this.subtype.add(SubType.POSSUM); + this.subtype.add(SubType.DRUID); + this.power = new MageInt(2); + this.toughness = new MageInt(2); + + // Offspring {2} + this.addAbility(new OffspringAbility("{2}")); + + // {T}: Add one mana of any color. + this.addAbility(new AnyColorManaAbility()); + + // {T}: Put a +1/+1 counter on this creature. + this.addAbility(new SimpleActivatedAbility( + new AddCountersSourceEffect(CounterType.P1P1.createInstance()) + .setText("put a +1/+1 counter on this creature"), + new TapSourceCost() + )); + } + + private TenderWildguide(final TenderWildguide card) { + super(card); + } + + @Override + public TenderWildguide copy() { + return new TenderWildguide(this); + } +} diff --git a/Mage.Sets/src/mage/sets/Bloomburrow.java b/Mage.Sets/src/mage/sets/Bloomburrow.java index b3986efa2bf..90f491cb9f5 100644 --- a/Mage.Sets/src/mage/sets/Bloomburrow.java +++ b/Mage.Sets/src/mage/sets/Bloomburrow.java @@ -4,11 +4,15 @@ import mage.cards.ExpansionSet; import mage.constants.Rarity; import mage.constants.SetType; +import java.util.Arrays; +import java.util.List; + /** * @author TheElk801 */ public final class Bloomburrow extends ExpansionSet { + private static final List unfinished = Arrays.asList("Flowerfoot Swordmaster", "Tender Wildguide", "Thundertrap Trainer", "Warren Warleader"); private static final Bloomburrow instance = new Bloomburrow(); public static Bloomburrow getInstance() { @@ -58,5 +62,8 @@ public final class Bloomburrow extends ExpansionSet { cards.add(new SetCardInfo("Sunshower Druid", 195, Rarity.COMMON, mage.cards.s.SunshowerDruid.class)); cards.add(new SetCardInfo("Swamp", 270, Rarity.LAND, mage.cards.basiclands.Swamp.class, FULL_ART_BFZ_VARIOUS)); cards.add(new SetCardInfo("Tempest Angler", 235, Rarity.COMMON, mage.cards.t.TempestAngler.class)); + cards.add(new SetCardInfo("Tender Wildguide", 196, Rarity.RARE, mage.cards.t.TenderWildguide.class)); + + cards.removeIf(setCardInfo -> unfinished.contains(setCardInfo.getName())); // remove when mechanic is implemented } } diff --git a/Mage/src/main/java/mage/abilities/keyword/OffspringAbility.java b/Mage/src/main/java/mage/abilities/keyword/OffspringAbility.java new file mode 100644 index 00000000000..057026f73ec --- /dev/null +++ b/Mage/src/main/java/mage/abilities/keyword/OffspringAbility.java @@ -0,0 +1,35 @@ +package mage.abilities.keyword; + +import mage.abilities.StaticAbility; +import mage.abilities.costs.Cost; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.constants.Zone; + +/** + * @author TheElk801 + * TODO: Implement this + */ +public class OffspringAbility extends StaticAbility { + + public OffspringAbility(String manaString) { + this(new ManaCostsImpl<>(manaString)); + } + + public OffspringAbility(Cost cost) { + super(Zone.ALL, null); + } + + private OffspringAbility(final OffspringAbility ability) { + super(ability); + } + + @Override + public OffspringAbility copy() { + return new OffspringAbility(this); + } + + @Override + public String getRule() { + return "Offspring"; + } +} diff --git a/Utils/keywords.txt b/Utils/keywords.txt index 063309e8228..aaa9cbd7d67 100644 --- a/Utils/keywords.txt +++ b/Utils/keywords.txt @@ -91,6 +91,7 @@ Mutate|card, manaString| Myriad|new| Nightbound|new| Ninjutsu|manaString| +Offspring|manaString| Outlast|cost| Partner|instance| Persist|new| diff --git a/Utils/mtg-cards-data.txt b/Utils/mtg-cards-data.txt index 0cf1743e8aa..1688597cd0c 100644 --- a/Utils/mtg-cards-data.txt +++ b/Utils/mtg-cards-data.txt @@ -53103,7 +53103,7 @@ Cache Grab|Bloomburrow|167|C|{1}{G}|Instant|||Mill four cards. You may put a per Hunter's Talent|Bloomburrow|179|U|{1}{G}|Enchantment - Class|||(Gain the next level as a sorcery to add its ability.)$When Hunter's Talent enters, target creature you control deals damage equal to its power to target creature you don't control.${1}{G}: Level 2$Whenever you attack, target attacking creature gets +1/+0 and gains trample until end of turn.${3}{G}: Level 3$At the beginning of your end step, if you control a creature with power 4 or greater, draw a card.| Lumra, Bellow of the Woods|Bloomburrow|183|M|{4}{G}{G}|Legendary Creature - Elemental Bear|*|*|Vigilance, reach$Lumra, Bellow of the Woods's power and toughness are each equal to the number of lands you control.$When Lumra enters, mill four cards. Then return all land cards from your graveyard to the battlefield tapped.| Sunshower Druid|Bloomburrow|195|C|{G}|Creature - Frog Druid|0|2|When Sunshower Druid enters, put a +1/+1 counter on target creature and you gain 1 life.| -Tender Wildguide|Bloomburrow|196|R|{1}{G}|Creature|2|2|Offspring {2}${T}: Add one mana of any color.${T}: Put a +1/+1 counter on this creature.| +Tender Wildguide|Bloomburrow|196|R|{1}{G}|Creature - Possum Druid|2|2|Offspring {2}${T}: Add one mana of any color.${T}: Put a +1/+1 counter on this creature.| Thornvault Forager|Bloomburrow|197|R|{1}{G}|Creature - Squirrel Ranger|2|2|{T}: Add {G}.${T}, Forage: Add two mana in any combination of colors.${3}{G}, {T}: Search your library for a Squirrel card, reveal it, put it into your hand, then shuffle.| Wear Down|Bloomburrow|203|U|{1}{G}|Sorcery|||Gift a card$Destroy target artifact or enchantment. If the gift was promised, instead destroy two target artifacts and/or enchantments.| Alania, Divergent Storm|Bloomburrow|204|R|{3}{U}{R}|Legendary Creature - Otter Wizard|3|5|Whenever you cast a spell, if it's the first instant spell, the first sorcery spell, or the first Otter spell other than Alania you've cast this turn, you may have target opponent draw a card. If you do, copy that spell. You may choose new targets for the copy.|