From 3d924284538f0a7b4e3e88063182d21c3df5f64b Mon Sep 17 00:00:00 2001 From: theelk801 Date: Wed, 17 Jul 2024 14:25:16 -0400 Subject: [PATCH] [BLB] Implement Stormchaser's Talent --- .../src/mage/cards/s/StormchasersTalent.java | 67 +++++++++++++++++++ Mage.Sets/src/mage/sets/Bloomburrow.java | 1 + .../permanent/token/OtterProwessToken.java | 31 +++++++++ Utils/mtg-cards-data.txt | 1 + 4 files changed, 100 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/s/StormchasersTalent.java create mode 100644 Mage/src/main/java/mage/game/permanent/token/OtterProwessToken.java diff --git a/Mage.Sets/src/mage/cards/s/StormchasersTalent.java b/Mage.Sets/src/mage/cards/s/StormchasersTalent.java new file mode 100644 index 00000000000..5189fceb3a3 --- /dev/null +++ b/Mage.Sets/src/mage/cards/s/StormchasersTalent.java @@ -0,0 +1,67 @@ +package mage.cards.s; + +import mage.abilities.Ability; +import mage.abilities.common.BecomesClassLevelTriggeredAbility; +import mage.abilities.common.EntersBattlefieldTriggeredAbility; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.common.SpellCastControllerTriggeredAbility; +import mage.abilities.effects.common.CreateTokenEffect; +import mage.abilities.effects.common.ReturnFromGraveyardToHandTargetEffect; +import mage.abilities.effects.common.continuous.GainClassAbilitySourceEffect; +import mage.abilities.keyword.ClassLevelAbility; +import mage.abilities.keyword.ClassReminderAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.SubType; +import mage.filter.StaticFilters; +import mage.game.permanent.token.OtterProwessToken; +import mage.target.common.TargetCardInYourGraveyard; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class StormchasersTalent extends CardImpl { + + public StormchasersTalent(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{U}"); + + this.subtype.add(SubType.CLASS); + + // (Gain the next level as a sorcery to add its ability.) + this.addAbility(new ClassReminderAbility()); + + // When Stormchaser's Talent enters, create a 1/1 blue and red Otter creature token with prowess. + this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new OtterProwessToken()))); + + // {3}{U}: Level 2 + this.addAbility(new ClassLevelAbility(2, "{3}{U}")); + + // When this Class becomes level 2, return target instant or sorcery card from your graveyard to your hand. + Ability ability = new BecomesClassLevelTriggeredAbility(new ReturnFromGraveyardToHandTargetEffect(), 2); + ability.addTarget(new TargetCardInYourGraveyard(StaticFilters.FILTER_CARD_INSTANT_OR_SORCERY_FROM_YOUR_GRAVEYARD)); + this.addAbility(ability); + + // {5}{U}: Level 3 + this.addAbility(new ClassLevelAbility(3, "{5}{U}")); + + // Whenever you cast an instant or sorcery spell, create a 1/1 blue and red Otter creature token with prowess. + this.addAbility(new SimpleStaticAbility(new GainClassAbilitySourceEffect( + new SpellCastControllerTriggeredAbility( + new CreateTokenEffect(new OtterProwessToken()), + StaticFilters.FILTER_SPELL_AN_INSTANT_OR_SORCERY, false + ), 3 + ))); + } + + private StormchasersTalent(final StormchasersTalent card) { + super(card); + } + + @Override + public StormchasersTalent copy() { + return new StormchasersTalent(this); + } +} diff --git a/Mage.Sets/src/mage/sets/Bloomburrow.java b/Mage.Sets/src/mage/sets/Bloomburrow.java index 1578392236c..3c844273d9d 100644 --- a/Mage.Sets/src/mage/sets/Bloomburrow.java +++ b/Mage.Sets/src/mage/sets/Bloomburrow.java @@ -150,6 +150,7 @@ public final class Bloomburrow extends ExpansionSet { cards.add(new SetCardInfo("Steampath Charger", 153, Rarity.COMMON, mage.cards.s.SteampathCharger.class)); cards.add(new SetCardInfo("Stickytongue Sentinel", 193, Rarity.COMMON, mage.cards.s.StickytongueSentinel.class)); cards.add(new SetCardInfo("Stormcatch Mentor", 234, Rarity.UNCOMMON, mage.cards.s.StormcatchMentor.class)); + cards.add(new SetCardInfo("Stormchaser's Talent", 75, Rarity.RARE, mage.cards.s.StormchasersTalent.class)); cards.add(new SetCardInfo("Stormsplitter", 154, Rarity.MYTHIC, mage.cards.s.Stormsplitter.class)); cards.add(new SetCardInfo("Sunshower Druid", 195, Rarity.COMMON, mage.cards.s.SunshowerDruid.class)); cards.add(new SetCardInfo("Sunspine Lynx", 155, Rarity.RARE, mage.cards.s.SunspineLynx.class)); diff --git a/Mage/src/main/java/mage/game/permanent/token/OtterProwessToken.java b/Mage/src/main/java/mage/game/permanent/token/OtterProwessToken.java new file mode 100644 index 00000000000..ed4dc25680d --- /dev/null +++ b/Mage/src/main/java/mage/game/permanent/token/OtterProwessToken.java @@ -0,0 +1,31 @@ +package mage.game.permanent.token; + +import mage.MageInt; +import mage.abilities.keyword.ProwessAbility; +import mage.constants.CardType; +import mage.constants.SubType; + +/** + * @author TheElk801 + */ +public final class OtterProwessToken extends TokenImpl { + + public OtterProwessToken() { + super("Otter Token", "1/1 blue and red Otter creature token with prowess"); + cardType.add(CardType.CREATURE); + color.setBlue(true); + color.setRed(true); + subtype.add(SubType.OTTER); + power = new MageInt(1); + toughness = new MageInt(1); + addAbility(new ProwessAbility()); + } + + private OtterProwessToken(final OtterProwessToken token) { + super(token); + } + + public OtterProwessToken copy() { + return new OtterProwessToken(this); + } +} diff --git a/Utils/mtg-cards-data.txt b/Utils/mtg-cards-data.txt index 3f6bfe1a15a..ed072307180 100644 --- a/Utils/mtg-cards-data.txt +++ b/Utils/mtg-cards-data.txt @@ -53135,6 +53135,7 @@ Shoreline Looter|Bloomburrow|70|U|{1}{U}|Creature - Rat Rogue|1|1|Shoreline Loot Spellgyre|Bloomburrow|72|U|{2}{U}{U}|Instant|||Choose one --$* Counter target spell.$* Surveil 2, then draw two cards.| Splash Lasher|Bloomburrow|73|U|{3}{U}|Creature - Frog Wizard|3|3|Offspring {1}{U}$When this creature enters, tap up to one target creature and put a stun counter on it.| Splash Portal|Bloomburrow|74|U|{U}|Sorcery|||Exile target creature you control, then return it to the battlefield under its owner's control. If that creature is a Bird, Frog, Otter, or Rat, draw a card.| +Stormchaser's Talent|Bloomburrow|75|R|{U}|Enchantment - Class|||(Gain the next level as a sorcery to add its ability.)$When Stormchaser's Talent enters, create a 1/1 blue and red Otter creature token with prowess.${3}{U}: Level 2$When this Class becomes level 2, return target instant or sorcery card from your graveyard to your hand.${5}{U}: Level 3$Whenever you cast an instant or sorcery spell, create a 1/1 blue and red Otter creature token with prowess.| Sugar Coat|Bloomburrow|76|U|{2}{U}|Enchantment - Aura|||Flash$Enchant creature or Food$Enchanted permanent is a colorless Food artifact with "{2}, {T}, Sacrifice this artifact: You gain 3 life" and loses all other card types and abilities.| Thought Shucker|Bloomburrow|77|C|{1}{U}|Creature - Rat Rogue|1|3|Threshold -- {1}{U}: Put a +1/+1 counter on Thought Shucker and draw a card. Activate only if seven or more cards are in your graveyard and only once.| Thundertrap Trainer|Bloomburrow|78|R|{1}{U}|Creature - Otter Wizard|1|2|Offspring {4}$When this creature enters, look at the top four cards of your library. You may reveal a noncreature, nonland card from among them and put it into your hand. Put the rest on the bottom of your library in a random order.|