diff --git a/code/__HELPERS/reagents.dm b/code/__HELPERS/reagents.dm index 0ecf82b191..754cfa8a61 100644 --- a/code/__HELPERS/reagents.dm +++ b/code/__HELPERS/reagents.dm @@ -97,6 +97,8 @@ return chosen_id /proc/find_reagent_object_from_type(input) + if(!GLOB.chemical_reagents_list) + build_chemical_reagent_list() //Still no idea how to make modular changes to global procs if(GLOB.chemical_reagents_list[input]) //prefer IDs! return GLOB.chemical_reagents_list[input] else diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index ff73427969..241e8b24a9 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -854,21 +854,6 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "[balls_fluid.name]" else dat += "Nothing?" - /* //Old - switch(features["balls_fluid"]) - if(/datum/reagent/consumable/milk) - dat += "Milk" - if(/datum/reagent/water) - dat += "Water" - if(/datum/reagent/consumable/semen) - dat += "Semen" - if(/datum/reagent/consumable/semen/femcum) - dat += "Femcum" - if(/datum/reagent/consumable/alienhoney) - dat += "Honey" - else - dat += "Nothing?" - */ dat += "" dat += APPEARANCE_CATEGORY_COLUMN dat += "

Vagina

" @@ -912,23 +897,6 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "[breasts_fluid.name]" else dat += "Nothing?" - /* //Old - switch(features["breasts_fluid"]) - if(/datum/reagent/consumable/milk) - dat += "Milk" - if(/datum/reagent/water) - dat += "Water" - if(/datum/reagent/consumable/semen) - dat += "Semen" - if(/datum/reagent/consumable/semen/femcum) - dat += "Femcum" - if(/datum/reagent/consumable/alienhoney) - dat += "Honey" - else - dat += "Nothing?" - //This else is a safeguard for errors, and if it happened, they wouldn't be able to change this pref, - //DO NOT REMOVE IT UNLESS YOU HAVE A GOOD IDEA - */ dat += "" dat += APPEARANCE_CATEGORY_COLUMN dat += "

Butt

