Resolve a technique object to its best-matching animation key.
This is the single, authoritative entry point for screens and systems
that need to know which skeletal animation to play for a given technique.
Resolution order (most specific → least):
technique.animationId if present and registered (KoreanTechnique / TrigramStanceTechnique).
technique.id if registered (Technique objects from getTechniquesForStanceAndArchetype
already carry their stance-specific id, e.g. "geon_heaven_strike").
Regex-based fallback on technique.name.english, then technique.name.korean.
"jab" as ultimate fallback.
Passing the technique object (rather than a loose string) avoids the
long-standing bug where technique.name.english — e.g. "Thunder Strike" —
would match only the generic /strike/ rule and collapse every
stance-specific attack to the jab animation.
Resolve a technique object to its best-matching animation key.
This is the single, authoritative entry point for screens and systems that need to know which skeletal animation to play for a given technique.
Resolution order (most specific → least):
technique.animationIdif present and registered (KoreanTechnique / TrigramStanceTechnique).technique.idif registered (Technique objects from getTechniquesForStanceAndArchetype already carry their stance-specific id, e.g."geon_heaven_strike").technique.name.english, thentechnique.name.korean."jab"as ultimate fallback.Passing the technique object (rather than a loose string) avoids the long-standing bug where
technique.name.english— e.g."Thunder Strike"— would match only the generic/strike/rule and collapse every stance-specific attack to the jab animation.