[DSK] Implement Derelict Attic // Widow's Walk

This commit is contained in:
theelk801 2025-12-07 14:55:29 -05:00
parent 1901058a73
commit 565520d1d8
13 changed files with 67 additions and 3 deletions

View file

@ -17,6 +17,7 @@ import java.util.UUID;
* @author TheElk801
*/
public final class DefiledCryptCadaverLab extends RoomCard {
public DefiledCryptCadaverLab(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, "{3}{B}", "{B}");

View file

@ -0,0 +1,52 @@
package mage.cards.d;
import mage.abilities.Ability;
import mage.abilities.common.AttacksAloneControlledTriggeredAbility;
import mage.abilities.common.UnlockThisDoorTriggeredAbility;
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.effects.common.LoseLifeSourceControllerEffect;
import mage.abilities.effects.common.continuous.BoostTargetEffect;
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
import mage.abilities.keyword.DeathtouchAbility;
import mage.cards.CardSetInfo;
import mage.cards.RoomCard;
import mage.filter.StaticFilters;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class DerelictAtticWidowsWalk extends RoomCard {
public DerelictAtticWidowsWalk(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, "{2}{B}", "{3}{B}");
// Derelict Attic
// When you unlock this door, you draw two cards and you lose 2 life.
Ability ability = new UnlockThisDoorTriggeredAbility(
new DrawCardSourceControllerEffect(2, true), false, true
);
ability.addEffect(new LoseLifeSourceControllerEffect(2).concatBy("and"));
this.getLeftHalfCard().addAbility(ability);
// Widow's Walk
// Whenever a creature you control attacks alone, it gets +1/+0 and gains deathtouch until end of turn.
ability = new AttacksAloneControlledTriggeredAbility(
new BoostTargetEffect(1, 0).setText("it gets +1/+0"),
StaticFilters.FILTER_CONTROLLED_A_CREATURE, true, false
);
ability.addEffect(new GainAbilityTargetEffect(DeathtouchAbility.getInstance())
.setText("and gains deathtouch until end of turn"));
this.getRightHalfCard().addAbility(ability);
}
private DerelictAtticWidowsWalk(final DerelictAtticWidowsWalk card) {
super(card);
}
@Override
public DerelictAtticWidowsWalk copy() {
return new DerelictAtticWidowsWalk(this);
}
}

View file

@ -9,7 +9,9 @@ import mage.abilities.effects.common.continuous.SetBasePowerToughnessAllEffect;
import mage.abilities.hint.ValueHint;
import mage.cards.CardSetInfo;
import mage.cards.RoomCard;
import mage.constants.*;
import mage.constants.Duration;
import mage.constants.SetTargetPointer;
import mage.constants.SubType;
import mage.filter.StaticFilters;
import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.Predicates;
@ -44,7 +46,7 @@ public final class DollmakersShopPorcelainGallery extends RoomCard {
this.getRightHalfCard().addAbility(right);
}
private DollmakersShopPorcelainGallery (final DollmakersShopPorcelainGallery card) {
private DollmakersShopPorcelainGallery(final DollmakersShopPorcelainGallery card) {
super(card);
}

View file

@ -16,6 +16,7 @@ import java.util.UUID;
* @author TheElk801
*/
public final class GlassworksShatteredYard extends RoomCard {
public GlassworksShatteredYard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, "{2}{R}", "{4}{R}");

View file

@ -16,6 +16,7 @@ import java.util.UUID;
* @author TheElk801
*/
public final class GrandEntrywayElegantRotunda extends RoomCard {
public GrandEntrywayElegantRotunda(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, "{1}{W}", "{2}{W}");

View file

@ -18,6 +18,7 @@ import java.util.UUID;
* @author TheElk801
*/
public final class GreenhouseRicketyGazebo extends RoomCard {
public GreenhouseRicketyGazebo(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, "{2}{G}", "{3}{G}");

View file

@ -16,6 +16,7 @@ import java.util.UUID;
* @author TheElk801
*/
public final class MeatLockerDrownedDiner extends RoomCard {
public MeatLockerDrownedDiner(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, "{2}{U}", "{3}{U}{U}");

View file

@ -15,6 +15,7 @@ import java.util.UUID;
* @author TheElk801
*/
public final class MolderingGymWeightRoom extends RoomCard {
public MolderingGymWeightRoom(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, "{2}{G}", "{5}{G}");

View file

@ -18,10 +18,10 @@ import mage.target.common.TargetCardInYourGraveyard;
import java.util.UUID;
/**
*
* @author oscscull
*/
public final class SurgicalSuiteHospitalRoom extends RoomCard {
private static final FilterCard filter = new FilterCreatureCard(
"creature card with mana value 3 or less from your graveyard");

View file

@ -16,6 +16,7 @@ import java.util.UUID;
* @author TheElk801
*/
public final class TicketBoothTunnelOfHate extends RoomCard {
public TicketBoothTunnelOfHate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, "{2}{R}", "{4}{R}{R}");

View file

@ -13,6 +13,7 @@ import java.util.UUID;
* @author TheElk801
*/
public final class UnderwaterTunnelSlimyAquarium extends RoomCard {
public UnderwaterTunnelSlimyAquarium(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, "{U}", "{3}{U}");

View file

@ -76,6 +76,7 @@ public final class DuskmournHouseOfHorror extends ExpansionSet {
cards.add(new SetCardInfo("Defiled Crypt // Cadaver Lab", 91, Rarity.UNCOMMON, mage.cards.d.DefiledCryptCadaverLab.class));
cards.add(new SetCardInfo("Demonic Counsel", 310, Rarity.RARE, mage.cards.d.DemonicCounsel.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Demonic Counsel", 92, Rarity.RARE, mage.cards.d.DemonicCounsel.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Derelict Attic // Widow's Walk", 93, Rarity.COMMON, mage.cards.d.DerelictAtticWidowsWalk.class));
cards.add(new SetCardInfo("Dissection Tools", 245, Rarity.RARE, mage.cards.d.DissectionTools.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Dissection Tools", 385, Rarity.RARE, mage.cards.d.DissectionTools.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Disturbing Mirth", 212, Rarity.UNCOMMON, mage.cards.d.DisturbingMirth.class));

View file

@ -12,6 +12,7 @@ import mage.constants.SpellAbilityType;
* @author [=$author=]
*/
public final class [=$className=] extends RoomCard {
public [=$className=](UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, "[=$manaCost=]");
[= if ($power || $power eq 0) {