diff --git a/code/datums/weather/weather.dm b/code/datums/weather/weather.dm index 115a7764131..d6786918d21 100644 --- a/code/datums/weather/weather.dm +++ b/code/datums/weather/weather.dm @@ -273,6 +273,10 @@ continue if(!(weather_flags & WEATHER_INDOORS) && !affected_area.outdoors) continue + // BUBBER EDIT - ADDITION - START - DORMS WEATHER PROTECTION + if(engaged_roleplay_filter(affected_area)) + continue + // BUBBER EDIT - ADDITION - END for(var/z in impacted_z_levels) var/total_turfs = length(affected_area.turfs_by_zlevel) >= z && length(affected_area.turfs_by_zlevel[z]) diff --git a/modular_zubbers/code/datums/weather/weather_types/radiation_storm.dm b/modular_zubbers/code/datums/weather/weather_types/radiation_storm.dm index 3e89dc1e9d1..ae1c13876ff 100644 --- a/modular_zubbers/code/datums/weather/weather_types/radiation_storm.dm +++ b/modular_zubbers/code/datums/weather/weather_types/radiation_storm.dm @@ -21,7 +21,6 @@ if(!GLOB.emergency_access) maint_flipped = TRUE addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(make_maint_all_access), TRUE), 0.5 SECONDS) // timed to match the status display - dorms_check() /datum/weather/rad_storm/end() . = ..() diff --git a/modular_zubbers/code/modules/events/ev_roleplay_check.dm b/modular_zubbers/code/modules/events/ev_roleplay_check.dm index 151d19560c1..73cebcce907 100644 --- a/modular_zubbers/code/modules/events/ev_roleplay_check.dm +++ b/modular_zubbers/code/modules/events/ev_roleplay_check.dm @@ -5,13 +5,18 @@ GLOBAL_LIST_EMPTY(dorms_areas) . = ..() GLOB.dorms_areas[src] = TRUE -/datum/weather/rad_storm/proc/dorms_check(mob/player) - var/turf/player_turf = get_turf(player) +/datum/weather/proc/engaged_roleplay_filter(area/engaged_roleplay_area) + return FALSE - if(player_turf && length(GLOB.dorms_areas)) - var/area/player_area = player_turf.loc - if(GLOB.dorms_areas[player_area]) - protected_areas += player_area +/datum/weather/rad_storm/engaged_roleplay_filter(area/engaged_roleplay_area) + if(!is_type_in_list(engaged_roleplay_area, GLOB.dorms_areas)) + return FALSE + + for(var/mob/living/carbon/human/roleplayer in engaged_roleplay_area.contents) + if(engaged_role_play_check(player = roleplayer, station = FALSE, dorms = TRUE)) + return TRUE + + return FALSE /datum/weather/rad_storm/send_alert(alert_msg, alert_sfx, alert_sfx_vol = 100) for(var/area/impacted_area as anything in impacted_areas)