diff --git a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm
index a6454111397..982c606b629 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm
@@ -159,7 +159,7 @@ Doesn't work on other aliens/AI.*/
for(var/mob/M in src)
if(M in stomach_contents)
stomach_contents.Remove(M)
- M.loc = loc
+ M.forceMove(loc)
//Paralyse(10)
src.visible_message("[src] hurls out the contents of [p_their()] stomach!")
return
diff --git a/code/modules/mob/mob_grab.dm b/code/modules/mob/mob_grab.dm
index 93941d6e7d2..a4a52d4ef1e 100644
--- a/code/modules/mob/mob_grab.dm
+++ b/code/modules/mob/mob_grab.dm
@@ -387,15 +387,24 @@
if(M == assailant && state >= GRAB_AGGRESSIVE) //no eatin unless you have an agressive grab
if(checkvalid(user, affecting)) //wut
var/mob/living/carbon/attacker = user
+
+ if(affecting.buckled)
+ to_chat(user, "[affecting] is buckled!")
+ return
+
user.visible_message("[user] is attempting to devour \the [affecting]!")
if(!do_after(user, checktime(user, affecting), target = affecting)) return
+ if(affecting.buckled)
+ to_chat(user, "[affecting] is buckled!")
+ return
+
user.visible_message("[user] devours \the [affecting]!")
if(affecting.mind)
add_attack_logs(attacker, affecting, "Devoured")
- affecting.loc = user
+ affecting.forceMove(user)
attacker.stomach_contents.Add(affecting)
qdel(src)