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 += "

GS13 Gameplay Preferences

" dat += "Stuckage (weight results in getting stuck in doors):[stuckage == TRUE ? "Enabled" : "Disabled"]
" @@ -2391,6 +2396,8 @@ GLOBAL_LIST_EMPTY(preferences_datums) features["balls_fluid"] = /datum/reagent/consumable/pinkmilk if("Nutriment") features["balls_fluid"] = /datum/reagent/consumable/nutriment + if("Berry Juice") + features["balls_fluid"] = /datum/reagent/berry_juice_infection if("egg_size") var/new_size @@ -2438,6 +2445,8 @@ GLOBAL_LIST_EMPTY(preferences_datums) features["breasts_fluid"] = /datum/reagent/consumable/pinkmilk if("Nutriment") features["breasts_fluid"] = /datum/reagent/consumable/nutriment + if("Berry Juice") + features["breasts_fluid"] = /datum/reagent/berry_juice_infection if("breasts_color") var/new_breasts_color = input(user, "Breast Color:", "Character Preference", "#"+features["breasts_color"]) as color|null @@ -2633,6 +2642,8 @@ GLOBAL_LIST_EMPTY(preferences_datums) noncon_weight_gain = !noncon_weight_gain if("stuckage") stuckage = !stuckage + if("blueberry_inflation") + blueberry_inflation = !blueberry_inflation if("max_fatness") var/pickedweight = input(user, "Choose your max fatness level, your weight will not go beyond this. None will let you gain without a limit", diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index 22fea851..4e272785 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -159,6 +159,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car S["noncon_weight_gain"] >> noncon_weight_gain S["max_weight"] >> max_weight S["stuckage"] >> stuckage + S["blueberry_inflation"] >> blueberry_inflation //try to fix any outdated data if necessfary @@ -300,7 +301,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car WRITE_FILE(S["noncon_weight_gain"], noncon_weight_gain) WRITE_FILE(S["max_weight"], max_weight) WRITE_FILE(S["stuckage"], stuckage) - + WRITE_FILE(S["blueberry_inflation"], blueberry_inflation) return 1 diff --git a/tgstation.dme b/tgstation.dme index 2afaf1a7..750db68f 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -3077,6 +3077,7 @@ #include "GainStation13\code\clothing\head.dm" #include "GainStation13\code\clothing\suits.dm" #include "GainStation13\code\datums\components\fattening_door.dm" +#include "GainStation13\code\datums\diseases\advance\symptoms\berry.dm" #include "GainStation13\code\datums\mutations\fatfang.dm" #include "GainStation13\code\datums\status_effects\fatstun.dm" #include "GainStation13\code\game\lore_papers.dm"