From 01bd22c34c0fd137cbf5f6f759e13f843c4c5406 Mon Sep 17 00:00:00 2001 From: TDSSS <32099540+TDSSS@users.noreply.github.com> Date: Fri, 4 Oct 2019 20:46:49 +0200 Subject: [PATCH] Welded vents bursting open (#12481) --- code/ATMOSPHERICS/atmospherics.dm | 10 +++++----- .../ATMOSPHERICS/components/unary_devices/vent_pump.dm | 9 ++++++++- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/code/ATMOSPHERICS/atmospherics.dm b/code/ATMOSPHERICS/atmospherics.dm index 7e791e6adda..1d535f5dd9c 100644 --- a/code/ATMOSPHERICS/atmospherics.dm +++ b/code/ATMOSPHERICS/atmospherics.dm @@ -197,20 +197,20 @@ GLOBAL_DATUM_INIT(pipe_icon_manager, /datum/pipe_icon_manager, new()) //Called when an atmospherics object is unwrenched while having a large pressure difference //with it's locs air contents. -/obj/machinery/atmospherics/proc/unsafe_pressure_release(var/mob/user,var/pressures) +/obj/machinery/atmospherics/proc/unsafe_pressure_release(mob/user, pressures) if(!user) return if(!pressures) var/datum/gas_mixture/int_air = return_air() var/datum/gas_mixture/env_air = loc.return_air() - pressures = int_air.return_pressure()-env_air.return_pressure() + pressures = int_air.return_pressure() - env_air.return_pressure() - var/fuck_you_dir = get_dir(src,user) - var/turf/general_direction = get_edge_target_turf(user,fuck_you_dir) + var/fuck_you_dir = get_dir(src, user) + var/turf/general_direction = get_edge_target_turf(user, fuck_you_dir) user.visible_message("[user] is sent flying by pressure!","The pressure sends you flying!") //Values based on 2*ONE_ATMOS (the unsafe pressure), resulting in 20 range and 4 speed - user.throw_at(general_direction,pressures/10,pressures/50) + user.throw_at(general_direction, pressures/10, pressures/50) /obj/machinery/atmospherics/deconstruct(disassembled = TRUE) if(can_deconstruct) diff --git a/code/ATMOSPHERICS/components/unary_devices/vent_pump.dm b/code/ATMOSPHERICS/components/unary_devices/vent_pump.dm index 736137e7b55..60e0448dfbd 100644 --- a/code/ATMOSPHERICS/components/unary_devices/vent_pump.dm +++ b/code/ATMOSPHERICS/components/unary_devices/vent_pump.dm @@ -38,6 +38,7 @@ var/pressure_checks_default = PRESSURE_CHECKS var/welded = 0 // Added for aliens -- TLE + var/weld_burst_pressure = 50 * ONE_ATMOSPHERE //the (internal) pressure at which welded covers will burst off var/frequency = ATMOS_VENTSCRUB var/datum/radio_frequency/radio_connection @@ -78,7 +79,7 @@ ..() air_contents.volume = 1000 -/obj/machinery/atmospherics/unary/vent_pump/update_icon(var/safety = 0) +/obj/machinery/atmospherics/unary/vent_pump/update_icon(safety = 0) ..() plane = FLOOR_PLANE @@ -137,6 +138,12 @@ return 0 if(welded) + if(air_contents.return_pressure() >= weld_burst_pressure && prob(5)) //the weld is on but the cover is welded shut, can it withstand the internal pressure? + visible_message("The welded cover of [src] bursts open!") + for(var/mob/M in range(1, src)) + unsafe_pressure_release(M, air_contents.return_pressure()) //let's send everyone flying + welded = FALSE + update_icon() return 0 var/datum/gas_mixture/environment = loc.return_air()