diff --git a/.github/workflows/maven-publish.yml b/.github/workflows/maven-publish.yml new file mode 100644 index 00000000000..2573e9bd15a --- /dev/null +++ b/.github/workflows/maven-publish.yml @@ -0,0 +1,41 @@ +name: Publish Forge + +on: + workflow_dispatch: + +jobs: + build: + + runs-on: ubuntu-latest + permissions: + contents: write + deployments: write + packages: write + + steps: + - uses: actions/checkout@v3 + - name: Set up JDK 11 + uses: actions/setup-java@v3 + with: + java-version: '11' + distribution: 'temurin' + cache: 'maven' + server-id: cardforge-repo + server-username: ${{ secrets.FTP_USERNAME }} + server-password: ${{ secrets.FTP_PASSWORD }} + settings-path: ${{ github.workspace }} # location for the settings.xml file + + - name: Install virtual framebuffer (if not available) to allow running GUI on a headless server + run: command -v Xvfb >/dev/null 2>&1 || { sudo apt update && sudo apt install -y xvfb; } + + - name: Configure Git User + run: | + git config user.email "actions@github.com" + git config user.name "GitHub Actions" + - name: Build/Install/Publish to GitHub Packages Apache Maven + run: | + export DISPLAY=":1" + Xvfb :1 -screen 0 800x600x8 & + mvn -U -B clean -P windows-linux install release:clean release:prepare release:perform -T 1C -Dcardforge-repo.username=${{ secrets.FTP_USERNAME }} -Dcardforge-repo.password=${{ secrets.FTP_PASSWORD }} + env: + GITHUB_TOKEN: ${{ github.token }} \ No newline at end of file diff --git a/.mvn/local-settings.xml b/.mvn/local-settings.xml index 3abc1df0e86..f4949fbfe81 100644 --- a/.mvn/local-settings.xml +++ b/.mvn/local-settings.xml @@ -12,4 +12,12 @@ http://4thline.org/m2 + + + + cardforge-repo + ${cardforge-repo.username} + ${cardforge-repo.password} + + \ No newline at end of file diff --git a/forge-ai/src/main/java/forge/ai/ComputerUtil.java b/forge-ai/src/main/java/forge/ai/ComputerUtil.java index abfc9e97348..ec6b6636151 100644 --- a/forge-ai/src/main/java/forge/ai/ComputerUtil.java +++ b/forge-ai/src/main/java/forge/ai/ComputerUtil.java @@ -128,6 +128,7 @@ public class ComputerUtil { if (!sa.isCopied()) { sa.resetPaidHash(); + sa.setPaidLife(0); } sa = GameActionUtil.addExtraKeywordCost(sa); diff --git a/forge-core/src/main/java/forge/card/mana/ManaCost.java b/forge-core/src/main/java/forge/card/mana/ManaCost.java index 43864f1c0ed..79580f04ba1 100644 --- a/forge-core/src/main/java/forge/card/mana/ManaCost.java +++ b/forge-core/src/main/java/forge/card/mana/ManaCost.java @@ -328,9 +328,9 @@ public final class ManaCost implements Comparable, Iterable lki = movedCard.getZone().getCardsAddedThisTurn(null); + lki.get(lki.lastIndexOf(movedCard)).setTimestamp(ts); + } + if (sa.hasParam("AttachAfter") && movedCard.isAttachment()) { CardCollection list = AbilityUtils.getDefinedCards(hostCard, sa.getParam("AttachAfter"), sa); if (list.isEmpty()) { @@ -1401,6 +1408,11 @@ public class ChangeZoneEffect extends SpellAbilityEffect { movedCard = game.getAction().moveToPlay(c, c.getController(), sa, moveParams); movedCard.setTimestamp(ts); + if (movedCard.isInPlay()) { + // need to also update LKI + List lki = movedCard.getZone().getCardsAddedThisTurn(null); + lki.get(lki.lastIndexOf(movedCard)).setTimestamp(ts); + } if (sa.hasParam("AttachAfter") && movedCard.isAttachment() && movedCard.isInPlay()) { CardCollection list = AbilityUtils.getDefinedCards(source, sa.getParam("AttachAfter"), sa); diff --git a/forge-game/src/main/java/forge/game/ability/effects/CopySpellAbilityEffect.java b/forge-game/src/main/java/forge/game/ability/effects/CopySpellAbilityEffect.java index 602bf0f185d..b5fe6b70b30 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/CopySpellAbilityEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/CopySpellAbilityEffect.java @@ -160,7 +160,6 @@ public class CopySpellAbilityEffect extends SpellAbilityEffect { copies.add(copy); } } - } } else { for (int i = 0; i < amount; i++) { @@ -238,7 +237,7 @@ public class CopySpellAbilityEffect extends SpellAbilityEffect { card.addRemembered(copies); } } - } // end resolve + } private void resetFirstTargetOnCopy(SpellAbility copy, GameEntity obj, SpellAbility targetedSA) { copy.resetFirstTarget(obj, targetedSA); diff --git a/forge-game/src/main/java/forge/game/ability/effects/PumpEffect.java b/forge-game/src/main/java/forge/game/ability/effects/PumpEffect.java index d310adce2d0..6b3e4d79466 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/PumpEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/PumpEffect.java @@ -262,7 +262,6 @@ public class PumpEffect extends SpellAbilityEffect { } else { sb.append("."); } - } return sb.toString(); diff --git a/forge-game/src/main/java/forge/game/card/Card.java b/forge-game/src/main/java/forge/game/card/Card.java index b305f97ea86..27731326e3c 100644 --- a/forge-game/src/main/java/forge/game/card/Card.java +++ b/forge-game/src/main/java/forge/game/card/Card.java @@ -2227,14 +2227,24 @@ public class Card extends GameEntity implements Comparable, IHasSVars { } else if (keyword.equals("Compleated")) { sbLong.append(keyword).append(" ("); final ManaCost mc = this.getManaCost(); - if (mc != ManaCost.NO_COST && mc.getFirstPhyrexianHybridPip() != null) { - String hybrid = mc.getFirstPhyrexianHybridPip().replaceAll("\\{", "") - .replaceAll("\\}",""); - String[] parts = hybrid.split("/"); - String rem = "{" + hybrid + "} can be paid with {" + parts[1] + "}, {" + parts[2] + "}, or 2 life. "; - sbLong.append(rem); + if (mc != ManaCost.NO_COST && mc.hasPhyrexian()) { + String pip = mc.getFirstPhyrexianPip(); + String[] parts = pip.substring(1, pip.length() - 1).split("/"); + final StringBuilder rem = new StringBuilder(); + rem.append(pip).append(" can be paid with {").append(parts[1]).append("}"); + if (parts.length > 2) { + rem.append(", {").append(parts[2]).append("},"); + } + rem.append(" or 2 life. "); + if (mc.getPhyrexianCount() > 1) { + rem.append("For each ").append(pip).append(" paid with life,"); + } else { + rem.append("If life was paid,"); + } + rem.append(" this planeswalker enters with two fewer loyalty counters."); + sbLong.append(rem.toString()); } - sbLong.append(inst.getReminderText()).append(")"); + sbLong.append(")"); } else if (keyword.startsWith("Devour ")) { final String[] k = keyword.split(":"); final String[] s = (k[0]).split(" "); diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerChangesZone.java b/forge-game/src/main/java/forge/game/trigger/TriggerChangesZone.java index 6f649b982a6..af808ebe42e 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerChangesZone.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerChangesZone.java @@ -17,6 +17,7 @@ */ package forge.game.trigger; +import java.util.Collections; import java.util.EnumSet; import java.util.List; import java.util.Map; @@ -111,6 +112,7 @@ public class TriggerChangesZone extends Trigger { } if ("Battlefield".equals(runParams.get(AbilityKey.Destination))) { List etbLKI = moved.getController().getZone(ZoneType.Battlefield).getCardsAddedThisTurn(null); + Collections.sort(etbLKI, CardPredicates.compareByTimestamp()); moved = etbLKI.get(etbLKI.lastIndexOf(moved)); } diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerSpellAbilityCastOrCopy.java b/forge-game/src/main/java/forge/game/trigger/TriggerSpellAbilityCastOrCopy.java index fc8b0cc7160..12cd844300b 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerSpellAbilityCastOrCopy.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerSpellAbilityCastOrCopy.java @@ -86,10 +86,6 @@ public class TriggerSpellAbilityCastOrCopy extends Trigger { return false; } - if (!matchesValidParam("ValidControllingPlayer", cast.getController())) { - return false; - } - if (hasParam("ValidActivatingPlayer")) { Player activator; if (spellAbility.isManaAbility()) { @@ -287,6 +283,7 @@ public class TriggerSpellAbilityCastOrCopy extends Trigger { } sa.setTriggeringObject(AbilityKey.SpellAbilityTargets, saTargets); } + sa.setTriggeringObject(AbilityKey.LifeAmount, castSA.getAmountLifePaid()); sa.setTriggeringObjectsFrom( runParams, AbilityKey.Player, diff --git a/forge-gui/res/cardsfolder/a/ardenn_intrepid_archaeologist.txt b/forge-gui/res/cardsfolder/a/ardenn_intrepid_archaeologist.txt index ce10555173f..46c7ee66320 100644 --- a/forge-gui/res/cardsfolder/a/ardenn_intrepid_archaeologist.txt +++ b/forge-gui/res/cardsfolder/a/ardenn_intrepid_archaeologist.txt @@ -2,11 +2,8 @@ Name:Ardenn, Intrepid Archaeologist ManaCost:2 W Types:Legendary Creature Kor Scout PT:2/2 -T:Mode$ Phase | Phase$ BeginCombat | ValidPlayer$ You | Execute$ TrigTarget | TriggerZones$ Battlefield | OptionalDecider$ You | TriggerDescription$ At the beginning of combat on your turn, you may attach any number of Auras and Equipment you control to target permanent or player. -SVar:TrigTarget:DB$ Pump | ValidTgts$ Permanent,Player | TgtPrompt$ Select target permanent or player | RememberObjects$ Targeted | SubAbility$ DBAttach -SVar:DBAttach:DB$ RepeatEach | UseImprinted$ True | RepeatSubAbility$ DBRepeatAttach | SubAbility$ DBCleanup | RepeatCards$ Aura.YouCtrl,Equipment.YouCtrl -SVar:DBRepeatAttach:DB$ Attach | Defined$ Remembered | Object$ Imprinted | Optional$ True -SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +T:Mode$ Phase | Phase$ BeginCombat | ValidPlayer$ You | Execute$ TrigAttach | TriggerZones$ Battlefield | OptionalDecider$ You | TriggerDescription$ At the beginning of combat on your turn, you may attach any number of Auras and Equipment you control to target permanent or player. +SVar:TrigAttach:DB$ Attach | Defined$ Targeted | ValidTgts$ Permanent,Player | TgtPrompt$ Select target permanent or player | Object$ Valid Aura.YouCtrl,Equipment.YouCtrl | Optional$ True K:Partner DeckHints:Type$Aura|Equipment Oracle:At the beginning of combat on your turn, you may attach any number of Auras and Equipment you control to target permanent or player.\nPartner (You can have two commanders if both have partner.) diff --git a/forge-gui/res/cardsfolder/a/armed_and_armored.txt b/forge-gui/res/cardsfolder/a/armed_and_armored.txt index d49a2edaad3..1e4fc42139c 100644 --- a/forge-gui/res/cardsfolder/a/armed_and_armored.txt +++ b/forge-gui/res/cardsfolder/a/armed_and_armored.txt @@ -1,13 +1,8 @@ Name:Armed and Armored ManaCost:1 W Types:Instant -A:SP$ AnimateAll | Cost$ 1 W | Types$ Creature,Artifact | ValidCards$ Vehicle.YouCtrl | SubAbility$ ChooseDwarf | StackDescription$ Vehicles {p:You} controls become artifact creatures until end of turn. | SpellDescription$ Vehicles you control become artifact creatures until end of turn. Choose a Dwarf you control. Attach any number of Equipment you control to it. -SVar:ChooseDwarf:DB$ ChooseCard | Defined$ You | Mandatory$ True | Choices$ Dwarf.YouCtrl | ChoiceTitle$ Choose a Dwarf you control | StackDescription$ {p:You} chooses a Dwarf they control and attaches any number of Equipment they control to it. | ImprintChosen$ True | SubAbility$ ChooseEquipment -SVar:ChooseEquipment:DB$ ChooseCard | Defined$ You | MinAmount$ 0 | Amount$ X | Choices$ Equipment.YouCtrl | StackDescription$ None | ChoiceTitle$ Choose any number of Equipment you control | ForgetChosen$ True | SubAbility$ DeployDwarf -SVar:DeployDwarf:DB$ RepeatEach | RepeatSubAbility$ ArmDwarf | RepeatCards$ Card.ChosenCard | SubAbility$ DBCleanup -SVar:ArmDwarf:DB$ Attach | Object$ Remembered | Defined$ Imprinted | StackDescription$ None -SVar:DBCleanup:DB$ Cleanup | ClearChosenCard$ True | ClearRemembered$ True | ClearImprinted$ True -SVar:X:Count$Valid Equipment.YouCtrl +A:SP$ AnimateAll | Cost$ 1 W | Types$ Creature,Artifact | ValidCards$ Vehicle.YouCtrl | SubAbility$ ArmDwarf | StackDescription$ Vehicles {p:You} controls become artifact creatures until end of turn. | SpellDescription$ Vehicles you control become artifact creatures until end of turn. Choose a Dwarf you control. Attach any number of Equipment you control to it. +SVar:ArmDwarf:DB$ Attach | Object$ Valid Equipment.YouCtrl | Defined$ Valid Dwarf.YouCtrl | Optional$ True | StackDescription$ {p:You} chooses a Dwarf they control and attaches any number of Equipment they control to it. DeckNeeds:Type$Vehicle|Dwarf DeckHints:Type$Equipment AI:RemoveDeck:All diff --git a/forge-gui/res/cardsfolder/b/bouncers_beatdown.txt b/forge-gui/res/cardsfolder/b/bouncers_beatdown.txt index 30c3fbf4207..cf16cbea17e 100644 --- a/forge-gui/res/cardsfolder/b/bouncers_beatdown.txt +++ b/forge-gui/res/cardsfolder/b/bouncers_beatdown.txt @@ -1,9 +1,7 @@ Name:Bouncer's Beatdown ManaCost:2 G Types:Instant -S:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ CostReduction | Relative$ True | EffectZone$ All | Description$ This spell costs {2} less to cast if it targets a a black permanent. -SVar:CostReduction:Count$Compare CheckTgt GE1.2.0 -SVar:CheckTgt:Targeted$Valid Permanent.Black +S:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | ValidTarget$ Permanent.Black | Amount$ 2 | EffectZone$ All | Description$ This spell costs {2} less to cast if it targets a black permanent. A:SP$ DealDamage | ValidTgts$ Creature,Planeswalker | TgtPrompt$ Select target creature or planeswalker | NumDmg$ X | ReplaceDyingDefined$ Targeted | SpellDescription$ CARDNAME deals X damage to target creature or planeswalker, where X is the greatest power among creatures you control. If that creature or planeswalker would die this turn, exile it instead. SVar:X:Count$Valid Creature.YouCtrl$GreatestPower SVar:NeedsToPlayVar:X GE3 diff --git a/forge-gui/res/cardsfolder/b/bury_in_books.txt b/forge-gui/res/cardsfolder/b/bury_in_books.txt index 8329ed3d214..6b9f8aedf52 100644 --- a/forge-gui/res/cardsfolder/b/bury_in_books.txt +++ b/forge-gui/res/cardsfolder/b/bury_in_books.txt @@ -1,8 +1,6 @@ Name:Bury in Books ManaCost:4 U Types:Instant -S:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ CostReduction | Relative$ True | EffectZone$ All | Description$ This spell costs {2} less to cast if it targets an attacking creature. -SVar:CostReduction:Count$Compare CheckTgt GE1.2.0 -SVar:CheckTgt:Targeted$Valid Creature.attacking -A:SP$ ChangeZone | Cost$ 4 U | Origin$ Battlefield | Destination$ Library | ValidTgts$ Creature | LibraryPosition$ 1 | SpellDescription$ Put target creature into its owner's library second from the top. +S:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ 2 | ValidTarget$ Creature.attacking | EffectZone$ All | Description$ This spell costs {2} less to cast if it targets an attacking creature. +A:SP$ ChangeZone | Origin$ Battlefield | Destination$ Library | ValidTgts$ Creature | LibraryPosition$ 1 | SpellDescription$ Put target creature into its owner's library second from the top. Oracle:This spell costs {2} less to cast if it targets an attacking creature.\nPut target creature into its owner's library second from the top. diff --git a/forge-gui/res/cardsfolder/h/haakon_stromgald_scourge_avatar.txt b/forge-gui/res/cardsfolder/h/haakon_stromgald_scourge_avatar.txt index 3e1a32e0518..6c5e3b9c53c 100644 --- a/forge-gui/res/cardsfolder/h/haakon_stromgald_scourge_avatar.txt +++ b/forge-gui/res/cardsfolder/h/haakon_stromgald_scourge_avatar.txt @@ -4,7 +4,7 @@ Types:Vanguard HandLifeModifier:+0/-3 A:AB$ Effect | ActivationZone$ Command | Cost$ PayLife<1> | TgtZone$ Graveyard | ValidTgts$ Creature.YouOwn | PumpZone$ Graveyard | TgtPrompt$ Select target creature in your graveyard, you may play it this turn | RememberObjects$ Targeted | StaticAbilities$ Play | ExileOnMoved$ Graveyard | SpellDescription$ You may cast target creature card in your graveyard this turn. SVar:Play:Mode$ Continuous | MayPlay$ True | EffectZone$ Command | Affected$ Card.IsRemembered | AffectedZone$ Graveyard | Description$ You may play remembered card. -T:Mode$ SpellCast | ValidCard$ Creature.wasCastFromYourGraveyard | ValidControllingPlayer$ You | TriggerZones$ Command | Execute$ TrigAnimate | TriggerDescription$ Whenever you cast a creature spell from your graveyard, it becomes a black Zombie Knight. +T:Mode$ SpellCast | ValidCard$ Creature.wasCastFromYourGraveyard | ValidActivatingPlayer$ You | TriggerZones$ Command | Execute$ TrigAnimate | TriggerDescription$ Whenever you cast a creature spell from your graveyard, it becomes a black Zombie Knight. SVar:TrigAnimate:DB$ Animate | Defined$ TriggeredCard | Types$ Zombie,Knight | Colors$ Black | OverwriteColors$ True | Duration$ Permanent | RemoveCreatureTypes$ True R:Event$ Moved | ValidCard$ Card.Zombie+Knight | Destination$ Graveyard | ReplaceWith$ DBExile | Description$ If a Zombie Knight would be put into your graveyard from the battlefield, exile it instead. SVar:DBExile:DB$ ChangeZone | Defined$ ReplacedCard | Origin$ Battlefield | Destination$ Exile diff --git a/forge-gui/res/cardsfolder/h/heavenly_blademaster.txt b/forge-gui/res/cardsfolder/h/heavenly_blademaster.txt index f6361e3ff8f..c079051914d 100644 --- a/forge-gui/res/cardsfolder/h/heavenly_blademaster.txt +++ b/forge-gui/res/cardsfolder/h/heavenly_blademaster.txt @@ -5,9 +5,7 @@ PT:3/6 K:Flying K:Double Strike T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ DBAttach | OptionalDecider$ You | TriggerDescription$ When CARDNAME enters the battlefield, you may attach any number of Auras and Equipment you control to it. -SVar:DBAttach:DB$ RepeatEach | RepeatSubAbility$ DBRepeatAttach | RepeatCards$ Aura.YouCtrl,Equipment.YouCtrl -SVar:DBRepeatAttach:DB$ Attach | Object$ Remembered | Optional$ True | SubAbility$ DBCleanup -SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:DBAttach:DB$ Attach | Object$ Valid Aura.YouCtrl,Equipment.YouCtrl | Optional$ True AI:RemoveDeck:Random S:Mode$ Continuous | Affected$ Creature.Other+YouCtrl | AddPower$ X | AddToughness$ X | Description$ Other creatures you control get +1/+1 for each Aura and Equipment attached to CARDNAME. SVar:X:Count$Valid Equipment.Attached,Aura.Attached diff --git a/forge-gui/res/cardsfolder/h/hunters_mark.txt b/forge-gui/res/cardsfolder/h/hunters_mark.txt index 8ec4f58676c..5710af906b5 100644 --- a/forge-gui/res/cardsfolder/h/hunters_mark.txt +++ b/forge-gui/res/cardsfolder/h/hunters_mark.txt @@ -2,10 +2,8 @@ Name:Hunter's Mark ManaCost:3 G Types:Instant K:This spell can't be countered. -S:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ CostReduction | Relative$ True | EffectZone$ All | Description$ This spell costs {3} less to cast if it targets a blue permanent you don't control. -SVar:CostReduction:Count$Compare CheckTgt GE1.3.0 -SVar:CheckTgt:TargetedObjects$Valid Card.Blue+YouDontCtrl -A:SP$ Pump | Cost$ 3 G | ValidTgts$ Creature.YouCtrl | AILogic$ PowerDmg | NumAtt$ +1 | NumDef$ +1 | TgtPrompt$ Select target creature you control | SubAbility$ SoulsDamage | StackDescription$ {c:ThisTargetedCard} gets +1/+1 until end of turn. | SpellDescription$ Target creature you control gets +1/+1 until end of turn. It deals damage equal to its power to target creature you don't control. +S:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ 3 | ValidTarget$ Card.Blue+YouDontCtrl | EffectZone$ All | Description$ This spell costs {3} less to cast if it targets a blue permanent you don't control. +A:SP$ Pump | ValidTgts$ Creature.YouCtrl | AILogic$ PowerDmg | NumAtt$ +1 | NumDef$ +1 | TgtPrompt$ Select target creature you control | SubAbility$ SoulsDamage | StackDescription$ {c:ThisTargetedCard} gets +1/+1 until end of turn. | SpellDescription$ Target creature you control gets +1/+1 until end of turn. It deals damage equal to its power to target creature you don't control. SVar:SoulsDamage:DB$ DealDamage | ValidTgts$ Creature.YouDontCtrl,Planeswalker.YouDontCtrl | AILogic$ PowerDmg | TgtPrompt$ Select target creature or planeswalker you don't control | NumDmg$ X | DamageSource$ ParentTarget | StackDescription$ Then {c:ParentTarget} deals damage equal to its power to {c:ThisTargetedCard}. SVar:X:ParentTargeted$CardPower Oracle:This spell costs {3} less to cast if it targets a blue permanent you don't control.\nThis spell can't be countered.\nTarget creature you control gets +1/+1 until end of turn. Then it deals damage equal to its power to target creature or planeswalker you don't control. diff --git a/forge-gui/res/cardsfolder/j/joraga_treespeaker.txt b/forge-gui/res/cardsfolder/j/joraga_treespeaker.txt index 49256f92e50..b0e90921062 100644 --- a/forge-gui/res/cardsfolder/j/joraga_treespeaker.txt +++ b/forge-gui/res/cardsfolder/j/joraga_treespeaker.txt @@ -5,8 +5,8 @@ PT:1/1 K:Level up:1 G SVar:maxLevel:5 S:Mode$ Continuous | Affected$ Card.Self | SetPower$ 1 | SetToughness$ 2 | AddAbility$ ABMana | IsPresent$ Card.Self+counters_GE1_LEVEL+counters_LE4_LEVEL | Description$ LEVEL 1-4 1/2 {T}: Add {G}{G}. -SVar:ABMana:AB$ Mana | Cost$ T | Produced$ G | Amount$ 2 | Secondary$ True | SpellDescription$ Add {G}{G}. -S:Mode$ Continuous | Affected$ Elf.YouCtrl | SetPower$ 1 | SetToughness$ 4 | AddAbility$ L5Mana | IsPresent$ Card.Self+counters_GE5_LEVEL | Description$ LEVEL 5+ 1/4 Elves you control have "{T}: Add {G}{G}." -SVar:L5Mana:AB$ Mana | Cost$ T | Produced$ G | Amount$ 2 | SpellDescription$ Add {G}{G}. +SVar:ABMana:AB$ Mana | Cost$ T | Produced$ G | Amount$ 2 | SpellDescription$ Add {G}{G}. +S:Mode$ Continuous | Affected$ Card.Self | SetPower$ 1 | SetToughness$ 4 | IsPresent$ Card.Self+counters_GE5_LEVEL +S:Mode$ Continuous | Affected$ Elf.YouCtrl | AddAbility$ ABMana | IsPresent$ Card.Self+counters_GE5_LEVEL | Description$ LEVEL 5+ 1/4 Elves you control have "{T}: Add {G}{G}." DeckHints:Type$Elf Oracle:Level up {1}{G} ({1}{G}: Put a level counter on this. Level up only as a sorcery.)\nLEVEL 1-4\n1/2\n{T}: Add {G}{G}.\nLEVEL 5+\n1/4\nElves you control have "{T}: Add {G}{G}." diff --git a/forge-gui/res/cardsfolder/k/knockout_blow.txt b/forge-gui/res/cardsfolder/k/knockout_blow.txt index 9b39b243ef4..6d7feaf5b8c 100644 --- a/forge-gui/res/cardsfolder/k/knockout_blow.txt +++ b/forge-gui/res/cardsfolder/k/knockout_blow.txt @@ -1,9 +1,7 @@ Name:Knockout Blow ManaCost:2 W Types:Instant -S:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ CostReduction | Relative$ True | EffectZone$ All | Description$ This spell costs {2} less to cast if it targets a red creature. -SVar:CostReduction:Count$Compare CheckTgt GE1.2.0 -SVar:CheckTgt:Targeted$Valid Creature.Red +S:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ 2 | ValidTarget$ Creature.Red | EffectZone$ All | Description$ This spell costs {2} less to cast if it targets a red creature. A:SP$ DealDamage | ValidTgts$ Creature.attacking,Creature.blocking | TgtPrompt$ Select target attacking or blocking creature | NumDmg$ 4 | SubAbility$ GainLife | SpellDescription$ CARDNAME deals 4 damage to target attacking or blocking creature and you gain 2 life. SVar:GainLife:DB$ GainLife | LifeAmount$ 2 | Defined$ You DeckHas:Ability$LifeGain diff --git a/forge-gui/res/cardsfolder/m/mascot_interception.txt b/forge-gui/res/cardsfolder/m/mascot_interception.txt index df7f46d54fb..a6b3401ab23 100644 --- a/forge-gui/res/cardsfolder/m/mascot_interception.txt +++ b/forge-gui/res/cardsfolder/m/mascot_interception.txt @@ -1,9 +1,7 @@ Name:Mascot Interception ManaCost:3 R Types:Sorcery -S:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ CostReduction | Relative$ True | EffectZone$ All | Description$ This spell costs {3} less to cast if it targets a creature token. -A:SP$ GainControl | Cost$ 3 R | ValidTgts$ Creature | TgtPrompt$ Select target creature | Untap$ True | LoseControl$ EOT | SubAbility$ DBPump | SpellDescription$ Gain control of target creature until end of turn. Untap that creature. It gets +2/+0 and gains haste until end of turn. +S:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ 3 | ValidTarget$ Creature.token | EffectZone$ All | Description$ This spell costs {3} less to cast if it targets a creature token. +A:SP$ GainControl | ValidTgts$ Creature | TgtPrompt$ Select target creature | Untap$ True | LoseControl$ EOT | SubAbility$ DBPump | SpellDescription$ Gain control of target creature until end of turn. Untap that creature. It gets +2/+0 and gains haste until end of turn. SVar:DBPump:DB$ Pump | Defined$ Targeted | NumAtt$ +2 | KW$ Haste -SVar:CostReduction:Count$Compare CheckTgt GE1.3.0 -SVar:CheckTgt:Targeted$Valid Creature.token Oracle:This spell costs {3} less to cast if it targets a creature token.\nGain control of target creature until end of turn. Untap that creature. It gets +2/+0 and gains haste until end of turn. diff --git a/forge-gui/res/cardsfolder/m/mystical_dispute.txt b/forge-gui/res/cardsfolder/m/mystical_dispute.txt index dce7afdf69e..a54be6166cc 100644 --- a/forge-gui/res/cardsfolder/m/mystical_dispute.txt +++ b/forge-gui/res/cardsfolder/m/mystical_dispute.txt @@ -1,8 +1,6 @@ Name:Mystical Dispute ManaCost:2 U Types:Instant -S:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ XBlue | Relative$ True | EffectZone$ All | Description$ CARDNAME costs {2} less to cast if it targets a blue spell. -SVar:XBlue:Count$Compare CheckTgt GE1.2.0 -SVar:CheckTgt:Targeted$Valid Card.Blue -A:SP$ Counter | Cost$ 2 U | TargetType$ Spell | TgtPrompt$ Select target spell | ValidTgts$ Card | UnlessCost$ 3 | SpellDescription$ This spell costs {2} less to cast if it targets a blue spell. Counter target spell unless its controller pays {3}. +S:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ 2 | ValidTarget$ Spell.Blue | EffectZone$ All | Description$ CARDNAME costs {2} less to cast if it targets a blue spell. +A:SP$ Counter | TargetType$ Spell | TgtPrompt$ Select target spell | ValidTgts$ Card | UnlessCost$ 3 | SpellDescription$ Counter target spell unless its controller pays {3}. Oracle:This spell costs {2} less to cast if it targets a blue spell.\nCounter target spell unless its controller pays {3}. diff --git a/forge-gui/res/cardsfolder/n/no_one_left_behind.txt b/forge-gui/res/cardsfolder/n/no_one_left_behind.txt index d27b001be01..fd053d1515b 100644 --- a/forge-gui/res/cardsfolder/n/no_one_left_behind.txt +++ b/forge-gui/res/cardsfolder/n/no_one_left_behind.txt @@ -1,9 +1,7 @@ Name:No One Left Behind ManaCost:4 B Types:Sorcery -S:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ CostReduction | Relative$ True | EffectZone$ All | Description$ This spell costs {3} less to cast if it targets a creature card with mana value 3 or less. -SVar:CostReduction:Count$Compare CheckTgt GE1.3.0 -SVar:CheckTgt:TargetedObjects$Valid Creature.cmcLE3 +S:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ 3 | ValidTarget$ Creature.cmcLE3 | EffectZone$ All | Description$ This spell costs {3} less to cast if it targets a creature card with mana value 3 or less. A:SP$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | TgtPrompt$ Choose target creature card in your graveyard | ValidTgts$ Creature.YouOwn | ChangeNum$ 1 | SpellDescription$ Return target creature card from your graveyard to the battlefield. DeckHas:Ability$Graveyard DeckHints:Ability$Graveyard|Mill|Dredge diff --git a/forge-gui/res/cardsfolder/o/out_of_the_way.txt b/forge-gui/res/cardsfolder/o/out_of_the_way.txt index 63634c6e253..11ecee95ed1 100644 --- a/forge-gui/res/cardsfolder/o/out_of_the_way.txt +++ b/forge-gui/res/cardsfolder/o/out_of_the_way.txt @@ -1,9 +1,7 @@ Name:Out of the Way ManaCost:3 U Types:Instant -S:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ CostReduction | Relative$ True | EffectZone$ All | Description$ This spell costs {2} less to cast if it targets a a green permanent. -SVar:CostReduction:Count$Compare CheckTgt GE1.2.0 -SVar:CheckTgt:Targeted$Valid Permanent.Green +S:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ 2 | ValidTarget$ Permanent.Green | EffectZone$ All | Description$ This spell costs {2} less to cast if it targets a a green permanent. A:SP$ ChangeZone | ValidTgts$ Permanent.nonLand+OppCtrl | TgtPrompt$ Select target nonland permanent an opponent controls | Origin$ Battlefield | Destination$ Hand | SubAbility$ DBDraw | SpellDescription$ Return target nonland permanent an opponent controls to its owner's hand. SVar:DBDraw:DB$ Draw Oracle:This spell costs {2} less to cast if it targets a green permanent.\nReturn target nonland permanent an opponent controls to its owner's hand.\nDraw a card. diff --git a/forge-gui/res/cardsfolder/p/price_of_fame.txt b/forge-gui/res/cardsfolder/p/price_of_fame.txt index 0dab5980912..fd7424bebff 100644 --- a/forge-gui/res/cardsfolder/p/price_of_fame.txt +++ b/forge-gui/res/cardsfolder/p/price_of_fame.txt @@ -1,10 +1,8 @@ Name:Price of Fame ManaCost:3 B Types:Instant -S:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ CostReduction | Relative$ True | EffectZone$ All | Description$ CARDNAME costs {2} less to cast if it targets a legendary creature. -A:SP$ Destroy | Cost$ 3 B | ValidTgts$ Creature | SubAbility$ DBSurveil | TgtPrompt$ Select target creature | SpellDescription$ Destroy target creature. -SVar:CostReduction:Count$Compare CheckTgt GE1.2.0 -SVar:CheckTgt:Targeted$Valid Creature.Legendary +S:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ 2 | ValidTarget$ Creature.Legendary | EffectZone$ All | Description$ CARDNAME costs {2} less to cast if it targets a legendary creature. +A:SP$ Destroy | ValidTgts$ Creature | SubAbility$ DBSurveil | TgtPrompt$ Select target creature | SpellDescription$ Destroy target creature. SVar:DBSurveil:DB$ Surveil | Amount$ 2 DeckHas:Ability$Surveil|Graveyard Oracle:This spell costs {2} less to cast if it targets a legendary creature.\nDestroy target creature.\nSurveil 2. (Look at the top two cards of your library, then put any number of them into your graveyard and the rest on top of your library in any order.) diff --git a/forge-gui/res/cardsfolder/s/savage_stomp.txt b/forge-gui/res/cardsfolder/s/savage_stomp.txt index ea9eaf87e9b..201d2bc4ef7 100644 --- a/forge-gui/res/cardsfolder/s/savage_stomp.txt +++ b/forge-gui/res/cardsfolder/s/savage_stomp.txt @@ -1,10 +1,8 @@ Name:Savage Stomp ManaCost:2 G Types:Sorcery -S:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ CostReduction | Relative$ True | EffectZone$ All | Description$ This spell costs {2} less to cast if it targets a Dinosaur you control. -SVar:CostReduction:Count$Compare CheckTgt GE1.2.0 -SVar:CheckTgt:Targeted$Valid Creature.Dinosaur+YouCtrl -A:SP$ PutCounter | Cost$ 2 G | AILogic$ Fight | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control to put a +1/+1 counter | CounterType$ P1P1 | CounterNum$ 1 | SubAbility$ DBFight | SpellDescription$ Put a +1/+1 counter on target creature you control. Then that creature fights target creature you don't control. +S:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ 2 | ValidTarget$ Dinosaur.YouCtrl | EffectZone$ All | Description$ This spell costs {2} less to cast if it targets a Dinosaur you control. +A:SP$ PutCounter | AILogic$ Fight | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control to put a +1/+1 counter | CounterType$ P1P1 | CounterNum$ 1 | SubAbility$ DBFight | SpellDescription$ Put a +1/+1 counter on target creature you control. Then that creature fights target creature you don't control. SVar:DBFight:DB$ Fight | Defined$ ParentTarget | ValidTgts$ Creature.YouDontCtrl | AILogic$ Always | TgtPrompt$ Select target creature you don't control DeckHas:Ability$Token|Counters DeckHints:Type$Dinosaur diff --git a/forge-gui/res/cardsfolder/t/titanic_brawl.txt b/forge-gui/res/cardsfolder/t/titanic_brawl.txt index e8fa211cfb8..a426bfd3fef 100644 --- a/forge-gui/res/cardsfolder/t/titanic_brawl.txt +++ b/forge-gui/res/cardsfolder/t/titanic_brawl.txt @@ -1,10 +1,8 @@ Name:Titanic Brawl ManaCost:1 G Types:Instant -S:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ CostReduction | EffectZone$ All | Relative$ True | Description$ This spell costs {1} less to cast if it targets a creature you control with a +1/+1 counter on it. -SVar:CostReduction:Count$Compare CheckTgt GE1.2.0 -SVar:CheckTgt:Targeted$Valid Creature.YouCtrl+counters_GE1_P1P1 +S:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ 1 | EffectZone$ All | ValidTarget$ Creature.YouCtrl+counters_GE1_P1P1 | Description$ This spell costs {1} less to cast if it targets a creature you control with a +1/+1 counter on it. DeckHints:Ability$Counters -A:SP$ Pump | Cost$ 1 G | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Choose target creature you control | SubAbility$ DBFight | SpellDescription$ Target creature you control fights target creature you don't control. (Each deals damage equal to its power to the other.) +A:SP$ Pump | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Choose target creature you control | SubAbility$ DBFight | SpellDescription$ Target creature you control fights target creature you don't control. (Each deals damage equal to its power to the other.) SVar:DBFight:DB$ Fight | Defined$ ParentTarget | ValidTgts$ Creature.YouDontCtrl | TgtPrompt$ Choose target creature you don't control Oracle:This spell costs {1} less to cast if it targets a creature you control with a +1/+1 counter on it.\nTarget creature you control fights target creature you don't control. (Each deals damage equal to its power to the other.) diff --git a/forge-gui/res/cardsfolder/t/torch_breath.txt b/forge-gui/res/cardsfolder/t/torch_breath.txt index da2da71e2c1..7fa4613eff3 100644 --- a/forge-gui/res/cardsfolder/t/torch_breath.txt +++ b/forge-gui/res/cardsfolder/t/torch_breath.txt @@ -1,9 +1,7 @@ Name:Torch Breath ManaCost:X R Types:Instant -S:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ CostReduction | Relative$ True | EffectZone$ All | Description$ This spell costs {2} less to cast if it targets a a blue permanent. -SVar:CostReduction:Count$Compare CheckTgt GE1.2.0 -SVar:CheckTgt:Targeted$Valid Permanent.Blue +S:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ 2 | ValidTarget$ Permanent.Blue | EffectZone$ All | Description$ This spell costs {2} less to cast if it targets a a blue permanent. K:This spell can't be countered. A:SP$ DealDamage | ValidTgts$ Creature,Planeswalker | TgtPrompt$ Select target creature or planeswalker | NumDmg$ X | SpellDescription$ CARDNAME deals X damage to target creature or planeswalker. SVar:X:Count$xPaid diff --git a/forge-gui/res/cardsfolder/upcoming/annex_sentry.txt b/forge-gui/res/cardsfolder/upcoming/annex_sentry.txt new file mode 100644 index 00000000000..93e33e08dfa --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/annex_sentry.txt @@ -0,0 +1,10 @@ +Name:Annex Sentry +ManaCost:2 W +Types:Artifact Creature Phyrexian Cleric +PT:1/4 +K:Toxic:1 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigExile | TriggerDescription$ When CARDNAME enters the battlefield, exile target artifact or creature an opponent controls with mana value 3 or less until CARDNAME leaves the battlefield. +SVar:TrigExile:DB$ ChangeZone | Origin$ Battlefield | Destination$ Exile | ValidTgts$ Artifact.OppCtrl+cmcLE3,Creature.OppCtrl+cmcLE3 | TgtPrompt$ Select target artifact or creature an opponent controls with mana value 3 or less | Duration$ UntilHostLeavesPlay +SVar:PlayMain1:TRUE +SVar:NeedsToPlay:Creature.OppCtrl+cmcLE3 +Oracle:Toxic 1 (Players dealt combat damage by this creature also get a poison counter.)\nWhen Annex Sentry enters the battlefield, exile target artifact or creature an opponent controls with mana value 3 or less until Annex Sentry leaves the battlefield. diff --git a/forge-gui/res/cardsfolder/upcoming/assemble_the_team.txt b/forge-gui/res/cardsfolder/upcoming/assemble_the_team.txt index c456a2888b3..238109d62d6 100644 --- a/forge-gui/res/cardsfolder/upcoming/assemble_the_team.txt +++ b/forge-gui/res/cardsfolder/upcoming/assemble_the_team.txt @@ -1,5 +1,5 @@ Name:Assemble the Team ManaCost:B G Types:Sorcery -A:SP$ ChangeZone | Defined$ TopThirdOfLibrary | ChooseFromDefined$ True | Origin$ Library | Destination$ Hand | ChangeType$ Card | Mandatory$ True | StackDescription$ SpellDescription | SpellDescription$ Search the top third of your library, rounded up, for a card. Put that card into your hand, then shuffle. +A:SP$ ChangeZone | Defined$ TopThirdOfLibrary | ChooseFromDefined$ True | Origin$ Library | ChangeNum$ 1 | Destination$ Hand | ChangeType$ Card | Mandatory$ True | StackDescription$ SpellDescription | SpellDescription$ Search the top third of your library, rounded up, for a card. Put that card into your hand, then shuffle. Oracle:Search the top third of your library, rounded up, for a card. Put that card into your hand, then shuffle. diff --git a/forge-gui/res/cardsfolder/upcoming/bladehold_war_whip.txt b/forge-gui/res/cardsfolder/upcoming/bladehold_war_whip.txt new file mode 100644 index 00000000000..0d0e2426a9b --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/bladehold_war_whip.txt @@ -0,0 +1,10 @@ +Name:Bladehold War-Whip +ManaCost:1 R W +Types:Artifact Equipment +K:For Mirrodin +S:Mode$ ReduceCost | ValidCard$ Equipment.Other | ValidSpell$ Activated.Equip | Activator$ You | Amount$ 1 | Description$ Equip abilities you activate of other Equipment cost {1} less to activate. +S:Mode$ Continuous | Affected$ Creature.EquippedBy | AddKeyword$ Double Strike | Description$ Equipped creature has double strike. +K:Equip:3 R W +DeckHas:Ability$Token & Type$Rebel & Color$Red +DeckHints:Type$Equipment +Oracle:For Mirrodin! (When this Equipment enters the battlefield, create a 2/2 red Rebel creature token, then attach this to it.)\nEquip abilities you activate of other Equipment cost {1} less to activate.\nEquipped creature has double strike.\nEquip {3}{R}{W} diff --git a/forge-gui/res/cardsfolder/upcoming/experimental_augury.txt b/forge-gui/res/cardsfolder/upcoming/experimental_augury.txt new file mode 100644 index 00000000000..5c5cad63ced --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/experimental_augury.txt @@ -0,0 +1,8 @@ +Name:Experimental Augury +ManaCost:1 U +Types:Instant +A:SP$ Dig | DigNum$ 3 | ChangeNum$ 1 | SubAbility$ DBProliferate | SpellDescription$ Look at the top three cards of your library. Put one of them into your hand and the rest on the bottom of your library in any order. +SVar:DBProliferate:DB$ Proliferate | SpellDescription$ Proliferate. (Choose any number of permanents and/or players, then give each another counter of each kind already there.) +DeckHas:Ability$Proliferate|Counters +DeckHints:Ability$Counters & Type$Planeswalker +Oracle:Look at the top three cards of your library. Put one of them into your hand and rest on the bottom of your library in any order. Proliferate. (Choose any number of permanents and/or players, then give each another counter of each kind already there.) \ No newline at end of file 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 e538754211c..c80fad8b03f 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 PU U Types:Legendary Planeswalker Jace Loyalty:5 K:Compleated diff --git a/forge-gui/res/cardsfolder/upcoming/minor_misstep.txt b/forge-gui/res/cardsfolder/upcoming/minor_misstep.txt new file mode 100644 index 00000000000..f05eb1a5ca6 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/minor_misstep.txt @@ -0,0 +1,5 @@ +Name:Minor Misstep +ManaCost:U +Types:Instant +A:SP$ Counter | TargetType$ Spell | TgtPrompt$ Select target spell with mana value 1 or less | ValidTgts$ Card.cmcLE1 | SpellDescription$ Counter target spell with mana value 1 or less. +Oracle:Counter target spell with mana value 1 or less. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/mite_overseer.txt b/forge-gui/res/cardsfolder/upcoming/mite_overseer.txt new file mode 100644 index 00000000000..5edf29b35a0 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/mite_overseer.txt @@ -0,0 +1,9 @@ +Name:Mite Overseer +ManaCost:3 W +Types:Creature Phyrexian Soldier +PT:4/2 +K:First strike +S:Mode$ Continuous | Affected$ Creature.YouCtrl+token | AddPower$ 1 | AddKeyword$ First Strike | Condition$ PlayerTurn | Description$ As long as it's your turn, creature tokens you control get +1/+0 and have first strike. +A:AB$ Token | Cost$ 3 WP | TokenScript$ c_1_1_a_phyrexian_mite_toxic_noblock | SpellDescription$ Create a 1/1 colorless Phyrexian Mite artifact creature token with toxic 1 and "This creature can't block." (Players dealt combat damage by it also get a poison counter. {W/P} can be paid with either {W} or 2 life.) +DeckHas:Ability$Token & Type$Artifact|Mite +Oracle:First strike\nAs long as it's your turn, creature tokens you control get +1/+0 and have first strike.\n{3}{W/P}: Create a 1/1 colorless Phyrexian Mite artifact creature token with toxic 1 and "This creature can't block." (Players dealt combat damage by it also get a poison counter. {W/P} can be paid with either {W} or 2 life.) diff --git a/forge-gui/res/cardsfolder/upcoming/mondrak_glory_dominus.txt b/forge-gui/res/cardsfolder/upcoming/mondrak_glory_dominus.txt new file mode 100644 index 00000000000..7e46eedccaf --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/mondrak_glory_dominus.txt @@ -0,0 +1,10 @@ +Name:Mondrak, Glory Dominus +ManaCost:2 W W +Types:Legendary Creature Phyrexian Horror +PT:4/4 +R:Event$ CreateToken | ActiveZones$ Battlefield | ValidToken$ Card.YouCtrl | ReplaceWith$ DoubleToken | Description$ If one or more tokens would be created under your control, twice that many of those tokens are created instead. +SVar:DoubleToken:DB$ ReplaceToken | Type$ Amount | ValidCard$ Card.YouCtrl +A:AB$ PutCounter | Cost$ 1 WP WP Sac<2/Artifact.Other;Creature.Other/other artifacts and/or creatures> | Defined$ Self | CounterType$ Indestructible | CounterNum$ 1 | SpellDescription$ Put an indestructible counter on CARDNAME. ({W/P} can be paid with either {W} or 2 life.) +DeckHints:Ability$Token +DeckHas:Ability$Sacrifice|Counters +Oracle:If one or more tokens would be created under your control, twice that many of those tokens are created instead.\n{1}{W/P}{W/P}, Sacrifice two other artifacts and/or creatures: Put an indestructible counter on Mondrak, Glory Dominus. ({W/P} can be paid with either {W} or 2 life.) \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/myr_convert.txt b/forge-gui/res/cardsfolder/upcoming/myr_convert.txt index 67f26b2af91..81826d19471 100644 --- a/forge-gui/res/cardsfolder/upcoming/myr_convert.txt +++ b/forge-gui/res/cardsfolder/upcoming/myr_convert.txt @@ -4,4 +4,4 @@ Types:Artifact Creature Phyrexian Myr PT:2/1 K:Toxic:1 A:AB$ Mana | Cost$ T PayLife<2> | Produced$ Any | SpellDescription$ Add one mana of any color. -Oracle:Toxic 1 (Players dealt combat damage by this creature also get a poison counter.)\nT, Pay 2 life: Add one mana of any color. +Oracle:Toxic 1 (Players dealt combat damage by this creature also get a poison counter.)\n{T}, Pay 2 life: Add one mana of any color. diff --git a/forge-gui/res/cardsfolder/upcoming/necrogen_rotpriest.txt b/forge-gui/res/cardsfolder/upcoming/necrogen_rotpriest.txt index ca46e761d55..41c6aca3c99 100644 --- a/forge-gui/res/cardsfolder/upcoming/necrogen_rotpriest.txt +++ b/forge-gui/res/cardsfolder/upcoming/necrogen_rotpriest.txt @@ -6,4 +6,4 @@ K:Toxic:2 T:Mode$ DamageDone | ValidSource$ Creature.YouCtrl+withToxic | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigPoison | TriggerZones$ Battlefield | TriggerDescription$ Whenever a creature you control with toxic deals combat damage to a player, that player gets an additional poison counter. SVar:TrigPoison:DB$ Poison | Defined$ TriggeredTarget | Num$ 1 A:AB$ Pump | Cost$ 1 B G | ValidTgts$ Creature.YouCtrl+withToxic | TgtPrompt$ Select target creature you control with toxic | KW$ Deathtouch | SpellDescription$ Target creature you control with toxic gains deathtouch until end of turn. -Oracle:Toxic 2 (Players dealt combat damage by this creature also get two poison counters.)\nWhenever a creature you control with toxic deals combat damage to a player, that player gets an additional poison counter.\n1BG: Target creature you control with toxic gains deathtouch until end of turn. +Oracle:Toxic 2 (Players dealt combat damage by this creature also get two poison counters.)\nWhenever a creature you control with toxic deals combat damage to a player, that player gets an additional poison counter.\n{1}{B}{G}: Target creature you control with toxic gains deathtouch until end of turn. diff --git a/forge-gui/res/cardsfolder/upcoming/nissa_ascended_animist.txt b/forge-gui/res/cardsfolder/upcoming/nissa_ascended_animist.txt new file mode 100644 index 00000000000..3b0b4a655eb --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/nissa_ascended_animist.txt @@ -0,0 +1,12 @@ +Name:Nissa, Ascended Animist +ManaCost:3 G G PG PG +Types:Legendary Planeswalker Nissa +Loyalty:7 +K:Compleated +A:AB$ Token | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | TokenScript$ g_x_x_phyrexian_horror | TokenPower$ L | TokenToughness$ L | SpellDescription$ Create an X/X green Phyrexian Horror creature token, where X is CARDNAME's loyalty. +SVar:L:Count$CardCounters.LOYALTY +A:AB$ Destroy | Cost$ SubCounter<1/LOYALTY> | Planeswalker$ True | ValidTgts$ Artifact,Enchantment | TgtPrompt$ Select target artifact or enchantment | SpellDescription$ Destroy target artifact or enchantment. +A:AB$ PumpAll | Cost$ SubCounter<7/LOYALTY> | Planeswalker$ True | Ultimate$ True | ValidCards$ Creature.YouCtrl | NumAtt$ X | NumDef$ X | KW$ Trample | SpellDescription$ Until end of turn, creatures you control get +1/+1 for each Forest you control and gain trample. +SVar:X:Count$Valid Forest.YouCtrl +DeckHas:Ability$Token & Type$Phyrexian|Horror +Oracle:Compleated ({G/P} can be paid with {G} or 2 life. For each {G/P} paid with life, this planeswalker enters with two fewer loyalty counters.)\n[+1]: Create an X/X green Phyrexian Horror creature token, where X is Nissa, Ascended Animist's loyalty.\n[-1]: Destroy target artifact or enchantment.\n[-7]: Until end of turn, creatures you control get +1/+1 for each Forest you control and gain trample. diff --git a/forge-gui/res/cardsfolder/upcoming/ossification.txt b/forge-gui/res/cardsfolder/upcoming/ossification.txt new file mode 100644 index 00000000000..abbf6b41908 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/ossification.txt @@ -0,0 +1,10 @@ +Name:Ossification +ManaCost:1 W +Types:Enchantment Aura +K:Enchant basic land you control +A:SP$ Attach | ValidTgts$ Land.YouCtrl+Basic | TgtPrompt$ Select target basic land you control | AILogic$ Pump +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigExile | TriggerDescription$ When CARDNAME enters the battlefield, exile target creature or planeswalker an opponent controls until CARDNAME leaves the battlefield. +SVar:TrigExile:DB$ ChangeZone | Origin$ Battlefield | Destination$ Exile | ValidTgts$ Creature.OppCtrl,Planeswalker.OppCtrl | TgtPrompt$ Select target creature or planeswalker an opponent controls | Duration$ UntilHostLeavesPlay +SVar:PlayMain1:TRUE +SVar:NeedsToPlay:Creature.OppCtrl +Oracle:Enchant basic land you control\nWhen Ossification enters the battlefield, exile target creature or planeswalker an opponent controls until Ossification leaves the battlefield. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/paladin_of_predation.txt b/forge-gui/res/cardsfolder/upcoming/paladin_of_predation.txt new file mode 100644 index 00000000000..641af8b073e --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/paladin_of_predation.txt @@ -0,0 +1,7 @@ +Name:Paladin of Predation +ManaCost:5 G G +Types:Creature Phyrexian Knight +PT:6/7 +K:Toxic:6 +S:Mode$ CantBlockBy | ValidAttacker$ Card.Self | ValidBlocker$ Creature.powerLE2 | Description$ CARDNAME can't be blocked by creatures with power 2 or less. +Oracle:Toxic 6 (Plavers dealt combat damage by this creature also get six poison counters.)\nPaladin of Predation can't be blocked by creatures with power 2 or less. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/resistance_reunited.txt b/forge-gui/res/cardsfolder/upcoming/resistance_reunited.txt new file mode 100644 index 00000000000..7d20fc1c82b --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/resistance_reunited.txt @@ -0,0 +1,7 @@ +Name:Resistance Reunited +ManaCost:1 W +Types:Instant +A:SP$ Pump | ValidTgts$ Creature | NumAtt$ 2 | NumDef$ 2 | SubAbility$ PumpEquipped | SpellDescription$ Target creature gets +2/+2 until end of turn. +SVar:PumpEquipped:DB$ PumpAll | ValidCards$ Creature.YouCtrl+equipped | KW$ Indestructible | SpellDescription$ Equipped creatures you control gain indestructible until end of turn. +DeckNeeds:Type$Equipment +Oracle:Target creature gets +2/+2 until end of turn.\nEquipped creatures you control gain indestructible until end of turn. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/rhuk_hexgold_nabber.txt b/forge-gui/res/cardsfolder/upcoming/rhuk_hexgold_nabber.txt new file mode 100644 index 00000000000..ceedab6b829 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/rhuk_hexgold_nabber.txt @@ -0,0 +1,11 @@ +Name:Rhuk, Hexgold Nabber +ManaCost:2 R +Types:Legendary Creature Goblin Rebel +PT:2/2 +K:Trample +K:Haste +T:Mode$ Attacks | ValidCard$ Creature.equipped+Other | Execute$ TrigAttach | TriggerDescription$ Whenever an equipped creature you control other than CARDNAME attacks or dies, you may attach all Equipment attached to that creature to NICKNAME. +T:Mode$ ChangesZone | ValidCard$ Creature.equipped+Other | Origin$ Battlefield | Destination$ Graveyard | Execute$ TrigAttach | OptionalDecider$ You | Secondary$ True | TriggerDescription$ Whenever an equipped creature you control other than CARDNAME attacks or dies, you may attach all Equipment attached to that creature to NICKNAME. +SVar:TrigAttach:DB$ Attach | Object$ AttachedTo TriggeredCard.Equipment | Defined$ Self +DeckNeeds:Type$Equipment +Oracle:Trample, haste\nWhenever an equipped creature you control other than Rhuk, Hexgold Nabber attacks or dies, you may attach all Equipment attached to that creature to Rhuk. diff --git a/forge-gui/res/cardsfolder/upcoming/urtet_remains_of_memnarch.txt b/forge-gui/res/cardsfolder/upcoming/urtet_remains_of_memnarch.txt index 554fbf7c8f8..d8138634941 100644 --- a/forge-gui/res/cardsfolder/upcoming/urtet_remains_of_memnarch.txt +++ b/forge-gui/res/cardsfolder/upcoming/urtet_remains_of_memnarch.txt @@ -2,7 +2,7 @@ Name:Urtet, Remains of Memnarch ManaCost:3 Types:Legendary Artifact Creature Myr PT:2/2 -T:Mode$ SpellCast | ValidCard$ Myr | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigToken | TriggerDescription$ Whenever you cast a Myr spell, create a 1/1 colorless Myr artifact creature token. +T:Mode$ SpellCast | ValidCard$ Myr | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigToken | TriggerDescription$ Whenever you cast a Myr spell, create a 1/1 colorless Myr artifact creature token. SVar:TrigToken:DB$ Token | TokenScript$ c_1_1_a_myr T:Mode$ Phase | Phase$ BeginCombat | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ UntapMyr | TriggerDescription$ At the beginning of combat on your turn, untap each Myr you control. SVar:UntapMyr:DB$ UntapAll | ValidCards$ Myr.YouCtrl diff --git a/forge-gui/res/cardsfolder/upcoming/vraska_betrayals_sting.txt b/forge-gui/res/cardsfolder/upcoming/vraska_betrayals_sting.txt index cc60e3a9d4e..c6a3598d639 100644 --- a/forge-gui/res/cardsfolder/upcoming/vraska_betrayals_sting.txt +++ b/forge-gui/res/cardsfolder/upcoming/vraska_betrayals_sting.txt @@ -4,12 +4,12 @@ Types:Legendary Planeswalker Vraska Loyalty:6 K:Compleated A:AB$ Draw | Cost$ AddCounter<0/LOYALTY> | Planeswalker$ True | SubAbility$ DBLoseLife | SpellDescription$ You draw a card and you lose 1 life. Proliferate. -SVar:DBLoseLife:DB$ LoseLife | LifeAmount$ 1 | SubAbility$ DBProliferate -SVar:DBProliferate:DB$ Proliferate +SVar:DBLoseLife:DB$ LoseLife | LifeAmount$ 1 | SubAbility$ DBProliferate +SVar:DBProliferate:DB$ Proliferate A:AB$ Animate | Cost$ SubCounter<2/LOYALTY> | Planeswalker$ True | ValidTgts$ Creature | TgtPrompt$ Select target creature | RemoveAllAbilities$ True | Colors$ Green | Types$ Artifact,Treasure | Abilities$ TreasureSac | RemoveCardTypes$ True | Duration$ Permanent | SpellDescription$ 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. SVar:TreasureSac:AB$ Mana | Cost$ T Sac<1/CARDNAME> | Produced$ Any | SpellDescription$ Add one mana of any color. A:AB$ Poison | Cost$ SubCounter<9/LOYALTY> | ValidTgts$ Player | TgtPrompt$ Select target player | ConditionCheckSVar$ X | ConditionSVarCompare$ LT9 | Num$ Difference | SpellDescription$ If target player has fewer than nine poison counters, they get a number of poison counters equal to the difference. SVar:X:TargetedPlayer$PoisonCounters SVar:Difference:Number$9/Minus.X -DeckHints:Ability$Counters & Keyword$Infect|Toxic|Poisonous +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. diff --git a/forge-gui/res/cardsfolder/v/verrak_warped_sengir.txt b/forge-gui/res/cardsfolder/v/verrak_warped_sengir.txt index e6a3ae81777..89c4ee547fb 100644 --- a/forge-gui/res/cardsfolder/v/verrak_warped_sengir.txt +++ b/forge-gui/res/cardsfolder/v/verrak_warped_sengir.txt @@ -7,5 +7,5 @@ K:Deathtouch K:Lifelink T:Mode$ AbilityCast | ValidActivatingPlayer$ You | ValidSA$ SpellAbility.nonManaAbility | Condition$ LifePaid | TriggerZones$ Battlefield | Execute$ TrigCopySpell | TriggerDescription$ Whenever you activate an ability that isn't a mana ability, if life was paid to activate it, you may pay that much life again. If you do, copy that ability. You may choose new targets for the copy. SVar:TrigCopySpell:AB$ CopySpellAbility | Cost$ PayLife | Defined$ TriggeredSpellAbility | MayChooseTarget$ True -SVar:X:Count$TriggeredLifeSpent +SVar:X:TriggerCount$LifeAmount Oracle:Flying, deathtouch, lifelink\nWhenever you activate an ability that isn't a mana ability, if life was paid to activate it, you may pay that much life again. If you do, copy that ability. You may choose new targets for the copy. diff --git a/forge-gui/res/cardsfolder/w/whack.txt b/forge-gui/res/cardsfolder/w/whack.txt index f916bab4dbb..1daadb78492 100644 --- a/forge-gui/res/cardsfolder/w/whack.txt +++ b/forge-gui/res/cardsfolder/w/whack.txt @@ -1,8 +1,6 @@ Name:Whack ManaCost:3 B Types:Sorcery -S:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ CostReduction | Relative$ True | EffectZone$ All | Description$ This spell costs {3} less to cast if it targets a a white creature. -SVar:CostReduction:Count$Compare CheckTgt GE1.3.0 -SVar:CheckTgt:Targeted$Valid Creature.White +S:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ 3 | ValidTarget$ Creature.White | EffectZone$ All | Description$ This spell costs {3} less to cast if it targets a a white creature. A:SP$ Pump | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ -4 | NumDef$ -4 | IsCurse$ True | SpellDescription$ Target creature gets -4/-4 until end of turn. Oracle:This spell costs {3} less to cast if it targets a white creature.\nTarget creature gets -4/-4 until end of turn. diff --git a/forge-gui/res/editions/Phyrexia All Will Be One Commander.txt b/forge-gui/res/editions/Phyrexia All Will Be One Commander.txt index 8071e63e9f7..9b21c961d93 100644 --- a/forge-gui/res/editions/Phyrexia All Will Be One Commander.txt +++ b/forge-gui/res/editions/Phyrexia All Will Be One Commander.txt @@ -2,7 +2,7 @@ Code=ONC Date=2023-02-10 Name=Phyrexia: All Will Be One Commander -Type=Expansion +Type=Commander ScryfallCode=ONC [cards] @@ -15,7 +15,7 @@ ScryfallCode=ONC 7 R Kemba's Banner @Wisnu Tan 8 R Norn's Choirmaster @Jason A. Engle 9 R Norn's Decree @Nestor Ossandon Leal -10 R Staff of the SToryteller @Dan Scott +10 R Staff of the Storyteller @Dan Scott 11 R Geth's Summons @Johann Bodin 12 R Phyresis Outbreak @Matthew G. Lewis 13 R Goldwardens' Gambit @Manuel Castañón @@ -28,3 +28,137 @@ ScryfallCode=ONC 20 R Glistening Sphere @Tuan Duong Chu 37 M Ixhel, Scion of Atraxa @Campbell White 38 M Neyali, Suns' Vanguard @Bryan Sola +39 M Otharri, Suns' Glory @Marta Nael +40 M Vishgraz, the Doomhive @Andrew Mar +43 R Clever Concealment @Alexey Kruglov +44 R Glimmer Lens @Sidharth Chaturvedi +45 R Kemba's Banner @Wisnu Tan +46 R Norn's Choirmaster @Jason A. Engle +47 R Norn's Decree @Nestor Ossandon Leal +48 R Staff of the Storyteller @Dan Scott +49 R Geth's Summons @Johann Bodin +50 R Phyresis Outbreak @Matthew G. Lewis +51 R Goldwardens' Gambit @Manuel Castañón +52 R Hexplate Wallbreaker @Aaron Miller +53 R Roar of Resistance @Lie Setiawan +54 R Vulshok Factory @Cristi Balanescu +55 R Contaminant Grafter @Lars Grant-West +56 R Glissa's Retriever @Josu Hernaiz +57 R Wurmquake @Xavier Ribeiro +58 R Glistening Sphere @Tuan Duong Chu +59 C Battle Screech @Randy Gallegos +60 R Call the Coppercoats @Cristi Balanescu +61 R Collective Effort @Eric Deschamps +62 R Court of Grace @Denman Rooke +63 C Cut a Deal @Fajareka Setiawan +64 M Elspeth Tirel @Michael Komarck +65 R Emeria Angel @Jim Murray +66 R Felidar Retreat @Ralph Horsley +67 M Finale of Glory @Stanton Feng +68 R Flawless Maneuver @Zoltan Boros +69 R Fumigate @Svetlin Velinov +70 U Generous Gift @Kev Walker +71 U Ghostly Prison @Daarken +72 U Goldnight Commander @Chris Rahn +73 U Grateful Apparition @Izzy +74 M Harmonious Archon @Anastasia Ovchinnikova +75 R Hour of Reckoning @Joseph Meehan +76 R Increasing Devotion @Daniel Ljunggren +77 C Intangible Virtue @ +78 C Mace of the Valiant @ +79 R Martial Coup @Greg Staples +80 R Maul of the Skyclaves @Joseph Meehan +81 C Mentor of the Meek @Jana Schirmer & Johannes Voss +82 U Midnight Haunting @Matt Stewart +83 R Norn's Annex @James Paick +84 U Path to Exile @Todd Lockwood +85 U Phantom General @Christopher Moeller +86 R Phyrexian Rebirth @Scott Chou +87 C Prava of the Steel Legion +88 R Silverwing Squadron @Johannes Voss +89 U Swords to Plowshares @Jesper Ejsing +90 R White Sun's Zenith @Mike Bierek +91 R Windborn Muse @Adam Rex +92 U Caress of Phyrexia @Karl Kopinski +93 U Ichor Rats @Matt Stewart +94 C Night's Whisper @John Severin Brassell +95 R Painful Truths @Winona Nelson +96 C Plague Stinger @Ryan Pancoast +97 R Chain Reaction @Trevor Claxton +98 M Dragonmaster Outcast @Raymond Swanland +99 C Hate Mirage @ +100 C Hordeling Outburst @Zoltan Boros +101 R Legion Warboss @Alex Konstad +102 U Loyal Apprentice @Joe Slucher +103 R Siege-Gang Commander @Aaron Miller +104 S Beast Within @Dave Allsop +105 C Blight Mamba @Drew Baker +106 U Carrion Call @Adrian Smith +107 C Cultivate @Anthony Palumbo +108 U Evolution Sage @Simon Dominic +109 U Mycosynth Fiend @Kev Walker +110 U Noxious Revival @Matt Stewart +111 R Phyrexian Swarmlord @Svetlin Velinov +112 R Scavenging Ooze @Austin Hsu +113 U Viridian Corrupter @Matt Cavotta +114 R Adriana, Captain of the Guard @Chris Rallis +115 R Assemble the Legion @Eric Deschamps +116 U Boros Charm @Zoltan Boros +117 R Culling Ritual @Lorenzo Mastroianni +118 U Heroic Reinforcements @Scott Murphy +119 R Jor Kadeen, the Prevailer @Austin Hsu +120 R Merciless Eviction @Richard Wright +121 U Moldervine Reclamation @Antonio José Manzanedo +122 U Mortify @Anthony Palumbo +123 U Putrefy @Clint Cearley +124 U Rip Apart @Anna Podedworna +125 C Arcane Signet @Dan Scott +126 C Boros Signet @Mike Sass +127 R Chromatic Lantern @Jung Park +128 C Commander's Sphere @Ryan Alexander Lee +129 U Contagion Clasp @Anthony Palumbo +130 U Fellwar Stone @John Avon +131 C Golgari Signet @Raoul Vitale +132 U Grafted Exoskeleton @Allen Williams +133 C Ichorclaw Myr @Eric Deschamps +134 R Idol of Oblivion @Piotr Dura +135 R Loxodon Warhammer @Jeremy Jarvis +136 U Mask of Memory @Alan Pollack +137 C Mind Stone @Adam Rex +138 R Myr Battlesphere @Franz Vohwinkel +139 U Plague Myr @Efrem Palacios +140 U Sol Ring @Mike Bierek +141 R Solemn Simulacrum @Donato Giancola +142 U Soul-Guide Lantern @Cliff Childs +143 U Talisman of Conviction @Lindsey Look +144 U Trailblazer's Boots @Zoltan Boros & Gabor Szikszai +145 C Bojuka Bog @Howard Lyon +146 U Boros Garrison @John Avon +147 U Buried Ruin @Franz Vohwinkel +148 R Canopy Vista @Adam Paquette +149 R Castle Ardenvale @Volkan Baǵa +150 R Castle Embereth @Jaime Jones +151 C Command Tower @Evan Shipard +152 R Exotic Orchard @Steven Belledin +153 C Forgotten Cave @Tony Szczudlo +154 R Fortified Village @Cliff Childs +155 R Furycalm Snarl @Sam Burley +156 R Karn's Bastion @Adam Paquette +157 R Kher Keep @Paolo Parente +158 U Krosan Verge @Ruxing Gao +159 U Myriad Landscape @Jonas De Ro +160 R Necroblossom Snarl @Sam Burley +161 C Path of Ancestry @Alayna Danner +162 U Sandsteppe Citadel @Sam Burley +163 U Secluded Steppe @Heather Hudson +164 R Shineshadow Snarl @Sam Burley +165 R Slayers' Stronghold @Karl Kopinski +166 R Sungrass Prairie @Alayna Danner +167 U Tainted Field @Don Hazeltine +168 U Tainted Wood @Rob Alexander +169 R Temple of Malady @Titus Lunter +170 R Temple of Plenty @Chris Ostrowski +171 R Temple of Silence @Adam Paquette +172 U Temple of the False God @James Zapata +173 R Temple of Triumph @Piotr Dura +174 R Windbrisk Heights @Omar Rayyan diff --git a/forge-gui/res/editions/Phyrexia All Will Be One.txt b/forge-gui/res/editions/Phyrexia All Will Be One.txt index 512ad08771c..343417a4508 100644 --- a/forge-gui/res/editions/Phyrexia All Will Be One.txt +++ b/forge-gui/res/editions/Phyrexia All Will Be One.txt @@ -8,13 +8,17 @@ ScryfallCode=ONE [cards] 2 U Annex Sentry @David Astruga 3 U Apostle of Invasion @Marcela Bolívar +7 C Compleat Devotion @Filipe Pagliuso 10 M Elesh Norn, Mother of Machines @Martina Fackova 11 R The Eternal Wanderer @Alix Branwyn +15 C Incisor Glider @Joe Slucher +17 U Infested Fleshcutter @José Parodi 18 U Jawbone Duelist @Nino Vecia 19 R Kemba, Kha Enduring @Zoltan Boros 23 M Mondrak, Glory Dominus @Jason A. Engle 24 R Norn's Wellspring @Jonas De Ro 26 U Ossification @Nino Vecia +28 C Planar Disruption @Campbell White 31 U Resistance Reunited @Aurore Folny 32 C Sinew Dancer @Campbell White 33 R Skrelv, Defector Mite @Brian Valeza @@ -31,24 +35,41 @@ ScryfallCode=ONE 62 C Mesmerizing Dose @Konstantin Porubov 63 R Mindsplice Apparatus @Ovidio Cartagena 64 U Minor Misstep @Lorenzo Mastroianni +69 U Tamiyo's Immobilizer @Daren Bader +73 U Transplant Theorist @Xavier Ribeiro 75 R Unctus, Grand Metatect @Andrew Mar 81 C Anoint with Affliction @David Astruga 82 R Archfiend of the Dross @Lie Setiawan 83 U Bilious Skulldweller @Svetlin Velinov 84 R Black Sun's Twilight @Jonas De Ro +85 C Blightbelly Rat @Yeong-Hao Han +86 C Bonepicker Skirge @Dave Kendall +87 C Chittering Skitterling @Nils Hamm +93 U Feed the Infection @Jason A. Engle 95 R Geth, Thane of Contracts @Martin de Diego Sádaba 98 R Karumonix, the Rat King @Jason A. Engle +99 U Necrogen Communion @Ernanda Souza 101 U Nimraiser Paladin @José Parodi 104 R Phyrexian Arena @Martina Fackova 105 M Phyrexian Obliterator @Maxim Kostin +107 U Scheming Aspirant @Lauren K. Cannon 108 U Sheoldred's Edict @Helge C. Balzer +114 C Vraan, Executioner Thane @Helge C. Balzer 115 M Vraska, Betrayal's Sting @Chase Stone +119 U Awaken the Sleeper @Mathias Kollros +124 U Cacophony Scamp @Svetlin Velinov 125 M Capricious Hellraiser @Durion 126 R Dragonwing Glider @Andreas Zafiratos +134 U Gleeful Demolition @Tuan Duong Chu +136 U Hexgold Halberd @Heonhwa Choe 137 C Hexgold Slash @Eli Minaya 138 R Koth, Fire of Resistance @Eric Wilkerson +143 U Oxidda Finisher @Vladimir Krisetskiy 145 R Red Sun's Twilight @Julian Kok Joon Wen +146 U Resistance Skywarden @Jarel Threat +147 C Sawblade Scamp @Helge C. Balzer 149 R Slobad, Iron Goblin @Chris Seaman +152 U Urabrask's Anointer @Aaron J. Riley 153 R Urabrask's Forge @Lie Setiawan 154 R Vindictive Flamestoker @Xavier Ribeiro 155 C Volt Charge @Deruchenko Alexander @@ -57,13 +78,17 @@ ScryfallCode=ONE 162 C Carnivorous Canopy @John Di Giovanni 163 R Conduit of Worlds @Jokubas Uogintas 166 R Evolved Spinoderm @Svetlin Velinov +168 U Expand the Sphere @Sergey Glushakov 169 R Green Sun's Twilight @Yeong-Hao Han 175 M Nissa, Ascended Animist @Chase Stone 176 U Noxious Assault @Billy Christian 178 U Paladin of Predation @Lorenzo Mastroianni 186 R Thrun, Breaker of Silence @Simon Dominic 189 M Tyrranax Rex @Tuan Duong Chu +190 U Tyvar's Stand @Kieran Yanner +191 U Unnatural Restoration @Jeremy Wilson 192 R Venerated Rotpriest @Brian Valeza +194 U Viral Spawning @Denis Zhbankov 196 M Atraxa, Grand Unifier @Marta Nael 197 U Bladehold War-Whip @Tony Foti 201 R Ezuri, Stalker of Spheres @Fariba Khamseh @@ -84,13 +109,20 @@ ScryfallCode=ONE 218 R Tyvar, Jubilant Brawler @Victor Adame Minguez 219 R Venser, Corpse Puppet @Igor Kieryluk 222 R Argentum Masticore @Zack Stella -225 R Graaz, Unstoppable Juggernaut @Nestor Ossandon Leal +224 C Basilica Skullbomb @Gaboleps +225 C Dross Skullbomb @Gaboleps 227 R The Filigree Sylex @ +228 C Furnace Skullbomb @Gaboleps +229 R Graaz, Unstoppable Juggernaut @Nestor Ossandon Leal +230 U Ichorplate Golem @Sam Wolfe Connelly +231 C Maze Skullbomb @Gaboleps 232 R Mirran Safehouse @Piotr Dura 233 R Monument to Perfection @Igor Kieryluk 234 U Myr Convert @José Parodi +239 U Prosthetic Injector @Zezhou Chen 241 R Soulless Jailer @Donato Giancola 242 M Staff of Compleation @Igor Krstic +243 C Surgical Skullbomb @Gaboleps 244 M Sword of Forge and Frontier @Scott Murphy 245 R Tablet of Compleation @Martin de Diego Sádaba 246 R Zenith Chronicler @Johann Bodin @@ -126,6 +158,10 @@ ScryfallCode=ONE 283 R Phyrexian Arena @Martina Fackova 284 R Green Sun's Twilight @Piotr Dura 286 C Sinew Dancer @Kekai Kotaki +290 C Bonepicker Skirge @Flavio Girón +292 C Sawblade Scamp @Flavio Girón +293 U Urabrask's Anointer @JungShan +296 U Necrogen Rotpriest @Dominik Mayer 297 U Myr Convert @JungShan 298 M Elesh Norn, Mother of Machines @Dominik Mayer 299 M Mondrak, Glory Dominus @Flavio Girón @@ -134,11 +170,14 @@ ScryfallCode=ONE 306 R Geth, Thane of Contracts @Flavio Girón 307 R Karumonix, the Rat King @Flavio Girón 308 M Phyrexian Obliterator @Yu-ki Nishimoto +310 M Capricious Hellraiser @Kekai Kotaki 311 R Slobad, Iron Goblin @Dominik Mayer 313 R Evolved Spinoderm @Ravenna Tran 314 M Tyrranax Rex @Flavio Girón +316 M Atraxa, Grand Unifier @Anato Finnstark 317 R Ezuri, Stalker of Spheres @JungShan 318 R Glissa Sunslayer @Ravenna Tran +319 R Kethek, Crucible Goliath @Flavio Girón 320 R Malcator, Purity Overseer @Dominik Mayer 322 R Ovika, Enigma Goliath @Dominik Mayer 324 R Venser, Corpse Puppet @Dominik Mayer @@ -150,7 +189,7 @@ ScryfallCode=ONE 330 R Kemba, Kha Enduring @Izumi Tomoki 332 R Jor Kadeen, First Goldwarden @Sansyu 333 R Melira, the Living Cure @Miyuki Aramaki -334 R Graaz, Unstoppable Juggernaut @Kutat +334 R Graaz, Unstoppable Juggernaut @kutay 335 R The Eternal Wanderer @Kento Matsuura 336 M Jace, the Perfected Mind @Showichi Furumi 337 M Vraska, Betrayal's Sting @Sansyu @@ -164,7 +203,9 @@ ScryfallCode=ONE 345 M Elesh Norn, Mother of Machines @Pedro Potier 346 M Mondrak, Glory Dominus @rishxxv 351 M Phyrexian Obliterator @Pedro Potier +353 M Capricious Hellraiser @Steve Ellis 355 M Tyrranax Rex @Phil Stone +357 M Atraxa, Grand Unifier @Thomas M. Baxa 358 M Staff of Compleation @Joshua Alvarado 359 M Sword of Forge and Frontier @Phil Stone 360 M Jace, the Perfected Mind @Joshua Alvarado @@ -189,6 +230,7 @@ ScryfallCode=ONE 379 R Blue Sun's Twilight @Piotr Dura 380 R Encroaching Mycosynth @Martin de Diego Sádaba 381 R Mercurial Spelldancer @Marcela Bolívar +382 R Mindsplice Apparatus @Ovidio Cartagena 383 R Black Sun's Twilight @Jonas De Ro 384 R Phyrexian Arena @Martina Fackova 387 R Urabrask's Forge @Lie Setiawan @@ -197,6 +239,9 @@ ScryfallCode=ONE 390 R Conduit of Worlds @Jokubas Uogintas 391 R Green Sun's Twilight @Yeong-Hao Han 392 R Venerated Rotpriest @Brian Valeza +394 R The Filigree Sylex @Leanna Crossan +395 R Mirran Safehouse @Piotr Dura +396 R Monument to Perfection @Igor Kieryluk 399 R Zenith Chronicler @Johann Bodin 401 R The Monumental Facade @Bruce Brenneise 403 R The Seedcore @Kasia 'Kafis' Zielińska @@ -220,6 +265,7 @@ ScryfallCode=ONE 422 R The Eternal Wanderer @Kento Matsuura 423 R Kemba, Kha Enduring @Izumi Tomoki 424 M Mondrak, Glory Dominus @Flavio Girón +426 C Sinew Dancer @Kekai Kotaki 427 R Skrelv, Defector Mite @Sidharth Chaturvedi 428 M Jace, the Perfected Mind @Showichi Furumi 429 M Jace, the Perfected Mind @Chase Stone @@ -229,22 +275,31 @@ ScryfallCode=ONE 440 M Phyrexian Obliterator @Yu-ki Nishimoto 442 M Vraska, Betrayal's Sting @Sansyu 443 M Vraska, Betrayal's Sting @Chase Stone +444 M Capricious Hellraiser @Kekai Kotaki 446 R Koth, Fire of Resistance @Ai Nanahira +447 C Sawblade Scamp @Flavio Girón 448 R Slobad, Iron Goblin @Dominik Mayer +450 U Urabrask's Anointer @JungShan +452 R Evolved Spinoderm @Ravenna Tran 453 M Nissa, Ascended Animist @Chase Stone 454 M Nissa, Ascended Animist @Gou Tanabe +457 M Tyrranax Rex @Flavio Girón +459 M Atraxa, Grand Unifier @Anato Finnstark +460 R Ezuri, Stalker of Spheres @JungShan 461 R Glissa Sunslayer @Ravenna Tran 462 R Jor Kadeen, First Goldwarden @Sansyu 463 R Kaito, Dancing Shadow @Kento Matsuura 464 R Kaya, Intangible Slayer @Showichi Furumi +465 R Kethek, Crucible Goliath @Flavio Girón 466 M Lukka, Bound to Ruin @Chase Stone 467 M Lukka, Bound to Ruin @Yuki Fujisawa +468 R Malcator, Purity Overseer @Dominik Mayer 469 R Melira, the Living Cure @Miyuki Aramaki 471 M Nahiri, the Unforgiving @Hiro Usuda 472 M Nahiri, the Unforgiving @Chase Stone +473 U Necrogen Rotpriest @Dominik Mayer 474 R Ovika, Enigma Goliath @Dominik Mayer 476 R Tyvar, Jubilant Brawler @Iinuma Yuuki 477 R Venser, Corpse Puppet @Dominik Mayer -478 R Graaz, Unstoppable Juggernaut @Kutat +478 R Graaz, Unstoppable Juggernaut @kutay 479 U Myr Convert @JungShan - diff --git a/forge-gui/res/editions/Unfinity.txt b/forge-gui/res/editions/Unfinity.txt index 234aa718532..d744ad15908 100644 --- a/forge-gui/res/editions/Unfinity.txt +++ b/forge-gui/res/editions/Unfinity.txt @@ -72,7 +72,7 @@ F60 R Treacherous Trapezist @Dave Greco 64 C Wizards of the _____ @Anna Christenson F65 R Animate Graveyard @Mike Burns 66 U Attempted Murder @Greg Staples -67 R Black Hole @Greg Borowski +67 R Black Hole @Greg Bobrowski 68 C Carnival Carnivore @Carl Critchlow 69 C Deadbeat Attendant @Sebastian Giacobino 70 U Discourtesy Clerk @Vladimir Krisetskiy @@ -96,7 +96,7 @@ F87 U A Real Handful @Tomek Larek 88 R Saw in Half @Sebastian Giacobino 89 U Scampire @Armand Baltazar 90 C Scared Stiff @José Parodi -F91 C Scooch @Filip Burburan +F91 C Scooch @Filipe Pagliuso 92 C Six-Sided Die @Ben Wootten 93 C Soul Swindler @Alexander Mokhov 94 C Step Right Up @Bruce Brenneise @@ -121,15 +121,15 @@ F112 R Ignacio of Myra's Marvels @Gaboleps F113 U Juggletron @Matt Dixon 114 C Minotaur de Force @Gaboleps 115 C Non-Human Cannonball @Ralph Horsley -F116 R Omniclown Colossus // Pie-roclasm @Ralph Horsley +F116 R Omniclown Colossus @Ralph Horsley 117 C One-Clown Band @Ralph Horsley -F118 M Opening Ceremony @Greg Borowski -119 U Priority Boarding @Greg Borowski +F118 M Opening Ceremony @Greg Bobrowski +119 U Priority Boarding @Greg Bobrowski 120 U Proficient Pyrodancer @John Thacker 121 C Rad Rascal @Dmitry Burmak F122 C Rock Star @Dave Allsop -123 C Slight Malfunction @Greg Borowski -F124 U Ticking Mime Bomb @Greg Borowski +123 C Slight Malfunction @Greg Bobrowski +F124 U Ticking Mime Bomb @Greg Bobrowski F125 U Trigger Happy @Jamroz Gary F126 M Vorthos, Steward of Myth @Caroline Gariba 127 C Wee Champion @Raluca Marinescu @@ -148,7 +148,7 @@ F129 C Alpha Guard @Caroline Gariba 140 C Grabby Tabby @Filipe Pagliuso F141 R Hardy of Myra's Marvels @Gaboleps F142 U Icing Manipulator @Raluca Marinescu -F143 C An Incident Has Occurred @Greg Borowski +F143 C An Incident Has Occurred @Greg Bobrowski F144 R Jermane, Pride of the Circus @Alexander Mokhov F145 M Killer Cosplay @Leonardo Santanna 146 U Lineprancers @Ben Maier @@ -237,7 +237,7 @@ F228 U Squirrel Stack @Andrea Radeck 229 R Storybook Ride @Dmitry Burmak F230 U The Superlatorium @Simon Dominic 231 R Swinging Ship @Mike Burns -232 U Trash Bin @Greg Borowski +232 U Trash Bin @Greg Bobrowski F233 U Trivia Contest @Caroline Gariba 234 R Tunnel of Love @Vladimir Krisetskiy 235 L Plains @Adam Paquette @@ -278,7 +278,7 @@ F268 U Pietra, Crafter of Clowns @Stephanie Buscema 270 U The Space Family Goblinson @David Semple 271 U Spinnerette, Arachnobat @David Semple F272 R Truss, Chief Engineer @Scooter -273 U Tusk and Whiskers +273 U Tusk and Whiskers @David Semple F274 R D00-DL, Caricaturist @Scooter 275 M Comet, Stellar Pup @David Semple 276 M Space Beleren @Scooter @@ -358,7 +358,7 @@ F346 R Treacherous Trapezist @Dave Greco 350 C Wizards of the _____ @Anna Christenson F351 R Animate Graveyard @Mike Burns 352 U Attempted Murder @Greg Staples -353 R Black Hole @Greg Borowski +353 R Black Hole @Greg Bobrowski 354 C Carnival Carnivore @Carl Critchlow 355 C Deadbeat Attendant @Sebastian Giacobino 356 U Discourtesy Clerk @Vladimir Krisetskiy @@ -407,15 +407,15 @@ F398 R Ignacio of Myra's Marvels @Gaboleps F399 U Juggletron @Matt Dixon 400 C Minotaur de Force @Gaboleps 401 C Non-Human Cannonball @Ralph Horsley -F402 R Omniclown Colossus // Pie-roclasm @Ralph Horsley +F402 R Omniclown Colossus @Ralph Horsley 403 C One-Clown Band @Ralph Horsley -F404 M Opening Ceremony @Greg Borowski -405 U Priority Boarding @Greg Borowski +F404 M Opening Ceremony @Greg Bobrowski +405 U Priority Boarding @Greg Bobrowski 406 U Proficient Pyrodancer @John Thacker 407 C Rad Rascal @Dmitry Burmak F408 C Rock Star @Dave Allsop -409 C Slight Malfunction @Greg Borowski -F410 U Ticking Mime Bomb @Greg Borowski +409 C Slight Malfunction @Greg Bobrowski +F410 U Ticking Mime Bomb @Greg Bobrowski F411 U Trigger Happy @Jamroz Gary F412 M Vorthos, Steward of Myth @Caroline Gariba 413 C Wee Champion @Raluca Marinescu @@ -434,7 +434,7 @@ F415 C Alpha Guard @Caroline Gariba 426 C Grabby Tabby @Filipe Pagliuso F427 R Hardy of Myra's Marvels @Gaboleps F428 U Icing Manipulator @Raluca Marinescu -F429 C An Incident Has Occurred @Greg Borowski +F429 C An Incident Has Occurred @Greg Bobrowski F430 R Jermane, Pride of the Circus @Alexander Mokhov F431 M Killer Cosplay @Leonardo Santanna 432 U Lineprancers @Ben Maier diff --git a/forge-gui/res/editions/Warhammer 40,000.txt b/forge-gui/res/editions/Warhammer 40,000 Commander.txt similarity index 50% rename from forge-gui/res/editions/Warhammer 40,000.txt rename to forge-gui/res/editions/Warhammer 40,000 Commander.txt index fe6848b7a18..a38cd2eeb93 100644 --- a/forge-gui/res/editions/Warhammer 40,000.txt +++ b/forge-gui/res/editions/Warhammer 40,000 Commander.txt @@ -1,7 +1,7 @@ [metadata] Code=40K Date=2022-10-07 -Name=Warhammer 40,000 +Name=Warhammer 40,000 Commander Type=Commander ScryfallCode=40K @@ -15,165 +15,325 @@ ScryfallCode=40K 7 M Magus Lucea Kane @Bartek Fedyczak 8 M Marneus Calgar @Slawomir Maniak 9 U And They Shall Know No Fear @Games Workshop +9★ U And They Shall Know No Fear @Games Workshop 10 R Celestine, the Living Saint @Irina Nordsol +10★ R Celestine, the Living Saint @Irina Nordsol 11 R Defenders of Humanity @Games Workshop +11★ R Defenders of Humanity @Games Workshop 12 R For the Emperor! @Games Workshop +12★ R For the Emperor! @Games Workshop 13 U Grey Knight Paragon @Games Workshop +13★ U Grey Knight Paragon @Games Workshop 14 R Space Marine Devastator @Games Workshop +14★ R Space Marine Devastator @Games Workshop 15 U Space Marine Scout @Games Workshop +15★ U Space Marine Scout @Games Workshop 16 U Thunderwolf Cavalry @Oleg Shekhovtsov +16★ U Thunderwolf Cavalry @Oleg Shekhovtsov 17 R Triumph of Saint Katherine @David Astruga +17★ R Triumph of Saint Katherine @David Astruga 18 R Ultramarines Honour Guard @Games Workshop +18★ R Ultramarines Honour Guard @Games Workshop 19 R Vexilus Praetor @Zezhou Chen +19★ R Vexilus Praetor @Zezhou Chen 20 R Zephyrim @Anna Steinbauer +20★ R Zephyrim @Anna Steinbauer 21 U Genestealer Locus @Diego Gisbert +21★ U Genestealer Locus @Diego Gisbert 22 R Genestealer Patriarch @Games Workshop +22★ R Genestealer Patriarch @Games Workshop 23 U Heralds of Tzeentch @Games Workshop +23★ U Heralds of Tzeentch @Games Workshop 24 R Lord of Change @Games Workshop +24★ R Lord of Change @Games Workshop 25 U Sicarian Infiltrator @Games Workshop +25★ U Sicarian Infiltrator @Games Workshop 26 R Sister of Silence @Games Workshop +26★ R Sister of Silence @Games Workshop 27 R Vanguard Suppressor @Fajareka Setiawan +27★ R Vanguard Suppressor @Fajareka Setiawan 28 R Anrakyr the Traveller @L J Koh +28★ R Anrakyr the Traveller @L J Koh 29 R Arco-Flagellant @Games Workshop +29★ R Arco-Flagellant @Games Workshop 30 R Biotransference @Anthony Devine +30★ R Biotransference @Anthony Devine 31 R Blight Grenade @Alexey Kruglov +31★ R Blight Grenade @Alexey Kruglov 32 R Chronomancer @Alexey Kruglov +32★ R Chronomancer @Alexey Kruglov 33 R Cryptek @David Álvarez +33★ R Cryptek @David Álvarez 34 U Flayed One @David Sondered +34★ U Flayed One @David Sondered 35 R Great Unclean One @Helge C. Balzer +35★ R Great Unclean One @Helge C. Balzer 36 U Hexmark Destroyer @Wonchun Choi +36★ U Hexmark Destroyer @Wonchun Choi 37 R Illuminor Szeras @Darren Tan +37★ R Illuminor Szeras @Darren Tan 38 R Lokhust Heavy Destroyer @Adrián Rodríguez Pérez +38★ R Lokhust Heavy Destroyer @Adrián Rodríguez Pérez 39 R Lychguard @Games Workshop +39★ R Lychguard @Games Workshop 40 R Mandate of Abaddon @Games Workshop +40★ R Mandate of Abaddon @Games Workshop 41 R Mortarion, Daemon Primarch @Helge C. Balzer +41★ R Mortarion, Daemon Primarch @Helge C. Balzer 42 R Necron Deathmark @Games Workshop +42★ R Necron Deathmark @Games Workshop 43 R Necron Overlord @David Sondered +43★ R Necron Overlord @David Sondered 44 R Nurgle's Conscription @Ørjan Ruttenborg Svendsen +44★ R Nurgle's Conscription @Ørjan Ruttenborg Svendsen 45 U Nurgle's Rot @Roman Tishenin +45★ U Nurgle's Rot @Roman Tishenin 46 R Out of the Tombs @Games Workshop +46★ R Out of the Tombs @Games Workshop 47 R Plague Drone @Games Workshop +47★ R Plague Drone @Games Workshop 48 U Plasmancer @Bartek Fedyczak +48★ U Plasmancer @Bartek Fedyczak 49 R Poxwalkers @Games Workshop +49★ R Poxwalkers @Games Workshop 50 R Primaris Eliminator @Logan Feliciano +50★ R Primaris Eliminator @Logan Feliciano 51 U Psychomancer @Alex Konstad +51★ U Psychomancer @Alex Konstad 52 R Royal Warden @Artur Nakhodkin +52★ R Royal Warden @Artur Nakhodkin 53 U Sanguinary Priest @Games Workshop +53★ U Sanguinary Priest @Games Workshop 54 U Sautekh Immortal @Games Workshop +54★ U Sautekh Immortal @Games Workshop 55 R Shard of the Nightbringer @Pierre Loyvet +55★ R Shard of the Nightbringer @Pierre Loyvet 56 R Shard of the Void Dragon @Alex Konstad +56★ R Shard of the Void Dragon @Alex Konstad 57 U Skorpekh Destroyer @Games Workshop +57★ U Skorpekh Destroyer @Games Workshop 58 R Skorpekh Lord @Adrián Rodríguez Pérez +58★ R Skorpekh Lord @Adrián Rodríguez Pérez 59 R Sloppity Bilepiper @Ørjan Ruttenborg Svendsen +59★ R Sloppity Bilepiper @Ørjan Ruttenborg Svendsen 60 R Tallyman of Nurgle @Games Workshop +60★ R Tallyman of Nurgle @Games Workshop 61 R Technomancer @David Álvarez +61★ R Technomancer @David Álvarez 62 R Their Name Is Death @Evan Shipard +62★ R Their Name Is Death @Evan Shipard 63 R Their Number Is Legion @Games Workshop +63★ R Their Number Is Legion @Games Workshop 64 R Tomb Blade @Darren Tan -65 R Trazyn the Infinite @Michał Makowski +64★ R Tomb Blade @Darren Tan +65 R Trazyn the Infinite @Michał Miłkowski +65★ R Trazyn the Infinite @Michał Miłkowski 66 U Triarch Praetorian @Lucas Terryn +66★ U Triarch Praetorian @Lucas Terryn 67 R Triarch Stalker @JB Casacop +67★ R Triarch Stalker @JB Casacop 68 R Venomcrawler @Ivan Dedov +68★ R Venomcrawler @Ivan Dedov 69 R The War in Heaven @Darren Tan +69★ R The War in Heaven @Darren Tan 70 U Acolyte Hybrid @Slawomir Maniak +70★ U Acolyte Hybrid @Slawomir Maniak 71 R Aspiring Champion @Miguel Sacristan +71★ R Aspiring Champion @Miguel Sacristan 72 U Bloodcrusher of Khorne @Games Workshop +72★ U Bloodcrusher of Khorne @Games Workshop 73 R Bloodthirster @Games Workshop +73★ R Bloodthirster @Games Workshop 74 U Chaos Terminator Lord @Games Workshop +74★ U Chaos Terminator Lord @Games Workshop 75 R Dark Apostle @Games Workshop +75★ R Dark Apostle @Games Workshop 76 R Exocrine @Cory Trego-Erdner +76★ R Exocrine @Cory Trego-Erdner 77 U Herald of Slaanesh @Alexander Mokhov +77★ U Herald of Slaanesh @Alexander Mokhov 78 R Keeper of Secrets @Miguel Sacristan +78★ R Keeper of Secrets @Miguel Sacristan 79 R Kharn the Betrayer @Kekai Kotaki +79★ R Kharn the Betrayer @Kekai Kotaki 80 R Knight Rampager @Games Workshop +80★ R Knight Rampager @Games Workshop 81 R Let the Galaxy Burn @Evan Shipard +81★ R Let the Galaxy Burn @Evan Shipard 82 U Noise Marine @Johan Grenier +82★ U Noise Marine @Johan Grenier 83 R The Red Terror @Bryan Sola +83★ R The Red Terror @Bryan Sola 84 R Screamer-Killer @David Auden Nash +84★ R Screamer-Killer @David Auden Nash 85 U Seeker of Slaanesh @Games Workshop +85★ U Seeker of Slaanesh @Games Workshop 86 U Aberrant @Games Workshop +86★ U Aberrant @Games Workshop 87 R Biophagus @Teodora Dumitriu +87★ R Biophagus @Teodora Dumitriu 88 R Bone Sabres @David Auden Nash +88★ R Bone Sabres @David Auden Nash 89 R Broodlord @Mathias Kollros +89★ R Broodlord @Mathias Kollros 90 R Clamavus @Adrián Rodríguez Pérez +90★ R Clamavus @Adrián Rodríguez Pérez 91 R Haruspex @Helge C. Balzer +91★ R Haruspex @Helge C. Balzer 92 R Hierophant Bio-Titan @David Astruga +92★ R Hierophant Bio-Titan @David Astruga 93 R Hormagaunt Horde @Nikola Matkovic +93★ R Hormagaunt Horde @Nikola Matkovic 94 R Lictor @Games Workshop +94★ R Lictor @Games Workshop 95 R Nexos @Josu Hernaiz +95★ R Nexos @Josu Hernaiz 96 R Old One Eye @Mathias Kollros +96★ R Old One Eye @Mathias Kollros 97 U Purestrain Genestealer @Games Workshop +97★ U Purestrain Genestealer @Games Workshop 98 R Sporocyst @Fajareka Setiawan +98★ R Sporocyst @Fajareka Setiawan 99 R Termagant Swarm @Nikola Matkovic +99★ R Termagant Swarm @Nikola Matkovic 100 R Tervigon @Xavier Ribeiro +100★ R Tervigon @Xavier Ribeiro 101 R Toxicrene @Logan Feliciano +101★ R Toxicrene @Logan Feliciano 102 U Tyranid Invasion @Games Workshop +102★ U Tyranid Invasion @Games Workshop 103 R Tyrant Guard @Xavier Ribeiro +103★ R Tyrant Guard @Xavier Ribeiro 104 R Assault Intercessor @Steve Argyle +104★ R Assault Intercessor @Steve Argyle 105 R Atalan Jackal @David Astruga +105★ R Atalan Jackal @David Astruga 106 R Belisarius Cawl @Lie Setiawan +106★ R Belisarius Cawl @Lie Setiawan 107 R Birth of the Imperium @Zezhou Chen +107★ R Birth of the Imperium @Zezhou Chen 108 R Blood for the Blood God! @Artur Nakhodkin +108★ R Blood for the Blood God! @Artur Nakhodkin 109 R Callidus Assassin @Bryan Sola +109★ R Callidus Assassin @Bryan Sola 110 R Chaos Defiler @Games Workshop +110★ R Chaos Defiler @Games Workshop 111 R Chaos Mutation @Lie Setiawan +111★ R Chaos Mutation @Lie Setiawan 112 R Commissar Severina Raine @Jake Murray +112★ R Commissar Severina Raine @Jake Murray 113 R Company Commander @Ørjan Ruttenborg Svendsen +113★ R Company Commander @Ørjan Ruttenborg Svendsen 114 R Cybernetica Datasmith @Marina Ortega Lorente +114★ R Cybernetica Datasmith @Marina Ortega Lorente 115 R Deathleaper, Terror Weapon @Mirko Failoni +115★ R Deathleaper, Terror Weapon @Mirko Failoni 116 U Deny the Witch @Games Workshop +116★ U Deny the Witch @Games Workshop 117 R Drach'Nyen @Artur Nakhodkin +117★ R Drach'Nyen @Artur Nakhodkin 118 R Epistolary Librarian @Games Workshop +118★ R Epistolary Librarian @Games Workshop 119 R Exalted Flamer of Tzeentch @Alexey Kruglov +119★ R Exalted Flamer of Tzeentch @Alexey Kruglov 120 R Exterminatus @Games Workshop +120★ R Exterminatus @Games Workshop 121 R The First Tyrannic War @Antonio José Manzanedo +121★ R The First Tyrannic War @Antonio José Manzanedo 122 R The Flesh Is Weak @Games Workshop +122★ R The Flesh Is Weak @Games Workshop 123 R Gargoyle Flock @Nikola Matkovic +123★ R Gargoyle Flock @Nikola Matkovic 124 R Ghyrson Starn, Kelermorph @Aaron J. Riley +124★ R Ghyrson Starn, Kelermorph @Aaron J. Riley 125 R Helbrute @Anton Solovianchyk +125★ R Helbrute @Anton Solovianchyk 126 R The Horus Heresy @Roman Tishenin +126★ R The Horus Heresy @Roman Tishenin 127 R Inquisitor Eisenhorn @Jake Murray +127★ R Inquisitor Eisenhorn @Jake Murray 128 R Kill! Maim! Burn! @Anthony Devine +128★ R Kill! Maim! Burn! @Anthony Devine 129 U The Lost and the Damned @Henry Peters +129★ U The Lost and the Damned @Henry Peters 130 R Lucius the Eternal @Evan Shipard +130★ R Lucius the Eternal @Evan Shipard 131 R Magnus the Red @Wonchun Choi +131★ R Magnus the Red @Wonchun Choi 132 R Malanthrope @Ørjan Ruttenborg Svendsen +132★ R Malanthrope @Ørjan Ruttenborg Svendsen 133 R Mawloc @Mathias Kollros +133★ R Mawloc @Mathias Kollros 134 R Mutalith Vortex Beast @Kekai Kotaki +134★ R Mutalith Vortex Beast @Kekai Kotaki 135 R Neyam Shai Murad @Fajareka Setiawan +135★ R Neyam Shai Murad @Fajareka Setiawan 136 R Pink Horror @Games Workshop +136★ R Pink Horror @Games Workshop 137 U Primaris Chaplain @Diego Gisbert +137★ U Primaris Chaplain @Diego Gisbert 138 R Ravener @Xavier Ribeiro +138★ R Ravener @Xavier Ribeiro 139 R The Ruinous Powers @Lie Setiawan +139★ R The Ruinous Powers @Lie Setiawan 140 R Shadow in the Warp @Kim Sokol +140★ R Shadow in the Warp @Kim Sokol 141 R Sister Hospitaller @Games Workshop +141★ R Sister Hospitaller @Games Workshop 142 R Sister Repentia @Seseon Yoon +142★ R Sister Repentia @Seseon Yoon 143 U Trygon Prime @Mathias Kollros +143★ U Trygon Prime @Mathias Kollros 144 R Tyranid Harridan @Billy Christian +144★ R Tyranid Harridan @Billy Christian 145 R Tyranid Prime @Mathias Kollros +145★ R Tyranid Prime @Mathias Kollros 146 R Tzaangor Shaman @Wisnu Tan +146★ R Tzaangor Shaman @Wisnu Tan 147 U Venomthrope @Antonio José Manzanedo +147★ U Venomthrope @Antonio José Manzanedo 148 R Winged Hive Tyrant @Antonio José Manzanedo +148★ R Winged Hive Tyrant @Antonio José Manzanedo 149 R Zoanthrope @Billy Christian +149★ R Zoanthrope @Billy Christian 150 R Canoptek Scarab Swarm @Alexey Kruglov +150★ R Canoptek Scarab Swarm @Alexey Kruglov 151 R Canoptek Spyder @Wisnu Tan +151★ R Canoptek Spyder @Wisnu Tan 152 R Canoptek Tomb Sentinel @Ivan Dedov +152★ R Canoptek Tomb Sentinel @Ivan Dedov 153 R Canoptek Wraith @Hector Ortiz +153★ R Canoptek Wraith @Hector Ortiz 154 R Convergence of Dominion @David Álvarez +154★ R Convergence of Dominion @David Álvarez 155 R Cryptothrall @Henry Peters +155★ R Cryptothrall @Henry Peters 156 R Ghost Ark @Alexey Kruglov +156★ R Ghost Ark @Alexey Kruglov 157 R The Golden Throne @Games Workshop +157★ R The Golden Throne @Games Workshop 158 U Goliath Truck @Diego Gisbert +158★ U Goliath Truck @Diego Gisbert 159 R Inquisitorial Rosette @Álvaro Calvo Escudero +159★ R Inquisitorial Rosette @Álvaro Calvo Escudero 160 R Knight Paladin @Games Workshop +160★ R Knight Paladin @Games Workshop 161 R Necron Monolith @Anthony Devine +161★ R Necron Monolith @Anthony Devine 162 U Night Scythe @Calder Moore +162★ U Night Scythe @Calder Moore 163 R Reaver Titan @Philip Helliwell +163★ R Reaver Titan @Philip Helliwell 164 R Redemptor Dreadnought @Philip Helliwell +164★ R Redemptor Dreadnought @Philip Helliwell 165 R Resurrection Orb @Hector Ortiz -166 R Sceptre of Eternal Glory @Michał Makowski +165★ R Resurrection Orb @Hector Ortiz +166 R Sceptre of Eternal Glory @Michał Miłkowski +166★ R Sceptre of Eternal Glory @Michał Miłkowski 167 R Thunderhawk Gunship @Games Workshop +167★ R Thunderhawk Gunship @Games Workshop 168 R Tomb Fortress @Josu Solano +168★ R Tomb Fortress @Josu Solano 169 M Imotekh the Stormlord @JB Casacop 170 M Szarekh, the Silent King @Anton Solovianchyk 171 M Abaddon the Despoiler @Johan Grenier @@ -188,141 +348,277 @@ ScryfallCode=40K 180 M The Swarmlord @Antonio José Manzanedo 181 R Fabricate @Johan Grenier 182 R Bastion Protector @Steve Argyle +182★ R Bastion Protector @Steve Argyle 183 R Collective Effort @Games Workshop +183★ R Collective Effort @Games Workshop 184 R Deploy to the Front @Aaron J. Riley +184★ R Deploy to the Front @Aaron J. Riley 185 R Entrapment Maneuver @Nikola Matkovic +185★ R Entrapment Maneuver @Nikola Matkovic 186 R Fell the Mighty @Steve Argyle +186★ R Fell the Mighty @Steve Argyle 187 R Hour of Reckoning @Games Workshop +187★ R Hour of Reckoning @Games Workshop 188 R Launch the Fleet @Games Workshop +188★ R Launch the Fleet @Games Workshop 189 R Martial Coup @Diego Gisbert +189★ R Martial Coup @Diego Gisbert 190 U Swords to Plowshares @Diego Gisbert +190★ U Swords to Plowshares @Diego Gisbert 191 U Aetherize @Xavier Ribeiro +191★ U Aetherize @Xavier Ribeiro 192 C Brainstorm @Alex Konstad +192★ C Brainstorm @Alex Konstad 193 U Reconnaissance Mission @Billy Christian +193★ U Reconnaissance Mission @Billy Christian 194 R Beacon of Unrest @Rafater +194★ R Beacon of Unrest @Rafater 195 U Bile Blight @Games Workshop +195★ U Bile Blight @Games Workshop 196 C Dark Ritual @Wonchun Choi +196★ C Dark Ritual @Wonchun Choi 197 C Darkness @Daarken +197★ C Darkness @Daarken 198 R Decree of Pain @Evan Shipard +198★ R Decree of Pain @Evan Shipard 199 U Defile @Stanton Feng +199★ U Defile @Stanton Feng 200 U Dread Return @L J Koh +200★ U Dread Return @L J Koh 201 C Go for the Throat @Nikola Matkovic +201★ C Go for the Throat @Nikola Matkovic 202 R Living Death @L J Koh +202★ R Living Death @L J Koh 203 R Mutilate @Games Workshop +203★ R Mutilate @Games Workshop 204 R Blasphemous Act @Games Workshop +204★ R Blasphemous Act @Games Workshop 205 R Chaos Warp @Heonhwa Choe +205★ R Chaos Warp @Heonhwa Choe 206 M Past in Flames @Johannes Mücke +206★ M Past in Flames @Johannes Mücke 207 R Reverberate @David Astruga +207★ R Reverberate @David Astruga 208 R Starstorm @Zhillustrator +208★ R Starstorm @Zhillustrator 209 R Warstorm Surge @Josu Solano +209★ R Warstorm Surge @Josu Solano 210 R Abundance @Irina Nordsol +210★ R Abundance @Irina Nordsol 211 C Cultivate @Slawomir Maniak +211★ C Cultivate @Slawomir Maniak 212 R Death's Presence @Josu Hernaiz +212★ R Death's Presence @Josu Hernaiz 213 C Explore @Games Workshop +213★ C Explore @Games Workshop 214 C Farseek @Irina Nordsol +214★ C Farseek @Irina Nordsol 215 R Hardened Scales @Mathias Kollros +215★ R Hardened Scales @Mathias Kollros 216 C Harrow @Filipe Pagliuso +216★ C Harrow @Filipe Pagliuso 217 U Inspiring Call @Irina Nordsol +217★ U Inspiring Call @Irina Nordsol 218 C New Horizons @Zhillustrator +218★ C New Horizons @Zhillustrator 219 C Overgrowth @Marina Ortega Lorente +219★ C Overgrowth @Marina Ortega Lorente 220 C Rampant Growth @Cory Trego-Erdner +220★ C Rampant Growth @Cory Trego-Erdner 221 U Bituminous Blast @JB Casacop +221★ U Bituminous Blast @JB Casacop 222 U Bred for the Hunt @David Astruga +222★ U Bred for the Hunt @David Astruga 223 C Deny Reality @Artur Nakhodkin +223★ C Deny Reality @Artur Nakhodkin 224 U Hull Breach @Sergio Cosmai +224★ U Hull Breach @Sergio Cosmai 225 U Mortify @Billy Christian +225★ U Mortify @Billy Christian 226 R Utter End @David Astruga +226★ R Utter End @David Astruga 227 C Arcane Signet @David Astruga +227★ C Arcane Signet @David Astruga 228 C Arcane Signet @Andrey Nyarl +228★ C Arcane Signet @Andrey Nyarl 229 C Arcane Signet @Kim Sokol +229★ C Arcane Signet @Kim Sokol 230 U Assault Suit @Games Workshop +230★ U Assault Suit @Games Workshop 231 R Caged Sun @Johan Grenier +231★ R Caged Sun @Johan Grenier 232 R Chromatic Lantern @Anton Solovianchyk +232★ R Chromatic Lantern @Anton Solovianchyk 233 C Commander's Sphere @Jake Murray +233★ C Commander's Sphere @Jake Murray 234 C Commander's Sphere @David Sondered +234★ C Commander's Sphere @David Sondered 235 C Commander's Sphere @Roman Tishenin +235★ C Commander's Sphere @Roman Tishenin 236 U Cranial Plating @L J Koh +236★ U Cranial Plating @L J Koh 237 R Endless Atlas @Pierre Loyvet +237★ R Endless Atlas @Pierre Loyvet 238 R Everflowing Chalice @Álvaro Calvo Escudero +238★ R Everflowing Chalice @Álvaro Calvo Escudero 239 R Gilded Lotus @Roman Tishenin +239★ R Gilded Lotus @Roman Tishenin 240 U Hedron Archive @Hector Ortiz +240★ U Hedron Archive @Hector Ortiz 241 U Herald's Horn @Artur Nakhodkin +241★ U Herald's Horn @Artur Nakhodkin 242 R Icon of Ancestry @Ivan Dedov +242★ R Icon of Ancestry @Ivan Dedov 243 U Mask of Memory @Roman Tishenin +243★ U Mask of Memory @Roman Tishenin 244 U Mind Stone @Steve Argyle +244★ U Mind Stone @Steve Argyle 245 U Mind Stone @David Sondered +245★ U Mind Stone @David Sondered 246 R Mystic Forge @Rafater +246★ R Mystic Forge @Rafater 247 R Sculpting Steel @Pierre Loyvet +247★ R Sculpting Steel @Pierre Loyvet 248 U Skullclamp @Helge C. Balzer +248★ U Skullclamp @Helge C. Balzer 249 U Sol Ring @Teodora Dumitriu +249★ U Sol Ring @Teodora Dumitriu 250 U Sol Ring @Kekai Kotaki +250★ U Sol Ring @Kekai Kotaki 251 U Sol Ring @Oleg Shekhovtsov +251★ U Sol Ring @Oleg Shekhovtsov 252 U Sol Ring @Lucas Terryn +252★ U Sol Ring @Lucas Terryn 253 U Talisman of Creativity @Hector Ortiz +253★ U Talisman of Creativity @Hector Ortiz 254 U Talisman of Dominance @Philip Helliwell +254★ U Talisman of Dominance @Philip Helliwell 255 U Talisman of Dominance @Miguel Sacristan +255★ U Talisman of Dominance @Miguel Sacristan 256 U Talisman of Hierarchy @Philip Helliwell +256★ U Talisman of Hierarchy @Philip Helliwell 257 U Talisman of Indulgence @Nikola Matkovic +257★ U Talisman of Indulgence @Nikola Matkovic 258 U Talisman of Progress @Philip Helliwell +258★ U Talisman of Progress @Philip Helliwell 259 C Thought Vessel @L J Koh +259★ C Thought Vessel @L J Koh 260 C Unstable Obelisk @Johannes Mücke +260★ C Unstable Obelisk @Johannes Mücke 261 C Wayfarer's Bauble @Helge C. Balzer +261★ C Wayfarer's Bauble @Helge C. Balzer 262 C Wayfarer's Bauble @Ivan Dedov +262★ C Wayfarer's Bauble @Ivan Dedov 263 U Worn Powerstone @David Sondered +263★ U Worn Powerstone @David Sondered 264 U Arcane Sanctum @Games Workshop +264★ U Arcane Sanctum @Games Workshop 265 U Ash Barrens @Sergei Leoluch Panin +265★ U Ash Barrens @Sergei Leoluch Panin 266 U Barren Moor @Rafater +266★ U Barren Moor @Rafater 267 C Cave of Temptation @Teodora Dumitriu +267★ C Cave of Temptation @Teodora Dumitriu 268 R Choked Estuary @LiXin Yin +268★ R Choked Estuary @LiXin Yin 269 R Cinder Glade @Sergio Cosmai +269★ R Cinder Glade @Sergio Cosmai 270 C Command Tower @Logan Feliciano +270★ C Command Tower @Logan Feliciano 271 C Command Tower @Games Workshop +271★ C Command Tower @Games Workshop 272 C Command Tower @Games Workshop +272★ C Command Tower @Games Workshop 273 U Crumbling Necropolis @David Álvarez +273★ U Crumbling Necropolis @David Álvarez 274 R Darkwater Catacombs @Eliz Roxs +274★ R Darkwater Catacombs @Eliz Roxs 275 C Desert of the Glorified @Stanton Feng +275★ C Desert of the Glorified @Stanton Feng 276 C Dismal Backwater @Henry Peters +276★ C Dismal Backwater @Henry Peters 277 C Evolving Wilds @Rafater +277★ C Evolving Wilds @Rafater 278 R Exotic Orchard @Filipe Pagliuso +278★ R Exotic Orchard @Filipe Pagliuso 279 R Foreboding Ruins @Josu Solano +279★ R Foreboding Ruins @Josu Solano 280 C Forgotten Cave @Andrey Nyarl +280★ C Forgotten Cave @Andrey Nyarl 281 U Frontier Bivouac @Álvaro Calvo Escudero +281★ U Frontier Bivouac @Álvaro Calvo Escudero 282 R Game Trail @LiXin Yin +282★ R Game Trail @LiXin Yin 283 U Memorial to Glory @Games Workshop +283★ U Memorial to Glory @Games Workshop 284 U Molten Slagheap @Anthony Devine +284★ U Molten Slagheap @Anthony Devine 285 U Myriad Landscape @Adrián Rodríguez Pérez +285★ U Myriad Landscape @Adrián Rodríguez Pérez 286 C Opal Palace @Logan Feliciano +286★ C Opal Palace @Logan Feliciano 287 C Path of Ancestry @Anthony Devine +287★ C Path of Ancestry @Anthony Devine 288 C Polluted Mire @Pierre Loyvet +288★ C Polluted Mire @Pierre Loyvet 289 R Port Town @Eliz Roxs +289★ R Port Town @Eliz Roxs 290 R Prairie Stream @Henry Peters +290★ R Prairie Stream @Henry Peters 291 U Reliquary Tower @Lucas Terryn +291★ U Reliquary Tower @Lucas Terryn 292 C Rugged Highlands @Oleg Shekhovtsov +292★ C Rugged Highlands @Oleg Shekhovtsov 293 C Scoured Barrens @Teodora Dumitriu +293★ C Scoured Barrens @Teodora Dumitriu 294 R Skycloud Expanse @Kamila Szutenberg +294★ R Skycloud Expanse @Kamila Szutenberg 295 R Sunken Hollow @Calder Moore +295★ R Sunken Hollow @Calder Moore 296 C Swiftwater Cliffs @David Álvarez +296★ C Swiftwater Cliffs @David Álvarez 297 R Temple of Abandon @Logan Feliciano +297★ R Temple of Abandon @Logan Feliciano 298 R Temple of Epiphany @Álvaro Calvo Escudero +298★ R Temple of Epiphany @Álvaro Calvo Escudero 299 R Temple of Mystery @Eliz Roxs +299★ R Temple of Mystery @Eliz Roxs 300 U Temple of the False God @Josu Hernaiz +300★ U Temple of the False God @Josu Hernaiz 301 C Terramorphic Expanse @Kekai Kotaki +301★ C Terramorphic Expanse @Kekai Kotaki 302 C Thornwood Falls @Josu Hernaiz +302★ C Thornwood Falls @Josu Hernaiz 303 C Tranquil Cove @Eliz Roxs +303★ C Tranquil Cove @Eliz Roxs 304 U Unclaimed Territory @Henry Peters +304★ U Unclaimed Territory @Henry Peters 305 C Vault of Whispers @Games Workshop +305★ C Vault of Whispers @Games Workshop 306 L Plains @Zhillustrator +306★ L Plains @Zhillustrator 307 L Island @Marina Ortega Lorente +307★ L Island @Marina Ortega Lorente 308 L Island @Calder Moore +308★ L Island @Calder Moore 309 L Island @LiXin Yin +309★ L Island @LiXin Yin 310 L Swamp @JB Casacop +310★ L Swamp @JB Casacop 311 L Swamp @Johan Grenier +311★ L Swamp @Johan Grenier 312 L Swamp @Calder Moore +312★ L Swamp @Calder Moore 313 L Swamp @Andrey Nyarl +313★ L Swamp @Andrey Nyarl 314 L Swamp @Kamila Szutenberg +314★ L Swamp @Kamila Szutenberg 315 L Mountain @Diego Gisbert +315★ L Mountain @Diego Gisbert 316 L Mountain @Evan Shipard +316★ L Mountain @Evan Shipard 317 L Forest @Kamila Szutenberg +317★ L Forest @Kamila Szutenberg 318 M Szarekh, the Silent King @Anton Solovianchyk 319 M Abaddon the Despoiler @Johan Grenier 320 M Inquisitor Greyfax @Lie Setiawan diff --git a/forge-gui/res/tokenscripts/g_x_x_phyrexian_horror.txt b/forge-gui/res/tokenscripts/g_x_x_phyrexian_horror.txt new file mode 100644 index 00000000000..6ff223f2f15 --- /dev/null +++ b/forge-gui/res/tokenscripts/g_x_x_phyrexian_horror.txt @@ -0,0 +1,6 @@ +Name:Phyrexian Horror Token +ManaCost:no cost +Types:Creature Phyrexian Horror +Colors:green +PT:*/* +Oracle: diff --git a/forge-gui/src/main/java/forge/gamemodes/match/input/InputSelectTargets.java b/forge-gui/src/main/java/forge/gamemodes/match/input/InputSelectTargets.java index ec8da2c1a9b..31e0ee2eb6d 100644 --- a/forge-gui/src/main/java/forge/gamemodes/match/input/InputSelectTargets.java +++ b/forge-gui/src/main/java/forge/gamemodes/match/input/InputSelectTargets.java @@ -390,7 +390,7 @@ public final class InputSelectTargets extends InputSyncronizedBase { } private boolean hasAllTargets() { - return sa.isMaxTargetChosen() || (divisionValues != null && sa.getStillToDivide() == 0) + return sa.isMaxTargetChosen() || (divisionValues != null && sa.getStillToDivide() <= 0) || (divisionValues == null && sa.isDividedAsYouChoose() && sa.getTargets().size() == sa.getStillToDivide()); } diff --git a/forge-gui/src/main/java/forge/player/HumanPlaySpellAbility.java b/forge-gui/src/main/java/forge/player/HumanPlaySpellAbility.java index f5010b2f039..69d53309c7e 100644 --- a/forge-gui/src/main/java/forge/player/HumanPlaySpellAbility.java +++ b/forge-gui/src/main/java/forge/player/HumanPlaySpellAbility.java @@ -94,6 +94,7 @@ public class HumanPlaySpellAbility { if (!ability.isCopied()) { ability.resetPaidHash(); + ability.setPaidLife(0); } ability = GameActionUtil.addExtraKeywordCost(ability); diff --git a/forge-gui/src/main/java/forge/player/TargetSelection.java b/forge-gui/src/main/java/forge/player/TargetSelection.java index e0f14b22041..c83970eb367 100644 --- a/forge-gui/src/main/java/forge/player/TargetSelection.java +++ b/forge-gui/src/main/java/forge/player/TargetSelection.java @@ -170,8 +170,8 @@ public class TargetSelection { //if no valid cards to target and only one valid non-card, auto-target the non-card //this handles "target opponent" cards, along with any other cards that can only target a single non-card game entity //note that we don't handle auto-targeting cards this way since it's possible that the result will be undesirable - List nonCardTargets = tgt.getAllCandidates(this.ability, true, true); if (minTargets != 0) { + List nonCardTargets = tgt.getAllCandidates(this.ability, true, true); if (nonCardTargets.size() == 1) { return ability.getTargets().add(nonCardTargets.get(0)); } diff --git a/pom.xml b/pom.xml index bef1b353f41..f13edc15d68 100644 --- a/pom.xml +++ b/pom.xml @@ -70,9 +70,9 @@ - cardforge-repo - Forge Releases - ftp://ftp.cardforge.org/maven/releases/ + github + Github Releases + https://maven.pkg.github.com/Card-Forge/forge cardforge-snapshot-repo