diff --git a/code/game/objects/items/devices/body_snatcher_vr.dm b/code/game/objects/items/devices/body_snatcher_vr.dm index 7bd5190bd1..62ea3ead47 100644 --- a/code/game/objects/items/devices/body_snatcher_vr.dm +++ b/code/game/objects/items/devices/body_snatcher_vr.dm @@ -29,6 +29,14 @@ to_chat(usr,"The target's mind is too complex to be affected!") return + /* CHOMPRemove Start, we have a vore pref for that + if(ishuman(M)) + var/mob/living/carbon/human/H = M + if(H.resleeve_lock && usr.ckey != H.resleeve_lock) + to_chat(src, span_danger("[H] cannot be impersonated!")) + return + *///CHOMPRemove End + if(M.stat == DEAD) //Are they dead? to_chat(usr,"A warning pops up on the device, informing you that [M] is dead, and, as such, the mind transfer can not be done.") return diff --git a/code/modules/mob/living/carbon/human/species/lleill/hanner.dm b/code/modules/mob/living/carbon/human/species/lleill/hanner.dm index 1a684a477b..f63369d232 100644 --- a/code/modules/mob/living/carbon/human/species/lleill/hanner.dm +++ b/code/modules/mob/living/carbon/human/species/lleill/hanner.dm @@ -8,7 +8,6 @@ transmutation and energy sharing abilities not unlike they lleill, but considerably more limited. Unlike \ other shapeshifter species, such as proteans or prometheans, Hanner have a typical humanoid set of organs and can not regenerate." - flags = NO_SCAN color_mult = 1 appearance_flags = HAS_SKIN_COLOR | HAS_EYE_COLOR | HAS_HAIR_COLOR | HAS_UNDERWEAR | HAS_LIPS spawn_flags = SPECIES_CAN_JOIN | SPECIES_IS_WHITELISTED | SPECIES_WHITELIST_SELECTABLE diff --git a/code/modules/mob/living/carbon/human/species/lleill/lleill_items.dm b/code/modules/mob/living/carbon/human/species/lleill/lleill_items.dm index d48b330db1..11e549bbad 100644 --- a/code/modules/mob/living/carbon/human/species/lleill/lleill_items.dm +++ b/code/modules/mob/living/carbon/human/species/lleill/lleill_items.dm @@ -130,7 +130,7 @@ for(var/mob/living/carbon/human/M in mob_list) if(M.z != user.z || get_dist(user,M) > 10) continue - if(istype(M) && M.resleeve_lock && M.ckey != M.resleeve_lock) + if(!M.allow_mimicry) continue targets |= M diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/dominated_brain.dm b/code/modules/mob/living/simple_mob/subtypes/vore/dominated_brain.dm index 1f363eed75..55ddda81b3 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/dominated_brain.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/dominated_brain.dm @@ -237,11 +237,6 @@ if(pred.prey_controlled) to_chat(prey, "\The [pred] is already dominated, and cannot be controlled at this time.") return - if(ishuman(pred)) - var/mob/living/carbon/human/h = pred - if(h.resleeve_lock && ckey != h.resleeve_lock) - to_chat(src, "\The [h] cannot be impersonated!") - return if(tgui_alert(prey, "You are attempting to take over [pred], are you sure? Ensure that their preferences align with this kind of play.", "Take Over Predator",list("No","Yes")) != "Yes") return to_chat(prey, "You attempt to exert your control over \the [pred]...") diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/morph/morph.dm b/code/modules/mob/living/simple_mob/subtypes/vore/morph/morph.dm index 3c6ea63441..056ebcc563 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/morph/morph.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/morph/morph.dm @@ -99,7 +99,7 @@ /mob/living/simple_mob/vore/morph/proc/assume(atom/movable/target) var/mob/living/carbon/human/humantarget = target - if(istype(humantarget) && humantarget.resleeve_lock && ckey != humantarget.resleeve_lock) + if(istype(humantarget) && !humantarget.allow_mimicry) to_chat(src, "[target] cannot be impersonated!") return if(morphed) @@ -272,12 +272,9 @@ var/mob/living/L = tgui_input_list(src, "Select a mob to take over:", "Take Over Prey", possible_mobs) if(!L) return - // Adding a ishuman check here, since silicon mobs don't have a resleeve_lock from what I can tell. - if(ishuman(L)) - var/mob/living/carbon/human/M = L - if(M.resleeve_lock && ckey != M.resleeve_lock) - to_chat(src, "\The [M] cannot be impersonated!") - return + if(!L.allow_mimicry) + to_chat(src, "\The [L] cannot be impersonated!") + return if(tgui_alert(src, "You selected [L] to attempt to take over. Are you sure?", "Take Over Prey",list("No","Yes")) == "Yes") log_admin("[key_name_admin(src)] offered [L] to swap bodies as a morph.") if(tgui_alert(L, "\The [src] has elected to attempt to take over your body and control you. Is this something you will allow to happen?", "Allow Morph To Take Over",list("No","Yes")) == "Yes") 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 f6c6ef5fef..c1b9696b42 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/vore.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/vore.dm @@ -41,6 +41,7 @@ noisy = client.prefs_vr.noisy selective_preference = client.prefs_vr.selective_preference eating_privacy_global = client.prefs_vr.eating_privacy_global + allow_mimicry = client.prefs_vr.allow_mimicry drop_vore = client.prefs_vr.drop_vore stumble_vore = client.prefs_vr.stumble_vore diff --git a/code/modules/resleeving/infocore_records.dm b/code/modules/resleeving/infocore_records.dm index 841e54069a..123f981d24 100644 --- a/code/modules/resleeving/infocore_records.dm +++ b/code/modules/resleeving/infocore_records.dm @@ -128,10 +128,15 @@ //Person OOCly doesn't want people impersonating them locked = ckeylock + //CHOMPEdit Start, keep the lock //Prevent people from printing restricted and whitelisted species var/datum/species/S = GLOB.all_species["[M.dna.species]"] if(S) toocomplex = (S.spawn_flags & SPECIES_IS_WHITELISTED) || (S.spawn_flags & SPECIES_IS_RESTRICTED) + // Force ckey locking if species is whitelisted + //if((S.spawn_flags & SPECIES_IS_WHITELISTED) || (S.spawn_flags & SPECIES_IS_RESTRICTED)) + //locked = TRUE + //CHOMPEdit End //General stuff about them synthetic = M.isSynthetic() diff --git a/code/modules/resleeving/machines.dm b/code/modules/resleeving/machines.dm index 9bc03c19b6..0ffaa908ca 100644 --- a/code/modules/resleeving/machines.dm +++ b/code/modules/resleeving/machines.dm @@ -33,7 +33,14 @@ var/datum/dna2/record/R = current_project.mydna var/mob/living/carbon/human/H = new /mob/living/carbon/human(src, R.dna.species) if(current_project.locked) - H.resleeve_lock = current_project.ckey + H.resleeve_lock = current_project.ckey //CHOMPAdd, keep the lock + /*CHOMPRemove Start + if(current_project.ckey) + H.resleeve_lock = current_project.ckey + else + // Ensure even body scans without an attached ckey respect locking + H.resleeve_lock = "@badckey" + *///CHOMPRemove End //Fix the external organs for(var/part in current_project.limb_data) @@ -191,6 +198,7 @@ occupant = null if(locked) locked = 0 + update_icon() return return @@ -200,6 +208,12 @@ return 100 * ((occupant.health + abs(CONFIG_GET(number/health_threshold_dead))) / (occupant.maxHealth + abs(CONFIG_GET(number/health_threshold_dead)))) // CHOMPEdit return 0 +/obj/machinery/clonepod/transhuman/examine(mob/user, infix, suffix) + . = ..() + if(occupant) + var/completion = get_completion() + . += "Progress: [round(completion)]% [chat_progress_bar(round(completion), TRUE)]" + //Synthetic version /obj/machinery/transhuman/synthprinter name = "SynthFab 3000" @@ -293,7 +307,14 @@ var/datum/dna2/record/R = current_project.mydna var/mob/living/carbon/human/H = new /mob/living/carbon/human(src, R.dna.species) if(current_project.locked) - H.resleeve_lock = current_project.ckey + H.resleeve_lock = current_project.ckey //CHOMPAdd, keep the lock + /*CHOMPRemove Start + if(current_project.ckey) + H.resleeve_lock = current_project.ckey + else + // Ensure even body scans without an attached ckey respect locking + H.resleeve_lock = "@badckey" + *///CHOMPRemove End //Fix the external organs for(var/part in current_project.limb_data) diff --git a/code/modules/vore/chat_healthbars.dm b/code/modules/vore/chat_healthbars.dm index 272366d9d8..5fe3d85492 100644 --- a/code/modules/vore/chat_healthbars.dm +++ b/code/modules/vore/chat_healthbars.dm @@ -1,5 +1,64 @@ //Health bars in the game window would be pretty challenging and I don't know how to do that, so I thought this would be a good alternative +// Generates the progress bar text +/proc/chat_progress_bar(percentage, add_color = FALSE) + switch(percentage) + if(100) + . = "|▓▓▓▓▓▓▓▓▓▓|" + if(95 to 99) + . = "|▓▓▓▓▓▓▓▓▓▒|" + if(90 to 94) + . = "|▓▓▓▓▓▓▓▓▓░|" + if(85 to 89) + . = "|▓▓▓▓▓▓▓▓▒░|" + if(80 to 84) + . = "|▓▓▓▓▓▓▓▓░░|" + if(75 to 79) + . = "|▓▓▓▓▓▓▓▒░░|" + if(70 to 74) + . = "|▓▓▓▓▓▓▓░░░|" + if(65 to 69) + . = "|▓▓▓▓▓▓▒░░░|" + if(60 to 64) + . = "|▓▓▓▓▓▓░░░░|" + if(55 to 59) + . = "|▓▓▓▓▓▒░░░░|" + if(50 to 54) + . = "|▓▓▓▓▓░░░░░|" + if(45 to 49) + . = "|▓▓▓▓▒░░░░░|" + if(40 to 44) + . = "|▓▓▓▓░░░░░░|" + if(35 to 39) + . = "|▓▓▓▒░░░░░░|" + if(30 to 34) + . = "|▓▓▓░░░░░░░|" + if(25 to 29) + . = "|▓▓▒░░░░░░░|" + if(20 to 24) + . = "|▓▓░░░░░░░░|" + if(15 to 19) + . = "|▓▒░░░░░░░░|" + if(10 to 14) + . = "|▓░░░░░░░░░|" + if(5 to 9) + . = "|▒░░░░░░░░░|" + if(0) + . = "|░░░░░░░░░░|" + else + . = "!░░░░░░░░░░!" + + if(add_color) + switch(percentage) + if(75 to 100) + . = span_green(.) + if(50 to 75) + . = span_yellow(.) + if(25 to 50) + . = span_orange(.) + else + . = span_red(.) + /mob/living/proc/chat_healthbar(var/mob/living/reciever, onExamine = FALSE, override = FALSE) if(!reciever) //No one to send it to, don't bother return @@ -28,52 +87,7 @@ ourpercent = round(ourpercent) - switch(ourpercent) //I thought about trying to do this in a more automated way but my brain isn't very large so enjoy my stupid switch statement - if(100) - ourbar = "|▓▓▓▓▓▓▓▓▓▓|" - if(95 to 99) - ourbar = "|▓▓▓▓▓▓▓▓▓▒|" - if(90 to 94) - ourbar = "|▓▓▓▓▓▓▓▓▓░|" - if(85 to 89) - ourbar = "|▓▓▓▓▓▓▓▓▒░|" - if(80 to 84) - ourbar = "|▓▓▓▓▓▓▓▓░░|" - if(75 to 79) - ourbar = "|▓▓▓▓▓▓▓▒░░|" - if(70 to 74) - ourbar = "|▓▓▓▓▓▓▓░░░|" - if(65 to 69) - ourbar = "|▓▓▓▓▓▓▒░░░|" - if(60 to 64) - ourbar = "|▓▓▓▓▓▓░░░░|" - if(55 to 59) - ourbar = "|▓▓▓▓▓▒░░░░|" - if(50 to 54) - ourbar = "|▓▓▓▓▓░░░░░|" - if(45 to 49) - ourbar = "|▓▓▓▓▒░░░░░|" - if(40 to 44) - ourbar = "|▓▓▓▓░░░░░░|" - if(35 to 39) - ourbar = "|▓▓▓▒░░░░░░|" - if(30 to 34) - ourbar = "|▓▓▓░░░░░░░|" - if(25 to 29) - ourbar = "|▓▓▒░░░░░░░|" - if(20 to 24) - ourbar = "|▓▓░░░░░░░░|" - if(15 to 19) - ourbar = "|▓▒░░░░░░░░|" - if(10 to 14) - ourbar = "|▓░░░░░░░░░|" - if(5 to 9) - ourbar = "|▒░░░░░░░░░|" - if(0) - ourbar = "|░░░░░░░░░░|" - else - ourbar = "!░░░░░░░░░░!" - + ourbar = chat_progress_bar(ourpercent, FALSE) ourbar = "[ourbar] [which_var] - [src.name]" if(stat == UNCONSCIOUS) diff --git a/code/modules/vore/eating/living_vr.dm b/code/modules/vore/eating/living_vr.dm index a91023b8e3..f7aed38ce8 100644 --- a/code/modules/vore/eating/living_vr.dm +++ b/code/modules/vore/eating/living_vr.dm @@ -270,6 +270,7 @@ P.digest_pain = src.digest_pain P.stumble_vore = src.stumble_vore P.eating_privacy_global = src.eating_privacy_global + P.allow_mimicry = src.allow_mimicry P.nutrition_message_visible = src.nutrition_message_visible P.nutrition_messages = src.nutrition_messages @@ -344,6 +345,7 @@ food_vore = P.food_vore digest_pain = P.digest_pain eating_privacy_global = P.eating_privacy_global + allow_mimicry = P.allow_mimicry nutrition_message_visible = P.nutrition_message_visible nutrition_messages = P.nutrition_messages @@ -1355,6 +1357,7 @@ dispvoreprefs += "Can be resized: [resizable ? "Allowed" : "Disallowed"]
" dispvoreprefs += "Spontaneous transformation: [allow_spontaneous_tf ? "Enabled" : "Disabled"]
" dispvoreprefs += "Mind transfer: [allow_mind_transfer ? "Allowed" : "Disallowed"]
" + dispvoreprefs += "Allow Mimicry: [allow_mimicry ? "Yes" : "No"]
" dispvoreprefs += "Feedable: [feeding ? "Enabled" : "Disabled"]
" dispvoreprefs += "Receiving liquids: [receive_reagents ? "Enabled" : "Disabled"]
" dispvoreprefs += "Giving liquids: [give_reagents ? "Enabled" : "Disabled"]
" diff --git a/code/modules/vore/eating/mob_vr.dm b/code/modules/vore/eating/mob_vr.dm index 73ef84637b..3895f38759 100644 --- a/code/modules/vore/eating/mob_vr.dm +++ b/code/modules/vore/eating/mob_vr.dm @@ -27,6 +27,7 @@ var/selective_preference = DM_DEFAULT // Preference for selective bellymode var/text_warnings = TRUE // Allows us to dismiss the text limit warning messages after viewing it once per round var/eating_privacy_global = FALSE // Makes eating attempt/success messages only reach for subtle range if true, overwritten by belly-specific var + 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 var/list/nutrition_messages = list( diff --git a/code/modules/vore/eating/vore_vr.dm b/code/modules/vore/eating/vore_vr.dm index 1834e9d28d..7546f5bab8 100644 --- a/code/modules/vore/eating/vore_vr.dm +++ b/code/modules/vore/eating/vore_vr.dm @@ -53,6 +53,7 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE 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/allow_mimicry = TRUE // These are 'modifier' prefs, do nothing on their own but pair with drop_prey/drop_pred settings. var/drop_vore = TRUE @@ -220,6 +221,7 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE 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"] + 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"] @@ -301,6 +303,8 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE weight_message_visible = TRUE if(isnull(eating_privacy_global)) eating_privacy_global = FALSE + if(isnull(allow_mimicry)) + allow_mimicry = TRUE if(isnull(nutrition_messages)) nutrition_messages = list( "They are starving! You can hear their stomach snarling from across the room!", @@ -424,6 +428,7 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE "weight_messages" = weight_messages, "eating_privacy_global" = eating_privacy_global, "vore_sprite_color" = vore_sprite_color, + "allow_mimicry" = allow_mimicry, "vore_sprite_multiply" = vore_sprite_multiply, //CHOMPEdit "strip_pref" = strip_pref, //CHOMPEdit "no_latejoin_vore_warning" = no_latejoin_vore_warning, //CHOMPEdit diff --git a/code/modules/vore/eating/vorepanel_vr.dm b/code/modules/vore/eating/vorepanel_vr.dm index 2508958bb8..1959aeb620 100644 --- a/code/modules/vore/eating/vorepanel_vr.dm +++ b/code/modules/vore/eating/vorepanel_vr.dm @@ -549,6 +549,7 @@ var/global/list/belly_colorable_only_fullscreens = list("a_synth_flesh_mono", "weight_message_visible" = host.weight_message_visible, "weight_messages" = host.weight_messages, "eating_privacy_global" = host.eating_privacy_global, + "allow_mimicry" = host.allow_mimicry, //CHOMPEdit start, vore sprites "belly_rub_target" = host.belly_rub_target, "vore_sprite_color" = host.vore_sprite_color, @@ -1946,6 +1947,12 @@ var/global/list/belly_colorable_only_fullscreens = list("a_synth_flesh_mono", host.eating_privacy_global = host.eating_privacy_global unsaved_changes = TRUE return TRUE + if("toggle_mimicry") + host.allow_mimicry = !host.allow_mimicry + if(host.client.prefs_vr) + host.client.prefs_vr.allow_mimicry = host.allow_mimicry + unsaved_changes = TRUE + return TRUE if("toggle_devour") host.devourable = !host.devourable if(host.client.prefs_vr) diff --git a/code/modules/vore/mouseray.dm b/code/modules/vore/mouseray.dm index 2104bde8d7..8dc571d027 100644 --- a/code/modules/vore/mouseray.dm +++ b/code/modules/vore/mouseray.dm @@ -286,6 +286,7 @@ new_mob.nutrition_message_visible = nutrition_message_visible new_mob.allow_spontaneous_tf = allow_spontaneous_tf new_mob.eating_privacy_global = eating_privacy_global + new_mob.allow_mimicry = allow_mimicry new_mob.text_warnings = text_warnings new_mob.allow_mind_transfer = allow_mind_transfer diff --git a/tgui/packages/tgui/interfaces/VorePanel/VoreUserPreferences.tsx b/tgui/packages/tgui/interfaces/VorePanel/VoreUserPreferences.tsx index e6a44e74b0..0f10b6e0e3 100644 --- a/tgui/packages/tgui/interfaces/VorePanel/VoreUserPreferences.tsx +++ b/tgui/packages/tgui/interfaces/VorePanel/VoreUserPreferences.tsx @@ -41,6 +41,7 @@ export const VoreUserPreferences = (props: { nutrition_message_visible, weight_message_visible, eating_privacy_global, + allow_mimicry, } = prefs; const preferences = { @@ -425,6 +426,19 @@ export const VoreUserPreferences = (props: { disabled: 'Global Vore Privacy: Loud', }, }, + allow_mimicry: { + action: 'toggle_mimicry', + test: allow_mimicry, + tooltip: { + main: 'Allows some creatures to mimick your apperance.', + enable: ' Click here to allow mimicry.', + disable: ' Click here to forbid mimicry.', + }, + content: { + enabled: 'Allow Mimicry: Yes', + disabled: 'Allow Mimicry: No', + }, + }, }; return ( diff --git a/tgui/packages/tgui/interfaces/VorePanel/VoreUserPreferencesTabs/VoreUserPreferencesMechanical .tsx b/tgui/packages/tgui/interfaces/VorePanel/VoreUserPreferencesTabs/VoreUserPreferencesMechanical .tsx index 8433d9dab9..51957ada93 100644 --- a/tgui/packages/tgui/interfaces/VorePanel/VoreUserPreferencesTabs/VoreUserPreferencesMechanical .tsx +++ b/tgui/packages/tgui/interfaces/VorePanel/VoreUserPreferencesTabs/VoreUserPreferencesMechanical .tsx @@ -118,6 +118,9 @@ export const VoreUserPreferencesMechanical = (props: { + + + ); diff --git a/tgui/packages/tgui/interfaces/VorePanel/types.ts b/tgui/packages/tgui/interfaces/VorePanel/types.ts index 508d0fb6f0..0ae4e710e5 100644 --- a/tgui/packages/tgui/interfaces/VorePanel/types.ts +++ b/tgui/packages/tgui/interfaces/VorePanel/types.ts @@ -172,6 +172,7 @@ export type prefData = { weight_message_visible: BooleanLike; weight_messages: string[]; eating_privacy_global: BooleanLike; + allow_mimicry: BooleanLike; vore_sprite_color: { stomach: string; 'taur belly': string }; vore_sprite_multiply: { stomach: BooleanLike; 'taur belly': BooleanLike }; }; @@ -203,6 +204,7 @@ export type localPrefs = { examine_nutrition: preferenceData; examine_weight: preferenceData; eating_privacy_global: preferenceData; + allow_mimicry: preferenceData; }; export type preferenceData = { diff --git a/tgui/packages/tgui/interfaces/chompstation/VorePanel/VoreUserPreferences.tsx b/tgui/packages/tgui/interfaces/chompstation/VorePanel/VoreUserPreferences.tsx index a9e4e57443..980140c2a8 100644 --- a/tgui/packages/tgui/interfaces/chompstation/VorePanel/VoreUserPreferences.tsx +++ b/tgui/packages/tgui/interfaces/chompstation/VorePanel/VoreUserPreferences.tsx @@ -48,6 +48,7 @@ export const VoreUserPreferences = (props: { allow_spontaneous_tf, allow_mind_transfer, eating_privacy_global, + allow_mimicry, strip_mechanics_active, autotransferable, liq_rec, @@ -510,6 +511,19 @@ export const VoreUserPreferences = (props: { disabled: 'Global Vore Privacy: Loud', }, }, + allow_mimicry: { + action: 'toggle_mimicry', + test: allow_mimicry, + tooltip: { + main: 'Allows some creatures to mimick your apperance.', + enable: ' Click here to allow mimicry.', + disable: ' Click here to forbid mimicry.', + }, + content: { + enabled: 'Allow Mimicry: Yes', + disabled: 'Allow Mimicry: No', + }, + }, autotransferable: { action: 'toggle_autotransferable', test: autotransferable, diff --git a/tgui/packages/tgui/interfaces/chompstation/VorePanel/VoreUserPreferencesTabs/VoreUserPreferencesMechanical.tsx b/tgui/packages/tgui/interfaces/chompstation/VorePanel/VoreUserPreferencesTabs/VoreUserPreferencesMechanical.tsx index 6aefde15ac..49d8f52e49 100644 --- a/tgui/packages/tgui/interfaces/chompstation/VorePanel/VoreUserPreferencesTabs/VoreUserPreferencesMechanical.tsx +++ b/tgui/packages/tgui/interfaces/chompstation/VorePanel/VoreUserPreferencesTabs/VoreUserPreferencesMechanical.tsx @@ -106,8 +106,14 @@ export const VoreUserPreferencesMechanical = (props: { + + + diff --git a/tgui/packages/tgui/interfaces/chompstation/VorePanel/types.ts b/tgui/packages/tgui/interfaces/chompstation/VorePanel/types.ts index c6a31bca97..6623456592 100644 --- a/tgui/packages/tgui/interfaces/chompstation/VorePanel/types.ts +++ b/tgui/packages/tgui/interfaces/chompstation/VorePanel/types.ts @@ -283,6 +283,7 @@ export type prefData = { weight_message_visible: BooleanLike; weight_messages: string[]; eating_privacy_global: BooleanLike; + allow_mimicry: BooleanLike; belly_rub_target: string | null; vore_sprite_color: { stomach: string; 'taur belly': string }; vore_sprite_multiply: { stomach: BooleanLike; 'taur belly': BooleanLike }; @@ -348,6 +349,7 @@ export type localPrefs = { examine_weight: preferenceData; strippref: preferenceData; eating_privacy_global: preferenceData; + allow_mimicry: preferenceData; autotransferable: preferenceData; liquid_receive: preferenceData; liquid_give: preferenceData;