From 17a58042c300a1da53f9f1434cf85b5a94539a29 Mon Sep 17 00:00:00 2001 From: CHOMPStation2StaffMirrorBot <94713762+CHOMPStation2StaffMirrorBot@users.noreply.github.com> Date: Thu, 29 May 2025 02:02:37 -0700 Subject: [PATCH] [MIRROR] vorepanel hotfix (#10970) Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com> --- code/__defines/vore_prefs.dm | 3 +- .../living/simple_mob/subtypes/vore/vore.dm | 1 + code/modules/vore/eating/mob_vr.dm | 1 + .../vorepanel_set_attribute.dm | 7 ++-- .../panel_databackend/vorepanel_vore_data.dm | 1 + code/modules/vore/eating/vore_vr.dm | 7 +++- code/modules/vore/eating/vorepanel_vr.dm | 5 +++ .../VorePanelCommonElements.tsx | 35 ++++++++++++++----- .../VoreBellySelectionAndCustomization.tsx | 3 ++ .../VorePanelMainTabs/VoreSoulcatcher.tsx | 23 ++++++++++-- .../VorePanelMainTabs/VoreUserGeneral.tsx | 11 +++++- .../OptionTab/BellyOptionsRight.tsx | 11 ++++-- .../VoreUserPreferencesAesthetic.tsx | 3 ++ .../tgui/interfaces/VorePanel/index.tsx | 6 +++- .../tgui/interfaces/VorePanel/types.ts | 4 ++- 15 files changed, 101 insertions(+), 20 deletions(-) diff --git a/code/__defines/vore_prefs.dm b/code/__defines/vore_prefs.dm index 8e1e1340b5..35e7b63546 100644 --- a/code/__defines/vore_prefs.dm +++ b/code/__defines/vore_prefs.dm @@ -57,4 +57,5 @@ target.vore_sprite_color = source.vore_sprite_color; \ target.belly_rub_target = source.belly_rub_target; \ \ - target.soulcatcher_pref_flags = source.soulcatcher_pref_flags; + target.soulcatcher_pref_flags = source.soulcatcher_pref_flags; \ + target.persistend_edit_mode = source.persistend_edit_mode; diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/vore.dm b/code/modules/mob/living/simple_mob/subtypes/vore/vore.dm index 8720272b8c..bf7bacf0e0 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/vore.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/vore.dm @@ -74,6 +74,7 @@ no_latejoin_prey_warning_persists = client.prefs_vr.no_latejoin_prey_warning_persists belly_rub_target = client.prefs_vr.belly_rub_target soulcatcher_pref_flags = client.prefs_vr.soulcatcher_pref_flags + persistend_edit_mode = client.prefs_vr.persistend_edit_mode /mob/living/simple_mob/proc/set_name() set name = "Set Name" diff --git a/code/modules/vore/eating/mob_vr.dm b/code/modules/vore/eating/mob_vr.dm index 0835950b8c..be2dd6b73c 100644 --- a/code/modules/vore/eating/mob_vr.dm +++ b/code/modules/vore/eating/mob_vr.dm @@ -86,6 +86,7 @@ var/no_latejoin_prey_warning_persists = FALSE //Do we save it? var/belly_rub_target = null var/soulcatcher_pref_flags = 0 //Default disabled + var/persistend_edit_mode = FALSE var/voice_freq = 42500 // Preference for character voice frequency var/emote_sound_mode = EMOTE_SOUND_VOICE_FREQ diff --git a/code/modules/vore/eating/panel_databackend/vorepanel_set_attribute.dm b/code/modules/vore/eating/panel_databackend/vorepanel_set_attribute.dm index 136daf3222..739850ea96 100644 --- a/code/modules/vore/eating/panel_databackend/vorepanel_set_attribute.dm +++ b/code/modules/vore/eating/panel_databackend/vorepanel_set_attribute.dm @@ -93,11 +93,14 @@ . = TRUE if("b_egg_name") var/new_egg_name = sanitize(params["val"], BELLIES_NAME_MAX, FALSE, TRUE, FALSE) - host.vore_selected.egg_name = new_egg_name + if(!new_egg_name) + host.vore_selected.egg_name = null + else + host.vore_selected.egg_name = new_egg_name . = TRUE if("b_egg_size") var/new_egg_size = text2num(params["val"]) - if(isnum(new_egg_size)) + if(!isnum(new_egg_size)) return FALSE if(new_egg_size == 0) //Disable. host.vore_selected.egg_size = 0 diff --git a/code/modules/vore/eating/panel_databackend/vorepanel_vore_data.dm b/code/modules/vore/eating/panel_databackend/vorepanel_vore_data.dm index b45c1c344d..364432cb87 100644 --- a/code/modules/vore/eating/panel_databackend/vorepanel_vore_data.dm +++ b/code/modules/vore/eating/panel_databackend/vorepanel_vore_data.dm @@ -178,6 +178,7 @@ "egg_type" = selected.egg_type, "egg_types" = GLOB.global_vore_egg_types, "egg_name" = selected.egg_name, + "egg_name_length" = BELLIES_NAME_MAX, "egg_size" = selected.egg_size, "recycling" = selected.recycling, "storing_nutrition" = selected.storing_nutrition, diff --git a/code/modules/vore/eating/vore_vr.dm b/code/modules/vore/eating/vore_vr.dm index f25534b818..64f1901364 100644 --- a/code/modules/vore/eating/vore_vr.dm +++ b/code/modules/vore/eating/vore_vr.dm @@ -92,6 +92,7 @@ var/belly_rub_target = null var/soulcatcher_pref_flags = 0 var/list/soulcatcher_prefs = list() + var/persistend_edit_mode = FALSE var/list/belly_prefs = list() var/vore_taste = "nothing in particular" @@ -248,6 +249,7 @@ belly_rub_target = json_from_file["belly_rub_target"] soulcatcher_pref_flags = json_from_file["soulcatcher_pref_flags"] soulcatcher_prefs = json_from_file["soulcatcher_prefs"] + persistend_edit_mode = json_from_file["persistend_edit_mode"] //Quick sanitize if(isnull(digestable)) @@ -377,6 +379,8 @@ soulcatcher_pref_flags = 0 if(isnull(soulcatcher_prefs)) soulcatcher_prefs = list() + if(isnull(persistend_edit_mode)) + persistend_edit_mode = FALSE return TRUE @@ -438,7 +442,8 @@ "no_latejoin_prey_warning_persists" = no_latejoin_prey_warning_persists, "belly_rub_target" = belly_rub_target, "soulcatcher_pref_flags" = soulcatcher_pref_flags, - "soulcatcher_prefs" = soulcatcher_prefs + "soulcatcher_prefs" = soulcatcher_prefs, + "persistend_edit_mode" = persistend_edit_mode ) //List to JSON diff --git a/code/modules/vore/eating/vorepanel_vr.dm b/code/modules/vore/eating/vorepanel_vr.dm index 2a93bbd4d4..6b2c9602f2 100644 --- a/code/modules/vore/eating/vorepanel_vr.dm +++ b/code/modules/vore/eating/vorepanel_vr.dm @@ -127,6 +127,7 @@ // General Data data["unsaved_changes"] = unsaved_changes data["active_tab"] = active_tab + data["persist_edit_mode"] = host.persistend_edit_mode // Inisde Data data["inside"] = get_inside_data(host) @@ -228,6 +229,10 @@ show_pictures = !show_pictures return TRUE + if("toggle_editmode_persistence") + host.persistend_edit_mode = !host.persistend_edit_mode + return TRUE + // Host is inside someone else, and is trying to interact with something else inside that person. if("pick_from_inside") return pick_from_inside(ui.user, params) diff --git a/tgui/packages/tgui/interfaces/VorePanel/VorePanelElements/VorePanelCommonElements.tsx b/tgui/packages/tgui/interfaces/VorePanel/VorePanelElements/VorePanelCommonElements.tsx index f9ab4f9e8d..d0f3847a59 100644 --- a/tgui/packages/tgui/interfaces/VorePanel/VorePanelElements/VorePanelCommonElements.tsx +++ b/tgui/packages/tgui/interfaces/VorePanel/VorePanelElements/VorePanelCommonElements.tsx @@ -1,4 +1,6 @@ -import { Box, Button } from 'tgui-core/components'; +import { useBackend } from 'tgui/backend'; +import { Box, Button, Stack } from 'tgui-core/components'; +import { type BooleanLike } from 'tgui-core/react'; export const VorePanelColorBox = (props: { back_color: string; @@ -34,16 +36,33 @@ export const VorePanelColorBox = (props: { export const VorePanelEditToggle = (props: { editMode: boolean; + persistEditMode: BooleanLike; toggleEditMode: React.Dispatch>; }) => { - const { editMode, toggleEditMode } = props; + const { act } = useBackend(); + const { editMode, persistEditMode, toggleEditMode } = props; return ( -