" @@ -1366,6 +1334,11 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "Harmful ERP verbs : [extremeharm]
" //END OF SKYRAT EDIT dat += "Automatic Wagging: [(cit_toggles & NO_AUTO_WAG) ? "Disabled" : "Enabled"]
" + dat += "? " + dat += "Genital Fluid Blacklist
" + if(gfluid_blacklist?.len) + dat += "? " + dat += "Genital Fluid Un-Blacklist
" dat += "" dat += "
" if(KEYBINDINGS_TAB) // Custom keybindings @@ -2991,6 +2964,25 @@ GLOBAL_LIST_EMPTY(preferences_datums) color_list[color_number] = "#[sanitize_hexcolor(new_marking_color, 6)]" else to_chat(user, "Invalid color. Your color is not bright enough.") + if("gfluid_black") + var/list/datum/reagent/fluid_list = GLOB.genital_fluids_list.Copy() + var/list/blacklisted = list() + for(var/r in gfluid_blacklist) + LAZYADD(blacklisted, find_reagent_object_from_type(r)) + LAZYREMOVE(fluid_list, GLOB.default_genital_fluids + blacklisted) //these are already blacklisted/are defaults + var/datum/reagent/selected = tgui_input_list(user, "Blacklist a fluid:", "Genital Fluid Blacklist", fluid_list) + if(selected) + LAZYADD(gfluid_blacklist, selected.type) + if("gfluid_unblack") + var/list/datum/reagent/fluid_list + for(var/r in gfluid_blacklist) + LAZYADD(fluid_list, find_reagent_object_from_type(r)) + if(fluid_list) + var/datum/reagent/selected = tgui_input_list(user, "Remove a fluid from your blacklist:", "Genital Fluid Blacklist", fluid_list) + if(selected) + LAZYREMOVE(gfluid_blacklist, selected.type) + else + to_chat(user, span_warning("You do not have blacklisted reagents!")) else switch(href_list["preference"]) if("disable_combat_cursor") diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index e657518867..c89c1b39f2 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -449,6 +449,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car S["be_victim"] >> be_victim S["disable_combat_cursor"] >> disable_combat_cursor S["use_new_playerpanel"] >> use_new_playerpanel + S["gfluid_blacklist"] >> gfluid_blacklist //favorite outfits S["favorite_outfits"] >> favorite_outfits @@ -515,6 +516,10 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car see_chat_emotes = sanitize_integer(see_chat_emotes, 0, 1, initial(see_chat_emotes)) //SKYRAT CHANGES END + //SPLURT CHANGES BEGIN + gfluid_blacklist = sanitize_islist(gfluid_blacklist, list()) + //SPLURT CHANGES END + verify_keybindings_valid() // one of these days this will runtime and you'll be glad that i put it in a different proc so no one gets their saves wiped if(S["unlockable_loadout"]) @@ -638,6 +643,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car WRITE_FILE(S["be_victim"], be_victim) WRITE_FILE(S["disable_combat_cursor"], disable_combat_cursor) WRITE_FILE(S["use_new_playerpanel"], use_new_playerpanel) + WRITE_FILE(S["gfluid_blacklist"], gfluid_blacklist) var/mob/living/carbon/human/H = parent.mob if(istype(H)) diff --git a/modular_splurt/code/__HELPERS/_cit_helpers.dm b/modular_splurt/code/__HELPERS/_cit_helpers.dm index bc498e9442..f93bbd0553 100644 --- a/modular_splurt/code/__HELPERS/_cit_helpers.dm +++ b/modular_splurt/code/__HELPERS/_cit_helpers.dm @@ -1,2 +1,8 @@ //Genitals and arousals lists GLOBAL_LIST(genital_fluids_list) + +GLOBAL_LIST_INIT(default_genital_fluids, list( + find_reagent_object_from_type(/datum/reagent/consumable/milk), + find_reagent_object_from_type(/datum/reagent/consumable/semen), + find_reagent_object_from_type(/datum/reagent/consumable/semen/femcum) +)) diff --git a/modular_splurt/code/game/object/items/implants/implant_gfluid.dm b/modular_splurt/code/game/object/items/implants/implant_gfluid.dm index 36ffc73df6..c0514bb60e 100644 --- a/modular_splurt/code/game/object/items/implants/implant_gfluid.dm +++ b/modular_splurt/code/game/object/items/implants/implant_gfluid.dm @@ -63,7 +63,7 @@ cocc.fluid_id = selection.type SEND_SOUND(owner, 'sound/effects/bubbles.ogg') to_chat(owner, span_notice("You feel the fluids inside your [cocc.name] bubble and swirl...")) - selection.holder.del_reagent(selection.type) + message_admins("[ADMIN_LOOKUPFLW(owner)] changed the fluid of their [owner.p_their()] [cocc.name] to [selection].") /obj/item/implant/genital_fluid/emag_act() . = ..() diff --git a/modular_splurt/code/modules/arousal/arousal.dm b/modular_splurt/code/modules/arousal/arousal.dm index f1c1d75c0b..95e6791389 100644 --- a/modular_splurt/code/modules/arousal/arousal.dm +++ b/modular_splurt/code/modules/arousal/arousal.dm @@ -13,6 +13,17 @@ /mob/living/carbon/human/do_climax(datum/reagents/R, atom/target, obj/item/organ/genital/G, spill, cover = FALSE) if(!G) return + if(!target) + return + + var/cached_fluid + if(isliving(target) && !spill) + var/mob/living/L = target + var/list/blacklist = L.client?.prefs.gfluid_blacklist + if((G.get_fluid_id() in blacklist) || ((/datum/reagent/blood in blacklist) && ispath(G.get_fluid_id(), /datum/reagent/blood))) + cached_fluid = G.get_fluid_id() + var/default = G.get_default_fluid() + G.set_fluid_id(default) if(istype(G, /obj/item/organ/genital/penis)) var/obj/item/organ/genital/penis/bepis = G @@ -24,8 +35,12 @@ if(cover) target.add_cum_overlay() + . = ..() + if(cached_fluid) + G.set_fluid_id(cached_fluid) + /mob/living/carbon/human/mob_fill_container(obj/item/organ/genital/G, obj/item/reagent_containers/container, mb_time, obj/item/milking_machine/M) if(!M) return ..() @@ -71,4 +86,3 @@ if(cum_splatter_icon) cut_overlay(cum_splatter_icon) return TRUE - diff --git a/modular_splurt/code/modules/arousal/genitals.dm b/modular_splurt/code/modules/arousal/genitals.dm index 08ca6392a6..6588cca3f7 100644 --- a/modular_splurt/code/modules/arousal/genitals.dm +++ b/modular_splurt/code/modules/arousal/genitals.dm @@ -11,7 +11,7 @@ /obj/item/organ/genital/proc/get_fluid_id() if(fluid_id) return fluid_id - else if(linked_organ.fluid_id) + else if(linked_organ?.fluid_id) return linked_organ.fluid_id return @@ -27,10 +27,16 @@ /obj/item/organ/genital/proc/get_default_fluid() if(default_fluid_id) return default_fluid_id - else if(linked_organ.default_fluid_id) + else if(linked_organ?.default_fluid_id) return linked_organ.default_fluid_id return +/obj/item/organ/genital/proc/set_fluid_id(new_fluidtype) + if(genital_flags & GENITAL_FUID_PRODUCTION) + fluid_id = new_fluidtype + else if(linked_organ?.genital_flags & GENITAL_FUID_PRODUCTION) + linked_organ?.fluid_id = new_fluidtype + /obj/item/organ/genital var/list/obj/item/equipment = list() diff --git a/modular_splurt/code/modules/client/preferences.dm b/modular_splurt/code/modules/client/preferences.dm index 85f9f3f1a4..683afd00cf 100644 --- a/modular_splurt/code/modules/client/preferences.dm +++ b/modular_splurt/code/modules/client/preferences.dm @@ -1,6 +1,8 @@ /datum/preferences var/unholypref = "No" //Goin 2 hell fo dis one + var/list/gfluid_blacklist = list() //Stuff you don't want people to cum into you + /datum/preferences/New(client/C) if(!GLOB.genital_fluids_list) build_genital_fluids_list() //I DON'T KNOW where else to put it, ok?? @@ -87,6 +89,7 @@ /datum/reagent/consumable/liquidelectricity, /datum/reagent/consumable/char, /datum/reagent/consumable/laughsyrup, + /datum/reagent/consumable/honey, //zad ) GLOB.genital_fluids_list = list() diff --git a/modular_splurt/code/modules/reagents/chemistry/reagents/food_reagents.dm b/modular_splurt/code/modules/reagents/chemistry/reagents/food_reagents.dm index d8cda7c0cf..8e61b8af9e 100644 --- a/modular_splurt/code/modules/reagents/chemistry/reagents/food_reagents.dm +++ b/modular_splurt/code/modules/reagents/chemistry/reagents/food_reagents.dm @@ -1,8 +1,8 @@ /datum/reagent/consumable/alienhoney //for players who want bee character bewbs that produce honey. name = "alien honey" - description = "Sweet honey that came from a alien source. This honey doesn't possess the same healing or nutrition properties as earth-bound bee honey." + description = "Sweet honey that came from an alien source. This honey doesn't possess the same healing or nutrition properties as earth-bound bee honey." color = "#d3a308" - value = 3 //plentiful, so wouldnt be worth as much. + value = REAGENT_VALUE_COMMON //plentiful, so wouldnt be worth as much. nutriment_factor = 5 * REAGENTS_METABOLISM metabolization_rate = 1 * REAGENTS_METABOLISM taste_description = "sweetness"