[FDN] Implement Midnight Snack

This commit is contained in:
ciaccona007 2024-11-04 09:44:14 -05:00
parent 0563802da5
commit 44063a5ed8
2 changed files with 62 additions and 0 deletions

View file

@ -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);
}
}

View file

@ -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));