From 374827d7176fb12198ae59b948443f4b67f38629 Mon Sep 17 00:00:00 2001 From: Evan Kranzler Date: Wed, 18 Sep 2019 19:21:11 -0400 Subject: [PATCH] Implemented Castle Locthwain --- .../src/mage/cards/c/CastleArdenvale.java | 2 +- .../src/mage/cards/c/CastleEmbereth.java | 2 +- .../src/mage/cards/c/CastleGarenbrig.java | 2 +- .../src/mage/cards/c/CastleLocthwain.java | 64 +++++++++++++++++++ Mage.Sets/src/mage/sets/ThroneOfEldraine.java | 1 + 5 files changed, 68 insertions(+), 3 deletions(-) create mode 100644 Mage.Sets/src/mage/cards/c/CastleLocthwain.java diff --git a/Mage.Sets/src/mage/cards/c/CastleArdenvale.java b/Mage.Sets/src/mage/cards/c/CastleArdenvale.java index 94075da1d1..6e15956b76 100644 --- a/Mage.Sets/src/mage/cards/c/CastleArdenvale.java +++ b/Mage.Sets/src/mage/cards/c/CastleArdenvale.java @@ -37,7 +37,7 @@ public final class CastleArdenvale extends CardImpl { // Castle Ardenvale enters the battlefield tapped unless you control a Plains. this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect( new TapSourceEffect(), condition - ), "tapped unless you control an Plains")); + ), "tapped unless you control a Plains")); // {T}: Add {W}. this.addAbility(new WhiteManaAbility()); diff --git a/Mage.Sets/src/mage/cards/c/CastleEmbereth.java b/Mage.Sets/src/mage/cards/c/CastleEmbereth.java index 53ef68f844..2b4f10aea8 100644 --- a/Mage.Sets/src/mage/cards/c/CastleEmbereth.java +++ b/Mage.Sets/src/mage/cards/c/CastleEmbereth.java @@ -37,7 +37,7 @@ public final class CastleEmbereth extends CardImpl { // Castle Embereth enters the battlefield tapped unless you control a Mountain. this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect( new TapSourceEffect(), condition - ), "tapped unless you control an Mountain")); + ), "tapped unless you control a Mountain")); // {T}: Add {R}. this.addAbility(new RedManaAbility()); diff --git a/Mage.Sets/src/mage/cards/c/CastleGarenbrig.java b/Mage.Sets/src/mage/cards/c/CastleGarenbrig.java index d2144fa3be..4e79fc9239 100644 --- a/Mage.Sets/src/mage/cards/c/CastleGarenbrig.java +++ b/Mage.Sets/src/mage/cards/c/CastleGarenbrig.java @@ -40,7 +40,7 @@ public final class CastleGarenbrig extends CardImpl { // Castle Garenbrig enters the battlefield tapped unless you control a Forest. this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect( new TapSourceEffect(), condition - ), "tapped unless you control an Forest")); + ), "tapped unless you control a Forest")); // {T}: Add {G}. this.addAbility(new GreenManaAbility()); diff --git a/Mage.Sets/src/mage/cards/c/CastleLocthwain.java b/Mage.Sets/src/mage/cards/c/CastleLocthwain.java new file mode 100644 index 0000000000..06aa17106c --- /dev/null +++ b/Mage.Sets/src/mage/cards/c/CastleLocthwain.java @@ -0,0 +1,64 @@ +package mage.cards.c; + +import mage.abilities.Ability; +import mage.abilities.common.EntersBattlefieldAbility; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.condition.Condition; +import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition; +import mage.abilities.costs.common.TapSourceCost; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.decorator.ConditionalOneShotEffect; +import mage.abilities.dynamicvalue.common.CardsInControllerHandCount; +import mage.abilities.effects.common.DrawCardSourceControllerEffect; +import mage.abilities.effects.common.LoseLifeSourceControllerEffect; +import mage.abilities.effects.common.TapSourceEffect; +import mage.abilities.mana.BlackManaAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.ComparisonType; +import mage.constants.SubType; +import mage.filter.FilterPermanent; +import mage.filter.common.FilterControlledPermanent; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class CastleLocthwain extends CardImpl { + + private static final FilterPermanent filter = new FilterControlledPermanent(SubType.SWAMP); + private static final Condition condition + = new PermanentsOnTheBattlefieldCondition(filter, ComparisonType.EQUAL_TO, 0); + + public CastleLocthwain(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.LAND}, ""); + + // Castle Locthwain enters the battlefield tapped unless you control a Swamp. + this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect( + new TapSourceEffect(), condition + ), "tapped unless you control a Swamp")); + + // {T}: Add {B}. + this.addAbility(new BlackManaAbility()); + + // {1}{B}{B}, {T}: Draw a card, then you lose life equal to the number of cards in your hand. + Ability ability = new SimpleActivatedAbility( + new DrawCardSourceControllerEffect(1).setText("draw a card,"), new ManaCostsImpl("{1}{B}{B}") + ); + ability.addEffect(new LoseLifeSourceControllerEffect(CardsInControllerHandCount.instance) + .setText("then you lose life equal to the number of cards in your hand")); + ability.addCost(new TapSourceCost()); + this.addAbility(ability); + } + + private CastleLocthwain(final CastleLocthwain card) { + super(card); + } + + @Override + public CastleLocthwain copy() { + return new CastleLocthwain(this); + } +} diff --git a/Mage.Sets/src/mage/sets/ThroneOfEldraine.java b/Mage.Sets/src/mage/sets/ThroneOfEldraine.java index 1a2b2c9d75..03b0494ef9 100644 --- a/Mage.Sets/src/mage/sets/ThroneOfEldraine.java +++ b/Mage.Sets/src/mage/sets/ThroneOfEldraine.java @@ -53,6 +53,7 @@ public final class ThroneOfEldraine extends ExpansionSet { cards.add(new SetCardInfo("Castle Ardenvale", 238, Rarity.RARE, mage.cards.c.CastleArdenvale.class)); cards.add(new SetCardInfo("Castle Embereth", 239, Rarity.RARE, mage.cards.c.CastleEmbereth.class)); cards.add(new SetCardInfo("Castle Garenbrig", 240, Rarity.RARE, mage.cards.c.CastleGarenbrig.class)); + cards.add(new SetCardInfo("Castle Locthwain", 241, Rarity.RARE, mage.cards.c.CastleLocthwain.class)); cards.add(new SetCardInfo("Castle Vantress", 242, Rarity.RARE, mage.cards.c.CastleVantress.class)); cards.add(new SetCardInfo("Cauldron Familiar", 81, Rarity.UNCOMMON, mage.cards.c.CauldronFamiliar.class)); cards.add(new SetCardInfo("Charming Prince", 8, Rarity.RARE, mage.cards.c.CharmingPrince.class));