Trash Eater Customization (#17315)

* Automatic changelog compile [ci skip]

* initial working. I HATE sourcetree I HATE git stash I WILL NOT be the stash jam boy

* Automatic changelog compile [ci skip]

* Get the actual work on it done

* Revert "Automatic changelog compile [ci skip]"

This reverts commit 651c1d6d1e.

* finish the export/import junk.
whoopsie. forgot.

* cleanup

* fucking changelogs

* PR feedback

* so long wayward !

* Update belly_obj_vr.dm

---------

Co-authored-by: vorestation-ci[bot] <199609141+vorestation-ci[bot]@users.noreply.github.com>
Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com>
This commit is contained in:
eghughguhhhhhh
2025-04-21 05:43:35 +02:00
committed by GitHub
co-authored by vorestation-ci[bot] <199609141+vorestation-ci[bot]@users.noreply.github.com> Kashargul
parent 4722c842c0
commit 7da98fc440
10 changed files with 105 additions and 10 deletions
+10
View File
@@ -365,6 +365,16 @@
if(new_emotes_digest)
new_belly.set_messages(new_emotes_digest,BELLY_MODE_DIGEST, limit = MAX_MESSAGE_LEN / 4)
if(islist(belly_data["trash_eater_in"]))
var/new_trash_eater_in = sanitize(jointext(belly_data["trash_eater_in"],"\n\n"),MAX_MESSAGE_LEN * 1.5,0,0,0)
if(new_trash_eater_in)
new_belly.set_messages(new_trash_eater_in ,BELLY_TRASH_EATER_IN, limit = MAX_MESSAGE_LEN / 2)
if(islist(belly_data["trash_eater_out"]))
var/new_trash_eater_out = sanitize(jointext(belly_data["trash_eater_out"],"\n\n"),MAX_MESSAGE_LEN * 1.5,0,0,0)
if(new_trash_eater_out)
new_belly.set_messages(new_trash_eater_out,BELLY_TRASH_EATER_OUT, limit = MAX_MESSAGE_LEN / 2)
if(islist(belly_data["emotes_hold"]))
var/new_emotes_hold = sanitize(jointext(belly_data["emotes_hold"],"\n\n"),MAX_MESSAGE_LEN * 1.5,0,0,0)
if(new_emotes_hold)
+18 -2
View File
@@ -167,6 +167,13 @@
"Their body looks somewhat larger than usual around the area of their %belly.",
"Their %belly looks larger than usual.")
var/list/trash_eater_in = list(
"%pred demonstrates their voracious capabilities by swallowing %item whole!"
)
var/list/trash_eater_out = list( //handles all item expulsions regardless of whether they have the trash perk
"%pred expels %item from their %belly!"
)
GLOBAL_LIST_INIT(vore_words_goo, list("muck","goo","sludge","slime","mire","ectoplasm","quagmire","glop","jelly","ooze","slush","mush","quicksand"))//%goo
GLOBAL_LIST_INIT(vore_words_hbellynoises, list("gurgle","gloorp","squelch","gloosh","squish","groan","grrrrrrn","sloooooOrp","slooosh","grrrbles","worbles"))//%happybelly
GLOBAL_LIST_INIT(vore_words_fat, list("love handles","fat","pudge","plumpness","squish","chunk","meat","softness","blubber","flab","paunch","hip dip","mass","dough","chub","marshmellowy goodness","girth","fluff","thickness","jello","adipose "))//%fat
@@ -277,7 +284,7 @@ GLOBAL_LIST_INIT(vore_words_snake, list("snake","serpent","reptilian","noodle","
// This is useful in customization boxes and such. The delimiter right now is \n\n so
// in message boxes, this looks nice and is easily delimited.
/obj/belly/proc/get_messages(type, delim = "\n\n")
VB_MESSAGE_SANIRY(type)
VB_MESSAGE_SANITY(type)
var/list/raw_messages
switch(type)
@@ -385,6 +392,11 @@ GLOBAL_LIST_INIT(vore_words_snake, list("snake","serpent","reptilian","noodle","
raw_messages = emote_lists[DM_GROW]
if(BELLY_MODE_UNABSORB)
raw_messages = emote_lists[DM_UNABSORB]
if(BELLY_TRASH_EATER_IN)
raw_messages = trash_eater_in
if(BELLY_TRASH_EATER_OUT)
raw_messages = trash_eater_out
var/messages = null
if(raw_messages)
messages = raw_messages.Join(delim)
@@ -397,7 +409,7 @@ GLOBAL_LIST_INIT(vore_words_snake, list("snake","serpent","reptilian","noodle","
/obj/belly/proc/set_messages(raw_text, type, delim = "\n\n", limit)
if(!limit)
CRASH("[src] set message called without limit!")
VB_MESSAGE_SANIRY(type)
VB_MESSAGE_SANITY(type)
var/list/raw_list
@@ -534,3 +546,7 @@ GLOBAL_LIST_INIT(vore_words_snake, list("snake","serpent","reptilian","noodle","
emote_lists[DM_GROW] = raw_list
if(BELLY_MODE_UNABSORB)
emote_lists[DM_UNABSORB] = raw_list
if(BELLY_TRASH_EATER_IN)
trash_eater_in = raw_list
if(BELLY_TRASH_EATER_OUT)
trash_eater_out = raw_list
+8 -3
View File
@@ -460,7 +460,9 @@
"item_multiplier",
"undergarment_chosen",
"undergarment_if_none",
"undergarment_color"
"undergarment_color",
"trash_eater_in",
"trash_eater_out"
)
if (save_digest_mode == 1)
@@ -918,10 +920,13 @@
//privacy_volume = 25
//Print notifications/sound if necessary
if(istype(M, /mob/observer))
if(isobserver(M))
silent = TRUE
if(!silent)
owner.visible_message(span_vnotice(span_green(span_bold("[owner] [release_verb] [M] from their [lowertext(name)]!"))),range = privacy_range)
if(isitem(M))
owner.visible_message(span_vnotice(span_green(span_bold(belly_format_string(trash_eater_out, M, item=M)))),range = privacy_range) //double dip. prey = item, item = prey. sanity check in case they use %prey in the message.
else
owner.visible_message(span_vnotice(span_green(span_bold("[owner] [release_verb] [M] from their [lowertext(name)]!"))),range = privacy_range)
var/soundfile
if(!fancy_vore)
soundfile = GLOB.classic_release_sounds[release_sound]
@@ -219,6 +219,14 @@
for(var/msg in B.examine_messages_absorbed)
belly_data["examine_messages_absorbed"] += msg
belly_data["trash_eater_in"] = list()
for(var/msg in B.trash_eater_in)
belly_data["trash_eater_in"] += msg
belly_data["trash_eater_out"] = list()
for(var/msg in B.trash_eater_out)
belly_data["trash_eater_out"] += msg
//belly_data["emote_list"] = list()
//for(var/EL in B.emote_lists)
// for(var/msg in B.emote_lists[EL])
+1 -1
View File
@@ -908,7 +908,7 @@
updateVRPanel()
log_admin("VORE: [src] used Eat Trash to swallow [I].")
I.after_trash_eaten(src)
visible_message(span_vwarning("[src] demonstrates the voracious capabilities of their [lowertext(vore_selected.name)] by making [I] disappear!"))
visible_message(span_vwarning(src.vore_selected.belly_format_string(src.vore_selected.trash_eater_in, I, item=I)))
return
to_chat(src, span_notice("This snack is too powerful to go down that easily."))
return
+16
View File
@@ -2179,6 +2179,8 @@
host.vore_selected.examine_messages = default_belly.examine_messages.Copy()
host.vore_selected.examine_messages_absorbed = default_belly.examine_messages_absorbed.Copy()
host.vore_selected.emote_lists = default_belly.emote_lists.Copy()
host.vore_selected.trash_eater_in = default_belly.trash_eater_in.Copy()
host.vore_selected.trash_eater_out = default_belly.trash_eater_out.Copy()
qdel(default_belly)
. = TRUE
if("b_verb")
@@ -2836,6 +2838,20 @@
if(newcolor)
host.vore_selected.tail_extra_overlay2 = newcolor
. = TRUE
if("b_trasheater")
var/help = " Press enter twice to separate messages. '%pred' will be replaced with your name. '%prey' AND '%item will be replaced with the item's name. '%belly' will be replaced with your belly's name. '%count' will be replaced with the number of anything in your belly. '%countprey' will be replaced with the number of living prey in your belly."
switch(params["msgtype"])
if("in")
var/new_message = sanitize(tgui_input_text(user,"This is sent upon eating anything with the trash eater perk. Write them in 3rd person ('%pred demonstrates their voracious capabilities by swallowing %item whole!') Try to keep it brief!"+help,"Trash Eater Insert",host.vore_selected.get_messages(BELLY_TRASH_EATER_IN), MAX_MESSAGE_LEN * 1.5, TRUE, prevent_enter = TRUE),MAX_MESSAGE_LEN * 1.5,0,0,0)
if(new_message)
host.vore_selected.set_messages(new_message,BELLY_TRASH_EATER_IN, limit = MAX_MESSAGE_LEN / 4)
. = TRUE
if("out")
var/new_message = sanitize(tgui_input_text(user,"This is sent upon expeling any item in your belly. Write them in 3rd person ('%pred expels %item from their %belly!') Try to keep it brief!"+help,"Item Expel",host.vore_selected.get_messages(BELLY_TRASH_EATER_OUT), MAX_MESSAGE_LEN * 1.5, TRUE, prevent_enter = TRUE),MAX_MESSAGE_LEN * 1.5,0,0,0)
if(new_message)
host.vore_selected.set_messages(new_message,BELLY_TRASH_EATER_OUT, limit = MAX_MESSAGE_LEN / 4)
. = TRUE
if(.)
unsaved_changes = TRUE