diff --git a/code/datums/components/embedded.dm b/code/datums/components/embedded.dm
index ec5ec19a6b..eca38fee34 100644
--- a/code/datums/components/embedded.dm
+++ b/code/datums/components/embedded.dm
@@ -265,6 +265,7 @@
/// Items embedded/stuck to carbons both check whether they randomly fall out (if applicable), as well as if the target mob and limb still exists.
/// Items harmfully embedded in carbons have an additional check for random pain (if applicable)
/datum/component/embedded/proc/processCarbon()
+ set waitfor = FALSE
var/mob/living/carbon/victim = parent
if(!victim || !limb) // in case the victim and/or their limbs exploded (say, due to a sticky bomb)
diff --git a/code/datums/elements/earhealing.dm b/code/datums/elements/earhealing.dm
index 91c2120fc2..bcbc4020d9 100644
--- a/code/datums/elements/earhealing.dm
+++ b/code/datums/elements/earhealing.dm
@@ -25,6 +25,7 @@
user_by_item -= source
/datum/element/earhealing/process()
+ set waitfor = FALSE
for(var/i in user_by_item)
var/mob/living/carbon/user = user_by_item[i]
if(HAS_TRAIT(user, TRAIT_DEAF))
diff --git a/code/datums/wires/airlock.dm b/code/datums/wires/airlock.dm
index 9af78b0090..04c26b8045 100644
--- a/code/datums/wires/airlock.dm
+++ b/code/datums/wires/airlock.dm
@@ -106,12 +106,7 @@
A.aiControlDisabled = 1
else if(A.aiControlDisabled == -1)
A.aiControlDisabled = 2
- sleep(10)
- if(A)
- if(A.aiControlDisabled == 1)
- A.aiControlDisabled = 0
- else if(A.aiControlDisabled == 2)
- A.aiControlDisabled = -1
+ addtimer(CALLBACK(src, .proc/reenable_ai_control), 10)
if(WIRE_SHOCK) // Pulse to shock the door for 10 ticks.
if(!A.secondsElectrified)
A.set_electrified(30, usr)
@@ -125,6 +120,14 @@
A.lights = !A.lights
A.update_icon()
+/datum/wires/airlock/proc/reenable_ai_control()
+ var/obj/machinery/door/airlock/A = holder
+ if(A)
+ if(A.aiControlDisabled == 1)
+ A.aiControlDisabled = 0
+ else if(A.aiControlDisabled == 2)
+ A.aiControlDisabled = -1
+
/datum/wires/airlock/on_cut(wire, mend)
var/obj/machinery/door/airlock/A = holder
if(usr && !A.hasSiliconAccessInArea(usr) && A.isElectrified() && A.shock(usr, 100))
diff --git a/code/game/machinery/computer/pod.dm b/code/game/machinery/computer/pod.dm
index 97e2d4ea0a..f1cf187ff9 100644
--- a/code/game/machinery/computer/pod.dm
+++ b/code/game/machinery/computer/pod.dm
@@ -34,6 +34,7 @@
* Initiates launching sequence by checking if all components are functional, opening poddoors, firing mass drivers and then closing poddoors
*/
/obj/machinery/computer/pod/proc/alarm()
+ set waitfor = FALSE
if(stat & (NOPOWER|BROKEN))
return
diff --git a/code/modules/antagonists/clockcult/clock_structures/ark_of_the_clockwork_justicar.dm b/code/modules/antagonists/clockcult/clock_structures/ark_of_the_clockwork_justicar.dm
index 7ed275bd4e..0fe78f146e 100644
--- a/code/modules/antagonists/clockcult/clock_structures/ark_of_the_clockwork_justicar.dm
+++ b/code/modules/antagonists/clockcult/clock_structures/ark_of_the_clockwork_justicar.dm
@@ -168,23 +168,27 @@
. = ..()
/obj/structure/destructible/clockwork/massive/celestial_gateway/deconstruct(disassembled = TRUE)
+ if(!(flags_1 & NODECONSTRUCT_1) && !disassembled)
+ finalize_destruction()
+ else
+ qdel(src)
+
+/obj/structure/destructible/clockwork/massive/celestial_gateway/proc/finalize_destruction()
set waitfor = FALSE
- if(!(flags_1 & NODECONSTRUCT_1))
- if(!disassembled)
- resistance_flags |= INDESTRUCTIBLE
- countdown.stop()
- visible_message("[src] begins to pulse uncontrollably... you might want to run!")
- sound_to_playing_players(volume = 50, channel = CHANNEL_JUSTICAR_ARK, S = sound('sound/effects/clockcult_gateway_disrupted.ogg'))
- for(var/mob/M in GLOB.player_list)
- var/turf/T = get_turf(M)
- if((T && T.z == z) || is_servant_of_ratvar(M))
- M.playsound_local(M, 'sound/machines/clockcult/ark_deathrattle.ogg', 100, FALSE, pressure_affected = FALSE)
- make_glow()
- glow.icon_state = "clockwork_gateway_disrupted"
- resistance_flags |= INDESTRUCTIBLE
- sleep(27)
- explosion(src, 1, 3, 8, 8)
- sound_to_playing_players('sound/effects/explosion_distant.ogg', volume = 50)
+ resistance_flags |= INDESTRUCTIBLE
+ countdown.stop()
+ visible_message("[src] begins to pulse uncontrollably... you might want to run!")
+ sound_to_playing_players(volume = 50, channel = CHANNEL_JUSTICAR_ARK, S = sound('sound/effects/clockcult_gateway_disrupted.ogg'))
+ for(var/mob/M in GLOB.player_list)
+ var/turf/T = get_turf(M)
+ if((T && T.z == z) || is_servant_of_ratvar(M))
+ M.playsound_local(M, 'sound/machines/clockcult/ark_deathrattle.ogg', 100, FALSE, pressure_affected = FALSE)
+ make_glow()
+ glow.icon_state = "clockwork_gateway_disrupted"
+ resistance_flags |= INDESTRUCTIBLE
+ sleep(27)
+ explosion(src, 1, 3, 8, 8)
+ sound_to_playing_players('sound/effects/explosion_distant.ogg', volume = 50)
qdel(src)
/obj/structure/destructible/clockwork/massive/celestial_gateway/proc/make_glow()
diff --git a/code/modules/antagonists/clockcult/clock_structures/prolonging_prism.dm b/code/modules/antagonists/clockcult/clock_structures/prolonging_prism.dm
index 73488d736a..ededd0174c 100644
--- a/code/modules/antagonists/clockcult/clock_structures/prolonging_prism.dm
+++ b/code/modules/antagonists/clockcult/clock_structures/prolonging_prism.dm
@@ -60,12 +60,8 @@
delay_remaining += PRISM_DELAY_DURATION
toggle(0, user)
-/obj/structure/destructible/clockwork/powered/prolonging_prism/process()
- var/turf/own_turf = get_turf(src)
- if(SSshuttle.emergency.mode != SHUTTLE_CALL || delay_remaining <= 0 || !own_turf || !is_station_level(own_turf.z))
- forced_disable(FALSE)
- return
- . = ..()
+/obj/structure/destructible/clockwork/powered/prolonging_prism/proc/do_process()
+ set waitfor = FALSE
var/delay_amount = 40
delay_remaining -= delay_amount
var/efficiency = get_efficiency_mod()
@@ -114,6 +110,14 @@
new /obj/effect/temp_visual/ratvar/prolonging_prism(T)
CHECK_TICK //we may be going over a hell of a lot of turfs
+/obj/structure/destructible/clockwork/powered/prolonging_prism/process()
+ var/turf/own_turf = get_turf(src)
+ if(SSshuttle.emergency.mode != SHUTTLE_CALL || delay_remaining <= 0 || !own_turf || !is_station_level(own_turf.z))
+ forced_disable(FALSE)
+ return
+ . = ..()
+ do_process()
+
/obj/structure/destructible/clockwork/powered/prolonging_prism/proc/get_delay_cost()
return FLOOR(delay_cost, MIN_CLOCKCULT_POWER)
diff --git a/code/modules/arousal/arousal.dm b/code/modules/arousal/arousal.dm
index bd8b5dbf7a..36da6c73ba 100644
--- a/code/modules/arousal/arousal.dm
+++ b/code/modules/arousal/arousal.dm
@@ -197,6 +197,7 @@
//Here's the main proc itself
/mob/living/carbon/human/proc/mob_climax(forced_climax=FALSE,cause = "") //Forced is instead of the other proc, makes you cum if you have the tools for it, ignoring restraints
+ set waitfor = FALSE
if(mb_cd_timer > world.time)
if(!forced_climax) //Don't spam the message to the victim if forced to come too fast
to_chat(src, "You need to wait [DisplayTimeText((mb_cd_timer - world.time), TRUE)] before you can do that again!")
diff --git a/code/modules/mining/mint.dm b/code/modules/mining/mint.dm
index 2a8e0f2516..f8a4ba4a72 100644
--- a/code/modules/mining/mint.dm
+++ b/code/modules/mining/mint.dm
@@ -64,8 +64,6 @@
if(materials.use_amount_mat(coin_mat, chosen))
for(var/coin_to_make in 1 to 5)
create_coins()
- produced_coins++
- CHECK_TICK
else
var/found_new = FALSE
for(var/datum/material/inserted_material in materials.materials)
@@ -131,6 +129,7 @@
return TRUE
/obj/machinery/mineral/mint/proc/create_coins()
+ set waitfor = FALSE
var/turf/T = get_step(src,output_dir)
var/temp_list = list()
temp_list[chosen] = 400
@@ -143,3 +142,5 @@
O.forceMove(bag_to_use) //don't bother sending the signal, the new bag is empty and all that.
SSblackbox.record_feedback("amount", "coins_minted", 1)
+ produced_coins++
+ CHECK_TICK
diff --git a/code/modules/modular_computers/computers/item/computer.dm b/code/modules/modular_computers/computers/item/computer.dm
index 131a098258..64c99e01bf 100644
--- a/code/modules/modular_computers/computers/item/computer.dm
+++ b/code/modules/modular_computers/computers/item/computer.dm
@@ -349,6 +349,7 @@
// Relays kill program request to currently active program. Use this to quit current program.
/obj/item/modular_computer/proc/kill_program(forced = FALSE)
+ set waitfor = FALSE
if(active_program)
active_program.kill_program(forced)
active_program = null
diff --git a/code/modules/zombie/organs.dm b/code/modules/zombie/organs.dm
index 2681f781a9..a724d26314 100644
--- a/code/modules/zombie/organs.dm
+++ b/code/modules/zombie/organs.dm
@@ -45,7 +45,7 @@
if(!owner)
return
if(!(src in owner.internal_organs))
- Remove(owner)
+ INVOKE_ASYNC(src,.proc/Remove,owner)
if(owner.mob_biotypes & MOB_MINERAL)//does not process in inorganic things
return
if (causes_damage && !iszombie(owner) && owner.stat != DEAD)
diff --git a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm
index ab39e6f4a7..edaaeb19b2 100644
--- a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm
+++ b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm
@@ -28,6 +28,7 @@
//Called when temperature is above a certain threshold, or if purity is too low.
/datum/chemical_reaction/proc/FermiExplode(datum/reagents/R0, var/atom/my_atom, volume, temp, pH, Exploding = FALSE)
+ set waitfor = FALSE
if (Exploding == TRUE)
return