From 4258d6f1c1d129d77254bdd408a7af0ca5ad8180 Mon Sep 17 00:00:00 2001 From: Evan Kranzler Date: Mon, 17 Jun 2019 18:30:31 -0400 Subject: [PATCH] Implemented Flame Sweep --- Mage.Sets/src/mage/cards/f/FlameSweep.java | 58 ++++++++++++++++++++++ Mage.Sets/src/mage/sets/CoreSet2020.java | 1 + 2 files changed, 59 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/f/FlameSweep.java diff --git a/Mage.Sets/src/mage/cards/f/FlameSweep.java b/Mage.Sets/src/mage/cards/f/FlameSweep.java new file mode 100644 index 00000000000..5fb3d7b6c20 --- /dev/null +++ b/Mage.Sets/src/mage/cards/f/FlameSweep.java @@ -0,0 +1,58 @@ +package mage.cards.f; + +import mage.abilities.effects.common.DamageAllEffect; +import mage.abilities.keyword.FlyingAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.filter.FilterPermanent; +import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.ObjectPlayer; +import mage.filter.predicate.ObjectPlayerPredicate; +import mage.game.Game; +import mage.game.permanent.Permanent; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class FlameSweep extends CardImpl { + + private static final FilterPermanent filter + = new FilterCreaturePermanent("creature except for creatures you control with flying"); + + static { + filter.add(FlameSweepPredicate.instance); + } + + public FlameSweep(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{R}"); + + // Flame sweep deals 2 damage to each creature except for creatures you control with flying. + this.getSpellAbility().addEffect(new DamageAllEffect(2, filter)); + } + + private FlameSweep(final FlameSweep card) { + super(card); + } + + @Override + public FlameSweep copy() { + return new FlameSweep(this); + } +} + +enum FlameSweepPredicate implements ObjectPlayerPredicate> { + instance; + + @Override + public boolean apply(ObjectPlayer input, Game game) { + Permanent object = input.getObject(); + UUID playerId = input.getPlayerId(); + return !(object.isControlledBy(playerId) + && object.getAbilities(game).stream().anyMatch( + ability -> ability.getClass().equals(FlyingAbility.class) + )); + } +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/CoreSet2020.java b/Mage.Sets/src/mage/sets/CoreSet2020.java index 247417d0d0f..17525bed635 100644 --- a/Mage.Sets/src/mage/sets/CoreSet2020.java +++ b/Mage.Sets/src/mage/sets/CoreSet2020.java @@ -40,6 +40,7 @@ public final class CoreSet2020 extends ExpansionSet { cards.add(new SetCardInfo("Dragon Mage", 135, Rarity.UNCOMMON, mage.cards.d.DragonMage.class)); cards.add(new SetCardInfo("Dread Presence", 96, Rarity.RARE, mage.cards.d.DreadPresence.class)); cards.add(new SetCardInfo("Empyrean Eagle", 208, Rarity.UNCOMMON, mage.cards.e.EmpyreanEagle.class)); + cards.add(new SetCardInfo("Flame Sweep", 139, Rarity.UNCOMMON, mage.cards.f.FlameSweep.class)); cards.add(new SetCardInfo("Infuriate", 145, Rarity.COMMON, mage.cards.i.Infuriate.class)); cards.add(new SetCardInfo("Kykar, Wind's Fury", 212, Rarity.MYTHIC, mage.cards.k.KykarWindsFury.class)); cards.add(new SetCardInfo("Leyline of Sanctity", 26, Rarity.RARE, mage.cards.l.LeylineOfSanctity.class));