From fcba64b8c0432af395b96ea04629044cbf4c1c97 Mon Sep 17 00:00:00 2001 From: androosss <101566943+androosss@users.noreply.github.com> Date: Sat, 5 Apr 2025 19:45:58 +0200 Subject: [PATCH] [TDM] Implement Glacierwood Siege (#13499) * implemented glacierwood siege * GraphicCardInfo fix --- .../src/mage/cards/g/GlacierwoodSiege.java | 66 +++++++++++++++++++ .../src/mage/sets/TarkirDragonstorm.java | 8 ++- 2 files changed, 71 insertions(+), 3 deletions(-) create mode 100644 Mage.Sets/src/mage/cards/g/GlacierwoodSiege.java diff --git a/Mage.Sets/src/mage/cards/g/GlacierwoodSiege.java b/Mage.Sets/src/mage/cards/g/GlacierwoodSiege.java new file mode 100644 index 00000000000..693845f7cd6 --- /dev/null +++ b/Mage.Sets/src/mage/cards/g/GlacierwoodSiege.java @@ -0,0 +1,66 @@ +package mage.cards.g; + +import java.util.UUID; + +import mage.abilities.TriggeredAbility; +import mage.abilities.common.EntersBattlefieldAbility; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.common.SpellCastControllerTriggeredAbility; +import mage.abilities.condition.common.ModeChoiceSourceCondition; +import mage.abilities.decorator.ConditionalAsThoughEffect; +import mage.abilities.decorator.ConditionalTriggeredAbility; +import mage.abilities.effects.common.ChooseModeEffect; +import mage.abilities.effects.common.MillCardsTargetEffect; +import mage.abilities.effects.common.ruleModifying.PlayFromGraveyardControllerEffect; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.filter.FilterSpell; +import mage.filter.predicate.Predicates; +import mage.target.TargetPlayer; + +/** + * + * @author androosss + */ +public final class GlacierwoodSiege extends CardImpl { + + private static final FilterSpell filter = new FilterSpell("an instant or sorcery spell"); + + static { + filter.add(Predicates.or( + CardType.INSTANT.getPredicate(), + CardType.SORCERY.getPredicate())); + } + + public GlacierwoodSiege(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{G}{U}"); + + // As this enchantment enters, choose Temur or Sultai. + this.addAbility(new EntersBattlefieldAbility(new ChooseModeEffect("Temur or Sultai?", "Temur", "Sultai"), null, + "As {this} enters, choose Temur or Sultai.", "")); + + // * Temur -- Whenever you cast an instant or sorcery spell, target player mills four cards. + TriggeredAbility temurAbility = new SpellCastControllerTriggeredAbility(new MillCardsTargetEffect(4), filter, false); + temurAbility.addTarget(new TargetPlayer()); + this.addAbility(new ConditionalTriggeredAbility( + temurAbility, + new ModeChoiceSourceCondition("Temur"), + "• Temur — Whenever you cast an instant or sorcery spell, target player mills four cards.")); + + // * Sultai -- You may play lands from your graveyard. + this.addAbility(new SimpleStaticAbility(new ConditionalAsThoughEffect( + PlayFromGraveyardControllerEffect.playLands(), + new ModeChoiceSourceCondition("Sultai")).setText("• Sultai — You may play lands from your graveyard.") + )); + } + + private GlacierwoodSiege(final GlacierwoodSiege card) { + super(card); + } + + @Override + public GlacierwoodSiege copy() { + return new GlacierwoodSiege(this); + } +} diff --git a/Mage.Sets/src/mage/sets/TarkirDragonstorm.java b/Mage.Sets/src/mage/sets/TarkirDragonstorm.java index 91bd8ef6d1d..500d5c49860 100644 --- a/Mage.Sets/src/mage/sets/TarkirDragonstorm.java +++ b/Mage.Sets/src/mage/sets/TarkirDragonstorm.java @@ -1,12 +1,12 @@ package mage.sets; +import java.util.Arrays; +import java.util.List; + import mage.cards.ExpansionSet; import mage.constants.Rarity; import mage.constants.SetType; -import java.util.Arrays; -import java.util.List; - /** * @author TheElk801 */ @@ -99,6 +99,8 @@ public final class TarkirDragonstorm extends ExpansionSet { cards.add(new SetCardInfo("Frontier Bivouac", 256, Rarity.UNCOMMON, mage.cards.f.FrontierBivouac.class)); cards.add(new SetCardInfo("Frontline Rush", 186, Rarity.UNCOMMON, mage.cards.f.FrontlineRush.class)); cards.add(new SetCardInfo("Glacial Dragonhunt", 188, Rarity.UNCOMMON, mage.cards.g.GlacialDragonhunt.class)); + cards.add(new SetCardInfo("Glacierwood Siege", 189, Rarity.RARE, mage.cards.g.GlacierwoodSiege.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Glacierwood Siege", 386, Rarity.RARE, mage.cards.g.GlacierwoodSiege.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Great Arashin City", 257, Rarity.RARE, mage.cards.g.GreatArashinCity.class)); cards.add(new SetCardInfo("Gurmag Nightwatch", 190, Rarity.COMMON, mage.cards.g.GurmagNightwatch.class)); cards.add(new SetCardInfo("Gurmag Rakshasa", 81, Rarity.UNCOMMON, mage.cards.g.GurmagRakshasa.class));