I've found the source of the bug. TargetPosList variable (that stores where the captives stood) got localized too much and now it is re-initialized before checking if the target has moved. Seems that the change happened 3 years ago, guess no one tried to use the rope since then
So I could now tie a cow and make it follow me. But there are strange things going on with rope quality/durability, and some non-intuitive behaviour. Fits the "buggy as hell" description.
I'll leave it alone meanwhile.