diff --git a/code/_helpers/global_lists_vr.dm b/code/_helpers/global_lists_vr.dm
index 64393508af..3f812bb09e 100644
--- a/code/_helpers/global_lists_vr.dm
+++ b/code/_helpers/global_lists_vr.dm
@@ -161,6 +161,177 @@ var/global/list/edible_trash = list(/obj/item/trash,
/obj/item/device/mmi/digital/posibrain,
/obj/item/device/aicard)
+var/global/list/cont_flavors = list(
+ "All" = cont_flavors_all,
+ "Acrid" = cont_flavors_acrid,
+ "Dirty" = cont_flavors_dirty,
+ "Musky" = cont_flavors_musky,
+ "Smelly" = cont_flavors_smelly,
+ "Wet" = cont_flavors_wet)
+
+var/global/list/cont_flavors_all = list("soggy",
+ "soaked",
+ "dirty",
+ "nasty",
+ "slimy",
+ "drenched",
+ "sloppy",
+ "grimy",
+ "sludgy",
+ "stinky",
+ "mucky",
+ "stained",
+ "soiled",
+ "filthy",
+ "saucy",
+ "foul",
+ "icky",
+ "tarnished",
+ "unsanitary",
+ "messy",
+ "begrimed",
+ "cruddy",
+ "funky",
+ "disgusting",
+ "repulsive",
+ "noxious",
+ "gruesome",
+ "gross",
+ "putrid",
+ "yucky",
+ "tainted",
+ "putrescent",
+ "unsavory",
+ "smelly",
+ "smutty",
+ "acrid",
+ "pungent",
+ "unclean",
+ "contaminated",
+ "gunky",
+ "gooey",
+ "sticky",
+ "drippy",
+ "oozing",
+ "sloshed",
+ "digested",
+ "sopping",
+ "damp",
+ "gloppy",
+ "begraggled",
+ "churned",
+ "juicy")
+
+var/global/list/cont_flavors_wet = list("soggy",
+ "soaked",
+ "slimy",
+ "drenched",
+ "sloppy",
+ "sludgy",
+ "gooey",
+ "sticky",
+ "drippy",
+ "oozing",
+ "sloshed",
+ "sopping",
+ "damp",
+ "gloppy",
+ "juicy")
+
+var/global/list/cont_flavors_smelly = list("nasty",
+ "stinky",
+ "filthy",
+ "foul",
+ "icky",
+ "funky",
+ "disgusting",
+ "repulsive",
+ "noxious",
+ "gross",
+ "putrid",
+ "yucky",
+ "putrescent",
+ "unsavory",
+ "smelly",
+ "pungent")
+
+var/global/list/cont_flavors_acrid = list("nasty",
+ "slimy",
+ "sloppy",
+ "grimy",
+ "sludgy",
+ "mucky",
+ "stained",
+ "saucy",
+ "foul",
+ "icky",
+ "disgusting",
+ "repulsive",
+ "noxious",
+ "gruesome",
+ "gross",
+ "putrid",
+ "yucky",
+ "tainted",
+ "putrescent",
+ "unsavory",
+ "smelly",
+ "acrid",
+ "pungent",
+ "gooey",
+ "sticky",
+ "drippy",
+ "oozing",
+ "sloshed",
+ "digested",
+ "gloppy",
+ "churned")
+
+var/global/list/cont_flavors_dirty = list("dirty",
+ "nasty",
+ "slimy",
+ "sloppy",
+ "grimy",
+ "mucky",
+ "stained",
+ "soiled",
+ "filthy",
+ "saucy",
+ "tarnished",
+ "unsanitary",
+ "messy",
+ "begrimed",
+ "cruddy",
+ "gruesome",
+ "gross",
+ "tainted",
+ "unsavory",
+ "smutty",
+ "unclean",
+ "contaminated",
+ "gunky",
+ "gooey",
+ "sticky",
+ "gloppy",
+ "begraggled")
+
+var/global/list/cont_flavors_musky = list("soggy",
+ "nasty",
+ "slimy",
+ "drenched",
+ "sloppy",
+ "musky",
+ "saucy",
+ "messy",
+ "funky",
+ "tainted",
+ "smelly",
+ "smutty",
+ "gooey",
+ "sticky",
+ "drippy",
+ "juicy")
+
/hook/startup/proc/init_vore_datum_ref_lists()
var/paths
diff --git a/code/modules/vore/eating/belly_obj_vr.dm b/code/modules/vore/eating/belly_obj_vr.dm
index 0d4c9705f9..b803af0817 100644
--- a/code/modules/vore/eating/belly_obj_vr.dm
+++ b/code/modules/vore/eating/belly_obj_vr.dm
@@ -33,6 +33,7 @@
var/transferlocation // Location that the prey is released if they struggle and get dropped off.
var/release_sound = TRUE // Boolean for now, maybe replace with something else later
var/mode_flags = 0 // Stripping, numbing, etc.
+ var/cont_flavor = "All" // Selected contamination mode.
//I don't think we've ever altered these lists. making them static until someone actually overrides them somewhere.
//Actual full digest modes
@@ -41,7 +42,7 @@
var/tmp/static/list/mode_flag_list = list("Numbing" = DM_FLAG_NUMBING, "Itemweak" = DM_FLAG_ITEMWEAK, "Stripping" = DM_FLAG_STRIPPING)
//Transformation modes
var/tmp/static/list/transform_modes = list(DM_TRANSFORM_MALE,DM_TRANSFORM_FEMALE,DM_TRANSFORM_KEEP_GENDER,DM_TRANSFORM_CHANGE_SPECIES_AND_TAUR,DM_TRANSFORM_CHANGE_SPECIES_AND_TAUR_EGG,DM_TRANSFORM_REPLICA,DM_TRANSFORM_REPLICA_EGG,DM_TRANSFORM_KEEP_GENDER_EGG,DM_TRANSFORM_MALE_EGG,DM_TRANSFORM_FEMALE_EGG, DM_EGG)
-
+
//List of slots that stripping handles strips
var/tmp/static/list/slots = list(slot_back,slot_handcuffed,slot_l_store,slot_r_store,slot_wear_mask,slot_l_hand,slot_r_hand,slot_wear_id,slot_glasses,slot_gloves,slot_head,slot_shoes,slot_belt,slot_wear_suit,slot_w_uniform,slot_s_store,slot_l_ear,slot_r_ear)
@@ -136,7 +137,8 @@
"digest_messages_prey",
"examine_messages",
"emote_lists",
- "mode_flags"
+ "mode_flags",
+ "cont_flavor"
)
/obj/belly/New(var/newloc)
@@ -611,6 +613,7 @@
dupe.bulge_size = bulge_size
dupe.shrink_grow_size = shrink_grow_size
dupe.mode_flags = mode_flags
+ dupe.cont_flavor = cont_flavor
//// Object-holding variables
//struggle_messages_outside - strings
diff --git a/code/modules/vore/eating/bellymodes_vr.dm b/code/modules/vore/eating/bellymodes_vr.dm
index 1dff971638..3b218fa38b 100644
--- a/code/modules/vore/eating/bellymodes_vr.dm
+++ b/code/modules/vore/eating/bellymodes_vr.dm
@@ -38,8 +38,9 @@
if(isitem(A) && !did_an_item)
var/obj/item/I = A
if(mode_flags & DM_FLAG_ITEMWEAK)
- I.gurgle_contaminate(contents, owner)
+ I.gurgle_contaminate(contents, cont_flavor)
items_preserved |= I
+ to_update = TRUE
else
digest_item(I)
to_update = TRUE
@@ -52,11 +53,11 @@
if(L.absorbed)
L.Weaken(5)
-
+
//Handle 'human'
if(ishuman(L))
var/mob/living/carbon/human/H = L
-
+
//Numbing flag
if(mode_flags & DM_FLAG_NUMBING)
if(H.bloodstr.get_reagent_amount("numbenzyme") < 2)
@@ -69,7 +70,7 @@
if(I)
H.unEquip(I,force = TRUE)
if(mode_flags & DM_FLAG_ITEMWEAK)
- I.gurgle_contaminate(contents, owner)
+ I.gurgle_contaminate(contents, cont_flavor)
items_preserved |= I
else
digest_item(I)
@@ -154,7 +155,7 @@
for (var/target in touchable_mobs)
var/mob/living/M = target
-
+
if(M.absorbed && owner.nutrition >= 100)
M.absorbed = 0
to_chat(M,"You suddenly feel solid again ")
@@ -167,7 +168,7 @@
for (var/target in touchable_mobs)
var/mob/living/M = target
-
+
if(prob(10)) //Less often than gurgles. People might leave this on forever.
play_sound = pick(digestion_sounds)
@@ -181,13 +182,13 @@
for (var/target in touchable_mobs)
var/mob/living/M = target
-
+
if(prob(10)) //Infinite gurgles!
play_sound = pick(digestion_sounds)
if(M.size_multiplier > shrink_grow_size) //Shrink until smol.
M.resize(M.size_multiplier-0.01) //Shrink by 1% per tick.
-
+
if(M.nutrition >= 100) //Absorbing bodymass results in nutrition if possible.
var/oldnutrition = (M.nutrition * 0.05)
M.nutrition = (M.nutrition * 0.95)
@@ -198,7 +199,7 @@
for (var/target in touchable_mobs)
var/mob/living/M = target
-
+
if(prob(10))
play_sound = pick(digestion_sounds)
@@ -212,14 +213,14 @@
for (var/target in touchable_mobs)
var/mob/living/M = target
-
+
if(prob(10))
play_sound = pick(digestion_sounds)
if(M.size_multiplier > shrink_grow_size && owner.size_multiplier < 2) //Grow until either pred is large or prey is small.
owner.resize(owner.size_multiplier+0.01) //Grow by 1% per tick.
M.resize(M.size_multiplier-0.01) //Shrink by 1% per tick
-
+
if(M.nutrition >= 100)
var/oldnutrition = (M.nutrition * 0.05)
M.nutrition = (M.nutrition * 0.95)
@@ -227,7 +228,7 @@
///////////////////////////// DM_HEAL /////////////////////////////
else if(digest_mode == DM_HEAL)
-
+
if(prob(50)) //Wet heals! The secret is you can leave this on for gurgle noises for fun.
play_sound = pick(digestion_sounds)
@@ -260,5 +261,5 @@
M.updateVRPanel()
if(owner.client)
owner.updateVRPanel()
-
+
return SSBELLIES_PROCESSED
diff --git a/code/modules/vore/eating/contaminate_vr.dm b/code/modules/vore/eating/contaminate_vr.dm
index bf51ca9d59..f185605d81 100644
--- a/code/modules/vore/eating/contaminate_vr.dm
+++ b/code/modules/vore/eating/contaminate_vr.dm
@@ -5,20 +5,33 @@ var/image/gurgled_overlay = image('icons/effects/sludgeoverlay_vr.dmi')
var/cleanname
var/cleandesc
-/obj/item/proc/gurgle_contaminate(var/atom/movable/item_storage = null)
+/obj/item/proc/gurgle_contaminate(var/atom/movable/item_storage = null, var/cont_flavor = "All")
if(!can_gurgle())
return FALSE
if(!gurgled)
gurgled = TRUE
overlays += gurgled_overlay
- var/gurgleflavor = pick("soggy","soaked","dirty","nasty","slimy","drenched","sloppy","grimy","sludgy","stinky","mucky","stained","soiled","filthy","saucy","foul","icky","tarnished","unsanitary","messy","begrimed","cruddy","funky","disgusting","repulsive","noxious","gruesome","gross","putrid","yucky","tainted","putrescent","unsavory","smelly","smutty","acrid","pungent","unclean","contaminated","gunky","gooey","sticky","drippy","oozing","sloshed","digested","sopping","damp","gloppy","begraggled","churned")
+ switch(cont_flavor)
+ if("All")
+ cont_flavor = cont_flavors_all
+ if("Acrid")
+ cont_flavor = cont_flavors_acrid
+ if("Dirty")
+ cont_flavor = cont_flavors_dirty
+ if("Musky")
+ cont_flavor = cont_flavors_musky
+ if("Smelly")
+ cont_flavor = cont_flavors_smelly
+ if("Wet")
+ cont_flavor = cont_flavors_wet
+ var/gurgleflavor = pick(cont_flavor)
cleanname = src.name
cleandesc = src.desc
name = "[gurgleflavor] [cleanname]"
desc = "[cleandesc] It seems to be covered in ominously foul residue and needs a wash."
for(var/obj/item/O in contents)
- O.gurgle_contaminate(item_storage)
+ O.gurgle_contaminate(item_storage, cont_flavor)
return TRUE
/obj/item/proc/can_gurgle()
diff --git a/code/modules/vore/eating/vorepanel_vr.dm b/code/modules/vore/eating/vorepanel_vr.dm
index 31a9e7e476..b7ee064846 100644
--- a/code/modules/vore/eating/vorepanel_vr.dm
+++ b/code/modules/vore/eating/vorepanel_vr.dm
@@ -204,6 +204,9 @@
dat += " [english_list(flag_list)]"
else
dat += " None"
+ if(selected.mode_flags & DM_FLAG_ITEMWEAK)
+ dat += "
Contamination Mode:"
+ dat += "[selected.cont_flavor]"
//Belly verb
dat += "
Vore Verb:"
@@ -514,14 +517,14 @@
var/new_mode = input("Choose Mode (currently [selected.digest_mode])") as null|anything in menu_list
if(!new_mode)
return 0
-
+
if(new_mode == DM_TRANSFORM) //Snowflek submenu
var/list/tf_list = selected.transform_modes
var/new_tf_mode = input("Choose TF Mode (currently [selected.tf_mode])") as null|anything in tf_list
if(!new_tf_mode)
return 0
selected.tf_mode = new_tf_mode
-
+
selected.digest_mode = new_mode
selected.items_preserved.Cut() //Re-evaltuate all items in belly on belly-mode change
@@ -533,6 +536,13 @@
selected.mode_flags ^= selected.mode_flag_list[toggle_addon]
selected.items_preserved.Cut() //Re-evaltuate all items in belly on addon toggle
+ if(href_list["b_cont_flavor"])
+ var/list/menu_list = cont_flavors.Copy()
+ var/new_flavor = input("Choose Contamination Mode (currently [selected.cont_flavor])") as null|anything in menu_list
+ if(!new_flavor)
+ return 0
+ selected.cont_flavor = new_flavor
+
if(href_list["b_desc"])
var/new_desc = html_encode(input(usr,"Belly Description ([BELLIES_DESC_MAX] char limit):","New Description",selected.desc) as message|null)