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()