Okay, so so far it works fairly well... as long as I still *have* the original function with renpy.pause in it. There's some problem with using the "show expression" 2 times in a row for the same character, but if I have Diana.move() somewhere, and then show expression move(Diana,...), and then Diana.move() again, it works fine. That's probably all I need anyway. I have a talking indicator that can't follow the character as they walk, so the talking character will never move using the show expression, and I can't get the smooth "linear" ypos movement with the transform function either. It works in a limited capacity, but I can plan around it so that it never needs to go past those limitations.
I've resolved to using xoffset instead of xpos, because it looks like it doesn't really update in the middle of the walk animation. Maybe it has something to do with when renpy actually blits, but I don't claim to fully know how blitting works. When I had it with xpos, I could click to skip to the next line in the middle of the walk animation, and the char.xpos would actually stop somewhere in the middle (If the char is walking from 1198 to 711, I could click to interrupt in the middle and the char.xpos display int he center would show 844 or something, but then change to 711 after a moment). Somewhere in there it is working, but I think once an image is shown in a position, there's some gunk that keeps it from actually moving anywhere else. I would need to, I guess, hide it and then show it again? I don't think xpos can actually change, but xoffset and that's why this version works.
Here's how it looks now. Pretty good, eh?
https://media.giphy.com/media/69xjQSkzp ... /giphy.gif