From cfc28b188e7f2f2adefa2dc6e9fabc5d5ad3e2a8 Mon Sep 17 00:00:00 2001 From: theelk801 Date: Sun, 7 Dec 2025 14:58:52 -0500 Subject: [PATCH] [DSK] Implement Roaring Furnace // Steaming Sauna --- .../cards/r/RoaringFurnaceSteamingSauna.java | 50 +++++++++++++++++++ .../src/mage/sets/DuskmournHouseOfHorror.java | 2 + 2 files changed, 52 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/r/RoaringFurnaceSteamingSauna.java diff --git a/Mage.Sets/src/mage/cards/r/RoaringFurnaceSteamingSauna.java b/Mage.Sets/src/mage/cards/r/RoaringFurnaceSteamingSauna.java new file mode 100644 index 00000000000..eb2952bd22d --- /dev/null +++ b/Mage.Sets/src/mage/cards/r/RoaringFurnaceSteamingSauna.java @@ -0,0 +1,50 @@ +package mage.cards.r; + +import mage.abilities.Ability; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.common.UnlockThisDoorTriggeredAbility; +import mage.abilities.dynamicvalue.common.CardsInControllerHandCount; +import mage.abilities.effects.common.DamageTargetEffect; +import mage.abilities.effects.common.DrawCardSourceControllerEffect; +import mage.abilities.effects.common.continuous.MaximumHandSizeControllerEffect; +import mage.abilities.triggers.BeginningOfEndStepTriggeredAbility; +import mage.cards.CardSetInfo; +import mage.cards.RoomCard; +import mage.constants.Duration; +import mage.target.common.TargetOpponentsCreaturePermanent; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class RoaringFurnaceSteamingSauna extends RoomCard { + + public RoaringFurnaceSteamingSauna(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, "{1}{R}", "{3}{U}{U}"); + + // Roaring Furnace + // When you unlock this door, this Room deals damage equal to the number of cards in your hand to target creature an opponent controls. + Ability ability = new UnlockThisDoorTriggeredAbility(new DamageTargetEffect(CardsInControllerHandCount.ANY), false, true); + ability.addTarget(new TargetOpponentsCreaturePermanent()); + this.getLeftHalfCard().addAbility(ability); + + // Steaming Sauna + // You have no maximum hand size. + this.getRightHalfCard().addAbility(new SimpleStaticAbility(new MaximumHandSizeControllerEffect( + Integer.MAX_VALUE, Duration.WhileOnBattlefield, MaximumHandSizeControllerEffect.HandSizeModification.SET + ))); + + // At the beginning of your end step, draw a card. + this.getRightHalfCard().addAbility(new BeginningOfEndStepTriggeredAbility(new DrawCardSourceControllerEffect(1))); + } + + private RoaringFurnaceSteamingSauna(final RoaringFurnaceSteamingSauna card) { + super(card); + } + + @Override + public RoaringFurnaceSteamingSauna copy() { + return new RoaringFurnaceSteamingSauna(this); + } +} diff --git a/Mage.Sets/src/mage/sets/DuskmournHouseOfHorror.java b/Mage.Sets/src/mage/sets/DuskmournHouseOfHorror.java index 0805e5d1f1e..8fe0d8e9a53 100644 --- a/Mage.Sets/src/mage/sets/DuskmournHouseOfHorror.java +++ b/Mage.Sets/src/mage/sets/DuskmournHouseOfHorror.java @@ -307,6 +307,8 @@ public final class DuskmournHouseOfHorror extends ExpansionSet { cards.add(new SetCardInfo("Rip, Spawn Hunter", 362, Rarity.RARE, mage.cards.r.RipSpawnHunter.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Ripchain Razorkin", 154, Rarity.COMMON, mage.cards.r.RipchainRazorkin.class)); cards.add(new SetCardInfo("Rite of the Moth", 229, Rarity.UNCOMMON, mage.cards.r.RiteOfTheMoth.class)); + cards.add(new SetCardInfo("Roaring Furnace // Steaming Sauna", 343, Rarity.RARE, mage.cards.r.RoaringFurnaceSteamingSauna.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Roaring Furnace // Steaming Sauna", 230, Rarity.RARE, mage.cards.r.RoaringFurnaceSteamingSauna.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Rootwise Survivor", 196, Rarity.UNCOMMON, mage.cards.r.RootwiseSurvivor.class)); cards.add(new SetCardInfo("Savior of the Small", 27, Rarity.UNCOMMON, mage.cards.s.SaviorOfTheSmall.class)); cards.add(new SetCardInfo("Saw", 254, Rarity.UNCOMMON, mage.cards.s.Saw.class));