From 6775c3088eaa7650c777c1705dfe1cb6ab89a936 Mon Sep 17 00:00:00 2001 From: theelk801 Date: Tue, 10 Sep 2024 18:38:59 -0400 Subject: [PATCH] [DSK] Implement Conductive Machete --- .../src/mage/cards/c/ConductiveMachete.java | 43 +++++++++++++++++++ .../src/mage/cards/c/CursedWindbreaker.java | 40 +---------------- .../src/mage/sets/DuskmournHouseOfHorror.java | 1 + .../common/ManifestDreadThenAttachEffect.java | 42 ++++++++++++++++++ 4 files changed, 88 insertions(+), 38 deletions(-) create mode 100644 Mage.Sets/src/mage/cards/c/ConductiveMachete.java create mode 100644 Mage/src/main/java/mage/abilities/effects/common/ManifestDreadThenAttachEffect.java diff --git a/Mage.Sets/src/mage/cards/c/ConductiveMachete.java b/Mage.Sets/src/mage/cards/c/ConductiveMachete.java new file mode 100644 index 00000000000..afc99303f5a --- /dev/null +++ b/Mage.Sets/src/mage/cards/c/ConductiveMachete.java @@ -0,0 +1,43 @@ +package mage.cards.c; + +import mage.abilities.common.EntersBattlefieldTriggeredAbility; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.effects.common.ManifestDreadThenAttachEffect; +import mage.abilities.effects.common.continuous.BoostEquippedEffect; +import mage.abilities.keyword.EquipAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.SubType; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class ConductiveMachete extends CardImpl { + + public ConductiveMachete(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}"); + + this.subtype.add(SubType.EQUIPMENT); + + // When Conductive Machete enters, manifest dread, then attach Conductive Machete to that creature. + this.addAbility(new EntersBattlefieldTriggeredAbility(new ManifestDreadThenAttachEffect())); + + // Equipped creature gets +2/+1. + this.addAbility(new SimpleStaticAbility(new BoostEquippedEffect(2, 1))); + + // Equip {4} + this.addAbility(new EquipAbility(4)); + } + + private ConductiveMachete(final ConductiveMachete card) { + super(card); + } + + @Override + public ConductiveMachete copy() { + return new ConductiveMachete(this); + } +} diff --git a/Mage.Sets/src/mage/cards/c/CursedWindbreaker.java b/Mage.Sets/src/mage/cards/c/CursedWindbreaker.java index 93d95a645f5..0adbba0c400 100644 --- a/Mage.Sets/src/mage/cards/c/CursedWindbreaker.java +++ b/Mage.Sets/src/mage/cards/c/CursedWindbreaker.java @@ -1,22 +1,16 @@ package mage.cards.c; -import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.common.SimpleStaticAbility; -import mage.abilities.effects.OneShotEffect; +import mage.abilities.effects.common.ManifestDreadThenAttachEffect; import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect; -import mage.abilities.effects.keyword.ManifestDreadEffect; import mage.abilities.keyword.EquipAbility; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.AttachmentType; import mage.constants.CardType; -import mage.constants.Outcome; import mage.constants.SubType; -import mage.game.Game; -import mage.game.permanent.Permanent; -import mage.players.Player; import java.util.UUID; @@ -31,7 +25,7 @@ public final class CursedWindbreaker extends CardImpl { this.subtype.add(SubType.EQUIPMENT); // When Cursed Windbreaker enters, manifest dread, then attach Cursed Windbreaker to that creature. - this.addAbility(new EntersBattlefieldTriggeredAbility(new CursedWindbreakerEffect())); + this.addAbility(new EntersBattlefieldTriggeredAbility(new ManifestDreadThenAttachEffect())); // Equipped creature has flying. this.addAbility(new SimpleStaticAbility(new GainAbilityAttachedEffect( @@ -51,33 +45,3 @@ public final class CursedWindbreaker extends CardImpl { return new CursedWindbreaker(this); } } - -class CursedWindbreakerEffect extends OneShotEffect { - - CursedWindbreakerEffect() { - super(Outcome.Benefit); - staticText = "manifest dread, then attach {this} to that creature"; - } - - private CursedWindbreakerEffect(final CursedWindbreakerEffect effect) { - super(effect); - } - - @Override - public CursedWindbreakerEffect copy() { - return new CursedWindbreakerEffect(this); - } - - @Override - public boolean apply(Game game, Ability source) { - Player player = game.getPlayer(source.getControllerId()); - if (player == null) { - return false; - } - Permanent creature = ManifestDreadEffect.doManifestDread(player, source, game); - Permanent equipment = source.getSourcePermanentIfItStillExists(game); - return creature != null - && equipment != null - && creature.addAttachment(equipment.getId(), source, game); - } -} diff --git a/Mage.Sets/src/mage/sets/DuskmournHouseOfHorror.java b/Mage.Sets/src/mage/sets/DuskmournHouseOfHorror.java index 12fc3c1194e..525a4bbdee1 100644 --- a/Mage.Sets/src/mage/sets/DuskmournHouseOfHorror.java +++ b/Mage.Sets/src/mage/sets/DuskmournHouseOfHorror.java @@ -43,6 +43,7 @@ public final class DuskmournHouseOfHorror extends ExpansionSet { cards.add(new SetCardInfo("Clammy Prowler", 45, Rarity.COMMON, mage.cards.c.ClammyProwler.class)); cards.add(new SetCardInfo("Clockwork Percussionist", 130, Rarity.COMMON, mage.cards.c.ClockworkPercussionist.class)); cards.add(new SetCardInfo("Commune with Evil", 87, Rarity.UNCOMMON, mage.cards.c.CommuneWithEvil.class)); + cards.add(new SetCardInfo("Conductive Machete", 244, Rarity.UNCOMMON, mage.cards.c.ConductiveMachete.class)); cards.add(new SetCardInfo("Cult Healer", 2, Rarity.COMMON, mage.cards.c.CultHealer.class)); cards.add(new SetCardInfo("Cursed Recording", 131, Rarity.RARE, mage.cards.c.CursedRecording.class)); cards.add(new SetCardInfo("Cursed Windbreaker", 47, Rarity.UNCOMMON, mage.cards.c.CursedWindbreaker.class)); diff --git a/Mage/src/main/java/mage/abilities/effects/common/ManifestDreadThenAttachEffect.java b/Mage/src/main/java/mage/abilities/effects/common/ManifestDreadThenAttachEffect.java new file mode 100644 index 00000000000..d2999ecfc1e --- /dev/null +++ b/Mage/src/main/java/mage/abilities/effects/common/ManifestDreadThenAttachEffect.java @@ -0,0 +1,42 @@ +package mage.abilities.effects.common; + +import mage.abilities.Ability; +import mage.abilities.effects.OneShotEffect; +import mage.abilities.effects.keyword.ManifestDreadEffect; +import mage.constants.Outcome; +import mage.game.Game; +import mage.game.permanent.Permanent; +import mage.players.Player; + +/** + * @author TheElk801 + */ +public class ManifestDreadThenAttachEffect extends OneShotEffect { + + public ManifestDreadThenAttachEffect() { + super(Outcome.Benefit); + staticText = "manifest dread, then attach {this} to that creature"; + } + + private ManifestDreadThenAttachEffect(final ManifestDreadThenAttachEffect effect) { + super(effect); + } + + @Override + public ManifestDreadThenAttachEffect copy() { + return new ManifestDreadThenAttachEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + Player player = game.getPlayer(source.getControllerId()); + if (player == null) { + return false; + } + Permanent creature = ManifestDreadEffect.doManifestDread(player, source, game); + Permanent equipment = source.getSourcePermanentIfItStillExists(game); + return creature != null + && equipment != null + && creature.addAttachment(equipment.getId(), source, game); + } +}