[MIRROR] Makes doors not horrid. Also fixes infinite heat (#10091)

Co-authored-by: Cameron Lennox <killer65311@gmail.com>
Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com>
This commit is contained in:
CHOMPStation2StaffMirrorBot
2025-02-07 08:03:30 -07:00
committed by GitHub
parent 109d90ddba
commit fad9124cf8
3 changed files with 60 additions and 9 deletions

View File

@@ -47,7 +47,7 @@
turn_off()
return
if(istype(I, /obj/item/multitool))
var/new_temp = tgui_input_number(user, "Input a new target temperature, in degrees C.","Target Temperature", convert_k2c(target_temp), min_value=convert_k2c(TCMB), round_value = FALSE)
var/new_temp = tgui_input_number(user, "Input a new target temperature, in degrees C.","Target Temperature", convert_k2c(target_temp), MAX_ATMOS_TEMPERATURE, convert_k2c(TCMB), round_value = FALSE)
if(!Adjacent(user) || user.incapacitated())
return
new_temp = convert_c2k(new_temp)

View File

@@ -79,6 +79,11 @@
density = FALSE
update_nearby_tiles()
. = ..()
/*
var/obj/effect/step_trigger/claymore_laser/las = locate() in loc
if(las)
las.Trigger(src)
*/
/obj/machinery/door/process()
if(close_door_at && world.time >= close_door_at)
@@ -160,7 +165,7 @@
return !density // Block airflow unless density = FALSE
/obj/machinery/door/proc/bumpopen(mob/user as mob)
if(!user) return // CHOMPedit - Check if the mob is even valid before proceeding
if(!user) return
if(operating) return
if(user.last_airflow > world.time - vsc.airflow_delay) //Fakkit
return
@@ -377,7 +382,6 @@
playsound(src, 'sound/machines/buzz-two.ogg', 50, 0)
return
/obj/machinery/door/proc/open(var/forced = 0)
if(!can_open(forced))
return
@@ -386,23 +390,52 @@
do_animate("opening")
icon_state = "door0"
set_opacity(0)
sleep(anim_length_before_density)
addtimer(CALLBACK(src, PROC_REF(open_internalsetdensity),forced), anim_length_before_density)
/obj/machinery/door/proc/open_internalsetdensity(var/forced = 0)
PRIVATE_PROC(TRUE) //do not touch this or BYOND will devour you
SHOULD_NOT_OVERRIDE(TRUE)
src.density = FALSE
update_nearby_tiles()
sleep(anim_length_before_finalize)
addtimer(CALLBACK(src, PROC_REF(open_internalfinish),forced), anim_length_before_finalize)
/obj/machinery/door/proc/open_internalfinish(var/forced = 0)
PRIVATE_PROC(TRUE) //do not touch this or BYOND will devour you
SHOULD_NOT_OVERRIDE(TRUE)
src.layer = open_layer
explosion_resistance = 0
update_icon()
set_opacity(0)
operating = 0
/*
var/obj/effect/step_trigger/claymore_laser/las = locate() in loc
if(las)
addtimer(CALLBACK(las, TYPE_PROC_REF(/obj/effect/step_trigger/claymore_laser,Trigger), src), 5)
*/
if(autoclose)
autoclose_in(next_close_wait())
return 1
/obj/machinery/door/proc/next_close_wait()
return (normalspeed ? 150 : 5)
var/lowest_temp = T20C
var/highest_temp = T0C
for(var/D in cardinal)
var/turf/target = get_step(loc, D)
if(!target.density)
var/datum/gas_mixture/airmix = target.return_air()
if(!airmix)
continue
if(airmix.temperature < lowest_temp)
lowest_temp = airmix.temperature
if(airmix.temperature > highest_temp)
highest_temp = airmix.temperature
// Fast close to keep in the heat
var/open_speed = 150
if(abs(highest_temp - lowest_temp) >= 5)
open_speed = 15
return (normalspeed ? open_speed : 5)
/obj/machinery/door/proc/close(var/forced = 0)
if(!can_close(forced))
@@ -411,12 +444,20 @@
close_door_at = 0
do_animate("closing")
sleep(anim_length_before_density)
addtimer(CALLBACK(src, PROC_REF(close_internalsetdensity),forced), anim_length_before_density)
/obj/machinery/door/proc/close_internalsetdensity(var/forced = 0)
PRIVATE_PROC(TRUE) //do not touch this or BYOND will devour you
SHOULD_NOT_OVERRIDE(TRUE)
src.density = TRUE
explosion_resistance = initial(explosion_resistance)
src.layer = closed_layer
update_nearby_tiles()
sleep(anim_length_before_finalize)
addtimer(CALLBACK(src, PROC_REF(close_internalfinish),forced), anim_length_before_finalize)
/obj/machinery/door/proc/close_internalfinish(var/forced = 0)
PRIVATE_PROC(TRUE) //do not touch this or BYOND will devour you
SHOULD_NOT_OVERRIDE(TRUE)
update_icon()
if(visible && !glass)
set_opacity(1) //caaaaarn!
@@ -427,6 +468,12 @@
if(fire)
qdel(fire)
/*
var/obj/effect/step_trigger/claymore_laser/las = locate() in loc
if(las)
addtimer(CALLBACK(las, TYPE_PROC_REF(/obj/effect/step_trigger/claymore_laser,Trigger), src), 1)
*/
return 1
/obj/machinery/door/proc/requiresID()

View File

@@ -15,6 +15,8 @@
addtimer(CALLBACK(src, PROC_REF(transform_animation_sounds), 6, prev_lockcharge), 0.2 SECONDS)
/mob/living/silicon/robot/proc/transform_animation_sounds(var/recall, var/prev_lockcharge)
PRIVATE_PROC(TRUE)
SHOULD_NOT_OVERRIDE(TRUE)
if(recall > 0)
playsound(src, pick('sound/items/drill_use.ogg', 'sound/items/jaws_cut.ogg', 'sound/items/jaws_pry.ogg', 'sound/items/Welder.ogg', 'sound/items/Wirecutter.ogg', 'sound/items/Crowbar.ogg', 'sound/items/Ratchet.ogg'), 80, 1, -1)
recall--
@@ -23,6 +25,8 @@
transform_animation_end_lockdown(prev_lockcharge)
/mob/living/silicon/robot/proc/transform_animation_end_lockdown(var/prev_lockcharge)
PRIVATE_PROC(TRUE)
SHOULD_NOT_OVERRIDE(TRUE)
if(!prev_lockcharge)
SetLockdown(0)
anchored = FALSE