mtgjson / mtgjson3

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

The order of names for double-faced cards has been reversed and is now incorrect #548

Closed bakert closed 6 years ago

bakert commented 6 years ago

The order in which names are listed has changed.

Before:

  "Howlpack Alpha": {
    "layout": "double-faced",
    "name": "Howlpack Alpha",
    "names": [
      "Mayor of Avabruck",
      "Howlpack Alpha"
    ],

Now:

  "Howlpack Alpha": {
    "layout": "double-faced",
    "name": "Howlpack Alpha",
    "names": [
      "Howlpack Alpha",
      "Mayor of Avabruck"
    ],

Note: for both Howlpack Alpha AND Mayor of Avabruck entries they used to sort "correctly" and now sort this other way. Ironfang/Village Messenger and Huntmaster of the Fells/Ravager of the Fells are similarly affected. I assume all DFCs are.

This seems to be a bug to me rather than just an innocent change. Mayor of Avabruck is the front of the card and should really be listed first.

fenhl commented 6 years ago

Interestingly, only some cards seem to be affected. For example, Chalice of Life // Chalice of Death is reversed, but Archangel Avacyn // Avacyn, the Purifier is correct.

bakert commented 6 years ago

Also Bruna, the Fading Light doesn't include Gisela, the Voice of Nightmares in 'names' list any more in AllSets/AllSets-x. Probably has the same root cause?

        "name": "Bruna, the Fading Light",
        "names": [
          "Bruna, the Fading Light",
          "Brisela, Voice of Nightmares"
        ],

This one is somewhat more likely to be intentional I suppose although it's a breaking change from our perspective.

fenhl commented 6 years ago

It's not intentional.

bakert commented 6 years ago

I tried to repo this locally but when I clear cache for ISD and rebuild the only difference I get is that the set now seems to be legal in Ixalan block (!) I am probably doing something stupid. I wanted to repro so I could git bisect to the culprit but I'm stuck on reproducing. Anyone got hints for me?

[deepthought mtgjson] node build/buildSet.js ISD && git diff
diff --git a/json/ISD.json b/json/ISD.json
index 83eec9b6..d6c5956a 100644
--- a/json/ISD.json
+++ b/json/ISD.json
@@ -23480,6 +23480,10 @@
           "legality": "Legal"
         },
         {
+          "format": "Ixalan Block",
+          "legality": "Legal"
+        },
+        {
           "format": "Khans of Tarkir Block",
           "legality": "Legal"
         },
@@ -27728,6 +27732,10 @@
           "legality": "Legal"
         },
         {
+          "format": "Ixalan Block",
+          "legality": "Legal"
+        },
+        {
           "format": "Legacy",
           "legality": "Legal"
         },
ZeldaZach commented 6 years ago

I ran the full node buildSet allsets To get the current master

bakert commented 6 years ago

Small item of note – non-English json files seem to have the right order.

bakert commented 6 years ago

The all sets run takes a looong time so the bisect is going to be slow :P

bakert commented 6 years ago
real    27m18.760s
user    26m59.674s
sys 0m37.340s

13682a3 has the bug, dad1d16 seemingly does not have the bug although it also doesn't complete because it doesn't know about V10. But pretty sure it's a good commit. Beginning bisect proper.

In relation to the meld part of the issue: AllCards still has three names, AllSets no longer does.

bakert commented 6 years ago

56a49e1 is probably good.

bakert commented 6 years ago

Not sure why I assumed this was a bug in mtgjson. This is a Gatherer issue.

http://gatherer.wizards.com/Pages/Card/Details.aspx?multiverseid=244738 http://gatherer.wizards.com/Pages/Card/Details.aspx?multiverseid=222183

Gatherer has the card numbers reversed.

I think I can patch this on a case by case basis in the set files although that seems fairly gross and far-reaching. I understand we don't have a hotline to WotC/Gatherer folks but I'll try tweeting at them.

I don't see anything wrong with Brisela but I'm not sure what it used to look like:

http://gatherer.wizards.com/Pages/Card/Details.aspx?multiverseid=439323

bakert commented 6 years ago

https://twitter.com/bakert/status/956927665398743040

bakert commented 6 years ago

Potentially affected cards (all faces):

