Merge pull request #201 from Alphas00/master

XWG Cap, Water Sponge pool, Blueberry plant, Blueberry Juices merge, Dumbbell and Treadmill, Blueberry decal
This commit is contained in:
evilew
2024-06-11 23:37:21 +02:00
committed by GitHub
18 changed files with 231 additions and 71 deletions
@@ -13,7 +13,7 @@
threshold_desc = list(
"Stage Speed" = "Increases the rate of liquid production.",
)
var/datum/reagent/infection_reagent = /datum/reagent/berry_juice_infection
var/datum/reagent/infection_reagent = /datum/reagent/blueberry_juice
/datum/symptom/berry/Start(datum/disease/advance/A)
if(!..())
@@ -35,52 +35,13 @@
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>")
to_chat(M, "<span class='warning'><i>[pick("A deep slosh comes from inside you...", "Your mind feels light...", "You think blue really suits you...", "Your skin feels so tight...")]</i></span>")
M.reagents.add_reagent(infection_reagent, max(A.totalStageSpeed(), 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 && !(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.hider_add(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 && !(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.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.hider_remove(src)
/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.reagents.get_reagent_amount(/datum/reagent/blueberry_juice) > 0 && (reagents.total_volume + min(amount_per_transfer_from_this, 10)) <= volume)
reagents.add_reagent(/datum/reagent/blueberry_juice, min(10, amount_per_transfer_from_this))
M.reagents.remove_reagent(/datum/reagent/blueberry_juice, 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>")
@@ -88,10 +49,22 @@
to_chat(user, "<span class='warning'>You get some juice out of you...</span>")
return
..()
/obj/effect/decal/cleanable/juice
name = "berry juice"
desc = "It's blue and smells enticingly sweet."
icon = 'GainStation13/icons/turf/berry_decal.dmi'
icon_state = "floor1"
random_icon_states = list("floor1", "floor2", "floor3", "floor4", "floor5", "floor6", "floor7")
blood_state = BLOOD_STATE_JUICE
bloodiness = BLOOD_AMOUNT_PER_DECAL
/datum/reagent/berry_juice_infection/proc/fat_hide()
return (3 * (volume * volume))/50
/obj/effect/decal/cleanable/juice/Initialize()
. = ..()
reagents.add_reagent(/datum/reagent/blueberry_juice = 5)
/obj/effect/decal/cleanable/juice/streak
random_icon_states = list("streak1", "streak2", "streak3", "streak4", "streak5")
//extreme variant, for admin or item purposes
/datum/symptom/berry/extreme
+13 -11
View File
@@ -1,3 +1,5 @@
GLOBAL_LIST_INIT(uncapped_resize_areas, list(/area/bridge, /area/crew_quarters))
/mob/living/carbon
//Due to the changes needed to create the system to hide fatness, here's some notes:
// -If you are making a mob simply gain or lose weight, use adjust_fatness. Try to not touch the variables directly unless you know 'em well
@@ -44,10 +46,7 @@
fatness = fatness_real //Make their current fatness their real fatness
hiders_apply() //Check and apply hiders
if(client?.prefs?.weight_gain_extreme)
xwg_resize()
hiders_apply() //Check and apply hiders, XWG is there too
return TRUE
@@ -136,13 +135,20 @@
if(client?.prefs?.max_weight) //Check their prefs
fatness_over = min(fatness_over, (client?.prefs?.max_weight - 1)) //And make sure it's not above their preferred max
fatness = fatness_real + fatness_over //Then, make their current fatness the sum of their real plus/minus the calculated amount
if(client?.prefs?.weight_gain_extreme)
xwg_resize()
if(client?.prefs?.weight_gain_extreme)
xwg_resize()
/mob/living/carbon/human/handle_breathing(times_fired)
. = ..()
hiders_apply()
/mob/living/carbon/proc/xwg_resize()
var/xwg_size = sqrt(fatness/FATNESS_LEVEL_BLOB)
xwg_size = min(xwg_size, RESIZE_HUGE)
xwg_size = min(xwg_size, RESIZE_MACRO)
xwg_size = max(xwg_size, custom_body_size*0.01)
if(xwg_size > RESIZE_BIG) //check if the size needs capping otherwise don't bother searching the list
if(!is_type_in_list(get_area(src), GLOB.uncapped_resize_areas)) //if the area is not int the uncapped whitelist and new size is over the cap
xwg_size = RESIZE_BIG
resize(xwg_size)
/proc/get_fatness_level_name(fatness_amount)
@@ -166,7 +172,3 @@
return "Immobile"
return "Blob"
/mob/living/carbon/human/handle_breathing(times_fired)
. = ..()
hiders_apply()
+14 -6
View File
@@ -42,12 +42,13 @@
L.reagents.add_reagent(/datum/reagent/water, 3)
/mob/living/carbon/proc/water_check(datum/gas_mixture/breath)
var/breath_gases = breath.gases
if(breath_gases[/datum/gas/water_vapor])
if(HAS_TRAIT(src, TRAIT_WATER_SPONGE))
var/H2O_pp = breath.get_breath_partial_pressure(breath_gases[/datum/gas/water_vapor])
reagents.add_reagent(/datum/reagent/water, H2O_pp/10)
breath_gases[/datum/gas/water_vapor] -= H2O_pp
if(HAS_TRAIT(src, TRAIT_WATER_SPONGE))
if(breath.gases)
var/breath_gases = breath.gases
if(breath_gases[/datum/gas/water_vapor])
var/H2O_pp = breath.get_breath_partial_pressure(breath_gases[/datum/gas/water_vapor])
reagents.add_reagent(/datum/reagent/water, H2O_pp/10)
breath_gases[/datum/gas/water_vapor] -= H2O_pp
/obj/structure/sink
var/mob/living/attached
@@ -82,3 +83,10 @@
visible_message("[attached] is detached from [src]")
attached = null
return
/obj/machinery/pool/controller/process_reagents()
for(var/turf/open/pool/W in linked_turfs)
for(var/mob/living/carbon/human/swimee in W)
if(HAS_TRAIT(swimee, TRAIT_WATER_SPONGE))
swimee.reagents.add_reagent(/datum/reagent/water, 5)
..()
+115
View File
@@ -0,0 +1,115 @@
/obj/item/dumbbell
desc = "A weighty dumbbell, perfect for arm exercise!"
name = "dumbbell"
icon = 'GainStation13/icons/obj/dumbbell.dmi'
icon_state = "pen"
item_state = "pen"
throwforce = 20
w_class = WEIGHT_CLASS_BULKY
throw_speed = 2
throw_range = 3
materials = list(MAT_METAL=10)
pressure_resistance = 2
var/reps = 0
var/using = FALSE
/obj/item/dumbbell/dropped(mob/user, silent)
reps = 0
. = ..()
/obj/item/dumbbell/attack_self(mob/user)
. = ..()
if(!using)
using = TRUE
visible_message("<span>[user] does a rep with the [src]. YEEEEEAH!!!</span>")
if(do_after(usr, CLICK_CD_RESIST-reps, 0, usr, 1))
if(iscarbon(user))
var/mob/living/carbon/U = user
U.adjust_fatness(-10, FATTENING_TYPE_WEIGHT_LOSS)
if(reps < 16)
reps += 0.4
else
visible_message("<span>[user] couldn't complete the rep. YOU'LL GET IT NEXT TIME CHAMP!!!</span>")
using = FALSE
/obj/machinery/conveyor/treadmill
name = "treadmill"
desc = "A treadmil, for losing weight!"
/obj/machinery/conveyor/treadmill/convey(list/affecting)
var/turf/T = get_step(src, movedir)
if(length(T.contents) > 150)
return
for(var/atom/movable/A in affecting)
if((A.loc == loc) && A.has_gravity())
A.ConveyorMove(movedir)
if(iscarbon(A))
var/mob/living/carbon/C = A
C.adjust_fatness(-10, FATTENING_TYPE_WEIGHT_LOSS)
/obj/machinery/conveyor/treadmill/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/crowbar))
user.visible_message("<span class='notice'>[user] struggles to pry up \the [src] with \the [I].</span>", \
"<span class='notice'>You struggle to pry up \the [src] with \the [I].</span>")
if(I.use_tool(src, user, 40, volume=40))
if(!(stat & BROKEN))
var/obj/item/conveyor_construct/treadmill/C = new/obj/item/conveyor_construct/treadmill(src.loc)
C.id = id
transfer_fingerprints_to(C)
to_chat(user, "<span class='notice'>You remove the conveyor belt.</span>")
qdel(src)
else if(istype(I, /obj/item/wrench))
if(!(stat & BROKEN))
I.play_tool_sound(src)
setDir(turn(dir,-45))
update_move_direction()
to_chat(user, "<span class='notice'>You rotate [src].</span>")
else if(istype(I, /obj/item/screwdriver))
if(!(stat & BROKEN))
verted = verted * -1
update_move_direction()
to_chat(user, "<span class='notice'>You reverse [src]'s direction.</span>")
else if(user.a_intent != INTENT_HARM)
user.transferItemToLoc(I, drop_location())
else
return ..()
/obj/item/conveyor_construct/treadmill
icon = 'icons/obj/recycling.dmi'
icon_state = "conveyor_construct"
name = "treadmill assembly"
desc = "A treadmill assembly."
w_class = WEIGHT_CLASS_BULKY
id = "" //inherited by the belt
/obj/item/conveyor_construct/afterattack(atom/A, mob/user, proximity, click_parameters)
SEND_SIGNAL(src, COMSIG_ITEM_AFTERATTACK, A, user, proximity, click_parameters)
SEND_SIGNAL(user, COMSIG_MOB_ITEM_AFTERATTACK, A, user, proximity, click_parameters)
if(!proximity || user.stat || !isfloorturf(A) || istype(A, /area/shuttle))
return
var/cdir = get_dir(A, user)
if(A == user.loc)
to_chat(user, "<span class='notice'>You cannot place a conveyor belt under yourself.</span>")
return
var/obj/machinery/conveyor/treadmill/C = new/obj/machinery/conveyor/treadmill(A, cdir, id)
transfer_fingerprints_to(C)
qdel(src)
/datum/design/dumbbell
name = "Dumbbell"
id = "dumbbell"
build_type = AUTOLATHE
materials = list(MAT_METAL = 2000)
build_path = /obj/item/dumbbell
category = list("initial", "Tools")
/datum/design/treadmill
name = "Treadmill"
id = "treadmill"
build_type = AUTOLATHE
materials = list(MAT_METAL = 5000)
build_path = /obj/item/conveyor_construct/treadmill
category = list("initial", "Construction")
@@ -0,0 +1,25 @@
/obj/item/seeds/berry/blueberry
name = "pack of blueberry seeds"
desc = "These seeds grow into blueberry bushes."
icon_state = "seed-blueberry"
species = "blueberry"
plantname = "Blueberry Bush"
product = /obj/item/reagent_containers/food/snacks/grown/berries/blueberry
mutatelist = list()
reagents_add = list(/datum/reagent/blueberry_juice = 0.1)
potency = 1
yield = 1
production = 10
rarity = 30
/obj/item/reagent_containers/food/snacks/grown/berries/blueberry
seed = /obj/item/seeds/berry/blueberry
name = "bunch of blueberries"
desc = "Taste so good, you might turn blue!"
icon_state = "blueberrypile"
filling_color = "#5d00c7"
foodtype = FRUIT
juice_results = list(/datum/reagent/blueberry_juice = 20)
tastes = list("blueberry" = 1)
distill_reagent = null
wine_power = 50
@@ -99,18 +99,48 @@
/datum/reagent/blueberry_juice
name = "Blueberry Juice"
description = "Non-infectious. Hopefully."
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/blueberry_juice/on_mob_life(mob/living/carbon/M)
if(M?.client && !(M?.client?.prefs?.blueberry_inflation))
M.reagents.remove_reagent(/datum/reagent/blueberry_juice, volume)
return
if(!no_mob_color)
M.add_atom_colour(pick(random_color_list), WASHABLE_COLOUR_PRIORITY)
M.add_atom_colour(picked_color, WASHABLE_COLOUR_PRIORITY)
M.adjust_fatness(1, FATTENING_TYPE_CHEM)
if(prob(2))
new /obj/effect/decal/cleanable/juice(M.loc)
playsound(M.loc, 'sound/effects/splat.ogg',rand(10,50), 1)
..()
/datum/reagent/blueberry_juice/on_mob_add(mob/living/L, amount)
if(iscarbon(L))
var/mob/living/carbon/affected_mob = L
if(affected_mob?.client && !(affected_mob?.client?.prefs?.blueberry_inflation))
affected_mob.reagents.remove_reagent(/datum/reagent/blueberry_juice, volume)
return
picked_color = pick(random_color_list)
affected_mob.hider_add(src)
else
L.reagents.remove_reagent(/datum/reagent/blueberry_juice, volume)
..()
/datum/reagent/blueberry_juice/on_mob_delete(mob/living/L)
if(!iscarbon(L))
return
var/mob/living/carbon/C = L
C.hider_remove(src)
/datum/reagent/blueberry_juice/proc/fat_hide()
return (124 * (volume * volume))/1000 //123'840 600% size, about 56'000 400% size, calc was: (3 * (volume * volume))/50
// /obj/item/reagent_containers/food/snacks/meat/steak/troll
// name = "Troll steak"
+2 -1
View File
@@ -46,7 +46,8 @@
icon_state = "gum_wrapped"
desc = "Doesn't cause anything more than some discoloration... probably."
trash = /obj/item/trash/blueberry_gum
list_reagents = list(/datum/reagent/blueberry_juice = 0.5)
list_reagents = list(/datum/reagent/blueberry_juice = 50)
bitesize = 5
filling_color = "#001aff"
tastes = list("blueberry gum" = 1)
foodtype = FRUIT
Binary file not shown.

After

Width:  |  Height:  |  Size: 292 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

+2
View File
@@ -161,6 +161,7 @@ GLOBAL_LIST_EMPTY(bloody_footprints_cache)
#define BLOOD_STATE_OIL "oil"
#define BLOOD_STATE_NOT_BLOODY "no blood whatsoever"
#define BLOOD_AMOUNT_PER_DECAL 20
#define BLOOD_STATE_JUICE "juice"
//Blood Decal Colors
#define BLOOD_COLOR_HUMAN "#dc0000"
@@ -171,6 +172,7 @@ GLOBAL_LIST_EMPTY(bloody_footprints_cache)
#define BLOOD_COLOR_LIZARD "#db004D"
#define BLOOD_COLOR_UNIVERSAL "#db3300"
#define BLOOD_COLOR_BUG "#a37c0f"
#define BLOOD_COLOR_JUICE "#0004ff"
//suit sensors: sensor_mode defines
@@ -24,6 +24,8 @@
/obj/effect/decal/cleanable/blood/update_icon()
color = blood_DNA_to_color()
if(blood_state == BLOOD_STATE_JUICE)
color = BLOOD_COLOR_JUICE
/obj/effect/decal/cleanable/blood/old
name = "dried blood"
+4 -4
View File
@@ -895,7 +895,7 @@ 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)
if(/datum/reagent/blueberry_juice)
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>"
@@ -946,7 +946,7 @@ 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)
if(/datum/reagent/blueberry_juice)
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>"
@@ -2398,7 +2398,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
if("Nutriment")
features["balls_fluid"] = /datum/reagent/consumable/nutriment
if("Berry Juice")
features["balls_fluid"] = /datum/reagent/berry_juice_infection
features["balls_fluid"] = /datum/reagent/blueberry_juice
if("egg_size")
var/new_size
@@ -2447,7 +2447,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
if("Nutriment")
features["breasts_fluid"] = /datum/reagent/consumable/nutriment
if("Berry Juice")
features["breasts_fluid"] = /datum/reagent/berry_juice_infection
features["breasts_fluid"] = /datum/reagent/blueberry_juice
if("breasts_color")
var/new_breasts_color = input(user, "Breast Color:", "Character Preference", "#"+features["breasts_color"]) as color|null
+1 -1
View File
@@ -14,7 +14,7 @@
icon_grow = "berry-grow" // Uses one growth icons set for all the subtypes
icon_dead = "berry-dead" // Same for the dead icon
genes = list(/datum/plant_gene/trait/repeated_harvest)
mutatelist = list(/obj/item/seeds/berry/glow, /obj/item/seeds/berry/poison)
mutatelist = list(/obj/item/seeds/berry/glow, /obj/item/seeds/berry/poison, /obj/item/seeds/berry/blueberry)
reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1)
/obj/item/reagent_containers/food/snacks/grown/berries
Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 93 KiB

After

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

+2
View File
@@ -3112,6 +3112,8 @@
#include "GainStation13\code\modules\food_and_drinks\recipes_bigpizza.dm"
#include "GainStation13\code\modules\food_and_drinks\objects\candy_flora.dm"
#include "GainStation13\code\modules\food_and_drinks\recipes\recipes_ported.dm"
#include "GainStation13\code\modules\gym\gym.dm"
#include "GainStation13\code\modules\hydroponics\grown\berries.dm"
#include "GainStation13\code\modules\mob\living\emote.dm"
#include "GainStation13\code\modules\mob\living\emote_modular.dm"
#include "GainStation13\code\modules\mob\living\emote_ported.dm"