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!"