Added Entered() and Exited() procs. These are called after a successful
Move(). The existing Enter() and Exit() procs are still called before the
movement (to check if it is allowed). By default, these new procs do
nothing.
This arrangement is cleaner, because it makes the question of whether a
movement is possible separate from the action that should be taken when the
movement is executed. Often, you only want to specify one or the other.
Directly setting loc still bypasses all movement side-effects. If you want
to force a movement but still execute any normal side-effects, you would do
it something like this:
mob/ForceMove(newloc)
var/oldloc = loc
loc = newloc
if(oldloc) oldloc:Exited(src)
if(newloc) newloc:Entered(src,oldloc)
To be completely accurate, you would want to check if the movement is taking
place in the map. In that case, Entered() and Exited() are called for both
the turf and the area (if the object is crossing over an area boundary).
That's how the default Move() proc works.