Bug or misleading documentation for event dx/dy members

The docs state:


There is also a read-only event variable.

In the update , interact , collect , confirm , and cancel events, it will have its dx and dy members set to -1, 0, or 1 reflecting the Player’s most recent attempted movement direction along each axis, as well as its tx and ty members set to the room coordinates of the target tile.

This isn't strictly true. If you use goto to move the player within a room then dx and dy can have values other than -1, 0 or 1 in the update event.

For example if the player is at 22,10 and then you call goto 13,4 then event.dx has a value of -9 and event.dy has a value of -6.

This tripped me up as I was assuming the behaviour from the docs.

The behaviour with exits is for event.dx and event.dy to report the direction the player was facing when they stepped into the exit. This is what makes me think the goto behaviour is possibly a bug?

wow, I had no idea. should I implement this behaviour in pulp-to-lua...?

Edit: wow! It turns out a whole bunch of games like this platformer and others critically rely on this behaviour. This is because goto also immediately triggers an update to occur, and then e.g. event.dy == -1 gates behaviour that would cause another goto, and so a stack overflow would occur if event.dx/event.dy hadn't changed. I had nearly given up on trying to figure out why these stack overflows were occurring. Thank you for the report! Hmm!