Saga cards (#1636)
* Add The Flame of Keld * Add The Mending of Dominaria * Add Fall of the Thran * Add Rite of Belzenlok and its tokens * Add Song of Freyalise * Add Phyrexian Scriptures * Add Time of Ice * Add accept only own upkeep in Song of Freyalise * Change mana ability in Song of Freyalise * Use new list to contain cards being shuffled into the library in The Mending of Dominaria * Use PutOntoBattlefieldAction in The Mending of Dominaria * Use PutOntoBattlefieldAction in Fall of the Thranmaster
parent
2ff0e11de6
commit
ae1794fbfc
|
@ -0,0 +1,8 @@
|
|||
name=0/1 black Cleric creature token
|
||||
token=Cleric
|
||||
image=https://img.scryfall.com/cards/large/en/tdom/4.jpg
|
||||
value=1
|
||||
type=Creature
|
||||
subtype=Cleric
|
||||
color=b
|
||||
pt=0/1
|
|
@ -0,0 +1,27 @@
|
|||
def choice = new MagicTargetChoice("another creature to sacrifice");
|
||||
|
||||
[
|
||||
new AtUpkeepTrigger() {
|
||||
@Override
|
||||
public boolean accept(final MagicPermanent permanent, final MagicPlayer upkeepPlayer) {
|
||||
return permanent.isController(upkeepPlayer);
|
||||
}
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent, final MagicPlayer upkeepPlayer) {
|
||||
return new MagicEvent(
|
||||
permanent,
|
||||
this,
|
||||
"PN sacrifices another creature. If PN can't, SN deals 6 damage to PN."
|
||||
);
|
||||
}
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
final MagicEvent sacrifice = new MagicSacrificePermanentEvent(event.getSource(), choice);
|
||||
if (sacrifice.isSatisfied()) {
|
||||
game.addEvent(sacrifice);
|
||||
} else {
|
||||
game.doAction(new DealDamageAction(event.getSource(), event.getPlayer(), 6));
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
|
@ -0,0 +1,11 @@
|
|||
name=6/6 black Demon creature token
|
||||
token=Demon
|
||||
image=https://img.scryfall.com/cards/large/en/tdom/7.jpg
|
||||
value=4
|
||||
type=Creature
|
||||
subtype=Demon
|
||||
color=b
|
||||
pt=6/6
|
||||
ability=Flying, Trample
|
||||
requires_groovy_code
|
||||
oracle=Flying, Trample\nAt the beginning of your upkeep, sacrifice another creature. If you can't, this creature deals 6 damage to you.
|
|
@ -0,0 +1,54 @@
|
|||
def mainEvent = {
|
||||
final MagicPermanent permanent, final MagicEventAction action ->
|
||||
return new MagicEvent(
|
||||
permanent,
|
||||
action,
|
||||
"Each player returns two land cards from their graveyard to the battlefield."
|
||||
);
|
||||
}
|
||||
|
||||
def putlands = {
|
||||
final MagicGame game, final MagicEvent event ->
|
||||
event.processChosenCards(game, {
|
||||
game.doAction(new PutOntoBattlefieldAction(
|
||||
MagicLocationType.Graveyard,
|
||||
it,
|
||||
event.getPlayer()
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
def act = {
|
||||
final MagicGame game, final MagicEvent event ->
|
||||
for (final MagicPlayer player : game.getAPNAP()) {
|
||||
final MagicCardList graveyard = player.getGraveyard();
|
||||
game.addEvent(new MagicEvent(
|
||||
event.getSource(),
|
||||
player,
|
||||
new MagicFromCardListChoice(
|
||||
graveyard.findAll({ it.hasType(MagicType.Land) }),
|
||||
graveyard,
|
||||
2
|
||||
),
|
||||
putlands,
|
||||
"PN returns \$."
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
[
|
||||
new SagaChapterTrigger(2) {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game, final MagicPermanent permanent, final MagicCounterChangeTriggerData data) {
|
||||
return mainEvent(permanent, act);
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
new SagaChapterTrigger(3) {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game, final MagicPermanent permanent, final MagicCounterChangeTriggerData data) {
|
||||
return mainEvent(permanent, act);
|
||||
}
|
||||
}
|
||||
]
|
|
@ -5,7 +5,7 @@ rarity=R
|
|||
type=Enchantment
|
||||
subtype=Saga
|
||||
cost={5}{W}
|
||||
ability=I — Destroy all lands.;\
|
||||
II, III — Each player returns two land cards from their graveyard to the battlefield.
|
||||
ability=I — Destroy all lands.
|
||||
timing=enchantment
|
||||
requires_groovy_code
|
||||
oracle=I — Destroy all lands.\nII, III — Each player returns two land cards from their graveyard to the battlefield.
|
|
@ -0,0 +1,32 @@
|
|||
[
|
||||
new SagaChapterTrigger(1) {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent , final MagicCounterChangeTriggerData data) {
|
||||
return new MagicEvent(
|
||||
permanent,
|
||||
new MagicMayChoice("Choose a target creature?", POS_TARGET_CREATURE),
|
||||
this,
|
||||
"PN puts a +1/+1 counter on up to one target creature\$\$. " +
|
||||
"That creature becomes an artifact in addition to its other types."
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
if (event.isYes()) {
|
||||
event.processTargetPermanent(game, {
|
||||
game.doAction(new ChangeCountersAction(
|
||||
event.getPlayer(),
|
||||
it,
|
||||
MagicCounterType.PlusOne,
|
||||
1
|
||||
));
|
||||
game.doAction(new AddStaticAction(
|
||||
it,
|
||||
MagicStatic.Artifact
|
||||
));
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
|
@ -5,8 +5,8 @@ rarity=M
|
|||
type=Enchantment
|
||||
subtype=Saga
|
||||
cost={2}{B}{B}
|
||||
ability=I — Put a +1/+1 counter on up to one target creature. That creature becomes an artifact in addition to its other types.;\
|
||||
II — Destroy all nonartifact creatures.;\
|
||||
III — Exile all cards from all opponents' graveyards.
|
||||
ability=II — Destroy all nonartifact creatures.;\
|
||||
III — Exile all cards from your opponents' graveyards.
|
||||
timing=enchantment
|
||||
requires_groovy_code
|
||||
oracle=I — Put a +1/+1 counter on up to one target creature. That creature becomes an artifact in addition to its other types.\nII — Destroy all nonartifact creatures.\nIII — Exile all cards from all opponents' graveyards.
|
|
@ -6,6 +6,6 @@ type=Enchantment
|
|||
subtype=Saga
|
||||
cost={2}{B}{B}
|
||||
ability=I, II — Create two 0/1 black Cleric creature tokens.;\
|
||||
III — Create a 6/6 black Demon creature token with flying, trample, and "At the beginning of your upkeep, sacrifice another creature. If you can't, this creature deals 6 damage to you."
|
||||
III — Create a 6/6 black Demon creature token.
|
||||
timing=enchantment
|
||||
oracle=I, II — Create two 0/1 black Cleric creature tokens.\nIII — Create a 6/6 black Demon creature token with flying, trample, and "At the beginning of your upkeep, sacrifice another creature. If you can't, this creature deals 6 damage to you."
|
|
@ -0,0 +1,79 @@
|
|||
def manaAbility = new MagicManaActivation(MagicManaType.getList("one mana of any color")) {
|
||||
@Override
|
||||
public Iterable<? extends MagicEvent> getCostEvent(final MagicPermanent permanent) {
|
||||
return [ new MagicTapEvent(permanent) ];
|
||||
}
|
||||
}
|
||||
|
||||
def MANA = new MagicStatic(MagicLayer.Ability) {
|
||||
@Override
|
||||
public void modAbilityFlags(final MagicPermanent source, final MagicPermanent permanent, final Set<MagicAbility> flags) {
|
||||
permanent.addAbility(manaAbility);
|
||||
}
|
||||
};
|
||||
|
||||
def c12Action = {
|
||||
final MagicGame outerGame, final MagicEvent outerEvent ->
|
||||
final MagicPlayer player = outerEvent.getPlayer();
|
||||
player.getPermanents().findAll({ it.hasType(MagicType.Creature) }).each {
|
||||
outerGame.doAction(new AddStaticAction(it, MANA));
|
||||
|
||||
final AtUpkeepTrigger cleanup = new AtUpkeepTrigger() {
|
||||
@Override
|
||||
public boolean accept(final MagicPermanent permanent, final MagicPlayer upkeepPlayer) {
|
||||
return permanent.isController(upkeepPlayer);
|
||||
}
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game, final MagicPermanent permanent, final MagicPlayer upkeepPlayer) {
|
||||
game.addDelayedAction(new RemoveStaticAction(permanent, MANA));
|
||||
game.addDelayedAction(new RemoveTriggerAction(permanent, this));
|
||||
return MagicEvent.NONE;
|
||||
}
|
||||
}
|
||||
outerGame.doAction(new AddTriggerAction(it, cleanup));
|
||||
}
|
||||
}
|
||||
|
||||
def c12Event = {
|
||||
final MagicPermanent permanent ->
|
||||
return new MagicEvent(
|
||||
permanent,
|
||||
c12Action,
|
||||
"Until your next turn, creatures PN controls gain \"{T}: Add one mana of any color.\""
|
||||
);
|
||||
}
|
||||
|
||||
[
|
||||
new SagaChapterTrigger(1) {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent, final MagicCounterChangeTriggerData data) {
|
||||
return c12Event(permanent);
|
||||
}
|
||||
},
|
||||
|
||||
new SagaChapterTrigger(2) {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent, final MagicCounterChangeTriggerData data) {
|
||||
return c12Event(permanent);
|
||||
}
|
||||
},
|
||||
|
||||
new SagaChapterTrigger(3) {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent, final MagicCounterChangeTriggerData data) {
|
||||
return new MagicEvent(
|
||||
permanent,
|
||||
this,
|
||||
"PN puts a +1/+1 counter on each creature PN controls. Those creatures gain vigilance, trample, and indestructible until end of turn."
|
||||
);
|
||||
}
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
final MagicPlayer player = event.getPlayer();
|
||||
player.getPermanents().findAll({ it.hasType(MagicType.Creature) }).each {
|
||||
game.doAction(new ChangeCountersAction(player, it, MagicCounterType.PlusOne, 1));
|
||||
game.doAction(new GainAbilityAction(it, MagicAbility.Vigilance, MagicAbility.Trample, MagicAbility.Indestructible));
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
|
@ -5,7 +5,6 @@ rarity=U
|
|||
type=Enchantment
|
||||
subtype=Saga
|
||||
cost={1}{G}
|
||||
ability=I, II — Until your next turn, creatures you control gain "{T}: Add one mana of any color.";\
|
||||
III — Put a +1/+1 counter on each creature you control. Those creatures gain vigilance, trample, and indestructible until end of turn.
|
||||
timing=enchantment
|
||||
requires_groovy_code
|
||||
oracle=I, II — Until your next turn, creatures you control gain "{T}: Add one mana of any color."\nIII — Put a +1/+1 counter on each creature you control. Those creatures gain vigilance, trample, and indestructible until end of turn.
|
|
@ -0,0 +1,32 @@
|
|||
def trigger = {
|
||||
final MagicPlayer player ->
|
||||
return new IfDamageWouldBeDealtTrigger(MagicTrigger.INCREASE_DAMAGE) {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final MagicDamage damage) {
|
||||
if (damage.getSource().hasColor(MagicColor.Red) &&
|
||||
(damage.getTarget().isPermanent() || damage.getTarget().isPlayer())
|
||||
) {
|
||||
damage.setAmount(damage.getAmount() + 2);
|
||||
}
|
||||
return MagicEvent.NONE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[
|
||||
new SagaChapterTrigger(3) {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game, final MagicPermanent permanent, final MagicCounterChangeTriggerData data) {
|
||||
return new MagicEvent(
|
||||
permanent,
|
||||
this,
|
||||
"If a red source PN controls would deal damage to a permanent or player this turn, it deals that much damage plus to to that permanent or player instead."
|
||||
);
|
||||
}
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
game.doAction(new AddTurnTriggerAction(trigger(event.getPlayer())));
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
@ -6,7 +6,7 @@ type=Enchantment
|
|||
subtype=Saga
|
||||
cost={1}{R}
|
||||
ability=I — Discard your hand.;\
|
||||
II — Draw two cards.;\
|
||||
III — If a red source you control would deal damage to a permanent or player this turn, it deals that much damage plus 2 to that permanent or player instead.
|
||||
II — Draw two cards.
|
||||
timing=enchantment
|
||||
requires_groovy_code
|
||||
oracle=I — Discard your hand.\nII — Draw two cards.\nIII — If a red source you control would deal damage to a permanent or player this turn, it deals that much damage plus 2 to that permanent or player instead.
|
|
@ -0,0 +1,62 @@
|
|||
def returnAction = {
|
||||
final MagicGame game, final MagicEvent event ->
|
||||
if (event.isYes()) {
|
||||
event.processTargetCard(game, {
|
||||
game.doAction(new ShiftCardAction(it, MagicLocationType.Graveyard, MagicLocationType.OwnersHand));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
def chapter12Action = {
|
||||
final MagicGame game, final MagicEvent event ->
|
||||
game.doAction(new MillLibraryAction(event.getPlayer(), 2));
|
||||
game.addEvent(new MagicEvent(
|
||||
event.getSource(),
|
||||
new MagicMayChoice(new MagicTargetChoice("a creature card from your graveyard")),
|
||||
returnAction,
|
||||
"then PN may\$ return a creature card from PN's graveyard\$ to PN's hand."
|
||||
));
|
||||
}
|
||||
|
||||
def chapter12event = {
|
||||
final MagicPermanent permanent ->
|
||||
return new MagicEvent(
|
||||
permanent,
|
||||
chapter12Action,
|
||||
"Put the top two cards of PN's library into PN's graveyard,"
|
||||
);
|
||||
}
|
||||
|
||||
[
|
||||
new SagaChapterTrigger(1) {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent, final MagicCounterChangeTriggerData data) {
|
||||
return chapter12event(permanent);
|
||||
}
|
||||
},
|
||||
new SagaChapterTrigger(2) {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent, final MagicCounterChangeTriggerData data) {
|
||||
return chapter12event(permanent);
|
||||
}
|
||||
},
|
||||
new SagaChapterTrigger(3) {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent, final MagicCounterChangeTriggerData data) {
|
||||
return new MagicEvent(
|
||||
permanent,
|
||||
this,
|
||||
"Return all land cards from PN's graveyard to the battlefield, " +
|
||||
"then shuffle PN's graveyard into PN's library."
|
||||
);
|
||||
}
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
card(MagicType.Land).from(MagicTargetType.Graveyard).filter(event) each {
|
||||
game.doAction(new PutOntoBattlefieldAction(MagicLocationType.Graveyard, it, event.getPlayer()));
|
||||
}
|
||||
game.doAction(new ShuffleCardsIntoLibraryAction(new MagicCardList(event.getPlayer().getGraveyard()), MagicLocationType.Graveyard));
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
@ -5,7 +5,6 @@ rarity=R
|
|||
type=Enchantment
|
||||
subtype=Saga
|
||||
cost={3}{G}{G}
|
||||
ability=I, II — Put the top two cards of your library into your graveyard, then you may return a creature card from your graveyard to your hand.;\
|
||||
III — Return all land cards from your graveyard to the battlefield, then shuffle your graveyard into your library.
|
||||
timing=enchantment
|
||||
requires_groovy_code
|
||||
oracle=I, II — Put the top two cards of your library into your graveyard, then you may return a creature card from your graveyard to your hand.\nIII — Return all land cards from your graveyard to the battlefield, then shuffle your graveyard into your library.
|
|
@ -0,0 +1,42 @@
|
|||
def action = {
|
||||
final MagicGame game, final MagicEvent event ->
|
||||
event.processTargetPermanent(game, {
|
||||
final MagicPermanent source = event.getPermanent();
|
||||
game.doAction(new TapAction(it));
|
||||
game.doAction(new AddStaticAction(
|
||||
source,
|
||||
MagicStatic.AsLongAsCond(
|
||||
it,
|
||||
MagicAbility.DoesNotUntap,
|
||||
MagicConditionFactory.PlayerControlsSource(event.getPlayer()
|
||||
))
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
def event = {
|
||||
final MagicPermanent permanent ->
|
||||
return new MagicEvent(
|
||||
permanent,
|
||||
TARGET_CREATURE_YOUR_OPPONENT_CONTROLS,
|
||||
action,
|
||||
"Tap target creature an opponent controls\$. " +
|
||||
"It doesn't untap during its controller's untap step for as long as you control SN."
|
||||
);
|
||||
}
|
||||
|
||||
[
|
||||
new SagaChapterTrigger(1) {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game, final MagicPermanent permanent, final MagicCounterChangeTriggerData data) {
|
||||
return event(permanent);
|
||||
}
|
||||
},
|
||||
|
||||
new SagaChapterTrigger(2) {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game, final MagicPermanent permanent, final MagicCounterChangeTriggerData data) {
|
||||
return event(permanent);
|
||||
}
|
||||
}
|
||||
]
|
|
@ -5,7 +5,7 @@ rarity=U
|
|||
type=Enchantment
|
||||
subtype=Saga
|
||||
cost={3}{U}
|
||||
ability=I, II — Tap target creature an opponent controls. It doesn't untap during its controller's untap step for as long as you control SN.;\
|
||||
III — Return all tapped creatures to their owners' hands.
|
||||
ability=III — Return all tapped creatures to their owners' hands.
|
||||
timing=enchantment
|
||||
requires_groovy_code
|
||||
oracle=I, II — Tap target creature an opponent controls. It doesn't untap during its controller's untap step for as long as you control Time of Ice.\nIII — Return all tapped creatures to their owners' hands.
|
Loading…
Reference in New Issue