View Single Post
Old March 24, 2019, 07:28   #2
wobbly
Veteran
 
Join Date: May 2012
Location: Adelaide, Australia
Posts: 2,092
wobbly is on a distinguished road
My understanding (which is limited & possibly wrong) of what happens here is it returns before movement (in run_test) for a visible monster but that doesn't help for off-screen breathers & invisible monsters. It doesn't que the next cmd_run if p->upkeep->running = 0 but it still actually moves if cmd_run is already qued.

so in the following situation with the dragon fly just out of LOS:

Code:
####
@..F.
####
if I run forward: I move, it ques cmd_run, the F become visible disturbing and setting p->upkeep->running = 0 (but cmd_run has already been qued? & is still qued?). Now if it moves backwards before cmd_run runs again it will not be visible when run_test actually checks & I'll still move another square forward before it hits return.

While I'm not 100% sure that's how it works in the code, it's certainly what I'm seeing in-game.

Edit: Hmm it doesn't interrupt properly for visible either. I can see this by running past a corridor full of sleeping 'p's, it moves 1 step too many.

Last edited by wobbly; March 24, 2019 at 07:55.
wobbly is offline   Reply With Quote