diff --git a/code/controllers/Processes/garbage.dm b/code/controllers/Processes/garbage.dm index 3743e74881..29b9755a5c 100644 --- a/code/controllers/Processes/garbage.dm +++ b/code/controllers/Processes/garbage.dm @@ -94,8 +94,9 @@ var/list/delayed_garbage = list() if(!istype(A)) //warning("qdel() passed object of type [A.type]. qdel() can only handle /datum types.") del(A) - garbage_collector.dels++ - garbage_collector.hard_dels++ + if(garbage_collector) + garbage_collector.dels++ + garbage_collector.hard_dels++ else if(isnull(A.gcDestroyed)) // Let our friend know they're about to get collected . = !A.Destroy() diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index c66859f5d1..176d170aae 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -30,6 +30,12 @@ power_change() // all machines set to current power level, also updates lighting icon InitializeLighting() +/area/proc/get_contents() + var/list/concat_contents = list() + for (var/area/RA in related) + concat_contents |= RA.contents + return concat_contents + /area/proc/get_cameras() var/list/cameras = list() for (var/area/RA in related) diff --git a/code/game/machinery/computer/cloning.dm b/code/game/machinery/computer/cloning.dm index 35ae52d588..393735caa4 100644 --- a/code/game/machinery/computer/cloning.dm +++ b/code/game/machinery/computer/cloning.dm @@ -14,20 +14,18 @@ var/obj/item/weapon/disk/data/diskette = null //Mostly so the geneticist can steal everything. var/loading = 0 // Nice loading text -/obj/machinery/computer/cloning/New() +/obj/machinery/computer/cloning/initialize() + ..() + updatemodules() + +/obj/machinery/computer/cloning/Destroy() + releasecloner() ..() - spawn(5) - updatemodules() - return - return /obj/machinery/computer/cloning/proc/updatemodules() src.scanner = findscanner() + releasecloner() findcloner() - var/num = 1 - for (var/obj/machinery/clonepod/pod in pods) - pod.connected = src - pod.name = "[initial(pod.name)] #[num++]" /obj/machinery/computer/cloning/proc/findscanner() var/obj/machinery/dna_scannernew/scannerf = null @@ -40,18 +38,26 @@ //Then look for a free one in the area if(!scannerf) - for(var/obj/machinery/dna_scannernew/S in get_area(src)) + var/area/A = get_area(src) + for(var/obj/machinery/dna_scannernew/S in A.get_contents()) return S return -/obj/machinery/computer/cloning/proc/findcloner() +/obj/machinery/computer/cloning/proc/releasecloner() + for(var/obj/machinery/clonepod/P in pods) + P.connected = null + P.name = initial(P.name) pods.Cut() - for(var/obj/machinery/clonepod/P in get_area(src)) + +/obj/machinery/computer/cloning/proc/findcloner() + var/num = 1 + var/area/A = get_area(src) + for(var/obj/machinery/clonepod/P in A.get_contents()) if(!P.connected) pods += P - - return + P.connected = src + P.name = "[initial(P.name)] #[num++]" /obj/machinery/computer/cloning/attackby(obj/item/W as obj, mob/user as mob) if (istype(W, /obj/item/weapon/disk/data)) //INSERT SOME DISKETTES diff --git a/html/changelogs/PsiOmegaDelta-AreaContentsConcat.yml b/html/changelogs/PsiOmegaDelta-AreaContentsConcat.yml new file mode 100644 index 0000000000..5f7e00bb2b --- /dev/null +++ b/html/changelogs/PsiOmegaDelta-AreaContentsConcat.yml @@ -0,0 +1,4 @@ +author: PsiOmegaDelta +delete-after: True +changes: + - bugfix: "The cloning computer can again successfully locate nearby cloning vats and DNA scanners at round start."