mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2026-08-23 05:07:51 +01:00
[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:
co-authored by
Cameron Lennox
parent
743a16c74d
commit
a62b9ed8fe
@@ -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)
|
||||
|
||||
+1
-5
@@ -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)
|
||||
Reference in New Issue
Block a user