From 90a95ff2e7dc4522b4db42b65bb360df2287ae7b Mon Sep 17 00:00:00 2001
From: Alphas00 <154434082+Alphas00@users.noreply.github.com>
Date: Mon, 3 Jun 2024 15:00:25 +0200
Subject: [PATCH] Blueberry Virus
Added "infectious" blueberry juice, which makes you swell depending on how much you have inside of you (also turns you blue). While you have some inside, clicking on yourself with a beaker will juice up to 10 out of you
Added this juice as an option for genitals fluid
Added Berrification virus, which makes you produce juice. It is a level 7 virus. It can be cured through normal virology means or by getting all infected juice out of the person
Added a "Blueberry Inflation" preference (juice will disappear when inside you, virus will not make you produce)
---
.../datums/diseases/advance/symptoms/berry.dm | 91 +++++++++++++++++++
.../modules/client/preferences/preferences.dm | 2 +
code/__HELPERS/global_lists.dm | 2 +-
code/modules/client/preferences.dm | 11 +++
code/modules/client/preferences_savefile.dm | 3 +-
tgstation.dme | 1 +
6 files changed, 108 insertions(+), 2 deletions(-)
create mode 100644 GainStation13/code/datums/diseases/advance/symptoms/berry.dm
diff --git a/GainStation13/code/datums/diseases/advance/symptoms/berry.dm b/GainStation13/code/datums/diseases/advance/symptoms/berry.dm
new file mode 100644
index 00000000..59a232f3
--- /dev/null
+++ b/GainStation13/code/datums/diseases/advance/symptoms/berry.dm
@@ -0,0 +1,91 @@
+/datum/symptom/berry
+ name = "Berrification"
+ desc = "The virus causes the host's biology to overflow with a blue substance. Infection ends if the substance is completely removed from their body, besides ordinary cures."
+ stealth = -5
+ resistance = -4
+ stage_speed = 1
+ transmittable = 6
+ level = 7
+ severity = 5
+ base_message_chance = 100
+ symptom_delay_min = 15
+ symptom_delay_max = 45
+ threshold_desc = list(
+ "Stage Speed" = "Increases the rate of liquid production.",
+ )
+ var/datum/reagent/infection_reagent = /datum/reagent/berry_juice_infection
+
+/datum/symptom/berry/Start(datum/disease/advance/A)
+ if(!..())
+ return
+ if(A.affected_mob?.client?.prefs?.blueberry_inflation)
+ A.affected_mob.reagents.add_reagent(infection_reagent, max(1, A.properties["stage_rate"]) * 10)
+ ..()
+
+/datum/symptom/berry/Activate(datum/disease/advance/A)
+ if(!..())
+ return
+ var/mob/living/carbon/M = A.affected_mob
+ if(!(M?.client?.prefs?.blueberry_inflation))
+ return
+ if(M.reagents.get_reagent_amount(infection_reagent) <= 0)
+ A.remove_disease()
+ switch(A.stage)
+ if(1, 2, 3, 4)
+ if(prob(base_message_chance))
+ to_chat(M, "[pick("You feel oddly full...", "Your stomach churns...", "You hear a gurgle...", "You taste berries...")]")
+ else
+ to_chat(M, "[pick("A deep slosh comes from inside you...", "Your mind feels so light...", "You think blue really suits you...", "Your skin feels so tight...")]")
+ M.reagents.add_reagent(infection_reagent, max(A.properties["stage_rate"], 1))
+
+/datum/reagent/berry_juice_infection
+ name = "Blueberry Juice"
+ description = "Totally infectious."
+ reagent_state = LIQUID
+ metabolization_rate = 0.25 * REAGENTS_METABOLISM
+ color = "#0004ff"
+ var/picked_color
+ var/list/random_color_list = list("#0058db","#5d00c7","#0004ff","#0057e7")
+ taste_description = "blueberry pie"
+ var/no_mob_color = FALSE
+ value = 10 //it sells. Make that berry factory
+
+/datum/reagent/berry_juice_infection/on_mob_add(mob/living/L, amount)
+ if(iscarbon(L))
+ var/mob/living/carbon/affected_mob = L
+ if(!(affected_mob?.client?.prefs?.blueberry_inflation))
+ affected_mob.reagents.remove_reagent(/datum/reagent/berry_juice_infection, volume)
+ return
+ picked_color = pick(random_color_list)
+ affected_mob.fat_hide(affected_mob.fatness_real + ((3 * (volume * volume))/50), src)
+ else
+ L.reagents.remove_reagent(/datum/reagent/berry_juice_infection, volume)
+ ..()
+
+/datum/reagent/berry_juice_infection/on_mob_life(mob/living/carbon/M)
+ if(!(M?.client?.prefs?.blueberry_inflation))
+ M.reagents.remove_reagent(/datum/reagent/berry_juice_infection, volume)
+ return
+ if(!no_mob_color)
+ M.add_atom_colour(picked_color, WASHABLE_COLOUR_PRIORITY)
+ M.fat_hide(M.fatness_real + ((3 * (volume * volume))/50), src)
+ M.adjust_fatness(1, FATTENING_TYPE_CHEM)
+ ..()
+
+/datum/reagent/berry_juice_infection/on_mob_delete(mob/living/L)
+ if(!iscarbon(L))
+ return
+ var/mob/living/carbon/C = L
+ C.fat_show()
+
+/obj/item/reagent_containers/glass/attack(mob/M, mob/user, obj/target)
+ if(M.reagents.get_reagent_amount(/datum/reagent/berry_juice_infection) > 0 && (reagents.total_volume + min(amount_per_transfer_from_this, 10)) <= volume)
+ reagents.add_reagent(/datum/reagent/berry_juice_infection, min(10, amount_per_transfer_from_this))
+ M.reagents.remove_reagent(/datum/reagent/berry_juice_infection, min(10, amount_per_transfer_from_this))
+ if(M != user)
+ to_chat(user, "You juice [M.name]...")
+ to_chat(M, "[user.name] juices you...")
+ else
+ to_chat(user, "You get some juice out of you...")
+ return
+ ..()
diff --git a/GainStation13/code/modules/client/preferences/preferences.dm b/GainStation13/code/modules/client/preferences/preferences.dm
index c104c18a..3a3e920c 100644
--- a/GainStation13/code/modules/client/preferences/preferences.dm
+++ b/GainStation13/code/modules/client/preferences/preferences.dm
@@ -13,6 +13,8 @@
var/weight_gain_magic = FALSE
///Weight gain from viruses
var/weight_gain_viruses = FALSE
+ ///Blueberry Inflation
+ var/blueberry_inflation = FALSE
///Extreme weight gain
var/weight_gain_extreme = FALSE
///stuckage
diff --git a/code/__HELPERS/global_lists.dm b/code/__HELPERS/global_lists.dm
index c94989ca..96e2798b 100644
--- a/code/__HELPERS/global_lists.dm
+++ b/code/__HELPERS/global_lists.dm
@@ -55,7 +55,7 @@
init_sprite_accessory_subtypes(/datum/sprite_accessory/vagina, GLOB.vagina_shapes_list)
init_sprite_accessory_subtypes(/datum/sprite_accessory/breasts, GLOB.breasts_shapes_list)
GLOB.breasts_size_list = list ("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o") //We need the list to choose from initialized, but it's no longer a sprite_accessory thing.
- GLOB.genital_fluids_list = list ("Milk", "Water", "Semen", "Femcum", "Honey", "Strawberry Milk", "Nutriment")
+ GLOB.genital_fluids_list = list ("Milk", "Water", "Semen", "Femcum", "Honey", "Strawberry Milk", "Nutriment", "Berry Juice")
GLOB.gentlemans_organ_names = list("phallus", "willy", "dick", "prick", "member", "tool", "gentleman's organ", "cock", "wang", "knob", "dong", "joystick", "pecker", "johnson", "weenie", "tadger", "schlong", "thirsty ferret", "baloney pony", "schlanger")
for(var/K in GLOB.breasts_shapes_list)
var/datum/sprite_accessory/breasts/value = GLOB.breasts_shapes_list[K]
diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index a04265a6..a33d2a3c 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -895,6 +895,8 @@ GLOBAL_LIST_EMPTY(preferences_datums)
dat += "Honey"
if(/datum/reagent/consumable/nutriment)
dat += "Nutriment"
+ if(/datum/reagent/berry_juice_infection)
+ dat += "Berry Juice"
else
dat += "Nothing?"
//This else is a safeguard for errors, and if it happened, they wouldn't be able to change this pref,
@@ -944,6 +946,8 @@ GLOBAL_LIST_EMPTY(preferences_datums)
dat += "Strawberry Milk"
if(/datum/reagent/consumable/nutriment)
dat += "Nutriment"
+ if(/datum/reagent/berry_juice_infection)
+ dat += "Berry Juice"
else
dat += "Nothing?"
//This else is a safeguard for errors, and if it happened, they wouldn't be able to change this pref,
@@ -1059,6 +1063,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
dat += "Weight Gain - Weapons:[weight_gain_weapons == TRUE ? "Enabled" : "Disabled"]
"
dat += "Weight Gain - Magic:[weight_gain_magic == TRUE ? "Enabled" : "Disabled"]
"
dat += "Weight Gain - Viruses:[weight_gain_viruses == TRUE ? "Enabled" : "Disabled"]
"
+ dat += "Blueberry Inflation:[blueberry_inflation == TRUE ? "Enabled" : "Disabled"]
"
dat += "