mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-08-23 03:57:48 +01:00
Various anomaly fixes (#19017)
* Fixes * Fimx.. * Weather stuffs * Additional restricted areas * fix :)
This commit is contained in:
@@ -33,11 +33,10 @@
|
||||
|
||||
if(anomaly_core)
|
||||
anomaly_core = new anomaly_core(src)
|
||||
anomaly_core.set_frequency(sanitize_frequency(rand(PUBLIC_LOW_FREQ, PUBLIC_HIGH_FREQ)))
|
||||
anomaly_core.code = rand(1, 100)
|
||||
anomaly_core.anomaly_type = type
|
||||
|
||||
anomaly_core.set_frequency(sanitize_frequency(get_rand_frequency()))
|
||||
|
||||
if(new_lifespan)
|
||||
lifespan = new_lifespan
|
||||
death_time = world.time + lifespan
|
||||
@@ -120,4 +119,4 @@
|
||||
if(DIMENSIONAL_ANOMALY)
|
||||
new /obj/effect/anomaly/dimensional(local_turf, null, drops_core)
|
||||
if(WEATHER_ANOMALY)
|
||||
new /obj/effect/anomaly/dimensional(local_turf, null, drops_core)
|
||||
new /obj/effect/anomaly/weather(local_turf, null, drops_core)
|
||||
|
||||
@@ -137,14 +137,14 @@
|
||||
if(istype(new_object, /obj/machinery/door/airlock))
|
||||
var/obj/machinery/door/airlock/airlock = object
|
||||
var/obj/machinery/door/airlock/new_airlock = new_object
|
||||
new_airlock.req_access = airlock.req_one_access?.Copy()
|
||||
new_airlock.req_one_access = airlock.req_one_access?.Copy()
|
||||
new_airlock.locked = airlock.locked
|
||||
if(istype(object, /obj/machinery/door/airlock/multi_tile))
|
||||
for(var/turf/location in object.locs)
|
||||
if(location == object.loc)
|
||||
continue
|
||||
var/obj/machinery/door/airlock/long_airlock = new replace_path(location)
|
||||
long_airlock.req_access = airlock.req_one_access?.Copy()
|
||||
long_airlock.req_one_access = airlock.req_one_access?.Copy()
|
||||
long_airlock.locked = airlock.locked
|
||||
long_airlock.name = airlock.name
|
||||
new_object.name = object.name
|
||||
@@ -253,7 +253,7 @@
|
||||
/obj/machinery/door/airlock = list(/obj/machinery/door/airlock/glass = 1),
|
||||
/obj/structure/table = list(/obj/structure/table/glass = 1)
|
||||
)
|
||||
replace_walls = /obj/structure/window/basic/full
|
||||
replace_walls = /turf/simulated/wall/glass
|
||||
|
||||
/datum/dimension_theme/snow
|
||||
name = "Snow"
|
||||
|
||||
@@ -89,7 +89,7 @@
|
||||
selected_weather.loop_sounds.start()
|
||||
|
||||
for(var/turf/area_turf in affected_turfs)
|
||||
apply_to_turf(area_turf)
|
||||
selected_weather.apply_to_turf(area_turf)
|
||||
|
||||
/obj/effect/anomaly/weather/proc/clear_weather()
|
||||
if(!is_raining)
|
||||
@@ -100,22 +100,13 @@
|
||||
|
||||
for(var/area in affected_areas)
|
||||
for(var/turf/area_turf in area)
|
||||
remove_from_turf(area_turf)
|
||||
selected_weather.remove_from_turf(area_turf)
|
||||
for(var/mob/mob in area)
|
||||
selected_weather.hear_sounds(mob, FALSE)
|
||||
|
||||
/obj/effect/anomaly/weather/proc/apply_to_turf(turf/T)
|
||||
if(selected_weather.visuals in T.vis_contents)
|
||||
WARNING("Was asked to add weather to [T.x], [T.y], [T.z] despite already having us in it's vis contents")
|
||||
return
|
||||
T.vis_contents += selected_weather.visuals
|
||||
|
||||
/obj/effect/anomaly/weather/proc/remove_from_turf(turf/T)
|
||||
if(!(selected_weather.visuals in T.vis_contents))
|
||||
WARNING("Was asked to remove weather from [T.x], [T.y], [T.z] despite it not having us in it's vis contents")
|
||||
return
|
||||
T.vis_contents -= selected_weather.visuals
|
||||
|
||||
/obj/effect/anomaly/weather/Destroy()
|
||||
clear_weather()
|
||||
. = ..()
|
||||
|
||||
/obj/effect/anomaly/weather/proc/update_reagent(reagent)
|
||||
selected_weather.update_reagent(reagent)
|
||||
|
||||
@@ -32,6 +32,30 @@
|
||||
if(weather_colour)
|
||||
visuals.color = weather_colour
|
||||
|
||||
/datum/anomalous_weather/proc/update_reagent(reagent)
|
||||
if(!reagent)
|
||||
return FALSE
|
||||
|
||||
if(!reagent_holder)
|
||||
reagent_holder = new(10000, null)
|
||||
|
||||
reagent_id = reagent
|
||||
reagent_holder.clear_reagents()
|
||||
reagent_holder.add_reagent(reagent_id, 10000)
|
||||
visuals.color = reagent_holder.get_color()
|
||||
|
||||
/datum/anomalous_weather/proc/apply_to_turf(turf/T)
|
||||
if(visuals in T.vis_contents)
|
||||
WARNING("Was asked to add weather to [T.x], [T.y], [T.z] despite already having us in it's vis contents")
|
||||
return
|
||||
T.vis_contents += visuals
|
||||
|
||||
/datum/anomalous_weather/proc/remove_from_turf(turf/T)
|
||||
if(!(visuals in T.vis_contents))
|
||||
WARNING("Was asked to remove weather from [T.x], [T.y], [T.z] despite it not having us in it's vis contents")
|
||||
return
|
||||
T.vis_contents -= visuals
|
||||
|
||||
/datum/anomalous_weather/proc/affect_turf(turf/to_affect)
|
||||
if(iswall(to_affect))
|
||||
return
|
||||
|
||||
@@ -46,12 +46,14 @@
|
||||
/area/maintenance,
|
||||
/area/holodeck,
|
||||
/area/ai,
|
||||
/area/ai_core_foyer,
|
||||
/area/ai_upload_foyer,
|
||||
/area/ai_server_room,
|
||||
/area/tcommsat
|
||||
)
|
||||
|
||||
allowed_areas = get_station_areas(safe_area_types)
|
||||
|
||||
for(var/area/check_area in allowed_areas)
|
||||
if((check_area.z in using_map.station_levels) || !check_area.flag_check(AREA_FORBID_EVENTS))
|
||||
continue
|
||||
allowed_areas.Remove(check_area)
|
||||
if(!(check_area.z in using_map.station_levels) || check_area.flag_check(AREA_FORBID_EVENTS))
|
||||
allowed_areas.Remove(check_area)
|
||||
|
||||
Reference in New Issue
Block a user