From 5e8bb32248dbd6a25e720be87d6bc238db6ca8d4 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Thu, 27 Jul 2023 22:24:34 +0200 Subject: [PATCH] [MIRROR] [NO-GBP] Warns viro of radioactive resonance absence [MDB IGNORE] (#22724) * [NO-GBP] Warns viro of radioactive resonance absence (#77119) There was no in-game way for the viro to know the radioactive resonance sympton couldn't be rolled (during rad nebula) Now it sends a fax to the virologist, or if there's no fax it sends a supplypod straight at the virologist with a fax machine and then sends the fax :cl: qol: The virologist is warned when radioactive resonance cannot be obtained /:cl: * [NO-GBP] Warns viro of radioactive resonance absence --------- Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com> --- code/datums/station_traits/negative_traits.dm | 4 +++ code/game/machinery/nebula_shielding.dm | 10 +++++++- code/modules/paperwork/fax.dm | 25 +++++++++++++++++++ 3 files changed, 38 insertions(+), 1 deletion(-) diff --git a/code/datums/station_traits/negative_traits.dm b/code/datums/station_traits/negative_traits.dm index f2417eade98..facc29be590 100644 --- a/code/datums/station_traits/negative_traits.dm +++ b/code/datums/station_traits/negative_traits.dm @@ -572,6 +572,10 @@ //if engineering isnt valid, just send it to the bridge send_supply_pod_to_area(supply_pack_shielding.generate(null), /area/station/command/bridge, /obj/structure/closet/supplypod/centcompod) + // Let the viro know resistence is futile + send_fax_to_area(new /obj/item/paper/fluff/radiation_nebula_virologist(), /area/station/medical/virology, "NT Virology Department", \ + force = TRUE, force_pod_type = /obj/structure/closet/supplypod/centcompod) + //Disables radstorms, they don't really make sense since we already have the nebula causing storms var/datum/round_event_control/modified_event = locate(/datum/round_event_control/radiation_storm) in SSevents.control modified_event.weight = 0 diff --git a/code/game/machinery/nebula_shielding.dm b/code/game/machinery/nebula_shielding.dm index 091f97bb947..73192dac2b7 100644 --- a/code/game/machinery/nebula_shielding.dm +++ b/code/game/machinery/nebula_shielding.dm @@ -119,7 +119,7 @@ ..() -///Small explanation for engineering on how to set-up the radioactive nebula shielding +/// Small explanation for engineering on how to set-up the radioactive nebula shielding /obj/item/paper/fluff/radiation_nebula name = "radioactive nebula shielding" default_raw_text = {"EXTREME IMPORTANCE!!!!
@@ -127,3 +127,11 @@ Shielding units passively generate tritium, so make sure to properly ventilate/isolate the area before setting up a shielding unit! More circuit boards can be ordered through cargo. Consider setting up auxillary shielding units in-case of destruction, power loss or sabotage. "} + +/// Warns the viro that they can't use radioactive resonance +/obj/item/paper/fluff/radiation_nebula_virologist + name = "radioactive resonance" + default_raw_text = {"EXTREME IMPORTANCE!!!!
+ During routine bloodscreening on employees working in the nebula, we found no traces of the sympton called 'Radioactive Resonance'.
+ Something inside the nebula is interfering with it, be wary of a more shallow viral genepool. + "} diff --git a/code/modules/paperwork/fax.dm b/code/modules/paperwork/fax.dm index e5149ecde7e..055ac8bba4e 100644 --- a/code/modules/paperwork/fax.dm +++ b/code/modules/paperwork/fax.dm @@ -519,3 +519,28 @@ GLOBAL_VAR_INIT(nt_fax_department, pick("NT HR Department", "NT Legal Department return . +/// Sends a fax to a fax machine in an area! fax_area is a type, where all subtypes are also queried. If multiple machines, one is randomly picked +/// If force is TRUE, we send a droppod with a fax machine and fax the message to that fax machine +/proc/send_fax_to_area(obj/item/fax_item, area_type, sender, force = FALSE, force_pod_type) + var/list/fax_machines = SSmachines.get_machines_by_type_and_subtypes(/obj/machinery/fax) + var/list/valid_fax_machines = list() + + for(var/obj/machinery/fax as anything in fax_machines) //get valid fax machines + var/area/fax_area = get_area(fax) + if(istype(fax_area, area_type)) + valid_fax_machines += fax + + // Pick a fax machine and send the fax + if(valid_fax_machines.len) + var/obj/machinery/fax/target_fax = pick(valid_fax_machines) + target_fax.receive(fax_item, sender) + + else if(force) //no fax machines but we really gotte send? SEND A FAX MACHINE + var/obj/machinery/fax/new_fax_machine = new () + send_supply_pod_to_area(new_fax_machine, area_type, force_pod_type) + addtimer(CALLBACK(new_fax_machine, TYPE_PROC_REF(/obj/machinery/fax, receive), fax_item, sender), 10 SECONDS) + + else + return FALSE + return TRUE +