allow to only show suitable belly messages (#16013)

* allow to only show suiitable belly messages

* make eslint happy

* add bundle
This commit is contained in:
Kashargul
2024-06-02 10:09:22 +02:00
committed by GitHub
parent d2399f6638
commit 7807efcb97
6 changed files with 660 additions and 419 deletions
+3
View File
@@ -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
@@ -252,6 +253,7 @@
"name",
"desc",
"absorbed_desc",
"message_mode",
"vore_sound",
"vore_verb",
"release_verb",
@@ -1702,6 +1704,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
@@ -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()
+4
View File
@@ -186,6 +186,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,
@@ -949,6 +950,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
+571 -341
View File
@@ -333,7 +333,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 (
<LabeledList>
@@ -373,6 +382,19 @@ const VoreSelectedBellyDescriptions = (props) => {
{release_verb}
</Button>
</LabeledList.Item>
<LabeledList.Item label="Show All Messages">
<Button
onClick={() =>
act('set_attribute', {
attribute: 'b_message_mode',
})
}
icon={message_mode ? 'toggle-on' : 'toggle-off'}
selected={message_mode}
>
{message_mode ? 'True' : 'False'}
</Button>
</LabeledList.Item>
<LabeledList.Item label="Examine Messages">
<Button
onClick={() =>
@@ -389,346 +411,47 @@ const VoreSelectedBellyDescriptions = (props) => {
Examine Message (with absorbed victims)
</Button>
</LabeledList.Item>
<LabeledList.Item label="Struggle Messages">
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'smo' })
}
>
Struggle Message (outside)
</Button>
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'smi' })
}
>
Struggle Message (inside)
</Button>
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'asmo' })
}
>
Absorbed Struggle Message (outside)
</Button>
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'asmi' })
}
>
Absorbed Struggle Message (inside)
</Button>
</LabeledList.Item>
<LabeledList.Item label="Escape Messages">
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'escap' })
}
>
Escape Attempt Message (to prey)
</Button>
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'escao' })
}
>
Escape Attempt Message (to you)
</Button>
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'escp' })
}
>
Escape Message (to prey)
</Button>
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'esco' })
}
>
Escape Message (to you)
</Button>
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'escout' })
}
>
Escape Message (outside)
</Button>
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'escip' })
}
>
Escape Item Message (to prey)
</Button>
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'escio' })
}
>
Escape Item Message (to you)
</Button>
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'esciout' })
}
>
Escape Item Message (outside)
</Button>
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'escfp' })
}
>
Escape Fail Message (to prey)
</Button>
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'escfo' })
}
>
Escape Fail Message (to you)
</Button>
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'aescap' })
}
>
Absorbed Escape Attempt Message (to prey)
</Button>
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'aescao' })
}
>
Absorbed Escape Attempt Message (to you)
</Button>
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'aescp' })
}
>
Absorbed Escape Message (to prey)
</Button>
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'aesco' })
}
>
Absorbed Escape Message (to you)
</Button>
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'aescout' })
}
>
Absorbed Escape Message (outside)
</Button>
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'aescfp' })
}
>
Absorbed Escape Fail Message (to prey)
</Button>
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'aescfo' })
}
>
Absorbed Escape Fail Message (to you)
</Button>
</LabeledList.Item>
<LabeledList.Item label="Transfer Messages">
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'trnspp' })
}
>
Primary Transfer Message (to prey)
</Button>
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'trnspo' })
}
>
Primary Transfer Message (to you)
</Button>
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'trnssp' })
}
>
Secondary Transfer Message (to prey)
</Button>
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'trnsso' })
}
>
Secondary Transfer Message (to you)
</Button>
</LabeledList.Item>
<LabeledList.Item label="Interaction Chance Messages">
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'stmodp' })
}
>
Interaction Chance Digest Message (to prey)
</Button>
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'stmodo' })
}
>
Interaction Chance Digest Message (to you)
</Button>
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'stmoap' })
}
>
Interaction Chance Absorb Message (to prey)
</Button>
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'stmoao' })
}
>
Interaction Chance Absorb Message (to you)
</Button>
</LabeledList.Item>
<LabeledList.Item label="Bellymode Messages">
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'dmp' })
}
>
Digest Message (to prey)
</Button>
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'dmo' })
}
>
Digest Message (to you)
</Button>
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'amp' })
}
>
Absorb Message (to prey)
</Button>
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'amo' })
}
>
Absorb Message (to you)
</Button>
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'uamp' })
}
>
Unabsorb Message (to prey)
</Button>
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'uamo' })
}
>
Unabsorb Message (to you)
</Button>
</LabeledList.Item>
<LabeledList.Item label="Idle Messages">
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'im_hold' })
}
>
Idle Messages (Hold)
</Button>
<Button
onClick={() =>
act('set_attribute', {
attribute: 'b_msgs',
msgtype: 'im_holdabsorbed',
})
}
>
Idle Messages (Hold Absorbed)
</Button>
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'im_digest' })
}
>
Idle Messages (Digest)
</Button>
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'im_absorb' })
}
>
Idle Messages (Absorb)
</Button>
<Button
onClick={() =>
act('set_attribute', {
attribute: 'b_msgs',
msgtype: 'im_unabsorb',
})
}
>
Idle Messages (Unabsorb)
</Button>
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'im_drain' })
}
>
Idle Messages (Drain)
</Button>
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'im_heal' })
}
>
Idle Messages (Heal)
</Button>
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'im_steal' })
}
>
Idle Messages (Size Steal)
</Button>
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'im_shrink' })
}
>
Idle Messages (Shrink)
</Button>
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'im_grow' })
}
>
Idle Messages (Grow)
</Button>
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'im_egg' })
}
>
Idle Messages (Encase In Egg)
</Button>
</LabeledList.Item>
{message_mode || escapable ? (
<>
<VoreSelectedBellyDescriptionsStruggle />
<VoreSelectedBellyDescriptionsEscape
message_mode={message_mode}
interacts={interacts}
/>
{(message_mode ||
!!interacts.transferlocation ||
!!interacts.transferlocation_secondary) && (
<VoreSelectedBellyDescriptionsTransfer
message_mode={message_mode}
interacts={interacts}
/>
)}
{(message_mode ||
interacts.digestchance > 0 ||
interacts.absorbchance > 0) && (
<VoreSelectedBellyDescriptionsInteractionChance
message_mode={message_mode}
interacts={interacts}
/>
)}
</>
) : (
''
)}
{(message_mode ||
mode === 'Digest' ||
mode === 'Selective' ||
mode === 'Absorb' ||
mode === 'Unabsorb') && (
<VoreSelectedBellyDescriptionsBellymode
message_mode={message_mode}
mode={mode}
/>
)}
<VoreSelectedBellyDescriptionsIdle
message_mode={message_mode}
mode={mode}
/>
<LabeledList.Item label="Reset Messages">
<Button
color="red"
@@ -743,6 +466,513 @@ const VoreSelectedBellyDescriptions = (props) => {
);
};
const VoreSelectedBellyDescriptionsStruggle = (props) => {
const { act } = useBackend();
return (
<LabeledList.Item label="Struggle Messages">
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'smo' })
}
>
Struggle Message (outside)
</Button>
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'smi' })
}
>
Struggle Message (inside)
</Button>
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'asmo' })
}
>
Absorbed Struggle Message (outside)
</Button>
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'asmi' })
}
>
Absorbed Struggle Message (inside)
</Button>
</LabeledList.Item>
);
};
const VoreSelectedBellyDescriptionsEscape = (props) => {
const { act } = useBackend();
const { message_mode, interacts } = props;
return (
<LabeledList.Item label="Escape Messages">
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'escap' })
}
>
Escape Attempt Message (to prey)
</Button>
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'escao' })
}
>
Escape Attempt Message (to you)
</Button>
{(message_mode || interacts.escapechance > 0) && (
<>
<Button
onClick={() =>
act('set_attribute', {
attribute: 'b_msgs',
msgtype: 'escp',
})
}
>
Escape Message (to prey)
</Button>
<Button
onClick={() =>
act('set_attribute', {
attribute: 'b_msgs',
msgtype: 'esco',
})
}
>
Escape Message (to you)
</Button>
<Button
onClick={() =>
act('set_attribute', {
attribute: 'b_msgs',
msgtype: 'escout',
})
}
>
Escape Message (outside)
</Button>
</>
)}
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'escip' })
}
>
Escape Item Message (to prey)
</Button>
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'escio' })
}
>
Escape Item Message (to you)
</Button>
<Button
onClick={() =>
act('set_attribute', {
attribute: 'b_msgs',
msgtype: 'esciout',
})
}
>
Escape Item Message (outside)
</Button>
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'escfp' })
}
>
Escape Fail Message (to prey)
</Button>
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'escfo' })
}
>
Escape Fail Message (to you)
</Button>
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'aescap' })
}
>
Absorbed Escape Attempt Message (to prey)
</Button>
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'aescao' })
}
>
Absorbed Escape Attempt Message (to you)
</Button>
{(message_mode || interacts.escapechance_absorbed > 0) && (
<>
<Button
onClick={() =>
act('set_attribute', {
attribute: 'b_msgs',
msgtype: 'aescp',
})
}
>
Absorbed Escape Message (to prey)
</Button>
<Button
onClick={() =>
act('set_attribute', {
attribute: 'b_msgs',
msgtype: 'aesco',
})
}
>
Absorbed Escape Message (to you)
</Button>
<Button
onClick={() =>
act('set_attribute', {
attribute: 'b_msgs',
msgtype: 'aescout',
})
}
>
Absorbed Escape Message (outside)
</Button>
</>
)}
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'aescfp' })
}
>
Absorbed Escape Fail Message (to prey)
</Button>
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'aescfo' })
}
>
Absorbed Escape Fail Message (to you)
</Button>
</LabeledList.Item>
);
};
const VoreSelectedBellyDescriptionsTransfer = (props) => {
const { act } = useBackend();
const { message_mode, interacts } = props;
return (
<LabeledList.Item label="Transfer Messages">
{(message_mode || !!interacts.transferlocation) && (
<>
<Button
onClick={() =>
act('set_attribute', {
attribute: 'b_msgs',
msgtype: 'trnspp',
})
}
>
Primary Transfer Message (to prey)
</Button>
<Button
onClick={() =>
act('set_attribute', {
attribute: 'b_msgs',
msgtype: 'trnspo',
})
}
>
Primary Transfer Message (to you)
</Button>
</>
)}
{(message_mode || !!interacts.transferlocation_secondary) && (
<>
<Button
onClick={() =>
act('set_attribute', {
attribute: 'b_msgs',
msgtype: 'trnssp',
})
}
>
Secondary Transfer Message (to prey)
</Button>
<Button
onClick={() =>
act('set_attribute', {
attribute: 'b_msgs',
msgtype: 'trnsso',
})
}
>
Secondary Transfer Message (to you)
</Button>
</>
)}
</LabeledList.Item>
);
};
const VoreSelectedBellyDescriptionsInteractionChance = (props) => {
const { act } = useBackend();
const { message_mode, interacts } = props;
return (
<LabeledList.Item label="Interaction Chance Messages">
{(message_mode || interacts.digestchance > 0) && (
<>
<Button
onClick={() =>
act('set_attribute', {
attribute: 'b_msgs',
msgtype: 'stmodp',
})
}
>
Interaction Chance Digest Message (to prey)
</Button>
<Button
onClick={() =>
act('set_attribute', {
attribute: 'b_msgs',
msgtype: 'stmodo',
})
}
>
Interaction Chance Digest Message (to you)
</Button>
</>
)}
{(message_mode || interacts.absorbchance > 0) && (
<>
<Button
onClick={() =>
act('set_attribute', {
attribute: 'b_msgs',
msgtype: 'stmoap',
})
}
>
Interaction Chance Absorb Message (to prey)
</Button>
<Button
onClick={() =>
act('set_attribute', {
attribute: 'b_msgs',
msgtype: 'stmoao',
})
}
>
Interaction Chance Absorb Message (to you)
</Button>
</>
)}
</LabeledList.Item>
);
};
const VoreSelectedBellyDescriptionsBellymode = (props) => {
const { act } = useBackend();
const { message_mode, mode } = props;
return (
<LabeledList.Item label="Bellymode Messages">
{(message_mode || mode === 'Digest' || mode === 'Selective') && (
<>
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'dmp' })
}
>
Digest Message (to prey)
</Button>
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'dmo' })
}
>
Digest Message (to you)
</Button>
</>
)}
{(message_mode || mode === 'Absorb' || mode === 'Selective') && (
<>
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'amp' })
}
>
Absorb Message (to prey)
</Button>
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'amo' })
}
>
Absorb Message (to you)
</Button>
</>
)}
{(message_mode || mode === 'Unabsorb') && (
<>
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'uamp' })
}
>
Unabsorb Message (to prey)
</Button>
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'uamo' })
}
>
Unabsorb Message (to you)
</Button>
</>
)}
</LabeledList.Item>
);
};
const VoreSelectedBellyDescriptionsIdle = (props) => {
const { act } = useBackend();
const { message_mode, mode } = props;
return (
<LabeledList.Item label="Idle Messages">
{(message_mode || mode === 'Hold' || mode === 'Selective') && (
<>
<Button
onClick={() =>
act('set_attribute', {
attribute: 'b_msgs',
msgtype: 'im_hold',
})
}
>
Idle Messages (Hold)
</Button>
<Button
onClick={() =>
act('set_attribute', {
attribute: 'b_msgs',
msgtype: 'im_holdabsorbed',
})
}
>
Idle Messages (Hold Absorbed)
</Button>
</>
)}
{(message_mode || mode === 'Digest' || mode === 'Selective') && (
<Button
onClick={() =>
act('set_attribute', {
attribute: 'b_msgs',
msgtype: 'im_digest',
})
}
>
Idle Messages (Digest)
</Button>
)}
{(message_mode || mode === 'Absorb' || mode === 'Selective') && (
<Button
onClick={() =>
act('set_attribute', {
attribute: 'b_msgs',
msgtype: 'im_absorb',
})
}
>
Idle Messages (Absorb)
</Button>
)}
{(message_mode || mode === 'Unabsorb') && (
<Button
onClick={() =>
act('set_attribute', {
attribute: 'b_msgs',
msgtype: 'im_unabsorb',
})
}
>
Idle Messages (Unabsorb)
</Button>
)}
{(message_mode || mode === 'Drain' || mode === 'Selective') && (
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'im_drain' })
}
>
Idle Messages (Drain)
</Button>
)}
{(message_mode || mode === 'Heal') && (
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'im_heal' })
}
>
Idle Messages (Heal)
</Button>
)}
{(message_mode || mode === 'Size Steal') && (
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'im_steal' })
}
>
Idle Messages (Size Steal)
</Button>
)}
{(message_mode || mode === 'Shrink') && (
<Button
onClick={() =>
act('set_attribute', {
attribute: 'b_msgs',
msgtype: 'im_shrink',
})
}
>
Idle Messages (Shrink)
</Button>
)}
{(message_mode || mode === 'Grow') && (
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'im_grow' })
}
>
Idle Messages (Grow)
</Button>
)}
{(message_mode || mode === 'Encase In Egg') && (
<Button
onClick={() =>
act('set_attribute', { attribute: 'b_msgs', msgtype: 'im_egg' })
}
>
Idle Messages (Encase In Egg)
</Button>
)}
</LabeledList.Item>
);
};
const VoreSelectedBellyOptions = (props) => {
const { act, data } = useBackend();
@@ -66,6 +66,7 @@ type Belly = {
// General Information
name: string;
desc: string;
message_mode: BooleanLike;
absorbed_desc: string;
vore_verb: string;
release_verb: string;
@@ -181,6 +182,7 @@ const generateBellyString = (belly: Belly, index: number) => {
// General Information
name,
desc,
message_mode,
absorbed_desc,
vore_verb,
release_verb,
@@ -324,6 +326,7 @@ const generateBellyString = (belly: Belly, index: number) => {
result += '<hr>';
result += '<b>== Messages ==</b><br>';
result +='Show All Interactive Messages: ' + (message_mode ? '<span style="color: green;">Yes' : '<span style="color: red;">No') + '</span><br>';
result += '<div role="messagesTabpanel">'; // Start Div messagesTabpanel
result += '<div class="row"><div class="col-4">';
result += '<div class="list-group" id="messagesList" role="messagesTablist">';
File diff suppressed because one or more lines are too long