diff --git a/code/modules/mob/holder.dm b/code/modules/mob/holder.dm
index a6df246e51..d9d6b79663 100644
--- a/code/modules/mob/holder.dm
+++ b/code/modules/mob/holder.dm
@@ -29,11 +29,13 @@ var/list/holder_mob_icon_cache = list()
ASSERT(ismob(held))
. = ..()
held.forceMove(src)
+ held.reset_view(src)
START_PROCESSING(SSobj, src)
/obj/item/weapon/holder/Entered(mob/held, atom/OldLoc)
if(held_mob)
held.forceMove(get_turf(src))
+ held.reset_view(null)
return
ASSERT(ismob(held))
. = ..()
@@ -71,6 +73,7 @@ var/list/holder_mob_icon_cache = list()
held_mob.transform = original_transform
held_mob.vis_flags = original_vis_flags
held_mob.forceMove(get_turf(src))
+ held_mob.reset_view(null)
held_mob = null
/obj/item/weapon/holder/throw_at(atom/target, range, speed, thrower)
@@ -103,9 +106,12 @@ var/list/holder_mob_icon_cache = list()
holster.clear_holster()
to_chat(held, "You extricate yourself from [holster].")
forceMove(get_turf(src))
+ held.reset_view(null)
+
else if(isitem(loc))
to_chat(held, "You struggle free of [loc].")
forceMove(get_turf(src))
+ held.reset_view(null)
//Mob specific holders.
/obj/item/weapon/holder/diona
diff --git a/code/modules/vore/eating/belly_obj_vr.dm b/code/modules/vore/eating/belly_obj_vr.dm
index 19d8203ecf..df9f7db5ea 100644
--- a/code/modules/vore/eating/belly_obj_vr.dm
+++ b/code/modules/vore/eating/belly_obj_vr.dm
@@ -436,6 +436,9 @@
slip.slip_protect = world.time + 25 // This is to prevent slipping back into your pred if they stand on soap or something.
//Place them into our drop_location
M.forceMove(drop_location())
+ if(ismob(M))
+ var/mob/ourmob = M
+ ourmob.reset_view(null)
items_preserved -= M
//Special treatment for absorbed prey
@@ -476,6 +479,10 @@
soundfile = fancy_release_sounds[release_sound]
if(soundfile)
playsound(src, soundfile, vol = 100, vary = 1, falloff = VORE_SOUND_FALLOFF, preference = /datum/client_preference/eating_noises, volume_channel = VOLUME_CHANNEL_VORE)
+ //Should fix your view not following you out of mobs sometimes!
+ if(ismob(M))
+ var/mob/ourmob = M
+ ourmob.reset_view(null)
return 1
@@ -489,6 +496,9 @@
prey.buckled.unbuckle_mob()
prey.forceMove(src)
+ if(ismob(prey))
+ var/mob/ourmob = prey
+ ourmob.reset_view(owner)
owner.updateVRPanel()
if(isanimal(owner))
owner.update_icon()
@@ -785,6 +795,10 @@
if(M.loc != src)
M.forceMove(src)
+ if(ismob(M))
+ var/mob/ourmob = M
+ ourmob.reset_view(owner)
+
//Seek out absorbed prey of the prey, absorb them too.
//This in particular will recurse oddly because if there is absorbed prey of prey of prey...
//it will just move them up one belly. This should never happen though since... when they were
@@ -1096,6 +1110,9 @@
if(!(content in src) || !istype(target))
return
content.forceMove(target)
+ if(ismob(content))
+ var/mob/ourmob = content
+ ourmob.reset_view(owner)
if(isitem(content))
var/obj/item/I = content
if(istype(I,/obj/item/weapon/card/id))