From f60d76569a0b843645bad63853a53aa895e36719 Mon Sep 17 00:00:00 2001 From: Evan Kranzler Date: Tue, 29 Jun 2021 19:45:20 -0400 Subject: [PATCH] [AFR] Implemented Dawnbringer Cleric --- .../src/mage/cards/d/DawnbringerCleric.java | 57 +++++++++++++++++++ .../sets/AdventuresInTheForgottenRealms.java | 1 + Mage/src/main/java/mage/abilities/Mode.java | 5 ++ .../java/mage/abilities/effects/Effects.java | 10 ++++ 4 files changed, 73 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/d/DawnbringerCleric.java diff --git a/Mage.Sets/src/mage/cards/d/DawnbringerCleric.java b/Mage.Sets/src/mage/cards/d/DawnbringerCleric.java new file mode 100644 index 00000000000..3c588545226 --- /dev/null +++ b/Mage.Sets/src/mage/cards/d/DawnbringerCleric.java @@ -0,0 +1,57 @@ +package mage.cards.d; + +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.Mode; +import mage.abilities.common.EntersBattlefieldTriggeredAbility; +import mage.abilities.effects.common.DestroyTargetEffect; +import mage.abilities.effects.common.ExileTargetEffect; +import mage.abilities.effects.common.GainLifeEffect; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.SubType; +import mage.target.common.TargetCardInGraveyard; +import mage.target.common.TargetEnchantmentPermanent; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class DawnbringerCleric extends CardImpl { + + public DawnbringerCleric(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}"); + + this.subtype.add(SubType.HUMAN); + this.subtype.add(SubType.CLERIC); + this.power = new MageInt(1); + this.toughness = new MageInt(3); + + // When Dawnbringer Cleric enters the battlefield, choose one — + // • Cure Wounds — You gain 2 life. + Ability ability = new EntersBattlefieldTriggeredAbility(new GainLifeEffect(1)); + ability.getEffects().setFlavorWord("Cure Wounds"); + + // • Dispel Magic — Destroy target enchantment. + Mode mode = new Mode(new DestroyTargetEffect()); + mode.addTarget(new TargetEnchantmentPermanent()); + ability.addMode(mode.setFlavorWord("Dispel Magic")); + + // • Gentle Repose — Exile target card from a graveyard. + mode = new Mode(new ExileTargetEffect()); + mode.addTarget(new TargetCardInGraveyard()); + ability.addMode(mode.setFlavorWord("Gentle Repose")); + this.addAbility(ability); + } + + private DawnbringerCleric(final DawnbringerCleric card) { + super(card); + } + + @Override + public DawnbringerCleric copy() { + return new DawnbringerCleric(this); + } +} diff --git a/Mage.Sets/src/mage/sets/AdventuresInTheForgottenRealms.java b/Mage.Sets/src/mage/sets/AdventuresInTheForgottenRealms.java index dd97cb5fb26..202ba544f5b 100644 --- a/Mage.Sets/src/mage/sets/AdventuresInTheForgottenRealms.java +++ b/Mage.Sets/src/mage/sets/AdventuresInTheForgottenRealms.java @@ -28,6 +28,7 @@ public final class AdventuresInTheForgottenRealms extends ExpansionSet { cards.add(new SetCardInfo("Bruenor Battlehammer", 219, Rarity.UNCOMMON, mage.cards.b.BruenorBattlehammer.class)); cards.add(new SetCardInfo("Charmed Sleep", 50, Rarity.COMMON, mage.cards.c.CharmedSleep.class)); cards.add(new SetCardInfo("Cloister Gargoyle", 7, Rarity.UNCOMMON, mage.cards.c.CloisterGargoyle.class)); + cards.add(new SetCardInfo("Dawnbringer Cleric", 9, Rarity.COMMON, mage.cards.d.DawnbringerCleric.class)); cards.add(new SetCardInfo("Drizzt Do'Urden", 220, Rarity.RARE, mage.cards.d.DrizztDoUrden.class)); cards.add(new SetCardInfo("Dungeon Crawler", 99, Rarity.UNCOMMON, mage.cards.d.DungeonCrawler.class)); cards.add(new SetCardInfo("Ellywick Tumblestrum", 181, Rarity.MYTHIC, mage.cards.e.EllywickTumblestrum.class)); diff --git a/Mage/src/main/java/mage/abilities/Mode.java b/Mage/src/main/java/mage/abilities/Mode.java index 2acae731419..c4c588862b0 100644 --- a/Mage/src/main/java/mage/abilities/Mode.java +++ b/Mage/src/main/java/mage/abilities/Mode.java @@ -70,4 +70,9 @@ public class Mode implements Serializable { public void addEffect(Effect effect) { effects.add(effect); } + + public Mode setFlavorWord(String flavorWord) { + effects.setFlavorWord(flavorWord); + return this; + } } diff --git a/Mage/src/main/java/mage/abilities/effects/Effects.java b/Mage/src/main/java/mage/abilities/effects/Effects.java index d3b0948c536..3075790ae4f 100644 --- a/Mage/src/main/java/mage/abilities/effects/Effects.java +++ b/Mage/src/main/java/mage/abilities/effects/Effects.java @@ -14,11 +14,14 @@ import java.util.Arrays; */ public class Effects extends ArrayList { + private String flavorWord = null; + public Effects(Effect... effects) { this.addAll(Arrays.asList(effects)); } public Effects(final Effects effects) { + this.flavorWord = effects.flavorWord; for (Effect effect : effects) { this.add(effect.copy()); } @@ -110,6 +113,9 @@ public class Effects extends ArrayList { sbText.append('.'); } + if (flavorWord != null) { + return "" + flavorWord + " — " + CardUtil.getTextWithFirstCharUpperCase(sbText.toString()); + } return sbText.toString(); } @@ -189,4 +195,8 @@ public class Effects extends ArrayList { effect.setValue(key, value); } } + + public void setFlavorWord(String flavorWord) { + this.flavorWord = flavorWord; + } }