diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm
index 6ff6f320e2d..264145022fd 100644
--- a/code/game/atoms_movable.dm
+++ b/code/game/atoms_movable.dm
@@ -384,6 +384,7 @@
//Called after a successful Move(). By this point, we've already moved
/atom/movable/proc/Moved(atom/OldLoc, Dir, Forced = FALSE)
+ SHOULD_CALL_PARENT(TRUE)
SEND_SIGNAL(src, COMSIG_MOVABLE_MOVED, OldLoc, Dir, Forced)
if (!inertia_moving)
inertia_next_move = world.time + inertia_move_delay
@@ -426,6 +427,8 @@
//oldloc = old location on atom, inserted when forceMove is called and ONLY when forceMove is called!
/atom/movable/Crossed(atom/movable/AM, oldloc)
+ SHOULD_CALL_PARENT(TRUE)
+ . = ..()
SEND_SIGNAL(src, COMSIG_MOVABLE_CROSSED, AM)
/atom/movable/Uncross(atom/movable/AM, atom/newloc)
diff --git a/code/game/machinery/scan_gate.dm b/code/game/machinery/scan_gate.dm
index fb3880b90b6..8eaff2478d4 100644
--- a/code/game/machinery/scan_gate.dm
+++ b/code/game/machinery/scan_gate.dm
@@ -51,7 +51,10 @@
. += "The control panel is unlocked. Swipe an ID to lock it."
/obj/machinery/scanner_gate/Crossed(atom/movable/AM)
- ..()
+ . = ..()
+ auto_scan(AM)
+
+/obj/machinery/scanner_gate/proc/auto_scan(atom/movable/AM)
if(!(machine_stat & (BROKEN|NOPOWER)) && isliving(AM))
perform_scan(AM)
diff --git a/code/game/objects/effects/alien_acid.dm b/code/game/objects/effects/alien_acid.dm
index 5dcbc9ea952..16bc321b211 100644
--- a/code/game/objects/effects/alien_acid.dm
+++ b/code/game/objects/effects/alien_acid.dm
@@ -53,6 +53,7 @@
return 0
/obj/effect/acid/Crossed(AM as mob|obj)
+ . = ..()
if(isliving(AM))
var/mob/living/L = AM
if(L.movement_type & FLYING)
diff --git a/code/game/objects/effects/anomalies.dm b/code/game/objects/effects/anomalies.dm
index 78b8179799f..e6f7584a887 100644
--- a/code/game/objects/effects/anomalies.dm
+++ b/code/game/objects/effects/anomalies.dm
@@ -107,6 +107,7 @@
O.throw_at(target, 5, 10)
/obj/effect/anomaly/grav/Crossed(atom/movable/AM)
+ . = ..()
gravShock(AM)
/obj/effect/anomaly/grav/Bump(atom/A)
@@ -154,6 +155,7 @@
mobShock(M)
/obj/effect/anomaly/flux/Crossed(atom/movable/AM)
+ . = ..()
mobShock(AM)
/obj/effect/anomaly/flux/Bump(atom/A)
diff --git a/code/game/objects/effects/mines.dm b/code/game/objects/effects/mines.dm
index 90131c59343..c2a6194cca6 100644
--- a/code/game/objects/effects/mines.dm
+++ b/code/game/objects/effects/mines.dm
@@ -11,6 +11,7 @@
to_chat(victim, "*click*")
/obj/effect/mine/Crossed(AM as mob|obj)
+ . = ..()
if(isturf(loc))
if(ismob(AM))
var/mob/MM = AM
diff --git a/code/game/objects/effects/proximity.dm b/code/game/objects/effects/proximity.dm
index dbd9867d6da..677e2c3b256 100644
--- a/code/game/objects/effects/proximity.dm
+++ b/code/game/objects/effects/proximity.dm
@@ -112,4 +112,5 @@
/obj/effect/abstract/proximity_checker/Crossed(atom/movable/AM)
set waitfor = FALSE
+ . = ..()
monitor.hasprox_receiver.HasProximity(AM)
diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm
index 03760ad70dc..09030f10ea9 100644
--- a/code/game/objects/items/toys.dm
+++ b/code/game/objects/items/toys.dm
@@ -452,6 +452,7 @@
pop_burst()
/obj/item/toy/snappop/Crossed(H as mob|obj)
+ . = ..()
if(ishuman(H) || issilicon(H)) //i guess carp and shit shouldn't set them off
var/mob/living/carbon/M = H
if(issilicon(H) || M.m_intent == MOVE_INTENT_RUN)
diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm
index 4207dfc413f..39f0a1d4b5e 100644
--- a/code/game/objects/structures/tables_racks.dm
+++ b/code/game/objects/structures/tables_racks.dm
@@ -237,13 +237,13 @@
UnregisterSignal(source, COMSIG_MOVABLE_MOVED)
/obj/structure/table/rolling/Moved(atom/OldLoc, Dir)
+ . = ..()
for(var/mob/M in OldLoc.contents)//Kidnap everyone on top
M.forceMove(loc)
for(var/x in attached_items)
var/atom/movable/AM = x
if(!AM.Move(loc))
RemoveItemFromTable(AM, AM.loc)
- return TRUE
/*
* Glass tables
diff --git a/code/game/objects/structures/traps.dm b/code/game/objects/structures/traps.dm
index f3013cda82a..f68a17063df 100644
--- a/code/game/objects/structures/traps.dm
+++ b/code/game/objects/structures/traps.dm
@@ -61,6 +61,7 @@
animate(src, alpha = initial(alpha), time = time_between_triggers)
/obj/structure/trap/Crossed(atom/movable/AM)
+ . = ..()
if(last_trigger + time_between_triggers > world.time)
return
// Don't want the traps triggered by sparks, ghosts or projectiles.
diff --git a/code/modules/assembly/holder.dm b/code/modules/assembly/holder.dm
index eb31d9faf27..34d193bc198 100644
--- a/code/modules/assembly/holder.dm
+++ b/code/modules/assembly/holder.dm
@@ -67,6 +67,7 @@
master.update_icon()
/obj/item/assembly_holder/Crossed(atom/movable/AM as mob|obj)
+ . = ..()
if(a_left)
a_left.Crossed(AM)
if(a_right)
diff --git a/code/modules/assembly/infrared.dm b/code/modules/assembly/infrared.dm
index 8099d18fb93..23de27399b5 100644
--- a/code/modules/assembly/infrared.dm
+++ b/code/modules/assembly/infrared.dm
@@ -228,6 +228,7 @@
var/obj/item/assembly/infra/master
/obj/effect/beam/i_beam/Crossed(atom/movable/AM as mob|obj)
+ . = ..()
if(istype(AM, /obj/effect/beam))
return
if (isitem(AM))
diff --git a/code/modules/awaymissions/capture_the_flag.dm b/code/modules/awaymissions/capture_the_flag.dm
index 2d205394955..6d33ad62e63 100644
--- a/code/modules/awaymissions/capture_the_flag.dm
+++ b/code/modules/awaymissions/capture_the_flag.dm
@@ -613,6 +613,7 @@
QDEL_IN(src, AMMO_DROP_LIFETIME)
/obj/effect/ctf/ammo/Crossed(atom/movable/AM)
+ . = ..()
reload(AM)
/obj/effect/ctf/ammo/Bump(atom/A)
diff --git a/code/modules/awaymissions/mission_code/wildwest.dm b/code/modules/awaymissions/mission_code/wildwest.dm
index 1aa70547441..6679125ad6e 100644
--- a/code/modules/awaymissions/mission_code/wildwest.dm
+++ b/code/modules/awaymissions/mission_code/wildwest.dm
@@ -127,6 +127,7 @@
var/triggered = 0
/obj/effect/meatgrinder/Crossed(atom/movable/AM)
+ . = ..()
Bumped(AM)
/obj/effect/meatgrinder/Bumped(atom/movable/AM)
diff --git a/code/modules/events/spacevine.dm b/code/modules/events/spacevine.dm
index 4231eb71952..f6135348ba7 100644
--- a/code/modules/events/spacevine.dm
+++ b/code/modules/events/spacevine.dm
@@ -351,6 +351,7 @@
playsound(src.loc, 'sound/items/welder.ogg', 100, TRUE)
/obj/structure/spacevine/Crossed(atom/movable/AM)
+ . = ..()
if(!isliving(AM))
return
for(var/datum/spacevine_mutation/SM in mutations)
diff --git a/code/modules/fields/turf_objects.dm b/code/modules/fields/turf_objects.dm
index 4d3a4cf4b70..f8d139a45dd 100644
--- a/code/modules/fields/turf_objects.dm
+++ b/code/modules/fields/turf_objects.dm
@@ -29,6 +29,7 @@
return parent.field_turf_canpass(AM, src, target)
/obj/effect/abstract/proximity_checker/advanced/field_turf/Crossed(atom/movable/AM)
+ . = ..()
if(parent)
return parent.field_turf_crossed(AM, src)
return TRUE
@@ -53,6 +54,7 @@
return parent.field_edge_canpass(AM, src, target)
/obj/effect/abstract/proximity_checker/advanced/field_edge/Crossed(atom/movable/AM)
+ . = ..()
if(parent)
return parent.field_edge_crossed(AM, src)
return TRUE
diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm
index bbfcdc96b1a..ebf752b8088 100644
--- a/code/modules/flufftext/Hallucination.dm
+++ b/code/modules/flufftext/Hallucination.dm
@@ -134,6 +134,7 @@ GLOBAL_LIST_INIT(hallucination_list, list(
Show()
/obj/effect/hallucination/simple/Moved(atom/OldLoc, Dir)
+ . = ..()
Show()
/obj/effect/hallucination/simple/Destroy()
@@ -1082,6 +1083,7 @@ GLOBAL_LIST_INIT(hallucination_list, list(
target.client.images += image
/obj/effect/hallucination/danger/lava/Crossed(atom/movable/AM)
+ . = ..()
if(AM == target)
target.adjustStaminaLoss(20)
new /datum/hallucination/fire(target)
@@ -1095,6 +1097,7 @@ GLOBAL_LIST_INIT(hallucination_list, list(
target.client.images += image
/obj/effect/hallucination/danger/chasm/Crossed(atom/movable/AM)
+ . = ..()
if(AM == target)
if(istype(target, /obj/effect/dummy/phased_mob))
return
@@ -1124,6 +1127,7 @@ GLOBAL_LIST_INIT(hallucination_list, list(
target.client.images += image
/obj/effect/hallucination/danger/anomaly/Crossed(atom/movable/AM)
+ . = ..()
if(AM == target)
new /datum/hallucination/shock(target)
diff --git a/code/modules/hydroponics/grown/towercap.dm b/code/modules/hydroponics/grown/towercap.dm
index a85b7ba05e3..d5e6a33ff2e 100644
--- a/code/modules/hydroponics/grown/towercap.dm
+++ b/code/modules/hydroponics/grown/towercap.dm
@@ -246,6 +246,7 @@
StartBurning()
/obj/structure/bonfire/Crossed(atom/movable/AM)
+ . = ..()
if(burning & !grill)
Burn()
diff --git a/code/modules/hydroponics/hydroitemdefines.dm b/code/modules/hydroponics/hydroitemdefines.dm
index 4853843213a..691c7cc5a9d 100644
--- a/code/modules/hydroponics/hydroitemdefines.dm
+++ b/code/modules/hydroponics/hydroitemdefines.dm
@@ -76,6 +76,7 @@
resistance_flags = FLAMMABLE
/obj/item/cultivator/rake/Crossed(atom/movable/AM)
+ . = ..()
if(!ishuman(AM))
return
var/mob/living/carbon/human/H = AM
diff --git a/code/modules/mob/living/carbon/alien/special/facehugger.dm b/code/modules/mob/living/carbon/alien/special/facehugger.dm
index eb9133697c4..53b5afe1df4 100644
--- a/code/modules/mob/living/carbon/alien/special/facehugger.dm
+++ b/code/modules/mob/living/carbon/alien/special/facehugger.dm
@@ -89,8 +89,8 @@
Attach(M)
/obj/item/clothing/mask/facehugger/Crossed(atom/target)
+ . = ..()
HasProximity(target)
- return
/obj/item/clothing/mask/facehugger/on_found(mob/finder)
if(stat == CONSCIOUS)
diff --git a/code/modules/mob/living/simple_animal/guardian/types/ranged.dm b/code/modules/mob/living/simple_animal/guardian/types/ranged.dm
index 034943b0cc3..17018e55266 100644
--- a/code/modules/mob/living/simple_animal/guardian/types/ranged.dm
+++ b/code/modules/mob/living/simple_animal/guardian/types/ranged.dm
@@ -112,6 +112,7 @@
/obj/effect/snare/Crossed(AM as mob|obj)
+ . = ..()
if(isliving(AM) && spawner && spawner.summoner && AM != spawner && !spawner.hasmatchingsummoner(AM))
to_chat(spawner.summoner, "[AM] has crossed surveillance snare, [name].")
var/list/guardians = spawner.summoner.hasparasites()
diff --git a/code/modules/mob/living/simple_animal/hostile/cockroach.dm b/code/modules/mob/living/simple_animal/hostile/cockroach.dm
index f55fa50b2b5..cc57f2534cf 100644
--- a/code/modules/mob/living/simple_animal/hostile/cockroach.dm
+++ b/code/modules/mob/living/simple_animal/hostile/cockroach.dm
@@ -62,6 +62,7 @@
..()
/mob/living/simple_animal/hostile/cockroach/Crossed(var/atom/movable/AM)
+ . = ..()
if(ismob(AM))
if(isliving(AM))
var/mob/living/A = AM
diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/frog.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/frog.dm
index 8f9a9ad597e..a2bea19e534 100644
--- a/code/modules/mob/living/simple_animal/hostile/retaliate/frog.dm
+++ b/code/modules/mob/living/simple_animal/hostile/retaliate/frog.dm
@@ -42,6 +42,7 @@
butcher_results = list(/obj/item/reagent_containers/food/snacks/nugget = 5)
/mob/living/simple_animal/hostile/retaliate/frog/Crossed(AM as mob|obj)
+ . = ..()
if(!stat && isliving(AM))
var/mob/living/L = AM
if(L.mob_size > MOB_SIZE_TINY)
diff --git a/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm b/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm
index 393690cfcf7..9e5be8dcb68 100644
--- a/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm
+++ b/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm
@@ -38,6 +38,7 @@
/obj/effect/ebeam/vine/Crossed(atom/movable/AM)
+ . = ..()
if(isliving(AM))
var/mob/living/L = AM
if(!("vines" in L.faction))
diff --git a/code/modules/power/singularity/containment_field.dm b/code/modules/power/singularity/containment_field.dm
index 5900286f860..71c899b7198 100644
--- a/code/modules/power/singularity/containment_field.dm
+++ b/code/modules/power/singularity/containment_field.dm
@@ -65,6 +65,7 @@
return ..()
/obj/machinery/field/containment/Crossed(atom/movable/AM)
+ . = ..()
if(isliving(AM))
shock(AM)
diff --git a/code/modules/power/singularity/particle_accelerator/particle.dm b/code/modules/power/singularity/particle_accelerator/particle.dm
index 57f4a77fc2c..050d31b37c2 100644
--- a/code/modules/power/singularity/particle_accelerator/particle.dm
+++ b/code/modules/power/singularity/particle_accelerator/particle.dm
@@ -44,6 +44,7 @@
movement_range = 0
/obj/effect/accelerated_particle/Crossed(atom/A)
+ . = ..()
if(isliving(A))
toxmob(A)
diff --git a/code/modules/ruins/objects_and_mobs/necropolis_gate.dm b/code/modules/ruins/objects_and_mobs/necropolis_gate.dm
index ef8a53ea4c5..82e34607e02 100644
--- a/code/modules/ruins/objects_and_mobs/necropolis_gate.dm
+++ b/code/modules/ruins/objects_and_mobs/necropolis_gate.dm
@@ -264,6 +264,7 @@ GLOBAL_DATUM(necropolis_gate, /obj/structure/necropolis_gate/legion_gate)
return
/obj/structure/stone_tile/Crossed(atom/movable/AM)
+ . = ..()
if(falling || fallen)
return
var/turf/T = get_turf(src)
diff --git a/code/modules/shuttle/special.dm b/code/modules/shuttle/special.dm
index 90ac6ac5d54..11c438b622d 100644
--- a/code/modules/shuttle/special.dm
+++ b/code/modules/shuttle/special.dm
@@ -233,7 +233,7 @@
if(!isliving(mover)) //No stowaways
return FALSE
-/obj/machinery/scanner_gate/luxury_shuttle/Crossed(atom/movable/AM)
+/obj/machinery/scanner_gate/luxury_shuttle/auto_scan(atom/movable/AM)
return
/obj/machinery/scanner_gate/luxury_shuttle/attackby(obj/item/W, mob/user, params)
diff --git a/code/modules/spells/spell_types/spacetime_distortion.dm b/code/modules/spells/spell_types/spacetime_distortion.dm
index aaa9c2fc8ef..2c3254b8daf 100644
--- a/code/modules/spells/spell_types/spacetime_distortion.dm
+++ b/code/modules/spells/spell_types/spacetime_distortion.dm
@@ -102,6 +102,7 @@
busy = FALSE
/obj/effect/cross_action/spacetime_dist/Crossed(atom/movable/AM)
+ . = ..()
if(!busy)
walk_link(AM)