merge changes from shawnieboyuk-magarena-cards
commit
e7fd95e42a
|
@ -0,0 +1,11 @@
|
|||
name=Abyssal Horror
|
||||
url=http://magiccards.info/7e/en/115.html
|
||||
image=http://mtgimage.com/card/abyssal%20horror.jpg
|
||||
value=2.7
|
||||
rarity=R
|
||||
type=Creature
|
||||
subtype=Horror
|
||||
cost={4}{B}{B}
|
||||
pt=2/2
|
||||
ability=flying;enters effect Target player discards two cards.
|
||||
timing=main
|
|
@ -0,0 +1,23 @@
|
|||
[
|
||||
new MagicSpellCardEvent() {
|
||||
@Override
|
||||
public MagicEvent getEvent(final MagicCardOnStack cardOnStack,final MagicPayedCost payedCost) {
|
||||
return new MagicEvent(
|
||||
cardOnStack,
|
||||
MagicTargetChoice.TARGET_CREATURE,
|
||||
MagicShadowTargetPicker.getInstance(),
|
||||
this,
|
||||
"Target creature\$ gains haste until end of turn. Draw a card."
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
event.processTargetPermanent(game, {
|
||||
final MagicPermanent creature ->
|
||||
game.doAction(new MagicGainAbilityAction(creature,MagicAbility.Haste));
|
||||
game.doAction(new MagicDrawAction(event.getPlayer()));
|
||||
});
|
||||
}
|
||||
}
|
||||
]
|
|
@ -0,0 +1,9 @@
|
|||
name=Accelerate
|
||||
url=http://magiccards.info/tr/pt/90.html
|
||||
image=http://mtgimage.com/card/accelerate.jpg
|
||||
value=1.768
|
||||
rarity=C
|
||||
type=Instant
|
||||
cost={1}{R}
|
||||
timing=pump
|
||||
requires_groovy_code
|
|
@ -0,0 +1,25 @@
|
|||
[
|
||||
new MagicWhenOtherDiesTrigger() {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final MagicPermanent otherPermanent) {
|
||||
return (otherPermanent.isNonToken() &&
|
||||
otherPermanent.isCreature() &&
|
||||
otherPermanent.isFriend(permanent)) ?
|
||||
new MagicEvent(
|
||||
permanent,
|
||||
new MagicMayChoice(),
|
||||
otherPermanent.getCard(),
|
||||
this,
|
||||
"PN may\$ sacrifice SN. If you do, return RN to the battlefield."
|
||||
) :
|
||||
MagicEvent.NONE;
|
||||
}
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
if (event.isYes()) {
|
||||
game.doAction(new MagicSacrificeAction(event.getPermanent()));
|
||||
game.doAction(new MagicReanimateAction(event.getRefCard(), event.getPlayer()));
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
|
@ -0,0 +1,9 @@
|
|||
name=Angelic Renewal
|
||||
url=http://magiccards.info/wl/en/120.html
|
||||
image=http://mtgimage.com/card/angelic%20renewal.jpg
|
||||
value=4.491
|
||||
rarity=C
|
||||
type=Enchantment
|
||||
cost={1}{W}
|
||||
timing=enchantment
|
||||
requires_groovy_code
|
|
@ -0,0 +1,25 @@
|
|||
[
|
||||
new MagicSpellCardEvent() {
|
||||
@Override
|
||||
public MagicEvent getEvent(final MagicCardOnStack cardOnStack,final MagicPayedCost payedCost) {
|
||||
return new MagicEvent(
|
||||
cardOnStack,
|
||||
MagicTargetChoice.NEG_TARGET_NONBLACK_CREATURE,
|
||||
MagicDestroyTargetPicker.DestroyNoRegen,
|
||||
this,
|
||||
"Destroy target nonblack creature\$. " +
|
||||
"It can't be regenerated. "+
|
||||
"Draw a card."
|
||||
);
|
||||
}
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
event.processTargetPermanent(game, {
|
||||
final MagicPermanent creature ->
|
||||
game.doAction(MagicChangeStateAction.Set(creature,MagicPermanentState.CannotBeRegenerated));
|
||||
game.doAction(new MagicDestroyAction(creature));
|
||||
game.doAction(new MagicDrawAction(event.getPlayer()));
|
||||
});
|
||||
}
|
||||
}
|
||||
]
|
|
@ -0,0 +1,9 @@
|
|||
name=Annihilate
|
||||
url=http://magiccards.info/c13/es/68.html
|
||||
image=http://mtgimage.com/card/annihilate.jpg
|
||||
value=2.974
|
||||
rarity=U
|
||||
type=Instant
|
||||
cost={3}{B}{B}
|
||||
timing=removal
|
||||
requires_groovy_code
|
|
@ -0,0 +1,23 @@
|
|||
[
|
||||
new MagicSpellCardEvent() {
|
||||
@Override
|
||||
public MagicEvent getEvent(final MagicCardOnStack cardOnStack, final MagicPayedCost payedCost) {
|
||||
return new MagicEvent(
|
||||
cardOnStack,
|
||||
MagicTargetChoice.NEG_TARGET_ENCHANTMENT,
|
||||
MagicDestroyTargetPicker.Destroy,
|
||||
this,
|
||||
"Destroy target enchantment\$. " +
|
||||
"Draw a card."
|
||||
);
|
||||
}
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
event.processTargetPermanent(game, {
|
||||
final MagicPermanent permanent ->
|
||||
game.doAction(new MagicDestroyAction(permanent));
|
||||
game.doAction(new MagicDrawAction(event.getPlayer()));
|
||||
});
|
||||
}
|
||||
}
|
||||
]
|
|
@ -0,0 +1,9 @@
|
|||
name=Aura Blast
|
||||
url=http://gatherer.wizards.com/Pages/Card/Details.aspx?multiverseid=26382
|
||||
image=http://mtgimage.com/card/aura%20blast.jpg
|
||||
value=3.2
|
||||
rarity=C
|
||||
type=Instant
|
||||
cost={1}{W}
|
||||
timing=removal
|
||||
requires_groovy_code
|
|
@ -0,0 +1,22 @@
|
|||
[
|
||||
new MagicSpellCardEvent() {
|
||||
@Override
|
||||
public MagicEvent getEvent(final MagicCardOnStack cardOnStack,final MagicPayedCost payedCost) {
|
||||
return new MagicEvent(
|
||||
cardOnStack,
|
||||
MagicTargetChoice.NEG_TARGET_CREATURE,
|
||||
new MagicWeakenTargetPicker(3,0),
|
||||
this,
|
||||
"Target creature\$ gets -3/-0 until end of turn. Draw a card."
|
||||
);
|
||||
}
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
event.processTargetPermanent(game, {
|
||||
final MagicPermanent creature ->
|
||||
game.doAction(new MagicChangeTurnPTAction(creature,-3,-0));
|
||||
game.doAction(new MagicDrawAction(event.getPlayer()));
|
||||
});
|
||||
}
|
||||
}
|
||||
]
|
|
@ -0,0 +1,9 @@
|
|||
name=Bewilder
|
||||
url=http://magiccards.info/ts/en/49.html
|
||||
image=http://mtgimage.com/card/bewilder.jpg
|
||||
value=1.297
|
||||
rarity=C
|
||||
type=Instant
|
||||
cost={2}{U}
|
||||
timing=removal
|
||||
requires_groovy_code
|
|
@ -0,0 +1,24 @@
|
|||
[
|
||||
new MagicSpellCardEvent() {
|
||||
@Override
|
||||
public MagicEvent getEvent(final MagicCardOnStack cardOnStack,final MagicPayedCost payedCost) {
|
||||
return new MagicEvent(
|
||||
cardOnStack,
|
||||
MagicTargetChoice.NEG_TARGET_CREATURE,
|
||||
MagicMustAttackTargetPicker.create(),
|
||||
this,
|
||||
"Target creature\$ attacks this turn if able. Draw a card."
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
event.processTargetPermanent(game, {
|
||||
final MagicPermanent creature ->
|
||||
game.doAction(new MagicGainAbilityAction(creature,MagicAbility.AttacksEachTurnIfAble));
|
||||
game.doAction(new MagicDrawAction(event.getPlayer()));
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
]
|
|
@ -0,0 +1,9 @@
|
|||
name=Boiling Blood
|
||||
url=http://magiccards.info/wl/en/92.html
|
||||
image=http://mtgimage.com/card/boiling%20blood.jpg
|
||||
value=2.357
|
||||
rarity=C
|
||||
type=Instant
|
||||
cost={2}{R}
|
||||
timing=removal
|
||||
requires_groovy_code
|
|
@ -5,5 +5,5 @@ value=2.462
|
|||
rarity=U
|
||||
type=Sorcery
|
||||
cost={4}{U}
|
||||
effect=PN draws three cards.
|
||||
timing=draw
|
||||
requires_groovy_code
|
||||
|
|
|
@ -1,22 +1,24 @@
|
|||
[
|
||||
new MagicPermanentActivation(
|
||||
new MagicActivationHints(MagicTiming.Animate),
|
||||
"Shadow"
|
||||
new MagicActivationHints(MagicTiming.Pump),
|
||||
"Regen"
|
||||
) {
|
||||
|
||||
@Override
|
||||
public Iterable<MagicEvent> getCostEvent(final MagicPermanent source) {
|
||||
return [new MagicTapEvent(source)];
|
||||
return [
|
||||
new MagicBouncePermanentEvent(source, source)
|
||||
];
|
||||
}
|
||||
|
||||
@Override
|
||||
public MagicEvent getPermanentEvent(final MagicPermanent source,final MagicPayedCost payedCost) {
|
||||
return new MagicEvent(
|
||||
source,
|
||||
MagicTargetChoice.TARGET_CREATURE,
|
||||
MagicShadowTargetPicker.getInstance(),
|
||||
MagicTargetChoice.POS_TARGET_CREATURE,
|
||||
MagicRegenerateTargetPicker.getInstance(),
|
||||
this,
|
||||
"Target creature\$ gains shadow until end of turn."
|
||||
"Regenerate target creature\$."
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -24,7 +26,7 @@
|
|||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
event.processTargetPermanent(game, {
|
||||
final MagicPermanent creature ->
|
||||
game.doAction(new MagicGainAbilityAction(creature,MagicAbility.Shadow));
|
||||
game.doAction(new MagicRegenerateAction(creature));
|
||||
});
|
||||
}
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
name=Broken Fall
|
||||
url=http://magiccards.info/br/en/10.html
|
||||
image=http://mtgimage.com/card/broken%20fall.jpg
|
||||
value=3.347
|
||||
rarity=C
|
||||
type=Enchantment
|
||||
cost={2}{G}
|
||||
timing=enchantment
|
||||
requires_groovy_code
|
|
@ -0,0 +1,11 @@
|
|||
name=Brutal Nightstalker
|
||||
url=http://magiccards.info/po2/en/4.html
|
||||
image=http://mtgimage.com/card/brutal%20nightstalker.jpg
|
||||
value=1.78
|
||||
rarity=U
|
||||
type=Creature
|
||||
subtype=Nightstalker
|
||||
cost={3}{B}{B}
|
||||
pt=3/2
|
||||
ability=enters effect PN may have Target opponent discards a card.
|
||||
timing=main
|
|
@ -0,0 +1,33 @@
|
|||
[
|
||||
new MagicPermanentActivation(
|
||||
new MagicActivationHints(MagicTiming.Pump),
|
||||
"Regen"
|
||||
) {
|
||||
|
||||
@Override
|
||||
public Iterable<MagicEvent> getCostEvent(final MagicPermanent source) {
|
||||
return [
|
||||
new MagicTapEvent(source), new MagicPayManaCostEvent(source, "{3}")
|
||||
];
|
||||
}
|
||||
|
||||
@Override
|
||||
public MagicEvent getPermanentEvent(final MagicPermanent source,final MagicPayedCost payedCost) {
|
||||
return new MagicEvent(
|
||||
source,
|
||||
MagicTargetChoice.POS_TARGET_ARTIFACT_CREATURE,
|
||||
MagicRegenerateTargetPicker.getInstance(),
|
||||
this,
|
||||
"Regenerate target artifact creature\$."
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
event.processTargetPermanent(game, {
|
||||
final MagicPermanent creature ->
|
||||
game.doAction(new MagicRegenerateAction(creature));
|
||||
});
|
||||
}
|
||||
}
|
||||
]
|
|
@ -0,0 +1,11 @@
|
|||
name=Clockwork Gnomes
|
||||
url=http://magiccards.info/hl/en/127.html
|
||||
image=http://mtgimage.com/card/clockwork%20gnomes.jpg
|
||||
value=2.5
|
||||
rarity=U
|
||||
type=Artifact,Creature
|
||||
subtype=Gnome
|
||||
cost={4}
|
||||
pt=2/2
|
||||
timing=artifact
|
||||
requires_groovy_code
|
|
@ -0,0 +1,32 @@
|
|||
[
|
||||
new MagicSpellCardEvent() {
|
||||
@Override
|
||||
public MagicEvent getEvent(final MagicCardOnStack cardOnStack,final MagicPayedCost payedCost) {
|
||||
return new MagicEvent(
|
||||
cardOnStack,
|
||||
MagicTargetChoice.NEG_TARGET_CARD_FROM_ALL_GRAVEYARDS,
|
||||
MagicGraveyardTargetPicker.ExileOpp,
|
||||
this,
|
||||
"Exile target card\$ from a graveyard. " +
|
||||
"Draw a card."
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
event.processTargetCard(game, {
|
||||
final MagicCard card ->
|
||||
game.doAction(new MagicRemoveCardAction(
|
||||
card,
|
||||
MagicLocationType.Graveyard
|
||||
));
|
||||
game.doAction(new MagicMoveCardAction(
|
||||
card,
|
||||
MagicLocationType.Graveyard,
|
||||
MagicLocationType.Exile
|
||||
));
|
||||
game.doAction(new MagicDrawAction(event.getPlayer()));
|
||||
});
|
||||
}
|
||||
}
|
||||
]
|
|
@ -0,0 +1,9 @@
|
|||
name=Cremate
|
||||
url=http://magiccards.info/rtr/en/59.html
|
||||
image=http://mtgimage.com/card/cremate.jpg
|
||||
value=3.703
|
||||
rarity=C
|
||||
type=Instant
|
||||
cost={B}
|
||||
timing=removal
|
||||
requires_groovy_code
|
|
@ -5,5 +5,5 @@ value=4.443
|
|||
rarity=U
|
||||
type=Enchantment
|
||||
cost={2}{B}
|
||||
ability=pay {B}{B}:Target creature gains shadow until end of turn.
|
||||
timing=enchantment
|
||||
requires_groovy_code
|
||||
|
|
|
@ -7,5 +7,5 @@ type=Creature
|
|||
subtype=Dauthi,Minion
|
||||
cost={2}{B}
|
||||
pt=1/1
|
||||
ability=pay {T}:Target creature gains shadow until end of turn.
|
||||
timing=main
|
||||
requires_groovy_code
|
||||
|
|
|
@ -1,19 +1,20 @@
|
|||
[
|
||||
new MagicSpellCardEvent() {
|
||||
@Override
|
||||
public MagicEvent getEvent(final MagicCardOnStack cardOnStack,final MagicPayedCost payedCost) {
|
||||
public MagicEvent getEvent(final MagicCardOnStack cardOnStack, final MagicPayedCost payedCost) {
|
||||
return new MagicEvent(
|
||||
cardOnStack,
|
||||
MagicTargetChoice.POS_TARGET_PLAYER,
|
||||
MagicTargetChoice.POS_TARGET_CREATURE,
|
||||
this,
|
||||
"Target player\$ gains 7 life."
|
||||
"Regenerate target creature\$."
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
event.processTargetPlayer(game, {
|
||||
final MagicPlayer player ->
|
||||
game.doAction(new MagicChangeLifeAction(player,7));
|
||||
event.processTargetPermanent(game, {
|
||||
final MagicPermanent creature ->
|
||||
game.doAction(new MagicRegenerateAction(creature));
|
||||
});
|
||||
}
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
name=Death Ward
|
||||
url=http://magiccards.info/5e/en/301.html
|
||||
image=http://mtgimage.com/card/death%20ward.jpg
|
||||
value=3.183
|
||||
rarity=C
|
||||
type=Instant
|
||||
cost={W}
|
||||
timing=pump
|
||||
requires_groovy_code
|
|
@ -5,5 +5,5 @@ value=4.490
|
|||
rarity=R
|
||||
type=Enchantment
|
||||
cost={4}{W/B}{W/B}{W/B}
|
||||
ability=your upkeep effect return target creature card from a graveyard to the battlefield.
|
||||
timing=enchantment
|
||||
requires_groovy_code
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
[
|
||||
new MagicWhenComesIntoPlayTrigger() {
|
||||
new MagicSpellCardEvent() {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent, final MagicPayedCost payedCost) {
|
||||
public MagicEvent getEvent(final MagicCardOnStack cardOnStack,final MagicPayedCost payedCost) {
|
||||
return new MagicEvent(
|
||||
permanent,
|
||||
MagicTargetChoice.TARGET_SPELL,
|
||||
cardOnStack,
|
||||
MagicTargetChoice.NEG_TARGET_SPELL,
|
||||
this,
|
||||
"Counter target spell\$."
|
||||
"Counter target spell\$. Draw a card."
|
||||
);
|
||||
}
|
||||
@Override
|
||||
|
@ -14,6 +14,7 @@
|
|||
event.processTargetCardOnStack(game, {
|
||||
final MagicCardOnStack targetSpell ->
|
||||
game.doAction(new MagicCounterItemOnStackAction(targetSpell));
|
||||
game.doAction(new MagicDrawAction(event.getPlayer()));
|
||||
});
|
||||
}
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
name=Dismiss
|
||||
url=http://magiccards.info/c13/it/39.html
|
||||
image=http://mtgimage.com/card/dismiss.jpg
|
||||
value=4.361
|
||||
rarity=U
|
||||
type=Instant
|
||||
cost={2}{U}{U}
|
||||
timing=counter
|
||||
requires_groovy_code
|
|
@ -0,0 +1,22 @@
|
|||
[
|
||||
new MagicSpellCardEvent() {
|
||||
@Override
|
||||
public MagicEvent getEvent(final MagicCardOnStack cardOnStack,final MagicPayedCost payedCost) {
|
||||
return new MagicEvent(
|
||||
cardOnStack,
|
||||
MagicTargetChoice.NEG_TARGET_INSTANT_OR_SORCERY_SPELL,
|
||||
this,
|
||||
"Counter target instant or sorcery spell\$ unless its controller pays {1}. " +
|
||||
"Draw a card."
|
||||
);
|
||||
}
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
event.processTargetCardOnStack(game, {
|
||||
final MagicCardOnStack targetSpell ->
|
||||
game.addEvent(new MagicCounterUnlessEvent(event.getSource(),targetSpell,MagicManaCost.create("{1}")));
|
||||
game.doAction(new MagicDrawAction(event.getPlayer()));
|
||||
});
|
||||
}
|
||||
}
|
||||
]
|
|
@ -0,0 +1,9 @@
|
|||
name=Disrupt
|
||||
url=http://magiccards.info/in/es/51.html
|
||||
image=http://mtgimage.com/card/disrupt.jpg
|
||||
value=4.314
|
||||
rarity=U
|
||||
type=Instant
|
||||
cost={U}
|
||||
timing=counter
|
||||
requires_groovy_code
|
|
@ -7,5 +7,5 @@ type=Creature
|
|||
subtype=Zombie
|
||||
cost={B}
|
||||
pt=1/1
|
||||
ability=pay {1}{U}{R}:SN gets +3/+0 and gains flying until end of turn.
|
||||
timing=main
|
||||
requires_groovy_code
|
||||
|
|
|
@ -1,26 +0,0 @@
|
|||
[
|
||||
new MagicAtUpkeepTrigger() {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(
|
||||
final MagicGame game,
|
||||
final MagicPermanent permanent,
|
||||
final MagicPlayer upkeepPlayer) {
|
||||
return permanent.isController(upkeepPlayer) ?
|
||||
new MagicEvent(
|
||||
permanent,
|
||||
new MagicMayChoice(
|
||||
new MagicPayManaCostChoice(MagicManaCost.create("{1}{U}"))
|
||||
),
|
||||
this,
|
||||
"PN may\$ pay {1}{U}\$. If you don't, sacrifice SN."
|
||||
) :
|
||||
MagicEvent.NONE;
|
||||
}
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
if (event.isNo()) {
|
||||
game.doAction(new MagicSacrificeAction(event.getPermanent()));
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
|
@ -7,6 +7,5 @@ type=Creature
|
|||
subtype=Djinn
|
||||
cost={4}{U}{U}
|
||||
pt=5/5
|
||||
ability=flying;cycling {2}
|
||||
ability=flying;cycling {2};your upkeep effect PN may pay {1}{U}. If you don't, sacrifice SN.
|
||||
timing=main
|
||||
requires_groovy_code
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
name=Ebon Dragon
|
||||
url=http://magiccards.info/fvd/en/6.html
|
||||
image=http://mtgimage.com/card/ebon%20dragon.jpg
|
||||
value=3.15
|
||||
rarity=R
|
||||
type=Creature
|
||||
subtype=Dragon
|
||||
cost={5}{B}{B}
|
||||
pt=5/4
|
||||
ability=flying;enters effect PN may have target opponent discards a card.
|
||||
timing=main
|
|
@ -0,0 +1,33 @@
|
|||
[
|
||||
new MagicPermanentActivation(
|
||||
new MagicActivationHints(MagicTiming.Pump),
|
||||
"Regen"
|
||||
) {
|
||||
|
||||
@Override
|
||||
public Iterable<MagicEvent> getCostEvent(final MagicPermanent source) {
|
||||
return [
|
||||
new MagicSacrificePermanentEvent(source, MagicTargetChoice.SACRIFICE_CREATURE)
|
||||
];
|
||||
}
|
||||
|
||||
@Override
|
||||
public MagicEvent getPermanentEvent(final MagicPermanent source,final MagicPayedCost payedCost) {
|
||||
return new MagicEvent(
|
||||
source,
|
||||
MagicTargetChoice.POS_TARGET_CREATURE,
|
||||
MagicRegenerateTargetPicker.getInstance(),
|
||||
this,
|
||||
"Regenerate target creature\$."
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
event.processTargetPermanent(game, {
|
||||
final MagicPermanent creature ->
|
||||
game.doAction(new MagicRegenerateAction(creature));
|
||||
});
|
||||
}
|
||||
}
|
||||
]
|
|
@ -0,0 +1,9 @@
|
|||
name=Fanatical Devotion
|
||||
url=http://magiccards.info/ne/en/8.html
|
||||
image=http://mtgimage.com/card/fanatical%20devotion.jpg
|
||||
value=3.227
|
||||
rarity=C
|
||||
type=Enchantment
|
||||
cost={2}{W}
|
||||
timing=enchantment
|
||||
requires_groovy_code
|
|
@ -0,0 +1,26 @@
|
|||
[
|
||||
new MagicWhenOtherDiesTrigger() {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final MagicPermanent otherPermanent) {
|
||||
return (otherPermanent.isNonToken() &&
|
||||
otherPermanent.isCreature() &&
|
||||
otherPermanent.isFriend(permanent)) ?
|
||||
new MagicEvent(
|
||||
permanent,
|
||||
new MagicMayChoice(),
|
||||
this,
|
||||
"PN may\$ put a 1/1 white Spirit creature token with flying onto the battlefield."
|
||||
) :
|
||||
MagicEvent.NONE;
|
||||
}
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
if (event.isYes()) {
|
||||
game.doAction(new MagicPlayTokenAction(
|
||||
event.getPlayer(),
|
||||
TokenCardDefinitions.get("1/1 white Spirit creature token with flying")
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
|
@ -0,0 +1,9 @@
|
|||
name=Field of Souls
|
||||
url=http://magiccards.info/ddk/en/30.html
|
||||
image=http://mtgimage.com/card/field%20of%20souls.jpg
|
||||
value=4.333
|
||||
rarity=R
|
||||
type=Enchantment
|
||||
cost={2}{W}{W}
|
||||
timing=enchantment
|
||||
requires_groovy_code
|
|
@ -5,7 +5,7 @@
|
|||
return new MagicEvent(
|
||||
cardOnStack,
|
||||
MagicTargetChoice.NEG_TARGET_CREATURE,
|
||||
new MagicWeakenTargetPicker(1,1),
|
||||
new MagicWeakenTargetPicker(1,0),
|
||||
this,
|
||||
"Target creature\$ gets -1/-0 until end of turn. Draw a card."
|
||||
);
|
||||
|
|
|
@ -1,16 +0,0 @@
|
|||
[
|
||||
new MagicWhenComesIntoPlayTrigger() {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent, final MagicPayedCost payedCost) {
|
||||
return new MagicEvent(
|
||||
permanent,
|
||||
this,
|
||||
"PN draws two cards."
|
||||
);
|
||||
}
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
game.doAction(new MagicDrawAction(event.getPlayer(),2));
|
||||
}
|
||||
}
|
||||
]
|
|
@ -6,7 +6,7 @@ rarity=C
|
|||
type=Enchantment
|
||||
subtype=Aura
|
||||
cost={3}{U}
|
||||
ability=enters effect PN draws two cards.
|
||||
given_ability=flying
|
||||
timing=aura
|
||||
enchant=flying,pos creature
|
||||
requires_groovy_code
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
name=Goblin Chirurgeon
|
||||
url=http://magiccards.info/fe/en/110.html
|
||||
image=http://mtgimage.com/card/goblin%20chirurgeon.jpg
|
||||
value=3.882
|
||||
rarity=C
|
||||
type=Creature
|
||||
subtype=Goblin,Shaman
|
||||
cost={R}
|
||||
pt=0/2
|
||||
timing=main
|
||||
requires_groovy_code
|
|
@ -0,0 +1,33 @@
|
|||
[
|
||||
new MagicPermanentActivation(
|
||||
new MagicActivationHints(MagicTiming.Pump),
|
||||
"Regen"
|
||||
) {
|
||||
|
||||
@Override
|
||||
public Iterable<MagicEvent> getCostEvent(final MagicPermanent source) {
|
||||
return [
|
||||
new MagicSacrificePermanentEvent(source, MagicTargetChoice.SACRIFICE_GOBLIN)
|
||||
];
|
||||
}
|
||||
|
||||
@Override
|
||||
public MagicEvent getPermanentEvent(final MagicPermanent source,final MagicPayedCost payedCost) {
|
||||
return new MagicEvent(
|
||||
source,
|
||||
MagicTargetChoice.POS_TARGET_CREATURE,
|
||||
MagicRegenerateTargetPicker.getInstance(),
|
||||
this,
|
||||
"Regenerate target creature\$."
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
event.processTargetPermanent(game, {
|
||||
final MagicPermanent creature ->
|
||||
game.doAction(new MagicRegenerateAction(creature));
|
||||
});
|
||||
}
|
||||
}
|
||||
]
|
|
@ -0,0 +1,33 @@
|
|||
[
|
||||
new MagicPermanentActivation(
|
||||
new MagicActivationHints(MagicTiming.Pump),
|
||||
"Regen"
|
||||
) {
|
||||
|
||||
@Override
|
||||
public Iterable<MagicEvent> getCostEvent(final MagicPermanent source) {
|
||||
return [
|
||||
new MagicPayManaCostEvent(source, "{3}"), new MagicSacrificeEvent(source)
|
||||
];
|
||||
}
|
||||
|
||||
@Override
|
||||
public MagicEvent getPermanentEvent(final MagicPermanent source,final MagicPayedCost payedCost) {
|
||||
return new MagicEvent(
|
||||
source,
|
||||
MagicTargetChoice.POS_TARGET_CREATURE,
|
||||
MagicRegenerateTargetPicker.getInstance(),
|
||||
this,
|
||||
"Regenerate target creature\$."
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
event.processTargetPermanent(game, {
|
||||
final MagicPermanent creature ->
|
||||
game.doAction(new MagicRegenerateAction(creature));
|
||||
});
|
||||
}
|
||||
}
|
||||
]
|
|
@ -0,0 +1,9 @@
|
|||
name=Herbal Poultice
|
||||
url=http://magiccards.info/lw/en/257.html
|
||||
image=http://mtgimage.com/card/herbal%20poultice.jpg
|
||||
value=2.203
|
||||
rarity=C
|
||||
type=Artifact
|
||||
cost={0}
|
||||
timing=artifact
|
||||
requires_groovy_code
|
|
@ -6,4 +6,4 @@ rarity=U
|
|||
type=Instant
|
||||
cost={G}{W}
|
||||
timing=draw
|
||||
requires_groovy_code
|
||||
effect= Target player gains 7 life.
|
||||
|
|
|
@ -1,23 +1,21 @@
|
|||
[
|
||||
new MagicWhenYouCastSpiritOrArcaneTrigger() {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final MagicCardOnStack spell) {
|
||||
return new MagicEvent(
|
||||
permanent,
|
||||
new MagicSimpleMayChoice(
|
||||
MagicSimpleMayChoice.DRAW_CARDS,
|
||||
1,
|
||||
MagicSimpleMayChoice.DEFAULT_NONE
|
||||
),
|
||||
this,
|
||||
"PN may\$ draw a card."
|
||||
);
|
||||
}
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
if (event.isYes()) {
|
||||
game.doAction(new MagicDrawAction(event.getPlayer()));
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
[
|
||||
new MagicWhenYouCastSpiritOrArcaneTrigger() {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final MagicCardOnStack spell) {
|
||||
return new MagicEvent(
|
||||
source,
|
||||
MagicTargetChoice.POS_TARGET_CREATURE,
|
||||
MagicRegenerateTargetPicker.getInstance(),
|
||||
this,
|
||||
"Regenerate target creature\$."
|
||||
);
|
||||
}
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
event.processTargetPermanent(game, {
|
||||
final MagicPermanent creature ->
|
||||
game.doAction(new MagicRegenerateAction(creature));
|
||||
});
|
||||
}
|
||||
}
|
||||
]
|
|
@ -0,0 +1,11 @@
|
|||
name=Horizon Seed
|
||||
url=http://magiccards.info/chk/en/15.html
|
||||
image=http://mtgimage.com/card/horizon%20seed.jpg
|
||||
value=0.965
|
||||
rarity=U
|
||||
type=Creature
|
||||
subtype=Spirit
|
||||
cost={4}{W}
|
||||
pt=2/1
|
||||
timing=main
|
||||
requires_groovy_code
|
|
@ -1,26 +1,33 @@
|
|||
[
|
||||
new MagicPermanentActivation(
|
||||
new MagicActivationHints(MagicTiming.Pump),
|
||||
"Prevent"
|
||||
"Regen"
|
||||
) {
|
||||
|
||||
@Override
|
||||
public Iterable<MagicEvent> getCostEvent(final MagicPermanent source) {
|
||||
return [new MagicPayManaCostEvent(source,"{W}")];
|
||||
return [
|
||||
new MagicPayManaCostEvent(source, "{2}")
|
||||
];
|
||||
}
|
||||
|
||||
@Override
|
||||
public MagicEvent getPermanentEvent(final MagicPermanent source,final MagicPayedCost payedCost) {
|
||||
return new MagicEvent(
|
||||
source,
|
||||
MagicTargetChoice.POS_TARGET_ARTIFACT_CREATURE,
|
||||
MagicRegenerateTargetPicker.getInstance(),
|
||||
this,
|
||||
"Prevent the next 1 damage that would be dealt to SN this turn"
|
||||
"Regenerate target artifact creature\$."
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
game.doAction(new MagicPreventDamageAction(event.getPermanent(),1));
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
event.processTargetPermanent(game, {
|
||||
final MagicPermanent creature ->
|
||||
game.doAction(new MagicRegenerateAction(creature));
|
||||
});
|
||||
}
|
||||
}
|
||||
]
|
|
@ -0,0 +1,11 @@
|
|||
name=Jhoira's Toolbox
|
||||
url=http://magiccards.info/ul/en/128.html
|
||||
image=http://mtgimage.com/card/jhoira's%20toolbox.jpg
|
||||
value=3.925
|
||||
rarity=U
|
||||
type=Artifact,Creature
|
||||
subtype=Insect
|
||||
cost={2}
|
||||
pt=1/1
|
||||
timing=artifact
|
||||
requires_groovy_code
|
|
@ -1,27 +1,30 @@
|
|||
[
|
||||
new MagicPermanentActivation(
|
||||
new MagicActivationHints(MagicTiming.Tapping),
|
||||
"Untap"
|
||||
) {
|
||||
@Override
|
||||
public Iterable<MagicEvent> getCostEvent(final MagicPermanent source) {
|
||||
return [
|
||||
new MagicPayManaCostEvent(source,"{G}"),
|
||||
new MagicPlayAbilityEvent(source),
|
||||
new MagicUntapConditionsEvent(source,this)
|
||||
];
|
||||
}
|
||||
@Override
|
||||
public MagicEvent getPermanentEvent(final MagicPermanent source,final MagicPayedCost payedCost) {
|
||||
return new MagicEvent(
|
||||
source,
|
||||
this,
|
||||
"Untap SN."
|
||||
);
|
||||
}
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
game.doAction(new MagicUntapAction(event.getPermanent()));
|
||||
}
|
||||
}
|
||||
]
|
||||
[
|
||||
new MagicPermanentActivation(
|
||||
new MagicActivationHints(MagicTiming.Main),
|
||||
"Prevent"
|
||||
) {
|
||||
|
||||
@Override
|
||||
public Iterable<MagicEvent> getCostEvent(final MagicPermanent source) {
|
||||
return [
|
||||
new MagicSacrificeEvent(source)
|
||||
];
|
||||
}
|
||||
|
||||
@Override
|
||||
public MagicEvent getPermanentEvent(final MagicPermanent source,final MagicPayedCost payedCost) {
|
||||
return new MagicEvent(
|
||||
source,
|
||||
this,
|
||||
"Prevent all combat damage that would be dealt this turn."
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
game.doAction(new MagicAddTurnTriggerAction(
|
||||
MagicIfDamageWouldBeDealtTrigger.PreventCombatDamage
|
||||
));
|
||||
}
|
||||
}
|
||||
]
|
|
@ -0,0 +1,11 @@
|
|||
name=Kami of False Hope
|
||||
url=http://magiccards.info/bok/en/10.html
|
||||
image=http://mtgimage.com/card/kami%20of%20false%20hope.jpg
|
||||
value=4
|
||||
rarity=C
|
||||
type=Creature
|
||||
subtype=Spirit
|
||||
cost={W}
|
||||
pt=1/1
|
||||
timing=main
|
||||
requires_groovy_code
|
|
@ -7,6 +7,5 @@ type=Creature
|
|||
subtype=Insect
|
||||
cost={3}{G}
|
||||
pt=1/1
|
||||
ability=flying;regenerate {G}
|
||||
ability=flying;regenerate {G};pay {G}{Once}:Untap SN.
|
||||
timing=main
|
||||
requires_groovy_code
|
||||
|
|
|
@ -0,0 +1,33 @@
|
|||
[
|
||||
new MagicPermanentActivation(
|
||||
new MagicActivationHints(MagicTiming.Pump),
|
||||
"Regen"
|
||||
) {
|
||||
|
||||
@Override
|
||||
public Iterable<MagicEvent> getCostEvent(final MagicPermanent source) {
|
||||
return [
|
||||
new MagicTapEvent(source), new MagicPayManaCostEvent(source, "{W}")
|
||||
];
|
||||
}
|
||||
|
||||
@Override
|
||||
public MagicEvent getPermanentEvent(final MagicPermanent source,final MagicPayedCost payedCost) {
|
||||
return new MagicEvent(
|
||||
source,
|
||||
MagicTargetChoice.POS_TARGET_ARTIFACT,
|
||||
MagicRegenerateTargetPicker.getInstance(),
|
||||
this,
|
||||
"Regenerate target artifact\$."
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
event.processTargetPermanent(game, {
|
||||
final MagicPermanent artifact ->
|
||||
game.doAction(new MagicRegenerateAction(artifact));
|
||||
});
|
||||
}
|
||||
}
|
||||
]
|
|
@ -0,0 +1,11 @@
|
|||
name=Loxodon Mender
|
||||
url=http://magiccards.info/mi/en/12.html
|
||||
image=http://mtgimage.com/card/loxodon%20mender.jpg
|
||||
value=1.194
|
||||
rarity=C
|
||||
type=Creature
|
||||
subtype=Cleric,Elephant
|
||||
cost={5}{W}
|
||||
pt=3/3
|
||||
timing=main
|
||||
requires_groovy_code
|
|
@ -0,0 +1,33 @@
|
|||
[
|
||||
new MagicPermanentActivation(
|
||||
new MagicActivationHints(MagicTiming.Pump),
|
||||
"Regen"
|
||||
) {
|
||||
|
||||
@Override
|
||||
public Iterable<MagicEvent> getCostEvent(final MagicPermanent source) {
|
||||
return [
|
||||
new MagicTapEvent(source), new MagicPayManaCostEvent(source, "{1}"), new MagicDiscardEvent(source, 1)
|
||||
];
|
||||
}
|
||||
|
||||
@Override
|
||||
public MagicEvent getPermanentEvent(final MagicPermanent source,final MagicPayedCost payedCost) {
|
||||
return new MagicEvent(
|
||||
source,
|
||||
MagicTargetChoice.POS_TARGET_CREATURE,
|
||||
MagicRegenerateTargetPicker.getInstance(),
|
||||
this,
|
||||
"Regenerate target creature\$."
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
event.processTargetPermanent(game, {
|
||||
final MagicPermanent creature ->
|
||||
game.doAction(new MagicRegenerateAction(creature));
|
||||
});
|
||||
}
|
||||
}
|
||||
]
|
|
@ -0,0 +1,9 @@
|
|||
name=Medicine Bag
|
||||
url=http://magiccards.info/ex/en/133.html
|
||||
image=http://mtgimage.com/card/medicine%20bag.jpg
|
||||
value=1.978
|
||||
rarity=U
|
||||
type=Artifact
|
||||
cost={3}
|
||||
timing=artifact
|
||||
requires_groovy_code
|
|
@ -0,0 +1,9 @@
|
|||
name=Mending Touch
|
||||
url=http://magiccards.info/dgm/en/44.html
|
||||
image=http://mtgimage.com/card/mending%20touch.jpg
|
||||
value=2.9
|
||||
rarity=C
|
||||
type=Instant
|
||||
cost={G}
|
||||
timing=pump
|
||||
requires_groovy_code=Death Ward
|
|
@ -0,0 +1,11 @@
|
|||
name=Metallurgeon
|
||||
url=http://magiccards.info/arc/en/2.html
|
||||
image=http://mtgimage.com/card/metallurgeon.jpg
|
||||
value=3.1
|
||||
rarity=U
|
||||
type=Artifact,Creature
|
||||
subtype=Human,Artificer
|
||||
cost={1}{W}
|
||||
pt=1/2
|
||||
timing=artifact
|
||||
requires_groovy_code=Loxodon Mender
|
|
@ -0,0 +1,38 @@
|
|||
[
|
||||
new MagicPermanentActivation(
|
||||
[MagicCondition.TWO_OR_MORE_WHITE_PERMANENTS],
|
||||
new MagicActivationHints(MagicTiming.Main),
|
||||
"Card"
|
||||
) {
|
||||
|
||||
@Override
|
||||
public Iterable<MagicEvent> getCostEvent(final MagicPermanent source) {
|
||||
return [
|
||||
new MagicTapEvent(source), new MagicPayManaCostEvent(source, "{W}")
|
||||
];
|
||||
}
|
||||
|
||||
@Override
|
||||
public MagicEvent getPermanentEvent(final MagicPermanent source,final MagicPayedCost payedCost) {
|
||||
return new MagicEvent(
|
||||
source,
|
||||
MagicTargetChoice.TARGET_CARD_FROM_GRAVEYARD,
|
||||
this,
|
||||
"Put target card\$ from your graveyard on the bottom of your library."
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
event.processTargetCard(game, {
|
||||
final MagicCard targetCard ->
|
||||
game.doAction(new MagicRemoveCardAction(targetCard,MagicLocationType.Graveyard));
|
||||
game.doAction(new MagicMoveCardAction(
|
||||
targetCard,
|
||||
MagicLocationType.Graveyard,
|
||||
MagicLocationType.BottomOfOwnersLibrary
|
||||
));
|
||||
});
|
||||
}
|
||||
}
|
||||
]
|
|
@ -0,0 +1,11 @@
|
|||
name=Mistveil Plains
|
||||
url=http://magiccards.info/shm/en/275.html
|
||||
image=http://mtgimage.com/card/mistveil%20plains.jpg
|
||||
value=3.009
|
||||
rarity=U
|
||||
type=Land
|
||||
subtype=Plains
|
||||
mana=w3
|
||||
ability=tap add mana {W};enters tapped
|
||||
timing=land
|
||||
requires_groovy_code
|
|
@ -1,18 +0,0 @@
|
|||
[
|
||||
new MagicWhenDiesTrigger() {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game, final MagicPermanent permanent, final MagicMoveCardAction data) {
|
||||
return new MagicEvent(
|
||||
permanent,
|
||||
this,
|
||||
"PN puts two 2/2 green Ooze creature tokens onto the battlefield. " +
|
||||
"They have \"When this creature dies, put two 1/1 green Ooze creature tokens onto the battlefield.\""
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
game.doAction(new MagicPlayTokensAction(event.getPlayer(), TokenCardDefinitions.get("2/2 green Ooze creature token"), 2));
|
||||
}
|
||||
}
|
||||
]
|
|
@ -7,5 +7,5 @@ type=Creature
|
|||
subtype=Ooze
|
||||
cost={4}{G}
|
||||
pt=4/4
|
||||
ability=dies effect PN puts two 2/2 green Ooze creature tokens onto the battlefield.
|
||||
timing=main
|
||||
requires_groovy_code
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
name=Molting Skin
|
||||
url=http://magiccards.info/sok/en/138.html
|
||||
image=http://mtgimage.com/card/molting%20skin.jpg
|
||||
value=3.129
|
||||
rarity=U
|
||||
type=Enchantment
|
||||
cost={2}{G}
|
||||
timing=enchantment
|
||||
requires_groovy_code=Broken Fall
|
|
@ -7,6 +7,5 @@ type=Creature
|
|||
subtype=Snake
|
||||
cost={1}{G}{U}{U}
|
||||
pt=2/2
|
||||
ability=flash
|
||||
ability=flash;enters effect Counter target spell.
|
||||
timing=counterflash
|
||||
requires_groovy_code
|
||||
|
|
|
@ -0,0 +1,33 @@
|
|||
[
|
||||
new MagicPermanentActivation(
|
||||
new MagicActivationHints(MagicTiming.Pump),
|
||||
"Regen"
|
||||
) {
|
||||
|
||||
@Override
|
||||
public Iterable<MagicEvent> getCostEvent(final MagicPermanent source) {
|
||||
return [
|
||||
new MagicTapEvent(source), new MagicPayManaCostEvent(source, "{G}{G}{G}{G}")
|
||||
];
|
||||
}
|
||||
|
||||
@Override
|
||||
public MagicEvent getPermanentEvent(final MagicPermanent source,final MagicPayedCost payedCost) {
|
||||
return new MagicEvent(
|
||||
source,
|
||||
MagicTargetChoice.POS_TARGET_CREATURE,
|
||||
MagicRegenerateTargetPicker.getInstance(),
|
||||
this,
|
||||
"Regenerate target creature\$."
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
event.processTargetPermanent(game, {
|
||||
final MagicPermanent creature ->
|
||||
game.doAction(new MagicRegenerateAction(creature));
|
||||
});
|
||||
}
|
||||
}
|
||||
]
|
|
@ -0,0 +1,11 @@
|
|||
name=Niall Silvain
|
||||
url=http://magiccards.info/dk/en/45.html
|
||||
image=http://mtgimage.com/card/niall%20silvain.jpg
|
||||
value=1.218
|
||||
rarity=R
|
||||
type=Creature
|
||||
subtype=Ouphe
|
||||
cost={G}{G}{G}
|
||||
pt=2/2
|
||||
timing=main
|
||||
requires_groovy_code
|
|
@ -0,0 +1,27 @@
|
|||
[
|
||||
new MagicWhenComesIntoPlayTrigger() {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent, final MagicPayedCost payedCost) {
|
||||
return new MagicEvent(
|
||||
permanent,
|
||||
MagicColorChoice.ALL_INSTANCE,
|
||||
this,
|
||||
"Choose a color\$. " +
|
||||
"SN has protection from chosen color."
|
||||
);
|
||||
}
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
final MagicColor color = event.getChosenColor();
|
||||
final MagicAbility protection = color.getProtectionAbility();
|
||||
game.doAction(new MagicAddStaticAction(event.getPermanent(), new MagicStatic(
|
||||
MagicLayer.Ability) {
|
||||
@Override
|
||||
public void modAbilityFlags(final MagicPermanent source,final MagicPermanent permanent,final Set<MagicAbility> flags) {
|
||||
flags.add(protection);
|
||||
}
|
||||
}
|
||||
));
|
||||
}
|
||||
}
|
||||
]
|
|
@ -0,0 +1,12 @@
|
|||
name=Order of the Stars
|
||||
url=http://magiccards.info/gp/en/13.html
|
||||
image=http://mtgimage.com/card/order%20of%20the%20stars.jpg
|
||||
value=3.727
|
||||
rarity=U
|
||||
type=Creature
|
||||
subtype=Human,Cleric
|
||||
cost={W}
|
||||
pt=0/1
|
||||
ability=defender
|
||||
timing=main
|
||||
requires_groovy_code
|
|
@ -7,5 +7,5 @@ type=Creature
|
|||
subtype=Minotaur,Soldier
|
||||
cost={3}{R}
|
||||
pt=4/1
|
||||
ability=pay {W}:Prevent the next 1 damage that would be dealt to SN this turn.
|
||||
timing=main
|
||||
requires_groovy_code
|
||||
|
|
|
@ -1,24 +1,33 @@
|
|||
[
|
||||
new MagicPermanentActivation(
|
||||
new MagicActivationHints(MagicTiming.Pump),
|
||||
"Pump"
|
||||
"Regen"
|
||||
) {
|
||||
|
||||
@Override
|
||||
public Iterable<MagicEvent> getCostEvent(final MagicPermanent source) {
|
||||
return [new MagicPayManaCostEvent(source,"{1}{U}{R}")];
|
||||
return [
|
||||
new MagicSacrificeEvent(source)
|
||||
];
|
||||
}
|
||||
|
||||
@Override
|
||||
public MagicEvent getPermanentEvent(final MagicPermanent source,final MagicPayedCost payedCost) {
|
||||
return new MagicEvent(
|
||||
source,
|
||||
MagicTargetChoice.POS_TARGET_ARTIFACT,
|
||||
MagicRegenerateTargetPicker.getInstance(),
|
||||
this,
|
||||
"SN gets +3/+0 and gains flying until end of turn."
|
||||
"Regenerate target artifact\$."
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
game.doAction(new MagicChangeTurnPTAction(event.getPermanent(),3,0));
|
||||
game.doAction(new MagicGainAbilityAction(event.getPermanent(),MagicAbility.Flying));
|
||||
event.processTargetPermanent(game, {
|
||||
final MagicPermanent artifact ->
|
||||
game.doAction(new MagicRegenerateAction(artifact));
|
||||
});
|
||||
}
|
||||
}
|
||||
]
|
|
@ -0,0 +1,12 @@
|
|||
name=Pteron Ghost
|
||||
url=http://magiccards.info/ds/en/10.html
|
||||
image=http://mtgimage.com/card/pteron%20ghost.jpg
|
||||
value=2.361
|
||||
rarity=C
|
||||
type=Creature
|
||||
subtype=Spirit
|
||||
cost={1}{W}
|
||||
pt=1/1
|
||||
ability=flying
|
||||
timing=main
|
||||
requires_groovy_code
|
|
@ -0,0 +1,33 @@
|
|||
[
|
||||
new MagicPermanentActivation(
|
||||
new MagicActivationHints(MagicTiming.Pump),
|
||||
"Regen"
|
||||
) {
|
||||
|
||||
@Override
|
||||
public Iterable<MagicEvent> getCostEvent(final MagicPermanent source) {
|
||||
return [
|
||||
new MagicTapEvent(source), new MagicPayManaCostEvent(source, "{G}{W}{U}")
|
||||
];
|
||||
}
|
||||
|
||||
@Override
|
||||
public MagicEvent getPermanentEvent(final MagicPermanent source,final MagicPayedCost payedCost) {
|
||||
return new MagicEvent(
|
||||
source,
|
||||
MagicTargetChoice.POS_TARGET_CREATURE,
|
||||
MagicRegenerateTargetPicker.getInstance(),
|
||||
this,
|
||||
"Regenerate target creature\$."
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
event.processTargetPermanent(game, {
|
||||
final MagicPermanent creature ->
|
||||
game.doAction(new MagicRegenerateAction(creature));
|
||||
});
|
||||
}
|
||||
}
|
||||
]
|
|
@ -0,0 +1,11 @@
|
|||
name=Ragnar
|
||||
url=http://magiccards.info/lg/en/290.html
|
||||
image=http://mtgimage.com/card/ragnar.jpg
|
||||
value=3.125
|
||||
rarity=U
|
||||
type=Legendary,Creature
|
||||
subtype=Human,Cleric
|
||||
cost={G}{W}{U}
|
||||
pt=2/2
|
||||
timing=main
|
||||
requires_groovy_code
|
|
@ -1,20 +0,0 @@
|
|||
[
|
||||
new MagicWhenComesIntoPlayTrigger() {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent, final MagicPayedCost payedCost) {
|
||||
return new MagicEvent(
|
||||
permanent,
|
||||
permanent.getOpponent(),
|
||||
this,
|
||||
"PN discards a card."
|
||||
);
|
||||
}
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
game.addEvent(new MagicDiscardEvent(
|
||||
event.getSource(),
|
||||
event.getPlayer()
|
||||
));
|
||||
}
|
||||
}
|
||||
]
|
|
@ -7,5 +7,5 @@ type=Creature
|
|||
subtype=Rat
|
||||
cost={1}{B}
|
||||
pt=1/1
|
||||
ability=enters effect Target opponent discards a card.
|
||||
timing=main
|
||||
requires_groovy_code
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
[
|
||||
new MagicSpellCardEvent() {
|
||||
@Override
|
||||
public MagicEvent getEvent(final MagicCardOnStack cardOnStack, final MagicPayedCost payedCost) {
|
||||
return new MagicEvent(
|
||||
cardOnStack,
|
||||
MagicTargetChoice.POS_TARGET_CREATURE,
|
||||
this,
|
||||
"Regenerate target permanent\$."
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
event.processTargetPermanent(game, {
|
||||
final MagicPermanent creature ->
|
||||
game.doAction(new MagicRegenerateAction(creature));
|
||||
game.doAction(new MagicDrawAction(event.getPlayer()));
|
||||
});
|
||||
}
|
||||
}
|
||||
]
|
|
@ -0,0 +1,9 @@
|
|||
name=Refresh
|
||||
url=http://magiccards.info/od/pt/264.html
|
||||
image=http://mtgimage.com/card/refresh.jpg
|
||||
value=1.889
|
||||
rarity=C
|
||||
type=Instant
|
||||
cost={2}{G}
|
||||
timing=pump
|
||||
requires_groovy_code
|
|
@ -0,0 +1,9 @@
|
|||
name=Regenerate
|
||||
url=http://magiccards.info/m10/en/202.html
|
||||
image=http://mtgimage.com/card/regenerate.jpg
|
||||
value=1.206
|
||||
rarity=C
|
||||
type=Instant
|
||||
cost={1}{G}
|
||||
timing=pump
|
||||
requires_groovy_code=Death Ward
|
|
@ -1,16 +1,21 @@
|
|||
[
|
||||
new MagicSpellCardEvent() {
|
||||
@Override
|
||||
public MagicEvent getEvent(final MagicCardOnStack cardOnStack,final MagicPayedCost payedCost) {
|
||||
public MagicEvent getEvent(final MagicCardOnStack cardOnStack, final MagicPayedCost payedCost) {
|
||||
return new MagicEvent(
|
||||
cardOnStack,
|
||||
MagicTargetChoice.POS_TARGET_P,
|
||||
this,
|
||||
"PN draws three cards."
|
||||
"Regenerate target permanent\$."
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
game.doAction(new MagicDrawAction(event.getPlayer(),3));
|
||||
event.processTargetPermanent(game, {
|
||||
final MagicPermanent permanent ->
|
||||
game.doAction(new MagicRegenerateAction(permanent));
|
||||
});
|
||||
}
|
||||
}
|
||||
]
|
|
@ -0,0 +1,9 @@
|
|||
name=Reknit
|
||||
url=http://magiccards.info/shm/en/236.html
|
||||
image=http://mtgimage.com/card/reknit.jpg
|
||||
value=3.29
|
||||
rarity=U
|
||||
type=Instant
|
||||
cost={1}{G/W}
|
||||
timing=pump
|
||||
requires_groovy_code
|
|
@ -1,17 +0,0 @@
|
|||
[
|
||||
new MagicWhenDiesTrigger() {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game, final MagicPermanent permanent, final MagicMoveCardAction data) {
|
||||
return new MagicEvent(
|
||||
permanent,
|
||||
this,
|
||||
"PN puts a 3/3 white Bird creature token with flying onto the battlefield."
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
game.doAction(new MagicPlayTokenAction(event.getPlayer(),TokenCardDefinitions.get("3/3 white Bird creature token with flying")));
|
||||
}
|
||||
}
|
||||
]
|
|
@ -7,6 +7,5 @@ type=Creature
|
|||
subtype=Bird
|
||||
cost={2}{W}
|
||||
pt=0/3
|
||||
ability=defender
|
||||
ability=defender;dies effect PN puts a 3/3 white Bird creature token with flying onto the battlefield.
|
||||
timing=main
|
||||
requires_groovy_code
|
||||
|
|
|
@ -0,0 +1,33 @@
|
|||
[
|
||||
new MagicPermanentActivation(
|
||||
new MagicActivationHints(MagicTiming.Pump),
|
||||
"Regen"
|
||||
) {
|
||||
|
||||
@Override
|
||||
public Iterable<MagicEvent> getCostEvent(final MagicPermanent source) {
|
||||
return [
|
||||
new MagicTapEvent(source), new MagicPayManaCostEvent(source, "{G}"), new MagicDiscardEvent(source, 1)
|
||||
];
|
||||
}
|
||||
|
||||
@Override
|
||||
public MagicEvent getPermanentEvent(final MagicPermanent source,final MagicPayedCost payedCost) {
|
||||
return new MagicEvent(
|
||||
source,
|
||||
MagicTargetChoice.POS_TARGET_CREATURE,
|
||||
MagicRegenerateTargetPicker.getInstance(),
|
||||
this,
|
||||
"Regenerate target creature\$."
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
event.processTargetPermanent(game, {
|
||||
final MagicPermanent creature ->
|
||||
game.doAction(new MagicRegenerateAction(creature));
|
||||
});
|
||||
}
|
||||
}
|
||||
]
|
|
@ -0,0 +1,11 @@
|
|||
name=Rushwood Herbalist
|
||||
url=http://magiccards.info/mm/en/265.html
|
||||
image=http://mtgimage.com/card/rushwood%20herbalist.jpg
|
||||
value=2.208
|
||||
rarity=C
|
||||
type=Creature
|
||||
subtype=Human,Spellshaper
|
||||
cost={2}{G}
|
||||
pt=2/2
|
||||
timing=main
|
||||
requires_groovy_code
|
|
@ -7,6 +7,5 @@ type=Creature
|
|||
subtype=Spirit
|
||||
cost={4}{U}{U}
|
||||
pt=3/3
|
||||
ability=flying
|
||||
ability=flying;spirit or arcane effect PN may draw a card.
|
||||
timing=main
|
||||
requires_groovy_code
|
||||
|
|
|
@ -1,21 +0,0 @@
|
|||
[
|
||||
new MagicSpellCardEvent() {
|
||||
@Override
|
||||
public MagicEvent getEvent(final MagicCardOnStack cardOnStack,final MagicPayedCost payedCost) {
|
||||
return new MagicEvent(
|
||||
cardOnStack,
|
||||
this,
|
||||
"PN puts five 0/1 colorless Eldrazi Spawn creature tokens onto the battlefield." +
|
||||
"They have \"Sacrifice this creature: Add {1} to your mana pool.\""
|
||||
);
|
||||
}
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
game.doAction(new MagicPlayTokensAction(
|
||||
event.getPlayer(),
|
||||
TokenCardDefinitions.get("0/1 colorless Eldrazi Spawn creature token"),
|
||||
5
|
||||
));
|
||||
}
|
||||
}
|
||||
]
|
|
@ -7,4 +7,4 @@ type=Tribal,Sorcery
|
|||
subtype=Eldrazi
|
||||
cost={7}
|
||||
timing=token
|
||||
requires_groovy_code
|
||||
effect=PN puts five 0/1 colorless Eldrazi Spawn creature tokens onto the battlefield.
|
||||
|
|
|
@ -1,22 +1,24 @@
|
|||
[
|
||||
new MagicPermanentActivation(
|
||||
new MagicActivationHints(MagicTiming.Animate,true),
|
||||
"Shadow"
|
||||
new MagicActivationHints(MagicTiming.Pump),
|
||||
"Regen"
|
||||
) {
|
||||
|
||||
@Override
|
||||
public Iterable<MagicEvent> getCostEvent(final MagicPermanent source) {
|
||||
return [new MagicPayManaCostEvent(source,"{B}{B}")];
|
||||
return [
|
||||
new MagicPayManaCostEvent(source, "{W/B}{W/B}{W/B}")
|
||||
];
|
||||
}
|
||||
|
||||
@Override
|
||||
public MagicEvent getPermanentEvent(final MagicPermanent source,final MagicPayedCost payedCost) {
|
||||
return new MagicEvent(
|
||||
source,
|
||||
MagicTargetChoice.TARGET_CREATURE,
|
||||
MagicShadowTargetPicker.getInstance(),
|
||||
MagicTargetChoice.POS_TARGET_CREATURE,
|
||||
MagicRegenerateTargetPicker.getInstance(),
|
||||
this,
|
||||
"Target creature\$ gains shadow until end of turn."
|
||||
"Regenerate target creature\$."
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -24,7 +26,7 @@
|
|||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
event.processTargetPermanent(game, {
|
||||
final MagicPermanent creature ->
|
||||
game.doAction(new MagicGainAbilityAction(creature,MagicAbility.Shadow));
|
||||
game.doAction(new MagicRegenerateAction(creature));
|
||||
});
|
||||
}
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
name=Suture Spirit
|
||||
url=http://magiccards.info/eve/en/16.html
|
||||
image=http://mtgimage.com/card/suture%20spirit.jpg
|
||||
value=2.946
|
||||
rarity=U
|
||||
type=Creature
|
||||
subtype=Spirit
|
||||
cost={1}{W}
|
||||
pt=1/1
|
||||
ability=flying
|
||||
timing=main
|
||||
requires_groovy_code
|
|
@ -0,0 +1,35 @@
|
|||
[
|
||||
new MagicPermanentActivation(
|
||||
new MagicActivationHints(MagicTiming.Pump),
|
||||
"Regen"
|
||||
) {
|
||||
|
||||
@Override
|
||||
public Iterable<MagicEvent> getCostEvent(final MagicPermanent source) {
|
||||
return [
|
||||
new MagicPayManaCostEvent(source, "{G}"),
|
||||
new MagicTapEvent(source),
|
||||
new MagicSacrificePermanentEvent(source, MagicTargetChoice.SACRIFICE_FOREST)
|
||||
];
|
||||
}
|
||||
|
||||
@Override
|
||||
public MagicEvent getPermanentEvent(final MagicPermanent source,final MagicPayedCost payedCost) {
|
||||
return new MagicEvent(
|
||||
source,
|
||||
MagicTargetChoice.POS_TARGET_CREATURE,
|
||||
MagicRegenerateTargetPicker.getInstance(),
|
||||
this,
|
||||
"Regenerate target creature\$."
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
event.processTargetPermanent(game, {
|
||||
final MagicPermanent creature ->
|
||||
game.doAction(new MagicRegenerateAction(creature));
|
||||
});
|
||||
}
|
||||
}
|
||||
]
|
|
@ -0,0 +1,11 @@
|
|||
name=Tel-Jilad Lifebreather
|
||||
url=http://magiccards.info/5dn/en/96.html
|
||||
image=http://mtgimage.com/card/tel-jilad%20lifebreather.jpg
|
||||
value=1.278
|
||||
rarity=C
|
||||
type=Creature
|
||||
subtype=Shaman,Troll
|
||||
cost={4}{G}
|
||||
pt=3/2
|
||||
timing=main
|
||||
requires_groovy_code
|
|
@ -1,22 +0,0 @@
|
|||
[
|
||||
new MagicAtUpkeepTrigger() {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final MagicPlayer upkeepPlayer) {
|
||||
return permanent.getEnchantedCreature().isValid() ?
|
||||
new MagicEvent(
|
||||
permanent.getEnchantedCreature(),
|
||||
this,
|
||||
"PN puts a 1/1 green Saproling creature token onto the battlefield."
|
||||
):
|
||||
MagicEvent.NONE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
game.doAction(new MagicPlayTokenAction(
|
||||
event.getPlayer(),
|
||||
TokenCardDefinitions.get("1/1 green Saproling creature token"),
|
||||
));
|
||||
}
|
||||
}
|
||||
]
|
|
@ -6,7 +6,7 @@ rarity=R
|
|||
type=Enchantment
|
||||
subtype=Aura
|
||||
cost={3}{G}{G}
|
||||
given_pt=3/3
|
||||
given_pt=+3/+3
|
||||
given_ability=each upkeep effect PN puts a 1/1 green Saproling creature token onto the battlefield.
|
||||
timing=main
|
||||
enchant=pump,pos creature
|
||||
requires_groovy_code
|
||||
|
|
|
@ -1,16 +0,0 @@
|
|||
[
|
||||
new MagicAtUpkeepTrigger() {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game,final MagicPermanent permanent,final MagicPlayer upkeepPlayer) {
|
||||
return new MagicEvent(
|
||||
permanent,
|
||||
this,
|
||||
"PN puts a 1/1 green Saproling creature token onto the battlefield."
|
||||
);
|
||||
}
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
game.doAction(new MagicPlayTokenAction(event.getPlayer(),TokenCardDefinitions.get("1/1 green Saproling creature token")));
|
||||
}
|
||||
}
|
||||
]
|
|
@ -7,5 +7,5 @@ type=Creature
|
|||
subtype=Elemental
|
||||
cost={5}{G}{G}{G}
|
||||
pt=7/7
|
||||
ability=each upkeep effect PN puts a 1/1 green Saproling creature token onto the battlefield.
|
||||
timing=main
|
||||
requires_groovy_code
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
name=Village Elder
|
||||
url=http://magiccards.info/br/en/94.html
|
||||
image=http://mtgimage.com/card/village%20elder.jpg
|
||||
value=2.324
|
||||
rarity=C
|
||||
type=Creature
|
||||
subtype=Human,Druid
|
||||
cost={G}
|
||||
pt=1/1
|
||||
timing=main
|
||||
requires_groovy_code=Tel-Jilad Lifebreather
|
|
@ -0,0 +1,12 @@
|
|||
name=Voice of All
|
||||
url=http://magiccards.info/cmd/en/35.html
|
||||
image=http://mtgimage.com/card/voice%20of%20all.jpg
|
||||
value=4.115
|
||||
rarity=R
|
||||
type=Creature
|
||||
subtype=Angel
|
||||
cost={2}{W}{W}
|
||||
pt=2/2
|
||||
ability=flying
|
||||
timing=main
|
||||
requires_groovy_code=Order of the Stars
|
|
@ -1,19 +0,0 @@
|
|||
[
|
||||
new MagicWhenDiesTrigger() {
|
||||
@Override
|
||||
public MagicEvent executeTrigger(final MagicGame game, final MagicPermanent permanent, final MagicMoveCardAction data) {
|
||||
return new MagicEvent(
|
||||
permanent,
|
||||
this,
|
||||
"Return SN to its owner's hand."
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void executeEvent(final MagicGame game, final MagicEvent event) {
|
||||
final MagicCard card = event.getPermanent().getCard();
|
||||
game.doAction(new MagicRemoveCardAction(card,MagicLocationType.Graveyard));
|
||||
game.doAction(new MagicMoveCardAction(card,MagicLocationType.Graveyard,MagicLocationType.OwnersHand));
|
||||
}
|
||||
}
|
||||
]
|
|
@ -8,5 +8,4 @@ subtype=Treefolk
|
|||
cost={2}{G}{G}{G}
|
||||
pt=5/3
|
||||
timing=main
|
||||
ability=trample
|
||||
requires_groovy_code
|
||||
ability=trample;dies effect Return SN from the graveyard to its owner's hand.
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue