From ebc8bb779df386a8a924c5b233ebd4a17e1dc442 Mon Sep 17 00:00:00 2001 From: Susucre <34709007+Susucre@users.noreply.github.com> Date: Wed, 1 Nov 2023 16:29:28 +0100 Subject: [PATCH] [LCI] Implement Dreadmaw's Ire --- Mage.Sets/src/mage/cards/d/DreadmawsIre.java | 100 ++++++++++++++++++ .../src/mage/sets/TheLostCavernsOfIxalan.java | 1 + 2 files changed, 101 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/d/DreadmawsIre.java diff --git a/Mage.Sets/src/mage/cards/d/DreadmawsIre.java b/Mage.Sets/src/mage/cards/d/DreadmawsIre.java new file mode 100644 index 00000000000..3732a61c7e3 --- /dev/null +++ b/Mage.Sets/src/mage/cards/d/DreadmawsIre.java @@ -0,0 +1,100 @@ +package mage.cards.d; + +import mage.abilities.TriggeredAbilityImpl; +import mage.abilities.effects.common.DestroyTargetEffect; +import mage.abilities.effects.common.continuous.BoostTargetEffect; +import mage.abilities.effects.common.continuous.GainAbilityTargetEffect; +import mage.abilities.keyword.TrampleAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.Zone; +import mage.filter.FilterPermanent; +import mage.filter.common.FilterArtifactPermanent; +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 mage.target.common.TargetAttackingCreature; + +import java.util.UUID; + +/** + * @author Susucr + */ +public final class DreadmawsIre extends CardImpl { + + public DreadmawsIre(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{R}"); + + // Until end of turn, target attacking creature gets +2/+2 and gains trample and "Whenever this creature deals combat damage to a player, destroy target artifact that player controls." + this.getSpellAbility().addTarget(new TargetAttackingCreature()); + this.getSpellAbility().addEffect(new BoostTargetEffect(2, 2) + .setText("Until end of turn, target attacking creature gets +2/+2")); + this.getSpellAbility().addEffect(new GainAbilityTargetEffect(TrampleAbility.getInstance()) + .setText("and gains trample")); + + this.getSpellAbility().addEffect(new GainAbilityTargetEffect( + new DreadmawsIreTriggeredAbility() + ).setText("and \"Whenever this creature deals combat damage to a player, destroy target artifact that player controls.\"")); + } + + private DreadmawsIre(final DreadmawsIre card) { + super(card); + } + + @Override + public DreadmawsIre copy() { + return new DreadmawsIre(this); + } +} + +/** + * Inspired by {@link mage.cards.t.TrygonPredator} + */ +class DreadmawsIreTriggeredAbility extends TriggeredAbilityImpl { + + public DreadmawsIreTriggeredAbility() { + super(Zone.BATTLEFIELD, new DestroyTargetEffect(), false); + } + + private DreadmawsIreTriggeredAbility(final DreadmawsIreTriggeredAbility ability) { + super(ability); + } + + @Override + public DreadmawsIreTriggeredAbility copy() { + return new DreadmawsIreTriggeredAbility(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()) { + return false; + } + + Player player = game.getPlayer(event.getTargetId()); + if (player == null) { + return false; + } + + FilterPermanent filter = new FilterArtifactPermanent("an artifact controlled by " + player.getLogName()); + filter.add(new ControllerIdPredicate(event.getTargetId())); + + this.getTargets().clear(); + this.addTarget(new TargetPermanent(filter)); + return true; + } + + @Override + public String getRule() { + return "Whenever {this} deals combat damage to a player, destroy target artifact that player controls."; + } +} diff --git a/Mage.Sets/src/mage/sets/TheLostCavernsOfIxalan.java b/Mage.Sets/src/mage/sets/TheLostCavernsOfIxalan.java index 1d33360c39f..8e1f70d2d29 100644 --- a/Mage.Sets/src/mage/sets/TheLostCavernsOfIxalan.java +++ b/Mage.Sets/src/mage/sets/TheLostCavernsOfIxalan.java @@ -65,6 +65,7 @@ public final class TheLostCavernsOfIxalan extends ExpansionSet { cards.add(new SetCardInfo("Digsite Conservator", 252, Rarity.UNCOMMON, mage.cards.d.DigsiteConservator.class)); cards.add(new SetCardInfo("Dinotomaton", 144, Rarity.COMMON, mage.cards.d.Dinotomaton.class)); cards.add(new SetCardInfo("Dowsing Device", 146, Rarity.UNCOMMON, mage.cards.d.DowsingDevice.class)); + cards.add(new SetCardInfo("Dreadmaw's Ire", 147, Rarity.UNCOMMON, mage.cards.d.DreadmawsIre.class)); cards.add(new SetCardInfo("Dusk Rose Reliquary", 10, Rarity.UNCOMMON, mage.cards.d.DuskRoseReliquary.class)); cards.add(new SetCardInfo("Earthshaker Dreadmaw", 183, Rarity.UNCOMMON, mage.cards.e.EarthshakerDreadmaw.class)); cards.add(new SetCardInfo("Enterprising Scallywag", 148, Rarity.UNCOMMON, mage.cards.e.EnterprisingScallywag.class));