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)