Skip to content

Bump Mutagen to 0.54.4: Starfield NPCs lose all but the first tint layer - #146

Open
taosecurity wants to merge 1 commit into
Mutagen-Modding:devfrom
taosecurity:fix/mutagen-tint-layers
Open

taosecurity wants to merge 1 commit into
Mutagen-Modding:devfrom
taosecurity:fix/mutagen-tint-layers

Conversation

@taosecurity

Copy link
Copy Markdown

Problem

Spriggit 0.41.0 (Mutagen 0.54.0) drops every tint layer of a Starfield NPC_ record except the first. These are the repeated MNAM/TNAM/QNAM/VNAM/NNAM/INTV blocks (makeup and skin layers, counted by EDCT). The serialized YAML holds a single Tints entry, and deserializing writes EDCT = 1 with one layer, so an NPC loses its blush, lipstick, eyeshadow, eyeliner, etc. on any round trip.

The cause is Mutagen itself, not Spriggit's serialization. Reading the same plugin directly:

Mutagen.Bethesda.Starfield Tint layers read for vanilla Companion_SarahMorgan (9 in the ESM)
0.51.3 (bundled with Spriggit 0.39.11) 9
0.54.0 (bundled with Spriggit 0.41.0) 1
0.54.1 1
0.54.2 / 0.54.3 / 0.54.4 9

Change

Raise the nine [0.54.0] Mutagen pins in Directory.Packages.props to [0.54.4]. The Mutagen.Bethesda.Serialization packages stay at 1.38.6.

Testing

  • Spriggit.Tests: 129 passed, 0 failed, 1 skipped.
  • Repro: a plugin containing only a copy of vanilla Companion_SarahMorgan.
    • With 0.41.0 the YAML has 1 TintType entry and the rebuilt plugin 1 layer.
    • With this change it has 9 entries and the rebuilt plugin has EDCT = 09 with 9 layers.
  • A mod plugin with a custom NPC (9 layers) round-trips with all 982 records identical. Only the order of the NPC's script properties and of records inside some groups changes.

The same bump on the 0.41.0 tag is what I'm using locally until a release ships.

Thank you for this awesome software! You have made it possible for me to create several new projects.

Sincerely,

Richard

🤖 Generated with Claude Code

Mutagen 0.54.0 and 0.54.1 read only the first tint layer of a Starfield
NPC_ record (the repeated MNAM/TNAM/QNAM/VNAM/NNAM/INTV blocks counted by
EDCT). Spriggit 0.41.0 bundles 0.54.0, so serializing an NPC drops every
makeup/skin layer after the first, and deserializing writes only one back.
Mutagen 0.54.2 and later read all layers.

Repro: a plugin holding a copy of vanilla Companion_SarahMorgan (9 tint
layers) serializes to 1 TintType entry with 0.41.0 and to 9 with this
change, and rebuilds with all 9. Spriggit.Tests: 129 passed, 1 skipped.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant