From d5c03ddb0b333c1b7ffc96151deabc3e9de73eb9 Mon Sep 17 00:00:00 2001 From: arcox <10953229+arcox@users.noreply.github.com> Date: Tue, 5 Dec 2023 20:27:00 -0500 Subject: [PATCH] [LCC] Implement Storm Fleet Negotiator (#11513) --- .../mage/cards/s/StormFleetNegotiator.java | 51 +++++++++++++++++++ .../sets/LostCavernsOfIxalanCommander.java | 2 + 2 files changed, 53 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/s/StormFleetNegotiator.java diff --git a/Mage.Sets/src/mage/cards/s/StormFleetNegotiator.java b/Mage.Sets/src/mage/cards/s/StormFleetNegotiator.java new file mode 100644 index 00000000000..aaf6a8b9fdc --- /dev/null +++ b/Mage.Sets/src/mage/cards/s/StormFleetNegotiator.java @@ -0,0 +1,51 @@ +package mage.cards.s; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.AttacksTriggeredAbility; +import mage.abilities.dynamicvalue.common.ParleyCount; +import mage.abilities.effects.common.CreateTokenEffect; +import mage.abilities.effects.common.DrawCardAllEffect; +import mage.abilities.keyword.FlyingAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.AbilityWord; +import mage.constants.CardType; +import mage.constants.SubType; +import mage.game.permanent.token.MapToken; + +/** + * @author + */ +public final class StormFleetNegotiator extends CardImpl { + + public StormFleetNegotiator(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}"); + + this.subtype.add(SubType.SIREN); + this.subtype.add(SubType.PIRATE); + this.power = new MageInt(2); + this.toughness = new MageInt(2); + + // Flying + this.addAbility(FlyingAbility.getInstance()); + + // Parley — Whenever Storm Fleet Negotiator attacks, each player reveals the top card of their library. For each nonland card revealed this way, you create a Map token. Then each player draws a card. + Ability ability = new AttacksTriggeredAbility(new CreateTokenEffect( + new MapToken(), ParleyCount.getInstance(), true, false + ).setText("each player reveals the top card of their library. " + + "For each nonland card revealed this way, you create a Map token")); + ability.addEffect(new DrawCardAllEffect(1).concatBy("Then")); + this.addAbility(ability.setAbilityWord(AbilityWord.PARLEY)); + } + + private StormFleetNegotiator(final StormFleetNegotiator card) { + super(card); + } + + @Override + public StormFleetNegotiator copy() { + return new StormFleetNegotiator(this); + } +} diff --git a/Mage.Sets/src/mage/sets/LostCavernsOfIxalanCommander.java b/Mage.Sets/src/mage/sets/LostCavernsOfIxalanCommander.java index 6a4dd21fecb..6e84348b141 100644 --- a/Mage.Sets/src/mage/sets/LostCavernsOfIxalanCommander.java +++ b/Mage.Sets/src/mage/sets/LostCavernsOfIxalanCommander.java @@ -2,6 +2,7 @@ package mage.sets; import mage.cards.ExpansionSet; +import mage.cards.s.StormFleetNegotiator; import mage.constants.Rarity; import mage.constants.SetType; @@ -240,6 +241,7 @@ public final class LostCavernsOfIxalanCommander extends ExpansionSet { cards.add(new SetCardInfo("Sorin, Lord of Innistrad", 289, Rarity.MYTHIC, mage.cards.s.SorinLordOfInnistrad.class)); cards.add(new SetCardInfo("Spectral Sailor", 172, Rarity.UNCOMMON, mage.cards.s.SpectralSailor.class)); cards.add(new SetCardInfo("Stonybrook Banneret", 173, Rarity.COMMON, mage.cards.s.StonybrookBanneret.class)); + cards.add(new SetCardInfo("Storm Fleet Negotiator", 78, Rarity.RARE, StormFleetNegotiator.class)); cards.add(new SetCardInfo("Strionic Resonator", 116, Rarity.RARE, mage.cards.s.StrionicResonator.class)); cards.add(new SetCardInfo("Sulfur Falls", 354, Rarity.RARE, mage.cards.s.SulfurFalls.class)); cards.add(new SetCardInfo("Sunken Hollow", 355, Rarity.RARE, mage.cards.s.SunkenHollow.class));