Update phyrexian syntax, add ConniveAI (#2357)

* update syntax
- fix mobile display for compleated symbols

* update

* update cards

* fix Raffine Scheming Seer

* # ConniveAI

* remove unused var

* unused import

* add missing token script
This commit is contained in:
Anthony Calosa
2023-02-02 14:03:07 +08:00
committed by GitHub
parent 10c6d71140
commit 44d1d19bd6
55 changed files with 210 additions and 86 deletions

View File

@@ -55,6 +55,7 @@ public enum SpellApiToAi {
.put(ApiType.Cleanup, AlwaysPlayAi.class)
.put(ApiType.Clone, CloneAi.class)
.put(ApiType.CompanionChoose, ChooseCompanionAi.class)
.put(ApiType.Connive, ConniveAi.class)
.put(ApiType.CopyPermanent, CopyPermanentAi.class)
.put(ApiType.CopySpellAbility, CopySpellAbilityAi.class)
.put(ApiType.ControlPlayer, CannotPlayAi.class)

View File

@@ -0,0 +1,66 @@
package forge.ai.ability;
import forge.ai.ComputerUtil;
import forge.ai.ComputerUtilCard;
import forge.ai.SpellAbilityAi;
import forge.game.card.Card;
import forge.game.card.CardCollection;
import forge.game.card.CardLists;
import forge.game.player.Player;
import forge.game.spellability.SpellAbility;
import forge.game.zone.ZoneType;
public class ConniveAi extends SpellAbilityAi {
@Override
protected boolean doTriggerAINoCost(Player ai, SpellAbility sa, boolean mandatory) {
final Card source = sa.getHostCard();
boolean preferred = true;
CardCollection list;
list = CardLists.getTargetableCards(new CardCollection(ai.getCardsIn(ZoneType.Battlefield)), sa);
// Filter AI-specific targets if provided
list = ComputerUtil.filterAITgts(sa, ai, list, false);
int totalTargets = list.size();
sa.resetTargets();
while (sa.canAddMoreTarget()) {
if (mandatory) {
if ((list.isEmpty() || !preferred) && sa.isTargetNumberValid()) {
return true;
}
if (list.isEmpty() && preferred) {
// If it's required to choose targets and the list is empty, get a new list
list = CardLists.getTargetableCards(ai.getOpponents().getCardsIn(ZoneType.Battlefield), sa);
preferred = false;
}
if (list.isEmpty()) {
// Still an empty list, but we have to choose something (mandatory); expand targeting to
// include AI's own cards to see if there's anything targetable (e.g. Plague Belcher).
list = CardLists.getTargetableCards(ai.getCardsIn(ZoneType.Battlefield), sa);
preferred = false;
}
}
if (list.isEmpty()) {
// Not mandatory, or the the list was regenerated and is still empty,
// so return whether or not we found enough targets
return sa.isTargetNumberValid();
}
Card choice = ComputerUtilCard.getBestCreatureAI(list);
if (choice != null) {
sa.getTargets().add(choice);
list.remove(choice);
} else {
// Didn't want to choose anything?
list.clear();
}
}
return true;
}
}

View File

@@ -58,21 +58,21 @@ public enum ManaCostShard {
/* Phyrexian */
PW(ManaAtom.WHITE | ManaAtom.OR_2_LIFE, "P/W", "PW"),
PU(ManaAtom.BLUE | ManaAtom.OR_2_LIFE, "P/U", "PU"),
PB(ManaAtom.BLACK | ManaAtom.OR_2_LIFE, "P/B", "PB"),
PR(ManaAtom.RED | ManaAtom.OR_2_LIFE, "P/R", "PR"),
PG(ManaAtom.GREEN | ManaAtom.OR_2_LIFE, "P/G", "PG"),
PBG(ManaAtom.BLACK | ManaAtom.GREEN | ManaAtom.OR_2_LIFE, "P/B/G", "PBG"),
PBR(ManaAtom.BLACK | ManaAtom.RED | ManaAtom.OR_2_LIFE, "P/B/R", "PBR"),
PGU(ManaAtom.GREEN | ManaAtom.BLUE | ManaAtom.OR_2_LIFE, "P/G/U", "PGU"),
PGW(ManaAtom.GREEN | ManaAtom.WHITE | ManaAtom.OR_2_LIFE, "P/G/W", "PGW"),
PRG(ManaAtom.RED | ManaAtom.GREEN | ManaAtom.OR_2_LIFE, "P/R/G", "PRG"),
PRW(ManaAtom.RED | ManaAtom.WHITE | ManaAtom.OR_2_LIFE, "P/R/W", "PRW"),
PUB(ManaAtom.BLUE | ManaAtom.BLACK | ManaAtom.OR_2_LIFE, "P/U/B", "PUB"),
PUR(ManaAtom.BLUE | ManaAtom.RED | ManaAtom.OR_2_LIFE, "P/U/R", "PUR"),
PWB(ManaAtom.WHITE | ManaAtom.BLACK | ManaAtom.OR_2_LIFE, "P/W/B", "PWB"),
PWU(ManaAtom.WHITE | ManaAtom.BLUE | ManaAtom.OR_2_LIFE, "P/W/U", "PWU"),
WP(ManaAtom.WHITE | ManaAtom.OR_2_LIFE, "W/P", "WP"),
UP(ManaAtom.BLUE | ManaAtom.OR_2_LIFE, "U/P", "UP"),
BP(ManaAtom.BLACK | ManaAtom.OR_2_LIFE, "B/P", "BP"),
RP(ManaAtom.RED | ManaAtom.OR_2_LIFE, "R/P", "RP"),
GP(ManaAtom.GREEN | ManaAtom.OR_2_LIFE, "G/P", "GP"),
BGP(ManaAtom.BLACK | ManaAtom.GREEN | ManaAtom.OR_2_LIFE, "B/G/P", "BGP"),
BRP(ManaAtom.BLACK | ManaAtom.RED | ManaAtom.OR_2_LIFE, "B/R/P", "BRP"),
GUP(ManaAtom.GREEN | ManaAtom.BLUE | ManaAtom.OR_2_LIFE, "G/U/P", "GUP"),
GWP(ManaAtom.GREEN | ManaAtom.WHITE | ManaAtom.OR_2_LIFE, "G/W/P", "GWP"),
RGP(ManaAtom.RED | ManaAtom.GREEN | ManaAtom.OR_2_LIFE, "R/G/P", "RGP"),
RWP(ManaAtom.RED | ManaAtom.WHITE | ManaAtom.OR_2_LIFE, "R/W/P", "RWP"),
UBP(ManaAtom.BLUE | ManaAtom.BLACK | ManaAtom.OR_2_LIFE, "U/B/P", "UBP"),
URP(ManaAtom.BLUE | ManaAtom.RED | ManaAtom.OR_2_LIFE, "U/R/P", "URP"),
WBP(ManaAtom.WHITE | ManaAtom.BLACK | ManaAtom.OR_2_LIFE, "W/B/P", "WBP"),
WUP(ManaAtom.WHITE | ManaAtom.BLUE | ManaAtom.OR_2_LIFE, "W/U/P", "WUP"),
X(ManaAtom.IS_X, "X"),

View File

@@ -79,6 +79,11 @@ public class CardFaceSymbols {
MANA_IMAGES.put("PU", FSkin.getImage(FSkinProp.IMG_MANA_PHRYX_U));
MANA_IMAGES.put("PB", FSkin.getImage(FSkinProp.IMG_MANA_PHRYX_B));
MANA_IMAGES.put("PG", FSkin.getImage(FSkinProp.IMG_MANA_PHRYX_G));
MANA_IMAGES.put("WP", FSkin.getImage(FSkinProp.IMG_MANA_PHRYX_W));
MANA_IMAGES.put("RP", FSkin.getImage(FSkinProp.IMG_MANA_PHRYX_R));
MANA_IMAGES.put("UP", FSkin.getImage(FSkinProp.IMG_MANA_PHRYX_U));
MANA_IMAGES.put("BP", FSkin.getImage(FSkinProp.IMG_MANA_PHRYX_B));
MANA_IMAGES.put("GP", FSkin.getImage(FSkinProp.IMG_MANA_PHRYX_G));
MANA_IMAGES.put("PBG", FSkin.getImage(FSkinProp.IMG_MANA_PHRYX_BG));
MANA_IMAGES.put("PBR", FSkin.getImage(FSkinProp.IMG_MANA_PHRYX_BR));
MANA_IMAGES.put("PGU", FSkin.getImage(FSkinProp.IMG_MANA_PHRYX_GU));
@@ -89,6 +94,16 @@ public class CardFaceSymbols {
MANA_IMAGES.put("PUR", FSkin.getImage(FSkinProp.IMG_MANA_PHRYX_UR));
MANA_IMAGES.put("PWB", FSkin.getImage(FSkinProp.IMG_MANA_PHRYX_WB));
MANA_IMAGES.put("PWU", FSkin.getImage(FSkinProp.IMG_MANA_PHRYX_WU));
MANA_IMAGES.put("BGP", FSkin.getImage(FSkinProp.IMG_MANA_PHRYX_BG));
MANA_IMAGES.put("BRP", FSkin.getImage(FSkinProp.IMG_MANA_PHRYX_BR));
MANA_IMAGES.put("GUP", FSkin.getImage(FSkinProp.IMG_MANA_PHRYX_GU));
MANA_IMAGES.put("GWP", FSkin.getImage(FSkinProp.IMG_MANA_PHRYX_GW));
MANA_IMAGES.put("RGP", FSkin.getImage(FSkinProp.IMG_MANA_PHRYX_RG));
MANA_IMAGES.put("RWP", FSkin.getImage(FSkinProp.IMG_MANA_PHRYX_RW));
MANA_IMAGES.put("UBP", FSkin.getImage(FSkinProp.IMG_MANA_PHRYX_UB));
MANA_IMAGES.put("URP", FSkin.getImage(FSkinProp.IMG_MANA_PHRYX_UR));
MANA_IMAGES.put("WBP", FSkin.getImage(FSkinProp.IMG_MANA_PHRYX_WB));
MANA_IMAGES.put("WUP", FSkin.getImage(FSkinProp.IMG_MANA_PHRYX_WU));
MANA_IMAGES.put("2W", FSkin.getImage(FSkinProp.IMG_MANA_2W));
MANA_IMAGES.put("2U", FSkin.getImage(FSkinProp.IMG_MANA_2U));
MANA_IMAGES.put("2R", FSkin.getImage(FSkinProp.IMG_MANA_2R));

View File

@@ -1452,6 +1452,16 @@ public class FSkin {
addEncodingSymbol("P/U/R", FSkinProp.IMG_MANA_PHRYX_UR);
addEncodingSymbol("P/W/B", FSkinProp.IMG_MANA_PHRYX_WB);
addEncodingSymbol("P/W/U", FSkinProp.IMG_MANA_PHRYX_WU);
addEncodingSymbol("B/G/P", FSkinProp.IMG_MANA_PHRYX_BG);
addEncodingSymbol("B/R/P", FSkinProp.IMG_MANA_PHRYX_BR);
addEncodingSymbol("G/U/P", FSkinProp.IMG_MANA_PHRYX_GU);
addEncodingSymbol("G/W/P", FSkinProp.IMG_MANA_PHRYX_GW);
addEncodingSymbol("R/G/P", FSkinProp.IMG_MANA_PHRYX_RG);
addEncodingSymbol("R/W/P", FSkinProp.IMG_MANA_PHRYX_RW);
addEncodingSymbol("U/B/P", FSkinProp.IMG_MANA_PHRYX_UB);
addEncodingSymbol("U/R/P", FSkinProp.IMG_MANA_PHRYX_UR);
addEncodingSymbol("W/B/P", FSkinProp.IMG_MANA_PHRYX_WB);
addEncodingSymbol("W/U/P", FSkinProp.IMG_MANA_PHRYX_WU);
for (int i = 0; i <= 20; i++) {
addEncodingSymbol(String.valueOf(i), FSkinProp.valueOf("IMG_MANA_" + i));
}

View File

@@ -61,6 +61,16 @@ public class TextRenderer {
Forge.getAssets().symbolLookup().put("P/U/R", FSkinImage.MANA_PHRYX_UR);
Forge.getAssets().symbolLookup().put("P/W/B", FSkinImage.MANA_PHRYX_WB);
Forge.getAssets().symbolLookup().put("P/W/U", FSkinImage.MANA_PHRYX_WU);
Forge.getAssets().symbolLookup().put("B/G/P", FSkinImage.MANA_PHRYX_BG);
Forge.getAssets().symbolLookup().put("B/R/P", FSkinImage.MANA_PHRYX_BR);
Forge.getAssets().symbolLookup().put("G/U/P", FSkinImage.MANA_PHRYX_GU);
Forge.getAssets().symbolLookup().put("G/W/P", FSkinImage.MANA_PHRYX_GW);
Forge.getAssets().symbolLookup().put("R/G/P", FSkinImage.MANA_PHRYX_RG);
Forge.getAssets().symbolLookup().put("R/W/P", FSkinImage.MANA_PHRYX_RW);
Forge.getAssets().symbolLookup().put("U/B/P", FSkinImage.MANA_PHRYX_UB);
Forge.getAssets().symbolLookup().put("U/R/P", FSkinImage.MANA_PHRYX_UR);
Forge.getAssets().symbolLookup().put("W/B/P", FSkinImage.MANA_PHRYX_WB);
Forge.getAssets().symbolLookup().put("W/U/P", FSkinImage.MANA_PHRYX_WU);
for (int i = 0; i <= 20; i++) {
Forge.getAssets().symbolLookup().put(String.valueOf(i), FSkinImage.valueOf("MANA_" + i));
}

View File

@@ -60,6 +60,11 @@ public class CardFaceSymbols {
Forge.getAssets().manaImages().put("PU", FSkinImage.MANA_PHRYX_U);
Forge.getAssets().manaImages().put("PB", FSkinImage.MANA_PHRYX_B);
Forge.getAssets().manaImages().put("PG", FSkinImage.MANA_PHRYX_G);
Forge.getAssets().manaImages().put("WP", FSkinImage.MANA_PHRYX_W);
Forge.getAssets().manaImages().put("RP", FSkinImage.MANA_PHRYX_R);
Forge.getAssets().manaImages().put("UP", FSkinImage.MANA_PHRYX_U);
Forge.getAssets().manaImages().put("BP", FSkinImage.MANA_PHRYX_B);
Forge.getAssets().manaImages().put("GP", FSkinImage.MANA_PHRYX_G);
Forge.getAssets().manaImages().put("PBG", FSkinImage.MANA_PHRYX_BG);
Forge.getAssets().manaImages().put("PBR", FSkinImage.MANA_PHRYX_BR);
Forge.getAssets().manaImages().put("PGU", FSkinImage.MANA_PHRYX_GU);
@@ -70,6 +75,16 @@ public class CardFaceSymbols {
Forge.getAssets().manaImages().put("PUR", FSkinImage.MANA_PHRYX_UR);
Forge.getAssets().manaImages().put("PWB", FSkinImage.MANA_PHRYX_WB);
Forge.getAssets().manaImages().put("PWU", FSkinImage.MANA_PHRYX_WU);
Forge.getAssets().manaImages().put("BGP", FSkinImage.MANA_PHRYX_BG);
Forge.getAssets().manaImages().put("BRP", FSkinImage.MANA_PHRYX_BR);
Forge.getAssets().manaImages().put("GUP", FSkinImage.MANA_PHRYX_GU);
Forge.getAssets().manaImages().put("GWP", FSkinImage.MANA_PHRYX_GW);
Forge.getAssets().manaImages().put("RGP", FSkinImage.MANA_PHRYX_RG);
Forge.getAssets().manaImages().put("RWP", FSkinImage.MANA_PHRYX_RW);
Forge.getAssets().manaImages().put("UBP", FSkinImage.MANA_PHRYX_UB);
Forge.getAssets().manaImages().put("URP", FSkinImage.MANA_PHRYX_UR);
Forge.getAssets().manaImages().put("WBP", FSkinImage.MANA_PHRYX_WB);
Forge.getAssets().manaImages().put("WUP", FSkinImage.MANA_PHRYX_WU);
Forge.getAssets().manaImages().put("2W", FSkinImage.MANA_2W);
Forge.getAssets().manaImages().put("2U", FSkinImage.MANA_2U);
Forge.getAssets().manaImages().put("2R", FSkinImage.MANA_2R);

View File

@@ -1,5 +1,5 @@
Name:Act of Aggression
ManaCost:3 PR PR
ManaCost:3 RP RP
Types:Instant
A:SP$ GainControl | Cost$ 3 PR PR | ValidTgts$ Creature.OppCtrl | TgtPrompt$ Select target creature an opponent controls. | LoseControl$ EOT | Untap$ True | AddKWs$ Haste | SpellDescription$ Gain control of target creature an opponent controls until end of turn. Untap that creature. It gains haste until end of turn.
A:SP$ GainControl | Cost$ 3 RP RP | ValidTgts$ Creature.OppCtrl | TgtPrompt$ Select target creature an opponent controls. | LoseControl$ EOT | Untap$ True | AddKWs$ Haste | SpellDescription$ Gain control of target creature an opponent controls until end of turn. Untap that creature. It gains haste until end of turn.
Oracle:({R/P} can be paid with either {R} or 2 life.)\nGain control of target creature an opponent controls until end of turn. Untap that creature. It gains haste until end of turn.

View File

@@ -1,5 +1,5 @@
Name:Ajani, Sleeper Agent
ManaCost:1 G PGW W
ManaCost:1 G GWP W
Types:Legendary Planeswalker Ajani
Loyalty:4
K:Compleated
@@ -13,4 +13,4 @@ SVar:TrigSpellCast:Mode$ SpellCast | ValidCard$ Creature,Planeswalker | ValidAct
SVar:EffSpellCast:DB$ Poison | ValidTgts$ Opponent | Num$ 2
SVar:BuffedBy:Creature,Planeswalker
DeckHints:Type$Creature|Planeswalker
Oracle:Compleated ({PGW} can be paid with {G}, {W}, or 2 life. If life was paid, this planeswalker enters with two fewer loyalty counters.)\n[+1]: Reveal the top card of your library. If it's a creature or planeswalker card, put it into your hand. Otherwise, you may put it on the bottom of your library.\n[-3]: Distribute three +1/+1 counters among up to three target creatures. They gain vigilance until end of turn.\n[-6]: You get an emblem with "Whenever you cast a creature or planeswalker spell, target opponent gets two poison counters."
Oracle:Compleated ({G/W/P} can be paid with {G}, {W}, or 2 life. If life was paid, this planeswalker enters with two fewer loyalty counters.)\n[+1]: Reveal the top card of your library. If it's a creature or planeswalker card, put it into your hand. Otherwise, you may put it on the bottom of your library.\n[-3]: Distribute three +1/+1 counters among up to three target creatures. They gain vigilance until end of turn.\n[-6]: You get an emblem with "Whenever you cast a creature or planeswalker spell, target opponent gets two poison counters."

View File

@@ -1,5 +1,5 @@
Name:Apostle's Blessing
ManaCost:1 PW
ManaCost:1 WP
Types:Instant
A:SP$ Protection | Cost$ 1 PW | ValidTgts$ Creature.YouCtrl,Artifact.YouCtrl | TgtPrompt$ Select target artifact or creature you control | Gains$ Choice | Choices$ AnyColor,artifacts | SpellDescription$ Target artifact or creature you control gains protection from artifacts or from the color of your choice until end of turn.
A:SP$ Protection | Cost$ 1 WP | ValidTgts$ Creature.YouCtrl,Artifact.YouCtrl | TgtPrompt$ Select target artifact or creature you control | Gains$ Choice | Choices$ AnyColor,artifacts | SpellDescription$ Target artifact or creature you control gains protection from artifacts or from the color of your choice until end of turn.
Oracle:({W/P} can be paid with either {W} or 2 life.)\nTarget artifact or creature you control gains protection from artifacts or from the color of your choice until end of turn.

View File

@@ -1,7 +1,7 @@
Name:Birthing Pod
ManaCost:3 PG
ManaCost:3 GP
Types:Artifact
A:AB$ ChangeZone | Cost$ 1 PG T Sac<1/Creature> | Origin$ Library | Destination$ Battlefield | ChangeType$ Creature.cmcEQX | ChangeNum$ 1 | SorcerySpeed$ True | AILogic$ SacAndUpgrade | StackDescription$ Search your library for a creature card with mana value equal to 1 plus the sacrificed creature's mana value, put that card onto the battlefield, then shuffle. | SpellDescription$ Search your library for a creature card with mana value equal to 1 plus the sacrificed creature's mana value, put that card onto the battlefield, then shuffle. Activate only as a sorcery.
A:AB$ ChangeZone | Cost$ 1 GP T Sac<1/Creature> | Origin$ Library | Destination$ Battlefield | ChangeType$ Creature.cmcEQX | ChangeNum$ 1 | SorcerySpeed$ True | AILogic$ SacAndUpgrade | StackDescription$ Search your library for a creature card with mana value equal to 1 plus the sacrificed creature's mana value, put that card onto the battlefield, then shuffle. | SpellDescription$ Search your library for a creature card with mana value equal to 1 plus the sacrificed creature's mana value, put that card onto the battlefield, then shuffle. Activate only as a sorcery.
SVar:X:Sacrificed$CardManaCost/Plus.1
# AI Preference is needed to make the AI consider the ability. Further constraints are defined by AILogic SacAndUpgrade.
SVar:AIPreference:SacCost$Creature

View File

@@ -2,7 +2,7 @@ Name:Blinding Souleater
ManaCost:3
Types:Artifact Creature Phyrexian Cleric
PT:1/3
A:AB$ Tap | Cost$ PW T | ValidTgts$ Creature | TgtPrompt$ Select target creature | AIPhyrexianPayment$ Never | SpellDescription$ Tap target creature.
A:AB$ Tap | Cost$ WP T | ValidTgts$ Creature | TgtPrompt$ Select target creature | AIPhyrexianPayment$ Never | SpellDescription$ Tap target creature.
AI:RemoveDeck:Random
DeckNeeds:Color$White
SVar:NonCombatPriority:1

View File

@@ -1,5 +1,5 @@
Name:Cathedral Membrane
ManaCost:1 PW
ManaCost:1 WP
Types:Artifact Creature Phyrexian Wall
PT:0/3
K:Defender

View File

@@ -1,6 +1,6 @@
Name:Corrosive Gale
ManaCost:X PG
ManaCost:X GP
Types:Sorcery
A:SP$ DamageAll | Cost$ X PG | ValidCards$ Creature.withFlying | ValidDescription$ each creature with flying. | NumDmg$ X | SpellDescription$ CARDNAME deals X damage to each creature with flying.
A:SP$ DamageAll | Cost$ X GP | ValidCards$ Creature.withFlying | ValidDescription$ each creature with flying. | NumDmg$ X | SpellDescription$ CARDNAME deals X damage to each creature with flying.
SVar:X:Count$xPaid
Oracle:({G/P} can be paid with either {G} or 2 life.)\nCorrosive Gale deals X damage to each creature with flying.

View File

@@ -1,5 +1,5 @@
Name:Dismember
ManaCost:1 PB PB
ManaCost:1 BP BP
Types:Instant
A:SP$ Pump | Cost$ 1 PB PB | IsCurse$ True | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ -5 | NumDef$ -5 | SpellDescription$ Target creature gets -5/-5 until end of turn.
A:SP$ Pump | Cost$ 1 BP BP | IsCurse$ True | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ -5 | NumDef$ -5 | SpellDescription$ Target creature gets -5/-5 until end of turn.
Oracle:({B/P} can be paid with either {B} or 2 life.)\nTarget creature gets -5/-5 until end of turn.

View File

@@ -1,7 +1,7 @@
Name:Gitaxian Probe
ManaCost:PU
ManaCost:UP
Types:Sorcery
A:SP$ RevealHand | Cost$ PU | ValidTgts$ Player | TgtPrompt$ Select target player | Look$ True | SubAbility$ DBDraw | AIPhyrexianPayment$ Never | SpellDescription$ Look at target player's hand.
A:SP$ RevealHand | Cost$ UP | ValidTgts$ Player | TgtPrompt$ Select target player | Look$ True | SubAbility$ DBDraw | AIPhyrexianPayment$ Never | SpellDescription$ Look at target player's hand.
SVar:DBDraw:DB$ Draw | NumCards$ 1 | SpellDescription$ Draw a card.
AI:RemoveDeck:All
Oracle:({U/P} can be paid with either {U} or 2 life.)\nLook at target player's hand.\nDraw a card.

View File

@@ -1,5 +1,5 @@
Name:Gut Shot
ManaCost:PR
ManaCost:RP
Types:Instant
A:SP$ DealDamage | Cost$ PR | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | AIPhyrexianPayment$ OnFatalDamage.1 | SpellDescription$ CARDNAME deals 1 damage to any target.
A:SP$ DealDamage | Cost$ RP | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | AIPhyrexianPayment$ OnFatalDamage.1 | SpellDescription$ CARDNAME deals 1 damage to any target.
Oracle:({R/P} can be paid with either {R} or 2 life.)\nGut Shot deals 1 damage to any target.

View File

@@ -2,7 +2,7 @@ Name:Hex Parasite
ManaCost:1
Types:Artifact Creature Phyrexian Insect
PT:1/1
A:AB$ RemoveCounter | Cost$ X PB | ValidTgts$ Permanent | TgtPrompt$ Select target permanent | CounterType$ Any | CounterNum$ X | RememberRemoved$ True | SubAbility$ DBPump | SpellDescription$ Remove up to X counters from target permanent. For each counter removed this way, CARDNAME gets +1/+0 until end of turn.
A:AB$ RemoveCounter | Cost$ X BP | ValidTgts$ Permanent | TgtPrompt$ Select target permanent | CounterType$ Any | CounterNum$ X | RememberRemoved$ True | SubAbility$ DBPump | SpellDescription$ Remove up to X counters from target permanent. For each counter removed this way, CARDNAME gets +1/+0 until end of turn.
SVar:DBPump:DB$ Pump | NumAtt$ +Y | Defined$ Self | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
SVar:X:Count$xPaid

View File

@@ -2,6 +2,6 @@ Name:Immolating Souleater
ManaCost:2
Types:Artifact Creature Phyrexian Dog
PT:1/1
A:AB$ Pump | Cost$ PR | Defined$ Self | NumAtt$ 1 | SpellDescription$ CARDNAME gets +1/+0 until end of turn.
A:AB$ Pump | Cost$ RP | Defined$ Self | NumAtt$ 1 | SpellDescription$ CARDNAME gets +1/+0 until end of turn.
DeckNeeds:Color$Red
Oracle:{R/P}: Immolating Souleater gets +1/+0 until end of turn. ({R/P} can be paid with either {R} or 2 life.)

View File

@@ -2,5 +2,5 @@ Name:Insatiable Souleater
ManaCost:4
Types:Artifact Creature Phyrexian Beast
PT:5/1
A:AB$ Pump | Cost$ PG | Defined$ Self | KW$ Trample | SpellDescription$ CARDNAME gains trample until end of turn.
A:AB$ Pump | Cost$ GP | Defined$ Self | KW$ Trample | SpellDescription$ CARDNAME gains trample until end of turn.
Oracle:{G/P}: Insatiable Souleater gains trample until end of turn. ({G/P} can be paid with either {G} or 2 life.)

View File

@@ -1,5 +1,5 @@
Name:K'rrik, Son of Yawgmoth
ManaCost:4 B/P B/P B/P
ManaCost:4 BP BP BP
Types:Legendary Creature Phyrexian Horror Minion
PT:2/2
K:Lifelink

View File

@@ -2,7 +2,7 @@ Name:Lashwrithe
ManaCost:4
Types:Artifact Equipment
K:Living Weapon
K:Equip:PB PB
K:Equip:BP BP
S:Mode$ Continuous | Affected$ Card.EquippedBy | AddPower$ X | AddToughness$ X | Description$ Equipped creature gets +1/+1 for each Swamp you control.
SVar:X:Count$Valid Swamp.YouCtrl
SVar:BuffedBy:Swamp

View File

@@ -1,5 +1,5 @@
Name:Marrow Shards
ManaCost:PW
ManaCost:WP
Types:Instant
A:SP$ DamageAll | Cost$ PW | ValidCards$ Creature.attacking | ValidDescription$ each attacking creature. | NumDmg$ 1 | AIPhyrexianPayment$ Never | SpellDescription$ CARDNAME deals 1 damage to each attacking creature.
A:SP$ DamageAll | Cost$ WP | ValidCards$ Creature.attacking | ValidDescription$ each attacking creature. | NumDmg$ 1 | AIPhyrexianPayment$ Never | SpellDescription$ CARDNAME deals 1 damage to each attacking creature.
Oracle:({W/P} can be paid with either {W} or 2 life.)\nMarrow Shards deals 1 damage to each attacking creature.

View File

@@ -1,5 +1,5 @@
Name:Mental Misstep
ManaCost:PU
ManaCost:UP
Types:Instant
A:SP$ Counter | Cost$ PU | TargetType$ Spell | TgtPrompt$ Select target spell with mana value 1 | ValidTgts$ Card.cmcEQ1 | AIPhyrexianPayment$ Never | SpellDescription$ Counter target spell with mana value 1.
A:SP$ Counter | Cost$ UP | TargetType$ Spell | TgtPrompt$ Select target spell with mana value 1 | ValidTgts$ Card.cmcEQ1 | AIPhyrexianPayment$ Never | SpellDescription$ Counter target spell with mana value 1.
Oracle:({U/P} can be paid with either {U} or 2 life.)\nCounter target spell with mana value 1.

View File

@@ -1,7 +1,7 @@
Name:Moltensteel Dragon
ManaCost:4 PR PR
ManaCost:4 RP RP
Types:Artifact Creature Phyrexian Dragon
PT:4/4
K:Flying
A:AB$ Pump | Cost$ PR | Defined$ Self | NumAtt$ 1 | SpellDescription$ CARDNAME gets +1/+0 until end of turn.
A:AB$ Pump | Cost$ RP | Defined$ Self | NumAtt$ 1 | SpellDescription$ CARDNAME gets +1/+0 until end of turn.
Oracle:({R/P} can be paid with either {R} or 2 life.)\nFlying\n{R/P}: Moltensteel Dragon gets +1/+0 until end of turn.

View File

@@ -1,5 +1,5 @@
Name:Mutagenic Growth
ManaCost:PG
ManaCost:GP
Types:Instant
A:SP$ Pump | Cost$ PG | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ 2 | NumDef$ 2 | SpellDescription$ Target creature gets +2/+2 until end of turn.
A:SP$ Pump | Cost$ GP | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ 2 | NumDef$ 2 | SpellDescription$ Target creature gets +2/+2 until end of turn.
Oracle:({G/P} can be paid with either {G} or 2 life.)\nTarget creature gets +2/+2 until end of turn.

View File

@@ -1,5 +1,5 @@
Name:Norn's Annex
ManaCost:3 PW PW
ManaCost:3 WP WP
Types:Artifact
S:Mode$ CantAttackUnless | ValidCard$ Creature | Target$ You,Planeswalker.YouCtrl | Cost$ PW | Description$ Creatures can't attack you or planeswalkers you control unless their controller pays PW for each of those creatures.
S:Mode$ CantAttackUnless | ValidCard$ Creature | Target$ You,Planeswalker.YouCtrl | Cost$ WP | Description$ Creatures can't attack you or planeswalkers you control unless their controller pays WP for each of those creatures.
Oracle:({W/P} can be paid with either {W} or 2 life.)\nCreatures can't attack you or planeswalkers you control unless their controller pays {W/P} for each of those creatures.

View File

@@ -1,5 +1,5 @@
Name:Noxious Revival
ManaCost:PG
ManaCost:GP
Types:Instant
A:SP$ ChangeZone | Cost$ PG | Origin$ Graveyard | Destination$ Library | LibraryPosition$ 0 | ValidTgts$ Card | AITgts$ Card.YouOwn | TgtPrompt$ Select target card from a graveyard | SpellDescription$ Put target card from a graveyard on top of its owner's library.
A:SP$ ChangeZone | Cost$ GP | Origin$ Graveyard | Destination$ Library | LibraryPosition$ 0 | ValidTgts$ Card | AITgts$ Card.YouOwn | TgtPrompt$ Select target card from a graveyard | SpellDescription$ Put target card from a graveyard on top of its owner's library.
Oracle:({G/P} can be paid with either {G} or 2 life.)\nPut target card from a graveyard on top of its owner's library.

View File

@@ -2,5 +2,5 @@ Name:Pestilent Souleater
ManaCost:5
Types:Artifact Creature Phyrexian Insect
PT:3/3
A:AB$ Pump | Cost$ PB | Defined$ Self | KW$ Infect | SpellDescription$ CARDNAME gains infect until end of turn.
A:AB$ Pump | Cost$ BP | Defined$ Self | KW$ Infect | SpellDescription$ CARDNAME gains infect until end of turn.
Oracle:{B/P}: Pestilent Souleater gains infect until end of turn. ({B/P} can be paid with either {B} or 2 life. A creature with infect deals damage to creatures in the form of -1/-1 counters and to players in the form of poison counters.)

View File

@@ -1,5 +1,5 @@
Name:Phyrexian Metamorph
ManaCost:3 PU
ManaCost:3 UP
Types:Artifact Creature Phyrexian Shapeshifter
PT:0/0
K:ETBReplacement:Copy:DBCopy:Optional

View File

@@ -1,5 +1,5 @@
Name:Pith Driller
ManaCost:4 PB
ManaCost:4 BP
Types:Artifact Creature Phyrexian Horror
PT:2/4
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigPutCounter | TriggerDescription$ When CARDNAME enters the battlefield, put a -1/-1 counter on target creature.

View File

@@ -1,5 +1,5 @@
Name:Porcelain Legionnaire
ManaCost:2 PW
ManaCost:2 WP
Types:Artifact Creature Phyrexian Soldier
PT:3/1
K:First Strike

View File

@@ -1,7 +1,7 @@
Name:Postmortem Lunge
ManaCost:X PB
ManaCost:X BP
Types:Sorcery
A:SP$ ChangeZone | Cost$ X PB | Origin$ Graveyard | Destination$ Battlefield | ValidTgts$ Creature.YouOwn+cmcEQX | TgtPrompt$ Choose target creature with mana value equal to X. | SubAbility$ DBHaste | AILogic$ BeforeCombat | SpellDescription$ Return target creature card with mana value X from your graveyard to the battlefield. It gains haste. Exile it at the beginning of the next end step.
A:SP$ ChangeZone | Cost$ X BP | Origin$ Graveyard | Destination$ Battlefield | ValidTgts$ Creature.YouOwn+cmcEQX | TgtPrompt$ Choose target creature with mana value equal to X. | SubAbility$ DBHaste | AILogic$ BeforeCombat | SpellDescription$ Return target creature card with mana value X from your graveyard to the battlefield. It gains haste. Exile it at the beginning of the next end step.
SVar:DBHaste:DB$ Animate | Defined$ Targeted | Keywords$ Haste | Duration$ Permanent | AtEOT$ Exile
SVar:X:Count$xPaid
AI:RemoveDeck:All

View File

@@ -1,5 +1,5 @@
Name:Rage Extractor
ManaCost:4 PR
ManaCost:4 RP
Types:Artifact
T:Mode$ SpellCast | ValidCard$ Card.CostsPhyrexianMana | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDealDamage | TriggerDescription$ Whenever you cast a spell with {P} in its mana cost, CARDNAME deals damage equal to that spell's mana value to any target.
SVar:TrigDealDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X

View File

@@ -1,5 +1,5 @@
Name:Ruthless Invasion
ManaCost:3 PR
ManaCost:3 RP
Types:Sorcery
A:SP$ Effect | StaticAbilities$ KWPump | AILogic$ Evasion | SpellDescription$ Nonartifact creatures can't block this turn.
SVar:KWPump:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Battlefield | Affected$ Creature.nonArtifact | AddHiddenKeyword$ CARDNAME can't block. | Description$ Nonartifact creatures can't block this turn.

View File

@@ -1,5 +1,5 @@
Name:Slash Panther
ManaCost:4 PR
ManaCost:4 RP
Types:Artifact Creature Phyrexian Cat
PT:4/2
K:Haste

View File

@@ -2,5 +2,5 @@ Name:Spellskite
ManaCost:2
Types:Artifact Creature Phyrexian Horror
PT:0/4
A:AB$ ChangeTargets | Cost$ PU | TargetType$ Spell,Activated,Triggered | ValidTgts$ Card,Emblem | DefinedMagnet$ Self | ChangeSingleTarget$ True | SpellDescription$ Change a target of target spell or ability to CARDNAME.
A:AB$ ChangeTargets | Cost$ UP | TargetType$ Spell,Activated,Triggered | ValidTgts$ Card,Emblem | DefinedMagnet$ Self | ChangeSingleTarget$ True | SpellDescription$ Change a target of target spell or ability to CARDNAME.
Oracle:{U/P}: Change a target of target spell or ability to Spellskite. ({U/P} can be paid with either {U} or 2 life.)

View File

@@ -1,5 +1,5 @@
Name:Spined Thopter
ManaCost:2 PU
ManaCost:2 UP
Types:Artifact Creature Phyrexian Thopter
PT:2/1
K:Flying

View File

@@ -1,7 +1,7 @@
Name:Surgical Extraction
ManaCost:PB
ManaCost:BP
Types:Instant
A:SP$ Pump | Cost$ PB | ValidTgts$ Card.nonBasic | TgtZone$ Graveyard | TgtPrompt$ Choose target card in a graveyard | RememberObjects$ Targeted | SubAbility$ ExileYard | SpellDescription$ Choose target card in a graveyard other than a basic land card. Search its owner's graveyard, hand, and library for any number of cards with the same name as that card and exile them. Then that player shuffles.
A:SP$ Pump | Cost$ BP | ValidTgts$ Card.nonBasic | TgtZone$ Graveyard | TgtPrompt$ Choose target card in a graveyard | RememberObjects$ Targeted | SubAbility$ ExileYard | SpellDescription$ Choose target card in a graveyard other than a basic land card. Search its owner's graveyard, hand, and library for any number of cards with the same name as that card and exile them. Then that player shuffles.
SVar:ExileYard:DB$ ChangeZone | ChangeType$ Remembered.sameName | Origin$ Graveyard | DefinedPlayer$ TargetedController | Chooser$ You | Destination$ Exile | ChangeNum$ NumInYard | Hidden$ True | SubAbility$ ExileHand | StackDescription$ Search target opponent's graveyard, hand, and library for any number of cards with that name and exile them. Then that player shuffles their library.
SVar:ExileHand:DB$ ChangeZone | Origin$ Hand | Destination$ Exile | DefinedPlayer$ TargetedController | ChangeType$ Remembered.sameName | ChangeNum$ NumInHand | Chooser$ You | SubAbility$ ExileLib | StackDescription$ None
SVar:ExileLib:DB$ ChangeZone | Origin$ Library | Destination$ Exile | DefinedPlayer$ TargetedController | ChangeType$ Remembered.sameName | ChangeNum$ NumInLib | Chooser$ You | Shuffle$ True | StackDescription$ None | SubAbility$ DBCleanup

View File

@@ -1,5 +1,5 @@
Name:Tamiyo, Compleated Sage
ManaCost:2 G PGU U
ManaCost:2 G GUP U
Types:Legendary Planeswalker Tamiyo
Loyalty:5
K:Compleated
@@ -10,4 +10,4 @@ SVar:DBCopy:DB$ CopyPermanent | Defined$ Targeted | SpellDescription$ Create a t
SVar:X:Count$xPaid
A:AB$ Token | Cost$ SubCounter<7/LOYALTY> | Planeswalker$ True | Ultimate$ True | TokenScript$ tamiyos_notebook | SpellDescription$ Create Tamiyo's Notebook, a legendary colorless artifact token with "Spells you cast cost {2} less to cast" and "{T}: Draw a card."
DeckHas:Ability$Token & Type$Artifact
Oracle:Compleated ({PGU} can be paid with {G}, {U}, or 2 life. If life was paid, this planeswalker enters with two fewer loyalty counters.)\n[+1]: Tap up to one target artifact or creature. It doesn't untap during its controller's next untap step.\n[X]: Exile target nonland permanent card with mana value X from your graveyard. Create a token that's a copy of that card.\n[7]: Create Tamiyo's Notebook, a legendary colorless artifact token with "Spells you cast cost {2} less to cast" and "{T}: Draw a card."
Oracle:Compleated ({G/U/P} can be paid with {G}, {U}, or 2 life. If life was paid, this planeswalker enters with two fewer loyalty counters.)\n[+1]: Tap up to one target artifact or creature. It doesn't untap during its controller's next untap step.\n[X]: Exile target nonland permanent card with mana value X from your graveyard. Create a token that's a copy of that card.\n[7]: Create Tamiyo's Notebook, a legendary colorless artifact token with "Spells you cast cost {2} less to cast" and "{T}: Draw a card."

View File

@@ -1,7 +1,7 @@
Name:Tezzeret's Gambit
ManaCost:3 PU
ManaCost:3 UP
Types:Sorcery
A:SP$ Draw | Cost$ 3 PU | Defined$ You | NumCards$ 2 | SubAbility$ DBProlif | SpellDescription$ Draw two cards, then proliferate.
A:SP$ Draw | Cost$ 3 UP | Defined$ You | NumCards$ 2 | SubAbility$ DBProlif | SpellDescription$ Draw two cards, then proliferate.
SVar:DBProlif:DB$ Proliferate
DeckHas:Ability$Proliferate
DeckNeeds:Ability$Counters

View File

@@ -1,5 +1,5 @@
Name:Thundering Tanadon
ManaCost:4 PG PG
ManaCost:4 GP GP
Types:Artifact Creature Phyrexian Beast
PT:5/4
K:Trample

View File

@@ -2,6 +2,6 @@ Name:Trespassing Souleater
ManaCost:3
Types:Artifact Creature Phyrexian Construct
PT:2/2
A:AB$ Effect | Cost$ PU | RememberObjects$ Self | ExileOnMoved$ Battlefield | StaticAbilities$ Unblockable | SpellDescription$ CARDNAME can't be blocked this turn.
A:AB$ Effect | Cost$ UP | RememberObjects$ Self | ExileOnMoved$ Battlefield | StaticAbilities$ Unblockable | SpellDescription$ CARDNAME can't be blocked this turn.
SVar:Unblockable:Mode$ CantBlockBy | ValidAttacker$ Card.IsRemembered | Description$ EFFECTSOURCE can't be blocked this turn.
Oracle:{U/P}: Trespassing Souleater can't be blocked this turn. ({U/P} can be paid with either {U} or 2 life.)

View File

@@ -1,5 +1,5 @@
Name:Jace, the Perfected Mind
ManaCost:2 PU U
ManaCost:2 UP U
Types:Legendary Planeswalker Jace
Loyalty:5
K:Compleated

View File

@@ -1,5 +1,5 @@
Name:Nahiri, the Unforgiving
ManaCost:1 R RW W
ManaCost:1 R RWP W
Types:Legendary Planeswalker Nahiri
Loyalty:5
K:Compleated
@@ -12,4 +12,4 @@ SVar:DBCopy:DB$ CopyPermanent | Defined$ Remembered | PumpKeywords$ Haste | AtEO
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
DeckHas:Ability$Discard|Token
SVar:X:Count$CardCounters.LOYALTY
Oracle:Compleated ({R/W} can be paid with {R}, {W}, or 2 life. If life was paid, this planeswalker enters with two fewer loyalty counters.)\n[+1]: Until your next turn, up to one target creature attacks a player each combat if able.\n[+1]: Discard a card, then draw a card.\n[+0]:Exile target creature or Equipment card with mana value less than Nahiri's loyalty from your graveyard. Create a token that's a copy of it. That token gains haste. Exile it at the beginning of the next end step.
Oracle:Compleated ({R/W/P} can be paid with {R}, {W}, or 2 life. If life was paid, this planeswalker enters with two fewer loyalty counters.)\n[+1]: Until your next turn, up to one target creature attacks a player each combat if able.\n[+1]: Discard a card, then draw a card.\n[+0]:Exile target creature or Equipment card with mana value less than Nahiri's loyalty from your graveyard. Create a token that's a copy of it. That token gains haste. Exile it at the beginning of the next end step.

View File

@@ -1,5 +1,5 @@
Name:Nissa, Ascended Animist
ManaCost:3 G G PG PG
ManaCost:3 G G GP GP
Types:Legendary Planeswalker Nissa
Loyalty:7
K:Compleated

View File

@@ -4,9 +4,9 @@ Types:Legendary Artifact Creature Phyrexian Mite
PT:1/1
K:Toxic:1
S:Mode$ CantBlockBy | ValidBlocker$ Creature.Self | Description$ CARDNAME can't block.
A:AB$ ChooseColor | Cost$ PW T | Defined$ You | AILogic$ MostProminentInHumanDeck | SubAbility$ DBPump | SpellDescription$ Choose a color. Another target creature you control gains toxic 1 and hexproof from that color until end of turn.
A:AB$ ChooseColor | Cost$ WP T | Defined$ You | AILogic$ MostProminentInHumanDeck | SubAbility$ DBPump | SpellDescription$ Choose a color. Another target creature you control gains toxic 1 and hexproof from that color until end of turn.
SVar:DBPump:DB$ Pump | Defined$ Targeted | ValidTgts$ Creature.YouCtrl+Other | TgtPrompt$ Select another target creature you control | KW$ Hexproof:Card.ChosenColor:chosen & Toxic:1 | StackDescription$ {c:Targeted} gains toxic 1 and hexproof from that color until end of turn. | DefinedKW$ ChosenColor | SubAbility$ DBEffect
SVar:DBEffect:DB$ Effect | RememberObjects$ Targeted | StaticAbilities$ CantBlockBy | SubAbility$ DBCleanup | SpellDescription$ It can't be blocked by creatures of that color this turn.
SVar:DBCleanup:DB$ Cleanup | ClearChosenColor$ True
SVar:CantBlockBy:Mode$ CantBlockBy | ValidAttacker$ Creature.IsRemembered | ValidBlocker$ Creature.ChosenColor | Description$ This creature can't be blocked by creatures of the chosen color this turn.
Oracle:Toxic 1\nSkrelv, Defector Mite can't block.\n{PW}, {T}: Choose a color. Another target creature you control gains toxic 1 and hexproof from that color until end of turn. It can't be blocked by creatures of that color this turn. ({PW} may be paid for with either {W} or 2 life.)
Oracle:Toxic 1\nSkrelv, Defector Mite can't block.\n{W/P}, {T}: Choose a color. Another target creature you control gains toxic 1 and hexproof from that color until end of turn. It can't be blocked by creatures of that color this turn. ({W/P} may be paid for with either {W} or 2 life.)

View File

@@ -5,6 +5,6 @@ PT:5/4
R:Event$ DamageDone | ActiveZones$ Battlefield | ValidSource$ Card.YouCtrl,Emblem.YouCtrl | ValidTarget$ Permanent.OppCtrl,Opponent | IsCombat$ False | ReplaceWith$ DmgTwice | Description$ If a source you control would deal noncombat damage to an opponent or a permanent an opponent controls, it deals double that damage to that player or permanent instead.
SVar:DmgTwice:DB$ ReplaceEffect | VarName$ DamageAmount | VarValue$ X
SVar:X:ReplaceCount$DamageAmount/Twice
A:AB$ PutCounter | Cost$ 1 RP RP Discard<2/Card> | Defined$ Self | CounterType$ Indestructible | CounterNum$ 1 | SpellDescription$ Put an indestructible counter on CARDNAME. ({PR} can be paid with either {R} or 2 life.)
A:AB$ PutCounter | Cost$ 1 RP RP Discard<2/Card> | Defined$ Self | CounterType$ Indestructible | CounterNum$ 1 | SpellDescription$ Put an indestructible counter on CARDNAME. ({R/P} can be paid with either {R} or 2 life.)
DeckHas:Ability$Discard|Counters
Oracle:If a source you control would deal noncombat damage to an opponent or a permanent an opponent controls, it deals double that damage to that player or permanent instead.\n{1}{RP}{RP}, Discard two cards: Put an indestructible counter on Solphim, Mayhem Dominus. ({R/P} can be paid with either {R} or 2 life.)
Oracle:If a source you control would deal noncombat damage to an opponent or a permanent an opponent controls, it deals double that damage to that player or permanent instead.\n{1}{R/P}{R/P}, Discard two cards: Put an indestructible counter on Solphim, Mayhem Dominus. ({R/P} can be paid with either {R} or 2 life.)

View File

@@ -1,5 +1,5 @@
Name:Synthesis Pod
ManaCost:3 PU
ManaCost:3 UP
Types:Artifact
A:AB$ DigUntil | Cost$ 1 UP T ExileFromStack<1/Card.YouCtrl/spell you control> | ValidTgts$ Opponent | Valid$ Card.cmcEQX | FoundDestination$ Exile | RevealedDestination$ Library | ImprintFound$ True | Shuffle$ True | SubAbility$ DBPlay | SpellDescription$ Target opponent reveals cards from the top of their library until they reveal a card with mana value equal to 1 plus the exiled spell's mana value. Exile that card, then that player shuffles. You may cast that exiled card without paying its mana cost.
SVar:DBPlay:DB$ Play | Defined$ Imprinted | WithoutManaCost$ True | Optional$ True | SubAbility$ DBCleanup

View File

@@ -7,7 +7,7 @@ SVar:LootTrig:Mode$ Taps | ValidCard$ Card.Self | Execute$ TrigDraw | TriggerDes
SVar:TrigDraw:DB$ Draw | SubAbility$ DBDiscard
SVar:DBDiscard:DB$ Discard | Mode$ TgtChoose
S:Mode$ Continuous | Affected$ Creature.Artifact+Other+YouCtrl | AddPower$ 1 | AddToughness$ 1 | Description$ Other artifact creatures you control get +1/+1.
A:AB$ Animate | Cost$ PU | ValidTgts$ Creature.YouCtrl | Colors$ Blue | Types$ Artifact | SorcerySpeed$ True | SpellDescription$ Until end of turn, target creature you control becomes a blue artifact in addition to its other colors and types. Activate only as a sorcery. ({PU} can be paid with either {U} or 2 life.)
A:AB$ Animate | Cost$ UP | ValidTgts$ Creature.YouCtrl | Colors$ Blue | Types$ Artifact | SorcerySpeed$ True | SpellDescription$ Until end of turn, target creature you control becomes a blue artifact in addition to its other colors and types. Activate only as a sorcery. ({U/P} can be paid with either {U} or 2 life.)
DeckHints:Type$Artifact
DeckHas:Ability$Discard
Oracle:Other blue creatures you control have "Whenever this creature becomes tapped, draw a card, then discard a card."\nOther artifact creatures you control get + 1/+1.\n{P/U}: Until end of turn, target creature you control becomes a blue artifact in addition to its other colors and types. Activate only as a sorcery. ({U/P} can be paid with either {U} or 2 life.)
Oracle:Other blue creatures you control have "Whenever this creature becomes tapped, draw a card, then discard a card."\nOther artifact creatures you control get + 1/+1.\n{U/P}: Until end of turn, target creature you control becomes a blue artifact in addition to its other colors and types. Activate only as a sorcery. ({U/P} can be paid with either {U} or 2 life.)

View File

@@ -1,5 +1,5 @@
Name:Vraska, Betrayal's Sting
ManaCost:4 B PB
ManaCost:4 B BP
Types:Legendary Planeswalker Vraska
Loyalty:6
K:Compleated
@@ -12,4 +12,4 @@ A:AB$ Poison | Cost$ SubCounter<9/LOYALTY> | ValidTgts$ Player | Planeswalker$ T
SVar:X:TargetedPlayer$PoisonCounters
SVar:Difference:Number$9/Minus.X
DeckHints:Ability$Counters & Keyword$Infect|Toxic|Poisonous
Oracle:Compleated ({PB} can be paid with {B} or 2 life. If life was paid, this planeswalker enters with two fewer loyalty counters.)\n[0]: You draw a card and you lose 1 life. Proliferate.\n[2]: Target creature becomes a Treasure artifact with "{T}, Sacrifice this artifact: Add one mana of any color" and loses all other card types and abilities.\n[9]: If target player has fewer than nine poison counters, they get a number of poison counters equal to the difference.
Oracle:Compleated ({B/P} can be paid with {B} or 2 life. If life was paid, this planeswalker enters with two fewer loyalty counters.)\n[0]: You draw a card and you lose 1 life. Proliferate.\n[2]: Target creature becomes a Treasure artifact with "{T}, Sacrifice this artifact: Add one mana of any color" and loses all other card types and abilities.\n[9]: If target player has fewer than nine poison counters, they get a number of poison counters equal to the difference.

View File

@@ -6,8 +6,8 @@ K:Reach
T:Mode$ Phase | Phase$ BeginCombat | TriggerZones$ Battlefield | Execute$ TrigDouble | TriggerDescription$ At the beginning of each combat, double the power and toughness of each creature you control until end of turn.
SVar:TrigDouble:DB$ RepeatEach | RepeatCards$ Creature.YouCtrl | RepeatSubAbility$ DBDouble
SVar:DBDouble:DB$ Pump | Defined$ Remembered | NumAtt$ X | NumDef$ Y | Double$ True
A:AB$ PutCounter | Cost$ 1 GP GP Sac<2/Creature.Other/Other creature> | Defined$ Self | CounterType$ Indestructible | CounterNum$ 1 | SpellDescription$ Put an indestructible counter on CARDNAME. ({GP} can be paid with either {G} or 2 life.)
A:AB$ PutCounter | Cost$ 1 GP GP Sac<2/Creature.Other/Other creature> | Defined$ Self | CounterType$ Indestructible | CounterNum$ 1 | SpellDescription$ Put an indestructible counter on CARDNAME. ({G/P} can be paid with either {G} or 2 life.)
SVar:X:Remembered$CardPower
SVar:Y:Remembered$CardToughness
DeckHas:Ability$Sacrifice|Counters
Oracle:Reach\nAt the beginning of each combat, double the power and toughness of each creature you control until end of turn.\n{G/P}{G/P}, Sacrifice two other creatures: Put an indestructible counter on Zopandrel, Hunger Dominus. ({GP} can be paid with either {G} or 2 life.)
Oracle:Reach\nAt the beginning of each combat, double the power and toughness of each creature you control until end of turn.\n{G/P}{G/P}, Sacrifice two other creatures: Put an indestructible counter on Zopandrel, Hunger Dominus. ({G/P} can be paid with either {G} or 2 life.)

View File

@@ -1,5 +1,5 @@
Name:Vault Skirge
ManaCost:1 PB
ManaCost:1 BP
Types:Artifact Creature Phyrexian Imp
PT:1/1
K:Flying

View File

@@ -0,0 +1,7 @@
Name:Samurai Token
ManaCost:no cost
Types:Creature Samurai
Colors:white
PT:2/2
K:Double Strike
Oracle:Double strike

View File

@@ -99,7 +99,7 @@ public class CardReaderExperiments {
for (int i = 0; i < lines.size(); i++) {
String newLine = lines.get(i).replaceAll("\\{([WUBRG2P])([WUBRG])\\}", "\\{$1/$2\\}")
.replaceAll("\\{([WUBRG])/2\\}", "\\{2/$1\\}")
.replaceAll("\\{([WUBRG])/P\\}", "\\{P/$1\\}");
.replaceAll("\\{([WUBRG])/P\\}", "\\{$1/P\\}");
if (!newLine.equals(lines.get(i))) {
updated = true;
lines.set(i, newLine);