diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm
index 0492522389..4dca87cf99 100644
--- a/code/game/objects/structures/crates_lockers/crates.dm
+++ b/code/game/objects/structures/crates_lockers/crates.dm
@@ -68,10 +68,44 @@
src.opened = 1
for(var/mob/living/M in get_turf(src))
+
+ if(M.lying) return //No spamming this on people.
+
M.Weaken(5)
M << "\red You topple as \the [src] moves under you!"
- return 1
+ if(prob(100))
+
+ var/mob/living/carbon/human/H = M
+ if(!istype(M))
+ H << "\red You land heavily!"
+ M.adjustBruteLoss(rand(15,30))
+ return
+
+ var/datum/organ/external/affecting
+
+ switch(pick(list("ankle","wrist","head","knee","elbow")))
+ if("ankle")
+ affecting = H.get_organ(pick("l_foot", "r_foot"))
+ if("knee")
+ affecting = H.get_organ(pick("l_leg", "r_leg"))
+ if("wrist")
+ affecting = H.get_organ(pick("l_hand", "r_hand"))
+ if("elbow")
+ affecting = H.get_organ(pick("l_arm", "r_arm"))
+ if("head")
+ affecting = H.get_organ("head")
+
+ if(affecting)
+ M << "\red You land heavily on your [affecting.display_name]!"
+ affecting.take_damage(rand(15,30), 0)
+ else
+ H << "\red You land heavily!"
+ H.adjustBruteLoss(rand(15,30))
+
+ H.UpdateDamageIcon()
+ H.updatehealth()
+ return
/obj/structure/closet/crate/close()
if(!src.opened)
diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm
index 584aba3d5a..aac7a2eb26 100644
--- a/code/game/objects/structures/tables_racks.dm
+++ b/code/game/objects/structures/tables_racks.dm
@@ -451,14 +451,48 @@
if(!flip(get_cardinal_dir(usr,src)))
usr << "It won't budge."
- else
- usr.visible_message("[usr] flips \the [src]!")
+ return
+ usr.visible_message("[usr] flips \the [src]!")
for(var/mob/living/M in get_turf(src))
+
+ if(M.lying) return //No spamming this on people.
+
M.Weaken(5)
M << "\red You topple as \the [src] moves under you!"
+ if(prob(100))
+
+ var/mob/living/carbon/human/H = M
+ if(!istype(M))
+ H << "\red You land heavily!"
+ M.adjustBruteLoss(rand(15,30))
+ return
+
+ var/datum/organ/external/affecting
+
+ switch(pick(list("ankle","wrist","head","knee","elbow")))
+ if("ankle")
+ affecting = H.get_organ(pick("l_foot", "r_foot"))
+ if("knee")
+ affecting = H.get_organ(pick("l_leg", "r_leg"))
+ if("wrist")
+ affecting = H.get_organ(pick("l_hand", "r_hand"))
+ if("elbow")
+ affecting = H.get_organ(pick("l_arm", "r_arm"))
+ if("head")
+ affecting = H.get_organ("head")
+
+ if(affecting)
+ M << "\red You land heavily on your [affecting.display_name]!"
+ affecting.take_damage(rand(15,30), 0)
+ else
+ H << "\red You land heavily!"
+ H.adjustBruteLoss(rand(15,30))
+
+ H.UpdateDamageIcon()
+ H.updatehealth()
return
/obj/structure/table/proc/unflipping_check(var/direction)