From 210a4c4d584deb0046a7529bbd2b3180d0d6a4a9 Mon Sep 17 00:00:00 2001 From: Perakp Date: Tue, 31 Dec 2013 09:48:42 +0200 Subject: [PATCH 1/3] Now you can't unbuckle someone if you are buckled yourself. This affects shuttlegriff and alien nesting the most. --- .../game/objects/structures/stool_bed_chair_nest/alien_nests.dm | 2 +- code/game/objects/structures/stool_bed_chair_nest/bed.dm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) 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..404a5ef496b 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 @@ -10,7 +10,7 @@ /obj/structure/stool/bed/nest/manual_unbuckle(mob/user as mob) if(buckled_mob) if(buckled_mob.buckled == src) - if(buckled_mob != user) + if((buckled_mob != user) && (!user.buckled)) buckled_mob.visible_message(\ "[user.name] pulls [buckled_mob.name] free from the sticky nest!",\ "[user.name] pulls you free from the gelatinous resin.",\ 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..c730ce52a6e 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/bed.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/bed.dm @@ -47,7 +47,7 @@ /obj/structure/stool/bed/proc/manual_unbuckle(mob/user as mob) if(buckled_mob) if(buckled_mob.buckled == src) - if(buckled_mob != user) + if((buckled_mob != user) && (!user.buckled)) buckled_mob.visible_message(\ "\blue [buckled_mob.name] was unbuckled by [user.name]!",\ "You were unbuckled from [src] by [user.name].",\ From 4f6eba7f6a7854ec4b37eac20359204b664bea8a Mon Sep 17 00:00:00 2001 From: Perakp Date: Tue, 31 Dec 2013 10:25:12 +0200 Subject: [PATCH 2/3] A proper fix for unbuckling while buckled. --- .../stool_bed_chair_nest/alien_nests.dm | 15 ++++++++------- .../structures/stool_bed_chair_nest/bed.dm | 14 ++++++++------ 2 files changed, 16 insertions(+), 13 deletions(-) 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 404a5ef496b..2e6855b173b 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 @@ -10,13 +10,14 @@ /obj/structure/stool/bed/nest/manual_unbuckle(mob/user as mob) if(buckled_mob) if(buckled_mob.buckled == src) - if((buckled_mob != user) && (!user.buckled)) - 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() + if(buckled_mob != user) + if(!(user.buckled)) + 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...",\ 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 c730ce52a6e..7040271bbfb 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/bed.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/bed.dm @@ -47,17 +47,19 @@ /obj/structure/stool/bed/proc/manual_unbuckle(mob/user as mob) if(buckled_mob) if(buckled_mob.buckled == src) - if((buckled_mob != user) && (!user.buckled)) - 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(buckled_mob != user) + if(!(user.buckled)) + 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") + unbuckle() else buckled_mob.visible_message(\ "\blue [buckled_mob.name] unbuckled \himself!",\ "You unbuckle yourself from [src].",\ "You hear metal clanking") - unbuckle() + unbuckle() src.add_fingerprint(user) return From ac9228bae1580b30356e1b0bd275e909162111c8 Mon Sep 17 00:00:00 2001 From: Perakp Date: Wed, 1 Jan 2014 11:31:15 +0200 Subject: [PATCH 3/3] Added an else message to make it clear you can't unbuckle while buckled. Refractored code to reduce copypasta. --- .../stool_bed_chair_nest/alien_nests.dm | 39 ++++++++----------- .../structures/stool_bed_chair_nest/bed.dm | 29 +++++++++----- 2 files changed, 36 insertions(+), 32 deletions(-) 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 2e6855b173b..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,28 +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) - if(!(user.buckled)) - 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 7040271bbfb..ea2d0125f17 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/bed.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/bed.dm @@ -49,20 +49,29 @@ if(buckled_mob.buckled == src) if(buckled_mob != user) if(!(user.buckled)) - 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") - unbuckle() + 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."