[EOE] Implement Loading Zone

This commit is contained in:
theelk801 2025-07-14 20:08:15 -04:00
parent c7941fef4e
commit c41763d633
3 changed files with 93 additions and 1 deletions

View file

@ -0,0 +1,90 @@
package mage.cards.l;
import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.ReplacementEffectImpl;
import mage.abilities.keyword.WarpAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.Outcome;
import mage.constants.SubType;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.permanent.Permanent;
import mage.util.CardUtil;
import java.util.Optional;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class LoadingZone extends CardImpl {
public LoadingZone(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{G}");
// If one or more counters would be put on a creature, Spacecraft, or Planet you control, twice that many of each of those kinds of counters are put on it instead.
this.addAbility(new SimpleStaticAbility(new LoadingZoneEffect()));
// Warp {G}
this.addAbility(new WarpAbility(this, "{G}"));
}
private LoadingZone(final LoadingZone card) {
super(card);
}
@Override
public LoadingZone copy() {
return new LoadingZone(this);
}
}
class LoadingZoneEffect extends ReplacementEffectImpl {
LoadingZoneEffect() {
super(Duration.WhileOnBattlefield, Outcome.BoostCreature, false);
staticText = "if one or more counters would be put on a creature, Spacecraft, or Planet you control, " +
"twice that many of each of those kinds of counters are put on it instead";
}
private LoadingZoneEffect(final LoadingZoneEffect effect) {
super(effect);
}
@Override
public boolean replaceEvent(GameEvent event, Ability source, Game game) {
event.setAmountForCounters(CardUtil.overflowMultiply(event.getAmount(), 2), true);
return false;
}
@Override
public boolean checksEventType(GameEvent event, Game game) {
return event.getType() == GameEvent.EventType.ADD_COUNTERS;
}
@Override
public boolean applies(GameEvent event, Ability source, Game game) {
if (event.getAmount() < 1) {
return false;
}
Permanent permanent = Optional
.ofNullable(event)
.map(GameEvent::getTargetId)
.map(game::getPermanent)
.orElse(game.getPermanentEntering(event.getTargetId()));
return permanent != null
&& permanent.isControlledBy(source.getControllerId())
&& (permanent.isCreature(game)
|| permanent.hasSubtype(SubType.SPACECRAFT, game)
|| permanent.hasSubtype(SubType.PLANET, game));
}
@Override
public LoadingZoneEffect copy() {
return new LoadingZoneEffect(this);
}
}

View file

