diff --git a/Mage.Sets/src/mage/cards/h/HauntedScreen.java b/Mage.Sets/src/mage/cards/h/HauntedScreen.java new file mode 100644 index 00000000000..0e66a65662c --- /dev/null +++ b/Mage.Sets/src/mage/cards/h/HauntedScreen.java @@ -0,0 +1,61 @@ +package mage.cards.h; + +import mage.abilities.Ability; +import mage.abilities.common.ActivateOncePerGameActivatedAbility; +import mage.abilities.costs.common.PayLifeCost; +import mage.abilities.costs.mana.GenericManaCost; +import mage.abilities.effects.common.continuous.BecomesCreatureSourceEffect; +import mage.abilities.effects.common.counter.AddCountersSourceEffect; +import mage.abilities.mana.*; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.SubType; +import mage.counters.CounterType; +import mage.game.permanent.token.custom.CreatureToken; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class HauntedScreen extends CardImpl { + + public HauntedScreen(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}"); + + // {T}: Add {W} or {B}. + this.addAbility(new WhiteManaAbility()); + this.addAbility(new BlackManaAbility()); + + // {T}, Pay 1 life: Add {G}, {U}, or {R}. + Ability ability = new GreenManaAbility(); + ability.addCost(new PayLifeCost(1)); + this.addAbility(ability); + ability = new BlueManaAbility(); + ability.addCost(new PayLifeCost(1)); + this.addAbility(ability); + ability = new RedManaAbility(); + ability.addCost(new PayLifeCost(1)); + this.addAbility(ability); + + // {7}: Put seven +1/+1 counters on Haunted Screen. It becomes a 0/0 Spirit creature in addition to its other types. Activate only once. + ability = new ActivateOncePerGameActivatedAbility( + new AddCountersSourceEffect(CounterType.P1P1.createInstance(7)), new GenericManaCost(7) + ); + ability.addEffect(new BecomesCreatureSourceEffect(new CreatureToken( + 0, 0, "0/0 Spirit creature", SubType.SPIRIT + ), CardType.ARTIFACT, Duration.Custom)); + this.addAbility(ability); + } + + private HauntedScreen(final HauntedScreen card) { + super(card); + } + + @Override + public HauntedScreen copy() { + return new HauntedScreen(this); + } +} diff --git a/Mage.Sets/src/mage/sets/DuskmournHouseOfHorror.java b/Mage.Sets/src/mage/sets/DuskmournHouseOfHorror.java index 3769d8109a6..7ee149a7ecc 100644 --- a/Mage.Sets/src/mage/sets/DuskmournHouseOfHorror.java +++ b/Mage.Sets/src/mage/sets/DuskmournHouseOfHorror.java @@ -110,6 +110,7 @@ public final class DuskmournHouseOfHorror extends ExpansionSet { cards.add(new SetCardInfo("Growing Dread", 216, Rarity.UNCOMMON, mage.cards.g.GrowingDread.class)); cards.add(new SetCardInfo("Hand That Feeds", 139, Rarity.COMMON, mage.cards.h.HandThatFeeds.class)); cards.add(new SetCardInfo("Hardened Escort", 16, Rarity.COMMON, mage.cards.h.HardenedEscort.class)); + cards.add(new SetCardInfo("Haunted Screen", 250, Rarity.UNCOMMON, mage.cards.h.HauntedScreen.class)); cards.add(new SetCardInfo("Hedge Shredder", 183, Rarity.RARE, mage.cards.h.HedgeShredder.class)); cards.add(new SetCardInfo("Horrid Vigor", 184, Rarity.COMMON, mage.cards.h.HorridVigor.class)); cards.add(new SetCardInfo("House Cartographer", 185, Rarity.UNCOMMON, mage.cards.h.HouseCartographer.class)); diff --git a/Mage/src/main/java/mage/abilities/common/ActivateOncePerGameActivatedAbility.java b/Mage/src/main/java/mage/abilities/common/ActivateOncePerGameActivatedAbility.java index a1c9992a76a..0391eefea0a 100644 --- a/Mage/src/main/java/mage/abilities/common/ActivateOncePerGameActivatedAbility.java +++ b/Mage/src/main/java/mage/abilities/common/ActivateOncePerGameActivatedAbility.java @@ -7,11 +7,14 @@ import mage.constants.TimingRule; import mage.constants.Zone; /** - * * @author weirddan455 */ public class ActivateOncePerGameActivatedAbility extends ActivatedAbilityImpl { + public ActivateOncePerGameActivatedAbility(Effect effect, Cost cost) { + this(Zone.BATTLEFIELD, effect, cost, TimingRule.INSTANT); + } + public ActivateOncePerGameActivatedAbility(Zone zone, Effect effect, Cost cost, TimingRule timingRule) { super(zone, effect, cost); this.timing = timingRule;