For animators
---
The improved animation patch has support for new bones, but they have to be named correctly. The engine has three bone groups, lower body (root bone, base spine and legs), upper body (spine1 and above, right arm), and left arm (left clavicle and arm bones). For animations to work together a bone has to belong to one of these groups. The patch changes the bone checks from strict match to substring match, so you have to append to your bone's name, a bone from the group it will attach to.
Typical use would be: If you want a bone "CustomBone" to be part of the lower body group, name it "CustomBone (Bip01 Pelvis)", for upper body group "CustomBone (Bip01 Spine2)", for left arm group "CustomBone (Bip01 L UpperArm)".
A full list of acceptable non-conflicting bone names to add are (add Bip01 in front of them):
Lower body group - Pelvis, L Thigh, L Calf, L Foot, L Toe0, R Thigh, R Calf, R Foot, R Toe0, MRT, Tail
Upper body group - Spine1, Spine2, Neck, Head, R Clavicle, R UpperArm, R Forearm, R Hand, R Finger0, R Finger1, R Finger2, R Finger3, R Finger4, Weapon Bone
Left arm group - L Clavicle, L UpperArm, L Forearm, L Hand, L Finger0, L Finger1, L Finger2, L Finger3, L Finger4, Shield Bone
Try to name extra bones to the closest available bone for clearness and future use.
The list of animation names are unchanged, as they are referred to by numerical IDs in the engine. It's recommended to replace the sneak animations (there are 20 available) if you need custom animations for a single NPC, as these are unused for most NPCs.
PlayGroup / LoopGroup
---
he improved animation patch also changes PlayGroup and LoopGroup to work properly with NPCs and their bone groups. Before it would only play on the lower body, now it should cover the whole NPC.
PlayGroup and LoopGroup both play animations. PlayGroup is essentially doing LoopGroup -1. These both have optional flags, which are important in getting the animations to loop correctly.
PlayGroup groupname, flags
LoopGroup groupname, count, flags
flags = 0 (default)
The controller waits until the current animation is complete before starting the given animation. It plays the whole animation and ignores any Loop Start/End text keys. If you want to avoid glitches, the whole animation must loop cleanly.
flags = 1
The current animation will stop, and the new animation will start from its beginning. Respects Loop text keys.
flags = 2
The current animation will stop, and the new animation will start from the Loop Start key. Respects Loop text keys.