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"