From 8f16d351a2173aedbc621f96701d7fa4bf12d87a Mon Sep 17 00:00:00 2001 From: CHOMPStation2StaffMirrorBot <94713762+CHOMPStation2StaffMirrorBot@users.noreply.github.com> Date: Mon, 11 Aug 2025 05:29:43 -0700 Subject: [PATCH] [MIRROR] Vore death privacy pref (#11392) Co-authored-by: SatinIsle <98125273+SatinIsle@users.noreply.github.com> Co-authored-by: ShadowLarkens --- code/__defines/vore_prefs.dm | 1 + code/modules/mob/living/carbon/human/death.dm | 7 ++++--- code/modules/vore/eating/mob_vr.dm | 1 + .../panel_databackend/vorepanel_pref_data.dm | 1 + code/modules/vore/eating/vore_vr.dm | 2 ++ code/modules/vore/eating/vorepanel_vr.dm | 6 ++++++ .../VorePanelMainTabs/VoreUserPreferences.tsx | 14 ++++++++++++++ .../VoreUserPreferencesMechanical.tsx | 14 ++++++++++---- tgui/packages/tgui/interfaces/VorePanel/types.ts | 3 +++ 9 files changed, 42 insertions(+), 7 deletions(-) diff --git a/code/__defines/vore_prefs.dm b/code/__defines/vore_prefs.dm index 2d926e3572..6ee1f10cfb 100644 --- a/code/__defines/vore_prefs.dm +++ b/code/__defines/vore_prefs.dm @@ -15,6 +15,7 @@ target.digest_pain = source.digest_pain; \ target.noisy_full = source.noisy_full; \ target.eating_privacy_global = source.eating_privacy_global; \ + target.vore_death_privacy = source.vore_death_privacy; \ \ target.can_be_drop_prey = source.can_be_drop_prey; \ target.can_be_drop_pred = source.can_be_drop_pred; \ diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm index b7b9a65ceb..967abafd2b 100644 --- a/code/modules/mob/living/carbon/human/death.dm +++ b/code/modules/mob/living/carbon/human/death.dm @@ -88,9 +88,10 @@ var/area/A = get_area(src) if(!(A?.flag_check(AREA_BLOCK_SUIT_SENSORS)) && isbelly(loc)) // SSgame_master.adjust_danger(gibbed ? 40 : 20) // We don't use SSgame_master yet. - for(var/mob/observer/dead/O in GLOB.mob_list) - if(O.client?.prefs?.read_preference(/datum/preference/toggle/show_dsay)) - to_chat(O, span_deadsay(span_bold("[src]") + " has died in " + span_bold("[get_area(src)]") + ". [ghost_follow_link(src, O)] ")) + if(!isbelly(loc) || !vore_death_privacy) + for(var/mob/observer/dead/O in GLOB.mob_list) + if(O.client?.prefs?.read_preference(/datum/preference/toggle/show_dsay)) + to_chat(O, span_deadsay(span_bold("[src]") + " has died in " + span_bold("[get_area(src)]") + ". [ghost_follow_link(src, O)] ")) if(!gibbed && !isbelly(loc)) playsound(src, pick(get_species_sound(get_gendered_sound(src))["death"]), src.species.death_volume, 1, 20, volume_channel = VOLUME_CHANNEL_DEATH_SOUNDS) diff --git a/code/modules/vore/eating/mob_vr.dm b/code/modules/vore/eating/mob_vr.dm index c98eec0bd8..e1bc66df3d 100644 --- a/code/modules/vore/eating/mob_vr.dm +++ b/code/modules/vore/eating/mob_vr.dm @@ -26,6 +26,7 @@ var/show_vore_fx = TRUE // Show belly fullscreens var/selective_preference = DM_DEFAULT // Preference for selective bellymode var/eating_privacy_global = FALSE // Makes eating attempt/success messages only reach for subtle range if true, overwritten by belly-specific var + var/vore_death_privacy = FALSE // Chooses whether to announce prey death when digested to ghosts. var/allow_mimicry = TRUE // Allows mimicking their character var/allow_mind_transfer = FALSE //Allows ones mind to be taken over or swapped var/nutrition_message_visible = TRUE diff --git a/code/modules/vore/eating/panel_databackend/vorepanel_pref_data.dm b/code/modules/vore/eating/panel_databackend/vorepanel_pref_data.dm index 5cfeec8529..a1e2caf8ed 100644 --- a/code/modules/vore/eating/panel_databackend/vorepanel_pref_data.dm +++ b/code/modules/vore/eating/panel_databackend/vorepanel_pref_data.dm @@ -42,6 +42,7 @@ "consume_liquid_belly" = owner.consume_liquid_belly, "digest_pain" = owner.digest_pain, "eating_privacy_global" = owner.eating_privacy_global, + "vore_death_privacy" = owner.vore_death_privacy, "allow_mimicry" = owner.allow_mimicry, //Soulcatcher "soulcatcher_allow_capture" = owner.soulcatcher_pref_flags & SOULCATCHER_ALLOW_CAPTURE, diff --git a/code/modules/vore/eating/vore_vr.dm b/code/modules/vore/eating/vore_vr.dm index 38dfa3dab0..970a017dd0 100644 --- a/code/modules/vore/eating/vore_vr.dm +++ b/code/modules/vore/eating/vore_vr.dm @@ -47,6 +47,7 @@ var/permit_healbelly = TRUE var/noisy = FALSE var/eating_privacy_global = FALSE //Makes eating attempt/success messages only reach for subtle range if true, overwritten by belly-specific var + var/vore_death_privacy = FALSE //Makes it so that vore deaths don't get advertised to ghosts var/allow_mimicry = TRUE // These are 'modifier' prefs, do nothing on their own but pair with drop_prey/drop_pred settings. @@ -216,6 +217,7 @@ weight_message_visible = json_from_file["weight_message_visible"] weight_messages = json_from_file["weight_messages"] eating_privacy_global = json_from_file["eating_privacy_global"] + vore_death_privacy = json_from_file["vore_death_privacy"] allow_mimicry = json_from_file["allow_mimicry"] vore_sprite_color = json_from_file["vore_sprite_color"] allow_mind_transfer = json_from_file["allow_mind_transfer"] diff --git a/code/modules/vore/eating/vorepanel_vr.dm b/code/modules/vore/eating/vorepanel_vr.dm index a566bbad6a..656a30a40e 100644 --- a/code/modules/vore/eating/vorepanel_vr.dm +++ b/code/modules/vore/eating/vorepanel_vr.dm @@ -407,6 +407,12 @@ host.eating_privacy_global = host.eating_privacy_global unsaved_changes = TRUE return TRUE + if("toggle_death_privacy") + host.vore_death_privacy = !host.vore_death_privacy + if(host.client.prefs_vr) + host.vore_death_privacy = host.vore_death_privacy + unsaved_changes = TRUE + return TRUE if("toggle_mimicry") host.allow_mimicry = !host.allow_mimicry if(host.client.prefs_vr) diff --git a/tgui/packages/tgui/interfaces/VorePanel/VorePanelMainTabs/VoreUserPreferences.tsx b/tgui/packages/tgui/interfaces/VorePanel/VorePanelMainTabs/VoreUserPreferences.tsx index 3dff43773b..1249e4d9ff 100644 --- a/tgui/packages/tgui/interfaces/VorePanel/VorePanelMainTabs/VoreUserPreferences.tsx +++ b/tgui/packages/tgui/interfaces/VorePanel/VorePanelMainTabs/VoreUserPreferences.tsx @@ -44,6 +44,7 @@ export const VoreUserPreferences = (props: { allow_spontaneous_tf, allow_mind_transfer, eating_privacy_global, + vore_death_privacy, allow_mimicry, strip_mechanics_active, autotransferable, @@ -493,6 +494,19 @@ export const VoreUserPreferences = (props: { disabled: 'Global Vore Privacy: Loud', }, }, + vore_death_privacy: { + action: 'toggle_death_privacy', + test: vore_death_privacy, + tooltip: { + main: 'Sets whether your vore deaths are announced to ghosts', + enable: ' Click here to prevent announcing vore deaths', + disable: ' Click here to allow announcing vore deaths', + }, + content: { + enabled: 'Vore Death Privacy: Unannonced', + disabled: 'Vore Death Privacy: Announced', + }, + }, allow_mimicry: { action: 'toggle_mimicry', test: allow_mimicry, diff --git a/tgui/packages/tgui/interfaces/VorePanel/VoreUserPreferencesTabs/VoreUserPreferencesMechanical.tsx b/tgui/packages/tgui/interfaces/VorePanel/VoreUserPreferencesTabs/VoreUserPreferencesMechanical.tsx index 27905e8921..95ba10e562 100644 --- a/tgui/packages/tgui/interfaces/VorePanel/VoreUserPreferencesTabs/VoreUserPreferencesMechanical.tsx +++ b/tgui/packages/tgui/interfaces/VorePanel/VoreUserPreferencesTabs/VoreUserPreferencesMechanical.tsx @@ -93,23 +93,29 @@ export const VoreUserPreferencesMechanical = (props: { - + + + +