From b4cc371518a7a34801ea390bdac97b98611f1ef1 Mon Sep 17 00:00:00 2001 From: Lucy Date: Fri, 4 Mar 2022 22:48:08 -0500 Subject: [PATCH 1/3] Restricts the areas where bluespace lockers can spawn --- .../controllers/subsystem/bluespace_locker.dm | 25 +++++++++++++------ 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/yogstation/code/controllers/subsystem/bluespace_locker.dm b/yogstation/code/controllers/subsystem/bluespace_locker.dm index fc97e2545728..1cd4e4298ae7 100644 --- a/yogstation/code/controllers/subsystem/bluespace_locker.dm +++ b/yogstation/code/controllers/subsystem/bluespace_locker.dm @@ -14,16 +14,27 @@ SUBSYSTEM_DEF(bluespace_locker) if(external_locker) return // basically any normal-looking locker that isn't a secure one - var/list/valid_lockers = typecacheof(typesof(/obj/structure/closet) - typesof(/obj/structure/closet/body_bag)\ - - typesof(/obj/structure/closet/secure_closet) - typesof(/obj/structure/closet/cabinet)\ - - typesof(/obj/structure/closet/cardboard) - typesof(/obj/structure/closet/crate)\ - - typesof(/obj/structure/closet/supplypod) - typesof(/obj/structure/closet/stasis)\ - - typesof(/obj/structure/closet/abductor) - typesof(/obj/structure/closet/bluespace), only_root_path = TRUE) + var/list/valid_lockers = typecacheof(typesof(/obj/structure/closet) - typesof(/obj/structure/closet/body_bag) \ + - typesof(/obj/structure/closet/secure_closet) - typesof(/obj/structure/closet/cabinet) \ + - typesof(/obj/structure/closet/cardboard) - typesof(/obj/structure/closet/crate) \ + - typesof(/obj/structure/closet/supplypod) - typesof(/obj/structure/closet/stasis) \ + - typesof(/obj/structure/closet/abductor) - typesof(/obj/structure/closet/bluespace), only_root_path = TRUE) + var/list/valid_areas = typecacheof(list(/area/maintenance, /area/hallway, /area/crew_quarters/dorms, \ + /area/crew_quarters/toilet, /area/crew_quarters/locker, /area/crew_quarters/lounge, /area/crew_quarters/fitness, \ + /area/vacant_room)) var/list/lockers_list = list() for(var/obj/structure/closet/L in GLOB.lockers) - if(is_station_level(L.z) && is_type_in_typecache(L, valid_lockers)) - lockers_list += L + if (!is_station_level(L.z)) + continue + if (!is_type_in_typecache(L, valid_lockers)) + continue + var/area/A = get_area(L) + if (!is_type_in_typecache(A, valid_areas)) + continue + if (L.secure || L.welded || L.locked || L.wall_mounted) + continue + lockers_list += L if(!lockers_list.len) // Congratulations, you managed to destroy all the lockers somehow. // Now let's make a new one. From c5be6e676e9d9f4124d4867603582c46c3d7a804 Mon Sep 17 00:00:00 2001 From: Lucy Date: Fri, 4 Mar 2022 23:00:53 -0500 Subject: [PATCH 2/3] Whitelist -> blacklist --- yogstation/code/controllers/subsystem/bluespace_locker.dm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/yogstation/code/controllers/subsystem/bluespace_locker.dm b/yogstation/code/controllers/subsystem/bluespace_locker.dm index 1cd4e4298ae7..d43fbef7a423 100644 --- a/yogstation/code/controllers/subsystem/bluespace_locker.dm +++ b/yogstation/code/controllers/subsystem/bluespace_locker.dm @@ -19,9 +19,9 @@ SUBSYSTEM_DEF(bluespace_locker) - typesof(/obj/structure/closet/cardboard) - typesof(/obj/structure/closet/crate) \ - typesof(/obj/structure/closet/supplypod) - typesof(/obj/structure/closet/stasis) \ - typesof(/obj/structure/closet/abductor) - typesof(/obj/structure/closet/bluespace), only_root_path = TRUE) - var/list/valid_areas = typecacheof(list(/area/maintenance, /area/hallway, /area/crew_quarters/dorms, \ - /area/crew_quarters/toilet, /area/crew_quarters/locker, /area/crew_quarters/lounge, /area/crew_quarters/fitness, \ - /area/vacant_room)) + var/list/invalid_areas = typecacheof(list(/area/bridge, /area/crew_quarters/heads, /area/comms, /area/server, \ + /area/engine/engine_smes, /area/engine/gravity_generator, /area/teleporter, /area/gateway, /area/medical/virology, \ + /area/security, /area/quartermaster/qm, /area/storage/eva, /area/ai_monitored, /area/tcommsat)) var/list/lockers_list = list() for(var/obj/structure/closet/L in GLOB.lockers) @@ -30,7 +30,7 @@ SUBSYSTEM_DEF(bluespace_locker) if (!is_type_in_typecache(L, valid_lockers)) continue var/area/A = get_area(L) - if (!is_type_in_typecache(A, valid_areas)) + if (is_type_in_typecache(A, invalid_areas)) continue if (L.secure || L.welded || L.locked || L.wall_mounted) continue From 5c3e8ca81dc481be041c1d9ced96c09771d0ad9c Mon Sep 17 00:00:00 2001 From: Lucy Date: Mon, 14 Mar 2022 15:17:03 -0400 Subject: [PATCH 3/3] Remove restriction on locked lockers, just making them slightly less likely --- .../code/controllers/subsystem/bluespace_locker.dm | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/yogstation/code/controllers/subsystem/bluespace_locker.dm b/yogstation/code/controllers/subsystem/bluespace_locker.dm index d43fbef7a423..3265f71f30cf 100644 --- a/yogstation/code/controllers/subsystem/bluespace_locker.dm +++ b/yogstation/code/controllers/subsystem/bluespace_locker.dm @@ -32,9 +32,12 @@ SUBSYSTEM_DEF(bluespace_locker) var/area/A = get_area(L) if (is_type_in_typecache(A, invalid_areas)) continue - if (L.secure || L.welded || L.locked || L.wall_mounted) + if (L.secure || L.welded || L.wall_mounted) continue - lockers_list += L + var/score = 1 + if (L.locked) + score -= 0.25 + lockers_list[L] = score if(!lockers_list.len) // Congratulations, you managed to destroy all the lockers somehow. // Now let's make a new one. @@ -44,8 +47,8 @@ SUBSYSTEM_DEF(bluespace_locker) targetturf = get_turf(pick(GLOB.blobstart)) else CRASH("Unable to find a blobstart landmark") - lockers_list += new /obj/structure/closet(targetturf) - var/obj/structure/closet/L = pick(lockers_list) + lockers_list[new /obj/structure/closet(targetturf)] = 1 + var/obj/structure/closet/L = pickweight(lockers_list) var/obj/structure/closet/bluespace/external/E = new(L.loc) E.contents = L.contents