Files
VOREStation/code/modules/events/radiation_storm.dm
T
Cameron Lennox cbc4151bfb Radiation Refactor (#19270)
* Part 1

* WIP

* The rest of these

* More stuff

* Whoops, did that wrong

* typo

* gweeen

* This all works

* SHOWER

* Rads

* awa

* rad

* Update life.dm

* edits

* Makes lvl 3 rads give you a warning.

You should already know by this point, but this makes it EXTRA clear you're getting fucked

* Update vorestation.dme

* aaa

* propagate

* gwah

* more fixes

* AAA

* Update radiation.dm

* Update radiation.dm

* mobs rads

* rads

* fix this

* Update _reagents.dm

* these

* Get rid of these

* rad

* Update config.txt

* fixed

* Update radiation_effects.dm
2026-03-22 12:29:09 -04:00

74 lines
2.5 KiB
Plaintext

/datum/event/radiation_storm
var/const/enterBelt = 30
var/const/radIntervall = 5 // Enough time between enter/leave belt for 10 hits, as per original implementation
var/const/leaveBelt = 80
var/const/revokeAccess = 165
startWhen = 2
announceWhen = 1
endWhen = revokeAccess
var/postStartTicks = 0
/datum/event/radiation_storm/announce()
GLOB.command_announcement.Announce("High levels of radiation detected near \the [station_name()]. Please evacuate into one of the shielded maintenance tunnels or dorms.", "Anomaly Alert", new_sound = 'sound/AI/radiation.ogg') //VOREStation Edit - Dorms ref
/datum/event/radiation_storm/start()
make_maint_all_access()
/datum/event/radiation_storm/tick()
if(activeFor == enterBelt)
GLOB.command_announcement.Announce("The [using_map.facility_type] has entered the radiation belt. Please remain in a sheltered area until we have passed the radiation belt.", "Anomaly Alert")
radiate()
if(activeFor >= enterBelt && activeFor <= leaveBelt)
postStartTicks++
if(postStartTicks == radIntervall)
postStartTicks = 0
radiate()
else if(activeFor == leaveBelt)
GLOB.command_announcement.Announce("The [using_map.facility_type] has passed the radiation belt. Please allow for up to one minute while radiation levels dissipate, and report to medbay if you experience any unusual symptoms. Maintenance will lose all access again shortly.", "Anomaly Alert")
/datum/event/radiation_storm/proc/radiate()
//This sucks. Just mutate.
/*
var/radiation_level = rand(15, 35)
for(var/z in using_map.station_levels)
var/turf/epicentre = locate(round(world.maxx / 2), round(world.maxy / 2), z)
if(epicentre)
radiation_pulse(
epicentre,
max_range = 5,
threshold = RAD_MEDIUM_INSULATION,
chance = URANIUM_IRRADIATION_CHANCE,
minimum_exposure_time = URANIUM_RADIATION_MINIMUM_EXPOSURE_TIME,
)
*/
for(var/mob/living/carbon/C in GLOB.living_mob_list)
if(!(C.z in using_map.station_levels) || C.isSynthetic() || isbelly(C.loc))
continue
var/area/A = get_area(C)
if(!A)
continue
if(A.flag_check(RAD_SHIELDED))
continue
if(ishuman(C))
var/mob/living/carbon/human/H = C
var/chance = 5.0
chance -= (chance / 100) * C.getarmor(null, "rad")
if(prob(chance))
if (prob(75))
randmutb(H) // Applies bad mutation
domutcheck(H,null,MUTCHK_FORCED)
else
randmutg(H) // Applies good mutation
domutcheck(H,null,MUTCHK_FORCED)
H.UpdateAppearance()
/datum/event/radiation_storm/end()
revoke_maint_all_access()
/datum/event/radiation_storm/syndicate/radiate()
return