diff --git a/Mage.Sets/src/mage/cards/m/MariposaMilitaryBase.java b/Mage.Sets/src/mage/cards/m/MariposaMilitaryBase.java new file mode 100644 index 00000000000..a655b6d8db5 --- /dev/null +++ b/Mage.Sets/src/mage/cards/m/MariposaMilitaryBase.java @@ -0,0 +1,70 @@ +package mage.cards.m; + +import mage.abilities.Ability; +import mage.abilities.common.EntersBattlefieldAbility; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.CostAdjuster; +import mage.abilities.costs.common.TapSourceCost; +import mage.abilities.costs.mana.GenericManaCost; +import mage.abilities.dynamicvalue.common.SourceControllerCountersCount; +import mage.abilities.effects.common.DrawCardSourceControllerEffect; +import mage.abilities.effects.common.InfoEffect; +import mage.abilities.effects.common.TapSourceEffect; +import mage.abilities.effects.common.counter.AddCountersPlayersEffect; +import mage.abilities.mana.ColorlessManaAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.TargetController; +import mage.counters.CounterType; +import mage.game.Game; +import mage.util.CardUtil; + +import java.util.UUID; + +/** + * @author Susucr + */ +public final class MariposaMilitaryBase extends CardImpl { + + public MariposaMilitaryBase(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.LAND}, ""); + + // You may have Mariposa Military Base enter the battlefield tapped. If you do, you get two rad counters. + Ability ability = new EntersBattlefieldAbility( + new TapSourceEffect(true).setText("tapped."), + true + ); + ability.addEffect(new AddCountersPlayersEffect(CounterType.RAD.createInstance(2), TargetController.YOU) + .setText("If you do, you get two rad counters.")); + this.addAbility(ability); + + // {T}: Add {C}. + this.addAbility(new ColorlessManaAbility()); + + // {5}, {T}: Draw a card. This ability costs {1} less to activate for each rad counter you have. + ability = new SimpleActivatedAbility(new DrawCardSourceControllerEffect(1), new GenericManaCost(5)); + ability.addEffect(new InfoEffect("This ability costs {1} less to activate for each rad counter you have")); + ability.addCost(new TapSourceCost()); + ability.setCostAdjuster(MariposaMilitaryBaseAdjuster.instance); + this.addAbility(ability); + } + + private MariposaMilitaryBase(final MariposaMilitaryBase card) { + super(card); + } + + @Override + public MariposaMilitaryBase copy() { + return new MariposaMilitaryBase(this); + } +} + +enum MariposaMilitaryBaseAdjuster implements CostAdjuster { + instance; + + @Override + public void adjustCosts(Ability ability, Game game) { + CardUtil.reduceCost(ability, SourceControllerCountersCount.RAD.calculate(game, ability, null)); + } +} diff --git a/Mage.Sets/src/mage/sets/Fallout.java b/Mage.Sets/src/mage/sets/Fallout.java index 203059f1b22..b0ef878e8e7 100644 --- a/Mage.Sets/src/mage/sets/Fallout.java +++ b/Mage.Sets/src/mage/sets/Fallout.java @@ -190,6 +190,7 @@ public final class Fallout extends ExpansionSet { cards.add(new SetCardInfo("Marcus, Mutant Mayor", 418, Rarity.RARE, mage.cards.m.MarcusMutantMayor.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Marcus, Mutant Mayor", 637, Rarity.RARE, mage.cards.m.MarcusMutantMayor.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Marcus, Mutant Mayor", 946, Rarity.RARE, mage.cards.m.MarcusMutantMayor.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Mariposa Military Base", 151, Rarity.RARE, mage.cards.m.MariposaMilitaryBase.class)); cards.add(new SetCardInfo("Marshal's Anthem", 166, Rarity.RARE, mage.cards.m.MarshalsAnthem.class)); cards.add(new SetCardInfo("Martial Coup", 167, Rarity.RARE, mage.cards.m.MartialCoup.class)); cards.add(new SetCardInfo("Masterwork of Ingenuity", 234, Rarity.RARE, mage.cards.m.MasterworkOfIngenuity.class)); diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/single/pip/MariposaMilitaryBaseTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/single/pip/MariposaMilitaryBaseTest.java new file mode 100644 index 00000000000..91fcca1c151 --- /dev/null +++ b/Mage.Tests/src/test/java/org/mage/test/cards/single/pip/MariposaMilitaryBaseTest.java @@ -0,0 +1,62 @@ +package org.mage.test.cards.single.pip; + +import mage.constants.PhaseStep; +import mage.constants.Zone; +import mage.counters.CounterType; +import org.junit.Test; +import org.mage.test.serverside.base.CardTestPlayerBase; + +/** + * @author Susucr + */ +public class MariposaMilitaryBaseTest extends CardTestPlayerBase { + + /** + * {@link mage.cards.m.MariposaMilitaryBase Mariposa Military Base} {3}{R}{W} + * Land + * You may have Mariposa Military Base enter the battlefield tapped. If you do, you get two rad counters. + * {T}: Add {C}. + * {5}, {T}: Draw a card. This ability costs {1} less to activate for each rad counter you have. + */ + private static final String mariposa = "Mariposa Military Base"; + + @Test + public void test_No_Radiation() { + setStrictChooseMode(true); + + addCard(Zone.HAND, playerA, mariposa); + addCard(Zone.BATTLEFIELD, playerA, "Swamp", 5); + + playLand(1, PhaseStep.PRECOMBAT_MAIN, playerA, mariposa); + setChoice(playerA, false); // Not tapped, no rad + activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "{5}"); + + setStopAt(1, PhaseStep.END_TURN); + execute(); + + assertTappedCount("Swamp", true, 5); + assertTappedCount(mariposa, true, 1); + assertHandCount(playerA, 1); + } + + @Test + public void test_Radiation() { + setStrictChooseMode(true); + + addCard(Zone.HAND, playerA, mariposa); + addCard(Zone.BATTLEFIELD, playerA, "Swamp", 3); + + playLand(1, PhaseStep.PRECOMBAT_MAIN, playerA, mariposa); + setChoice(playerA, true); // Tapping, get 2 rad + + activateAbility(3, PhaseStep.UPKEEP, playerA, "{5}"); + + setStopAt(3, PhaseStep.DRAW); + execute(); + + assertTappedCount("Swamp", true, 3); + assertTappedCount(mariposa, true, 1); + assertHandCount(playerA, 1 + 1); // 1 from normal draw, 1 from Mariposa + assertCounterCount(playerA, CounterType.RAD, 2); + } +}