diff --git a/code/game/objects/items/weapons/RCL.dm b/code/game/objects/items/weapons/RCL.dm index 6b71865b801..3b372b2e5da 100644 --- a/code/game/objects/items/weapons/RCL.dm +++ b/code/game/objects/items/weapons/RCL.dm @@ -122,7 +122,7 @@ break /obj/item/rcl/on_mob_move(direct, mob/user) - if(active) + if(active && isturf(user.loc)) trigger(user) /obj/item/rcl/proc/trigger(mob/user) diff --git a/code/game/objects/items/weapons/defib.dm b/code/game/objects/items/weapons/defib.dm index c8a397d542c..46feb6f5c6f 100644 --- a/code/game/objects/items/weapons/defib.dm +++ b/code/game/objects/items/weapons/defib.dm @@ -359,6 +359,12 @@ /obj/item/shockpaddles/on_mob_move(dir, mob/user) if(defib) + if(!isturf(user.loc)) + // You went inside something. It blocks the cable. + // (This also means we don't have to listen for the + // surrounding object's movements.) + defib.remove_paddles(user) + var/turf/t = get_turf(defib) if(!t.Adjacent(user)) defib.remove_paddles(user) diff --git a/code/modules/awaymissions/mission_code/ruins/oldstation.dm b/code/modules/awaymissions/mission_code/ruins/oldstation.dm index 4b7dba8559b..e049211bb4b 100644 --- a/code/modules/awaymissions/mission_code/ruins/oldstation.dm +++ b/code/modules/awaymissions/mission_code/ruins/oldstation.dm @@ -174,9 +174,9 @@ helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ancient var/footstep = 1 -/obj/item/clothing/suit/space/hardsuit/ancient/on_mob_move() - var/mob/living/carbon/human/H = loc - if(!istype(H) || H.wear_suit != src) +/obj/item/clothing/suit/space/hardsuit/ancient/on_mob_move(dir, mob/mob) + var/mob/living/carbon/human/H = mob + if(!istype(H) || H.wear_suit != src || !isturf(H.loc)) return if(footstep > 1) playsound(src, 'sound/effects/servostep.ogg', 100, 1) diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm index efa9c46bb50..48520b2adaf 100644 --- a/code/modules/clothing/spacesuits/hardsuit.dm +++ b/code/modules/clothing/spacesuits/hardsuit.dm @@ -247,8 +247,8 @@ if(slot == SLOT_HUD_OUTER_SUIT) //we only give the mob the ability to toggle the helmet if he's wearing the hardsuit. return 1 -/obj/item/clothing/suit/space/hardsuit/on_mob_move(dir, mob) - if(jetpack) +/obj/item/clothing/suit/space/hardsuit/on_mob_move(dir, mob/mob) + if(jetpack && isturf(mob.loc)) jetpack.on_mob_move(dir, mob) //Syndicate hardsuit diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index bb28b7d0ab7..2f10c2ce209 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -1172,3 +1172,8 @@ dir = get_cardinal_dir(src, A) return return ..() + +/mob/living/Moved(OldLoc, Dir, Forced = FALSE) + . = ..() + for(var/obj/O in src) + O.on_mob_move(Dir, src) diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index 3a354a4e4c0..bbe5203c3c4 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -189,9 +189,6 @@ if(mob && . && mob.throwing) mob.throwing.finalize(FALSE) - for(var/obj/O in mob) - O.on_mob_move(direct, mob) - #undef CONFUSION_LIGHT_COEFFICIENT #undef CONFUSION_HEAVY_COEFFICIENT #undef CONFUSION_MAX diff --git a/code/modules/mod/mod_control.dm b/code/modules/mod/mod_control.dm index 1064d5f7945..1b77fd4aea8 100644 --- a/code/modules/mod/mod_control.dm +++ b/code/modules/mod/mod_control.dm @@ -241,7 +241,7 @@ return TRUE /obj/item/mod/control/on_mob_move(direction, mob/user) - if(!jetpack_active) + if(!jetpack_active || !isturf(user.loc)) return var/turf/T = get_step(src, GetOppositeDir(direction)) if(!has_gravity(T))