From 73689025e1911987008a77cd256d5a2cbd834502 Mon Sep 17 00:00:00 2001 From: Susucre <34709007+Susucre@users.noreply.github.com> Date: Fri, 18 Jul 2025 18:05:33 +0200 Subject: [PATCH] implement [EOE] Orbital Plunge --- Mage.Sets/src/mage/cards/o/OrbitalPlunge.java | 71 +++++++++++++++++++ Mage.Sets/src/mage/sets/EdgeOfEternities.java | 1 + 2 files changed, 72 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/o/OrbitalPlunge.java diff --git a/Mage.Sets/src/mage/cards/o/OrbitalPlunge.java b/Mage.Sets/src/mage/cards/o/OrbitalPlunge.java new file mode 100644 index 00000000000..94fa3a24ccd --- /dev/null +++ b/Mage.Sets/src/mage/cards/o/OrbitalPlunge.java @@ -0,0 +1,71 @@ +package mage.cards.o; + +import mage.abilities.Ability; +import mage.abilities.effects.OneShotEffect; +import mage.abilities.effects.common.CreateTokenEffect; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.Outcome; +import mage.game.Game; +import mage.game.permanent.Permanent; +import mage.game.permanent.token.LanderToken; +import mage.target.common.TargetCreaturePermanent; + +import java.util.UUID; + +/** + * @author Susucr + */ +public final class OrbitalPlunge extends CardImpl { + + public OrbitalPlunge(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{R}"); + + // Orbital Plunge deals 6 damage to target creature. If excess damage was dealt to a permanent this way, create a Lander token. + this.getSpellAbility().addEffect(new OrbitalPlungeEffect()); + this.getSpellAbility().addTarget(new TargetCreaturePermanent()); + } + + private OrbitalPlunge(final OrbitalPlunge card) { + super(card); + } + + @Override + public OrbitalPlunge copy() { + return new OrbitalPlunge(this); + } +} + +// Inspired by Bottle-Cap Blast +class OrbitalPlungeEffect extends OneShotEffect { + + OrbitalPlungeEffect() { + super(Outcome.Benefit); + staticText = "{this} deals 6 damage to target creature. " + + "If excess damage was dealt to a permanent this way, create a Lander token."; + } + + private OrbitalPlungeEffect(final OrbitalPlungeEffect effect) { + super(effect); + } + + @Override + public OrbitalPlungeEffect copy() { + return new OrbitalPlungeEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + Permanent permanent = game.getPermanent(getTargetPointer().getFirst(game, source)); + if (permanent == null) { + return false; + } + int lethal = permanent.getLethalDamage(source.getSourceId(), game); + permanent.damage(6, source.getSourceId(), source, game); + if (lethal < 6) { + new CreateTokenEffect(new LanderToken()).apply(game, source); + } + return true; + } +} diff --git a/Mage.Sets/src/mage/sets/EdgeOfEternities.java b/Mage.Sets/src/mage/sets/EdgeOfEternities.java index 3c79e76fef6..37363d47730 100644 --- a/Mage.Sets/src/mage/sets/EdgeOfEternities.java +++ b/Mage.Sets/src/mage/sets/EdgeOfEternities.java @@ -198,6 +198,7 @@ public final class EdgeOfEternities extends ExpansionSet { cards.add(new SetCardInfo("Nova Hellkite", 148, Rarity.RARE, mage.cards.n.NovaHellkite.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Nova Hellkite", 309, Rarity.RARE, mage.cards.n.NovaHellkite.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Nutrient Block", 243, Rarity.COMMON, mage.cards.n.NutrientBlock.class)); + cards.add(new SetCardInfo("Orbital Plunge", 149, Rarity.COMMON, mage.cards.o.OrbitalPlunge.class)); cards.add(new SetCardInfo("Oreplate Pangolin", 150, Rarity.COMMON, mage.cards.o.OreplatePangolin.class)); cards.add(new SetCardInfo("Ouroboroid", 201, Rarity.MYTHIC, mage.cards.o.Ouroboroid.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Ouroboroid", 345, Rarity.MYTHIC, mage.cards.o.Ouroboroid.class, NON_FULL_USE_VARIOUS));