From 44063a5ed824b6397bed8fff1c33e738a0d47bd4 Mon Sep 17 00:00:00 2001 From: ciaccona007 Date: Mon, 4 Nov 2024 09:44:14 -0500 Subject: [PATCH] [FDN] Implement Midnight Snack --- Mage.Sets/src/mage/cards/m/MidnightSnack.java | 61 +++++++++++++++++++ Mage.Sets/src/mage/sets/Foundations.java | 1 + 2 files changed, 62 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/m/MidnightSnack.java diff --git a/Mage.Sets/src/mage/cards/m/MidnightSnack.java b/Mage.Sets/src/mage/cards/m/MidnightSnack.java new file mode 100644 index 00000000000..a2604a375f1 --- /dev/null +++ b/Mage.Sets/src/mage/cards/m/MidnightSnack.java @@ -0,0 +1,61 @@ +package mage.cards.m; + +import mage.abilities.Ability; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.condition.common.RaidCondition; +import mage.abilities.costs.common.SacrificeSourceCost; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.dynamicvalue.common.ControllerGainedLifeCount; +import mage.abilities.effects.common.CreateTokenEffect; +import mage.abilities.effects.common.LoseLifeTargetEffect; +import mage.abilities.hint.common.RaidHint; +import mage.abilities.triggers.BeginningOfEndStepTriggeredAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.AbilityWord; +import mage.constants.CardType; +import mage.constants.Zone; +import mage.game.permanent.token.FoodToken; +import mage.target.common.TargetOpponent; +import mage.watchers.common.PlayerAttackedWatcher; +import mage.watchers.common.PlayerGainedLifeWatcher; + +import java.util.UUID; + +/** + * + * @author ciaccona007 + */ +public final class MidnightSnack extends CardImpl { + + public MidnightSnack(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{B}"); + + + // Raid -- At the beginning of your end step, if you attacked this turn, create a Food token. + Ability ability = new BeginningOfEndStepTriggeredAbility( + new CreateTokenEffect(new FoodToken()) + ).withInterveningIf(RaidCondition.instance); + this.addAbility(ability.setAbilityWord(AbilityWord.RAID).addHint(RaidHint.instance), new PlayerAttackedWatcher()); + + // {2}{B}, Sacrifice this enchantment: Target opponent loses X life, where X is the amount of life you gained this turn. + Ability sacrificeAbility = new SimpleActivatedAbility( + Zone.BATTLEFIELD, + new LoseLifeTargetEffect(ControllerGainedLifeCount.instance), + new ManaCostsImpl<>("{2}{B}") + ); + sacrificeAbility.addCost(new SacrificeSourceCost()); + sacrificeAbility.addTarget(new TargetOpponent()); + ability.addHint(ControllerGainedLifeCount.getHint()); + this.addAbility(sacrificeAbility, new PlayerGainedLifeWatcher()); + } + + private MidnightSnack(final MidnightSnack card) { + super(card); + } + + @Override + public MidnightSnack copy() { + return new MidnightSnack(this); + } +} diff --git a/Mage.Sets/src/mage/sets/Foundations.java b/Mage.Sets/src/mage/sets/Foundations.java index 0d2c09de695..e9ca02ab6ff 100644 --- a/Mage.Sets/src/mage/sets/Foundations.java +++ b/Mage.Sets/src/mage/sets/Foundations.java @@ -325,6 +325,7 @@ public final class Foundations extends ExpansionSet { cards.add(new SetCardInfo("Meteor Golem", 256, Rarity.UNCOMMON, mage.cards.m.MeteorGolem.class)); cards.add(new SetCardInfo("Micromancer", 158, Rarity.UNCOMMON, mage.cards.m.Micromancer.class)); cards.add(new SetCardInfo("Midnight Reaper", 609, Rarity.RARE, mage.cards.m.MidnightReaper.class)); + cards.add(new SetCardInfo("Midnight Snack", 65, Rarity.UNCOMMON, mage.cards.m.MidnightSnack.class)); cards.add(new SetCardInfo("Mild-Mannered Librarian", 228, Rarity.UNCOMMON, mage.cards.m.MildManneredLibrarian.class)); cards.add(new SetCardInfo("Mindsparker", 628, Rarity.UNCOMMON, mage.cards.m.Mindsparker.class)); cards.add(new SetCardInfo("Mischievous Mystic", 47, Rarity.UNCOMMON, mage.cards.m.MischievousMystic.class));