mysql> SELECT f.name FROM face AS f WHERE f.card_id IN (SELECT id FROM card WHERE layout IN ('double-faced', 'meld'));
+--------------------------------+
| name                           |
+--------------------------------+
| Mayor of Avabruck              |
| Howlpack Alpha                 |
| Ravenous Demon                 |
| Archdemon of Greed             |
| Chandra, Fire of Kaladesh      |
| Chandra, Roaring Flame         |
| Jace, Vryn's Prodigy           |
| Jace, Telepath Unbound         |
| Kytheon, Hero of Akros         |
| Gideon, Battle-Forged          |
| Liliana, Heretical Healer      |
| Liliana, Defiant Necromancer   |
| Nissa, Vastwood Seer           |
| Nissa, Sage Animist            |
| Ludevic's Test Subject         |
| Ludevic's Abomination          |
| Mondronen Shaman               |
| Tovolar's Magehunter           |
| Archangel Avacyn               |
| Avacyn, the Purifier           |
| Arguel's Blood Fast            |
| Temple of Aclazotz             |
| Arlinn Kord                    |
| Arlinn, Embraced by the Moon   |
| Bloodline Keeper               |
| Lord of Lineage                |
| Bruna, the Fading Light        |
| Brisela, Voice of Nightmares   |
| Delver of Secrets              |
| Insectile Aberration           |
| Elbrus, the Binding Blade      |
| Withengar Unbound              |
| Garruk Relentless              |
| Garruk, the Veil-Cursed        |
| Gisela, the Broken Blade       |
| Brisela, Voice of Nightmares   |
| Huntmaster of the Fells        |
| Ravager of the Fells           |
| Legion's Landing               |
| Adanto, the First Fort         |
| Search for Azcanta             |
| Azcanta, the Sunken Ruin       |
| Vance's Blasting Cannons       |
| Spitfire Bastion               |
| Growing Rites of Itlimoc       |
| Itlimoc, Cradle of the Sun     |
| Conqueror's Galleon            |
| Conqueror's Foothold           |
| Dowsing Dagger                 |
| Lost Vale                      |
| Primal Amulet                  |
| Primal Wellspring              |
| Thaumatic Compass              |
| Spires of Orazca               |
| Treasure Map                   |
| Treasure Cove                  |
| Avacynian Missionaries         |
| Lunarch Inquisitors            |
| Hanweir Militia Captain        |
| Westvale Cult Leader           |
| Pious Evangel                  |
| Wayward Disciple               |
| Town Gossipmonger              |
| Incited Rabble                 |
| Aberrant Researcher            |
| Perfected Form                 |
| Daring Sleuth                  |
| Bearer of Overwhelming Truths  |
| Startled Awake                 |
| Persistent Nightmare           |
| Thing in the Ice               |
| Awoken Horror                  |
| Uninvited Geist                |
| Unimpeded Trespasser           |
| Accursed Witch                 |
| Infectious Curse               |
| Elusive Tormentor              |
| Insidious Mist                 |
| Heir of Falkenrath             |
| Heir to the Night              |
| Kindly Stranger                |
| Demon-Possessed Witch          |
| Breakneck Rider                |
| Neck Breaker                   |
| Convicted Killer               |
| Branded Howler                 |
| Gatstaf Arsonists              |
| Gatstaf Ravagers               |
| Geier Reach Bandit             |
| Vildin-Pack Alpha              |
| Kessig Forgemaster             |
| Flameheart Werewolf            |
| Skin Invasion                  |
| Skin Shedder                   |
| Village Messenger              |
| Moonrise Intruder              |
| Autumnal Gloom                 |
| Ancient of the Equinox         |
| Duskwatch Recruiter            |
| Krallenhorde Howler            |
| Hermit of the Natterknolls     |
| Lone Wolf of the Natterknolls  |
| Hinterland Logger              |
| Timber Shredder                |
| Lambholt Pacifist              |
| Lambholt Butcher               |
| Sage of Ancient Lore           |
| Werewolf of Ancient Hunger     |
| Solitary Hunter                |
| One of the Pack                |
| Harvest Hand                   |
| Scrounged Scythe               |
| Neglected Heirloom             |
| Ashmouth Blade                 |
| Thraben Gargoyle               |
| Stonewing Antagonizer          |
| Westvale Abbey                 |
| Ormendahl, Profane Prince      |
| Hadana's Climb                 |
| Winged Temple of Orazca        |
| Journey to Eternity            |
| Atzal, Cave of Eternity        |
| Path of Mettle                 |
| Metzali, Tower of Triumph      |
| Profane Procession             |
| Tomb of the Dusk Rose          |
| Storm the Vault                |
| Vault of Catlacan              |
| Azor's Gateway                 |
| Sanctum of the Sun             |
| Golden Guardian                |
| Gold-Forge Garrison            |
| Cloistered Youth               |
| Unholy Fiend                   |
| Thraben Militia                |
| Thraben Sentry                 |
| Homicidal Brute                |
| Civilized Scholar              |
| Screeching Bat                 |
| Stalking Vampire               |
| Hanweir Watchkeep              |
| Bane of Hanweir                |
| Instigator Gang                |
| Wildblood Pack                 |
| Kruin Outlaw                   |
| Terror of Kruin Pass           |
| Reckless Waif                  |
| Merciless Predator             |
| Rampaging Werewolf             |
| Tormented Pariah               |
| Ironfang                       |
| Village Ironsmith              |
| Nightfall Predator             |
| Daybreak Ranger                |
| Gatstaf Howler                 |
| Gatstaf Shepherd               |
| Krallenhorde Wantons           |
| Grizzled Outcasts              |
| Ulvenwald Mystics              |
| Ulvenwald Primordials          |
| Howlpack of Estwald            |
| Villagers of Estwald           |
| Extricator of Sin              |
| Extricator of Flesh            |
| Lone Rider                     |
| It That Rides as One           |
| Curious Homunculus             |
| Voracious Reader               |
| Docent of Perfection           |
| Final Iteration                |
| Grizzled Angler                |
| Grisly Anglerfish              |
| Graf Rats                      |
| Chittering Host                |
| Midnight Scavengers            |
| Chittering Host                |
| Voldaren Pariah                |
| Abolisher of Bloodlines        |
| Conduit of Storms              |
| Conduit of Emrakul             |
| Hanweir Garrison               |
| Hanweir, the Writhing Township |
| Smoldering Werewolf            |
| Erupting Dreadwolf             |
| Vildin-Pack Outcast            |
| Dronepack Kindred              |
| Kessig Prowler                 |
| Sinuous Predator               |
| Shrill Howler                  |
| Howling Chorus                 |
| Tangleclaw Werewolf            |
| Fibrous Entangler              |
| Ulvenwald Captive              |
| Ulvenwald Abomination          |
| Ulrich of the Krallenhorde     |
| Ulrich, Uncontested Alpha      |
| Cryptolith Fragment            |
| Aurora of Emrakul              |
| Hanweir Battlements            |
| Hanweir, the Writhing Township |
| Loyal Cathar                   |
| Unhallowed Cathar              |
| Soul Seizer                    |
| Ghastly Haunting               |
| Chosen of Markov               |
| Markov's Servant               |
| Afflicted Deserter             |
| Werewolf Ransacker             |
| Hinterland Scourge             |
| Hinterland Hermit              |
| Silverpelt Werewolf            |
| Lambholt Elder                 |
| Moonscarred Werewolf           |
| Scorned Villager               |
| Wolfbitten Captive             |
| Krallenhorde Killer            |
| Chalice of Death               |
| Chalice of Life                |
+--------------------------------+
218 rows in set (0.01 sec)
fenhl commented 6 years ago

