diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index 8c8f3cd9647..4abb68486b4 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -320,7 +320,8 @@ /obj/machinery/door/emp_act(severity) if(prob(20/severity) && (istype(src,/obj/machinery/door/airlock) || istype(src,/obj/machinery/door/window)) ) - open() + spawn(0) + open() if(prob(40/severity)) if(secondsElectrified == 0) secondsElectrified = -1 diff --git a/code/game/machinery/portable_turret.dm b/code/game/machinery/portable_turret.dm index 8c04da619b8..12148aa6a93 100644 --- a/code/game/machinery/portable_turret.dm +++ b/code/game/machinery/portable_turret.dm @@ -388,9 +388,9 @@ emagged = 1 on=0 - sleep(rand(60,600)) - if(!on) - on=1 + spawn(rand(60,600)) + if(!on) + on=1 ..() diff --git a/code/game/machinery/turret_control.dm b/code/game/machinery/turret_control.dm index 41a98103be3..87021ba6956 100644 --- a/code/game/machinery/turret_control.dm +++ b/code/game/machinery/turret_control.dm @@ -245,9 +245,9 @@ enabled=0 updateTurrets() - sleep(rand(60,600)) - if(!enabled) - enabled=1 - updateTurrets() + spawn(rand(60,600)) + if(!enabled) + enabled=1 + updateTurrets() ..() diff --git a/code/game/objects/empulse.dm b/code/game/objects/empulse.dm index 8bff463e445..cc7f7822347 100644 --- a/code/game/objects/empulse.dm +++ b/code/game/objects/empulse.dm @@ -1,3 +1,9 @@ +// Uncomment this define to check for possible lengthy processing of emp_act()s. +// If emp_act() takes more than defined deciseconds (1/10 seconds) an admin message and log is created. +// I do not recommend having this uncommented on main server, it probably causes a bit more lag, espicially with larger EMPs. + +// #define EMPDEBUG 10 + proc/empulse(turf/epicenter, heavy_range, light_range, log=0) if(!epicenter) return @@ -24,6 +30,9 @@ proc/empulse(turf/epicenter, heavy_range, light_range, log=0) M << 'sound/effects/EMPulse.ogg' for(var/atom/T in range(light_range, epicenter)) + #ifdef EMPDEBUG + var/time = world.timeofday + #endif var/distance = get_dist(epicenter, T) if(distance < 0) distance = 0 @@ -36,4 +45,8 @@ proc/empulse(turf/epicenter, heavy_range, light_range, log=0) T.emp_act(2) else if(distance <= light_range) T.emp_act(2) + #ifdef EMPDEBUG + if((world.timeofday - time) >= EMPDEBUG) + log_and_message_admins("EMPDEBUG: [T.name] - [T.type] - took [world.timeofday - time]ds to process emp_act()!") + #endif return 1 \ No newline at end of file