mtgjson / mtgjson3

MTGJSON repository for Magic Cards
http://mtgjson.com
Other
545 stars 102 forks source link

Older sets with only common / uncommon booster list have rare cards listed #364

Open membran opened 7 years ago

membran commented 7 years ago

Hi,

I'm currently working on a Magic project that makes use of this .json file (thanks for all the work), and I've noticed that the older sets like Arabian Nights and Antiquities (which booster packs only contained 8 cards; 6 commons, 2 uncommons) have cards listed as "rare", for example "Aladdin" , which is supposed to be uncommon in ARN.

I'm unsure whether that is intentional or a mistake, as some online resources like the mtgwiki, gatherer and magiccards.info hold contradictory information; some list those cards as rare, some as uncommon for those expansions.

The "booster" array list in the mtgjson file does not specify "rare" at all, however. I wanted to use the file as a baseline for a drafting module. Am I supposed to just check for the absence of "rare" in a booster array and then treat all rare cards in the set list as uncommon?

dev-id commented 7 years ago

These sets had rarities within rarities, as determined by print sheets. All uncommons were not equally uncommon, and all commons were not equally common. The least common uncommons are generally considered to be 'Rare' but no 'Rares' (as determined by print sheets) technically existed in the set.

MTGJSON does not currently differentiate between the levels of common/uncommon because gatherer does not, see the card from your example: http://gatherer.wizards.com/Pages/Card/Details.aspx?multiverseid=955

More information can be found at the following link: http://magic.wizards.com/en/articles/archive/arabian-rarities-2002-08-07

Garbee commented 7 years ago

To add onto that, Aladdin is absolutely rare in ARN. Gatherer is the official resource and what it says goes, even if it is clearly wrong. Until they fix it that is the rule. It doesn't matter what other trusted resources say, Wizards is free to modify anything they please at any time aside from the actual collector numbers when printed.

membran commented 7 years ago

I see. Thanks for the clarification. So I have to code an exception for those sets.

To add onto that (and this may be more of a new issue), the "starter": true for some cards such as Nightmare and Shivan Dragon in all sets they appear in seems to stem from the same philosophy and its appearance in the JSON options should be ignored pre-M15. As it reads on the MTGJSON documentation page: Any card marked as "starter" : true should be exempted from any booster generation as these cards were only available in boxed sets and not in boosters.

As I did a CTRL-F for "starter" through the file, I stumbled upon Shivan Dragon, Nightmare and Serra Angel; cards that I was almost 100% certain I got from boosters back in the days of 4ED.

And sure enough - this youtube video shows a Nightmare in a booster pack for 5ED at this timestamp: https://youtu.be/MhjiULVv4SU?t=458

It seems that M15 had those cards (and others - 15 total) as "starters" in sample decks and not in booster packs: https://manabadger.wordpress.com/2014/06/16/are-m15s-not-in-booster-cards-a-good-idea/

But every other expansion before that had those in booster packs as well, yet in the MTGJSON file, all occurrences of these cards are marked "starter: true" throughout all sets.

fenhl commented 6 years ago

I think the issue here is that the "booster" field does not match the rarity. To facilitate using MTG JSON to generate boosters, we should fix this, perhaps by introducing new values for the booster field, such as "old common" or "old uncommon".

Garbee commented 6 years ago

perhaps by introducing new values for the booster field, such as "old common" or "old uncommon".

"Old X" is a bad name for this situation. As that implies they were once that rarity and now are not. When in fact, they always have been rare. They simply were distributed differently at one point in time. A "boosterRarity" field that is undefined when not needed would be the most accurate solution. Then the value can be whatever it needs to be for any case now or in the future.

silasary commented 6 years ago

I think it's more useful to just list the rarity on individual cards, using the "C8", "U3", "R1" style notation.

I'd probably put it as an additional property sheetRarity in the printings data. This can be scraped from MCI.

fenhl commented 6 years ago

@Garbee: Note that I'm talking about the booster field on sets, not any field on cards. Sheet rarity as proposed by @silasary would have to complement this. The intent is to differentiate between how rarity is looked up. "old common" and "old uncommon" uses "sheetRarity", the others use "rarity".

taw commented 6 years ago

Oh interesting that I ran into this one. I'm enriching mtgjson data with just that for mtg.wtf.

My plan is to add some kind of:

Relevant ticket: https://github.com/taw/magic-search-engine/issues/82

This used json format internal to mtg.wtf, but there's no reason in principle why this couldn't get moved to mtgjson once codebase gets cleaned up upstream.

Actual real sets unfortunately require complex modelling, with masterpieces, foils (of unpublished distribution), other off-set cards (shocklands in DGM, fetches in FRF, God Packs etc.), and it's only getting worse with Dominaria, Battlebond etc.

I'd like to see mtgjson get at least some of that. exclude_from_boosters is extremely easy one, card numbers already say that, so cards like Chandra, Bold Pyromancer with number like 275/269 will definitely not be there.