We generally try to provide patches for upstream issues. If you add one, please make sure that it will survive a full rebuild.

bakert commented 6 years ago

Visiting http://gatherer.wizards.com/Pages/Search/Default.aspx?name=+[{name}] for these I've determined that the affected cards are:

Mayor of Avabruck/Howlpack Alpha Ravenous Demon/Archdemon of Greed Mondronen Shaman/Tovolar's Magehunter Ludevic's Test Subject/Ludevic's Abomination Civilized Scholar/Homicidal Brute Thraben Sentry/Thraben Militia Daybreak Ranger/Nightfall Predator Village Ironsmith/Ironfang Tormented Pariah/Rampaging Werewolf Villages of Estwald/Howlpack of Estwald Grizzled Outcasts/Krallenhorde Wantons Gastaf Shepherd/Gatstaf Howler Hinterland Hermit/Hinterland Scourge Chalice of Life/Chalice of Death Scorned Villager/Moonscarred Werewolf Lambholt Elder/Silverpelt Werewolf

What makes these special I haven't been able to determine. No ORI, SOI or EMN cards are affected just (some but not all) ISD and DKA dfcs.

bakert commented 6 years ago

The issue for Brisela, Voice of Nightmares and her front faces are bad entries in the new FTV: Transform stuff. Which probably also in turn comes from Gatherer but not sure.

