forked from External/mage
[VOW] Implemented Cipherbound Spirit
This commit is contained in:
parent
23b0dbe425
commit
81428811fe
3 changed files with 126 additions and 0 deletions
50
Mage.Sets/src/mage/cards/c/CipherboundSpirit.java
Normal file
50
Mage.Sets/src/mage/cards/c/CipherboundSpirit.java
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
package mage.cards.c;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.CanBlockOnlyFlyingAbility;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.effects.common.DrawDiscardControllerEffect;
|
||||
import mage.abilities.keyword.FlyingAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class CipherboundSpirit extends CardImpl {
|
||||
|
||||
public CipherboundSpirit(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
|
||||
|
||||
this.subtype.add(SubType.SPIRIT);
|
||||
this.power = new MageInt(3);
|
||||
this.toughness = new MageInt(2);
|
||||
this.color.setBlue(true);
|
||||
this.nightCard = true;
|
||||
|
||||
// Flying
|
||||
this.addAbility(FlyingAbility.getInstance());
|
||||
|
||||
// Cipherbound Spirit can block only creatures with flying.
|
||||
this.addAbility(new CanBlockOnlyFlyingAbility());
|
||||
|
||||
// {3}{U}: Draw two cards, then discard a card.
|
||||
this.addAbility(new SimpleActivatedAbility(
|
||||
new DrawDiscardControllerEffect(2, 1), new ManaCostsImpl<>("{3}{U}")
|
||||
));
|
||||
}
|
||||
|
||||
private CipherboundSpirit(final CipherboundSpirit card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CipherboundSpirit copy() {
|
||||
return new CipherboundSpirit(this);
|
||||
}
|
||||
}
|
||||
74
Mage.Sets/src/mage/cards/s/SoulcipherBoard.java
Normal file
74
Mage.Sets/src/mage/cards/s/SoulcipherBoard.java
Normal file
|
|
@ -0,0 +1,74 @@
|
|||
package mage.cards.s;
|
||||
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.common.PutCardIntoGraveFromAnywhereAllTriggeredAbility;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.condition.common.SourceHasCounterCondition;
|
||||
import mage.abilities.costs.common.TapSourceCost;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.dynamicvalue.common.StaticValue;
|
||||
import mage.abilities.effects.common.LookLibraryAndPickControllerEffect;
|
||||
import mage.abilities.effects.common.TransformSourceEffect;
|
||||
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
|
||||
import mage.abilities.effects.common.counter.RemoveCounterSourceEffect;
|
||||
import mage.abilities.keyword.TransformAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.TargetController;
|
||||
import mage.constants.Zone;
|
||||
import mage.counters.CounterType;
|
||||
import mage.filter.StaticFilters;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class SoulcipherBoard extends CardImpl {
|
||||
|
||||
private static final Condition condition = new SourceHasCounterCondition(CounterType.OMEN, 0);
|
||||
|
||||
public SoulcipherBoard(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}{U}");
|
||||
this.secondSideCardClazz = mage.cards.c.CipherboundSpirit.class;
|
||||
|
||||
// Soulcipher Board enters the battlefield with three omen counters on it.
|
||||
this.addAbility(new EntersBattlefieldAbility(
|
||||
new AddCountersSourceEffect(CounterType.OMEN.createInstance(3)),
|
||||
"with three omen counters on it"
|
||||
));
|
||||
|
||||
// {1}{U}, {T}: Look at the top two cards of your library. Put one of them into your graveyard.
|
||||
Ability ability = new SimpleActivatedAbility(new LookLibraryAndPickControllerEffect(
|
||||
StaticValue.get(2), false, StaticValue.get(1), StaticFilters.FILTER_CARD,
|
||||
Zone.LIBRARY, true, false, false, Zone.GRAVEYARD, false
|
||||
).setText("look at the top two cards of your library. Put one of them into your graveyard"), new ManaCostsImpl<>("{1}{U}"));
|
||||
ability.addCost(new TapSourceCost());
|
||||
this.addAbility(ability);
|
||||
|
||||
// Whenever a creature card is put into your graveyard from anywhere, remove an omen counter from Soulcipher Board. Then if it has no omen counters on it, transform it.
|
||||
this.addAbility(new TransformAbility());
|
||||
ability = new PutCardIntoGraveFromAnywhereAllTriggeredAbility(
|
||||
new RemoveCounterSourceEffect(CounterType.OMEN.createInstance()),
|
||||
false, StaticFilters.FILTER_CARD_CREATURE_A, TargetController.YOU
|
||||
);
|
||||
ability.addEffect(new ConditionalOneShotEffect(
|
||||
new TransformSourceEffect(), condition,
|
||||
"Then if it has no omen counters on it, transform it"
|
||||
));
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
||||
private SoulcipherBoard(final SoulcipherBoard card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public SoulcipherBoard copy() {
|
||||
return new SoulcipherBoard(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -79,6 +79,7 @@ public final class InnistradCrimsonVow extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Change of Fortune", 150, Rarity.RARE, mage.cards.c.ChangeOfFortune.class));
|
||||
cards.add(new SetCardInfo("Child of the Pack", 234, Rarity.UNCOMMON, mage.cards.c.ChildOfThePack.class));
|
||||
cards.add(new SetCardInfo("Chill of the Grave", 51, Rarity.COMMON, mage.cards.c.ChillOfTheGrave.class));
|
||||
cards.add(new SetCardInfo("Cipherbound Spirit", 79, Rarity.UNCOMMON, mage.cards.c.CipherboundSpirit.class));
|
||||
cards.add(new SetCardInfo("Circle of Confinement", 7, Rarity.UNCOMMON, mage.cards.c.CircleOfConfinement.class));
|
||||
cards.add(new SetCardInfo("Clever Distraction", 9, Rarity.UNCOMMON, mage.cards.c.CleverDistraction.class));
|
||||
cards.add(new SetCardInfo("Cloaked Cadet", 192, Rarity.UNCOMMON, mage.cards.c.CloakedCadet.class));
|
||||
|
|
@ -266,6 +267,7 @@ public final class InnistradCrimsonVow extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Skywarp Skaab", 78, Rarity.COMMON, mage.cards.s.SkywarpSkaab.class));
|
||||
cards.add(new SetCardInfo("Snarling Wolf", 219, Rarity.COMMON, mage.cards.s.SnarlingWolf.class));
|
||||
cards.add(new SetCardInfo("Sorin the Mirthless", 131, Rarity.MYTHIC, mage.cards.s.SorinTheMirthless.class));
|
||||
cards.add(new SetCardInfo("Soulcipher Board", 79, Rarity.UNCOMMON, mage.cards.s.SoulcipherBoard.class));
|
||||
cards.add(new SetCardInfo("Spectral Binding", 48, Rarity.COMMON, mage.cards.s.SpectralBinding.class));
|
||||
cards.add(new SetCardInfo("Spiked Ripsaw", 220, Rarity.UNCOMMON, mage.cards.s.SpikedRipsaw.class));
|
||||
cards.add(new SetCardInfo("Splendid Reclamation", 221, Rarity.RARE, mage.cards.s.SplendidReclamation.class));
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue