I hope it's ok that I made a slight tweek when running your bot...
It was just this line :
40 *.eye5 sub 0 floor 2 mult 5 add *.refvelup 0 floor add *.vel sub .up store
When you write
*.refvelup 0 floor add *.vel sub
what you're saying is :
(the oponents speed) - (your own speed)
So you will never accelerate with this part of the code, any attempt to accelerate will result in an increase in velocity bringing you back down to where you started.
So the more you move the less you'll move... basicaly Roto can't kill something that moves, unless it's very slow...
So just removed the *.vel sub part, and now it seems to work stick to it's target rather well...
Seems like your tweeks and general thoughts where right on... it was just that every time you tryed to accelerate you would slow down by the same amount, going nowhere...
Anyway the movement refvars give the speed relative to your own, so
*.refvelup .up store
*.refvelsx .sx store
Will match the oponents movement exactly, regardless of your aim direction or movement.
Anyway hope it's ok I messed with your bot, just couldn't bare to see it loose to Body again, and I want those tutorial bots to line up right, the only reason Body and Aim beat the old Roto is because they never stop moving and roto couldn't kill anything that moved.
Anyway removing *.vel sub was the only thing I did... if it's not ok just say so and I'll change it back (But gotta warn you it didn't clear Body when I ran it before the change)