Repaths subsystem to controller/subsystem (#24624)

* Repaths subsystem to controller/subsystem

* Fix the shit
This commit is contained in:
Cyberboss
2017-03-08 16:05:45 -05:00
committed by AnturK
parent 4c4d2c28f9
commit 31ee152489
55 changed files with 437 additions and 437 deletions

View File

@@ -29,13 +29,13 @@ var/cmp_field = "name"
/proc/cmp_ckey_dsc(client/a, client/b) /proc/cmp_ckey_dsc(client/a, client/b)
return sorttext(a.ckey, b.ckey) return sorttext(a.ckey, b.ckey)
/proc/cmp_subsystem_init(datum/subsystem/a, datum/subsystem/b) /proc/cmp_subsystem_init(datum/controller/subsystem/a, datum/controller/subsystem/b)
return b.init_order - a.init_order return b.init_order - a.init_order
/proc/cmp_subsystem_display(datum/subsystem/a, datum/subsystem/b) /proc/cmp_subsystem_display(datum/controller/subsystem/a, datum/controller/subsystem/b)
return sorttext(b.name, a.name) return sorttext(b.name, a.name)
/proc/cmp_subsystem_priority(datum/subsystem/a, datum/subsystem/b) /proc/cmp_subsystem_priority(datum/controller/subsystem/a, datum/controller/subsystem/b)
return a.priority - b.priority return a.priority - b.priority
/proc/cmp_timer(datum/timedevent/a, datum/timedevent/b) /proc/cmp_timer(datum/timedevent/a, datum/timedevent/b)

View File

@@ -17,7 +17,7 @@
if(!usr.client.holder) if(!usr.client.holder)
return return
if(!class) if(!class)
if(istype(target, /datum/subsystem)) if(istype(target, /datum/controller/subsystem))
class = "subsystem" class = "subsystem"
else if(istype(target, /datum/controller)) else if(istype(target, /datum/controller))
class = "controller" class = "controller"

View File

@@ -1,4 +1,19 @@
/datum/controller /datum/controller
var/name var/name
// The object used for the clickable stat() button. // The object used for the clickable stat() button.
var/obj/effect/statclick/statclick var/obj/effect/statclick/statclick
/datum/controller/proc/Initialize()
//cleanup actions
/datum/controller/proc/Shutdown()
//when we enter dmm_suite.load_map
/datum/controller/proc/StartLoadingMap()
//when we exit dmm_suite.load_map
/datum/controller/proc/StopLoadingMap()
/datum/controller/proc/Recover()
/datum/controller/proc/stat_entry()

View File

@@ -27,9 +27,9 @@ var/datum/controller/failsafe/Failsafe
if(istype(Failsafe)) if(istype(Failsafe))
qdel(Failsafe) qdel(Failsafe)
Failsafe = src Failsafe = src
LaunchLoop() Initialize()
/datum/controller/failsafe/proc/LaunchLoop() /datum/controller/failsafe/Initialize()
set waitfor = 0 set waitfor = 0
Failsafe.Loop() Failsafe.Loop()
qdel(Failsafe) //when Loop() returns, we delete ourselves and let the mc recreate us qdel(Failsafe) //when Loop() returns, we delete ourselves and let the mc recreate us
@@ -92,7 +92,7 @@ var/datum/controller/failsafe/Failsafe
/datum/controller/failsafe/proc/defcon_pretty() /datum/controller/failsafe/proc/defcon_pretty()
return defcon return defcon
/datum/controller/failsafe/proc/stat_entry() /datum/controller/failsafe/stat_entry()
if(!statclick) if(!statclick)
statclick = new/obj/effect/statclick/debug("Initializing...", src) statclick = new/obj/effect/statclick/debug("Initializing...", src)

View File

@@ -46,8 +46,8 @@ var/CURRENT_TICKLIMIT = TICK_LIMIT_RUNNING
// The type of the last subsystem to be process()'d. // The type of the last subsystem to be process()'d.
var/last_type_processed var/last_type_processed
var/datum/subsystem/queue_head //Start of queue linked list var/datum/controller/subsystem/queue_head //Start of queue linked list
var/datum/subsystem/queue_tail //End of queue linked list (used for appending to the list) var/datum/controller/subsystem/queue_tail //End of queue linked list (used for appending to the list)
var/queue_priority_count = 0 //Running total so that we don't have to loop thru the queue each run to split up the tick var/queue_priority_count = 0 //Running total so that we don't have to loop thru the queue each run to split up the tick
var/queue_priority_count_bg = 0 //Same, but for background subsystems var/queue_priority_count_bg = 0 //Same, but for background subsystems
var/map_loading = FALSE //Are we loading in a new map? var/map_loading = FALSE //Are we loading in a new map?
@@ -60,7 +60,7 @@ var/CURRENT_TICKLIMIT = TICK_LIMIT_RUNNING
Recover() Recover()
qdel(Master) qdel(Master)
else else
init_subtypes(/datum/subsystem, subsystems) init_subtypes(/datum/controller/subsystem, subsystems)
Master = src Master = src
/datum/controller/master/Destroy() /datum/controller/master/Destroy()
@@ -68,9 +68,9 @@ var/CURRENT_TICKLIMIT = TICK_LIMIT_RUNNING
// Tell qdel() to Del() this object. // Tell qdel() to Del() this object.
return QDEL_HINT_HARDDEL_NOW return QDEL_HINT_HARDDEL_NOW
/datum/controller/master/proc/Shutdown() /datum/controller/master/Shutdown()
processing = FALSE processing = FALSE
for(var/datum/subsystem/ss in subsystems) for(var/datum/controller/subsystem/ss in subsystems)
ss.Shutdown() ss.Shutdown()
// Returns 1 if we created a new mc, 0 if we couldn't due to a recent restart, // Returns 1 if we created a new mc, 0 if we couldn't due to a recent restart,
@@ -93,7 +93,7 @@ var/CURRENT_TICKLIMIT = TICK_LIMIT_RUNNING
return 1 return 1
/datum/controller/master/proc/Recover() /datum/controller/master/Recover()
var/msg = "## DEBUG: [time2text(world.timeofday)] MC restarted. Reports:\n" var/msg = "## DEBUG: [time2text(world.timeofday)] MC restarted. Reports:\n"
for (var/varname in Master.vars) for (var/varname in Master.vars)
switch (varname) switch (varname)
@@ -112,19 +112,19 @@ var/CURRENT_TICKLIMIT = TICK_LIMIT_RUNNING
StartProcessing(10) StartProcessing(10)
else else
world << "<span class='boldannounce'>The Master Controller is having some issues, we will need to re-initialize EVERYTHING</span>" world << "<span class='boldannounce'>The Master Controller is having some issues, we will need to re-initialize EVERYTHING</span>"
Setup(20, TRUE) Initialize(20, TRUE)
// Please don't stuff random bullshit here, // Please don't stuff random bullshit here,
// Make a subsystem, give it the SS_NO_FIRE flag, and do your work in it's Initialize() // Make a subsystem, give it the SS_NO_FIRE flag, and do your work in it's Initialize()
/datum/controller/master/proc/Setup(delay, init_sss) /datum/controller/master/Initialize(delay, init_sss)
set waitfor = 0 set waitfor = 0
if(delay) if(delay)
sleep(delay) sleep(delay)
if(init_sss) if(init_sss)
init_subtypes(/datum/subsystem, subsystems) init_subtypes(/datum/controller/subsystem, subsystems)
world << "<span class='boldannounce'>Initializing subsystems...</span>" world << "<span class='boldannounce'>Initializing subsystems...</span>"
@@ -134,7 +134,7 @@ var/CURRENT_TICKLIMIT = TICK_LIMIT_RUNNING
var/start_timeofday = REALTIMEOFDAY var/start_timeofday = REALTIMEOFDAY
// Initialize subsystems. // Initialize subsystems.
CURRENT_TICKLIMIT = config.tick_limit_mc_init CURRENT_TICKLIMIT = config.tick_limit_mc_init
for (var/datum/subsystem/SS in subsystems) for (var/datum/controller/subsystem/SS in subsystems)
if (SS.flags & SS_NO_INIT) if (SS.flags & SS_NO_INIT)
continue continue
SS.Initialize(REALTIMEOFDAY) SS.Initialize(REALTIMEOFDAY)
@@ -161,7 +161,7 @@ var/CURRENT_TICKLIMIT = TICK_LIMIT_RUNNING
/datum/controller/master/proc/RoundStart() /datum/controller/master/proc/RoundStart()
round_started = 1 round_started = 1
var/timer = world.time var/timer = world.time
for (var/datum/subsystem/SS in subsystems) for (var/datum/controller/subsystem/SS in subsystems)
if (SS.flags & SS_FIRE_IN_LOBBY || SS.flags & SS_TICKER) if (SS.flags & SS_FIRE_IN_LOBBY || SS.flags & SS_TICKER)
continue //already firing continue //already firing
// Stagger subsystems. // Stagger subsystems.
@@ -199,7 +199,7 @@ var/CURRENT_TICKLIMIT = TICK_LIMIT_RUNNING
var/list/lobbysubsystems = list() var/list/lobbysubsystems = list()
var/timer = world.time var/timer = world.time
for (var/thing in subsystems) for (var/thing in subsystems)
var/datum/subsystem/SS = thing var/datum/controller/subsystem/SS = thing
if (SS.flags & SS_NO_FIRE) if (SS.flags & SS_NO_FIRE)
continue continue
SS.queued_time = 0 SS.queued_time = 0
@@ -261,7 +261,7 @@ var/CURRENT_TICKLIMIT = TICK_LIMIT_RUNNING
sleep_delta += 1 sleep_delta += 1
if (make_runtime) if (make_runtime)
var/datum/subsystem/SS var/datum/controller/subsystem/SS
SS.can_fire = 0 SS.can_fire = 0
if (!Failsafe || (Failsafe.processing_interval > 0 && (Failsafe.lasttick+(Failsafe.processing_interval*5)) < world.time)) if (!Failsafe || (Failsafe.processing_interval > 0 && (Failsafe.lasttick+(Failsafe.processing_interval*5)) < world.time))
new/datum/controller/failsafe() // (re)Start the failsafe. new/datum/controller/failsafe() // (re)Start the failsafe.
@@ -313,7 +313,7 @@ var/CURRENT_TICKLIMIT = TICK_LIMIT_RUNNING
. = 0 //so the mc knows if we runtimed . = 0 //so the mc knows if we runtimed
//we create our variables outside of the loops to save on overhead //we create our variables outside of the loops to save on overhead
var/datum/subsystem/SS var/datum/controller/subsystem/SS
var/SS_flags var/SS_flags
for (var/thing in subsystemstocheck) for (var/thing in subsystemstocheck)
@@ -339,7 +339,7 @@ var/CURRENT_TICKLIMIT = TICK_LIMIT_RUNNING
// Run thru the queue of subsystems to run, running them while balancing out their allocated tick precentage // Run thru the queue of subsystems to run, running them while balancing out their allocated tick precentage
/datum/controller/master/proc/RunQueue() /datum/controller/master/proc/RunQueue()
. = 0 . = 0
var/datum/subsystem/queue_node var/datum/controller/subsystem/queue_node
var/queue_node_flags var/queue_node_flags
var/queue_node_priority var/queue_node_priority
var/queue_node_paused var/queue_node_paused
@@ -465,7 +465,7 @@ var/CURRENT_TICKLIMIT = TICK_LIMIT_RUNNING
var/subsystemstocheck = subsystems + ticker_SS + normal_SS + lobby_SS var/subsystemstocheck = subsystems + ticker_SS + normal_SS + lobby_SS
for (var/thing in subsystemstocheck) for (var/thing in subsystemstocheck)
var/datum/subsystem/SS = thing var/datum/controller/subsystem/SS = thing
if (!SS || !istype(SS)) if (!SS || !istype(SS))
//list(SS) is so if a list makes it in the subsystem list, we remove the list, not the contents //list(SS) is so if a list makes it in the subsystem list, we remove the list, not the contents
subsystems -= list(SS) subsystems -= list(SS)
@@ -496,24 +496,24 @@ var/CURRENT_TICKLIMIT = TICK_LIMIT_RUNNING
/datum/controller/master/proc/stat_entry() /datum/controller/master/stat_entry()
if(!statclick) if(!statclick)
statclick = new/obj/effect/statclick/debug("Initializing...", src) statclick = new/obj/effect/statclick/debug("Initializing...", src)
stat("Byond:", "(FPS:[world.fps]) (TickCount:[world.time/world.tick_lag]) (TickDrift:[round(Master.tickdrift,1)]([round((Master.tickdrift/(world.time/world.tick_lag))*100,0.1)]%))") stat("Byond:", "(FPS:[world.fps]) (TickCount:[world.time/world.tick_lag]) (TickDrift:[round(Master.tickdrift,1)]([round((Master.tickdrift/(world.time/world.tick_lag))*100,0.1)]%))")
stat("Master Controller:", statclick.update("(TickRate:[Master.processing]) (Iteration:[Master.iteration])")) stat("Master Controller:", statclick.update("(TickRate:[Master.processing]) (Iteration:[Master.iteration])"))
/datum/controller/master/proc/StartLoadingMap() /datum/controller/master/StartLoadingMap()
//disallow more than one map to load at once, multithreading it will just cause race conditions //disallow more than one map to load at once, multithreading it will just cause race conditions
while(map_loading) while(map_loading)
stoplag() stoplag()
for(var/S in subsystems) for(var/S in subsystems)
var/datum/subsystem/SS = S var/datum/controller/subsystem/SS = S
SS.StartLoadingMap() SS.StartLoadingMap()
map_loading = TRUE map_loading = TRUE
/datum/controller/master/proc/StopLoadingMap(bounds = null) /datum/controller/master/StopLoadingMap(bounds = null)
map_loading = FALSE map_loading = FALSE
for(var/S in subsystems) for(var/S in subsystems)
var/datum/subsystem/SS = S var/datum/controller/subsystem/SS = S
SS.StopLoadingMap() SS.StopLoadingMap()

View File

@@ -1,8 +1,8 @@
/datum/subsystem /datum/controller/subsystem
// Metadata; you should define these. // Metadata; you should define these.
var/name = "fire coderbus" //name of the subsystem name = "fire coderbus" //name of the subsystem
var/init_order = 0 //order of initialization. Higher numbers are initialized first, lower numbers later. Can be decimal and negative values. var/init_order = 0 //order of initialization. Higher numbers are initialized first, lower numbers later. Can be decimal and negative values.
var/wait = 20 //time to wait (in deciseconds) between each call to fire(). Must be a positive integer. var/wait = 20 //time to wait (in deciseconds) between each call to fire(). Must be a positive integer.
var/priority = 50 //When mutiple subsystems need to run in the same tick, higher priority subsystems will run first and be given a higher share of the tick before MC_TICK_CHECK triggers a sleep var/priority = 50 //When mutiple subsystems need to run in the same tick, higher priority subsystems will run first and be given a higher share of the tick before MC_TICK_CHECK triggers a sleep
@@ -26,22 +26,14 @@
var/queued_time = 0 //time we entered the queue, (for timing and priority reasons) var/queued_time = 0 //time we entered the queue, (for timing and priority reasons)
var/queued_priority //we keep a running total to make the math easier, if priority changes mid-fire that would break our running total, so we store it here var/queued_priority //we keep a running total to make the math easier, if priority changes mid-fire that would break our running total, so we store it here
//linked list stuff for the queue //linked list stuff for the queue
var/datum/subsystem/queue_next var/datum/controller/subsystem/queue_next
var/datum/subsystem/queue_prev var/datum/controller/subsystem/queue_prev
// The object used for the clickable stat() button.
var/obj/effect/statclick/statclick
// Used to initialize the subsystem BEFORE the map has loaded // Used to initialize the subsystem BEFORE the map has loaded
/datum/subsystem/New() /datum/controller/subsystem/New()
//cleanup actions
/datum/subsystem/proc/Shutdown()
return
//This is used so the mc knows when the subsystem sleeps. do not override. //This is used so the mc knows when the subsystem sleeps. do not override.
/datum/subsystem/proc/ignite(resumed = 0) /datum/controller/subsystem/proc/ignite(resumed = 0)
set waitfor = 0 set waitfor = 0
. = SS_SLEEPING . = SS_SLEEPING
fire(resumed) fire(resumed)
@@ -57,11 +49,11 @@
//previously, this would have been named 'process()' but that name is used everywhere for different things! //previously, this would have been named 'process()' but that name is used everywhere for different things!
//fire() seems more suitable. This is the procedure that gets called every 'wait' deciseconds. //fire() seems more suitable. This is the procedure that gets called every 'wait' deciseconds.
//Sleeping in here prevents future fires until returned. //Sleeping in here prevents future fires until returned.
/datum/subsystem/proc/fire(resumed = 0) /datum/controller/subsystem/proc/fire(resumed = 0)
flags |= SS_NO_FIRE flags |= SS_NO_FIRE
throw EXCEPTION("Subsystem [src]([type]) does not fire() but did not set the SS_NO_FIRE flag. Please add the SS_NO_FIRE flag to any subsystem that doesn't fire so it doesn't get added to the processing list and waste cpu.") throw EXCEPTION("Subsystem [src]([type]) does not fire() but did not set the SS_NO_FIRE flag. Please add the SS_NO_FIRE flag to any subsystem that doesn't fire so it doesn't get added to the processing list and waste cpu.")
/datum/subsystem/Destroy() /datum/controller/subsystem/Destroy()
dequeue() dequeue()
can_fire = 0 can_fire = 0
flags |= SS_NO_FIRE flags |= SS_NO_FIRE
@@ -71,10 +63,10 @@
//Queue it to run. //Queue it to run.
// (we loop thru a linked list until we get to the end or find the right point) // (we loop thru a linked list until we get to the end or find the right point)
// (this lets us sort our run order correctly without having to re-sort the entire already sorted list) // (this lets us sort our run order correctly without having to re-sort the entire already sorted list)
/datum/subsystem/proc/enqueue() /datum/controller/subsystem/proc/enqueue()
var/SS_priority = priority var/SS_priority = priority
var/SS_flags = flags var/SS_flags = flags
var/datum/subsystem/queue_node var/datum/controller/subsystem/queue_node
var/queue_node_priority var/queue_node_priority
var/queue_node_flags var/queue_node_flags
@@ -129,7 +121,7 @@
queue_node.queue_prev = src queue_node.queue_prev = src
/datum/subsystem/proc/dequeue() /datum/controller/subsystem/proc/dequeue()
if (queue_next) if (queue_next)
queue_next.queue_prev = queue_prev queue_next.queue_prev = queue_prev
if (queue_prev) if (queue_prev)
@@ -143,7 +135,7 @@
state = SS_IDLE state = SS_IDLE
/datum/subsystem/proc/pause() /datum/controller/subsystem/proc/pause()
. = 1 . = 1
if (state == SS_RUNNING) if (state == SS_RUNNING)
state = SS_PAUSED state = SS_PAUSED
@@ -152,7 +144,7 @@
//used to initialize the subsystem AFTER the map has loaded //used to initialize the subsystem AFTER the map has loaded
/datum/subsystem/proc/Initialize(start_timeofday) /datum/controller/subsystem/Initialize(start_timeofday)
var/time = (REALTIMEOFDAY - start_timeofday) / 10 var/time = (REALTIMEOFDAY - start_timeofday) / 10
var/msg = "Initialized [name] subsystem within [time] second[time == 1 ? "" : "s"]!" var/msg = "Initialized [name] subsystem within [time] second[time == 1 ? "" : "s"]!"
world << "<span class='boldannounce'>[msg]</span>" world << "<span class='boldannounce'>[msg]</span>"
@@ -160,7 +152,7 @@
return time return time
//hook for printing stats to the "MC" statuspanel for admins to see performance and related stats etc. //hook for printing stats to the "MC" statuspanel for admins to see performance and related stats etc.
/datum/subsystem/proc/stat_entry(msg) /datum/controller/subsystem/stat_entry(msg)
if(!statclick) if(!statclick)
statclick = new/obj/effect/statclick/debug("Initializing...", src) statclick = new/obj/effect/statclick/debug("Initializing...", src)
@@ -177,7 +169,7 @@
stat(title, statclick.update(msg)) stat(title, statclick.update(msg))
/datum/subsystem/proc/state_letter() /datum/controller/subsystem/proc/state_letter()
switch (state) switch (state)
if (SS_RUNNING) if (SS_RUNNING)
. = "R" . = "R"
@@ -192,15 +184,15 @@
//could be used to postpone a costly subsystem for (default one) var/cycles, cycles //could be used to postpone a costly subsystem for (default one) var/cycles, cycles
//for instance, during cpu intensive operations like explosions //for instance, during cpu intensive operations like explosions
/datum/subsystem/proc/postpone(cycles = 1) /datum/controller/subsystem/proc/postpone(cycles = 1)
if(next_fire - world.time < wait) if(next_fire - world.time < wait)
next_fire += (wait*cycles) next_fire += (wait*cycles)
//usually called via datum/subsystem/New() when replacing a subsystem (i.e. due to a recurring crash) //usually called via datum/controller/subsystem/New() when replacing a subsystem (i.e. due to a recurring crash)
//should attempt to salvage what it can from the old instance of subsystem //should attempt to salvage what it can from the old instance of subsystem
/datum/subsystem/proc/Recover() /datum/controller/subsystem/Recover()
/datum/subsystem/vv_edit_var(var_name, var_value) /datum/controller/subsystem/vv_edit_var(var_name, var_value)
switch (var_name) switch (var_name)
if ("can_fire") if ("can_fire")
//this is so the subsystem doesn't rapid fire to make up missed ticks causing more lag //this is so the subsystem doesn't rapid fire to make up missed ticks causing more lag
@@ -208,10 +200,4 @@
next_fire = world.time + wait next_fire = world.time + wait
if ("queued_priority") //editing this breaks things. if ("queued_priority") //editing this breaks things.
return 0 return 0
. = ..() . = ..()
//when we enter dmm_suite.load_map
/datum/subsystem/proc/StartLoadingMap()
//when we exit dmm_suite.load_map
/datum/subsystem/proc/StopLoadingMap()

View File

@@ -1,6 +1,6 @@
var/datum/subsystem/acid/SSacid var/datum/controller/subsystem/acid/SSacid
/datum/subsystem/acid /datum/controller/subsystem/acid
name = "Acid" name = "Acid"
priority = 40 priority = 40
flags = SS_NO_INIT|SS_BACKGROUND flags = SS_NO_INIT|SS_BACKGROUND
@@ -8,15 +8,15 @@ var/datum/subsystem/acid/SSacid
var/list/currentrun = list() var/list/currentrun = list()
var/list/processing = list() var/list/processing = list()
/datum/subsystem/acid/New() /datum/controller/subsystem/acid/New()
NEW_SS_GLOBAL(SSacid) NEW_SS_GLOBAL(SSacid)
/datum/subsystem/acid/stat_entry() /datum/controller/subsystem/acid/stat_entry()
..("P:[processing.len]") ..("P:[processing.len]")
/datum/subsystem/acid/fire(resumed = 0) /datum/controller/subsystem/acid/fire(resumed = 0)
if (!resumed) if (!resumed)
src.currentrun = processing.Copy() src.currentrun = processing.Copy()

View File

@@ -5,9 +5,9 @@
#define SSAIR_HIGHPRESSURE 5 #define SSAIR_HIGHPRESSURE 5
#define SSAIR_HOTSPOTS 6 #define SSAIR_HOTSPOTS 6
#define SSAIR_SUPERCONDUCTIVITY 7 #define SSAIR_SUPERCONDUCTIVITY 7
var/datum/subsystem/air/SSair var/datum/controller/subsystem/air/SSair
/datum/subsystem/air /datum/controller/subsystem/air
name = "Air" name = "Air"
init_order = -1 init_order = -1
priority = 20 priority = 20
@@ -41,10 +41,10 @@ var/datum/subsystem/air/SSair
var/map_loading = TRUE var/map_loading = TRUE
var/list/queued_for_activation var/list/queued_for_activation
/datum/subsystem/air/New() /datum/controller/subsystem/air/New()
NEW_SS_GLOBAL(SSair) NEW_SS_GLOBAL(SSair)
/datum/subsystem/air/stat_entry(msg) /datum/controller/subsystem/air/stat_entry(msg)
msg += "C:{" msg += "C:{"
msg += "AT:[round(cost_turfs,1)]|" msg += "AT:[round(cost_turfs,1)]|"
msg += "EG:[round(cost_groups,1)]|" msg += "EG:[round(cost_groups,1)]|"
@@ -64,7 +64,7 @@ var/datum/subsystem/air/SSair
..(msg) ..(msg)
/datum/subsystem/air/Initialize(timeofday) /datum/controller/subsystem/air/Initialize(timeofday)
map_loading = FALSE map_loading = FALSE
setup_allturfs() setup_allturfs()
setup_atmos_machinery() setup_atmos_machinery()
@@ -72,7 +72,7 @@ var/datum/subsystem/air/SSair
..() ..()
/datum/subsystem/air/fire(resumed = 0) /datum/controller/subsystem/air/fire(resumed = 0)
var/timer = world.tick_usage var/timer = world.tick_usage
if(currentpart == SSAIR_PIPENETS || !resumed) if(currentpart == SSAIR_PIPENETS || !resumed)
@@ -139,7 +139,7 @@ var/datum/subsystem/air/SSair
/datum/subsystem/air/proc/process_pipenets(resumed = 0) /datum/controller/subsystem/air/proc/process_pipenets(resumed = 0)
if (!resumed) if (!resumed)
src.currentrun = networks.Copy() src.currentrun = networks.Copy()
//cache for sanic speed (lists are references anyways) //cache for sanic speed (lists are references anyways)
@@ -155,7 +155,7 @@ var/datum/subsystem/air/SSair
return return
/datum/subsystem/air/proc/process_atmos_machinery(resumed = 0) /datum/controller/subsystem/air/proc/process_atmos_machinery(resumed = 0)
var/seconds = wait * 0.1 var/seconds = wait * 0.1
if (!resumed) if (!resumed)
src.currentrun = atmos_machinery.Copy() src.currentrun = atmos_machinery.Copy()
@@ -170,7 +170,7 @@ var/datum/subsystem/air/SSair
return return
/datum/subsystem/air/proc/process_super_conductivity(resumed = 0) /datum/controller/subsystem/air/proc/process_super_conductivity(resumed = 0)
if (!resumed) if (!resumed)
src.currentrun = active_super_conductivity.Copy() src.currentrun = active_super_conductivity.Copy()
//cache for sanic speed (lists are references anyways) //cache for sanic speed (lists are references anyways)
@@ -182,7 +182,7 @@ var/datum/subsystem/air/SSair
if(MC_TICK_CHECK) if(MC_TICK_CHECK)
return return
/datum/subsystem/air/proc/process_hotspots(resumed = 0) /datum/controller/subsystem/air/proc/process_hotspots(resumed = 0)
if (!resumed) if (!resumed)
src.currentrun = hotspots.Copy() src.currentrun = hotspots.Copy()
//cache for sanic speed (lists are references anyways) //cache for sanic speed (lists are references anyways)
@@ -198,7 +198,7 @@ var/datum/subsystem/air/SSair
return return
/datum/subsystem/air/proc/process_high_pressure_delta(resumed = 0) /datum/controller/subsystem/air/proc/process_high_pressure_delta(resumed = 0)
while (high_pressure_delta.len) while (high_pressure_delta.len)
var/turf/open/T = high_pressure_delta[high_pressure_delta.len] var/turf/open/T = high_pressure_delta[high_pressure_delta.len]
high_pressure_delta.len-- high_pressure_delta.len--
@@ -207,7 +207,7 @@ var/datum/subsystem/air/SSair
if(MC_TICK_CHECK) if(MC_TICK_CHECK)
return return
/datum/subsystem/air/proc/process_active_turfs(resumed = 0) /datum/controller/subsystem/air/proc/process_active_turfs(resumed = 0)
//cache for sanic speed //cache for sanic speed
var/fire_count = times_fired var/fire_count = times_fired
if (!resumed) if (!resumed)
@@ -222,7 +222,7 @@ var/datum/subsystem/air/SSair
if (MC_TICK_CHECK) if (MC_TICK_CHECK)
return return
/datum/subsystem/air/proc/process_excited_groups(resumed = 0) /datum/controller/subsystem/air/proc/process_excited_groups(resumed = 0)
if (!resumed) if (!resumed)
src.currentrun = excited_groups.Copy() src.currentrun = excited_groups.Copy()
//cache for sanic speed (lists are references anyways) //cache for sanic speed (lists are references anyways)
@@ -240,7 +240,7 @@ var/datum/subsystem/air/SSair
return return
/datum/subsystem/air/proc/remove_from_active(turf/open/T) /datum/controller/subsystem/air/proc/remove_from_active(turf/open/T)
active_turfs -= T active_turfs -= T
if(currentpart == SSAIR_ACTIVETURFS) if(currentpart == SSAIR_ACTIVETURFS)
currentrun -= T currentrun -= T
@@ -249,7 +249,7 @@ var/datum/subsystem/air/SSair
if(T.excited_group) if(T.excited_group)
T.excited_group.garbage_collect() T.excited_group.garbage_collect()
/datum/subsystem/air/proc/add_to_active(turf/open/T, blockchanges = 1) /datum/controller/subsystem/air/proc/add_to_active(turf/open/T, blockchanges = 1)
if(istype(T) && T.air) if(istype(T) && T.air)
T.excited = 1 T.excited = 1
active_turfs |= T active_turfs |= T
@@ -267,17 +267,17 @@ var/datum/subsystem/air/SSair
else else
T.requires_activation = TRUE T.requires_activation = TRUE
/datum/subsystem/air/StartLoadingMap() /datum/controller/subsystem/air/StartLoadingMap()
LAZYINITLIST(queued_for_activation) LAZYINITLIST(queued_for_activation)
map_loading = TRUE map_loading = TRUE
/datum/subsystem/air/StopLoadingMap() /datum/controller/subsystem/air/StopLoadingMap()
map_loading = FALSE map_loading = FALSE
for(var/T in queued_for_activation) for(var/T in queued_for_activation)
add_to_active(T) add_to_active(T)
queued_for_activation.Cut() queued_for_activation.Cut()
/datum/subsystem/air/proc/setup_allturfs() /datum/controller/subsystem/air/proc/setup_allturfs()
var/list/turfs_to_init = block(locate(1, 1, 1), locate(world.maxx, world.maxy, world.maxz)) var/list/turfs_to_init = block(locate(1, 1, 1), locate(world.maxx, world.maxy, world.maxz))
var/list/active_turfs = src.active_turfs var/list/active_turfs = src.active_turfs
var/times_fired = ++src.times_fired var/times_fired = ++src.times_fired
@@ -347,7 +347,7 @@ var/datum/subsystem/air/SSair
/turf/open/space/resolve_active_graph() /turf/open/space/resolve_active_graph()
return list() return list()
/datum/subsystem/air/proc/setup_atmos_machinery() /datum/controller/subsystem/air/proc/setup_atmos_machinery()
for (var/obj/machinery/atmospherics/AM in atmos_machinery) for (var/obj/machinery/atmospherics/AM in atmos_machinery)
AM.atmosinit() AM.atmosinit()
CHECK_TICK CHECK_TICK
@@ -355,12 +355,12 @@ var/datum/subsystem/air/SSair
//this can't be done with setup_atmos_machinery() because //this can't be done with setup_atmos_machinery() because
// all atmos machinery has to initalize before the first // all atmos machinery has to initalize before the first
// pipenet can be built. // pipenet can be built.
/datum/subsystem/air/proc/setup_pipenets() /datum/controller/subsystem/air/proc/setup_pipenets()
for (var/obj/machinery/atmospherics/AM in atmos_machinery) for (var/obj/machinery/atmospherics/AM in atmos_machinery)
AM.build_network() AM.build_network()
CHECK_TICK CHECK_TICK
/datum/subsystem/air/proc/setup_template_machinery(list/atmos_machines) /datum/controller/subsystem/air/proc/setup_template_machinery(list/atmos_machines)
for(var/A in atmos_machines) for(var/A in atmos_machines)
var/obj/machinery/atmospherics/AM = A var/obj/machinery/atmospherics/AM = A
AM.atmosinit() AM.atmosinit()

View File

@@ -1,15 +1,15 @@
var/datum/subsystem/assets/SSasset var/datum/controller/subsystem/assets/SSasset
/datum/subsystem/assets /datum/controller/subsystem/assets
name = "Assets" name = "Assets"
init_order = -3 init_order = -3
flags = SS_NO_FIRE flags = SS_NO_FIRE
var/list/cache = list() var/list/cache = list()
/datum/subsystem/assets/New() /datum/controller/subsystem/assets/New()
NEW_SS_GLOBAL(SSasset) NEW_SS_GLOBAL(SSasset)
/datum/subsystem/assets/Initialize(timeofday) /datum/controller/subsystem/assets/Initialize(timeofday)
for(var/type in typesof(/datum/asset) - list(/datum/asset, /datum/asset/simple)) for(var/type in typesof(/datum/asset) - list(/datum/asset, /datum/asset/simple))
var/datum/asset/A = new type() var/datum/asset/A = new type()
A.register() A.register()

View File

@@ -1,10 +1,10 @@
var/datum/subsystem/atoms/SSatoms var/datum/controller/subsystem/atoms/SSatoms
#define INITIALIZATION_INSSATOMS 0 //New should not call Initialize #define INITIALIZATION_INSSATOMS 0 //New should not call Initialize
#define INITIALIZATION_INNEW_MAPLOAD 1 //New should call Initialize(TRUE) #define INITIALIZATION_INNEW_MAPLOAD 1 //New should call Initialize(TRUE)
#define INITIALIZATION_INNEW_REGULAR 2 //New should call Initialize(FALSE) #define INITIALIZATION_INNEW_REGULAR 2 //New should call Initialize(FALSE)
/datum/subsystem/atoms /datum/controller/subsystem/atoms
name = "Atoms" name = "Atoms"
init_order = 11 init_order = 11
flags = SS_NO_FIRE flags = SS_NO_FIRE
@@ -12,17 +12,17 @@ var/datum/subsystem/atoms/SSatoms
var/initialized = INITIALIZATION_INSSATOMS var/initialized = INITIALIZATION_INSSATOMS
var/old_initialized var/old_initialized
/datum/subsystem/atoms/New() /datum/controller/subsystem/atoms/New()
NEW_SS_GLOBAL(SSatoms) NEW_SS_GLOBAL(SSatoms)
/datum/subsystem/atoms/Initialize(timeofday) /datum/controller/subsystem/atoms/Initialize(timeofday)
fire_overlay.appearance_flags = RESET_COLOR fire_overlay.appearance_flags = RESET_COLOR
setupGenetics() //to set the mutations' place in structural enzymes, so monkey.initialize() knows where to put the monkey mutation. setupGenetics() //to set the mutations' place in structural enzymes, so monkey.initialize() knows where to put the monkey mutation.
initialized = INITIALIZATION_INNEW_MAPLOAD initialized = INITIALIZATION_INNEW_MAPLOAD
InitializeAtoms() InitializeAtoms()
return ..() return ..()
/datum/subsystem/atoms/proc/InitializeAtoms(list/atoms = null) /datum/controller/subsystem/atoms/proc/InitializeAtoms(list/atoms = null)
if(initialized == INITIALIZATION_INSSATOMS) if(initialized == INITIALIZATION_INSSATOMS)
return return
@@ -71,20 +71,20 @@ var/datum/subsystem/atoms/SSatoms
CHECK_TICK CHECK_TICK
testing("Late-initialized [late_loaders.len] atoms") testing("Late-initialized [late_loaders.len] atoms")
/datum/subsystem/atoms/proc/map_loader_begin() /datum/controller/subsystem/atoms/proc/map_loader_begin()
old_initialized = initialized old_initialized = initialized
initialized = INITIALIZATION_INSSATOMS initialized = INITIALIZATION_INSSATOMS
/datum/subsystem/atoms/proc/map_loader_stop() /datum/controller/subsystem/atoms/proc/map_loader_stop()
initialized = old_initialized initialized = old_initialized
/datum/subsystem/atoms/Recover() /datum/controller/subsystem/atoms/Recover()
initialized = SSatoms.initialized initialized = SSatoms.initialized
if(initialized == INITIALIZATION_INNEW_MAPLOAD) if(initialized == INITIALIZATION_INNEW_MAPLOAD)
InitializeAtoms() InitializeAtoms()
old_initialized = SSatoms.old_initialized old_initialized = SSatoms.old_initialized
/datum/subsystem/atoms/proc/setupGenetics() /datum/controller/subsystem/atoms/proc/setupGenetics()
var/list/avnums = new /list(DNA_STRUC_ENZYMES_BLOCKS) var/list/avnums = new /list(DNA_STRUC_ENZYMES_BLOCKS)
for(var/i=1, i<=DNA_STRUC_ENZYMES_BLOCKS, i++) for(var/i=1, i<=DNA_STRUC_ENZYMES_BLOCKS, i++)
avnums[i] = i avnums[i] = i

View File

@@ -1,6 +1,6 @@
var/datum/subsystem/augury/SSaugury var/datum/controller/subsystem/augury/SSaugury
/datum/subsystem/augury /datum/controller/subsystem/augury
name = "Augury" name = "Augury"
flags = SS_NO_INIT flags = SS_NO_INIT
@@ -9,16 +9,16 @@ var/datum/subsystem/augury/SSaugury
var/list/observers_given_action = list() var/list/observers_given_action = list()
/datum/subsystem/augury/New() /datum/controller/subsystem/augury/New()
NEW_SS_GLOBAL(SSaugury) NEW_SS_GLOBAL(SSaugury)
/datum/subsystem/augury/stat_entry(msg) /datum/controller/subsystem/augury/stat_entry(msg)
..("W:[watchers.len]|D:[doombringers.len]") ..("W:[watchers.len]|D:[doombringers.len]")
/datum/subsystem/augury/proc/register_doom(atom/A, severity) /datum/controller/subsystem/augury/proc/register_doom(atom/A, severity)
doombringers[A] = severity doombringers[A] = severity
/datum/subsystem/augury/fire() /datum/controller/subsystem/augury/fire()
var/biggest_doom = null var/biggest_doom = null
var/biggest_threat = null var/biggest_threat = null

View File

@@ -1,19 +1,19 @@
#define COMMUNICATION_COOLDOWN 600 #define COMMUNICATION_COOLDOWN 600
#define COMMUNICATION_COOLDOWN_AI 600 #define COMMUNICATION_COOLDOWN_AI 600
var/datum/subsystem/communications/SScommunications var/datum/controller/subsystem/communications/SScommunications
/datum/subsystem/communications /datum/controller/subsystem/communications
name = "Communications" name = "Communications"
flags = SS_NO_INIT | SS_NO_FIRE flags = SS_NO_INIT | SS_NO_FIRE
var/silicon_message_cooldown var/silicon_message_cooldown
var/nonsilicon_message_cooldown var/nonsilicon_message_cooldown
/datum/subsystem/communications/New() /datum/controller/subsystem/communications/New()
NEW_SS_GLOBAL(SScommunications) NEW_SS_GLOBAL(SScommunications)
/datum/subsystem/communications/proc/can_announce(mob/living/user, is_silicon) /datum/controller/subsystem/communications/proc/can_announce(mob/living/user, is_silicon)
if(is_silicon && silicon_message_cooldown > world.time) if(is_silicon && silicon_message_cooldown > world.time)
. = FALSE . = FALSE
else if(!is_silicon && nonsilicon_message_cooldown > world.time) else if(!is_silicon && nonsilicon_message_cooldown > world.time)
@@ -21,7 +21,7 @@ var/datum/subsystem/communications/SScommunications
else else
. = TRUE . = TRUE
/datum/subsystem/communications/proc/make_announcement(mob/living/user, is_silicon, input) /datum/controller/subsystem/communications/proc/make_announcement(mob/living/user, is_silicon, input)
if(!can_announce(user, is_silicon)) if(!can_announce(user, is_silicon))
return FALSE return FALSE
if(is_silicon) if(is_silicon)

View File

@@ -1,19 +1,19 @@
var/datum/subsystem/diseases/SSdisease var/datum/controller/subsystem/diseases/SSdisease
/datum/subsystem/diseases /datum/controller/subsystem/diseases
name = "Diseases" name = "Diseases"
flags = SS_KEEP_TIMING|SS_NO_INIT flags = SS_KEEP_TIMING|SS_NO_INIT
var/list/currentrun = list() var/list/currentrun = list()
var/list/processing = list() var/list/processing = list()
/datum/subsystem/diseases/New() /datum/controller/subsystem/diseases/New()
NEW_SS_GLOBAL(SSdisease) NEW_SS_GLOBAL(SSdisease)
/datum/subsystem/diseases/stat_entry(msg) /datum/controller/subsystem/diseases/stat_entry(msg)
..("P:[processing.len]") ..("P:[processing.len]")
/datum/subsystem/diseases/fire(resumed = 0) /datum/controller/subsystem/diseases/fire(resumed = 0)
if(!resumed) if(!resumed)
src.currentrun = processing.Copy() src.currentrun = processing.Copy()
//cache for sanic speed (lists are references anyways) //cache for sanic speed (lists are references anyways)

View File

@@ -1,6 +1,6 @@
var/datum/subsystem/events/SSevent var/datum/controller/subsystem/events/SSevent
/datum/subsystem/events /datum/controller/subsystem/events
name = "Events" name = "Events"
init_order = 6 init_order = 6
@@ -16,11 +16,11 @@ var/datum/subsystem/events/SSevent
var/wizardmode = 0 var/wizardmode = 0
/datum/subsystem/events/New() /datum/controller/subsystem/events/New()
NEW_SS_GLOBAL(SSevent) NEW_SS_GLOBAL(SSevent)
/datum/subsystem/events/Initialize(time, zlevel) /datum/controller/subsystem/events/Initialize(time, zlevel)
for(var/type in typesof(/datum/round_event_control)) for(var/type in typesof(/datum/round_event_control))
var/datum/round_event_control/E = new type() var/datum/round_event_control/E = new type()
if(!E.typepath) if(!E.typepath)
@@ -31,7 +31,7 @@ var/datum/subsystem/events/SSevent
..() ..()
/datum/subsystem/events/fire(resumed = 0) /datum/controller/subsystem/events/fire(resumed = 0)
if(!resumed) if(!resumed)
checkEvent() //only check these if we aren't resuming a paused fire checkEvent() //only check these if we aren't resuming a paused fire
src.currentrun = running.Copy() src.currentrun = running.Copy()
@@ -50,17 +50,17 @@ var/datum/subsystem/events/SSevent
return return
//checks if we should select a random event yet, and reschedules if necessary //checks if we should select a random event yet, and reschedules if necessary
/datum/subsystem/events/proc/checkEvent() /datum/controller/subsystem/events/proc/checkEvent()
if(scheduled <= world.time) if(scheduled <= world.time)
spawnEvent() spawnEvent()
reschedule() reschedule()
//decides which world.time we should select another random event at. //decides which world.time we should select another random event at.
/datum/subsystem/events/proc/reschedule() /datum/controller/subsystem/events/proc/reschedule()
scheduled = world.time + rand(frequency_lower, max(frequency_lower,frequency_upper)) scheduled = world.time + rand(frequency_lower, max(frequency_lower,frequency_upper))
//selects a random event based on whether it can occur and it's 'weight'(probability) //selects a random event based on whether it can occur and it's 'weight'(probability)
/datum/subsystem/events/proc/spawnEvent() /datum/controller/subsystem/events/proc/spawnEvent()
set waitfor = FALSE //for the admin prompt set waitfor = FALSE //for the admin prompt
if(!config.allow_random_events) if(!config.allow_random_events)
// var/datum/round_event_control/E = locate(/datum/round_event_control/dust) in control // var/datum/round_event_control/E = locate(/datum/round_event_control/dust) in control
@@ -91,7 +91,7 @@ var/datum/subsystem/events/SSevent
if(TriggerEvent(E)) if(TriggerEvent(E))
return return
/datum/subsystem/events/proc/TriggerEvent(datum/round_event_control/E) /datum/controller/subsystem/events/proc/TriggerEvent(datum/round_event_control/E)
. = E.preRunEvent() . = E.preRunEvent()
if(!.)//we couldn't run this event for some reason, set its max_occurrences to 0 if(!.)//we couldn't run this event for some reason, set its max_occurrences to 0
E.max_occurrences = 0 E.max_occurrences = 0
@@ -171,7 +171,7 @@ var/datum/subsystem/events/SSevent
*/ */
//sets up the holidays and holidays list //sets up the holidays and holidays list
/datum/subsystem/events/proc/getHoliday() /datum/controller/subsystem/events/proc/getHoliday()
if(!config.allow_holidays) if(!config.allow_holidays)
return // Holiday stuff was not enabled in the config! return // Holiday stuff was not enabled in the config!
@@ -191,12 +191,12 @@ var/datum/subsystem/events/SSevent
holidays = shuffle(holidays) holidays = shuffle(holidays)
world.update_status() world.update_status()
/datum/subsystem/events/proc/toggleWizardmode() /datum/controller/subsystem/events/proc/toggleWizardmode()
wizardmode = !wizardmode wizardmode = !wizardmode
message_admins("Summon Events has been [wizardmode ? "enabled, events will occur every [SSevent.frequency_lower / 600] to [SSevent.frequency_upper / 600] minutes" : "disabled"]!") message_admins("Summon Events has been [wizardmode ? "enabled, events will occur every [SSevent.frequency_lower / 600] to [SSevent.frequency_upper / 600] minutes" : "disabled"]!")
log_game("Summon Events was [wizardmode ? "enabled" : "disabled"]!") log_game("Summon Events was [wizardmode ? "enabled" : "disabled"]!")
/datum/subsystem/events/proc/resetFrequency() /datum/controller/subsystem/events/proc/resetFrequency()
frequency_lower = initial(frequency_lower) frequency_lower = initial(frequency_lower)
frequency_upper = initial(frequency_upper) frequency_upper = initial(frequency_upper)

View File

@@ -1,6 +1,6 @@
var/datum/subsystem/fire_burning/SSfire_burning var/datum/controller/subsystem/fire_burning/SSfire_burning
/datum/subsystem/fire_burning /datum/controller/subsystem/fire_burning
name = "Fire Burning" name = "Fire Burning"
priority = 40 priority = 40
flags = SS_NO_INIT|SS_BACKGROUND flags = SS_NO_INIT|SS_BACKGROUND
@@ -8,15 +8,15 @@ var/datum/subsystem/fire_burning/SSfire_burning
var/list/currentrun = list() var/list/currentrun = list()
var/list/processing = list() var/list/processing = list()
/datum/subsystem/fire_burning/New() /datum/controller/subsystem/fire_burning/New()
NEW_SS_GLOBAL(SSfire_burning) NEW_SS_GLOBAL(SSfire_burning)
/datum/subsystem/fire_burning/stat_entry() /datum/controller/subsystem/fire_burning/stat_entry()
..("P:[processing.len]") ..("P:[processing.len]")
/datum/subsystem/fire_burning/fire(resumed = 0) /datum/controller/subsystem/fire_burning/fire(resumed = 0)
if (!resumed) if (!resumed)
src.currentrun = processing.Copy() src.currentrun = processing.Copy()

View File

@@ -1,6 +1,6 @@
var/datum/subsystem/garbage_collector/SSgarbage var/datum/controller/subsystem/garbage_collector/SSgarbage
/datum/subsystem/garbage_collector /datum/controller/subsystem/garbage_collector
name = "Garbage" name = "Garbage"
priority = 15 priority = 15
wait = 5 wait = 5
@@ -34,10 +34,10 @@ var/datum/subsystem/garbage_collector/SSgarbage
var/list/qdel_list = list() // list of all types that have been qdel()eted var/list/qdel_list = list() // list of all types that have been qdel()eted
#endif #endif
/datum/subsystem/garbage_collector/New() /datum/controller/subsystem/garbage_collector/New()
NEW_SS_GLOBAL(SSgarbage) NEW_SS_GLOBAL(SSgarbage)
/datum/subsystem/garbage_collector/stat_entry(msg) /datum/controller/subsystem/garbage_collector/stat_entry(msg)
msg += "Q:[queue.len]|D:[delslasttick]|G:[gcedlasttick]|" msg += "Q:[queue.len]|D:[delslasttick]|G:[gcedlasttick]|"
msg += "GR:" msg += "GR:"
if (!(delslasttick+gcedlasttick)) if (!(delslasttick+gcedlasttick))
@@ -52,14 +52,14 @@ var/datum/subsystem/garbage_collector/SSgarbage
msg += "TGR:[round((totalgcs/(totaldels+totalgcs))*100, 0.01)]%" msg += "TGR:[round((totalgcs/(totaldels+totalgcs))*100, 0.01)]%"
..(msg) ..(msg)
/datum/subsystem/garbage_collector/fire() /datum/controller/subsystem/garbage_collector/fire()
HandleToBeQueued() HandleToBeQueued()
if(state == SS_RUNNING) if(state == SS_RUNNING)
HandleQueue() HandleQueue()
//If you see this proc high on the profile, what you are really seeing is the garbage collection/soft delete overhead in byond. //If you see this proc high on the profile, what you are really seeing is the garbage collection/soft delete overhead in byond.
//Don't attempt to optimize, not worth the effort. //Don't attempt to optimize, not worth the effort.
/datum/subsystem/garbage_collector/proc/HandleToBeQueued() /datum/controller/subsystem/garbage_collector/proc/HandleToBeQueued()
var/list/tobequeued = src.tobequeued var/list/tobequeued = src.tobequeued
var/starttime = world.time var/starttime = world.time
var/starttimeofday = world.timeofday var/starttimeofday = world.timeofday
@@ -70,7 +70,7 @@ var/datum/subsystem/garbage_collector/SSgarbage
Queue(ref) Queue(ref)
tobequeued.Cut(1, 2) tobequeued.Cut(1, 2)
/datum/subsystem/garbage_collector/proc/HandleQueue() /datum/controller/subsystem/garbage_collector/proc/HandleQueue()
delslasttick = 0 delslasttick = 0
gcedlasttick = 0 gcedlasttick = 0
var/time_to_kill = world.time - collection_timeout // Anything qdel() but not GC'd BEFORE this time needs to be manually del() var/time_to_kill = world.time - collection_timeout // Anything qdel() but not GC'd BEFORE this time needs to be manually del()
@@ -124,12 +124,12 @@ var/datum/subsystem/garbage_collector/SSgarbage
++gcedlasttick ++gcedlasttick
++totalgcs ++totalgcs
/datum/subsystem/garbage_collector/proc/QueueForQueuing(datum/A) /datum/controller/subsystem/garbage_collector/proc/QueueForQueuing(datum/A)
if (istype(A) && A.gc_destroyed == GC_CURRENTLY_BEING_QDELETED) if (istype(A) && A.gc_destroyed == GC_CURRENTLY_BEING_QDELETED)
tobequeued += A tobequeued += A
A.gc_destroyed = GC_QUEUED_FOR_QUEUING A.gc_destroyed = GC_QUEUED_FOR_QUEUING
/datum/subsystem/garbage_collector/proc/Queue(datum/A) /datum/controller/subsystem/garbage_collector/proc/Queue(datum/A)
if (!istype(A) || (!isnull(A.gc_destroyed) && A.gc_destroyed >= 0)) if (!istype(A) || (!isnull(A.gc_destroyed) && A.gc_destroyed >= 0))
return return
if (A.gc_destroyed == GC_QUEUED_FOR_HARD_DEL) if (A.gc_destroyed == GC_QUEUED_FOR_HARD_DEL)
@@ -145,12 +145,12 @@ var/datum/subsystem/garbage_collector/SSgarbage
queue[refid] = gctime queue[refid] = gctime
/datum/subsystem/garbage_collector/proc/HardQueue(datum/A) /datum/controller/subsystem/garbage_collector/proc/HardQueue(datum/A)
if (istype(A) && A.gc_destroyed == GC_CURRENTLY_BEING_QDELETED) if (istype(A) && A.gc_destroyed == GC_CURRENTLY_BEING_QDELETED)
tobequeued += A tobequeued += A
A.gc_destroyed = GC_QUEUED_FOR_HARD_DEL A.gc_destroyed = GC_QUEUED_FOR_HARD_DEL
/datum/subsystem/garbage_collector/Recover() /datum/controller/subsystem/garbage_collector/Recover()
if (istype(SSgarbage.queue)) if (istype(SSgarbage.queue))
queue |= SSgarbage.queue queue |= SSgarbage.queue
if (istype(SSgarbage.tobequeued)) if (istype(SSgarbage.tobequeued))

View File

@@ -1,6 +1,6 @@
var/datum/subsystem/icon_smooth/SSicon_smooth var/datum/controller/subsystem/icon_smooth/SSicon_smooth
/datum/subsystem/icon_smooth /datum/controller/subsystem/icon_smooth
name = "Icon Smoothing" name = "Icon Smoothing"
init_order = -5 init_order = -5
wait = 1 wait = 1
@@ -9,10 +9,10 @@ var/datum/subsystem/icon_smooth/SSicon_smooth
var/list/smooth_queue = list() var/list/smooth_queue = list()
/datum/subsystem/icon_smooth/New() /datum/controller/subsystem/icon_smooth/New()
NEW_SS_GLOBAL(SSicon_smooth) NEW_SS_GLOBAL(SSicon_smooth)
/datum/subsystem/icon_smooth/fire() /datum/controller/subsystem/icon_smooth/fire()
while(smooth_queue.len) while(smooth_queue.len)
var/atom/A = smooth_queue[smooth_queue.len] var/atom/A = smooth_queue[smooth_queue.len]
smooth_queue.len-- smooth_queue.len--
@@ -22,7 +22,7 @@ var/datum/subsystem/icon_smooth/SSicon_smooth
if (!smooth_queue.len) if (!smooth_queue.len)
can_fire = 0 can_fire = 0
/datum/subsystem/icon_smooth/Initialize() /datum/controller/subsystem/icon_smooth/Initialize()
smooth_zlevel(1,TRUE) smooth_zlevel(1,TRUE)
smooth_zlevel(2,TRUE) smooth_zlevel(2,TRUE)
var/queue = smooth_queue var/queue = smooth_queue

View File

@@ -1,6 +1,6 @@
var/datum/subsystem/ipintel/SSipintel var/datum/controller/subsystem/ipintel/SSipintel
/datum/subsystem/ipintel /datum/controller/subsystem/ipintel
name = "XKeyScore" name = "XKeyScore"
init_order = -10 init_order = -10
flags = SS_NO_FIRE flags = SS_NO_FIRE
@@ -10,10 +10,10 @@ var/datum/subsystem/ipintel/SSipintel
var/list/cache = list() var/list/cache = list()
/datum/subsystem/ipintel/New() /datum/controller/subsystem/ipintel/New()
NEW_SS_GLOBAL(SSipintel) NEW_SS_GLOBAL(SSipintel)
/datum/subsystem/ipintel/Initialize(timeofday, zlevel) /datum/controller/subsystem/ipintel/Initialize(timeofday, zlevel)
enabled = 1 enabled = 1
. = ..() . = ..()

View File

@@ -1,6 +1,6 @@
var/datum/subsystem/job/SSjob var/datum/controller/subsystem/job/SSjob
/datum/subsystem/job /datum/controller/subsystem/job
name = "Jobs" name = "Jobs"
init_order = 14 init_order = 14
flags = SS_NO_FIRE flags = SS_NO_FIRE
@@ -12,11 +12,11 @@ var/datum/subsystem/job/SSjob
var/list/job_debug = list() //Debug info var/list/job_debug = list() //Debug info
var/initial_players_to_assign = 0 //used for checking against population caps var/initial_players_to_assign = 0 //used for checking against population caps
/datum/subsystem/job/New() /datum/controller/subsystem/job/New()
NEW_SS_GLOBAL(SSjob) NEW_SS_GLOBAL(SSjob)
/datum/subsystem/job/Initialize(timeofday) /datum/controller/subsystem/job/Initialize(timeofday)
if(!occupations.len) if(!occupations.len)
SetupOccupations() SetupOccupations()
if(config.load_jobs_from_txt) if(config.load_jobs_from_txt)
@@ -24,7 +24,7 @@ var/datum/subsystem/job/SSjob
..() ..()
/datum/subsystem/job/proc/SetupOccupations(faction = "Station") /datum/controller/subsystem/job/proc/SetupOccupations(faction = "Station")
occupations = list() occupations = list()
var/list/all_jobs = subtypesof(/datum/job) var/list/all_jobs = subtypesof(/datum/job)
if(!all_jobs.len) if(!all_jobs.len)
@@ -49,25 +49,25 @@ var/datum/subsystem/job/SSjob
return 1 return 1
/datum/subsystem/job/proc/Debug(text) /datum/controller/subsystem/job/proc/Debug(text)
if(!Debug2) if(!Debug2)
return 0 return 0
job_debug.Add(text) job_debug.Add(text)
return 1 return 1
/datum/subsystem/job/proc/GetJob(rank) /datum/controller/subsystem/job/proc/GetJob(rank)
if(!occupations.len) if(!occupations.len)
SetupOccupations() SetupOccupations()
return name_occupations[rank] return name_occupations[rank]
/datum/subsystem/job/proc/GetJobType(jobtype) /datum/controller/subsystem/job/proc/GetJobType(jobtype)
if(!occupations.len) if(!occupations.len)
SetupOccupations() SetupOccupations()
return type_occupations[jobtype] return type_occupations[jobtype]
/datum/subsystem/job/proc/AssignRole(mob/new_player/player, rank, latejoin=0) /datum/controller/subsystem/job/proc/AssignRole(mob/new_player/player, rank, latejoin=0)
Debug("Running AR, Player: [player], Rank: [rank], LJ: [latejoin]") Debug("Running AR, Player: [player], Rank: [rank], LJ: [latejoin]")
if(player && player.mind && rank) if(player && player.mind && rank)
var/datum/job/job = GetJob(rank) var/datum/job/job = GetJob(rank)
@@ -89,7 +89,7 @@ var/datum/subsystem/job/SSjob
return 0 return 0
/datum/subsystem/job/proc/FindOccupationCandidates(datum/job/job, level, flag) /datum/controller/subsystem/job/proc/FindOccupationCandidates(datum/job/job, level, flag)
Debug("Running FOC, Job: [job], Level: [level], Flag: [flag]") Debug("Running FOC, Job: [job], Level: [level], Flag: [flag]")
var/list/candidates = list() var/list/candidates = list()
for(var/mob/new_player/player in unassigned) for(var/mob/new_player/player in unassigned)
@@ -113,7 +113,7 @@ var/datum/subsystem/job/SSjob
candidates += player candidates += player
return candidates return candidates
/datum/subsystem/job/proc/GiveRandomJob(mob/new_player/player) /datum/controller/subsystem/job/proc/GiveRandomJob(mob/new_player/player)
Debug("GRJ Giving random job, Player: [player]") Debug("GRJ Giving random job, Player: [player]")
for(var/datum/job/job in shuffle(occupations)) for(var/datum/job/job in shuffle(occupations))
if(!job) if(!job)
@@ -148,7 +148,7 @@ var/datum/subsystem/job/SSjob
unassigned -= player unassigned -= player
break break
/datum/subsystem/job/proc/ResetOccupations() /datum/controller/subsystem/job/proc/ResetOccupations()
for(var/mob/new_player/player in player_list) for(var/mob/new_player/player in player_list)
if((player) && (player.mind)) if((player) && (player.mind))
player.mind.assigned_role = null player.mind.assigned_role = null
@@ -161,7 +161,7 @@ var/datum/subsystem/job/SSjob
//This proc is called before the level loop of DivideOccupations() and will try to select a head, ignoring ALL non-head preferences for every level until //This proc is called before the level loop of DivideOccupations() and will try to select a head, ignoring ALL non-head preferences for every level until
//it locates a head or runs out of levels to check //it locates a head or runs out of levels to check
//This is basically to ensure that there's atleast a few heads in the round //This is basically to ensure that there's atleast a few heads in the round
/datum/subsystem/job/proc/FillHeadPosition() /datum/controller/subsystem/job/proc/FillHeadPosition()
for(var/level = 1 to 3) for(var/level = 1 to 3)
for(var/command_position in command_positions) for(var/command_position in command_positions)
var/datum/job/job = GetJob(command_position) var/datum/job/job = GetJob(command_position)
@@ -180,7 +180,7 @@ var/datum/subsystem/job/SSjob
//This proc is called at the start of the level loop of DivideOccupations() and will cause head jobs to be checked before any other jobs of the same level //This proc is called at the start of the level loop of DivideOccupations() and will cause head jobs to be checked before any other jobs of the same level
//This is also to ensure we get as many heads as possible //This is also to ensure we get as many heads as possible
/datum/subsystem/job/proc/CheckHeadPositions(level) /datum/controller/subsystem/job/proc/CheckHeadPositions(level)
for(var/command_position in command_positions) for(var/command_position in command_positions)
var/datum/job/job = GetJob(command_position) var/datum/job/job = GetJob(command_position)
if(!job) if(!job)
@@ -195,7 +195,7 @@ var/datum/subsystem/job/SSjob
return return
/datum/subsystem/job/proc/FillAIPosition() /datum/controller/subsystem/job/proc/FillAIPosition()
var/ai_selected = 0 var/ai_selected = 0
var/datum/job/job = GetJob("AI") var/datum/job/job = GetJob("AI")
if(!job) if(!job)
@@ -218,7 +218,7 @@ var/datum/subsystem/job/SSjob
* fills var "assigned_role" for all ready players. * fills var "assigned_role" for all ready players.
* This proc must not have any side effect besides of modifying "assigned_role". * This proc must not have any side effect besides of modifying "assigned_role".
**/ **/
/datum/subsystem/job/proc/DivideOccupations() /datum/controller/subsystem/job/proc/DivideOccupations()
//Setup new player list and get the jobs list //Setup new player list and get the jobs list
Debug("Running DO") Debug("Running DO")
@@ -360,7 +360,7 @@ var/datum/subsystem/job/SSjob
return 1 return 1
//Gives the player the stuff he should have with his rank //Gives the player the stuff he should have with his rank
/datum/subsystem/job/proc/EquipRank(mob/M, rank, joined_late=0) /datum/controller/subsystem/job/proc/EquipRank(mob/M, rank, joined_late=0)
var/mob/new_player/N var/mob/new_player/N
var/mob/living/H var/mob/living/H
if(!joined_late) if(!joined_late)
@@ -428,7 +428,7 @@ var/datum/subsystem/job/SSjob
return H return H
/datum/subsystem/job/proc/setup_officer_positions() /datum/controller/subsystem/job/proc/setup_officer_positions()
var/datum/job/J = SSjob.GetJob("Security Officer") var/datum/job/J = SSjob.GetJob("Security Officer")
if(!J) if(!J)
throw EXCEPTION("setup_officer_positions(): Security officer job is missing") throw EXCEPTION("setup_officer_positions(): Security officer job is missing")
@@ -453,7 +453,7 @@ var/datum/subsystem/job/SSjob
break break
/datum/subsystem/job/proc/LoadJobs() /datum/controller/subsystem/job/proc/LoadJobs()
var/jobstext = return_file_text("config/jobs.txt") var/jobstext = return_file_text("config/jobs.txt")
for(var/datum/job/J in occupations) for(var/datum/job/J in occupations)
var/regex/jobs = new("[J.title]=(-1|\\d+),(-1|\\d+)") var/regex/jobs = new("[J.title]=(-1|\\d+),(-1|\\d+)")
@@ -461,7 +461,7 @@ var/datum/subsystem/job/SSjob
J.total_positions = text2num(jobs.group[1]) J.total_positions = text2num(jobs.group[1])
J.spawn_positions = text2num(jobs.group[2]) J.spawn_positions = text2num(jobs.group[2])
/datum/subsystem/job/proc/HandleFeedbackGathering() /datum/controller/subsystem/job/proc/HandleFeedbackGathering()
for(var/datum/job/job in occupations) for(var/datum/job/job in occupations)
var/tmp_str = "|[job.title]|" var/tmp_str = "|[job.title]|"
@@ -491,14 +491,14 @@ var/datum/subsystem/job/SSjob
tmp_str += "HIGH=[level1]|MEDIUM=[level2]|LOW=[level3]|NEVER=[level4]|BANNED=[level5]|YOUNG=[level6]|-" tmp_str += "HIGH=[level1]|MEDIUM=[level2]|LOW=[level3]|NEVER=[level4]|BANNED=[level5]|YOUNG=[level6]|-"
feedback_add_details("job_preferences",tmp_str) feedback_add_details("job_preferences",tmp_str)
/datum/subsystem/job/proc/PopcapReached() /datum/controller/subsystem/job/proc/PopcapReached()
if(config.hard_popcap || config.extreme_popcap) if(config.hard_popcap || config.extreme_popcap)
var/relevent_cap = max(config.hard_popcap, config.extreme_popcap) var/relevent_cap = max(config.hard_popcap, config.extreme_popcap)
if((initial_players_to_assign - unassigned.len) >= relevent_cap) if((initial_players_to_assign - unassigned.len) >= relevent_cap)
return 1 return 1
return 0 return 0
/datum/subsystem/job/proc/RejectPlayer(mob/new_player/player) /datum/controller/subsystem/job/proc/RejectPlayer(mob/new_player/player)
if(player.mind && player.mind.special_role) if(player.mind && player.mind.special_role)
return return
if(PopcapReached()) if(PopcapReached())
@@ -508,14 +508,14 @@ var/datum/subsystem/job/SSjob
player.ready = 0 player.ready = 0
/datum/subsystem/job/Recover() /datum/controller/subsystem/job/Recover()
set waitfor = FALSE set waitfor = FALSE
var/oldjobs = SSjob.occupations var/oldjobs = SSjob.occupations
sleep(20) sleep(20)
for (var/datum/job/J in oldjobs) for (var/datum/job/J in oldjobs)
INVOKE_ASYNC(src, .proc/RecoverJob) INVOKE_ASYNC(src, .proc/RecoverJob)
/datum/subsystem/job/proc/RecoverJob(datum/job/J) /datum/controller/subsystem/job/proc/RecoverJob(datum/job/J)
var/datum/job/newjob = GetJob(J.title) var/datum/job/newjob = GetJob(J.title)
if (!istype(newjob)) if (!istype(newjob))
return return

View File

@@ -1,15 +1,15 @@
var/datum/controller/subsystem/lighting/SSlighting
#define STAGE_SOURCES 1 #define STAGE_SOURCES 1
#define STAGE_CORNERS 2 #define STAGE_CORNERS 2
#define STAGE_OVERLAYS 3 #define STAGE_OVERLAYS 3
var/datum/subsystem/lighting/SSlighting
var/list/lighting_update_lights = list() // List of lighting sources queued for update. var/list/lighting_update_lights = list() // List of lighting sources queued for update.
var/list/lighting_update_corners = list() // List of lighting corners queued for update. var/list/lighting_update_corners = list() // List of lighting corners queued for update.
var/list/lighting_update_overlays = list() // List of lighting overlays queued for update. var/list/lighting_update_overlays = list() // List of lighting overlays queued for update.
/datum/subsystem/lighting /datum/controller/subsystem/lighting
name = "Lighting" name = "Lighting"
wait = 1 wait = 1
init_order = 1 init_order = 1
@@ -24,15 +24,15 @@ var/list/lighting_update_overlays = list() // List of lighting overlays queued
var/resuming_stage = 0 var/resuming_stage = 0
/datum/subsystem/lighting/New() /datum/controller/subsystem/lighting/New()
NEW_SS_GLOBAL(SSlighting) NEW_SS_GLOBAL(SSlighting)
/datum/subsystem/lighting/stat_entry() /datum/controller/subsystem/lighting/stat_entry()
..("L:[lighting_update_lights.len]|C:[lighting_update_corners.len]|O:[lighting_update_overlays.len]") ..("L:[lighting_update_lights.len]|C:[lighting_update_corners.len]|O:[lighting_update_overlays.len]")
/datum/subsystem/lighting/Initialize(timeofday) /datum/controller/subsystem/lighting/Initialize(timeofday)
if (config.starlight) if (config.starlight)
for(var/area/A in world) for(var/area/A in world)
if (A.dynamic_lighting == DYNAMIC_LIGHTING_IFSTARLIGHT) if (A.dynamic_lighting == DYNAMIC_LIGHTING_IFSTARLIGHT)
@@ -43,8 +43,7 @@ var/list/lighting_update_overlays = list() // List of lighting overlays queued
..() ..()
/datum/controller/subsystem/lighting/fire(resumed=FALSE)
/datum/subsystem/lighting/fire(resumed=FALSE)
if (resuming_stage == 0 || !resumed) if (resuming_stage == 0 || !resumed)
currentrun_lights = lighting_update_lights currentrun_lights = lighting_update_lights
lighting_update_lights = list() lighting_update_lights = list()
@@ -106,11 +105,11 @@ var/list/lighting_update_overlays = list() // List of lighting overlays queued
resuming_stage = 0 resuming_stage = 0
/datum/subsystem/lighting/Recover() /datum/controller/subsystem/lighting/Recover()
initialized = SSlighting.initialized initialized = SSlighting.initialized
..() ..()
#undef STAGE_SOURCES #undef STAGE_SOURCES
#undef STAGE_CORNERS #undef STAGE_CORNERS
#undef STAGE_OVERLAYS #undef STAGE_OVERLAYS

View File

@@ -1,6 +1,6 @@
var/datum/subsystem/machines/SSmachine var/datum/controller/subsystem/machines/SSmachine
/datum/subsystem/machines /datum/controller/subsystem/machines
name = "Machines" name = "Machines"
init_order = 9 init_order = 9
flags = SS_KEEP_TIMING flags = SS_KEEP_TIMING
@@ -9,12 +9,12 @@ var/datum/subsystem/machines/SSmachine
var/list/powernets = list() var/list/powernets = list()
/datum/subsystem/machines/Initialize() /datum/controller/subsystem/machines/Initialize()
makepowernets() makepowernets()
fire() fire()
..() ..()
/datum/subsystem/machines/proc/makepowernets() /datum/controller/subsystem/machines/proc/makepowernets()
for(var/datum/powernet/PN in powernets) for(var/datum/powernet/PN in powernets)
qdel(PN) qdel(PN)
powernets.Cut() powernets.Cut()
@@ -25,15 +25,15 @@ var/datum/subsystem/machines/SSmachine
NewPN.add_cable(PC) NewPN.add_cable(PC)
propagate_network(PC,PC.powernet) propagate_network(PC,PC.powernet)
/datum/subsystem/machines/New() /datum/controller/subsystem/machines/New()
NEW_SS_GLOBAL(SSmachine) NEW_SS_GLOBAL(SSmachine)
/datum/subsystem/machines/stat_entry() /datum/controller/subsystem/machines/stat_entry()
..("M:[processing.len]|PN:[powernets.len]") ..("M:[processing.len]|PN:[powernets.len]")
/datum/subsystem/machines/fire(resumed = 0) /datum/controller/subsystem/machines/fire(resumed = 0)
if (!resumed) if (!resumed)
for(var/datum/powernet/Powernet in powernets) for(var/datum/powernet/Powernet in powernets)
Powernet.reset() //reset the power state. Powernet.reset() //reset the power state.
@@ -56,7 +56,7 @@ var/datum/subsystem/machines/SSmachine
if (MC_TICK_CHECK) if (MC_TICK_CHECK)
return return
/datum/subsystem/machines/proc/setup_template_powernets(list/cables) /datum/controller/subsystem/machines/proc/setup_template_powernets(list/cables)
for(var/A in cables) for(var/A in cables)
var/obj/structure/cable/PC = A var/obj/structure/cable/PC = A
if(!PC.powernet) if(!PC.powernet)
@@ -64,7 +64,7 @@ var/datum/subsystem/machines/SSmachine
NewPN.add_cable(PC) NewPN.add_cable(PC)
propagate_network(PC,PC.powernet) propagate_network(PC,PC.powernet)
/datum/subsystem/machines/Recover() /datum/controller/subsystem/machines/Recover()
if (istype(SSmachine.processing)) if (istype(SSmachine.processing))
processing = SSmachine.processing processing = SSmachine.processing
if (istype(SSmachine.powernets)) if (istype(SSmachine.powernets))

View File

@@ -1,6 +1,6 @@
var/datum/subsystem/mapping/SSmapping var/datum/controller/subsystem/mapping/SSmapping
/datum/subsystem/mapping /datum/controller/subsystem/mapping
name = "Mapping" name = "Mapping"
init_order = 12 init_order = 12
flags = SS_NO_FIRE flags = SS_NO_FIRE
@@ -21,7 +21,7 @@ var/datum/subsystem/mapping/SSmapping
var/list/shuttle_templates = list() var/list/shuttle_templates = list()
var/list/shelter_templates = list() var/list/shelter_templates = list()
/datum/subsystem/mapping/New() /datum/controller/subsystem/mapping/New()
NEW_SS_GLOBAL(SSmapping) NEW_SS_GLOBAL(SSmapping)
if(!previous_map_config) if(!previous_map_config)
previous_map_config = new("data/previous_map.json", delete_after = TRUE) previous_map_config = new("data/previous_map.json", delete_after = TRUE)
@@ -32,7 +32,7 @@ var/datum/subsystem/mapping/SSmapping
return ..() return ..()
/datum/subsystem/mapping/Initialize(timeofday) /datum/controller/subsystem/mapping/Initialize(timeofday)
if(config.defaulted) if(config.defaulted)
world << "<span class='boldannounce'>Unable to load next map config, defaulting to Box Station</span>" world << "<span class='boldannounce'>Unable to load next map config, defaulting to Box Station</span>"
loadWorld() loadWorld()
@@ -67,15 +67,15 @@ var/datum/subsystem/mapping/SSmapping
Used by the AI doomsday and the self destruct nuke. Used by the AI doomsday and the self destruct nuke.
*/ */
/datum/subsystem/mapping/proc/add_nuke_threat(datum/nuke) /datum/controller/subsystem/mapping/proc/add_nuke_threat(datum/nuke)
nuke_threats[nuke] = TRUE nuke_threats[nuke] = TRUE
check_nuke_threats() check_nuke_threats()
/datum/subsystem/mapping/proc/remove_nuke_threat(datum/nuke) /datum/controller/subsystem/mapping/proc/remove_nuke_threat(datum/nuke)
nuke_threats -= nuke nuke_threats -= nuke
check_nuke_threats() check_nuke_threats()
/datum/subsystem/mapping/proc/check_nuke_threats() /datum/controller/subsystem/mapping/proc/check_nuke_threats()
for(var/datum/d in nuke_threats) for(var/datum/d in nuke_threats)
if(!istype(d) || QDELETED(d)) if(!istype(d) || QDELETED(d))
nuke_threats -= d nuke_threats -= d
@@ -84,7 +84,7 @@ var/datum/subsystem/mapping/SSmapping
var/turf/open/floor/circuit/C = N var/turf/open/floor/circuit/C = N
C.update_icon() C.update_icon()
/datum/subsystem/mapping/Recover() /datum/controller/subsystem/mapping/Recover()
flags |= SS_NO_INIT flags |= SS_NO_INIT
map_templates = SSmapping.map_templates map_templates = SSmapping.map_templates
ruins_templates = SSmapping.ruins_templates ruins_templates = SSmapping.ruins_templates
@@ -97,7 +97,7 @@ var/datum/subsystem/mapping/SSmapping
config = SSmapping.config config = SSmapping.config
next_map_config = SSmapping.next_map_config next_map_config = SSmapping.next_map_config
/datum/subsystem/mapping/proc/TryLoadZ(filename, errorList, forceLevel, last) /datum/controller/subsystem/mapping/proc/TryLoadZ(filename, errorList, forceLevel, last)
var/static/dmm_suite/loader var/static/dmm_suite/loader
if(!loader) if(!loader)
loader = new loader = new
@@ -106,7 +106,7 @@ var/datum/subsystem/mapping/SSmapping
if(last) if(last)
QDEL_NULL(loader) QDEL_NULL(loader)
/datum/subsystem/mapping/proc/CreateSpace() /datum/controller/subsystem/mapping/proc/CreateSpace()
++world.maxz ++world.maxz
CHECK_TICK CHECK_TICK
for(var/T in block(locate(1, 1, world.maxz), locate(world.maxx, world.maxy, world.maxz))) for(var/T in block(locate(1, 1, world.maxz), locate(world.maxx, world.maxy, world.maxz)))
@@ -114,7 +114,7 @@ var/datum/subsystem/mapping/SSmapping
new /turf/open/space(T) new /turf/open/space(T)
#define INIT_ANNOUNCE(X) world << "<span class='boldannounce'>[X]</span>"; log_world(X) #define INIT_ANNOUNCE(X) world << "<span class='boldannounce'>[X]</span>"; log_world(X)
/datum/subsystem/mapping/proc/loadWorld() /datum/controller/subsystem/mapping/proc/loadWorld()
//if any of these fail, something has gone horribly, HORRIBLY, wrong //if any of these fail, something has gone horribly, HORRIBLY, wrong
var/list/FailedZs = list() var/list/FailedZs = list()
@@ -138,7 +138,7 @@ var/datum/subsystem/mapping/SSmapping
INIT_ANNOUNCE(msg) INIT_ANNOUNCE(msg)
#undef INIT_ANNOUNCE #undef INIT_ANNOUNCE
/datum/subsystem/mapping/proc/maprotate() /datum/controller/subsystem/mapping/proc/maprotate()
var/players = clients.len var/players = clients.len
var/list/mapvotes = list() var/list/mapvotes = list()
//count votes //count votes
@@ -182,7 +182,7 @@ var/datum/subsystem/mapping/SSmapping
if (. && VM.map_name != config.map_name) if (. && VM.map_name != config.map_name)
world << "<span class='boldannounce'>Map rotation has chosen [VM.map_name] for next round!</span>" world << "<span class='boldannounce'>Map rotation has chosen [VM.map_name] for next round!</span>"
/datum/subsystem/mapping/proc/changemap(var/datum/map_config/VM) /datum/controller/subsystem/mapping/proc/changemap(var/datum/map_config/VM)
if(!VM.MakeNextMap()) if(!VM.MakeNextMap())
next_map_config = new(default_to_box = TRUE) next_map_config = new(default_to_box = TRUE)
message_admins("Failed to set new map with next_map.json for [VM.map_name]! Using default as backup!") message_admins("Failed to set new map with next_map.json for [VM.map_name]! Using default as backup!")
@@ -191,11 +191,11 @@ var/datum/subsystem/mapping/SSmapping
next_map_config = VM next_map_config = VM
return TRUE return TRUE
/datum/subsystem/mapping/Shutdown() /datum/controller/subsystem/mapping/Shutdown()
if(config) if(config)
config.MakePreviousMap() config.MakePreviousMap()
/datum/subsystem/mapping/proc/preloadTemplates(path = "_maps/templates/") //see master controller setup /datum/controller/subsystem/mapping/proc/preloadTemplates(path = "_maps/templates/") //see master controller setup
var/list/filelist = flist(path) var/list/filelist = flist(path)
for(var/map in filelist) for(var/map in filelist)
var/datum/map_template/T = new(path = "[path][map]", rename = "[map]") var/datum/map_template/T = new(path = "[path][map]", rename = "[map]")
@@ -205,7 +205,7 @@ var/datum/subsystem/mapping/SSmapping
preloadShuttleTemplates() preloadShuttleTemplates()
preloadShelterTemplates() preloadShelterTemplates()
/datum/subsystem/mapping/proc/preloadRuinTemplates() /datum/controller/subsystem/mapping/proc/preloadRuinTemplates()
// Still supporting bans by filename // Still supporting bans by filename
var/list/banned = generateMapList("config/lavaruinblacklist.txt") var/list/banned = generateMapList("config/lavaruinblacklist.txt")
banned += generateMapList("config/spaceruinblacklist.txt") banned += generateMapList("config/spaceruinblacklist.txt")
@@ -228,7 +228,7 @@ var/datum/subsystem/mapping/SSmapping
else if(istype(R, /datum/map_template/ruin/space)) else if(istype(R, /datum/map_template/ruin/space))
space_ruins_templates[R.name] = R space_ruins_templates[R.name] = R
/datum/subsystem/mapping/proc/preloadShuttleTemplates() /datum/controller/subsystem/mapping/proc/preloadShuttleTemplates()
var/list/unbuyable = generateMapList("config/unbuyableshuttles.txt") var/list/unbuyable = generateMapList("config/unbuyableshuttles.txt")
for(var/item in subtypesof(/datum/map_template/shuttle)) for(var/item in subtypesof(/datum/map_template/shuttle))
@@ -243,7 +243,7 @@ var/datum/subsystem/mapping/SSmapping
shuttle_templates[S.shuttle_id] = S shuttle_templates[S.shuttle_id] = S
map_templates[S.shuttle_id] = S map_templates[S.shuttle_id] = S
/datum/subsystem/mapping/proc/preloadShelterTemplates() /datum/controller/subsystem/mapping/proc/preloadShelterTemplates()
for(var/item in subtypesof(/datum/map_template/shelter)) for(var/item in subtypesof(/datum/map_template/shelter))
var/datum/map_template/shelter/shelter_type = item var/datum/map_template/shelter/shelter_type = item
if(!(initial(shelter_type.mappath))) if(!(initial(shelter_type.mappath)))

View File

@@ -1,6 +1,6 @@
var/datum/subsystem/minimap/SSminimap var/datum/controller/subsystem/minimap/SSminimap
/datum/subsystem/minimap /datum/controller/subsystem/minimap
name = "Minimap" name = "Minimap"
init_order = -2 init_order = -2
flags = SS_NO_FIRE flags = SS_NO_FIRE
@@ -9,10 +9,10 @@ var/datum/subsystem/minimap/SSminimap
var/list/z_levels = list(ZLEVEL_STATION) var/list/z_levels = list(ZLEVEL_STATION)
/datum/subsystem/minimap/New() /datum/controller/subsystem/minimap/New()
NEW_SS_GLOBAL(SSminimap) NEW_SS_GLOBAL(SSminimap)
/datum/subsystem/minimap/Initialize(timeofday) /datum/controller/subsystem/minimap/Initialize(timeofday)
var/hash = md5(SSmapping.config.GetFullMapPath()) var/hash = md5(SSmapping.config.GetFullMapPath())
if(config.generate_minimaps) if(config.generate_minimaps)
if(hash == trim(file2text(hash_path()))) if(hash == trim(file2text(hash_path())))
@@ -41,7 +41,7 @@ var/datum/subsystem/minimap/SSminimap
register_asset("minimap_[z].png", fcopy_rsc(map_path(z,fileloc))) register_asset("minimap_[z].png", fcopy_rsc(map_path(z,fileloc)))
..() ..()
/datum/subsystem/minimap/proc/check_files(backup) // If the backup argument is true, looks in the icons folder. If false looks in the data folder. /datum/controller/subsystem/minimap/proc/check_files(backup) // If the backup argument is true, looks in the icons folder. If false looks in the data folder.
for(var/z in z_levels) for(var/z in z_levels)
if(!fexists(file(map_path(z,backup)))) //Let's make sure we have a file for this map if(!fexists(file(map_path(z,backup)))) //Let's make sure we have a file for this map
if(backup) if(backup)
@@ -50,23 +50,23 @@ var/datum/subsystem/minimap/SSminimap
return TRUE return TRUE
/datum/subsystem/minimap/proc/hash_path(backup) /datum/controller/subsystem/minimap/proc/hash_path(backup)
if(backup) if(backup)
return "icons/minimaps/[SSmapping.config.map_name].md5" return "icons/minimaps/[SSmapping.config.map_name].md5"
else else
return "data/minimaps/[SSmapping.config.map_name].md5" return "data/minimaps/[SSmapping.config.map_name].md5"
/datum/subsystem/minimap/proc/map_path(z,backup) /datum/controller/subsystem/minimap/proc/map_path(z,backup)
if(backup) if(backup)
return "icons/minimaps/[SSmapping.config.map_name]_[z].png" return "icons/minimaps/[SSmapping.config.map_name]_[z].png"
else else
return "data/minimaps/[SSmapping.config.map_name]_[z].png" return "data/minimaps/[SSmapping.config.map_name]_[z].png"
/datum/subsystem/minimap/proc/send(client/client) /datum/controller/subsystem/minimap/proc/send(client/client)
for(var/z in z_levels) for(var/z in z_levels)
send_asset(client, "minimap_[z].png") send_asset(client, "minimap_[z].png")
/datum/subsystem/minimap/proc/generate(z = 1, x1 = 1, y1 = 1, x2 = world.maxx, y2 = world.maxy) /datum/controller/subsystem/minimap/proc/generate(z = 1, x1 = 1, y1 = 1, x2 = world.maxx, y2 = world.maxy)
// Load the background. // Load the background.
var/icon/minimap = new /icon('icons/minimap.dmi') var/icon/minimap = new /icon('icons/minimap.dmi')
// Scale it up to our target size. // Scale it up to our target size.
@@ -81,7 +81,7 @@ var/datum/subsystem/minimap/SSminimap
final.Insert(minimap, "", SOUTH, 1, 0) final.Insert(minimap, "", SOUTH, 1, 0)
fcopy(final, map_path(z)) fcopy(final, map_path(z))
/datum/subsystem/minimap/proc/generate_tile(turf/tile, icon/minimap) /datum/controller/subsystem/minimap/proc/generate_tile(turf/tile, icon/minimap)
var/icon/tile_icon var/icon/tile_icon
var/obj/obj var/obj/obj
var/list/obj_icons var/list/obj_icons

View File

@@ -1,6 +1,6 @@
var/datum/subsystem/mobs/SSmob var/datum/controller/subsystem/mobs/SSmob
/datum/subsystem/mobs /datum/controller/subsystem/mobs
name = "Mobs" name = "Mobs"
init_order = 4 init_order = 4
priority = 100 priority = 100
@@ -8,15 +8,15 @@ var/datum/subsystem/mobs/SSmob
var/list/currentrun = list() var/list/currentrun = list()
/datum/subsystem/mobs/New() /datum/controller/subsystem/mobs/New()
NEW_SS_GLOBAL(SSmob) NEW_SS_GLOBAL(SSmob)
/datum/subsystem/mobs/stat_entry() /datum/controller/subsystem/mobs/stat_entry()
..("P:[mob_list.len]") ..("P:[mob_list.len]")
/datum/subsystem/mobs/fire(resumed = 0) /datum/controller/subsystem/mobs/fire(resumed = 0)
var/seconds = wait * 0.1 var/seconds = wait * 0.1
if (!resumed) if (!resumed)
src.currentrun = mob_list.Copy() src.currentrun = mob_list.Copy()

View File

@@ -1,6 +1,6 @@
var/datum/subsystem/npcpool/SSnpc var/datum/controller/subsystem/npcpool/SSnpc
/datum/subsystem/npcpool /datum/controller/subsystem/npcpool
name = "NPC Pool" name = "NPC Pool"
init_order = 17 init_order = 17
flags = SS_POST_FIRE_TIMING|SS_NO_INIT|SS_NO_TICK_CHECK flags = SS_POST_FIRE_TIMING|SS_NO_INIT|SS_NO_TICK_CHECK
@@ -14,18 +14,18 @@ var/datum/subsystem/npcpool/SSnpc
var/list/botPool_l = list() //list of all npcs using the pool var/list/botPool_l = list() //list of all npcs using the pool
var/list/botPool_l_non = list() //list of all non SNPC mobs using the pool var/list/botPool_l_non = list() //list of all non SNPC mobs using the pool
/datum/subsystem/npcpool/proc/insertBot(toInsert) /datum/controller/subsystem/npcpool/proc/insertBot(toInsert)
if(istype(toInsert,/mob/living/carbon/human/interactive)) if(istype(toInsert,/mob/living/carbon/human/interactive))
botPool_l |= toInsert botPool_l |= toInsert
/datum/subsystem/npcpool/New() /datum/controller/subsystem/npcpool/New()
NEW_SS_GLOBAL(SSnpc) NEW_SS_GLOBAL(SSnpc)
/datum/subsystem/npcpool/stat_entry() /datum/controller/subsystem/npcpool/stat_entry()
..("T:[botPool_l.len + botPool_l_non.len]|D:[needsDelegate.len]|A:[needsAssistant.len + needsHelp_non.len]|U:[canBeUsed.len + canBeUsed_non.len]") ..("T:[botPool_l.len + botPool_l_non.len]|D:[needsDelegate.len]|A:[needsAssistant.len + needsHelp_non.len]|U:[canBeUsed.len + canBeUsed_non.len]")
/datum/subsystem/npcpool/proc/cleanNull() /datum/controller/subsystem/npcpool/proc/cleanNull()
//cleanup nulled bots //cleanup nulled bots
listclearnulls(botPool_l) listclearnulls(botPool_l)
listclearnulls(needsDelegate) listclearnulls(needsDelegate)
@@ -33,7 +33,7 @@ var/datum/subsystem/npcpool/SSnpc
listclearnulls(needsAssistant) listclearnulls(needsAssistant)
/datum/subsystem/npcpool/fire() /datum/controller/subsystem/npcpool/fire()
//bot delegation and coordination systems //bot delegation and coordination systems
//General checklist/Tasks for delegating a task or coordinating it (for SNPCs) //General checklist/Tasks for delegating a task or coordinating it (for SNPCs)
// 1. Bot proximity to task target: if too far, delegate, if close, coordinate // 1. Bot proximity to task target: if too far, delegate, if close, coordinate
@@ -120,7 +120,7 @@ var/datum/subsystem/npcpool/SSnpc
candidate.update_icons() candidate.update_icons()
npcCount++ npcCount++
/datum/subsystem/npcpool/Recover() /datum/controller/subsystem/npcpool/Recover()
if (istype(SSnpc.botPool_l)) if (istype(SSnpc.botPool_l))
botPool_l = SSnpc.botPool_l botPool_l = SSnpc.botPool_l
if (istype(SSnpc.botPool_l_non)) if (istype(SSnpc.botPool_l_non))

View File

@@ -1,6 +1,6 @@
var/datum/subsystem/orbit/SSorbit var/datum/controller/subsystem/orbit/SSorbit
/datum/subsystem/orbit /datum/controller/subsystem/orbit
name = "Orbits" name = "Orbits"
priority = 35 priority = 35
wait = 2 wait = 2
@@ -9,15 +9,15 @@ var/datum/subsystem/orbit/SSorbit
var/list/currentrun = list() var/list/currentrun = list()
var/list/processing = list() var/list/processing = list()
/datum/subsystem/orbit/New() /datum/controller/subsystem/orbit/New()
NEW_SS_GLOBAL(SSorbit) NEW_SS_GLOBAL(SSorbit)
/datum/subsystem/orbit/stat_entry() /datum/controller/subsystem/orbit/stat_entry()
..("P:[processing.len]") ..("P:[processing.len]")
/datum/subsystem/orbit/fire(resumed = 0) /datum/controller/subsystem/orbit/fire(resumed = 0)
if (!resumed) if (!resumed)
src.currentrun = processing.Copy() src.currentrun = processing.Copy()

View File

@@ -1,7 +1,7 @@
var/datum/subsystem/pai/SSpai var/datum/controller/subsystem/pai/SSpai
var/list/obj/item/device/paicard/pai_card_list = list() var/list/obj/item/device/paicard/pai_card_list = list()
/datum/subsystem/pai /datum/controller/subsystem/pai
name = "pAI" name = "pAI"
flags = SS_NO_INIT|SS_NO_FIRE flags = SS_NO_INIT|SS_NO_FIRE
@@ -10,10 +10,10 @@ var/list/obj/item/device/paicard/pai_card_list = list()
var/ghost_spam = FALSE var/ghost_spam = FALSE
var/spam_delay = 100 var/spam_delay = 100
/datum/subsystem/pai/New() /datum/controller/subsystem/pai/New()
NEW_SS_GLOBAL(SSpai) NEW_SS_GLOBAL(SSpai)
/datum/subsystem/pai/Topic(href, href_list[]) /datum/controller/subsystem/pai/Topic(href, href_list[])
if(href_list["download"]) if(href_list["download"])
var/datum/paiCandidate/candidate = locate(href_list["candidate"]) var/datum/paiCandidate/candidate = locate(href_list["candidate"])
var/obj/item/device/paicard/card = locate(href_list["device"]) var/obj/item/device/paicard/card = locate(href_list["device"])
@@ -84,7 +84,7 @@ var/list/obj/item/device/paicard/pai_card_list = list()
return return
recruitWindow(usr) recruitWindow(usr)
/datum/subsystem/pai/proc/recruitWindow(mob/M) /datum/controller/subsystem/pai/proc/recruitWindow(mob/M)
var/datum/paiCandidate/candidate var/datum/paiCandidate/candidate
for(var/datum/paiCandidate/c in candidates) for(var/datum/paiCandidate/c in candidates)
if(c.key == M.key) if(c.key == M.key)
@@ -135,10 +135,10 @@ var/list/obj/item/device/paicard/pai_card_list = list()
M << browse(dat, "window=paiRecruit") M << browse(dat, "window=paiRecruit")
/datum/subsystem/pai/proc/spam_again() /datum/controller/subsystem/pai/proc/spam_again()
ghost_spam = FALSE ghost_spam = FALSE
/datum/subsystem/pai/proc/check_ready(var/datum/paiCandidate/C) /datum/controller/subsystem/pai/proc/check_ready(var/datum/paiCandidate/C)
if(!C.ready) if(!C.ready)
return FALSE return FALSE
for(var/mob/dead/observer/O in player_list) for(var/mob/dead/observer/O in player_list)
@@ -146,7 +146,7 @@ var/list/obj/item/device/paicard/pai_card_list = list()
return C return C
return FALSE return FALSE
/datum/subsystem/pai/proc/findPAI(obj/item/device/paicard/p, mob/user) /datum/controller/subsystem/pai/proc/findPAI(obj/item/device/paicard/p, mob/user)
if(!ghost_spam) if(!ghost_spam)
ghost_spam = TRUE ghost_spam = TRUE
for(var/mob/dead/observer/G in player_list) for(var/mob/dead/observer/G in player_list)

View File

@@ -1,17 +1,17 @@
var/datum/subsystem/parallax/SSparallax var/datum/controller/subsystem/parallax/SSparallax
/datum/subsystem/parallax /datum/controller/subsystem/parallax
name = "Parallax" name = "Parallax"
wait = 2 wait = 2
flags = SS_POST_FIRE_TIMING | SS_FIRE_IN_LOBBY | SS_BACKGROUND | SS_NO_INIT flags = SS_POST_FIRE_TIMING | SS_FIRE_IN_LOBBY | SS_BACKGROUND | SS_NO_INIT
priority = 65 priority = 65
var/list/currentrun var/list/currentrun
/datum/subsystem/parallax/New() /datum/controller/subsystem/parallax/New()
NEW_SS_GLOBAL(SSparallax) NEW_SS_GLOBAL(SSparallax)
return ..() return ..()
/datum/subsystem/parallax/fire(resumed = 0) /datum/controller/subsystem/parallax/fire(resumed = 0)
if (!resumed) if (!resumed)
src.currentrun = clients.Copy() src.currentrun = clients.Copy()

View File

@@ -1,6 +1,6 @@
var/datum/subsystem/persistence/SSpersistence var/datum/controller/subsystem/persistence/SSpersistence
/datum/subsystem/persistence /datum/controller/subsystem/persistence
name = "Persistence" name = "Persistence"
init_order = -100 init_order = -100
flags = SS_NO_FIRE flags = SS_NO_FIRE
@@ -13,16 +13,16 @@ var/datum/subsystem/persistence/SSpersistence
var/list/saved_messages = list() var/list/saved_messages = list()
var/savefile/chisel_messages_sav var/savefile/chisel_messages_sav
/datum/subsystem/persistence/New() /datum/controller/subsystem/persistence/New()
NEW_SS_GLOBAL(SSpersistence) NEW_SS_GLOBAL(SSpersistence)
/datum/subsystem/persistence/Initialize() /datum/controller/subsystem/persistence/Initialize()
LoadSatchels() LoadSatchels()
LoadPoly() LoadPoly()
LoadChiselMessages() LoadChiselMessages()
..() ..()
/datum/subsystem/persistence/proc/LoadSatchels() /datum/controller/subsystem/persistence/proc/LoadSatchels()
secret_satchels = new /savefile("data/npc_saves/SecretSatchels.sav") secret_satchels = new /savefile("data/npc_saves/SecretSatchels.sav")
satchel_blacklist = typecacheof(list(/obj/item/stack/tile/plasteel, /obj/item/weapon/crowbar)) satchel_blacklist = typecacheof(list(/obj/item/stack/tile/plasteel, /obj/item/weapon/crowbar))
secret_satchels[SSmapping.config.map_name] >> old_secret_satchels secret_satchels[SSmapping.config.map_name] >> old_secret_satchels
@@ -44,7 +44,7 @@ var/datum/subsystem/persistence/SSpersistence
if(!isemptylist(free_satchels) && ((free_satchels.len + placed_satchels) >= (50 - expanded_old_satchels.len) * 0.1)) //up to six tiles, more than enough to kill anything that moves if(!isemptylist(free_satchels) && ((free_satchels.len + placed_satchels) >= (50 - expanded_old_satchels.len) * 0.1)) //up to six tiles, more than enough to kill anything that moves
break break
/datum/subsystem/persistence/proc/PlaceSecretSatchel(list/expanded_old_satchels) /datum/controller/subsystem/persistence/proc/PlaceSecretSatchel(list/expanded_old_satchels)
var/satchel_string var/satchel_string
if(expanded_old_satchels.len >= 20) //guards against low drop pools assuring that one player cannot reliably find his own gear. if(expanded_old_satchels.len >= 20) //guards against low drop pools assuring that one player cannot reliably find his own gear.
@@ -70,12 +70,12 @@ var/datum/subsystem/persistence/SSpersistence
new path(F) new path(F)
return 1 return 1
/datum/subsystem/persistence/proc/LoadPoly() /datum/controller/subsystem/persistence/proc/LoadPoly()
for(var/mob/living/simple_animal/parrot/Poly/P in living_mob_list) for(var/mob/living/simple_animal/parrot/Poly/P in living_mob_list)
twitterize(P.speech_buffer, "polytalk") twitterize(P.speech_buffer, "polytalk")
break //Who's been duping the bird?! break //Who's been duping the bird?!
/datum/subsystem/persistence/proc/LoadChiselMessages() /datum/controller/subsystem/persistence/proc/LoadChiselMessages()
chisel_messages_sav = new /savefile("data/npc_saves/ChiselMessages.sav") chisel_messages_sav = new /savefile("data/npc_saves/ChiselMessages.sav")
var/saved_json var/saved_json
chisel_messages_sav[SSmapping.config.map_name] >> saved_json chisel_messages_sav[SSmapping.config.map_name] >> saved_json
@@ -98,11 +98,11 @@ var/datum/subsystem/persistence/SSpersistence
qdel(M) qdel(M)
/datum/subsystem/persistence/proc/CollectData() /datum/controller/subsystem/persistence/proc/CollectData()
CollectChiselMessages() CollectChiselMessages()
CollectSecretSatchels() CollectSecretSatchels()
/datum/subsystem/persistence/proc/CollectSecretSatchels() /datum/controller/subsystem/persistence/proc/CollectSecretSatchels()
for(var/A in new_secret_satchels) for(var/A in new_secret_satchels)
var/obj/item/weapon/storage/backpack/satchel/flat/F = A var/obj/item/weapon/storage/backpack/satchel/flat/F = A
if(QDELETED(F) || F.z != ZLEVEL_STATION || F.invisibility != INVISIBILITY_MAXIMUM) if(QDELETED(F) || F.z != ZLEVEL_STATION || F.invisibility != INVISIBILITY_MAXIMUM)
@@ -120,11 +120,11 @@ var/datum/subsystem/persistence/SSpersistence
old_secret_satchels += "[F.x]|[F.y]|[pick(savable_obj)]#" old_secret_satchels += "[F.x]|[F.y]|[pick(savable_obj)]#"
secret_satchels[SSmapping.config.map_name] << old_secret_satchels secret_satchels[SSmapping.config.map_name] << old_secret_satchels
/datum/subsystem/persistence/proc/CollectChiselMessages() /datum/controller/subsystem/persistence/proc/CollectChiselMessages()
for(var/obj/structure/chisel_message/M in chisel_messages) for(var/obj/structure/chisel_message/M in chisel_messages)
saved_messages += list(M.pack()) saved_messages += list(M.pack())
chisel_messages_sav[SSmapping.config.map_name] << json_encode(saved_messages) chisel_messages_sav[SSmapping.config.map_name] << json_encode(saved_messages)
/datum/subsystem/persistence/proc/SaveChiselMessage(obj/structure/chisel_message/M) /datum/controller/subsystem/persistence/proc/SaveChiselMessage(obj/structure/chisel_message/M)
saved_messages += list(M.pack()) // dm eats one list. saved_messages += list(M.pack()) // dm eats one list.

View File

@@ -1,18 +1,18 @@
#define PING_BUFFER_TIME 25 #define PING_BUFFER_TIME 25
var/datum/subsystem/ping/SSping var/datum/controller/subsystem/ping/SSping
/datum/subsystem/ping /datum/controller/subsystem/ping
name = "Ping" name = "Ping"
wait = 6 wait = 6
flags = SS_NO_INIT|SS_POST_FIRE_TIMING|SS_FIRE_IN_LOBBY flags = SS_NO_INIT|SS_POST_FIRE_TIMING|SS_FIRE_IN_LOBBY
priority = 10 priority = 10
var/list/currentrun var/list/currentrun
/datum/subsystem/ping/New() /datum/controller/subsystem/ping/New()
NEW_SS_GLOBAL(SSping) NEW_SS_GLOBAL(SSping)
/datum/subsystem/ping/fire(resumed = FALSE) /datum/controller/subsystem/ping/fire(resumed = FALSE)
if (!resumed) if (!resumed)
src.currentrun = clients.Copy() src.currentrun = clients.Copy()

View File

@@ -1,10 +1,10 @@
//Fires five times every second. //Fires five times every second.
var/datum/subsystem/processing/fastprocess/SSfastprocess var/datum/controller/subsystem/processing/fastprocess/SSfastprocess
/datum/subsystem/processing/fastprocess /datum/controller/subsystem/processing/fastprocess
name = "Fast Processing" name = "Fast Processing"
wait = 2 wait = 2
stat_tag = "FP" stat_tag = "FP"
/datum/subsystem/processing/fastprocess/New() /datum/controller/subsystem/processing/fastprocess/New()
NEW_SS_GLOBAL(SSfastprocess) NEW_SS_GLOBAL(SSfastprocess)

View File

@@ -1,11 +1,11 @@
var/datum/subsystem/processing/flightpacks/SSflightpacks var/datum/controller/subsystem/processing/flightpacks/SSflightpacks
/datum/subsystem/processing/flightpacks /datum/controller/subsystem/processing/flightpacks
name = "Flightpack Movement" name = "Flightpack Movement"
priority = 30 priority = 30
wait = 2 wait = 2
stat_tag = "FM" stat_tag = "FM"
flags = SS_NO_INIT|SS_TICKER|SS_KEEP_TIMING flags = SS_NO_INIT|SS_TICKER|SS_KEEP_TIMING
/datum/subsystem/processing/flightpacks/New() /datum/controller/subsystem/processing/flightpacks/New()
NEW_SS_GLOBAL(SSflightpacks) NEW_SS_GLOBAL(SSflightpacks)

View File

@@ -1,5 +1,5 @@
var/datum/subsystem/objects/SSobj var/datum/controller/subsystem/objects/SSobj
/datum/subsystem/objects /datum/controller/subsystem/objects
name = "Objects" name = "Objects"
priority = 40 priority = 40
flags = SS_NO_INIT flags = SS_NO_INIT
@@ -7,12 +7,12 @@ var/datum/subsystem/objects/SSobj
var/list/processing = list() var/list/processing = list()
var/list/currentrun = list() var/list/currentrun = list()
/datum/subsystem/objects/New() /datum/controller/subsystem/objects/New()
NEW_SS_GLOBAL(SSobj) NEW_SS_GLOBAL(SSobj)
/datum/subsystem/objects/stat_entry() /datum/controller/subsystem/objects/stat_entry()
..("P:[processing.len]") ..("P:[processing.len]")
/datum/subsystem/objects/fire(resumed = 0) /datum/controller/subsystem/objects/fire(resumed = 0)
if (!resumed) if (!resumed)
src.currentrun = processing.Copy() src.currentrun = processing.Copy()
//cache for sanic speed (lists are references anyways) //cache for sanic speed (lists are references anyways)
@@ -28,5 +28,5 @@ var/datum/subsystem/objects/SSobj
if (MC_TICK_CHECK) if (MC_TICK_CHECK)
return return
/datum/subsystem/objects/Recover() /datum/controller/subsystem/objects/Recover()
processing = SSobj.processing processing = SSobj.processing

View File

@@ -1,6 +1,6 @@
var/datum/subsystem/processing/overlays/SSoverlays var/datum/controller/subsystem/processing/overlays/SSoverlays
/datum/subsystem/processing/overlays /datum/controller/subsystem/processing/overlays
name = "Overlay" name = "Overlay"
flags = SS_TICKER|SS_FIRE_IN_LOBBY flags = SS_TICKER|SS_FIRE_IN_LOBBY
wait = 1 wait = 1
@@ -12,20 +12,20 @@ var/datum/subsystem/processing/overlays/SSoverlays
var/list/overlay_icon_state_caches var/list/overlay_icon_state_caches
var/initialized = FALSE var/initialized = FALSE
/datum/subsystem/processing/overlays/New() /datum/controller/subsystem/processing/overlays/New()
NEW_SS_GLOBAL(SSoverlays) NEW_SS_GLOBAL(SSoverlays)
LAZYINITLIST(overlay_icon_state_caches) LAZYINITLIST(overlay_icon_state_caches)
/datum/subsystem/processing/overlays/Initialize() /datum/controller/subsystem/processing/overlays/Initialize()
initialized = TRUE initialized = TRUE
Flush() Flush()
..() ..()
/datum/subsystem/processing/overlays/Recover() /datum/controller/subsystem/processing/overlays/Recover()
overlay_icon_state_caches = SSoverlays.overlay_icon_state_caches overlay_icon_state_caches = SSoverlays.overlay_icon_state_caches
processing = SSoverlays.processing processing = SSoverlays.processing
/datum/subsystem/processing/overlays/fire(resumed = FALSE, mc_check = TRUE) /datum/controller/subsystem/processing/overlays/fire(resumed = FALSE, mc_check = TRUE)
while(processing.len) while(processing.len)
var/atom/thing = processing[processing.len] var/atom/thing = processing[processing.len]
processing.len-- processing.len--
@@ -37,7 +37,7 @@ var/datum/subsystem/processing/overlays/SSoverlays
else else
CHECK_TICK CHECK_TICK
/datum/subsystem/processing/overlays/proc/Flush() /datum/controller/subsystem/processing/overlays/proc/Flush()
if(processing.len) if(processing.len)
testing("Flushing [processing.len] overlays") testing("Flushing [processing.len] overlays")
fire(mc_check = FALSE) //pair this thread up with the MC to get extra compile time fire(mc_check = FALSE) //pair this thread up with the MC to get extra compile time

View File

@@ -1,7 +1,7 @@
//Used to process objects. Fires once every second. //Used to process objects. Fires once every second.
var/datum/subsystem/processing/SSprocessing var/datum/controller/subsystem/processing/SSprocessing
/datum/subsystem/processing /datum/controller/subsystem/processing
name = "Processing" name = "Processing"
priority = 25 priority = 25
flags = SS_BACKGROUND|SS_POST_FIRE_TIMING|SS_NO_INIT flags = SS_BACKGROUND|SS_POST_FIRE_TIMING|SS_NO_INIT
@@ -11,13 +11,13 @@ var/datum/subsystem/processing/SSprocessing
var/list/processing = list() var/list/processing = list()
var/list/currentrun = list() var/list/currentrun = list()
/datum/subsystem/processing/New() /datum/controller/subsystem/processing/New()
NEW_SS_GLOBAL(SSprocessing) NEW_SS_GLOBAL(SSprocessing)
/datum/subsystem/processing/stat_entry() /datum/controller/subsystem/processing/stat_entry()
..("[stat_tag]:[processing.len]") ..("[stat_tag]:[processing.len]")
/datum/subsystem/processing/fire(resumed = 0) /datum/controller/subsystem/processing/fire(resumed = 0)
if (!resumed) if (!resumed)
currentrun = processing.Copy() currentrun = processing.Copy()
//cache for sanic speed (lists are references anyways) //cache for sanic speed (lists are references anyways)

View File

@@ -1,16 +1,16 @@
var/datum/subsystem/radio/SSradio var/datum/controller/subsystem/radio/SSradio
/datum/subsystem/radio /datum/controller/subsystem/radio
name = "Radio" name = "Radio"
init_order = 18 init_order = 18
flags = SS_NO_FIRE|SS_NO_INIT flags = SS_NO_FIRE|SS_NO_INIT
var/list/datum/radio_frequency/frequencies = list() var/list/datum/radio_frequency/frequencies = list()
/datum/subsystem/radio/New() /datum/controller/subsystem/radio/New()
NEW_SS_GLOBAL(SSradio) NEW_SS_GLOBAL(SSradio)
/datum/subsystem/radio/proc/add_object(obj/device, new_frequency as num, filter = null as text|null) /datum/controller/subsystem/radio/proc/add_object(obj/device, new_frequency as num, filter = null as text|null)
var/f_text = num2text(new_frequency) var/f_text = num2text(new_frequency)
var/datum/radio_frequency/frequency = frequencies[f_text] var/datum/radio_frequency/frequency = frequencies[f_text]
@@ -22,7 +22,7 @@ var/datum/subsystem/radio/SSradio
frequency.add_listener(device, filter) frequency.add_listener(device, filter)
return frequency return frequency
/datum/subsystem/radio/proc/remove_object(obj/device, old_frequency) /datum/controller/subsystem/radio/proc/remove_object(obj/device, old_frequency)
var/f_text = num2text(old_frequency) var/f_text = num2text(old_frequency)
var/datum/radio_frequency/frequency = frequencies[f_text] var/datum/radio_frequency/frequency = frequencies[f_text]
@@ -35,7 +35,7 @@ var/datum/subsystem/radio/SSradio
return 1 return 1
/datum/subsystem/radio/proc/return_frequency(new_frequency as num) /datum/controller/subsystem/radio/proc/return_frequency(new_frequency as num)
var/f_text = num2text(new_frequency) var/f_text = num2text(new_frequency)
var/datum/radio_frequency/frequency = frequencies[f_text] var/datum/radio_frequency/frequency = frequencies[f_text]

View File

@@ -1,6 +1,6 @@
var/datum/subsystem/religion/SSreligion var/datum/controller/subsystem/religion/SSreligion
/datum/subsystem/religion /datum/controller/subsystem/religion
name = "Religion" name = "Religion"
init_order = 19 init_order = 19
flags = SS_NO_FIRE|SS_NO_INIT flags = SS_NO_FIRE|SS_NO_INIT
@@ -13,5 +13,5 @@ var/datum/subsystem/religion/SSreligion
var/holy_weapon var/holy_weapon
/datum/subsystem/religion/New() /datum/controller/subsystem/religion/New()
NEW_SS_GLOBAL(SSreligion) NEW_SS_GLOBAL(SSreligion)

View File

@@ -1,19 +1,19 @@
var/datum/subsystem/server_maint/SSserver var/datum/controller/subsystem/server_maint/SSserver
/datum/subsystem/server_maint /datum/controller/subsystem/server_maint
name = "Server Tasks" name = "Server Tasks"
wait = 6000 wait = 6000
flags = SS_NO_TICK_CHECK flags = SS_NO_TICK_CHECK
/datum/subsystem/server_maint/New() /datum/controller/subsystem/server_maint/New()
NEW_SS_GLOBAL(SSserver) NEW_SS_GLOBAL(SSserver)
/datum/subsystem/server_maint/Initialize(timeofday) /datum/controller/subsystem/server_maint/Initialize(timeofday)
if (config.hub) if (config.hub)
world.visibility = 1 world.visibility = 1
..() ..()
/datum/subsystem/server_maint/fire() /datum/controller/subsystem/server_maint/fire()
//handle kicking inactive players //handle kicking inactive players
if(config.kick_inactive > 0) if(config.kick_inactive > 0)
for(var/client/C in clients) for(var/client/C in clients)

View File

@@ -1,8 +1,8 @@
#define HIGHLIGHT_DYNAMIC_TRANSIT 1 #define HIGHLIGHT_DYNAMIC_TRANSIT 1
var/datum/subsystem/shuttle/SSshuttle var/datum/controller/subsystem/shuttle/SSshuttle
/datum/subsystem/shuttle /datum/controller/subsystem/shuttle
name = "Shuttles" name = "Shuttles"
wait = 10 wait = 10
init_order = 3 init_order = 3
@@ -46,10 +46,10 @@ var/datum/subsystem/shuttle/SSshuttle
var/lockdown = FALSE //disallow transit after nuke goes off var/lockdown = FALSE //disallow transit after nuke goes off
/datum/subsystem/shuttle/New() /datum/controller/subsystem/shuttle/New()
NEW_SS_GLOBAL(SSshuttle) NEW_SS_GLOBAL(SSshuttle)
/datum/subsystem/shuttle/Initialize(timeofday) /datum/controller/subsystem/shuttle/Initialize(timeofday)
if(!emergency) if(!emergency)
WARNING("No /obj/docking_port/mobile/emergency placed on the map!") WARNING("No /obj/docking_port/mobile/emergency placed on the map!")
if(!backup_shuttle) if(!backup_shuttle)
@@ -71,7 +71,7 @@ var/datum/subsystem/shuttle/SSshuttle
color_space() color_space()
#endif #endif
/datum/subsystem/shuttle/proc/setup_transit_zone() /datum/controller/subsystem/shuttle/proc/setup_transit_zone()
if(transit_markers.len == 0) if(transit_markers.len == 0)
WARNING("No /obj/effect/landmark/transit placed on the map!") WARNING("No /obj/effect/landmark/transit placed on the map!")
return return
@@ -85,7 +85,7 @@ var/datum/subsystem/shuttle/SSshuttle
T.flags |= UNUSED_TRANSIT_TURF T.flags |= UNUSED_TRANSIT_TURF
#ifdef HIGHLIGHT_DYNAMIC_TRANSIT #ifdef HIGHLIGHT_DYNAMIC_TRANSIT
/datum/subsystem/shuttle/proc/color_space() /datum/controller/subsystem/shuttle/proc/color_space()
if(transit_markers.len == 0) if(transit_markers.len == 0)
WARNING("No /obj/effect/landmark/transit placed on the map!") WARNING("No /obj/effect/landmark/transit placed on the map!")
return return
@@ -104,7 +104,7 @@ var/datum/subsystem/shuttle/SSshuttle
//world.log << "[transit_turfs.len] transit turfs registered" //world.log << "[transit_turfs.len] transit turfs registered"
/datum/subsystem/shuttle/fire() /datum/controller/subsystem/shuttle/fire()
for(var/thing in mobile) for(var/thing in mobile)
if(!thing) if(!thing)
mobile.Remove(thing) mobile.Remove(thing)
@@ -148,19 +148,19 @@ var/datum/subsystem/shuttle/SSshuttle
if(MC_TICK_CHECK) if(MC_TICK_CHECK)
return return
/datum/subsystem/shuttle/proc/getShuttle(id) /datum/controller/subsystem/shuttle/proc/getShuttle(id)
for(var/obj/docking_port/mobile/M in mobile) for(var/obj/docking_port/mobile/M in mobile)
if(M.id == id) if(M.id == id)
return M return M
WARNING("couldn't find shuttle with id: [id]") WARNING("couldn't find shuttle with id: [id]")
/datum/subsystem/shuttle/proc/getDock(id) /datum/controller/subsystem/shuttle/proc/getDock(id)
for(var/obj/docking_port/stationary/S in stationary) for(var/obj/docking_port/stationary/S in stationary)
if(S.id == id) if(S.id == id)
return S return S
WARNING("couldn't find dock with id: [id]") WARNING("couldn't find dock with id: [id]")
/datum/subsystem/shuttle/proc/requestEvac(mob/user, call_reason) /datum/controller/subsystem/shuttle/proc/requestEvac(mob/user, call_reason)
if(!emergency) if(!emergency)
WARNING("requestEvac(): There is no emergency shuttle, but the \ WARNING("requestEvac(): There is no emergency shuttle, but the \
shuttle was called. Using the backup shuttle instead.") shuttle was called. Using the backup shuttle instead.")
@@ -221,19 +221,19 @@ var/datum/subsystem/shuttle/SSshuttle
// Called when an emergency shuttle mobile docking port is // Called when an emergency shuttle mobile docking port is
// destroyed, which will only happen with admin intervention // destroyed, which will only happen with admin intervention
/datum/subsystem/shuttle/proc/emergencyDeregister() /datum/controller/subsystem/shuttle/proc/emergencyDeregister()
// When a new emergency shuttle is created, it will override the // When a new emergency shuttle is created, it will override the
// backup shuttle. // backup shuttle.
src.emergency = src.backup_shuttle src.emergency = src.backup_shuttle
/datum/subsystem/shuttle/proc/cancelEvac(mob/user) /datum/controller/subsystem/shuttle/proc/cancelEvac(mob/user)
if(canRecall()) if(canRecall())
emergency.cancel(get_area(user)) emergency.cancel(get_area(user))
log_game("[key_name(user)] has recalled the shuttle.") log_game("[key_name(user)] has recalled the shuttle.")
message_admins("[key_name_admin(user)] has recalled the shuttle.") message_admins("[key_name_admin(user)] has recalled the shuttle.")
return 1 return 1
/datum/subsystem/shuttle/proc/canRecall() /datum/controller/subsystem/shuttle/proc/canRecall()
if(emergency.mode != SHUTTLE_CALL) if(emergency.mode != SHUTTLE_CALL)
return return
if(ticker.mode.name == "meteor") if(ticker.mode.name == "meteor")
@@ -251,7 +251,7 @@ var/datum/subsystem/shuttle/SSshuttle
return return
return 1 return 1
/datum/subsystem/shuttle/proc/autoEvac() /datum/controller/subsystem/shuttle/proc/autoEvac()
var/callShuttle = 1 var/callShuttle = 1
for(var/thing in shuttle_caller_list) for(var/thing in shuttle_caller_list)
@@ -275,15 +275,15 @@ var/datum/subsystem/shuttle/SSshuttle
log_game("There is no means of calling the shuttle anymore. Shuttle automatically called.") log_game("There is no means of calling the shuttle anymore. Shuttle automatically called.")
message_admins("All the communications consoles were destroyed and all AIs are inactive. Shuttle called.") message_admins("All the communications consoles were destroyed and all AIs are inactive. Shuttle called.")
/datum/subsystem/shuttle/proc/registerHostileEnvironment(datum/bad) /datum/controller/subsystem/shuttle/proc/registerHostileEnvironment(datum/bad)
hostileEnvironments[bad] = TRUE hostileEnvironments[bad] = TRUE
checkHostileEnvironment() checkHostileEnvironment()
/datum/subsystem/shuttle/proc/clearHostileEnvironment(datum/bad) /datum/controller/subsystem/shuttle/proc/clearHostileEnvironment(datum/bad)
hostileEnvironments -= bad hostileEnvironments -= bad
checkHostileEnvironment() checkHostileEnvironment()
/datum/subsystem/shuttle/proc/checkHostileEnvironment() /datum/controller/subsystem/shuttle/proc/checkHostileEnvironment()
for(var/datum/d in hostileEnvironments) for(var/datum/d in hostileEnvironments)
if(!istype(d) || QDELETED(d)) if(!istype(d) || QDELETED(d))
hostileEnvironments -= d hostileEnvironments -= d
@@ -304,7 +304,7 @@ var/datum/subsystem/shuttle/SSshuttle
null, 'sound/AI/shuttledock.ogg', "Priority") null, 'sound/AI/shuttledock.ogg', "Priority")
//try to move/request to dockHome if possible, otherwise dockAway. Mainly used for admin buttons //try to move/request to dockHome if possible, otherwise dockAway. Mainly used for admin buttons
/datum/subsystem/shuttle/proc/toggleShuttle(shuttleId, dockHome, dockAway, timed) /datum/controller/subsystem/shuttle/proc/toggleShuttle(shuttleId, dockHome, dockAway, timed)
var/obj/docking_port/mobile/M = getShuttle(shuttleId) var/obj/docking_port/mobile/M = getShuttle(shuttleId)
if(!M) if(!M)
return 1 return 1
@@ -321,7 +321,7 @@ var/datum/subsystem/shuttle/SSshuttle
return 0 //dock successful return 0 //dock successful
/datum/subsystem/shuttle/proc/moveShuttle(shuttleId, dockId, timed) /datum/controller/subsystem/shuttle/proc/moveShuttle(shuttleId, dockId, timed)
var/obj/docking_port/mobile/M = getShuttle(shuttleId) var/obj/docking_port/mobile/M = getShuttle(shuttleId)
var/obj/docking_port/stationary/D = getDock(dockId) var/obj/docking_port/stationary/D = getDock(dockId)
@@ -335,7 +335,7 @@ var/datum/subsystem/shuttle/SSshuttle
return 2 return 2
return 0 //dock successful return 0 //dock successful
/datum/subsystem/shuttle/proc/request_transit_dock(obj/docking_port/mobile/M) /datum/controller/subsystem/shuttle/proc/request_transit_dock(obj/docking_port/mobile/M)
if(!istype(M)) if(!istype(M))
throw EXCEPTION("[M] is not a mobile docking port") throw EXCEPTION("[M] is not a mobile docking port")
@@ -345,7 +345,7 @@ var/datum/subsystem/shuttle/SSshuttle
if(!(M in transit_requesters)) if(!(M in transit_requesters))
transit_requesters += M transit_requesters += M
/datum/subsystem/shuttle/proc/generate_transit_dock(obj/docking_port/mobile/M) /datum/controller/subsystem/shuttle/proc/generate_transit_dock(obj/docking_port/mobile/M)
// First, determine the size of the needed zone // First, determine the size of the needed zone
// Because of shuttle rotation, the "width" of the shuttle is not // Because of shuttle rotation, the "width" of the shuttle is not
// always x. // always x.
@@ -473,14 +473,14 @@ var/datum/subsystem/shuttle/SSshuttle
M.assigned_transit = new_transit_dock M.assigned_transit = new_transit_dock
return TRUE return TRUE
/datum/subsystem/shuttle/proc/initial_move() /datum/controller/subsystem/shuttle/proc/initial_move()
for(var/obj/docking_port/mobile/M in mobile) for(var/obj/docking_port/mobile/M in mobile)
if(!M.roundstart_move) if(!M.roundstart_move)
continue continue
M.dockRoundstart() M.dockRoundstart()
CHECK_TICK CHECK_TICK
/datum/subsystem/shuttle/Recover() /datum/controller/subsystem/shuttle/Recover()
if (istype(SSshuttle.mobile)) if (istype(SSshuttle.mobile))
mobile = SSshuttle.mobile mobile = SSshuttle.mobile
if (istype(SSshuttle.stationary)) if (istype(SSshuttle.stationary))

