[EOE] Implement Mutinous Massacre

This commit is contained in:
theelk801 2025-07-10 18:42:38 -04:00
parent 9d7b8676b8
commit 323961e9a3
2 changed files with 88 additions and 0 deletions

View file

@ -0,0 +1,84 @@
package mage.cards.m;
import mage.abilities.Ability;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.continuous.GainControlAllUntapGainHasteEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Outcome;
import mage.filter.FilterPermanent;
import mage.filter.StaticFilters;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.mageobject.ManaValueParityPredicate;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.players.Player;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class MutinousMassacre extends CardImpl {
public MutinousMassacre(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{B}{B}{R}{R}");
// Choose odd or even. Destroy each creature with mana value of the chosen quality. Then gain control of all creatures until end of turn. Untap them. They gain haste until end of turn.
this.getSpellAbility().addEffect(new MutinousMassacreEffect());
this.getSpellAbility().addEffect(new GainControlAllUntapGainHasteEffect(StaticFilters.FILTER_PERMANENT_CREATURES).concatBy("Then"));
}
private MutinousMassacre(final MutinousMassacre card) {
super(card);
}
@Override
public MutinousMassacre copy() {
return new MutinousMassacre(this);
}
}
class MutinousMassacreEffect extends OneShotEffect {
private static final FilterPermanent evenFilter = new FilterCreaturePermanent();
private static final FilterPermanent oddFilter = new FilterCreaturePermanent();
static {
evenFilter.add(ManaValueParityPredicate.EVEN);
oddFilter.add(ManaValueParityPredicate.ODD);
}
MutinousMassacreEffect() {
super(Outcome.Benefit);
staticText = "choose odd or even. Destroy each creature with mana value of the chosen quality";
}
private MutinousMassacreEffect(final MutinousMassacreEffect effect) {
super(effect);
}
@Override
public MutinousMassacreEffect copy() {
return new MutinousMassacreEffect(this);
}
@Override
public boolean apply(Game game, Ability source) {
Player player = game.getPlayer(source.getControllerId());
if (player == null) {
return false;
}
FilterPermanent filter = player.chooseUse(
outcome, "Odd or even?", null,
"Odd", "Even", source, game
) ? oddFilter : evenFilter;
for (Permanent permanent : game.getBattlefield().getActivePermanents(
filter, source.getControllerId(), source, game
)) {
permanent.destroy(source, game);
}
return true;
}
}

View file

@ -115,6 +115,10 @@ public final class EdgeOfEternities extends ExpansionSet {
cards.add(new SetCardInfo("Mountain", 274, Rarity.LAND, mage.cards.basiclands.Mountain.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Mountain", 370, Rarity.LAND, mage.cards.basiclands.Mountain.class, FULL_ART_BFZ_VARIOUS));
cards.add(new SetCardInfo("Mouth of the Storm", 70, Rarity.UNCOMMON, mage.cards.m.MouthOfTheStorm.class));
cards.add(new SetCardInfo("Mutinous Massacre", 222, Rarity.RARE, mage.cards.m.MutinousMassacre.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Mutinous Massacre", 314, Rarity.RARE, mage.cards.m.MutinousMassacre.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Mutinous Massacre", 363, Rarity.MYTHIC, mage.cards.m.MutinousMassacre.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Mutinous Massacre", 389, Rarity.MYTHIC, mage.cards.m.MutinousMassacre.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Nova Hellkite", 148, Rarity.RARE, mage.cards.n.NovaHellkite.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Nova Hellkite", 309, Rarity.RARE, mage.cards.n.NovaHellkite.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Nutrient Block", 243, Rarity.COMMON, mage.cards.n.NutrientBlock.class));