diff --git a/code/game/machinery/airconditioner_vr.dm b/code/game/machinery/airconditioner_vr.dm index 62926eb9e9..5e3de80ef7 100644 --- a/code/game/machinery/airconditioner_vr.dm +++ b/code/game/machinery/airconditioner_vr.dm @@ -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) diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index a7c00169ac..1d83449770 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -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() diff --git a/code/modules/mob/living/silicon/robot/robot_animation_vr.dm b/code/modules/mob/living/silicon/robot/robot_animation_vr.dm index 8af106bb20..fb92fa83f7 100644 --- a/code/modules/mob/living/silicon/robot/robot_animation_vr.dm +++ b/code/modules/mob/living/silicon/robot/robot_animation_vr.dm @@ -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