From 152d841256b1de43d712e088723ee4645d6017b8 Mon Sep 17 00:00:00 2001 From: Evan Kranzler Date: Fri, 11 Sep 2020 12:59:35 -0400 Subject: [PATCH] [ZNR] Implemented Throne of Makindi --- .../src/mage/cards/t/ThroneOfMakindi.java | 77 +++++++++++++++++++ Mage.Sets/src/mage/sets/ZendikarRising.java | 1 + 2 files changed, 78 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/t/ThroneOfMakindi.java diff --git a/Mage.Sets/src/mage/cards/t/ThroneOfMakindi.java b/Mage.Sets/src/mage/cards/t/ThroneOfMakindi.java new file mode 100644 index 0000000000..a36b49df50 --- /dev/null +++ b/Mage.Sets/src/mage/cards/t/ThroneOfMakindi.java @@ -0,0 +1,77 @@ +package mage.cards.t; + +import mage.ConditionalMana; +import mage.Mana; +import mage.abilities.Ability; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.condition.common.KickedCondition; +import mage.abilities.costs.common.RemoveCountersSourceCost; +import mage.abilities.costs.common.TapSourceCost; +import mage.abilities.costs.mana.GenericManaCost; +import mage.abilities.effects.common.counter.AddCountersSourceEffect; +import mage.abilities.mana.ColorlessManaAbility; +import mage.abilities.mana.ConditionalAnyColorManaAbility; +import mage.abilities.mana.builder.ConditionalManaBuilder; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.counters.CounterType; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class ThroneOfMakindi extends CardImpl { + + public ThroneOfMakindi(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.LAND}, ""); + + // {T}: Add {C}. + this.addAbility(new ColorlessManaAbility()); + + // {1}, {T}: Put a charge counter on Throne of Makindi. + Ability ability = new SimpleActivatedAbility( + new AddCountersSourceEffect(CounterType.CHARGE.createInstance()), new GenericManaCost(1) + ); + ability.addCost(new TapSourceCost()); + this.addAbility(ability); + + // {T}, Remove a charge counter from Throne of Makindi: Add two mana of any one color. Spend this mana only to cast kicked spells. + ability = new ConditionalAnyColorManaAbility( + new TapSourceCost(), 3, new ThroneOfMakindiManaBuilder(), true + ); + ability.addCost(new RemoveCountersSourceCost(CounterType.CHARGE.createInstance())); + this.addAbility(ability); + } + + private ThroneOfMakindi(final ThroneOfMakindi card) { + super(card); + } + + @Override + public ThroneOfMakindi copy() { + return new ThroneOfMakindi(this); + } +} + +class ThroneOfMakindiManaBuilder extends ConditionalManaBuilder { + + @Override + public ConditionalMana build(Object... options) { + return new ThroneOfMakindiConditionalMana(this.mana); + } + + @Override + public String getRule() { + return "Spend this mana only to cast kicked spells"; + } +} + +class ThroneOfMakindiConditionalMana extends ConditionalMana { + + ThroneOfMakindiConditionalMana(Mana mana) { + super(mana); + addCondition(KickedCondition.instance); + } +} diff --git a/Mage.Sets/src/mage/sets/ZendikarRising.java b/Mage.Sets/src/mage/sets/ZendikarRising.java index 821e464dfc..12cf43730c 100644 --- a/Mage.Sets/src/mage/sets/ZendikarRising.java +++ b/Mage.Sets/src/mage/sets/ZendikarRising.java @@ -366,6 +366,7 @@ public final class ZendikarRising extends ExpansionSet { cards.add(new SetCardInfo("Tazri, Beacon of Unity", 44, Rarity.MYTHIC, mage.cards.t.TazriBeaconOfUnity.class)); cards.add(new SetCardInfo("Teeterpeak Ambusher", 169, Rarity.COMMON, mage.cards.t.TeeterpeakAmbusher.class)); cards.add(new SetCardInfo("Territorial Scythecat", 213, Rarity.COMMON, mage.cards.t.TerritorialScythecat.class)); + cards.add(new SetCardInfo("Throne of Makindi", 265, Rarity.RARE, mage.cards.t.ThroneOfMakindi.class)); cards.add(new SetCardInfo("Thundering Rebuke", 170, Rarity.UNCOMMON, mage.cards.t.ThunderingRebuke.class)); cards.add(new SetCardInfo("Thundering Sparkmage", 171, Rarity.UNCOMMON, mage.cards.t.ThunderingSparkmage.class)); cards.add(new SetCardInfo("Thwart the Grave", 130, Rarity.UNCOMMON, mage.cards.t.ThwartTheGrave.class));