From 690314b048200dc52c304b7c306df119f04a984f Mon Sep 17 00:00:00 2001 From: vuonojenmustaturska Date: Sun, 15 Jul 2018 16:04:25 +0300 Subject: [PATCH] let's decontaminate --- .../effects/effect_system/effects_smoke.dm | 40 +++++++++++-------- code/modules/events/vent_clog.dm | 16 ++++++++ 2 files changed, 40 insertions(+), 16 deletions(-) diff --git a/code/game/objects/effects/effect_system/effects_smoke.dm b/code/game/objects/effects/effect_system/effects_smoke.dm index 75aeaa447c3..daf288f74ce 100644 --- a/code/game/objects/effects/effect_system/effects_smoke.dm +++ b/code/game/objects/effects/effect_system/effects_smoke.dm @@ -156,43 +156,51 @@ /datum/effect_system/smoke_spread/freezing effect_type = /obj/effect/particle_effect/smoke/freezing var/blast = 0 + var/temperature = 2 + var/weldvents = TRUE + var/distcheck = TRUE /datum/effect_system/smoke_spread/freezing/proc/Chilled(atom/A) if(isopenturf(A)) var/turf/open/T = A if(T.air) var/datum/gas_mixture/G = T.air - if(get_dist(T, location) < 2) // Otherwise we'll get silliness like people using Nanofrost to kill people through walls with cold air - G.temperature = 2 + if(!distcheck || get_dist(T, location) < blast) // Otherwise we'll get silliness like people using Nanofrost to kill people through walls with cold air + G.temperature = temperature T.air_update_turf() for(var/obj/effect/hotspot/H in T) qdel(H) - var/list/G_gases = G.gases - if(G_gases[/datum/gas/plasma]) - G.assert_gas(/datum/gas/nitrogen) - G_gases[/datum/gas/nitrogen][MOLES] += (G_gases[/datum/gas/plasma][MOLES]) - G_gases[/datum/gas/plasma][MOLES] = 0 - G.garbage_collect() - for(var/obj/machinery/atmospherics/components/unary/U in T) - if(!isnull(U.welded) && !U.welded) //must be an unwelded vent pump or vent scrubber. - U.welded = TRUE - U.update_icon() - U.visible_message("[U] was frozen shut!") + var/list/G_gases = G.gases + if(G_gases[/datum/gas/plasma]) + G.assert_gas(/datum/gas/nitrogen) + G_gases[/datum/gas/nitrogen][MOLES] += (G_gases[/datum/gas/plasma][MOLES]) + G_gases[/datum/gas/plasma][MOLES] = 0 + G.garbage_collect() + if (weldvents) + for(var/obj/machinery/atmospherics/components/unary/U in T) + if(!isnull(U.welded) && !U.welded) //must be an unwelded vent pump or vent scrubber. + U.welded = TRUE + U.update_icon() + U.visible_message("[U] was frozen shut!") for(var/mob/living/L in T) L.ExtinguishMob() for(var/obj/item/Item in T) Item.extinguish() -/datum/effect_system/smoke_spread/freezing/set_up(radius = 5, loca, blasting = 0) +/datum/effect_system/smoke_spread/freezing/set_up(radius = 5, loca, blast_radius = 0) ..() - blast = blasting + blast = blast_radius /datum/effect_system/smoke_spread/freezing/start() if(blast) - for(var/turf/T in RANGE_TURFS(2, location)) + for(var/turf/T in RANGE_TURFS(blast, location)) Chilled(T) ..() +/datum/effect_system/smoke_spread/freezing/decon + temperature = 293.15 + distcheck = FALSE + weldvents = FALSE ///////////////////////////////////////////// diff --git a/code/modules/events/vent_clog.dm b/code/modules/events/vent_clog.dm index 84846c236a8..160304b1c33 100644 --- a/code/modules/events/vent_clog.dm +++ b/code/modules/events/vent_clog.dm @@ -79,6 +79,11 @@ typepath = /datum/round_event/vent_clog/beer max_occurrences = 0 +/datum/round_event_control/vent_clog/plasma_decon + name = "Plasma decontamination" + typepath = /datum/round_event/vent_clog/plasma_decon + max_occurrences = 0 + /datum/round_event/vent_clog/beer reagentsAmount = 100 @@ -96,3 +101,14 @@ foam.set_up(200, get_turf(vent), R) foam.start() CHECK_TICK + +/datum/round_event/vent_clog/plasma_decon/announce() + priority_announce("We are deploying an experimental plasma decontamination system. Please stand away from the vents and do not breathe the smoke that comes out.", "Central Command Update") + +/datum/round_event/vent_clog/plasma_decon/start() + for(var/obj/machinery/atmospherics/components/unary/vent in vents) + if(vent && vent.loc) + var/datum/effect_system/smoke_spread/freezing/decon/smoke = new + smoke.set_up(7, get_turf(vent), 7) + smoke.start() + CHECK_TICK