ID:273258
 
Well, That of the Topic Tittle, Like if you are under Gravity your speed decrease and if u arnt in gravity your speed increases.
By not allowing movement when under the conditions under which you do not want to allow movement.
The Proc you want is the Move() proc

var/tmp
Gravity=0 // tmp will make it so you dont save the slow down
MoveDelay=0

mob/Move()
if(src.Gravity)
if(src.MoveDelay) return
else
src.MoveDelay++
spawn(2) //its a good delay, but you may want to make it higher
src.MoveDelay--
..()
else return ..()


You can edit the gravity proc upon entering x area or even get rid of it and check the location manually

This was just a general example anyway
In response to Abrax
First, that really should be client/Move(), not mob/Move().

Second, the first ..() should be return ..(), and the first return should be return 0 (though that is rather minor).

Third, I personally hate using a true/false CanMove variable. I prefer just storing either the time the last move was taken, or the time the next move will be allowed (depending on which way you'd prefer). Much more flexible and less error-prone, I feel.