diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm
index e1bb6d7bb63..3166cad3f75 100644
--- a/code/game/machinery/cryopod.dm
+++ b/code/game/machinery/cryopod.dm
@@ -110,7 +110,7 @@
visible_message("The console beeps happily as it disgorges \the [I].", 3)
- I.loc = get_turf(src)
+ I.forceMove(get_turf(src))
frozen_items -= I
else if(href_list["allitems"])
@@ -123,7 +123,7 @@
visible_message("The console beeps happily as it disgorges the desired objects.", 3)
for(var/obj/item/I in frozen_items)
- I.loc = get_turf(src)
+ I.forceMove(get_turf(src))
frozen_items -= I
src.updateUsrDialog()
@@ -210,7 +210,7 @@
/obj/machinery/cryopod/Destroy()
if(occupant)
- occupant.loc = loc
+ occupant.forceMove(loc)
occupant.resting = 1
..()
@@ -272,7 +272,7 @@
qdel(R.mmi)
for(var/obj/item/I in R.module) // the tools the borg has; metal, glass, guns etc
for(var/obj/item/O in I) // the things inside the tools, if anything; mainly for janiborg trash bags
- O.loc = R
+ O.forceMove(R)
qdel(I)
qdel(R.module)
@@ -284,13 +284,13 @@
//Drop all items into the pod.
for(var/obj/item/W in occupant)
occupant.drop_from_inventory(W)
- W.loc = src
+ W.forceMove(src)
if(W.contents.len) //Make sure we catch anything not handled by qdel() on the items.
for(var/obj/item/O in W.contents)
if(istype(O,/obj/item/weapon/storage/internal)) //Stop eating pockets, you fuck!
continue
- O.loc = src
+ O.forceMove(src)
//Delete all items not on the preservation list.
var/list/items = src.contents.Copy()
@@ -300,10 +300,18 @@
for(var/obj/item/W in items)
var/preserve = null
- for(var/T in preserve_items)
- if(istype(W,T))
+ // Snowflaaaake.
+ if(istype(W, /obj/item/device/mmi))
+ var/obj/item/device/mmi/brain = W
+ if(brain.brainmob && brain.brainmob.client && brain.brainmob.key)
preserve = 1
- break
+ else
+ continue
+ else
+ for(var/T in preserve_items)
+ if(istype(W,T))
+ preserve = 1
+ break
if(!preserve)
qdel(W)
@@ -312,7 +320,7 @@
control_computer.frozen_items += W
W.loc = null
else
- W.loc = src.loc
+ W.forceMove(src.loc)
//Update any existing objectives involving this mob.
for(var/datum/objective/O in all_objectives)
@@ -402,7 +410,7 @@
if(do_after(user, 20))
if(!M || !G || !G:affecting) return
- M.loc = src
+ M.forceMove(src)
if(M.client)
M.client.perspective = EYE_PERSPECTIVE
@@ -438,7 +446,7 @@
if(announce) items -= announce
for(var/obj/item/W in items)
- W.loc = get_turf(src)
+ W.forceMove(get_turf(src))
src.go_out()
add_fingerprint(usr)
@@ -477,7 +485,7 @@
usr.stop_pulling()
usr.client.perspective = EYE_PERSPECTIVE
usr.client.eye = src
- usr.loc = src
+ usr.forceMove(src)
set_occupant(usr)
icon_state = occupied_icon_state
@@ -500,7 +508,7 @@
occupant.client.eye = src.occupant.client.mob
occupant.client.perspective = MOB_PERSPECTIVE
- occupant.loc = get_turf(src)
+ occupant.forceMove(get_turf(src))
set_occupant(null)
icon_state = base_icon_state
diff --git a/code/modules/projectiles/targeting/targeting_overlay.dm b/code/modules/projectiles/targeting/targeting_overlay.dm
index 8029b1c4592..48eebf083af 100644
--- a/code/modules/projectiles/targeting/targeting_overlay.dm
+++ b/code/modules/projectiles/targeting/targeting_overlay.dm
@@ -112,7 +112,8 @@ obj/aiming_overlay/proc/update_aiming_deferred()
update_icon()
var/cancel_aim = 1
- if(!(aiming_with in owner) || (owner.l_hand != aiming_with && owner.r_hand != aiming_with))
+
+ if(!(aiming_with in owner) || (istype(owner, /mob/living/carbon/human) && (owner.l_hand != aiming_with && owner.r_hand != aiming_with)))
owner << "You must keep hold of your weapon!"
else if(!aiming_at || !istype(aiming_at.loc, /turf))
owner << "You have lost sight of your target!"