diff --git a/code/__DEFINES/MC.dm b/code/__DEFINES/MC.dm index 86c43d15907..ce4935a6e19 100644 --- a/code/__DEFINES/MC.dm +++ b/code/__DEFINES/MC.dm @@ -3,7 +3,7 @@ #define MC_AVERAGE_FAST(average, current) (0.7 * (average) + 0.3 * (current)) #define MC_AVERAGE(average, current) (0.8 * (average) + 0.2 * (current)) #define MC_AVERAGE_SLOW(average, current) (0.9 * (average) + 0.1 * (current)) -#define NEW_SS_GLOBAL(varname) if(varname != src){if(istype(varname)){Recover();qdel(varname);}varname = src;} +#define NEW_SS_GLOBAL2(varname) if(varname != src){if(istype(varname)){Recover();qdel(varname);}varname = src;} #define START_PROCESSING(Processor, Datum) if (!Datum.isprocessing) {Datum.isprocessing = 1;Processor.processing += Datum} #define STOP_PROCESSING(Processor, Datum) Datum.isprocessing = 0;Processor.processing -= Datum @@ -66,4 +66,18 @@ #define TIMER_STOPPABLE 0x8 //To be used with TIMER_UNIQUE //prevents distinguishing identical timers with the wait variable -#define TIMER_NO_HASH_WAIT 0x10 \ No newline at end of file +#define TIMER_NO_HASH_WAIT 0x10 + +#define SUBSYSTEM(X) var/datum/controller/subsystem/##X/SS##X;\ +/datum/controller/subsystem/##X/New(){\ + ..();\ + NEW_SS_GLOBAL2(SS##X);\ +}\ +/datum/controller/subsystem/##X + +#define PROCESSING_SUBSYSTEM(X) var/datum/controller/subsystem/processing/##X/SS##X;\ +/datum/controller/subsystem/processing/##X/New(){\ + ..();\ + NEW_SS_GLOBAL2(SS##X);\ +}\ +/datum/controller/subsystem/processing/##X \ No newline at end of file diff --git a/code/controllers/subsystem.dm b/code/controllers/subsystem.dm index 2078d88656d..2a1caed3119 100644 --- a/code/controllers/subsystem.dm +++ b/code/controllers/subsystem.dm @@ -1,5 +1,4 @@ - /datum/controller/subsystem // Metadata; you should define these. name = "fire coderbus" //name of the subsystem @@ -29,8 +28,15 @@ var/datum/controller/subsystem/queue_next var/datum/controller/subsystem/queue_prev -// Used to initialize the subsystem BEFORE the map has loaded +//Do not override /datum/controller/subsystem/New() + ..() + PreInit() + +// Used to initialize the subsystem BEFORE the map has loaded +// Prefer to use Initialize if possible +/datum/controller/subsystem/proc/PreInit() + return //This is used so the mc knows when the subsystem sleeps. do not override. /datum/controller/subsystem/proc/ignite(resumed = 0) diff --git a/code/controllers/subsystem/acid.dm b/code/controllers/subsystem/acid.dm index 2dc2aa80a08..0c3e8799d44 100644 --- a/code/controllers/subsystem/acid.dm +++ b/code/controllers/subsystem/acid.dm @@ -1,6 +1,4 @@ -var/datum/controller/subsystem/acid/SSacid - -/datum/controller/subsystem/acid +SUBSYSTEM(acid) name = "Acid" priority = 40 flags = SS_NO_INIT|SS_BACKGROUND @@ -8,10 +6,6 @@ var/datum/controller/subsystem/acid/SSacid var/list/currentrun = list() var/list/processing = list() -/datum/controller/subsystem/acid/New() - NEW_SS_GLOBAL(SSacid) - - /datum/controller/subsystem/acid/stat_entry() ..("P:[processing.len]") diff --git a/code/controllers/subsystem/air.dm b/code/controllers/subsystem/air.dm index 6a004adef64..2c0c5622bf2 100644 --- a/code/controllers/subsystem/air.dm +++ b/code/controllers/subsystem/air.dm @@ -5,9 +5,8 @@ #define SSAIR_HIGHPRESSURE 5 #define SSAIR_HOTSPOTS 6 #define SSAIR_SUPERCONDUCTIVITY 7 -var/datum/controller/subsystem/air/SSair -/datum/controller/subsystem/air +SUBSYSTEM(air) name = "Air" init_order = -1 priority = 20 @@ -41,9 +40,6 @@ var/datum/controller/subsystem/air/SSair var/map_loading = TRUE var/list/queued_for_activation -/datum/controller/subsystem/air/New() - NEW_SS_GLOBAL(SSair) - /datum/controller/subsystem/air/stat_entry(msg) msg += "C:{" msg += "AT:[round(cost_turfs,1)]|" diff --git a/code/controllers/subsystem/assets.dm b/code/controllers/subsystem/assets.dm index ca1611d8bcf..4b67f536f2a 100644 --- a/code/controllers/subsystem/assets.dm +++ b/code/controllers/subsystem/assets.dm @@ -1,14 +1,9 @@ -var/datum/controller/subsystem/assets/SSassets - -/datum/controller/subsystem/assets +SUBSYSTEM(assets) name = "Assets" init_order = -3 flags = SS_NO_FIRE var/list/cache = list() -/datum/controller/subsystem/assets/New() - NEW_SS_GLOBAL(SSassets) - /datum/controller/subsystem/assets/Initialize(timeofday) for(var/type in typesof(/datum/asset) - list(/datum/asset, /datum/asset/simple)) var/datum/asset/A = new type() diff --git a/code/controllers/subsystem/atoms.dm b/code/controllers/subsystem/atoms.dm index 7fe32d7fe88..9287500729e 100644 --- a/code/controllers/subsystem/atoms.dm +++ b/code/controllers/subsystem/atoms.dm @@ -1,10 +1,8 @@ -var/datum/controller/subsystem/atoms/SSatoms - #define INITIALIZATION_INSSATOMS 0 //New should not call Initialize #define INITIALIZATION_INNEW_MAPLOAD 1 //New should call Initialize(TRUE) #define INITIALIZATION_INNEW_REGULAR 2 //New should call Initialize(FALSE) -/datum/controller/subsystem/atoms +SUBSYSTEM(atoms) name = "Atoms" init_order = 11 flags = SS_NO_FIRE @@ -12,9 +10,6 @@ var/datum/controller/subsystem/atoms/SSatoms var/initialized = INITIALIZATION_INSSATOMS var/old_initialized -/datum/controller/subsystem/atoms/New() - NEW_SS_GLOBAL(SSatoms) - /datum/controller/subsystem/atoms/Initialize(timeofday) 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. diff --git a/code/controllers/subsystem/augury.dm b/code/controllers/subsystem/augury.dm index d1a9424a197..af05e95af2a 100644 --- a/code/controllers/subsystem/augury.dm +++ b/code/controllers/subsystem/augury.dm @@ -1,6 +1,4 @@ -var/datum/controller/subsystem/augury/SSaugury - -/datum/controller/subsystem/augury +SUBSYSTEM(augury) name = "Augury" flags = SS_NO_INIT diff --git a/code/controllers/subsystem/communications.dm b/code/controllers/subsystem/communications.dm index e17557a0fa0..3024ef3a06d 100644 --- a/code/controllers/subsystem/communications.dm +++ b/code/controllers/subsystem/communications.dm @@ -1,9 +1,7 @@ #define COMMUNICATION_COOLDOWN 600 #define COMMUNICATION_COOLDOWN_AI 600 -var/datum/controller/subsystem/communications/SScommunications - -/datum/controller/subsystem/communications +SUBSYSTEM(communications) name = "Communications" flags = SS_NO_INIT | SS_NO_FIRE diff --git a/code/controllers/subsystem/diseases.dm b/code/controllers/subsystem/disease.dm similarity index 61% rename from code/controllers/subsystem/diseases.dm rename to code/controllers/subsystem/disease.dm index 06a4961eb92..8014ea25261 100644 --- a/code/controllers/subsystem/diseases.dm +++ b/code/controllers/subsystem/disease.dm @@ -1,19 +1,14 @@ -var/datum/controller/subsystem/diseases/SSdisease - -/datum/controller/subsystem/diseases - name = "Diseases" +SUBSYSTEM(disease) + name = "Disease" flags = SS_KEEP_TIMING|SS_NO_INIT var/list/currentrun = list() var/list/processing = list() -/datum/controller/subsystem/diseases/New() - NEW_SS_GLOBAL(SSdisease) - -/datum/controller/subsystem/diseases/stat_entry(msg) +/datum/controller/subsystem/disease/stat_entry(msg) ..("P:[processing.len]") -/datum/controller/subsystem/diseases/fire(resumed = 0) +/datum/controller/subsystem/disease/fire(resumed = 0) if(!resumed) src.currentrun = processing.Copy() //cache for sanic speed (lists are references anyways) diff --git a/code/controllers/subsystem/events.dm b/code/controllers/subsystem/events.dm index f1d513f72aa..9401191ea03 100644 --- a/code/controllers/subsystem/events.dm +++ b/code/controllers/subsystem/events.dm @@ -1,6 +1,4 @@ -var/datum/controller/subsystem/events/SSevents - -/datum/controller/subsystem/events +SUBSYSTEM(events) name = "Events" init_order = 6 @@ -15,11 +13,6 @@ var/datum/controller/subsystem/events/SSevents var/list/holidays //List of all holidays occuring today or null if no holidays var/wizardmode = 0 - -/datum/controller/subsystem/events/New() - NEW_SS_GLOBAL(SSevents) - - /datum/controller/subsystem/events/Initialize(time, zlevel) for(var/type in typesof(/datum/round_event_control)) var/datum/round_event_control/E = new type() diff --git a/code/controllers/subsystem/fire_burning.dm b/code/controllers/subsystem/fire_burning.dm index d420cd5a122..1f89330bdce 100644 --- a/code/controllers/subsystem/fire_burning.dm +++ b/code/controllers/subsystem/fire_burning.dm @@ -1,6 +1,4 @@ -var/datum/controller/subsystem/fire_burning/SSfire_burning - -/datum/controller/subsystem/fire_burning +SUBSYSTEM(fire_burning) name = "Fire Burning" priority = 40 flags = SS_NO_INIT|SS_BACKGROUND diff --git a/code/controllers/subsystem/garbage.dm b/code/controllers/subsystem/garbage.dm index 3321432d15e..83f166019a2 100644 --- a/code/controllers/subsystem/garbage.dm +++ b/code/controllers/subsystem/garbage.dm @@ -1,6 +1,4 @@ -var/datum/controller/subsystem/garbage/SSgarbage - -/datum/controller/subsystem/garbage +SUBSYSTEM(garbage) name = "Garbage" priority = 15 wait = 5 diff --git a/code/controllers/subsystem/icon_smooth.dm b/code/controllers/subsystem/icon_smooth.dm index a52089db2a5..509cb285d7c 100644 --- a/code/controllers/subsystem/icon_smooth.dm +++ b/code/controllers/subsystem/icon_smooth.dm @@ -1,6 +1,4 @@ -var/datum/controller/subsystem/icon_smooth/SSicon_smooth - -/datum/controller/subsystem/icon_smooth +SUBSYSTEM(icon_smooth) name = "Icon Smoothing" init_order = -5 wait = 1 diff --git a/code/controllers/subsystem/inbounds.dm b/code/controllers/subsystem/inbounds.dm index 169b8a44b26..9db1af683ac 100644 --- a/code/controllers/subsystem/inbounds.dm +++ b/code/controllers/subsystem/inbounds.dm @@ -1,5 +1,4 @@ -var/datum/controller/subsystem/inbounds/SSinbounds -/datum/controller/subsystem/inbounds +SUBSYSTEM(inbounds) name = "Inbounds" priority = 40 flags = SS_NO_INIT diff --git a/code/controllers/subsystem/ipintel.dm b/code/controllers/subsystem/ipintel.dm index 07954f54767..9910270cdc4 100644 --- a/code/controllers/subsystem/ipintel.dm +++ b/code/controllers/subsystem/ipintel.dm @@ -1,6 +1,4 @@ -var/datum/controller/subsystem/ipintel/SSipintel - -/datum/controller/subsystem/ipintel +SUBSYSTEM(ipintel) name = "XKeyScore" init_order = -10 flags = SS_NO_FIRE diff --git a/code/controllers/subsystem/job.dm b/code/controllers/subsystem/job.dm index 55684e590fa..d554eaece4b 100644 --- a/code/controllers/subsystem/job.dm +++ b/code/controllers/subsystem/job.dm @@ -1,6 +1,4 @@ -var/datum/controller/subsystem/job/SSjob - -/datum/controller/subsystem/job +SUBSYSTEM(job) name = "Jobs" init_order = 14 flags = SS_NO_FIRE @@ -14,10 +12,6 @@ var/datum/controller/subsystem/job/SSjob var/list/prioritized_jobs = list() -/datum/controller/subsystem/job/New() - NEW_SS_GLOBAL(SSjob) - - /datum/controller/subsystem/job/Initialize(timeofday) if(!occupations.len) SetupOccupations() diff --git a/code/controllers/subsystem/lighting.dm b/code/controllers/subsystem/lighting.dm index 3d66716236e..fd29df6870f 100644 --- a/code/controllers/subsystem/lighting.dm +++ b/code/controllers/subsystem/lighting.dm @@ -1,11 +1,8 @@ -var/datum/controller/subsystem/lighting/SSlighting - 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_objects = list() // List of lighting objects queued for update. - -/datum/controller/subsystem/lighting +SUBSYSTEM(lighting) name = "Lighting" wait = 2 init_order = -20 @@ -13,11 +10,6 @@ var/list/lighting_update_objects = list() // List of lighting objects queued fo var/initialized = FALSE - -/datum/controller/subsystem/lighting/New() - NEW_SS_GLOBAL(SSlighting) - - /datum/controller/subsystem/lighting/stat_entry() ..("L:[lighting_update_lights.len]|C:[lighting_update_corners.len]|O:[lighting_update_objects.len]") diff --git a/code/controllers/subsystem/machines.dm b/code/controllers/subsystem/machines.dm index e7c8d93a42e..7c3aaacb0c3 100644 --- a/code/controllers/subsystem/machines.dm +++ b/code/controllers/subsystem/machines.dm @@ -1,6 +1,4 @@ -var/datum/controller/subsystem/machines/SSmachines - -/datum/controller/subsystem/machines +SUBSYSTEM(machines) name = "Machines" init_order = 9 flags = SS_KEEP_TIMING @@ -8,7 +6,6 @@ var/datum/controller/subsystem/machines/SSmachines var/list/currentrun = list() var/list/powernets = list() - /datum/controller/subsystem/machines/Initialize() makepowernets() fire() @@ -25,10 +22,6 @@ var/datum/controller/subsystem/machines/SSmachines NewPN.add_cable(PC) propagate_network(PC,PC.powernet) -/datum/controller/subsystem/machines/New() - NEW_SS_GLOBAL(SSmachines) - - /datum/controller/subsystem/machines/stat_entry() ..("M:[processing.len]|PN:[powernets.len]") diff --git a/code/controllers/subsystem/mapping.dm b/code/controllers/subsystem/mapping.dm index 574dce5bd5f..88d1b06ef5e 100644 --- a/code/controllers/subsystem/mapping.dm +++ b/code/controllers/subsystem/mapping.dm @@ -1,6 +1,4 @@ -var/datum/controller/subsystem/mapping/SSmapping - -/datum/controller/subsystem/mapping +SUBSYSTEM(mapping) name = "Mapping" init_order = 12 flags = SS_NO_FIRE @@ -21,8 +19,7 @@ var/datum/controller/subsystem/mapping/SSmapping var/list/shuttle_templates = list() var/list/shelter_templates = list() -/datum/controller/subsystem/mapping/New() - NEW_SS_GLOBAL(SSmapping) +/datum/controller/subsystem/mapping/PreInit() if(!previous_map_config) previous_map_config = new("data/previous_map.json", delete_after = TRUE) if(previous_map_config.defaulted) diff --git a/code/controllers/subsystem/minimap.dm b/code/controllers/subsystem/minimap.dm index 8d8fd6fcec4..93d476273c5 100644 --- a/code/controllers/subsystem/minimap.dm +++ b/code/controllers/subsystem/minimap.dm @@ -1,6 +1,4 @@ -var/datum/controller/subsystem/minimap/SSminimap - -/datum/controller/subsystem/minimap +SUBSYSTEM(minimap) name = "Minimap" init_order = -2 flags = SS_NO_FIRE @@ -9,9 +7,6 @@ var/datum/controller/subsystem/minimap/SSminimap var/list/z_levels = list(ZLEVEL_STATION) -/datum/controller/subsystem/minimap/New() - NEW_SS_GLOBAL(SSminimap) - /datum/controller/subsystem/minimap/Initialize(timeofday) var/hash = md5(SSmapping.config.GetFullMapPath()) if(config.generate_minimaps) diff --git a/code/controllers/subsystem/mobs.dm b/code/controllers/subsystem/mobs.dm index 99cbde81d5b..999ce4707dc 100644 --- a/code/controllers/subsystem/mobs.dm +++ b/code/controllers/subsystem/mobs.dm @@ -1,6 +1,4 @@ -var/datum/controller/subsystem/mobs/SSmobs - -/datum/controller/subsystem/mobs +SUBSYSTEM(mobs) name = "Mobs" init_order = 4 priority = 100 @@ -8,10 +6,6 @@ var/datum/controller/subsystem/mobs/SSmobs var/list/currentrun = list() -/datum/controller/subsystem/mobs/New() - NEW_SS_GLOBAL(SSmobs) - - /datum/controller/subsystem/mobs/stat_entry() ..("P:[mob_list.len]") diff --git a/code/controllers/subsystem/npcpool.dm b/code/controllers/subsystem/npcpool.dm index 3c7c1a169f3..1664a5cab59 100644 --- a/code/controllers/subsystem/npcpool.dm +++ b/code/controllers/subsystem/npcpool.dm @@ -1,6 +1,4 @@ -var/datum/controller/subsystem/npcpool/SSnpcpool - -/datum/controller/subsystem/npcpool +SUBSYSTEM(npcpool) name = "NPC Pool" init_order = 17 flags = SS_POST_FIRE_TIMING|SS_NO_INIT|SS_NO_TICK_CHECK @@ -18,9 +16,6 @@ var/datum/controller/subsystem/npcpool/SSnpcpool if(istype(toInsert,/mob/living/carbon/human/interactive)) botPool_l |= toInsert -/datum/controller/subsystem/npcpool/New() - NEW_SS_GLOBAL(SSnpcpool) - /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]") diff --git a/code/controllers/subsystem/orbit.dm b/code/controllers/subsystem/orbit.dm index 2497e80d89b..12026eedee3 100644 --- a/code/controllers/subsystem/orbit.dm +++ b/code/controllers/subsystem/orbit.dm @@ -1,6 +1,4 @@ -var/datum/controller/subsystem/orbit/SSorbit - -/datum/controller/subsystem/orbit +SUBSYSTEM(orbit) name = "Orbits" priority = 35 wait = 2 @@ -9,10 +7,6 @@ var/datum/controller/subsystem/orbit/SSorbit var/list/currentrun = list() var/list/processing = list() -/datum/controller/subsystem/orbit/New() - NEW_SS_GLOBAL(SSorbit) - - /datum/controller/subsystem/orbit/stat_entry() ..("P:[processing.len]") diff --git a/code/controllers/subsystem/pai.dm b/code/controllers/subsystem/pai.dm index 9203c472d15..e49097c84e4 100644 --- a/code/controllers/subsystem/pai.dm +++ b/code/controllers/subsystem/pai.dm @@ -1,7 +1,5 @@ -var/datum/controller/subsystem/pai/SSpai var/list/obj/item/device/paicard/pai_card_list = list() - -/datum/controller/subsystem/pai +SUBSYSTEM(pai) name = "pAI" flags = SS_NO_INIT|SS_NO_FIRE @@ -10,9 +8,6 @@ var/list/obj/item/device/paicard/pai_card_list = list() var/ghost_spam = FALSE var/spam_delay = 100 -/datum/controller/subsystem/pai/New() - NEW_SS_GLOBAL(SSpai) - /datum/controller/subsystem/pai/Topic(href, href_list[]) if(href_list["download"]) var/datum/paiCandidate/candidate = locate(href_list["candidate"]) diff --git a/code/controllers/subsystem/parallax.dm b/code/controllers/subsystem/parallax.dm index fb8e3170866..b4cc2a1d62b 100644 --- a/code/controllers/subsystem/parallax.dm +++ b/code/controllers/subsystem/parallax.dm @@ -1,16 +1,10 @@ -var/datum/controller/subsystem/parallax/SSparallax - -/datum/controller/subsystem/parallax +SUBSYSTEM(parallax) name = "Parallax" wait = 2 flags = SS_POST_FIRE_TIMING | SS_FIRE_IN_LOBBY | SS_BACKGROUND | SS_NO_INIT priority = 65 var/list/currentrun -/datum/controller/subsystem/parallax/New() - NEW_SS_GLOBAL(SSparallax) - return ..() - /datum/controller/subsystem/parallax/fire(resumed = 0) if (!resumed) src.currentrun = clients.Copy() diff --git a/code/controllers/subsystem/persistence.dm b/code/controllers/subsystem/persistence.dm index 818e64940a1..7967086c6d0 100644 --- a/code/controllers/subsystem/persistence.dm +++ b/code/controllers/subsystem/persistence.dm @@ -1,6 +1,4 @@ -var/datum/controller/subsystem/persistence/SSpersistence - -/datum/controller/subsystem/persistence +SUBSYSTEM(persistence) name = "Persistence" init_order = -100 flags = SS_NO_FIRE @@ -13,9 +11,6 @@ var/datum/controller/subsystem/persistence/SSpersistence var/list/saved_messages = list() var/savefile/chisel_messages_sav -/datum/controller/subsystem/persistence/New() - NEW_SS_GLOBAL(SSpersistence) - /datum/controller/subsystem/persistence/Initialize() LoadSatchels() LoadPoly() diff --git a/code/controllers/subsystem/ping.dm b/code/controllers/subsystem/ping.dm index d1297c692c8..82888df4c58 100644 --- a/code/controllers/subsystem/ping.dm +++ b/code/controllers/subsystem/ping.dm @@ -1,17 +1,12 @@ #define PING_BUFFER_TIME 25 -var/datum/controller/subsystem/ping/SSping - -/datum/controller/subsystem/ping +SUBSYSTEM(ping) name = "Ping" wait = 6 flags = SS_NO_INIT|SS_POST_FIRE_TIMING|SS_FIRE_IN_LOBBY priority = 10 var/list/currentrun -/datum/controller/subsystem/ping/New() - NEW_SS_GLOBAL(SSping) - /datum/controller/subsystem/ping/fire(resumed = FALSE) if (!resumed) src.currentrun = clients.Copy() diff --git a/code/controllers/subsystem/processing/fastprocess.dm b/code/controllers/subsystem/processing/fastprocess.dm index 53898e142e7..3d87eab340b 100644 --- a/code/controllers/subsystem/processing/fastprocess.dm +++ b/code/controllers/subsystem/processing/fastprocess.dm @@ -1,10 +1,6 @@ //Fires five times every second. -var/datum/controller/subsystem/processing/fastprocess/SSfastprocess -/datum/controller/subsystem/processing/fastprocess +PROCESSING_SUBSYTEM(fastprocess) name = "Fast Processing" wait = 2 stat_tag = "FP" - -/datum/controller/subsystem/processing/fastprocess/New() - NEW_SS_GLOBAL(SSfastprocess) diff --git a/code/controllers/subsystem/processing/flightpacks.dm b/code/controllers/subsystem/processing/flightpacks.dm index fee475d7305..753eb5042f0 100644 --- a/code/controllers/subsystem/processing/flightpacks.dm +++ b/code/controllers/subsystem/processing/flightpacks.dm @@ -1,11 +1,7 @@ -var/datum/controller/subsystem/processing/flightpacks/SSflightpacks -/datum/controller/subsystem/processing/flightpacks +PROCESSING_SUBSYTEM(flightpacks) name = "Flightpack Movement" priority = 30 wait = 2 stat_tag = "FM" flags = SS_NO_INIT|SS_TICKER|SS_KEEP_TIMING - -/datum/controller/subsystem/processing/flightpacks/New() - NEW_SS_GLOBAL(SSflightpacks) diff --git a/code/controllers/subsystem/processing/overlays.dm b/code/controllers/subsystem/processing/overlays.dm index 5cb64909826..36ed5122cd3 100644 --- a/code/controllers/subsystem/processing/overlays.dm +++ b/code/controllers/subsystem/processing/overlays.dm @@ -1,6 +1,4 @@ -var/datum/controller/subsystem/processing/overlays/SSoverlays - -/datum/controller/subsystem/processing/overlays +PROCESSING_SUBSYSTEM(overlays) name = "Overlay" flags = SS_TICKER|SS_FIRE_IN_LOBBY wait = 1 @@ -13,8 +11,7 @@ var/datum/controller/subsystem/processing/overlays/SSoverlays var/list/overlay_icon_cache var/initialized = FALSE -/datum/controller/subsystem/processing/overlays/New() - NEW_SS_GLOBAL(SSoverlays) +/datum/controller/subsystem/processing/overlays/PreInit() LAZYINITLIST(overlay_icon_state_caches) LAZYINITLIST(overlay_icon_cache) diff --git a/code/controllers/subsystem/processing/processing.dm b/code/controllers/subsystem/processing/processing.dm index ef03ce6db64..444625c6eaf 100644 --- a/code/controllers/subsystem/processing/processing.dm +++ b/code/controllers/subsystem/processing/processing.dm @@ -1,7 +1,6 @@ //Used to process objects. Fires once every second. -var/datum/controller/subsystem/processing/SSprocessing -/datum/controller/subsystem/processing +SUBSYSTEM(processing) name = "Processing" priority = 25 flags = SS_BACKGROUND|SS_POST_FIRE_TIMING|SS_NO_INIT @@ -11,9 +10,6 @@ var/datum/controller/subsystem/processing/SSprocessing var/list/processing = list() var/list/currentrun = list() -/datum/controller/subsystem/processing/New() - NEW_SS_GLOBAL(SSprocessing) - /datum/controller/subsystem/processing/stat_entry() ..("[stat_tag]:[processing.len]") diff --git a/code/controllers/subsystem/radio.dm b/code/controllers/subsystem/radio.dm index 922b1764282..d5ca65b8119 100644 --- a/code/controllers/subsystem/radio.dm +++ b/code/controllers/subsystem/radio.dm @@ -1,15 +1,10 @@ -var/datum/controller/subsystem/radio/SSradio - -/datum/controller/subsystem/radio +SUBSYSTEM(radio) name = "Radio" init_order = 18 flags = SS_NO_FIRE|SS_NO_INIT var/list/datum/radio_frequency/frequencies = list() -/datum/controller/subsystem/radio/New() - NEW_SS_GLOBAL(SSradio) - /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/datum/radio_frequency/frequency = frequencies[f_text] diff --git a/code/controllers/subsystem/religion.dm b/code/controllers/subsystem/religion.dm index fe07d4e1ea5..68c2100cd69 100644 --- a/code/controllers/subsystem/religion.dm +++ b/code/controllers/subsystem/religion.dm @@ -1,6 +1,4 @@ -var/datum/controller/subsystem/religion/SSreligion - -/datum/controller/subsystem/religion +SUBSYSTEM(religion) name = "Religion" init_order = 19 flags = SS_NO_FIRE|SS_NO_INIT @@ -12,6 +10,3 @@ var/datum/controller/subsystem/religion/SSreligion var/Bible_deity_name var/holy_weapon - -/datum/controller/subsystem/religion/New() - NEW_SS_GLOBAL(SSreligion) diff --git a/code/controllers/subsystem/server_maint.dm b/code/controllers/subsystem/server_maint.dm index c3a9aa64adf..eca1065588a 100644 --- a/code/controllers/subsystem/server_maint.dm +++ b/code/controllers/subsystem/server_maint.dm @@ -1,6 +1,4 @@ -var/datum/controller/subsystem/server_maint/SSserver - -/datum/controller/subsystem/server_maint +SUBSYSTEM(server_maint) name = "Server Tasks" wait = 6000 flags = SS_NO_TICK_CHECK diff --git a/code/controllers/subsystem/shuttle.dm b/code/controllers/subsystem/shuttle.dm index cc3304f94dd..d846dc64c6d 100644 --- a/code/controllers/subsystem/shuttle.dm +++ b/code/controllers/subsystem/shuttle.dm @@ -1,9 +1,7 @@ #define HIGHLIGHT_DYNAMIC_TRANSIT 1 -var/datum/controller/subsystem/shuttle/SSshuttle - -/datum/controller/subsystem/shuttle - name = "Shuttles" +SUBSYSTEM(shuttle) + name = "Shuttle" wait = 10 init_order = 3 flags = SS_KEEP_TIMING|SS_NO_TICK_CHECK @@ -47,9 +45,6 @@ var/datum/controller/subsystem/shuttle/SSshuttle var/lockdown = FALSE //disallow transit after nuke goes off -/datum/controller/subsystem/shuttle/New() - NEW_SS_GLOBAL(SSshuttle) - /datum/controller/subsystem/shuttle/Initialize(timeofday) if(!emergency) WARNING("No /obj/docking_port/mobile/arrivals placed on the map!") diff --git a/code/controllers/subsystem/spacedrift.dm b/code/controllers/subsystem/spacedrift.dm index 993c55ec9c5..95edd6358a6 100644 --- a/code/controllers/subsystem/spacedrift.dm +++ b/code/controllers/subsystem/spacedrift.dm @@ -1,6 +1,4 @@ -var/datum/controller/subsystem/spacedrift/SSspacedrift - -/datum/controller/subsystem/spacedrift +SUBSYSTEM(spacedrift) name = "Space Drift" priority = 30 wait = 5 @@ -9,10 +7,6 @@ var/datum/controller/subsystem/spacedrift/SSspacedrift var/list/currentrun = list() var/list/processing = list() -/datum/controller/subsystem/spacedrift/New() - NEW_SS_GLOBAL(SSspacedrift) - - /datum/controller/subsystem/spacedrift/stat_entry() ..("P:[processing.len]") diff --git a/code/controllers/subsystem/squeak.dm b/code/controllers/subsystem/squeak.dm index 1bfef29a238..ba7a493d4aa 100644 --- a/code/controllers/subsystem/squeak.dm +++ b/code/controllers/subsystem/squeak.dm @@ -1,19 +1,14 @@ -var/datum/controller/subsystem/squeak/SSsqueak - // The Squeak // because this is about placement of mice mobs, and nothing to do with // mice - the computer peripheral -/datum/controller/subsystem/squeak +SUBSYSTEM(squeak) name = "Squeak" priority = 40 flags = SS_NO_FIRE var/list/exposed_wires = list() -/datum/controller/subsystem/squeak/New() - NEW_SS_GLOBAL(SSsqueak) - /datum/controller/subsystem/squeak/Initialize(timeofday) trigger_migration() diff --git a/code/controllers/subsystem/stickyban.dm b/code/controllers/subsystem/stickyban.dm index 23900adb4e1..3588cbac274 100644 --- a/code/controllers/subsystem/stickyban.dm +++ b/code/controllers/subsystem/stickyban.dm @@ -1,15 +1,10 @@ -var/datum/controller/subsystem/stickyban/SSstickyban - -/datum/controller/subsystem/stickyban +SUBSYSTEM(stickyban) name = "Sticky Ban" init_order = -10 flags = SS_NO_FIRE var/list/cache = list() -/datum/controller/subsystem/stickyban/New() - NEW_SS_GLOBAL(SSstickyban) - /datum/controller/subsystem/stickyban/Initialize(timeofday) var/list/bannedkeys = world.GetConfig("ban") //sanitize the sticky ban list diff --git a/code/controllers/subsystem/sun.dm b/code/controllers/subsystem/sun.dm index 65dc87005fb..24fee1aaf5a 100644 --- a/code/controllers/subsystem/sun.dm +++ b/code/controllers/subsystem/sun.dm @@ -1,6 +1,4 @@ -var/datum/controller/subsystem/sun/SSsun - -/datum/controller/subsystem/sun +SUBSYTEM(sun) name = "Sun" wait = 600 init_order = 2 @@ -11,9 +9,7 @@ var/datum/controller/subsystem/sun/SSsun var/rate var/list/solars = list() -/datum/controller/subsystem/sun/New() - NEW_SS_GLOBAL(SSsun) - +/datum/controller/subsystem/sun/PreInit() angle = rand (0,360) // the station position to the sun is randomised at round start rate = rand(50,200)/100 // 50% - 200% of standard rotation if(prob(50)) // same chance to rotate clockwise than counter-clockwise diff --git a/code/controllers/subsystem/tgui.dm b/code/controllers/subsystem/tgui.dm index 04cf2cc38f3..bbbc335bec4 100644 --- a/code/controllers/subsystem/tgui.dm +++ b/code/controllers/subsystem/tgui.dm @@ -1,6 +1,4 @@ -var/datum/controller/subsystem/tgui/SStgui - -/datum/controller/subsystem/tgui +SUBSYSTEM(tgui) name = "tgui" wait = 9 init_order = 16 @@ -12,11 +10,9 @@ var/datum/controller/subsystem/tgui/SStgui var/list/processing_uis = list() // A list of processing UIs, ungrouped. var/basehtml // The HTML base used for all UIs. -/datum/controller/subsystem/tgui/New() +/datum/controller/subsystem/tgui/PreInit() basehtml = file2text('tgui/tgui.html') // Read the HTML from disk. - NEW_SS_GLOBAL(SStgui) - /datum/controller/subsystem/tgui/Shutdown() close_all_uis() diff --git a/code/controllers/subsystem/throwing.dm b/code/controllers/subsystem/throwing.dm index 260f5698eca..303c6c01d2a 100644 --- a/code/controllers/subsystem/throwing.dm +++ b/code/controllers/subsystem/throwing.dm @@ -1,20 +1,14 @@ #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. -var/datum/controller/subsystem/throwing/SSthrowing -/datum/controller/subsystem/throwing +SUBSYSTEM(throwing) name = "Throwing" priority = 25 wait = 1 flags = SS_NO_INIT|SS_KEEP_TIMING|SS_TICKER var/list/currentrun - var/list/processing - -/datum/controller/subsystem/throwing/New() - NEW_SS_GLOBAL(SSthrowing) - processing = list() - + var/list/processing = list() /datum/controller/subsystem/throwing/stat_entry() ..("P:[processing.len]") diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index 6c15fb297e7..04597aacb22 100644 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -2,9 +2,7 @@ var/round_start_time = 0 -var/datum/controller/subsystem/ticker/SSticker - -/datum/controller/subsystem/ticker +SUBSYSTEM(ticker) name = "Ticker" init_order = 13 @@ -58,9 +56,6 @@ var/datum/controller/subsystem/ticker/SSticker var/late_join_disabled -/datum/controller/subsystem/ticker/New() - NEW_SS_GLOBAL(SSticker) - /datum/controller/subsystem/ticker/Initialize(timeofday) var/list/music = file2list(ROUND_START_MUSIC_LIST, "\n") login_music = pick(music) diff --git a/code/controllers/subsystem/time_track.dm b/code/controllers/subsystem/time_track.dm index a24b803cf61..8cc47728042 100644 --- a/code/controllers/subsystem/time_track.dm +++ b/code/controllers/subsystem/time_track.dm @@ -1,6 +1,4 @@ -var/datum/controller/subsystem/time_track/SStime_track - -/datum/controller/subsystem/time_track +SUBSYSTEM(time_track) name = "Time Tracking" wait = 600 flags = SS_NO_INIT|SS_FIRE_IN_LOBBY @@ -17,9 +15,6 @@ var/datum/controller/subsystem/time_track/SStime_track var/last_tick_byond_time = 0 var/last_tick_tickcount = 0 -/datum/controller/subsystem/time_track/New() - NEW_SS_GLOBAL(SStime_track) - /datum/controller/subsystem/time_track/fire() var/current_realtime = REALTIMEOFDAY diff --git a/code/controllers/subsystem/timer.dm b/code/controllers/subsystem/timer.dm index e83c177462b..99a87716af2 100644 --- a/code/controllers/subsystem/timer.dm +++ b/code/controllers/subsystem/timer.dm @@ -1,39 +1,26 @@ #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) -var/datum/controller/subsystem/timer/SStimer -/datum/controller/subsystem/timer +SUBSYSTEM(timer) name = "Timer" wait = 1 //SS_TICKER subsystem, so wait is in ticks init_order = 1 flags = SS_FIRE_IN_LOBBY|SS_TICKER|SS_NO_INIT - var/list/datum/timedevent/processing - var/list/hashes + var/list/datum/timedevent/processing = list() + var/list/hashes = list() var/head_offset = 0 //world.time of the first entry in the the bucket. var/practical_offset = 0 //index of the first non-empty item in the bucket. var/bucket_resolution = 0 //world.tick_lag the bucket was designed for var/bucket_count = 0 //how many timers are in the buckets - var/list/bucket_list //list of buckets, each bucket holds every timer that has to run that byond tick. + var/list/bucket_list = list() //list of buckets, each bucket holds every timer that has to run that byond tick. - var/list/timer_id_dict //list of all active timers assoicated to their timer id (for easy lookup) - - var/list/clienttime_timers //special snowflake timers that run on fancy pansy "client time" - - -/datum/controller/subsystem/timer/New() - processing = list() - hashes = list() - bucket_list = list() - timer_id_dict = list() - - clienttime_timers = list() - - NEW_SS_GLOBAL(SStimer) + var/list/timer_id_dict = list() //list of all active timers assoicated to their timer id (for easy lookup) + var/list/clienttime_timers = list() //special snowflake timers that run on fancy pansy "client time" /datum/controller/subsystem/timer/stat_entry(msg) ..("B:[bucket_count] P:[length(processing)] H:[length(hashes)] C:[length(clienttime_timers)]") diff --git a/code/controllers/subsystem/title.dm b/code/controllers/subsystem/title.dm index 1b4bd160539..6fb36c662ac 100644 --- a/code/controllers/subsystem/title.dm +++ b/code/controllers/subsystem/title.dm @@ -1,14 +1,9 @@ -var/datum/controller/subsystem/title/SStitle - -/datum/controller/subsystem/title +SUBSYSTEM(title) name = "Title Screen" init_order = 15 flags = SS_NO_FIRE var/turf/closed/indestructible/splashscreen/title_screen -/datum/controller/subsystem/title/New() - NEW_SS_GLOBAL(SStitle) - /datum/controller/subsystem/title/Initialize() var/list/provisional_title_screens = flist("config/title_screens/images/") var/list/title_screens = list() diff --git a/code/controllers/subsystem/vote.dm b/code/controllers/subsystem/vote.dm index bb67dd10084..6c7d981f0b0 100644 --- a/code/controllers/subsystem/vote.dm +++ b/code/controllers/subsystem/vote.dm @@ -1,6 +1,4 @@ -var/datum/controller/subsystem/vote/SSvote - -/datum/controller/subsystem/vote +SUBSYSTEM(vote) name = "Vote" wait = 10 diff --git a/code/controllers/subsystem/weather.dm b/code/controllers/subsystem/weather.dm index 824ea9ad7e6..51aa0370771 100644 --- a/code/controllers/subsystem/weather.dm +++ b/code/controllers/subsystem/weather.dm @@ -1,7 +1,6 @@ //Used for all kinds of weather, ex. lavaland ash storms. -var/datum/controller/subsystem/weather/SSweather -/datum/controller/subsystem/weather +SUBSYSTEM(weather) name = "Weather" flags = SS_BACKGROUND wait = 10 @@ -9,9 +8,6 @@ var/datum/controller/subsystem/weather/SSweather var/list/existing_weather = list() var/list/eligible_zlevels = list(ZLEVEL_LAVALAND) -/datum/controller/subsystem/weather/New() - NEW_SS_GLOBAL(SSweather) - /datum/controller/subsystem/weather/fire() for(var/V in processing) var/datum/weather/W = V diff --git a/tgstation.dme b/tgstation.dme index f369cf6e64b..216e0243211 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -152,7 +152,7 @@ #include "code\controllers\subsystem\atoms.dm" #include "code\controllers\subsystem\augury.dm" #include "code\controllers\subsystem\communications.dm" -#include "code\controllers\subsystem\diseases.dm" +#include "code\controllers\subsystem\disease.dm" #include "code\controllers\subsystem\events.dm" #include "code\controllers\subsystem\fire_burning.dm" #include "code\controllers\subsystem\garbage.dm" @@ -165,7 +165,7 @@ #include "code\controllers\subsystem\mapping.dm" #include "code\controllers\subsystem\minimap.dm" #include "code\controllers\subsystem\mobs.dm" -#include "code\controllers\subsystem\npc.dm" +#include "code\controllers\subsystem\npcpool.dm" #include "code\controllers\subsystem\orbit.dm" #include "code\controllers\subsystem\pai.dm" #include "code\controllers\subsystem\parallax.dm"