View File

@@ -1,6 +1,6 @@
var/datum/subsystem/spacedrift/SSspacedrift var/datum/controller/subsystem/spacedrift/SSspacedrift
/datum/subsystem/spacedrift /datum/controller/subsystem/spacedrift
name = "Space Drift" name = "Space Drift"
priority = 30 priority = 30
wait = 5 wait = 5
@@ -9,15 +9,15 @@ var/datum/subsystem/spacedrift/SSspacedrift
var/list/currentrun = list() var/list/currentrun = list()
var/list/processing = list() var/list/processing = list()
/datum/subsystem/spacedrift/New() /datum/controller/subsystem/spacedrift/New()
NEW_SS_GLOBAL(SSspacedrift) NEW_SS_GLOBAL(SSspacedrift)
/datum/subsystem/spacedrift/stat_entry() /datum/controller/subsystem/spacedrift/stat_entry()
..("P:[processing.len]") ..("P:[processing.len]")
/datum/subsystem/spacedrift/fire(resumed = 0) /datum/controller/subsystem/spacedrift/fire(resumed = 0)
if (!resumed) if (!resumed)
src.currentrun = processing.Copy() src.currentrun = processing.Copy()

View File

@@ -1,23 +1,23 @@
var/datum/subsystem/squeak/SSsqueak var/datum/controller/subsystem/squeak/SSsqueak
// The Squeak // The Squeak
// because this is about placement of mice mobs, and nothing to do with // because this is about placement of mice mobs, and nothing to do with
// mice - the computer peripheral // mice - the computer peripheral
/datum/subsystem/squeak /datum/controller/subsystem/squeak
name = "Squeak" name = "Squeak"
priority = 40 priority = 40
flags = SS_NO_FIRE flags = SS_NO_FIRE
var/list/exposed_wires = list() var/list/exposed_wires = list()
/datum/subsystem/squeak/New() /datum/controller/subsystem/squeak/New()
NEW_SS_GLOBAL(SSsqueak) NEW_SS_GLOBAL(SSsqueak)
/datum/subsystem/squeak/Initialize(timeofday) /datum/controller/subsystem/squeak/Initialize(timeofday)
trigger_migration() trigger_migration()
/datum/subsystem/squeak/proc/trigger_migration(num_mice=10) /datum/controller/subsystem/squeak/proc/trigger_migration(num_mice=10)
find_exposed_wires() find_exposed_wires()
var/mob/living/simple_animal/mouse/M var/mob/living/simple_animal/mouse/M
@@ -33,7 +33,7 @@ var/datum/subsystem/squeak/SSsqueak
num_mice -= 1 num_mice -= 1
M = null M = null
/datum/subsystem/squeak/proc/find_exposed_wires() /datum/controller/subsystem/squeak/proc/find_exposed_wires()
exposed_wires.Cut() exposed_wires.Cut()
var/list/all_turfs = block(locate(1,1,1), locate(world.maxx,world.maxy,1)) var/list/all_turfs = block(locate(1,1,1), locate(world.maxx,world.maxy,1))

View File

@@ -1,16 +1,16 @@
var/datum/subsystem/stickyban/SSstickyban var/datum/controller/subsystem/stickyban/SSstickyban
/datum/subsystem/stickyban /datum/controller/subsystem/stickyban
name = "Sticky Ban" name = "Sticky Ban"
init_order = -10 init_order = -10
flags = SS_NO_FIRE flags = SS_NO_FIRE
var/list/cache = list() var/list/cache = list()
/datum/subsystem/stickyban/New() /datum/controller/subsystem/stickyban/New()
NEW_SS_GLOBAL(SSstickyban) NEW_SS_GLOBAL(SSstickyban)
/datum/subsystem/stickyban/Initialize(timeofday) /datum/controller/subsystem/stickyban/Initialize(timeofday)
var/list/bannedkeys = world.GetConfig("ban") var/list/bannedkeys = world.GetConfig("ban")
//sanitize the sticky ban list //sanitize the sticky ban list
for (var/bannedkey in bannedkeys) for (var/bannedkey in bannedkeys)

View File

@@ -1,6 +1,6 @@
var/datum/subsystem/sun/SSsun var/datum/controller/subsystem/sun/SSsun
/datum/subsystem/sun /datum/controller/subsystem/sun
name = "Sun" name = "Sun"
wait = 600 wait = 600
init_order = 2 init_order = 2
@@ -11,7 +11,7 @@ var/datum/subsystem/sun/SSsun
var/rate var/rate
var/list/solars = list() var/list/solars = list()
/datum/subsystem/sun/New() /datum/controller/subsystem/sun/New()
NEW_SS_GLOBAL(SSsun) NEW_SS_GLOBAL(SSsun)
angle = rand (0,360) // the station position to the sun is randomised at round start angle = rand (0,360) // the station position to the sun is randomised at round start
@@ -19,10 +19,10 @@ var/datum/subsystem/sun/SSsun
if(prob(50)) // same chance to rotate clockwise than counter-clockwise if(prob(50)) // same chance to rotate clockwise than counter-clockwise
rate = -rate rate = -rate
/datum/subsystem/sun/stat_entry(msg) /datum/controller/subsystem/sun/stat_entry(msg)
..("P:[solars.len]") ..("P:[solars.len]")
/datum/subsystem/sun/fire() /datum/controller/subsystem/sun/fire()
angle = (360 + angle + rate * 6) % 360 // increase/decrease the angle to the sun, adjusted by the rate angle = (360 + angle + rate * 6) % 360 // increase/decrease the angle to the sun, adjusted by the rate
// now calculate and cache the (dx,dy) increments for line drawing // now calculate and cache the (dx,dy) increments for line drawing

View File

@@ -1,6 +1,6 @@
var/datum/subsystem/tgui/SStgui var/datum/controller/subsystem/tgui/SStgui
/datum/subsystem/tgui /datum/controller/subsystem/tgui
name = "tgui" name = "tgui"
wait = 9 wait = 9
init_order = 16 init_order = 16
@@ -12,18 +12,18 @@ var/datum/subsystem/tgui/SStgui
var/list/processing_uis = list() // A list of processing UIs, ungrouped. var/list/processing_uis = list() // A list of processing UIs, ungrouped.
var/basehtml // The HTML base used for all UIs. var/basehtml // The HTML base used for all UIs.
/datum/subsystem/tgui/New() /datum/controller/subsystem/tgui/New()
basehtml = file2text('tgui/tgui.html') // Read the HTML from disk. basehtml = file2text('tgui/tgui.html') // Read the HTML from disk.
NEW_SS_GLOBAL(SStgui) NEW_SS_GLOBAL(SStgui)
/datum/subsystem/tgui/Shutdown() /datum/controller/subsystem/tgui/Shutdown()
close_all_uis() close_all_uis()
/datum/subsystem/tgui/stat_entry() /datum/controller/subsystem/tgui/stat_entry()
..("P:[processing_uis.len]") ..("P:[processing_uis.len]")
/datum/subsystem/tgui/fire(resumed = 0) /datum/controller/subsystem/tgui/fire(resumed = 0)
if (!resumed) if (!resumed)
src.currentrun = processing_uis.Copy() src.currentrun = processing_uis.Copy()
//cache for sanic speed (lists are references anyways) //cache for sanic speed (lists are references anyways)

View File

@@ -1,8 +1,8 @@
#define MAX_THROWING_DIST 512 // 2 z-levels on default width #define MAX_THROWING_DIST 512 // 2 z-levels on default width
#define MAX_TICKS_TO_MAKE_UP 3 //how many missed ticks will we attempt to make up for this run. #define MAX_TICKS_TO_MAKE_UP 3 //how many missed ticks will we attempt to make up for this run.
var/datum/subsystem/throwing/SSthrowing var/datum/controller/subsystem/throwing/SSthrowing
/datum/subsystem/throwing /datum/controller/subsystem/throwing
name = "Throwing" name = "Throwing"
priority = 25 priority = 25
wait = 1 wait = 1
@@ -11,16 +11,16 @@ var/datum/subsystem/throwing/SSthrowing
var/list/currentrun var/list/currentrun
var/list/processing var/list/processing
/datum/subsystem/throwing/New() /datum/controller/subsystem/throwing/New()
NEW_SS_GLOBAL(SSthrowing) NEW_SS_GLOBAL(SSthrowing)
processing = list() processing = list()
/datum/subsystem/throwing/stat_entry() /datum/controller/subsystem/throwing/stat_entry()
..("P:[processing.len]") ..("P:[processing.len]")
/datum/subsystem/throwing/fire(resumed = 0) /datum/controller/subsystem/throwing/fire(resumed = 0)
if (!resumed) if (!resumed)
src.currentrun = processing.Copy() src.currentrun = processing.Copy()

View File

@@ -2,9 +2,9 @@
var/round_start_time = 0 var/round_start_time = 0
var/datum/subsystem/ticker/ticker var/datum/controller/subsystem/ticker/ticker
/datum/subsystem/ticker /datum/controller/subsystem/ticker
name = "Ticker" name = "Ticker"
init_order = 13 init_order = 13
@@ -56,10 +56,10 @@ var/datum/subsystem/ticker/ticker
var/news_report var/news_report
/datum/subsystem/ticker/New() /datum/controller/subsystem/ticker/New()
NEW_SS_GLOBAL(ticker) NEW_SS_GLOBAL(ticker)
/datum/subsystem/ticker/Initialize(timeofday) /datum/controller/subsystem/ticker/Initialize(timeofday)
var/list/music = file2list(ROUND_START_MUSIC_LIST, "\n") var/list/music = file2list(ROUND_START_MUSIC_LIST, "\n")
login_music = pick(music) login_music = pick(music)
@@ -70,7 +70,7 @@ var/datum/subsystem/ticker/ticker
..() ..()
start_at = world.time + (config.lobby_countdown * 10) start_at = world.time + (config.lobby_countdown * 10)
/datum/subsystem/ticker/fire() /datum/controller/subsystem/ticker/fire()
switch(current_state) switch(current_state)
if(GAME_STATE_STARTUP) if(GAME_STATE_STARTUP)
if(Master.initializations_finished_with_no_players_logged_in) if(Master.initializations_finished_with_no_players_logged_in)
@@ -124,7 +124,7 @@ var/datum/subsystem/ticker/ticker
toggle_ooc(1) // Turn it on toggle_ooc(1) // Turn it on
declare_completion(force_ending) declare_completion(force_ending)
/datum/subsystem/ticker/proc/setup() /datum/controller/subsystem/ticker/proc/setup()
world << "<span class='boldannounce'>Starting game...</span>" world << "<span class='boldannounce'>Starting game...</span>"
var/init_start = world.timeofday var/init_start = world.timeofday
//Create and announce mode //Create and announce mode
@@ -220,7 +220,7 @@ var/datum/subsystem/ticker/ticker
return 1 return 1
/datum/subsystem/ticker/proc/PostSetup() /datum/controller/subsystem/ticker/proc/PostSetup()
set waitfor = 0 set waitfor = 0
mode.post_setup() mode.post_setup()
//Cleanup some stuff //Cleanup some stuff
@@ -233,7 +233,7 @@ var/datum/subsystem/ticker/ticker
var/list/allmins = adm["present"] var/list/allmins = adm["present"]
send2irc("Server", "Round of [hide_mode ? "secret":"[mode.name]"] has started[allmins.len ? ".":" with no active admins online!"]") send2irc("Server", "Round of [hide_mode ? "secret":"[mode.name]"] has started[allmins.len ? ".":" with no active admins online!"]")
/datum/subsystem/ticker/proc/station_explosion_detonation(atom/bomb) /datum/controller/subsystem/ticker/proc/station_explosion_detonation(atom/bomb)
if(bomb) //BOOM if(bomb) //BOOM
var/turf/epi = bomb.loc var/turf/epi = bomb.loc
qdel(bomb) qdel(bomb)
@@ -241,7 +241,7 @@ var/datum/subsystem/ticker/ticker
explosion(epi, 0, 256, 512, 0, TRUE, TRUE, 0, TRUE) explosion(epi, 0, 256, 512, 0, TRUE, TRUE, 0, TRUE)
//Plus it provides an easy way to make cinematics for other events. Just use this as a template //Plus it provides an easy way to make cinematics for other events. Just use this as a template
/datum/subsystem/ticker/proc/station_explosion_cinematic(station_missed=0, override = null, atom/bomb = null) /datum/controller/subsystem/ticker/proc/station_explosion_cinematic(station_missed=0, override = null, atom/bomb = null)
if( cinematic ) if( cinematic )
return //already a cinematic in progress! return //already a cinematic in progress!
@@ -355,7 +355,7 @@ var/datum/subsystem/ticker/ticker
addtimer(CALLBACK(src, .proc/finish_cinematic, bombloc, actually_blew_up), 300) addtimer(CALLBACK(src, .proc/finish_cinematic, bombloc, actually_blew_up), 300)
/datum/subsystem/ticker/proc/finish_cinematic(killz, actually_blew_up) /datum/controller/subsystem/ticker/proc/finish_cinematic(killz, actually_blew_up)
if(cinematic) if(cinematic)
qdel(cinematic) //end the cinematic qdel(cinematic) //end the cinematic
cinematic = null cinematic = null
@@ -364,7 +364,7 @@ var/datum/subsystem/ticker/ticker
if(actually_blew_up && !isnull(killz) && M.stat != DEAD && M.z == killz) if(actually_blew_up && !isnull(killz) && M.stat != DEAD && M.z == killz)
M.gib() M.gib()
/datum/subsystem/ticker/proc/create_characters() /datum/controller/subsystem/ticker/proc/create_characters()
for(var/mob/new_player/player in player_list) for(var/mob/new_player/player in player_list)
if(player.ready && player.mind) if(player.ready && player.mind)
joined_player_list += player.ckey joined_player_list += player.ckey
@@ -373,14 +373,14 @@ var/datum/subsystem/ticker/ticker
player.new_player_panel() player.new_player_panel()
CHECK_TICK CHECK_TICK
/datum/subsystem/ticker/proc/collect_minds() /datum/controller/subsystem/ticker/proc/collect_minds()
for(var/mob/living/player in player_list) for(var/mob/living/player in player_list)
if(player.mind) if(player.mind)
ticker.minds += player.mind ticker.minds += player.mind
CHECK_TICK CHECK_TICK
/datum/subsystem/ticker/proc/equip_characters() /datum/controller/subsystem/ticker/proc/equip_characters()
var/captainless=1 var/captainless=1
for(var/mob/new_player/N in player_list) for(var/mob/new_player/N in player_list)
var/mob/living/carbon/human/player = N.new_character var/mob/living/carbon/human/player = N.new_character
@@ -396,7 +396,7 @@ var/datum/subsystem/ticker/ticker
N << "Captainship not forced on anyone." N << "Captainship not forced on anyone."
CHECK_TICK CHECK_TICK
/datum/subsystem/ticker/proc/transfer_characters() /datum/controller/subsystem/ticker/proc/transfer_characters()
var/list/livings = list() var/list/livings = list()
for(var/mob/new_player/player in player_list) for(var/mob/new_player/player in player_list)
var/mob/living = player.transfer_character() var/mob/living = player.transfer_character()
@@ -410,12 +410,12 @@ var/datum/subsystem/ticker/ticker
if(livings.len) if(livings.len)
addtimer(CALLBACK(src, .proc/release_characters, livings), 30, TIMER_CLIENT_TIME) addtimer(CALLBACK(src, .proc/release_characters, livings), 30, TIMER_CLIENT_TIME)
/datum/subsystem/ticker/proc/release_characters(list/livings) /datum/controller/subsystem/ticker/proc/release_characters(list/livings)
for(var/I in livings) for(var/I in livings)
var/mob/living/L = I var/mob/living/L = I
L.notransform = FALSE L.notransform = FALSE
/datum/subsystem/ticker/proc/declare_completion() /datum/controller/subsystem/ticker/proc/declare_completion()
set waitfor = FALSE set waitfor = FALSE
var/station_evacuated = EMERGENCY_ESCAPED_OR_ENDGAMED var/station_evacuated = EMERGENCY_ESCAPED_OR_ENDGAMED
var/num_survivors = 0 var/num_survivors = 0
@@ -605,7 +605,7 @@ var/datum/subsystem/ticker/ticker
else else
world.Reboot("Round ended.", "end_proper", "proper completion") world.Reboot("Round ended.", "end_proper", "proper completion")
/datum/subsystem/ticker/proc/send_tip_of_the_round() /datum/controller/subsystem/ticker/proc/send_tip_of_the_round()
var/m var/m
if(selected_tip) if(selected_tip)
m = selected_tip m = selected_tip
@@ -621,7 +621,7 @@ var/datum/subsystem/ticker/ticker
world << "<font color='purple'><b>Tip of the round: \ world << "<font color='purple'><b>Tip of the round: \
</b>[html_encode(m)]</font>" </b>[html_encode(m)]</font>"
/datum/subsystem/ticker/proc/check_queue() /datum/controller/subsystem/ticker/proc/check_queue()
if(!queued_players.len || !config.hard_popcap) if(!queued_players.len || !config.hard_popcap)
return return
@@ -643,7 +643,7 @@ var/datum/subsystem/ticker/ticker
queued_players -= next_in_line queued_players -= next_in_line
queue_delay = 0 queue_delay = 0
/datum/subsystem/ticker/proc/check_maprotate() /datum/controller/subsystem/ticker/proc/check_maprotate()
if (!config.maprotation) if (!config.maprotation)
return return
if (SSshuttle.emergency.mode != SHUTTLE_ESCAPE || SSshuttle.canRecall()) if (SSshuttle.emergency.mode != SHUTTLE_ESCAPE || SSshuttle.canRecall())
@@ -656,7 +656,7 @@ var/datum/subsystem/ticker/ticker
//map rotate chance defaults to 75% of the length of the round (in minutes) //map rotate chance defaults to 75% of the length of the round (in minutes)
if (!prob((world.time/600)*config.maprotatechancedelta)) if (!prob((world.time/600)*config.maprotatechancedelta))
return return
INVOKE_ASYNC(SSmapping, /datum/subsystem/mapping/.proc/maprotate) INVOKE_ASYNC(SSmapping, /datum/controller/subsystem/mapping/.proc/maprotate)
/world/proc/has_round_started() /world/proc/has_round_started()
@@ -664,7 +664,7 @@ var/datum/subsystem/ticker/ticker
return TRUE return TRUE
return FALSE return FALSE
/datum/subsystem/ticker/Recover() /datum/controller/subsystem/ticker/Recover()
current_state = ticker.current_state current_state = ticker.current_state
force_ending = ticker.force_ending force_ending = ticker.force_ending
hide_mode = ticker.hide_mode hide_mode = ticker.hide_mode
@@ -698,7 +698,7 @@ var/datum/subsystem/ticker/ticker
maprotatechecked = ticker.maprotatechecked maprotatechecked = ticker.maprotatechecked
/datum/subsystem/ticker/proc/send_news_report() /datum/controller/subsystem/ticker/proc/send_news_report()
var/news_message var/news_message
var/news_source = "Nanotrasen News Network" var/news_source = "Nanotrasen News Network"
switch(news_report) switch(news_report)
@@ -750,12 +750,12 @@ var/datum/subsystem/ticker/ticker
if(news_message) if(news_message)
send2otherserver(news_source, news_message,"News_Report") send2otherserver(news_source, news_message,"News_Report")
/datum/subsystem/ticker/proc/GetTimeLeft() /datum/controller/subsystem/ticker/proc/GetTimeLeft()
if(isnull(ticker.timeLeft)) if(isnull(ticker.timeLeft))
return max(0, start_at - world.time) return max(0, start_at - world.time)
return timeLeft return timeLeft
/datum/subsystem/ticker/proc/SetTimeLeft(newtime) /datum/controller/subsystem/ticker/proc/SetTimeLeft(newtime)
if(newtime >= 0 && isnull(timeLeft)) //remember, negative means delayed if(newtime >= 0 && isnull(timeLeft)) //remember, negative means delayed
start_at = world.time + newtime start_at = world.time + newtime
else else

View File

@@ -1,6 +1,6 @@
var/datum/subsystem/time_track/SStime_track var/datum/controller/subsystem/time_track/SStime_track
/datum/subsystem/time_track /datum/controller/subsystem/time_track
name = "Time Tracking" name = "Time Tracking"
wait = 600 wait = 600
flags = SS_NO_INIT|SS_FIRE_IN_LOBBY flags = SS_NO_INIT|SS_FIRE_IN_LOBBY
@@ -17,10 +17,10 @@ var/datum/subsystem/time_track/SStime_track
var/last_tick_byond_time = 0 var/last_tick_byond_time = 0
var/last_tick_tickcount = 0 var/last_tick_tickcount = 0
/datum/subsystem/time_track/New() /datum/controller/subsystem/time_track/New()
NEW_SS_GLOBAL(SStime_track) NEW_SS_GLOBAL(SStime_track)
/datum/subsystem/time_track/fire() /datum/controller/subsystem/time_track/fire()
var/current_realtime = REALTIMEOFDAY var/current_realtime = REALTIMEOFDAY
var/current_byondtime = world.time var/current_byondtime = world.time

View File

@@ -1,8 +1,8 @@
#define BUCKET_LEN (world.fps*1*60) //how many ticks should we keep in the bucket. (1 minutes worth) #define BUCKET_LEN (world.fps*1*60) //how many ticks should we keep in the bucket. (1 minutes worth)
#define BUCKET_POS(timer) (round((timer.timeToRun - SStimer.head_offset) / world.tick_lag) + 1) #define BUCKET_POS(timer) (round((timer.timeToRun - SStimer.head_offset) / world.tick_lag) + 1)
var/datum/subsystem/timer/SStimer var/datum/controller/subsystem/timer/SStimer
/datum/subsystem/timer /datum/controller/subsystem/timer
name = "Timer" name = "Timer"
wait = 1 //SS_TICKER subsystem, so wait is in ticks wait = 1 //SS_TICKER subsystem, so wait is in ticks
init_order = 1 init_order = 1
@@ -24,7 +24,7 @@ var/datum/subsystem/timer/SStimer
var/list/clienttime_timers //special snowflake timers that run on fancy pansy "client time" var/list/clienttime_timers //special snowflake timers that run on fancy pansy "client time"
/datum/subsystem/timer/New() /datum/controller/subsystem/timer/New()
processing = list() processing = list()
hashes = list() hashes = list()
bucket_list = list() bucket_list = list()
@@ -35,10 +35,10 @@ var/datum/subsystem/timer/SStimer
NEW_SS_GLOBAL(SStimer) NEW_SS_GLOBAL(SStimer)
/datum/subsystem/timer/stat_entry(msg) /datum/controller/subsystem/timer/stat_entry(msg)
..("B:[bucket_count] P:[length(processing)] H:[length(hashes)] C:[length(clienttime_timers)]") ..("B:[bucket_count] P:[length(processing)] H:[length(hashes)] C:[length(clienttime_timers)]")
/datum/subsystem/timer/fire(resumed = FALSE) /datum/controller/subsystem/timer/fire(resumed = FALSE)
while(length(clienttime_timers)) while(length(clienttime_timers))
var/datum/timedevent/ctime_timer = clienttime_timers[clienttime_timers.len] var/datum/timedevent/ctime_timer = clienttime_timers[clienttime_timers.len]
if (ctime_timer.timeToRun <= REALTIMEOFDAY) if (ctime_timer.timeToRun <= REALTIMEOFDAY)
@@ -106,7 +106,7 @@ var/datum/subsystem/timer/SStimer
spent.len = 0 spent.len = 0
/datum/subsystem/timer/proc/shift_buckets() /datum/controller/subsystem/timer/proc/shift_buckets()
var/list/bucket_list = src.bucket_list var/list/bucket_list = src.bucket_list
var/list/alltimers = list() var/list/alltimers = list()
//collect the timers currently in the bucket //collect the timers currently in the bucket
@@ -171,7 +171,7 @@ var/datum/subsystem/timer/SStimer
processing = (alltimers - timers_to_remove) processing = (alltimers - timers_to_remove)
/datum/subsystem/timer/Recover() /datum/controller/subsystem/timer/Recover()
processing |= SStimer.processing processing |= SStimer.processing
hashes |= SStimer.hashes hashes |= SStimer.hashes
timer_id_dict |= SStimer.timer_id_dict timer_id_dict |= SStimer.timer_id_dict

