The third of the project's three goals, and the last substantial piece before a UI is worth building.
D2R still runs the original game's animation system beneath the HD renderer: a monster has a three-character token and its clips carry two-letter modes (NU neutral, WL walk, RN run, A1/A2 attack, GH get-hit, BL block, SC cast, S1–S8 skills, DT death, DD dead, KB knockback).
That makes this far more tractable than it was for Diablo III, where answering "which animations belong to this model?" needed the Actor → AnimSet → Anim chain reverse engineered across 19,177 files. Sc2SequenceName already maps the modes; what is missing is the catalogue.
Four sources, in this order
The same shape the D3 tool arrived at the hard way — see D3ModelViewer/docs/ANIMATION-ASSOCIATION.md for why ranking them matters.
| Source |
How |
| This unit |
the model's token, via monstats.txt and the HD JSON, to its declared modes. Authoritative |
| This skeleton |
every clip whose track bone names all exist in this model's skeleton |
| Name match |
path or token prefix |
| All |
the whole catalogue, filtered |
"This skeleton" is nearly free — a name-set comparison over data already loaded — and is worth doing first as it needs no new file formats.
Note
If d2rmv scan reports that models carry their animations inline (it counts this), "This unit" is nearly free too: it is whatever Animations array the file itself contains, and the other sources only matter for shared libraries. Check #1's output before designing the catalogue.
Watch the token-matching boundary: match modes only as delimited tokens. Sc2SequenceName.FindMode already does this — matching NU inside "Nucleus" is the exact bug that made the D3 name matcher unreliable.
The third of the project's three goals, and the last substantial piece before a UI is worth building.
D2R still runs the original game's animation system beneath the HD renderer: a monster has a three-character token and its clips carry two-letter modes (
NUneutral,WLwalk,RNrun,A1/A2attack,GHget-hit,BLblock,SCcast,S1–S8skills,DTdeath,DDdead,KBknockback).That makes this far more tractable than it was for Diablo III, where answering "which animations belong to this model?" needed the
Actor → AnimSet → Animchain reverse engineered across 19,177 files.Sc2SequenceNamealready maps the modes; what is missing is the catalogue.Four sources, in this order
The same shape the D3 tool arrived at the hard way — see
D3ModelViewer/docs/ANIMATION-ASSOCIATION.mdfor why ranking them matters.monstats.txtand the HD JSON, to its declared modes. Authoritative"This skeleton" is nearly free — a name-set comparison over data already loaded — and is worth doing first as it needs no new file formats.
Note
If
d2rmv scanreports that models carry their animations inline (it counts this), "This unit" is nearly free too: it is whateverAnimationsarray the file itself contains, and the other sources only matter for shared libraries. Check #1's output before designing the catalogue.Watch the token-matching boundary: match modes only as delimited tokens.
Sc2SequenceName.FindModealready does this — matchingNUinside "Nucleus" is the exact bug that made the D3 name matcher unreliable.