Skip to content

[Card Bug] Sauron, Dino Devotee — modal "It's a green Dinosaur with base power and toughness 5/5" clause regressed to Unimplemented between v0.35.2 and v0.45.0 #7031

Description

@dan-blanchard

Card(s)

Sauron, Dino Devotee (LTC/REX crossover printing; oracle_id a419fe1e-family) — the "Turn People into Dinosaurs" mode.

Build/version

v0.45.0 release card-data.json (regression window: v0.36.0–v0.45.0; last known-good parse observed in the v0.35.2 release card-data).

Actual behavior

The mode's animate clause — "It's a green Dinosaur with base power and toughness 5/5 for as long as it has a saurian counter on it." — parses to an opaque residue at v0.45.0. The mode's sub_ability.effect is:

{
  "type": "Unimplemented",
  "name": "it's",
  "description": "It's a green Dinosaur with base power and toughness 5/5"
}

The ForAsLongAs { RecipientHasCounters } duration on the wrapper survives, but the entire continuous-modification payload is gone.

Expected behavior

The v0.35.2 release card-data parsed this mode fully — the same sub_ability carried a GenericEffect with a complete static-modification suite:

{
  "type": "GenericEffect",
  "static_abilities": [{
    "mode": "Continuous",
    "affected": { "type": "ParentTarget" },
    "modifications": [
      { "type": "SetPower", "value": 5 },
      { "type": "SetToughness", "value": 5 },
      { "type": "SetColor", "colors": ["Green"] },
      { "type": "AddType", "core_type": "Creature" },
      { "type": "RemoveAllSubtypes", "set": "Creature" },
      { "type": "AddSubtype", "subtype": "Dinosaur" }
    ],
    "description": "become a green Dinosaur with base power and toughness 5/5"
  }],
  "duration": { "ForAsLongAs": { "condition": { "type": "RecipientHasCounters", "counters": { "type": "OfType", "data": "saurian" }, "minimum": 1 } } },
  "target": { "type": "ParentTarget" }
}

That earlier parse is the expected shape (CR 613.4b type/color/P-T setting; CR 700.2 modal target declaration).

Steps to reproduce

jq '.["sauron, dino devotee"].abilities' client/public/card-data.json

and inspect the second mode's sub_ability.effectUnimplemented(name: "it's") on current main, vs the structured GenericEffect in the v0.35.2 release asset.

Additional context

  • Likely mechanism: the modal-blocks-as-native-IR rework (refactor(parser): emit modal blocks as native ir #6811, shipped v0.42.0) — the drop is specific to a mode's trailing sentence ("Put a saurian counter on another target creature. It's a …"), which suggests the mode-body sentence chain no longer reaches the parse_enchanted_is_type-style continuous-modification path.
  • Four other cards carry the same Unimplemented(name: "it's") residue at v0.45.0 (Magar of the Magic Strings, Pirk, Heroic Captain, Otherworldly Escort, Join the Group), but those were already unparsed at v0.35.2 — only Sauron, Dino Devotee is a regression proper. A fix for the "It's a …" sentence shape would likely clear several of them as the same class.

Found via a downstream consumer's structural cross-check (the mtg-skills Card IR crosswalk diffs its detector output against phase's parse at every pin bump; this surfaced as a previously-structural card dropping to residue at the v0.35.2 → v0.45.0 bump).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions