From 9db54d78925ba2a416e81a61eebc4b4854173366 Mon Sep 17 00:00:00 2001 From: PurpleCrowbar <26198472+PurpleCrowbar@users.noreply.github.com> Date: Sun, 28 Jul 2024 15:19:58 +0100 Subject: [PATCH] [BLB] Implement Ral, Crackling Wit --- .../src/mage/cards/r/RalCracklingWit.java | 61 +++++++++++++++++++ Mage.Sets/src/mage/sets/Bloomburrow.java | 3 + .../emblems/RalCracklingWitEmblem.java | 40 ++++++++++++ Mage/src/main/resources/tokens-database.txt | 1 + 4 files changed, 105 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/r/RalCracklingWit.java create mode 100644 Mage/src/main/java/mage/game/command/emblems/RalCracklingWitEmblem.java diff --git a/Mage.Sets/src/mage/cards/r/RalCracklingWit.java b/Mage.Sets/src/mage/cards/r/RalCracklingWit.java new file mode 100644 index 00000000000..8e80eeffac0 --- /dev/null +++ b/Mage.Sets/src/mage/cards/r/RalCracklingWit.java @@ -0,0 +1,61 @@ +package mage.cards.r; + +import mage.abilities.Ability; +import mage.abilities.LoyaltyAbility; +import mage.abilities.common.SpellCastControllerTriggeredAbility; +import mage.abilities.effects.common.CreateTokenEffect; +import mage.abilities.effects.common.DrawCardSourceControllerEffect; +import mage.abilities.effects.common.DrawDiscardControllerEffect; +import mage.abilities.effects.common.GetEmblemEffect; +import mage.abilities.effects.common.counter.AddCountersSourceEffect; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.SubType; +import mage.constants.SuperType; +import mage.counters.CounterType; +import mage.filter.StaticFilters; +import mage.game.command.emblems.RalCracklingWitEmblem; +import mage.game.permanent.token.OtterProwessToken; + +import java.util.UUID; + +/** + * @author PurpleCrowbar + */ +public final class RalCracklingWit extends CardImpl { + + public RalCracklingWit(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{2}{U}{R}"); + + this.supertype.add(SuperType.LEGENDARY); + this.subtype.add(SubType.RAL); + this.setStartingLoyalty(4); + + // Whenever you cast a noncreature spell, put a loyalty counter on Ral, Crackling Wit. + this.addAbility(new SpellCastControllerTriggeredAbility( + new AddCountersSourceEffect(CounterType.LOYALTY.createInstance()), StaticFilters.FILTER_SPELL_A_NON_CREATURE, false + )); + + // +1: Create a 1/1 blue and red Otter creature token with prowess. + this.addAbility(new LoyaltyAbility(new CreateTokenEffect(new OtterProwessToken()), 1)); + + // −3: Draw three cards, then discard two cards. + this.addAbility(new LoyaltyAbility(new DrawDiscardControllerEffect(3, 2), -3)); + + // −10: Draw three cards. You get an emblem with "Instant and sorcery spells you cast have storm." + // (Whenever you cast an instant or sorcery spell, copy it for each spell cast before it this turn.) + Ability ability = new LoyaltyAbility(new DrawCardSourceControllerEffect(3), -10); + ability.addEffect(new GetEmblemEffect(new RalCracklingWitEmblem())); + this.addAbility(ability); + } + + private RalCracklingWit(final RalCracklingWit card) { + super(card); + } + + @Override + public RalCracklingWit copy() { + return new RalCracklingWit(this); + } +} diff --git a/Mage.Sets/src/mage/sets/Bloomburrow.java b/Mage.Sets/src/mage/sets/Bloomburrow.java index 59fe146b5c7..21bc83a64ff 100644 --- a/Mage.Sets/src/mage/sets/Bloomburrow.java +++ b/Mage.Sets/src/mage/sets/Bloomburrow.java @@ -176,6 +176,9 @@ public final class Bloomburrow extends ExpansionSet { cards.add(new SetCardInfo("Rabid Bite", 394, Rarity.COMMON, mage.cards.r.RabidBite.class)); cards.add(new SetCardInfo("Rabid Gnaw", 147, Rarity.UNCOMMON, mage.cards.r.RabidGnaw.class)); cards.add(new SetCardInfo("Raccoon Rallier", 148, Rarity.COMMON, mage.cards.r.RaccoonRallier.class)); + cards.add(new SetCardInfo("Ral, Crackling Wit", 230, Rarity.MYTHIC, mage.cards.r.RalCracklingWit.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ral, Crackling Wit", 341, Rarity.MYTHIC, mage.cards.r.RalCracklingWit.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ral, Crackling Wit", 353, Rarity.MYTHIC, mage.cards.r.RalCracklingWit.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Ravine Raider", 106, Rarity.COMMON, mage.cards.r.RavineRaider.class)); cards.add(new SetCardInfo("Repel Calamity", 27, Rarity.UNCOMMON, mage.cards.r.RepelCalamity.class)); cards.add(new SetCardInfo("Reptilian Recruiter", 149, Rarity.UNCOMMON, mage.cards.r.ReptilianRecruiter.class)); diff --git a/Mage/src/main/java/mage/game/command/emblems/RalCracklingWitEmblem.java b/Mage/src/main/java/mage/game/command/emblems/RalCracklingWitEmblem.java new file mode 100644 index 00000000000..f976149de04 --- /dev/null +++ b/Mage/src/main/java/mage/game/command/emblems/RalCracklingWitEmblem.java @@ -0,0 +1,40 @@ +package mage.game.command.emblems; + +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.effects.common.continuous.GainAbilityControlledSpellsEffect; +import mage.abilities.keyword.StormAbility; +import mage.constants.CardType; +import mage.constants.Zone; +import mage.filter.common.FilterNonlandCard; +import mage.filter.predicate.Predicates; +import mage.game.command.Emblem; + +/** + * @author PurpleCrowbar + */ +public final class RalCracklingWitEmblem extends Emblem { + // Instant and sorcery spells you cast have storm. + + private static final FilterNonlandCard filter = new FilterNonlandCard("Instant and sorcery spells you cast"); + + static { + filter.add(Predicates.or( + CardType.INSTANT.getPredicate(), + CardType.SORCERY.getPredicate() + )); + } + + public RalCracklingWitEmblem() { + super("Emblem Ral"); + getAbilities().add(new SimpleStaticAbility(Zone.COMMAND, new GainAbilityControlledSpellsEffect(new StormAbility(), filter))); + } + + private RalCracklingWitEmblem(final RalCracklingWitEmblem card) { + super(card); + } + + @Override + public RalCracklingWitEmblem copy() { + return new RalCracklingWitEmblem(this); + } +} diff --git a/Mage/src/main/resources/tokens-database.txt b/Mage/src/main/resources/tokens-database.txt index 6bd227b5d62..527269bbc03 100644 --- a/Mage/src/main/resources/tokens-database.txt +++ b/Mage/src/main/resources/tokens-database.txt @@ -134,6 +134,7 @@ |Generate|EMBLEM:MH3|Emblem Tamiyo|||TamiyoSeasonedScholarEmblem| |Generate|EMBLEM:M3C|Emblem Garruk|||GarrukApexPredatorEmblem| |Generate|EMBLEM:M3C|Emblem Vivien|||VivienReidEmblem| +|Generate|EMBLEM:BLB|Emblem Ral|||RalCracklingWitEmblem| # ALL PLANES # Usage hints: