diff --git a/modular_skyrat/master_files/code/controllers/subsystem/statpanel.dm b/modular_skyrat/master_files/code/controllers/subsystem/statpanel.dm
index 71a529b9b0b..4757a000b33 100644
--- a/modular_skyrat/master_files/code/controllers/subsystem/statpanel.dm
+++ b/modular_skyrat/master_files/code/controllers/subsystem/statpanel.dm
@@ -173,6 +173,7 @@ SUBSYSTEM_DEF(statpanels)
mc_data_encoded = url_encode(json_encode(mc_data))
/atom/proc/remove_from_cache()
+ SIGNAL_HANDLER
SSstatpanels.cached_images -= REF(src)
/// verbs that send information from the browser UI
diff --git a/modular_skyrat/master_files/code/datums/components/fullauto.dm b/modular_skyrat/master_files/code/datums/components/fullauto.dm
index 9fea4581358..dbc35a60ad4 100644
--- a/modular_skyrat/master_files/code/datums/components/fullauto.dm
+++ b/modular_skyrat/master_files/code/datums/components/fullauto.dm
@@ -107,6 +107,7 @@
autofire_on(source.client)
/datum/component/automatic_fire/proc/on_mouse_down(client/source, atom/_target, turf/location, control, params)
+ SIGNAL_HANDLER
var/list/modifiers = params2list(params) //If they're shift+clicking, for example, let's not have them accidentally shoot.
if(LAZYACCESS(modifiers, SHIFT_CLICK))
diff --git a/modular_skyrat/master_files/code/modules/clothing/head/monkey_magnification_helmet.dm b/modular_skyrat/master_files/code/modules/clothing/head/monkey_magnification_helmet.dm
index deb6b9de7e0..da28eb82303 100644
--- a/modular_skyrat/master_files/code/modules/clothing/head/monkey_magnification_helmet.dm
+++ b/modular_skyrat/master_files/code/modules/clothing/head/monkey_magnification_helmet.dm
@@ -105,6 +105,7 @@
disconnect()
/obj/item/clothing/head/helmet/monkey_sentience/proc/make_fall_off()
+ SIGNAL_HANDLER
if(magnification)
visible_message("[src] falls off of [magnification]'s head as it changes shape!")
magnification.dropItemToGround(src)
diff --git a/modular_skyrat/modules/biohazard_blob/code/biohazard_blob_structures.dm b/modular_skyrat/modules/biohazard_blob/code/biohazard_blob_structures.dm
index 15ddb08d131..1cf00a92ce3 100644
--- a/modular_skyrat/modules/biohazard_blob/code/biohazard_blob_structures.dm
+++ b/modular_skyrat/modules/biohazard_blob/code/biohazard_blob_structures.dm
@@ -267,11 +267,12 @@
RegisterSignal(t, COMSIG_ATOM_ENTERED, .proc/proximity_trigger)
/obj/structure/biohazard_blob/structure/bulb/proc/proximity_trigger(datum/source, atom/movable/AM)
+ SIGNAL_HANDLER
if(!isliving(AM))
return
var/mob/living/L = AM
if(!(MOLD_FACTION in L.faction))
- discharge()
+ INVOKE_ASYNC(src, .proc/discharge)
/obj/structure/biohazard_blob/structure/bulb/proc/make_full()
//Called by a timer, check if we exist
diff --git a/modular_skyrat/modules/cell_component/code/cell_component.dm b/modular_skyrat/modules/cell_component/code/cell_component.dm
index 61bacd91949..1b74bbfcc1b 100644
--- a/modular_skyrat/modules/cell_component/code/cell_component.dm
+++ b/modular_skyrat/modules/cell_component/code/cell_component.dm
@@ -135,6 +135,7 @@ component_cell_out_of_charge/component_cell_removed proc using loc where necessa
/// Handling of cell removal.
/datum/component/cell/proc/remove_cell(datum/source, mob/user)
+ SIGNAL_HANDLER
if(!equipment.can_interact(user))
return
@@ -161,6 +162,7 @@ component_cell_out_of_charge/component_cell_removed proc using loc where necessa
/// Handling of cell insertion.
/datum/component/cell/proc/insert_cell(datum/source, obj/item/inserting_item, mob/living/user, params)
+ SIGNAL_HANDLER
if(!equipment.can_interact(user))
return
diff --git a/modular_skyrat/modules/combat_indicator/code/combat_indicator.dm b/modular_skyrat/modules/combat_indicator/code/combat_indicator.dm
index c05dcfabbc8..612715ad72b 100644
--- a/modular_skyrat/modules/combat_indicator/code/combat_indicator.dm
+++ b/modular_skyrat/modules/combat_indicator/code/combat_indicator.dm
@@ -11,6 +11,7 @@ GLOBAL_VAR_INIT(combat_indicator_overlay, GenerateCombatOverlay())
var/nextcombatpopup = 0
/mob/living/proc/combat_indicator_unconscious_signal()
+ SIGNAL_HANDLER
set_combat_indicator(FALSE)
/mob/living/proc/set_combat_indicator(state)
diff --git a/modular_skyrat/modules/ghostcafe/code/datums/elements/dusts_on_leaving_area.dm b/modular_skyrat/modules/ghostcafe/code/datums/elements/dusts_on_leaving_area.dm
index 5837bdab3e0..f146750bffd 100644
--- a/modular_skyrat/modules/ghostcafe/code/datums/elements/dusts_on_leaving_area.dm
+++ b/modular_skyrat/modules/ghostcafe/code/datums/elements/dusts_on_leaving_area.dm
@@ -15,6 +15,7 @@
UnregisterSignal(M,COMSIG_ENTER_AREA)
/datum/element/dusts_on_leaving_area/proc/check_dust(datum/source, area/A)
+ SIGNAL_HANDLER
var/mob/living/M = source
if(istype(M) && !(A.type in area_types))
M.dust(TRUE, force = TRUE)
diff --git a/modular_skyrat/modules/gunpoint/code/datum/gunpoint/gunpoint_datum.dm b/modular_skyrat/modules/gunpoint/code/datum/gunpoint/gunpoint_datum.dm
index b914d7b91e6..78f98e05c65 100644
--- a/modular_skyrat/modules/gunpoint/code/datum/gunpoint/gunpoint_datum.dm
+++ b/modular_skyrat/modules/gunpoint/code/datum/gunpoint/gunpoint_datum.dm
@@ -76,13 +76,14 @@
addtimer(CALLBACK(src, .proc/LockOn), 7)
/datum/gunpoint/proc/MeleeAttackReact(datum/source_datum, atom/target)
+ SIGNAL_HANDLER
if(!CheckContinuity())
qdel(src)
return
if(!allow_use && CanReact())
source.log_message("[source] shot [target] because they attacked/disarmed/pulled", LOG_ATTACK)
to_chat(source, "You pull the trigger instinctively to [target.name] actions!")
- ShootTarget()
+ INVOKE_ASYNC(src, .proc/ShootTarget)
/datum/gunpoint/proc/LockOn()
if(src) //if we're not present then locking on failed and this datum is deleted
@@ -138,11 +139,13 @@
return ..()
/datum/gunpoint/proc/ClickDestroy()
+ SIGNAL_HANDLER
if(locked)
playsound(get_turf(source), 'modular_skyrat/modules/gunpoint/sound/targetoff.ogg', 50,1)
qdel(src)
/datum/gunpoint/proc/SourceCC(datum/source, amount, update, ignore)
+ SIGNAL_HANDLER
if(amount && !ignore)
qdel(src)
@@ -152,18 +155,20 @@
aimed_gun.afterattack(target, source)
/datum/gunpoint/proc/RadioReact(datum/datum_source, obj/item/radio/radio, message, channel, list/spans, datum/language/language, direct)
+ SIGNAL_HANDLER
if(!allow_radio && CanReact())
if(direct)
source.log_message("[source] shot [target] because they spoke on radio", LOG_ATTACK)
to_chat(source, "You pull the trigger instinctively as [target.name] speaks on the radio!")
- ShootTarget()
+ INVOKE_ASYNC(src, .proc/ShootTarget)
/datum/gunpoint/proc/MovedReact(datum/datum_source, atom/moved, direction, forced)
+ SIGNAL_HANDLER
if(!CheckContinuity())
qdel(src)
return
if(!allow_move && CanReact() && !(target.pulledby && target.pulledby == source)) //Don't shoot him if we're pulling them
- MovedShootProc()
+ INVOKE_ASYNC(src, .proc/MovedShootProc)
/datum/gunpoint/proc/MovedShootProc() //This exists in case of someone moving several tiles in one tick, such as dashes or diagonal movement
moved_counter += 1
@@ -183,6 +188,7 @@
ShootTarget()
/datum/gunpoint/proc/SourceMoved(datum/datum_source)
+ SIGNAL_HANDLER
if(!CheckContinuity())
qdel(src)
diff --git a/modular_skyrat/modules/liquids/code/liquid_systems/liquid_effect.dm b/modular_skyrat/modules/liquids/code/liquid_systems/liquid_effect.dm
index 7f1c6d7645c..2df8f6f6e5e 100644
--- a/modular_skyrat/modules/liquids/code/liquid_systems/liquid_effect.dm
+++ b/modular_skyrat/modules/liquids/code/liquid_systems/liquid_effect.dm
@@ -411,6 +411,7 @@
AM.fire_act((T20C+50) + (50*fire_state), 125)
/obj/effect/abstract/liquid_turf/proc/mob_fall(datum/source, mob/M)
+ SIGNAL_HANDLER
var/turf/T = source
if(liquid_state >= LIQUID_STATE_ANKLES && T.has_gravity(T))
playsound(T, 'modular_skyrat/modules/liquids/sound/effects/splash.ogg', 50, 0)
@@ -423,7 +424,8 @@
tempr.trans_to(C, tempr.total_volume, methods = INGEST)
qdel(tempr)
C.adjustOxyLoss(5)
- C.emote("cough")
+ //C.emote("cough")
+ INVOKE_ASYNC(C, /mob.proc/emote, "cough")
to_chat(C, "You fall in and swallow some water!")
else
to_chat(M, "You fall in the water!")
diff --git a/modular_skyrat/modules/liquids/code/liquid_systems/liquid_height.dm b/modular_skyrat/modules/liquids/code/liquid_systems/liquid_height.dm
index 47076495aa5..4c3a104903b 100644
--- a/modular_skyrat/modules/liquids/code/liquid_systems/liquid_height.dm
+++ b/modular_skyrat/modules/liquids/code/liquid_systems/liquid_height.dm
@@ -34,6 +34,7 @@
turf_loc.reasses_liquids()
/datum/element/liquids_height/proc/on_target_move(atom/movable/source, atom/OldLoc, Dir, Forced = FALSE)
+ SIGNAL_HANDLER
if(isturf(OldLoc))
var/turf/old_turf = OldLoc
old_turf.liquid_height += height_applied
diff --git a/modular_skyrat/modules/medical/code/wounds/bones.dm b/modular_skyrat/modules/medical/code/wounds/bones.dm
index 1bcde0250f7..aad265dd778 100644
--- a/modular_skyrat/modules/medical/code/wounds/bones.dm
+++ b/modular_skyrat/modules/medical/code/wounds/bones.dm
@@ -176,6 +176,7 @@
*/
/datum/wound/blunt/proc/update_inefficiencies()
+ SIGNAL_HANDLER
if(limb.body_zone in list(BODY_ZONE_L_LEG, BODY_ZONE_R_LEG))
if(limb.current_splint)
limp_slowdown = initial(limp_slowdown) * limb.current_splint.splint_factor
@@ -222,6 +223,7 @@
/// Getting smushed in an airlock/firelock is a last-ditch attempt to try relocating your limb
/datum/wound/blunt/moderate/proc/door_crush()
+ SIGNAL_HANDLER
if(prob(33))
victim.visible_message("[victim]'s dislocated [limb.name] pops back into place!", "Your dislocated [limb.name] pops back into place! Ow!")
remove_wound()
diff --git a/modular_skyrat/modules/medical/code/wounds/muscle.dm b/modular_skyrat/modules/medical/code/wounds/muscle.dm
index c37e52424a9..57284a8c4ab 100644
--- a/modular_skyrat/modules/medical/code/wounds/muscle.dm
+++ b/modular_skyrat/modules/medical/code/wounds/muscle.dm
@@ -111,6 +111,7 @@
*/
/datum/wound/muscle/proc/update_inefficiencies()
+ SIGNAL_HANDLER
if(limb.body_zone in list(BODY_ZONE_L_LEG, BODY_ZONE_R_LEG))
if(limb.current_splint)
limp_slowdown = initial(limp_slowdown) * limb.current_splint.splint_factor
diff --git a/modular_skyrat/modules/mutants/code/mutant_datum.dm b/modular_skyrat/modules/mutants/code/mutant_datum.dm
index c7485ec8a88..ebb1911b315 100644
--- a/modular_skyrat/modules/mutants/code/mutant_datum.dm
+++ b/modular_skyrat/modules/mutants/code/mutant_datum.dm
@@ -93,6 +93,7 @@ GLOBAL_LIST_EMPTY(mutant_infection_list) // A list of all mutant_infection organ
timer_id = addtimer(CALLBACK(src, .proc/transform_host), revive_time, TIMER_STOPPABLE)
/datum/component/mutant_infection/proc/cure_host()
+ SIGNAL_HANDLER
if(!host.stat == DEAD)
to_chat(host, "You start to feel refreshed and invigorated!")
STOP_PROCESSING(SSobj, src)
@@ -124,6 +125,7 @@ GLOBAL_LIST_EMPTY(mutant_infection_list) // A list of all mutant_infection organ
RegisterSignal(parent, COMSIG_LIVING_DEATH, .proc/mutant_death)
/datum/component/mutant_infection/proc/mutant_death()
+ SIGNAL_HANDLER
var/revive_time = rand(REVIVE_TIME_LOWER, REVIVE_TIME_UPPER)
to_chat(host, "You can feel your heart stopping, but something isn't right... \
life has not abandoned your broken form. You can only feel a deep and immutable hunger that \
diff --git a/modular_skyrat/modules/shapeshifting_module/code/game/objects/items/borg_shapeshifter.dm b/modular_skyrat/modules/shapeshifting_module/code/game/objects/items/borg_shapeshifter.dm
index f990eebb0c5..33626e18225 100644
--- a/modular_skyrat/modules/shapeshifting_module/code/game/objects/items/borg_shapeshifter.dm
+++ b/modular_skyrat/modules/shapeshifting_module/code/game/objects/items/borg_shapeshifter.dm
@@ -1099,6 +1099,7 @@
src.user = user
/obj/item/borg_shapeshifter/proc/disrupt(mob/living/silicon/robot/user)
+ SIGNAL_HANDLER
if(active)
to_chat(user, "Your chameleon field deactivates.")
deactivate(user)