Re: Magic Data
Posted: 09 Nov 2015, 04:19
Thanks for the hardwork over the years Arch. Good luck on your next projects.
High Quality Resources for Collectible Card Games and Home of the CCGHQ Team
https://www.slightlymagic.net/forum/
https://www.slightlymagic.net/forum/viewtopic.php?f=27&t=1347
Thanks for keeping it up!icePatronus wrote:I think I managed to update the tool for Oath of the Gatewatch. Only had to the Colorless symbol which is abbreviated {C}.
Updated english-only version:
Then you should post that in Manalink forums.chandra90 wrote:In manalink during creation a deck
[
{
"front": {
"layout": "simple",
"name": "Forest",
"type_line": {
"types": [
"Land"
],
"supertypes": [
"Basic"
],
"subtypes": [
"Forest"
]
},
"text_box": [
"G"
]
}
},
{
"front": {
"layout": "split",
"faces": [
{
"layout": "simple",
"name": "Battery",
"mana_cost": "{3}{G}",
"type_line": {
"types": [
"Sorcery"
],
"supertypes": [],
"subtypes": []
},
"text_box": [
"Create a 3/3 green Elephant creature token."
]
},
{
"layout": "simple",
"name": "Assault",
"mana_cost": "{R}",
"type_line": {
"types": [
"Sorcery"
],
"supertypes": [],
"subtypes": []
},
"text_box": [
"Assault deals 2 damage to target creature or player."
]
}
]
}
},
{
"front": {
"layout": "simple",
"name": "Extricator of Sin",
"mana_cost": "{2}{W}",
"type_line": {
"types": [
"Creature"
],
"supertypes": [],
"subtypes": [
"Human",
"Cleric"
]
},
"text_box": [
"When Extricator of Sin enters the battlefield, you may sacrifice another permanent. If you do, create a 3/2 colorless Eldrazi Horror creature token.",
"Delirium \u2014 At the beginning of your upkeep, if there are four or more card types among cards in your graveyard, transform Extricator of Sin."
],
"power": 0,
"toughness": 3
},
"back": {
"layout": "simple",
"name": "Extricator of Flesh",
"type_line": {
"types": [
"Creature"
],
"supertypes": [],
"subtypes": [
"Eldrazi",
"Horror"
]
},
"text_box": [
"Eldrazi you control have vigilance.",
"{2}, {T}, Sacrifice a non-Eldrazi creature: Create a 3/2 colorless Eldrazi Horror creature token."
],
"power": 3,
"toughness": 5
}
},
{
"front": {
"layout": "simple",
"name": "Gisela, the Broken Blade",
"mana_cost": "{2}{W}{W}",
"type_line": {
"types": [
"Creature"
],
"supertypes": [
"Legendary"
],
"subtypes": [
"Horror",
"Angel"
]
},
"text_box": [
"Flying, first strike, lifelink",
"At the beginning of your end step, if you both own and control Gisela, the Broken Blade and a creature named Bruna, the Fading Light, exile them, then meld them into Brisela, Voice of Nightmares."
],
"power": 4,
"toughness": 3
},
"back": {
"layout": "simple",
"name": "Brisela, Voice of Nightmares",
"type_line": {
"types": [
"Creature"
],
"supertypes": [
"Legendary"
],
"subtypes": [
"Eldrazi",
"Angel"
]
},
"text_box": [
"Flying, first strike, vigilance, lifelink",
"Your opponents can't cast spells with converted mana cost 3 or less."
],
"power": 9,
"toughness": 10
},
"meld_half_top": true
},
{
"front": {
"layout": "flip",
"normal": {
"name": "Bushi Tenderfoot",
"mana_cost": "{W}",
"type_line": {
"types": [
"Creature"
],
"supertypes": [],
"subtypes": [
"Human",
"Soldier"
]
},
"text_box": [
"When a creature dealt damage by Bushi Tenderfoot this turn dies, flip Bushi Tenderfoot."
],
"power": 1,
"toughness": 1
},
"flipped": {
"name": "Kenzo the Hardhearted",
"type_line": {
"types": [
"Creature"
],
"supertypes": [
"Legendary"
],
"subtypes": [
"Human",
"Samurai"
]
},
"text_box": [
"Double strike; bushido 2 (Whenever this creature blocks or becomes blocked, it gets +2/+2 until end of turn.)"
],
"power": 3,
"toughness": 4
}
}
},
{
"front": {
"layout": "simple",
"name": "Brimstone Mage",
"mana_cost": "{2}{R}",
"type_line": {
"types": [
"Creature"
],
"supertypes": [],
"subtypes": [
"Human",
"Shaman"
]
},
"text_box": [
"Level up {3}{R} ({3}{R}: Put a level counter on this. Level up only as a sorcery.)",
"LEVEL 1-2",
"2/3",
"{T}: Brimstone Mage deals 1 damage to target creature or player.",
"LEVEL 3+",
"2/4",
"{T}: Brimstone Mage deals 3 damage to target creature or player."
],
"power": 2,
"toughness": 2
}
},
{
"front": {
"layout": "simple",
"name": "Transguild Courier",
"mana_cost": "{4}",
"color_indicator": [
"Black",
"Red",
"Blue",
"White",
"Green"
],
"type_line": {
"types": [
"Artifact",
"Creature"
],
"supertypes": [],
"subtypes": [
"Golem"
]
},
"power": 3,
"toughness": 3
}
},
{
"front": {
"layout": "simple",
"name": "Darksteel Colossus",
"mana_cost": "{11}",
"type_line": {
"types": [
"Artifact",
"Creature"
],
"supertypes": [],
"subtypes": [
"Golem"
]
},
"text_box": [
"Trample, indestructible",
"If Darksteel Colossus would be put into a graveyard from anywhere, reveal Darksteel Colossus and shuffle it into its owner's library instead."
],
"power": 11,
"toughness": 11
}
},
{
"front": {
"layout": "simple",
"name": "Advice from the Fae",
"mana_cost": "{2/U}{2/U}{2/U}",
"type_line": {
"types": [
"Sorcery"
],
"supertypes": [],
"subtypes": []
},
"text_box": [
"({2/U} can be paid with any two mana or with {U}. This card's converted mana cost is 6.)",
"Look at the top five cards of your library. If you control more creatures than each other player, put two of those cards into your hand. Otherwise, put one of them into your hand. Then put the rest on the bottom of your library in any order."
]
}
},
{
"front": {
"layout": "simple",
"name": "Fire-Lit Thicket",
"type_line": {
"types": [
"Land"
],
"supertypes": [],
"subtypes": []
},
"text_box": [
"{T}: Add {C} to your mana pool.",
"{R/G}, {T}: Add {R}{R}, {R}{G}, or {G}{G} to your mana pool."
]
}
},
{
"front": {
"layout": "simple",
"name": "Gilder Bairn",
"mana_cost": "{1}{G/U}{G/U}",
"type_line": {
"types": [
"Creature"
],
"supertypes": [],
"subtypes": [
"Ouphe"
]
},
"text_box": [
"{2}{G/U}, {Q}: Double the number of each kind of counter on target permanent. ({Q} is the untap symbol.)"
],
"power": 1,
"toughness": 3
}
},
{
"front": {
"layout": "simple",
"name": "Blinding Souleater",
"mana_cost": "{3}",
"type_line": {
"types": [
"Artifact",
"Creature"
],
"supertypes": [],
"subtypes": [
"Cleric"
]
},
"text_box": [
"{W/P}, {T}: Tap target creature. ({W/P} can be paid with either {W} or 2 life.)"
],
"power": 1,
"toughness": 3
}
},
{
"front": {
"layout": "simple",
"name": "Rage Extractor",
"mana_cost": "{4}{R/P}",
"type_line": {
"types": [
"Artifact"
],
"supertypes": [],
"subtypes": []
},
"text_box": [
"({R/P} can be paid with either {R} or 2 life.)",
"Whenever you cast a spell with {P} in its mana cost, Rage Extractor deals damage equal to that spell's converted mana cost to target creature or player."
]
}
},
{
"front": {
"layout": "simple",
"name": "Chandra, Pyromaster",
"mana_cost": "{2}{R}{R}",
"type_line": {
"types": [
"Planeswalker"
],
"supertypes": [],
"subtypes": [
"Chandra"
]
},
"text_box": [
"+1: Chandra, Pyromaster deals 1 damage to target player and 1 damage to up to one target creature that player controls. That creature can't block this turn.",
"0: Exile the top card of your library. You may play it this turn.",
"\u22127: Exile the top ten cards of your library. Choose an instant or sorcery card exiled this way and copy it three times. You may cast the copies without paying their mana costs."
],
"loyalty": 4
}
},
{
"front": {
"layout": "simple",
"name": "Chandra, Flamecaller",
"mana_cost": "{4}{R}{R}",
"type_line": {
"types": [
"Planeswalker"
],
"supertypes": [],
"subtypes": [
"Chandra"
]
},
"text_box": [
"+1: Create two 3/1 red Elemental creature tokens with haste. Exile them at the beginning of the next end step.",
"0: Discard all the cards in your hand, then draw that many cards plus one.",
"\u2212X: Chandra, Flamecaller deals X damage to each creature."
],
"loyalty": 4
}
},
{
"front": {
"layout": "simple",
"name": "Tarmogoyf",
"mana_cost": "{1}{G}",
"type_line": {
"types": [
"Creature"
],
"supertypes": [],
"subtypes": [
"Lhurgoyf"
]
},
"text_box": [
"Tarmogoyf's power is equal to the number of card types among cards in all graveyards and its toughness is equal to that number plus 1."
],
"power": "*",
"toughness": "1+*"
}
},
{
"front": {
"layout": "simple",
"name": "Sanctum of Serra",
"type_line": {
"types": [
"Plane"
],
"supertypes": [],
"subtypes": [
"Serra\u2019s Realm"
]
},
"text_box": [
"When you planeswalk away from Sanctum of Serra, destroy all nonland permanents.",
"Whenever you roll {CHAOS}, you may have your life total become 20."
]
}
},
{
"front": {
"layout": "simple",
"name": "Arcbound Overseer Avatar",
"type_line": {
"types": [
"Vanguard"
],
"supertypes": [],
"subtypes": []
},
"text_box": [
"At the beginning of your upkeep, you may put a +1/+1 counter on target creature you control.",
"At the beginning of your upkeep, you may put a charge counter on target permanent you control."
],
"hand_modifier": 0,
"life_modifier": 3
}
}
]
I've been missing it a lot. What you have looks good. You have some spurious unicode in your data that should be cleaned up. I prefer UTF-8.silly freak wrote:Quick question: how is the current demand for a new structured source of Card Data? It's been over a year and the world is still spinning, so if everyone's fine, I don't want to put too much effort into it.
I was using the data available in this thread originally, but I switched to MtGJSON at some point because parsing flat text files was very error prone. The JSON format offers more reliability so that I don't have to second guess the data I extract from the files.silly freak wrote:Quick question: how is the current demand for a new structured source of Card Data? It's been over a year and the world is still spinning, so if everyone's fine, I don't want to put too much effort into it.
I wasn't aware of MtGJSON; I enjoy writing the software, but currently have no use for the data myself, so I didn't search for other data sources. So as there's a good data source already (definitely more comprehensive than I intended to provide), I'll spare myself the work of making this "production ready". Thanks for pointing that out!Arcanist wrote:Could you elaborate which information you think those files are missing, and that your data source would contain?