mtgjson / mtgjson3

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

Oracle data inconsistent across sets #114

Closed vslashg closed 6 years ago

vslashg commented 8 years ago

In AllSets, the Oracle data for different printings of the same card are not always consistent, even though they should never differ.

This arises from time to time, and the problem is currently present. A current example is the 'text' field for the card 'Force of Nature', which has the incorrect old text in the pREL, CED, and CEI sets.

(Let me know if more examples would be helpful.)

lsmoura commented 8 years ago

Hello,

Even though they should not be different... They are. WoTC changed the wording o lots of oracle text regarding abilities on the OGW release. Most notably: trample.

Here's the pREL version of Force of Nature, and the ME4 version. Note that the text is different.

The so-called MCI Sets are grabbed from the MCI site. I believe they will eventually update their text description with the WoTC official wording... But not yet.

Let me know what you think about it. I'm marking this invalid until then (but not closing until I hear back from you).

vslashg commented 8 years ago

This is really a philosophical question about what the "text" field is supposed to mean. I was my hope that it meant the in-game characteristic "rules text" as mentioned in comp rule 109.3, and as constrained by rule 108.1 (which says the Oracle text governs).

Although none of the current rules text discrepancies are functional in nature, it's easy to imagine they might be in a future version. For the sake of argument, imagine that the current discrepancy was functional. If I brought a pREL printing of Force of Nature to a sanctioned event, its in-game rules text would still be the Oracle rules text. That is, rule 108.1 continues to apply, even if you're using a particular printing of a card not tracked in Gatherer.

I can certainly work around this in my usage (probably by excluding the MCI sets entirely), but I hope this argument might convince you that the current situation is undesirable.

(edited to add: The broader point I'm making is, it seems to me that all versions of a given card in AllCards.json really must have the exact same values for the characteristics listed in rule 109.3. These are properties of in-game objects, not of various flavors of printed cardboard. They're always the same no matter which printing you're actually using. But that's my opinion, obviously -- the main thing is whether the mtgjson project buys this argument.)

Garbee commented 8 years ago

Sounds to me like we should provide the text property as the actual printed text. Oracle text should be a separate field like oracleText.

This comes down to whether you apply the rulebook to the structure. I'd say the existing structure is technically correct for humans, but could be improved to also provide the most data.

vslashg commented 8 years ago

But you do provide the actual printed text, as the "originalText" field in AllSets-X. The "text" field contains the Oracle text in almost all cases (except for these discrepancies).

lsmoura commented 8 years ago

Here's what I'm going to do:

I'm going to make a post-build check on mci sets to (a) add an "originalText" field and (b) check for the original text on a related non-mci set and copy the text from there if it differs.

Thoughts?

Garbee commented 8 years ago

sgtm for solving the issue.

vslashg commented 8 years ago

Sounds great from where I'm sitting. Thanks!

leematos commented 8 years ago

@lsmoura is this solved? I see text/originalText in a sets json file so I think this is good to go 😄

zephyrfalcon commented 8 years ago

It seems the rulings text has subtle differences as well. For example, some of the rulings for the card Nightmare use a different kind of Unicode character for the apostrophe. Compare CEI-x.json vs 10E-x.json.

I realize this seems like awful nitpicking, but I have code that uses these JSON files, and it has a sanity check to make sure that certain fields (like oracle text and rulings) are the same for all cards with the same name... and that check fails because of these minor differences. :( At this point I don't know if there are other cards with such differences.

Also, unless I'm looking at an older version, it seems that some files are still missing the originalText attribute, like pJGP-x.json.

Is there a way to tell which sets are "MCI sets"? Then I could work around it in my code. I do see an "isMCISet" attribute here in the JSON files on github, but I don't see it in the files on the mtgjson.com site, which is what I use.

Thanks,

--Hans

ZeldaZach commented 6 years ago

Addressed in V4!