From b759ced58bbd8376318131c513ee04d336736b4b Mon Sep 17 00:00:00 2001
From: DGamerL <108773801+DGamerL@users.noreply.github.com>
Date: Fri, 23 Jun 2023 22:00:36 +0200
Subject: [PATCH] Plasmafire hotfix (#21440)
* I am in severe pain
* airlock changes
* whoops walls were too low
* blocking heat spread
* removes tweaks
---
code/game/machinery/doors/airlock.dm | 4 +++-
code/game/machinery/doors/airlock_types.dm | 2 --
code/game/machinery/doors/door.dm | 6 ++++++
code/game/machinery/doors/firedoor.dm | 2 +-
code/game/objects/structures/door_assembly.dm | 18 ++++++++++--------
code/game/turfs/simulated/walls.dm | 2 +-
code/game/turfs/simulated/walls_reinforced.dm | 2 +-
.../atmospherics/environmental/LINDA_fire.dm | 6 ------
8 files changed, 22 insertions(+), 20 deletions(-)
diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm
index e7df039a575..d8ca792f6cc 100644
--- a/code/game/machinery/doors/airlock.dm
+++ b/code/game/machinery/doors/airlock.dm
@@ -1485,7 +1485,7 @@ GLOBAL_LIST_EMPTY(airlock_emissive_underlays)
else
DA = new /obj/structure/door_assembly(loc)
//If you come across a null assemblytype, it will produce the default assembly instead of disintegrating.
- DA.heat_proof_finished = heat_proof //tracks whether there's rglass in
+ DA.reinforced_glass = src.reinforced_glass //tracks whether there's rglass in
DA.anchored = TRUE
DA.glass = src.glass
DA.polarized_glass = polarized_glass
@@ -1660,6 +1660,8 @@ GLOBAL_LIST_EMPTY(airlock_emissive_underlays)
/obj/machinery/door/airlock/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
..()
+ if(heat_proof)
+ return
if(exposed_temperature > (T0C + heat_resistance))
take_damage(round(exposed_volume / 100), BURN, 0, 0)
diff --git a/code/game/machinery/doors/airlock_types.dm b/code/game/machinery/doors/airlock_types.dm
index 40292468094..3e01dc77bc8 100644
--- a/code/game/machinery/doors/airlock_types.dm
+++ b/code/game/machinery/doors/airlock_types.dm
@@ -197,8 +197,6 @@
DA = new /obj/structure/door_assembly(loc)
if(glass)
DA.glass = TRUE
- if(heat_proof)
- DA.heat_proof_finished = TRUE
DA.update_icon()
DA.update_name()
qdel(src)
diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm
index 061d37670c0..fe281816f5b 100644
--- a/code/game/machinery/doors/door.dm
+++ b/code/game/machinery/doors/door.dm
@@ -22,6 +22,7 @@
// Whether the door is bolted or not.
var/locked = FALSE
var/glass = FALSE
+ var/reinforced_glass = FALSE
var/welded = FALSE
var/normalspeed = TRUE
var/auto_close_time = 150
@@ -458,6 +459,11 @@
if(!glass && GLOB.cameranet)
GLOB.cameranet.updateVisibility(src, 0)
+/obj/machinery/door/BlockSuperconductivity() // Only heatproof airlocks block heat, currently only varedited doors have this
+ if(heat_proof)
+ return 1
+ return 0
+
/obj/machinery/door/proc/check_unres() //unrestricted sides. This overlay indicates which directions the player can access even without an ID
if(hasPower() && unres_sides)
. = list()
diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm
index 04365f52de7..303523f8f58 100644
--- a/code/game/machinery/doors/firedoor.dm
+++ b/code/game/machinery/doors/firedoor.dm
@@ -13,7 +13,7 @@
density = FALSE
max_integrity = 300
resistance_flags = FIRE_PROOF
- heat_proof = TRUE
+ heat_proof = FALSE
glass = TRUE
explosion_block = 1
safe = FALSE
diff --git a/code/game/objects/structures/door_assembly.dm b/code/game/objects/structures/door_assembly.dm
index 26e8ed7a132..54b778a5a61 100644
--- a/code/game/objects/structures/door_assembly.dm
+++ b/code/game/objects/structures/door_assembly.dm
@@ -19,7 +19,7 @@
var/glass = FALSE // FALSE = glass can be installed. TRUE = glass is already installed.
var/polarized_glass = FALSE
var/created_name
- var/heat_proof_finished = FALSE //whether to heat-proof the finished airlock
+ var/reinforced_glass = FALSE // FALSE = rglass can be installed. TRUE = rglass is already installed.
var/noglass = FALSE //airlocks with no glass version, also cannot be modified with sheets
var/material_type = /obj/item/stack/sheet/metal
var/material_amt = 4
@@ -105,7 +105,7 @@
return
if(S.type == /obj/item/stack/sheet/rglass)
to_chat(user, "You install reinforced glass windows into the airlock assembly.")
- heat_proof_finished = TRUE //reinforced glass makes the airlock heat-proof
+ reinforced_glass = TRUE
else
to_chat(user, "You install regular glass windows into the airlock assembly.")
S.use(1)
@@ -155,12 +155,14 @@
if(glass)
door = new glass_type(loc)
door.polarized_glass = polarized_glass
+ if(reinforced_glass)
+ door = new glass_type(loc)
+ door.polarized_glass = polarized_glass
else
door = new airlock_type(loc)
door.setDir(dir)
door.electronics = electronics
door.unres_sides = electronics.unres_access_from
- door.heat_proof = heat_proof_finished
if(electronics.one_access)
door.req_access = null
door.req_one_access = electronics.selected_accesses
@@ -215,9 +217,9 @@
if(!I.use_tool(src, user, 40, volume = I.tool_volume))
return
to_chat(user, "You weld the glass panel out.")
- if(heat_proof_finished)
+ if(reinforced_glass)
new /obj/item/stack/sheet/rglass(get_turf(src))
- heat_proof_finished = FALSE
+ reinforced_glass = FALSE
else
new /obj/item/stack/sheet/glass(get_turf(src))
glass = FALSE
@@ -272,11 +274,11 @@
name = "wired "
if(AIRLOCK_ASSEMBLY_NEEDS_SCREWDRIVER)
name = "near finished "
- name += "[heat_proof_finished ? "heat-proofed " : ""][glass ? "window " : ""][base_name] assembly"
+ name += "[reinforced_glass ? "window " : ""][glass ? "window " : ""][base_name] assembly"
/obj/structure/door_assembly/proc/transfer_assembly_vars(obj/structure/door_assembly/source, obj/structure/door_assembly/target, previous = FALSE)
target.glass = source.glass
- target.heat_proof_finished = source.heat_proof_finished
+ target.reinforced_glass = source.reinforced_glass
target.created_name = source.created_name
target.state = source.state
target.anchored = source.anchored
@@ -300,7 +302,7 @@
new to_spawn_type(T, material_amt)
if(glass)
if(disassembled)
- if(heat_proof_finished)
+ if(reinforced_glass)
new /obj/item/stack/sheet/rglass(T)
else
new /obj/item/stack/sheet/glass(T)
diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm
index 18ab0f0b3cc..ad2514b7a47 100644
--- a/code/game/turfs/simulated/walls.dm
+++ b/code/game/turfs/simulated/walls.dm
@@ -29,7 +29,7 @@
thermal_conductivity = WALL_HEAT_TRANSFER_COEFFICIENT
heat_capacity = 312500 //a little over 5 cm thick , 312500 for 1 m by 2.5 m by 0.25 m plasteel wall
- var/heat_resistance = 9000 // Wish this could be lower, but can't have shit in atmos
+ var/heat_resistance = 5000
var/can_dismantle_with_welder = TRUE
var/hardness = 40 //lower numbers are harder. Used to determine the probability of a hulk smashing through.
diff --git a/code/game/turfs/simulated/walls_reinforced.dm b/code/game/turfs/simulated/walls_reinforced.dm
index 84f132828fa..d7e90ed0232 100644
--- a/code/game/turfs/simulated/walls_reinforced.dm
+++ b/code/game/turfs/simulated/walls_reinforced.dm
@@ -17,7 +17,7 @@
can_dismantle_with_welder = FALSE
smoothing_groups = list(SMOOTH_GROUP_SIMULATED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_REINFORCED_WALLS)
canSmoothWith = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_REGULAR_WALLS, SMOOTH_GROUP_REINFORCED_WALLS)
- heat_resistance = 40000 // Ain't getting through this soon
+ heat_resistance = 20000 // Ain't getting through this soon
var/d_state = RWALL_INTACT
var/can_be_reinforced = 1
diff --git a/code/modules/atmospherics/environmental/LINDA_fire.dm b/code/modules/atmospherics/environmental/LINDA_fire.dm
index 61e776e3c8d..f9965facdf2 100644
--- a/code/modules/atmospherics/environmental/LINDA_fire.dm
+++ b/code/modules/atmospherics/environmental/LINDA_fire.dm
@@ -41,12 +41,6 @@
active_hotspot.just_spawned = (current_cycle < SSair.times_fired)
//remove just_spawned protection if no longer processing this cell
SSair.add_to_active(src, 0)
- var/list/adjacent_dense_turfs = AdjacentTurfs(FALSE, TRUE, TRUE) //Checks adjacent turfs for dense turfs, only in the 4 cardinal directions
- if(active_hotspot == null)
- return igniting
- for(var/turf/simulated/wall/W in adjacent_dense_turfs)
- if(active_hotspot.temperature > W.heat_resistance) //Only deal heat damage when it's actually hot enough
- W.take_damage(1 * (active_hotspot.temperature / W.heat_resistance))
return igniting
//This is the icon for fire on turfs, also helps for nurturing small fires until they are full tile