ID:135097
 
Apparently usr is set somewhere in between mob/Move() and turf/Enter(), and I was wondering why that was. I can see it being set it client/North() and the like to be passed down, but if it's set for me in mid-movement I can't tell if player has been moved by some outside force unless I set loc directly.

mob/Move()
world << "mob/Move(): usr == [usr]" // null
.=..()
world << "mob/Move(): usr == [usr]" // null

turf/Enter()
world << "turf/Enter(): usr == [usr]" // YMIHere
.=..()
world << "turf/Enter(): usr == [usr]" // YMIHere

turf/Entered(atom/movable/A)
world << "turf/Entered(): usr == [usr]" // YMIHere

world/New()
spawn()
while(1)
world << "usr == [usr]" // null
for(var/atom/movable/A in world)
view(A) << "[ismob(A)? "[A]: AHHHHHHH!" : "[A] dissappears."]"
A.Move( locate( rand(1,maxx), rand(1,maxy), rand(1,maxz) ) )
sleep(50)
It's probably to make usr seem to work in Enter(), possibly for backwards compatibility with really old code, or possibly just to make people think they can use usr in movement procs.

I wouldn't rely on it.