diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm
index 76c4249092..9faa8fc388 100644
--- a/code/modules/projectiles/projectile.dm
+++ b/code/modules/projectiles/projectile.dm
@@ -235,9 +235,18 @@
//if they have a neck grab on someone, that person gets hit instead
var/obj/item/weapon/grab/G = locate() in M
if(G && G.state >= GRAB_NECK)
- visible_message("\The [M] uses [G.affecting] as a shield!")
- if(Bump(G.affecting, forced=1))
- return //If Bump() returns 0 (keep going) then we continue on to attack M.
+ if(G.affecting.stat == DEAD)
+ var/shield_chance = min(80, (30 * (M.mob_size / 10))) //Small mobs have a harder time keeping a dead body as a shield than a human-sized one. Unathi would have an easier job, if they are made to be SIZE_LARGE in the future. -Mech
+ if(prob(shield_chance))
+ visible_message("\The [M] uses [G.affecting] as a shield!")
+ if(Bump(G.affecting, forced=1))
+ return
+ else
+ visible_message("\The [M] tries to use [G.affecting] as a shield, but fails!")
+ else
+ visible_message("\The [M] uses [G.affecting] as a shield!")
+ if(Bump(G.affecting, forced=1))
+ return //If Bump() returns 0 (keep going) then we continue on to attack M.
passthrough = !attack_mob(M, distance)
else