diff --git a/Mage.Sets/src/mage/cards/b/BurnDownTheHouse.java b/Mage.Sets/src/mage/cards/b/BurnDownTheHouse.java new file mode 100644 index 00000000000..9b8ddee2ebb --- /dev/null +++ b/Mage.Sets/src/mage/cards/b/BurnDownTheHouse.java @@ -0,0 +1,80 @@ +package mage.cards.b; + +import mage.abilities.Ability; +import mage.abilities.Mode; +import mage.abilities.effects.OneShotEffect; +import mage.abilities.effects.common.DamageAllEffect; +import mage.abilities.effects.common.continuous.GainAbilityTargetEffect; +import mage.abilities.keyword.HasteAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Outcome; +import mage.filter.FilterPermanent; +import mage.filter.common.FilterCreatureOrPlaneswalkerPermanent; +import mage.game.Game; +import mage.game.permanent.token.DevilToken; +import mage.game.permanent.token.Token; +import mage.target.targetpointer.FixedTargets; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class BurnDownTheHouse extends CardImpl { + + private static final FilterPermanent filter + = new FilterCreatureOrPlaneswalkerPermanent("creature and each planeswalker"); + + public BurnDownTheHouse(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{R}{R}"); + + // Choose one — + // • Burn Down the House deals 5 damage to each creature and each planeswalker. + this.getSpellAbility().addEffect(new DamageAllEffect(5, filter)); + + // • Create three 1/1 red Devil creature tokens with "When this creature dies, it deals 1 damage to any target." They gain haste until end of turn. + this.getSpellAbility().addMode(new Mode(new BurnDownTheHouseEffect())); + } + + private BurnDownTheHouse(final BurnDownTheHouse card) { + super(card); + } + + @Override + public BurnDownTheHouse copy() { + return new BurnDownTheHouse(this); + } +} + +class BurnDownTheHouseEffect extends OneShotEffect { + + BurnDownTheHouseEffect() { + super(Outcome.Benefit); + staticText = "create three 1/1 red Devil creature tokens with " + + "\"When this creature dies, it deals 1 damage to any target.\" They gain haste until end of turn"; + } + + private BurnDownTheHouseEffect(final BurnDownTheHouseEffect effect) { + super(effect); + } + + @Override + public BurnDownTheHouseEffect copy() { + return new BurnDownTheHouseEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + Token token = new DevilToken(); + token.putOntoBattlefield(3, game, source, source.getControllerId()); + game.addEffect(new GainAbilityTargetEffect( + HasteAbility.getInstance(), Duration.EndOfTurn + ).setTargetPointer(new FixedTargets(token, game)), source); + return true; + } +} +// watch out +// you might get what you're after diff --git a/Mage.Sets/src/mage/sets/InnistradMidnightHunt.java b/Mage.Sets/src/mage/sets/InnistradMidnightHunt.java index 0926709a71b..0a71e727c09 100644 --- a/Mage.Sets/src/mage/sets/InnistradMidnightHunt.java +++ b/Mage.Sets/src/mage/sets/InnistradMidnightHunt.java @@ -43,6 +43,7 @@ public final class InnistradMidnightHunt extends ExpansionSet { cards.add(new SetCardInfo("Briarbridge Tracker", 172, Rarity.RARE, mage.cards.b.BriarbridgeTracker.class)); cards.add(new SetCardInfo("Brimstone Vandal", 130, Rarity.COMMON, mage.cards.b.BrimstoneVandal.class)); cards.add(new SetCardInfo("Burly Breaker", 174, Rarity.UNCOMMON, mage.cards.b.BurlyBreaker.class)); + cards.add(new SetCardInfo("Burn Down the House", 131, Rarity.RARE, mage.cards.b.BurnDownTheHouse.class)); cards.add(new SetCardInfo("Can't Stay Away", 213, Rarity.RARE, mage.cards.c.CantStayAway.class)); cards.add(new SetCardInfo("Candlegrove Witch", 8, Rarity.COMMON, mage.cards.c.CandlegroveWitch.class)); cards.add(new SetCardInfo("Candlelit Cavalry", 175, Rarity.COMMON, mage.cards.c.CandlelitCavalry.class)); diff --git a/Mage/src/main/java/mage/target/targetpointer/FixedTargets.java b/Mage/src/main/java/mage/target/targetpointer/FixedTargets.java index d0d9abdd0b9..5c8db89f6a9 100644 --- a/Mage/src/main/java/mage/target/targetpointer/FixedTargets.java +++ b/Mage/src/main/java/mage/target/targetpointer/FixedTargets.java @@ -8,8 +8,10 @@ import mage.cards.Cards; import mage.constants.Zone; import mage.game.Game; import mage.game.permanent.Permanent; +import mage.game.permanent.token.Token; import java.util.*; +import java.util.stream.Collectors; /** * @author LevelX2 @@ -38,6 +40,10 @@ public class FixedTargets extends TargetPointerImpl { this.initialized = true; } + public FixedTargets(Token token, Game game) { + this(token.getLastAddedTokenIds().stream().map(game::getPermanent).collect(Collectors.toList()), game); + } + public FixedTargets(List permanents, Game game) { super();