From f142e9570a8fdee0a2ea5ef73a005eb836315cc2 Mon Sep 17 00:00:00 2001 From: Evan Kranzler Date: Fri, 10 Sep 2021 09:45:22 -0400 Subject: [PATCH] [MID] Implemented Chaplain of Alms / Chapel Shieldgeist --- .../src/mage/cards/c/ChapelShieldgeist.java | 61 +++++++++++++++++++ .../src/mage/cards/c/ChaplainOfAlms.java | 48 +++++++++++++++ .../src/mage/sets/InnistradMidnightHunt.java | 2 + 3 files changed, 111 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/c/ChapelShieldgeist.java create mode 100644 Mage.Sets/src/mage/cards/c/ChaplainOfAlms.java diff --git a/Mage.Sets/src/mage/cards/c/ChapelShieldgeist.java b/Mage.Sets/src/mage/cards/c/ChapelShieldgeist.java new file mode 100644 index 00000000000..397c975f90c --- /dev/null +++ b/Mage.Sets/src/mage/cards/c/ChapelShieldgeist.java @@ -0,0 +1,61 @@ +package mage.cards.c; + +import mage.MageInt; +import mage.abilities.common.PutIntoGraveFromAnywhereSourceAbility; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.costs.mana.GenericManaCost; +import mage.abilities.effects.common.ExileSourceEffect; +import mage.abilities.effects.common.continuous.GainAbilityControlledEffect; +import mage.abilities.keyword.FirstStrikeAbility; +import mage.abilities.keyword.FlyingAbility; +import mage.abilities.keyword.WardAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.SubType; +import mage.filter.StaticFilters; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class ChapelShieldgeist extends CardImpl { + + public ChapelShieldgeist(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, ""); + + this.subtype.add(SubType.SPIRIT); + this.subtype.add(SubType.CLERIC); + this.power = new MageInt(2); + this.toughness = new MageInt(1); + this.color.setWhite(true); + this.transformable = true; + this.nightCard = true; + + // Flying + this.addAbility(FlyingAbility.getInstance()); + + // First strike + this.addAbility(FirstStrikeAbility.getInstance()); + + // Each creature you control has ward {1}. + this.addAbility(new SimpleStaticAbility(new GainAbilityControlledEffect( + new WardAbility(new GenericManaCost(1)), Duration.WhileOnBattlefield, + StaticFilters.FILTER_PERMANENT_CREATURE + ).setText("each creature you control has ward {1}"))); + + // If Chapel Shieldgeist would be put into a graveyard from anywhere, exile it instead. + this.addAbility(new PutIntoGraveFromAnywhereSourceAbility(new ExileSourceEffect().setText("exile it instead"))); + } + + private ChapelShieldgeist(final ChapelShieldgeist card) { + super(card); + } + + @Override + public ChapelShieldgeist copy() { + return new ChapelShieldgeist(this); + } +} diff --git a/Mage.Sets/src/mage/cards/c/ChaplainOfAlms.java b/Mage.Sets/src/mage/cards/c/ChaplainOfAlms.java new file mode 100644 index 00000000000..371ec588518 --- /dev/null +++ b/Mage.Sets/src/mage/cards/c/ChaplainOfAlms.java @@ -0,0 +1,48 @@ +package mage.cards.c; + +import mage.MageInt; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.keyword.DisturbAbility; +import mage.abilities.keyword.FirstStrikeAbility; +import mage.abilities.keyword.WardAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.SubType; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class ChaplainOfAlms extends CardImpl { + + public ChaplainOfAlms(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}"); + + this.subtype.add(SubType.HUMAN); + this.subtype.add(SubType.CLERIC); + this.power = new MageInt(1); + this.toughness = new MageInt(1); + this.transformable = true; + this.secondSideCardClazz = mage.cards.c.ChapelShieldgeist.class; + + // First strike + this.addAbility(FirstStrikeAbility.getInstance()); + + // Ward {1} + this.addAbility(new WardAbility(new ManaCostsImpl<>("{1}"))); + + // Disturb {3}{W} + this.addAbility(new DisturbAbility(new ManaCostsImpl<>("{3}{W}"))); + } + + private ChaplainOfAlms(final ChaplainOfAlms card) { + super(card); + } + + @Override + public ChaplainOfAlms copy() { + return new ChaplainOfAlms(this); + } +} diff --git a/Mage.Sets/src/mage/sets/InnistradMidnightHunt.java b/Mage.Sets/src/mage/sets/InnistradMidnightHunt.java index 6e84c05b77b..a97b556690a 100644 --- a/Mage.Sets/src/mage/sets/InnistradMidnightHunt.java +++ b/Mage.Sets/src/mage/sets/InnistradMidnightHunt.java @@ -53,6 +53,8 @@ public final class InnistradMidnightHunt extends ExpansionSet { cards.add(new SetCardInfo("Cathartic Pyre", 133, Rarity.UNCOMMON, mage.cards.c.CatharticPyre.class)); cards.add(new SetCardInfo("Celestus Sanctifier", 12, Rarity.COMMON, mage.cards.c.CelestusSanctifier.class)); cards.add(new SetCardInfo("Champion of the Perished", 91, Rarity.RARE, mage.cards.c.ChampionOfThePerished.class)); + cards.add(new SetCardInfo("Chapel Shieldgeist", 13, Rarity.UNCOMMON, mage.cards.c.ChapelShieldgeist.class)); + cards.add(new SetCardInfo("Chaplain of Alms", 13, Rarity.UNCOMMON, mage.cards.c.ChaplainOfAlms.class)); cards.add(new SetCardInfo("Clear Shot", 176, Rarity.UNCOMMON, mage.cards.c.ClearShot.class)); cards.add(new SetCardInfo("Consider", 44, Rarity.COMMON, mage.cards.c.Consider.class)); cards.add(new SetCardInfo("Contortionist Troupe", 178, Rarity.UNCOMMON, mage.cards.c.ContortionistTroupe.class));