@ -12,7 +12,7 @@ import java.util.List;
*/ */
public final class EdgeOfEternities extends ExpansionSet { public final class EdgeOfEternities extends ExpansionSet {
private static final List<String> unfinished = Arrays.asList("All-Fates Stalker", "Anticausal Vestige", "Astelli Reclaimer", "Broodguard Elite", "Bygone Colossus", "Eusocial Engineering", "Exalted Sunborn", "Haliya, Guided by Light", "Mechanozoa", "Memorial Team Leader", "Mightform Harmonizer", "Nova Hellkite", "Possibility Technician", "Quantum Riddler", "Red Tiger Mechan", "Starbreach Whale", "Starfield Shepherd", "Starfield Vocalist", "Timeline Culler", "Weftstalker Ardent"); private static final List<String> unfinished = Arrays.asList("All-Fates Stalker", "Anticausal Vestige", "Astelli Reclaimer", "Broodguard Elite", "Bygone Colossus", "Eusocial Engineering", "Exalted Sunborn", "Haliya, Guided by Light", "Loading Zone", "Mechanozoa", "Memorial Team Leader", "Mightform Harmonizer", "Nova Hellkite", "Possibility Technician", "Quantum Riddler", "Red Tiger Mechan", "Starbreach Whale", "Starfield Shepherd", "Starfield Vocalist", "Timeline Culler", "Weftstalker Ardent");
private static final EdgeOfEternities instance = new EdgeOfEternities(); private static final EdgeOfEternities instance = new EdgeOfEternities();
public static EdgeOfEternities getInstance() { public static EdgeOfEternities getInstance() {
@ -133,6 +133,7 @@ public final class EdgeOfEternities extends ExpansionSet {
cards.add(new SetCardInfo("Kavaron, Memorial World", 281, Rarity.MYTHIC, mage.cards.k.KavaronMemorialWorld.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Kavaron, Memorial World", 281, Rarity.MYTHIC, mage.cards.k.KavaronMemorialWorld.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Kavaron, Memorial World", 376, Rarity.MYTHIC, mage.cards.k.KavaronMemorialWorld.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Kavaron, Memorial World", 376, Rarity.MYTHIC, mage.cards.k.KavaronMemorialWorld.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Lightless Evangel", 109, Rarity.UNCOMMON, mage.cards.l.LightlessEvangel.class)); cards.add(new SetCardInfo("Lightless Evangel", 109, Rarity.UNCOMMON, mage.cards.l.LightlessEvangel.class));
cards.add(new SetCardInfo("Loading Zone", 196, Rarity.RARE, mage.cards.l.LoadingZone.class));
cards.add(new SetCardInfo("Lumen-Class Frigate", 25, Rarity.RARE, mage.cards.l.LumenClassFrigate.class)); cards.add(new SetCardInfo("Lumen-Class Frigate", 25, Rarity.RARE, mage.cards.l.LumenClassFrigate.class));
cards.add(new SetCardInfo("Luxknight Breacher", 26, Rarity.COMMON, mage.cards.l.LuxknightBreacher.class)); cards.add(new SetCardInfo("Luxknight Breacher", 26, Rarity.COMMON, mage.cards.l.LuxknightBreacher.class));
cards.add(new SetCardInfo("Mechanozoa", 66, Rarity.COMMON, mage.cards.m.Mechanozoa.class)); cards.add(new SetCardInfo("Mechanozoa", 66, Rarity.COMMON, mage.cards.m.Mechanozoa.class));

View file

@ -59200,6 +59200,7 @@ Fungal Colossus|Edge of Eternities|184|C|{6}{G}|Creature - Fungus Beast|5|5|This
Galactic Wayfarer|Edge of Eternities|185|C|{2}{G}|Creature - Human Scout|3|3|When this creature enters, create a Lander token.| Galactic Wayfarer|Edge of Eternities|185|C|{2}{G}|Creature - Human Scout|3|3|When this creature enters, create a Lander token.|
Harmonious Grovestrider|Edge of Eternities|189|U|{3}{G}{G}|Creature - Beast|*|*|Ward {2}$This creature's power and toughness are each equal to the number of lands you control.| Harmonious Grovestrider|Edge of Eternities|189|U|{3}{G}{G}|Creature - Beast|*|*|Ward {2}$This creature's power and toughness are each equal to the number of lands you control.|
Hemosymbic Mite|Edge of Eternities|190|U|{G}|Creature - Mite|1|1|Whenever this creature becomes tapped, another target creature you control gets +X/+X until end of turn, where X is this creature's power.| Hemosymbic Mite|Edge of Eternities|190|U|{G}|Creature - Mite|1|1|Whenever this creature becomes tapped, another target creature you control gets +X/+X until end of turn, where X is this creature's power.|
Loading Zone|Edge of Eternities|196|R|{3}{G}|Enchantment|||If one or more counters would be put on a creature, Spacecraft, or Planet you control, twice that many of each of those kinds of counters are put on it instead.$Warp {G}|
Mightform Harmonizer|Edge of Eternities|200|R|{2}{G}{G}|Creature - Insect Druid|4|4|Landfall -- Whenever a land you control enters, double the power of target creature you control until end of turn.$Warp {2}{G}| Mightform Harmonizer|Edge of Eternities|200|R|{2}{G}{G}|Creature - Insect Druid|4|4|Landfall -- Whenever a land you control enters, double the power of target creature you control until end of turn.$Warp {2}{G}|
Ouroboroid|Edge of Eternities|201|M|{2}{G}{G}|Creature - Plant Wurm|1|3|At the beginning of combat on your turn, put X +1/+1 counters on each creature you control, where X is this creature's power.| Ouroboroid|Edge of Eternities|201|M|{2}{G}{G}|Creature - Plant Wurm|1|3|At the beginning of combat on your turn, put X +1/+1 counters on each creature you control, where X is this creature's power.|
Sami's Curiosity|Edge of Eternities|203|C|{G}|Sorcery|||You gain 2 life. Create a Lander token.| Sami's Curiosity|Edge of Eternities|203|C|{G}|Sorcery|||You gain 2 life. Create a Lander token.|