mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-29 23:17:02 +01:00
Merge pull request #5522 from Crazylemon64/airlock_wire_runtime_fix
Fixes a runtime when an airlock set to `autoclose` is deleted
This commit is contained in:
@@ -62,7 +62,10 @@ var/global/datum/controller/process/timer/timer_master
|
||||
event.thingToCall = thingToCall
|
||||
event.procToCall = procToCall
|
||||
event.timeToRun = world.time + wait
|
||||
event.hash = jointext(args, null)
|
||||
var/hashlist = args.Copy()
|
||||
|
||||
hashlist[1] = "[thingToCall](\ref[thingToCall])"
|
||||
event.hash = jointext(hashlist, null)
|
||||
if(args.len > 4)
|
||||
event.argList = args.Copy(5)
|
||||
|
||||
|
||||
@@ -374,6 +374,13 @@ About the new airlock wires panel:
|
||||
/obj/machinery/door/airlock/bumpopen(mob/living/simple_animal/user as mob)
|
||||
..(user)
|
||||
|
||||
|
||||
/obj/machinery/door/airlock/autoclose()
|
||||
autoclose_timer = 0
|
||||
if(!qdeleted(src) && !density && !operating && !locked && !welded && autoclose)
|
||||
close()
|
||||
return
|
||||
|
||||
/obj/machinery/door/airlock/proc/isElectrified()
|
||||
if(src.electrified_until != 0)
|
||||
return 1
|
||||
@@ -1088,4 +1095,4 @@ About the new airlock wires panel:
|
||||
unlock()
|
||||
electrified_until = 0
|
||||
open()
|
||||
safe = TRUE
|
||||
safe = TRUE
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
var/p_open = 0
|
||||
var/operating = 0
|
||||
var/autoclose = 0
|
||||
var/autoclose_timer
|
||||
var/glass = 0
|
||||
var/normalspeed = 1
|
||||
var/heat_proof = 0 // For glass airlocks/opacity firedoors
|
||||
@@ -58,6 +59,9 @@
|
||||
air_update_turf(1)
|
||||
update_freelook_sight()
|
||||
airlocks -= src
|
||||
if(autoclose_timer)
|
||||
deltimer(autoclose_timer)
|
||||
autoclose_timer = 0
|
||||
return ..()
|
||||
|
||||
/obj/machinery/door/Bumped(atom/AM)
|
||||
@@ -220,12 +224,9 @@
|
||||
air_update_turf(1)
|
||||
update_freelook_sight()
|
||||
|
||||
if(autoclose && normalspeed)
|
||||
spawn(150)
|
||||
autoclose()
|
||||
if(autoclose && !normalspeed)
|
||||
spawn(5)
|
||||
autoclose()
|
||||
// The `addtimer` system has the advantage of being cancelable
|
||||
if(autoclose)
|
||||
autoclose_timer = addtimer(src, "autoclose", normalspeed ? 150 : 5, unique = 1)
|
||||
|
||||
return 1
|
||||
|
||||
@@ -236,6 +237,10 @@
|
||||
return
|
||||
operating = 1
|
||||
|
||||
if(autoclose_timer)
|
||||
deltimer(autoclose_timer)
|
||||
autoclose_timer = 0
|
||||
|
||||
do_animate("closing")
|
||||
src.layer = closed_layer
|
||||
sleep(5)
|
||||
@@ -269,8 +274,8 @@
|
||||
return 1
|
||||
|
||||
/obj/machinery/door/proc/autoclose()
|
||||
var/obj/machinery/door/airlock/A = src
|
||||
if(!A.density && !A.operating && !A.locked && !A.welded && A.autoclose)
|
||||
autoclose_timer = 0
|
||||
if(!qdeleted(src) && !density && !operating && autoclose)
|
||||
close()
|
||||
return
|
||||
|
||||
@@ -308,4 +313,4 @@
|
||||
|
||||
/obj/machinery/door/proc/disable_lockdown()
|
||||
if(!stat) //Opens only powered doors.
|
||||
open() //Open everything!
|
||||
open() //Open everything!
|
||||
|
||||
@@ -412,8 +412,8 @@ This function completely restores a damaged organ to perfect condition.
|
||||
last_dam = brute_dam + burn_dam
|
||||
if(germ_level)
|
||||
return 1
|
||||
if(!wound_cleanup_timer)
|
||||
wound_cleanup_timer = addtimer(src, "cleanup_wounds", SecondsToTicks(600), 1, wounds)
|
||||
if(!wound_cleanup_timer && wounds.len)
|
||||
wound_cleanup_timer = addtimer(src, "cleanup_wounds", SecondsToTicks(600), unique = 1, wounds)
|
||||
|
||||
if(update_icon())
|
||||
owner.UpdateDamageIcon(1)
|
||||
|
||||
Reference in New Issue
Block a user