diff --git a/Mage.Sets/src/mage/cards/s/SelfDestruct.java b/Mage.Sets/src/mage/cards/s/SelfDestruct.java new file mode 100644 index 00000000000..9c563c32492 --- /dev/null +++ b/Mage.Sets/src/mage/cards/s/SelfDestruct.java @@ -0,0 +1,95 @@ +package mage.cards.s; + +import mage.abilities.Ability; +import mage.abilities.effects.OneShotEffect; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.Outcome; +import mage.filter.common.FilterAnyTarget; +import mage.filter.predicate.other.AnotherTargetPredicate; +import mage.game.Game; +import mage.game.permanent.Permanent; +import mage.players.Player; +import mage.target.common.TargetAnyTarget; +import mage.target.common.TargetControlledCreaturePermanent; +import mage.target.targetpointer.EachTargetPointer; + +import java.util.List; +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class SelfDestruct extends CardImpl { + + private static final FilterAnyTarget filter = new FilterAnyTarget("any other target"); + + static { + filter.getPermanentFilter().add(new AnotherTargetPredicate(2)); + filter.getPlayerFilter().add(new AnotherTargetPredicate(2)); + } + + public SelfDestruct(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{R}"); + + // Target creature you control deals X damage to any other target and X damage to itself, where X is its power. + this.getSpellAbility().addEffect(new SelfDestructEffect()); + this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent()); + this.getSpellAbility().addTarget(new TargetAnyTarget().setTargetTag(2)); + } + + private SelfDestruct(final SelfDestruct card) { + super(card); + } + + @Override + public SelfDestruct copy() { + return new SelfDestruct(this); + } +} + +class SelfDestructEffect extends OneShotEffect { + + SelfDestructEffect() { + super(Outcome.Benefit); + staticText = "target creature you control deals X damage " + + "to any other target and X damage to itself, where X is its power"; + this.setTargetPointer(new EachTargetPointer()); + } + + private SelfDestructEffect(final SelfDestructEffect effect) { + super(effect); + } + + @Override + public SelfDestructEffect copy() { + return new SelfDestructEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + List targets = this.getTargetPointer().getTargets(game, source); + if (targets.size() < 2) { + return false; + } + Permanent creature = game.getPermanent(targets.get(0)); + if (creature == null) { + return false; + } + int power = creature.getPower().getValue(); + if (power < 1) { + return false; + } + Permanent permanent = game.getPermanent(targets.get(1)); + if (permanent != null) { + permanent.damage(power, creature.getId(), source, game); + } + Player player = game.getPlayer(targets.get(1)); + if (player != null) { + player.damage(power, creature.getId(), source, game); + } + permanent.damage(power, permanent.getId(), source, game); + return true; + } +} diff --git a/Mage.Sets/src/mage/sets/FinalFantasy.java b/Mage.Sets/src/mage/sets/FinalFantasy.java index e4835385cc5..41656d1e57c 100644 --- a/Mage.Sets/src/mage/sets/FinalFantasy.java +++ b/Mage.Sets/src/mage/sets/FinalFantasy.java @@ -216,6 +216,7 @@ public final class FinalFantasy extends ExpansionSet { cards.add(new SetCardInfo("Sazh Katzroy", 199, Rarity.RARE, mage.cards.s.SazhKatzroy.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Sazh Katzroy", 472, Rarity.RARE, mage.cards.s.SazhKatzroy.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Sazh's Chocobo", 200, Rarity.UNCOMMON, mage.cards.s.SazhsChocobo.class)); + cards.add(new SetCardInfo("Self-Destruct", 157, Rarity.UNCOMMON, mage.cards.s.SelfDestruct.class)); cards.add(new SetCardInfo("Sephiroth's Intervention", 116, Rarity.COMMON, mage.cards.s.SephirothsIntervention.class)); cards.add(new SetCardInfo("Sephiroth, Fabled SOLDIER", 115, Rarity.MYTHIC, mage.cards.s.SephirothFabledSOLDIER.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Sephiroth, Fabled SOLDIER", 317, Rarity.MYTHIC, mage.cards.s.SephirothFabledSOLDIER.class, NON_FULL_USE_VARIOUS));