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