diff --git a/code/__DEFINES/global.dm b/code/__DEFINES/global.dm index 4f3c913b040..9443eda8f86 100644 --- a/code/__DEFINES/global.dm +++ b/code/__DEFINES/global.dm @@ -65,6 +65,8 @@ GLOBAL_LIST_EMPTY(reg_dna) GLOBAL_DATUM(newplayer_start, /turf) +GLOBAL_DATUM(lobby_mobs_location, /turf) + //Spawnpoints. GLOBAL_LIST_EMPTY(latejoin) GLOBAL_LIST_EMPTY(latejoin_gateway) diff --git a/code/__DEFINES/subsystem-priority.dm b/code/__DEFINES/subsystem-priority.dm index 25690cfd3aa..1e7ac02b016 100644 --- a/code/__DEFINES/subsystem-priority.dm +++ b/code/__DEFINES/subsystem-priority.dm @@ -4,37 +4,13 @@ THAT ARE PRESENT THERE */ -#define SS_INIT_PERSISTENT_CONFIG 26 -#define SS_INIT_MISC_FIRST 25 -#define SS_INIT_SEEDS 24 // Plant controller setup. -#define SS_INIT_MAPLOAD 22 // DMM parsing and load. Unless you know what you're doing, make sure this remains first. -#define SS_INIT_JOBS 21 -#define SS_INIT_MAPFINALIZE 20 // Asteroid generation. -#define SS_INIT_PARALLAX 19 // Parallax image cache generation. Must run before ghosts are able to join -#define SS_INIT_ATOMS 17 // World initialization. Will trigger lighting updates. Observers can join after this loads. -#define SS_INIT_ASSETS 16 // Assets subsystem setup. -#define SS_INIT_POWER 15 // Initial powernet build. -#define SS_INIT_ECONOMY 14 // Cargo needs economy set up #define SS_INIT_CARGO 13 // Random warehouse generation. Runs after SSatoms because it assumes objects are initialized when it runs. #define SS_INIT_PIPENET 12 // Initial pipenet build. -#define SS_INIT_MACHINERY 11 // Machinery prune and powernet build. -#define SS_INIT_AIR 10 // Air setup and pre-bake. #define SS_INIT_NIGHT 9 // Nightmode controller. Will trigger lighting updates. -#define SS_INIT_SMOOTHING 8 // Object icon smoothing. Creates overlays. -#define SS_INIT_ICON_UPDATE 7 // Icon update queue flush. Should run before overlays. #define SS_INIT_AO 6 // Wall AO neighbour build. -#define SS_INIT_OVERLAY 5 // Overlay flush. -#define SS_INIT_AWAY_MAPS 4 // Note: away maps (ruins, exoplanets, ...) must initialize before ghost roles in order for their spawnpoints to work. -#define SS_INIT_GHOSTROLES 3 // Ghost roles must initialize before SS_INIT_MISC due to some roles (matriarch drones) relying on the assumption that this SS is initialized. -#define SS_INIT_MISC 2 // Subsystems without an explicitly set initialization order start here. #define SS_INIT_SUNLIGHT 1 // Sunlight setup. Creates lots of lighting & SSzcopy updates. -#define SS_INIT_LIGHTING 0 // Generation of lighting overlays and pre-bake. May cause openturf updates, should initialize before SSzcopy. -#define SS_INIT_ZCOPY -1 // Z-mimic flush. Should run after SSoverlay & SSicon_smooth so it copies the smoothed sprites. #define SS_INIT_XENOARCH -2 // Xenoarch is this far below because it can infinite loop if placed in SS_INIT_MISC as it was before, due to some subsystems spawning stuff there. #define SS_INIT_HOLOMAP -4 // Minimap subsystem. Should be initialized after all maps, away sites, ships, planets, etc. -#define SS_INIT_LOBBY -5 // Lobby timer starts here. The lobby timer won't actually start going down until the MC starts ticking, so you probably want this last -#define SS_INIT_PING -6 // Pinger for the clients -#define SS_INIT_CHAT -7 // To ensure chat remains smooth during init. // Something to remember when setting priorities: SS_TICKER runs before Normal, which runs before SS_BACKGROUND. // Each group has its own priority bracket. @@ -58,14 +34,11 @@ #define SS_PRIORITY_TICKER 100 // Gameticker. //#define FIRE_PRIORITY_DEFAULT 50 // This is defined somewhere else. #define SS_PRIORITY_MOB 40 // Mob Life(). -#define SS_PRIORITY_ASSET 40 // Asset loading subsystem - not to be confused with SSassets. #define SS_PRIORITY_AIR 40 // ZAS processing. -#define SS_PRIORITY_CHAT 30 // Chat #define SS_PRIORITY_STATPANELS 25 // Statpanels. #define SS_PRIORITY_LIGHTING 25 // Queued lighting engine updates. #define SS_PRIORITY_MACHINERY 25 // Machinery + powernet ticks. #define SS_PRIORITY_NANOUI 25 // UI updates. -#define SS_PRIORITY_VOTE 20 #define SS_PRIORITY_ELECTRONICS 20 // Integrated Electronics processing. #define SS_PRIORITY_CALAMITY 20 // Singularity, Tesla, Nar'sie, blob, etc. #define SS_PRIORITY_EVENT 20 @@ -77,7 +50,6 @@ #define SS_PRIORITY_CHEMISTRY 10 // Multi-tick chemical reactions. #define SS_PRIORITY_SHUTTLE 10 // Shuttle movement. #define SS_PRIORITY_AIRFLOW 10 // Handles object movement due to ZAS airflow. -#define SS_PRIORITY_PING 10 #define SS_PRIORITY_ZCOPY 10 // Z-mimic icon generation/updates. #define SS_PRIORITY_ARRIVALS 10 // Centcomm arrivals shuttle auto-launch. Usually asleep. diff --git a/code/__DEFINES/subsystems.dm b/code/__DEFINES/subsystems.dm index 97b58df60e5..05dcce4f866 100644 --- a/code/__DEFINES/subsystems.dm +++ b/code/__DEFINES/subsystems.dm @@ -196,18 +196,47 @@ // Subsystems shutdown in the reverse of the order they initialize in // The numbers just define the ordering, they are meaningless otherwise. +#define INIT_ORDER_PERSISTENT_CONFIGURATION 101 //Aurora snowflake conflg handling #define INIT_ORDER_PROFILER 101 #define INIT_ORDER_GARBAGE 99 +#define INIT_ORDER_DISCORD 78 +#define INIT_ORDER_JOBS 65 // Must init before atoms, to set up properly the dynamic job lists. +#define INIT_ORDER_TICKER 55 +#define INIT_ORDER_SEEDS 52 // More aurora snowflake, needs to load before the atoms init as it generates images for seeds that are used +#define INIT_ORDER_MISC_FIRST 51 //Another aurora snowflake system? Who would have guessed... Anyways, need to load before mapping or global HUDs are not ready when atoms request them +#define INIT_ORDER_MAPPING 50 //This is the ATLAS subsystem +#define INIT_ORDER_PARALLAX 49 // Parallax image cache generation. Must run before ghosts are able to join. Another aurora snowflake code, run after mapping or it runtimes +#define INIT_ORDER_EARLY_ASSETS 48 #define INIT_ORDER_SPATIAL_GRID 43 +#define INIT_ORDER_ECONOMY 40 +#define INIT_ORDER_MAPFINALIZE 31 //Asteroid generation, another aurora snowflake, must run before the atoms init +#define INIT_ORDER_ATOMS 30 +#define INIT_ORDER_MACHINES 20 +#define INIT_ORDER_DEFAULT 0 +#define INIT_ORDER_AIR -1 +#define INIT_ORDER_AWAY_MAPS -2 //Loading away sites and exoplanets, should start after air, must initialize before ghost roles in order for their spawnpoints to work +#define INIT_ORDER_GHOSTROLES -2.1 //Ghost roles must initialize before SS_INIT_MISC due to some roles (matriarch drones) relying on the assumption that this SS is initialized. +#define INIT_ORDER_MISC -2.2 //Aurora snowflake, Subsystems without an explicitly set initialization order start here #define INIT_ORDER_CODEX -3 // Codex subsystem. Should be initialized after chemistry and cooking recipes. +#define INIT_ORDER_VOTE -4 +#define INIT_ORDER_ASSETS -5 +#define INIT_ORDER_ICON_UPDATE -5.5 //Yet another aurora snowflake, Icon update queue flush. Should run before overlays, probably before smoothing the icon too +#define INIT_ORDER_ICON_SMOOTHING -6 +#define INIT_ORDER_OVERLAY -7 +#define INIT_ORDER_LIGHTING -20 +#define INIT_ORDER_ZCOPY -21 //Aurora snowflake, Z-mimic flush. Should run after SSoverlay & SSicon_smooth so it copies the smoothed sprites. #define INIT_ORDER_STATPANELS -97 +#define INIT_ORDER_CHAT -100 //Should be last to ensure chat remains smooth during init. // Subsystem fire priority, from lowest to highest priority // If the subsystem isn't listed here it's either DEFAULT or PROCESS (if it's a processing subsystem child) +#define FIRE_PRIORITY_PING 10 #define FIRE_PRIORITY_GARBAGE 15 +#define FIRE_PRIORITY_ASSETS 20 #define FIRE_PRIORITY_DEFAULT 50 #define FIRE_PRIORITY_STATPANEL 390 +#define FIRE_PRIORITY_CHAT 400 /* AURORA SHIT */ diff --git a/code/_onclick/hud/borer_hud.dm b/code/_onclick/hud/borer_hud.dm index 94dacd194e4..3ed2796680c 100644 --- a/code/_onclick/hud/borer_hud.dm +++ b/code/_onclick/hud/borer_hud.dm @@ -1,4 +1,4 @@ -/mob/living/simple_animal/borer/instantiate_hud(var/datum/hud/HUD) +/mob/living/simple_animal/borer/instantiate_hud(datum/hud/HUD) HUD.borer_hud() /datum/hud/proc/borer_hud() diff --git a/code/_onclick/hud/captive_brain_hud.dm b/code/_onclick/hud/captive_brain_hud.dm index 1f8922d74ce..60148589c21 100644 --- a/code/_onclick/hud/captive_brain_hud.dm +++ b/code/_onclick/hud/captive_brain_hud.dm @@ -1,4 +1,4 @@ -/mob/living/captive_brain/instantiate_hud(var/datum/hud/HUD) +/mob/living/captive_brain/instantiate_hud(datum/hud/HUD) HUD.captive_brain_hud() /datum/hud/proc/captive_brain_hud() diff --git a/code/_onclick/hud/hud.dm b/code/_onclick/hud/hud.dm index 64a20ad5629..1a2fc6eff37 100644 --- a/code/_onclick/hud/hud.dm +++ b/code/_onclick/hud/hud.dm @@ -119,12 +119,23 @@ var/list/global_huds */ /datum/hud + ///The mob that possesses the HUD var/mob/mymob - var/hud_shown = 1 //Used for the HUD toggle (F12) - var/inventory_shown = 1 //the inventory - var/show_intent_icons = 0 - var/hotkey_ui_hidden = 0 //This is to hide the buttons that can be used via hotkeys. (hotkeybuttons list of buttons) + ///Boolean, if the HUD is shown, used for the HUD toggle (F12) + var/hud_shown = TRUE + + ///Boolean, if the inventory is shows + var/inventory_shown = TRUE + + ///Boolean, if the intent icons are shown + var/show_intent_icons = FALSE + + ///Boolean, this is to hide the buttons that can be used via hotkeys. (hotkeybuttons list of buttons) + var/hotkey_ui_hidden = FALSE + + ///Boolean, if the action buttons are hidden + var/action_buttons_hidden = FALSE var/obj/screen/lingchemdisplay var/obj/screen/instability_display //Technomancer. @@ -141,7 +152,6 @@ var/list/global_huds var/list/obj/screen/hotkeybuttons var/obj/screen/movable/action_button/hide_toggle/hide_actions_toggle - var/action_buttons_hidden = 0 /datum/hud/New(mob/owner) mymob = owner @@ -169,7 +179,9 @@ var/list/global_huds . = ..() /datum/hud/proc/hidden_inventory_update() - if(!mymob) return + if(!mymob) + return + if(ishuman(mymob)) var/mob/living/carbon/human/H = mymob for(var/gear_slot in H.species.hud.gear) @@ -289,16 +301,30 @@ var/list/global_huds H.r_store.screen_loc = null +/** + * Instantiate an HUD to the current mob that own is + */ /datum/hud/proc/instantiate() - if(!ismob(mymob)) return 0 - if(!mymob.client) return 0 + SHOULD_NOT_SLEEP(TRUE) + SHOULD_CALL_PARENT(FALSE) + + if(!ismob(mymob)) + stack_trace("HUD instantiation called on an HUD without a mob!") + return FALSE + + if(!(mymob.client)) + return FALSE + var/ui_style = ui_style2icon(mymob.client.prefs.UI_style) var/ui_color = mymob.client.prefs.UI_style_color var/ui_alpha = mymob.client.prefs.UI_style_alpha mymob.instantiate_hud(src, ui_style, ui_color, ui_alpha) -/mob/proc/instantiate_hud(var/datum/hud/HUD, var/ui_style, var/ui_color, var/ui_alpha) +/mob/proc/instantiate_hud(datum/hud/HUD, ui_style, ui_color, ui_alpha) + SHOULD_NOT_SLEEP(TRUE) + SHOULD_CALL_PARENT(FALSE) + return //Triggered when F12 is pressed (Unless someone changed something in the DMF) @@ -307,16 +333,19 @@ var/list/global_huds set hidden = 1 if(!hud_used) - to_chat(usr, "This mob type does not use a HUD.") + to_chat(usr, SPAN_WARNING("This mob type does not use a HUD.")) return if(!ishuman(src)) - to_chat(usr, "Inventory hiding is currently only supported for human mobs, sorry.") + to_chat(usr, SPAN_WARNING("Inventory hiding is currently only supported for human mobs.")) + return + + if(!client) return - if(!client) return if(client.view != world.view) return + if(hud_used.hud_shown) hud_used.hud_shown = 0 if(src.hud_used.adding) diff --git a/code/_onclick/hud/human.dm b/code/_onclick/hud/human.dm index fc2bea2a221..864a28e0b63 100644 --- a/code/_onclick/hud/human.dm +++ b/code/_onclick/hud/human.dm @@ -1,4 +1,4 @@ -/mob/living/carbon/human/instantiate_hud(var/datum/hud/HUD, var/ui_style, var/ui_color, var/ui_alpha) +/mob/living/carbon/human/instantiate_hud(datum/hud/HUD, ui_style, ui_color, ui_alpha) HUD.human_hud(ui_style, ui_color, ui_alpha, src) /datum/hud/proc/human_hud(var/ui_style='icons/mob/screen/white.dmi', var/ui_color = "#ffffff", var/ui_alpha = 255, var/mob/living/carbon/human/target) diff --git a/code/_onclick/hud/morph.dm b/code/_onclick/hud/morph.dm index 5575d74e6be..61203779f2a 100644 --- a/code/_onclick/hud/morph.dm +++ b/code/_onclick/hud/morph.dm @@ -1,4 +1,4 @@ -/mob/living/simple_animal/hostile/morph/instantiate_hud(var/datum/hud/HUD) +/mob/living/simple_animal/hostile/morph/instantiate_hud(datum/hud/HUD) HUD.morph_hud() /datum/hud/proc/morph_hud() diff --git a/code/_onclick/hud/nymph_hud.dm b/code/_onclick/hud/nymph_hud.dm index a45dd59e4a7..d2c97f00fc1 100644 --- a/code/_onclick/hud/nymph_hud.dm +++ b/code/_onclick/hud/nymph_hud.dm @@ -1,4 +1,4 @@ -/mob/living/carbon/alien/instantiate_hud(var/datum/hud/HUD) +/mob/living/carbon/alien/instantiate_hud(datum/hud/HUD) HUD.nymph_hud() /datum/hud/proc/nymph_hud() diff --git a/code/_onclick/hud/other_mobs.dm b/code/_onclick/hud/other_mobs.dm index 78f53f47d43..ec8eb462ef6 100644 --- a/code/_onclick/hud/other_mobs.dm +++ b/code/_onclick/hud/other_mobs.dm @@ -2,16 +2,16 @@ /datum/hud/proc/unplayer_hud() return -/mob/abstract/observer/instantiate_hud(var/datum/hud/HUD) +/mob/abstract/observer/instantiate_hud(datum/hud/HUD) HUD.ghost_hud() /datum/hud/proc/ghost_hud() return -/mob/living/carbon/brain/instantiate_hud(var/datum/hud/HUD) +/mob/living/carbon/brain/instantiate_hud(datum/hud/HUD) return -/mob/living/silicon/ai/instantiate_hud(var/datum/hud/HUD) +/mob/living/silicon/ai/instantiate_hud(datum/hud/HUD) HUD.ai_hud() /datum/hud/proc/blob_hud(ui_style = 'icons/mob/screen/midnight.dmi') @@ -32,7 +32,7 @@ mymob.client.screen += list(blobpwrdisplay, blobhealthdisplay) -/mob/living/carbon/slime/instantiate_hud(var/datum/hud/HUD) +/mob/living/carbon/slime/instantiate_hud(datum/hud/HUD) HUD.slime_hud() /datum/hud/proc/slime_hud(ui_style = 'icons/mob/screen/midnight.dmi') @@ -103,7 +103,7 @@ return -/mob/living/simple_animal/construct/instantiate_hud(var/datum/hud/HUD) +/mob/living/simple_animal/construct/instantiate_hud(datum/hud/HUD) HUD.construct_hud() /datum/hud/proc/construct_hud() diff --git a/code/_onclick/hud/robot.dm b/code/_onclick/hud/robot.dm index e2883576e04..c3eb5d39cba 100644 --- a/code/_onclick/hud/robot.dm +++ b/code/_onclick/hud/robot.dm @@ -1,6 +1,6 @@ var/obj/screen/robot_inventory -/mob/living/silicon/robot/instantiate_hud(var/datum/hud/HUD) +/mob/living/silicon/robot/instantiate_hud(datum/hud/HUD) HUD.robot_hud() /datum/hud/proc/robot_hud() diff --git a/code/controllers/master/subsystem.dm b/code/controllers/master/subsystem.dm index e51ab044d81..81251ef06ca 100644 --- a/code/controllers/master/subsystem.dm +++ b/code/controllers/master/subsystem.dm @@ -7,7 +7,7 @@ name = "fire coderbus" /// Order of initialization. Higher numbers are initialized first, lower numbers later. Use or create defines such as [INIT_ORDER_DEFAULT] so we can see the order in one file. - var/init_order = SS_INIT_MISC + var/init_order = INIT_ORDER_DEFAULT /// Time to wait (in deciseconds) between each call to fire(). Must be a positive integer. var/wait = 20 diff --git a/code/controllers/subsystems/air.dm b/code/controllers/subsystems/air.dm index a362f2b6720..402b1e8371e 100644 --- a/code/controllers/subsystems/air.dm +++ b/code/controllers/subsystems/air.dm @@ -64,7 +64,7 @@ Class Procs: SUBSYSTEM_DEF(air) name = "Air" priority = SS_PRIORITY_AIR - init_order = SS_INIT_AIR + init_order = INIT_ORDER_AIR flags = SS_POST_FIRE_TIMING runlevels = RUNLEVELS_PLAYING diff --git a/code/controllers/subsystems/alarm.dm b/code/controllers/subsystems/alarm.dm index 5c510f64c57..fc267e44357 100644 --- a/code/controllers/subsystems/alarm.dm +++ b/code/controllers/subsystems/alarm.dm @@ -6,7 +6,7 @@ SUBSYSTEM_DEF(alarm) name = "Alarms" - init_order = SS_INIT_MISC_FIRST + init_order = INIT_ORDER_MISC_FIRST priority = SS_PRIORITY_ALARMS runlevels = RUNLEVELS_PLAYING diff --git a/code/controllers/subsystems/asset_loading.dm b/code/controllers/subsystems/asset_loading.dm index dc7e1ba3734..2d2939de4b2 100644 --- a/code/controllers/subsystems/asset_loading.dm +++ b/code/controllers/subsystems/asset_loading.dm @@ -3,7 +3,7 @@ /// So this just serves to remove the requirement to load assets fully during init SUBSYSTEM_DEF(asset_loading) name = "Asset Loading" - priority = SS_PRIORITY_ASSET + priority = FIRE_PRIORITY_ASSETS flags = SS_NO_INIT runlevels = RUNLEVEL_LOBBY|RUNLEVELS_DEFAULT var/list/datum/asset/generate_queue = list() diff --git a/code/controllers/subsystems/assets.dm b/code/controllers/subsystems/assets.dm index d8f6095a339..70c49640a90 100644 --- a/code/controllers/subsystems/assets.dm +++ b/code/controllers/subsystems/assets.dm @@ -1,27 +1,27 @@ SUBSYSTEM_DEF(assets) name = "Assets" - init_order = SS_INIT_ASSETS + init_order = INIT_ORDER_ASSETS flags = SS_NO_FIRE - runlevels = RUNLEVELS_DEFAULT | RUNLEVEL_LOBBY var/list/datum/asset_cache_item/cache = list() var/list/preload = list() var/datum/asset_transport/transport = new() -/datum/controller/subsystem/assets/Initialize() +/datum/controller/subsystem/assets/OnConfigLoad() var/newtransporttype = /datum/asset_transport switch (GLOB.config.asset_transport) if ("webroot") newtransporttype = /datum/asset_transport/webroot if (newtransporttype == transport.type) - return SS_INIT_SUCCESS + return var/datum/asset_transport/newtransport = new newtransporttype () if (newtransport.validate_config()) transport = newtransport - transport.Load() + +/datum/controller/subsystem/assets/Initialize() for(var/type in typesof(/datum/asset)) var/datum/asset/A = type if (type != initial(A._abstract)) diff --git a/code/controllers/subsystems/battle_monsters.dm b/code/controllers/subsystems/battle_monsters.dm index a8494b2860c..a9914ecae16 100644 --- a/code/controllers/subsystems/battle_monsters.dm +++ b/code/controllers/subsystems/battle_monsters.dm @@ -6,7 +6,7 @@ SUBSYSTEM_DEF(battle_monsters) name = "Battle Monsters" - init_order = SS_INIT_MISC_FIRST + init_order = INIT_ORDER_MISC_FIRST flags = SS_NO_FIRE var/list/monster_elements diff --git a/code/controllers/subsystems/chat.dm b/code/controllers/subsystems/chat.dm index f4219b98b1d..d76ce698d6f 100644 --- a/code/controllers/subsystems/chat.dm +++ b/code/controllers/subsystems/chat.dm @@ -9,8 +9,8 @@ SUBSYSTEM_DEF(chat) name = "Chat" flags = SS_TICKER | SS_NO_INIT wait = 1 - priority = SS_PRIORITY_CHAT - init_order = SS_INIT_CHAT + priority = FIRE_PRIORITY_CHAT + init_order = INIT_ORDER_CHAT var/list/payload_by_client = list() diff --git a/code/controllers/subsystems/chemistry.dm b/code/controllers/subsystems/chemistry.dm index 4b347f09563..3dbcb08ff52 100644 --- a/code/controllers/subsystems/chemistry.dm +++ b/code/controllers/subsystems/chemistry.dm @@ -1,7 +1,7 @@ SUBSYSTEM_DEF(chemistry) name = "Chemistry" priority = SS_PRIORITY_CHEMISTRY - init_order = SS_INIT_MISC_FIRST + init_order = INIT_ORDER_MISC_FIRST runlevels = RUNLEVELS_PLAYING init_stage = INITSTAGE_EARLY diff --git a/code/controllers/subsystems/discord.dm b/code/controllers/subsystems/discord.dm index fe31ee3654b..2190767bc8f 100644 --- a/code/controllers/subsystems/discord.dm +++ b/code/controllers/subsystems/discord.dm @@ -16,7 +16,7 @@ SUBSYSTEM_DEF(discord) name = "Discord" - init_order = SS_INIT_MISC_FIRST + init_order = INIT_ORDER_DISCORD flags = SS_NO_FIRE | SS_NO_DISPLAY var/list/channels_to_group = list() // Group flag -> list of channel datums map. diff --git a/code/controllers/subsystems/documents.dm b/code/controllers/subsystems/documents.dm index da497a10ed9..18892849291 100644 --- a/code/controllers/subsystems/documents.dm +++ b/code/controllers/subsystems/documents.dm @@ -2,7 +2,7 @@ SUBSYSTEM_DEF(docs) name = "Documents" wait = 30 SECONDS flags = SS_NO_FIRE - init_order = SS_INIT_MISC_FIRST + init_order = INIT_ORDER_MISC_FIRST var/total_docs = 0 var/list/docs = list() diff --git a/code/controllers/subsystems/economy.dm b/code/controllers/subsystems/economy.dm index 627af979c19..2b49f579e95 100644 --- a/code/controllers/subsystems/economy.dm +++ b/code/controllers/subsystems/economy.dm @@ -2,7 +2,7 @@ SUBSYSTEM_DEF(economy) name = "Economy" wait = 30 SECONDS flags = SS_NO_FIRE - init_order = SS_INIT_ECONOMY + init_order = INIT_ORDER_ECONOMY var/datum/money_account/station_account var/list/department_accounts = list() var/list/all_money_accounts = list() diff --git a/code/controllers/subsystems/fail2topic.dm b/code/controllers/subsystems/fail2topic.dm index 32d13282bde..e1e0f9769fb 100644 --- a/code/controllers/subsystems/fail2topic.dm +++ b/code/controllers/subsystems/fail2topic.dm @@ -1,6 +1,6 @@ SUBSYSTEM_DEF(fail2topic) name = "Fail2Topic" - init_order = SS_INIT_MISC_FIRST + init_order = INIT_ORDER_MISC_FIRST flags = SS_BACKGROUND runlevels = RUNLEVELS_DEFAULT | RUNLEVEL_LOBBY | RUNLEVEL_INIT diff --git a/code/controllers/subsystems/ghostroles.dm b/code/controllers/subsystems/ghostroles.dm index 793d6b7d2cf..25258cce46f 100644 --- a/code/controllers/subsystems/ghostroles.dm +++ b/code/controllers/subsystems/ghostroles.dm @@ -1,7 +1,7 @@ SUBSYSTEM_DEF(ghostroles) name = "Ghost Roles" flags = SS_NO_FIRE - init_order = SS_INIT_GHOSTROLES + init_order = INIT_ORDER_GHOSTROLES var/list/spawnpoints = list() //List of the available spawnpoints by spawnpoint type // -> type 1 -> spawnpoint 1 diff --git a/code/controllers/subsystems/icon_cache.dm b/code/controllers/subsystems/icon_cache.dm index 8fc73db376f..e2289dcb4e2 100644 --- a/code/controllers/subsystems/icon_cache.dm +++ b/code/controllers/subsystems/icon_cache.dm @@ -1,7 +1,7 @@ SUBSYSTEM_DEF(icon_cache) name = "Icon Cache" flags = SS_NO_FIRE - init_order = SS_INIT_MISC_FIRST + init_order = INIT_ORDER_MISC_FIRST // Cached bloody overlays, key is object type. var/list/bloody_cache = list() diff --git a/code/controllers/subsystems/icon_smooth.dm b/code/controllers/subsystems/icon_smooth.dm index 43e2e3fc689..e548dba08cc 100644 --- a/code/controllers/subsystems/icon_smooth.dm +++ b/code/controllers/subsystems/icon_smooth.dm @@ -17,7 +17,7 @@ SUBSYSTEM_DEF(icon_smooth) name = "Icon Smoothing" - init_order = SS_INIT_SMOOTHING + init_order = INIT_ORDER_ICON_SMOOTHING wait = 1 priority = SS_PRIORITY_SMOOTHING flags = SS_TICKER diff --git a/code/controllers/subsystems/icon_updates.dm b/code/controllers/subsystems/icon_updates.dm index 8af3dbced20..6bc56161f48 100644 --- a/code/controllers/subsystems/icon_updates.dm +++ b/code/controllers/subsystems/icon_updates.dm @@ -3,7 +3,7 @@ SUBSYSTEM_DEF(icon_update) wait = 1 // ticks flags = SS_TICKER priority = SS_PRIORITY_ICON_UPDATE - init_order = SS_INIT_ICON_UPDATE + init_order = INIT_ORDER_ICON_UPDATE /** * Associative list of atoms -> callback params diff --git a/code/controllers/subsystems/initialization/atlas.dm b/code/controllers/subsystems/initialization/atlas.dm index 2e29c597a83..c6168221d2e 100644 --- a/code/controllers/subsystems/initialization/atlas.dm +++ b/code/controllers/subsystems/initialization/atlas.dm @@ -3,7 +3,7 @@ SUBSYSTEM_DEF(atlas) name = "Atlas" flags = SS_NO_FIRE - init_order = SS_INIT_MAPLOAD + init_order = INIT_ORDER_MAPPING init_stage = INITSTAGE_EARLY // Whatever map is currently loaded. Null until SSatlas Initialize() starts. diff --git a/code/controllers/subsystems/initialization/atoms.dm b/code/controllers/subsystems/initialization/atoms.dm index 7ac876a252d..a3f8a0c2b45 100644 --- a/code/controllers/subsystems/initialization/atoms.dm +++ b/code/controllers/subsystems/initialization/atoms.dm @@ -1,7 +1,7 @@ #define SUBSYSTEM_INIT_SOURCE "subsystem init" SUBSYSTEM_DEF(atoms) name = "Atoms" - init_order = SS_INIT_ATOMS + init_order = INIT_ORDER_ATOMS flags = SS_NO_FIRE /// A stack of list(source, desired initialized state) diff --git a/code/controllers/subsystems/initialization/map_finalization.dm b/code/controllers/subsystems/initialization/map_finalization.dm index c5c854ac138..619921acabf 100644 --- a/code/controllers/subsystems/initialization/map_finalization.dm +++ b/code/controllers/subsystems/initialization/map_finalization.dm @@ -3,7 +3,7 @@ SUBSYSTEM_DEF(finalize) name = "Map Finalization" flags = SS_NO_FIRE | SS_NO_DISPLAY - init_order = SS_INIT_MAPFINALIZE + init_order = INIT_ORDER_MAPFINALIZE var/dmm_suite/maploader var/datum/away_mission/selected_mission diff --git a/code/controllers/subsystems/initialization/misc_early.dm b/code/controllers/subsystems/initialization/misc_early.dm index 37b524e67be..84af95b973a 100644 --- a/code/controllers/subsystems/initialization/misc_early.dm +++ b/code/controllers/subsystems/initialization/misc_early.dm @@ -3,7 +3,7 @@ SUBSYSTEM_DEF(misc_early) name = "Early Miscellaneous Init" - init_order = SS_INIT_MISC_FIRST + init_order = INIT_ORDER_MISC_FIRST flags = SS_NO_FIRE | SS_NO_DISPLAY /datum/controller/subsystem/misc_early/Initialize(timeofday) diff --git a/code/controllers/subsystems/initialization/misc_late.dm b/code/controllers/subsystems/initialization/misc_late.dm index 3c4f51ff763..12e1a4fc810 100644 --- a/code/controllers/subsystems/initialization/misc_late.dm +++ b/code/controllers/subsystems/initialization/misc_late.dm @@ -2,7 +2,7 @@ SUBSYSTEM_DEF(misc_late) name = "Late Miscellaneous Init" - init_order = SS_INIT_MISC + init_order = INIT_ORDER_MISC flags = SS_NO_FIRE | SS_NO_DISPLAY /// this is a list of things that fire when late misc init is called diff --git a/code/controllers/subsystems/initialization/persistent_configuration.dm b/code/controllers/subsystems/initialization/persistent_configuration.dm index b331bab012a..7a9068690ac 100644 --- a/code/controllers/subsystems/initialization/persistent_configuration.dm +++ b/code/controllers/subsystems/initialization/persistent_configuration.dm @@ -1,6 +1,7 @@ SUBSYSTEM_DEF(persistent_configuration) name = "Persistent Configuration" - init_order = SS_INIT_PERSISTENT_CONFIG + init_order = INIT_ORDER_PERSISTENT_CONFIGURATION + init_stage = INITSTAGE_EARLY flags = SS_NO_FIRE // Config options go here. Make sure to give them sane default values! diff --git a/code/controllers/subsystems/ipintel.dm b/code/controllers/subsystems/ipintel.dm index 480f9931370..47b88153f48 100644 --- a/code/controllers/subsystems/ipintel.dm +++ b/code/controllers/subsystems/ipintel.dm @@ -1,6 +1,6 @@ SUBSYSTEM_DEF(ipintel) name = "XKeyScore" - init_order = SS_INIT_MISC_FIRST + init_order = INIT_ORDER_MISC_FIRST flags = SS_NO_FIRE var/enabled = FALSE //disable at round start to avoid checking reconnects var/throttle = 0 diff --git a/code/controllers/subsystems/job.dm b/code/controllers/subsystems/job.dm index a746e1b7d94..0676e7a3438 100644 --- a/code/controllers/subsystems/job.dm +++ b/code/controllers/subsystems/job.dm @@ -4,7 +4,7 @@ SUBSYSTEM_DEF(jobs) // Subsystem stuff. name = "Jobs" flags = SS_NO_FIRE - init_order = SS_INIT_JOBS + init_order = INIT_ORDER_JOBS // Vars. var/list/datum/job/occupations = list() diff --git a/code/controllers/subsystems/lighting.dm b/code/controllers/subsystems/lighting.dm index 42b462d64a6..f8aa2f73890 100644 --- a/code/controllers/subsystems/lighting.dm +++ b/code/controllers/subsystems/lighting.dm @@ -7,7 +7,7 @@ SUBSYSTEM_DEF(lighting) runlevels = RUNLEVELS_DEFAULT | RUNLEVEL_LOBBY priority = SS_PRIORITY_LIGHTING - init_order = SS_INIT_LIGHTING + init_order = INIT_ORDER_LIGHTING var/total_lighting_overlays = 0 var/total_lighting_sources = 0 diff --git a/code/controllers/subsystems/machinery.dm b/code/controllers/subsystems/machinery.dm index 9342f1c53ed..9ec5eeb53f8 100644 --- a/code/controllers/subsystems/machinery.dm +++ b/code/controllers/subsystems/machinery.dm @@ -36,7 +36,7 @@ if(Datum.isprocessing) {\ SUBSYSTEM_DEF(machinery) name = "Machinery" priority = SS_PRIORITY_MACHINERY - init_order = SS_INIT_MACHINERY + init_order = INIT_ORDER_MACHINES flags = SS_POST_FIRE_TIMING wait = 2 SECONDS diff --git a/code/controllers/subsystems/mapping.dm b/code/controllers/subsystems/mapping.dm index 3caae18e45f..9a87b21fcf9 100644 --- a/code/controllers/subsystems/mapping.dm +++ b/code/controllers/subsystems/mapping.dm @@ -1,6 +1,6 @@ SUBSYSTEM_DEF(mapping) name = "Mapping" - init_order = SS_INIT_AWAY_MAPS + init_order = INIT_ORDER_AWAY_MAPS flags = SS_NO_FIRE var/list/map_templates = list() diff --git a/code/controllers/subsystems/materials.dm b/code/controllers/subsystems/materials.dm index b4dc080ec32..aa6aabd1271 100644 --- a/code/controllers/subsystems/materials.dm +++ b/code/controllers/subsystems/materials.dm @@ -1,6 +1,6 @@ SUBSYSTEM_DEF(materials) name = "Materials" - init_order = SS_INIT_MISC_FIRST + init_order = INIT_ORDER_MISC_FIRST flags = SS_NO_FIRE var/list/materials diff --git a/code/controllers/subsystems/mob.dm b/code/controllers/subsystems/mob.dm index 6a1e50e7a1e..8b016fcbb29 100644 --- a/code/controllers/subsystems/mob.dm +++ b/code/controllers/subsystems/mob.dm @@ -1,6 +1,6 @@ SUBSYSTEM_DEF(mobs) name = "Mobs - Life" - init_order = SS_INIT_MISC // doesn't really matter when we init + init_order = INIT_ORDER_MISC // doesn't really matter when we init priority = SS_PRIORITY_MOB runlevels = RUNLEVELS_PLAYING diff --git a/code/controllers/subsystems/overlays.dm b/code/controllers/subsystems/overlays.dm index e7f605e0832..760861a1860 100644 --- a/code/controllers/subsystems/overlays.dm +++ b/code/controllers/subsystems/overlays.dm @@ -4,7 +4,7 @@ SUBSYSTEM_DEF(overlays) runlevels = RUNLEVELS_DEFAULT | RUNLEVEL_LOBBY wait = 1 priority = SS_PRIORITY_OVERLAY - init_order = SS_INIT_OVERLAY + init_order = INIT_ORDER_OVERLAY var/list/processing = list() diff --git a/code/controllers/subsystems/pai.dm b/code/controllers/subsystems/pai.dm index add006fd254..db7bf4f11bf 100644 --- a/code/controllers/subsystems/pai.dm +++ b/code/controllers/subsystems/pai.dm @@ -1,6 +1,6 @@ SUBSYSTEM_DEF(pai) name = "pAI" - init_order = SS_INIT_MISC_FIRST + init_order = INIT_ORDER_MISC_FIRST flags = SS_NO_FIRE | SS_NO_INIT var/list/pai_software_by_key diff --git a/code/controllers/subsystems/ping.dm b/code/controllers/subsystems/ping.dm index c4c3b56fd55..73db9940f2d 100644 --- a/code/controllers/subsystems/ping.dm +++ b/code/controllers/subsystems/ping.dm @@ -1,12 +1,10 @@ SUBSYSTEM_DEF(ping) name = "Ping" - priority = SS_PRIORITY_PING - init_order = SS_INIT_PING + priority = FIRE_PRIORITY_PING + init_stage = INITSTAGE_EARLY wait = 4 SECONDS flags = SS_NO_INIT - runlevels = RUNLEVEL_INIT | RUNLEVEL_LOBBY | RUNLEVEL_SETUP | RUNLEVEL_GAME | RUNLEVEL_POSTGAME - init_stage = INITSTAGE_EARLY - + runlevels = RUNLEVEL_LOBBY | RUNLEVELS_DEFAULT var/list/currentrun = list() /datum/controller/subsystem/ping/stat_entry(msg) diff --git a/code/controllers/subsystems/plants.dm b/code/controllers/subsystems/plants.dm index 286fdb2e7ab..5642d2b221a 100644 --- a/code/controllers/subsystems/plants.dm +++ b/code/controllers/subsystems/plants.dm @@ -2,7 +2,7 @@ SUBSYSTEM_DEF(plants) name = "Seeds & Plants" flags = 0 // Override parent's flags. wait = 75 - init_order = SS_INIT_SEEDS + init_order = INIT_ORDER_SEEDS priority = SS_PRIORITY_PLANTS runlevels = RUNLEVELS_PLAYING diff --git a/code/controllers/subsystems/processing/electronics.dm b/code/controllers/subsystems/processing/electronics.dm index 629d1f7394d..c09b0704d05 100644 --- a/code/controllers/subsystems/processing/electronics.dm +++ b/code/controllers/subsystems/processing/electronics.dm @@ -6,7 +6,7 @@ PROCESSING_SUBSYSTEM_DEF(electronics) wait = 2 SECONDS priority = SS_PRIORITY_ELECTRONICS flags = SS_KEEP_TIMING - init_order = SS_INIT_MISC_FIRST + init_order = INIT_ORDER_MISC_FIRST var/list/all_integrated_circuits = list() var/list/printer_recipe_list = list() diff --git a/code/controllers/subsystems/processing/ntsl2.dm b/code/controllers/subsystems/processing/ntsl2.dm index a9f17ae11d5..7516c1d5e52 100644 --- a/code/controllers/subsystems/processing/ntsl2.dm +++ b/code/controllers/subsystems/processing/ntsl2.dm @@ -4,7 +4,7 @@ NTSL2 deamon management subsystem, responsible for handling events from deamon a PROCESSING_SUBSYSTEM_DEF(ntsl2) name = "NTSL2" flags = 0 - init_order = SS_INIT_MISC + init_order = INIT_ORDER_MISC // priority = SS_PRIORITY_PROCESSING var/connected = FALSE var/list/programs = list() diff --git a/code/controllers/subsystems/processing/shuttle.dm b/code/controllers/subsystems/processing/shuttle.dm index 65c879ed724..52f2d16ba84 100644 --- a/code/controllers/subsystems/processing/shuttle.dm +++ b/code/controllers/subsystems/processing/shuttle.dm @@ -2,7 +2,7 @@ SUBSYSTEM_DEF(shuttle) name = "Shuttle" wait = 2 SECONDS priority = SS_PRIORITY_SHUTTLE - init_order = SS_INIT_MISC //Should be initialized after all maploading is over and atoms are initialized, to ensure that landmarks have been initialized. + init_order = INIT_ORDER_MISC //Should be initialized after all maploading is over and atoms are initialized, to ensure that landmarks have been initialized. var/overmap_halted = FALSE //Whether ships can move on the overmap; used for adminbus. var/list/ships = list() //List of all ships. diff --git a/code/controllers/subsystems/skybox.dm b/code/controllers/subsystems/skybox.dm index 53380d2f025..16c5c7e6e1e 100644 --- a/code/controllers/subsystems/skybox.dm +++ b/code/controllers/subsystems/skybox.dm @@ -1,6 +1,6 @@ SUBSYSTEM_DEF(skybox) name = "Space skybox" - init_order = SS_INIT_PARALLAX + init_order = INIT_ORDER_PARALLAX flags = SS_NO_FIRE var/background_color var/skybox_icon = 'icons/skybox/skybox.dmi' //Path to our background. Lets us use anything we damn well please. Skyboxes need to be 736x736 diff --git a/code/controllers/subsystems/stickyban.dm b/code/controllers/subsystems/stickyban.dm index 71ded5ce28e..82388bc0291 100644 --- a/code/controllers/subsystems/stickyban.dm +++ b/code/controllers/subsystems/stickyban.dm @@ -1,6 +1,6 @@ SUBSYSTEM_DEF(stickyban) name = "PRISM" - init_order = SS_INIT_MISC_FIRST + init_order = INIT_ORDER_MISC_FIRST flags = SS_NO_FIRE var/list/cache = list() diff --git a/code/controllers/subsystems/ticker.dm b/code/controllers/subsystems/ticker.dm index 170b868d1be..19952954b55 100644 --- a/code/controllers/subsystems/ticker.dm +++ b/code/controllers/subsystems/ticker.dm @@ -12,7 +12,7 @@ var/datum/controller/subsystem/ticker/SSticker priority = SS_PRIORITY_TICKER runlevels = RUNLEVELS_DEFAULT | RUNLEVEL_LOBBY - init_order = SS_INIT_LOBBY + init_order = INIT_ORDER_TICKER wait = 1 SECOND diff --git a/code/controllers/subsystems/virtual_reality.dm b/code/controllers/subsystems/virtual_reality.dm index 3d67be494d9..33dd447bbba 100644 --- a/code/controllers/subsystems/virtual_reality.dm +++ b/code/controllers/subsystems/virtual_reality.dm @@ -1,6 +1,6 @@ SUBSYSTEM_DEF(virtualreality) name = "Virtual Reality" - init_order = SS_INIT_MISC_FIRST + init_order = INIT_ORDER_MISC_FIRST flags = SS_NO_FIRE // MECHA diff --git a/code/controllers/subsystems/vote.dm b/code/controllers/subsystems/vote.dm index 2aeab72dde9..7e460fb600b 100644 --- a/code/controllers/subsystems/vote.dm +++ b/code/controllers/subsystems/vote.dm @@ -1,9 +1,9 @@ SUBSYSTEM_DEF(vote) name = "Voting" wait = 1 SECOND - flags = SS_KEEP_TIMING | SS_KEEP_TIMING - runlevels = RUNLEVELS_DEFAULT | RUNLEVEL_LOBBY - priority = SS_PRIORITY_VOTE + flags = SS_KEEP_TIMING + init_order = INIT_ORDER_VOTE + runlevels = RUNLEVEL_LOBBY | RUNLEVELS_DEFAULT var/next_transfer_time diff --git a/code/controllers/subsystems/zcopy.dm b/code/controllers/subsystems/zcopy.dm index b2e242fceb4..3670eea3209 100644 --- a/code/controllers/subsystems/zcopy.dm +++ b/code/controllers/subsystems/zcopy.dm @@ -1,7 +1,7 @@ SUBSYSTEM_DEF(zcopy) name = "Z-Copy" wait = 1 - init_order = SS_INIT_ZCOPY + init_order = INIT_ORDER_ZCOPY priority = SS_PRIORITY_ZCOPY runlevels = RUNLEVELS_DEFAULT | RUNLEVEL_LOBBY diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm index fe94701c8e9..92663795bee 100644 --- a/code/game/objects/effects/landmarks.dm +++ b/code/game/objects/effects/landmarks.dm @@ -108,6 +108,26 @@ return 1 +/obj/effect/landmark/lobby_mobs_location + name = "lobby_mobs_location" + anchored = TRUE + invisibility = 101 + +INITIALIZE_IMMEDIATE(/obj/effect/landmark/lobby_mobs_location) + +/obj/effect/landmark/lobby_mobs_location/Initialize() + ..() + + if(GLOB.lobby_mobs_location) + crash_with("There must be one, and only one, /obj/effect/landmark/lobby_mobs_location effect in any single server session!") + + else + GLOB.lobby_mobs_location = get_turf(src) + ASSERT(istype(GLOB.lobby_mobs_location, /turf)) + + return INITIALIZE_HINT_QDEL + + //Costume spawner landmarks /obj/effect/landmark/costume/New() //costume spawner, selects a random subclass and disappears diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 7c8c0c554a3..c7b34dd7754 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -493,6 +493,8 @@ var/list/admin_verbs_cciaa = list( ) /client/proc/add_admin_verbs() + SHOULD_NOT_SLEEP(TRUE) + if(holder) add_verb(src, admin_verbs_default) if(holder.rights & R_BUILDMODE) add_verb(src, /client/proc/togglebuildmodeself) diff --git a/code/modules/admin/verbs/warning.dm b/code/modules/admin/verbs/warning.dm index 498cc1316b1..64b8023ccb5 100644 --- a/code/modules/admin/verbs/warning.dm +++ b/code/modules/admin/verbs/warning.dm @@ -272,10 +272,12 @@ return data -/* +/** * A proc used to gather if someone has Unacknowledged Warnings */ /client/proc/fetch_unacked_warning_count() + SHOULD_NOT_SLEEP(TRUE) + if (!GLOB.dbcon) return if (!establish_db_connection(GLOB.dbcon)) diff --git a/code/modules/client/client_procs.dm b/code/modules/client/client_procs.dm index 86bdd3ebd68..68dabd008b4 100644 --- a/code/modules/client/client_procs.dm +++ b/code/modules/client/client_procs.dm @@ -398,23 +398,32 @@ var/list/localhost_addresses = list( src.InitPrefs() mob.LateLogin() - /// This spawn is the only thing keeping the stat panels and chat working. By removing this spawn, there will be black screens when loading the game. - /// It seems to be affected by the order of statpanel init: if it happens before send_resources(), then the statpanels won't load, but the game won't - /// blackscreen. - spawn(0) - // Initialize stat panel - stat_panel.initialize( - inline_html = file("html/statbrowser.html"), - inline_js = file("html/statbrowser.js"), - inline_css = file("html/statbrowser.css"), - ) - addtimer(CALLBACK(src, PROC_REF(check_panel_loaded)), 30 SECONDS) + // Initialize stat panel + stat_panel.initialize( + inline_html = file("html/statbrowser.html"), + inline_js = file("html/statbrowser.js"), + inline_css = file("html/statbrowser.css"), + ) + addtimer(CALLBACK(src, PROC_REF(check_panel_loaded)), 30 SECONDS) // Initialize tgui panel tgui_panel.initialize() + tgui_say.initialize() + // Forcibly enable hardware-accelerated graphics, as we need them for the lighting overlays. + winset(src, null, "command=\".configure graphics-hwmode on\"") + + send_resources() + + if(!winexists(src, "asset_cache_browser")) // The client is using a custom skin, tell them. + to_chat(src, SPAN_WARNING("Unable to access asset cache browser, if you are using a custom skin file, please allow DS to download the updated version, if you are not, then make a bug report. This is not a critical issue but can cause issues with resource downloading, as it is impossible to know when extra resources arrived to you.")) + + Master.UpdateTickRate() + /client/proc/InitPrefs() + SHOULD_NOT_SLEEP(TRUE) + //preferences datum - also holds some persistant data for the client (because we may as well keep these datums to a minimum) prefs = preferences_datums[ckey] if(!prefs) @@ -432,7 +441,9 @@ var/list/localhost_addresses = list( toggle_fullscreen(TRUE) /client/proc/InitClient() - to_chat(src, "If the title screen is black, resources are still downloading. Please be patient until the title screen appears.") + SHOULD_NOT_SLEEP(TRUE) + + to_chat_immediate(src, SPAN_ALERT("If the title screen is black, resources are still downloading. Please be patient until the title screen appears.")) var/local_connection = (GLOB.config.auto_local_admin && !GLOB.config.use_forumuser_api && (isnull(address) || localhost_addresses[address])) // Automatic admin rights for people connecting locally. @@ -450,13 +461,13 @@ var/list/localhost_addresses = list( log_client_to_db() if (byond_version < GLOB.config.client_error_version) - to_chat(src, "Your version of BYOND is too old!") - to_chat(src, GLOB.config.client_error_message) - to_chat(src, "Your version: [byond_version].") - to_chat(src, "Required version: [GLOB.config.client_error_version] or later.") - to_chat(src, "Visit http://www.byond.com/download/ to get the latest version of BYOND.") + to_chat_immediate(src, "Your version of BYOND is too old!") + to_chat_immediate(src, GLOB.config.client_error_message) + to_chat_immediate(src, "Your version: [byond_version].") + to_chat_immediate(src, "Required version: [GLOB.config.client_error_version] or later.") + to_chat_immediate(src, "Visit http://www.byond.com/download/ to get the latest version of BYOND.") if (holder) - to_chat(src, "Admins get a free pass. However, please update your BYOND as soon as possible. Certain things may cause crashes if you play with your present version.") + to_chat_immediate(src, "Admins get a free pass. However, please update your BYOND as soon as possible. Certain things may cause crashes if you play with your present version.") else log_access("Failed Login: [key] [computer_id] [address] - Outdated BYOND major version: [byond_version].") del(src) @@ -467,7 +478,7 @@ var/list/localhost_addresses = list( if (GLOB.config.access_deny_new_players && player_age == -1) log_access("Failed Login: [key] [computer_id] [address] - New player attempting connection during panic bunker.", ckey = ckey) message_admins("Failed Login: [key] [computer_id] [address] - New player attempting connection during panic bunker.") - to_chat(src, "Apologies, but the server is currently not accepting connections from never before seen players.") + to_chat_immediate(src, "Apologies, but the server is currently not accepting connections from never before seen players.") del(src) return 0 @@ -475,7 +486,7 @@ var/list/localhost_addresses = list( if (GLOB.config.access_deny_new_accounts != -1 && account_age != -1 && account_age <= GLOB.config.access_deny_new_accounts) log_access("Failed Login: [key] [computer_id] [address] - Account too young to play. [account_age] days.", ckey = ckey) message_admins("Failed Login: [key] [computer_id] [address] - Account too young to play. [account_age] days.") - to_chat(src, "Apologies, but the server is currently not accepting connections from BYOND accounts this young.") + to_chat_immediate(src, "Apologies, but the server is currently not accepting connections from BYOND accounts this young.") del(src) return 0 @@ -485,11 +496,6 @@ var/list/localhost_addresses = list( if(holder) add_admin_verbs() - // Forcibly enable hardware-accelerated graphics, as we need them for the lighting overlays. - winset(src, null, "command=\".configure graphics-hwmode on\"") - - send_resources() - check_ip_intel() fetch_unacked_warning_count() @@ -500,14 +506,30 @@ var/list/localhost_addresses = list( //DISCONNECT// ////////////// /client/Del() + if(!gc_destroyed) + gc_destroyed = world.time + if (!QDELING(src)) + stack_trace("Client does not purport to be QDELING, this is going to cause bugs in other places!") + + Destroy() + return ..() + +/client/Destroy(force) GLOB.ticket_panels -= src - if(holder) - holder.owner = null GLOB.staff -= src GLOB.directory -= ckey GLOB.clients -= src - return ..() + if(holder) + holder.owner = null + GLOB.staff -= src + SSping.currentrun -= src + + QDEL_NULL(tooltips) + + Master.UpdateTickRate() + ..() //Even though we're going to be hard deleted there are still some things that want to know the destroy is happening + return QDEL_HINT_HARDDEL_NOW // here because it's similar to below @@ -526,6 +548,8 @@ var/list/localhost_addresses = list( return -1 /client/proc/log_client_to_db() + set waitfor = FALSE + if (IsGuestKey(src.key)) return diff --git a/code/modules/effects/map_effects/window_spawner.dm b/code/modules/effects/map_effects/window_spawner.dm index f303a818ee5..049bf4a1345 100644 --- a/code/modules/effects/map_effects/window_spawner.dm +++ b/code/modules/effects/map_effects/window_spawner.dm @@ -13,6 +13,7 @@ var/spawn_grille = FALSE // For electrified windows. var/spawn_firedoor = FALSE var/activated + atmos_canpass = CANPASS_NEVER /obj/effect/map_effect/window_spawner/CanPass() // Stops ZAS expanding zones past us, the windows will block the zone anyway. return FALSE diff --git a/code/modules/mob/abstract/new_player/login.dm b/code/modules/mob/abstract/new_player/login.dm index 81727ed2686..e357ce8d237 100644 --- a/code/modules/mob/abstract/new_player/login.dm +++ b/code/modules/mob/abstract/new_player/login.dm @@ -13,10 +13,8 @@ mind.active = 1 mind.current = src - loc = null - my_client = client - set_sight(sight|SEE_TURFS) + set_sight(BLIND) GLOB.player_list |= src client.playtitlemusic() diff --git a/code/modules/mob/abstract/new_player/menu.dm b/code/modules/mob/abstract/new_player/menu.dm index d26c90929e3..5eba562c651 100644 --- a/code/modules/mob/abstract/new_player/menu.dm +++ b/code/modules/mob/abstract/new_player/menu.dm @@ -1,7 +1,7 @@ //MENU SYSTEM BY BIGRAGE, some awful code, some awful design, all as you love //Code edits/additions by AshtonFox /mob/abstract/new_player/instantiate_hud(datum/hud/HUD, ui_style, ui_color, ui_alpha) - HUD.new_player_hud(ui_style, ui_color, ui_alpha) HUD.mymob = src + HUD.new_player_hud(ui_style, ui_color, ui_alpha) /datum/hud/new_player hud_shown = TRUE @@ -9,6 +9,8 @@ hotkey_ui_hidden = FALSE /datum/hud/proc/new_player_hud(var/ui_style='icons/mob/screen/white.dmi', var/ui_color = "#fffffe", var/ui_alpha = 255) + SHOULD_NOT_SLEEP(TRUE) + adding = list() var/obj/screen/using @@ -107,7 +109,9 @@ return /obj/screen/new_player/title/proc/Update() - if(QDELING(src)) + SHOULD_NOT_SLEEP(TRUE) + + if(QDELETED(src)) return if(!SSatlas.current_map.lobby_transitions && SSatlas.current_sector.sector_lobby_transitions) @@ -119,17 +123,13 @@ lobby_index = 1 animate(src, alpha = 0, time = 1 SECOND) animate(alpha = 255, icon_state = SSatlas.current_map.lobby_screens[lobby_index], time = 1 SECOND) - if(!MC_RUNNING()) - spawn(SSatlas.current_map.lobby_transitions) - Update() - else - refresh_timer_id = addtimer(CALLBACK(src, PROC_REF(Update)), SSatlas.current_map.lobby_transitions, TIMER_UNIQUE | TIMER_CLIENT_TIME | TIMER_OVERRIDE | TIMER_STOPPABLE) + refresh_timer_id = addtimer(CALLBACK(src, PROC_REF(Update)), SSatlas.current_map.lobby_transitions, TIMER_UNIQUE | TIMER_CLIENT_TIME | TIMER_OVERRIDE | TIMER_STOPPABLE) /obj/screen/new_player/selection var/click_sound = 'sound/effects/menu_click.ogg' var/hud_arrow -/obj/screen/new_player/selection/New(var/datum/hud/H) +/obj/screen/new_player/selection/New(datum/hud/H) color = null hud = H ..() @@ -138,6 +138,10 @@ . = ..() set_sector_things() +/obj/screen/new_player/selection/Destroy(force) + hud = null + . = ..() + /obj/screen/new_player/selection/set_sector_things() . = ..() if(SSatlas.current_sector.sector_hud_menu_sound) diff --git a/code/modules/mob/abstract/new_player/new_player.dm b/code/modules/mob/abstract/new_player/new_player.dm index 134502266d8..3aec41f6baf 100644 --- a/code/modules/mob/abstract/new_player/new_player.dm +++ b/code/modules/mob/abstract/new_player/new_player.dm @@ -19,9 +19,23 @@ INITIALIZE_IMMEDIATE(/mob/abstract/new_player) -/mob/abstract/new_player/Initialize() +/mob/abstract/new_player/Initialize(mapload) . = ..() GLOB.dead_mob_list -= src + attempt_moving_new_player_on_marker_turf() + +/mob/abstract/new_player/proc/attempt_moving_new_player_on_marker_turf() + //If it's set, move the new_player mob to it, otherwise reschedule to check in a bit + if(istype(GLOB.lobby_mobs_location)) + src.forceMove(GLOB.lobby_mobs_location) + + else + //Atoms loading have finished supposedly, there should be a marker down for this, if not found throw a stack trace + if(SSATOMS_IS_PROBABLY_DONE) + stack_trace("The map is supposedly loaded, but GLOB.lobby_mobs_location is not set, unable to move the lobby mob!") + return + + addtimer(CALLBACK(src, PROC_REF(attempt_moving_new_player_on_marker_turf)), 5 SECONDS) /mob/abstract/new_player/Destroy() QDEL_NULL(late_choices_ui) diff --git a/code/modules/mob/login.dm b/code/modules/mob/login.dm index f78a2967969..1a9f6f3475f 100644 --- a/code/modules/mob/login.dm +++ b/code/modules/mob/login.dm @@ -54,6 +54,7 @@ * ckey. */ /mob/proc/LateLogin() + SHOULD_NOT_SLEEP(TRUE) SHOULD_CALL_PARENT(TRUE) SEND_SIGNAL(src, COMSIG_MOB_LOGIN) @@ -103,7 +104,5 @@ // Check code/modules/admin/verbs/antag-ooc.dm for definition client.add_aooc_if_necessary() - if(client) + if(client && !istype(src, /mob/abstract/new_player)) //Do not update the skybox if it's a new player mob, they don't see it anyways and it can runtime client.update_skybox(TRUE) - - addtimer(CALLBACK(client, TYPE_PROC_REF(/client, check_panel_loaded)), 30 SECONDS) diff --git a/code/unit_tests/ss_test.dm b/code/unit_tests/ss_test.dm index 0bfb3da93a9..2f7412b417b 100644 --- a/code/unit_tests/ss_test.dm +++ b/code/unit_tests/ss_test.dm @@ -14,7 +14,7 @@ SUBSYSTEM_DEF(unit_tests_config) name = "Unit Test Config" - init_order = SS_INIT_PERSISTENT_CONFIG + init_order = INIT_ORDER_PERSISTENT_CONFIGURATION flags = SS_NO_FIRE var/datum/unit_test/UT // Logging/output, use this to log things from outside where a specific unit_test is defined diff --git a/html/changelogs/fluffyghost-attemptedblackscreenfix.yml b/html/changelogs/fluffyghost-attemptedblackscreenfix.yml new file mode 100644 index 00000000000..6b2e116f411 --- /dev/null +++ b/html/changelogs/fluffyghost-attemptedblackscreenfix.yml @@ -0,0 +1,41 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +# balance +# admin +# backend +# security +# refactor +################################# + +# Your name. +author: FluffyGhost + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - experiment: "Attempted fix for the blackscreen issues, to be TM'd." diff --git a/maps/aurora/aurora-4_mainlevel.dmm b/maps/aurora/aurora-4_mainlevel.dmm index 96c227b8c8e..45556da560c 100644 --- a/maps/aurora/aurora-4_mainlevel.dmm +++ b/maps/aurora/aurora-4_mainlevel.dmm @@ -84,7 +84,6 @@ /obj/machinery/door/firedoor, /obj/machinery/door/airlock/maintenance{ name = "Medbay Maintance"; - req_access = null; req_one_access = list(12,66); dir = 4 }, @@ -150,11 +149,6 @@ /obj/structure/lattice/catwalk/indoor/grate, /turf/simulated/floor/plating, /area/maintenance/security_starboard) -"aas" = ( -/obj/effect/map_effect/airlock/s_to_n, -/obj/effect/map_effect/window_spawner/reinforced/firedoor, -/turf/simulated/floor/plating, -/area/maintenance/security_starboard) "aau" = ( /obj/effect/map_effect/window_spawner/reinforced/firedoor, /turf/simulated/floor/plating, @@ -206,7 +200,6 @@ "aay" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/visible, /turf/simulated/floor/plating, /area/maintenance/security_starboard) "aaz" = ( @@ -265,8 +258,8 @@ /turf/simulated/floor/plating, /area/maintenance/security_starboard) "aaG" = ( -/obj/machinery/atmospherics/pipe/manifold/visible{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 10 }, /turf/simulated/floor/plating, /area/maintenance/security_starboard) @@ -2843,7 +2836,6 @@ name = "Door Bolt Control"; pixel_x = 5; pixel_y = 25; - req_access = null; specialfunctions = 4 }, /turf/simulated/floor/tiled/freezer, @@ -4437,7 +4429,6 @@ "ajb" = ( /obj/machinery/door/airlock/maintenance{ name = "Atmospherics Maintenance Access"; - req_access = null; req_one_access = list(11,24); dir = 4 }, @@ -5642,7 +5633,6 @@ "alq" = ( /obj/machinery/door/airlock/maintenance{ req_access = list(11); - req_one_access = null; dir = 1 }, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -11120,7 +11110,6 @@ /obj/machinery/door/airlock/maintenance{ name = "Research Division Maintenance"; req_access = list(47); - req_one_access = null; dir = 1 }, /turf/simulated/floor/plating, @@ -18335,7 +18324,6 @@ /obj/machinery/atmospherics/unary/outlet_injector{ dir = 8; frequency = 1441; - id = null; pixel_y = 1; use_power = 1 }, @@ -18662,7 +18650,6 @@ name = "Door Bolt Control"; pixel_x = 22; pixel_y = 8; - req_access = null; specialfunctions = 4 }, /turf/simulated/floor/tiled/freezer, @@ -20349,8 +20336,7 @@ /obj/machinery/disposal, /obj/machinery/door/window/brigdoor/westleft{ dir = 1; - name = "Brig Delivery Chute"; - req_one_access = null + name = "Brig Delivery Chute" }, /obj/structure/window/reinforced{ dir = 8 @@ -22090,16 +22076,13 @@ /obj/machinery/door/firedoor, /obj/structure/grille, /obj/structure/window/reinforced/polarized{ - dir = 4; - id = null + dir = 4 }, /obj/structure/window/reinforced/polarized{ - dir = 1; - id = null + dir = 1 }, /obj/structure/window/reinforced/polarized{ - dir = 8; - id = null + dir = 8 }, /turf/simulated/floor/plating, /area/crew_quarters/heads/chief) @@ -22595,8 +22578,7 @@ "aNM" = ( /obj/machinery/door/firedoor, /obj/machinery/door/window/westleft{ - name = "Server Room"; - req_access = null + name = "Server Room" }, /obj/machinery/door/window/eastleft{ name = "Server Room" @@ -23055,12 +23037,10 @@ /obj/machinery/door/firedoor, /obj/structure/grille, /obj/structure/window/reinforced/polarized{ - dir = 4; - id = null + dir = 4 }, /obj/structure/window/reinforced/polarized{ - dir = 8; - id = null + dir = 8 }, /turf/simulated/floor/plating, /area/crew_quarters/heads/chief) @@ -24032,12 +24012,10 @@ /obj/machinery/door/firedoor, /obj/structure/grille, /obj/structure/window/reinforced/polarized{ - dir = 4; - id = null + dir = 4 }, /obj/structure/window/reinforced/polarized{ - dir = 8; - id = null + dir = 8 }, /obj/structure/window/reinforced/polarized, /turf/simulated/floor/plating, @@ -24358,7 +24336,6 @@ "aQS" = ( /obj/machinery/atmospherics/unary/outlet_injector{ dir = 1; - id = null; use_power = 1 }, /obj/structure/window/reinforced{ @@ -25816,16 +25793,13 @@ /obj/structure/grille, /obj/structure/window/reinforced/polarized, /obj/structure/window/reinforced/polarized{ - dir = 8; - id = null + dir = 8 }, /obj/structure/window/reinforced/polarized{ - dir = 4; - id = null + dir = 4 }, /obj/structure/window/reinforced/polarized{ - dir = 1; - id = null + dir = 1 }, /turf/simulated/floor/plating, /area/crew_quarters/heads/chief) @@ -26869,12 +26843,10 @@ /obj/structure/grille, /obj/structure/window/reinforced/polarized, /obj/structure/window/reinforced/polarized{ - dir = 8; - id = null + dir = 8 }, /obj/structure/window/reinforced/polarized{ - dir = 1; - id = null + dir = 1 }, /turf/simulated/floor/plating, /area/crew_quarters/heads/chief) @@ -26894,8 +26866,7 @@ /obj/structure/grille, /obj/structure/window/reinforced/polarized, /obj/structure/window/reinforced/polarized{ - dir = 1; - id = null + dir = 1 }, /turf/simulated/floor/plating, /area/crew_quarters/heads/chief) @@ -26913,8 +26884,7 @@ /obj/structure/grille, /obj/structure/window/reinforced/polarized, /obj/structure/window/reinforced/polarized{ - dir = 1; - id = null + dir = 1 }, /turf/simulated/floor/plating, /area/crew_quarters/heads/chief) @@ -26927,12 +26897,10 @@ /obj/structure/grille, /obj/structure/window/reinforced/polarized, /obj/structure/window/reinforced/polarized{ - dir = 4; - id = null + dir = 4 }, /obj/structure/window/reinforced/polarized{ - dir = 1; - id = null + dir = 1 }, /turf/simulated/floor/plating, /area/crew_quarters/heads/chief) @@ -27565,7 +27533,6 @@ /obj/machinery/door/firedoor, /obj/machinery/door/airlock/glass_engineering{ name = "Engineering Hallway"; - req_one_access = null; dir = 4 }, /turf/simulated/floor/tiled, @@ -28989,7 +28956,6 @@ "aYK" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/command{ - id_tag = null; name = "Conference Room"; req_access = list(19); dir = 4 @@ -29589,7 +29555,6 @@ /area/hallway/primary/starboard) "aZO" = ( /obj/machinery/door/airlock/maintenance{ - req_access = null; req_one_access = list(12,66); dir = 4 }, @@ -33969,7 +33934,6 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/door/firedoor, /obj/machinery/door/airlock/maintenance{ - req_access = null; req_one_access = list(12,66); dir = 1 }, @@ -35208,7 +35172,6 @@ /obj/machinery/door/airlock/medical{ autoclose = 0; icon_state = "door_open"; - id_tag = null; name = "Intensive Care Unit"; req_access = list(66); dir = 1 @@ -35740,8 +35703,7 @@ /obj/structure/disposalpipe/segment, /obj/machinery/door/airlock/multi_tile/glass{ name = "Kitchen"; - req_access = list(28); - req_one_access = null + req_access = list(28) }, /obj/effect/floor_decal/corner/grey/diagonal, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -37183,7 +37145,6 @@ "bod" = ( /obj/machinery/door/airlock/multi_tile/glass{ dir = 2; - id_tag = null; name = "Medical Reception"; req_access = list(5) }, @@ -37980,7 +37941,6 @@ /obj/machinery/door/airlock/medical{ autoclose = 0; icon_state = "door_open"; - id_tag = null; name = "General Treatment Room"; req_access = list(66); dir = 1 @@ -38939,8 +38899,7 @@ /obj/machinery/button/remote/airlock{ id = "main_door"; name = "Main Exit Door Control"; - pixel_x = -26; - req_access = null + pixel_x = -26 }, /obj/effect/floor_decal/corner_wide/lime{ dir = 8 @@ -38959,7 +38918,6 @@ /obj/machinery/door/airlock/medical{ autoclose = 0; icon_state = "door_open"; - id_tag = null; name = "General Treatment Room"; req_access = list(66); dir = 4 @@ -40145,8 +40103,7 @@ /obj/machinery/door/airlock/multi_tile/glass{ dir = 2; id_tag = "CONS2door"; - name = "Medical Bay"; - req_access = null + name = "Medical Bay" }, /obj/machinery/door/firedoor/multi_tile{ dir = 1 @@ -40428,7 +40385,6 @@ /obj/machinery/door/firedoor, /obj/machinery/door/airlock/glass_medical{ name = "Custodial Closet"; - req_access = null; req_one_access = list(26,66); dir = 1 }, @@ -44658,7 +44614,6 @@ /obj/machinery/door/firedoor, /obj/machinery/door/airlock/maintenance_hatch{ name = "Transfusion Supplies"; - req_access = null; req_one_access = list(12,66); dir = 4 }, @@ -44670,7 +44625,6 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/door/airlock/maintenance{ - req_access = null; req_one_access = list(12,66); dir = 1 }, @@ -45328,7 +45282,6 @@ dir = 4 }, /obj/machinery/door/airlock/maintenance{ - req_access = null; req_one_access = list(12,66); dir = 4 }, @@ -46201,7 +46154,6 @@ "bHA" = ( /obj/machinery/door/airlock/glass_medical{ name = "Pre/Post-OP"; - req_access = null; dir = 1 }, /obj/structure/cable/green{ @@ -46247,7 +46199,6 @@ dir = 4 }, /obj/machinery/door/airlock/maintenance{ - req_access = null; req_one_access = list(12,66); dir = 4 }, @@ -46352,7 +46303,6 @@ dir = 4 }, /obj/machinery/door/airlock/maintenance{ - req_access = null; req_one_access = list(12,66); dir = 4 }, @@ -46627,7 +46577,6 @@ /obj/structure/disposalpipe/segment, /obj/machinery/door/airlock/glass_research{ name = "Telescience"; - req_access = null; req_one_access = list(7,29); dir = 1 }, @@ -47179,7 +47128,6 @@ /obj/effect/decal/cleanable/dirt, /obj/machinery/door/airlock/medical{ name = "Room 3"; - req_access = null; req_one_access = list(12,66); dir = 1 }, @@ -47670,7 +47618,6 @@ }, /obj/machinery/door/airlock/maintenance{ name = "Medbay Maintance"; - req_access = null; req_one_access = list(12,66); dir = 4 }, @@ -47744,7 +47691,6 @@ "bLQ" = ( /obj/machinery/door/airlock/maintenance{ name = "Starboard Ward"; - req_access = null; req_one_access = list(12,66); dir = 4 }, @@ -47815,7 +47761,6 @@ /obj/machinery/door/firedoor, /obj/machinery/door/airlock/maintenance{ req_access = list(12); - req_one_access = null; dir = 1 }, /turf/simulated/floor/plating, @@ -47973,7 +47918,6 @@ /obj/machinery/door/firedoor, /obj/machinery/door/airlock/maintenance{ name = "Medbay Maintance"; - req_access = null; req_one_access = list(12,66); dir = 1 }, @@ -48020,7 +47964,6 @@ /obj/machinery/door/airlock/maintenance{ name = "Research Division Maintenance"; req_access = list(47); - req_one_access = null; dir = 1 }, /obj/machinery/door/blast/regular{ @@ -49979,7 +49922,6 @@ "bRM" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/maintenance{ - req_access = null; req_one_access = list(12,66); dir = 4 }, @@ -50271,7 +50213,6 @@ "bSD" = ( /obj/machinery/button/switch/crematorium{ _wifi_id = "chapel_crema"; - cremate_dir = null; pixel_x = -32; pixel_y = 25 }, @@ -50690,7 +50631,6 @@ name = "Door Bolt Control"; pixel_x = 5; pixel_y = 25; - req_access = null; specialfunctions = 4 }, /obj/machinery/light/small{ @@ -51223,7 +51163,6 @@ name = "Door Bolt Control"; pixel_x = 5; pixel_y = 25; - req_access = null; specialfunctions = 4 }, /obj/machinery/light/small{ @@ -51581,7 +51520,6 @@ name = "Door Bolt Control"; pixel_x = 5; pixel_y = 25; - req_access = null; specialfunctions = 4 }, /obj/machinery/light/small{ @@ -52953,7 +52891,6 @@ /obj/machinery/door/airlock/engineering{ name = "Supply (Main Level) Substation"; req_access = list(31,10); - req_one_access = null; dir = 1 }, /turf/simulated/floor/plating, @@ -53234,7 +53171,6 @@ "bZM" = ( /obj/machinery/door/airlock/glass_mining{ name = "Cargo Bay"; - req_access = null; req_one_access = list(31,48,26,67); dir = 4 }, @@ -53703,7 +53639,6 @@ /obj/structure/disposalpipe/segment, /obj/machinery/door/airlock/glass_mining{ name = "Break Room"; - req_access = null; req_one_access = list(31,48,26,67); dir = 1 }, @@ -53800,7 +53735,6 @@ "caK" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/maintenance{ - req_access = null; req_one_access = list(12,26); dir = 4 }, @@ -54135,7 +54069,6 @@ }, /obj/machinery/door/airlock/maintenance{ name = "Cargo Maintenance"; - req_access = null; req_one_access = list(31,48); dir = 4 }, @@ -55310,7 +55243,6 @@ }, /obj/machinery/door/airlock/glass_mining{ name = "Break Room"; - req_access = null; req_one_access = list(31,48,67); dir = 1 }, @@ -55688,7 +55620,6 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/door/airlock/glass_mining{ name = "Mining"; - req_access = null; req_one_access = list(31,48,67); dir = 1 }, @@ -56317,7 +56248,6 @@ /obj/machinery/door/firedoor, /obj/machinery/door/airlock/glass_mining{ name = "Mining"; - req_access = null; req_one_access = list(48,67); dir = 1 }, @@ -58439,7 +58369,6 @@ name = "Door Bolt Control"; pixel_x = 5; pixel_y = 25; - req_access = null; specialfunctions = 4 }, /turf/simulated/floor/tiled/freezer, @@ -58696,7 +58625,6 @@ /obj/machinery/door/firedoor, /obj/structure/disposalpipe/segment, /obj/machinery/door/airlock/maintenance{ - req_access = null; req_one_access = list(12,66); dir = 1 }, @@ -58744,8 +58672,7 @@ /area/maintenance/vault) "eiB" = ( /obj/machinery/door/blast/shutters{ - dir = 2; - name = "shutter" + dir = 2 }, /obj/machinery/conveyor{ icon_state = "conveyor-broken" @@ -59751,7 +59678,6 @@ /obj/machinery/door/airlock/maintenance{ name = "Research and Development Maintenance"; req_access = list(7); - req_one_access = null; dir = 1 }, /obj/machinery/door/blast/regular{ @@ -60122,7 +60048,6 @@ }, /obj/machinery/door/firedoor, /obj/machinery/door/airlock/maintenance{ - req_access = null; req_one_access = list(12,25,28,66); dir = 1 }, @@ -61120,7 +61045,6 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/door/firedoor, /obj/machinery/door/airlock/maintenance{ - req_access = null; req_one_access = list(12,29); dir = 1 }, @@ -61658,7 +61582,6 @@ /obj/machinery/door/airlock/medical{ autoclose = 0; icon_state = "door_open"; - id_tag = null; name = "Intensive Care Unit"; req_access = list(66); dir = 4 @@ -61750,7 +61673,6 @@ /obj/effect/decal/cleanable/dirt, /obj/machinery/door/airlock/medical{ name = "Room 1"; - req_access = null; req_one_access = list(12,66); dir = 1 }, @@ -61854,7 +61776,6 @@ /obj/machinery/door/airlock/medical{ autoclose = 0; icon_state = "door_open"; - id_tag = null; name = "General Treatment Room"; req_access = list(66); dir = 4 @@ -62608,7 +62529,6 @@ /obj/machinery/door/airlock/engineering{ name = "Medbay Substation"; req_access = list(5); - req_one_access = null; dir = 1 }, /turf/simulated/floor/plating, @@ -62775,7 +62695,6 @@ /obj/machinery/door/airlock/maintenance{ name = "Medbay Maintance"; req_access = list(12); - req_one_access = null; dir = 1 }, /turf/simulated/floor/plating, @@ -63326,8 +63245,7 @@ id = "consular_office"; name = "consular door control"; pixel_x = -13; - pixel_y = -25; - req_access = null + pixel_y = -25 }, /obj/machinery/button/remote/airlock{ dir = 1; @@ -63335,7 +63253,6 @@ name = "consular door bolts"; pixel_x = -13; pixel_y = -34; - req_access = null; specialfunctions = 4 }, /obj/structure/bed/stool/chair/office/bridge/generic{ @@ -63949,7 +63866,6 @@ /obj/effect/decal/cleanable/dirt, /obj/machinery/door/airlock/medical{ name = "Room 2"; - req_access = null; req_one_access = list(12,66); dir = 1 }, @@ -64160,7 +64076,6 @@ "ovg" = ( /obj/machinery/door/airlock/maintenance{ name = "Starboard Ward"; - req_access = null; req_one_access = list(12,66); dir = 1 }, @@ -64910,7 +64825,6 @@ name = "representative door bolts"; pixel_x = -8; pixel_y = 17; - req_access = null; specialfunctions = 4 }, /obj/machinery/button/remote/airlock{ @@ -64918,8 +64832,7 @@ id = "rep_office"; name = "representative door control"; pixel_x = 1; - pixel_y = 17; - req_access = null + pixel_y = 17 }, /obj/machinery/button/switch/windowtint{ id = "rep_inner"; @@ -65443,15 +65356,6 @@ }, /turf/simulated/floor/plating, /area/maintenance/engineering) -"qLn" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/maintenance{ - req_access = list(12); - req_one_access = null; - dir = 1 - }, -/turf/simulated/floor/plating, -/area/maintenance/research_port) "qLp" = ( /obj/structure/cable{ d1 = 4; @@ -65919,7 +65823,6 @@ /obj/machinery/door/airlock/maintenance{ name = "Autopsy Lab"; req_access = list(12); - req_one_access = null; dir = 1 }, /turf/simulated/floor/plating, @@ -66136,7 +66039,6 @@ /obj/machinery/door/airlock/maintenance{ name = "Test Range"; req_access = list(12); - req_one_access = null; dir = 4 }, /turf/simulated/floor/plating, @@ -67751,7 +67653,6 @@ /obj/machinery/door/firedoor, /obj/machinery/door/airlock/maintenance{ name = "Physical Therapy"; - req_access = null; req_one_access = list(12,66); dir = 1 }, @@ -69388,7 +69289,6 @@ dir = 4 }, /obj/machinery/door/airlock/maintenance{ - req_access = null; req_one_access = list(12,66); dir = 4 }, @@ -88037,7 +87937,7 @@ ahT beG bcY bcY -qLn +bPt beC bcY bcY @@ -104913,7 +104813,7 @@ aab aab aau aau -aas +aau aad aaF aah @@ -105168,7 +105068,7 @@ aab aab aab aab -aah +aad aaq aah aay diff --git a/maps/runtime/runtime-1.dmm b/maps/runtime/runtime-1.dmm index 86e8f8be029..745bafe0820 100644 --- a/maps/runtime/runtime-1.dmm +++ b/maps/runtime/runtime-1.dmm @@ -1622,6 +1622,10 @@ /obj/machinery/computer/ship/sensors/terminal, /turf/simulated/floor/tiled, /area/storage/primary) +"sT" = ( +/obj/effect/landmark/lobby_mobs_location, +/turf/unsimulated/floor, +/area/template_noop) "sU" = ( /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 9 @@ -1851,10 +1855,6 @@ /turf/simulated/floor/tiled, /area/bridge) "IQ" = ( -/obj/effect/map_effect/airlock/s_to_n/long/square/wide{ - name = "Deck 2 Starboard Aft Maintenance Airlock (2001)"; - radio_frequency = 2001 - }, /obj/effect/landmark{ name = "Observer-Start" }, @@ -1933,6 +1933,9 @@ }, /turf/simulated/floor/plating, /area/maintenance/maintcentral) +"NF" = ( +/turf/unsimulated/wall/steel, +/area/template_noop) "Ot" = ( /obj/machinery/atmospherics/unary/vent_pump/high_volume{ dir = 8 @@ -11598,10 +11601,10 @@ aa aa aa aa +ac ae ae -ae -ae +ac Ft fH at @@ -13931,8 +13934,8 @@ aa aa aa aa -aa -aa +NF +NF ac Uf Uf @@ -14188,8 +14191,8 @@ aa aa aa aa -aa -aa +NF +sT ac Uf Uf @@ -14445,8 +14448,8 @@ aa aa aa aa -aa -aa +NF +NF ac ac ac diff --git a/maps/runtime/runtime-2.dmm b/maps/runtime/runtime-2.dmm index c0a45c35afb..6e7ad7e8301 100644 --- a/maps/runtime/runtime-2.dmm +++ b/maps/runtime/runtime-2.dmm @@ -11,7 +11,7 @@ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/manifold/hidden/supply, -/turf/simulated/floor/airless, +/turf/simulated/floor/tiled, /area/construction/storage) "aO" = ( /turf/simulated/floor/tiled, @@ -242,7 +242,7 @@ }, /obj/structure/cable, /obj/machinery/atmospherics/pipe/zpipe/up/supply, -/turf/simulated/floor/airless, +/turf/simulated/floor/tiled, /area/construction/storage) "iR" = ( /turf/template_noop, diff --git a/maps/runtime/runtime-3.dmm b/maps/runtime/runtime-3.dmm index 4b5883723cb..0e5b98a1f70 100644 --- a/maps/runtime/runtime-3.dmm +++ b/maps/runtime/runtime-3.dmm @@ -443,7 +443,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 5 }, -/turf/simulated/floor/airless, +/turf/simulated/floor/tiled, /area/construction/hallway) "iV" = ( /obj/effect/floor_decal/spline/fancy/wood/corner, @@ -982,6 +982,12 @@ /obj/structure/grille/over/large, /turf/simulated/floor/tiled/full, /area/construction/hallway) +"wH" = ( +/obj/effect/landmark{ + name = "carpspawn" + }, +/turf/simulated/floor/airless, +/area/template_noop) "wL" = ( /obj/effect/floor_decal/spline/fancy/wood{ dir = 4 @@ -2114,6 +2120,10 @@ /obj/machinery/power/breakerbox, /turf/simulated/floor, /area/construction/supplyshuttle) +"XA" = ( +/obj/structure/lattice, +/turf/simulated/floor/airless, +/area/template_noop) "Yi" = ( /obj/machinery/atmospherics/binary/pump/on, /obj/machinery/light/small{ @@ -13217,13 +13227,13 @@ nA nA nA nA -nA -nA -nA -nA -nA -nA -nA +Bc +Bc +Bc +Bc +Bc +Bc +Bc nA nA nA @@ -13474,13 +13484,13 @@ pM pM pM pM -pM -pM -pM -pM -pM -pM -pM +XA +XA +XA +XA +XA +XA +XA pM pM pM @@ -13731,13 +13741,13 @@ nA nA nA nA -nA -nA -nA -nA -nA -nA -nA +Bc +Bc +Bc +Bc +Bc +Bc +Bc nA nA nA @@ -13988,13 +13998,13 @@ nA nA nA nA -nA -nA -nA -nA -nA -nA -nA +Bc +Bc +Bc +Bc +Bc +Bc +Bc nA nA nA @@ -14245,13 +14255,13 @@ nA nA nA nA -nA -nA -nA -nA -nA -nA -nA +Bc +Bc +Bc +Bc +Bc +Bc +Bc nA nA nA @@ -14502,13 +14512,13 @@ nA nA nA nA -nA -Pu -nA -nA -nA -nA -nA +Bc +wH +Bc +Bc +Bc +Bc +Bc nA nA nA diff --git a/maps/sccv_horizon/sccv_horizon-1_deck_1.dmm b/maps/sccv_horizon/sccv_horizon-1_deck_1.dmm index 20e27443af7..6c80fded267 100644 --- a/maps/sccv_horizon/sccv_horizon-1_deck_1.dmm +++ b/maps/sccv_horizon/sccv_horizon-1_deck_1.dmm @@ -2724,9 +2724,6 @@ }, /turf/simulated/floor/plating, /area/maintenance/engineering) -"bSM" = ( -/turf/simulated/floor/airless, -/area/hangar/intrepid) "bUN" = ( /obj/structure/cable/green{ icon_state = "1-2" @@ -5715,7 +5712,6 @@ dir = 10 }, /obj/machinery/button/remote/blast_door{ - dir = 2; id = "miningbay"; name = "Mining Bay Entrance"; pixel_x = 22; @@ -16810,9 +16806,7 @@ }, /obj/structure/table/standard, /obj/item/device/suit_cooling_unit, -/obj/item/storage/toolbox/mechanical{ - pixel_y = 0 - }, +/obj/item/storage/toolbox/mechanical, /obj/item/storage/belt/utility, /obj/item/stack/rods/full{ pixel_y = 4 @@ -29521,9 +29515,7 @@ }, /obj/structure/table/standard, /obj/item/device/suit_cooling_unit, -/obj/item/storage/toolbox/mechanical{ - pixel_y = 0 - }, +/obj/item/storage/toolbox/mechanical, /obj/item/storage/belt/utility, /obj/item/stack/rods/full{ pixel_y = 4 @@ -55864,7 +55856,7 @@ kyK oSi kaM iRC -bSM +iRC xsx eSV eSV diff --git a/maps/sccv_horizon/sccv_horizon-4_centcomm.dmm b/maps/sccv_horizon/sccv_horizon-4_centcomm.dmm index 6ac25cfaaa7..4759851dc4d 100644 --- a/maps/sccv_horizon/sccv_horizon-4_centcomm.dmm +++ b/maps/sccv_horizon/sccv_horizon-4_centcomm.dmm @@ -357,7 +357,6 @@ /obj/machinery/door/airlock/glass_centcom{ dir = 1; name = "Sector Administration Copula"; - req_access = null; req_one_access = list(109,108) }, /turf/unsimulated/floor{ @@ -3491,8 +3490,7 @@ "ahN" = ( /obj/machinery/door/airlock/glass_centcom{ dir = 4; - name = "To: NTCC Odin Mass Transit"; - req_access = null + name = "To: NTCC Odin Mass Transit" }, /turf/unsimulated/floor, /area/centcom/bar) @@ -4091,7 +4089,6 @@ /obj/machinery/door/airlock/glass_centcom{ dir = 4; name = "Sector Administration Copula"; - req_access = null; req_one_access = list(109,108) }, /turf/unsimulated/floor{ @@ -4284,8 +4281,7 @@ id = "corvette_exterior"; name = "aft blast door"; pixel_x = 32; - pixel_y = 12; - req_access = null + pixel_y = 12 }, /turf/simulated/floor/tiled/dark, /area/shuttle/administration) @@ -6599,7 +6595,6 @@ "apE" = ( /obj/machinery/door/airlock/centcom{ name = "Telecommunications Monitoring"; - req_access = null; req_one_access = list(106,108,109) }, /turf/unsimulated/floor{ @@ -6940,8 +6935,7 @@ "aqQ" = ( /obj/machinery/door/airlock/hatch{ dir = 1; - name = "Lounge"; - req_access = null + name = "Lounge" }, /turf/simulated/floor/wood, /area/merchant_station) @@ -9272,7 +9266,6 @@ /obj/machinery/computer/shuttle_control{ can_rename_ship = 1; dir = 4; - req_access = null; req_one_access = list(38,72); shuttle_tag = "SCC Shuttle" }, @@ -9856,7 +9849,6 @@ "ayG" = ( /obj/machinery/door/window/northright{ name = "dispensary"; - req_access = null; req_one_access = list(33,104) }, /obj/effect/floor_decal/corner/orange/diagonal, @@ -9872,7 +9864,6 @@ /obj/effect/floor_decal/corner/orange/diagonal, /obj/machinery/door/window/eastleft{ name = "dispensary"; - req_access = null; req_one_access = list(33,104) }, /obj/item/reagent_containers/glass/beaker/large, @@ -10199,7 +10190,6 @@ /obj/effect/floor_decal/corner/orange/diagonal, /obj/machinery/door/window/eastright{ name = "dispensary"; - req_access = null; req_one_access = list(33,104) }, /obj/item/reagent_containers/dropper, @@ -12711,8 +12701,7 @@ /obj/machinery/door/airlock/glass_centcom{ dir = 4; icon = 'icons/obj/doors/Doorglass.dmi'; - name = "To: Mendell City Shuttle Terminal"; - req_access = null + name = "To: Mendell City Shuttle Terminal" }, /turf/unsimulated/floor, /area/centcom/holding) @@ -13689,7 +13678,6 @@ name = "VIP Shuttle Access"; pixel_x = -7; pixel_y = -23; - req_access = null; req_one_access = list(108,109) }, /turf/unsimulated/floor, @@ -13827,8 +13815,7 @@ /area/centcom/ferry) "aJc" = ( /obj/machinery/door/airlock/centcom{ - name = "Hangar Access"; - req_access = null + name = "Hangar Access" }, /obj/machinery/door/blast/odin{ dir = 4; @@ -13840,8 +13827,7 @@ "aJd" = ( /obj/machinery/door/airlock/centcom{ dir = 1; - name = "Entertainment Wing"; - req_access = null + name = "Entertainment Wing" }, /turf/unsimulated/floor, /area/centcom/holding) @@ -13870,7 +13856,6 @@ dir = 1; icon = 'icons/obj/doors/Doorglass.dmi'; name = "To: Upper Shuttle Terminal"; - req_access = null; req_one_access = list(108,109) }, /turf/unsimulated/floor, @@ -14321,7 +14306,6 @@ /obj/machinery/door/airlock/glass_centcom{ dir = 4; name = "Diplomatic Waiting Lounge"; - req_access = null; req_one_access = list(38,72) }, /obj/effect/floor_decal/spline/fancy/wood/corner{ @@ -14821,8 +14805,7 @@ /area/centcom/suppy) "aMf" = ( /obj/machinery/door/airlock/centcom{ - name = "Auxillary Cryogenics"; - req_access = null + name = "Auxillary Cryogenics" }, /turf/unsimulated/floor{ icon_state = "dark_preview" @@ -14870,7 +14853,6 @@ dir = 4; icon = 'icons/obj/doors/Doorglass.dmi'; name = "To: Lower Shuttle Terminal"; - req_access = null; req_one_access = list(108,109) }, /turf/unsimulated/floor, @@ -14976,7 +14958,6 @@ dir = 4; icon = 'icons/obj/doors/Doorglass.dmi'; name = "To: Lower Shuttle Terminal"; - req_access = null; req_one_access = list(108,109) }, /turf/unsimulated/floor, @@ -15043,7 +15024,6 @@ "aMS" = ( /obj/machinery/door/window/eastleft{ name = "cockpit"; - req_access = null; req_one_access = list(38,72) }, /turf/simulated/floor/tiled/ramp{ @@ -20026,8 +20006,7 @@ /area/centcom/legion) "aYR" = ( /obj/machinery/door/airlock/engineering{ - name = "Aft Thrusters Access - Deck 1"; - req_access = null + name = "Aft Thrusters Access - Deck 1" }, /turf/unsimulated/floor/plating, /area/centcom/legion) @@ -24324,7 +24303,6 @@ req_access = list(150) }, /obj/machinery/button/remote/blast_door{ - dir = 2; id = "burglar_blast"; layer = 3; name = "blast door"; @@ -29055,8 +29033,7 @@ id = "mercworkshop"; name = "shutter"; pixel_x = 10; - pixel_y = -22; - req_access = null + pixel_y = -22 }, /obj/machinery/light, /obj/effect/floor_decal/corner/red/diagonal, @@ -30239,7 +30216,6 @@ name = "blast door" }, /obj/machinery/button/remote/blast_door{ - dir = 2; id = "raiderblastdoor"; name = "blast door"; pixel_x = 25; @@ -35220,6 +35196,12 @@ name = "overgrowth" }, /area/horizon/holodeck/source_moghes) +"cst" = ( +/obj/effect/landmark/lobby_mobs_location, +/turf/unsimulated/floor, +/area/centcom/start{ + name = "Romanovich Cloud, Tau Ceti" + }) "cvH" = ( /obj/effect/decal{ anchored = 1; @@ -37779,16 +37761,14 @@ id = "merchant_windows"; name = "viewing shutters"; pixel_x = -7; - pixel_y = 25; - req_access = null + pixel_y = 25 }, /obj/machinery/button/remote/blast_door{ dir = 1; id = "merchant_airlock"; name = "external airlock shutter"; pixel_x = -7; - pixel_y = 35; - req_access = null + pixel_y = 35 }, /turf/simulated/floor/wood, /area/shuttle/merchant) @@ -40615,16 +40595,14 @@ id = "merchant_windows"; name = "viewing shutters"; pixel_x = -7; - pixel_y = 25; - req_access = null + pixel_y = 25 }, /obj/machinery/button/remote/blast_door{ dir = 1; id = "merchant_airlock"; name = "external airlock shutter"; pixel_x = -7; - pixel_y = 35; - req_access = null + pixel_y = 35 }, /turf/simulated/floor/tiled/dark, /area/shuttle/merchant) @@ -41436,8 +41414,8 @@ aaa aaa aaa aaa -aaa -aaa +aNQ +aNQ aNQ aNQ aNQ @@ -41693,8 +41671,8 @@ aaa aaa aaa aaa -aaa -aaa +aNQ +cst aNQ aOg aOg @@ -41950,8 +41928,8 @@ aaa aaa aaa aaa -aaa -aaa +aNQ +aNQ aNQ aOg aOg