Files
GS13NG/code/__HELPERS/radiation.dm
shellspeed1 d9e15776ee Ports the RBMK reactor from both NSV using Hyper and Splurt code (WIP) (#15847)
* sprites and sounds

* The code for the reactor itself

* Update code/modules/power/reactor/rbmk.dm

Co-authored-by: Putnam3145 <putnam3145@gmail.com>

* Update code/modules/power/reactor/rbmk.dm

Co-authored-by: SandPoot <43283559+SandPoot@users.noreply.github.com>

* Map stuff

* Removes Clamps.

* Matrices separated, this was a mistake on my part.

* Update tgstation.dme

* removal as per putnam's review

* redfines highest available as 1007

* possible soundloop fix? probably not.

* temporary config thing to make engine load

* changes to map template from splurt

* Update code/modules/power/reactor/rbmk.dm

Co-authored-by: SandPoot <43283559+SandPoot@users.noreply.github.com>

* Update code/modules/power/reactor/rbmk.dm

Co-authored-by: SandPoot <43283559+SandPoot@users.noreply.github.com>

* actually somehow fixed the runtimes?

* old maps from hyper, not needed..

* Revert "old maps from hyper, not needed.."

This reverts commit 92ccd89952d360206926d8b57e82084994a6a0d6.

* take two on removal

* fixes power output

* Update code/modules/power/reactor/rbmk.dm

Co-authored-by: SandPoot <43283559+SandPoot@users.noreply.github.com>

* Update code/modules/power/reactor/rbmk.dm

Co-authored-by: SandPoot <43283559+SandPoot@users.noreply.github.com>

* deals with the double turf

* Revert "temporary config thing to make engine load"

This reverts commit 7f52188d5261cd60024ef36cf7c33df0748d0c79.

* was told to bring it back

* don't need to change these

* next time I'll just copy paste it instead of type it.

* a

* Flexi Seal crate so we can fix the reactor

* set power to 0 so it can be fixed

* nerfs power output

Co-authored-by: Putnam3145 <putnam3145@gmail.com>
Co-authored-by: SandPoot <43283559+SandPoot@users.noreply.github.com>
2022-09-17 13:33:51 -07:00

61 lines
2.0 KiB
Plaintext

// A special GetAllContents that doesn't search past things with rad insulation
// Components which return COMPONENT_BLOCK_RADIATION prevent further searching into that object's contents. The object itself will get returned still.
// The ignore list makes those objects never return at all
/proc/get_rad_contents(atom/location)
var/static/list/ignored_things = typecacheof(list(
/mob/dead,
/mob/camera,
/obj/effect,
/obj/docking_port,
/atom/movable/lighting_object,
/obj/item/projectile,
))
var/list/processing_list = list(location)
. = list()
var/i = 0
var/lim = 1
while(i < lim)
var/atom/thing = processing_list[++i]
if(ignored_things[thing.type])
continue
. += thing
if((thing.rad_flags & RAD_PROTECT_CONTENTS) || (SEND_SIGNAL(thing, COMSIG_ATOM_RAD_PROBE) & COMPONENT_BLOCK_RADIATION))
continue
processing_list += thing.contents
lim = processing_list.len
/proc/radiation_pulse(atom/source, intensity, range_modifier, log=FALSE, can_contaminate=TRUE)
if(!SSradiation.can_fire)
return
var/turf/open/pool/PL = get_turf(source)
if(istype(PL))
if(PL.filled == TRUE)
intensity *= 0.15
var/area/A = get_area(source)
var/atom/nested_loc = source.loc
var/spawn_waves = TRUE
while(nested_loc != A)
if(nested_loc.rad_flags & RAD_PROTECT_CONTENTS)
spawn_waves = FALSE
break
nested_loc = nested_loc.loc
if(spawn_waves)
for(var/dir in GLOB.cardinals)
new /datum/radiation_wave(source, dir, intensity, range_modifier, can_contaminate)
var/static/last_huge_pulse = 0
if(intensity > 3000 && world.time > last_huge_pulse + 200)
last_huge_pulse = world.time
log = TRUE
var/list/things = get_rad_contents(source) //copypasta because I don't want to put special code in waves to handle their origin
for(var/k in 1 to things.len)
var/atom/thing = things[k]
if(!thing)
continue
thing.rad_act(intensity)
if(log)
log_game("Radiation pulse with intensity: [intensity] and range modifier: [range_modifier] in [loc_name(PL)][spawn_waves ? "" : " (contained by [nested_loc.name])"]")
return TRUE