diff --git a/code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm b/code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm
index a45e2436b80..14f7a174d8d 100644
--- a/code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm
+++ b/code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm
@@ -7,27 +7,23 @@
icon_state = "nest"
var/health = 100
-/obj/structure/stool/bed/nest/manual_unbuckle(mob/user as mob)
- if(buckled_mob)
- if(buckled_mob.buckled == src)
- if(buckled_mob != user)
- buckled_mob.visible_message(\
- "[user.name] pulls [buckled_mob.name] free from the sticky nest!",\
- "[user.name] pulls you free from the gelatinous resin.",\
- "You hear squelching...")
- buckled_mob.pixel_y = 0
- unbuckle()
- else
- buckled_mob.visible_message(\
- "[buckled_mob.name] struggles to break free of the gelatinous resin...",\
- "You struggle to break free from the gelatinous resin...",\
- "You hear squelching...")
- spawn(1200)
- if(user && buckled_mob && user.buckled == src)
- buckled_mob.pixel_y = 0
- unbuckle()
- src.add_fingerprint(user)
- return
+/obj/structure/stool/bed/nest/unbuckle_other(mob/user as mob)
+ buckled_mob.visible_message(\
+ "[user.name] pulls [buckled_mob.name] free from the sticky nest!",\
+ "[user.name] pulls you free from the gelatinous resin.",\
+ "You hear squelching...")
+ buckled_mob.pixel_y = 0
+ unbuckle()
+
+/obj/structure/stool/bed/nest/unbuckle_myself(mob/user as mob)
+ buckled_mob.visible_message(\
+ "[buckled_mob.name] struggles to break free of the gelatinous resin...",\
+ "You struggle to break free from the gelatinous resin...",\
+ "You hear squelching...")
+ spawn(1200)
+ if(user && buckled_mob && user.buckled == src)
+ buckled_mob.pixel_y = 0
+ unbuckle()
/obj/structure/stool/bed/nest/buckle_mob(mob/M as mob, mob/user as mob)
if ( !ismob(M) || (get_dist(src, user) > 1) || (M.loc != src.loc) || user.restrained() || usr.stat || M.buckled || istype(user, /mob/living/silicon/pai) )
diff --git a/code/game/objects/structures/stool_bed_chair_nest/bed.dm b/code/game/objects/structures/stool_bed_chair_nest/bed.dm
index 5e6e273edad..ea2d0125f17 100644
--- a/code/game/objects/structures/stool_bed_chair_nest/bed.dm
+++ b/code/game/objects/structures/stool_bed_chair_nest/bed.dm
@@ -48,19 +48,30 @@
if(buckled_mob)
if(buckled_mob.buckled == src)
if(buckled_mob != user)
- buckled_mob.visible_message(\
- "\blue [buckled_mob.name] was unbuckled by [user.name]!",\
- "You were unbuckled from [src] by [user.name].",\
- "You hear metal clanking")
+ if(!(user.buckled))
+ unbuckle_other(user)
+ else
+ user << "You can't reach [src]!"
else
- buckled_mob.visible_message(\
- "\blue [buckled_mob.name] unbuckled \himself!",\
- "You unbuckle yourself from [src].",\
- "You hear metal clanking")
- unbuckle()
+ unbuckle_myself(user)
src.add_fingerprint(user)
return
+/obj/structure/stool/bed/proc/unbuckle_other(mob/user as mob)
+ buckled_mob.visible_message(\
+ "[buckled_mob.name] was unbuckled by [user.name]!",\
+ "You were unbuckled from [src] by [user.name].",\
+ "You hear metal clanking.")
+ unbuckle()
+
+
+/obj/structure/stool/bed/proc/unbuckle_myself(mob/user as mob)
+ buckled_mob.visible_message(\
+ "[buckled_mob.name] unbuckled \himself!",\
+ "You unbuckle yourself from [src].",\
+ "You hear metal clanking.")
+ unbuckle()
+
/obj/structure/stool/bed/proc/buckle_mob(mob/M as mob, mob/user as mob)
if (!ticker)
user << "You can't buckle anyone in before the game starts."