From e5fcaedfe2d4f4a3d296dbfbfa5244db67307d61 Mon Sep 17 00:00:00 2001 From: AlManiak Date: Sun, 1 Dec 2024 16:00:00 +0100 Subject: [PATCH 1/5] Added buckling weight interactions Added creaking sound from hypercode --- GainStation13/sound/effects/crossed.ogg | Bin 0 -> 21559 bytes code/game/objects/buckling.dm | 42 ++++++++++++++++++++---- 2 files changed, 35 insertions(+), 7 deletions(-) create mode 100644 GainStation13/sound/effects/crossed.ogg diff --git a/GainStation13/sound/effects/crossed.ogg b/GainStation13/sound/effects/crossed.ogg new file mode 100644 index 0000000000000000000000000000000000000000..276d7f25a8fe5a28567c1d93f09f4ef235439224 GIT binary patch literal 21559 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[M] buckles [M.p_them()]self to [src].",\ - "You buckle yourself to [src].",\ - "You hear metal clanking.") - else + if(!.) + return + if (istype(M, /mob/living/carbon)) + var/mob/living/carbon/C = M + var/breaking_weight = M?.client?.prefs?.chair_breakage + if(isnull(breaking_weight) || (breaking_weight < 10) || (M != user) || ((breaking_weight / 3) > C.fatness)) M.visible_message(\ "[user] buckles [M] to [src]!",\ "[user] buckles you to [src]!",\ "You hear metal clanking.") + return + + if ((C.fatness >= breaking_weight) && istype(src, /obj/structure/chair)) //GS13 stuff - chair breaking mechanics + var/obj/structure/chair/chairToBreak = src + M.visible_message(\ + "[M] slowly buckles [M.p_them()]self to [src]. their movements slow and deliberate. As [M] settles into the seat, a sudden, violent crash echoes through the air. [M]'s massive weight mercilessly crushes the poor [src], reducing it to pieces! ",\ + "You slowly try to buckle yourself to [src]. But it breaks under your massive ass!",\ + "You hear metal clanking.") + playsound(loc, 'sound/effects/snap.ogg', 50, 1) + playsound(loc, 'sound/effects/woodhit.ogg', 50, 1) + playsound(loc, 'sound/effects/bodyfall4.ogg', 50, 1) + // Destroy the src object. If the chair can be deconstructed, do that as well.. + chairToBreak.deconstruct() + //src.Destroy() + else if(C.fatness >= (breaking_weight / 2)) + M.visible_message(\ + "[M] buckles [M.p_them()]self to the creaking [src]. The [src] protests audibly under the weight as [M]'s ample form settles onto its surface. .",\ + "You buckle yourself to [src].The [src] is cracking and is barely able to hold your weight ",\ + "You hear metal clanking.") + playsound(loc, 'GainStation13/sound/effects/crossed.ogg', 50, 1) + else if(C.fatness >= (breaking_weight / 3)) + M.visible_message(\ + "[M] buckles [M.p_them()]self to the creaking [src] as their weight spreads all over it.",\ + "You buckle yourself to [src].The [src] is creaking as you shuffle a bit ",\ + "You hear metal clanking.") + playsound(loc, 'GainStation13/sound/effects/crossed.ogg', 50, 1) + //GS13 End /atom/movable/proc/user_unbuckle_mob(mob/living/buckled_mob, mob/user) var/mob/living/M = unbuckle_mob(buckled_mob) From bf43f4d817f788db7acadfbecb3ac2772f96f3b3 Mon Sep 17 00:00:00 2001 From: AlManiak Date: Sun, 1 Dec 2024 18:04:47 +0100 Subject: [PATCH 2/5] Added airlock weight interaction --- .../code/machinery/doors/airlock_types.dm | 41 +++++++++++++++++++ tgstation.dme | 1 + 2 files changed, 42 insertions(+) create mode 100644 GainStation13/code/machinery/doors/airlock_types.dm diff --git a/GainStation13/code/machinery/doors/airlock_types.dm b/GainStation13/code/machinery/doors/airlock_types.dm new file mode 100644 index 0000000000..3f925583de --- /dev/null +++ b/GainStation13/code/machinery/doors/airlock_types.dm @@ -0,0 +1,41 @@ +//GS13 Port - stuckage code +/obj/machinery/door/airlock/Crossed(mob/living/carbon/L) + if(!istype(L)) + return ..() + + var/stuckage_weight = L?.client?.prefs?.stuckage + if(isnull(stuckage_weight) || (stuckage_weight < 10)) + return ..() // They aren't able to get stuck + + if(L.fatness > (stuckage_weight * 2)) + if(rand(1, 3) == 1) + L.doorstuck = 1 + L.visible_message("[L] gets stuck in the doorway!") + to_chat(L, "As you attempt to pass through \the [src], your ample curves get wedged in the narrow opening. You find yourself stuck in the [src] frame, struggling to free yourself from the tight squeeze.") + L.Stun(100, updating = TRUE, ignore_canstun = TRUE) + sleep(100) + L.doorstuck = 0 + L.Knockdown(1) + return ..() + + else if(L.fatness > stuckage_weight) + if(rand(1, 5) == 1) + L.doorstuck = 1 + L.visible_message("[L] gets stuck in the doorway!") + to_chat(L, "As you attempt to pass through \the [src], your ample curves get wedged in the narrow opening. You find yourself stuck in the [src] frame, struggling to free yourself from the tight squeeze.") + L.Stun(55, updating = TRUE, ignore_canstun = TRUE) + sleep(55) + L.doorstuck = 0 + L.Knockdown(1) + return ..() + if(rand(1, 5) == 5) + to_chat(L, "With great effort, you manage to squeeze your massive form through \the [src]. It's a tight fit, but you successfully navigate the narrow opening, barely avoiding getting stuck.") + return ..() + + else if(L.fatness > (stuckage_weight / 2)) + if(rand(1, 5) == 1) + L.visible_message("[L]'s hips brush against the doorway...") + to_chat(L, "As you pass through \the [src], you feel a slight brushing against your hips. The [src] frame accommodates your form, but it's a close fit..") + return ..() + + return ..() diff --git a/tgstation.dme b/tgstation.dme index 451ba7fbed..05eb38ec55 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -3977,6 +3977,7 @@ #include "GainStation13\code\machinery\feeding_tube.dm" #include "GainStation13\code\machinery\feeding_tube_industrial.dm" #include "GainStation13\code\machinery\gym.dm" +#include "GainStation13\code\machinery\doors\airlock_types.dm" #include "GainStation13\code\machinery\powered_quantum_pad.dm" #include "GainStation13\code\machinery\supply_teleporter.dm" #include "GainStation13\code\mechanics\calorite.dm" From 95ef6f6942570f68286b7eeeaa47056a6b68d044 Mon Sep 17 00:00:00 2001 From: AlManiak Date: Sun, 1 Dec 2024 19:38:37 +0100 Subject: [PATCH 3/5] replace sleep with timer --- .../code/machinery/doors/airlock_types.dm | 54 ++++++++++++++++--- 1 file changed, 48 insertions(+), 6 deletions(-) diff --git a/GainStation13/code/machinery/doors/airlock_types.dm b/GainStation13/code/machinery/doors/airlock_types.dm index 3f925583de..1b6c605ef7 100644 --- a/GainStation13/code/machinery/doors/airlock_types.dm +++ b/GainStation13/code/machinery/doors/airlock_types.dm @@ -13,9 +13,8 @@ L.visible_message("[L] gets stuck in the doorway!") to_chat(L, "As you attempt to pass through \the [src], your ample curves get wedged in the narrow opening. You find yourself stuck in the [src] frame, struggling to free yourself from the tight squeeze.") L.Stun(100, updating = TRUE, ignore_canstun = TRUE) - sleep(100) - L.doorstuck = 0 - L.Knockdown(1) + addtimer(CALLBACK(src, TYPE_PROC_REF(/obj/machinery/door, AsyncDoorstuckCall), L), 100) + //sleep(100) return ..() else if(L.fatness > stuckage_weight) @@ -24,9 +23,8 @@ L.visible_message("[L] gets stuck in the doorway!") to_chat(L, "As you attempt to pass through \the [src], your ample curves get wedged in the narrow opening. You find yourself stuck in the [src] frame, struggling to free yourself from the tight squeeze.") L.Stun(55, updating = TRUE, ignore_canstun = TRUE) - sleep(55) - L.doorstuck = 0 - L.Knockdown(1) + addtimer(CALLBACK(src, TYPE_PROC_REF(/obj/machinery/door, AsyncDoorstuckCall), L), 55) + //sleep(55) return ..() if(rand(1, 5) == 5) to_chat(L, "With great effort, you manage to squeeze your massive form through \the [src]. It's a tight fit, but you successfully navigate the narrow opening, barely avoiding getting stuck.") @@ -39,3 +37,47 @@ return ..() return ..() + +/obj/structure/mineral_door/Crossed(mob/living/carbon/L) + if(!istype(L)) + return ..() + + var/stuckage_weight = L?.client?.prefs?.stuckage + if(isnull(stuckage_weight) || (stuckage_weight < 10)) + return ..() // They aren't able to get stuck + + if(L.fatness > (stuckage_weight * 2)) + if(rand(1, 3) == 1) + L.doorstuck = 1 + L.visible_message("[L] gets stuck in the doorway!") + to_chat(L, "As you attempt to pass through \the [src], your ample curves get wedged in the narrow opening. You find yourself stuck in the [src] frame, struggling to free yourself from the tight squeeze.") + L.Stun(100, updating = TRUE, ignore_canstun = TRUE) + addtimer(CALLBACK(src, TYPE_PROC_REF(/obj/machinery/door, AsyncDoorstuckCall), L), 100) + //sleep(100) + return ..() + + else if(L.fatness > stuckage_weight) + if(rand(1, 5) == 1) + L.doorstuck = 1 + L.visible_message("[L] gets stuck in the doorway!") + to_chat(L, "As you attempt to pass through \the [src], your ample curves get wedged in the narrow opening. You find yourself stuck in the [src] frame, struggling to free yourself from the tight squeeze.") + L.Stun(55, updating = TRUE, ignore_canstun = TRUE) + addtimer(CALLBACK(src, TYPE_PROC_REF(/obj/machinery/door, AsyncDoorstuckCall), L), 55) + //sleep(55) + return ..() + if(rand(1, 5) == 5) + to_chat(L, "With great effort, you manage to squeeze your massive form through \the [src]. It's a tight fit, but you successfully navigate the narrow opening, barely avoiding getting stuck.") + return ..() + + else if(L.fatness > (stuckage_weight / 2)) + if(rand(1, 5) == 1) + L.visible_message("[L]'s hips brush against the doorway...") + to_chat(L, "As you pass through \the [src], you feel a slight brushing against your hips. The [src] frame accommodates your form, but it's a close fit..") + return ..() + + return ..() + +// Callback proc to replace sleep function +/obj/machinery/door/proc/AsyncDoorstuckCall(mob/living/carbon/L) + L.doorstuck = 0 + L.Knockdown(1) From d9e839c0835c67bfa085c2c05b1350c135b9d7f5 Mon Sep 17 00:00:00 2001 From: AlManiak Date: Mon, 2 Dec 2024 21:17:04 +0100 Subject: [PATCH 4/5] Added regular doors for stuckage --- .../code/machinery/doors/airlock_types.dm | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/GainStation13/code/machinery/doors/airlock_types.dm b/GainStation13/code/machinery/doors/airlock_types.dm index 1b6c605ef7..7e2d83ab6c 100644 --- a/GainStation13/code/machinery/doors/airlock_types.dm +++ b/GainStation13/code/machinery/doors/airlock_types.dm @@ -13,7 +13,7 @@ L.visible_message("[L] gets stuck in the doorway!") to_chat(L, "As you attempt to pass through \the [src], your ample curves get wedged in the narrow opening. You find yourself stuck in the [src] frame, struggling to free yourself from the tight squeeze.") L.Stun(100, updating = TRUE, ignore_canstun = TRUE) - addtimer(CALLBACK(src, TYPE_PROC_REF(/obj/machinery/door, AsyncDoorstuckCall), L), 100) + addtimer(CALLBACK(src, TYPE_PROC_REF(/obj/machinery/door/airlock/, AsyncDoorstuckCall), L), 100) //sleep(100) return ..() @@ -23,7 +23,7 @@ L.visible_message("[L] gets stuck in the doorway!") to_chat(L, "As you attempt to pass through \the [src], your ample curves get wedged in the narrow opening. You find yourself stuck in the [src] frame, struggling to free yourself from the tight squeeze.") L.Stun(55, updating = TRUE, ignore_canstun = TRUE) - addtimer(CALLBACK(src, TYPE_PROC_REF(/obj/machinery/door, AsyncDoorstuckCall), L), 55) + addtimer(CALLBACK(src, TYPE_PROC_REF(/obj/machinery/door/airlock/, AsyncDoorstuckCall), L), 55) //sleep(55) return ..() if(rand(1, 5) == 5) @@ -52,7 +52,7 @@ L.visible_message("[L] gets stuck in the doorway!") to_chat(L, "As you attempt to pass through \the [src], your ample curves get wedged in the narrow opening. You find yourself stuck in the [src] frame, struggling to free yourself from the tight squeeze.") L.Stun(100, updating = TRUE, ignore_canstun = TRUE) - addtimer(CALLBACK(src, TYPE_PROC_REF(/obj/machinery/door, AsyncDoorstuckCall), L), 100) + addtimer(CALLBACK(src, TYPE_PROC_REF(/obj/structure/mineral_door/, AsyncDoorstuckCall), L), 100) //sleep(100) return ..() @@ -62,7 +62,7 @@ L.visible_message("[L] gets stuck in the doorway!") to_chat(L, "As you attempt to pass through \the [src], your ample curves get wedged in the narrow opening. You find yourself stuck in the [src] frame, struggling to free yourself from the tight squeeze.") L.Stun(55, updating = TRUE, ignore_canstun = TRUE) - addtimer(CALLBACK(src, TYPE_PROC_REF(/obj/machinery/door, AsyncDoorstuckCall), L), 55) + addtimer(CALLBACK(src, TYPE_PROC_REF(/obj/structure/mineral_door/, AsyncDoorstuckCall), L), 55) //sleep(55) return ..() if(rand(1, 5) == 5) @@ -78,6 +78,11 @@ return ..() // Callback proc to replace sleep function -/obj/machinery/door/proc/AsyncDoorstuckCall(mob/living/carbon/L) +/obj/machinery/door/airlock/proc/AsyncDoorstuckCall(mob/living/carbon/L) + L.doorstuck = 0 + L.Knockdown(1) + +// Callback proc to replace sleep function +/obj/structure/mineral_door/proc/AsyncDoorstuckCall(mob/living/carbon/L) L.doorstuck = 0 L.Knockdown(1) From 03a06585e477add6c4d65af29d8c409bb87d072f Mon Sep 17 00:00:00 2001 From: AlManiak Date: Mon, 2 Dec 2024 21:58:25 +0100 Subject: [PATCH 5/5] Cleaned up nesting --- code/game/objects/buckling.dm | 67 ++++++++++++++++++----------------- 1 file changed, 34 insertions(+), 33 deletions(-) diff --git a/code/game/objects/buckling.dm b/code/game/objects/buckling.dm index 878ba68230..b90dcf1e60 100644 --- a/code/game/objects/buckling.dm +++ b/code/game/objects/buckling.dm @@ -149,40 +149,41 @@ . = buckle_mob(M, check_loc = check_loc) if(!.) return - if (istype(M, /mob/living/carbon)) - var/mob/living/carbon/C = M - var/breaking_weight = M?.client?.prefs?.chair_breakage - if(isnull(breaking_weight) || (breaking_weight < 10) || (M != user) || ((breaking_weight / 3) > C.fatness)) - M.visible_message(\ - "[user] buckles [M] to [src]!",\ - "[user] buckles you to [src]!",\ - "You hear metal clanking.") - return + if (!istype(M, /mob/living/carbon)) + return + var/mob/living/carbon/C = M + var/breaking_weight = M?.client?.prefs?.chair_breakage + if(isnull(breaking_weight) || (breaking_weight < 10) || (M != user) || ((breaking_weight / 3) > C.fatness)) + M.visible_message(\ + "[user] buckles [M] to [src]!",\ + "[user] buckles you to [src]!",\ + "You hear metal clanking.") + return - if ((C.fatness >= breaking_weight) && istype(src, /obj/structure/chair)) //GS13 stuff - chair breaking mechanics - var/obj/structure/chair/chairToBreak = src - M.visible_message(\ - "[M] slowly buckles [M.p_them()]self to [src]. their movements slow and deliberate. As [M] settles into the seat, a sudden, violent crash echoes through the air. [M]'s massive weight mercilessly crushes the poor [src], reducing it to pieces! ",\ - "You slowly try to buckle yourself to [src]. But it breaks under your massive ass!",\ - "You hear metal clanking.") - playsound(loc, 'sound/effects/snap.ogg', 50, 1) - playsound(loc, 'sound/effects/woodhit.ogg', 50, 1) - playsound(loc, 'sound/effects/bodyfall4.ogg', 50, 1) - // Destroy the src object. If the chair can be deconstructed, do that as well.. - chairToBreak.deconstruct() - //src.Destroy() - else if(C.fatness >= (breaking_weight / 2)) - M.visible_message(\ - "[M] buckles [M.p_them()]self to the creaking [src]. The [src] protests audibly under the weight as [M]'s ample form settles onto its surface. .",\ - "You buckle yourself to [src].The [src] is cracking and is barely able to hold your weight ",\ - "You hear metal clanking.") - playsound(loc, 'GainStation13/sound/effects/crossed.ogg', 50, 1) - else if(C.fatness >= (breaking_weight / 3)) - M.visible_message(\ - "[M] buckles [M.p_them()]self to the creaking [src] as their weight spreads all over it.",\ - "You buckle yourself to [src].The [src] is creaking as you shuffle a bit ",\ - "You hear metal clanking.") - playsound(loc, 'GainStation13/sound/effects/crossed.ogg', 50, 1) + if ((C.fatness >= breaking_weight) && istype(src, /obj/structure/chair)) //GS13 stuff - chair breaking mechanics + var/obj/structure/chair/chairToBreak = src + M.visible_message(\ + "[M] slowly buckles [M.p_them()]self to [src]. their movements slow and deliberate. As [M] settles into the seat, a sudden, violent crash echoes through the air. [M]'s massive weight mercilessly crushes the poor [src], reducing it to pieces! ",\ + "You slowly try to buckle yourself to [src]. But it breaks under your massive ass!",\ + "You hear metal clanking.") + playsound(loc, 'sound/effects/snap.ogg', 50, 1) + playsound(loc, 'sound/effects/woodhit.ogg', 50, 1) + playsound(loc, 'sound/effects/bodyfall4.ogg', 50, 1) + // Destroy the src object. If the chair can be deconstructed, do that as well.. + chairToBreak.deconstruct() + //src.Destroy() + else if(C.fatness >= (breaking_weight / 2)) + M.visible_message(\ + "[M] buckles [M.p_them()]self to the creaking [src]. The [src] protests audibly under the weight as [M]'s ample form settles onto its surface. .",\ + "You buckle yourself to [src].The [src] is cracking and is barely able to hold your weight ",\ + "You hear metal clanking.") + playsound(loc, 'GainStation13/sound/effects/crossed.ogg', 50, 1) + else if(C.fatness >= (breaking_weight / 3)) + M.visible_message(\ + "[M] buckles [M.p_them()]self to the creaking [src] as their weight spreads all over it.",\ + "You buckle yourself to [src].The [src] is creaking as you shuffle a bit ",\ + "You hear metal clanking.") + playsound(loc, 'GainStation13/sound/effects/crossed.ogg', 50, 1) //GS13 End /atom/movable/proc/user_unbuckle_mob(mob/living/buckled_mob, mob/user)