Huge Alchemy Cleanup

This commit is contained in:
Eradev
2025-07-06 17:40:43 -04:00
committed by Hans Mackowiak
parent 8475456c0b
commit 38b6283a12
35 changed files with 230 additions and 347 deletions

View File

@@ -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 = "";

View File

@@ -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.

View File

@@ -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.

View File

@@ -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

View File

@@ -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.

View File

@@ -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."

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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)