From 75753a4dfd6ccfa4417f6ddcb197e33e2a90ca7d Mon Sep 17 00:00:00 2001 From: oranges Date: Sat, 16 Dec 2017 12:00:40 +1300 Subject: [PATCH 01/15] Defines all subsystem priority values --- code/__DEFINES/subsystems.dm | 34 ++++++++++++++ code/controllers/subsystem.dm | 2 +- code/controllers/subsystem/acid.dm | 2 +- code/controllers/subsystem/air.dm | 2 +- code/controllers/subsystem/fire_burning.dm | 2 +- code/controllers/subsystem/garbage.dm | 2 +- code/controllers/subsystem/icon_smooth.dm | 2 +- code/controllers/subsystem/idlenpcpool.dm | 2 +- code/controllers/subsystem/inbounds.dm | 2 +- code/controllers/subsystem/input.dm | 12 +++++ code/controllers/subsystem/mobs.dm | 2 +- code/controllers/subsystem/npcpool.dm | 2 +- code/controllers/subsystem/orbit.dm | 47 +++++++++++++++++++ code/controllers/subsystem/overlays.dm | 2 +- code/controllers/subsystem/parallax.dm | 2 +- .../subsystem/processing/fields.dm | 2 +- .../subsystem/processing/flightpacks.dm | 2 +- .../subsystem/processing/networks.dm | 39 +++++++++++++++ code/controllers/subsystem/processing/obj.dm | 2 +- .../subsystem/processing/processing.dm | 2 +- .../subsystem/processing/projectiles.dm | 1 - code/controllers/subsystem/radiation.dm | 1 - code/controllers/subsystem/research.dm | 2 +- code/controllers/subsystem/server_maint.dm | 2 +- code/controllers/subsystem/spacedrift.dm | 2 +- code/controllers/subsystem/tgui.dm | 2 +- code/controllers/subsystem/throwing.dm | 2 +- code/controllers/subsystem/ticker.dm | 2 +- 28 files changed, 154 insertions(+), 24 deletions(-) create mode 100644 code/controllers/subsystem/input.dm diff --git a/code/__DEFINES/subsystems.dm b/code/__DEFINES/subsystems.dm index 5a0dded276..39f9722486 100644 --- a/code/__DEFINES/subsystems.dm +++ b/code/__DEFINES/subsystems.dm @@ -70,6 +70,40 @@ #define INIT_ORDER_SQUEAK -40 #define INIT_ORDER_PERSISTENCE -100 +// 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_IDLE_NPC 1 +#define FIRE_PRIORITY_SERVER_MAINT 1 + +#define FIRE_PRIORITY_GARBAGE 4 +#define FIRE_PRIORITY_RESEARCH 4 +#define FIRE_PRIORITY_AIR 5 +#define FIRE_PRIORITY_NPC 5 +#define FIRE_PRIORITY_PROCESS 6 +#define FIRE_PRIORITY_THROWING 6 +#define FIRE_PRIORITY_FLIGHTPACKS 7 +#define FIRE_PRIORITY_SPACEDRIFT 7 +#define FIRE_PRIOTITY_SMOOTHING 8 +#define FIRE_PRIORITY_ORBIT 8 +#define FIRE_PRIORITY_OBJ 9 +#define FIRE_PRIORUTY_FIELDS 9 +#define FIRE_PRIORITY_ACID 9 +#define FIRE_PRIOTITY_BURNING 9 +#define FIRE_PRIORITY_INBOUNDS 9 + +#define FIRE_PRIORITY_DEFAULT 10 + +#define FIRE_PRIORITY_PARALLAX 11 +#define FIRE_PRIORITY_NETWORKS 12 +#define FIRE_PRIORITY_MOBS 13 +#define FIRE_PRIORITY_TGUI 14 + +#define FIRE_PRIORITY_TICKER 19 +#define FIRE_PRIORITY_OVERLAYS 20 + +#define FIRE_PRIORITY_INPUT 100 // This must always always be the max highest priority. Player input must never be lost. + // SS runlevels #define RUNLEVEL_INIT 0 diff --git a/code/controllers/subsystem.dm b/code/controllers/subsystem.dm index 8d450e3a8e..c3779dc98f 100644 --- a/code/controllers/subsystem.dm +++ b/code/controllers/subsystem.dm @@ -4,7 +4,7 @@ name = "fire coderbus" //name of the subsystem var/init_order = INIT_ORDER_DEFAULT //order of initialization. Higher numbers are initialized first, lower numbers later. Use defines in __DEFINES/subsystems.dm for easy understanding of order. var/wait = 20 //time to wait (in deciseconds) between each call to fire(). Must be a positive integer. - var/priority = 50 //When mutiple subsystems need to run in the same tick, higher priority subsystems will run first and be given a higher share of the tick before MC_TICK_CHECK triggers a sleep + var/priority = FIRE_PRIORITY_DEFAULT //When mutiple subsystems need to run in the same tick, higher priority subsystems will run first and be given a higher share of the tick before MC_TICK_CHECK triggers a sleep var/flags = 0 //see MC.dm in __DEFINES Most flags must be set on world start to take full effect. (You can also restart the mc to force them to process again) diff --git a/code/controllers/subsystem/acid.dm b/code/controllers/subsystem/acid.dm index a83afb3923..e3c415960b 100644 --- a/code/controllers/subsystem/acid.dm +++ b/code/controllers/subsystem/acid.dm @@ -1,6 +1,6 @@ SUBSYSTEM_DEF(acid) name = "Acid" - priority = 40 + priority = FIRE_PRIORITY_ACID flags = SS_NO_INIT|SS_BACKGROUND runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME diff --git a/code/controllers/subsystem/air.dm b/code/controllers/subsystem/air.dm index 59b6fc34ef..1775d470b0 100644 --- a/code/controllers/subsystem/air.dm +++ b/code/controllers/subsystem/air.dm @@ -9,7 +9,7 @@ SUBSYSTEM_DEF(air) name = "Atmospherics" init_order = INIT_ORDER_AIR - priority = 20 + priority = FIRE_PRIORITY_AIR wait = 5 flags = SS_BACKGROUND runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME diff --git a/code/controllers/subsystem/fire_burning.dm b/code/controllers/subsystem/fire_burning.dm index 73358000f1..db6dc6513e 100644 --- a/code/controllers/subsystem/fire_burning.dm +++ b/code/controllers/subsystem/fire_burning.dm @@ -1,6 +1,6 @@ SUBSYSTEM_DEF(fire_burning) name = "Fire Burning" - priority = 40 + priority = FIRE_PRIOTITY_BURNING flags = SS_NO_INIT|SS_BACKGROUND runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME diff --git a/code/controllers/subsystem/garbage.dm b/code/controllers/subsystem/garbage.dm index 6203f1b474..4faf234ffd 100644 --- a/code/controllers/subsystem/garbage.dm +++ b/code/controllers/subsystem/garbage.dm @@ -1,6 +1,6 @@ SUBSYSTEM_DEF(garbage) name = "Garbage" - priority = 15 + priority = FIRE_PRIORITY_GARBAGE wait = 2 SECONDS flags = SS_POST_FIRE_TIMING|SS_BACKGROUND|SS_NO_INIT runlevels = RUNLEVELS_DEFAULT | RUNLEVEL_LOBBY diff --git a/code/controllers/subsystem/icon_smooth.dm b/code/controllers/subsystem/icon_smooth.dm index 84df089973..d0ad2ffbc3 100644 --- a/code/controllers/subsystem/icon_smooth.dm +++ b/code/controllers/subsystem/icon_smooth.dm @@ -2,7 +2,7 @@ SUBSYSTEM_DEF(icon_smooth) name = "Icon Smoothing" init_order = INIT_ORDER_ICON_SMOOTHING wait = 1 - priority = 35 + priority = FIRE_PRIOTITY_SMOOTHING flags = SS_TICKER var/list/smooth_queue = list() diff --git a/code/controllers/subsystem/idlenpcpool.dm b/code/controllers/subsystem/idlenpcpool.dm index 49846e6c9d..0ad2becde6 100644 --- a/code/controllers/subsystem/idlenpcpool.dm +++ b/code/controllers/subsystem/idlenpcpool.dm @@ -1,7 +1,7 @@ SUBSYSTEM_DEF(idlenpcpool) name = "Idling NPC Pool" flags = SS_POST_FIRE_TIMING|SS_NO_INIT|SS_BACKGROUND - priority = 10 + priority = FIRE_PRIORITY_IDLE_NPC wait = 60 runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME diff --git a/code/controllers/subsystem/inbounds.dm b/code/controllers/subsystem/inbounds.dm index 16e0f53028..63063c258f 100644 --- a/code/controllers/subsystem/inbounds.dm +++ b/code/controllers/subsystem/inbounds.dm @@ -1,6 +1,6 @@ SUBSYSTEM_DEF(inbounds) name = "Inbounds" - priority = 40 + priority = FIRE_PRIORITY_INBOUNDS flags = SS_NO_INIT runlevels = RUNLEVEL_GAME diff --git a/code/controllers/subsystem/input.dm b/code/controllers/subsystem/input.dm new file mode 100644 index 0000000000..f553d66307 --- /dev/null +++ b/code/controllers/subsystem/input.dm @@ -0,0 +1,12 @@ +SUBSYSTEM_DEF(input) + name = "Input" + wait = 1 //SS_TICKER means this runs every tick + flags = SS_TICKER | SS_NO_INIT + priority = FIRE_PRIORITY_INPUT + runlevels = RUNLEVELS_DEFAULT | RUNLEVEL_LOBBY + +/datum/controller/subsystem/input/fire() + var/list/clients = GLOB.clients // Let's sing the list cache song + for(var/i in 1 to clients.len) + var/client/C = clients[i] + C.keyLoop() diff --git a/code/controllers/subsystem/mobs.dm b/code/controllers/subsystem/mobs.dm index bcdb1af8ed..14ad19e1ea 100644 --- a/code/controllers/subsystem/mobs.dm +++ b/code/controllers/subsystem/mobs.dm @@ -1,6 +1,6 @@ SUBSYSTEM_DEF(mobs) name = "Mobs" - priority = 100 + priority = FIRE_PRIORITY_MOBS flags = SS_KEEP_TIMING runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME diff --git a/code/controllers/subsystem/npcpool.dm b/code/controllers/subsystem/npcpool.dm index 6ee4626f25..ca050cb9b2 100644 --- a/code/controllers/subsystem/npcpool.dm +++ b/code/controllers/subsystem/npcpool.dm @@ -6,7 +6,7 @@ SUBSYSTEM_DEF(npcpool) name = "NPC Pool" flags = SS_POST_FIRE_TIMING|SS_NO_INIT|SS_BACKGROUND - priority = 20 + priority = FIRE_PRIORITY_NPC runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME var/list/canBeUsed = list() diff --git a/code/controllers/subsystem/orbit.dm b/code/controllers/subsystem/orbit.dm index 6184bb005b..9567fb95a2 100644 --- a/code/controllers/subsystem/orbit.dm +++ b/code/controllers/subsystem/orbit.dm @@ -1,3 +1,4 @@ +<<<<<<< HEAD SUBSYSTEM_DEF(orbit) name = "Orbits" priority = 35 @@ -42,3 +43,49 @@ SUBSYSTEM_DEF(orbit) return +======= +SUBSYSTEM_DEF(orbit) + name = "Orbits" + priority = FIRE_PRIORITY_ORBIT + wait = 2 + flags = SS_NO_INIT|SS_TICKER + + var/list/currentrun = list() + var/list/processing = list() + +/datum/controller/subsystem/orbit/stat_entry() + ..("P:[processing.len]") + + +/datum/controller/subsystem/orbit/fire(resumed = 0) + if (!resumed) + src.currentrun = processing.Copy() + + //cache for sanic speed (lists are references anyways) + var/list/currentrun = src.currentrun + + while (currentrun.len) + var/datum/orbit/O = currentrun[currentrun.len] + currentrun.len-- + if (!O) + processing -= O + if (MC_TICK_CHECK) + return + continue + if (!O.orbiter) + qdel(O) + if (MC_TICK_CHECK) + return + continue + if (O.lastprocess >= world.time) //we already checked recently + if (MC_TICK_CHECK) + return + continue + var/targetloc = get_turf(O.orbiting) + if (targetloc != O.lastloc || O.orbiter.loc != targetloc) + O.Check(targetloc) + if (MC_TICK_CHECK) + return + + +>>>>>>> 0244b61... Merge pull request #33537 from ninjanomnom/priority-defines diff --git a/code/controllers/subsystem/overlays.dm b/code/controllers/subsystem/overlays.dm index d0b2e8c303..23edb3e487 100644 --- a/code/controllers/subsystem/overlays.dm +++ b/code/controllers/subsystem/overlays.dm @@ -2,7 +2,7 @@ SUBSYSTEM_DEF(overlays) name = "Overlay" flags = SS_TICKER wait = 1 - priority = 500 + priority = FIRE_PRIORITY_OVERLAYS init_order = INIT_ORDER_OVERLAY runlevels = RUNLEVELS_DEFAULT | RUNLEVEL_SETUP diff --git a/code/controllers/subsystem/parallax.dm b/code/controllers/subsystem/parallax.dm index 39d07ee676..f86e3f8ea7 100644 --- a/code/controllers/subsystem/parallax.dm +++ b/code/controllers/subsystem/parallax.dm @@ -2,7 +2,7 @@ SUBSYSTEM_DEF(parallax) name = "Parallax" wait = 2 flags = SS_POST_FIRE_TIMING | SS_BACKGROUND | SS_NO_INIT - priority = 65 + priority = FIRE_PRIORITY_PARALLAX runlevels = RUNLEVEL_LOBBY | RUNLEVELS_DEFAULT var/list/currentrun diff --git a/code/controllers/subsystem/processing/fields.dm b/code/controllers/subsystem/processing/fields.dm index 6a878fa142..b6996377b5 100644 --- a/code/controllers/subsystem/processing/fields.dm +++ b/code/controllers/subsystem/processing/fields.dm @@ -1,6 +1,6 @@ PROCESSING_SUBSYSTEM_DEF(fields) name = "Fields" wait = 2 - priority = 40 + priority = FIRE_PRIORUTY_FIELDS flags = SS_KEEP_TIMING | SS_NO_INIT runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME diff --git a/code/controllers/subsystem/processing/flightpacks.dm b/code/controllers/subsystem/processing/flightpacks.dm index 1d85811878..2981789338 100644 --- a/code/controllers/subsystem/processing/flightpacks.dm +++ b/code/controllers/subsystem/processing/flightpacks.dm @@ -1,6 +1,6 @@ PROCESSING_SUBSYSTEM_DEF(flightpacks) name = "Flightpack Movement" - priority = 30 + priority = FIRE_PRIORITY_FLIGHTPACKS wait = 2 stat_tag = "FM" flags = SS_NO_INIT|SS_TICKER|SS_KEEP_TIMING diff --git a/code/controllers/subsystem/processing/networks.dm b/code/controllers/subsystem/processing/networks.dm index 69c5fe1b2b..05c7d17364 100644 --- a/code/controllers/subsystem/processing/networks.dm +++ b/code/controllers/subsystem/processing/networks.dm @@ -1,3 +1,4 @@ +<<<<<<< HEAD PROCESSING_SUBSYSTEM_DEF(networks) name = "Networks" priority = 80 @@ -34,3 +35,41 @@ PROCESSING_SUBSYSTEM_DEF(networks) /datum/controller/subsystem/processing/networks/proc/unregister_interface(datum/component/ntnet_interface/D) interfaces_by_id -= D.hardware_id return TRUE +======= +PROCESSING_SUBSYSTEM_DEF(networks) + name = "Networks" + priority = FIRE_PRIORITY_NETWORKS + wait = 1 + stat_tag = "NET" + flags = SS_KEEP_TIMING + init_order = INIT_ORDER_NETWORKS + var/datum/ntnet/station/station_network + var/assignment_hardware_id = HID_RESTRICTED_END + var/list/networks_by_id = list() //id = network + var/list/interfaces_by_id = list() //hardware id = component interface + +/datum/controller/subsystem/processing/networks/Initialize() + station_network = new + station_network.register_map_supremecy() + . = ..() + +/datum/controller/subsystem/processing/networks/proc/register_network(datum/ntnet/network) + if(!networks_by_id[network.network_id]) + networks_by_id[network.network_id] = network + return TRUE + return FALSE + +/datum/controller/subsystem/processing/networks/proc/unregister_network(datum/ntnet/network) + networks_by_id -= network.network_id + return TRUE + +/datum/controller/subsystem/processing/networks/proc/register_interface(datum/component/ntnet_interface/D) + if(!interfaces_by_id[D.hardware_id]) + interfaces_by_id[D.hardware_id] = D + return TRUE + return FALSE + +/datum/controller/subsystem/processing/networks/proc/unregister_interface(datum/component/ntnet_interface/D) + interfaces_by_id -= D.hardware_id + return TRUE +>>>>>>> 0244b61... Merge pull request #33537 from ninjanomnom/priority-defines diff --git a/code/controllers/subsystem/processing/obj.dm b/code/controllers/subsystem/processing/obj.dm index 29fe277232..68f6f16cea 100644 --- a/code/controllers/subsystem/processing/obj.dm +++ b/code/controllers/subsystem/processing/obj.dm @@ -1,6 +1,6 @@ SUBSYSTEM_DEF(obj) name = "Objects" - priority = 40 + priority = FIRE_PRIORITY_OBJ flags = SS_NO_INIT var/list/processing = list() diff --git a/code/controllers/subsystem/processing/processing.dm b/code/controllers/subsystem/processing/processing.dm index 0586975866..f6d45ebff2 100644 --- a/code/controllers/subsystem/processing/processing.dm +++ b/code/controllers/subsystem/processing/processing.dm @@ -2,7 +2,7 @@ SUBSYSTEM_DEF(processing) name = "Processing" - priority = 25 + priority = FIRE_PRIORITY_PROCESS flags = SS_BACKGROUND|SS_POST_FIRE_TIMING|SS_NO_INIT wait = 10 diff --git a/code/controllers/subsystem/processing/projectiles.dm b/code/controllers/subsystem/processing/projectiles.dm index ebf217c79a..cc2399e3df 100644 --- a/code/controllers/subsystem/processing/projectiles.dm +++ b/code/controllers/subsystem/processing/projectiles.dm @@ -1,6 +1,5 @@ PROCESSING_SUBSYSTEM_DEF(projectiles) name = "Projectiles" - priority = 25 wait = 1 stat_tag = "PP" flags = SS_NO_INIT|SS_TICKER|SS_KEEP_TIMING diff --git a/code/controllers/subsystem/radiation.dm b/code/controllers/subsystem/radiation.dm index 0b69e003fc..a6cd658bf6 100644 --- a/code/controllers/subsystem/radiation.dm +++ b/code/controllers/subsystem/radiation.dm @@ -1,7 +1,6 @@ PROCESSING_SUBSYSTEM_DEF(radiation) name = "Radiation" flags = SS_NO_INIT | SS_BACKGROUND - priority = 25 var/list/warned_atoms = list() diff --git a/code/controllers/subsystem/research.dm b/code/controllers/subsystem/research.dm index d1bcf31885..06b5889e58 100644 --- a/code/controllers/subsystem/research.dm +++ b/code/controllers/subsystem/research.dm @@ -2,7 +2,7 @@ SUBSYSTEM_DEF(research) name = "Research" flags = SS_KEEP_TIMING - priority = 15 //My powergame is priority. + priority = FIRE_PRIORITY_RESEARCH wait = 10 init_order = INIT_ORDER_RESEARCH var/list/invalid_design_ids = list() //associative id = number of times diff --git a/code/controllers/subsystem/server_maint.dm b/code/controllers/subsystem/server_maint.dm index cb5a86bd75..dd68443bd7 100644 --- a/code/controllers/subsystem/server_maint.dm +++ b/code/controllers/subsystem/server_maint.dm @@ -4,7 +4,7 @@ SUBSYSTEM_DEF(server_maint) name = "Server Tasks" wait = 6 flags = SS_POST_FIRE_TIMING - priority = 10 + priority = FIRE_PRIORITY_SERVER_MAINT init_order = INIT_ORDER_SERVER_MAINT runlevels = RUNLEVEL_LOBBY | RUNLEVELS_DEFAULT var/list/currentrun diff --git a/code/controllers/subsystem/spacedrift.dm b/code/controllers/subsystem/spacedrift.dm index 8fe7cbe048..56a6786a20 100644 --- a/code/controllers/subsystem/spacedrift.dm +++ b/code/controllers/subsystem/spacedrift.dm @@ -1,6 +1,6 @@ SUBSYSTEM_DEF(spacedrift) name = "Space Drift" - priority = 30 + priority = FIRE_PRIORITY_SPACEDRIFT wait = 5 flags = SS_NO_INIT|SS_KEEP_TIMING runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME diff --git a/code/controllers/subsystem/tgui.dm b/code/controllers/subsystem/tgui.dm index a9b307bc0d..e03299f57f 100644 --- a/code/controllers/subsystem/tgui.dm +++ b/code/controllers/subsystem/tgui.dm @@ -2,7 +2,7 @@ SUBSYSTEM_DEF(tgui) name = "tgui" wait = 9 flags = SS_NO_INIT - priority = 110 + priority = FIRE_PRIORITY_TGUI runlevels = RUNLEVEL_LOBBY | RUNLEVELS_DEFAULT var/list/currentrun = list() diff --git a/code/controllers/subsystem/throwing.dm b/code/controllers/subsystem/throwing.dm index 97d84a0d3b..87153fbe93 100644 --- a/code/controllers/subsystem/throwing.dm +++ b/code/controllers/subsystem/throwing.dm @@ -3,7 +3,7 @@ SUBSYSTEM_DEF(throwing) name = "Throwing" - priority = 25 + priority = FIRE_PRIORITY_THROWING wait = 1 flags = SS_NO_INIT|SS_KEEP_TIMING|SS_TICKER runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index 881bb7fcb7..d3ef05bdf8 100755 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -4,7 +4,7 @@ SUBSYSTEM_DEF(ticker) name = "Ticker" init_order = INIT_ORDER_TICKER - priority = 200 + priority = FIRE_PRIORITY_TICKER flags = SS_KEEP_TIMING runlevels = RUNLEVEL_LOBBY | RUNLEVEL_SETUP | RUNLEVEL_GAME From 14128362014d209b1224dd79fbaf73c1ed0f7fbd Mon Sep 17 00:00:00 2001 From: LetterJay Date: Sun, 17 Dec 2017 17:51:20 -0600 Subject: [PATCH 02/15] Update orbit.dm --- code/controllers/subsystem/orbit.dm | 49 ----------------------------- 1 file changed, 49 deletions(-) diff --git a/code/controllers/subsystem/orbit.dm b/code/controllers/subsystem/orbit.dm index 9567fb95a2..581b7821b2 100644 --- a/code/controllers/subsystem/orbit.dm +++ b/code/controllers/subsystem/orbit.dm @@ -1,49 +1,3 @@ -<<<<<<< HEAD -SUBSYSTEM_DEF(orbit) - name = "Orbits" - priority = 35 - wait = 2 - flags = SS_NO_INIT|SS_TICKER - - var/list/currentrun = list() - var/list/processing = list() - -/datum/controller/subsystem/orbit/stat_entry() - ..("P:[processing.len]") - - -/datum/controller/subsystem/orbit/fire(resumed = 0) - if (!resumed) - src.currentrun = processing.Copy() - - //cache for sanic speed (lists are references anyways) - var/list/currentrun = src.currentrun - - while (currentrun.len) - var/datum/orbit/O = currentrun[currentrun.len] - currentrun.len-- - if (!O) - processing -= O - if (MC_TICK_CHECK) - return - continue - if (!O.orbiter) - qdel(O) - if (MC_TICK_CHECK) - return - continue - if (O.lastprocess >= world.time) //we already checked recently - if (MC_TICK_CHECK) - return - continue - var/targetloc = get_turf(O.orbiting) - if (targetloc != O.lastloc || O.orbiter.loc != targetloc) - O.Check(targetloc) - if (MC_TICK_CHECK) - return - - -======= SUBSYSTEM_DEF(orbit) name = "Orbits" priority = FIRE_PRIORITY_ORBIT @@ -86,6 +40,3 @@ SUBSYSTEM_DEF(orbit) O.Check(targetloc) if (MC_TICK_CHECK) return - - ->>>>>>> 0244b61... Merge pull request #33537 from ninjanomnom/priority-defines From 69930a192d94a87323d37ebc43e453da68f811ff Mon Sep 17 00:00:00 2001 From: LetterJay Date: Sun, 17 Dec 2017 17:51:28 -0600 Subject: [PATCH 03/15] Update networks.dm --- .../subsystem/processing/networks.dm | 39 ------------------- 1 file changed, 39 deletions(-) diff --git a/code/controllers/subsystem/processing/networks.dm b/code/controllers/subsystem/processing/networks.dm index 05c7d17364..a3f01efd0c 100644 --- a/code/controllers/subsystem/processing/networks.dm +++ b/code/controllers/subsystem/processing/networks.dm @@ -1,41 +1,3 @@ -<<<<<<< HEAD -PROCESSING_SUBSYSTEM_DEF(networks) - name = "Networks" - priority = 80 - wait = 1 - stat_tag = "NET" - flags = SS_KEEP_TIMING - init_order = INIT_ORDER_NETWORKS - var/datum/ntnet/station/station_network - var/assignment_hardware_id = HID_RESTRICTED_END - var/list/networks_by_id = list() //id = network - var/list/interfaces_by_id = list() //hardware id = component interface - -/datum/controller/subsystem/processing/networks/Initialize() - station_network = new - station_network.register_map_supremecy() - . = ..() - -/datum/controller/subsystem/processing/networks/proc/register_network(datum/ntnet/network) - if(!networks_by_id[network.network_id]) - networks_by_id[network.network_id] = network - return TRUE - return FALSE - -/datum/controller/subsystem/processing/networks/proc/unregister_network(datum/ntnet/network) - networks_by_id -= network.network_id - return TRUE - -/datum/controller/subsystem/processing/networks/proc/register_interface(datum/component/ntnet_interface/D) - if(!interfaces_by_id[D.hardware_id]) - interfaces_by_id[D.hardware_id] = D - return TRUE - return FALSE - -/datum/controller/subsystem/processing/networks/proc/unregister_interface(datum/component/ntnet_interface/D) - interfaces_by_id -= D.hardware_id - return TRUE -======= PROCESSING_SUBSYSTEM_DEF(networks) name = "Networks" priority = FIRE_PRIORITY_NETWORKS @@ -72,4 +34,3 @@ PROCESSING_SUBSYSTEM_DEF(networks) /datum/controller/subsystem/processing/networks/proc/unregister_interface(datum/component/ntnet_interface/D) interfaces_by_id -= D.hardware_id return TRUE ->>>>>>> 0244b61... Merge pull request #33537 from ninjanomnom/priority-defines From 8cbad06f3543e43607b72e17af7f5d98856643a8 Mon Sep 17 00:00:00 2001 From: vuonojenmustaturska Date: Mon, 18 Dec 2017 03:35:37 +0200 Subject: [PATCH 04/15] Advanced mob laziness --- code/__DEFINES/mobs.dm | 1 + code/_globalvars/lists/mobs.dm | 2 +- code/controllers/subsystem/idlenpcpool.dm | 16 +++++++++- code/modules/mob/living/living.dm | 7 +++++ .../living/simple_animal/hostile/hostile.dm | 29 +++++++++++++++++-- .../mob/living/simple_animal/simple_animal.dm | 23 +++++++++++++-- 6 files changed, 71 insertions(+), 7 deletions(-) diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm index 49e3c996fe..1cc5f7021d 100644 --- a/code/__DEFINES/mobs.dm +++ b/code/__DEFINES/mobs.dm @@ -108,6 +108,7 @@ #define AI_ON 1 #define AI_IDLE 2 #define AI_OFF 3 +#define AI_Z_OFF 4 //determines if a mob can smash through it #define ENVIRONMENT_SMASH_NONE 0 diff --git a/code/_globalvars/lists/mobs.dm b/code/_globalvars/lists/mobs.dm index 89e4481284..c2acea2753 100644 --- a/code/_globalvars/lists/mobs.dm +++ b/code/_globalvars/lists/mobs.dm @@ -22,7 +22,7 @@ GLOBAL_LIST_EMPTY(carbon_list) //all instances of /mob/living/carbon and subt GLOBAL_LIST_EMPTY(ai_list) GLOBAL_LIST_EMPTY(pai_list) GLOBAL_LIST_EMPTY(available_ai_shells) -GLOBAL_LIST_INIT(simple_animals, list(list(),list(),list())) // One for each AI_* status define +GLOBAL_LIST_INIT(simple_animals, list(list(),list(),list(),list())) // One for each AI_* status define GLOBAL_LIST_EMPTY(spidermobs) //all sentient spider mobs GLOBAL_LIST_EMPTY(bots_list) diff --git a/code/controllers/subsystem/idlenpcpool.dm b/code/controllers/subsystem/idlenpcpool.dm index 49846e6c9d..18c3b3cf30 100644 --- a/code/controllers/subsystem/idlenpcpool.dm +++ b/code/controllers/subsystem/idlenpcpool.dm @@ -1,15 +1,26 @@ SUBSYSTEM_DEF(idlenpcpool) name = "Idling NPC Pool" +<<<<<<< HEAD flags = SS_POST_FIRE_TIMING|SS_NO_INIT|SS_BACKGROUND priority = 10 +======= + flags = SS_POST_FIRE_TIMING|SS_BACKGROUND + priority = FIRE_PRIORITY_IDLE_NPC +>>>>>>> d03e4ef... Advanced mob laziness (#33574) wait = 60 runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME var/list/currentrun = list() + var/static/list/idle_mobs_by_zlevel[][] /datum/controller/subsystem/idlenpcpool/stat_entry() var/list/idlelist = GLOB.simple_animals[AI_IDLE] - ..("IdleNPCS:[idlelist.len]") + var/list/zlist = GLOB.simple_animals[AI_Z_OFF] + ..("IdleNPCS:[idlelist.len]|Z:[zlist.len]") + +/datum/controller/subsystem/idlenpcpool/Initialize(start_timeofday) + idle_mobs_by_zlevel = new /list(world.maxz,0) + return ..() /datum/controller/subsystem/idlenpcpool/fire(resumed = FALSE) @@ -24,6 +35,9 @@ SUBSYSTEM_DEF(idlenpcpool) while(currentrun.len) var/mob/living/simple_animal/SA = currentrun[currentrun.len] --currentrun.len + if (!SA) + GLOB.simple_animals[AI_IDLE] -= SA + continue if(!SA.ckey) if(SA.stat != DEAD) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index f589ecbb20..04c9fef63b 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -1048,6 +1048,13 @@ if (client) if (new_z) SSmobs.clients_by_zlevel[new_z] += src + for (var/I in length(SSidlenpcpool.idle_mobs_by_zlevel[new_z]) to 1 step -1) //Backwards loop because we're removing (guarantees optimal rather than worst-case performance), it's fine to use .len here but doesn't compile on 511 + var/mob/living/simple_animal/SA = SSidlenpcpool.idle_mobs_by_zlevel[new_z][I] + if (SA) + SA.toggle_ai(AI_ON) // Guarantees responsiveness for when appearing right next to mobs + else + SSidlenpcpool.idle_mobs_by_zlevel[new_z] -= SA + registered_z = new_z else registered_z = null diff --git a/code/modules/mob/living/simple_animal/hostile/hostile.dm b/code/modules/mob/living/simple_animal/hostile/hostile.dm index 10d9fd93d7..f5e69dc7a0 100644 --- a/code/modules/mob/living/simple_animal/hostile/hostile.dm +++ b/code/modules/mob/living/simple_animal/hostile/hostile.dm @@ -288,7 +288,7 @@ if(search_objects)//Turn off item searching and ignore whatever item we were looking at, we're more concerned with fight or flight target = null LoseSearchObjects() - if(AIStatus == AI_IDLE) + if(AIStatus != AI_ON && AIStatus != AI_OFF) toggle_ai(AI_ON) FindTarget() else if(target != null && prob(40))//No more pulling a mob forever and having a second player attack it, it can switch targets now if it finds a more suitable one @@ -479,6 +479,31 @@ mob/living/simple_animal/hostile/proc/DestroySurroundings() // for use with mega /mob/living/simple_animal/hostile/consider_wakeup() ..() - if(AIStatus == AI_IDLE && FindTarget(ListTargets(), 1)) + var/list/tlist + var/turf/T = get_turf(src) + + if (!T) + return + + if (!length(SSmobs.clients_by_zlevel[T.z])) // It's fine to use .len here but doesn't compile on 511 + toggle_ai(AI_Z_OFF) + return + + if (isturf(T) && !(T.z in GLOB.station_z_levels)) + tlist = ListTargetsLazy(T.z) + else + tlist = ListTargets() + + if(AIStatus == AI_IDLE && FindTarget(tlist, 1)) toggle_ai(AI_ON) +/mob/living/simple_animal/hostile/proc/ListTargetsLazy(var/_Z)//Step 1, find out what we can see + var/static/hostile_machines = typecacheof(list(/obj/machinery/porta_turret, /obj/mecha, /obj/structure/destructible/clockwork/ocular_warden)) + . = list() + for (var/I in SSmobs.clients_by_zlevel[_Z]) + var/mob/M = I + if (get_dist(M, src) < vision_range) + if (isturf(M.loc)) + . += M + else if (M.loc.type in hostile_machines) + . += M.loc diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index a4851bb432..020e105d9a 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -82,14 +82,18 @@ var/dextrous_hud_type = /datum/hud/dextrous var/datum/personal_crafting/handcrafting - var/AIStatus = AI_ON //The Status of our AI, can be set to AI_ON (On, usual processing), AI_IDLE (Will not process, but will return to AI_ON if an enemy comes near), AI_OFF (Off, Not processing ever) + var/AIStatus = AI_ON //The Status of our AI, can be set to AI_ON (On, usual processing), AI_IDLE (Will not process, but will return to AI_ON if an enemy comes near), AI_OFF (Off, Not processing ever), AI_Z_OFF (Temporarily off due to nonpresence of players) var/shouldwakeup = FALSE //convenience var for forcibly waking up an idling AI on next check. //domestication var/tame = 0 +<<<<<<< HEAD no_vore = TRUE +======= + var/my_z // I don't want to confuse this with client registered_z +>>>>>>> d03e4ef... Advanced mob laziness (#33574) /mob/living/simple_animal/Initialize() . = ..() @@ -544,7 +548,13 @@ /mob/living/simple_animal/proc/toggle_ai(togglestatus) if (AIStatus != togglestatus) - if (togglestatus > 0 && togglestatus < 4) + if (togglestatus > 0 && togglestatus < 5) + if (togglestatus == AI_Z_OFF || AIStatus == AI_Z_OFF) + var/turf/T = get_turf(src) + if (AIStatus == AI_Z_OFF) + SSidlenpcpool.idle_mobs_by_zlevel[T.z] -= src + else + SSidlenpcpool.idle_mobs_by_zlevel[T.z] += src GLOB.simple_animals[AIStatus] -= src GLOB.simple_animals[togglestatus] += src AIStatus = togglestatus @@ -559,4 +569,11 @@ . = ..() if(!ckey && !stat)//Not unconscious if(AIStatus == AI_IDLE) - toggle_ai(AI_ON) \ No newline at end of file + toggle_ai(AI_ON) + + +/mob/living/simple_animal/onTransitZ(old_z, new_z) + ..() + if (AIStatus == AI_Z_OFF) + SSidlenpcpool[old_z] -= src + toggle_ai(initial(AIStatus)) \ No newline at end of file From 2205500863c8023e82e14698518e2ec53b8d2d1c Mon Sep 17 00:00:00 2001 From: LetterJay Date: Mon, 18 Dec 2017 15:15:21 -0600 Subject: [PATCH 05/15] Update idlenpcpool.dm --- code/controllers/subsystem/idlenpcpool.dm | 5 ----- 1 file changed, 5 deletions(-) diff --git a/code/controllers/subsystem/idlenpcpool.dm b/code/controllers/subsystem/idlenpcpool.dm index 18c3b3cf30..a15237e5a7 100644 --- a/code/controllers/subsystem/idlenpcpool.dm +++ b/code/controllers/subsystem/idlenpcpool.dm @@ -1,12 +1,7 @@ SUBSYSTEM_DEF(idlenpcpool) name = "Idling NPC Pool" -<<<<<<< HEAD - flags = SS_POST_FIRE_TIMING|SS_NO_INIT|SS_BACKGROUND - priority = 10 -======= flags = SS_POST_FIRE_TIMING|SS_BACKGROUND priority = FIRE_PRIORITY_IDLE_NPC ->>>>>>> d03e4ef... Advanced mob laziness (#33574) wait = 60 runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME From 8fde63e016f8bc0d65288c7020b4fb64242758e9 Mon Sep 17 00:00:00 2001 From: LetterJay Date: Mon, 18 Dec 2017 15:15:34 -0600 Subject: [PATCH 06/15] Update simple_animal.dm --- code/modules/mob/living/simple_animal/simple_animal.dm | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 020e105d9a..04735178d3 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -88,12 +88,8 @@ //domestication var/tame = 0 - -<<<<<<< HEAD no_vore = TRUE -======= var/my_z // I don't want to confuse this with client registered_z ->>>>>>> d03e4ef... Advanced mob laziness (#33574) /mob/living/simple_animal/Initialize() . = ..() @@ -576,4 +572,4 @@ ..() if (AIStatus == AI_Z_OFF) SSidlenpcpool[old_z] -= src - toggle_ai(initial(AIStatus)) \ No newline at end of file + toggle_ai(initial(AIStatus)) From 0f2fd05e87ffd5efe39a7e9d2fd73ea419d0e500 Mon Sep 17 00:00:00 2001 From: duncathan salt Date: Tue, 19 Dec 2017 08:02:54 -0600 Subject: [PATCH 07/15] removes silly garbage defines --- code/__DEFINES/atmospherics.dm | 28 +------- code/game/objects/effects/spiders.dm | 2 +- code/modules/admin/verbs/atmosdebug.dm | 4 +- .../atmospherics/machinery/atmosmachinery.dm | 27 ++++--- .../components/binary_devices/circulator.dm | 4 +- .../components/binary_devices/dp_vent_pump.dm | 12 ++-- .../components/binary_devices/passive_gate.dm | 4 +- .../components/binary_devices/pump.dm | 4 +- .../components/binary_devices/valve.dm | 2 +- .../components/binary_devices/volume_pump.dm | 9 ++- .../machinery/components/components_base.dm | 70 ++++++++----------- .../components/trinary_devices/filter.dm | 10 +-- .../components/trinary_devices/mixer.dm | 20 +++--- .../components/unary_devices/cryo.dm | 20 +++--- .../unary_devices/heat_exchanger.dm | 8 +-- .../unary_devices/outlet_injector.dm | 11 ++- .../unary_devices/portables_connector.dm | 2 +- .../components/unary_devices/tank.dm | 4 +- .../components/unary_devices/thermomachine.dm | 14 ++-- .../components/unary_devices/vent_pump.dm | 8 +-- .../components/unary_devices/vent_scrubber.dm | 6 +- .../atmospherics/machinery/datum_pipeline.dm | 4 +- .../machinery/pipes/heat_exchange/manifold.dm | 12 ++-- .../machinery/pipes/layermanifold.dm | 12 ++-- .../atmospherics/machinery/pipes/manifold.dm | 6 +- .../machinery/pipes/manifold4w.dm | 6 +- .../atmospherics/machinery/pipes/pipes.dm | 17 +++-- .../machinery/portable/canister.dm | 8 +-- .../portable/portable_atmospherics.dm | 2 +- .../atmospherics/machinery/portable/pump.dm | 12 ++-- code/modules/events/alien_infestation.dm | 2 +- code/modules/events/spider_infestation.dm | 2 +- code/modules/events/vent_clog.dm | 2 +- code/modules/mob/living/ventcrawling.dm | 2 +- code/modules/power/generator.dm | 12 ++-- code/modules/shuttle/on_move.dm | 10 +-- code/modules/shuttle/shuttle_rotate.dm | 12 ++-- 37 files changed, 184 insertions(+), 206 deletions(-) diff --git a/code/__DEFINES/atmospherics.dm b/code/__DEFINES/atmospherics.dm index dacd09c995..e52dfd8a24 100644 --- a/code/__DEFINES/atmospherics.dm +++ b/code/__DEFINES/atmospherics.dm @@ -123,38 +123,12 @@ #define MAX_OUTPUT_PRESSURE 4500 // (kPa) What pressure pumps and powered equipment max out at. #define MAX_TRANSFER_RATE 200 // (L/s) Maximum speed powered equipment can work at. -//used for device_type vars; used by DEVICE_TYPE_LOOP +//used for device_type vars #define UNARY 1 #define BINARY 2 #define TRINARY 3 #define QUATERNARY 4 -//TODO: finally remove this bullshit -//this is the standard for loop used by all sorts of atmos machinery procs -#define DEVICE_TYPE_LOOP var/I in 1 to device_type - -//defines for the various machinery lists -//NODE_I, AIR_I, PARENT_I are used within DEVICE_TYPE_LOOP - -//nodes list - all atmos machinery -#define NODE1 nodes[1] -#define NODE2 nodes[2] -#define NODE3 nodes[3] -#define NODE4 nodes[4] -#define NODE_I nodes[I] - -//airs list - components only -#define AIR1 airs[1] -#define AIR2 airs[2] -#define AIR3 airs[3] -#define AIR_I airs[I] - -//parents list - components only -#define PARENT1 parents[1] -#define PARENT2 parents[2] -#define PARENT3 parents[3] -#define PARENT_I parents[I] - //TANKS #define TANK_MELT_TEMPERATURE 1000000 //temperature in kelvins at which a tank will start to melt #define TANK_LEAK_PRESSURE (30.*ONE_ATMOSPHERE) //Tank starts leaking diff --git a/code/game/objects/effects/spiders.dm b/code/game/objects/effects/spiders.dm index 4ecba7c982..83d24a26ee 100644 --- a/code/game/objects/effects/spiders.dm +++ b/code/game/objects/effects/spiders.dm @@ -133,7 +133,7 @@ else if(entry_vent) if(get_dist(src, entry_vent) <= 1) var/list/vents = list() - var/datum/pipeline/entry_vent_parent = entry_vent.PARENT1 + var/datum/pipeline/entry_vent_parent = entry_vent.parents[1] for(var/obj/machinery/atmospherics/components/unary/vent_pump/temp_vent in entry_vent_parent.other_atmosmch) vents.Add(temp_vent) if(!vents.len) diff --git a/code/modules/admin/verbs/atmosdebug.dm b/code/modules/admin/verbs/atmosdebug.dm index 05c839d3fd..8c564551ba 100644 --- a/code/modules/admin/verbs/atmosdebug.dm +++ b/code/modules/admin/verbs/atmosdebug.dm @@ -13,12 +13,12 @@ //Manifolds for (var/obj/machinery/atmospherics/pipe/manifold/pipe in GLOB.machines) - if (!pipe.NODE1 || !pipe.NODE2 || !pipe.NODE3) + if (!pipe.nodes[1] || !pipe.nodes[2] || !pipe.nodes[3]) to_chat(usr, "Unconnected [pipe.name] located at [pipe.x],[pipe.y],[pipe.z] ([get_area(pipe.loc)])") //Pipes for (var/obj/machinery/atmospherics/pipe/simple/pipe in GLOB.machines) - if (!pipe.NODE1 || !pipe.NODE2) + if (!pipe.nodes[1] || !pipe.nodes[2]) to_chat(usr, "Unconnected [pipe.name] located at [pipe.x],[pipe.y],[pipe.z] ([get_area(pipe.loc)])") /client/proc/powerdebug() diff --git a/code/modules/atmospherics/machinery/atmosmachinery.dm b/code/modules/atmospherics/machinery/atmosmachinery.dm index 6c335bf896..2a5d792a1b 100644 --- a/code/modules/atmospherics/machinery/atmosmachinery.dm +++ b/code/modules/atmospherics/machinery/atmosmachinery.dm @@ -60,8 +60,8 @@ Pipelines + Other Objects -> Pipe network SetInitDirections() /obj/machinery/atmospherics/Destroy() - for(DEVICE_TYPE_LOOP) - nullifyNode(I) + for(var/i in 1 to device_type) + nullifyNode(i) SSair.atmos_machinery -= src @@ -79,22 +79,22 @@ Pipelines + Other Objects -> Pipe network // Called to build a network from this node return -/obj/machinery/atmospherics/proc/nullifyNode(I) - if(NODE_I) - var/obj/machinery/atmospherics/N = NODE_I +/obj/machinery/atmospherics/proc/nullifyNode(i) + if(nodes[i]) + var/obj/machinery/atmospherics/N = nodes[i] N.disconnect(src) - NODE_I = null + nodes[i] = null /obj/machinery/atmospherics/proc/getNodeConnects() var/list/node_connects = list() node_connects.len = device_type - for(DEVICE_TYPE_LOOP) + for(var/i in 1 to device_type) for(var/D in GLOB.cardinals) if(D & GetInitDirections()) if(D in node_connects) continue - node_connects[I] = D + node_connects[i] = D break return node_connects @@ -109,10 +109,10 @@ Pipelines + Other Objects -> Pipe network if(!node_connects) //for pipes where order of nodes doesn't matter node_connects = getNodeConnects() - for(DEVICE_TYPE_LOOP) - for(var/obj/machinery/atmospherics/target in get_step(src,node_connects[I])) - if(can_be_node(target, I)) - NODE_I = target + for(var/i in 1 to device_type) + for(var/obj/machinery/atmospherics/target in get_step(src,node_connects[i])) + if(can_be_node(target, i)) + nodes[i] = target break update_icon() @@ -171,8 +171,7 @@ Pipelines + Other Objects -> Pipe network if(istype(reference, /obj/machinery/atmospherics/pipe)) var/obj/machinery/atmospherics/pipe/P = reference P.destroy_network() - var/I = nodes.Find(reference) - NODE_I = null + nodes[nodes.Find(reference)] = null update_icon() /obj/machinery/atmospherics/update_icon() diff --git a/code/modules/atmospherics/machinery/components/binary_devices/circulator.dm b/code/modules/atmospherics/machinery/components/binary_devices/circulator.dm index ef6dd85afa..63af8e8aa2 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/circulator.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/circulator.dm @@ -21,8 +21,8 @@ /obj/machinery/atmospherics/components/binary/circulator/proc/return_transfer_air() - var/datum/gas_mixture/air1 = AIR1 - var/datum/gas_mixture/air2 = AIR2 + var/datum/gas_mixture/air1 = airs[1] + var/datum/gas_mixture/air2 = airs[2] var/output_starting_pressure = air1.return_pressure() var/input_starting_pressure = air2.return_pressure() diff --git a/code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm index f8204947f1..db42819b87 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm @@ -49,8 +49,8 @@ Acts like a normal vent, but has an input AND output. /obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/New() ..() - var/datum/gas_mixture/air1 = AIR1 - var/datum/gas_mixture/air2 = AIR2 + var/datum/gas_mixture/air1 = airs[1] + var/datum/gas_mixture/air2 = airs[2] air1.volume = 1000 air2.volume = 1000 @@ -73,8 +73,8 @@ Acts like a normal vent, but has an input AND output. if(!on) return - var/datum/gas_mixture/air1 = AIR1 - var/datum/gas_mixture/air2 = AIR2 + var/datum/gas_mixture/air1 = airs[1] + var/datum/gas_mixture/air2 = airs[2] var/datum/gas_mixture/environment = loc.return_air() var/environment_pressure = environment.return_pressure() @@ -99,7 +99,7 @@ Acts like a normal vent, but has an input AND output. loc.assume_air(removed) air_update_turf() - var/datum/pipeline/parent1 = PARENT1 + var/datum/pipeline/parent1 = parents[1] parent1.update = 1 else //external -> output @@ -122,7 +122,7 @@ Acts like a normal vent, but has an input AND output. air2.merge(removed) air_update_turf() - var/datum/pipeline/parent2 = PARENT2 + var/datum/pipeline/parent2 = parents[2] parent2.update = 1 //Radio remote control diff --git a/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm b/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm index 86c5375d07..e5ae5c718e 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm @@ -41,8 +41,8 @@ Passive gate is similar to the regular pump except: if(!on) return - var/datum/gas_mixture/air1 = AIR1 - var/datum/gas_mixture/air2 = AIR2 + var/datum/gas_mixture/air1 = airs[1] + var/datum/gas_mixture/air2 = airs[2] var/output_starting_pressure = air2.return_pressure() var/input_starting_pressure = air1.return_pressure() diff --git a/code/modules/atmospherics/machinery/components/binary_devices/pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/pump.dm index 97bba0e534..32933f9275 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/pump.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/pump.dm @@ -50,8 +50,8 @@ Thus, the two variables affect pump operation are set in New(): if(!on || !is_operational()) return - var/datum/gas_mixture/air1 = AIR1 - var/datum/gas_mixture/air2 = AIR2 + var/datum/gas_mixture/air1 = airs[1] + var/datum/gas_mixture/air2 = airs[2] var/output_starting_pressure = air2.return_pressure() diff --git a/code/modules/atmospherics/machinery/components/binary_devices/valve.dm b/code/modules/atmospherics/machinery/components/binary_devices/valve.dm index e613012e82..1a9c76cb4d 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/valve.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/valve.dm @@ -31,7 +31,7 @@ It's like a regular ol' straight pipe, but you can turn it on and off. open = TRUE update_icon_nopipes() update_parents() - var/datum/pipeline/parent1 = PARENT1 + var/datum/pipeline/parent1 = parents[1] parent1.reconcile_air() investigate_log("was opened by [usr ? key_name(usr) : "a remote signal"]", INVESTIGATE_ATMOS) diff --git a/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm index b154c0d3e4..d7b8073c87 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm @@ -48,8 +48,8 @@ Thus, the two variables affect pump operation are set in New(): if(!on || !is_operational()) return - var/datum/gas_mixture/air1 = AIR1 - var/datum/gas_mixture/air2 = AIR2 + var/datum/gas_mixture/air1 = airs[1] + var/datum/gas_mixture/air2 = airs[2] // Pump mechanism just won't do anything if the pressure is too high/too low @@ -151,8 +151,13 @@ Thus, the two variables affect pump operation are set in New(): on = !on if("set_transfer_rate" in signal.data) +<<<<<<< HEAD var/datum/gas_mixture/air1 = AIR1 transfer_rate = Clamp(text2num(signal.data["set_transfer_rate"]),0,air1.volume) +======= + var/datum/gas_mixture/air1 = airs[1] + transfer_rate = CLAMP(text2num(signal.data["set_transfer_rate"]),0,air1.volume) +>>>>>>> 6a7dbaa... removes silly garbage defines (#33621) if(on != old_on) investigate_log("was turned [on ? "on" : "off"] by a remote signal", INVESTIGATE_ATMOS) diff --git a/code/modules/atmospherics/machinery/components/components_base.dm b/code/modules/atmospherics/machinery/components/components_base.dm index 5fb4611d92..e7f4d7844a 100644 --- a/code/modules/atmospherics/machinery/components/components_base.dm +++ b/code/modules/atmospherics/machinery/components/components_base.dm @@ -15,10 +15,10 @@ On top of that, now people can add component-speciic procs/vars if they want! airs = new(device_type) ..() - for(DEVICE_TYPE_LOOP) + for(var/i in 1 to device_type) var/datum/gas_mixture/A = new A.volume = 200 - AIR_I = A + airs[i] = A /* Iconnery */ @@ -42,9 +42,9 @@ Iconnery var/connected = 0 //Direction bitset - for(DEVICE_TYPE_LOOP) //adds intact pieces - if(NODE_I) - connected |= icon_addintact(NODE_I) + for(var/i in 1 to device_type) //adds intact pieces + if(nodes[i]) + connected |= icon_addintact(nodes[i]) icon_addbroken(connected) //adds broken pieces @@ -53,52 +53,45 @@ Iconnery Pipenet stuff; housekeeping */ -/obj/machinery/atmospherics/components/nullifyNode(I) +/obj/machinery/atmospherics/components/nullifyNode(i) ..() - if(NODE_I) - nullifyPipenet(PARENT_I) - qdel(AIR_I) - AIR_I = null + if(nodes[i]) + nullifyPipenet(parents[i]) + QDEL_NULL(airs[i]) /obj/machinery/atmospherics/components/on_construction() ..() update_parents() /obj/machinery/atmospherics/components/build_network() - for(DEVICE_TYPE_LOOP) - if(!PARENT_I) - PARENT_I = new /datum/pipeline() - var/datum/pipeline/P = PARENT_I + for(var/i in 1 to device_type) + if(!parents[i]) + parents[i] = new /datum/pipeline() + var/datum/pipeline/P = parents[i] P.build_pipeline(src) /obj/machinery/atmospherics/components/proc/nullifyPipenet(datum/pipeline/reference) - var/I = parents.Find(reference) - reference.other_airs -= AIR_I + var/i = parents.Find(reference) + reference.other_airs -= airs[i] reference.other_atmosmch -= src - PARENT_I = null + parents[i] = null /obj/machinery/atmospherics/components/returnPipenetAir(datum/pipeline/reference) - var/I = parents.Find(reference) - return AIR_I + return airs[parents.Find(reference)] /obj/machinery/atmospherics/components/pipeline_expansion(datum/pipeline/reference) if(reference) - var/I = parents.Find(reference) - return list(NODE_I) - else - return ..() + return list(nodes[parents.Find(reference)]) + return ..() /obj/machinery/atmospherics/components/setPipenet(datum/pipeline/reference, obj/machinery/atmospherics/A) - var/I = nodes.Find(A) - PARENT_I = reference + parents[nodes.Find(A)] = reference -/obj/machinery/atmospherics/components/returnPipenet(obj/machinery/atmospherics/A = NODE1) //returns PARENT1 if called without argument - var/I = nodes.Find(A) - return PARENT_I +/obj/machinery/atmospherics/components/returnPipenet(obj/machinery/atmospherics/A = nodes[1]) //returns parents[1] if called without argument + return parents[nodes.Find(A)] /obj/machinery/atmospherics/components/replacePipenet(datum/pipeline/Old, datum/pipeline/New) - var/I = parents.Find(Old) - PARENT_I = New + parents[parents.Find(Old)] = New /obj/machinery/atmospherics/components/unsafe_pressure_release(var/mob/user, var/pressures) ..() @@ -109,15 +102,15 @@ Pipenet stuff; housekeeping var/datum/gas_mixture/environment = T.return_air() var/lost = null var/times_lost = 0 - for(DEVICE_TYPE_LOOP) - var/datum/gas_mixture/air = AIR_I + for(var/i in 1 to device_type) + var/datum/gas_mixture/air = airs[i] lost += pressures*environment.volume/(air.temperature * R_IDEAL_GAS_EQUATION) times_lost++ var/shared_loss = lost/times_lost var/datum/gas_mixture/to_release - for(DEVICE_TYPE_LOOP) - var/datum/gas_mixture/air = AIR_I + for(var/i in 1 to device_type) + var/datum/gas_mixture/air = airs[i] if(!to_release) to_release = air.remove(shared_loss) continue @@ -136,8 +129,8 @@ Helpers */ /obj/machinery/atmospherics/components/proc/update_parents() - for(DEVICE_TYPE_LOOP) - var/datum/pipeline/parent = PARENT_I + for(var/i in 1 to device_type) + var/datum/pipeline/parent = parents[i] if(!parent) throw EXCEPTION("Component is missing a pipenet! Rebuilding...") build_network() @@ -145,8 +138,8 @@ Helpers /obj/machinery/atmospherics/components/returnPipenets() . = list() - for(DEVICE_TYPE_LOOP) - . += returnPipenet(NODE_I) + for(var/i in 1 to device_type) + . += returnPipenet(nodes[i]) /* UI Stuff @@ -157,4 +150,3 @@ UI Stuff return ..() to_chat(user, "Access denied.") return UI_CLOSE - diff --git a/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm b/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm index 4baeb3dd3e..0579ef2357 100644 --- a/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm +++ b/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm @@ -50,7 +50,7 @@ ..() /obj/machinery/atmospherics/components/trinary/filter/update_icon_nopipes() - if(on && NODE1 && NODE2 && NODE3 && is_operational()) + if(on && nodes[1] && nodes[2] && nodes[3] && is_operational()) icon_state = "filter_on[flipped?"_f":""]" return icon_state = "filter_off[flipped?"_f":""]" @@ -63,12 +63,12 @@ /obj/machinery/atmospherics/components/trinary/filter/process_atmos() ..() - if(!on || !(NODE1 && NODE2 && NODE3) || !is_operational()) + if(!on || !(nodes[1] && nodes[2] && nodes[3]) || !is_operational()) return - var/datum/gas_mixture/air1 = AIR1 - var/datum/gas_mixture/air2 = AIR2 - var/datum/gas_mixture/air3 = AIR3 + var/datum/gas_mixture/air1 = airs[1] + var/datum/gas_mixture/air2 = airs[2] + var/datum/gas_mixture/air3 = airs[3] var/output_starting_pressure = air3.return_pressure() diff --git a/code/modules/atmospherics/machinery/components/trinary_devices/mixer.dm b/code/modules/atmospherics/machinery/components/trinary_devices/mixer.dm index b706cd3cd9..bdaadd0ff6 100644 --- a/code/modules/atmospherics/machinery/components/trinary_devices/mixer.dm +++ b/code/modules/atmospherics/machinery/components/trinary_devices/mixer.dm @@ -33,7 +33,7 @@ return ..() /obj/machinery/atmospherics/components/trinary/mixer/update_icon_nopipes() - if(on && NODE1 && NODE2 && NODE3 && is_operational()) + if(on && nodes[1] && nodes[2] && nodes[3] && is_operational()) icon_state = "mixer_on[flipped?"_f":""]" return icon_state = "mixer_off[flipped?"_f":""]" @@ -46,18 +46,18 @@ /obj/machinery/atmospherics/components/trinary/mixer/New() ..() - var/datum/gas_mixture/air3 = AIR3 + var/datum/gas_mixture/air3 = airs[3] air3.volume = 300 - AIR3 = air3 + airs[3] = air3 /obj/machinery/atmospherics/components/trinary/mixer/process_atmos() ..() - if(!on || !(NODE1 && NODE2 && NODE3) && !is_operational()) + if(!on || !(nodes[1] && nodes[2] && nodes[3]) && !is_operational()) return - var/datum/gas_mixture/air1 = AIR1 - var/datum/gas_mixture/air2 = AIR2 - var/datum/gas_mixture/air3 = AIR3 + var/datum/gas_mixture/air1 = airs[1] + var/datum/gas_mixture/air2 = airs[2] + var/datum/gas_mixture/air3 = airs[3] var/output_starting_pressure = air3.return_pressure() @@ -103,14 +103,14 @@ air3.merge(removed2) if(transfer_moles1) - var/datum/pipeline/parent1 = PARENT1 + var/datum/pipeline/parent1 = parents[1] parent1.update = TRUE if(transfer_moles2) - var/datum/pipeline/parent2 = PARENT2 + var/datum/pipeline/parent2 = parents[2] parent2.update = TRUE - var/datum/pipeline/parent3 = PARENT3 + var/datum/pipeline/parent3 = parents[3] parent3.update = TRUE return diff --git a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm index a7123dd97b..74c2302ee9 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm @@ -174,7 +174,7 @@ open_machine() return - var/datum/gas_mixture/air1 = AIR1 + var/datum/gas_mixture/air1 = airs[1] if(air1.gases.len) if(mob_occupant.bodytemperature < T0C) // Sleepytime. Why? More cryo magic. @@ -196,9 +196,9 @@ if(!on) return - var/datum/gas_mixture/air1 = AIR1 + var/datum/gas_mixture/air1 = airs[1] - if(!NODE1 || !AIR1 || !air1.gases.len || air1.gases[/datum/gas/oxygen][MOLES] < 5) // Turn off if the machine won't work. + if(!nodes[1] || !airs[1] || !air1.gases.len || air1.gases[/datum/gas/oxygen][MOLES] < 5) // Turn off if the machine won't work. on = FALSE update_icon() return @@ -348,8 +348,12 @@ else data["occupant"]["temperaturestatus"] = "bad" +<<<<<<< HEAD var/datum/gas_mixture/air1 = AIR1 +======= + var/datum/gas_mixture/air1 = airs[1] +>>>>>>> 6a7dbaa... removes silly garbage defines (#33621) data["cellTemperature"] = round(air1.temperature, 1) data["isBeakerLoaded"] = beaker ? TRUE : FALSE @@ -401,7 +405,7 @@ return 0 // you can't see the pipe network when inside a cryo cell. /obj/machinery/atmospherics/components/unary/cryo_cell/return_temperature() - var/datum/gas_mixture/G = AIR1 + var/datum/gas_mixture/G = airs[1] if(G.total_moles() > 10) return G.temperature @@ -411,13 +415,13 @@ . = ..() if(.) SetInitDirections() - var/obj/machinery/atmospherics/node = NODE1 + var/obj/machinery/atmospherics/node = nodes[1] if(node) node.disconnect(src) - NODE1 = null - nullifyPipenet(PARENT1) + nodes[1] = null + nullifyPipenet(parents[1]) atmosinit() - node = NODE1 + node = nodes[1] if(node) node.atmosinit() node.addMember(src) diff --git a/code/modules/atmospherics/machinery/components/unary_devices/heat_exchanger.dm b/code/modules/atmospherics/machinery/components/unary_devices/heat_exchanger.dm index c8daf29ad3..bd81d5c876 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/heat_exchanger.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/heat_exchanger.dm @@ -15,9 +15,9 @@ pipe_state = "heunary" /obj/machinery/atmospherics/components/unary/heat_exchanger/update_icon() - if(NODE1) + if(nodes[1]) icon_state = "he_intact" - var/obj/machinery/atmospherics/node = NODE1 + var/obj/machinery/atmospherics/node = nodes[1] add_atom_colour(node.color, FIXED_COLOUR_PRIORITY) else icon_state = "he_exposed" @@ -42,8 +42,8 @@ update_cycle = SSair.times_fired partner.update_cycle = SSair.times_fired - var/datum/gas_mixture/air_contents = AIR1 - var/datum/gas_mixture/partner_air_contents = partner.AIR1 + var/datum/gas_mixture/air_contents = airs[1] + var/datum/gas_mixture/partner_air_contents = partner.airs[1] var/air_heat_capacity = air_contents.heat_capacity() var/other_air_heat_capacity = partner_air_contents.heat_capacity() diff --git a/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm b/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm index 37bfb5d952..e458e2a3fa 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm @@ -32,7 +32,7 @@ if(showpipe) add_overlay(getpipeimage(icon, "inje_cap", initialize_directions)) - if(!NODE1 || !on || !is_operational()) + if(!nodes[1] || !on || !is_operational()) icon_state = "inje_off" return @@ -53,7 +53,7 @@ if(!on || !is_operational()) return - var/datum/gas_mixture/air_contents = AIR1 + var/datum/gas_mixture/air_contents = airs[1] if(air_contents.temperature > 0) var/transfer_moles = (air_contents.return_pressure())*volume_rate/(air_contents.temperature * R_IDEAL_GAS_EQUATION) @@ -70,7 +70,7 @@ if(on || injecting || !is_operational()) return - var/datum/gas_mixture/air_contents = AIR1 + var/datum/gas_mixture/air_contents = airs[1] injecting = 1 @@ -130,8 +130,13 @@ if("set_volume_rate" in signal.data) var/number = text2num(signal.data["set_volume_rate"]) +<<<<<<< HEAD var/datum/gas_mixture/air_contents = AIR1 volume_rate = Clamp(number, 0, air_contents.volume) +======= + var/datum/gas_mixture/air_contents = airs[1] + volume_rate = CLAMP(number, 0, air_contents.volume) +>>>>>>> 6a7dbaa... removes silly garbage defines (#33621) if("status" in signal.data) spawn(2) diff --git a/code/modules/atmospherics/machinery/components/unary_devices/portables_connector.dm b/code/modules/atmospherics/machinery/components/unary_devices/portables_connector.dm index 051f3136ee..871aaeea13 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/portables_connector.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/portables_connector.dm @@ -13,7 +13,7 @@ /obj/machinery/atmospherics/components/unary/portables_connector/New() ..() - var/datum/gas_mixture/air_contents = AIR1 + var/datum/gas_mixture/air_contents = airs[1] air_contents.volume = 0 diff --git a/code/modules/atmospherics/machinery/components/unary_devices/tank.dm b/code/modules/atmospherics/machinery/components/unary_devices/tank.dm index ec1fcdfc52..cf93f94390 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/tank.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/tank.dm @@ -13,7 +13,7 @@ /obj/machinery/atmospherics/components/unary/tank/New() ..() - var/datum/gas_mixture/air_contents = AIR1 + var/datum/gas_mixture/air_contents = airs[1] air_contents.volume = volume air_contents.temperature = T20C if(gas_type) @@ -43,7 +43,7 @@ /obj/machinery/atmospherics/components/unary/tank/air/New() ..() - var/datum/gas_mixture/air_contents = AIR1 + var/datum/gas_mixture/air_contents = airs[1] air_contents.assert_gases(/datum/gas/oxygen, /datum/gas/nitrogen) air_contents.gases[/datum/gas/oxygen][MOLES] = AIR_CONTENTS * 0.2 air_contents.gases[/datum/gas/nitrogen][MOLES] = AIR_CONTENTS * 0.8 diff --git a/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm b/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm index fa336c7a34..23cf9bad1d 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm @@ -48,9 +48,9 @@ /obj/machinery/atmospherics/components/unary/thermomachine/process_atmos() ..() - if(!on || !NODE1) + if(!on || !nodes[1]) return - var/datum/gas_mixture/air_contents = AIR1 + var/datum/gas_mixture/air_contents = airs[1] var/air_heat_capacity = air_contents.heat_capacity() var/combined_heat_capacity = heat_capacity + air_heat_capacity @@ -88,14 +88,14 @@ if(!..()) return 0 SetInitDirections() - var/obj/machinery/atmospherics/node = NODE1 + var/obj/machinery/atmospherics/node = nodes[1] if(node) node.disconnect(src) - NODE1 = null - nullifyPipenet(PARENT1) + nodes[1] = null + nullifyPipenet(parents[1]) atmosinit() - node = NODE1 + node = nodes[1] if(node) node.atmosinit() node.addMember(src) @@ -123,7 +123,7 @@ data["target"] = target_temperature data["initial"] = initial(target_temperature) - var/datum/gas_mixture/air1 = AIR1 + var/datum/gas_mixture/air1 = airs[1] data["temperature"] = air1.temperature data["pressure"] = air1.return_pressure() return data diff --git a/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm b/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm index a05a13217d..de4199a52a 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm @@ -81,7 +81,7 @@ /obj/machinery/atmospherics/components/unary/vent_pump/high_volume/New() ..() - var/datum/gas_mixture/air_contents = AIR1 + var/datum/gas_mixture/air_contents = airs[1] air_contents.volume = 1000 /obj/machinery/atmospherics/components/unary/vent_pump/update_icon_nopipes() @@ -93,7 +93,7 @@ icon_state = "vent_welded" return - if(!NODE1 || !on || !is_operational()) + if(!nodes[1] || !on || !is_operational()) if(icon_state == "vent_welded") icon_state = "vent_off" return @@ -122,12 +122,12 @@ ..() if(!is_operational()) return - if(!NODE1) + if(!nodes[1]) on = FALSE if(!on || welded) return - var/datum/gas_mixture/air_contents = AIR1 + var/datum/gas_mixture/air_contents = airs[1] var/datum/gas_mixture/environment = loc.return_air() var/environment_pressure = environment.return_pressure() diff --git a/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm b/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm index b3ade6f0fb..8d1c28a928 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm @@ -77,7 +77,7 @@ icon_state = "scrub_welded" return - if(!NODE1 || !on || !is_operational()) + if(!nodes[1] || !on || !is_operational()) icon_state = "scrub_off" return @@ -142,7 +142,7 @@ ..() if(welded || !is_operational()) return FALSE - if(!NODE1 || !on) + if(!nodes[1] || !on) on = FALSE return FALSE scrub(loc) @@ -156,7 +156,7 @@ return FALSE var/datum/gas_mixture/environment = tile.return_air() - var/datum/gas_mixture/air_contents = AIR1 + var/datum/gas_mixture/air_contents = airs[1] var/list/env_gases = environment.gases if(air_contents.return_pressure() >= 50*ONE_ATMOSPHERE) diff --git a/code/modules/atmospherics/machinery/datum_pipeline.dm b/code/modules/atmospherics/machinery/datum_pipeline.dm index ad7fdb921a..9191916d10 100644 --- a/code/modules/atmospherics/machinery/datum_pipeline.dm +++ b/code/modules/atmospherics/machinery/datum_pipeline.dm @@ -216,8 +216,8 @@ GL += P.return_air() for(var/obj/machinery/atmospherics/components/binary/valve/V in P.other_atmosmch) if(V.open) - PL |= V.PARENT1 - PL |= V.PARENT2 + PL |= V.parents[1] + PL |= V.parents[2] for(var/obj/machinery/atmospherics/components/unary/portables_connector/C in P.other_atmosmch) if(C.connected_device) GL += C.portableConnectorReturnAir() diff --git a/code/modules/atmospherics/machinery/pipes/heat_exchange/manifold.dm b/code/modules/atmospherics/machinery/pipes/heat_exchange/manifold.dm index e4df82073b..bfabe4e955 100644 --- a/code/modules/atmospherics/machinery/pipes/heat_exchange/manifold.dm +++ b/code/modules/atmospherics/machinery/pipes/heat_exchange/manifold.dm @@ -32,9 +32,9 @@ cut_overlays() //Add non-broken pieces - for(DEVICE_TYPE_LOOP) - if(NODE_I) - add_overlay(getpipeimage('icons/obj/atmospherics/pipes/heat.dmi', "manifold_intact[invis]", get_dir(src, NODE_I))) + for(var/i in 1 to device_type) + if(nodes[i]) + add_overlay(getpipeimage('icons/obj/atmospherics/pipes/heat.dmi', "manifold_intact[invis]", get_dir(src, nodes[i]))) //4-way manifold /obj/machinery/atmospherics/pipe/heat_exchanging/manifold4w @@ -61,6 +61,6 @@ cut_overlays() //Add non-broken pieces - for(DEVICE_TYPE_LOOP) - if(NODE_I) - add_overlay(getpipeimage('icons/obj/atmospherics/pipes/heat.dmi', "manifold_intact[invis]", get_dir(src, NODE_I))) + for(var/i in 1 to device_type) + if(nodes[i]) + add_overlay(getpipeimage('icons/obj/atmospherics/pipes/heat.dmi', "manifold_intact[invis]", get_dir(src, nodes[i]))) diff --git a/code/modules/atmospherics/machinery/pipes/layermanifold.dm b/code/modules/atmospherics/machinery/pipes/layermanifold.dm index fee00baf50..de8b411fc6 100644 --- a/code/modules/atmospherics/machinery/pipes/layermanifold.dm +++ b/code/modules/atmospherics/machinery/pipes/layermanifold.dm @@ -107,14 +107,14 @@ P.destroy_network() while(reference in get_all_connected_nodes()) if(reference in nodes) - var/I = nodes.Find(reference) - NODE_I = null + var/i = nodes.Find(reference) + nodes[i] = null if(reference in front_nodes) - var/I = front_nodes.Find(reference) - front_nodes[I] = null + var/i = front_nodes.Find(reference) + front_nodes[i] = null if(reference in back_nodes) - var/I = back_nodes.Find(reference) - back_nodes[I] = null + var/i = back_nodes.Find(reference) + back_nodes[i] = null update_icon() /obj/machinery/atmospherics/pipe/layer_manifold/relaymove(mob/living/user, dir) diff --git a/code/modules/atmospherics/machinery/pipes/manifold.dm b/code/modules/atmospherics/machinery/pipes/manifold.dm index 8560addc3a..ff4a4ea1ff 100644 --- a/code/modules/atmospherics/machinery/pipes/manifold.dm +++ b/code/modules/atmospherics/machinery/pipes/manifold.dm @@ -35,9 +35,9 @@ cut_overlays() //Add non-broken pieces - for(DEVICE_TYPE_LOOP) - if(NODE_I) - add_overlay(getpipeimage('icons/obj/atmospherics/pipes/manifold.dmi', "manifold_full[invis]", get_dir(src, NODE_I))) + for(var/i in 1 to device_type) + if(nodes[i]) + add_overlay(getpipeimage('icons/obj/atmospherics/pipes/manifold.dmi', "manifold_full[invis]", get_dir(src, nodes[i]))) //Colored pipes, use these for mapping /obj/machinery/atmospherics/pipe/manifold/general diff --git a/code/modules/atmospherics/machinery/pipes/manifold4w.dm b/code/modules/atmospherics/machinery/pipes/manifold4w.dm index f368c6bb0f..f9692da4ab 100644 --- a/code/modules/atmospherics/machinery/pipes/manifold4w.dm +++ b/code/modules/atmospherics/machinery/pipes/manifold4w.dm @@ -26,9 +26,9 @@ cut_overlays() //Add non-broken pieces - for(DEVICE_TYPE_LOOP) - if(NODE_I) - add_overlay(getpipeimage('icons/obj/atmospherics/pipes/manifold.dmi', "manifold_full[invis]", get_dir(src, NODE_I))) + for(var/i in 1 to device_type) + if(nodes[i]) + add_overlay(getpipeimage('icons/obj/atmospherics/pipes/manifold.dmi', "manifold_full[invis]", get_dir(src, nodes[i]))) //Colored pipes, use these for mapping /obj/machinery/atmospherics/pipe/manifold4w/general diff --git a/code/modules/atmospherics/machinery/pipes/pipes.dm b/code/modules/atmospherics/machinery/pipes/pipes.dm index cc01e6c4bd..8f6b3976bf 100644 --- a/code/modules/atmospherics/machinery/pipes/pipes.dm +++ b/code/modules/atmospherics/machinery/pipes/pipes.dm @@ -18,8 +18,8 @@ volume = 35 * device_type ..() -/obj/machinery/atmospherics/pipe/nullifyNode(I) - var/obj/machinery/atmospherics/oldN = NODE_I +/obj/machinery/atmospherics/pipe/nullifyNode(i) + var/obj/machinery/atmospherics/oldN = nodes[i] ..() if(oldN) oldN.build_network() @@ -33,11 +33,11 @@ parent.build_pipeline(src) /obj/machinery/atmospherics/pipe/update_icon() //overridden by manifolds - if(NODE1&&NODE2) + if(nodes[1] && nodes[2]) icon_state = "intact[invisibility ? "-f" : "" ]" else - var/have_node1 = NODE1?1:0 - var/have_node2 = NODE2?1:0 + var/have_node1 = nodes[1] ? TRUE : FALSE + var/have_node2 = nodes[2] ? TRUE : FALSE icon_state = "exposed[have_node1][have_node2][invisibility ? "-f" : "" ]" /obj/machinery/atmospherics/pipe/atmosinit() @@ -91,9 +91,9 @@ QDEL_NULL(parent) /obj/machinery/atmospherics/pipe/proc/update_node_icon() - for(DEVICE_TYPE_LOOP) - if(NODE_I) - var/obj/machinery/atmospherics/N = NODE_I + for(var/i in 1 to device_type) + if(nodes[i]) + var/obj/machinery/atmospherics/N = nodes[i] N.update_icon() /obj/machinery/atmospherics/pipe/returnPipenets() @@ -109,4 +109,3 @@ pipe_color = paint_color update_node_icon() return TRUE - diff --git a/code/modules/atmospherics/machinery/portable/canister.dm b/code/modules/atmospherics/machinery/portable/canister.dm index 585b6e896a..21393fd321 100644 --- a/code/modules/atmospherics/machinery/portable/canister.dm +++ b/code/modules/atmospherics/machinery/portable/canister.dm @@ -324,13 +324,13 @@ valve_open = !valve_open timing = FALSE if(!valve_open) - pump.AIR1 = null - pump.AIR2 = null + pump.airs[1] = null + pump.airs[2] = null return var/turf/T = get_turf(src) - pump.AIR1 = air_contents - pump.AIR2 = holding ? holding.air_contents : T.return_air() + pump.airs[1] = air_contents + pump.airs[2] = holding ? holding.air_contents : T.return_air() pump.target_pressure = release_pressure pump.process_atmos() // Pump gas. diff --git a/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm b/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm index 590297820e..58846dc839 100644 --- a/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm +++ b/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm @@ -54,7 +54,7 @@ //Perform the connection connected_port = new_port connected_port.connected_device = src - var/datum/pipeline/connected_port_parent = connected_port.PARENT1 + var/datum/pipeline/connected_port_parent = connected_port.parents[1] connected_port_parent.reconcile_air() anchored = TRUE //Prevent movement diff --git a/code/modules/atmospherics/machinery/portable/pump.dm b/code/modules/atmospherics/machinery/portable/pump.dm index db153d60a4..59e74d3215 100644 --- a/code/modules/atmospherics/machinery/portable/pump.dm +++ b/code/modules/atmospherics/machinery/portable/pump.dm @@ -41,17 +41,17 @@ /obj/machinery/portable_atmospherics/pump/process_atmos() ..() if(!on) - pump.AIR1 = null - pump.AIR2 = null + pump.airs[1] = null + pump.airs[2] = null return var/turf/T = get_turf(src) if(direction == PUMP_OUT) // Hook up the internal pump. - pump.AIR1 = holding ? holding.air_contents : air_contents - pump.AIR2 = holding ? air_contents : T.return_air() + pump.airs[1] = holding ? holding.air_contents : air_contents + pump.airs[2] = holding ? air_contents : T.return_air() else - pump.AIR1 = holding ? air_contents : T.return_air() - pump.AIR2 = holding ? holding.air_contents : air_contents + pump.airs[1] = holding ? air_contents : T.return_air() + pump.airs[2] = holding ? holding.air_contents : air_contents pump.process_atmos() // Pump gas. if(!holding) diff --git a/code/modules/events/alien_infestation.dm b/code/modules/events/alien_infestation.dm index 1a8a174bff..b453e96198 100644 --- a/code/modules/events/alien_infestation.dm +++ b/code/modules/events/alien_infestation.dm @@ -41,7 +41,7 @@ if(QDELETED(temp_vent)) continue if((temp_vent.loc.z in GLOB.station_z_levels) && !temp_vent.welded) - var/datum/pipeline/temp_vent_parent = temp_vent.PARENT1 + var/datum/pipeline/temp_vent_parent = temp_vent.parents[1] //Stops Aliens getting stuck in small networks. //See: Security, Virology if(temp_vent_parent.other_atmosmch.len > 20) diff --git a/code/modules/events/spider_infestation.dm b/code/modules/events/spider_infestation.dm index d09aff976d..046208b5ac 100644 --- a/code/modules/events/spider_infestation.dm +++ b/code/modules/events/spider_infestation.dm @@ -23,7 +23,7 @@ var/list/vents = list() for(var/obj/machinery/atmospherics/components/unary/vent_pump/temp_vent in world) if((temp_vent.loc.z in GLOB.station_z_levels) && !temp_vent.welded) - var/datum/pipeline/temp_vent_parent = temp_vent.PARENT1 + var/datum/pipeline/temp_vent_parent = temp_vent.parents[1] if(temp_vent_parent.other_atmosmch.len > 20) vents += temp_vent diff --git a/code/modules/events/vent_clog.dm b/code/modules/events/vent_clog.dm index 4aec0f8fe1..65bafaf401 100644 --- a/code/modules/events/vent_clog.dm +++ b/code/modules/events/vent_clog.dm @@ -20,7 +20,7 @@ endWhen = rand(25, 100) for(var/obj/machinery/atmospherics/components/unary/vent_scrubber/temp_vent in GLOB.machines) if((temp_vent.loc.z in GLOB.station_z_levels) && !temp_vent.welded) - var/datum/pipeline/temp_vent_parent = temp_vent.PARENT1 + var/datum/pipeline/temp_vent_parent = temp_vent.parents[1] if(temp_vent_parent.other_atmosmch.len > 20) vents += temp_vent if(!vents.len) diff --git a/code/modules/mob/living/ventcrawling.dm b/code/modules/mob/living/ventcrawling.dm index 471e103c26..2d3ed3d669 100644 --- a/code/modules/mob/living/ventcrawling.dm +++ b/code/modules/mob/living/ventcrawling.dm @@ -45,7 +45,7 @@ GLOBAL_LIST_INIT(ventcrawl_machinery, typecacheof(list( if(vent_found) - var/datum/pipeline/vent_found_parent = vent_found.PARENT1 + var/datum/pipeline/vent_found_parent = vent_found.parents[1] if(vent_found_parent && (vent_found_parent.members.len || vent_found_parent.other_atmosmch)) visible_message("[src] begins climbing into the ventilation system..." ,"You begin climbing into the ventilation system...") diff --git a/code/modules/power/generator.dm b/code/modules/power/generator.dm index 6a8c6ec5ec..4681eabe20 100644 --- a/code/modules/power/generator.dm +++ b/code/modules/power/generator.dm @@ -99,11 +99,11 @@ // update icon overlays only if displayed level has changed if(hot_air) - var/datum/gas_mixture/hot_circ_air1 = hot_circ.AIR1 + var/datum/gas_mixture/hot_circ_air1 = hot_circ.airs[1] hot_circ_air1.merge(hot_air) if(cold_air) - var/datum/gas_mixture/cold_circ_air1 = cold_circ.AIR1 + var/datum/gas_mixture/cold_circ_air1 = cold_circ.airs[1] cold_circ_air1.merge(cold_air) update_icon() @@ -134,10 +134,10 @@ if(!powernet) t += "Unable to connect to the power network!" else if(cold_circ && hot_circ) - var/datum/gas_mixture/cold_circ_air1 = cold_circ.AIR1 - var/datum/gas_mixture/cold_circ_air2 = cold_circ.AIR2 - var/datum/gas_mixture/hot_circ_air1 = hot_circ.AIR1 - var/datum/gas_mixture/hot_circ_air2 = hot_circ.AIR2 + var/datum/gas_mixture/cold_circ_air1 = cold_circ.airs[1] + var/datum/gas_mixture/cold_circ_air2 = cold_circ.airs[2] + var/datum/gas_mixture/hot_circ_air1 = hot_circ.airs[1] + var/datum/gas_mixture/hot_circ_air2 = hot_circ.airs[2] t += "
" diff --git a/code/modules/shuttle/on_move.dm b/code/modules/shuttle/on_move.dm index c7a77f9457..332acb6816 100644 --- a/code/modules/shuttle/on_move.dm +++ b/code/modules/shuttle/on_move.dm @@ -209,9 +209,9 @@ All ShuttleMove procs go here /obj/machinery/atmospherics/afterShuttleMove(turf/oldT, list/movement_force, shuttle_dir, shuttle_preferred_direction, move_dir, rotation) . = ..() var/missing_nodes = FALSE - for(DEVICE_TYPE_LOOP) - if(src.nodes[I]) - var/obj/machinery/atmospherics/node = src.nodes[I] + for(var/i in 1 to device_type) + if(nodes[i]) + var/obj/machinery/atmospherics/node = nodes[i] var/connected = FALSE for(var/D in GLOB.cardinals) if(node in get_step(src, D)) @@ -219,9 +219,9 @@ All ShuttleMove procs go here break if(!connected) - nullifyNode(I) + nullifyNode(i) - if(!src.nodes[I]) + if(!nodes[i]) missing_nodes = TRUE if(missing_nodes) diff --git a/code/modules/shuttle/shuttle_rotate.dm b/code/modules/shuttle/shuttle_rotate.dm index 49c7396dba..caf849ca3f 100644 --- a/code/modules/shuttle/shuttle_rotate.dm +++ b/code/modules/shuttle/shuttle_rotate.dm @@ -84,17 +84,17 @@ If ever any of these procs are useful for non-shuttles, rename it to proc/rotate /obj/machinery/atmospherics/shuttleRotate(rotation, params) var/list/real_node_connect = getNodeConnects() - for(DEVICE_TYPE_LOOP) - real_node_connect[I] = angle2dir(rotation+dir2angle(real_node_connect[I])) + for(var/i in 1 to device_type) + real_node_connect[i] = angle2dir(rotation+dir2angle(real_node_connect[i])) . = ..() SetInitDirections() var/list/supposed_node_connect = getNodeConnects() var/list/nodes_copy = nodes.Copy() - for(DEVICE_TYPE_LOOP) - var/new_pos = supposed_node_connect.Find(real_node_connect[I]) - nodes[new_pos] = nodes_copy[I] + for(var/i in 1 to device_type) + var/new_pos = supposed_node_connect.Find(real_node_connect[i]) + nodes[new_pos] = nodes_copy[i] //prevents shuttles attempting to rotate this since it messes up sprites /obj/machinery/gateway/shuttleRotate(rotation, params) @@ -104,4 +104,4 @@ If ever any of these procs are useful for non-shuttles, rename it to proc/rotate //prevents shuttles attempting to rotate this since it messes up sprites /obj/machinery/gravity_generator/shuttleRotate(rotation, params) params = NONE - return ..() \ No newline at end of file + return ..() From 95714a0207f386007795412d5c90d4f3daac5d79 Mon Sep 17 00:00:00 2001 From: LetterJay Date: Sat, 30 Dec 2017 13:22:46 -0600 Subject: [PATCH 08/15] Update volume_pump.dm --- .../machinery/components/binary_devices/volume_pump.dm | 5 ----- 1 file changed, 5 deletions(-) diff --git a/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm index d7b8073c87..9e7a3403e6 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm @@ -151,13 +151,8 @@ Thus, the two variables affect pump operation are set in New(): on = !on if("set_transfer_rate" in signal.data) -<<<<<<< HEAD - var/datum/gas_mixture/air1 = AIR1 - transfer_rate = Clamp(text2num(signal.data["set_transfer_rate"]),0,air1.volume) -======= var/datum/gas_mixture/air1 = airs[1] transfer_rate = CLAMP(text2num(signal.data["set_transfer_rate"]),0,air1.volume) ->>>>>>> 6a7dbaa... removes silly garbage defines (#33621) if(on != old_on) investigate_log("was turned [on ? "on" : "off"] by a remote signal", INVESTIGATE_ATMOS) From 70fea88a391608784e8dcac65e18c0d42fd52571 Mon Sep 17 00:00:00 2001 From: LetterJay Date: Sat, 30 Dec 2017 13:22:54 -0600 Subject: [PATCH 09/15] Update cryo.dm --- .../atmospherics/machinery/components/unary_devices/cryo.dm | 5 ----- 1 file changed, 5 deletions(-) diff --git a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm index 74c2302ee9..87d6387b99 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm @@ -348,12 +348,7 @@ else data["occupant"]["temperaturestatus"] = "bad" -<<<<<<< HEAD - - var/datum/gas_mixture/air1 = AIR1 -======= var/datum/gas_mixture/air1 = airs[1] ->>>>>>> 6a7dbaa... removes silly garbage defines (#33621) data["cellTemperature"] = round(air1.temperature, 1) data["isBeakerLoaded"] = beaker ? TRUE : FALSE From 35574263b1163b379219dbed56d7ab3386f24e3c Mon Sep 17 00:00:00 2001 From: LetterJay Date: Sat, 30 Dec 2017 13:23:02 -0600 Subject: [PATCH 10/15] Update outlet_injector.dm --- .../machinery/components/unary_devices/outlet_injector.dm | 5 ----- 1 file changed, 5 deletions(-) diff --git a/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm b/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm index e458e2a3fa..eca11d613c 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm @@ -130,13 +130,8 @@ if("set_volume_rate" in signal.data) var/number = text2num(signal.data["set_volume_rate"]) -<<<<<<< HEAD - var/datum/gas_mixture/air_contents = AIR1 - volume_rate = Clamp(number, 0, air_contents.volume) -======= var/datum/gas_mixture/air_contents = airs[1] volume_rate = CLAMP(number, 0, air_contents.volume) ->>>>>>> 6a7dbaa... removes silly garbage defines (#33621) if("status" in signal.data) spawn(2) From 3ee25693794765b2a9266b1e5a39c8a8161a1459 Mon Sep 17 00:00:00 2001 From: LetterJay Date: Mon, 1 Jan 2018 14:07:17 -0600 Subject: [PATCH 11/15] Update borer_event.dm --- code/game/gamemodes/miniantags/borer/borer_event.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/miniantags/borer/borer_event.dm b/code/game/gamemodes/miniantags/borer/borer_event.dm index 567adddf53..e036c2a474 100644 --- a/code/game/gamemodes/miniantags/borer/borer_event.dm +++ b/code/game/gamemodes/miniantags/borer/borer_event.dm @@ -27,7 +27,7 @@ if(QDELETED(temp_vent)) continue if(temp_vent.loc.z == ZLEVEL_STATION_PRIMARY && !temp_vent.welded) - var/datum/pipeline/temp_vent_parent = temp_vent.PARENT1 + var/datum/pipeline/temp_vent_parent = temp_vent.parents[1] if(temp_vent_parent.other_atmosmch.len > 20) vents += temp_vent From 04f19ea53d56c74fd06511530393978e1dacdcfd Mon Sep 17 00:00:00 2001 From: deathride58 Date: Mon, 1 Jan 2018 20:18:43 -0500 Subject: [PATCH 12/15] ACTUALLY FIXES VORE --- .../code/modules/mob/living/carbon/human/human_defense.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_citadel/code/modules/mob/living/carbon/human/human_defense.dm b/modular_citadel/code/modules/mob/living/carbon/human/human_defense.dm index b61df944d1..1952b3a3b8 100644 --- a/modular_citadel/code/modules/mob/living/carbon/human/human_defense.dm +++ b/modular_citadel/code/modules/mob/living/carbon/human/human_defense.dm @@ -1,4 +1,4 @@ -/mob/living/human/grabbedby(mob/living/carbon/user, supress_message = 0) +/mob/living/carbon/human/grabbedby(mob/living/carbon/user, supress_message = 0) if(user == src && pulling && !pulling.anchored && grab_state >= GRAB_AGGRESSIVE && isliving(pulling)) vore_attack(user, pulling) else From 946bba6b98da35951e3ce5ce7e76dc7e154a5245 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Mon, 1 Jan 2018 21:34:29 -0600 Subject: [PATCH 13/15] Automatic changelog generation for PR #4628 [ci skip] --- html/changelogs/AutoChangeLog-pr-4628.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4628.yml diff --git a/html/changelogs/AutoChangeLog-pr-4628.yml b/html/changelogs/AutoChangeLog-pr-4628.yml new file mode 100644 index 0000000000..08311f545a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4628.yml @@ -0,0 +1,4 @@ +author: "deathride58" +delete-after: True +changes: + - bugfix: "Vore is now actually fixed. Fuck." From e395cded9d2d71a10a21e0272a44f9bf126632d4 Mon Sep 17 00:00:00 2001 From: LetterJay Date: Tue, 2 Jan 2018 04:34:21 -0600 Subject: [PATCH 14/15] cl --- html/changelogs/AutoChangeLog-pr-4628.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4628.yml diff --git a/html/changelogs/AutoChangeLog-pr-4628.yml b/html/changelogs/AutoChangeLog-pr-4628.yml new file mode 100644 index 0000000000..08311f545a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4628.yml @@ -0,0 +1,4 @@ +author: "deathride58" +delete-after: True +changes: + - bugfix: "Vore is now actually fixed. Fuck." From c5a70ff34c1899341195f2a6985d4b939b8f68e2 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Tue, 2 Jan 2018 04:52:40 -0600 Subject: [PATCH 15/15] Automatic changelog generation for PR #4430 [ci skip] --- html/changelogs/AutoChangeLog-pr-4430.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4430.yml diff --git a/html/changelogs/AutoChangeLog-pr-4430.yml b/html/changelogs/AutoChangeLog-pr-4430.yml new file mode 100644 index 0000000000..11fd6bb4a7 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4430.yml @@ -0,0 +1,4 @@ +author: "Naksu" +delete-after: True +changes: + - tweak: "Hostile mobs on z-levels without living players will now conserve their efforts and simply not run AI routines at all. Also, idling mob routines should be significantly cheaper on non-station Z-levels."