Files
Bubberstation/modular_zubbers/code/controllers/subsystem/research.dm
tmyqlfpir c7e11d7161 Various Interdyne/Dauntless map and spawn ruin tweaks (#1526)
<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may
not be viewable. -->
<!-- You can view Contributing.MD for a detailed description of the pull
request process. -->

## About The Pull Request

This PR adds an additional check for the space edition of Dauntless to
the hack used to stop the bitrunner server from blurting out the cool
down across supply radio comms.

It also tweaks a few things with Dauntless/Interdyne, such as giving
them rad storm immunity and experi-scanners in the R&D labs.

Interdyne is now successfully placed on the lower Z levels thanks to the
`ZTRAIT_ICE_RUINS_UNDERGROUND` flag.

## Why It's Good For The Game

This is fixing an existing bug.

## Proof Of Testing

I have tested this on my server and confirm it works as described as the
PR.

## Changelog

🆑
fix: Dauntless space ruin bitrunner server no longer announces cool down
over NT supply comms
fix: Dauntless and Interdyne are now immune to rad storms
add: Added Syndie borg access cards to Interdyne
qol: Replaced the polarized windows in the Interdyne sauna area with
blast door shutters
add: Added experi-scanners to Interdyne/Dauntless R&D
fix: Interdyne never spawns on top Z level
qol: Interdyne dorm rooms now have crowbars in closets
qol: Interdyne deck officer does not leave empty sleeper on ghost role
spawn
/🆑
2024-06-03 12:37:53 +02:00

26 lines
1.4 KiB
Plaintext

/**
* Only expose Syndicate R&D servers to machines placed inside of Syndicate areas (fixes oversight of NT station machines linking to Syndie R&D servers for moon based stations)
* Returns filtered servers as a list
*/
/datum/controller/subsystem/research/find_valid_servers(turf/location, datum/techweb/checking_web)
var/list/valid_servers = ..()
if(!valid_servers || length(valid_servers) < 1)
return valid_servers
var/area/location_area = get_turf(location)
var/static/list/syndie_typecache = typecacheof(list(
/area/ruin/space/has_grav/skyrat/interdynefob, // DS-2
/area/ruin/syndicate_lava_base, // Interdyne (ice moon)
/area/ruin/space/has_grav/bubbers/dauntless, // SSV Dauntless (lavalands)
/area/ruin/space/has_grav/bubbers/dauntless_space, // SSV Dauntless (space)
))
var/is_syndie_machine = is_type_in_typecache(location_area.loc, syndie_typecache) // If the machine is located within a Syndie tagged area
var/list/filtered_servers = list()
for (var/obj/machinery/rnd/server/server as anything in valid_servers) // Filter Syndie machines for Syndie R&D, and non-Syndie machines to non-Syndie R&D
var/area/server_area = get_area(server)
var/is_syndie_server = is_type_in_typecache(server_area, syndie_typecache) // If the server is located within a Syndie tagged area
if(is_syndie_machine == is_syndie_server) // If both machines are on Syndie turf, or both are not on Syndie turf
filtered_servers += server
return filtered_servers