[DSK] Implement Twitching Doll

This commit is contained in:
theelk801 2024-09-03 17:54:56 -04:00
parent 9c0f18c850
commit abccb35b18
3 changed files with 90 additions and 0 deletions

View file

@ -0,0 +1,58 @@
package mage.cards.t;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.ActivateAsSorceryActivatedAbility;
import mage.abilities.costs.common.SacrificeSourceCost;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.dynamicvalue.DynamicValue;
import mage.abilities.dynamicvalue.common.CountersSourceCount;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.abilities.mana.AnyColorManaAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.counters.CounterType;
import mage.game.permanent.token.Spider22Token;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class TwitchingDoll extends CardImpl {
private static final DynamicValue xValue = new CountersSourceCount();
public TwitchingDoll(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{1}{G}");
this.subtype.add(SubType.SPIDER);
this.subtype.add(SubType.TOY);
this.power = new MageInt(2);
this.toughness = new MageInt(2);
// {T}: Add one mana of any color. Put a nest counter on Twitching Doll.
Ability ability = new AnyColorManaAbility();
ability.addEffect(new AddCountersSourceEffect(CounterType.OMEN.createInstance()));
this.addAbility(ability);
// {T}, Sacrifice Twitching Doll: Create a 2/2 green Spider creature token with reach for each counter on Twitching Doll. Activate only as a sorcery.
ability = new ActivateAsSorceryActivatedAbility(
new CreateTokenEffect(new Spider22Token(), xValue), new TapSourceCost()
);
ability.addCost(new SacrificeSourceCost());
this.addAbility(ability);
}
private TwitchingDoll(final TwitchingDoll card) {
super(card);
}
@Override
public TwitchingDoll copy() {
return new TwitchingDoll(this);
}
}

View file

@ -60,6 +60,7 @@ public final class DuskmournHouseOfHorror extends ExpansionSet {
cards.add(new SetCardInfo("The Jolly Balloon Man", 219, Rarity.RARE, mage.cards.t.TheJollyBalloonMan.class));
cards.add(new SetCardInfo("The Wandering Rescuer", 41, Rarity.MYTHIC, mage.cards.t.TheWanderingRescuer.class));
cards.add(new SetCardInfo("Toby, Beastie Befriender", 35, Rarity.RARE, mage.cards.t.TobyBeastieBefriender.class));
cards.add(new SetCardInfo("Twitching Doll", 417, Rarity.RARE, mage.cards.t.TwitchingDoll.class));
cards.add(new SetCardInfo("Tyvar, the Pummeler", 408, Rarity.MYTHIC, mage.cards.t.TyvarThePummeler.class));
cards.add(new SetCardInfo("Unwanted Remake", 39, Rarity.UNCOMMON, mage.cards.u.UnwantedRemake.class));
cards.add(new SetCardInfo("Unwilling Vessel", 81, Rarity.UNCOMMON, mage.cards.u.UnwillingVessel.class));

View file

@ -0,0 +1,31 @@
package mage.game.permanent.token;
import mage.MageInt;
import mage.abilities.keyword.ReachAbility;
import mage.constants.CardType;
import mage.constants.SubType;
/**
* @author TheElk801
*/
public final class Spider22Token extends TokenImpl {
public Spider22Token() {
super("Spider Token", "2/2 green Spider creature token with reach");
cardType.add(CardType.CREATURE);
color.setGreen(true);
subtype.add(SubType.SPIDER);
power = new MageInt(2);
toughness = new MageInt(2);
this.addAbility(ReachAbility.getInstance());
}
private Spider22Token(final Spider22Token token) {
super(token);
}
public Spider22Token copy() {
return new Spider22Token(this);
}
}