From 28577a116d9496ff9742b25754a14549bf05e1b6 Mon Sep 17 00:00:00 2001
From: Durandaal <125332955+Durandaal@users.noreply.github.com>
Date: Sat, 21 Mar 2026 22:14:49 -0500
Subject: [PATCH] private-struggle
---
code/modules/vore/eating/belly_obj_vr.dm | 75 +++++++++++++++-------
code/modules/vore/eating/exportpanel_vr.dm | 2 +
code/modules/vore/eating/vorepanel_vr.dm | 12 ++++
tgui/packages/tgui/interfaces/VorePanel.js | 12 +++-
4 files changed, 77 insertions(+), 24 deletions(-)
diff --git a/code/modules/vore/eating/belly_obj_vr.dm b/code/modules/vore/eating/belly_obj_vr.dm
index 068b7177638..326580cb172 100644
--- a/code/modules/vore/eating/belly_obj_vr.dm
+++ b/code/modules/vore/eating/belly_obj_vr.dm
@@ -66,6 +66,7 @@
var/override_min_prey_size = FALSE //If true, exceeding override prey number will override minimum size requirements
var/override_min_prey_num = 1 //We check belly contents against this to override min size
var/belly_overall_mult = 1 //Multiplier applied ontop of any other specific multipliers //RS Edit. Added from VS.
+ var/private_struggle = FALSE //RS Edit: Adds private struggling CHOMPStation PR7443
//RS Edit: Ports Slow Body Digestion, CHOMPStation PR 5161
var/slow_digestion = FALSE
var/slow_brutal = FALSE
@@ -395,7 +396,7 @@
"fullness3_messages",
"fullness4_messages",
"fullness5_messages", // End reagent bellies
- "autotransferchance", //RS Add Start || Port Chop 2821, 2979, 6155
+ "autotransferchance", //RS Add Start || Port Chomp 2821, 2979, 6155
"autotransferwait",
"autotransferlocation",
"autotransfer_enabled",
@@ -404,7 +405,8 @@
"autotransfer_min_amount",
"autotransfer_max_amount",
"belly_healthbar_overlay_theme",
- "belly_healthbar_overlay_color" //RS ADD END
+ "belly_healthbar_overlay_color", //RS ADD END
+ "private struggle" //RS add || CHOMPStation PR7443
)
if (save_digest_mode == 1)
@@ -1431,8 +1433,13 @@
struggle_outer_message = "[struggle_outer_message]"
struggle_user_message = "[struggle_user_message]"
- for(var/mob/M in hearers(4, owner))
- M.show_message(struggle_outer_message, 2) // hearable
+ //RS Edit start || Ports CHOMPStation PR7443
+ if(private_struggle)
+ to_chat(owner, struggle_outer_message)
+ else
+ for(var/mob/M in hearers(4, owner))
+ M.show_message(struggle_outer_message, 2) // hearable
+ //RS Edit end
//to_chat(R, struggle_user_message) RS remove - moved to bottom of proc
var/sound/struggle_snuggle
@@ -1445,14 +1452,17 @@
howner.vs_animate(belly_sprite_to_affect)
// End RS edit
- if(is_wet)
- if(!fancy_vore)
- struggle_snuggle = sound(get_sfx("classic_struggle_sounds"))
- else
- struggle_snuggle = sound(get_sfx("fancy_prey_struggle"))
- playsound(src, struggle_snuggle, vary = 1, vol = 75, falloff = VORE_SOUND_FALLOFF, preference = /datum/client_preference/digestion_noises, volume_channel = VOLUME_CHANNEL_VORE)
+ //RS Edit start || Ports CHOMPStation PR7443
+ if(!private_struggle)
+ if(is_wet)
+ if(!fancy_vore)
+ struggle_snuggle = sound(get_sfx("classic_struggle_sounds"))
+ else
+ struggle_snuggle = sound(get_sfx("fancy_prey_struggle"))
+ playsound(src, struggle_snuggle, vary = 1, vol = 75, falloff = VORE_SOUND_FALLOFF, preference = /datum/client_preference/digestion_noises, volume_channel = VOLUME_CHANNEL_VORE)
else
playsound(src, struggle_rustle, vary = 1, vol = 75, falloff = VORE_SOUND_FALLOFF, preference = /datum/client_preference/digestion_noises, volume_channel = VOLUME_CHANNEL_VORE)
+ //RS Edit end
if(escapable) //If the stomach has escapable enabled.
if(prob(escapechance)) //Let's have it check to see if the prey escapes first.
@@ -1495,7 +1505,11 @@
to_chat(R, escape_item_prey_message) //RS edit
to_chat(owner, escape_item_owner_message) //RS edit
for(var/mob/M in hearers(4, owner))
- M.show_message(escape_item_outside_message, 2) //RS edit
+ //RS Edit begin || CHOMPStation PR7443
+ if(!private_struggle)
+ for(var/mob/M in hearers(4, owner))
+ M.show_message(escape_item_outside_message, 2)
+ //RS Edit end
return
if(escapable && (R.loc == src) && !R.absorbed) //Does the owner still have escapable enabled?
//RS edit start - VS 15559
@@ -1528,8 +1542,11 @@
release_specific_contents(R)
to_chat(R, escape_prey_message) //RS edit
to_chat(owner, escape_owner_message) //RS edit
- for(var/mob/M in hearers(4, owner))
- M.show_message(escape_outside_message, 2) // RS edit
+ //RS Edit begin || CHOMPStation PR7443
+ if(!private_struggle)
+ for(var/mob/M in hearers(4, owner))
+ M.show_message(escape_outside_message, 2)
+ //RS Edit end
return
else if(!(R.loc == src)) //Aren't even in the belly. Quietly fail.
return
@@ -1731,20 +1748,29 @@
struggle_user_message = "[struggle_user_message]"
for(var/mob/M in hearers(4, owner))
- M.show_message(struggle_outer_message, 2) // hearable
+ //RS Edit || CHOMPStation PR7443
+ if(private_struggle)
+ to_chat(owner, struggle_outer_message)
+ else
+ for(var/mob/M in hearers(4, owner))
+ M.show_message(struggle_outer_message, 2) // hearable
+ //RS Edit end
//to_chat(R, struggle_user_message) RS remove - moved to bottom of proc
var/sound/struggle_snuggle
var/sound/struggle_rustle = sound(get_sfx("rustle"))
- if(is_wet)
- if(!fancy_vore)
- struggle_snuggle = sound(get_sfx("classic_struggle_sounds"))
+ //RS Edit start || CHOMPStation PR7443
+ if(!private_struggle)
+ if(is_wet)
+ if(!fancy_vore)
+ struggle_snuggle = sound(get_sfx("classic_struggle_sounds"))
+ else
+ struggle_snuggle = sound(get_sfx("fancy_prey_struggle"))
+ playsound(src, struggle_snuggle, vary = 1, vol = 75, falloff = VORE_SOUND_FALLOFF, preference = /datum/client_preference/digestion_noises, volume_channel = VOLUME_CHANNEL_VORE)
else
- struggle_snuggle = sound(get_sfx("fancy_prey_struggle"))
- playsound(src, struggle_snuggle, vary = 1, vol = 75, falloff = VORE_SOUND_FALLOFF, preference = /datum/client_preference/digestion_noises, volume_channel = VOLUME_CHANNEL_VORE)
- else
- playsound(src, struggle_rustle, vary = 1, vol = 75, falloff = VORE_SOUND_FALLOFF, preference = /datum/client_preference/digestion_noises, volume_channel = VOLUME_CHANNEL_VORE)
+ playsound(src, struggle_rustle, vary = 1, vol = 75, falloff = VORE_SOUND_FALLOFF, preference = /datum/client_preference/digestion_noises, volume_channel = VOLUME_CHANNEL_VORE)
+ //RS Edit end
//RS Edit Start - virgo port
//absorb resists
@@ -1808,8 +1834,11 @@
release_specific_contents(R)
to_chat(R, escape_absorbed_prey_message) //RS edit
to_chat(owner, escape_absorbed_owner_message) //RS edit
- for(var/mob/M in hearers(4, owner))
- M.show_message(escape_absorbed_outside_message, 2)//RS edit
+ //RS Edit begin || CHOMPStation PR7443
+ if(!private_struggle)
+ for(var/mob/M in hearers(4, owner))
+ M.show_message(escape_absorbed_outside_message, 2)
+ //RS Edit end
return
else if(!(R.loc == src)) //Aren't even in the belly. Quietly fail.
return
diff --git a/code/modules/vore/eating/exportpanel_vr.dm b/code/modules/vore/eating/exportpanel_vr.dm
index 45e01c9e788..2fa87586719 100644
--- a/code/modules/vore/eating/exportpanel_vr.dm
+++ b/code/modules/vore/eating/exportpanel_vr.dm
@@ -211,4 +211,6 @@
belly_data["autotransfer_min_amount"] = B.autotransfer_min_amount
belly_data["autotransfer_max_amount"] = B.autotransfer_max_amount
+ belly_data["private_struggle"] = B.private_struggle //RS Edit || Ports CHOMPStation PR7443
+
return data
diff --git a/code/modules/vore/eating/vorepanel_vr.dm b/code/modules/vore/eating/vorepanel_vr.dm
index 51a1e297c07..e35d578684f 100644
--- a/code/modules/vore/eating/vorepanel_vr.dm
+++ b/code/modules/vore/eating/vorepanel_vr.dm
@@ -261,6 +261,7 @@ var/global/list/belly_colorable_only_fullscreens = list("a_synth_flesh_mono",
"max_mush" = selected.max_mush,
"min_mush" = selected.min_mush,
// End reagent bellies
+ "private_struggle" = selected.private_struggle //RS Edit || Ports CHOMPStation PR7443
)
var/list/addons = list()
@@ -692,6 +693,12 @@ var/global/list/belly_colorable_only_fullscreens = list("a_synth_flesh_mono",
host.client.prefs_vr.autotransferable = host.autotransferable
unsaved_changes = TRUE
return TRUE //RS Add End
+ //RS Add start || Ports CHOMPStation PR7443
+ if("private_struggle")
+ host.vore_selected.private_struggle = !host.vore_selected.private_struggle
+ unsaved_changes = TRUE
+ return TRUE
+ //RS Add end
if("toggle_drop_vore")
host.drop_vore = !host.drop_vore
unsaved_changes = TRUE
@@ -1318,6 +1325,11 @@ var/global/list/belly_colorable_only_fullscreens = list("a_synth_flesh_mono",
host.vore_selected.release_sound = "Splatter"
// defaults as to avoid potential bugs
. = TRUE
+ //RS Edit || Ports CHOMPStation PR7443
+ if("b_private_struggle")
+ host.vore_selected.private_struggle = !host.vore_selected.private_struggle
+ . = TRUE
+ //RS Edit end
if("b_release")
var/choice
if(host.vore_selected.fancy_vore)
diff --git a/tgui/packages/tgui/interfaces/VorePanel.js b/tgui/packages/tgui/interfaces/VorePanel.js
index dc882b42d9a..55b606d5b65 100644
--- a/tgui/packages/tgui/interfaces/VorePanel.js
+++ b/tgui/packages/tgui/interfaces/VorePanel.js
@@ -566,6 +566,7 @@ const VoreSelectedBellyOptions = (props, context) => {
override_min_prey_size,
override_min_prey_num,
drainmode, // RS Edit || ports VOREStation PR 15876
+ private_struggle, // RS Edit || ports VOREStation PR 7443
} = belly;
return (
@@ -651,7 +652,16 @@ const VoreSelectedBellyOptions = (props, context) => {
content={capitalize(eating_privacy_local)}
/>
-
+
+