diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm
index 141ad4d5405..196ce0cbb0b 100644
--- a/code/game/objects/structures/tables_racks.dm
+++ b/code/game/objects/structures/tables_racks.dm
@@ -27,6 +27,7 @@
var/busy = 0
var/buildstackamount = 1
var/framestackamount = 2
+ var/mob/tableclimber
/obj/structure/table/New()
..()
@@ -219,6 +220,10 @@
/obj/structure/table/attack_hand(mob/living/user)
user.changeNext_move(CLICK_CD_MELEE)
+ if(tableclimber)
+ tableclimber.Weaken(2)
+ tableclimber.visible_message("[tableclimber.name] has been knocked off the table", "You've been knocked off the table", "You see [tableclimber.name] get knocked off the table")
+
/obj/structure/table/attack_tk() // no telehulk sorry
return
@@ -383,6 +388,7 @@
var/climb_time = 20
if(user.restrained()) //Table climbing takes twice as long when restrained.
climb_time *= 2
+ tableclimber = user
if(do_mob(user, user, climb_time))
if(src.loc) //Checking if table has been destroyed
user.pass_flags += PASSTABLE
@@ -392,7 +398,9 @@
"You climb onto [src].")
add_logs(user, src, "climbed onto")
user.Stun(2)
+ tableclimber = null
return 1
+ tableclimber = null
return 0
diff --git a/html/changelogs/Mandurrrh-tableclimbing.yml b/html/changelogs/Mandurrrh-tableclimbing.yml
new file mode 100644
index 00000000000..8fd674a954e
--- /dev/null
+++ b/html/changelogs/Mandurrrh-tableclimbing.yml
@@ -0,0 +1,9 @@
+
+author: Mandurrrh
+
+# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
+delete-after: True
+
+
+changes:
+ - rscadd: "Added the ability to stop table climbers by clicking the table if present."