[DSK] Implement Grand Entryway // Elegant Rotunda

This commit is contained in:
theelk801 2025-12-07 11:40:43 -05:00
parent a5483496f8
commit caba72094e
10 changed files with 57 additions and 20 deletions

View file

@ -27,7 +27,7 @@ public final class BottomlessPoolLockerRoom extends RoomCard {
// Whenever one or more creatures you control deal combat damage to a player, draw a card.
super(ownerId, setInfo,
new CardType[] { CardType.ENCHANTMENT },
"{U}", "{4}{U}", SpellAbilityType.SPLIT);
"{U}", "{4}{U}");
this.subtype.add(SubType.ROOM);
// Left half ability - "When you unlock this door, return up to one target creature to its owners hand."

View file

@ -8,7 +8,6 @@ import mage.abilities.keyword.ConvokeAbility;
import mage.cards.CardSetInfo;
import mage.cards.RoomCard;
import mage.constants.CardType;
import mage.constants.SpellAbilityType;
import mage.constants.SubType;
import mage.filter.StaticFilters;
import mage.filter.common.FilterNonlandCard;
@ -30,7 +29,7 @@ public final class DazzlingTheaterPropRoom extends RoomCard {
}
public DazzlingTheaterPropRoom(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{W}", "{2}{W}", SpellAbilityType.SPLIT);
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{W}", "{2}{W}");
this.subtype.add(SubType.ROOM);
// Dazzling Theater: Creature spells you cast have convoke.

View file

@ -29,7 +29,7 @@ public final class DollmakersShopPorcelainGallery extends RoomCard {
}
public DollmakersShopPorcelainGallery(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{W}", "{4}{W}{W}", SpellAbilityType.SPLIT);
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{W}", "{4}{W}{W}");
this.subtype.add(SubType.ROOM);
// Dollmaker's Shop: Whenever one or more non-Toy creatures you control attack a player, create a 1/1 white Toy artifact creature token.

View file

@ -9,7 +9,6 @@ import mage.abilities.effects.common.ReturnFromYourGraveyardToBattlefieldAllEffe
import mage.cards.CardSetInfo;
import mage.cards.RoomCard;
import mage.constants.CardType;
import mage.constants.SpellAbilityType;
import mage.constants.SubType;
import mage.filter.StaticFilters;
@ -21,7 +20,7 @@ import java.util.UUID;
public final class FuneralRoomAwakeningHall extends RoomCard {
public FuneralRoomAwakeningHall(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{B}", "{6}{B}{B}", SpellAbilityType.SPLIT);
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{B}", "{6}{B}{B}");
this.subtype.add(SubType.ROOM);
// Funeral Room: Whenever a creature you control dies, each opponent loses 1 life and you gain 1 life.

View file

@ -0,0 +1,42 @@
package mage.cards.g;
import mage.abilities.Ability;
import mage.abilities.common.UnlockThisDoorTriggeredAbility;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.counter.AddCountersTargetEffect;
import mage.cards.CardSetInfo;
import mage.cards.RoomCard;
import mage.constants.CardType;
import mage.counters.CounterType;
import mage.game.permanent.token.GlimmerToken;
import mage.target.common.TargetCreaturePermanent;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class GrandEntrywayElegantRotunda extends RoomCard {
public GrandEntrywayElegantRotunda(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{W}", "{2}{W}");
// Grand Entryway
// When you unlock this door, create a 1/1 white Glimmer enchantment creature token.
this.getLeftHalfCard().addAbility(new UnlockThisDoorTriggeredAbility(new CreateTokenEffect(new GlimmerToken()), false, true));
// Elegant Rotunda
// When you unlock this door, put a +1/+1 counter on each of up to two target creatures.
Ability ability = new UnlockThisDoorTriggeredAbility(new AddCountersTargetEffect(CounterType.P1P1.createInstance()), false, false);
ability.addTarget(new TargetCreaturePermanent(0, 2));
this.getRightHalfCard().addAbility(ability);
}
private GrandEntrywayElegantRotunda(final GrandEntrywayElegantRotunda card) {
super(card);
}
@Override
public GrandEntrywayElegantRotunda copy() {
return new GrandEntrywayElegantRotunda(this);
}
}

View file

@ -8,7 +8,6 @@ import mage.cards.CardSetInfo;
import mage.cards.RoomCard;
import mage.constants.CardType;
import mage.constants.ComparisonType;
import mage.constants.SpellAbilityType;
import mage.constants.SubType;
import mage.counters.CounterType;
import mage.filter.FilterCard;
@ -42,7 +41,7 @@ public final class SurgicalSuiteHospitalRoom extends RoomCard {
// Whenever you attack, put a +1/+1 counter on target attacking creature.
super(ownerId, setInfo,
new CardType[] { CardType.ENCHANTMENT },
"{1}{W}", "{3}{W}", SpellAbilityType.SPLIT);
"{1}{W}", "{3}{W}");
this.subtype.add(SubType.ROOM);
// Left half ability - "When you unlock this door, return target creature card with mana value 3 or less from your graveyard to the battlefield."

View file

@ -14,7 +14,6 @@ import mage.cards.CardSetInfo;
import mage.cards.RoomCard;
import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.SpellAbilityType;
import mage.constants.SubType;
import mage.filter.common.FilterControlledPermanent;
import mage.game.Game;
@ -35,7 +34,7 @@ public final class UnholyAnnexRitualChamber extends RoomCard {
}
public UnholyAnnexRitualChamber(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{B}", "{3}{B}{B}", SpellAbilityType.SPLIT);
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{B}", "{3}{B}{B}");
this.subtype.add(SubType.ROOM);
// Unholy Annex: At the beginning of your end step, draw a card. If you control a Demon, each opponent loses 2 life and you gain 2 life. Otherwise, you lose 2 life.

View file

@ -8,7 +8,6 @@ import mage.cards.CardSetInfo;
import mage.cards.RoomCard;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SpellAbilityType;
import mage.constants.SubType;
import mage.filter.StaticFilters;
@ -20,7 +19,7 @@ import java.util.UUID;
public final class WalkInClosetForgottenCellar extends RoomCard {
public WalkInClosetForgottenCellar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{G}", "{3}{G}{G}", SpellAbilityType.SPLIT);
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{G}", "{3}{G}{G}");
this.subtype.add(SubType.ROOM);
// Walk-In Closet: You may play lands from your graveyard.

View file

@ -158,6 +158,8 @@ public final class DuskmournHouseOfHorror extends ExpansionSet {
cards.add(new SetCardInfo("Gloomlake Verge", 260, Rarity.RARE, mage.cards.g.GloomlakeVerge.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Gloomlake Verge", 331, Rarity.RARE, mage.cards.g.GloomlakeVerge.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Grab the Prize", 138, Rarity.COMMON, mage.cards.g.GrabThePrize.class));
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("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));

View file

@ -22,9 +22,8 @@ import java.util.UUID;
public abstract class RoomCard extends SplitCard {
private SpellAbilityType lastCastHalf = null;
protected RoomCard(UUID ownerId, CardSetInfo setInfo, CardType[] types, String costsLeft,
String costsRight, SpellAbilityType spellAbilityType) {
super(ownerId, setInfo, costsLeft, costsRight, spellAbilityType, types);
protected RoomCard(UUID ownerId, CardSetInfo setInfo, CardType[] types, String costsLeft, String costsRight) {
super(ownerId, setInfo, costsLeft, costsRight, SpellAbilityType.SPLIT, types);
String[] names = setInfo.getName().split(" // ");
@ -173,4 +172,3 @@ class RoomEnterUnlockEffect extends OneShotEffect {
return true;
}
}