diff --git a/Mage.Sets/src/mage/cards/s/ScionOfCalamity.java b/Mage.Sets/src/mage/cards/s/ScionOfCalamity.java new file mode 100644 index 00000000000..7001a883edc --- /dev/null +++ b/Mage.Sets/src/mage/cards/s/ScionOfCalamity.java @@ -0,0 +1,95 @@ +package mage.cards.s; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.TriggeredAbilityImpl; +import mage.abilities.effects.common.DestroyTargetEffect; +import mage.abilities.keyword.MyriadAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.SubType; +import mage.constants.Zone; +import mage.filter.FilterPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.permanent.ControllerIdPredicate; +import mage.game.Game; +import mage.game.events.DamagedPlayerEvent; +import mage.game.events.GameEvent; +import mage.players.Player; +import mage.target.TargetPermanent; + +/** + * @author + */ +public final class ScionOfCalamity extends CardImpl { + + public ScionOfCalamity(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}{G}"); + + this.subtype.add(SubType.DINOSAUR); + this.power = new MageInt(5); + this.toughness = new MageInt(5); + + // Myriad + this.addAbility(new MyriadAbility(true)); + + // Whenever Scion of Calamity deals combat damage to a player, destroy target artifact or enchantment that player controls. + this.addAbility(new ScionOfCalamityTriggeredAbility()); + } + + private ScionOfCalamity(final ScionOfCalamity card) { + super(card); + } + + @Override + public ScionOfCalamity copy() { + return new ScionOfCalamity(this); + } +} + +class ScionOfCalamityTriggeredAbility extends TriggeredAbilityImpl { + + ScionOfCalamityTriggeredAbility() { + super(Zone.BATTLEFIELD, new DestroyTargetEffect(), false); + } + + private ScionOfCalamityTriggeredAbility(final ScionOfCalamityTriggeredAbility ability) { + super(ability); + } + + @Override + public ScionOfCalamityTriggeredAbility copy() { + return new ScionOfCalamityTriggeredAbility(this); + } + + @Override + public boolean checkEventType(GameEvent event, Game game) { + return event.getType() == GameEvent.EventType.DAMAGED_PLAYER; + } + + @Override + public boolean checkTrigger(GameEvent event, Game game) { + if (event.getSourceId().equals(this.sourceId) && ((DamagedPlayerEvent) event).isCombatDamage()) { + Player player = game.getPlayer(event.getTargetId()); + if (player != null) { + FilterPermanent filter = new FilterPermanent("an artifact or enchantment controlled by " + player.getLogName()); + filter.add(Predicates.or( + CardType.ARTIFACT.getPredicate(), + CardType.ENCHANTMENT.getPredicate())); + filter.add(new ControllerIdPredicate(event.getTargetId())); + + this.getTargets().clear(); + this.addTarget(new TargetPermanent(filter)); + return true; + } + } + return false; + } + + @Override + public String getRule() { + return "Whenever {this} deals combat damage to a player, " + + "destroy target artifact or enchantment that player controls."; + } +} diff --git a/Mage.Sets/src/mage/cards/s/SunderShaman.java b/Mage.Sets/src/mage/cards/s/SunderShaman.java index c60b70ff8df..79f4d679a1f 100644 --- a/Mage.Sets/src/mage/cards/s/SunderShaman.java +++ b/Mage.Sets/src/mage/cards/s/SunderShaman.java @@ -1,5 +1,6 @@ package mage.cards.s; +import java.util.UUID; import mage.MageInt; import mage.abilities.TriggeredAbilityImpl; import mage.abilities.common.SimpleStaticAbility; @@ -11,15 +12,14 @@ import mage.constants.CardType; import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterPermanent; -import mage.filter.StaticFilters; +import mage.filter.predicate.Predicates; import mage.filter.predicate.permanent.ControllerIdPredicate; import mage.game.Game; +import mage.game.events.DamagedPlayerEvent; import mage.game.events.GameEvent; import mage.players.Player; import mage.target.TargetPermanent; -import java.util.UUID; - /** * @author TheElk801 */ @@ -72,14 +72,19 @@ class SunderShamanTriggeredAbility extends TriggeredAbilityImpl { @Override public boolean checkTrigger(GameEvent event, Game game) { - Player opponent = game.getPlayer(event.getPlayerId()); - if (opponent != null && event.getSourceId().equals(this.sourceId)) { - FilterPermanent filter = StaticFilters.FILTER_PERMANENT_ARTIFACT_OR_ENCHANTMENT.copy(); - filter.setMessage("artifact or enchantment controlled by" + opponent.getLogName()); - filter.add(new ControllerIdPredicate(opponent.getId())); - this.getTargets().clear(); - this.addTarget(new TargetPermanent(filter)); - return true; + if (event.getSourceId().equals(this.sourceId) && ((DamagedPlayerEvent) event).isCombatDamage()) { + Player player = game.getPlayer(event.getTargetId()); + if (player != null) { + FilterPermanent filter = new FilterPermanent("an artifact or enchantment controlled by " + player.getLogName()); + filter.add(Predicates.or( + CardType.ARTIFACT.getPredicate(), + CardType.ENCHANTMENT.getPredicate())); + filter.add(new ControllerIdPredicate(event.getTargetId())); + + this.getTargets().clear(); + this.addTarget(new TargetPermanent(filter)); + return true; + } } return false; } diff --git a/Mage.Sets/src/mage/sets/LostCavernsOfIxalanCommander.java b/Mage.Sets/src/mage/sets/LostCavernsOfIxalanCommander.java index e7a319fbad3..083bb0eeda4 100644 --- a/Mage.Sets/src/mage/sets/LostCavernsOfIxalanCommander.java +++ b/Mage.Sets/src/mage/sets/LostCavernsOfIxalanCommander.java @@ -223,6 +223,7 @@ public final class LostCavernsOfIxalanCommander extends ExpansionSet { cards.add(new SetCardInfo("Sage of Fables", 169, Rarity.UNCOMMON, mage.cards.s.SageOfFables.class)); cards.add(new SetCardInfo("Sanctum Seeker", 209, Rarity.RARE, mage.cards.s.SanctumSeeker.class)); cards.add(new SetCardInfo("Savage Stomp", 257, Rarity.UNCOMMON, mage.cards.s.SavageStomp.class)); + cards.add(new SetCardInfo("Scion of Calamity", 93, Rarity.RARE, mage.cards.s.ScionOfCalamity.class)); cards.add(new SetCardInfo("Seafloor Oracle", 170, Rarity.RARE, mage.cards.s.SeafloorOracle.class)); cards.add(new SetCardInfo("Secluded Courtyard", 350, Rarity.UNCOMMON, mage.cards.s.SecludedCourtyard.class)); cards.add(new SetCardInfo("Shared Animosity", 231, Rarity.RARE, mage.cards.s.SharedAnimosity.class));