ID:2523693
 
Applies to:DM Language
Status: Open

Issue hasn't been assigned a status value.
Currently the Move() proc handles all behavior from the mover's perspective from checks to actual execution of the move. Splitting up this behavior a bit would be useful to allow for more granular changes to how moves happen.

In particular it would be useful if the Move() proc called on two others:
/atom/movable/CanMove(newloc, dir, step_x, step_y)
// Handles Exit, Uncross, Enter, and Cross calls

/atom/movable/DoMove(newloc, dir, step_x, step_y)
// Handles Bump, loc changes, Exited, Uncrossed, Entered, and Crossed calls


This would allow for a few useful things such as custom checks or behavior on move, calling on these procs directly to check if a move would be allowed without actualy trying to move, or forcing a move without any of the regular checks.

I can only speak for ss13 but we already are forced to redo a lot of the base behavior rather than being able to build on it in order to be able to do these things. A proc we have called forceMove is particularly common where we don't want anything to stop the move but we still want all the procs that happen from a successful move to be called.