Test: make a new world with the player at 0,0. Create a robot at 10,1 with this code. Test the board and hold the right arrow until the player has passed the robot significantly, then press 'Escape' without releasing the right arrow. In DOS versions, HORIZPLD and LOCAL will have the same value. In port versions, HORIZPLD will be 2 less than LOCAL.
: "l" cycle 1 if not touching NORTH then "l" lockplayer wait for 5 unlockplayer set "local" 0 : "l2" * "&horizpld& &local&" inc "local" 1 wait 1 goto "l2"
The code used by Brotherhood:
: "Loop" lockplayer wait for 3 unlockplayer wait for 3 goto "Loop"
A possible fix might be to change lines 434-440 of game_update.c from
else { mzx_world->key_up_delay = 0; mzx_world->key_down_delay = 0; mzx_world->key_right_delay = 0; mzx_world->key_left_delay = 0; }
to
if(!up_pressed) mzx_world->key_up_delay = 0; if(!down_pressed) mzx_world->key_down_delay = 0; if(!right_pressed) mzx_world->key_right_delay = 0; if(!left_pressed) mzx_world->key_left_delay = 0;