Updates subsystem definitions to new standards. (#17470)

* My heart is dragging me down into...

...oblivion!

* drifting closer to the edge but she won't have me

* ever round me we are dead before we meet her

* for the last time

* wake up in sweat

* n

* fff

* uff

---------

Co-authored-by: Matt Atlas <liermattia@gmail.com>
This commit is contained in:
Matt Atlas
2023-10-01 16:24:40 +02:00
committed by GitHub
parent aff9d2a1f3
commit baeb7c6afd
127 changed files with 406 additions and 720 deletions

View File

@@ -1,2 +1,8 @@
#define GLOBAL_PROC "some_magic_bullshit"
#define DESC_PARENT "You shouldn't be seeing this. Please make an issue report."
/// Standard BYOND global, seriously do not use without an earthshakingly good reason
#define GLOBAL_REAL_VAR(X) var/global/##X;
/// Standard typed BYOND global, seriously do not use without an earthshakingly good reason
#define GLOBAL_REAL(X, Typepath) var/global##Typepath/##X;

View File

@@ -1,4 +1,3 @@
#define RIOTS 1
#define WILD_ANIMAL_ATTACK 2
#define INDUSTRIAL_ACCIDENT 3

View File

@@ -14,12 +14,12 @@
// For multi-step subsystems that want to split their tick into multiple parts.
#define MC_SPLIT_TICK_INIT(phase_count) var/original_tick_limit = CURRENT_TICKLIMIT; var/split_tick_phases = ##phase_count
#define MC_SPLIT_TICK \
if(split_tick_phases > 1){\
CURRENT_TICKLIMIT = ((original_tick_limit - world.tick_usage) / split_tick_phases) + world.tick_usage;\
--split_tick_phases;\
} else {\
CURRENT_TICKLIMIT = original_tick_limit;\
}
if(split_tick_phases > 1){\
CURRENT_TICKLIMIT = ((original_tick_limit - world.tick_usage) / split_tick_phases) + world.tick_usage;\
--split_tick_phases;\
} else {\
CURRENT_TICKLIMIT = original_tick_limit;\
}
// Used to smooth out costs to try and avoid oscillation.
#define MC_AVERAGE_FAST(average, current) (0.7 * (average) + 0.3 * (current))
@@ -94,3 +94,26 @@
#define SS_INITSTATE_DONE 2
#define SS_PRIORITY_DEFAULT 25
#define SUBSYSTEM_DEF(X) GLOBAL_REAL(SS##X, /datum/controller/subsystem/##X);\
/datum/controller/subsystem/##X/New(){\
NEW_SS_GLOBAL(SS##X);\
PreInit();\
}\
/datum/controller/subsystem/##X
#define PROCESSING_SUBSYSTEM_DEF(X) GLOBAL_REAL(SS##X, /datum/controller/subsystem/processing/##X);\
/datum/controller/subsystem/processing/##X/New(){\
NEW_SS_GLOBAL(SS##X);\
PreInit();\
}\
/datum/controller/subsystem/processing/##X/fire() {..() /*just so it shows up on the profiler*/} \
/datum/controller/subsystem/processing/##X
#define MOB_AI_SUBSYSTEM_DEF(X) GLOBAL_REAL(SS##X, /datum/controller/subsystem/mob_ai/##X);\
/datum/controller/subsystem/mob_ai/##X/New(){\
NEW_SS_GLOBAL(SS##X);\
PreInit();\
}\
/datum/controller/subsystem/mob_ai/##X/fire() {..() /*just so it shows up on the profiler*/} \
/datum/controller/subsystem/mob_ai/##X

View File

@@ -11,6 +11,10 @@
#define TRANSITIONEDGE 7 // Distance from edge to move to another z-level.
#define RUIN_MAP_EDGE_PAD 15
/// Occupation preferences.
#define BE_ASSISTANT 0
#define RETURN_TO_LOBBY 1
// Invisibility constants.
#define INVISIBILITY_LIGHTING 20
#define INVISIBILITY_LEVEL_ONE 35
@@ -278,8 +282,8 @@
//supposedly the fastest way to do this according to https://gist.github.com/Giacom/be635398926bb463b42a
#define RANGE_TURFS(RADIUS, CENTER) \
block( \
locate(max(CENTER.x-(RADIUS),1), max(CENTER.y-(RADIUS),1), CENTER.z), \
locate(min(CENTER.x+(RADIUS),world.maxx), min(CENTER.y+(RADIUS),world.maxy), CENTER.z) \
locate(max(CENTER.x-(RADIUS),1), max(CENTER.y-(RADIUS),1), CENTER.z), \
locate(min(CENTER.x+(RADIUS),world.maxx), min(CENTER.y+(RADIUS),world.maxy), CENTER.z) \
)
#define get_turf(A) (get_step(A, 0))

View File

@@ -67,7 +67,7 @@
// Subsystems that cmd_ss_panic can hard-restart.
// *MUST* have New() use NEW_SS_GLOBAL.
var/list/panic_targets = list(
"Garbage" = /datum/controller/subsystem/garbage_collector,
"Garbage" = /datum/controller/subsystem/garbage,
"Air" = /datum/controller/subsystem/air,
"Explosives" = /datum/controller/subsystem/explosives,
"Game Ticker" = /datum/controller/subsystem/ticker,

View File

@@ -48,11 +48,18 @@
var/static/list/failure_strikes //How many times we suspect a subsystem type has crashed the MC, 3 strikes and you're out! This is an assoc list indexed by type.
//Do not override
///datum/controller/subsystem/New()
// Used to initialize the subsystem BEFORE the map has loaded
/datum/controller/subsystem/New()
// Called AFTER Recover if that is called
// 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)
SHOULD_NOT_OVERRIDE(TRUE)
set waitfor = 0
. = SS_SLEEPING
fire(resumed)

View File

@@ -1,14 +1,9 @@
var/global/datum/controller/subsystem/ai_obfuscation/SSai_obfuscation
/datum/controller/subsystem/ai_obfuscation
SUBSYSTEM_DEF(ai_obfuscation)
name = "AI Obfuscation"
flags = SS_NO_FIRE
var/list/image/obfuscation_images = list()
/datum/controller/subsystem/ai_obfuscation/New()
NEW_SS_GLOBAL(SSai_obfuscation)
/datum/controller/subsystem/ai_obfuscation/proc/add_obfuscation_image(var/image/added_image)
if(!istype(added_image))
return
@@ -30,4 +25,4 @@ var/global/datum/controller/subsystem/ai_obfuscation/SSai_obfuscation
A.client.images -= removed_image
/datum/controller/subsystem/ai_obfuscation/proc/get_obfuscation_images()
return obfuscation_images
return obfuscation_images

View File

@@ -1,5 +1,3 @@
/var/datum/controller/subsystem/air/SSair
/*
Overview:
@@ -63,7 +61,7 @@ Class Procs:
*/
/datum/controller/subsystem/air
SUBSYSTEM_DEF(air)
name = "Air"
priority = SS_PRIORITY_AIR
init_order = SS_INIT_AIR
@@ -129,9 +127,6 @@ Class Procs:
msg = "TtU:[tiles_to_update.len] ZtU:[zones_to_update.len] AFZ:[active_fire_zones.len] AH:[active_hotspots.len] AE:[active_edges.len]"
return msg
/datum/controller/subsystem/air/New()
NEW_SS_GLOBAL(SSair)
/datum/controller/subsystem/air/Initialize(timeofday, simulate = TRUE)
var/starttime = REALTIMEOFDAY

View File

@@ -1,12 +1,10 @@
var/datum/controller/subsystem/alarm/SSalarm
/var/global/datum/alarm_handler/atmosphere/atmosphere_alarm = new()
/var/global/datum/alarm_handler/camera/camera_alarm = new()
/var/global/datum/alarm_handler/fire/fire_alarm = new()
/var/global/datum/alarm_handler/motion/motion_alarm = new()
/var/global/datum/alarm_handler/power/power_alarm = new()
/datum/controller/subsystem/alarm
SUBSYSTEM_DEF(alarm)
name = "Alarms"
init_order = SS_INIT_MISC_FIRST
priority = SS_PRIORITY_ALARMS
@@ -17,9 +15,6 @@ var/datum/controller/subsystem/alarm/SSalarm
var/tmp/list/active_alarm_cache = list()
/datum/controller/subsystem/alarm/New()
NEW_SS_GLOBAL(SSalarm)
/datum/controller/subsystem/alarm/Initialize(timeofday)
all_handlers = list(atmosphere_alarm, camera_alarm, fire_alarm, motion_alarm, power_alarm)

View File

@@ -1,6 +1,4 @@
/var/datum/controller/subsystem/ao/SSocclusion
/datum/controller/subsystem/ao
SUBSYSTEM_DEF(ao)
name = "Ambient Occlusion"
init_order = SS_INIT_AO
wait = 1
@@ -9,9 +7,6 @@
var/list/queue = list()
/datum/controller/subsystem/ao/New()
NEW_SS_GLOBAL(SSocclusion)
/datum/controller/subsystem/ao/stat_entry(msg)
msg = "P:[queue.len]"
return ..()

View File

@@ -1,6 +1,4 @@
/var/datum/controller/subsystem/arrivals/SSarrivals
/datum/controller/subsystem/arrivals
SUBSYSTEM_DEF(arrivals)
name = "Arrivals"
flags = SS_NO_INIT | SS_BACKGROUND
priority = SS_PRIORITY_ARRIVALS
@@ -13,9 +11,6 @@
var/list/current_mobs = list()
var/shuttle_launch_countdown = 30 SECONDS
/datum/controller/subsystem/arrivals/New()
NEW_SS_GLOBAL(SSarrivals)
/datum/controller/subsystem/arrivals/fire()
post_signal("arrivals")
if (wait_for_launch)

View File

@@ -1,18 +1,13 @@
/// Allows us to lazyload asset datums
/// Anything inserted here will fully load if directly gotten
/// So this just serves to remove the requirement to load assets fully during init
var/datum/controller/subsystem/asset_loading/SSasset_loading
/datum/controller/subsystem/asset_loading
SUBSYSTEM_DEF(asset_loading)
name = "Asset Loading"
priority = SS_PRIORITY_ASSET
flags = SS_NO_INIT
runlevels = RUNLEVEL_LOBBY|RUNLEVELS_DEFAULT
var/list/datum/asset/generate_queue = list()
/datum/controller/subsystem/asset_loading/New()
NEW_SS_GLOBAL(SSasset_loading)
/datum/controller/subsystem/asset_loading/fire(resumed)
while(length(generate_queue))
var/datum/asset/to_load = generate_queue[generate_queue.len]

View File

@@ -1,6 +1,4 @@
/var/datum/controller/subsystem/assets/SSassets
/datum/controller/subsystem/assets
SUBSYSTEM_DEF(assets)
name = "Assets"
init_order = SS_INIT_ASSETS
flags = SS_NO_FIRE
@@ -9,9 +7,6 @@
var/list/preload = list()
var/datum/asset_transport/transport = new()
/datum/controller/subsystem/assets/New()
NEW_SS_GLOBAL(SSassets)
/datum/controller/subsystem/assets/Initialize()
var/newtransporttype = /datum/asset_transport
switch (config.asset_transport)

View File

@@ -4,9 +4,7 @@
#define BATTLE_MONSTERS_GEN_TRAP 4
#define BATTLE_MONSTERS_GEN_SPELL 5
var/datum/controller/subsystem/battle_monsters/SSbattlemonsters
/datum/controller/subsystem/battle_monsters
SUBSYSTEM_DEF(battle_monsters)
name = "Battle Monsters"
init_order = SS_INIT_MISC_FIRST
flags = SS_NO_FIRE
@@ -25,10 +23,6 @@ var/datum/controller/subsystem/battle_monsters/SSbattlemonsters
var/list/traps_rng
var/list/spells_rng
/datum/controller/subsystem/battle_monsters/New()
NEW_SS_GLOBAL(SSbattlemonsters)
/datum/controller/subsystem/battle_monsters/Initialize()
GenerateDatum(BATTLE_MONSTERS_GEN_PREFIX)
GenerateDatum(BATTLE_MONSTERS_GEN_ROOT)
@@ -369,7 +363,7 @@ var/datum/controller/subsystem/battle_monsters/SSbattlemonsters
/datum/controller/subsystem/battle_monsters/proc/FormatMonsterText(var/text,var/datum/battle_monsters/element/prefix_datum,var/datum/battle_monsters/monster/root_datum,var/datum/battle_monsters/title/suffix_datum, var/include_description = TRUE)
var/list/generated_stats = SSbattlemonsters.GenerateMonsterStats(prefix_datum,root_datum,suffix_datum)
var/list/generated_stats = SSbattle_monsters.GenerateMonsterStats(prefix_datum,root_datum,suffix_datum)
if(!generated_stats || generated_stats.len == 0)
return "Something went wrong... go bother the monsterous devs about it."
@@ -411,7 +405,7 @@ var/datum/controller/subsystem/battle_monsters/SSbattlemonsters
return text
/datum/controller/subsystem/battle_monsters/proc/FormatSpellText(var/text,var/datum/battle_monsters/spell_datum,var/include_description = TRUE)
var/list/generated_stats = SSbattlemonsters.GenerateSpellStats(spell_datum)
var/list/generated_stats = SSbattle_monsters.GenerateSpellStats(spell_datum)
if(!generated_stats || generated_stats.len == 0)
return "Something went wrong... go bother the wizardly devs about it."

View File

@@ -4,9 +4,7 @@
#define SUPPLY_STATION_AREATYPE /area/supply/station //Type of the supply shuttle area for station
#define SUPPLY_DOCK_AREATYPE /area/supply/dock //Type of the supply shuttle area for dock
var/datum/controller/subsystem/cargo/SScargo
/datum/controller/subsystem/cargo
SUBSYSTEM_DEF(cargo)
name = "Cargo"
wait = 30 SECONDS
flags = SS_NO_FIRE
@@ -90,12 +88,6 @@ var/datum/controller/subsystem/cargo/SScargo
qdel(spawner)
..()
/datum/controller/subsystem/cargo/New()
NEW_SS_GLOBAL(SScargo)
/*
Loading Data
*/

View File

@@ -5,9 +5,7 @@ var/regex/is_http_protocol = regex("^https?://")
* SPDX-License-Identifier: MIT
*/
var/datum/controller/subsystem/chat/SSchat
/datum/controller/subsystem/chat
SUBSYSTEM_DEF(chat)
name = "Chat"
flags = SS_TICKER
wait = 1

View File

@@ -1,6 +1,4 @@
var/datum/controller/subsystem/chemistry/SSchemistry
/datum/controller/subsystem/chemistry
SUBSYSTEM_DEF(chemistry)
name = "Chemistry"
priority = SS_PRIORITY_CHEMISTRY
init_order = SS_INIT_MISC_FIRST
@@ -82,9 +80,6 @@ var/datum/controller/subsystem/chemistry/SSchemistry
msg = "AH:[active_holders.len]"
return ..()
/datum/controller/subsystem/chemistry/New()
NEW_SS_GLOBAL(SSchemistry)
/datum/controller/subsystem/chemistry/Initialize()
initialize_chemical_reactions()
initialize_codex_data()

View File

@@ -1,7 +1,5 @@
#define DEFAULT_MAX_RUNES 40
/var/datum/controller/subsystem/cult/SScult
/datum/controller/subsystem/cult
SUBSYSTEM_DEF(cult)
name = "Cult"
flags = SS_NO_FIRE
@@ -16,9 +14,6 @@
var/rune_boost = 0
var/tome_data = ""
/datum/controller/subsystem/cult/New()
NEW_SS_GLOBAL(SScult)
/datum/controller/subsystem/cult/Initialize()
. = ..()
for(var/rune in subtypesof(/datum/rune))
@@ -31,7 +26,7 @@
if(R.max_number_allowed)
tome_data += "This rune has a special limit of <b><i>[R.max_number_allowed]</b></i> runes.<br><hr>"
limited_runes[R.type] = R.max_number_allowed //The runes created will tick the counter down to zero.
tome_data += "</div>"
tome_data += "</div>"
/datum/controller/subsystem/cult/proc/add_rune(var/datum/rune/R)
if(check_rune_limit(R))
@@ -46,9 +41,9 @@
if(current_runes > 0)
limited_runes[rune_type]--
return FALSE
else
else
return TRUE
else
else
return ((length(rune_list) + rune_boost + length(cult.current_antagonists)) >= rune_limit)
/datum/controller/subsystem/cult/proc/remove_rune(var/datum/rune/R)

View File

@@ -1,6 +1,4 @@
var/datum/controller/subsystem/docs/SSdocs
/datum/controller/subsystem/docs
SUBSYSTEM_DEF(docs)
name = "Documents"
wait = 30 SECONDS
flags = SS_NO_FIRE
@@ -29,9 +27,6 @@ var/datum/controller/subsystem/docs/SSdocs
..()
/datum/controller/subsystem/docs/New()
NEW_SS_GLOBAL(SSdocs)
/*
Fetching Data
*/

View File

@@ -1,6 +1,4 @@
var/datum/controller/subsystem/economy/SSeconomy
/datum/controller/subsystem/economy
SUBSYSTEM_DEF(economy)
name = "Economy"
wait = 30 SECONDS
flags = SS_NO_FIRE
@@ -11,9 +9,6 @@ var/datum/controller/subsystem/economy/SSeconomy
var/num_financial_terminals = 1
var/next_account_number = 0
/datum/controller/subsystem/economy/New()
NEW_SS_GLOBAL(SSeconomy)
/datum/controller/subsystem/economy/Initialize(timeofday)
next_account_number = rand(111111, 999999)

View File

@@ -1,6 +1,4 @@
var/datum/controller/subsystem/effects/SSeffects
/datum/controller/subsystem/effects
SUBSYSTEM_DEF(effects)
name = "Effects Master"
wait = 1 // Deciseconds.
flags = SS_NO_INIT
@@ -12,9 +10,6 @@ var/datum/controller/subsystem/effects/SSeffects
var/tmp/list/processing_effects = list()
var/tmp/list/processing_visuals = list()
/datum/controller/subsystem/effects/New()
NEW_SS_GLOBAL(SSeffects)
/datum/controller/subsystem/effects/fire(resumed = FALSE)
if (!resumed)
processing_effects = effect_systems

View File

@@ -1,6 +1,4 @@
var/datum/controller/subsystem/evac/SSevac
/datum/controller/subsystem/evac
SUBSYSTEM_DEF(evac)
name = "Evacuation"
priority = SS_PRIORITY_EVAC
//Initializes at default time
@@ -15,4 +13,3 @@ var/datum/controller/subsystem/evac/SSevac
/datum/controller/subsystem/evac/fire()
evacuation_controller.process()

View File

@@ -1,7 +1,4 @@
var/datum/controller/subsystem/events/SSevents
/datum/controller/subsystem/events
// Subsystem stuff.
SUBSYSTEM_DEF(events)
name = "Events"
priority = SS_PRIORITY_EVENT
@@ -28,9 +25,6 @@ var/datum/controller/subsystem/events/SSevents
var/initialized = FALSE
/datum/controller/subsystem/events/New()
NEW_SS_GLOBAL(SSevents)
/datum/controller/subsystem/events/Initialize()
allEvents = subtypesof(/datum/event)
event_containers = list(

View File

@@ -3,11 +3,7 @@
#define EXPLFX_SHAKE 1
#define EXPLFX_NONE 0
var/datum/controller/subsystem/explosives/SSexplosives
// yes, let's move the laggiest part of the game to a process
// nothing could go wrong -- Lohikar
/datum/controller/subsystem/explosives
SUBSYSTEM_DEF(explosives)
name = "Explosives"
wait = 1
flags = SS_NO_INIT | SS_BACKGROUND | SS_POST_FIRE_TIMING
@@ -23,9 +19,6 @@ var/datum/controller/subsystem/explosives/SSexplosives
var/mc_notified = FALSE
/datum/controller/subsystem/explosives/New()
NEW_SS_GLOBAL(SSexplosives)
/datum/controller/subsystem/explosives/Recover()
work_queue = SSexplosives.work_queue
explosion_in_progress = SSexplosives.explosion_in_progress

View File

@@ -1,6 +1,4 @@
var/datum/controller/subsystem/fail2topic/SSfail2topic
/datum/controller/subsystem/fail2topic
SUBSYSTEM_DEF(fail2topic)
name = "Fail2Topic"
init_order = SS_INIT_MISC_FIRST
flags = SS_BACKGROUND
@@ -14,9 +12,6 @@ var/datum/controller/subsystem/fail2topic/SSfail2topic
var/max_fails
var/enabled = FALSE
/datum/controller/subsystem/fail2topic/New()
NEW_SS_GLOBAL(SSfail2topic)
/datum/controller/subsystem/fail2topic/Initialize(timeofday)
rate_limit = config.fail2topic_rate_limit
max_fails = config.fail2topic_max_fails

View File

@@ -4,9 +4,7 @@
if (MC_TICK_CHECK) return; \
continue;
/var/datum/controller/subsystem/falling/SSfalling
/datum/controller/subsystem/falling
SUBSYSTEM_DEF(falling)
name = "Falling"
flags = SS_NO_INIT
wait = 1
@@ -14,9 +12,6 @@
var/list/falling = list()
var/list/currentrun
/datum/controller/subsystem/falling/New()
NEW_SS_GLOBAL(SSfalling)
/datum/controller/subsystem/falling/stat_entry(msg)
msg = "F:[falling.len]"
return ..()

View File

@@ -1,6 +1,4 @@
var/datum/controller/subsystem/garbage_collector/SSgarbage
/datum/controller/subsystem/garbage_collector
SUBSYSTEM_DEF(garbage)
name = "Garbage"
priority = SS_PRIORITY_GARBAGE
wait = 2 SECONDS
@@ -40,10 +38,7 @@ var/datum/controller/subsystem/garbage_collector/SSgarbage
var/list/reference_find_on_fail = list()
#endif
/datum/controller/subsystem/garbage_collector/New()
NEW_SS_GLOBAL(SSgarbage)
/datum/controller/subsystem/garbage_collector/stat_entry(msg)
/datum/controller/subsystem/garbage/stat_entry(msg)
msg = "W:[tobequeued.len]|Q:[queue.len]|D:[delslasttick]|G:[gcedlasttick]|"
msg += "GR:"
if (!(delslasttick+gcedlasttick))
@@ -58,7 +53,7 @@ var/datum/controller/subsystem/garbage_collector/SSgarbage
msg += "TGR:[round((totalgcs/(totaldels+totalgcs))*100, 0.01)]%"
return ..()
/datum/controller/subsystem/garbage_collector/fire()
/datum/controller/subsystem/garbage/fire()
HandleToBeQueued()
if(state == SS_RUNNING)
HandleQueue()
@@ -68,7 +63,7 @@ var/datum/controller/subsystem/garbage_collector/SSgarbage
//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.
/datum/controller/subsystem/garbage_collector/proc/HandleToBeQueued()
/datum/controller/subsystem/garbage/proc/HandleToBeQueued()
var/list/tobequeued = src.tobequeued
var/starttime = world.time
var/starttimeofday = world.timeofday
@@ -83,7 +78,7 @@ var/datum/controller/subsystem/garbage_collector/SSgarbage
if (idex > 1)
tobequeued.Cut(1, idex)
/datum/controller/subsystem/garbage_collector/proc/HandleQueue()
/datum/controller/subsystem/garbage/proc/HandleQueue()
delslasttick = 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()
@@ -149,12 +144,12 @@ var/datum/controller/subsystem/garbage_collector/SSgarbage
if (idex > 1)
queue.Cut(1, idex)
/datum/controller/subsystem/garbage_collector/proc/QueueForQueuing(datum/A)
/datum/controller/subsystem/garbage/proc/QueueForQueuing(datum/A)
if (istype(A) && A.gcDestroyed == GC_CURRENTLY_BEING_QDELETED)
tobequeued += A
A.gcDestroyed = GC_QUEUED_FOR_QUEUING
/datum/controller/subsystem/garbage_collector/proc/Queue(datum/A)
/datum/controller/subsystem/garbage/proc/Queue(datum/A)
if (!istype(A) || (!isnull(A.gcDestroyed) && A.gcDestroyed >= 0))
return
if (A.gcDestroyed == GC_QUEUED_FOR_HARD_DEL)
@@ -171,7 +166,7 @@ var/datum/controller/subsystem/garbage_collector/SSgarbage
queue[refid] = gctime
// For profiling.
/datum/controller/subsystem/garbage_collector/proc/HardDelete(datum/A)
/datum/controller/subsystem/garbage/proc/HardDelete(datum/A)
var/time = world.timeofday
var/tick = world.tick_usage
var/ticktime = world.time
@@ -194,12 +189,12 @@ var/datum/controller/subsystem/garbage_collector/SSgarbage
message_admins("Error: [type]([refID]) took longer then 1 second to delete (took [time/10] seconds to delete).")
postpone(time/5)
/datum/controller/subsystem/garbage_collector/proc/HardQueue(datum/A)
/datum/controller/subsystem/garbage/proc/HardQueue(datum/A)
if (istype(A) && A.gcDestroyed == GC_CURRENTLY_BEING_QDELETED)
tobequeued += A
A.gcDestroyed = GC_QUEUED_FOR_HARD_DEL
/datum/controller/subsystem/garbage_collector/Recover()
/datum/controller/subsystem/garbage/Recover()
if (istype(SSgarbage.queue))
queue |= SSgarbage.queue
if (istype(SSgarbage.tobequeued))

View File

@@ -1,6 +1,4 @@
/var/datum/controller/subsystem/ghostroles/SSghostroles
/datum/controller/subsystem/ghostroles
SUBSYSTEM_DEF(ghostroles)
name = "Ghost Roles"
flags = SS_NO_FIRE
init_order = SS_INIT_GHOSTROLES
@@ -19,9 +17,6 @@
src.spawnpoints = SSghostroles.spawnpoints
src.spawners = SSghostroles.spawners
/datum/controller/subsystem/ghostroles/New()
NEW_SS_GLOBAL(SSghostroles)
/datum/controller/subsystem/ghostroles/Initialize(start_timeofday)
. = ..()
for(var/spawner in subtypesof(/datum/ghostspawner))
@@ -104,10 +99,10 @@
return get_turf(P)
/datum/controller/subsystem/ghostroles/ui_state(mob/user)
return always_state
return always_state
/datum/controller/subsystem/ghostroles/ui_status(mob/user, datum/ui_state/state)
return UI_INTERACTIVE
return UI_INTERACTIVE
/datum/controller/subsystem/ghostroles/ui_interact(mob/user, datum/tgui/ui)
ui = SStgui.try_update_ui(user, src, ui)

View File

@@ -1,14 +1,9 @@
var/datum/controller/subsystem/listener/SSlistener
/datum/controller/subsystem/listener
SUBSYSTEM_DEF(listener)
name = "Global Listener"
flags = SS_NO_INIT | SS_NO_FIRE
var/list/listeners = list()
/datum/controller/subsystem/listener/New()
NEW_SS_GLOBAL(SSlistener)
/datum/controller/subsystem/listener/Recover()
listeners = SSlistener.listeners

View File

@@ -1,6 +1,4 @@
/var/datum/controller/subsystem/hallucinations/SShallucinations
/datum/controller/subsystem/hallucinations
SUBSYSTEM_DEF(hallucinations)
name = "Hallucinations"
flags = SS_NO_FIRE
@@ -14,9 +12,6 @@
"what have you DONE?", "Miranda Trasen", "Central Command", "AI", "maintenance drone", "Unknown", "I don't want to die")
var/list/all_hallucinations = list()
/datum/controller/subsystem/hallucinations/New()
NEW_SS_GLOBAL(SShallucinations)
/datum/controller/subsystem/hallucinations/Initialize()
. = ..()
for(var/T in subtypesof(/datum/hallucination))
@@ -33,4 +28,4 @@
candidates += H
if(candidates.len)
var/datum/hallucination/D = pick(candidates)
return D
return D

View File

@@ -1,6 +1,4 @@
/var/datum/controller/subsystem/icon_cache/SSicon_cache
/datum/controller/subsystem/icon_cache
SUBSYSTEM_DEF(icon_cache)
name = "Icon Cache"
flags = SS_NO_FIRE
init_order = SS_INIT_MISC_FIRST
@@ -71,9 +69,6 @@
var/list/istate_cache = list()
/datum/controller/subsystem/icon_cache/New()
NEW_SS_GLOBAL(SSicon_cache)
/datum/controller/subsystem/icon_cache/Initialize()
build_dust_cache()
build_space_cache()

View File

@@ -15,9 +15,7 @@
can_fire = TRUE; \
}
var/datum/controller/subsystem/icon_smooth/SSicon_smooth
/datum/controller/subsystem/icon_smooth
SUBSYSTEM_DEF(icon_smooth)
name = "Icon Smoothing"
init_order = SS_INIT_SMOOTHING
wait = 1
@@ -30,9 +28,6 @@ var/datum/controller/subsystem/icon_smooth/SSicon_smooth
var/explosion_in_progress = FALSE
/datum/controller/subsystem/icon_smooth/New()
NEW_SS_GLOBAL(SSicon_smooth)
/datum/controller/subsystem/icon_smooth/Recover()
smooth_queue = SSicon_smooth.smooth_queue

View File

@@ -1,6 +1,4 @@
/var/datum/controller/subsystem/icon/SSicon_update
/datum/controller/subsystem/icon
SUBSYSTEM_DEF(icon_update)
name = "Icon Updates"
wait = 1 // ticks
flags = SS_TICKER
@@ -9,18 +7,18 @@
var/list/queue = list()
/datum/controller/subsystem/icon/New()
/datum/controller/subsystem/icon_update/New()
NEW_SS_GLOBAL(SSicon_update)
/datum/controller/subsystem/icon/stat_entry(msg)
/datum/controller/subsystem/icon_update/stat_entry(msg)
msg = "QU:[queue.len]"
return ..()
/datum/controller/subsystem/icon/Initialize()
/datum/controller/subsystem/icon_update/Initialize()
fire(FALSE, TRUE)
..()
/datum/controller/subsystem/icon/fire(resumed = FALSE, no_mc_tick = FALSE)
/datum/controller/subsystem/icon_update/fire(resumed = FALSE, no_mc_tick = FALSE)
var/list/curr = queue
if (!curr.len)

View File

@@ -2,9 +2,7 @@
var/datum/map/current_map // Whatever map is currently loaded. Null until SSatlas Initialize() starts.
var/datum/controller/subsystem/atlas/SSatlas
/datum/controller/subsystem/atlas
SUBSYSTEM_DEF(atlas)
name = "Atlas"
flags = SS_NO_FIRE
init_order = SS_INIT_MAPLOAD
@@ -141,9 +139,6 @@ var/datum/controller/subsystem/atlas/SSatlas
msg = "W:{X:[world.maxx] Y:[world.maxy] Z:[world.maxz]} ZL:[z_levels]"
return ..()
/datum/controller/subsystem/atlas/New()
NEW_SS_GLOBAL(SSatlas)
/datum/controller/subsystem/atlas/Initialize(timeofday)
// Quick sanity check.
if (world.maxx != WORLD_MIN_SIZE || world.maxy != WORLD_MIN_SIZE || world.maxz != 1)

View File

@@ -1,13 +1,11 @@
#define SUBSYSTEM_INIT_SOURCE "subsystem init"
var/datum/controller/subsystem/atoms/SSatoms
#define BAD_INIT_QDEL_BEFORE 1
#define BAD_INIT_DIDNT_INIT 2
#define BAD_INIT_SLEPT 4
#define BAD_INIT_NO_HINT 8
/datum/controller/subsystem/atoms
SUBSYSTEM_DEF(atoms)
name = "Atoms"
init_order = SS_INIT_ATOMS
flags = SS_NO_FIRE
@@ -28,9 +26,6 @@ var/datum/controller/subsystem/atoms/SSatoms
var/list/BadInitializeCalls = list()
/datum/controller/subsystem/atoms/New()
NEW_SS_GLOBAL(SSatoms)
/datum/controller/subsystem/atoms/Initialize(timeofday)
initialized = INITIALIZATION_INNEW_MAPLOAD
InitializeAtoms()

View File

@@ -1,9 +1,7 @@
// Minimap generation system adapted from vorestation, adapted from /vg/.
// Seems to be much simpler/saner than /vg/'s implementation.
/var/datum/controller/subsystem/holomap/SSholomap
/datum/controller/subsystem/holomap
SUBSYSTEM_DEF(holomap)
name = "Holomap"
flags = SS_NO_FIRE
init_order = SS_INIT_HOLOMAP
@@ -12,9 +10,6 @@
var/list/extra_minimaps = list()
var/list/station_holomaps = list()
/datum/controller/subsystem/holomap/New()
NEW_SS_GLOBAL(SSholomap)
/datum/controller/subsystem/holomap/Initialize()
holo_minimaps.len = world.maxz
for (var/z in 1 to world.maxz)

View File

@@ -1,6 +1,6 @@
// The area list is put together here, because some things need it early on. Turrets controls, for example.
/datum/controller/subsystem/finalize
SUBSYSTEM_DEF(finalize)
name = "Map Finalization"
flags = SS_NO_FIRE | SS_NO_DISPLAY
init_order = SS_INIT_MAPFINALIZE

View File

@@ -1,7 +1,7 @@
// This is one of the first subsystems initialized by the MC.
// Stuff that should be loaded before everything else that isn't significant enough to get its own SS goes here.
/datum/controller/subsystem/misc_early
SUBSYSTEM_DEF(misc_early)
name = "Early Miscellaneous Init"
init_order = SS_INIT_MISC_FIRST
flags = SS_NO_FIRE | SS_NO_DISPLAY

View File

@@ -1,6 +1,6 @@
// This subsystem loads later in the init process. Not last, but after most major things are done.
/datum/controller/subsystem/misc_late
SUBSYSTEM_DEF(misc_late)
name = "Late Miscellaneous Init"
init_order = SS_INIT_MISC
flags = SS_NO_FIRE | SS_NO_DISPLAY

View File

@@ -1,6 +1,4 @@
/var/datum/controller/subsystem/persistent_configuration/SSpersist_config = null
/datum/controller/subsystem/persistent_configuration
SUBSYSTEM_DEF(persistent_configuration)
name = "Persistent Configuration"
init_order = SS_INIT_PERSISTENT_CONFIG
flags = SS_NO_FIRE
@@ -17,7 +15,7 @@
var/forced_awaymission = FALSE
/datum/controller/subsystem/persistent_configuration/Initialize(timeofday)
SSpersist_config = src
SSpersistent_configuration = src
load_from_file("data/persistent_config.json")
@@ -25,7 +23,7 @@
var/file = file2text(filename)
if (!file)
log_config("SSpersist_config: file [filename] not found, falling back to default values.")
log_config("SSpersistent_configuration: file [filename] not found, falling back to default values.")
return
var/list/decoded = null

View File

@@ -1,12 +1,10 @@
var/datum/controller/subsystem/xenoarch/SSxenoarch
#define XENOARCH_SPAWN_CHANCE 0.5
#define DIGSITESIZE_LOWER 4
#define DIGSITESIZE_UPPER 12
#define ARTIFACTSPAWNNUM_LOWER 6
#define ARTIFACTSPAWNNUM_UPPER 12
/datum/controller/subsystem/xenoarch
SUBSYSTEM_DEF(xenoarch)
name = "Xenoarchaeology"
flags = SS_NO_FIRE
init_order = SS_INIT_XENOARCH
@@ -14,11 +12,8 @@ var/datum/controller/subsystem/xenoarch/SSxenoarch
var/list/artifact_spawning_turfs = list()
var/list/digsite_spawning_turfs = list()
/datum/controller/subsystem/xenoarch/New()
NEW_SS_GLOBAL(SSxenoarch)
/datum/controller/subsystem/xenoarch/Initialize(timeofday)
set background=1
set background = TRUE
//create digsites
for(var/turf/TIW in world)

View File

@@ -1,18 +1,13 @@
var/datum/controller/subsystem/ipintel/SSipintel
/datum/controller/subsystem/ipintel
SUBSYSTEM_DEF(ipintel)
name = "XKeyScore"
init_order = SS_INIT_MISC_FIRST
flags = SS_NO_FIRE
var/enabled = 0 //disable at round start to avoid checking reconnects
var/enabled = FALSE //disable at round start to avoid checking reconnects
var/throttle = 0
var/errors = 0
var/list/cache = list()
/datum/controller/subsystem/ipintel/New()
NEW_SS_GLOBAL(SSipintel)
/datum/controller/subsystem/ipintel/Initialize()
enabled = 1
enabled = TRUE
. = ..()

View File

@@ -1,11 +1,6 @@
/var/datum/controller/subsystem/jobs/SSjobs
#define BE_ASSISTANT 0
#define RETURN_TO_LOBBY 1
#define Debug(text) if (Debug2) {job_debug += text}
/datum/controller/subsystem/jobs
SUBSYSTEM_DEF(jobs)
// Subsystem stuff.
name = "Jobs"
flags = SS_NO_FIRE
@@ -26,9 +21,6 @@
var/safe_to_sanitize = FALSE
var/list/deferred_preference_sanitizations = list()
/datum/controller/subsystem/jobs/New()
NEW_SS_GLOBAL(SSjobs)
/datum/controller/subsystem/jobs/Initialize()
..()

View File

@@ -1,6 +1,4 @@
/var/global/datum/controller/subsystem/law/SSlaw
/datum/controller/subsystem/law
SUBSYSTEM_DEF(law)
name = "Law"
flags = SS_NO_FIRE
@@ -9,9 +7,6 @@
var/list/med_severity = list()
var/list/high_severity = list()
/datum/controller/subsystem/law/New()
NEW_SS_GLOBAL(SSlaw)
/datum/controller/subsystem/law/Initialize(timeofday)
if(config.sql_enabled)
load_from_sql()

View File

@@ -1,9 +1,7 @@
var/datum/controller/subsystem/lighting/SSlighting
/var/lighting_profiling = FALSE
/var/lighting_overlays_initialized = FALSE
/datum/controller/subsystem/lighting
SUBSYSTEM_DEF(lighting)
name = "Lighting"
wait = LIGHTING_INTERVAL
runlevels = RUNLEVELS_DEFAULT | RUNLEVEL_LOBBY
@@ -34,9 +32,6 @@ var/datum/controller/subsystem/lighting/SSlighting
var/force_override = FALSE // For admins.
#endif
/datum/controller/subsystem/lighting/New()
NEW_SS_GLOBAL(SSlighting)
/datum/controller/subsystem/lighting/stat_entry(msg)
var/list/out = list(
#ifdef USE_INTELLIGENT_LIGHTING_UPDATES

View File

@@ -33,9 +33,7 @@ if(Datum.isprocessing) {\
#define START_PROCESSING_POWER_OBJECT(Datum) START_PROCESSING_IN_LIST(Datum, power_objects)
#define STOP_PROCESSING_POWER_OBJECT(Datum) STOP_PROCESSING_IN_LIST(Datum, power_objects)
/var/datum/controller/subsystem/machinery/SSmachinery
/datum/controller/subsystem/machinery
SUBSYSTEM_DEF(machinery)
name = "Machinery"
priority = SS_PRIORITY_MACHINERY
init_order = SS_INIT_MACHINERY
@@ -84,9 +82,6 @@ if(Datum.isprocessing) {\
all_receivers = SSmachinery.all_receivers
current_step = SSMACHINERY_PIPENETS
/datum/controller/subsystem/machinery/New()
NEW_SS_GLOBAL(SSmachinery)
/datum/controller/subsystem/machinery/Initialize(timeofday)
makepowernets()
build_rcon_lists()

View File

@@ -1,6 +1,4 @@
var/datum/controller/subsystem/mapping/SSmapping
/datum/controller/subsystem/mapping
SUBSYSTEM_DEF(mapping)
name = "Mapping"
init_order = SS_INIT_AWAY_MAPS
flags = SS_NO_FIRE
@@ -12,9 +10,6 @@ var/datum/controller/subsystem/mapping/SSmapping
var/list/submaps = list()
var/list/submap_archetypes = list()
/datum/controller/subsystem/mapping/New()
NEW_SS_GLOBAL(SSmapping)
/datum/controller/subsystem/mapping/Initialize(timeofday)
// Load templates and build away sites.
preloadTemplates()

View File

@@ -1,6 +1,4 @@
var/datum/controller/subsystem/materials/SSmaterials
/datum/controller/subsystem/materials
SUBSYSTEM_DEF(materials)
name = "Materials"
init_order = SS_INIT_MISC_FIRST
flags = SS_NO_FIRE
@@ -11,9 +9,6 @@ var/datum/controller/subsystem/materials/SSmaterials
var/list/autolathe_recipes
var/list/autolathe_categories
/datum/controller/subsystem/materials/New()
NEW_SS_GLOBAL(SSmaterials)
/datum/controller/subsystem/materials/Initialize()
create_material_lists()
. = ..()

View File

@@ -1,6 +1,4 @@
/var/datum/controller/subsystem/mobs/SSmob
/datum/controller/subsystem/mobs
SUBSYSTEM_DEF(mobs)
name = "Mobs - Life"
init_order = SS_INIT_MISC // doesn't really matter when we init
priority = SS_PRIORITY_MOB
@@ -43,9 +41,6 @@
/mob/living/simple_animal/penguin/holodeck
)
/datum/controller/subsystem/mobs/New()
NEW_SS_GLOBAL(SSmob)
/datum/controller/subsystem/mobs/Initialize()
// Some setup work for the eat-types lists.
mtl_synthetic = typecacheof(mtl_synthetic) + list(
@@ -93,7 +88,7 @@
var/mob/M = thing
if (QDELETED(M))
LOG_DEBUG("SSmob: QDELETED mob [DEBUG_REF(M)] left in processing list!")
LOG_DEBUG("SSmobs: QDELETED mob [DEBUG_REF(M)] left in processing list!")
// We can just go ahead and remove them from all the mob lists.
mob_list -= M
dead_mob_list -= M
@@ -111,7 +106,7 @@
if (time != world.time && !slept[M.type])
slept[M.type] = TRUE
var/diff = world.time - time
LOG_DEBUG("SSmob: Type '[M.type]' slept for [diff] ds in Life()! Suppressing further warnings.")
LOG_DEBUG("SSmobs: Type '[M.type]' slept for [diff] ds in Life()! Suppressing further warnings.")
if (MC_TICK_CHECK)
return

View File

@@ -1,6 +1,4 @@
/var/datum/controller/subsystem/mob_ai/SSmob_ai
/datum/controller/subsystem/mob_ai
SUBSYSTEM_DEF(mob_ai)
name = "Mobs - AI"
flags = SS_NO_INIT
priority = SS_PRIORITY_MOB
@@ -10,9 +8,6 @@
var/list/currentrun = list()
var/list/slept = list()
/datum/controller/subsystem/mob_ai/New()
NEW_SS_GLOBAL(SSmob_ai)
/datum/controller/subsystem/mob_ai/stat_entry(msg)
msg = "P:[processing.len]"
return ..()

View File

@@ -1,8 +1,3 @@
/var/datum/controller/subsystem/mob_ai/fast/SSmob_fast_ai
/datum/controller/subsystem/mob_ai/fast
MOB_AI_SUBSYSTEM_DEF(mob_fast_ai)
name = "Mobs - Fast AI"
wait = 5
/datum/controller/subsystem/mob_ai/fast/New()
NEW_SS_GLOBAL(SSmob_fast_ai)

View File

@@ -1,6 +1,4 @@
/var/datum/controller/subsystem/news/SSnews
/datum/controller/subsystem/news
SUBSYSTEM_DEF(news)
name = "News"
flags = SS_NO_FIRE
var/list/datum/feed_channel/network_channels = list()
@@ -11,9 +9,6 @@
src.network_channels = SSnews.network_channels
src.wanted_issue = SSnews.wanted_issue
/datum/controller/subsystem/news/New()
NEW_SS_GLOBAL(SSnews)
/datum/controller/subsystem/news/Initialize(timeofday)
CreateFeedChannel("Station Announcements", "Automatic Announcement System", 1, 1, "New Station Announcement Available")
CreateFeedChannel("Tau Ceti Daily", "CentComm Minister of Information", 1, 1)

View File

@@ -1,6 +1,4 @@
var/datum/controller/subsystem/nightlight/SSnightlight
/datum/controller/subsystem/nightlight
SUBSYSTEM_DEF(nightlight)
name = "Night Lighting"
wait = 5 MINUTES
init_order = SS_INIT_NIGHT
@@ -10,9 +8,6 @@ var/datum/controller/subsystem/nightlight/SSnightlight
var/isactive = FALSE
var/disable_type = NL_NOT_DISABLED
/datum/controller/subsystem/nightlight/New()
NEW_SS_GLOBAL(SSnightlight)
/datum/controller/subsystem/nightlight/stat_entry(msg)
msg = "A:[isactive] T:[worldtime2hours()] D:[disable_type]"
return ..()

View File

@@ -1,6 +1,4 @@
var/datum/controller/subsystem/orbit/SSorbit
/datum/controller/subsystem/orbit
SUBSYSTEM_DEF(orbit)
name = "Orbits"
priority = SS_PRIORITY_ORBIT
wait = 2
@@ -10,9 +8,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/Recover()
src.processing = SSorbit.processing

View File

@@ -1,6 +1,4 @@
var/datum/controller/subsystem/overlays/SSoverlays
/datum/controller/subsystem/overlays
SUBSYSTEM_DEF(overlays)
name = "Overlay"
flags = SS_TICKER
runlevels = RUNLEVELS_DEFAULT | RUNLEVEL_LOBBY
@@ -19,9 +17,6 @@ var/datum/controller/subsystem/overlays/SSoverlays
msg = "Ov:[processing.len - (idex - 1)]"
return ..()
/datum/controller/subsystem/overlays/New()
NEW_SS_GLOBAL(SSoverlays)
/datum/controller/subsystem/overlays/Initialize()
initialized = TRUE
Flush()

View File

@@ -1,6 +1,4 @@
/var/datum/controller/subsystem/pai/SSpai
/datum/controller/subsystem/pai
SUBSYSTEM_DEF(pai)
name = "pAI"
init_order = SS_INIT_MISC_FIRST
flags = SS_NO_FIRE
@@ -15,8 +13,7 @@
var/askDelay = 1 MINUTE
/datum/controller/subsystem/pai/New()
NEW_SS_GLOBAL(SSpai)
/datum/controller/subsystem/pai/PreInit()
LAZYINITLIST(pai_software_by_key)
LAZYINITLIST(default_pai_software)
@@ -25,10 +22,10 @@
default_pai_software = SSpai.default_pai_software
/datum/controller/subsystem/pai/ui_state(mob/user)
return always_state
return always_state
/datum/controller/subsystem/pai/ui_status(mob/user, datum/ui_state/state)
return UI_INTERACTIVE
return UI_INTERACTIVE
/datum/controller/subsystem/pai/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state)

View File

@@ -1,4 +1,4 @@
/datum/controller/subsystem/ping
SUBSYSTEM_DEF(ping)
name = "Ping"
priority = SS_PRIORITY_PING
init_order = SS_INIT_PING

View File

@@ -1,6 +1,4 @@
/var/datum/controller/subsystem/plants/SSplants
/datum/controller/subsystem/plants
SUBSYSTEM_DEF(plants)
name = "Seeds & Plants"
flags = 0 // Override parent's flags.
wait = 75
@@ -21,9 +19,6 @@
var/list/processing = list()
var/list/current = list()
/datum/controller/subsystem/plants/New()
NEW_SS_GLOBAL(SSplants)
/datum/controller/subsystem/plants/stat_entry(msg)
msg = "P:[processing.len]"
return ..()

View File

@@ -1,5 +1,3 @@
/var/datum/controller/subsystem/processing/airflow/SSairflow
#define CLEAR_OBJECT(TARGET) \
processing -= TARGET; \
TARGET.airflow_dest = null; \
@@ -10,15 +8,12 @@
TARGET.density = 0; \
}
/datum/controller/subsystem/processing/airflow
PROCESSING_SUBSYSTEM_DEF(airflow)
name = "Airflow"
wait = 1
flags = SS_NO_INIT
priority = SS_PRIORITY_AIRFLOW
/datum/controller/subsystem/processing/airflow/New()
NEW_SS_GLOBAL(SSairflow)
/datum/controller/subsystem/processing/airflow/fire(resumed = FALSE)
if (!resumed)
currentrun = processing.Copy() // Defined in parent.

View File

@@ -1,13 +1,8 @@
// This is a separate processor so the MC can schedule singuloth/tesla/Nar-sie independent from other objects.
var/datum/controller/subsystem/processing/calamity/SScalamity
/datum/controller/subsystem/processing/calamity
PROCESSING_SUBSYSTEM_DEF(calamity)
name = "Calamity"
flags = SS_NO_INIT | SS_POST_FIRE_TIMING
priority = SS_PRIORITY_CALAMITY
var/list/singularities = list()
/datum/controller/subsystem/processing/calamity/New()
NEW_SS_GLOBAL(SScalamity)

View File

@@ -1,14 +1,9 @@
/var/datum/controller/subsystem/processing/dcs/SSdcs
/datum/controller/subsystem/processing/dcs
PROCESSING_SUBSYSTEM_DEF(dcs)
name = "Datum Component System"
flags = SS_NO_INIT
var/list/elements_by_type = list()
/datum/controller/subsystem/processing/dcs/New()
NEW_SS_GLOBAL(SSdcs)
/datum/controller/subsystem/processing/dcs/Recover()
comp_lookup = SSdcs.comp_lookup

View File

@@ -1,9 +1,4 @@
var/datum/controller/subsystem/processing/disease/SSdisease
/datum/controller/subsystem/processing/disease
PROCESSING_SUBSYSTEM_DEF(disease)
name = "Diseases"
flags = SS_KEEP_TIMING | SS_NO_INIT
priority = SS_PRIORITY_DISEASE
/datum/controller/subsystem/processing/disease/New()
NEW_SS_GLOBAL(SSdisease)

View File

@@ -1,6 +1,4 @@
/var/datum/controller/subsystem/processing/disposals/SSdisposals
/datum/controller/subsystem/processing/disposals
PROCESSING_SUBSYSTEM_DEF(disposals)
name = "Disposals"
wait = 1 // deciseconds
flags = SS_NO_INIT | SS_BACKGROUND
@@ -9,6 +7,5 @@
// Reference list for disposal sort junctions. Filled by sorting junctions' initialize().
var/list/tagger_locations
/datum/controller/subsystem/processing/disposals/New()
NEW_SS_GLOBAL(SSdisposals)
/datum/controller/subsystem/processing/disposals/PreInit()
LAZYINITLIST(tagger_locations)

View File

@@ -1,9 +1,7 @@
#define IC_SPAWN_DEFAULT 1 // If the circuit comes in the default circuit box and able to be printed in the IC printer.
#define IC_SPAWN_RESEARCH 2 // If the circuit design will be available in the IC printer after upgrading it.
/var/datum/controller/subsystem/processing/electronics/SSelectronics
/datum/controller/subsystem/processing/electronics
PROCESSING_SUBSYSTEM_DEF(electronics)
name = "Electronics"
wait = 2 SECONDS
priority = SS_PRIORITY_ELECTRONICS
@@ -16,9 +14,6 @@
var/list/printer_recipe_list_upgraded = list()
var/list/found_categories = list()
/datum/controller/subsystem/processing/electronics/New()
NEW_SS_GLOBAL(SSelectronics)
/datum/controller/subsystem/processing/electronics/Initialize(timeofday)
init_subtypes(/obj/item/integrated_circuit, all_integrated_circuits)

View File

@@ -1,10 +1,4 @@
/var/datum/controller/subsystem/processing/fast/SSfast_process
// Not really much to it, literally just a faster-ticking SSprocessing.
/datum/controller/subsystem/processing/fast
/// Not really much to it, literally just a faster-ticking SSprocessing.
PROCESSING_SUBSYSTEM_DEF(fast_process)
name = "Processing (Fast)"
wait = 5
/datum/controller/subsystem/processing/fast/New()
NEW_SS_GLOBAL(SSfast_process)

View File

@@ -1,9 +1,6 @@
var/datum/controller/subsystem/processing/modifiers/SSmodifiers
/datum/controller/subsystem/processing/modifiers
PROCESSING_SUBSYSTEM_DEF(modifiers)
name = "Modifiers"
wait = 1 SECOND
flags = SS_NO_INIT
priority = SS_PRIORITY_MODIFIER
/datum/controller/subsystem/processing/modifiers/New()
NEW_SS_GLOBAL(SSmodifiers)

View File

@@ -1,6 +1,4 @@
var/datum/controller/subsystem/processing/nanoui/SSnanoui
/datum/controller/subsystem/processing/nanoui
PROCESSING_SUBSYSTEM_DEF(nanoui)
// Subsystem stuff.
name = "NanoUI"
flags = SS_NO_INIT
@@ -10,9 +8,6 @@ var/datum/controller/subsystem/processing/nanoui/SSnanoui
// NanoUI stuff.
var/list/open_uis = list()
/datum/controller/subsystem/processing/nanoui/New()
NEW_SS_GLOBAL(SSnanoui)
/**
* Get an open /nanoui ui for the current user, src_object and ui_key and try to update it with data
*

View File

@@ -1,9 +1,7 @@
var/datum/controller/subsystem/processing/ntsl2/SSntsl2
/*
NTSL2 deamon management subsystem, responsible for handling events from deamon and it's connection state.
*/
/datum/controller/subsystem/processing/ntsl2
PROCESSING_SUBSYSTEM_DEF(ntsl2)
name = "NTSL2"
flags = 0
init_order = SS_INIT_MISC
@@ -13,9 +11,6 @@ NTSL2 deamon management subsystem, responsible for handling events from deamon a
var/list/tasks = list()
var/current_task_id = 1
/datum/controller/subsystem/processing/ntsl2/New()
NEW_SS_GLOBAL(SSntsl2)
/datum/controller/subsystem/processing/ntsl2/Initialize(timeofday)
attempt_connect()
..()

View File

@@ -1,14 +1,9 @@
var/datum/controller/subsystem/processing/obj_tab_items/SSobj_tab_items
/datum/controller/subsystem/processing/obj_tab_items
PROCESSING_SUBSYSTEM_DEF(obj_tab_items)
name = "Obj Tab Items"
flags = SS_NO_INIT
runlevels = RUNLEVEL_LOBBY | RUNLEVELS_DEFAULT
wait = 0.1 SECONDS
/datum/controller/subsystem/processing/obj_tab_items/New()
NEW_SS_GLOBAL(SSobj_tab_items)
// I know this is mostly copypasta, but I want to change the processing logic
// Sorry bestie :(
/datum/controller/subsystem/processing/obj_tab_items/fire(resumed = FALSE)

View File

@@ -1,11 +1,6 @@
var/datum/controller/subsystem/processing/overmap/SSovermap
/datum/controller/subsystem/processing/overmap
PROCESSING_SUBSYSTEM_DEF(overmap)
name = "Overmap"
stat_tag = "OVRM"
priority = SS_PRIORITY_OVERMAP
flags = SS_TICKER|SS_NO_INIT
wait = 7
/datum/controller/subsystem/processing/overmap/New()
NEW_SS_GLOBAL(SSovermap)

View File

@@ -1,7 +1,5 @@
//Used to process objects. Fires once every two seconds.
var/datum/controller/subsystem/processing/SSprocessing
/datum/controller/subsystem/processing
SUBSYSTEM_DEF(processing)
name = "Processing"
priority = SS_PRIORITY_PROCESSING
flags = SS_BACKGROUND|SS_POST_FIRE_TIMING|SS_NO_INIT
@@ -10,9 +8,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(msg)
msg = "[stat_tag]:[processing.len]"
return ..()

View File

@@ -1,12 +1,7 @@
var/datum/controller/subsystem/processing/projectiles/SSprojectiles
/datum/controller/subsystem/processing/projectiles
PROCESSING_SUBSYSTEM_DEF(projectiles)
name = "Projectiles"
stat_tag = "PROJ"
priority = SS_PRIORITY_PROJECTILES
flags = SS_TICKER|SS_NO_INIT
wait = 1
var/global_max_tick_moves = 10
/datum/controller/subsystem/processing/projectiles/New()
NEW_SS_GLOBAL(SSprojectiles)

View File

@@ -1,8 +1,6 @@
var/global/list/psychic_ranks_to_strings = list("Psionically Sensitive", "Psionically Harmonious", "Psionic Apex", "Limitless")
/var/datum/controller/subsystem/processing/psi/SSpsi
/datum/controller/subsystem/processing/psi
PROCESSING_SUBSYSTEM_DEF(psi)
name = "Psionics"
priority = SS_PRIORITY_PSYCHICS
flags = SS_BACKGROUND
@@ -16,9 +14,6 @@ var/global/list/psychic_ranks_to_strings = list("Psionically Sensitive", "Psioni
var/list/all_aura_images = list()
var/list/all_psi_complexes = list()
/datum/controller/subsystem/processing/psi/New()
NEW_SS_GLOBAL(SSpsi)
/datum/controller/subsystem/processing/psi/fire(resumed)
..()
if((world.time >= (last_nlom_awareness_check + 30 MINUTES)) && !checking_nlom && !completing_nlom)

View File

@@ -1,6 +1,4 @@
var/datum/controller/subsystem/shuttle/SSshuttle
/datum/controller/subsystem/shuttle
SUBSYSTEM_DEF(shuttle)
name = "Shuttle"
wait = 2 SECONDS
priority = SS_PRIORITY_SHUTTLE
@@ -28,9 +26,6 @@ var/datum/controller/subsystem/shuttle/SSshuttle
var/tmp/list/working_shuttles
/datum/controller/subsystem/shuttle/New()
NEW_SS_GLOBAL(SSshuttle)
/datum/controller/subsystem/shuttle/Initialize()
last_landmark_registration_time = world.time
for(var/shuttle_type in subtypesof(/datum/shuttle)) // This accounts for most shuttles, though away maps can queue up more.

View File

@@ -10,9 +10,7 @@
*
*/
var/datum/controller/subsystem/processing/tgui/SStgui
/datum/controller/subsystem/processing/tgui
PROCESSING_SUBSYSTEM_DEF(tgui)
name = "tgui"
wait = 9
flags = SS_NO_INIT

View File

@@ -1,7 +1,4 @@
var/datum/controller/subsystem/profiler/SSprofiler
/datum/controller/subsystem/profiler
SUBSYSTEM_DEF(profiler)
name = "Profiler"
wait = 1
priority = SS_PRIORITY_PROFILE
@@ -15,9 +12,6 @@ var/datum/controller/subsystem/profiler/SSprofiler
var/next_restart = 0
var/restart_period = 0
/datum/controller/subsystem/profiler/New()
NEW_SS_GLOBAL(SSprofiler)
/datum/controller/subsystem/profiler/Initialize()
if (!config.profiler_is_enabled)
..()

View File

@@ -1,6 +1,4 @@
var/datum/controller/subsystem/radiation/SSradiation
/datum/controller/subsystem/radiation
SUBSYSTEM_DEF(radiation)
name = "Radiation"
wait = 2 SECONDS
priority = SS_PRIORITY_RADIATION
@@ -14,9 +12,6 @@ var/datum/controller/subsystem/radiation/SSradiation
var/list/current_res_cache = list()
var/list/listeners = list()
/datum/controller/subsystem/radiation/New()
NEW_SS_GLOBAL(SSradiation)
/datum/controller/subsystem/radiation/fire(resumed = FALSE)
if (!resumed)
current_sources = sources.Copy()

View File

@@ -5,59 +5,59 @@
Note that walkie-talkie, intercoms and headsets handle transmission using nonstandard way.
procs:
add_object(obj/device as obj, var/new_frequency as num, var/filter as text|null = null)
Adds listening object.
parameters:
device - device receiving signals, must have proc receive_signal (see description below).
one device may listen several frequencies, but not same frequency twice.
new_frequency - see possibly frequencies below;
filter - thing for optimization. Optional, but recommended.
All filters should be consolidated in this file, see defines later.
Device without listening filter will receive all signals (on specified frequency).
Device with filter will receive any signals sent without filter.
Device with filter will not receive any signals sent with different filter.
returns:
Reference to frequency object.
add_object(obj/device as obj, var/new_frequency as num, var/filter as text|null = null)
Adds listening object.
parameters:
device - device receiving signals, must have proc receive_signal (see description below).
one device may listen several frequencies, but not same frequency twice.
new_frequency - see possibly frequencies below;
filter - thing for optimization. Optional, but recommended.
All filters should be consolidated in this file, see defines later.
Device without listening filter will receive all signals (on specified frequency).
Device with filter will receive any signals sent without filter.
Device with filter will not receive any signals sent with different filter.
returns:
Reference to frequency object.
remove_object (obj/device, old_frequency)
Obliviously, after calling this proc, device will not receive any signals on old_frequency.
Other frequencies will left unaffected.
remove_object (obj/device, old_frequency)
Obliviously, after calling this proc, device will not receive any signals on old_frequency.
Other frequencies will left unaffected.
return_frequency(var/frequency as num)
returns:
Reference to frequency object. Use it if you need to send and do not need to listen.
returns:
Reference to frequency object. Use it if you need to send and do not need to listen.
radio_frequency is a global object maintaining list of devices that listening specific frequency.
procs:
post_signal(obj/source as obj|null, datum/signal/signal, var/filter as text|null = null, var/range as num|null = null)
Sends signal to all devices that wants such signal.
parameters:
source - object, emitted signal. Usually, devices will not receive their own signals.
signal - see description below.
filter - described above.
range - radius of regular byond's square circle on that z-level. null means everywhere, on all z-levels.
post_signal(obj/source as obj|null, datum/signal/signal, var/filter as text|null = null, var/range as num|null = null)
Sends signal to all devices that wants such signal.
parameters:
source - object, emitted signal. Usually, devices will not receive their own signals.
signal - see description below.
filter - described above.
range - radius of regular byond's square circle on that z-level. null means everywhere, on all z-levels.
obj/proc/receive_signal(datum/signal/signal, var/receive_method as num, var/receive_param)
Handler from received signals. By default does nothing. Define your own for your object.
Avoid of sending signals directly from this proc, use spawn(-1). DO NOT use sleep() here or call procs that sleep please. If you must, use spawn()
parameters:
signal - see description below. Extract all needed data from the signal before doing sleep(), spawn() or return!
receive_method - may be TRANSMISSION_WIRE or TRANSMISSION_RADIO.
TRANSMISSION_WIRE is currently unused.
receive_param - for TRANSMISSION_RADIO here comes frequency.
Handler from received signals. By default does nothing. Define your own for your object.
Avoid of sending signals directly from this proc, use spawn(-1). DO NOT use sleep() here or call procs that sleep please. If you must, use spawn()
parameters:
signal - see description below. Extract all needed data from the signal before doing sleep(), spawn() or return!
receive_method - may be TRANSMISSION_WIRE or TRANSMISSION_RADIO.
TRANSMISSION_WIRE is currently unused.
receive_param - for TRANSMISSION_RADIO here comes frequency.
datum/signal
vars:
source
an object that emitted signal. Used for debug and bearing.
data
list with transmitting data. Usual use pattern:
data["msg"] = "hello world"
encryption
Some number symbolizing "encryption key".
Note that game actually do not use any cryptography here.
If receiving object don't know right key, it must ignore encrypted signal in its receive_signal.
vars:
source
an object that emitted signal. Used for debug and bearing.
data
list with transmitting data. Usual use pattern:
data["msg"] = "hello world"
encryption
Some number symbolizing "encryption key".
Note that game actually do not use any cryptography here.
If receiving object don't know right key, it must ignore encrypted signal in its receive_signal.
*/
@@ -96,17 +96,12 @@ On the map:
1455 for AI access
*/
var/datum/controller/subsystem/radio/SSradio
/datum/controller/subsystem/radio
SUBSYSTEM_DEF(radio)
name = "Radio"
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/stat_entry(msg)
msg = "F:[frequencies.len]"
return ..()

View File

@@ -1,6 +1,4 @@
/var/datum/controller/subsystem/records/SSrecords
/datum/controller/subsystem/records
SUBSYSTEM_DEF(records)
name = "Records"
flags = SS_NO_FIRE
@@ -30,7 +28,7 @@
InitializeReligions()
InitializeAccents()
/datum/controller/subsystem/records/New()
/datum/controller/subsystem/records/PreInit()
records = list()
records_locked = list()
warrants = list()
@@ -39,7 +37,6 @@
excluded_fields = list()
localized_fields = list()
manifest = list()
NEW_SS_GLOBAL(SSrecords)
var/datum/D = new()
for(var/v in D.vars)
excluded_fields[v] = v

View File

@@ -1,6 +1,4 @@
/var/datum/controller/subsystem/distress/SSdistress
/datum/controller/subsystem/distress
SUBSYSTEM_DEF(distress)
name = "Distress"
flags = SS_NO_FIRE
@@ -18,9 +16,8 @@
/datum/controller/subsystem/distress/Recover()
send_emergency_team = SSdistress.send_emergency_team
/datum/controller/subsystem/distress/New()
NEW_SS_GLOBAL(SSdistress)
feedback_set("responseteam_count",0)
/datum/controller/subsystem/distress/PreInit()
feedback_set("responseteam_count", 0)
/datum/controller/subsystem/distress/Initialize(start_timeofday)
. = ..()

View File

@@ -1,6 +1,4 @@
var/datum/controller/subsystem/skybox/SSskybox
/datum/controller/subsystem/skybox
SUBSYSTEM_DEF(skybox)
name = "Space skybox"
init_order = SS_INIT_PARALLAX
flags = SS_NO_FIRE
@@ -31,9 +29,6 @@ var/datum/controller/subsystem/skybox/SSskybox
space_appearance_cache[i + 1] = space.appearance
background_color = SSatlas.current_sector.starlight_color
/datum/controller/subsystem/skybox/New()
NEW_SS_GLOBAL(SSskybox)
/datum/controller/subsystem/skybox/Initialize()
. = ..()
build_space_appearances()

View File

@@ -96,9 +96,7 @@
* as of right now this system operates on a subset of the important_recursive_contents list for atom/movable, specifically
* [RECURSIVE_CONTENTS_HEARING_SENSITIVE] and [RECURSIVE_CONTENTS_CLIENT_MOBS] because both are those are both 1. important and 2. commonly searched for
*/
/var/datum/controller/subsystem/spatial_grid/SSspatial_grid
/datum/controller/subsystem/spatial_grid
SUBSYSTEM_DEF(spatial_grid)
name = "Spatial Grid"
flags = SS_NO_FIRE
@@ -118,9 +116,6 @@
///how many pregenerated /mob/abstract/oranges_ear instances currently exist. this should hopefully never exceed its starting value
var/number_of_oranges_ears = NUMBER_OF_PREGENERATED_ORANGES_EARS
/datum/controller/subsystem/spatial_grid/New()
NEW_SS_GLOBAL(SSspatial_grid)
/datum/controller/subsystem/spatial_grid/Initialize(start_timeofday)
. = ..()

View File

@@ -1,6 +1,4 @@
/var/datum/controller/subsystem/statistics/SSfeedback
/datum/controller/subsystem/statistics
SUBSYSTEM_DEF(statistics)
name = "Statistics & Inactivity"
wait = 1 MINUTE
flags = SS_NO_TICK_CHECK | SS_BACKGROUND
@@ -33,9 +31,6 @@
var/status_needs_update = FALSE
/datum/controller/subsystem/statistics/New()
NEW_SS_GLOBAL(SSfeedback)
/datum/controller/subsystem/statistics/Initialize(timeofday)
for (var/type in subtypesof(/datum/statistic) - list(/datum/statistic/numeric, /datum/statistic/grouped))
var/datum/statistic/S = new type
@@ -84,21 +79,21 @@
status_needs_update = TRUE
/datum/controller/subsystem/statistics/Recover()
src.messages = SSfeedback.messages
src.messages_admin = SSfeedback.messages_admin
src.messages = SSstatistics.messages
src.messages_admin = SSstatistics.messages_admin
src.msg_common = SSfeedback.msg_common
src.msg_science = SSfeedback.msg_science
src.msg_command = SSfeedback.msg_command
src.msg_medical = SSfeedback.msg_medical
src.msg_engineering = SSfeedback.msg_engineering
src.msg_security = SSfeedback.msg_security
src.msg_deathsquad = SSfeedback.msg_deathsquad
src.msg_syndicate = SSfeedback.msg_syndicate
src.msg_cargo = SSfeedback.msg_cargo
src.msg_service = SSfeedback.msg_service
src.msg_common = SSstatistics.msg_common
src.msg_science = SSstatistics.msg_science
src.msg_command = SSstatistics.msg_command
src.msg_medical = SSstatistics.msg_medical
src.msg_engineering = SSstatistics.msg_engineering
src.msg_security = SSstatistics.msg_security
src.msg_deathsquad = SSstatistics.msg_deathsquad
src.msg_syndicate = SSstatistics.msg_syndicate
src.msg_cargo = SSstatistics.msg_cargo
src.msg_service = SSstatistics.msg_service
src.feedback = SSfeedback.feedback
src.feedback = SSstatistics.feedback
/datum/controller/subsystem/statistics/proc/find_feedback_datum(variable)
for (var/datum/feedback_variable/FV in feedback)
@@ -179,58 +174,58 @@
return text
/proc/feedback_set(var/variable,var/value)
if(!SSfeedback)
if(!SSstatistics)
return
variable = sql_sanitize_text(variable)
var/datum/feedback_variable/FV = SSfeedback.find_feedback_datum(variable)
var/datum/feedback_variable/FV = SSstatistics.find_feedback_datum(variable)
if(!FV) return
FV.set_value(value)
/proc/feedback_inc(var/variable,var/value)
if(!SSfeedback) return
if(!SSstatistics) return
variable = sql_sanitize_text(variable)
var/datum/feedback_variable/FV = SSfeedback.find_feedback_datum(variable)
var/datum/feedback_variable/FV = SSstatistics.find_feedback_datum(variable)
if(!FV) return
FV.inc(value)
/proc/feedback_dec(var/variable,var/value)
if(!SSfeedback) return
if(!SSstatistics) return
variable = sql_sanitize_text(variable)
var/datum/feedback_variable/FV = SSfeedback.find_feedback_datum(variable)
var/datum/feedback_variable/FV = SSstatistics.find_feedback_datum(variable)
if(!FV) return
FV.dec(value)
/proc/feedback_set_details(var/variable,var/details)
if(!SSfeedback) return
if(!SSstatistics) return
variable = sql_sanitize_text(variable)
details = sql_sanitize_text(details)
var/datum/feedback_variable/FV = SSfeedback.find_feedback_datum(variable)
var/datum/feedback_variable/FV = SSstatistics.find_feedback_datum(variable)
if(!FV) return
FV.set_details(details)
/proc/feedback_add_details(var/variable,var/details)
if(!SSfeedback) return
if(!SSstatistics) return
variable = sql_sanitize_text(variable)
details = sql_sanitize_text(details)
var/datum/feedback_variable/FV = SSfeedback.find_feedback_datum(variable)
var/datum/feedback_variable/FV = SSstatistics.find_feedback_datum(variable)
if(!FV) return

View File

@@ -1,6 +1,4 @@
var/datum/controller/subsystem/statpanels/SSstatpanels
/datum/controller/subsystem/statpanels
SUBSYSTEM_DEF(statpanels)
name = "Stat Panels"
wait = 4
init_order = SS_INIT_MISC_FIRST
@@ -21,9 +19,6 @@ var/datum/controller/subsystem/statpanels/SSstatpanels
///how many full runs this subsystem has completed. used for variable rate refreshes.
var/num_fires = 0
/datum/controller/subsystem/statpanels/New()
NEW_SS_GLOBAL(SSstatpanels)
/datum/controller/subsystem/statpanels/fire(resumed = FALSE)
if (!resumed)
num_fires++

View File

@@ -1,6 +1,4 @@
/var/datum/controller/subsystem/stickyban/SSstickyban
/datum/controller/subsystem/stickyban
SUBSYSTEM_DEF(stickyban)
name = "PRISM"
init_order = SS_INIT_MISC_FIRST
flags = SS_NO_FIRE
@@ -10,9 +8,6 @@
var/list/confirmed_exempt = list()
var/dbcacheexpire = 0
/datum/controller/subsystem/stickyban/New()
NEW_SS_GLOBAL(SSstickyban)
/datum/controller/subsystem/stickyban/Initialize(timeofday)
var/list/bannedkeys = sticky_banned_ckeys()
//sanitize the sticky ban list

View File

@@ -1,6 +1,4 @@
var/datum/controller/subsystem/sun/sun
/datum/controller/subsystem/sun
SUBSYSTEM_DEF(sun)
name = "Sun"
flags = SS_NO_INIT | SS_POST_FIRE_TIMING | SS_BACKGROUND
wait = 1 MINUTE
@@ -15,8 +13,7 @@ var/datum/controller/subsystem/sun/sun
var/tmp/list/updating_solars
var/solar_next_update // last time the sun position was checked and adjusted
/datum/controller/subsystem/sun/New()
NEW_SS_GLOBAL(sun)
/datum/controller/subsystem/sun/PreInit()
LAZYINITLIST(solars)
rate = rand(50,200)/100 // 50% - 200% of standard rotation

View File

@@ -1,8 +1,6 @@
#ifdef ENABLE_SUNLIGHT
/var/datum/controller/subsystem/sunlight/SSsunlight
/datum/controller/subsystem/sunlight
SUBSYSTEM_DEF(sunlight)
name = "Sunlight"
flags = SS_NO_FIRE
init_order = SS_INIT_SUNLIGHT
@@ -12,9 +10,6 @@
var/list/presets
/datum/controller/subsystem/sunlight/New()
NEW_SS_GLOBAL(SSsunlight)
/datum/controller/subsystem/sunlight/stat_entry(msg)
msg = "A:[config.sun_accuracy] LP:[light_points.len] Z:[config.sun_target_z]"
return ..()

View File

@@ -311,7 +311,7 @@ var/datum/controller/subsystem/ticker/SSticker
for(var/i in total_antagonists)
log_game("[i]s[total_antagonists[i]].")
SSfeedback.print_round_end_message()
SSstatistics.print_round_end_message()
return 1

View File

@@ -16,9 +16,7 @@
* lists. The object at a given index in bucket_list is a /datum/timedevent, the head of a circular list, which has prev
* and next references for the respective elements in that bucket's circular list.
*/
var/datum/controller/subsystem/timer/SStimer
/datum/controller/subsystem/timer
SUBSYSTEM_DEF(timer)
name = "Timer"
wait = 1 //SS_TICKER subsystem, so wait is in ticks
priority = SS_PRIORITY_TIMER
@@ -55,8 +53,7 @@ var/datum/controller/subsystem/timer/SStimer
/// How many times bucket was reset
var/bucket_reset_count = 0
/datum/controller/subsystem/timer/New()
NEW_SS_GLOBAL(SStimer)
/datum/controller/subsystem/timer/PreInit()
bucket_list.len = BUCKET_LEN
head_offset = world.time
bucket_resolution = world.tick_lag

View File

@@ -1,15 +1,10 @@
/var/global/datum/controller/subsystem/trade/SStrade
/datum/controller/subsystem/trade
SUBSYSTEM_DEF(trade)
name = "Trade"
wait = 1 MINUTE
flags = SS_NO_TICK_CHECK
runlevels = RUNLEVELS_PLAYING
var/list/traders = list() //List of all nearby traders
/datum/controller/subsystem/trade/New()
NEW_SS_GLOBAL(SStrade)
/datum/controller/subsystem/trade/Initialize()
for(var/i in 1 to rand(1,3))
generateTrader(1)

View File

@@ -1,6 +1,4 @@
var/datum/controller/subsystem/typing/SStyping
/datum/controller/subsystem/typing
SUBSYSTEM_DEF(typing)
name = "Typing"
flags = SS_BACKGROUND
wait = 0.5 SECONDS
@@ -37,7 +35,6 @@ var/datum/controller/subsystem/typing/SStyping
*/
/datum/controller/subsystem/typing/Initialize(start_timeofday)
NEW_SS_GLOBAL(SStyping)
match_verbs = regex("^(Me|Say|Whisper) +\"?\\w+")
. = ..()

View File

@@ -1,6 +1,4 @@
/var/global/datum/controller/subsystem/virtualreality/SSvirtualreality
/datum/controller/subsystem/virtualreality
SUBSYSTEM_DEF(virtualreality)
name = "Virtual Reality"
init_order = SS_INIT_MISC_FIRST
flags = SS_NO_FIRE
@@ -17,9 +15,6 @@
var/list/boundnetworks = list(REMOTE_AI_ROBOT)
var/list/list/bounded = list()
/datum/controller/subsystem/virtualreality/New()
NEW_SS_GLOBAL(SSvirtualreality)
/datum/controller/subsystem/virtualreality/Initialize()
for(var/network in mechnetworks)
mechs[network] = list()

View File

@@ -1,6 +1,4 @@
var/datum/controller/subsystem/vote/SSvote
/datum/controller/subsystem/vote
SUBSYSTEM_DEF(vote)
name = "Voting"
wait = 1 SECOND
flags = SS_KEEP_TIMING | SS_NO_TICK_CHECK
@@ -22,9 +20,6 @@ var/datum/controller/subsystem/vote/SSvote
var/list/round_voters = list()
/datum/controller/subsystem/vote/New()
NEW_SS_GLOBAL(SSvote)
/datum/controller/subsystem/vote/Initialize(timeofday)
next_transfer_time = config.vote_autotransfer_initial
@@ -159,7 +154,7 @@ var/datum/controller/subsystem/vote/SSvote
restart = 1
if("gamemode")
if(master_mode != .)
SSpersist_config.last_gamemode = .
SSpersistent_configuration.last_gamemode = .
if(SSticker.mode)
restart = 1
else
@@ -326,10 +321,10 @@ var/datum/controller/subsystem/vote/SSvote
)
/datum/controller/subsystem/vote/ui_state(mob/user)
return always_state
return always_state
/datum/controller/subsystem/vote/ui_status(mob/user, datum/ui_state/state)
return UI_INTERACTIVE
return UI_INTERACTIVE
/datum/controller/subsystem/vote/ui_interact(mob/user, datum/tgui/ui)
ui = SStgui.try_update_ui(user, src, ui)

View File

@@ -1,6 +1,4 @@
/var/datum/controller/subsystem/zcopy/SSzcopy
/datum/controller/subsystem/zcopy
SUBSYSTEM_DEF(zcopy)
name = "Z-Copy"
wait = 1
init_order = SS_INIT_ZCOPY

View File

@@ -132,7 +132,7 @@
/datum/record/general/New(var/mob/living/carbon/human/H, var/nid)
..()
if (!H)
var/mob/living/carbon/human/dummy/mannequin/dummy = SSmob.get_mannequin("New record")
var/mob/living/carbon/human/dummy/mannequin/dummy = SSmobs.get_mannequin("New record")
photo_front = getFlatIcon(dummy, SOUTH)
photo_side = getFlatIcon(dummy, WEST)
else
@@ -235,13 +235,13 @@ var/warrant_uid = 0
var/antigen
var/spread_type = "Unknown"
cmp_field = "name"
//Manifest record
/datum/record/shuttle_manifest
name = "Unknown"
var/shuttle = "Unknown"
cmp_field = "name"
var/shuttle_uid = 0
/datum/record/shuttle_manifest/New()
..()

View File

@@ -132,13 +132,13 @@
if (!H.ckey)
return
SSfeedback.IncrementGroupedStat("ckey_deaths", H.ckey)
SSstatistics.IncrementGroupedStat("ckey_deaths", H.ckey)
if (gibbed)
SSfeedback.IncrementSimpleStat("gibs")
SSstatistics.IncrementSimpleStat("gibs")
/hook/clone/proc/increment_statistics(mob/living/carbon/human/H)
. = TRUE
if (!H.ckey)
return
SSfeedback.IncrementSimpleStat("clones")
SSstatistics.IncrementSimpleStat("clones")

View File

@@ -1273,7 +1273,7 @@ About the new airlock wires panel:
else if(activate && density)
open()
if (isAI(usr))
SSfeedback.IncrementSimpleStat("AI_DOOR")
SSstatistics.IncrementSimpleStat("AI_DOOR")
else if(!activate && !density)
close()
@@ -1578,7 +1578,7 @@ About the new airlock wires panel:
else if(activate && density)
open()
if (isAI(usr))
SSfeedback.IncrementSimpleStat("AI_DOOR")
SSstatistics.IncrementSimpleStat("AI_DOOR")
else if(!activate && !density)
close()
if("safeties")

View File

@@ -223,38 +223,38 @@
var/part_blackbox_b = "</span><b> \[[freq_text]\]</b> <span class='message'>" // Tweaked for security headsets -- TLE
var/blackbox_msg = "[part_a][data["name"]][part_blackbox_b][quotedmsg][part_c]"
if(istype(SSfeedback))
if(istype(SSstatistics))
switch(frequency)
if(PUB_FREQ)
SSfeedback.msg_common += blackbox_msg
SSstatistics.msg_common += blackbox_msg
if(SCI_FREQ)
SSfeedback.msg_science += blackbox_msg
SSstatistics.msg_science += blackbox_msg
if(COMM_FREQ)
SSfeedback.msg_command += blackbox_msg
SSstatistics.msg_command += blackbox_msg
if(MED_FREQ)
SSfeedback.msg_medical += blackbox_msg
SSstatistics.msg_medical += blackbox_msg
if(ENG_FREQ)
SSfeedback.msg_engineering += blackbox_msg
SSstatistics.msg_engineering += blackbox_msg
if(SEC_FREQ)
SSfeedback.msg_security += blackbox_msg
SSstatistics.msg_security += blackbox_msg
if(DTH_FREQ)
SSfeedback.msg_deathsquad += blackbox_msg
SSstatistics.msg_deathsquad += blackbox_msg
if(SYND_FREQ)
SSfeedback.msg_syndicate += blackbox_msg
SSstatistics.msg_syndicate += blackbox_msg
if(RAID_FREQ)
SSfeedback.msg_raider += blackbox_msg
SSstatistics.msg_raider += blackbox_msg
if(NINJ_FREQ)
SSfeedback.msg_ninja += blackbox_msg
SSstatistics.msg_ninja += blackbox_msg
if(BLSP_FREQ)
SSfeedback.msg_bluespace += blackbox_msg
SSstatistics.msg_bluespace += blackbox_msg
if(BURG_FREQ)
SSfeedback.msg_burglar += blackbox_msg
SSstatistics.msg_burglar += blackbox_msg
if(SUP_FREQ)
SSfeedback.msg_cargo += blackbox_msg
SSstatistics.msg_cargo += blackbox_msg
if(SRV_FREQ)
SSfeedback.msg_service += blackbox_msg
SSstatistics.msg_service += blackbox_msg
else
if(frequency in AWAY_FREQS_ASSIGNED)
SSfeedback.msg_ship += blackbox_msg
SSstatistics.msg_ship += blackbox_msg
else
SSfeedback.messages += blackbox_msg
SSstatistics.messages += blackbox_msg

View File

@@ -226,7 +226,7 @@ var/obj/machinery/blackbox_recorder/blackbox
idle_power_usage = 10
active_power_usage = 100
// Note: actual logging has been moved to SSfeedback.
// Note: actual logging has been moved to SSstatistics.
//Only one can exist in the world!
/obj/machinery/blackbox_recorder/Initialize()

View File

@@ -26,7 +26,7 @@
icon_state = pick(src.random_icon_states)
. = ..()
if (!mapload && ROUND_IS_STARTED)
SSfeedback.IncrementSimpleStat("messes_made")
SSstatistics.IncrementSimpleStat("messes_made")
var/turf/T = get_turf(src)
if(!T?.is_space())

Some files were not shown because too many files have changed in this diff Show More