From b9052103bbc3a854fa98ebbaa1cc86b0427ada05 Mon Sep 17 00:00:00 2001 From: theelk801 Date: Sun, 7 Dec 2025 11:51:26 -0500 Subject: [PATCH] [DSK] Implement Greenhouse / Rickety Gazebo --- .../mage/cards/g/GreenhouseRicketyGazebo.java | 48 +++++++++++++++++++ .../src/mage/sets/DuskmournHouseOfHorror.java | 1 + Utils/cardSplitClass.tmpl | 11 ++--- 3 files changed, 52 insertions(+), 8 deletions(-) create mode 100644 Mage.Sets/src/mage/cards/g/GreenhouseRicketyGazebo.java diff --git a/Mage.Sets/src/mage/cards/g/GreenhouseRicketyGazebo.java b/Mage.Sets/src/mage/cards/g/GreenhouseRicketyGazebo.java new file mode 100644 index 00000000000..4994a0f1e6e --- /dev/null +++ b/Mage.Sets/src/mage/cards/g/GreenhouseRicketyGazebo.java @@ -0,0 +1,48 @@ +package mage.cards.g; + +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.common.UnlockThisDoorTriggeredAbility; +import mage.abilities.effects.ContinuousEffect; +import mage.abilities.effects.common.MillThenPutInHandEffect; +import mage.abilities.effects.common.continuous.GainAbilityControlledEffect; +import mage.abilities.mana.AnyColorManaAbility; +import mage.cards.CardSetInfo; +import mage.cards.RoomCard; +import mage.constants.CardType; +import mage.constants.DependencyType; +import mage.constants.Duration; +import mage.filter.StaticFilters; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class GreenhouseRicketyGazebo extends RoomCard { + public GreenhouseRicketyGazebo(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{G}", "{3}{G}"); + + // Greenhouse + // Lands you control have "{T}: Add one mana of any color." + ContinuousEffect effect = new GainAbilityControlledEffect( + new AnyColorManaAbility(), Duration.WhileOnBattlefield, StaticFilters.FILTER_LANDS, false + ); + effect.addDependedToType(DependencyType.BecomeNonbasicLand); + this.getLeftHalfCard().addAbility(new SimpleStaticAbility(effect)); + + // Rickety Gazebo + // When you unlock this door, mill four cards, then return up to two permanent cards from among them to your hand. + this.getRightHalfCard().addAbility(new UnlockThisDoorTriggeredAbility(new MillThenPutInHandEffect( + 4, StaticFilters.FILTER_CARD_PERMANENTS, null, true, 2 + ), false, false)); + } + + private GreenhouseRicketyGazebo(final GreenhouseRicketyGazebo card) { + super(card); + } + + @Override + public GreenhouseRicketyGazebo copy() { + return new GreenhouseRicketyGazebo(this); + } +} diff --git a/Mage.Sets/src/mage/sets/DuskmournHouseOfHorror.java b/Mage.Sets/src/mage/sets/DuskmournHouseOfHorror.java index a45c1d22c9d..64438aeb971 100644 --- a/Mage.Sets/src/mage/sets/DuskmournHouseOfHorror.java +++ b/Mage.Sets/src/mage/sets/DuskmournHouseOfHorror.java @@ -161,6 +161,7 @@ public final class DuskmournHouseOfHorror extends ExpansionSet { cards.add(new SetCardInfo("Grand Entryway // Elegant Rotunda", 287, Rarity.COMMON, mage.cards.g.GrandEntrywayElegantRotunda.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Grand Entryway // Elegant Rotunda", 15, Rarity.COMMON, mage.cards.g.GrandEntrywayElegantRotunda.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Grasping Longneck", 180, Rarity.COMMON, mage.cards.g.GraspingLongneck.class)); + cards.add(new SetCardInfo("Greenhouse // Rickety Gazebo", 181, Rarity.UNCOMMON, mage.cards.g.GreenhouseRicketyGazebo.class)); cards.add(new SetCardInfo("Gremlin Tamer", 215, Rarity.UNCOMMON, mage.cards.g.GremlinTamer.class)); cards.add(new SetCardInfo("Grievous Wound", 102, Rarity.RARE, mage.cards.g.GrievousWound.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Grievous Wound", 375, Rarity.RARE, mage.cards.g.GrievousWound.class, NON_FULL_USE_VARIOUS)); diff --git a/Utils/cardSplitClass.tmpl b/Utils/cardSplitClass.tmpl index c9d9200ba43..61701856a4f 100644 --- a/Utils/cardSplitClass.tmpl +++ b/Utils/cardSplitClass.tmpl @@ -3,7 +3,7 @@ package mage.cards.[=$cardNameFirstLetter=]; import java.util.UUID; [=$abilitiesImports=] import mage.cards.CardSetInfo; -import mage.cards.SplitCard; +import mage.cards.RoomCard; import mage.constants.CardType; import mage.constants.SpellAbilityType; @@ -11,17 +11,12 @@ import mage.constants.SpellAbilityType; * * @author [=$author=] */ -public final class [=$className=] extends SplitCard { +public final class [=$className=] extends RoomCard { public [=$className=](UUID ownerId, CardSetInfo setInfo) { - super(ownerId, setInfo, new CardType[]{[=$type=]}, new CardType[]{??}, "[=$manaCost=]", "??", SpellAbilityType.SPLIT_AFTERMATH); - [=$subType=][=$colors=] + super(ownerId, setInfo, new CardType[]{[=$type=]}, "[=$manaCost=]", "??"); [= if ($power || $power eq 0) { $OUT .= "\n this.power = new MageInt($power);"; $OUT .= "\n this.toughness = new MageInt($toughness);";} =][=$abilities=] - // getLeftHalfCard().getSpellAbility().addEffect(new Effect()); - - // getRightHalfCard().getSpellAbility().addEffect(new Effect()); - } private [=$className=](final [=$className=] card) {