diff --git a/code/game/objects/buckling.dm b/code/game/objects/buckling.dm
index 998b213ff4d..70558da2ec7 100644
--- a/code/game/objects/buckling.dm
+++ b/code/game/objects/buckling.dm
@@ -142,18 +142,23 @@
. = buckle_mob(M, forced)
if(.)
+ var/reveal_message
if(!silent)
if(M == user)
+ reveal_message = "You come out of hiding and buckle yourself to [src]."
M.visible_message(\
"[M.name] buckles themselves to [src].",\
"You buckle yourself to [src].",\
"You hear metal clanking.")
else
+ reveal_message = "You are revealed as you are buckled to [src]."
M.visible_message(\
"[M.name] is buckled to [src] by [user.name]!",\
"You are buckled to [src] by [user.name]!",\
"You hear metal clanking.")
+ M.reveal(silent, reveal_message) //Reveal people so they aren't buckled to chairs from behind.
+
/atom/movable/proc/user_unbuckle_mob(mob/living/buckled_mob, mob/user)
var/mob/living/M = unbuckle_mob(buckled_mob)
if(M)
@@ -193,4 +198,3 @@
riding_datum.handle_vehicle_layer()
riding_datum.handle_vehicle_offsets()
//VOREStation Add End
-
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index edf1bdd6c6f..1e9fdbc3297 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -1555,9 +1555,8 @@
/mob/living/carbon/human/proc/update_icon_special() //For things such as teshari hiding and whatnot.
if(status_flags & HIDING) // Hiding? Carry on.
- if(stat == DEAD || paralysis || weakened || stunned || restrained()) //stunned/knocked down by something that isn't the rest verb? Note: This was tried with INCAPACITATION_STUNNED, but that refused to work.
- reset_plane_and_layer()
- status_flags &= ~HIDING
+ if(stat == DEAD || paralysis || weakened || stunned || restrained() || buckled || LAZYLEN(grabbed_by)) //stunned/knocked down by something that isn't the rest verb? Note: This was tried with INCAPACITATION_STUNNED, but that refused to work.
+ reveal(TRUE) //Reveal them silently.
else
layer = HIDING_LAYER
diff --git a/code/modules/mob/living/death.dm b/code/modules/mob/living/death.dm
index 9ea12b967c7..6ac15f79fd1 100644
--- a/code/modules/mob/living/death.dm
+++ b/code/modules/mob/living/death.dm
@@ -1,5 +1,6 @@
/mob/living/death()
clear_fullscreens()
+ reveal(TRUE) //Silently reveal the mob if they were hidden.
//VOREStation Edit - Mob spawner stuff
if(source_spawner)
source_spawner.get_death_report(src)
diff --git a/code/modules/mob/living/living_powers.dm b/code/modules/mob/living/living_powers.dm
index 1442c80f9ba..6cd5ebb1f5a 100644
--- a/code/modules/mob/living/living_powers.dm
+++ b/code/modules/mob/living/living_powers.dm
@@ -1,15 +1,20 @@
+/mob/living/proc/reveal(var/silent, var/message = "You have been revealed! You are no longer hidden.")
+ if(status_flags & HIDING)
+ status_flags &= ~HIDING
+ reset_plane_and_layer()
+ if(!silent && message)
+ to_chat(src, message)
+
/mob/living/proc/hide()
set name = "Hide"
set desc = "Allows to hide beneath tables or certain items. Toggled on or off."
set category = "Abilities"
- if(stat == DEAD || paralysis || weakened || stunned || restrained())
+ if(stat == DEAD || paralysis || weakened || stunned || restrained() || buckled || LAZYLEN(grabbed_by))
return
if(status_flags & HIDING)
- status_flags &= ~HIDING
- reset_plane_and_layer()
- to_chat(src,"You have stopped hiding.")
+ reveal("You have stopped hiding.")
else
status_flags |= HIDING
layer = HIDING_LAYER //Just above cables with their 2.44
diff --git a/code/modules/mob/mob_grab.dm b/code/modules/mob/mob_grab.dm
index b5cc72fd199..96e5378eb2c 100644
--- a/code/modules/mob/mob_grab.dm
+++ b/code/modules/mob/mob_grab.dm
@@ -47,6 +47,8 @@
return
affecting.grabbed_by += src
+ affecting.reveal("You are revealed as [assailant] grabs you.")
+ assailant.reveal("You reveal yourself as you grab [affecting].")
hud = new /obj/screen/grab(src)
hud.icon_state = "reinforce"