Absorb Prey Names (#18237)

* Absorb Prey Names

* Test fixes (#15)

* Automatic changelog compile [ci skip]

* Floor tile placement and backend logic (#18228)

* tiletweak

* Update turfs.dm

* Automatic changelog for PR #18228 [ci skip]

* qucik test to telemetry (#18229)

* qucik test to telemetry

* .

* Bump actions/checkout from 4 to 5 (#18233)

Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 5.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Cell-Loaded Revolver Update (#18235)

Co-authored-by: Aroliacue <avaylaiss34@gmail.com>

* Automatic changelog for PR #18235 [ci skip]

* Absorb Prey Names

* Added warning + Fixed emotes

---------

Signed-off-by: dependabot[bot] <support@github.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: Kashargul <144968721+Kashargul@users.noreply.github.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>

* Delete html/changelogs/AutoChangeLog-pr-18235.yml

* Delete html/changelogs/AutoChangeLog-pr-18228.yml

* why...

* .

---------

Signed-off-by: dependabot[bot] <support@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:
Kashargul
2025-08-13 18:24:38 -04:00
committed by GitHub
co-authored by dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Aroliacue vorestation-ci[bot] <199609141+vorestation-ci[bot]@users.noreply.github.com> Cameron Lennox dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Aroliacue fracshun vorestation-ci[bot] <199609141+vorestation-ci[bot]@users.noreply.github.com> dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
parent 61478b0f27
commit eee14587ca
12 changed files with 136 additions and 21 deletions
+8
View File
@@ -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)
+38 -12
View File
@@ -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
@@ -272,6 +280,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)
@@ -286,7 +295,15 @@
f = TRUE
else if(M.absorbed && isbelly(M.loc))
pb = M.loc.loc
to_chat(pb, span_psay("\The [M] thinks, \"[message]\"")) //To our pred if absorbed
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))
pb << sound('sound/talksounds/subtle_sound.ogg', volume = 50)
f = TRUE
@@ -303,7 +320,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))
L << sound('sound/talksounds/subtle_sound.ogg', volume = 50)
f = TRUE
@@ -312,14 +329,14 @@
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))
db << sound('sound/talksounds/subtle_sound.ogg', volume = 50)
f = TRUE
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))
L << sound('sound/talksounds/subtle_sound.ogg', volume = 50)
f = TRUE
@@ -339,7 +356,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
@@ -368,6 +385,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)
@@ -383,7 +401,15 @@
else if(M.absorbed && isbelly(M.loc))
pb = M.loc.loc
to_chat(pb, span_pemote("\The [M] [message]")) //To our pred if absorbed
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))
pb << sound('sound/talksounds/subtle_sound.ogg', volume = 50)
f = TRUE
@@ -393,14 +419,14 @@
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))
db << sound('sound/talksounds/subtle_sound.ogg', volume = 50)
f = TRUE
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))
L << sound('sound/talksounds/subtle_sound.ogg', volume = 50)
f = TRUE
@@ -409,21 +435,21 @@
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))
db << sound('sound/talksounds/subtle_sound.ogg', volume = 50)
f = TRUE
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))
L << sound('sound/talksounds/subtle_sound.ogg', volume = 50)
f = TRUE
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))
M << sound('sound/talksounds/subtle_sound.ogg', volume = 50)
else
@@ -436,7 +462,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
+4
View File
@@ -23,6 +23,10 @@
BB = new projectile_type(src)
randpixel_xy()
/obj/item/ammo_casing/Destroy()
QDEL_NULL(BB)
return ..()
//removes the projectile from the ammo casing
/obj/item/ammo_casing/proc/expend()
. = BB
+12
View File
@@ -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")))
+4
View File
@@ -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,
)