mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-12 00:38:44 +00:00
Huge Alchemy Cleanup
This commit is contained in:
@@ -160,11 +160,8 @@ public class ImageUtil {
|
||||
return getImageRelativePath(cp, face, true, true);
|
||||
}
|
||||
|
||||
public static String getScryfallDownloadUrl(PaperCard cp, String face, String setCode, String langCode, boolean useArtCrop){
|
||||
return getScryfallDownloadUrl(cp, face, setCode, langCode, useArtCrop, false);
|
||||
}
|
||||
|
||||
public static String getScryfallDownloadUrl(PaperCard cp, String face, String setCode, String langCode, boolean useArtCrop, boolean hyphenateAlchemy){
|
||||
public static String getScryfallDownloadUrl(PaperCard cp, String face, String setCode, String langCode, boolean useArtCrop){
|
||||
String editionCode;
|
||||
if (setCode != null && !setCode.isEmpty())
|
||||
editionCode = setCode;
|
||||
@@ -183,12 +180,6 @@ public class ImageUtil {
|
||||
} else if (cardCollectorNumber.startsWith("OPC2")) {
|
||||
editionCode = "opc2";
|
||||
cardCollectorNumber = cardCollectorNumber.substring("OPC2".length());
|
||||
} else if (hyphenateAlchemy) {
|
||||
if (!cardCollectorNumber.startsWith("A")) {
|
||||
return null;
|
||||
}
|
||||
|
||||
cardCollectorNumber = cardCollectorNumber.replace("A", "A-");
|
||||
}
|
||||
String versionParam = useArtCrop ? "art_crop" : "normal";
|
||||
String faceParam = "";
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
Name:A-Baba Lysaga, Night Witch
|
||||
ManaCost:2 B G
|
||||
Types:Legendary Creature Human Warlock
|
||||
PT:4/4
|
||||
A:AB$ LoseLife | Cost$ T Sac<X/Permanent> | Defined$ Player.Opponent | LifeAmount$ 3 | AnnounceType$ ChooseNumber | Min$ 0 | Max$ 3 | ConditionCheckSVar$ Y | ConditionSVarCompare$ GE3 | NumCards$ 3 | SubAbility$ DBGainThree | SpellDescription$ If there were three or more card types among the sacrificed permanents, each opponent loses 3 life, you gain 3 life, and you draw three cards.
|
||||
SVar:DBGainThree:DB$ GainLife | LifeAmount$ 3 | SubAbility$ DBDrawThree | ConditionCheckSVar$ Y | ConditionSVarCompare$ GE3
|
||||
SVar:DBDrawThree:DB$ Draw | NumCards$ 3 | ConditionCheckSVar$ Y | ConditionSVarCompare$ GE3
|
||||
SVar:X:Count$ChosenNumber
|
||||
SVar:Y:Sacrificed$CardTypes
|
||||
DeckHas:Ability$Sacrifice
|
||||
Oracle:{T}, Sacrifice up to three permanents: If there were three or more card types among the sacrificed permanents, each opponent loses 3 life, you gain 3 life, and you draw three cards.
|
||||
@@ -1,6 +0,0 @@
|
||||
Name:A-Divide by Zero
|
||||
ManaCost:2 U
|
||||
Types:Instant
|
||||
A:SP$ ChangeZone | ValidTgts$ Permanent.cmcGE1,Card.inZoneStack+cmcGE1 | TgtZone$ Stack,Battlefield | Origin$ Battlefield,Stack | Destination$ Hand | SubAbility$ DBLearn | SpellDescription$ Return target spell or permanent with mana value 1 or greater to its owner's hand. If its mana value was 4 or less, learn.
|
||||
SVar:DBLearn:DB$ Learn | ConditionDefined$ Targeted | ConditionPresent$ Card.cmcLE4 | ConditionCompare$ EQ1
|
||||
Oracle:Return target spell or permanent with mana value 1 or greater to its owner's hand. If its mana value was 4 or less, learn.
|
||||
@@ -1,11 +0,0 @@
|
||||
Name:A-Esika's Chariot
|
||||
ManaCost:3 G
|
||||
Types:Legendary Artifact Vehicle
|
||||
PT:4/4
|
||||
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigToken | TriggerDescription$ When CARDNAME enters, create a 2/2 green Cat creature token.
|
||||
SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ g_2_2_cat
|
||||
T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigCopy | TriggerDescription$ Whenever CARDNAME attacks, create a token that's a copy of target token you control.
|
||||
SVar:TrigCopy:DB$ CopyPermanent | ValidTgts$ Permanent.token+YouCtrl | TgtPrompt$ Select target token you control | NumCopies$ 1
|
||||
K:Crew:2
|
||||
DeckHas:Ability$Token
|
||||
Oracle:When Esika's Chariot enters, create a 2/2 green Cat creature token.\nWhenever Esika's Chariot attacks, create a token that's a copy of target token you control.\nCrew 2
|
||||
@@ -1,7 +0,0 @@
|
||||
Name:A-Faceless Haven
|
||||
ManaCost:no cost
|
||||
Types:Snow Land
|
||||
A:AB$ Mana | Cost$ T | Produced$ C | SpellDescription$ Add {C}.
|
||||
A:AB$ Animate | Cost$ S S S | Defined$ Self | Power$ 3 | Toughness$ 3 | Types$ Creature | AddAllCreatureTypes$ True | Keywords$ Vigilance | StackDescription$ CARDNAME becomes a 3/3 creature with vigilance and all creature types until end of turn. It's still a land. | SpellDescription$ CARDNAME becomes a 3/3 creature with vigilance and all creature types until end of turn. It's still a land.
|
||||
DeckNeeds:Type$Snow
|
||||
Oracle:{T}: Add {C}.\n{S}{S}{S}: Faceless Haven becomes a 3/3 creature with vigilance and all creature types until end of turn. It's still a land.
|
||||
@@ -1,13 +0,0 @@
|
||||
Name:A-Goldspan Dragon
|
||||
ManaCost:3 R R
|
||||
Types:Creature Dragon
|
||||
PT:4/4
|
||||
K:Flying
|
||||
K:Haste
|
||||
T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigToken | TriggerDescription$ Whenever CARDNAME attacks, create a Treasure token.
|
||||
SVar:TrigToken:DB$ Token | TokenScript$ c_a_treasure_sac
|
||||
S:Mode$ Continuous | Affected$ Card.Treasure+YouCtrl | AddAbility$ Mana | Description$ Treasures you control have "{T}, Sacrifice this artifact: Add two mana of any one color."
|
||||
SVar:Mana:AB$ Mana | Cost$ T Sac<1/CARDNAME/this artifact> | Produced$ Any | Amount$ 2 | SpellDescription$ Add two mana of any one color.
|
||||
SVar:HasAttackEffect:TRUE
|
||||
DeckHas:Ability$Token|Sacrifice & Type$Treasure|Artifact
|
||||
Oracle:Flying, haste\nWhenever Goldspan Dragon attacks, create a Treasure token.\nTreasures you control have "{T}, Sacrifice this artifact: Add two mana of any one color."
|
||||
@@ -1,10 +0,0 @@
|
||||
Name:A-Hullbreaker Horror
|
||||
ManaCost:5 U U
|
||||
Types:Creature Kraken Horror
|
||||
PT:7/8
|
||||
K:Flash
|
||||
T:Mode$ SpellCast | ValidCard$ Card | ValidActivatingPlayer$ You | Execute$ TrigCharm | TriggerZones$ Battlefield | TriggerDescription$ Whenever you cast a spell, ABILITY
|
||||
SVar:TrigCharm:DB$ Charm | Choices$ ControlReturn,ControlBounce | MinCharmNum$ 0 | CharmNum$ 1
|
||||
SVar:ControlReturn:DB$ ChangeZone | ValidTgts$ Card.YouDontCtrl | TgtPrompt$ Select target spell you don't control | TgtZone$ Stack | Origin$ Stack | Destination$ Hand | SpellDescription$ Return target spell you don't control to its owner's hand.
|
||||
SVar:ControlBounce:DB$ ChangeZone | ValidTgts$ Permanent.nonLand | TgtPrompt$ Select target nonland permanent | TgtZone$ Battlefield | Origin$ Battlefield | Destination$ Hand | SpellDescription$ Return target nonland permanent to its owner's hand.
|
||||
Oracle:Flash\nWhenever you cast a spell, choose up to one —\n• Return target spell you don't control to its owner's hand.\n• Return target nonland permanent to its owner's hand.
|
||||
@@ -1,28 +0,0 @@
|
||||
Name:A-Kumano Faces Kakkazan
|
||||
ManaCost:R
|
||||
Types:Enchantment Saga
|
||||
K:Chapter:3:DBDamage,DBEffectAddCounter,DBTransform
|
||||
SVar:DBDamage:DB$ DamageAll | NumDmg$ 1 | ValidPlayers$ Opponent | ValidCards$ Planeswalker.OppCtrl | SpellDescription$ CARDNAME deals 1 damage to each opponent and 1 damage to each planeswalker they control.
|
||||
SVar:DBEffectAddCounter:DB$ Effect | Triggers$ TrigSpellCast | SpellDescription$ When you cast your next creature spell this turn, that creature enters with an additional +1/+1 counter on it.
|
||||
SVar:TrigSpellCast:Mode$ SpellCast | ValidCard$ Creature | ValidActivatingPlayer$ You | OneOff$ True | Static$ True | TriggerZones$ Command | Execute$ ReplEffAddCounter | TriggerDescription$ When you cast your next creature spell this turn, that creature enters with an additional +1/+1 counter on it.
|
||||
SVar:ReplEffAddCounter:DB$ Effect | ReplacementEffects$ ETBAddCounter | RememberObjects$ TriggeredCard | Execute$ TrigRemoveSelf
|
||||
SVar:ETBAddCounter:Event$ Moved | Origin$ Stack | Destination$ Battlefield | ValidCard$ Card.IsRemembered | ReplaceWith$ ETBAddExtraCounter | ReplacementResult$ Updated
|
||||
SVar:ETBAddExtraCounter:DB$ PutCounter | ETB$ True | Defined$ ReplacedCard | CounterType$ P1P1 | CounterNum$ 1 | SubAbility$ TrigRemoveSelf
|
||||
SVar:TrigRemoveSelf:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile
|
||||
SVar:DBTransform:DB$ ChangeZone | Origin$ Battlefield | Destination$ Exile | RememberChanged$ True | SubAbility$ DBReturn | SpellDescription$ Exile this Saga, then return it to the battlefield transformed under your control.
|
||||
SVar:DBReturn:DB$ ChangeZone | Defined$ Remembered | Origin$ Exile | Destination$ Battlefield | Transformed$ True | GainControl$ True | SubAbility$ DBCleanup
|
||||
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
||||
DeckHas:Ability$Counters
|
||||
AlternateMode:DoubleFaced
|
||||
Oracle:(As this Saga enters and after your draw step, add a lore counter.)\nI — Kumano Faces Kakkazan deals 1 damage to each opponent and each planeswalker they control.\nII — When you cast your next creature spell this turn, that creature enters with an additional +1/+1 counter on it.\nIII — Exile this Saga, then return it to the battlefield transformed under your control.
|
||||
|
||||
ALTERNATE
|
||||
|
||||
Name:A-Etching of Kumano
|
||||
ManaCost:no cost
|
||||
Colors:red
|
||||
Types:Enchantment Creature Human Shaman
|
||||
PT:2/2
|
||||
R:Event$ Moved | ValidLKI$ Creature.DamagedByCard.YouCtrl;Emblem.YouCtrl | Destination$ Graveyard | ReplaceWith$ DBExile | ActiveZones$ Battlefield | Description$ If a creature dealt damage this turn by a source you controlled would die, exile it instead.
|
||||
SVar:DBExile:DB$ ChangeZone | Defined$ ReplacedCard | Origin$ Battlefield | Destination$ Exile
|
||||
Oracle:If a creature dealt damage this turn by a source you controlled would die, exile it instead.
|
||||
@@ -1,8 +0,0 @@
|
||||
Name:A-Luminarch Aspirant
|
||||
ManaCost:1 W
|
||||
Types:Creature Human Cleric
|
||||
PT:1/1
|
||||
T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ At the beginning of your end step, put a +1/+1 counter on target creature you control.
|
||||
SVar:TrigPutCounter:DB$ PutCounter | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control | CounterType$ P1P1 | CounterNum$ 1
|
||||
DeckHas:Ability$Counters
|
||||
Oracle:At the beginning of your end step, put a +1/+1 counter on target creature you control.
|
||||
@@ -1,17 +0,0 @@
|
||||
Name:A-Monster Manual
|
||||
ManaCost:3 G
|
||||
Types:Artifact
|
||||
A:AB$ ChangeZone | Cost$ 1 G T | Origin$ Hand | Destination$ Battlefield | ChangeType$ Creature | ChangeNum$ 1 | SorcerySpeed$ True | SpellDescription$ You may put a creature card from your hand onto the battlefield. Activate only as a sorcery.
|
||||
AlternateMode:Adventure
|
||||
Oracle:{1}{G}, {T}: You may put a creature card from your hand onto the battlefield. Activate only as a sorcery.
|
||||
|
||||
ALTERNATE
|
||||
|
||||
Name:A-Zoological Study
|
||||
ManaCost:2 G
|
||||
Types:Sorcery Adventure
|
||||
A:SP$ Mill | NumCards$ 5 | RememberMilled$ True | SubAbility$ DBChangeZone | SpellDescription$ Mill five cards, then return a creature card milled this way to your hand.
|
||||
SVar:DBChangeZone:DB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | Hidden$ True | Mandatory$ True | ChangeType$ Creature.IsRemembered | ChangeTypeDesc$ creature cards milled this way | ChangeNum$ 1 | SelectPrompt$ Choose a creature card milled this way | SubAbility$ DBCleanup
|
||||
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
||||
DeckHas:Ability$Mill|Graveyard
|
||||
Oracle:Mill five cards, then return a creature card milled this way to your hand.
|
||||
@@ -89,7 +89,7 @@ Name=MTG Arena Chromatic Cube June 24
|
||||
1 Voracious Greatshark|IKO
|
||||
1 Dream Eater|GRN
|
||||
1 Torrential Gearhulk|KLD
|
||||
1 A-Hullbreaker Horror|VOW
|
||||
1 Hullbreaker Horror|VOW
|
||||
1 Jin-Gitaxias, Progress Tyrant|NEO
|
||||
1 Scholar of the Lost Trove|JMP
|
||||
1 Teferi, Master of Time|M21
|
||||
|
||||
@@ -298,36 +298,34 @@ ScryfallCode=HBG
|
||||
286 L Forest @Julian Kok Joon Wen
|
||||
|
||||
[rebalanced]
|
||||
A85 C A-Blessed Hippogriff @Leanna Crossan
|
||||
A87 C A-Dawnbringer Cleric @Lie Setiawan
|
||||
A104 C A-Steadfast Unicorn @John Thacker
|
||||
A117 C A-Dragonborn Looter @Julio Reyna
|
||||
A120 U A-Goggles of Night @Forrest Imel
|
||||
A125 U A-Kenku Artificer @Dave Greco
|
||||
A127 U A-Lapis Orb of Dragonkind @Olena Richards
|
||||
A128 C A-Pseudodragon Familiar @Campbell White
|
||||
A136 C A-You Come to a River @Viko Menezes
|
||||
A138 C A-Young Blue Dragon @Tuan Duong Chu
|
||||
A143 C A-Baleful Beholder @Lars Grant-West
|
||||
A154 C A-Eyes of the Beholder @Kari Christensen
|
||||
A160 C A-Guildsworn Prowler @Fariba Khamseh
|
||||
A163 C A-Manticore @Billy Christian
|
||||
A166 C A-Sepulcher Ghoul @Jason A. Engle
|
||||
A168 U A-Sigil of Myrkul @David Astruga
|
||||
A177 U A-Carnelian Orb of Dragonkind @Olena Richards
|
||||
A197 C A-Young Red Dragon @Adam Vehige
|
||||
A203 C A-Circle of the Land Druid @Alexandre Honoré
|
||||
A208 C A-Druidic Ritual @Vincent Christiaens
|
||||
A209 R A-Earthquake Dragon @Johan Grenier
|
||||
A210 U A-Emerald Dragon @Diego Gisbert
|
||||
A215 U A-Jade Orb of Dragonkind @Olena Richards
|
||||
A217 R A-Monster Manual @David Gaillet
|
||||
A223 U A-Split the Spoils @Edgar Sánchez Hidalgo
|
||||
A232 R A-Baba Lysaga, Night Witch @Slawomir Maniak
|
||||
A239 U A-Krydle of Baldur's Gate @Bryan Sola
|
||||
A243 M A-Minsc & Boo, Timeless Heroes @Andreas Zafiratos
|
||||
A259 C A-Lantern of Revealing @Eytan Zana
|
||||
A262 U A-Navigation Orb @Robin Olausson
|
||||
A-85 C A-Blessed Hippogriff @Leanna Crossan
|
||||
A-87 C A-Dawnbringer Cleric @Lie Setiawan
|
||||
A-104 C A-Steadfast Unicorn @John Thacker
|
||||
A-117 C A-Dragonborn Looter @Julio Reyna
|
||||
A-120 U A-Goggles of Night @Forrest Imel
|
||||
A-125 U A-Kenku Artificer @Dave Greco
|
||||
A-127 U A-Lapis Orb of Dragonkind @Olena Richards
|
||||
A-128 C A-Pseudodragon Familiar @Campbell White
|
||||
A-136 C A-You Come to a River @Viko Menezes
|
||||
A-138 C A-Young Blue Dragon @Tuan Duong Chu
|
||||
A-143 C A-Baleful Beholder @Lars Grant-West
|
||||
A-154 C A-Eyes of the Beholder @Kari Christensen
|
||||
A-160 C A-Guildsworn Prowler @Fariba Khamseh
|
||||
A-163 C A-Manticore @Billy Christian
|
||||
A-166 C A-Sepulcher Ghoul @Jason A. Engle
|
||||
A-168 U A-Sigil of Myrkul @David Astruga
|
||||
A-177 U A-Carnelian Orb of Dragonkind @Olena Richards
|
||||
A-197 C A-Young Red Dragon @Adam Vehige
|
||||
A-203 C A-Circle of the Land Druid @Alexandre Honoré
|
||||
A-208 C A-Druidic Ritual @Vincent Christiaens
|
||||
A-209 R A-Earthquake Dragon @Johan Grenier
|
||||
A-210 U A-Emerald Dragon @Diego Gisbert
|
||||
A-215 U A-Jade Orb of Dragonkind @Olena Richards
|
||||
A-223 U A-Split the Spoils @Edgar Sánchez Hidalgo
|
||||
A-239 U A-Krydle of Baldur's Gate @Bryan Sola
|
||||
A-243 M A-Minsc & Boo, Timeless Heroes @Andreas Zafiratos
|
||||
A-259 C A-Lantern of Revealing @Eytan Zana
|
||||
A-262 U A-Navigation Orb @Robin Olausson
|
||||
|
||||
[conjured]
|
||||
45a R Hag of Ceaseless Torment @Konstantin Porubov
|
||||
|
||||
@@ -443,7 +443,7 @@ Replace=.012F RareMythic:fromSheet("BLB cards")
|
||||
386 R Thundertrap Trainer @Jesper Ejsing
|
||||
|
||||
[rebalanced]
|
||||
A138 U A-Heartfire Hero @Jakub Kasper
|
||||
A-138 U A-Heartfire Hero @Jakub Kasper
|
||||
|
||||
[special guests]
|
||||
1 Sword of Fire and Ice|SPG
|
||||
|
||||
@@ -462,23 +462,23 @@ ScryfallCode=DMU
|
||||
436 M Sheoldred, the Apocalypse @Richard Whitters
|
||||
|
||||
[rebalanced]
|
||||
A1 M A-Karn, Living Legacy @Chris Rahn
|
||||
A138 C A-Meria's Outrider @Lius Lasahido
|
||||
A141 R A-Radha's Firebrand @Ângelo Bortolini
|
||||
A145 U A-Sprouting Goblin @Uriah Voth
|
||||
A169 R A-Llanowar Greenwidow @Jokubas Uogintas
|
||||
A170 R A-Llanowar Loamspeaker @Zara Alfonso
|
||||
A176 C A-Scout the Wilderness @A. M. Sartor
|
||||
A181 C A-Sunbathing Rootwalla @Campbell White
|
||||
A207 U A-Nael, Avizoa Aeronaut @Miguel Mercado
|
||||
A211 U A-Radha, Coalition Warlord @Randy Vargas
|
||||
A217 U A-Rulik Mons, Warren Chief @Tuan Duong Chu
|
||||
A220 M A-Soul of Windgrace @Liiga Smilshkalne
|
||||
A222 U A-Tatyova, Steward of Tides @Howard Lyon
|
||||
A225 U A-Uurg, Spawn of Turg @Nicholas Gregory
|
||||
A227 U A-Zar Ojanen, Scion of Efrava @Justine Cruz
|
||||
A259 R A-Thran Portal @Sarah Finnigan
|
||||
A286 R A-Briar Hydra @Caio Monteiro
|
||||
A-1 M A-Karn, Living Legacy @Chris Rahn
|
||||
A-138 C A-Meria's Outrider @Lius Lasahido
|
||||
A-141 R A-Radha's Firebrand @Ângelo Bortolini
|
||||
A-145 U A-Sprouting Goblin @Uriah Voth
|
||||
A-169 R A-Llanowar Greenwidow @Jokubas Uogintas
|
||||
A-170 R A-Llanowar Loamspeaker @Zara Alfonso
|
||||
A-176 C A-Scout the Wilderness @A. M. Sartor
|
||||
A-181 C A-Sunbathing Rootwalla @Campbell White
|
||||
A-207 U A-Nael, Avizoa Aeronaut @Miguel Mercado
|
||||
A-211 U A-Radha, Coalition Warlord @Randy Vargas
|
||||
A-217 U A-Rulik Mons, Warren Chief @Tuan Duong Chu
|
||||
A-220 M A-Soul of Windgrace @Liiga Smilshkalne
|
||||
A-222 U A-Tatyova, Steward of Tides @Howard Lyon
|
||||
A-225 U A-Uurg, Spawn of Turg @Nicholas Gregory
|
||||
A-227 U A-Zar Ojanen, Scion of Efrava @Justine Cruz
|
||||
A-259 R A-Thran Portal @Sarah Finnigan
|
||||
A-286 R A-Briar Hydra @Caio Monteiro
|
||||
|
||||
[lands]
|
||||
2 Plains|DMU|1
|
||||
|
||||
@@ -425,26 +425,28 @@ FatPackExtraSlots=20 BasicLands, 20 BasicLands+
|
||||
402 U Prosperous Innkeeper @Eric Deschamps
|
||||
|
||||
[rebalanced]
|
||||
A7 U A-Cloister Gargoyle @Mark Zug
|
||||
A14 C A-Dwarfhold Champion @Miguel Mercado
|
||||
A32 U A-Plate Armor @Martina Pilcerova
|
||||
A53 M A-Demilich @Daniel Zrom
|
||||
A81 U A-Wizard Class @Marta Nael
|
||||
A87 M A-Acererak the Archlich @Andrey Kuzinskiy
|
||||
A95 U A-Death-Priest of Myrkul @Lius Lasahido
|
||||
A102 C A-Fates' Reversal @Alix Branwyn
|
||||
A115 C A-Precipitous Drop @Gabor Szikszai
|
||||
A118 C A-Sepulcher Ghoul @Jason A. Engle
|
||||
A130 C A-Armory Veteran @Caio Monteiro
|
||||
A180 U A-Druid Class @Svetlin Velinov
|
||||
A181 M A-Ellywick Tumblestrum @Anna Steinbauer
|
||||
A183 C A-Find the Path @Lindsey Look
|
||||
A196 R A-Ochre Jelly @Daarken
|
||||
A219 U A-Bruenor Battlehammer @Wayne Reynolds
|
||||
A231 U A-Shessra, Death's Whisper @Marie Magny
|
||||
A233 R A-Sorcerer Class @Alexander Mokhov
|
||||
A237 R A-Triumphant Adventurer @Alexander Mokhov
|
||||
A255 R A-Dungeon Descent @Kasia 'Kafis' Zielińska
|
||||
A-7 U A-Cloister Gargoyle @Mark Zug
|
||||
A-9 C A-Dawnbringer Cleric @Lie Setiawan
|
||||
A-14 C A-Dwarfhold Champion @Miguel Mercado
|
||||
A-32 U A-Plate Armor @Martina Pilcerova
|
||||
A-53 M A-Demilich @Daniel Zrom
|
||||
A-81 U A-Wizard Class @Marta Nael
|
||||
A-87 M A-Acererak the Archlich @Andrey Kuzinskiy
|
||||
A-95 U A-Death-Priest of Myrkul @Lius Lasahido
|
||||
A-102 C A-Fates' Reversal @Alix Branwyn
|
||||
A-115 C A-Precipitous Drop @Gabor Szikszai
|
||||
A-118 C A-Sepulcher Ghoul @Jason A. Engle
|
||||
A-130 C A-Armory Veteran @Caio Monteiro
|
||||
A-180 U A-Druid Class @Svetlin Velinov
|
||||
A-181 M A-Ellywick Tumblestrum @Anna Steinbauer
|
||||
A-183 C A-Find the Path @Lindsey Look
|
||||
A-196 R A-Ochre Jelly @Daarken
|
||||
A-219 U A-Bruenor Battlehammer @Wayne Reynolds
|
||||
A-226 U A-Krydle of Baldur's Gate @Bryan Sola
|
||||
A-231 U A-Shessra, Death's Whisper @Marie Magny
|
||||
A-233 R A-Sorcerer Class @Alexander Mokhov
|
||||
A-237 R A-Triumphant Adventurer @Alexander Mokhov
|
||||
A-255 R A-Dungeon Descent @Kasia 'Kafis' Zielińska
|
||||
|
||||
[dungeons]
|
||||
S Dungeon of the Mad Mage
|
||||
|
||||
@@ -475,7 +475,7 @@ Replace=.078F RareMythic:fromSheet("DSK cards")
|
||||
417 R Twitching Doll @John Tedrick
|
||||
|
||||
[rebalanced]
|
||||
A143 R A-Leyline of Resonance @Sergey Glushakov
|
||||
A-143 R A-Leyline of Resonance @Sergey Glushakov
|
||||
|
||||
[special guests]
|
||||
1 Collected Company|SPG
|
||||
|
||||
@@ -70,3 +70,6 @@ ScryfallCode=FCA
|
||||
62 R Smuggler's Copter @Square Enix
|
||||
63 U Strixhaven Stadium @Square Enix
|
||||
64 R Command Beacon @Square Enix
|
||||
|
||||
[rebalanced]
|
||||
A-19 R A-Winota, Joiner of Forces @Yoshitaka Amano
|
||||
@@ -412,7 +412,7 @@ ScryfallCode=IKO
|
||||
387 R Crystalline Giant @Kotakan
|
||||
|
||||
[rebalanced]
|
||||
A216 M A-Winota, Joiner of Forces @Magali Villeneuve
|
||||
A-216 M A-Winota, Joiner of Forces @Magali Villeneuve
|
||||
|
||||
[Lands]
|
||||
10 Bloodfell Caves|IKO
|
||||
|
||||
@@ -435,18 +435,17 @@ Prerelease=6 Boosters, 1 RareMythic+
|
||||
412 L Forest @Pig Hands
|
||||
|
||||
[rebalanced]
|
||||
A48 C A-Binding Geist @Campbell White
|
||||
A52 U A-Cobbled Lancer @Igor Kieryluk
|
||||
A58 R A-Dreamshackle Geist @Andreas Zafiratos
|
||||
A62 U A-Gutter Skulker @Viko Menezes
|
||||
A63 R A-Hullbreaker Horror @Svetlin Velinov
|
||||
A66 C A-Lantern Bearer @Zoltan Boros
|
||||
A69 U A-Mischievous Catgeist @Denman Rooke
|
||||
A81 C A-Stitched Assistant @Andrey Kuzinskiy
|
||||
A233 U A-Brine Comber @Olena Richards
|
||||
A235 R A-Dorothea, Vengeful Victim @Marta Nael
|
||||
A247 U A-Sigardian Paladin @Slawomir Maniak
|
||||
A248 U A-Skull Skaab @Nicholas Gregory
|
||||
A-48 C A-Binding Geist @Campbell White
|
||||
A-52 U A-Cobbled Lancer @Igor Kieryluk
|
||||
A-58 R A-Dreamshackle Geist @Andreas Zafiratos
|
||||
A-62 U A-Gutter Skulker @Viko Menezes
|
||||
A-66 C A-Lantern Bearer @Zoltan Boros
|
||||
A-69 U A-Mischievous Catgeist @Denman Rooke
|
||||
A-81 C A-Stitched Assistant @Andrey Kuzinskiy
|
||||
A-233 U A-Brine Comber @Olena Richards
|
||||
A-235 R A-Dorothea, Vengeful Victim @Marta Nael
|
||||
A-247 U A-Sigardian Paladin @Slawomir Maniak
|
||||
A-248 U A-Skull Skaab @Nicholas Gregory
|
||||
|
||||
[tokens]
|
||||
1 w_1_1_human @Miguel Mercado
|
||||
|
||||
@@ -417,14 +417,14 @@ Prerelease=6 Boosters, 1 RareMythic+
|
||||
391 U Join the Dance @Raoul Vitale
|
||||
|
||||
[rebalanced]
|
||||
A52 C A-Falcon Abomination @Brent Hollowell
|
||||
A59 M A-Lier, Disciple of the Drowned @Ekaterina Burmak
|
||||
A69 R A-Patrician Geist @Marta Nael
|
||||
A70 U A-Phantom Carriage @Igor Kieryluk
|
||||
A74 C A-Shipwreck Sifters @Svetlin Velinov
|
||||
A106 C A-Hobbling Zombie @Josh Hass
|
||||
A112 M A-The Meathook Massacre @Chris Seaman
|
||||
A218 U A-Devoted Grafkeeper @Raoul Vitale
|
||||
A-52 C A-Falcon Abomination @Brent Hollowell
|
||||
A-59 M A-Lier, Disciple of the Drowned @Ekaterina Burmak
|
||||
A-69 R A-Patrician Geist @Marta Nael
|
||||
A-70 U A-Phantom Carriage @Igor Kieryluk
|
||||
A-74 C A-Shipwreck Sifters @Svetlin Velinov
|
||||
A-106 C A-Hobbling Zombie @Josh Hass
|
||||
A-112 M A-The Meathook Massacre @Chris Seaman
|
||||
A-218 U A-Devoted Grafkeeper @Raoul Vitale
|
||||
|
||||
[tokens]
|
||||
1 w_1_1_human @Kari Christensen
|
||||
|
||||
@@ -784,8 +784,8 @@ ScryfallCode=J21
|
||||
776 R Sliver Hive
|
||||
|
||||
[rebalanced]
|
||||
A438 U A-Dragon's Rage Channeler @Martina Fackova
|
||||
A529 C A-Unholy Heat @Kari Christensen
|
||||
A-438 U A-Dragon's Rage Channeler @Martina Fackova
|
||||
A-529 C A-Unholy Heat @Kari Christensen
|
||||
|
||||
[tokens]
|
||||
u_8_8_kraken
|
||||
|
||||
@@ -503,4 +503,4 @@ ScryfallCode=JMP
|
||||
495 C Rupture Spire @Jaime Jones
|
||||
|
||||
[rebalanced]
|
||||
A206 U A-Blood Artist @Johannes Voss
|
||||
A-206 U A-Blood Artist @Johannes Voss
|
||||
|
||||
@@ -433,28 +433,25 @@ ScryfallCode=KHM
|
||||
407 M Vorinclex, Monstrous Raider @Richard Whitters
|
||||
|
||||
[rebalanced]
|
||||
A40 M A-Alrund, God of the Cosmos @Kieran Yanner
|
||||
A41 M A-Alrund's Epiphany @Kieran Yanner
|
||||
A51 R A-Cosmos Charger @Nils Hamm
|
||||
A106 U A-Return Upon the Tide @Martina Fačková
|
||||
A109 R A-Skemfar Avenger @Randy Vargas
|
||||
A139 M A-Goldspan Dragon @Andrew Mar
|
||||
A165 C A-Elderleaf Mentor @Zoltan Boros
|
||||
A166 U A-Elven Bow @Dallas Williams
|
||||
A169 R A-Esika's Chariot @Raoul Vitale
|
||||
A198 M A-Tyvar Kell @Chris Rallis
|
||||
A208 U A-Fall of the Impostor @Eric Deschamps
|
||||
A212 U A-Harald, King of Skemfar @Grzegorz Rutkowski
|
||||
A213 R A-Harald Unites the Elves @Ryan Pancoast
|
||||
A224 U A-Narfi, Betrayer King @Daarken
|
||||
A233 U A-Vega, the Watcher @Paul Scott Canavan
|
||||
A237 R A-Cosmos Elixir @Volkan Baǵa
|
||||
A253 U A-Bretagard Stronghold @Jung Park
|
||||
A255 R A-Faceless Haven @Titus Lunter
|
||||
A268 U A-Skemfar Elderhall @Johannes Voss
|
||||
A378 R A-Canopy Tactician @Ekaterina Burmak
|
||||
A385 U A-Elderfang Ritualist @Wisnu Tan
|
||||
A387 U A-Thornmantle Striker @Magali Villeneuve
|
||||
A-40 M A-Alrund, God of the Cosmos @Kieran Yanner
|
||||
A-41 M A-Alrund's Epiphany @Kieran Yanner
|
||||
A-51 R A-Cosmos Charger @Nils Hamm
|
||||
A-106 U A-Return Upon the Tide @Martina Fačková
|
||||
A-109 R A-Skemfar Avenger @Randy Vargas
|
||||
A-165 C A-Elderleaf Mentor @Zoltan Boros
|
||||
A-166 U A-Elven Bow @Dallas Williams
|
||||
A-198 M A-Tyvar Kell @Chris Rallis
|
||||
A-208 U A-Fall of the Impostor @Eric Deschamps
|
||||
A-212 U A-Harald, King of Skemfar @Grzegorz Rutkowski
|
||||
A-213 R A-Harald Unites the Elves @Ryan Pancoast
|
||||
A-224 U A-Narfi, Betrayer King @Daarken
|
||||
A-233 U A-Vega, the Watcher @Paul Scott Canavan
|
||||
A-237 R A-Cosmos Elixir @Volkan Baǵa
|
||||
A-253 U A-Bretagard Stronghold @Jung Park
|
||||
A-268 U A-Skemfar Elderhall @Johannes Voss
|
||||
A-378 R A-Canopy Tactician @Ekaterina Burmak
|
||||
A-385 U A-Elderfang Ritualist @Wisnu Tan
|
||||
A-387 U A-Thornmantle Striker @Magali Villeneuve
|
||||
|
||||
[Snow Lands]
|
||||
5 Snow-Covered Plains|KHM|1
|
||||
|
||||
@@ -539,24 +539,23 @@ ScryfallCode=NEO
|
||||
514 M Jin-Gitaxias, Progress Tyrant @Richard Whitters
|
||||
|
||||
[rebalanced]
|
||||
A1 C A-Ancestral Katana @Daniel Ljunggren
|
||||
A10 C A-Eiganjo Exemplar @Ernanda Souza
|
||||
A19 C A-Imperial Subduer @Zara Alfonso
|
||||
A53 U A-Futurist Operative @Justine Cruz
|
||||
A67 C A-Moon-Circuit Hacker @Tia Masic
|
||||
A73 U A-Prosperous Thief @Fajareka Setiawan
|
||||
A86 R A-Thousand-Faced Shadow @Ekaterina Burmak
|
||||
A95 U A-Dokuchi Silencer @David Rapoza
|
||||
A114 M A-Nashi, Moon Sage's Scion @Valera Lutfullina
|
||||
A116 U A-Nezumi Prowler @Joseph Weston
|
||||
A131 C A-Akki Ronin @Olivier Bernard
|
||||
A152 U A-Kumano Faces Kakkazan @Mike Bierek
|
||||
A156 C A-Peerless Samurai @Micah Epstein
|
||||
A215 U A-Asari Captain @Donato Giancola
|
||||
A232 R A-Raiyuu, Storm's Edge @Heonhwa Choe
|
||||
A234 R A-Satoru Umezawa @Anna Pavleeva
|
||||
A236 U A-Silver-Fur Master @Carl Critchlow
|
||||
A242 U A-Circuit Mender @Hector Ortiz
|
||||
A-1 C A-Ancestral Katana @Daniel Ljunggren
|
||||
A-10 C A-Eiganjo Exemplar @Ernanda Souza
|
||||
A-19 C A-Imperial Subduer @Zara Alfonso
|
||||
A-53 U A-Futurist Operative @Justine Cruz
|
||||
A-67 C A-Moon-Circuit Hacker @Tia Masic
|
||||
A-73 U A-Prosperous Thief @Fajareka Setiawan
|
||||
A-86 R A-Thousand-Faced Shadow @Ekaterina Burmak
|
||||
A-95 U A-Dokuchi Silencer @David Rapoza
|
||||
A-114 M A-Nashi, Moon Sage's Scion @Valera Lutfullina
|
||||
A-116 U A-Nezumi Prowler @Joseph Weston
|
||||
A-131 C A-Akki Ronin @Olivier Bernard
|
||||
A-156 C A-Peerless Samurai @Micah Epstein
|
||||
A-215 U A-Asari Captain @Donato Giancola
|
||||
A-232 R A-Raiyuu, Storm's Edge @Heonhwa Choe
|
||||
A-234 R A-Satoru Umezawa @Anna Pavleeva
|
||||
A-236 U A-Silver-Fur Master @Carl Critchlow
|
||||
A-242 U A-Circuit Mender @Hector Ortiz
|
||||
|
||||
[lands]
|
||||
1 Plains|NEO|1
|
||||
|
||||
@@ -590,6 +590,10 @@ ScryfallCode=MH2
|
||||
6 Patchwork Gnomes|MH2|1
|
||||
6 Zuran Orb|MH2|1
|
||||
|
||||
[rebalanced]
|
||||
A-121 U A-Dragon's Rage Channeler @Martina Fačková
|
||||
A-145 C A-Unholy Heat @Kari Christensen
|
||||
|
||||
[tokens]
|
||||
1 w_1_1_bird_flying @Howard Lyon
|
||||
2 u_0_3_crab @Yeong-Hao Han
|
||||
|
||||
@@ -585,10 +585,10 @@ Replace=.042F fromSheet("MH3 commanders")
|
||||
496 R Flusterstorm @Andrew Mar
|
||||
|
||||
[rebalanced]
|
||||
A29 R A-Guide of Souls @Ryan Valle
|
||||
A38 M A-Ocelot Pride @Chris Seaman
|
||||
A122 C A-Galvanic Discharge @Zoltan Boros
|
||||
A193 R A-Nadu, Winged Wisdom @Daren Bader
|
||||
A-29 R A-Guide of Souls @Ryan Valle
|
||||
A-38 M A-Ocelot Pride @Chris Seaman
|
||||
A-122 C A-Galvanic Discharge @Zoltan Boros
|
||||
A-193 R A-Nadu, Winged Wisdom @Daren Bader
|
||||
|
||||
[new to modern]
|
||||
1 Angel of the Ruins|MH3
|
||||
|
||||
@@ -202,6 +202,9 @@ ScryfallCode=MUL
|
||||
194 R Yorion, Sky Nomad @Justine Mara Andersen
|
||||
195 R Zirda, the Dawnwaker @Justine Mara Andersen
|
||||
|
||||
[rebalanced]
|
||||
A-120 U A-Radha, Coalition Warlord @Randy Vargas
|
||||
|
||||
[draft booster]
|
||||
2 Anafenza, Kin-Tree Spirit|MUL
|
||||
7 Daxos, Blessed by the Sun|MUL
|
||||
|
||||
@@ -496,50 +496,50 @@ ScryfallCode=SNC
|
||||
469 M Urabrask, Heretic Praetor @Richard Whitters
|
||||
|
||||
[rebalanced]
|
||||
A6 C A-Buy Your Silence @Tony Foti
|
||||
A7 C A-Celebrity Fencer @Inka Schulz
|
||||
A20 U A-Knockout Blow @Zoltan Boros
|
||||
A32 C A-Speakeasy Server @Scott Murphy
|
||||
A37 C A-Case the Joint @Stella Spente
|
||||
A53 C A-Psionic Snoop @Marcela Medeiros
|
||||
A55 U A-Public Enemy @Dominik Mayer
|
||||
A60 C A-Sewer Crocodile @Milivoj Ćeran
|
||||
A74 C A-Deal Gone Bad @Mathias Kollros
|
||||
A75 C A-Demon's Due @Slawomir Maniak
|
||||
A81 U A-Graveyard Shift @Liiga Smilshkalne
|
||||
A84 C A-Incriminate @Kieran Yanner
|
||||
A87 C A-Midnight Assassin @Christina Davis
|
||||
A91 C A-Revel Ruiner @Christina Davis
|
||||
A98 U A-Vampire Scrivener @Bastien L. Deharme
|
||||
A106 C A-Exhibition Magician @Greg Staples
|
||||
A111 C A-Jackhammer @John Severin Brassell
|
||||
A118 U A-Pyre-Sledge Arsonist @Kekai Kotaki
|
||||
A119 C A-Ready to Rumble @Josu Hernaiz
|
||||
A120 C A-Riveteers Initiate @Svetlin Velinov
|
||||
A123 U A-Sizzling Soloist @Véronique Meignaud
|
||||
A139 C A-Capenna Express @Viko Menezes
|
||||
A149 C A-Glittermonger @Evyn Fong
|
||||
A150 C A-High-Rise Sawjack @Randy Vargas
|
||||
A153 C A-Most Wanted @Rémi Jacquot
|
||||
A157 C A-Social Climber @Carly Mazur
|
||||
A164 C A-Warm Welcome @Inka Schulz
|
||||
A173 U A-Cabaretti Charm @Steve Argyle
|
||||
A174 C A-Celestial Regulator @Mathias Kollros
|
||||
A176 C A-Civil Servant @Tony Foti
|
||||
A189 U A-Forge Boss @Igor Kieryluk
|
||||
A190 C A-Glamorous Outlaw @Maria Zolotukhina
|
||||
A201 C A-Masked Bandits @Micah Epstein
|
||||
A203 U A-Metropolis Angel @Lie Setiawan
|
||||
A204 U A-Mr. Orfeo, the Boulder @Daarken
|
||||
A212 U A-Queza, Augur of Agonies @Josh Hass
|
||||
A214 C A-Rakish Revelers @Alessandra Pisano
|
||||
A220 U A-Security Rhox @Lie Setiawan
|
||||
A221 C A-Shattered Seraph @Bastien L. Deharme
|
||||
A224 C A-Spara's Adjudicators @Aaron J. Riley
|
||||
A225 U A-Stimulus Package @Robin Olausson
|
||||
A226 U A-Syndicate Infiltrator @Mila Pesic
|
||||
A241 C A-Ominous Parcel @Joe Slucher
|
||||
A242 C A-Paragon of Modernity @Volkan Baǵa
|
||||
A-6 C A-Buy Your Silence @Tony Foti
|
||||
A-7 C A-Celebrity Fencer @Inka Schulz
|
||||
A-20 U A-Knockout Blow @Zoltan Boros
|
||||
A-32 C A-Speakeasy Server @Scott Murphy
|
||||
A-37 C A-Case the Joint @Stella Spente
|
||||
A-53 C A-Psionic Snoop @Marcela Medeiros
|
||||
A-55 U A-Public Enemy @Dominik Mayer
|
||||
A-60 C A-Sewer Crocodile @Milivoj Ćeran
|
||||
A-74 C A-Deal Gone Bad @Mathias Kollros
|
||||
A-75 C A-Demon's Due @Slawomir Maniak
|
||||
A-81 U A-Graveyard Shift @Liiga Smilshkalne
|
||||
A-84 C A-Incriminate @Kieran Yanner
|
||||
A-87 C A-Midnight Assassin @Christina Davis
|
||||
A-91 C A-Revel Ruiner @Christina Davis
|
||||
A-98 U A-Vampire Scrivener @Bastien L. Deharme
|
||||
A-106 C A-Exhibition Magician @Greg Staples
|
||||
A-111 C A-Jackhammer @John Severin Brassell
|
||||
A-118 U A-Pyre-Sledge Arsonist @Kekai Kotaki
|
||||
A-119 C A-Ready to Rumble @Josu Hernaiz
|
||||
A-120 C A-Riveteers Initiate @Svetlin Velinov
|
||||
A-123 U A-Sizzling Soloist @Véronique Meignaud
|
||||
A-139 C A-Capenna Express @Viko Menezes
|
||||
A-149 C A-Glittermonger @Evyn Fong
|
||||
A-150 C A-High-Rise Sawjack @Randy Vargas
|
||||
A-153 C A-Most Wanted @Rémi Jacquot
|
||||
A-157 C A-Social Climber @Carly Mazur
|
||||
A-164 C A-Warm Welcome @Inka Schulz
|
||||
A-173 U A-Cabaretti Charm @Steve Argyle
|
||||
A-174 C A-Celestial Regulator @Mathias Kollros
|
||||
A-176 C A-Civil Servant @Tony Foti
|
||||
A-189 U A-Forge Boss @Igor Kieryluk
|
||||
A-190 C A-Glamorous Outlaw @Maria Zolotukhina
|
||||
A-201 C A-Masked Bandits @Micah Epstein
|
||||
A-203 U A-Metropolis Angel @Lie Setiawan
|
||||
A-204 U A-Mr. Orfeo, the Boulder @Daarken
|
||||
A-212 U A-Queza, Augur of Agonies @Josh Hass
|
||||
A-214 C A-Rakish Revelers @Alessandra Pisano
|
||||
A-220 U A-Security Rhox @Lie Setiawan
|
||||
A-221 C A-Shattered Seraph @Bastien L. Deharme
|
||||
A-224 C A-Spara's Adjudicators @Aaron J. Riley
|
||||
A-225 U A-Stimulus Package @Robin Olausson
|
||||
A-226 U A-Syndicate Infiltrator @Mila Pesic
|
||||
A-241 C A-Ominous Parcel @Joe Slucher
|
||||
A-242 C A-Paragon of Modernity @Volkan Baǵa
|
||||
|
||||
[lands]
|
||||
2 Plains|SNC|1
|
||||
|
||||
@@ -408,17 +408,16 @@ ScryfallCode=STX
|
||||
382 U Decisive Denial @Lorenzo Mastroianni
|
||||
|
||||
[rebalanced]
|
||||
A15 U A-Dueling Coach @Caio Monteiro
|
||||
A41 U A-Divide by Zero @Liiga Smilshkalne
|
||||
A46 U A-Mentor's Guidance @Brian Valeza
|
||||
A56 U A-Symmetry Sage @Jehan Choo
|
||||
A88 U A-Tenured Inkcaster @Jake Murray
|
||||
A92 U A-Ardent Dustspeaker @Mads Ahm
|
||||
A117 C A-Tome Shredder @Sam Rowan
|
||||
A156 M A-Rowan, Scholar of Sparks @Magali Villeneuve
|
||||
A202 U A-Maelstrom Muse @Michele Parisi
|
||||
A240 M A-Tanazir Quandrix @Raymond Swanland
|
||||
A258 U A-Spell Satchel @YW Tang
|
||||
A-15 U A-Dueling Coach @Caio Monteiro
|
||||
A-46 U A-Mentor's Guidance @Brian Valeza
|
||||
A-56 U A-Symmetry Sage @Jehan Choo
|
||||
A-88 U A-Tenured Inkcaster @Jake Murray
|
||||
A-92 U A-Ardent Dustspeaker @Mads Ahm
|
||||
A-117 C A-Tome Shredder @Sam Rowan
|
||||
A-156 M A-Rowan, Scholar of Sparks @Magali Villeneuve
|
||||
A-202 U A-Maelstrom Muse @Michele Parisi
|
||||
A-240 M A-Tanazir Quandrix @Raymond Swanland
|
||||
A-258 U A-Spell Satchel @YW Tang
|
||||
|
||||
[lesson]
|
||||
2 Environmental Sciences
|
||||
|
||||
@@ -407,18 +407,18 @@ ScryfallCode=BRO
|
||||
384 U Blanchwood Armor @Manuel Castañón
|
||||
|
||||
[rebalanced]
|
||||
A58 C A-Mightstone's Animation @Igor Kieryluk
|
||||
A63 U A-Splitting the Powerstone @Campbell White
|
||||
A69 U A-Urza, Powerstone Prodigy @Donato Giancola
|
||||
A70 R A-Urza's Command @Dominik Mayer
|
||||
A132 C A-Excavation Explosion @Campbell White
|
||||
A140 U A-Mishra, Excavation Prodigy @Donato Giancola
|
||||
A156 R A-Visions of Phyrexia @Dominik Mayer
|
||||
A199 U A-Haywire Mite @Izzy
|
||||
A219 M A-Saheeli, Filigree Master @Aurore Folny
|
||||
A254 R A-Thran Spider @Joshua Cairos
|
||||
A263 R A-Hall of Tagsin @Christian Dimitrov
|
||||
A289 R A-Geology Enthusiast @Fajareka Setiawan
|
||||
A-58 C A-Mightstone's Animation @Igor Kieryluk
|
||||
A-63 U A-Splitting the Powerstone @Campbell White
|
||||
A-69 U A-Urza, Powerstone Prodigy @Donato Giancola
|
||||
A-70 R A-Urza's Command @Dominik Mayer
|
||||
A-132 C A-Excavation Explosion @Campbell White
|
||||
A-140 U A-Mishra, Excavation Prodigy @Donato Giancola
|
||||
A-156 R A-Visions of Phyrexia @Dominik Mayer
|
||||
A-199 U A-Haywire Mite @Izzy
|
||||
A-219 M A-Saheeli, Filigree Master @Aurore Folny
|
||||
A-254 R A-Thran Spider @Joshua Cairos
|
||||
A-263 R A-Hall of Tagsin @Christian Dimitrov
|
||||
A-289 R A-Geology Enthusiast @Fajareka Setiawan
|
||||
|
||||
[lands]
|
||||
2 Plains|BRO|1
|
||||
|
||||
@@ -862,8 +862,8 @@ ScryfallCode=LTR
|
||||
301 M Sauron, the Dark Lord @Anton Solovianchyk
|
||||
|
||||
[rebalanced]
|
||||
A103 R A-Orcish Bowmasters @Maxim Kostin
|
||||
A246 M A-The One Ring @Veli Nyström
|
||||
A-103 R A-Orcish Bowmasters @Maxim Kostin
|
||||
A-246 M A-The One Ring @Veli Nyström
|
||||
|
||||
[tokens]
|
||||
1 w_1_1_human_soldier @Anastasia Balakchina
|
||||
|
||||
@@ -437,7 +437,7 @@ ScryfallCode=LCI
|
||||
409 U Bartolomé del Presidio @Randy Gallegos
|
||||
|
||||
[rebalanced]
|
||||
A150 U A-Geological Appraiser @Alix Branwyn
|
||||
A-150 U A-Geological Appraiser @Alix Branwyn
|
||||
|
||||
[double-face]
|
||||
9 Idol of the Deep King|LCI
|
||||
|
||||
@@ -424,8 +424,8 @@ ScryfallCode=ELD
|
||||
397 U Inspiring Veteran @Scott Murphy
|
||||
|
||||
[rebalanced]
|
||||
A81 U A-Cauldron Familiar @Milivoj Ćeran
|
||||
A125 R A-Fires of Invention @Stanton Feng
|
||||
A-81 U A-Cauldron Familiar @Milivoj Ćeran
|
||||
A-125 R A-Fires of Invention @Stanton Feng
|
||||
|
||||
[tokens]
|
||||
1 w_0_1_goat @Forrest Imel
|
||||
|
||||
@@ -332,7 +332,7 @@ ScryfallCode=WAR
|
||||
275 M Tezzeret, Master of the Bridge @Chase Stone
|
||||
|
||||
[rebalanced]
|
||||
A221 R A-Teferi, Time Raveler @Chris Rallis
|
||||
A-221 R A-Teferi, Time Raveler @Chris Rallis
|
||||
|
||||
[tokens]
|
||||
1 c_2_2_spirit @Johann Bodin
|
||||
|
||||
@@ -40,12 +40,12 @@ public abstract class ImageFetcher {
|
||||
private String getScryfallDownloadURL(PaperCard c, String face, boolean useArtCrop, boolean hasSetLookup, String imagePath, ArrayList<String> downloadUrls) {
|
||||
StaticData data = StaticData.instance();
|
||||
CardEdition edition = data.getEditions().get(c.getEdition());
|
||||
if (edition == null) // edition does not exist - some error occurred with card data
|
||||
if (edition == null) // Edition does not exist - some error occurred with card data
|
||||
return null;
|
||||
if (hasSetLookup) {
|
||||
List<PaperCard> clones = StaticData.instance().getCommonCards().getAllCards(c.getName());
|
||||
for (PaperCard pc : clones) {
|
||||
if (clones.size() > 1) {//clones only
|
||||
if (clones.size() > 1) { // Clones only
|
||||
if (!c.getEdition().equalsIgnoreCase(pc.getEdition())) {
|
||||
CardEdition ed = data.getEditions().get(pc.getEdition());
|
||||
if (ed != null) {
|
||||
@@ -72,10 +72,9 @@ public abstract class ImageFetcher {
|
||||
// It seems like the scryfall lookup might be better if we didn't include the language code at all?
|
||||
downloadUrls.add(ForgeConstants.URL_PIC_SCRYFALL_DOWNLOAD + ImageUtil.getScryfallDownloadUrl(c, face, setCode, "", useArtCrop));
|
||||
|
||||
String alternateUrl = ImageUtil.getScryfallDownloadUrl(c, face, setCode, langCode, useArtCrop, true);
|
||||
if (alternateUrl != null && !alternateUrl.equals(primaryUrl)) {
|
||||
String alternateUrl = ImageUtil.getScryfallDownloadUrl(c, face, setCode, langCode, useArtCrop);
|
||||
if (!alternateUrl.equals(primaryUrl)) {
|
||||
downloadUrls.add(ForgeConstants.URL_PIC_SCRYFALL_DOWNLOAD + alternateUrl);
|
||||
downloadUrls.add(ForgeConstants.URL_PIC_SCRYFALL_DOWNLOAD + ImageUtil.getScryfallDownloadUrl(c, face, setCode, "", useArtCrop, true));
|
||||
}
|
||||
}
|
||||
return null;
|
||||
@@ -112,7 +111,7 @@ public abstract class ImageFetcher {
|
||||
if (imageKey.equalsIgnoreCase("t:null"))
|
||||
return;
|
||||
|
||||
//planechaseBG file...
|
||||
// PlanechaseBG file...
|
||||
final ArrayList<String> downloadUrls = new ArrayList<>();
|
||||
if (imageKey.startsWith("PLANECHASEBG:")) {
|
||||
final String filename = imageKey.substring("PLANECHASEBG:".length());
|
||||
@@ -136,7 +135,7 @@ public abstract class ImageFetcher {
|
||||
System.err.println("Paper card not found for: " + imageKey);
|
||||
return;
|
||||
}
|
||||
//Skip fetching if it's a custom user card.
|
||||
// Skip fetching if it's a custom user card.
|
||||
if (paperCard.getRules().isCustom()) {
|
||||
return;
|
||||
}
|
||||
@@ -186,7 +185,7 @@ public abstract class ImageFetcher {
|
||||
filename = TextUtil.fastReplace(filename, ".full", ".artcrop");
|
||||
}
|
||||
boolean updateLink = false;
|
||||
if ("back".equals(face)) {// seems getimage relative path don't process variants for back faces.
|
||||
if ("back".equals(face)) { // Seems getimage relative path don't process variants for back faces.
|
||||
try {
|
||||
filename = TextUtil.fastReplace(filename, "1.full", imageKey.substring(imageKey.lastIndexOf('|') + 1, imageKey.indexOf('$')) + ".full");
|
||||
updateLink = true;
|
||||
@@ -196,9 +195,9 @@ public abstract class ImageFetcher {
|
||||
}
|
||||
destFile = new File(ForgeConstants.CACHE_CARD_PICS_DIR, filename + ".jpg");
|
||||
|
||||
//skip ftp if using art crop
|
||||
// Skip ftp if using art crop
|
||||
if (!useArtCrop) {
|
||||
//move priority of ftp image here
|
||||
// Move priority of ftp image here
|
||||
StringBuilder setDownload = new StringBuilder(ForgeConstants.URL_PIC_DOWNLOAD);
|
||||
if (!hasSetLookup) {
|
||||
if (!updateLink) {
|
||||
@@ -227,11 +226,11 @@ public abstract class ImageFetcher {
|
||||
this.getScryfallDownloadURL(paperCard, face, useArtCrop, hasSetLookup, filename, downloadUrls);
|
||||
}
|
||||
} else if (ImageKeys.getTokenKey(ImageKeys.HIDDEN_CARD).equals(imageKey)) {
|
||||
// extra logic for hidden card to not clog the other logic
|
||||
// Extra logic for hidden card to not clog the other logic
|
||||
final String filename = "hidden.png";
|
||||
if (ImageKeys.missingCards.contains(filename))
|
||||
return;
|
||||
// scryfall only as png version
|
||||
// Scryfall only as png version
|
||||
downloadUrls.add("https://cards.scryfall.io/back.png");
|
||||
ImageKeys.missingCards.add(filename);
|
||||
destFile = new File(ForgeConstants.CACHE_TOKEN_PICS_DIR, filename);
|
||||
@@ -274,13 +273,13 @@ public abstract class ImageFetcher {
|
||||
CardEdition edition = StaticData.instance().getEditions().get(setCode);
|
||||
if (edition == null || edition.getType() == CardEdition.Type.CUSTOM_SET) return; //Custom set token, skip fetching.
|
||||
|
||||
//PaperToken pt = StaticData.instance().getAllTokens().getToken(tokenName, setCode);
|
||||
// PaperToken pt = StaticData.instance().getAllTokens().getToken(tokenName, setCode);
|
||||
Collection<CardEdition.EditionEntry> allTokens = edition.getTokens().get(tokenName);
|
||||
|
||||
if (tempdata.length > 2) {
|
||||
String tokenCode = edition.getTokensCode();
|
||||
String langCode = edition.getCardsLangCode();
|
||||
// just assume the CNr from the token image is valid
|
||||
// Just assume the CNr from the token image is valid
|
||||
downloadUrls.add(ForgeConstants.URL_PIC_SCRYFALL_DOWNLOAD + ImageUtil.getScryfallTokenDownloadUrl(tempdata[2], tokenCode, langCode, face));
|
||||
} else if (!allTokens.isEmpty()) {
|
||||
// This loop is going to try to download all the arts until it finds one
|
||||
@@ -314,7 +313,7 @@ public abstract class ImageFetcher {
|
||||
|
||||
if (destFile.exists()) {
|
||||
// TODO: Figure out why this codepath gets reached.
|
||||
// Ideally, fetchImage() wouldn't be called if we already have the image.
|
||||
// Ideally, fetchImage() wouldn't be called if we already have the image.
|
||||
if (prefix.equals(ImageKeys.CARD_PREFIX)) {
|
||||
PaperCard paperCard = ImageUtil.getPaperCardFromImageKey(imageKey);
|
||||
if (paperCard != null)
|
||||
|
||||
Reference in New Issue
Block a user