I programmed a ragdoll module, what it does, is it disables every M6DS (Not breaking joints) in the character, then create socket balls as usual. It works perfectly as intended when the humanoid and the character is unmovable, dies, but when it didn’t, the humanoid still decides to have movement on while not having any motor6ds enabled.
Oh I forgot about one critical thing, you must change the humanoid state on a LocalScript AFAIK. Last time I tried changing it on the server it was having the same problem, probably some NetworkOwnership issues I guess. Try doing it on the client, it fixes humanoid states for me every time.