Add more cards:
Angel of Fury Angrath, the Flame-Chained Bloodspore Thrinax Din of the Fireherd (+5_5_black_and_red_Elemental_creature_token) Erayo, Soratami Ascendant / Erayo's Essence Ezuri, Claw of Progress Grief Tyrant Grunn, the Lonely King Guardian of the Ages Hellion Eruption (+4/4 red Hellion creature token) Kalemne, Disciple of Iroas Kumano's Blessing Lightning Coils Morbid Bloom Nezumi Shortfang / Stabwhisker the Odious The Immortal Sun Urgoros, the Empty One Wash Outmaster
parent
2f7f188a52
commit
9cc1dac5aa
|
@ -0,0 +1,10 @@
|
|||
name=4/4 red Hellion creature token
|
||||
token=Hellion
|
||||
image=https://img.scryfall.com/cards/normal/en/tpca/12.jpg
|
||||
image_updated=2015-11-12
|
||||
value=4
|
||||
type=Creature
|
||||
subtype=Hellion
|
||||
color=r
|
||||
pt=4/4
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
name=5/5 black and red Elemental creature token
|
||||
token=Elemental
|
||||
image=https://img.scryfall.com/cards/normal/en/tshm/9.jpg
|
||||
value=5
|
||||
type=Creature
|
||||
subtype=Elemental
|
||||
color=rb
|
||||
pt=5/5
|
|
@ -6,9 +6,7 @@ type=Creature
|
|||
subtype=Angel
|
||||
cost={4}{W}{W}
|
||||
pt=3/5
|
||||
ability=Flying;\
|
||||
When SN dies, you may shuffle it into its owner's library.
|
||||
ability=Flying
|
||||
timing=main
|
||||
oracle=Flying\nWhen Angel of Fury dies, you may shuffle it into its owner's library.
|
||||
status=needs groovy
|
||||
#Parses but graveyard -> library, not battlefield -> library
|
||||
requires_groovy_code=Guan Yu, Sainted Warrior
|
|
@ -0,0 +1,46 @@
|
|||
[
|
||||
new MagicPlaneswalkerActivation(-3) {
|
||||
@Override
|
||||
public MagicEvent getPermanentEvent(final MagicPermanent source,final MagicPayedCost payedCost) {
|
||||
return new MagicEvent(
|
||||
source,
|
||||
NEG_TARGET_CREATURE,
|
||||
MagicExileTargetPicker.create(),
|
||||
this,
|
||||
"PN untaps target creature\$ and gains control of it until end of turn. " +
|
||||
"That creature gains haste until end of turn. "+
|
||||
"Sacrifice it at the beginning of the next end step if it has converted mana cost 3 or less."
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
event.processTargetPermanent(game, {
|
||||
game.doAction(new GainControlAction(event.getPlayer(),it,MagicStatic.UntilEOT));
|
||||
game.doAction(new UntapAction(it));
|
||||
game.doAction(new GainAbilityAction(it,MagicAbility.Haste));
|
||||
if (it.getConvertedCost() <= 3) {
|
||||
game.doAction(new AddTriggerAction(it, AtEndOfTurnTrigger.Sacrifice));
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
new MagicPlaneswalkerActivation(-8) {
|
||||
@Override
|
||||
public MagicEvent getPermanentEvent(final MagicPermanent source,final MagicPayedCost payedCost) {
|
||||
return new MagicEvent(
|
||||
source,
|
||||
this,
|
||||
"Each opponent loses life equal to the number of cards in his or her graveyard."
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
final MagicPlayer player = event.getPlayer();
|
||||
final int amount=CARD_FROM_GRAVEYARD.filter(event.getSource().getOpponent()).size();
|
||||
game.logAppendValue(player,amount);
|
||||
game.doAction(new ChangeLifeAction(player.getOpponent(),-amount));
|
||||
}
|
||||
}
|
||||
]
|
|
@ -6,8 +6,7 @@ type=Legendary,Planeswalker
|
|||
subtype=Angrath
|
||||
cost={3}{B}{R}
|
||||
loyalty=4
|
||||
ability=+1: Each opponent discards a card and loses 2 life.;\
|
||||
−3: Gain control of target creature until end of turn. Untap it. It gains haste until end of turn. Sacrifice it at the beginning of the next end step if it has converted mana cost 3 or less.;\
|
||||
−8: Each opponent loses life equal to the number of cards in his or her graveyard.
|
||||
ability=+1: Each opponent discards a card~and each opponent loses 2 life.
|
||||
timing=main
|
||||
requires_groovy_code
|
||||
oracle=+1: Each opponent discards a card and loses 2 life.\n−3: Gain control of target creature until end of turn. Untap it. It gains haste until end of turn. Sacrifice it at the beginning of the next end step if it has converted mana cost 3 or less.\n−8: Each opponent loses life equal to the number of cards in his or her graveyard.
|
|
@ -0,0 +1,20 @@
|
|||
[
|
||||
new OtherEntersBattlefieldTrigger(MagicTrigger.REPLACEMENT) {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game, final MagicPermanent permanent, final MagicPermanent otherPermanent) {
|
||||
if (otherPermanent != permanent &&
|
||||
otherPermanent.isCreature() &&
|
||||
otherPermanent.isFriend(permanent)) {
|
||||
final int amount = permanent.getCounters(MagicCounterType.PlusOne);
|
||||
if (amount > 0 ) {
|
||||
game.doAction(new ChangeCountersAction(permanent.getController(), otherPermanent, MagicCounterType.PlusOne, amount));
|
||||
game.logAppendMessage(
|
||||
permanent.getController(),
|
||||
"${otherPermanent.getName()} enters the battlefield with an additional ${amount} +1/+1 counters on it."
|
||||
);
|
||||
}
|
||||
}
|
||||
return MagicEvent.NONE;
|
||||
}
|
||||
}
|
||||
]
|
|
@ -7,8 +7,7 @@ type=Creature
|
|||
subtype=Lizard
|
||||
cost={2}{G}{G}
|
||||
pt=2/2
|
||||
ability=Devour 1;\
|
||||
Each other creature you control enters the battlefield with an additional X +1/+1 counters on it, where X is the number of +1/+1 counters on SN.
|
||||
ability=Devour 1;
|
||||
timing=fmain
|
||||
oracle=Devour 1\nEach other creature you control enters the battlefield with an additional X +1/+1 counters on it, where X is the number of +1/+1 counters on Bloodspore Thrinax.
|
||||
status=needs groovy
|
||||
requires_groovy_code
|
|
@ -0,0 +1,40 @@
|
|||
def action = {
|
||||
final MagicGame game, final MagicEvent event ->
|
||||
event.processTargetPlayer(game, {
|
||||
final MagicPlayer player = event.getPlayer();
|
||||
final int BC = BLACK_CREATURE_YOU_CONTROL.filter(player).size();
|
||||
game.logAppendValue(player,BC)
|
||||
for (int i = 0; i < BC; i++) {
|
||||
game.addEvent(new MagicSacrificePermanentEvent(event.getSource(), it, SACRIFICE_CREATURE));
|
||||
}
|
||||
final int RC = RED_CREATURE_YOU_CONTROL.filter(player).size();
|
||||
game.logAppendValue(player,RC)
|
||||
for (int i = 0; i < RC; i++) {
|
||||
game.addEvent(new MagicSacrificePermanentEvent(event.getSource(), it, SACRIFICE_LAND));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
[
|
||||
new MagicSpellCardEvent() {
|
||||
@Override
|
||||
public MagicEvent getEvent(final MagicCardOnStack cardOnStack,final MagicPayedCost payedCost) {
|
||||
return new MagicEvent(
|
||||
cardOnStack,
|
||||
this,
|
||||
"PN create a 5/5 black and red Elemental creature token."
|
||||
);
|
||||
}
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
game.doAction(new PlayTokensAction(event.getPlayer(), CardDefinitions.getToken("5/5 black and red Elemental creature token"), 1));
|
||||
game.doAction(new PutItemOnStackAction(new MagicTriggerOnStack(new MagicEvent(
|
||||
event.getSource(),
|
||||
TARGET_OPPONENT,
|
||||
action,
|
||||
"Target opponent\$ sacrifices a creature for each black creature PN control, "+
|
||||
"then sacrifices a land for each red creature PN control."
|
||||
))));
|
||||
}
|
||||
}
|
||||
]
|
|
@ -4,7 +4,6 @@ value=3.939
|
|||
rarity=R
|
||||
type=Sorcery
|
||||
cost={5}{B/R}{B/R}{B/R}
|
||||
effect=Create a 5/5 black and red Elemental creature token. Target opponent sacrifices a creature for each black creature you control, then sacrifices a land for each red creature you control.
|
||||
timing=main
|
||||
oracle=Create a 5/5 black and red Elemental creature token. Target opponent sacrifices a creature for each black creature you control, then sacrifices a land for each red creature you control.
|
||||
status=needs groovy
|
||||
requires_groovy_code
|
|
@ -0,0 +1,21 @@
|
|||
[
|
||||
new OtherSpellIsCastTrigger() {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent, final MagicCardOnStack cardOnStack) {
|
||||
return (game.getSpellsCast() == 3) ?
|
||||
new MagicEvent(
|
||||
permanent,
|
||||
cardOnStack,
|
||||
this,
|
||||
"Whenever the fourth spell of a turn is cast, flip SN."
|
||||
)
|
||||
:
|
||||
MagicEvent.NONE;
|
||||
}
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
game.doAction(new FlipAction(event.getPermanent()));
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
@ -6,9 +6,9 @@ type=Legendary,Creature
|
|||
subtype=Moonfolk,Monk
|
||||
cost={1}{U}
|
||||
pt=1/1
|
||||
ability=Flying;\
|
||||
Whenever the fourth spell of a turn is cast, flip SN.
|
||||
ability=Flying
|
||||
flip=Erayo's Essence
|
||||
timing=main
|
||||
requires_groovy_code
|
||||
oracle=Flying\nWhenever the fourth spell of a turn is cast, flip Erayo, Soratami Ascendant.
|
||||
status=needs groovy
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
[
|
||||
new OtherSpellIsCastTrigger() {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent, final MagicCardOnStack cardOnStack) {
|
||||
return (permanent.isOpponent(cardOnStack.getController()) && permanent.getOpponent().getSpellsCast() == 0) ?
|
||||
new MagicEvent(
|
||||
permanent,
|
||||
cardOnStack,
|
||||
this,
|
||||
"Whenever an opponent casts his or her first spell each turn, counter that spell.RN"
|
||||
)
|
||||
:
|
||||
MagicEvent.NONE;
|
||||
}
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
game.doAction(new CounterItemOnStackAction(event.getRefCardOnStack()));
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
|
|
@ -4,9 +4,9 @@ value=4.211
|
|||
rarity=R
|
||||
type=Legendary,Enchantment
|
||||
cost={1}{U}
|
||||
ability=Whenever an opponent casts his or her first spell each turn, counter that spell.
|
||||
flip=Erayo, Soratami Ascendant
|
||||
timing=enchantment
|
||||
hidden
|
||||
requires_groovy_code
|
||||
oracle=Whenever an opponent casts his or her first spell each turn, counter that spell.
|
||||
status=needs groovy
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
def choice = MagicTargetChoice.Positive("another target creature you control")
|
||||
|
||||
[
|
||||
new AtBeginOfCombatTrigger() {
|
||||
@Override
|
||||
public boolean accept(final MagicPermanent permanent, final MagicPlayer turnPlayer) {
|
||||
return permanent.getController().getExperience() > 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent, final MagicPlayer attackingPlayer) {
|
||||
return permanent.getController() == attackingPlayer ?
|
||||
new MagicEvent(
|
||||
permanent,
|
||||
choice,
|
||||
this,
|
||||
"PN puts X +1/+1 counters on another target creature he or she control\$, where X is the number of experience counters PN have."
|
||||
):
|
||||
MagicEvent.NONE;
|
||||
}
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
event.processTargetPermanent(game, {
|
||||
final int X = event.getPlayer().getExperience();
|
||||
game.logAppendX(event.getPlayer(), X);
|
||||
game.doAction(new ChangeCountersAction(event.getPlayer(), it, MagicCounterType.PlusOne, X));
|
||||
});
|
||||
}
|
||||
}
|
||||
]
|
|
@ -7,8 +7,8 @@ type=Legendary,Creature
|
|||
subtype=Elf,Warrior
|
||||
cost={2}{G}{U}
|
||||
pt=3/3
|
||||
ability=Whenever a creature with power 2 or less enters the battlefield under your control, you get an experience counter.;\
|
||||
At the beginning of combat on your turn, put X +1/+1 counters on another target creature you control, where X is the number of experience counters you have.
|
||||
ability=Whenever a creature with power 2 or less enters the battlefield under your control, you get an experience counter.
|
||||
timing=fmain
|
||||
requires_groovy_code
|
||||
oracle=Whenever a creature with power 2 or less enters the battlefield under your control, you get an experience counter.\nAt the beginning of combat on your turn, put X +1/+1 counters on another target creature you control, where X is the number of experience counters you have.
|
||||
status=needs groovy
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
[
|
||||
new ThisDiesTrigger() {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent, final MagicPermanent diedPermanent) {
|
||||
final int amount = permanent.getCounters(MagicCounterType.MinusOne);
|
||||
return new MagicEvent(
|
||||
permanent,
|
||||
NEG_TARGET_CREATURE,
|
||||
amount,
|
||||
this,
|
||||
"PN put ${amount} -1/-1 counter(s) on target creature\$."
|
||||
);
|
||||
}
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
event.processTargetPermanent(game, {
|
||||
game.doAction(new ChangeCountersAction(event.getPlayer(),it, MagicCounterType.MinusOne, event.getRefInt()));
|
||||
});
|
||||
}
|
||||
}
|
||||
]
|
|
@ -6,8 +6,7 @@ type=Creature
|
|||
subtype=Horror
|
||||
cost={5}{B/R}
|
||||
pt=8/8
|
||||
ability=SN enters the battlefield with four -1/-1 counters on it.;\
|
||||
When SN dies, put a -1/-1 counter on target creature for each -1/-1 counter on SN.
|
||||
ability=SN enters the battlefield with four -1/-1 counters on it.
|
||||
timing=main
|
||||
oracle=Grief Tyrant enters the battlefield with four -1/-1 counters on it.\nWhen Grief Tyrant dies, put a -1/-1 counter on target creature for each -1/-1 counter on Grief Tyrant.
|
||||
status=needs groovy
|
||||
requires_groovy_code
|
|
@ -0,0 +1,32 @@
|
|||
[
|
||||
new EntersWithCounterTrigger() {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final MagicPayedCost payedCost) {
|
||||
if (payedCost.isKicked()) {
|
||||
game.doAction(new ChangeCountersAction(permanent.getController(),permanent,MagicCounterType.PlusOne,5));
|
||||
}
|
||||
return MagicEvent.NONE;
|
||||
}
|
||||
},
|
||||
new ThisAttacksTrigger() {
|
||||
@Override
|
||||
public boolean accept(final MagicPermanent permanent, final MagicPermanent attacker) {
|
||||
return super.accept(permanent, attacker) && attacker.getController().getNrOfAttackers() == 1;
|
||||
}
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent, final MagicPermanent attacker) {
|
||||
return new MagicEvent(
|
||||
permanent,
|
||||
this,
|
||||
"Double SN's power and toughness until end of turn."
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
final int power = event.getPermanent().getPower();
|
||||
final int toughness = event.getPermanent().getToughness();
|
||||
game.doAction(new ChangeTurnPTAction(event.getPermanent(), power, toughness));
|
||||
}
|
||||
}
|
||||
]
|
|
@ -6,8 +6,7 @@ type=Legendary,Creature
|
|||
subtype=Ape,Warrior
|
||||
cost={4}{G}{G}
|
||||
pt=5/5
|
||||
ability=Kicker {3};\
|
||||
If SN was kicked, it enters the battlefield with five +1/+1 counters on it.;\
|
||||
Whenever Grunn attacks alone, double its power and toughness until end of turn.
|
||||
ability=Kicker {3}
|
||||
timing=main
|
||||
requires_groovy_code
|
||||
oracle=Kicker {3}\nIf Grunn, the Lonely King was kicked, it enters the battlefield with five +1/+1 counters on it.\nWhenever Grunn attacks alone, double its power and toughness until end of turn.
|
|
@ -0,0 +1,20 @@
|
|||
[
|
||||
new AttacksTrigger() {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final MagicPermanent creature) {
|
||||
return permanent.isEnemy(creature) && permanent.hasAbility(MagicAbility.Defender) ?
|
||||
new MagicEvent(
|
||||
permanent,
|
||||
this,
|
||||
"SN loses defender and gains trample."
|
||||
):
|
||||
MagicEvent.NONE;
|
||||
}
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
final MagicPermanent perm = event.getPermanent();
|
||||
game.doAction(new LoseAbilityAction(perm,MagicAbility.Defender, MagicStatic.Forever));
|
||||
game.doAction(new GainAbilityAction(perm,MagicAbility.Trample, MagicStatic.Forever));
|
||||
}
|
||||
}
|
||||
]
|
|
@ -6,8 +6,7 @@ type=Artifact,Creature
|
|||
subtype=Golem
|
||||
cost={7}
|
||||
pt=7/7
|
||||
ability=Defender;\
|
||||
When a creature attacks you or a planeswalker you control, if SN has defender, it loses defender and gains trample.
|
||||
ability=Defender
|
||||
timing=smain
|
||||
oracle=Defender\nWhen a creature attacks you or a planeswalker you control, if Guardian of the Ages has defender, it loses defender and gains trample.
|
||||
status=needs groovy
|
||||
requires_groovy_code
|
|
@ -0,0 +1,25 @@
|
|||
[
|
||||
new MagicSpellCardEvent() {
|
||||
@Override
|
||||
public MagicEvent getEvent(final MagicCardOnStack cardOnStack,final MagicPayedCost payedCost) {
|
||||
return new MagicEvent(
|
||||
cardOnStack,
|
||||
this,
|
||||
"PN sacrifice all creatures he or she controls. " +
|
||||
"Then creates that many 4/4 red Hellion creature tokens."
|
||||
);
|
||||
}
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
final Collection<MagicPermanent> targets = CREATURE_YOU_CONTROL.filter(event);
|
||||
for (final MagicPermanent target : targets) {
|
||||
game.doAction(new SacrificeAction(target))
|
||||
}
|
||||
game.doAction(new PlayTokensAction(
|
||||
event.getPlayer(),
|
||||
CardDefinitions.getToken("4/4 red Hellion creature token"),
|
||||
targets.size()
|
||||
));
|
||||
}
|
||||
}
|
||||
]
|
|
@ -4,7 +4,7 @@ value=3.000
|
|||
rarity=R
|
||||
type=Sorcery
|
||||
cost={5}{R}
|
||||
effect=Sacrifice all creatures you control, then create that many 4/4 red Hellion creature tokens.
|
||||
timing=main
|
||||
requires_groovy_code
|
||||
oracle=Sacrifice all creatures you control, then create that many 4/4 red Hellion creature tokens.
|
||||
status=needs groovy
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
[
|
||||
new OtherSpellIsCastTrigger() {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final MagicCardOnStack spell) {
|
||||
return spell.isFriend(permanent) && spell.hasType(MagicType.Creature) && spell.getConvertedCost() >= 5 ?
|
||||
new MagicEvent(
|
||||
permanent,
|
||||
this,
|
||||
"PN gets an experience counter."
|
||||
):
|
||||
MagicEvent.NONE;
|
||||
}
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
game.doAction(new ChangeCountersAction(event.getPlayer(),event.getPlayer(),MagicCounterType.Experience, 1));
|
||||
}
|
||||
},
|
||||
new MagicStatic(MagicLayer.ModPT) {
|
||||
@Override
|
||||
public void modPowerToughness(final MagicPermanent source, final MagicPermanent permanent, final MagicPowerToughness pt) {
|
||||
int amount = permanent.getController().getExperience();
|
||||
pt.add(amount,amount);
|
||||
}
|
||||
}
|
||||
]
|
|
@ -7,9 +7,8 @@ type=Legendary,Creature
|
|||
subtype=Giant,Soldier
|
||||
cost={2}{R}{W}
|
||||
pt=3/3
|
||||
ability=Double strike, vigilance;\
|
||||
Whenever you cast a creature spell with converted mana cost 5 or greater, you get an experience counter.;\
|
||||
SN gets +1/+1 for each experience counter you have.
|
||||
ability=Double strike, vigilance
|
||||
timing=main
|
||||
requires_groovy_code
|
||||
oracle=Double strike, vigilance\nWhenever you cast a creature spell with converted mana cost 5 or greater, you get an experience counter.\nKalemne, Disciple of Iroas gets +1/+1 for each experience counter you have.
|
||||
status=needs groovy
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
[
|
||||
new DamageIsDealtTrigger(MagicTrigger.REPLACEMENT) {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final MagicDamage damage) {
|
||||
return damage.getSource() == permanent.getEnchantedPermanent() && damage.getTarget().isCreaturePermanent() ?
|
||||
new MagicEvent(
|
||||
permanent,
|
||||
damage.getTargetPermanent(),
|
||||
this,
|
||||
"If RN would die this turn, exile it instead."
|
||||
):
|
||||
MagicEvent.NONE;
|
||||
}
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
game.doAction(new AddTurnTriggerAction(event.getRefPermanent(),ThisLeavesBattlefieldTrigger.IfDieExileInstead));
|
||||
}
|
||||
}
|
||||
]
|
|
@ -6,9 +6,8 @@ type=Enchantment
|
|||
subtype=Aura
|
||||
cost={2}{R}
|
||||
ability=Flash;\
|
||||
Enchant creature;\
|
||||
If a creature dealt damage by enchanted creature this turn would die, exile it instead.
|
||||
Enchant creature.
|
||||
timing=flash
|
||||
enchant=default,creature
|
||||
enchant=pump,pos creature
|
||||
oracle=Flash\nEnchant creature\nIf a creature dealt damage by enchanted creature this turn would die, exile it instead.
|
||||
status=needs groovy
|
||||
requires_groovy_code
|
|
@ -0,0 +1,49 @@
|
|||
def trigger = new AtEndOfTurnTrigger() {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final MagicPlayer eotPlayer) {
|
||||
return new MagicEvent(
|
||||
permanent,
|
||||
this,
|
||||
"Exile SN."
|
||||
);
|
||||
}
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
game.doAction(new RemoveFromPlayAction(event.getPermanent(), MagicLocationType.Exile));
|
||||
}
|
||||
}
|
||||
|
||||
def playMod = {
|
||||
final MagicPermanent perm ->
|
||||
final MagicGame game = perm.getGame();
|
||||
game.doAction(new AddTurnTriggerAction(perm, trigger));
|
||||
}
|
||||
|
||||
[
|
||||
new AtYourUpkeepTrigger() {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final MagicPlayer upkeepPlayer) {
|
||||
final int counters = permanent.getCounters(MagicCounterType.Charge);
|
||||
return permanent.getCounters(MagicCounterType.Charge) >= 5 ?
|
||||
new MagicEvent(
|
||||
permanent,
|
||||
counters,
|
||||
this,
|
||||
"PN remove all charge counters from SN and creates RN 3/1 red Elemental creature tokens with haste. "+
|
||||
"Exile them at the beginning of the next end step."
|
||||
) :
|
||||
MagicEvent.NONE;
|
||||
}
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
game.doAction(new ChangeCountersAction(event.getPlayer(),event.getPermanent(),MagicCounterType.Charge,-event.getRefInt()));
|
||||
event.getRefInt().times {
|
||||
game.doAction(new PlayTokenAction(
|
||||
event.getPlayer(),
|
||||
CardDefinitions.getToken("3/1 red Elemental creature token with haste"),
|
||||
playMod
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
|
@ -4,8 +4,7 @@ value=3.755
|
|||
rarity=R
|
||||
type=Artifact
|
||||
cost={3}
|
||||
ability=Whenever a nontoken creature you control dies, put a charge counter on SN.;\
|
||||
At the beginning of your upkeep, if SN has five or more charge counters on it, remove all of them from it and create that many 3/1 red Elemental creature tokens with haste. Exile them at the beginning of the next end step.
|
||||
ability=Whenever a nontoken creature you control dies, put a charge counter on SN.
|
||||
timing=artifact
|
||||
oracle=Whenever a nontoken creature you control dies, put a charge counter on Lightning Coils.\nAt the beginning of your upkeep, if Lightning Coils has five or more charge counters on it, remove all of them from it and create that many 3/1 red Elemental creature tokens with haste. Exile them at the beginning of the next end step.
|
||||
status=needs groovy
|
||||
requires_groovy_code
|
|
@ -0,0 +1,25 @@
|
|||
[
|
||||
new MagicSpellCardEvent() {
|
||||
@Override
|
||||
public MagicEvent getEvent(final MagicCardOnStack cardOnStack,final MagicPayedCost payedCost) {
|
||||
return new MagicEvent(
|
||||
cardOnStack,
|
||||
TARGET_CREATURE_CARD_FROM_ALL_GRAVEYARDS,
|
||||
MagicGraveyardTargetPicker.PutOntoBattlefield,
|
||||
this,
|
||||
"Exile target creature card\$ from a graveyard. "+
|
||||
"PN creates X 1/1 green Saproling creature tokens, where X is the exiled creature card's toughness."
|
||||
);
|
||||
}
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
event.processTargetCard(game, {
|
||||
final int amount = it.getToughness();
|
||||
final MagicPlayer player = event.getPlayer();
|
||||
game.logAppendValue(player,amount);
|
||||
game.doAction(new ShiftCardAction(it, MagicLocationType.Graveyard, MagicLocationType.Exile));
|
||||
game.doAction(new PlayTokensAction(player,CardDefinitions.getToken("1/1 green Saproling creature token"),amount));
|
||||
});
|
||||
}
|
||||
}
|
||||
]
|
|
@ -4,7 +4,6 @@ value=2.894
|
|||
rarity=U
|
||||
type=Sorcery
|
||||
cost={4}{B}{G}
|
||||
effect=Exile target creature card from a graveyard, then create X 1/1 green Saproling creature tokens, where X is the exiled card's toughness.
|
||||
timing=main
|
||||
requires_groovy_code
|
||||
oracle=Exile target creature card from a graveyard, then create X 1/1 green Saproling creature tokens, where X is the exiled card's toughness.
|
||||
status=needs groovy
|
|
@ -0,0 +1,44 @@
|
|||
def action = {
|
||||
final MagicGame game, final MagicEvent event ->
|
||||
final int hand = event.getPlayer().getHandSize();
|
||||
if (hand == 0) {
|
||||
game.doAction(new FlipAction(event.getPermanent()));
|
||||
}
|
||||
}
|
||||
|
||||
[
|
||||
new MagicPermanentActivation(
|
||||
new MagicActivationHints(MagicTiming.Removal),
|
||||
"Discard"
|
||||
) {
|
||||
@Override
|
||||
public Iterable<? extends MagicEvent> getCostEvent(final MagicPermanent source) {
|
||||
return [
|
||||
new MagicTapEvent(source),
|
||||
new MagicPayManaCostEvent(source, "{1}{B}")
|
||||
];
|
||||
}
|
||||
|
||||
@Override
|
||||
public MagicEvent getPermanentEvent(final MagicPermanent source,final MagicPayedCost payedCost) {
|
||||
return new MagicEvent(
|
||||
source,
|
||||
TARGET_OPPONENT,
|
||||
this,
|
||||
"Target opponent\$ discards a card. Then if that player has no cards in hand, flip SN."
|
||||
);
|
||||
}
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
event.processTargetPlayer(game,{
|
||||
game.addEvent(new MagicDiscardEvent(event.getSource(),it));
|
||||
game.addEvent(new MagicEvent(
|
||||
event.getSource(),
|
||||
it,
|
||||
action,
|
||||
""
|
||||
));
|
||||
});
|
||||
}
|
||||
}
|
||||
]
|
|
@ -6,8 +6,8 @@ type=Creature
|
|||
subtype=Rat,Rogue
|
||||
cost={1}{B}
|
||||
pt=1/1
|
||||
ability={1}{B}, {T}: Target opponent discards a card. Then if that player has no cards in hand, flip SN.
|
||||
flip=Stabwhisker the Odious
|
||||
timing=main
|
||||
oracle={1}{B}, {T}: Target opponent discards a card. Then if that player has no cards in hand, flip Nezumi Shortfang.
|
||||
status=needs groovy
|
||||
requires_groovy_code
|
||||
|
|
@ -38,9 +38,8 @@ def choice = new MagicTargetChoice("a nonland permanent to sacrifice");
|
|||
game.addEvent(discard);
|
||||
} else {
|
||||
game.doAction(new ChangeLifeAction(event.getPlayer(), -3));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
[
|
||||
new AtUpkeepTrigger() {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game, final MagicPermanent permanent, final MagicPlayer upkeepPlayer) {
|
||||
return permanent.isOpponent(upkeepPlayer) ?
|
||||
new MagicEvent(
|
||||
permanent,
|
||||
permanent.getController(),
|
||||
upkeepPlayer,
|
||||
this,
|
||||
"RN loses 1 life for each card fewer than three in RN's hand."
|
||||
):
|
||||
MagicEvent.NONE;
|
||||
}
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
final MagicPlayer player = event.getRefPlayer();
|
||||
final int loss = 3 - player.getHandSize();
|
||||
if (loss > 0) {
|
||||
game.doAction(new ChangeLifeAction(player, -loss));
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
|
@ -6,9 +6,9 @@ type=Legendary,Creature
|
|||
subtype=Rat,Shaman
|
||||
cost={1}{B}
|
||||
pt=3/3
|
||||
ability=At the beginning of each opponent's upkeep, that player loses 1 life for each card fewer than three in his or her hand.
|
||||
flip=Nezumi Shortfang
|
||||
timing=main
|
||||
hidden
|
||||
oracle=At the beginning of each opponent's upkeep, that player loses 1 life for each card fewer than three in his or her hand.
|
||||
status=needs groovy
|
||||
requires_groovy_code
|
||||
|
|
@ -1,32 +1,32 @@
|
|||
def action = {
|
||||
final MagicGame game, final MagicEvent event ->
|
||||
if (event.isYes()) {
|
||||
for (final MagicPlayer player : game.getAPNAP()) {
|
||||
final int x = event.getCardOnStack().getX();
|
||||
game.doAction(new PlayTokensAction(player,CardDefinitions.getToken("1/1 red Elemental creature token with haste"),x));
|
||||
}
|
||||
if (event.isYes()) {
|
||||
for (final MagicPlayer player : game.getAPNAP()) {
|
||||
final int x = event.getCardOnStack().getX();
|
||||
game.doAction(new PlayTokensAction(player, CardDefinitions.getToken("1/1 red Elemental creature token with haste"), x));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[
|
||||
new MagicSpellCardEvent() {
|
||||
@Override
|
||||
public MagicEvent getEvent(final MagicCardOnStack cardOnStack,final MagicPayedCost payedCost) {
|
||||
public MagicEvent getEvent(final MagicCardOnStack cardOnStack, final MagicPayedCost payedCost) {
|
||||
final int x=payedCost.getX();
|
||||
return new MagicEvent(
|
||||
cardOnStack,
|
||||
this,
|
||||
"PN creates "+x+" 1/1 red Elemental creature tokens with haste."
|
||||
"PN creates " + x + " 1/1 red Elemental creature tokens with haste."
|
||||
);
|
||||
}
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
final int x = event.getCardOnStack().getX();
|
||||
game.doAction(new PlayTokensAction(event.getPlayer(),CardDefinitions.getToken("1/1 red Elemental creature token with haste"),x));
|
||||
game.addEvent(new MagicEvent(event.getSource(),event.cardOnStack.getOpponent(),new MagicMayChoice("Create tokens?"),action,
|
||||
"PN may\$ creates "+x+" 1/1 red Elemental creature tokens with haste. "+
|
||||
"If PN does, "+event.getPlayer()+" creates "+x+" 1/1 red Elemental creature tokens with haste."
|
||||
game.doAction(new PlayTokensAction(event.getPlayer(), CardDefinitions.getToken("1/1 red Elemental creature token with haste"), x));
|
||||
game.addEvent(new MagicEvent(event.getSource(), event.cardOnStack.getOpponent(), new MagicMayChoice("Create tokens?"), action,
|
||||
"PN may\$ creates " + x + " 1/1 red Elemental creature tokens with haste. " +
|
||||
"If PN does, " + event.getPlayer() + " creates " + x + " 1/1 red Elemental creature tokens with haste."
|
||||
));
|
||||
}
|
||||
}
|
||||
]
|
||||
]
|
||||
|
|
|
@ -4,7 +4,7 @@ value=2.500
|
|||
rarity=M
|
||||
type=Legendary,Artifact
|
||||
cost={6}
|
||||
ability=Players can't activate planeswalkers' loyalty abilities.;\
|
||||
ability=Planeswalkers can't activate abilities.;\
|
||||
At the beginning of your draw step, draw an additional card.;\
|
||||
Spells you cast cost {1} less to cast.;\
|
||||
Creatures you control get +1/+1.
|
|
@ -20,7 +20,7 @@ def action = {
|
|||
game.addEvent(discard);
|
||||
} else {
|
||||
game.doAction(new ChangeLifeAction(event.getPlayer(), -3));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -58,4 +58,3 @@ def action = {
|
|||
}
|
||||
}
|
||||
]
|
||||
|
||||
|
|
|
@ -20,7 +20,7 @@ def action = {
|
|||
game.addEvent(discard);
|
||||
} else {
|
||||
game.doAction(new ChangeLifeAction(event.getPlayer(), -3));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -57,4 +57,3 @@ def action = {
|
|||
}
|
||||
}
|
||||
]
|
||||
|
||||
|
|
|
@ -7,6 +7,6 @@ subtype=Specter
|
|||
cost={4}{B}{B}
|
||||
pt=4/3
|
||||
ability=Flying;\
|
||||
Whenever SN deals combat damage to a player, that player discards a card at random. If the player can't, you draw a card.
|
||||
Whenever SN deals combat damage to a player, that player discards a card at random.~If that player has no cards in hand, you draw a card.
|
||||
timing=main
|
||||
oracle=Flying\nWhenever Urgoros, the Empty One deals combat damage to a player, that player discards a card at random. If the player can't, you draw a card.
|
|
@ -0,0 +1,26 @@
|
|||
[
|
||||
new MagicSpellCardEvent() {
|
||||
@Override
|
||||
public MagicEvent getEvent(final MagicCardOnStack cardOnStack,final MagicPayedCost payedCost) {
|
||||
return new MagicEvent(
|
||||
cardOnStack,
|
||||
MagicColorChoice.UNSUMMON_INSTANCE,
|
||||
this,
|
||||
"PN choose a color\$, " +
|
||||
"return all permanents of that color to their owner's hand."
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
final MagicColor color=event.getChosenColor();
|
||||
final MagicPermanentList all = new MagicPermanentList();
|
||||
PERMANENT.filter(event) each {
|
||||
if (it.hasColor(color)) {
|
||||
all.add(it);
|
||||
}
|
||||
}
|
||||
game.doAction(new RemoveAllFromPlayAction(all, MagicLocationType.OwnersHand));
|
||||
}
|
||||
}
|
||||
]
|
|
@ -4,7 +4,6 @@ value=4.294
|
|||
rarity=U
|
||||
type=Sorcery
|
||||
cost={3}{U}
|
||||
effect=Return all permanents of the color of your choice to their owners' hands.
|
||||
timing=main
|
||||
oracle=Return all permanents of the color of your choice to their owners' hands.
|
||||
status=needs groovy
|
||||
requires_groovy_code
|
Loading…
Reference in New Issue