View File

@@ -1,15 +1,15 @@
var/datum/subsystem/title/SStitle var/datum/controller/subsystem/title/SStitle
/datum/subsystem/title /datum/controller/subsystem/title
name = "Title Screen" name = "Title Screen"
init_order = 15 init_order = 15
flags = SS_NO_FIRE flags = SS_NO_FIRE
var/turf/closed/indestructible/splashscreen/title_screen var/turf/closed/indestructible/splashscreen/title_screen
/datum/subsystem/title/New() /datum/controller/subsystem/title/New()
NEW_SS_GLOBAL(SStitle) NEW_SS_GLOBAL(SStitle)
/datum/subsystem/title/Initialize() /datum/controller/subsystem/title/Initialize()
var/list/provisional_title_screens = flist("config/title_screens/images/") var/list/provisional_title_screens = flist("config/title_screens/images/")
var/list/title_screens = list() var/list/title_screens = list()
var/use_rare_screens = FALSE var/use_rare_screens = FALSE

View File

@@ -1,6 +1,6 @@
var/datum/subsystem/vote/SSvote var/datum/controller/subsystem/vote/SSvote
/datum/subsystem/vote /datum/controller/subsystem/vote
name = "Vote" name = "Vote"
wait = 10 wait = 10
@@ -16,10 +16,10 @@ var/datum/subsystem/vote/SSvote
var/list/voting = list() var/list/voting = list()
var/list/generated_actions = list() var/list/generated_actions = list()
/datum/subsystem/vote/New() /datum/controller/subsystem/vote/New()
NEW_SS_GLOBAL(SSvote) NEW_SS_GLOBAL(SSvote)
/datum/subsystem/vote/fire() //called by master_controller /datum/controller/subsystem/vote/fire() //called by master_controller
if(mode) if(mode)
time_remaining = round((started_time + config.vote_period - world.time)/10) time_remaining = round((started_time + config.vote_period - world.time)/10)
@@ -37,7 +37,7 @@ var/datum/subsystem/vote/SSvote
client_popup.open(0) client_popup.open(0)
/datum/subsystem/vote/proc/reset() /datum/controller/subsystem/vote/proc/reset()
initiator = null initiator = null
time_remaining = 0 time_remaining = 0
mode = null mode = null
@@ -47,7 +47,7 @@ var/datum/subsystem/vote/SSvote
voting.Cut() voting.Cut()
remove_action_buttons() remove_action_buttons()
/datum/subsystem/vote/proc/get_result() /datum/controller/subsystem/vote/proc/get_result()
//get the highest number of votes //get the highest number of votes
var/greatest_votes = 0 var/greatest_votes = 0
var/total_votes = 0 var/total_votes = 0
@@ -82,7 +82,7 @@ var/datum/subsystem/vote/SSvote
. += option . += option
return . return .
/datum/subsystem/vote/proc/announce_result() /datum/controller/subsystem/vote/proc/announce_result()
var/list/winners = get_result() var/list/winners = get_result()
var/text var/text
if(winners.len > 0) if(winners.len > 0)
@@ -111,7 +111,7 @@ var/datum/subsystem/vote/SSvote
world << "\n<font color='purple'>[text]</font>" world << "\n<font color='purple'>[text]</font>"
return . return .
/datum/subsystem/vote/proc/result() /datum/controller/subsystem/vote/proc/result()
. = announce_result() . = announce_result()
var/restart = 0 var/restart = 0
if(.) if(.)
@@ -140,7 +140,7 @@ var/datum/subsystem/vote/SSvote
return . return .
/datum/subsystem/vote/proc/submit_vote(vote) /datum/controller/subsystem/vote/proc/submit_vote(vote)
if(mode) if(mode)
if(config.vote_no_dead && usr.stat == DEAD && !usr.client.holder) if(config.vote_no_dead && usr.stat == DEAD && !usr.client.holder)
return 0 return 0
@@ -151,7 +151,7 @@ var/datum/subsystem/vote/SSvote
return vote return vote
return 0 return 0
/datum/subsystem/vote/proc/initiate_vote(vote_type, initiator_key) /datum/controller/subsystem/vote/proc/initiate_vote(vote_type, initiator_key)
if(!mode) if(!mode)
if(started_time) if(started_time)
var/next_allowed_time = (started_time + config.vote_delay) var/next_allowed_time = (started_time + config.vote_delay)
@@ -204,7 +204,7 @@ var/datum/subsystem/vote/SSvote
return 1 return 1
return 0 return 0
/datum/subsystem/vote/proc/interface(client/C) /datum/controller/subsystem/vote/proc/interface(client/C)
if(!C) if(!C)
return return
var/admin = 0 var/admin = 0
@@ -256,7 +256,7 @@ var/datum/subsystem/vote/SSvote
return . return .
/datum/subsystem/vote/Topic(href,href_list[],hsrc) /datum/controller/subsystem/vote/Topic(href,href_list[],hsrc)
if(!usr || !usr.client) if(!usr || !usr.client)
return //not necessary but meh...just in-case somebody does something stupid return //not necessary but meh...just in-case somebody does something stupid
switch(href_list["vote"]) switch(href_list["vote"])
@@ -286,7 +286,7 @@ var/datum/subsystem/vote/SSvote
submit_vote(round(text2num(href_list["vote"]))) submit_vote(round(text2num(href_list["vote"])))
usr.vote() usr.vote()
/datum/subsystem/vote/proc/remove_action_buttons() /datum/controller/subsystem/vote/proc/remove_action_buttons()
for(var/v in generated_actions) for(var/v in generated_actions)
var/datum/action/vote/V = v var/datum/action/vote/V = v
if(!QDELETED(V)) if(!QDELETED(V))

View File

@@ -1,7 +1,7 @@
//Used for all kinds of weather, ex. lavaland ash storms. //Used for all kinds of weather, ex. lavaland ash storms.
var/datum/subsystem/weather/SSweather var/datum/controller/subsystem/weather/SSweather
/datum/subsystem/weather /datum/controller/subsystem/weather
name = "Weather" name = "Weather"
flags = SS_BACKGROUND flags = SS_BACKGROUND
wait = 10 wait = 10
@@ -9,10 +9,10 @@ var/datum/subsystem/weather/SSweather
var/list/existing_weather = list() var/list/existing_weather = list()
var/list/eligible_zlevels = list(ZLEVEL_LAVALAND) var/list/eligible_zlevels = list(ZLEVEL_LAVALAND)
/datum/subsystem/weather/New() /datum/controller/subsystem/weather/New()
NEW_SS_GLOBAL(SSweather) NEW_SS_GLOBAL(SSweather)
/datum/subsystem/weather/fire() /datum/controller/subsystem/weather/fire()
for(var/V in processing) for(var/V in processing)
var/datum/weather/W = V var/datum/weather/W = V
if(W.aesthetic) if(W.aesthetic)
@@ -31,13 +31,13 @@ var/datum/subsystem/weather/SSweather
eligible_zlevels -= Z eligible_zlevels -= Z
addtimer(CALLBACK(src, .proc/make_z_eligible, Z), rand(3000, 6000) + W.weather_duration_upper, TIMER_UNIQUE) //Around 5-10 minutes between weathers addtimer(CALLBACK(src, .proc/make_z_eligible, Z), rand(3000, 6000) + W.weather_duration_upper, TIMER_UNIQUE) //Around 5-10 minutes between weathers
/datum/subsystem/weather/Initialize(start_timeofday) /datum/controller/subsystem/weather/Initialize(start_timeofday)
..() ..()
for(var/V in subtypesof(/datum/weather)) for(var/V in subtypesof(/datum/weather))
var/datum/weather/W = V var/datum/weather/W = V
new W //weather->New will handle adding itself to the list new W //weather->New will handle adding itself to the list
/datum/subsystem/weather/proc/run_weather(weather_name, Z) /datum/controller/subsystem/weather/proc/run_weather(weather_name, Z)
if(!weather_name) if(!weather_name)
return return
for(var/V in existing_weather) for(var/V in existing_weather)
@@ -45,5 +45,5 @@ var/datum/subsystem/weather/SSweather
if(W.name == weather_name && W.target_z == Z) if(W.name == weather_name && W.target_z == Z)
W.telegraph() W.telegraph()
/datum/subsystem/weather/proc/make_z_eligible(zlevel) /datum/controller/subsystem/weather/proc/make_z_eligible(zlevel)
eligible_zlevels |= zlevel eligible_zlevels |= zlevel

View File

@@ -8,4 +8,4 @@
/datum/round_event/wizard/fake_explosion/start() /datum/round_event/wizard/fake_explosion/start()
for(var/mob/M in player_list) for(var/mob/M in player_list)
M << 'sound/machines/Alarm.ogg' M << 'sound/machines/Alarm.ogg'
addtimer(CALLBACK(ticker, /datum/subsystem/ticker/.proc/station_explosion_cinematic, 1, "fake"), 100) //:o) addtimer(CALLBACK(ticker, /datum/controller/subsystem/ticker/.proc/station_explosion_cinematic, 1, "fake"), 100) //:o)

View File

@@ -585,7 +585,7 @@ var/next_mob_id = 0
stat("Failsafe Controller:", "ERROR") stat("Failsafe Controller:", "ERROR")
if(Master) if(Master)
stat(null) stat(null)
for(var/datum/subsystem/SS in Master.subsystems) for(var/datum/controller/subsystem/SS in Master.subsystems)
SS.stat_entry() SS.stat_entry()
cameranet.stat_entry() cameranet.stat_entry()

View File

@@ -17,7 +17,7 @@
* *
* return datum/tgui The found UI. * return datum/tgui The found UI.
**/ **/
/datum/subsystem/tgui/proc/try_update_ui(mob/user, datum/src_object, ui_key, datum/tgui/ui, force_open = 0) /datum/controller/subsystem/tgui/proc/try_update_ui(mob/user, datum/src_object, ui_key, datum/tgui/ui, force_open = 0)
if(isnull(ui)) // No UI was passed, so look for one. if(isnull(ui)) // No UI was passed, so look for one.
ui = get_open_ui(user, src_object, ui_key) ui = get_open_ui(user, src_object, ui_key)
@@ -42,7 +42,7 @@
* *
* return datum/tgui The found UI. * return datum/tgui The found UI.
**/ **/
/datum/subsystem/tgui/proc/get_open_ui(mob/user, datum/src_object, ui_key) /datum/controller/subsystem/tgui/proc/get_open_ui(mob/user, datum/src_object, ui_key)
var/src_object_key = "\ref[src_object]" var/src_object_key = "\ref[src_object]"
if(isnull(open_uis[src_object_key]) || !istype(open_uis[src_object_key], /list)) if(isnull(open_uis[src_object_key]) || !istype(open_uis[src_object_key], /list))
return null // No UIs open. return null // No UIs open.
@@ -64,7 +64,7 @@
* *
* return int The number of UIs updated. * return int The number of UIs updated.
**/ **/
/datum/subsystem/tgui/proc/update_uis(datum/src_object) /datum/controller/subsystem/tgui/proc/update_uis(datum/src_object)
var/src_object_key = "\ref[src_object]" var/src_object_key = "\ref[src_object]"
if(isnull(open_uis[src_object_key]) || !istype(open_uis[src_object_key], /list)) if(isnull(open_uis[src_object_key]) || !istype(open_uis[src_object_key], /list))
return 0 // Couldn't find any UIs for this object. return 0 // Couldn't find any UIs for this object.
@@ -86,7 +86,7 @@
* *
* return int The number of UIs closed. * return int The number of UIs closed.
**/ **/
/datum/subsystem/tgui/proc/close_uis(datum/src_object) /datum/controller/subsystem/tgui/proc/close_uis(datum/src_object)
var/src_object_key = "\ref[src_object]" var/src_object_key = "\ref[src_object]"
if(isnull(open_uis[src_object_key]) || !istype(open_uis[src_object_key], /list)) if(isnull(open_uis[src_object_key]) || !istype(open_uis[src_object_key], /list))
return 0 // Couldn't find any UIs for this object. return 0 // Couldn't find any UIs for this object.
@@ -106,7 +106,7 @@
* *
* return int The number of UIs closed. * return int The number of UIs closed.
**/ **/
/datum/subsystem/tgui/proc/close_all_uis() /datum/controller/subsystem/tgui/proc/close_all_uis()
var/close_count = 0 var/close_count = 0
for(var/src_object_key in open_uis) for(var/src_object_key in open_uis)
for(var/ui_key in open_uis[src_object_key]) for(var/ui_key in open_uis[src_object_key])
@@ -127,7 +127,7 @@
* *
* return int The number of UIs updated. * return int The number of UIs updated.
**/ **/
/datum/subsystem/tgui/proc/update_user_uis(mob/user, datum/src_object = null, ui_key = null) /datum/controller/subsystem/tgui/proc/update_user_uis(mob/user, datum/src_object = null, ui_key = null)
if(isnull(user.open_uis) || !istype(user.open_uis, /list) || open_uis.len == 0) if(isnull(user.open_uis) || !istype(user.open_uis, /list) || open_uis.len == 0)
return 0 // Couldn't find any UIs for this user. return 0 // Couldn't find any UIs for this user.
@@ -149,7 +149,7 @@
* *
* return int The number of UIs closed. * return int The number of UIs closed.
**/ **/
/datum/subsystem/tgui/proc/close_user_uis(mob/user, datum/src_object = null, ui_key = null) /datum/controller/subsystem/tgui/proc/close_user_uis(mob/user, datum/src_object = null, ui_key = null)
if(isnull(user.open_uis) || !istype(user.open_uis, /list) || open_uis.len == 0) if(isnull(user.open_uis) || !istype(user.open_uis, /list) || open_uis.len == 0)
return 0 // Couldn't find any UIs for this user. return 0 // Couldn't find any UIs for this user.
@@ -167,7 +167,7 @@
* *
* required ui datum/tgui The UI to be added. * required ui datum/tgui The UI to be added.
**/ **/
/datum/subsystem/tgui/proc/on_open(datum/tgui/ui) /datum/controller/subsystem/tgui/proc/on_open(datum/tgui/ui)
var/src_object_key = "\ref[ui.src_object]" var/src_object_key = "\ref[ui.src_object]"
if(isnull(open_uis[src_object_key]) || !istype(open_uis[src_object_key], /list)) if(isnull(open_uis[src_object_key]) || !istype(open_uis[src_object_key], /list))
open_uis[src_object_key] = list(ui.ui_key = list()) // Make a list for the ui_key and src_object. open_uis[src_object_key] = list(ui.ui_key = list()) // Make a list for the ui_key and src_object.
@@ -189,7 +189,7 @@
* *
* return bool If the UI was removed or not. * return bool If the UI was removed or not.
**/ **/
/datum/subsystem/tgui/proc/on_close(datum/tgui/ui) /datum/controller/subsystem/tgui/proc/on_close(datum/tgui/ui)
var/src_object_key = "\ref[ui.src_object]" var/src_object_key = "\ref[ui.src_object]"
if(isnull(open_uis[src_object_key]) || !istype(open_uis[src_object_key], /list)) if(isnull(open_uis[src_object_key]) || !istype(open_uis[src_object_key], /list))
return 0 // It wasn't open. return 0 // It wasn't open.
@@ -219,7 +219,7 @@
* *
* return int The number of UIs closed. * return int The number of UIs closed.
**/ **/
/datum/subsystem/tgui/proc/on_logout(mob/user) /datum/controller/subsystem/tgui/proc/on_logout(mob/user)
return close_user_uis(user) return close_user_uis(user)
/** /**
@@ -232,7 +232,7 @@
* *
* return bool If the UIs were transferred. * return bool If the UIs were transferred.
**/ **/
/datum/subsystem/tgui/proc/on_transfer(mob/source, mob/target) /datum/controller/subsystem/tgui/proc/on_transfer(mob/source, mob/target)
if(!source || isnull(source.open_uis) || !istype(source.open_uis, /list) || open_uis.len == 0) if(!source || isnull(source.open_uis) || !istype(source.open_uis, /list) || open_uis.len == 0)
return 0 // The old mob had no open UIs. return 0 // The old mob had no open UIs.

View File

@@ -56,7 +56,7 @@
data_core = new /datum/datacore() data_core = new /datum/datacore()
Master.Setup(10, FALSE) Master.Initialize(10, FALSE)
#define IRC_STATUS_THROTTLE 50 #define IRC_STATUS_THROTTLE 50
/world/Topic(T, addr, master, key) /world/Topic(T, addr, master, key)