mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2026-01-03 05:52:43 +00:00
[MIRROR] Absorb Prey Names (#11411)
Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com> Co-authored-by: fracshun <fracshun@gmail.com> Co-authored-by: vorestation-ci[bot] <199609141+vorestation-ci[bot]@users.noreply.github.com> Co-authored-by: Cameron Lennox <killer65311@gmail.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Aroliacue <96730930+Aroliacue@users.noreply.github.com> Co-authored-by: Aroliacue <avaylaiss34@gmail.com>
This commit is contained in:
committed by
GitHub
parent
67587a10a0
commit
b0f1c1a115
@@ -65,6 +65,14 @@
|
||||
/mob/proc/build_the_emote(m_type, message, input, range, runemessage)
|
||||
if(client)
|
||||
message = span_emote(span_bold("[src]") + " [input]")
|
||||
if(src.absorbed && isbelly(src.loc))
|
||||
var/obj/belly/B = src.loc
|
||||
if(B.absorbedrename_enabled)
|
||||
var/formatted_name = B.absorbedrename_name
|
||||
formatted_name = replacetext(formatted_name,"%pred",B.owner)
|
||||
formatted_name = replacetext(formatted_name,"%belly",B.name)
|
||||
formatted_name = replacetext(formatted_name,"%prey",name)
|
||||
message = span_emote(span_bold("[formatted_name]") + " [input]")
|
||||
else
|
||||
message = span_npc_emote(span_bold("[src]") + " [input]")
|
||||
|
||||
|
||||
@@ -2,6 +2,10 @@
|
||||
var/datum/component/shadekin/SK = get_shadekin_component()
|
||||
if(SK && SK.in_phase)
|
||||
return ""
|
||||
if(absorbed && isbelly(loc))
|
||||
var/obj/belly/B = loc
|
||||
if(B.absorbedrename_enabled)
|
||||
return "" // Don't use alt name if under absorbed rename.
|
||||
if(name != GetVoice())
|
||||
return " (as [get_id_name("Unknown")])"
|
||||
|
||||
@@ -107,6 +111,14 @@
|
||||
return comp.mimicing
|
||||
if(GetSpecialVoice())
|
||||
return GetSpecialVoice()
|
||||
if(absorbed && isbelly(loc)) // If absorbed in a belly, check and apply absorbed rename if applicable.
|
||||
var/obj/belly/B = loc
|
||||
if(B.absorbedrename_enabled)
|
||||
var/formatted_name = B.absorbedrename_name
|
||||
formatted_name = replacetext(formatted_name,"%pred",B.owner)
|
||||
formatted_name = replacetext(formatted_name,"%belly",B.name)
|
||||
formatted_name = replacetext(formatted_name,"%prey",name)
|
||||
return formatted_name
|
||||
return real_name
|
||||
|
||||
/mob/living/carbon/human/proc/SetSpecialVoice(var/new_voice)
|
||||
|
||||
@@ -76,6 +76,14 @@
|
||||
if(input)
|
||||
log_subtle(message,src)
|
||||
message = span_emote_subtle(span_bold("[src]") + " " + span_italics("[input]"))
|
||||
if(src.absorbed && isbelly(src.loc))
|
||||
var/obj/belly/B = src.loc
|
||||
if(B.absorbedrename_enabled)
|
||||
var/formatted_name = B.absorbedrename_name
|
||||
formatted_name = replacetext(formatted_name,"%pred",B.owner)
|
||||
formatted_name = replacetext(formatted_name,"%belly",B.name)
|
||||
formatted_name = replacetext(formatted_name,"%prey",name)
|
||||
message = span_emote_subtle(span_bold("[formatted_name]") + " " + span_italics("[input]"))
|
||||
if(!(subtle_mode == "Adjacent Turfs (Default)"))
|
||||
message = span_bold("(T) ") + message
|
||||
else
|
||||
@@ -273,6 +281,7 @@
|
||||
var/f = FALSE //did we find someone to send the message to other than ourself?
|
||||
var/mob/living/pb //predator body
|
||||
var/mob/living/M = src
|
||||
var/formatted_name = "\The [M]"
|
||||
if(istype(M, /mob/living/dominated_brain))
|
||||
var/mob/living/dominated_brain/db = M
|
||||
if(db.loc != db.pred_body)
|
||||
@@ -288,6 +297,14 @@
|
||||
f = TRUE
|
||||
else if(M.absorbed && isbelly(M.loc))
|
||||
pb = M.loc.loc
|
||||
var/obj/belly/B = M.loc
|
||||
if(B.absorbedrename_enabled)
|
||||
formatted_name = B.absorbedrename_name
|
||||
formatted_name = replacetext(formatted_name,"%pred",B.owner)
|
||||
formatted_name = replacetext(formatted_name,"%belly",B.name)
|
||||
formatted_name = replacetext(formatted_name,"%prey","\The [M]")
|
||||
to_chat(pb, span_psay("[formatted_name] thinks, \"[message]\""))
|
||||
else
|
||||
to_chat(pb, span_psay("\The [M] thinks, \"[message]\"")) //To our pred if absorbed
|
||||
if(pb.read_preference(/datum/preference/toggle/subtle_sounds))
|
||||
if(voice_sounds_list) //CHOMPEdit, changes subtle emote sound to use mob voice instead
|
||||
@@ -307,7 +324,7 @@
|
||||
for(var/B in pb.vore_organs)
|
||||
for(var/mob/living/L in B)
|
||||
if(L.absorbed && L != M && L.ckey)
|
||||
to_chat(L, span_psay("\The [M] thinks, \"[message]\"")) //To any absorbed people in the pred
|
||||
to_chat(L, span_psay("[formatted_name] thinks, \"[message]\"")) //To any absorbed people in the pred
|
||||
if(L.read_preference(/datum/preference/toggle/subtle_sounds))
|
||||
if(voice_sounds_list) //CHOMPEdit, changes subtle emote sound to use mob voice instead
|
||||
L << sound(pick(voice_sounds_list), volume = 25)
|
||||
@@ -317,7 +334,7 @@
|
||||
for(var/I in M.contents)
|
||||
if(istype(I, /mob/living/dominated_brain))
|
||||
var/mob/living/dominated_brain/db = I
|
||||
to_chat(db, span_psay(span_bold("\The [M] thinks, \"[message]\""))) //To any dominated brains inside us
|
||||
to_chat(db, span_psay(span_bold("[formatted_name] thinks, \"[message]\""))) //To any dominated brains inside us
|
||||
if(db.read_preference(/datum/preference/toggle/subtle_sounds))
|
||||
if(voice_sounds_list) //CHOMPEdit, changes subtle emote sound to use mob voice instead
|
||||
db << sound(pick(voice_sounds_list), volume = 25)
|
||||
@@ -325,7 +342,7 @@
|
||||
for(var/B in M.vore_organs)
|
||||
for(var/mob/living/L in B)
|
||||
if(L.absorbed)
|
||||
to_chat(L, span_psay(span_bold("\The [M] thinks, \"[message]\""))) //To any absorbed people inside us
|
||||
to_chat(L, span_psay(span_bold("[formatted_name] thinks, \"[message]\""))) //To any absorbed people inside us
|
||||
if(L.read_preference(/datum/preference/toggle/subtle_sounds))
|
||||
if(voice_sounds_list) //CHOMPEdit, changes subtle emote sound to use mob voice instead
|
||||
L << sound(pick(voice_sounds_list), volume = 25)
|
||||
@@ -348,7 +365,7 @@
|
||||
else if(isobserver(G) && G.client?.prefs?.read_preference(/datum/preference/toggle/ghost_ears) && \
|
||||
G.client?.prefs?.read_preference(/datum/preference/toggle/ghost_see_whisubtle))
|
||||
if(client?.prefs?.read_preference(/datum/preference/toggle/whisubtle_vis) || check_rights_for(G.client, R_HOLDER))
|
||||
to_chat(G, span_psay("\The [M] thinks, \"[message]\""))
|
||||
to_chat(G, span_psay("[formatted_name] thinks, \"[message]\""))
|
||||
log_say(message,M)
|
||||
else //There wasn't anyone to send the message to, pred or prey, so let's just say it instead and correct our psay just in case.
|
||||
M.forced_psay = FALSE
|
||||
@@ -377,6 +394,7 @@
|
||||
var/f = FALSE //did we find someone to send the message to other than ourself?
|
||||
var/mob/living/pb //predator body
|
||||
var/mob/living/M = src
|
||||
var/formatted_name = "\The [M]"
|
||||
if(istype(M, /mob/living/dominated_brain))
|
||||
var/mob/living/dominated_brain/db = M
|
||||
if(db.loc != db.pred_body)
|
||||
@@ -393,6 +411,14 @@
|
||||
|
||||
else if(M.absorbed && isbelly(M.loc))
|
||||
pb = M.loc.loc
|
||||
var/obj/belly/B = M.loc
|
||||
if(B.absorbedrename_enabled)
|
||||
formatted_name = B.absorbedrename_name
|
||||
formatted_name = replacetext(formatted_name,"%pred",B.owner)
|
||||
formatted_name = replacetext(formatted_name,"%belly",B.name)
|
||||
formatted_name = replacetext(formatted_name,"%prey","\The [M]")
|
||||
to_chat(pb, span_pemote("[formatted_name] [message]"))
|
||||
else
|
||||
to_chat(pb, span_pemote("\The [M] [message]")) //To our pred if absorbed
|
||||
if(pb.read_preference(/datum/preference/toggle/subtle_sounds))
|
||||
if(voice_sounds_list) //CHOMPEdit, changes subtle emote sound to use mob voice instead
|
||||
@@ -404,7 +430,7 @@
|
||||
for(var/I in pb.contents)
|
||||
if(istype(I, /mob/living/dominated_brain) && I != M)
|
||||
var/mob/living/dominated_brain/db = I
|
||||
to_chat(db, span_pemote("\The [M] [message]")) //To any dominated brains in the pred
|
||||
to_chat(db, span_pemote("[formatted_name] [message]")) //To any dominated brains in the pred
|
||||
if(db.read_preference(/datum/preference/toggle/subtle_sounds))
|
||||
if(voice_sounds_list) //CHOMPEdit, changes subtle emote sound to use mob voice instead
|
||||
pb << sound(pick(voice_sounds_list), volume = 25)
|
||||
@@ -412,7 +438,7 @@
|
||||
for(var/B in pb.vore_organs)
|
||||
for(var/mob/living/L in B)
|
||||
if(L.absorbed && L != M && L.ckey)
|
||||
to_chat(L, span_pemote("\The [M] [message]")) //To any absorbed people in the pred
|
||||
to_chat(L, span_pemote("[formatted_name] [message]")) //To any absorbed people in the pred
|
||||
if(L.read_preference(/datum/preference/toggle/subtle_sounds))
|
||||
if(voice_sounds_list) //CHOMPEdit, changes subtle emote sound to use mob voice instead
|
||||
L << sound(pick(voice_sounds_list), volume = 25)
|
||||
@@ -422,7 +448,7 @@
|
||||
for(var/I in M.contents)
|
||||
if(istype(I, /mob/living/dominated_brain))
|
||||
var/mob/living/dominated_brain/db = I
|
||||
to_chat(db, span_pemote(span_bold("\The [M] [message]"))) //To any dominated brains inside us
|
||||
to_chat(db, span_pemote(span_bold("[formatted_name] [message]"))) //To any dominated brains inside us
|
||||
if(db.read_preference(/datum/preference/toggle/subtle_sounds))
|
||||
if(voice_sounds_list) //CHOMPEdit, changes subtle emote sound to use mob voice instead
|
||||
db << sound(pick(voice_sounds_list), volume = 25)
|
||||
@@ -430,7 +456,7 @@
|
||||
for(var/B in M.vore_organs)
|
||||
for(var/mob/living/L in B)
|
||||
if(L.absorbed)
|
||||
to_chat(L, span_pemote(span_bold("\The [M] [message]"))) //To any absorbed people inside us
|
||||
to_chat(L, span_pemote(span_bold("[formatted_name] [message]"))) //To any absorbed people inside us
|
||||
if(L.read_preference(/datum/preference/toggle/subtle_sounds))
|
||||
if(voice_sounds_list) //CHOMPEdit, changes subtle emote sound to use mob voice instead
|
||||
L << sound(pick(voice_sounds_list), volume = 25)
|
||||
@@ -438,7 +464,7 @@
|
||||
|
||||
if(f) //We found someone to send the message to
|
||||
if(pb)
|
||||
to_chat(M, span_pemote("\The [M] [message]")) //To us if we are the prey
|
||||
to_chat(M, span_pemote("[formatted_name] [message]")) //To us if we are the prey
|
||||
if(M.read_preference(/datum/preference/toggle/subtle_sounds))
|
||||
if(voice_sounds_list) //CHOMPEdit, changes subtle emote sound to use mob voice instead
|
||||
M << sound(pick(voice_sounds_list), volume = 25)
|
||||
@@ -453,7 +479,7 @@
|
||||
else if(isobserver(G) && G.client?.prefs?.read_preference(/datum/preference/toggle/ghost_ears) && \
|
||||
G.client?.prefs?.read_preference(/datum/preference/toggle/ghost_see_whisubtle))
|
||||
if(client?.prefs?.read_preference(/datum/preference/toggle/whisubtle_vis) || check_rights_for(G.client, R_HOLDER))
|
||||
to_chat(G, span_pemote("\The [M] [message]"))
|
||||
to_chat(G, span_pemote("[formatted_name] [message]"))
|
||||
log_say(message,M)
|
||||
else //There wasn't anyone to send the message to, pred or prey, so let's just emote it instead and correct our psay just in case.
|
||||
M.forced_psay = FALSE
|
||||
|
||||
@@ -604,6 +604,18 @@
|
||||
if(new_private_struggle == 1)
|
||||
new_belly.private_struggle = TRUE
|
||||
|
||||
if(isnum(belly_data["absorbedrename_enabled"]))
|
||||
var/new_absorbedrename_enabled = belly_data["absorbedrename_enabled"]
|
||||
if(new_absorbedrename_enabled == 0)
|
||||
new_belly.absorbedrename_enabled = FALSE
|
||||
if(new_absorbedrename_enabled == 1)
|
||||
new_belly.absorbedrename_enabled = TRUE
|
||||
|
||||
if(istext(belly_data["absorbedrename_name"]))
|
||||
var/new_absorbedrename_name = sanitize(belly_data["absorbedrename_name"],MAX_MESSAGE_LEN,0,0,0)
|
||||
if(new_absorbedrename_name)
|
||||
new_belly.absorbedrename_name = new_absorbedrename_name
|
||||
|
||||
if(istext(belly_data["eating_privacy_local"]))
|
||||
var/new_eating_privacy_local = html_encode(belly_data["eating_privacy_local"])
|
||||
if(new_eating_privacy_local && (new_eating_privacy_local in list("default","subtle","loud")))
|
||||
|
||||
@@ -68,6 +68,8 @@
|
||||
var/belly_overall_mult = 1 //Multiplier applied ontop of any other specific multipliers
|
||||
var/private_struggle = FALSE // If struggles are made public or not
|
||||
var/prevent_saving = FALSE // Can this belly be saved? For special bellies that mobs and adminbus might have.
|
||||
var/absorbedrename_enabled = FALSE // If absorbed prey are renamed.
|
||||
var/absorbedrename_name = "%pred's %belly" // What absorbed prey are renamed to.
|
||||
|
||||
|
||||
var/vore_sprite_flags = DM_FLAG_VORESPRITE_BELLY
|
||||
@@ -439,6 +441,8 @@
|
||||
"entrance_logs",
|
||||
"noise_freq",
|
||||
"private_struggle",
|
||||
"absorbedrename_enabled",
|
||||
"absorbedrename_name",
|
||||
"item_digest_logs",
|
||||
"show_fullness_messages",
|
||||
"digest_max",
|
||||
|
||||
@@ -311,6 +311,8 @@
|
||||
belly_data["item_digest_logs"] = B.item_digest_logs
|
||||
belly_data["eating_privacy_local"] = B.eating_privacy_local
|
||||
belly_data["private_struggle"] = B.private_struggle
|
||||
belly_data["absorbedrename_enabled"] = B.absorbedrename_enabled
|
||||
belly_data["absorbedrename_name"] = B.absorbedrename_name
|
||||
|
||||
// Sounds
|
||||
belly_data["is_wet"] = B.is_wet
|
||||
|
||||
@@ -877,6 +877,14 @@
|
||||
if("b_private_struggle")
|
||||
host.vore_selected.private_struggle = !host.vore_selected.private_struggle
|
||||
. = TRUE
|
||||
if("b_absorbedrename_enabled")
|
||||
host.vore_selected.absorbedrename_enabled = !host.vore_selected.absorbedrename_enabled
|
||||
. = TRUE
|
||||
if("b_absorbedrename_name")
|
||||
var/new_absorbedrename_name = sanitize(params["val"], MAX_MESSAGE_LEN, FALSE, TRUE, FALSE)
|
||||
if(new_absorbedrename_name)
|
||||
host.vore_selected.absorbedrename_name = new_absorbedrename_name
|
||||
. = TRUE
|
||||
if("b_vorespawn_blacklist")
|
||||
host.vore_selected.vorespawn_blacklist = !host.vore_selected.vorespawn_blacklist
|
||||
. = TRUE
|
||||
|
||||
@@ -184,6 +184,10 @@
|
||||
"vorespawn_whitelist" = selected.vorespawn_whitelist,
|
||||
"vorespawn_absorbed" = (global_flag_check(selected.vorespawn_absorbed, VS_FLAG_ABSORB_YES) + global_flag_check(selected.vorespawn_absorbed, VS_FLAG_ABSORB_PREY)),
|
||||
"private_struggle" = selected.private_struggle,
|
||||
"absorbedrename_enabled" = selected.absorbedrename_enabled,
|
||||
"absorbedrename_name" = selected.absorbedrename_name,
|
||||
"absorbedrename_name_max" = BELLIES_NAME_MAX,
|
||||
"absorbedrename_name_min" = BELLIES_NAME_MIN,
|
||||
"drainmode" = selected.drainmode,
|
||||
"drainmode_options" = selected.drainmodes,
|
||||
)
|
||||
|
||||
@@ -182,15 +182,8 @@ export const TicketsPanel = (props) => {
|
||||
<Stack.Item>
|
||||
<Stack align="center">
|
||||
<Stack.Item>
|
||||
{ticket.ishandled ? (
|
||||
<Box
|
||||
textColor="white"
|
||||
className="TicketPanel__Label"
|
||||
backgroundColor={LevelColor[ticket.level]}
|
||||
>
|
||||
{availableLevel[ticket.level]}
|
||||
</Box>
|
||||
) : (
|
||||
{!ticket.ishandled &&
|
||||
ticket.state === State.open ? (
|
||||
<Blink>
|
||||
<Box
|
||||
textColor="white"
|
||||
@@ -200,6 +193,14 @@ export const TicketsPanel = (props) => {
|
||||
{availableLevel[ticket.level]}
|
||||
</Box>
|
||||
</Blink>
|
||||
) : (
|
||||
<Box
|
||||
textColor="white"
|
||||
className="TicketPanel__Label"
|
||||
backgroundColor={LevelColor[ticket.level]}
|
||||
>
|
||||
{availableLevel[ticket.level]}
|
||||
</Box>
|
||||
)}
|
||||
</Stack.Item>
|
||||
<Stack.Item>{ticket.name}</Stack.Item>
|
||||
|
||||
@@ -7,6 +7,7 @@ import { VorePanelColorBox } from '../../VorePanelElements/VorePanelCommonElemen
|
||||
import { VorePanelEditDropdown } from '../../VorePanelElements/VorePanelEditDropdown';
|
||||
import { VorePanelEditNumber } from '../../VorePanelElements/VorePanelEditNumber';
|
||||
import { VorePanelEditSwitch } from '../../VorePanelElements/VorePanelEditSwitch';
|
||||
import { VorePanelEditText } from '../../VorePanelElements/VorePanelEditText';
|
||||
import { VoreSelectedWhitelist } from '../VisualTab/VoreSelecetedWhitelist';
|
||||
|
||||
export const BellyOptionsLeft = (props: {
|
||||
@@ -27,6 +28,10 @@ export const BellyOptionsLeft = (props: {
|
||||
save_digest_mode,
|
||||
eating_privacy_local,
|
||||
private_struggle,
|
||||
absorbedrename_enabled,
|
||||
absorbedrename_name,
|
||||
absorbedrename_name_max,
|
||||
absorbedrename_name_min,
|
||||
vorespawn_blacklist,
|
||||
vorespawn_whitelist,
|
||||
vorespawn_absorbed,
|
||||
@@ -163,6 +168,31 @@ export const BellyOptionsLeft = (props: {
|
||||
}
|
||||
/>
|
||||
</LabeledList.Item>
|
||||
<LabeledList.Item label="Toggle Absorbed Rename">
|
||||
<VorePanelEditSwitch
|
||||
action="set_attribute"
|
||||
subAction="b_absorbedrename_enabled"
|
||||
editMode={editMode}
|
||||
active={!!absorbedrename_enabled}
|
||||
tooltip={
|
||||
(absorbedrename_enabled ? 'Dis' : 'En') +
|
||||
'ables renaming absorbed prey. Please keep in mind bystander consent when enabling this setting. This is your only warning.'
|
||||
}
|
||||
/>
|
||||
</LabeledList.Item>
|
||||
{!!absorbedrename_enabled && (
|
||||
<LabeledList.Item label="Absorbed Prey Name">
|
||||
<VorePanelEditText
|
||||
action="set_attribute"
|
||||
subAction="b_absorbedrename_name"
|
||||
editMode={editMode}
|
||||
limit={absorbedrename_name_max}
|
||||
min={absorbedrename_name_min}
|
||||
entry={absorbedrename_name}
|
||||
tooltip="Name your absorbed prey, works with %pred, %prey and %belly."
|
||||
/>
|
||||
</LabeledList.Item>
|
||||
)}
|
||||
<LabeledList.Item label="Save Digest Mode">
|
||||
<VorePanelEditSwitch
|
||||
action="set_attribute"
|
||||
|
||||
@@ -131,6 +131,10 @@ export type bellyOptionData = {
|
||||
vorespawn_whitelist: string[];
|
||||
vorespawn_absorbed: number;
|
||||
private_struggle: BooleanLike;
|
||||
absorbedrename_enabled: BooleanLike;
|
||||
absorbedrename_name: string;
|
||||
absorbedrename_name_max: number;
|
||||
absorbedrename_name_min: number;
|
||||
drainmode_options: string[];
|
||||
drainmode: string;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user