Atoms can now be stationloving (#24748)

* Objects can now be stationloving

Stationloving objects are objects that love the station so much, they
will relocate back to the station if spaced or if destroyed.

Yes, this does sound a lot like the behaviour of the nuke disk. Except
made more generic.

Currently the only stationloving object is the nuke disk.

* Moved from /obj to /atom/movable

* Remie fix
This commit is contained in:
coiax
2017-03-09 20:42:02 +00:00
committed by oranges
parent aa98a443d4
commit 60f7c1df3f
7 changed files with 140 additions and 55 deletions
@@ -0,0 +1,32 @@
var/datum/controller/subsystem/objects/SSinbounds
/datum/controller/subsystem/inbounds
name = "Inbounds"
priority = 40
flags = SS_NO_INIT
var/list/processing = list()
var/list/currentrun = list()
/datum/controller/subsystem/inbounds/New()
NEW_SS_GLOBAL(SSinbounds)
/datum/controller/subsystem/inbounds/stat_entry()
..("P:[processing.len]")
/datum/controller/subsystem/inbounds/fire(resumed = 0)
if (!resumed)
src.currentrun = processing.Copy()
//cache for sanic speed (lists are references anyways)
var/list/currentrun = src.currentrun
while(currentrun.len)
var/atom/movable/thing = currentrun[currentrun.len]
currentrun.len--
if(thing)
thing.check_in_bounds(wait)
else
SSinbounds.processing -= thing
if(MC_TICK_CHECK)
return
/datum/controller/subsystem/inbounds/Recover()
processing = SSinbounds.processing