bakert commented 6 years ago

Like true cowards we have patched this downstream.

magreenblatt commented 6 years ago

Some cards from DKA, ISD and ORI are affected (at v3.13.0). You can detect reversed records by comparing the letter suffix of "number" and "mciNumber" values. In cases of incorrect records the suffixes will not match (e.g. "Archdemon of Greed" has "mciNumber": "71b" and "number": "71a", and because 'b' != 'a' the record is reversed). Here's the complete list:

  'DKA': [
      "Archdemon of Greed",
      "Ravenous Demon",
      "Hinterland Scourge",
      "Hinterland Hermit",
      "Tovolar's Magehunter",
      "Mondronen Shaman",
      "Silverpelt Werewolf",
      "Lambholt Elder",
      "Moonscarred Werewolf",
      "Scorned Villager",
      "Ravager of the Fells",
      "Huntmaster of the Fells",
      "Chalice of Death",
      "Chalice of Life",
      "Withengar Unbound",
      "Elbrus, the Binding Blade",
    ],
    'ISD': [
      "Thraben Militia",
      "Thraben Sentry",
      "Homicidal Brute",
      "Civilized Scholar",
      "Ludevic's Abomination",
      "Ludevic's Test Subject",
      "Rampaging Werewolf",
      "Tormented Pariah",
      "Ironfang",
      "Village Ironsmith",
      "Nightfall Predator",
      "Daybreak Ranger",
      "Gatstaf Howler",
      "Gatstaf Shepherd",
      "Krallenhorde Wantons",
      "Grizzled Outcasts",
      "Howlpack Alpha",
      "Mayor of Avabruck",
      "Howlpack of Estwald",
      "Villagers of Estwald",
    ],
    'ORI': [
      "Nissa, Sage Animist",
      "Nissa, Vastwood Seer",
    ],
lincolnthree commented 6 years ago

Looks like they have fixed the card numbers. Perhaps time for a rebuild of the affected sets?

http://gatherer.wizards.com/Pages/Card/Details.aspx?multiverseid=222183

lincolnthree commented 6 years ago

@bakert Could you share your patch? I'd like to apply it to our downstream as well. That said... it's fixed upstream now so no real issue anymore if you rebuild the affected sets.

ZeldaZach commented 6 years ago

If anyone can provide a full rebuild I’ll add it in

bakert commented 6 years ago

Our patch is pretty hacky :D But I've attached it in case it is useful …

dfc.txt

bakert commented 6 years ago

Looks like yesterday's full rebuild 3.15.2 fixed this.

bakert commented 6 years ago

Actually we're not quite there yet although we are close.

AllSets still has:

{
        "artist": "Clint Cearley",
        "cmc": 7,
        "colorIdentity": [
          "W"
        ],
        "colors": [
          "White"
        ],
        "flavor": "She now sees only Emrakul's visions.",
        "id": "041d1e56f21d873719b992741342946579c50275",
        "imageName": "bruna, the fading light",
        "layout": "meld",
        "manaCost": "{5}{W}{W}",
        "mciNumber": "5a",
        "multiverseid": 439322,
        "name": "Bruna, the Fading Light",
        "names": [
          "Bruna, the Fading Light",
          "Brisela, Voice of Nightmares"
        ],
        "number": "5a",
        "power": "5",
        "rarity": "Mythic Rare",
        "subtypes": [
          "Angel",
          "Horror"
        ],
        "supertypes": [
          "Legendary"
        ],
        "text": "When you cast this spell, you may return target Angel or Human creature card from your graveyard to the battlefield.\nFlying, vigilance\n(Melds with Gisela, the Broken Blade.)",
        "toughness": "7",
        "type": "Legendary Creature — Angel Horror",
        "types": [
          "Creature"
        ]
      },

Only two names for Bruna, the Fading Light. Not sure why. The entries on Gatherer seem to be mirrors of each other.

bakert commented 6 years ago

Every other card that was broken is now behaving correctly.

bakert commented 6 years ago

Bruna is still broken.

KingSupernova31 commented 6 years ago

Fixed in v4. (Meld cards have a new bug, which is https://github.com/mtgjson/mtgjson4/issues/65.)