more cards 5 (#1517)
* Add more new cards after playtesting (credit goes to Kelsioboy): Akuta, Born of Ash Dark Dabbling Defiling Tears Doorkeeper Dragon Grip Explorer's Scope Gigapede Guul Draz Overseer Into the Wilds Salt Road Ambushers Tainted Remedy Terrifying Presence Thrasios, Triton Hero Trail of Mystery Yomiji, Who Bars the Way * Cleanup: Remove trailing whitespace from scripts * Fix all HTTP to HTTPS for magiccards.infomaster
parent
e5ebff99b1
commit
5ce8792d61
|
@ -1,5 +1,5 @@
|
|||
name=Frantic Search
|
||||
image=http://magiccards.info/scans/en/vma/70.jpg
|
||||
image=https://magiccards.info/scans/en/vma/70.jpg
|
||||
value=2.500
|
||||
rarity=C
|
||||
type=Instant
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
name=Great Whale
|
||||
image=http://magiccards.info/scans/en/us/77.jpg
|
||||
image=https://magiccards.info/scans/en/us/77.jpg
|
||||
value=2.500
|
||||
rarity=R
|
||||
type=Creature
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
name=Palinchron
|
||||
image=http://magiccards.info/scans/en/vma/86.jpg
|
||||
image=https://magiccards.info/scans/en/vma/86.jpg
|
||||
value=2.500
|
||||
rarity=R
|
||||
type=Creature
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
name=Peregrine Drake
|
||||
image=http://magiccards.info/scans/en/pc2/22.jpg
|
||||
image=https://magiccards.info/scans/en/pc2/22.jpg
|
||||
value=2.500
|
||||
rarity=U
|
||||
type=Creature
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
name=Reaper King
|
||||
url=http://magiccards.info/shm/en/260.html
|
||||
url=https://magiccards.info/shm/en/260.html
|
||||
image=http://mtgimage.com/card/reaper%20king.jpg
|
||||
value=4.162
|
||||
rarity=R
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
name=Rewind
|
||||
image=http://magiccards.info/scans/en/m13/65.jpg
|
||||
image=https://magiccards.info/scans/en/m13/65.jpg
|
||||
value=2.500
|
||||
rarity=U
|
||||
type=Instant
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
name=Snap
|
||||
image=http://magiccards.info/scans/en/ul/43.jpg
|
||||
image=https://magiccards.info/scans/en/ul/43.jpg
|
||||
value=2.500
|
||||
rarity=C
|
||||
type=Instant
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
name=Time Spiral
|
||||
image=http://magiccards.info/scans/en/us/103.jpg
|
||||
image=https://magiccards.info/scans/en/us/103.jpg
|
||||
value=2.500
|
||||
rarity=R
|
||||
type=Sorcery
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
name=Ulamog, the Ceaseless Hunger
|
||||
image=http://magiccards.info/scans/en/bfz/15.jpg
|
||||
image=https://magiccards.info/scans/en/bfz/15.jpg
|
||||
image_updated=2015-11-08
|
||||
value=2.500
|
||||
rarity=M
|
||||
|
|
|
@ -7,7 +7,6 @@ subtype=Spirit
|
|||
cost={2}{B}{B}
|
||||
pt=3/2
|
||||
ability=Haste;\
|
||||
At the beginning of your upkeep, if you have more cards in hand than each opponent, you may sacrifice a Swamp. If you do, return SN from your graveyard to the battlefield.
|
||||
Sacrifice a Swamp: Return SN from your graveyard to the battlefield. Activate this ability only during your upkeep and only if you have more cards in hand than each opponent.
|
||||
timing=fmain
|
||||
oracle=Haste\nAt the beginning of your upkeep, if you have more cards in hand than each opponent, you may sacrifice a Swamp. If you do, return Akuta, Born of Ash from your graveyard to the battlefield.
|
||||
status=not supported: trigger-from-graveyard
|
|
@ -2,8 +2,8 @@
|
|||
new PreventDamageTrigger() {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final MagicDamage damage) {
|
||||
if (damage.getTarget() == permanent &&
|
||||
damage.isCombat() &&
|
||||
if (damage.getTarget() == permanent &&
|
||||
damage.isCombat() &&
|
||||
damage.getSource().hasType(MagicType.Creature) &&
|
||||
permanent.getBlockingCreatures().contains(damage.getSource())) {
|
||||
// Replacement effect. Generates no event or action.
|
||||
|
|
|
@ -5,7 +5,6 @@ value=2.500
|
|||
rarity=C
|
||||
type=Instant
|
||||
cost={2}{B}
|
||||
effect=Regenerate target creature. Draw a card.~If there are two or more instant and/or sorcery cards in your graveyard, also regenerate each other creature you control.
|
||||
effect=Regenerate target creature.~Draw a card.~If there are two or more instant and/or sorcery cards in your graveyard, regenerate each other creature you control.
|
||||
timing=removal
|
||||
oracle=Regenerate target creature. Draw a card.\nSpell mastery — If there are two or more instant and/or sorcery cards in your graveyard, also regenerate each other creature you control.
|
||||
status=needs groovy
|
|
@ -19,14 +19,14 @@ def sac = new MagicRegularCostEvent("Sacrifice three Clerics");
|
|||
return new MagicEvent(
|
||||
source,
|
||||
this,
|
||||
"PN searches his or her graveyard, hand, and/or library a card named Scion of Darkness and put it onto the battlefield. " +
|
||||
"PN searches his or her graveyard, hand, and/or library a card named Scion of Darkness and put it onto the battlefield. " +
|
||||
"Shuffle PN's library."
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
final MagicTargetFilter filter =
|
||||
final MagicTargetFilter filter =
|
||||
MagicTargetFilterFactory.cardName("Scion of Darkness")
|
||||
.from(MagicTargetType.Graveyard)
|
||||
.from(MagicTargetType.Hand)
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
return new MagicEvent(
|
||||
permanent,
|
||||
this,
|
||||
"PN exiles all creatures he or she controls. " +
|
||||
"PN exiles all creatures he or she controls. " +
|
||||
"Then creates that many 5/5 red Dragon creature tokens with flying."
|
||||
);
|
||||
}
|
||||
|
|
|
@ -4,8 +4,7 @@ value=1.797
|
|||
rarity=U
|
||||
type=Instant
|
||||
cost={2}{B}
|
||||
effect=Until end of turn, target creature becomes black, gets +1/-1, and gains "{B}: Regenerate this creature."
|
||||
effect=Until end of turn, target creature becomes black and gains "{B}: Regenerate this creature."~*It* gets +1/-1 until end of turn.
|
||||
timing=removal
|
||||
oracle=Until end of turn, target creature becomes black, gets +1/-1, and gains "{B}: Regenerate this creature."
|
||||
status=needs groovy
|
||||
# AI target-type problem, weakness, pump, removal, regenerate?
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
def CREATURE_WITH_DEFENDER_YOU_CONTROL = new MagicPermanentFilterImpl() {
|
||||
public boolean accept(final MagicSource source,final MagicPlayer player,final MagicPermanent target) {
|
||||
return target.isCreature() && target.hasAbility(MagicAbility.Defender) == true
|
||||
}
|
||||
};
|
||||
|
||||
[
|
||||
new MagicPermanentActivation(
|
||||
new MagicActivationHints(MagicTiming.Pump),
|
||||
"Mill"
|
||||
) {
|
||||
@Override
|
||||
public Iterable<? extends MagicEvent> getCostEvent(final MagicPermanent source) {
|
||||
return [
|
||||
new MagicTapEvent(source),
|
||||
new MagicPayManaCostEvent(source, "{2}{U}")
|
||||
];
|
||||
}
|
||||
@Override
|
||||
public MagicEvent getPermanentEvent(final MagicPermanent source, final MagicPayedCost payedCost) {
|
||||
return new MagicEvent(
|
||||
source,
|
||||
TARGET_PLAYER,
|
||||
this,
|
||||
"Target player\$ puts the top X cards from his or her library into his or her graveyard, "+
|
||||
"where X is the number of creatures with defender PN control."
|
||||
);
|
||||
}
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
event.processTargetPlayer(game, {
|
||||
final MagicPlayer player = event.getPlayer()
|
||||
final int amount = event.getPlayer().getNrOfPermanents(CREATURE_WITH_DEFENDER_YOU_CONTROL);
|
||||
game.logAppendX(event.getPlayer(), amount);
|
||||
game.doAction(new MillLibraryAction(it, amount));
|
||||
});
|
||||
}
|
||||
}
|
||||
]
|
|
@ -0,0 +1,12 @@
|
|||
name=Doorkeeper
|
||||
image=https://magiccards.info/scans/en/rtr/37.jpg
|
||||
value=2.878
|
||||
rarity=C
|
||||
type=Creature
|
||||
subtype=Homunculus
|
||||
cost={1}{U}
|
||||
pt=0/4
|
||||
ability=Defender
|
||||
timing=smain
|
||||
oracle=Defender\n{2}{U}, {T}: Target player puts the top X cards of his or her library into his or her graveyard, where X is the number of creatures with defender you control.
|
||||
requires_groovy_code
|
|
@ -0,0 +1,20 @@
|
|||
def CREATURE_POWER_4_OR_MORE_CONDITION = new MagicCondition() {
|
||||
public boolean accept(final MagicSource source) {
|
||||
return source.getController().controlsPermanent(CREATURE_POWER_4_OR_MORE);
|
||||
}
|
||||
};
|
||||
|
||||
[
|
||||
new MagicHandCastActivation(
|
||||
[CREATURE_POWER_4_OR_MORE_CONDITION, MagicCondition.NOT_SORCERY_CONDITION],
|
||||
new MagicActivationHints(MagicTiming.Pump,true),
|
||||
"Flash"
|
||||
) {
|
||||
@Override
|
||||
public Iterable<? extends MagicEvent> getCostEvent(final MagicCard source) {
|
||||
return [
|
||||
MagicPayManaCostEvent.Cast(source, "{2}{R}")
|
||||
];
|
||||
}
|
||||
}
|
||||
]
|
|
@ -5,10 +5,9 @@ rarity=U
|
|||
type=Enchantment
|
||||
subtype=Aura
|
||||
cost={2}{R}
|
||||
ability=If you control a creature with power 4 or greater, you may cast SN as though it had flash.;\
|
||||
Enchant creature;\
|
||||
ability=Enchant creature;\
|
||||
Enchanted creature gets +2/+0 and has first strike.
|
||||
timing=aura
|
||||
enchant=default,creature
|
||||
enchant=default,pos creature
|
||||
oracle=Ferocious — If you control a creature with power 4 or greater, you may cast Dragon Grip as though it had flash.\nEnchant creature\nEnchanted creature gets +2/+0 and has first strike.
|
||||
status=needs groovy
|
||||
requires_groovy_code
|
|
@ -5,7 +5,7 @@
|
|||
return new MagicEvent(
|
||||
permanent,
|
||||
this,
|
||||
"PN creates X 2/2 black Zombie creature tokens, " +
|
||||
"PN creates X 2/2 black Zombie creature tokens, " +
|
||||
"where X is half the number of Zombies he or she controls, rounded down"
|
||||
);
|
||||
}
|
||||
|
|
|
@ -0,0 +1,48 @@
|
|||
def action = {
|
||||
final MagicGame game, final MagicEvent event ->
|
||||
if (event.isYes()) {
|
||||
final MagicCard card = event.getRefCard();
|
||||
final MagicPlayer player = event.getPlayer();
|
||||
game.doAction(new ReturnCardAction(MagicLocationType.OwnersLibrary, card, event.getPlayer(), MagicPlayMod.TAPPED));
|
||||
game.logAppendMessage(player, "${player} puts (${card}) it onto the battlefield tapped.")
|
||||
}
|
||||
}
|
||||
|
||||
[
|
||||
new AttacksTrigger() {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final MagicPermanent creature) {
|
||||
final MagicPermanent equippedCreature=permanent.getEquippedCreature();
|
||||
return (equippedCreature.isValid() && equippedCreature==creature) ?
|
||||
new MagicEvent(
|
||||
equippedCreature,
|
||||
this,
|
||||
"PN looks at the top card of his or her library. If it's a land card, "+
|
||||
"PN may put it onto the battlefield tapped."
|
||||
):
|
||||
MagicEvent.NONE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
final MagicPlayer player = event.getPlayer();
|
||||
final MagicCardList cards = player.getLibrary().getCardsFromTop(1);
|
||||
for (final MagicCard card : cards) {
|
||||
game.doAction(new LookAction(card, player, "top card of your library"));
|
||||
if (card.hasType(MagicType.Land)) {
|
||||
game.addEvent(new MagicEvent(
|
||||
event.getSource(),
|
||||
new MagicSimpleMayChoice(
|
||||
MagicSimpleMayChoice.DRAW_CARDS,
|
||||
1,
|
||||
MagicSimpleMayChoice.DEFAULT_YES
|
||||
),
|
||||
card,
|
||||
action,
|
||||
"\$"
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
|
@ -5,8 +5,7 @@ rarity=U
|
|||
type=Artifact
|
||||
subtype=Equipment
|
||||
cost={1}
|
||||
ability=Whenever equipped creature attacks, look at the top card of your library. If it's a land card, you may put it onto the battlefield tapped.;\
|
||||
Equip {1}
|
||||
ability=Equip {1}
|
||||
timing=equipment
|
||||
oracle=Whenever equipped creature attacks, look at the top card of your library. If it's a land card, you may put it onto the battlefield tapped.\nEquip {1}
|
||||
status=needs groovy
|
||||
requires_groovy_code
|
|
@ -18,7 +18,7 @@
|
|||
game.doAction(new GainAbilityAction(permanent, MagicAbility.Haste));
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
new AtYourUpkeepTrigger() {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final MagicPlayer upkeepPlayer) {
|
||||
|
|
|
@ -7,7 +7,6 @@ subtype=Insect
|
|||
cost={3}{G}{G}
|
||||
pt=6/1
|
||||
ability=Shroud;\
|
||||
At the beginning of your upkeep, if SN is in your graveyard, you may discard a card. If you do, return SN to your hand.
|
||||
Discard a card: Return SN from your graveyard to your hand. Activate this ability only during your upkeep.
|
||||
timing=main
|
||||
oracle=Shroud\nAt the beginning of your upkeep, if Gigapede is in your graveyard, you may discard a card. If you do, return Gigapede to your hand.
|
||||
status=not supported: trigger-from-graveyard
|
||||
oracle=Shroud\nAt the beginning of your upkeep, if Gigapede is in your graveyard, you may discard a card. If you do, return Gigapede to your hand.
|
|
@ -3,7 +3,7 @@
|
|||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game, final MagicPermanent permanent, final MagicPlayer eotPlayer) {
|
||||
final MagicPermanent enchanted = permanent.getEnchantedPermanent();
|
||||
return permanent.isController(eotPlayer) ?
|
||||
return permanent.isController(eotPlayer) ?
|
||||
new MagicEvent(
|
||||
permanent,
|
||||
enchanted.getController(),
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
[
|
||||
new OtherEntersBattlefieldTrigger() {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final MagicPermanent otherPermanent) {
|
||||
final int amount = otherPermanent.hasSubType(MagicSubType.Swamp) ? 2 : 1;
|
||||
return (otherPermanent.isLand() && otherPermanent.isFriend(permanent)) ?
|
||||
new MagicEvent(
|
||||
permanent,
|
||||
amount,
|
||||
this,
|
||||
"Other creatures PN control get +RN/+0 until end of turn."
|
||||
) :
|
||||
MagicEvent.NONE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
final int amount = event.getRefInt();
|
||||
CREATURE_YOU_CONTROL.except(event.getPermanent()).filter(event) each {
|
||||
game.doAction(new ChangeTurnPTAction(it,amount,0));
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
|
@ -7,8 +7,7 @@ type=Creature
|
|||
subtype=Vampire
|
||||
cost={4}{B}{B}
|
||||
pt=3/4
|
||||
ability=Flying;\
|
||||
Whenever a land enters the battlefield under your control, other creatures you control get +1/+0 until end of turn. If that land is a Swamp, those creatures get +2/+0 until end of turn instead.
|
||||
ability=Flying
|
||||
timing=main
|
||||
requires_groovy_code
|
||||
oracle=Flying\nLandfall — Whenever a land enters the battlefield under your control, other creatures you control get +1/+0 until end of turn. If that land is a Swamp, those creatures get +2/+0 until end of turn instead.
|
||||
status=needs groovy
|
|
@ -9,8 +9,8 @@ def costEffect = new MagicRegularCostEvent("Sacrifice a Forest");
|
|||
new MagicMayChoice("Sacrifice a Forest?"),
|
||||
payedCost,
|
||||
this,
|
||||
"PN may\$ sacrifice a Forest. " +
|
||||
"If you do, put SN onto the battlefield. " +
|
||||
"PN may\$ sacrifice a Forest. " +
|
||||
"If you do, put SN onto the battlefield. " +
|
||||
"If you don't, put it into its owner's graveyard."
|
||||
);
|
||||
}
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
outerGame.doAction(new AddStaticAction(new MagicStatic(MagicLayer.Game, MagicStatic.UntilEOT) {
|
||||
@Override
|
||||
public void modGame(final MagicPermanent source, final MagicGame game) {
|
||||
CREATURE.except(it).filter(it) each {
|
||||
CREATURE.except(it).filter(it) each {
|
||||
it.addAbility(MagicAbility.CannotAttack);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,45 @@
|
|||
def action = {
|
||||
final MagicGame game, final MagicEvent event ->
|
||||
if (event.isYes()) {
|
||||
final MagicCard card = event.getRefCard();
|
||||
final MagicPlayer player = event.getPlayer();
|
||||
game.doAction(new ReturnCardAction(MagicLocationType.OwnersLibrary, card, event.getPlayer()));
|
||||
game.logAppendMessage(player, "${player} puts (${card}) it onto the battlefield.")
|
||||
}
|
||||
}
|
||||
|
||||
[
|
||||
new AtYourUpkeepTrigger() {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final MagicPlayer upkeepPlayer) {
|
||||
return new MagicEvent(
|
||||
permanent,
|
||||
this,
|
||||
"PN looks at the top card of his or her library. If it's a land card, "+
|
||||
"PN may put it onto the battlefield."
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
final MagicPlayer player = event.getPlayer();
|
||||
final MagicCardList cards = player.getLibrary().getCardsFromTop(1);
|
||||
for (final MagicCard card : cards) {
|
||||
game.doAction(new LookAction(card, player, "top card of your library"));
|
||||
if (card.hasType(MagicType.Land)) {
|
||||
game.addEvent(new MagicEvent(
|
||||
event.getSource(),
|
||||
new MagicSimpleMayChoice(
|
||||
MagicSimpleMayChoice.DRAW_CARDS,
|
||||
1,
|
||||
MagicSimpleMayChoice.DEFAULT_YES
|
||||
),
|
||||
card,
|
||||
action,
|
||||
"\$"
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
|
@ -4,7 +4,6 @@ value=3.598
|
|||
rarity=R
|
||||
type=Enchantment
|
||||
cost={3}{G}
|
||||
ability=At the beginning of your upkeep, look at the top card of your library. If it's a land card, you may put it onto the battlefield.
|
||||
timing=enchantment
|
||||
oracle=At the beginning of your upkeep, look at the top card of your library. If it's a land card, you may put it onto the battlefield.
|
||||
status=needs groovy
|
||||
requires_groovy_code
|
|
@ -8,7 +8,6 @@
|
|||
return [
|
||||
new MagicTapEvent(source),
|
||||
new MagicPayManaCostEvent(source, "{5}")
|
||||
|
||||
];
|
||||
}
|
||||
@Override
|
||||
|
|
|
@ -9,8 +9,8 @@ def costEffect = new MagicRegularCostEvent("Sacrifice a Plains");
|
|||
new MagicMayChoice("Sacrifice a Plains?"),
|
||||
payedCost,
|
||||
this,
|
||||
"PN may\$ sacrifice a Plains. " +
|
||||
"If you do, put SN onto the battlefield. " +
|
||||
"PN may\$ sacrifice a Plains. " +
|
||||
"If you do, put SN onto the battlefield. " +
|
||||
"If you don't, put it into its owner's graveyard."
|
||||
);
|
||||
}
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
permanent,
|
||||
damage.getDealtAmount(),
|
||||
this,
|
||||
"PN creates RN 1/1 green Insect creature tokens."
|
||||
"PN creates RN 1/1 green Insect creature tokens."
|
||||
);
|
||||
}
|
||||
@Override
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final MagicPlayer upkeepPlayer) {
|
||||
final MagicPermanent enchanted = permanent.getEnchantedPermanent()
|
||||
return enchanted.isValid() ?
|
||||
return enchanted.isValid() ?
|
||||
new MagicEvent(
|
||||
permanent,
|
||||
enchanted,
|
||||
|
|
|
@ -2,8 +2,8 @@ def TRASNFORM = MagicRuleEventAction.create("Transform all Humans.");
|
|||
|
||||
def NONWEREWOLF_CREATURES = new MagicPermanentFilterImpl() {
|
||||
public boolean accept(final MagicSource source,final MagicPlayer player,final MagicPermanent target) {
|
||||
return !target.hasSubType(MagicSubType.Werewolf) &&
|
||||
!target.hasSubType(MagicSubType.Wolf) &&
|
||||
return !target.hasSubType(MagicSubType.Werewolf) &&
|
||||
!target.hasSubType(MagicSubType.Wolf) &&
|
||||
target.isCreature();
|
||||
}
|
||||
};
|
||||
|
@ -14,7 +14,7 @@ def NONWEREWOLF_CREATURES = new MagicPermanentFilterImpl() {
|
|||
return new MagicEvent(
|
||||
cardOnStack,
|
||||
this,
|
||||
"Transform all Humans. " +
|
||||
"Transform all Humans. " +
|
||||
"Prevent all combat damage that would be dealt this turn by creatures other than Werewolves and Wolves."
|
||||
);
|
||||
}
|
||||
|
|
|
@ -7,8 +7,8 @@
|
|||
new MagicMayChoice(),
|
||||
payedCost,
|
||||
this,
|
||||
"PN may\$ discard a land card. " +
|
||||
"If you do, put SN onto the battlefield. " +
|
||||
"PN may\$ discard a land card. " +
|
||||
"If you do, put SN onto the battlefield. " +
|
||||
"If you don't, put it into its owner's graveyard."
|
||||
);
|
||||
}
|
||||
|
|
|
@ -62,7 +62,7 @@ def AN_EQUIPMENT_YOU_CONTROL = new MagicTargetChoice("an Equipment you control")
|
|||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
if (event.isYes()) {
|
||||
event.processTargetCard(game, {
|
||||
final MagicLocationType from = it.isInHand() ? MagicLocationType.OwnersHand : MagicLocationType.Graveyard;
|
||||
final MagicLocationType from = it.isInHand() ? MagicLocationType.OwnersHand : MagicLocationType.Graveyard;
|
||||
game.doAction(new ReturnCardAction(from,it,event.getPlayer()));
|
||||
});
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
[
|
||||
new MagicPlaneswalkerActivation(-4) {
|
||||
new MagicPlaneswalkerActivation(-4) {
|
||||
@Override
|
||||
public MagicEvent getPermanentEvent(final MagicPermanent source, final MagicPayedCost payedCost) {
|
||||
public MagicEvent getPermanentEvent(final MagicPermanent source, final MagicPayedCost payedCost) {
|
||||
return new MagicEvent(
|
||||
source,
|
||||
this,
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
[
|
||||
[
|
||||
new ThisCombatDamagePlayerTrigger() {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game, final MagicPermanent permanent, final MagicDamage damage) {
|
||||
|
|
|
@ -7,6 +7,6 @@ subtype=Phoenix
|
|||
cost={2}{R}{R}
|
||||
pt=4/3
|
||||
ability=Flying;\
|
||||
When SN dies, create a 0/1 red Elemental creature token.
|
||||
When SN dies, create a 0/1 red Elemental creature token.
|
||||
timing=main
|
||||
oracle=Flying\nWhen Rekindling Phoenix dies, create a 0/1 red Elemental creature token with "At the beginning of your upkeep, sacrifice this creature and return target card named Rekindling Phoenix from your graveyard to the battlefield. It gains haste until end of turn."
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
cardOnStack,
|
||||
TARGET_CREATURE_CARD_FROM_GRAVEYARD,
|
||||
this,
|
||||
"PN exiles target creature card from his or her graveyard.\$ " +
|
||||
"PN exiles target creature card from his or her graveyard.\$ " +
|
||||
"PN creates a black Zombie creature token. Its power is equal to "+
|
||||
"that card's power and its toughness is equal to that card's toughness."
|
||||
);
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
[
|
||||
new TurnedFaceUpTrigger() {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final MagicPermanent otherPermanent) {
|
||||
return (permanent != otherPermanent && otherPermanent.isFriend(permanent) && otherPermanent.hasType(MagicType.Creature)) ?
|
||||
new MagicEvent(
|
||||
permanent,
|
||||
otherPermanent,
|
||||
this,
|
||||
"PN puts two +1/+1 counters on RN."
|
||||
):
|
||||
MagicEvent.NONE;
|
||||
}
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
game.doAction(new ChangeCountersAction(event.getRefPermanent(),MagicCounterType.PlusOne,2));
|
||||
}
|
||||
}
|
||||
]
|
|
@ -6,8 +6,7 @@ type=Creature
|
|||
subtype=Hound,Warrior
|
||||
cost={3}{G}
|
||||
pt=3/3
|
||||
ability=Whenever another permanent you control is turned face up, if it's a creature, put two +1/+1 counters on it.;\
|
||||
Megamorph {3}{G}{G}
|
||||
ability=Megamorph {3}{G}{G}
|
||||
timing=main
|
||||
requires_groovy_code
|
||||
oracle=Whenever another permanent you control is turned face up, if it's a creature, put two +1/+1 counters on it.\nMegamorph {3}{G}{G}
|
||||
status=needs groovy
|
|
@ -6,7 +6,7 @@
|
|||
pt.set(amount,amount);
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
new OtherSpellIsCastTrigger() {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final MagicCardOnStack cardOnStack) {
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
if (!damage.isCombat() &&
|
||||
damage.isTargetCreature() &&
|
||||
damage.getTargetPermanent().isController(permanent.getOpponent())) {
|
||||
|
||||
|
||||
final int amount = damage.replace();
|
||||
game.doAction(new ChangeCountersAction(damage.getTargetPermanent(), MagicCounterType.MinusOne, amount));
|
||||
}
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
"If SN is on the battlefield, it deals damage equal to its power to target creature an opponent controls\$ " +
|
||||
"and that creature deals damage equal to its power to SN."
|
||||
):
|
||||
MagicEvent.NONE
|
||||
MagicEvent.NONE
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
[
|
||||
new IfLifeWouldChangeTrigger() {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final ChangeLifeAction act) {
|
||||
int amount = 0;
|
||||
if (permanent.isOpponent(act.getPlayer()) && act.getLifeChange() > 0) {
|
||||
amount = act.getLifeChange();
|
||||
act.setLifeChange(0);
|
||||
return new MagicEvent(
|
||||
permanent,
|
||||
act.player,
|
||||
amount,
|
||||
this,
|
||||
"PN loses RN Life."
|
||||
);
|
||||
} else {
|
||||
return MagicEvent.NONE;
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
game.doAction(new ChangeLifeAction(event.getPlayer(),-event.getRefInt()));
|
||||
}
|
||||
}
|
||||
]
|
|
@ -5,7 +5,6 @@ value=2.500
|
|||
rarity=R
|
||||
type=Enchantment
|
||||
cost={2}{B}
|
||||
ability=If an opponent would gain life, that player loses that much life instead.
|
||||
timing=enchantment
|
||||
oracle=If an opponent would gain life, that player loses that much life instead.
|
||||
status=needs groovy
|
||||
requires_groovy_code
|
|
@ -0,0 +1,21 @@
|
|||
[
|
||||
new MagicSpellCardEvent() {
|
||||
@Override
|
||||
public MagicEvent getEvent(final MagicCardOnStack cardOnStack,final MagicPayedCost payedCost) {
|
||||
return new MagicEvent(
|
||||
cardOnStack,
|
||||
TARGET_CREATURE,
|
||||
this,
|
||||
"Prevent all combat damage that would be dealt by creatures other than target creature\$ this turn."
|
||||
);
|
||||
}
|
||||
@Override
|
||||
public void executeEvent(final MagicGame Game, final MagicEvent event) {
|
||||
event.processTargetPermanent(Game, {
|
||||
CREATURE.except(it).filter(it) each {
|
||||
Game.doAction(new AddTurnTriggerAction(it, PreventDamageTrigger.PreventCombatDamageDealtBy));
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
]
|
|
@ -5,7 +5,6 @@ value=3.955
|
|||
rarity=C
|
||||
type=Instant
|
||||
cost={1}{G}
|
||||
effect=Prevent all combat damage that would be dealt by creatures other than target creature this turn.
|
||||
timing=removal
|
||||
requires_groovy_code
|
||||
oracle=Prevent all combat damage that would be dealt by creatures other than target creature this turn.
|
||||
status=needs groovy
|
|
@ -0,0 +1,47 @@
|
|||
def action = {
|
||||
final MagicGame game, final MagicEvent event ->
|
||||
final MagicPlayer player = event.getPlayer();
|
||||
for (final MagicCard card : player.getLibrary().getCardsFromTop(1)) {
|
||||
game.doAction(new RevealAction(card));
|
||||
if (card.hasType(MagicType.Land)) {
|
||||
game.doAction(new ReturnCardAction(MagicLocationType.OwnersLibrary,card,event.getPlayer(),MagicPlayMod.TAPPED));
|
||||
} else {
|
||||
game.doAction(new DrawAction(event.getPlayer()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[
|
||||
new MagicPermanentActivation(
|
||||
new MagicActivationHints(MagicTiming.Pump),
|
||||
"Scry"
|
||||
) {
|
||||
|
||||
@Override
|
||||
public Iterable<? extends MagicEvent> getCostEvent(final MagicPermanent source) {
|
||||
return [
|
||||
new MagicPayManaCostEvent(source,"{4}")
|
||||
];
|
||||
}
|
||||
|
||||
@Override
|
||||
public MagicEvent getPermanentEvent(final MagicPermanent source,final MagicPayedCost payedCost) {
|
||||
return new MagicEvent(
|
||||
source,
|
||||
this,
|
||||
"Scry 1, then reveal the top card of PN's library. If it's a land card, PN puts it onto the battlefield tapped. " +
|
||||
"Otherwise, PN draw a card."
|
||||
);
|
||||
}
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
game.addEvent(new MagicScryEvent(event));
|
||||
game.addEvent(new MagicEvent(
|
||||
event.getSource(),
|
||||
event.getPlayer(),
|
||||
action,
|
||||
""
|
||||
));
|
||||
}
|
||||
}
|
||||
]
|
|
@ -7,8 +7,7 @@ type=Legendary,Creature
|
|||
subtype=Merfolk,Wizard
|
||||
cost={G}{U}
|
||||
pt=1/3
|
||||
ability={4}: Scry 1, then reveal the top card of your library. If it's a land card, put it onto the battlefield tapped. Otherwise, draw a card.;\
|
||||
Partner
|
||||
ability=Partner
|
||||
timing=main
|
||||
oracle={4}: Scry 1, then reveal the top card of your library. If it's a land card, put it onto the battlefield tapped. Otherwise, draw a card.\nPartner
|
||||
status=needs groovy
|
||||
requires_groovy_code
|
|
@ -0,0 +1,19 @@
|
|||
[
|
||||
new TurnedFaceUpTrigger() {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final MagicPermanent otherPermanent) {
|
||||
return (otherPermanent.isFriend(permanent) && otherPermanent.hasType(MagicType.Creature)) ?
|
||||
new MagicEvent(
|
||||
permanent,
|
||||
otherPermanent,
|
||||
this,
|
||||
"RN gets +2/+2 until end of turn."
|
||||
):
|
||||
MagicEvent.NONE;
|
||||
}
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
game.doAction(new ChangeTurnPTAction(event.getRefPermanent(),2,2));
|
||||
}
|
||||
}
|
||||
]
|
|
@ -4,8 +4,7 @@ value=2.500
|
|||
rarity=R
|
||||
type=Enchantment
|
||||
cost={1}{G}
|
||||
ability=Whenever a face-down creature enters the battlefield under your control, you may search your library for a basic land card, reveal it, put it into your hand, then shuffle your library.;\
|
||||
Whenever a permanent you control is turned face up, if it's a creature, it gets +2/+2 until end of turn.
|
||||
ability=Whenever a face-down creature enters the battlefield under your control, you may search your library for a basic land card, reveal it, put it into your hand, then shuffle your library.
|
||||
timing=enchantment
|
||||
requires_groovy_code
|
||||
oracle=Whenever a face-down creature enters the battlefield under your control, you may search your library for a basic land card, reveal it, put it into your hand, then shuffle your library.\nWhenever a permanent you control is turned face up, if it's a creature, it gets +2/+2 until end of turn.
|
||||
status=needs groovy
|
|
@ -2,10 +2,10 @@
|
|||
new PreventDamageTrigger() {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final MagicDamage damage) {
|
||||
if (damage.getTarget() == permanent && permanent.hasCounters(MagicCounterType.PlusOne)) {
|
||||
if (damage.getTarget() == permanent && permanent.hasCounters(MagicCounterType.PlusOne)) {
|
||||
damage.prevent();
|
||||
game.doAction(new ChangeCountersAction(permanent, MagicCounterType.PlusOne,-1));
|
||||
}
|
||||
}
|
||||
return MagicEvent.NONE;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
permanent.getController(),
|
||||
damage.getTargetPlayer(),
|
||||
this,
|
||||
"RN sacrifices a creature. " +
|
||||
"RN sacrifices a creature. " +
|
||||
"If RN can't, PN create a 3/3 black, red, and green Cat Dragon creature token with flying."
|
||||
);
|
||||
}
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
[
|
||||
new OtherDiesTrigger() {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final MagicPermanent died) {
|
||||
return (permanent != died && died.hasType(MagicType.Legendary)) ?
|
||||
new MagicEvent(
|
||||
permanent,
|
||||
died.getCard(),
|
||||
this,
|
||||
"Returns RN to its owner's hand."
|
||||
):
|
||||
MagicEvent.NONE;
|
||||
}
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
game.doAction(new ShiftCardAction(event.getRefCard(), MagicLocationType.Graveyard, MagicLocationType.OwnersHand));
|
||||
}
|
||||
}
|
||||
]
|
|
@ -6,7 +6,6 @@ type=Legendary,Creature
|
|||
subtype=Spirit
|
||||
cost={5}{W}{W}
|
||||
pt=4/4
|
||||
ability=Whenever a legendary permanent other than SN is put into a graveyard from the battlefield, return that card to its owner's hand.
|
||||
timing=main
|
||||
requires_groovy_code
|
||||
oracle=Whenever a legendary permanent other than Yomiji, Who Bars the Way is put into a graveyard from the battlefield, return that card to its owner's hand.
|
||||
status=needs groovy
|
|
@ -1,14 +0,0 @@
|
|||
name=Doorkeeper
|
||||
image=https://magiccards.info/scans/en/ima/53.jpg
|
||||
image_updated=2017-04-12
|
||||
value=2.878
|
||||
rarity=C
|
||||
type=Creature
|
||||
subtype=Homunculus
|
||||
cost={1}{U}
|
||||
pt=0/4
|
||||
ability=Defender;\
|
||||
{2}{U}, {T}: Target player puts the top X cards of his or her library into his or her graveyard, where X is the number of creatures with defender you control.
|
||||
timing=smain
|
||||
oracle=Defender\n{2}{U}, {T}: Target player puts the top X cards of his or her library into his or her graveyard, where X is the number of creatures with defender you control.
|
||||
status=needs groovy
|
Loading…
Reference in New Issue