From 3f97143794419ce2f1b3f46a53745646e52564b2 Mon Sep 17 00:00:00 2001 From: CHOMPStation2 <58959929+CHOMPStation2@users.noreply.github.com> Date: Tue, 4 Jun 2024 15:00:02 -0700 Subject: [PATCH] [MIRROR] allow to only show suitable belly messages (#8476) Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com> Co-authored-by: Kashargul --- code/modules/vore/eating/belly_obj_vr.dm | 3 + code/modules/vore/eating/exportpanel_vr.dm | 1 + code/modules/vore/eating/vorepanel_vr.dm | 11 + .../modules/vore/eating/exportpanel_ch.dm | 1 + tgui/packages/tgui/interfaces/VorePanel.jsx | 912 ++++++++++------- .../tgui/interfaces/VorePanelExport.tsx | 3 + .../VoreSelectedBellyDescriptions.tsx | 931 +++++++++++------- 7 files changed, 1180 insertions(+), 682 deletions(-) diff --git a/code/modules/vore/eating/belly_obj_vr.dm b/code/modules/vore/eating/belly_obj_vr.dm index 5d8db414d0..28ed297040 100644 --- a/code/modules/vore/eating/belly_obj_vr.dm +++ b/code/modules/vore/eating/belly_obj_vr.dm @@ -11,6 +11,7 @@ /obj/belly name = "belly" // Name of this location desc = "It's a belly! You're in it!" // Flavor text description of inside sight/sound/smells/feels. + var/message_mode = FALSE // If all options for messages are shown var/vore_sound = "Gulp" // Sound when ingesting someone var/vore_verb = "ingest" // Verb for eating with this in messages var/release_verb = "expels" // Verb for releasing something from a stomach @@ -278,6 +279,7 @@ "name", "desc", "absorbed_desc", + "message_mode", "vore_sound", "vore_verb", "release_verb", @@ -2459,6 +2461,7 @@ //// Non-object variables dupe.name = name dupe.desc = desc + dupe.message_mode = message_mode dupe.absorbed_desc = absorbed_desc dupe.vore_sound = vore_sound dupe.vore_verb = vore_verb diff --git a/code/modules/vore/eating/exportpanel_vr.dm b/code/modules/vore/eating/exportpanel_vr.dm index f8ab64b58b..f0352cb985 100644 --- a/code/modules/vore/eating/exportpanel_vr.dm +++ b/code/modules/vore/eating/exportpanel_vr.dm @@ -43,6 +43,7 @@ addons.Add(flag_name) belly_data["addons"] = addons belly_data["item_mode"] = B.item_digest_mode + belly_data["message_mode"] = B.message_mode // Messages belly_data["struggle_messages_outside"] = list() for(var/msg in B.struggle_messages_outside) diff --git a/code/modules/vore/eating/vorepanel_vr.dm b/code/modules/vore/eating/vorepanel_vr.dm index ee9242d3ba..ab98dcd2c5 100644 --- a/code/modules/vore/eating/vorepanel_vr.dm +++ b/code/modules/vore/eating/vorepanel_vr.dm @@ -210,6 +210,7 @@ var/global/list/belly_colorable_only_fullscreens = list("a_synth_flesh_mono", var/obj/belly/selected = host.vore_selected selected_list = list( "belly_name" = selected.name, + "message_mode" = selected.message_mode, "is_wet" = selected.is_wet, "wet_loop" = selected.wet_loop, "mode" = selected.digest_mode, @@ -686,6 +687,13 @@ var/global/list/belly_colorable_only_fullscreens = list("a_synth_flesh_mono", if(new_item_mode in new_belly.item_digest_modes) new_belly.item_digest_mode = new_item_mode + if(isnum(belly_data["message_mode"])) + var/new_message_mode = belly_data["message_mode"] + if(new_message_mode == 0) + new_belly.message_mode = FALSE + if(new_message_mode == 1) + new_belly.message_mode = TRUE + if(islist(belly_data["addons"])) new_belly.mode_flags = 0 new_belly.slow_digestion = FALSE @@ -2589,6 +2597,9 @@ var/global/list/belly_colorable_only_fullscreens = list("a_synth_flesh_mono", host.vore_selected.name = new_name . = TRUE + if("b_message_mode") + host.vore_selected.message_mode = !host.vore_selected.message_mode + . = TRUE if("b_wetness") host.vore_selected.is_wet = !host.vore_selected.is_wet . = TRUE diff --git a/modular_chomp/code/modules/vore/eating/exportpanel_ch.dm b/modular_chomp/code/modules/vore/eating/exportpanel_ch.dm index 52a8ee350d..7162a30e56 100644 --- a/modular_chomp/code/modules/vore/eating/exportpanel_ch.dm +++ b/modular_chomp/code/modules/vore/eating/exportpanel_ch.dm @@ -51,6 +51,7 @@ addons.Add(flag_name) belly_data["addons"] = addons belly_data["item_mode"] = B.item_digest_mode + belly_data["message_mode"] = B.message_mode // Messages belly_data["struggle_messages_outside"] = list() diff --git a/tgui/packages/tgui/interfaces/VorePanel.jsx b/tgui/packages/tgui/interfaces/VorePanel.jsx index b1ad7b5f76..10d7d03a21 100644 --- a/tgui/packages/tgui/interfaces/VorePanel.jsx +++ b/tgui/packages/tgui/interfaces/VorePanel.jsx @@ -350,7 +350,16 @@ const VoreSelectedBellyDescriptions = (props) => { const { act } = useBackend(); const { belly } = props; - const { verb, release_verb, desc, absorbed_desc } = belly; + const { + verb, + release_verb, + desc, + absorbed_desc, + mode, + message_mode, + escapable, + interacts, + } = belly; return ( @@ -390,6 +399,19 @@ const VoreSelectedBellyDescriptions = (props) => { {release_verb} + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + {message_mode || escapable ? ( + <> + + + {(message_mode || + !!interacts.transferlocation || + !!interacts.transferlocation_secondary) && ( + + )} + {(message_mode || + interacts.digestchance > 0 || + interacts.absorbchance > 0) && ( + + )} + + ) : ( + '' + )} + {(message_mode || + mode === 'Digest' || + mode === 'Selective' || + mode === 'Absorb' || + mode === 'Unabsorb') && ( + + )} + + + + + + ); +}; + +const VoreSelectedBellyDescriptionsEscape = (props) => { + const { act } = useBackend(); + + const { message_mode, interacts } = props; + + return ( + + + + {(message_mode || interacts.escapechance > 0) && ( + <> + + + + + )} + + + + + + + + {(message_mode || interacts.escapechance_absorbed > 0) && ( + <> + + + + + )} + + + + ); +}; + +const VoreSelectedBellyDescriptionsTransfer = (props) => { + const { act } = useBackend(); + + const { message_mode, interacts } = props; + + return ( + + {(message_mode || !!interacts.transferlocation) && ( + <> + + + + )} + {(message_mode || !!interacts.transferlocation_secondary) && ( + <> + + + + )} + + ); +}; + +const VoreSelectedBellyDescriptionsInteractionChance = (props) => { + const { act } = useBackend(); + + const { message_mode, interacts } = props; + + return ( + + {(message_mode || interacts.digestchance > 0) && ( + <> + + + + )} + {(message_mode || interacts.absorbchance > 0) && ( + <> + + + + )} + + ); +}; + +const VoreSelectedBellyDescriptionsBellymode = (props) => { + const { act } = useBackend(); + + const { message_mode, mode } = props; + + return ( + + {(message_mode || mode === 'Digest' || mode === 'Selective') && ( + <> + + + + )} + {(message_mode || mode === 'Absorb' || mode === 'Selective') && ( + <> + + + + )} + {(message_mode || mode === 'Unabsorb') && ( + <> + + + + )} + + ); +}; + +const VoreSelectedBellyDescriptionsIdle = (props) => { + const { act } = useBackend(); + + const { message_mode, mode } = props; + + return ( + + {(message_mode || mode === 'Hold' || mode === 'Selective') && ( + <> + + + + )} + {(message_mode || mode === 'Digest' || mode === 'Selective') && ( + + )} + {(message_mode || mode === 'Absorb' || mode === 'Selective') && ( + + )} + {(message_mode || mode === 'Unabsorb') && ( + + )} + {(message_mode || mode === 'Drain' || mode === 'Selective') && ( + + )} + {(message_mode || mode === 'Heal') && ( + + )} + {(message_mode || mode === 'Size Steal') && ( + + )} + {(message_mode || mode === 'Shrink') && ( + + )} + {(message_mode || mode === 'Grow') && ( + + )} + {(message_mode || mode === 'Encase In Egg') && ( + + )} + + ); +}; + const VoreSelectedBellyOptions = (props) => { const { act, data } = useBackend(); diff --git a/tgui/packages/tgui/interfaces/VorePanelExport.tsx b/tgui/packages/tgui/interfaces/VorePanelExport.tsx index 402c54850d..f37b67304e 100644 --- a/tgui/packages/tgui/interfaces/VorePanelExport.tsx +++ b/tgui/packages/tgui/interfaces/VorePanelExport.tsx @@ -95,6 +95,7 @@ type Belly = { // General Information name: string; desc: string; + message_mode: BooleanLike; absorbed_desc: string; vore_verb: string; release_verb: string; @@ -260,6 +261,7 @@ const generateBellyString = (belly: Belly, index: number) => { // General Information name, desc, + message_mode, absorbed_desc, vore_verb, release_verb, @@ -443,6 +445,7 @@ const generateBellyString = (belly: Belly, index: number) => { result += '
'; result += '== Messages ==
'; + result +='Show All Interactive Messages: ' + (message_mode ? 'Yes' : 'No') + '
'; result += '
'; // Start Div messagesTabpanel result += '
'; result += '
'; diff --git a/tgui/packages/tgui/interfaces/chompstation/VorePanel/VoreSelectedBellyDescriptions.tsx b/tgui/packages/tgui/interfaces/chompstation/VorePanel/VoreSelectedBellyDescriptions.tsx index 5925163302..5e4b13a299 100644 --- a/tgui/packages/tgui/interfaces/chompstation/VorePanel/VoreSelectedBellyDescriptions.tsx +++ b/tgui/packages/tgui/interfaces/chompstation/VorePanel/VoreSelectedBellyDescriptions.tsx @@ -5,7 +5,19 @@ export const VoreSelectedBellyDescriptions = (props) => { const { act } = useBackend(); const { belly } = props; - const { verb, release_verb, desc, absorbed_desc } = belly; + const { + verb, + release_verb, + desc, + absorbed_desc, + mode, + message_mode, + escapable, + interacts, + autotransfer_enabled, + autotransfer, + emote_active, + } = belly; return ( @@ -45,6 +57,19 @@ export const VoreSelectedBellyDescriptions = (props) => { {release_verb} + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + {message_mode || escapable ? ( + <> + + + + ) : ( + '' + )} + {message_mode || + !!interacts.transferlocation || + !!interacts.transferlocation_secondary || + (autotransfer_enabled && + (!!autotransfer.autotransferlocation || + !!autotransfer.autotransferlocation_secondary)) ? ( + + ) : ( + '' + )} + {message_mode || + (escapable && + (interacts.digestchance > 0 || interacts.absorbchance > 0)) ? ( + + ) : ( + '' + )} + {(message_mode || + mode === 'Digest' || + mode === 'Selective' || + mode === 'Absorb' || + mode === 'Unabsorb') && ( + + )} + {emote_active ? ( + + ) : ( + '' + )} + + + + + ); +}; + +const VoreSelectedBellyDescriptionsEscape = (props) => { + const { act } = useBackend(); + + const { message_mode, interacts } = props; + + return ( + + + + {(message_mode || interacts.escapechance > 0) && ( + <> + + + + + )} + + + + + + + + {(message_mode || interacts.escapechance_absorbed > 0) && ( + <> + + + + + )} + + + + ); +}; + +const VoreSelectedBellyDescriptionsTransfer = (props) => { + const { act } = useBackend(); + + const { message_mode, interacts, autotransfer } = props; + + return ( + + {(message_mode || + !!interacts.transferlocation || + !!autotransfer.autotransferlocation) && ( + <> + + + + )} + {(message_mode || + !!interacts.transferlocation_secondary || + !!autotransfer.autotransferlocation_secondary) && ( + <> + + + + )} + + ); +}; + +const VoreSelectedBellyDescriptionsInteractionChance = (props) => { + const { act } = useBackend(); + + const { message_mode, interacts } = props; + + return ( + + {(message_mode || interacts.digestchance > 0) && ( + <> + + + + )} + {(message_mode || interacts.absorbchance > 0) && ( + <> + + + + )} + + ); +}; + +const VoreSelectedBellyDescriptionsBellymode = (props) => { + const { act } = useBackend(); + + const { message_mode, mode } = props; + + return ( + + {(message_mode || mode === 'Digest' || mode === 'Selective') && ( + <> + + + + )} + {(message_mode || mode === 'Absorb' || mode === 'Selective') && ( + <> + + + + )} + {(message_mode || mode === 'Unabsorb') && ( + <> + + + + )} + + ); +}; + +const VoreSelectedBellyDescriptionsIdle = (props) => { + const { act } = useBackend(); + + const { message_mode, mode } = props; + + return ( + + {(message_mode || mode === 'Hold' || mode === 'Selective') && ( + <> + + + + )} + {(message_mode || mode === 'Digest' || mode === 'Selective') && ( + + )} + {(message_mode || mode === 'Absorb' || mode === 'Selective') && ( + + )} + {(message_mode || mode === 'Unabsorb') && ( + + )} + {(message_mode || mode === 'Drain' || mode === 'Selective') && ( + + )} + {(message_mode || mode === 'Heal') && ( + + )} + {(message_mode || mode === 'Size Steal') && ( + + )} + {(message_mode || mode === 'Shrink') && ( + + )} + {(message_mode || mode === 'Grow') && ( + + )} + {(message_mode || mode === 'Encase In Egg') && ( + + )} + + ); +};