From 984eecd06e091d4f03c9c4f127bd299ef4e8cc1c Mon Sep 17 00:00:00 2001 From: DGamerL <108773801+DGamerL@users.noreply.github.com> Date: Thu, 22 Jun 2023 19:18:30 +0200 Subject: [PATCH] Buffing plasmafires [READY FOR REVIEW] (#21000) * Floors now almost won't melt * grug wallmelting attempt * Revert "grug wallmelting attempt" This reverts commit e626504990c014bcafb864f94d2cab2d3fe93d98. I have a better idea * letsgooo it worked (kinda(airlocks only)) * fuck yeah it worksss * We stay winning * woe, runtimes be upon ye * Experimental values and some cleaning up * nvm I hate atmos code * more tweaks * da window change * Sean suggestion and temp increases --- code/game/machinery/doors/airlock.dm | 6 ++++++ code/game/machinery/doors/airlock_types.dm | 3 --- code/game/machinery/doors/door.dm | 5 ----- code/game/machinery/doors/firedoor.dm | 15 ++++++++++++--- code/game/objects/structures/door_assembly.dm | 6 ++++++ code/game/objects/structures/window.dm | 2 +- code/game/turfs/simulated/floor.dm | 4 ++-- code/game/turfs/simulated/walls.dm | 1 + code/game/turfs/simulated/walls_reinforced.dm | 1 + .../atmospherics/environmental/LINDA_fire.dm | 6 ++++++ 10 files changed, 35 insertions(+), 14 deletions(-) diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index f2eb1c0e68d..e7df039a575 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -87,6 +87,7 @@ GLOBAL_LIST_EMPTY(airlock_emissive_underlays) var/normal_integrity = AIRLOCK_INTEGRITY_N var/prying_so_hard = FALSE var/paintable = TRUE // If the airlock type can be painted with an airlock painter + var/heat_resistance = 1500 var/mutable_appearance/old_buttons_underlay var/mutable_appearance/old_lights_underlay @@ -1657,6 +1658,11 @@ GLOBAL_LIST_EMPTY(airlock_emissive_underlays) else return PROCESS_KILL +/obj/machinery/door/airlock/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) + ..() + if(exposed_temperature > (T0C + heat_resistance)) + take_damage(round(exposed_volume / 100), BURN, 0, 0) + #undef AIRLOCK_CLOSED #undef AIRLOCK_CLOSING #undef AIRLOCK_OPEN diff --git a/code/game/machinery/doors/airlock_types.dm b/code/game/machinery/doors/airlock_types.dm index fdc70085099..40292468094 100644 --- a/code/game/machinery/doors/airlock_types.dm +++ b/code/game/machinery/doors/airlock_types.dm @@ -212,9 +212,6 @@ else return ..() -/obj/machinery/door/airlock/plasma/BlockSuperconductivity() //we don't stop the heat~ - return 0 - /obj/machinery/door/airlock/plasma/glass opacity = FALSE glass = TRUE diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index dc7bd4559bb..061d37670c0 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -458,11 +458,6 @@ if(!glass && GLOB.cameranet) GLOB.cameranet.updateVisibility(src, 0) -/obj/machinery/door/BlockSuperconductivity() // All non-glass airlocks block heat, this is intended. - if(opacity || 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 c3586e2d702..04365f52de7 100644 --- a/code/game/machinery/doors/firedoor.dm +++ b/code/game/machinery/doors/firedoor.dm @@ -30,6 +30,7 @@ /// Whether the "bolts" are "screwed". Used for deconstruction sequence. Has nothing to do with airlock bolting. var/boltslocked = TRUE var/active_alarm = FALSE + var/heat_resistance = 15000 var/list/affecting_areas /obj/machinery/door/firedoor/Initialize(mapload) @@ -320,6 +321,11 @@ else return 1 +/obj/machinery/door/firedoor/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) + ..() + if(exposed_temperature > (T0C + heat_resistance)) + take_damage(round(exposed_volume / 100), BURN, 0, 0) + /obj/machinery/door/firedoor/heavy name = "heavy firelock" icon = 'icons/obj/doors/doorfire.dmi' @@ -328,6 +334,7 @@ explosion_block = 2 assemblytype = /obj/structure/firelock_frame/heavy max_integrity = 550 + heat_resistance = 20000 /obj/item/firelock_electronics name = "firelock electronics" @@ -349,6 +356,7 @@ density = TRUE var/constructionStep = CONSTRUCTION_NOCIRCUIT var/reinforced = 0 + var/heat_resistance = 1000 /obj/structure/firelock_frame/examine(mob/user) . = ..() @@ -510,9 +518,10 @@ new /obj/machinery/door/firedoor(get_turf(src)) qdel(src) - - - +/obj/structure/firelock_frame/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) + ..() + if(exposed_temperature > (T0C + heat_resistance)) + take_damage(round(exposed_volume / 100), BURN, 0, 0) /obj/structure/firelock_frame/welder_act(mob/user, obj/item/I) if(constructionStep != CONSTRUCTION_NOCIRCUIT) diff --git a/code/game/objects/structures/door_assembly.dm b/code/game/objects/structures/door_assembly.dm index fa0a9860652..26e8ed7a132 100644 --- a/code/game/objects/structures/door_assembly.dm +++ b/code/game/objects/structures/door_assembly.dm @@ -23,6 +23,7 @@ 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 + var/heat_resistance = 1000 /obj/structure/door_assembly/Initialize(mapload) . = ..() @@ -306,3 +307,8 @@ else new /obj/item/shard(T) qdel(src) + +/obj/structure/door_assembly/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) + ..() + if(exposed_temperature > (T0C + heat_resistance)) + take_damage(round(exposed_volume / 100), BURN, 0, 0) diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 1c659c385f1..8f4860e921c 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -535,7 +535,7 @@ desc = "It looks rather strong. Might take a few good hits to shatter it." icon_state = "rwindow" reinf = TRUE - heat_resistance = 1600 + heat_resistance = 1300 armor = list(MELEE = 50, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 25, RAD = 100, FIRE = 80, ACID = 100) rad_insulation = RAD_HEAVY_INSULATION max_integrity = 50 diff --git a/code/game/turfs/simulated/floor.dm b/code/game/turfs/simulated/floor.dm index 846d82883b1..f877a8c0375 100644 --- a/code/game/turfs/simulated/floor.dm +++ b/code/game/turfs/simulated/floor.dm @@ -17,8 +17,8 @@ GLOBAL_LIST_INIT(icons_to_ignore_at_floor_init, list("damaged1","damaged2","dama plane = FLOOR_PLANE var/icon_regular_floor = "floor" //used to remember what icon the tile should have by default var/icon_plating = "plating" - thermal_conductivity = 0.040 - heat_capacity = 10000 + thermal_conductivity = 0.020 + heat_capacity = 100000 flags = NO_SCREENTIPS var/lava = 0 var/broken = FALSE diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm index 489ca56bb1f..18ab0f0b3cc 100644 --- a/code/game/turfs/simulated/walls.dm +++ b/code/game/turfs/simulated/walls.dm @@ -29,6 +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/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 f6916808b9d..84f132828fa 100644 --- a/code/game/turfs/simulated/walls_reinforced.dm +++ b/code/game/turfs/simulated/walls_reinforced.dm @@ -17,6 +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 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 f9965facdf2..61e776e3c8d 100644 --- a/code/modules/atmospherics/environmental/LINDA_fire.dm +++ b/code/modules/atmospherics/environmental/LINDA_fire.dm @@ -41,6 +41,12 @@ 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