Adds selectable sets of contamination flavors for bellies.

-Divides item contamination flavors into categories to match better with the "belly" types.
-The selection menu shows up when itemweak mode is selected.
-The selection should save for each belly along with other prefs.
-The flavors have been cropped into following categories:
->All, contains the whole list as before apart from possible specific ones. Is the designated default option.
->Acrid, contains flavors implying regular nasty digestion.
->Dirty, contains flavors related to visual contamination.
->Musky, contains suggestively sloppy flavors without excess filth.
->Smelly, contains more airborne flavors without visual slop or crud.
->Wet, contains flavors of more neutral-ish soakage.
This commit is contained in:
Verkister
2018-05-01 13:34:42 +03:00
parent 33efa72b95
commit 7b0bdccade
5 changed files with 218 additions and 20 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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,"<span class='notice'>You suddenly feel solid again </span>")
@@ -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

View File

@@ -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()

View File

@@ -204,6 +204,9 @@
dat += " [english_list(flag_list)]"
else
dat += " None"
if(selected.mode_flags & DM_FLAG_ITEMWEAK)
dat += "<br><a href='?src=\ref[src];b_cont_flavor=\ref[selected]'>Contamination Mode:</a>"
dat += "[selected.cont_flavor]"
//Belly verb
dat += "<br><a href='?src=\ref[src];b_verb=\ref[selected]'>Vore Verb:</a>"
@@ -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)