[MIRROR] SM, Tesla, and general engineering adjustments [MDB IGNORE] [IDB IGNORE] (#12603)

Co-authored-by: Cameron Lennox <killer65311@gmail.com>
This commit is contained in:
CHOMPStation2StaffMirrorBot
2026-03-26 23:08:54 -04:00
committed by GitHub
co-authored by Cameron Lennox
parent 743a16c74d
commit a62b9ed8fe
83 changed files with 992 additions and 309 deletions
+27 -16
View File
@@ -42,24 +42,13 @@ SUBSYSTEM_DEF(radiation)
continue
for(var/obj/item/geiger/geiger_counter in turf_to_irradiate)
var/current_insulation = 1
for(var/turf/turf_in_between in get_line(source, geiger_counter) - get_turf(source))
var/insulation = cached_rad_insulations[turf_in_between]
if(isnull(insulation))
insulation = turf_in_between.rad_insulation
for (var/atom/on_turf as anything in turf_in_between.contents)
insulation *= on_turf.rad_insulation
cached_rad_insulations[turf_in_between] = insulation
current_insulation *= insulation
if(current_insulation <= pulse_information.threshold)
continue
SEND_SIGNAL(geiger_counter, COMSIG_IN_RANGE_OF_IRRADIATION, pulse_information, current_insulation)
geiger_check(source, pulse_information, geiger_counter, geiger_counter)
for(var/mob/living/target in turf_to_irradiate)
var/list/contents_to_check = target.get_all_contents_type(/obj/item/geiger)
for(var/obj/item/geiger/geiger_counter in contents_to_check)
geiger_check(source, pulse_information, geiger_counter, target)
if(!can_irradiate_basic(target))
continue
@@ -184,3 +173,25 @@ SUBSYSTEM_DEF(radiation)
break
return (protected_limbs/limb_count)
///Proc for when geiger counter is checked. This is called twice: Once when the geiger counter is in range of a pulse itself and once when a geiger counter is on a mob that is in range of a pulse.
/datum/controller/subsystem/radiation/proc/geiger_check(atom/source, datum/radiation_pulse_information/pulse_information, obj/item/geiger/geiger_counter, atom/target)
if(!target)
target = geiger_counter
var/current_insulation = 1
var/list/cached_rad_insulations = list()
for(var/turf/turf_in_between in get_line(source, target) - get_turf(source))
var/insulation = cached_rad_insulations[turf_in_between]
if(isnull(insulation))
insulation = turf_in_between.rad_insulation
for (var/atom/on_turf as anything in turf_in_between.contents)
insulation *= on_turf.rad_insulation
cached_rad_insulations[turf_in_between] = insulation
current_insulation *= insulation
if(current_insulation <= pulse_information.threshold)
continue
SEND_SIGNAL(geiger_counter, COMSIG_IN_RANGE_OF_IRRADIATION, pulse_information, current_insulation)
@@ -9,24 +9,20 @@ SUBSYSTEM_DEF(reflector)
var/stat_tag = "R" //Used for logging
var/list/processing = list()
var/list/currentrun = list()
var/process_proc = /datum/proc/process
var/obj/structure/reflector/current_thing
/datum/controller/subsystem/reflector/Recover()
log_runtime("[name] subsystem Recover().")
if(SSreflector.current_thing)
log_runtime("current_thing was: (\ref[SSreflector.current_thing])[SSreflector.current_thing]([SSreflector.current_thing.type]) - currentrun: [SSreflector.currentrun.len] vs total: [SSreflector.processing.len]")
log_runtime("current_thing was: (\ref[SSreflector.current_thing])[SSreflector.current_thing]([SSreflector.current_thing.type]) - currentrun: [SSreflector.currentrun.len] vs total: [length(SSreflector.processing)]")
var/list/old_processing = SSreflector.processing.Copy()
for(var/datum/D in old_processing)
if(CHECK_BITFIELD(D.datum_flags, DF_ISPROCESSING))
processing |= D
//CHOMPEdit Begin
/datum/controller/subsystem/reflector/stat_entry(msg)
msg = "[stat_tag]:[processing.len]"
return ..()
// CHOMPEdit End
/datum/controller/subsystem/reflector/fire(resumed = 0)
if (!resumed)