diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm
index 1a1ece0837b..199c3ddae49 100644
--- a/code/game/objects/structures/tables_racks.dm
+++ b/code/game/objects/structures/tables_racks.dm
@@ -264,23 +264,27 @@
canSmoothWith = null
health = 50
-/obj/structure/table/glass/tablepush(obj/item/I, mob/user)
- if(..())
- visible_message("[src] breaks!")
- playsound(src.loc, "shatter", 50, 1)
- new frame(src.loc)
- new /obj/item/weapon/shard(src.loc)
- qdel(src)
+/obj/structure/table/glass/Crossed(atom/movable/AM)
+ . = ..()
+ if(flags & NODECONSTRUCT)
+ return
+ // Don't break if they're just flying past
+ if(AM.throwing)
+ return
+ if(istype(AM, /mob/living))
+ var/mob/living/M = AM
+ if(has_gravity(M) && M.mob_size > MOB_SIZE_SMALL)
+ table_shatter(M)
-/obj/structure/table/glass/climb_structure(mob/user)
- if(..())
- visible_message("[src] breaks!")
- playsound(src.loc, "shatter", 50, 1)
- new frame(src.loc)
- new /obj/item/weapon/shard(src.loc)
- qdel(src)
- user.Weaken(5)
+/obj/structure/table/glass/proc/table_shatter(mob/M)
+ visible_message("[src] breaks!")
+ playsound(src.loc, "shatter", 50, 1)
+ new frame(src.loc)
+ var/obj/item/weapon/shard/S = new(src.loc)
+ S.throw_impact(M)
+ M.Weaken(5)
+ qdel(src)
/*
* Wooden tables