ID:162239
 
How do i make it so that when im controlling a mob i can only move him 100 steps then after that it will stop me from controlling him ?

obj
hud
ControllingHand
icon = 'blah.dmi'
icon_state = ""
name = ""
Click()
spawn()usr.Controll()

mob/proc
Controll()
set hidden = 1
for(var/mob/m in oview(usr))
if(m.owner == usr)
usr.controll = m
usr.client.eye = m
spawn(300)usr.controll = null
spawn(300)usr.client.eye = null


mob/var/mob/control //The mob being controlled.
mob/var/cmoving //Moving because of being controlled?
mob/Move(NewLoc)
for(var/mob/m)if(src==m.control)if(!cmoving)return
if(control)
control.cmoving=1
step(control,get_dir(src,NewLoc))
control.cmoving=0
return
else return ..()
It's "control", and "controlling". Additionally, you should be intercepting movement at client/Move(), not mob/Move():

mob
var/tmp/mob/controlling
var/tmp/controltimestamp
var/tmp/mob/controlledby
var/controllingsteps = 0
proc/startcontrol(var/mob/M)
controllingsteps = 0
if(M.owner == src)
controlling = M
M.controlledby = src
client.eye = M
controltimestamp = world.time
var/timestamp = controltimestamp
spawn(300)
if(controlling == M && controltimestamp == timestamp)
stopcontrol()
proc/stopcontrol()
if(controlling)
controlling.controlledby = null
controlling = null
if(client)
client.eye = src

client
Move(newloc)
if(mob.controlling)
if(mob.controlling.Move(newloc))
mob.controllingsteps++
if(mob.controllingsteps > 100)
mob.stopcontrol()
return 0
if(mob.controlledby)
return 0
return ..()