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)
This commit is contained in:
Alphas00
2024-06-03 15:00:25 +02:00
parent 73965145bc
commit 90a95ff2e7
6 changed files with 108 additions and 2 deletions
@@ -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, "<span class='warning'>[pick("You feel oddly full...", "Your stomach churns...", "You hear a gurgle...", "You taste berries...")]</span>")
else
to_chat(M, "<span class='warning'><i>[pick("A deep slosh comes from inside you...", "Your mind feels so light...", "You think blue really suits you...", "Your skin feels so tight...")]</i></span>")
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, "<span class='warning'>You juice [M.name]...</span>")
to_chat(M, "<span class='warning'>[user.name] juices you...</span>")
else
to_chat(user, "<span class='warning'>You get some juice out of you...</span>")
return
..()
@@ -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
+1 -1
View File
@@ -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]
+11
View File
@@ -895,6 +895,8 @@ GLOBAL_LIST_EMPTY(preferences_datums)
dat += "<a style='display:block;width:50px' href='?_src_=prefs;preference=balls_fluid;task=input'>Honey</a>"
if(/datum/reagent/consumable/nutriment)
dat += "<a style='display:block;width:50px' href='?_src_=prefs;preference=balls_fluid;task=input'>Nutriment</a>"
if(/datum/reagent/berry_juice_infection)
dat += "<a style='display:block;width:50px' href='?_src_=prefs;preference=balls_fluid;task=input'>Berry Juice</a>"
else
dat += "<a style='display:block;width:50px' href='?_src_=prefs;preference=balls_fluid;task=input'>Nothing?</a>"
//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 += "<a style='display:block;width:50px' href='?_src_=prefs;preference=breasts_fluid;task=input'>Strawberry Milk</a>"
if(/datum/reagent/consumable/nutriment)
dat += "<a style='display:block;width:50px' href='?_src_=prefs;preference=breasts_fluid;task=input'>Nutriment</a>"
if(/datum/reagent/berry_juice_infection)
dat += "<a style='display:block;width:50px' href='?_src_=prefs;preference=balls_fluid;task=input'>Berry Juice</a>"
else
dat += "<a style='display:block;width:50px' href='?_src_=prefs;preference=breasts_fluid;task=input'>Nothing?</a>"
//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 += "<b>Weight Gain - Weapons:</b><a href='?_src_=prefs;preference=weight_gain_weapons'>[weight_gain_weapons == TRUE ? "Enabled" : "Disabled"]</a><BR>"
dat += "<b>Weight Gain - Magic:</b><a href='?_src_=prefs;preference=weight_gain_magic'>[weight_gain_magic == TRUE ? "Enabled" : "Disabled"]</a><BR>"
dat += "<b>Weight Gain - Viruses:</b><a href='?_src_=prefs;preference=weight_gain_viruses'>[weight_gain_viruses == TRUE ? "Enabled" : "Disabled"]</a><BR>"
dat += "<b>Blueberry Inflation:</b><a href='?_src_=prefs;preference=blueberry_inflation'>[blueberry_inflation == TRUE ? "Enabled" : "Disabled"]</a><BR>"
dat += "<h2>GS13 Gameplay Preferences</h2>"
dat += "<b>Stuckage (weight results in getting stuck in doors):</b><a href='?_src_=prefs;preference=stuckage'>[stuckage == TRUE ? "Enabled" : "Disabled"]</a><BR>"
@@ -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",
+2 -1
View File
@@ -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
+1
View File
@@ -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"