mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-15 02:08:00 +00:00
Huge Alchemy Cleanup
This commit is contained in:
@@ -160,11 +160,8 @@ public class ImageUtil {
|
|||||||
return getImageRelativePath(cp, face, true, true);
|
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;
|
String editionCode;
|
||||||
if (setCode != null && !setCode.isEmpty())
|
if (setCode != null && !setCode.isEmpty())
|
||||||
editionCode = setCode;
|
editionCode = setCode;
|
||||||
@@ -183,12 +180,6 @@ public class ImageUtil {
|
|||||||
} else if (cardCollectorNumber.startsWith("OPC2")) {
|
} else if (cardCollectorNumber.startsWith("OPC2")) {
|
||||||
editionCode = "opc2";
|
editionCode = "opc2";
|
||||||
cardCollectorNumber = cardCollectorNumber.substring("OPC2".length());
|
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 versionParam = useArtCrop ? "art_crop" : "normal";
|
||||||
String faceParam = "";
|
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 Voracious Greatshark|IKO
|
||||||
1 Dream Eater|GRN
|
1 Dream Eater|GRN
|
||||||
1 Torrential Gearhulk|KLD
|
1 Torrential Gearhulk|KLD
|
||||||
1 A-Hullbreaker Horror|VOW
|
1 Hullbreaker Horror|VOW
|
||||||
1 Jin-Gitaxias, Progress Tyrant|NEO
|
1 Jin-Gitaxias, Progress Tyrant|NEO
|
||||||
1 Scholar of the Lost Trove|JMP
|
1 Scholar of the Lost Trove|JMP
|
||||||
1 Teferi, Master of Time|M21
|
1 Teferi, Master of Time|M21
|
||||||
|
|||||||
@@ -298,36 +298,34 @@ ScryfallCode=HBG
|
|||||||
286 L Forest @Julian Kok Joon Wen
|
286 L Forest @Julian Kok Joon Wen
|
||||||
|
|
||||||
[rebalanced]
|
[rebalanced]
|
||||||
A85 C A-Blessed Hippogriff @Leanna Crossan
|
A-85 C A-Blessed Hippogriff @Leanna Crossan
|
||||||
A87 C A-Dawnbringer Cleric @Lie Setiawan
|
A-87 C A-Dawnbringer Cleric @Lie Setiawan
|
||||||
A104 C A-Steadfast Unicorn @John Thacker
|
A-104 C A-Steadfast Unicorn @John Thacker
|
||||||
A117 C A-Dragonborn Looter @Julio Reyna
|
A-117 C A-Dragonborn Looter @Julio Reyna
|
||||||
A120 U A-Goggles of Night @Forrest Imel
|
A-120 U A-Goggles of Night @Forrest Imel
|
||||||
A125 U A-Kenku Artificer @Dave Greco
|
A-125 U A-Kenku Artificer @Dave Greco
|
||||||
A127 U A-Lapis Orb of Dragonkind @Olena Richards
|
A-127 U A-Lapis Orb of Dragonkind @Olena Richards
|
||||||
A128 C A-Pseudodragon Familiar @Campbell White
|
A-128 C A-Pseudodragon Familiar @Campbell White
|
||||||
A136 C A-You Come to a River @Viko Menezes
|
A-136 C A-You Come to a River @Viko Menezes
|
||||||
A138 C A-Young Blue Dragon @Tuan Duong Chu
|
A-138 C A-Young Blue Dragon @Tuan Duong Chu
|
||||||
A143 C A-Baleful Beholder @Lars Grant-West
|
A-143 C A-Baleful Beholder @Lars Grant-West
|
||||||
A154 C A-Eyes of the Beholder @Kari Christensen
|
A-154 C A-Eyes of the Beholder @Kari Christensen
|
||||||
A160 C A-Guildsworn Prowler @Fariba Khamseh
|
A-160 C A-Guildsworn Prowler @Fariba Khamseh
|
||||||
A163 C A-Manticore @Billy Christian
|
A-163 C A-Manticore @Billy Christian
|
||||||
A166 C A-Sepulcher Ghoul @Jason A. Engle
|
A-166 C A-Sepulcher Ghoul @Jason A. Engle
|
||||||
A168 U A-Sigil of Myrkul @David Astruga
|
A-168 U A-Sigil of Myrkul @David Astruga
|
||||||
A177 U A-Carnelian Orb of Dragonkind @Olena Richards
|
A-177 U A-Carnelian Orb of Dragonkind @Olena Richards
|
||||||
A197 C A-Young Red Dragon @Adam Vehige
|
A-197 C A-Young Red Dragon @Adam Vehige
|
||||||
A203 C A-Circle of the Land Druid @Alexandre Honoré
|
A-203 C A-Circle of the Land Druid @Alexandre Honoré
|
||||||
A208 C A-Druidic Ritual @Vincent Christiaens
|
A-208 C A-Druidic Ritual @Vincent Christiaens
|
||||||
A209 R A-Earthquake Dragon @Johan Grenier
|
A-209 R A-Earthquake Dragon @Johan Grenier
|
||||||
A210 U A-Emerald Dragon @Diego Gisbert
|
A-210 U A-Emerald Dragon @Diego Gisbert
|
||||||
A215 U A-Jade Orb of Dragonkind @Olena Richards
|
A-215 U A-Jade Orb of Dragonkind @Olena Richards
|
||||||
A217 R A-Monster Manual @David Gaillet
|
A-223 U A-Split the Spoils @Edgar Sánchez Hidalgo
|
||||||
A223 U A-Split the Spoils @Edgar Sánchez Hidalgo
|
A-239 U A-Krydle of Baldur's Gate @Bryan Sola
|
||||||
A232 R A-Baba Lysaga, Night Witch @Slawomir Maniak
|
A-243 M A-Minsc & Boo, Timeless Heroes @Andreas Zafiratos
|
||||||
A239 U A-Krydle of Baldur's Gate @Bryan Sola
|
A-259 C A-Lantern of Revealing @Eytan Zana
|
||||||
A243 M A-Minsc & Boo, Timeless Heroes @Andreas Zafiratos
|
A-262 U A-Navigation Orb @Robin Olausson
|
||||||
A259 C A-Lantern of Revealing @Eytan Zana
|
|
||||||
A262 U A-Navigation Orb @Robin Olausson
|
|
||||||
|
|
||||||
[conjured]
|
[conjured]
|
||||||
45a R Hag of Ceaseless Torment @Konstantin Porubov
|
45a R Hag of Ceaseless Torment @Konstantin Porubov
|
||||||
|
|||||||
@@ -443,7 +443,7 @@ Replace=.012F RareMythic:fromSheet("BLB cards")
|
|||||||
386 R Thundertrap Trainer @Jesper Ejsing
|
386 R Thundertrap Trainer @Jesper Ejsing
|
||||||
|
|
||||||
[rebalanced]
|
[rebalanced]
|
||||||
A138 U A-Heartfire Hero @Jakub Kasper
|
A-138 U A-Heartfire Hero @Jakub Kasper
|
||||||
|
|
||||||
[special guests]
|
[special guests]
|
||||||
1 Sword of Fire and Ice|SPG
|
1 Sword of Fire and Ice|SPG
|
||||||
|
|||||||
@@ -462,23 +462,23 @@ ScryfallCode=DMU
|
|||||||
436 M Sheoldred, the Apocalypse @Richard Whitters
|
436 M Sheoldred, the Apocalypse @Richard Whitters
|
||||||
|
|
||||||
[rebalanced]
|
[rebalanced]
|
||||||
A1 M A-Karn, Living Legacy @Chris Rahn
|
A-1 M A-Karn, Living Legacy @Chris Rahn
|
||||||
A138 C A-Meria's Outrider @Lius Lasahido
|
A-138 C A-Meria's Outrider @Lius Lasahido
|
||||||
A141 R A-Radha's Firebrand @Ângelo Bortolini
|
A-141 R A-Radha's Firebrand @Ângelo Bortolini
|
||||||
A145 U A-Sprouting Goblin @Uriah Voth
|
A-145 U A-Sprouting Goblin @Uriah Voth
|
||||||
A169 R A-Llanowar Greenwidow @Jokubas Uogintas
|
A-169 R A-Llanowar Greenwidow @Jokubas Uogintas
|
||||||
A170 R A-Llanowar Loamspeaker @Zara Alfonso
|
A-170 R A-Llanowar Loamspeaker @Zara Alfonso
|
||||||
A176 C A-Scout the Wilderness @A. M. Sartor
|
A-176 C A-Scout the Wilderness @A. M. Sartor
|
||||||
A181 C A-Sunbathing Rootwalla @Campbell White
|
A-181 C A-Sunbathing Rootwalla @Campbell White
|
||||||
A207 U A-Nael, Avizoa Aeronaut @Miguel Mercado
|
A-207 U A-Nael, Avizoa Aeronaut @Miguel Mercado
|
||||||
A211 U A-Radha, Coalition Warlord @Randy Vargas
|
A-211 U A-Radha, Coalition Warlord @Randy Vargas
|
||||||
A217 U A-Rulik Mons, Warren Chief @Tuan Duong Chu
|
A-217 U A-Rulik Mons, Warren Chief @Tuan Duong Chu
|
||||||
A220 M A-Soul of Windgrace @Liiga Smilshkalne
|
A-220 M A-Soul of Windgrace @Liiga Smilshkalne
|
||||||
A222 U A-Tatyova, Steward of Tides @Howard Lyon
|
A-222 U A-Tatyova, Steward of Tides @Howard Lyon
|
||||||
A225 U A-Uurg, Spawn of Turg @Nicholas Gregory
|
A-225 U A-Uurg, Spawn of Turg @Nicholas Gregory
|
||||||
A227 U A-Zar Ojanen, Scion of Efrava @Justine Cruz
|
A-227 U A-Zar Ojanen, Scion of Efrava @Justine Cruz
|
||||||
A259 R A-Thran Portal @Sarah Finnigan
|
A-259 R A-Thran Portal @Sarah Finnigan
|
||||||
A286 R A-Briar Hydra @Caio Monteiro
|
A-286 R A-Briar Hydra @Caio Monteiro
|
||||||
|
|
||||||
[lands]
|
[lands]
|
||||||
2 Plains|DMU|1
|
2 Plains|DMU|1
|
||||||
|
|||||||
@@ -425,26 +425,28 @@ FatPackExtraSlots=20 BasicLands, 20 BasicLands+
|
|||||||
402 U Prosperous Innkeeper @Eric Deschamps
|
402 U Prosperous Innkeeper @Eric Deschamps
|
||||||
|
|
||||||
[rebalanced]
|
[rebalanced]
|
||||||
A7 U A-Cloister Gargoyle @Mark Zug
|
A-7 U A-Cloister Gargoyle @Mark Zug
|
||||||
A14 C A-Dwarfhold Champion @Miguel Mercado
|
A-9 C A-Dawnbringer Cleric @Lie Setiawan
|
||||||
A32 U A-Plate Armor @Martina Pilcerova
|
A-14 C A-Dwarfhold Champion @Miguel Mercado
|
||||||
A53 M A-Demilich @Daniel Zrom
|
A-32 U A-Plate Armor @Martina Pilcerova
|
||||||
A81 U A-Wizard Class @Marta Nael
|
A-53 M A-Demilich @Daniel Zrom
|
||||||
A87 M A-Acererak the Archlich @Andrey Kuzinskiy
|
A-81 U A-Wizard Class @Marta Nael
|
||||||
A95 U A-Death-Priest of Myrkul @Lius Lasahido
|
A-87 M A-Acererak the Archlich @Andrey Kuzinskiy
|
||||||
A102 C A-Fates' Reversal @Alix Branwyn
|
A-95 U A-Death-Priest of Myrkul @Lius Lasahido
|
||||||
A115 C A-Precipitous Drop @Gabor Szikszai
|
A-102 C A-Fates' Reversal @Alix Branwyn
|
||||||
A118 C A-Sepulcher Ghoul @Jason A. Engle
|
A-115 C A-Precipitous Drop @Gabor Szikszai
|
||||||
A130 C A-Armory Veteran @Caio Monteiro
|
A-118 C A-Sepulcher Ghoul @Jason A. Engle
|
||||||
A180 U A-Druid Class @Svetlin Velinov
|
A-130 C A-Armory Veteran @Caio Monteiro
|
||||||
A181 M A-Ellywick Tumblestrum @Anna Steinbauer
|
A-180 U A-Druid Class @Svetlin Velinov
|
||||||
A183 C A-Find the Path @Lindsey Look
|
A-181 M A-Ellywick Tumblestrum @Anna Steinbauer
|
||||||
A196 R A-Ochre Jelly @Daarken
|
A-183 C A-Find the Path @Lindsey Look
|
||||||
A219 U A-Bruenor Battlehammer @Wayne Reynolds
|
A-196 R A-Ochre Jelly @Daarken
|
||||||
A231 U A-Shessra, Death's Whisper @Marie Magny
|
A-219 U A-Bruenor Battlehammer @Wayne Reynolds
|
||||||
A233 R A-Sorcerer Class @Alexander Mokhov
|
A-226 U A-Krydle of Baldur's Gate @Bryan Sola
|
||||||
A237 R A-Triumphant Adventurer @Alexander Mokhov
|
A-231 U A-Shessra, Death's Whisper @Marie Magny
|
||||||
A255 R A-Dungeon Descent @Kasia 'Kafis' Zielińska
|
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]
|
[dungeons]
|
||||||
S Dungeon of the Mad Mage
|
S Dungeon of the Mad Mage
|
||||||
|
|||||||
@@ -475,7 +475,7 @@ Replace=.078F RareMythic:fromSheet("DSK cards")
|
|||||||
417 R Twitching Doll @John Tedrick
|
417 R Twitching Doll @John Tedrick
|
||||||
|
|
||||||
[rebalanced]
|
[rebalanced]
|
||||||
A143 R A-Leyline of Resonance @Sergey Glushakov
|
A-143 R A-Leyline of Resonance @Sergey Glushakov
|
||||||
|
|
||||||
[special guests]
|
[special guests]
|
||||||
1 Collected Company|SPG
|
1 Collected Company|SPG
|
||||||
|
|||||||
@@ -70,3 +70,6 @@ ScryfallCode=FCA
|
|||||||
62 R Smuggler's Copter @Square Enix
|
62 R Smuggler's Copter @Square Enix
|
||||||
63 U Strixhaven Stadium @Square Enix
|
63 U Strixhaven Stadium @Square Enix
|
||||||
64 R Command Beacon @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
|
387 R Crystalline Giant @Kotakan
|
||||||
|
|
||||||
[rebalanced]
|
[rebalanced]
|
||||||
A216 M A-Winota, Joiner of Forces @Magali Villeneuve
|
A-216 M A-Winota, Joiner of Forces @Magali Villeneuve
|
||||||
|
|
||||||
[Lands]
|
[Lands]
|
||||||
10 Bloodfell Caves|IKO
|
10 Bloodfell Caves|IKO
|
||||||
|
|||||||
@@ -435,18 +435,17 @@ Prerelease=6 Boosters, 1 RareMythic+
|
|||||||
412 L Forest @Pig Hands
|
412 L Forest @Pig Hands
|
||||||
|
|
||||||
[rebalanced]
|
[rebalanced]
|
||||||
A48 C A-Binding Geist @Campbell White
|
A-48 C A-Binding Geist @Campbell White
|
||||||
A52 U A-Cobbled Lancer @Igor Kieryluk
|
A-52 U A-Cobbled Lancer @Igor Kieryluk
|
||||||
A58 R A-Dreamshackle Geist @Andreas Zafiratos
|
A-58 R A-Dreamshackle Geist @Andreas Zafiratos
|
||||||
A62 U A-Gutter Skulker @Viko Menezes
|
A-62 U A-Gutter Skulker @Viko Menezes
|
||||||
A63 R A-Hullbreaker Horror @Svetlin Velinov
|
A-66 C A-Lantern Bearer @Zoltan Boros
|
||||||
A66 C A-Lantern Bearer @Zoltan Boros
|
A-69 U A-Mischievous Catgeist @Denman Rooke
|
||||||
A69 U A-Mischievous Catgeist @Denman Rooke
|
A-81 C A-Stitched Assistant @Andrey Kuzinskiy
|
||||||
A81 C A-Stitched Assistant @Andrey Kuzinskiy
|
A-233 U A-Brine Comber @Olena Richards
|
||||||
A233 U A-Brine Comber @Olena Richards
|
A-235 R A-Dorothea, Vengeful Victim @Marta Nael
|
||||||
A235 R A-Dorothea, Vengeful Victim @Marta Nael
|
A-247 U A-Sigardian Paladin @Slawomir Maniak
|
||||||
A247 U A-Sigardian Paladin @Slawomir Maniak
|
A-248 U A-Skull Skaab @Nicholas Gregory
|
||||||
A248 U A-Skull Skaab @Nicholas Gregory
|
|
||||||
|
|
||||||
[tokens]
|
[tokens]
|
||||||
1 w_1_1_human @Miguel Mercado
|
1 w_1_1_human @Miguel Mercado
|
||||||
|
|||||||
@@ -417,14 +417,14 @@ Prerelease=6 Boosters, 1 RareMythic+
|
|||||||
391 U Join the Dance @Raoul Vitale
|
391 U Join the Dance @Raoul Vitale
|
||||||
|
|
||||||
[rebalanced]
|
[rebalanced]
|
||||||
A52 C A-Falcon Abomination @Brent Hollowell
|
A-52 C A-Falcon Abomination @Brent Hollowell
|
||||||
A59 M A-Lier, Disciple of the Drowned @Ekaterina Burmak
|
A-59 M A-Lier, Disciple of the Drowned @Ekaterina Burmak
|
||||||
A69 R A-Patrician Geist @Marta Nael
|
A-69 R A-Patrician Geist @Marta Nael
|
||||||
A70 U A-Phantom Carriage @Igor Kieryluk
|
A-70 U A-Phantom Carriage @Igor Kieryluk
|
||||||
A74 C A-Shipwreck Sifters @Svetlin Velinov
|
A-74 C A-Shipwreck Sifters @Svetlin Velinov
|
||||||
A106 C A-Hobbling Zombie @Josh Hass
|
A-106 C A-Hobbling Zombie @Josh Hass
|
||||||
A112 M A-The Meathook Massacre @Chris Seaman
|
A-112 M A-The Meathook Massacre @Chris Seaman
|
||||||
A218 U A-Devoted Grafkeeper @Raoul Vitale
|
A-218 U A-Devoted Grafkeeper @Raoul Vitale
|
||||||
|
|
||||||
[tokens]
|
[tokens]
|
||||||
1 w_1_1_human @Kari Christensen
|
1 w_1_1_human @Kari Christensen
|
||||||
|
|||||||
@@ -784,8 +784,8 @@ ScryfallCode=J21
|
|||||||
776 R Sliver Hive
|
776 R Sliver Hive
|
||||||
|
|
||||||
[rebalanced]
|
[rebalanced]
|
||||||
A438 U A-Dragon's Rage Channeler @Martina Fackova
|
A-438 U A-Dragon's Rage Channeler @Martina Fackova
|
||||||
A529 C A-Unholy Heat @Kari Christensen
|
A-529 C A-Unholy Heat @Kari Christensen
|
||||||
|
|
||||||
[tokens]
|
[tokens]
|
||||||
u_8_8_kraken
|
u_8_8_kraken
|
||||||
|
|||||||
@@ -503,4 +503,4 @@ ScryfallCode=JMP
|
|||||||
495 C Rupture Spire @Jaime Jones
|
495 C Rupture Spire @Jaime Jones
|
||||||
|
|
||||||
[rebalanced]
|
[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
|
407 M Vorinclex, Monstrous Raider @Richard Whitters
|
||||||
|
|
||||||
[rebalanced]
|
[rebalanced]
|
||||||
A40 M A-Alrund, God of the Cosmos @Kieran Yanner
|
A-40 M A-Alrund, God of the Cosmos @Kieran Yanner
|
||||||
A41 M A-Alrund's Epiphany @Kieran Yanner
|
A-41 M A-Alrund's Epiphany @Kieran Yanner
|
||||||
A51 R A-Cosmos Charger @Nils Hamm
|
A-51 R A-Cosmos Charger @Nils Hamm
|
||||||
A106 U A-Return Upon the Tide @Martina Fačková
|
A-106 U A-Return Upon the Tide @Martina Fačková
|
||||||
A109 R A-Skemfar Avenger @Randy Vargas
|
A-109 R A-Skemfar Avenger @Randy Vargas
|
||||||
A139 M A-Goldspan Dragon @Andrew Mar
|
A-165 C A-Elderleaf Mentor @Zoltan Boros
|
||||||
A165 C A-Elderleaf Mentor @Zoltan Boros
|
A-166 U A-Elven Bow @Dallas Williams
|
||||||
A166 U A-Elven Bow @Dallas Williams
|
A-198 M A-Tyvar Kell @Chris Rallis
|
||||||
A169 R A-Esika's Chariot @Raoul Vitale
|
A-208 U A-Fall of the Impostor @Eric Deschamps
|
||||||
A198 M A-Tyvar Kell @Chris Rallis
|
A-212 U A-Harald, King of Skemfar @Grzegorz Rutkowski
|
||||||
A208 U A-Fall of the Impostor @Eric Deschamps
|
A-213 R A-Harald Unites the Elves @Ryan Pancoast
|
||||||
A212 U A-Harald, King of Skemfar @Grzegorz Rutkowski
|
A-224 U A-Narfi, Betrayer King @Daarken
|
||||||
A213 R A-Harald Unites the Elves @Ryan Pancoast
|
A-233 U A-Vega, the Watcher @Paul Scott Canavan
|
||||||
A224 U A-Narfi, Betrayer King @Daarken
|
A-237 R A-Cosmos Elixir @Volkan Baǵa
|
||||||
A233 U A-Vega, the Watcher @Paul Scott Canavan
|
A-253 U A-Bretagard Stronghold @Jung Park
|
||||||
A237 R A-Cosmos Elixir @Volkan Baǵa
|
A-268 U A-Skemfar Elderhall @Johannes Voss
|
||||||
A253 U A-Bretagard Stronghold @Jung Park
|
A-378 R A-Canopy Tactician @Ekaterina Burmak
|
||||||
A255 R A-Faceless Haven @Titus Lunter
|
A-385 U A-Elderfang Ritualist @Wisnu Tan
|
||||||
A268 U A-Skemfar Elderhall @Johannes Voss
|
A-387 U A-Thornmantle Striker @Magali Villeneuve
|
||||||
A378 R A-Canopy Tactician @Ekaterina Burmak
|
|
||||||
A385 U A-Elderfang Ritualist @Wisnu Tan
|
|
||||||
A387 U A-Thornmantle Striker @Magali Villeneuve
|
|
||||||
|
|
||||||
[Snow Lands]
|
[Snow Lands]
|
||||||
5 Snow-Covered Plains|KHM|1
|
5 Snow-Covered Plains|KHM|1
|
||||||
|
|||||||
@@ -539,24 +539,23 @@ ScryfallCode=NEO
|
|||||||
514 M Jin-Gitaxias, Progress Tyrant @Richard Whitters
|
514 M Jin-Gitaxias, Progress Tyrant @Richard Whitters
|
||||||
|
|
||||||
[rebalanced]
|
[rebalanced]
|
||||||
A1 C A-Ancestral Katana @Daniel Ljunggren
|
A-1 C A-Ancestral Katana @Daniel Ljunggren
|
||||||
A10 C A-Eiganjo Exemplar @Ernanda Souza
|
A-10 C A-Eiganjo Exemplar @Ernanda Souza
|
||||||
A19 C A-Imperial Subduer @Zara Alfonso
|
A-19 C A-Imperial Subduer @Zara Alfonso
|
||||||
A53 U A-Futurist Operative @Justine Cruz
|
A-53 U A-Futurist Operative @Justine Cruz
|
||||||
A67 C A-Moon-Circuit Hacker @Tia Masic
|
A-67 C A-Moon-Circuit Hacker @Tia Masic
|
||||||
A73 U A-Prosperous Thief @Fajareka Setiawan
|
A-73 U A-Prosperous Thief @Fajareka Setiawan
|
||||||
A86 R A-Thousand-Faced Shadow @Ekaterina Burmak
|
A-86 R A-Thousand-Faced Shadow @Ekaterina Burmak
|
||||||
A95 U A-Dokuchi Silencer @David Rapoza
|
A-95 U A-Dokuchi Silencer @David Rapoza
|
||||||
A114 M A-Nashi, Moon Sage's Scion @Valera Lutfullina
|
A-114 M A-Nashi, Moon Sage's Scion @Valera Lutfullina
|
||||||
A116 U A-Nezumi Prowler @Joseph Weston
|
A-116 U A-Nezumi Prowler @Joseph Weston
|
||||||
A131 C A-Akki Ronin @Olivier Bernard
|
A-131 C A-Akki Ronin @Olivier Bernard
|
||||||
A152 U A-Kumano Faces Kakkazan @Mike Bierek
|
A-156 C A-Peerless Samurai @Micah Epstein
|
||||||
A156 C A-Peerless Samurai @Micah Epstein
|
A-215 U A-Asari Captain @Donato Giancola
|
||||||
A215 U A-Asari Captain @Donato Giancola
|
A-232 R A-Raiyuu, Storm's Edge @Heonhwa Choe
|
||||||
A232 R A-Raiyuu, Storm's Edge @Heonhwa Choe
|
A-234 R A-Satoru Umezawa @Anna Pavleeva
|
||||||
A234 R A-Satoru Umezawa @Anna Pavleeva
|
A-236 U A-Silver-Fur Master @Carl Critchlow
|
||||||
A236 U A-Silver-Fur Master @Carl Critchlow
|
A-242 U A-Circuit Mender @Hector Ortiz
|
||||||
A242 U A-Circuit Mender @Hector Ortiz
|
|
||||||
|
|
||||||
[lands]
|
[lands]
|
||||||
1 Plains|NEO|1
|
1 Plains|NEO|1
|
||||||
|
|||||||
@@ -590,6 +590,10 @@ ScryfallCode=MH2
|
|||||||
6 Patchwork Gnomes|MH2|1
|
6 Patchwork Gnomes|MH2|1
|
||||||
6 Zuran Orb|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]
|
[tokens]
|
||||||
1 w_1_1_bird_flying @Howard Lyon
|
1 w_1_1_bird_flying @Howard Lyon
|
||||||
2 u_0_3_crab @Yeong-Hao Han
|
2 u_0_3_crab @Yeong-Hao Han
|
||||||
|
|||||||
@@ -585,10 +585,10 @@ Replace=.042F fromSheet("MH3 commanders")
|
|||||||
496 R Flusterstorm @Andrew Mar
|
496 R Flusterstorm @Andrew Mar
|
||||||
|
|
||||||
[rebalanced]
|
[rebalanced]
|
||||||
A29 R A-Guide of Souls @Ryan Valle
|
A-29 R A-Guide of Souls @Ryan Valle
|
||||||
A38 M A-Ocelot Pride @Chris Seaman
|
A-38 M A-Ocelot Pride @Chris Seaman
|
||||||
A122 C A-Galvanic Discharge @Zoltan Boros
|
A-122 C A-Galvanic Discharge @Zoltan Boros
|
||||||
A193 R A-Nadu, Winged Wisdom @Daren Bader
|
A-193 R A-Nadu, Winged Wisdom @Daren Bader
|
||||||
|
|
||||||
[new to modern]
|
[new to modern]
|
||||||
1 Angel of the Ruins|MH3
|
1 Angel of the Ruins|MH3
|
||||||
|
|||||||
@@ -202,6 +202,9 @@ ScryfallCode=MUL
|
|||||||
194 R Yorion, Sky Nomad @Justine Mara Andersen
|
194 R Yorion, Sky Nomad @Justine Mara Andersen
|
||||||
195 R Zirda, the Dawnwaker @Justine Mara Andersen
|
195 R Zirda, the Dawnwaker @Justine Mara Andersen
|
||||||
|
|
||||||
|
[rebalanced]
|
||||||
|
A-120 U A-Radha, Coalition Warlord @Randy Vargas
|
||||||
|
|
||||||
[draft booster]
|
[draft booster]
|
||||||
2 Anafenza, Kin-Tree Spirit|MUL
|
2 Anafenza, Kin-Tree Spirit|MUL
|
||||||
7 Daxos, Blessed by the Sun|MUL
|
7 Daxos, Blessed by the Sun|MUL
|
||||||
|
|||||||
@@ -496,50 +496,50 @@ ScryfallCode=SNC
|
|||||||
469 M Urabrask, Heretic Praetor @Richard Whitters
|
469 M Urabrask, Heretic Praetor @Richard Whitters
|
||||||
|
|
||||||
[rebalanced]
|
[rebalanced]
|
||||||
A6 C A-Buy Your Silence @Tony Foti
|
A-6 C A-Buy Your Silence @Tony Foti
|
||||||
A7 C A-Celebrity Fencer @Inka Schulz
|
A-7 C A-Celebrity Fencer @Inka Schulz
|
||||||
A20 U A-Knockout Blow @Zoltan Boros
|
A-20 U A-Knockout Blow @Zoltan Boros
|
||||||
A32 C A-Speakeasy Server @Scott Murphy
|
A-32 C A-Speakeasy Server @Scott Murphy
|
||||||
A37 C A-Case the Joint @Stella Spente
|
A-37 C A-Case the Joint @Stella Spente
|
||||||
A53 C A-Psionic Snoop @Marcela Medeiros
|
A-53 C A-Psionic Snoop @Marcela Medeiros
|
||||||
A55 U A-Public Enemy @Dominik Mayer
|
A-55 U A-Public Enemy @Dominik Mayer
|
||||||
A60 C A-Sewer Crocodile @Milivoj Ćeran
|
A-60 C A-Sewer Crocodile @Milivoj Ćeran
|
||||||
A74 C A-Deal Gone Bad @Mathias Kollros
|
A-74 C A-Deal Gone Bad @Mathias Kollros
|
||||||
A75 C A-Demon's Due @Slawomir Maniak
|
A-75 C A-Demon's Due @Slawomir Maniak
|
||||||
A81 U A-Graveyard Shift @Liiga Smilshkalne
|
A-81 U A-Graveyard Shift @Liiga Smilshkalne
|
||||||
A84 C A-Incriminate @Kieran Yanner
|
A-84 C A-Incriminate @Kieran Yanner
|
||||||
A87 C A-Midnight Assassin @Christina Davis
|
A-87 C A-Midnight Assassin @Christina Davis
|
||||||
A91 C A-Revel Ruiner @Christina Davis
|
A-91 C A-Revel Ruiner @Christina Davis
|
||||||
A98 U A-Vampire Scrivener @Bastien L. Deharme
|
A-98 U A-Vampire Scrivener @Bastien L. Deharme
|
||||||
A106 C A-Exhibition Magician @Greg Staples
|
A-106 C A-Exhibition Magician @Greg Staples
|
||||||
A111 C A-Jackhammer @John Severin Brassell
|
A-111 C A-Jackhammer @John Severin Brassell
|
||||||
A118 U A-Pyre-Sledge Arsonist @Kekai Kotaki
|
A-118 U A-Pyre-Sledge Arsonist @Kekai Kotaki
|
||||||
A119 C A-Ready to Rumble @Josu Hernaiz
|
A-119 C A-Ready to Rumble @Josu Hernaiz
|
||||||
A120 C A-Riveteers Initiate @Svetlin Velinov
|
A-120 C A-Riveteers Initiate @Svetlin Velinov
|
||||||
A123 U A-Sizzling Soloist @Véronique Meignaud
|
A-123 U A-Sizzling Soloist @Véronique Meignaud
|
||||||
A139 C A-Capenna Express @Viko Menezes
|
A-139 C A-Capenna Express @Viko Menezes
|
||||||
A149 C A-Glittermonger @Evyn Fong
|
A-149 C A-Glittermonger @Evyn Fong
|
||||||
A150 C A-High-Rise Sawjack @Randy Vargas
|
A-150 C A-High-Rise Sawjack @Randy Vargas
|
||||||
A153 C A-Most Wanted @Rémi Jacquot
|
A-153 C A-Most Wanted @Rémi Jacquot
|
||||||
A157 C A-Social Climber @Carly Mazur
|
A-157 C A-Social Climber @Carly Mazur
|
||||||
A164 C A-Warm Welcome @Inka Schulz
|
A-164 C A-Warm Welcome @Inka Schulz
|
||||||
A173 U A-Cabaretti Charm @Steve Argyle
|
A-173 U A-Cabaretti Charm @Steve Argyle
|
||||||
A174 C A-Celestial Regulator @Mathias Kollros
|
A-174 C A-Celestial Regulator @Mathias Kollros
|
||||||
A176 C A-Civil Servant @Tony Foti
|
A-176 C A-Civil Servant @Tony Foti
|
||||||
A189 U A-Forge Boss @Igor Kieryluk
|
A-189 U A-Forge Boss @Igor Kieryluk
|
||||||
A190 C A-Glamorous Outlaw @Maria Zolotukhina
|
A-190 C A-Glamorous Outlaw @Maria Zolotukhina
|
||||||
A201 C A-Masked Bandits @Micah Epstein
|
A-201 C A-Masked Bandits @Micah Epstein
|
||||||
A203 U A-Metropolis Angel @Lie Setiawan
|
A-203 U A-Metropolis Angel @Lie Setiawan
|
||||||
A204 U A-Mr. Orfeo, the Boulder @Daarken
|
A-204 U A-Mr. Orfeo, the Boulder @Daarken
|
||||||
A212 U A-Queza, Augur of Agonies @Josh Hass
|
A-212 U A-Queza, Augur of Agonies @Josh Hass
|
||||||
A214 C A-Rakish Revelers @Alessandra Pisano
|
A-214 C A-Rakish Revelers @Alessandra Pisano
|
||||||
A220 U A-Security Rhox @Lie Setiawan
|
A-220 U A-Security Rhox @Lie Setiawan
|
||||||
A221 C A-Shattered Seraph @Bastien L. Deharme
|
A-221 C A-Shattered Seraph @Bastien L. Deharme
|
||||||
A224 C A-Spara's Adjudicators @Aaron J. Riley
|
A-224 C A-Spara's Adjudicators @Aaron J. Riley
|
||||||
A225 U A-Stimulus Package @Robin Olausson
|
A-225 U A-Stimulus Package @Robin Olausson
|
||||||
A226 U A-Syndicate Infiltrator @Mila Pesic
|
A-226 U A-Syndicate Infiltrator @Mila Pesic
|
||||||
A241 C A-Ominous Parcel @Joe Slucher
|
A-241 C A-Ominous Parcel @Joe Slucher
|
||||||
A242 C A-Paragon of Modernity @Volkan Baǵa
|
A-242 C A-Paragon of Modernity @Volkan Baǵa
|
||||||
|
|
||||||
[lands]
|
[lands]
|
||||||
2 Plains|SNC|1
|
2 Plains|SNC|1
|
||||||
|
|||||||
@@ -408,17 +408,16 @@ ScryfallCode=STX
|
|||||||
382 U Decisive Denial @Lorenzo Mastroianni
|
382 U Decisive Denial @Lorenzo Mastroianni
|
||||||
|
|
||||||
[rebalanced]
|
[rebalanced]
|
||||||
A15 U A-Dueling Coach @Caio Monteiro
|
A-15 U A-Dueling Coach @Caio Monteiro
|
||||||
A41 U A-Divide by Zero @Liiga Smilshkalne
|
A-46 U A-Mentor's Guidance @Brian Valeza
|
||||||
A46 U A-Mentor's Guidance @Brian Valeza
|
A-56 U A-Symmetry Sage @Jehan Choo
|
||||||
A56 U A-Symmetry Sage @Jehan Choo
|
A-88 U A-Tenured Inkcaster @Jake Murray
|
||||||
A88 U A-Tenured Inkcaster @Jake Murray
|
A-92 U A-Ardent Dustspeaker @Mads Ahm
|
||||||
A92 U A-Ardent Dustspeaker @Mads Ahm
|
A-117 C A-Tome Shredder @Sam Rowan
|
||||||
A117 C A-Tome Shredder @Sam Rowan
|
A-156 M A-Rowan, Scholar of Sparks @Magali Villeneuve
|
||||||
A156 M A-Rowan, Scholar of Sparks @Magali Villeneuve
|
A-202 U A-Maelstrom Muse @Michele Parisi
|
||||||
A202 U A-Maelstrom Muse @Michele Parisi
|
A-240 M A-Tanazir Quandrix @Raymond Swanland
|
||||||
A240 M A-Tanazir Quandrix @Raymond Swanland
|
A-258 U A-Spell Satchel @YW Tang
|
||||||
A258 U A-Spell Satchel @YW Tang
|
|
||||||
|
|
||||||
[lesson]
|
[lesson]
|
||||||
2 Environmental Sciences
|
2 Environmental Sciences
|
||||||
|
|||||||
@@ -407,18 +407,18 @@ ScryfallCode=BRO
|
|||||||
384 U Blanchwood Armor @Manuel Castañón
|
384 U Blanchwood Armor @Manuel Castañón
|
||||||
|
|
||||||
[rebalanced]
|
[rebalanced]
|
||||||
A58 C A-Mightstone's Animation @Igor Kieryluk
|
A-58 C A-Mightstone's Animation @Igor Kieryluk
|
||||||
A63 U A-Splitting the Powerstone @Campbell White
|
A-63 U A-Splitting the Powerstone @Campbell White
|
||||||
A69 U A-Urza, Powerstone Prodigy @Donato Giancola
|
A-69 U A-Urza, Powerstone Prodigy @Donato Giancola
|
||||||
A70 R A-Urza's Command @Dominik Mayer
|
A-70 R A-Urza's Command @Dominik Mayer
|
||||||
A132 C A-Excavation Explosion @Campbell White
|
A-132 C A-Excavation Explosion @Campbell White
|
||||||
A140 U A-Mishra, Excavation Prodigy @Donato Giancola
|
A-140 U A-Mishra, Excavation Prodigy @Donato Giancola
|
||||||
A156 R A-Visions of Phyrexia @Dominik Mayer
|
A-156 R A-Visions of Phyrexia @Dominik Mayer
|
||||||
A199 U A-Haywire Mite @Izzy
|
A-199 U A-Haywire Mite @Izzy
|
||||||
A219 M A-Saheeli, Filigree Master @Aurore Folny
|
A-219 M A-Saheeli, Filigree Master @Aurore Folny
|
||||||
A254 R A-Thran Spider @Joshua Cairos
|
A-254 R A-Thran Spider @Joshua Cairos
|
||||||
A263 R A-Hall of Tagsin @Christian Dimitrov
|
A-263 R A-Hall of Tagsin @Christian Dimitrov
|
||||||
A289 R A-Geology Enthusiast @Fajareka Setiawan
|
A-289 R A-Geology Enthusiast @Fajareka Setiawan
|
||||||
|
|
||||||
[lands]
|
[lands]
|
||||||
2 Plains|BRO|1
|
2 Plains|BRO|1
|
||||||
|
|||||||
@@ -862,8 +862,8 @@ ScryfallCode=LTR
|
|||||||
301 M Sauron, the Dark Lord @Anton Solovianchyk
|
301 M Sauron, the Dark Lord @Anton Solovianchyk
|
||||||
|
|
||||||
[rebalanced]
|
[rebalanced]
|
||||||
A103 R A-Orcish Bowmasters @Maxim Kostin
|
A-103 R A-Orcish Bowmasters @Maxim Kostin
|
||||||
A246 M A-The One Ring @Veli Nyström
|
A-246 M A-The One Ring @Veli Nyström
|
||||||
|
|
||||||
[tokens]
|
[tokens]
|
||||||
1 w_1_1_human_soldier @Anastasia Balakchina
|
1 w_1_1_human_soldier @Anastasia Balakchina
|
||||||
|
|||||||
@@ -437,7 +437,7 @@ ScryfallCode=LCI
|
|||||||
409 U Bartolomé del Presidio @Randy Gallegos
|
409 U Bartolomé del Presidio @Randy Gallegos
|
||||||
|
|
||||||
[rebalanced]
|
[rebalanced]
|
||||||
A150 U A-Geological Appraiser @Alix Branwyn
|
A-150 U A-Geological Appraiser @Alix Branwyn
|
||||||
|
|
||||||
[double-face]
|
[double-face]
|
||||||
9 Idol of the Deep King|LCI
|
9 Idol of the Deep King|LCI
|
||||||
|
|||||||
@@ -424,8 +424,8 @@ ScryfallCode=ELD
|
|||||||
397 U Inspiring Veteran @Scott Murphy
|
397 U Inspiring Veteran @Scott Murphy
|
||||||
|
|
||||||
[rebalanced]
|
[rebalanced]
|
||||||
A81 U A-Cauldron Familiar @Milivoj Ćeran
|
A-81 U A-Cauldron Familiar @Milivoj Ćeran
|
||||||
A125 R A-Fires of Invention @Stanton Feng
|
A-125 R A-Fires of Invention @Stanton Feng
|
||||||
|
|
||||||
[tokens]
|
[tokens]
|
||||||
1 w_0_1_goat @Forrest Imel
|
1 w_0_1_goat @Forrest Imel
|
||||||
|
|||||||
@@ -332,7 +332,7 @@ ScryfallCode=WAR
|
|||||||
275 M Tezzeret, Master of the Bridge @Chase Stone
|
275 M Tezzeret, Master of the Bridge @Chase Stone
|
||||||
|
|
||||||
[rebalanced]
|
[rebalanced]
|
||||||
A221 R A-Teferi, Time Raveler @Chris Rallis
|
A-221 R A-Teferi, Time Raveler @Chris Rallis
|
||||||
|
|
||||||
[tokens]
|
[tokens]
|
||||||
1 c_2_2_spirit @Johann Bodin
|
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) {
|
private String getScryfallDownloadURL(PaperCard c, String face, boolean useArtCrop, boolean hasSetLookup, String imagePath, ArrayList<String> downloadUrls) {
|
||||||
StaticData data = StaticData.instance();
|
StaticData data = StaticData.instance();
|
||||||
CardEdition edition = data.getEditions().get(c.getEdition());
|
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;
|
return null;
|
||||||
if (hasSetLookup) {
|
if (hasSetLookup) {
|
||||||
List<PaperCard> clones = StaticData.instance().getCommonCards().getAllCards(c.getName());
|
List<PaperCard> clones = StaticData.instance().getCommonCards().getAllCards(c.getName());
|
||||||
for (PaperCard pc : clones) {
|
for (PaperCard pc : clones) {
|
||||||
if (clones.size() > 1) {//clones only
|
if (clones.size() > 1) { // Clones only
|
||||||
if (!c.getEdition().equalsIgnoreCase(pc.getEdition())) {
|
if (!c.getEdition().equalsIgnoreCase(pc.getEdition())) {
|
||||||
CardEdition ed = data.getEditions().get(pc.getEdition());
|
CardEdition ed = data.getEditions().get(pc.getEdition());
|
||||||
if (ed != null) {
|
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?
|
// 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));
|
downloadUrls.add(ForgeConstants.URL_PIC_SCRYFALL_DOWNLOAD + ImageUtil.getScryfallDownloadUrl(c, face, setCode, "", useArtCrop));
|
||||||
|
|
||||||
String alternateUrl = ImageUtil.getScryfallDownloadUrl(c, face, setCode, langCode, useArtCrop, true);
|
String alternateUrl = ImageUtil.getScryfallDownloadUrl(c, face, setCode, langCode, useArtCrop);
|
||||||
if (alternateUrl != null && !alternateUrl.equals(primaryUrl)) {
|
if (!alternateUrl.equals(primaryUrl)) {
|
||||||
downloadUrls.add(ForgeConstants.URL_PIC_SCRYFALL_DOWNLOAD + alternateUrl);
|
downloadUrls.add(ForgeConstants.URL_PIC_SCRYFALL_DOWNLOAD + alternateUrl);
|
||||||
downloadUrls.add(ForgeConstants.URL_PIC_SCRYFALL_DOWNLOAD + ImageUtil.getScryfallDownloadUrl(c, face, setCode, "", useArtCrop, true));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
@@ -112,7 +111,7 @@ public abstract class ImageFetcher {
|
|||||||
if (imageKey.equalsIgnoreCase("t:null"))
|
if (imageKey.equalsIgnoreCase("t:null"))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
//planechaseBG file...
|
// PlanechaseBG file...
|
||||||
final ArrayList<String> downloadUrls = new ArrayList<>();
|
final ArrayList<String> downloadUrls = new ArrayList<>();
|
||||||
if (imageKey.startsWith("PLANECHASEBG:")) {
|
if (imageKey.startsWith("PLANECHASEBG:")) {
|
||||||
final String filename = imageKey.substring("PLANECHASEBG:".length());
|
final String filename = imageKey.substring("PLANECHASEBG:".length());
|
||||||
@@ -136,7 +135,7 @@ public abstract class ImageFetcher {
|
|||||||
System.err.println("Paper card not found for: " + imageKey);
|
System.err.println("Paper card not found for: " + imageKey);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
//Skip fetching if it's a custom user card.
|
// Skip fetching if it's a custom user card.
|
||||||
if (paperCard.getRules().isCustom()) {
|
if (paperCard.getRules().isCustom()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -186,7 +185,7 @@ public abstract class ImageFetcher {
|
|||||||
filename = TextUtil.fastReplace(filename, ".full", ".artcrop");
|
filename = TextUtil.fastReplace(filename, ".full", ".artcrop");
|
||||||
}
|
}
|
||||||
boolean updateLink = false;
|
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 {
|
try {
|
||||||
filename = TextUtil.fastReplace(filename, "1.full", imageKey.substring(imageKey.lastIndexOf('|') + 1, imageKey.indexOf('$')) + ".full");
|
filename = TextUtil.fastReplace(filename, "1.full", imageKey.substring(imageKey.lastIndexOf('|') + 1, imageKey.indexOf('$')) + ".full");
|
||||||
updateLink = true;
|
updateLink = true;
|
||||||
@@ -196,9 +195,9 @@ public abstract class ImageFetcher {
|
|||||||
}
|
}
|
||||||
destFile = new File(ForgeConstants.CACHE_CARD_PICS_DIR, filename + ".jpg");
|
destFile = new File(ForgeConstants.CACHE_CARD_PICS_DIR, filename + ".jpg");
|
||||||
|
|
||||||
//skip ftp if using art crop
|
// Skip ftp if using art crop
|
||||||
if (!useArtCrop) {
|
if (!useArtCrop) {
|
||||||
//move priority of ftp image here
|
// Move priority of ftp image here
|
||||||
StringBuilder setDownload = new StringBuilder(ForgeConstants.URL_PIC_DOWNLOAD);
|
StringBuilder setDownload = new StringBuilder(ForgeConstants.URL_PIC_DOWNLOAD);
|
||||||
if (!hasSetLookup) {
|
if (!hasSetLookup) {
|
||||||
if (!updateLink) {
|
if (!updateLink) {
|
||||||
@@ -227,11 +226,11 @@ public abstract class ImageFetcher {
|
|||||||
this.getScryfallDownloadURL(paperCard, face, useArtCrop, hasSetLookup, filename, downloadUrls);
|
this.getScryfallDownloadURL(paperCard, face, useArtCrop, hasSetLookup, filename, downloadUrls);
|
||||||
}
|
}
|
||||||
} else if (ImageKeys.getTokenKey(ImageKeys.HIDDEN_CARD).equals(imageKey)) {
|
} 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";
|
final String filename = "hidden.png";
|
||||||
if (ImageKeys.missingCards.contains(filename))
|
if (ImageKeys.missingCards.contains(filename))
|
||||||
return;
|
return;
|
||||||
// scryfall only as png version
|
// Scryfall only as png version
|
||||||
downloadUrls.add("https://cards.scryfall.io/back.png");
|
downloadUrls.add("https://cards.scryfall.io/back.png");
|
||||||
ImageKeys.missingCards.add(filename);
|
ImageKeys.missingCards.add(filename);
|
||||||
destFile = new File(ForgeConstants.CACHE_TOKEN_PICS_DIR, 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);
|
CardEdition edition = StaticData.instance().getEditions().get(setCode);
|
||||||
if (edition == null || edition.getType() == CardEdition.Type.CUSTOM_SET) return; //Custom set token, skip fetching.
|
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);
|
Collection<CardEdition.EditionEntry> allTokens = edition.getTokens().get(tokenName);
|
||||||
|
|
||||||
if (tempdata.length > 2) {
|
if (tempdata.length > 2) {
|
||||||
String tokenCode = edition.getTokensCode();
|
String tokenCode = edition.getTokensCode();
|
||||||
String langCode = edition.getCardsLangCode();
|
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));
|
downloadUrls.add(ForgeConstants.URL_PIC_SCRYFALL_DOWNLOAD + ImageUtil.getScryfallTokenDownloadUrl(tempdata[2], tokenCode, langCode, face));
|
||||||
} else if (!allTokens.isEmpty()) {
|
} else if (!allTokens.isEmpty()) {
|
||||||
// This loop is going to try to download all the arts until it finds one
|
// 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()) {
|
if (destFile.exists()) {
|
||||||
// TODO: Figure out why this codepath gets reached.
|
// 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)) {
|
if (prefix.equals(ImageKeys.CARD_PREFIX)) {
|
||||||
PaperCard paperCard = ImageUtil.getPaperCardFromImageKey(imageKey);
|
PaperCard paperCard = ImageUtil.getPaperCardFromImageKey(imageKey);
|
||||||
if (paperCard != null)
|
if (paperCard != null)
|
||||||
|
|||||||
Reference in New Issue
Block a user