diff --git a/forge-ai/src/main/java/forge/ai/SpellApiToAi.java b/forge-ai/src/main/java/forge/ai/SpellApiToAi.java index 164f92e4eb0..1360ce926f1 100644 --- a/forge-ai/src/main/java/forge/ai/SpellApiToAi.java +++ b/forge-ai/src/main/java/forge/ai/SpellApiToAi.java @@ -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) diff --git a/forge-ai/src/main/java/forge/ai/ability/ConniveAi.java b/forge-ai/src/main/java/forge/ai/ability/ConniveAi.java new file mode 100644 index 00000000000..18aaea436b5 --- /dev/null +++ b/forge-ai/src/main/java/forge/ai/ability/ConniveAi.java @@ -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; + } + +} diff --git a/forge-core/src/main/java/forge/card/mana/ManaCostShard.java b/forge-core/src/main/java/forge/card/mana/ManaCostShard.java index 75b5663811e..eb6a5d60543 100644 --- a/forge-core/src/main/java/forge/card/mana/ManaCostShard.java +++ b/forge-core/src/main/java/forge/card/mana/ManaCostShard.java @@ -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"), diff --git a/forge-gui-desktop/src/main/java/forge/toolbox/CardFaceSymbols.java b/forge-gui-desktop/src/main/java/forge/toolbox/CardFaceSymbols.java index e2bc25d5190..4edf3ffc80a 100644 --- a/forge-gui-desktop/src/main/java/forge/toolbox/CardFaceSymbols.java +++ b/forge-gui-desktop/src/main/java/forge/toolbox/CardFaceSymbols.java @@ -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)); diff --git a/forge-gui-desktop/src/main/java/forge/toolbox/FSkin.java b/forge-gui-desktop/src/main/java/forge/toolbox/FSkin.java index 042fdaf18d9..cc162fae498 100644 --- a/forge-gui-desktop/src/main/java/forge/toolbox/FSkin.java +++ b/forge-gui-desktop/src/main/java/forge/toolbox/FSkin.java @@ -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)); } diff --git a/forge-gui-mobile/src/forge/assets/TextRenderer.java b/forge-gui-mobile/src/forge/assets/TextRenderer.java index eb9cb9c57b4..107f59ed76e 100644 --- a/forge-gui-mobile/src/forge/assets/TextRenderer.java +++ b/forge-gui-mobile/src/forge/assets/TextRenderer.java @@ -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)); } diff --git a/forge-gui-mobile/src/forge/card/CardFaceSymbols.java b/forge-gui-mobile/src/forge/card/CardFaceSymbols.java index c33042dcdea..1151c76e5b3 100644 --- a/forge-gui-mobile/src/forge/card/CardFaceSymbols.java +++ b/forge-gui-mobile/src/forge/card/CardFaceSymbols.java @@ -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); diff --git a/forge-gui/res/cardsfolder/a/act_of_aggression.txt b/forge-gui/res/cardsfolder/a/act_of_aggression.txt index 5076cdf402d..e8bab55b5fb 100644 --- a/forge-gui/res/cardsfolder/a/act_of_aggression.txt +++ b/forge-gui/res/cardsfolder/a/act_of_aggression.txt @@ -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. diff --git a/forge-gui/res/cardsfolder/a/ajani_sleeper_agent.txt b/forge-gui/res/cardsfolder/a/ajani_sleeper_agent.txt index 786e42410c4..a5e10aca372 100644 --- a/forge-gui/res/cardsfolder/a/ajani_sleeper_agent.txt +++ b/forge-gui/res/cardsfolder/a/ajani_sleeper_agent.txt @@ -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." diff --git a/forge-gui/res/cardsfolder/a/apostles_blessing.txt b/forge-gui/res/cardsfolder/a/apostles_blessing.txt index 76d955cfdf9..34ac6ae530c 100644 --- a/forge-gui/res/cardsfolder/a/apostles_blessing.txt +++ b/forge-gui/res/cardsfolder/a/apostles_blessing.txt @@ -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. diff --git a/forge-gui/res/cardsfolder/b/birthing_pod.txt b/forge-gui/res/cardsfolder/b/birthing_pod.txt index 3984e55670b..7f31408ac8e 100644 --- a/forge-gui/res/cardsfolder/b/birthing_pod.txt +++ b/forge-gui/res/cardsfolder/b/birthing_pod.txt @@ -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 diff --git a/forge-gui/res/cardsfolder/b/blinding_souleater.txt b/forge-gui/res/cardsfolder/b/blinding_souleater.txt index 23070b4431c..7093c8e226a 100644 --- a/forge-gui/res/cardsfolder/b/blinding_souleater.txt +++ b/forge-gui/res/cardsfolder/b/blinding_souleater.txt @@ -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 diff --git a/forge-gui/res/cardsfolder/c/cathedral_membrane.txt b/forge-gui/res/cardsfolder/c/cathedral_membrane.txt index 3403f78c008..40bcb4cb5b7 100644 --- a/forge-gui/res/cardsfolder/c/cathedral_membrane.txt +++ b/forge-gui/res/cardsfolder/c/cathedral_membrane.txt @@ -1,5 +1,5 @@ Name:Cathedral Membrane -ManaCost:1 PW +ManaCost:1 WP Types:Artifact Creature Phyrexian Wall PT:0/3 K:Defender diff --git a/forge-gui/res/cardsfolder/c/corrosive_gale.txt b/forge-gui/res/cardsfolder/c/corrosive_gale.txt index 7aab7830de8..5a287d6d292 100644 --- a/forge-gui/res/cardsfolder/c/corrosive_gale.txt +++ b/forge-gui/res/cardsfolder/c/corrosive_gale.txt @@ -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. diff --git a/forge-gui/res/cardsfolder/d/dismember.txt b/forge-gui/res/cardsfolder/d/dismember.txt index 22e1a428c6e..f20b299b98e 100644 --- a/forge-gui/res/cardsfolder/d/dismember.txt +++ b/forge-gui/res/cardsfolder/d/dismember.txt @@ -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. diff --git a/forge-gui/res/cardsfolder/g/gitaxian_probe.txt b/forge-gui/res/cardsfolder/g/gitaxian_probe.txt index 26d2a36c845..9682ecc6b1c 100644 --- a/forge-gui/res/cardsfolder/g/gitaxian_probe.txt +++ b/forge-gui/res/cardsfolder/g/gitaxian_probe.txt @@ -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. diff --git a/forge-gui/res/cardsfolder/g/gut_shot.txt b/forge-gui/res/cardsfolder/g/gut_shot.txt index 19398330524..aa1a88d45b9 100644 --- a/forge-gui/res/cardsfolder/g/gut_shot.txt +++ b/forge-gui/res/cardsfolder/g/gut_shot.txt @@ -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. diff --git a/forge-gui/res/cardsfolder/h/hex_parasite.txt b/forge-gui/res/cardsfolder/h/hex_parasite.txt index e9cdc8ccba6..b36c5b61790 100644 --- a/forge-gui/res/cardsfolder/h/hex_parasite.txt +++ b/forge-gui/res/cardsfolder/h/hex_parasite.txt @@ -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 diff --git a/forge-gui/res/cardsfolder/i/immolating_souleater.txt b/forge-gui/res/cardsfolder/i/immolating_souleater.txt index 2e5fdce4c7e..bda10ed1404 100644 --- a/forge-gui/res/cardsfolder/i/immolating_souleater.txt +++ b/forge-gui/res/cardsfolder/i/immolating_souleater.txt @@ -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.) diff --git a/forge-gui/res/cardsfolder/i/insatiable_souleater.txt b/forge-gui/res/cardsfolder/i/insatiable_souleater.txt index e7d35d77be3..5bea58d6cf8 100644 --- a/forge-gui/res/cardsfolder/i/insatiable_souleater.txt +++ b/forge-gui/res/cardsfolder/i/insatiable_souleater.txt @@ -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.) diff --git a/forge-gui/res/cardsfolder/k/krrik_son_of_yawgmoth.txt b/forge-gui/res/cardsfolder/k/krrik_son_of_yawgmoth.txt index 2d056b01b19..c19a95b4b78 100644 --- a/forge-gui/res/cardsfolder/k/krrik_son_of_yawgmoth.txt +++ b/forge-gui/res/cardsfolder/k/krrik_son_of_yawgmoth.txt @@ -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 diff --git a/forge-gui/res/cardsfolder/l/lashwrithe.txt b/forge-gui/res/cardsfolder/l/lashwrithe.txt index 110035239f6..08f019d13b7 100644 --- a/forge-gui/res/cardsfolder/l/lashwrithe.txt +++ b/forge-gui/res/cardsfolder/l/lashwrithe.txt @@ -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 diff --git a/forge-gui/res/cardsfolder/m/marrow_shards.txt b/forge-gui/res/cardsfolder/m/marrow_shards.txt index 885a92558b4..ca6c41ebd5a 100644 --- a/forge-gui/res/cardsfolder/m/marrow_shards.txt +++ b/forge-gui/res/cardsfolder/m/marrow_shards.txt @@ -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. diff --git a/forge-gui/res/cardsfolder/m/mental_misstep.txt b/forge-gui/res/cardsfolder/m/mental_misstep.txt index 7ca7c7da767..6d77059a155 100644 --- a/forge-gui/res/cardsfolder/m/mental_misstep.txt +++ b/forge-gui/res/cardsfolder/m/mental_misstep.txt @@ -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. diff --git a/forge-gui/res/cardsfolder/m/moltensteel_dragon.txt b/forge-gui/res/cardsfolder/m/moltensteel_dragon.txt index a3c06fd396b..9d5b85324d1 100644 --- a/forge-gui/res/cardsfolder/m/moltensteel_dragon.txt +++ b/forge-gui/res/cardsfolder/m/moltensteel_dragon.txt @@ -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. diff --git a/forge-gui/res/cardsfolder/m/mutagenic_growth.txt b/forge-gui/res/cardsfolder/m/mutagenic_growth.txt index 8a9e2052ad4..5e85ac54dbd 100644 --- a/forge-gui/res/cardsfolder/m/mutagenic_growth.txt +++ b/forge-gui/res/cardsfolder/m/mutagenic_growth.txt @@ -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. diff --git a/forge-gui/res/cardsfolder/n/norns_annex.txt b/forge-gui/res/cardsfolder/n/norns_annex.txt index 0246137ab86..9defbbfcb6e 100644 --- a/forge-gui/res/cardsfolder/n/norns_annex.txt +++ b/forge-gui/res/cardsfolder/n/norns_annex.txt @@ -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. diff --git a/forge-gui/res/cardsfolder/n/noxious_revival.txt b/forge-gui/res/cardsfolder/n/noxious_revival.txt index aecf77eca48..ca2231b5a96 100644 --- a/forge-gui/res/cardsfolder/n/noxious_revival.txt +++ b/forge-gui/res/cardsfolder/n/noxious_revival.txt @@ -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. diff --git a/forge-gui/res/cardsfolder/p/pestilent_souleater.txt b/forge-gui/res/cardsfolder/p/pestilent_souleater.txt index 40de5daf59a..fc4757cb166 100644 --- a/forge-gui/res/cardsfolder/p/pestilent_souleater.txt +++ b/forge-gui/res/cardsfolder/p/pestilent_souleater.txt @@ -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.) diff --git a/forge-gui/res/cardsfolder/p/phyrexian_metamorph.txt b/forge-gui/res/cardsfolder/p/phyrexian_metamorph.txt index 42e0c823b64..a08db7fc466 100644 --- a/forge-gui/res/cardsfolder/p/phyrexian_metamorph.txt +++ b/forge-gui/res/cardsfolder/p/phyrexian_metamorph.txt @@ -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 diff --git a/forge-gui/res/cardsfolder/p/pith_driller.txt b/forge-gui/res/cardsfolder/p/pith_driller.txt index 5370afde12e..52360f14072 100644 --- a/forge-gui/res/cardsfolder/p/pith_driller.txt +++ b/forge-gui/res/cardsfolder/p/pith_driller.txt @@ -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. diff --git a/forge-gui/res/cardsfolder/p/porcelain_legionnaire.txt b/forge-gui/res/cardsfolder/p/porcelain_legionnaire.txt index d9b9a1b030b..677e1852a82 100644 --- a/forge-gui/res/cardsfolder/p/porcelain_legionnaire.txt +++ b/forge-gui/res/cardsfolder/p/porcelain_legionnaire.txt @@ -1,5 +1,5 @@ Name:Porcelain Legionnaire -ManaCost:2 PW +ManaCost:2 WP Types:Artifact Creature Phyrexian Soldier PT:3/1 K:First Strike diff --git a/forge-gui/res/cardsfolder/p/postmortem_lunge.txt b/forge-gui/res/cardsfolder/p/postmortem_lunge.txt index 629f6c21740..580cb4e0b56 100644 --- a/forge-gui/res/cardsfolder/p/postmortem_lunge.txt +++ b/forge-gui/res/cardsfolder/p/postmortem_lunge.txt @@ -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 diff --git a/forge-gui/res/cardsfolder/r/rage_extractor.txt b/forge-gui/res/cardsfolder/r/rage_extractor.txt index ce5286c30cc..7d7944dc4ca 100644 --- a/forge-gui/res/cardsfolder/r/rage_extractor.txt +++ b/forge-gui/res/cardsfolder/r/rage_extractor.txt @@ -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 diff --git a/forge-gui/res/cardsfolder/r/ruthless_invasion.txt b/forge-gui/res/cardsfolder/r/ruthless_invasion.txt index 2da5a536897..7002c989820 100644 --- a/forge-gui/res/cardsfolder/r/ruthless_invasion.txt +++ b/forge-gui/res/cardsfolder/r/ruthless_invasion.txt @@ -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. diff --git a/forge-gui/res/cardsfolder/s/slash_panther.txt b/forge-gui/res/cardsfolder/s/slash_panther.txt index 43e3c79ad6c..057291c0195 100644 --- a/forge-gui/res/cardsfolder/s/slash_panther.txt +++ b/forge-gui/res/cardsfolder/s/slash_panther.txt @@ -1,5 +1,5 @@ Name:Slash Panther -ManaCost:4 PR +ManaCost:4 RP Types:Artifact Creature Phyrexian Cat PT:4/2 K:Haste diff --git a/forge-gui/res/cardsfolder/s/spellskite.txt b/forge-gui/res/cardsfolder/s/spellskite.txt index 24aa2c37638..45f7d2469a2 100644 --- a/forge-gui/res/cardsfolder/s/spellskite.txt +++ b/forge-gui/res/cardsfolder/s/spellskite.txt @@ -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.) diff --git a/forge-gui/res/cardsfolder/s/spined_thopter.txt b/forge-gui/res/cardsfolder/s/spined_thopter.txt index 22170d14d47..937469229ec 100644 --- a/forge-gui/res/cardsfolder/s/spined_thopter.txt +++ b/forge-gui/res/cardsfolder/s/spined_thopter.txt @@ -1,5 +1,5 @@ Name:Spined Thopter -ManaCost:2 PU +ManaCost:2 UP Types:Artifact Creature Phyrexian Thopter PT:2/1 K:Flying diff --git a/forge-gui/res/cardsfolder/s/surgical_extraction.txt b/forge-gui/res/cardsfolder/s/surgical_extraction.txt index 3383a873bb4..88180f896b4 100644 --- a/forge-gui/res/cardsfolder/s/surgical_extraction.txt +++ b/forge-gui/res/cardsfolder/s/surgical_extraction.txt @@ -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 diff --git a/forge-gui/res/cardsfolder/t/tamiyo_compleated_sage.txt b/forge-gui/res/cardsfolder/t/tamiyo_compleated_sage.txt index 963bea784d3..de0aa20160e 100644 --- a/forge-gui/res/cardsfolder/t/tamiyo_compleated_sage.txt +++ b/forge-gui/res/cardsfolder/t/tamiyo_compleated_sage.txt @@ -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." diff --git a/forge-gui/res/cardsfolder/t/tezzerets_gambit.txt b/forge-gui/res/cardsfolder/t/tezzerets_gambit.txt index 13428b5ff20..57993b8a107 100644 --- a/forge-gui/res/cardsfolder/t/tezzerets_gambit.txt +++ b/forge-gui/res/cardsfolder/t/tezzerets_gambit.txt @@ -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 diff --git a/forge-gui/res/cardsfolder/t/thundering_tanadon.txt b/forge-gui/res/cardsfolder/t/thundering_tanadon.txt index e4b8e602a36..ebae1357a54 100644 --- a/forge-gui/res/cardsfolder/t/thundering_tanadon.txt +++ b/forge-gui/res/cardsfolder/t/thundering_tanadon.txt @@ -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 diff --git a/forge-gui/res/cardsfolder/t/trespassing_souleater.txt b/forge-gui/res/cardsfolder/t/trespassing_souleater.txt index 1ffd6292474..b72dd33f4db 100644 --- a/forge-gui/res/cardsfolder/t/trespassing_souleater.txt +++ b/forge-gui/res/cardsfolder/t/trespassing_souleater.txt @@ -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.) diff --git a/forge-gui/res/cardsfolder/upcoming/jace_the_perfected_mind.txt b/forge-gui/res/cardsfolder/upcoming/jace_the_perfected_mind.txt index c80fad8b03f..82c403d333a 100644 --- a/forge-gui/res/cardsfolder/upcoming/jace_the_perfected_mind.txt +++ b/forge-gui/res/cardsfolder/upcoming/jace_the_perfected_mind.txt @@ -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 diff --git a/forge-gui/res/cardsfolder/upcoming/nahiri_the_unforgiving.txt b/forge-gui/res/cardsfolder/upcoming/nahiri_the_unforgiving.txt index 48d0e81d1f7..0f3c86f41e4 100644 --- a/forge-gui/res/cardsfolder/upcoming/nahiri_the_unforgiving.txt +++ b/forge-gui/res/cardsfolder/upcoming/nahiri_the_unforgiving.txt @@ -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. diff --git a/forge-gui/res/cardsfolder/upcoming/nissa_ascended_animist.txt b/forge-gui/res/cardsfolder/upcoming/nissa_ascended_animist.txt index 3b0b4a655eb..915a3b9ca96 100644 --- a/forge-gui/res/cardsfolder/upcoming/nissa_ascended_animist.txt +++ b/forge-gui/res/cardsfolder/upcoming/nissa_ascended_animist.txt @@ -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 diff --git a/forge-gui/res/cardsfolder/upcoming/skrelv_defector_mite.txt b/forge-gui/res/cardsfolder/upcoming/skrelv_defector_mite.txt index 6a290eff9fa..cd95564a5f7 100644 --- a/forge-gui/res/cardsfolder/upcoming/skrelv_defector_mite.txt +++ b/forge-gui/res/cardsfolder/upcoming/skrelv_defector_mite.txt @@ -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.) diff --git a/forge-gui/res/cardsfolder/upcoming/solphim_mayhem_dominus.txt b/forge-gui/res/cardsfolder/upcoming/solphim_mayhem_dominus.txt index 51fdc574cc5..281ff545d50 100644 --- a/forge-gui/res/cardsfolder/upcoming/solphim_mayhem_dominus.txt +++ b/forge-gui/res/cardsfolder/upcoming/solphim_mayhem_dominus.txt @@ -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.) diff --git a/forge-gui/res/cardsfolder/upcoming/synthesis_pod.txt b/forge-gui/res/cardsfolder/upcoming/synthesis_pod.txt index e27922eebe6..326ce2d9b0c 100644 --- a/forge-gui/res/cardsfolder/upcoming/synthesis_pod.txt +++ b/forge-gui/res/cardsfolder/upcoming/synthesis_pod.txt @@ -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 diff --git a/forge-gui/res/cardsfolder/upcoming/unctus_grand_metatect.txt b/forge-gui/res/cardsfolder/upcoming/unctus_grand_metatect.txt index 613778a0882..d17ceeb1505 100644 --- a/forge-gui/res/cardsfolder/upcoming/unctus_grand_metatect.txt +++ b/forge-gui/res/cardsfolder/upcoming/unctus_grand_metatect.txt @@ -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.) \ No newline at end of file +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.) \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/vraska_betrayals_sting.txt b/forge-gui/res/cardsfolder/upcoming/vraska_betrayals_sting.txt index d7f72128209..f5a19413eae 100644 --- a/forge-gui/res/cardsfolder/upcoming/vraska_betrayals_sting.txt +++ b/forge-gui/res/cardsfolder/upcoming/vraska_betrayals_sting.txt @@ -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. diff --git a/forge-gui/res/cardsfolder/upcoming/zopandrel_hunger_dominus.txt b/forge-gui/res/cardsfolder/upcoming/zopandrel_hunger_dominus.txt index e323b78e290..de03b3d57e0 100644 --- a/forge-gui/res/cardsfolder/upcoming/zopandrel_hunger_dominus.txt +++ b/forge-gui/res/cardsfolder/upcoming/zopandrel_hunger_dominus.txt @@ -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.) \ No newline at end of file +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.) \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/v/vault_skirge.txt b/forge-gui/res/cardsfolder/v/vault_skirge.txt index 5c42643f077..e23c6c31bd0 100644 --- a/forge-gui/res/cardsfolder/v/vault_skirge.txt +++ b/forge-gui/res/cardsfolder/v/vault_skirge.txt @@ -1,5 +1,5 @@ Name:Vault Skirge -ManaCost:1 PB +ManaCost:1 BP Types:Artifact Creature Phyrexian Imp PT:1/1 K:Flying diff --git a/forge-gui/res/tokenscripts/w_2_2_samurai_double_strike.txt b/forge-gui/res/tokenscripts/w_2_2_samurai_double_strike.txt new file mode 100644 index 00000000000..133f05c0268 --- /dev/null +++ b/forge-gui/res/tokenscripts/w_2_2_samurai_double_strike.txt @@ -0,0 +1,7 @@ +Name:Samurai Token +ManaCost:no cost +Types:Creature Samurai +Colors:white +PT:2/2 +K:Double Strike +Oracle:Double strike diff --git a/forge-gui/src/main/java/forge/gui/card/CardReaderExperiments.java b/forge-gui/src/main/java/forge/gui/card/CardReaderExperiments.java index e7abbfef069..9343ec1b678 100644 --- a/forge-gui/src/main/java/forge/gui/card/CardReaderExperiments.java +++ b/forge-gui/src/main/java/forge/gui/card/CardReaderExperiments.java @@ -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);