diff --git a/code/game/objects/items/stacks/cash.dm b/code/game/objects/items/stacks/cash.dm
index 94f6fca2..a10c28de 100644
--- a/code/game/objects/items/stacks/cash.dm
+++ b/code/game/objects/items/stacks/cash.dm
@@ -11,6 +11,7 @@
w_class = WEIGHT_CLASS_TINY
full_w_class = WEIGHT_CLASS_TINY
resistance_flags = FLAMMABLE
+ grind_results = list(/datum/reagent/cellulose = 10)
var/value = 0
/obj/item/stack/spacecash/Initialize()
diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm
index 4ba3f287..987f8580 100644
--- a/code/game/objects/items/stacks/medical.dm
+++ b/code/game/objects/items/stacks/medical.dm
@@ -142,6 +142,7 @@
stop_bleeding = 1800
self_delay = 20
max_amount = 12
+ grind_results = list(/datum/reagent/cellulose = 3)
/obj/item/stack/medical/gauze/attackby(obj/item/I, mob/user, params)
@@ -196,10 +197,10 @@
desc = "A healing paste you can apply on wounds."
icon_state = "aloe_paste"
- self_delay = 20
+ self_delay = 25
novariants = TRUE
amount = 20
max_amount = 20
- heal_brute = 3
- heal_burn = 3
- grind_results = list(/datum/reagent/consumable/aloejuice = 1)
\ No newline at end of file
+ heal_brute = 25
+ heal_burn = 30
+ grind_results = list(/datum/reagent/consumable/aloejuice = 1)
diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm
index 9763eeda..07e84449 100644
--- a/code/game/objects/items/stacks/sheets/sheet_types.dm
+++ b/code/game/objects/items/stacks/sheets/sheet_types.dm
@@ -247,7 +247,7 @@ GLOBAL_LIST_INIT(wood_recipes, list ( \
resistance_flags = FLAMMABLE
merge_type = /obj/item/stack/sheet/mineral/wood
novariants = TRUE
- grind_results = list(/datum/reagent/carbon = 20)
+ grind_results = list(/datum/reagent/cellulose = 10)
/obj/item/stack/sheet/mineral/wood/Initialize(mapload, new_amount, merge = TRUE)
recipes = GLOB.wood_recipes
@@ -277,7 +277,7 @@ GLOBAL_LIST_INIT(bamboo_recipes, list ( \
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 0)
resistance_flags = FLAMMABLE
merge_type = /obj/item/stack/sheet/mineral/bamboo
- grind_results = list(/datum/reagent/carbon = 5)
+ grind_results = list(/datum/reagent/cellulose = 10)
/obj/item/stack/sheet/mineral/wood/attackby(obj/item/W, mob/user, params) // NOTE: sheet_types.dm is where the WOOD stack lives. Maybe move this over there.
// Taken from /obj/item/stack/rods/attackby in [rods.dm]
@@ -355,6 +355,7 @@ GLOBAL_LIST_INIT(cloth_recipes, list ( \
is_fabric = TRUE
loom_result = /obj/item/stack/sheet/silk
merge_type = /obj/item/stack/sheet/cloth
+ grind_results = list(/datum/reagent/cellulose = 4)
/obj/item/stack/sheet/cloth/Initialize(mapload, new_amount, merge = TRUE)
recipes = GLOB.cloth_recipes
@@ -374,6 +375,7 @@ GLOBAL_LIST_INIT(cloth_recipes, list ( \
item_state = "sheet-cloth"
novariants = TRUE
merge_type = /obj/item/stack/sheet/silk
+ grind_results = list(/datum/reagent/cellulose = 2)
//obj/item/stack/sheet/silk/Initialize(mapload, new_amount, merge = TRUE)
// recipes = GLOB.silk_recipes
@@ -398,6 +400,7 @@ GLOBAL_LIST_INIT(durathread_recipes, list ( \
force = 0
throwforce = 0
merge_type = /obj/item/stack/sheet/durathread
+ grind_results = list(/datum/reagent/cellulose = 10)
/obj/item/stack/sheet/durathread/Initialize(mapload, new_amount, merge = TRUE)
recipes = GLOB.durathread_recipes
diff --git a/code/game/objects/items/stacks/wrap.dm b/code/game/objects/items/stacks/wrap.dm
index 10240e90..9ad60df4 100644
--- a/code/game/objects/items/stacks/wrap.dm
+++ b/code/game/objects/items/stacks/wrap.dm
@@ -13,6 +13,7 @@
amount = 25
max_amount = 25
resistance_flags = FLAMMABLE
+ grind_results = list(/datum/reagent/cellulose = 3)
/obj/item/stack/wrapping_paper/use(used, transfer)
var/turf/T = get_turf(src)
diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm
index e38a7a6e..d4e337d2 100644
--- a/code/game/objects/items/storage/belt.dm
+++ b/code/game/objects/items/storage/belt.dm
@@ -889,10 +889,10 @@ obj/item/storage/belt/slut/ComponentInitialize()
content_overlays = TRUE
/obj/item/storage/belt/botany/New()
- . = ..()
if(prob(1))
new/obj/item/storage/belt/botany/fancy(loc)
qdel(src)
+ . = ..()
/obj/item/storage/belt/botany/ComponentInitialize()
. = ..()
@@ -915,4 +915,4 @@ obj/item/storage/belt/slut/ComponentInitialize()
/obj/item/storage/belt/botany/fancy //I like citadel's botany belt but I also wanna keep the default
desc = "A belt made for holding hydroponics supplies. Oddly enough, it's not green."
icon_state = "botanybelt_extra"
- item_state = "botanybelt_extra"
\ No newline at end of file
+ item_state = "botanybelt_extra"
diff --git a/code/modules/cargo/packs.dm b/code/modules/cargo/packs.dm
index 4c9ddfe3..b5e73c7f 100644
--- a/code/modules/cargo/packs.dm
+++ b/code/modules/cargo/packs.dm
@@ -8,6 +8,7 @@
var/access_any = FALSE //Do we care about access?
var/list/contains = null //What items are in the crate
var/crate_name = "crate" //The crate that comes with each order
+ var/crate_desc = "" //Crate's description
var/desc = ""//no desc by default
var/crate_type = /obj/structure/closet/crate //what kind of crate - Locked crates needed for access locked crates
var/dangerous = FALSE // Should we message admins?
@@ -19,6 +20,8 @@
/datum/supply_pack/proc/generate(atom/A)
var/obj/structure/closet/crate/C = new crate_type(A)
C.name = crate_name
+ if(crate_desc)
+ C.desc = crate_desc
if(access)
C.req_access = list(access)
if(access_any)
diff --git a/code/modules/cargo/packs/misc.dm b/code/modules/cargo/packs/misc.dm
index 42d70fa3..af4a633f 100644
--- a/code/modules/cargo/packs/misc.dm
+++ b/code/modules/cargo/packs/misc.dm
@@ -267,7 +267,7 @@
/datum/supply_pack/misc/lewd
name = "Lewd Crate" // OwO
- desc = "Psss want to have a good time with your sluts? Well I got what you want! Maid clothing, dildos, collars and more!"
+ desc = "Psst, want to have a good time with your sluts? Well I got what you want! Maid clothing, dildos, collars and more!"
cost = 5000
contraband = TRUE
contains = list(/obj/item/dildo/custom,
diff --git a/code/modules/cargo/packs/organic.dm b/code/modules/cargo/packs/organic.dm
index 0aee666e..05a91ab7 100644
--- a/code/modules/cargo/packs/organic.dm
+++ b/code/modules/cargo/packs/organic.dm
@@ -196,6 +196,188 @@
/obj/item/reagent_containers/food/snacks/grown/strawberry)
crate_name = "fruit crate"
+
+//ALIEN-ESQUE SEEDS CRATE
+/datum/supply_pack/organic/rareseeds
+ name = "Galactic Seeds Crate"
+ desc = "Feel the need to explore the vastness of space, condensed into a single crate! Contains at least 4 seeds from random regions of space."
+ cost = 9500 //See fill proc. I know this costs a lot
+ contains = list()
+ crate_name = "galactic seeds crate"
+ crate_desc = "A rectangular steel crate."
+ crate_type = /obj/structure/closet/crate/hydroponics
+
+/datum/supply_pack/organic/rareseeds/fill(obj/structure/closet/crate/C)
+ . = ..()
+ var/iteration = 0
+ var/common_seeds = list(
+ /obj/item/seeds/wheat,
+ /obj/item/seeds/wheat/oat,
+ /obj/item/seeds/peas,
+ /obj/item/seeds/tea,
+ /obj/item/seeds/coffee,
+ /obj/item/seeds/poppy,
+ /obj/item/seeds/sunflower,
+ /obj/item/seeds/grass,
+ /obj/item/seeds/glowshroom,
+ /obj/item/seeds/cotton,
+ /obj/item/seeds/reishi,
+ /obj/item/seeds/kudzu, //For some sort of realism that kudzu generally grows everywhere, have it a common seed
+ /obj/item/seeds/starthistle)
+ var/uncommon_seeds = list(
+ /obj/item/seeds/chanterelle/jupitercup,
+ /obj/item/seeds/sunflower/moonflower,
+ /obj/item/seeds/bee_balm,
+ /obj/item/seeds/random,
+ /obj/item/seeds/tea/astra,
+ /obj/item/seeds/peas/laugh,
+ /obj/item/seeds/galaxythistle,
+ /obj/item/seeds/coconut,
+ /obj/item/seeds/ambrosia/deus,
+ /obj/item/seeds/aloe,
+ /obj/item/seeds/cannabis/rainbow,
+ /obj/item/seeds/cannabis/ultimate,
+ /obj/item/seeds/angel,
+ /obj/item/seeds/liberty,
+ /obj/item/seeds/plump/walkingmushroom,
+ /obj/item/seeds/chanterelle,
+ /obj/item/seeds/glowshroom/shadowshroom)
+ var/xenoarch_seeds = list(
+ /obj/item/seeds/amauri,
+ /obj/item/seeds/gelthi,
+ /obj/item/seeds/jurlmah,
+ /obj/item/seeds/nofruit,
+ /obj/item/seeds/shand,
+ /obj/item/seeds/surik,
+ /obj/item/seeds/telriis,
+ /obj/item/seeds/thaadra,
+ /obj/item/seeds/vale,
+ /obj/item/seeds/vaporsac)
+ var/lavaland_seeds = list(
+ /obj/item/seeds/lavaland/polypore,
+ /obj/item/seeds/lavaland/porcini,
+ /obj/item/seeds/lavaland/inocybe,
+ /obj/item/seeds/lavaland/ember,
+ /obj/item/seeds/lavaland/cactus)
+ while((prob(68) || iteration <= 4) && iteration <= 15)
+ iteration++
+ var/obj/item/seeds/chosen_seed = null
+ var/obj/item/seeds/cache = null
+ switch(iteration)
+ if(1 to 3)
+ chosen_seed = pick(common_seeds)
+ if(4)
+ if(prob(25))
+ chosen_seed = pick(lavaland_seeds)
+ else
+ chosen_seed = pick(common_seeds)
+ if(5)
+ if(prob(40))
+ chosen_seed = pick(lavaland_seeds)
+ else
+ chosen_seed = pick(common_seeds)
+ if(6)
+ if(prob(70))
+ chosen_seed = pick(common_seeds)
+ else
+ chosen_seed = pick(uncommon_seeds)
+ if(7)
+ if(prob(3))
+ chosen_seed = pick(xenoarch_seeds)
+ else if(prob(40))
+ chosen_seed = pick(common_seeds)
+ else
+ chosen_seed = pick(uncommon_seeds)
+ if(8 to 10)
+ if(prob(8))
+ chosen_seed = pick(xenoarch_seeds)
+ else
+ chosen_seed = pick(uncommon_seeds)
+ if(11 to INFINITY)
+ if(prob(15))
+ chosen_seed = pick(xenoarch_seeds)
+ else if (prob(50))
+ chosen_seed = pick(uncommon_seeds)
+ else
+ chosen_seed = pick(lavaland_seeds)
+
+
+ cache = chosen_seed
+
+ if(istype(chosen_seed,/obj/item/seeds/starthistle)
+ new chosen_seed(C)
+ continue
+ //Make it actually seem like it's from another galaxy with all this stuff
+ if(prob(15) && !istype(chosen_seed, /obj/item/seeds/starthistle)
+ chosen_seed.rarity += 1
+
+ var/mutated = FALSE
+ for(var/datum/plant_gene/G in cache.genes)
+ if(locate(G) in chosen_seed.genes && prob(60))
+ if(prob(50))
+ chosen_seed.unset_mutability(G, PLANT_GENE_EXTRACTABLE)
+ chosen_seed.rarity += 5
+ else if(prob(70))
+ chosen_seed.unset_mutability(G, PLANT_GENE_REMOVABLE)
+ chosen_seed.rarity += 5
+ else if(!istype(G, /datum/plant_gene/core))
+ chosen_seed.forbiddengenes += G.type //Has the slim chance to make this plant unable to produce anything it started out with
+ chosen_seed.genes -= locate(G) in chosen_seed.genes //Sanity check
+ chosen_seed.rarity += 10
+
+ if(prob(65)) //To make this seem even more otherworldly
+ //Our own version of add_random_reagents
+ var/random_amount = round(rand(0, 25), 5) * 0.01
+ if(random_amount <= 0) random_amount = 0.02
+ var/datum/plant_gene/reagent/R = new(get_random_reagent_id(), random_amount)
+
+ if(R.can_add(chosen_seed))
+ chosen_seed.genes += R
+ chosen_seed.rarity += 5
+ else
+ qdel(R)
+ chosen_seed.reagents_from_genes()
+
+ if(prob(3)) //This is insanely rare, but we will use different grow sprites. Probably will fuck something up
+ var/obj/item/seeds/S = pick(subtypesof(/obj/item/seeds))
+ if(prob(85))
+ chosen_seed.plantname = "[pick("Alien", "Supernatural", "Artificial", "Modified")] [S.plantname]"
+ chosen_seed.rarity += 20*(!mutated)
+ else
+ chosen_seed.plantname = S.plantname
+ chosen_seed.growing_icon = S.growing_icon
+ chosen_seed.species = S.species
+ chosen_seed.icon_grow = S.icon_grow
+ chosen_seed.icon_harvest = S.icon_harvest
+ chosen_seed.icon_dead = S.icon_dead
+ chosen_seed.rarity += 35*(!mutated) //woah nelly
+ mutated = TRUE
+
+ else if(prob(70)) //Add basic reagents from grounded sheets, but only small amounts
+ var/A = rand(1, 5)
+ var/chosen_reagent
+ switch(A)
+ if(1)
+ chosen_reagent = /datum/reagent/toxin/plasma
+ if(2)
+ chosen_reagent = /datum/reagent/uranium
+ if(3)
+ chosen_reagent = /datum/reagent/iron
+ if(4)
+ chosen_reagent = /datum/reagent/gold
+ if(5)
+ chosen_reagent = /datum/reagent/cellulose
+ var/datum/plant_gene/reagent/R = new(chosen_reagent, A*0.02)
+ if(R.can_add(chosen_seed))
+ chosen_seed.genes += R
+ chosen_seed.rarity += 5
+ else
+ qdel(R)
+ chosen_seed.reagents_from_genes()
+
+ new chosen_seed(C)
+ //All in a while() loop! Very efficient I know
+
/datum/supply_pack/organic/grill
name = "Grilling Starter Kit"
desc = "Hey dad I'm Hungry. Hi Hungry I'm THE NEW GRILLING STARTER KIT ONLY 5000 BUX GET NOW! Contains a cooking grill and five fuel coal sheets."
@@ -277,11 +459,9 @@
/datum/supply_pack/organic/hydroponics
name = "Hydroponics Crate"
- desc = "Supplies for growing a great garden! Contains two bottles of ammonia, two Plant-B-Gone spray bottles, a hatchet, cultivator, plant analyzer, as well as a pair of leather gloves and a botanist's apron."
+ desc = "Supplies for growing a great garden! Contains two bottles of ammonia, a hatchet, cultivator, plant analyzer, as well as a pair of leather gloves and a botanist's apron."
cost = 1750
- contains = list(/obj/item/reagent_containers/spray/plantbgone,
- /obj/item/reagent_containers/spray/plantbgone,
- /obj/item/reagent_containers/glass/bottle/ammonia,
+ contains = list(/obj/item/reagent_containers/glass/bottle/ammonia,
/obj/item/reagent_containers/glass/bottle/ammonia,
/obj/item/hatchet,
/obj/item/cultivator,
@@ -326,6 +506,33 @@
/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass)
crate_name = "kitchen cutlery deluxe set"
+/datum/supply_pack/organic/hydroponics/maintgarden
+ name = "Maintenance Garden Crate"
+ desc = "Set up your own tiny paradise with do-it-yourself botany kit. Contains sandstone for dirt plots, pest spray, ammonia, a portable seed generator, basic botanical tools, and some seeds to start off with."
+ cost = 2700
+ contains = list(/obj/item/storage/bag/plants/portaseeder,
+ /obj/item/reagent_containers/spray/pestspray,
+ /obj/item/stack/sheet/mineral/sandstone/twelve,
+ /obj/item/reagent_containers/glass/bucket,
+ /obj/item/reagent_containers/glass/bottle/ammonia,
+ /obj/item/reagent_containers/glass/bottle/ammonia,
+ /obj/item/hatchet,
+ /obj/item/cultivator,
+ /obj/item/plant_analyzer,
+ /obj/item/clothing/gloves/botanic_leather,
+ /obj/item/clothing/suit/apron,
+ /obj/item/flashlight,
+ /obj/item/seeds/carrot,
+ /obj/item/seeds/carrot,
+ /obj/item/seeds/tower,
+ /obj/item/seeds/tower,
+ /obj/item/seeds/watermelon,
+ /obj/item/seeds/watermelon,
+ /obj/item/seeds/grass,
+ /obj/item/seeds/grass)
+ crate_name = "maint garden crate"
+ crate_type = /obj/structure/closet/crate/hydroponics
+
/datum/supply_pack/organic/mre
name = "MRE supply kit (emergency rations)"
desc = "The lights are out. Oxygen's running low. You've run out of food except space weevils. Don't let this be you! Order our NT branded MRE kits today! This pack contains 5 MRE packs with a randomized menu and an oxygen tank."
@@ -398,7 +605,7 @@
/obj/item/seeds/wheat/rice,
/obj/item/seeds/carrot,
/obj/item/seeds/sunflower,
- /obj/item/seeds/chanter,
+ /obj/item/seeds/chanterelle,
/obj/item/seeds/potato,
/obj/item/seeds/sugarcane)
crate_name = "seeds crate"
diff --git a/code/modules/cargo/packs/service.dm b/code/modules/cargo/packs/service.dm
index 249d1aa8..d2656e29 100644
--- a/code/modules/cargo/packs/service.dm
+++ b/code/modules/cargo/packs/service.dm
@@ -314,6 +314,14 @@
crate_name = "games supply crate"
crate_type = /obj/structure/closet/crate
+/datum/supply_pack/vending/hydro
+ name = "Hydroponics Supply Crate"
+ desc = "Arnt you glad you dont have to do it the natural way? Contains a megaseed and nutrimax vending machine refill."
+ cost = 5000
+ contains = list(/obj/item/vending_refill/hydroseeds,
+ /obj/item/vending_refill/hydronutrients)
+ crate_name = "hydroponics supply crate"
+
/datum/supply_pack/service/vending/snack
name = "Snack Supply Crate"
desc = "One vending machine refill of cavity-bringin' goodness! The number one dentist recommended order!"
diff --git a/code/modules/crafting/craft.dm b/code/modules/crafting/craft.dm
index 1f4bf900..52843dcf 100644
--- a/code/modules/crafting/craft.dm
+++ b/code/modules/crafting/craft.dm
@@ -111,6 +111,10 @@
for(var/datum/reagent/A in RC.reagents.reagent_list)
.["other"][A.type] += A.volume
.["other"][I.type] += 1
+ if(istype(I, /obj/item/reagent_containers/food/snacks/grown) && !.["color"]) //First we find has priority
+ var/obj/item/reagent_containers/food/snacks/grown/G = I
+ if(G.modified_colors)
+ .["color"] = G.color
/datum/personal_crafting/proc/check_tools(mob/user, datum/crafting_recipe/R, list/contents)
if(!R.tools.len)
@@ -146,6 +150,9 @@
/datum/personal_crafting/proc/construct_item(mob/user, datum/crafting_recipe/R)
var/list/contents = get_surroundings(user)
var/send_feedback = 1
+ var/cached_color = null
+ if(contents["color"]) //From plants
+ cached_color = contents["color"]
if(check_contents(R, contents))
if(check_tools(user, R, contents))
if(do_after(user, R.time, target = user))
@@ -157,6 +164,7 @@
var/list/parts = del_reqs(R, user)
var/atom/movable/I = new R.result (get_turf(user.loc))
I.CheckParts(parts, R)
+ I.color = cached_color
if(send_feedback)
SSblackbox.record_feedback("tally", "object_crafted", 1, I.type)
return 0
diff --git a/code/modules/hydroponics/gene_modder.dm b/code/modules/hydroponics/gene_modder.dm
index 1d34d15c..950277ce 100644
--- a/code/modules/hydroponics/gene_modder.dm
+++ b/code/modules/hydroponics/gene_modder.dm
@@ -307,6 +307,17 @@
seed.genes -= G
if(istype(G, /datum/plant_gene/reagent))
seed.reagents_from_genes()
+ if(istype(G, /datum/plant_gene/trait/modified_color))
+ var/datum/plant_gene/trait/modified_color/found
+ for(var/datum/plant_gene/trait/modified_color/T in seed.genes)
+ if(istype(T, /datum/plant_gene/trait/modified_color) && T.type != G.type)
+ found = T
+ break
+ if(found)
+ seed.color = found.color
+ else
+ seed.color = null
+ seed.modified_colors = FALSE
repaint_seed()
if("extract")
if(disk && !disk.read_only)
@@ -343,6 +354,10 @@
seed.genes += disk.gene.Copy()
if(istype(disk.gene, /datum/plant_gene/reagent))
seed.reagents_from_genes()
+ if(istype(disk.gene, /datum/plant_gene/trait/modified_color) && !seed.modified_colors)
+ var/datum/plant_gene/trait/modified_color/M = disk.gene
+ seed.color = M.color
+ seed.modified_colors = TRUE
disk.gene.apply_vars(seed)
repaint_seed()
diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm
index 9dddb622..5895c6de 100644
--- a/code/modules/hydroponics/grown.dm
+++ b/code/modules/hydroponics/grown.dm
@@ -20,6 +20,7 @@
var/distill_reagent //If NULL and this object can be distilled, it uses a generic fruit_wine reagent and adjusts its variables.
var/wine_flavor //If NULL, this is automatically set to the fruit's flavor. Determines the flavor of the wine if distill_reagent is NULL.
var/wine_power = 10 //Determines the boozepwr of the wine if distill_reagent is NULL.
+ var/modified_colors = FALSE
/obj/item/reagent_containers/food/snacks/grown/Initialize(mapload, obj/item/seeds/new_seed)
. = ..()
diff --git a/code/modules/hydroponics/grown/banana.dm b/code/modules/hydroponics/grown/banana.dm
index 162bbbc5..ae76f581 100644
--- a/code/modules/hydroponics/grown/banana.dm
+++ b/code/modules/hydroponics/grown/banana.dm
@@ -30,8 +30,7 @@
/obj/item/reagent_containers/food/snacks/grown/banana/generate_trash(atom/location)
. = ..()
var/obj/item/grown/bananapeel/peel = .
- if(istype(peel))
- peel.grind_results = list(/datum/reagent/consumable/banana_peel = seed.potency * 0.2)
+ peel.grind_results = list(/datum/reagent/consumable/banana_peel = seed.potency * 0.2)
/obj/item/reagent_containers/food/snacks/grown/banana/suicide_act(mob/user)
user.visible_message("[user] is aiming [src] at [user.p_them()]self! It looks like [user.p_theyre()] trying to commit suicide!")
diff --git a/code/modules/hydroponics/grown/cereals.dm b/code/modules/hydroponics/grown/cereals.dm
index 1d1309ac..946831c1 100644
--- a/code/modules/hydroponics/grown/cereals.dm
+++ b/code/modules/hydroponics/grown/cereals.dm
@@ -29,7 +29,7 @@
// Oat
/obj/item/seeds/wheat/oat
name = "pack of oat seeds"
- desc = "These may, or may not, grow into oat."
+ desc = "Oat's just a matter of time..."
icon_state = "seed-oat"
species = "oat"
plantname = "Oat Stalks"
@@ -53,7 +53,7 @@
// Rice
/obj/item/seeds/wheat/rice
name = "pack of rice seeds"
- desc = "These may, or may not, grow into rice."
+ desc = "Rice, rice, baby!"
icon_state = "seed-rice"
species = "rice"
plantname = "Rice Stalks"
diff --git a/code/modules/hydroponics/grown/citrus.dm b/code/modules/hydroponics/grown/citrus.dm
index b220956a..18bde6e4 100644
--- a/code/modules/hydroponics/grown/citrus.dm
+++ b/code/modules/hydroponics/grown/citrus.dm
@@ -114,7 +114,6 @@
icon_grow = "lime-grow"
icon_dead = "lime-dead"
genes = list(/datum/plant_gene/trait/repeated_harvest)
- mutatelist = list(/obj/item/seeds/firelemon)
reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.05)
/obj/item/reagent_containers/food/snacks/grown/citrus/lemon
diff --git a/code/modules/hydroponics/grown/mushrooms.dm b/code/modules/hydroponics/grown/mushrooms.dm
index 3f61dcdf..1098ad5d 100644
--- a/code/modules/hydroponics/grown/mushrooms.dm
+++ b/code/modules/hydroponics/grown/mushrooms.dm
@@ -22,6 +22,37 @@
genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism)
growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi'
reagents_add = list(/datum/reagent/medicine/morphine = 0.35, /datum/reagent/medicine/charcoal = 0.35, /datum/reagent/consumable/nutriment = 0)
+ mutatelist = list(/obj/item/seeds/reishi/negative)
+
+/*
+/obj/item/seeds/reishi/dark
+ name = "pack of dark reishi mycelium"
+ desc = "This mycelium grows into something that'll put you into a trance."
+ plantname = "Dark Reishi"
+ lifespan = 2
+ endurance = 8
+ maturation = 6
+ production = 1
+ yield = 0
+ potency = 0
+ genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism, /datum/plant_gene/trait/modified_color/bw)
+ reagents_add = list(/datum/reagent/medicine/morphine = 0.2, /datum/reagent/consumable/nutriment = 0.1, /datum/reagent/consumable/nutriment/vitamin = 0.02)
+ mutatelist = list(/obj/item/seeds/reishi/negative)
+*/
+
+/obj/item/seeds/reishi/negative
+ name = "pack of light-abosrbing reishi mycelium"
+ desc = "This mycelium grows into something so tranquil, you'll never want to wake up from its trance."
+ plantname = "Light-Absorbing Reishi"
+ lifespan = 1
+ endurance = 2 //Better use that enduro grow
+ maturation = 10
+ production = 6
+ yield = 0
+ potency = 0
+ genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism, /datum/plant_gene/trait/modified_color)
+ reagents_add = list(/datum/reagent/medicine/morphine = 0.2, /datum/reagent/toxin/amanitin = 0.05, /datum/reagent/consumable/nutriment = 0.04, /datum/reagent/consumable/nutriment/vitamin = 0.02)
+ mutatelist = list(/obj/item/seeds/reishi)
/obj/item/reagent_containers/food/snacks/grown/mushroom/reishi
seed = /obj/item/seeds/reishi
@@ -173,7 +204,7 @@
to_chat(user, "You plant the walking mushroom.")
// Chanterelle
-/obj/item/seeds/chanter
+/obj/item/seeds/chanterelle
name = "pack of chanterelle mycelium"
desc = "This mycelium grows into chanterelle mushrooms."
icon_state = "mycelium-chanter"
@@ -190,10 +221,10 @@
genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism)
growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi'
reagents_add = list(/datum/reagent/consumable/nutriment = 0.1)
- mutatelist = list(/obj/item/seeds/chanterelle/jupitercup)
+ mutatelist = list(/obj/item/seeds/chanterelle/jupitercup, /obj/item/seeds/chanterelle/jupitercup/hollow, /obj/item/seeds/chanterelle/jupitercup/monochrome)
/obj/item/reagent_containers/food/snacks/grown/mushroom/chanterelle
- seed = /obj/item/seeds/chanter
+ seed = /obj/item/seeds/chanterelle
name = "chanterelle cluster"
desc = "Cantharellus Cibarius: These jolly yellow little shrooms sure look tasty!"
icon_state = "chanterelle"
@@ -215,6 +246,7 @@
genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism, /datum/plant_gene/reagent/teslium, /datum/plant_gene/trait/plant_type/carnivory)
growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi'
reagents_add = list(/datum/reagent/consumable/nutriment = 0.1)
+ mutatelist = list()
/obj/item/seeds/chanterelle/jupitercup/Initialize(mapload, nogenes = FALSE)
. = ..()
@@ -222,6 +254,36 @@
unset_mutability(/datum/plant_gene/reagent/teslium, PLANT_GENE_EXTRACTABLE)
unset_mutability(/datum/plant_gene/trait/plant_type/carnivory, PLANT_GENE_REMOVABLE)
+/obj/item/seeds/chanterelle/jupitercup/hollow
+ name = "pack of hollow-cup mycelium"
+ desc = "This mycelium grows into hollow-cup mushrooms. These mushrooms require only the upmost attention."
+ plantname = "Hollow-cup Mushrooms"
+ lifespan = 1 //starts decaying before it can even be harvested once
+ production = 4
+ endurance = 5
+ yield = 0
+ genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism, /datum/plant_gene/trait/plant_type/carnivory, /datum/plant_gene/trait/modified_color/opaque)
+ growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi'
+ reagents_add = list(/datum/reagent/consumable/nutriment = 0.1)
+ mutatelist = list(/obj/item/seeds/chanterelle/jupitercup)
+ color = list(1,0,0,0, 0,1,0,0, 0,0,1,0, 0.66,0.66,0.66,0.66, 0,0,0,0)
+ modified_colors = TRUE
+
+/obj/item/seeds/chanterelle/jupitercup/monochrome
+ name = "pack of silver-cup mycelium"
+ desc = "This mycelium grows into silver-cup mushrooms. These mushrooms require only the upmost attention."
+ plantname = "Silver-cup Mushrooms"
+ lifespan = 1
+ production = 5
+ endurance = 7
+ yield = 0
+ genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism, /datum/plant_gene/trait/plant_type/carnivory, /datum/plant_gene/trait/modified_color/monochrome)
+ growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi'
+ reagents_add = list(/datum/reagent/consumable/nutriment = 0.1, /datum/reagent/consumable/nothing = 0.02)
+ mutatelist = list(/obj/item/seeds/chanterelle/jupitercup)
+ color = list(0.5,0.5,0.5,0, 0.5,0.5,0.5,0, 0.5,0.5,0.5,0, 0,0,0,1, 0,0,0,0)
+ modified_colors = TRUE
+
/obj/item/reagent_containers/food/snacks/grown/mushroom/jupitercup
seed = /obj/item/seeds/chanterelle/jupitercup
name = "jupiter cup"
@@ -386,6 +448,24 @@
product = /obj/item/reagent_containers/food/snacks/grown/ash_flora/mushroom_cap
genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism)
growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi'
+ mutatelist = list(/obj/item/seeds/lavaland/inocybe/magenta)
+
+/obj/item/seeds/lavaland/inocybe/magenta
+ name = "pack of dilated inocybe mycelium"
+ desc = "This mycelium grows into a specially-colored inocybe mushroom, their shifted cells make them appear red."
+ plantname = "Magenta Inocybe Mushrooms"
+ lifespan = 4
+ endurance = 5
+ maturation = 3
+ genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism, /datum/plant_gene/trait/modified_color/magenta)
+ mutatelist = list()
+ color = list(
+ 0.25, 0.5, 1, 0,
+ 1, 0.25, 0.5, 0,
+ 0.5, 1, 0.25, 0,
+ 0,0,0,1,
+ 0,0,0,0)
+ modified_colors = TRUE
// Embershroom (Mushroom stem)
@@ -398,3 +478,23 @@
product = /obj/item/reagent_containers/food/snacks/grown/ash_flora/mushroom_stem
genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism, /datum/plant_gene/trait/glow)
growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi'
+ mutatelist = list(/obj/item/seeds/lavaland/ember/cyan)
+
+/obj/item/seeds/lavaland/ember/cyan
+ name = "pack of dilated embershroom mycelium"
+ desc = "This mycelium grows into a specially-colored embershroom mushroom, their shifted cells make them appear blue."
+ plantname = "Magenta Embershroom Mushrooms"
+ lifespan = 6
+ endurance = 10
+ maturation = 4
+ yield = 2
+ potency = 25
+ genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism, /datum/plant_gene/trait/glow/blue, /datum/plant_gene/trait/modified_color/cyan)
+ mutatelist = list()
+ color = list(
+ 0.25, 1, 0.5, 0,
+ 0.5, 0.25, 1, 0,
+ 1, 0.5, 0.25, 0,
+ 0,0,0,1,
+ 0,0,0,0)
+ modified_colors = TRUE
diff --git a/code/modules/hydroponics/hydroitemdefines.dm b/code/modules/hydroponics/hydroitemdefines.dm
index 4537d91b..ad5d2d76 100644
--- a/code/modules/hydroponics/hydroitemdefines.dm
+++ b/code/modules/hydroponics/hydroitemdefines.dm
@@ -198,4 +198,56 @@
/obj/item/reagent_containers/glass/bottle/killer/pestkiller
name = "bottle of pest spray"
desc = "Contains a pesticide."
- list_reagents = list(/datum/reagent/toxin/pestkiller = 50)
\ No newline at end of file
+ list_reagents = list(/datum/reagent/toxin/pestkiller = 50)
+
+/*
+/obj/item/plant_debugger
+ name = "plant debugger"
+ desc = "You should never be able to see this."
+ icon = 'icons/obj/device.dmi'
+ icon_state = "hydro"
+ flags_1 = ABSTRACT
+ var/mode = 0
+ var/list/traits_list = list(
+ /datum/plant_gene/trait/modified_color/monochrome/yellow,
+ /datum/plant_gene/trait/modified_color/monochrome/green,
+ /datum/plant_gene/trait/modified_color/vibrant,
+ /datum/plant_gene/trait/modified_color/random,
+ /datum/plant_gene/trait/modified_color/monochrome/dark/,
+ /datum/plant_gene/trait/modified_color/monochrome/dark/red,
+ /datum/plant_gene/trait/modified_color/monochrome/dark/green,
+ /datum/plant_gene/trait/modified_color/monochrome/dark/blue)
+ var/trait_to_add = null
+
+/obj/item/plant_debugger/attack_self(mob/user)
+ . = ..()
+ mode++
+ if(mode > traits_list.len)
+ mode = 1
+ trait_to_add = traits_list[mode]
+ to_chat(user, "Now injecting: [trait_to_add]")
+
+/obj/item/plant_debugger/pre_attack(atom/A, mob/living/user, params)
+ if(!istype(A, /obj/machinery/hydroponics))
+ return
+ var/obj/machinery/hydroponics/H = A
+ if(!H.myseed)
+ to_chat(user, "This tray does not have a seed in it!")
+ return
+ for(var/G in H.myseed.genes)
+ if(istype(G, /datum/plant_gene/trait/modified_color))
+ var/datum/plant_gene/trait/T = new trait_to_add
+ G = T
+ T.apply_vars(H.myseed)
+ H.update_icon()
+ to_chat(user, "Converted old modified_color to [trait_to_add]")
+ return
+ var/datum/plant_gene/trait/T = new trait_to_add
+ H.myseed.genes += T
+ T.apply_vars(H.myseed)
+ H.update_icon()
+ to_chat(user, "Added [trait_to_add]")
+
+/obj/item/plant_debugger/attack()
+ return
+*/
diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm
index fcfcf0f9..70e1280e 100644
--- a/code/modules/hydroponics/hydroponics.dm
+++ b/code/modules/hydroponics/hydroponics.dm
@@ -310,6 +310,8 @@
else
var/t_growthstate = clamp(round((age / myseed.maturation) * myseed.growthstages), 1, myseed.growthstages)
plant_overlay.icon_state = "[myseed.icon_grow][t_growthstate]"
+ if(myseed.modified_colors) //In case we get a different color from other things
+ plant_overlay.color = myseed.color
add_overlay(plant_overlay)
/obj/machinery/hydroponics/proc/update_icon_lights()
@@ -374,7 +376,7 @@
if(10 to 11)
myseed = new /obj/item/seeds/amanita(src)
if(8 to 9)
- myseed = new /obj/item/seeds/chanter(src)
+ myseed = new /obj/item/seeds/chanterelle(src)
if(6 to 7)
myseed = new /obj/item/seeds/tower(src)
if(4 to 5)
@@ -554,6 +556,8 @@
age = 1
plant_health = myseed.endurance
lastcycle = world.time
+ for(var/datum/plant_gene/trait/G in myseed.genes)
+ G.apply_vars(myseed)
update_icon()
return
else
diff --git a/code/modules/hydroponics/plant_genes.dm b/code/modules/hydroponics/plant_genes.dm
index 604fa3e4..6d7263fc 100644
--- a/code/modules/hydroponics/plant_genes.dm
+++ b/code/modules/hydroponics/plant_genes.dm
@@ -337,6 +337,164 @@ datum/plant_gene/trait/glow/white
name = "Pink Bioluminescence"
glow_color = "#FFB3DA"
+//Change grow, harvest, and crafted food's color
+//Made for mostly being fancy with stuff. Should be rare or hard to obtain, with the exception of strange seeds
+/datum/plant_gene/trait/modified_color
+ name = "Dilated Light (Negative)"
+ var/color = list(-1,0,0,0, 0,-1,0,0, 0,0,-1,0, 0,0,0,1, 1,1,1,0) //Negative Colors
+ var/long_calculation = FALSE //For advanced color matrices
+
+/datum/plant_gene/trait/modified_color/on_new(obj/item/reagent_containers/food/snacks/grown/G, newloc)
+ if(G.modified_colors)
+ return
+ for(var/datum/plant_gene/trait/I in G.seed.genes) //Have ones first added give priority
+ if(istype(I, /datum/plant_gene/trait/modified_color) && I.type != type)
+ return
+ if(long_calculation)
+ calculate()
+ G.color = color
+ G.modified_colors = TRUE
+
+//same as above but for the gene modder
+/datum/plant_gene/trait/modified_color/apply_vars(obj/item/seeds/S)
+ S.color = color
+ S.modified_colors = TRUE
+
+/datum/plant_gene/trait/modified_color/proc/calculate()
+ return
+
+/datum/plant_gene/trait/modified_color/opaque
+ name = "Dilated Light (Flimsy)"
+ color = list(1,0,0,0, 0,1,0,0, 0,0,1,0, -0.3,-0.3,-0.3,0.7, 0,0,0,0)
+
+/datum/plant_gene/trait/modified_color/monochrome
+ name = "Dilated Light (Monochrome)"
+ color = list(0.5,0.5,0.5,0, 0.5,0.5,0.5,0, 0.5,0.5,0.5,0, 0,0,0,1, 0,0,0,0)
+
+/datum/plant_gene/trait/modified_color/monochrome/red
+ name = "Dilated Light (Red)"
+ color = list(0.8,0,0,0, 0.8,0.5,0.5,0, 0.8,0.5,0.5,0, 0,0,0,1, 0,0,0,0)
+
+/datum/plant_gene/trait/modified_color/monochrome/green
+ name = "Dilated Light (Green)"
+ color = list(0.5,0.8,0.5,0, 0,0.8,0,0, 0.5,0.8,0.5,0, 0,0,0,1, 0,0,0,0)
+
+/datum/plant_gene/trait/modified_color/monochrome/blue
+ name = "Dilated Light (Blue)"
+ color = list(0.5,0.5,0.8,0, 0.5,0.5,0.8,0, 0,0,0.8,0, 0,0,0,1, 0,0,0,0)
+
+/*
+/datum/plant_gene/trait/modified_color/monochrome/yellow
+ name = "Dilated Light (Yellow)"
+ color = list(0.8,0,0,0, 0,0.4,0,0, 0.8,0.4,0.5,0, 0,0,0,1, 0,0,0,0)
+
+/datum/plant_gene/trait/modified_color/monochrome/green
+ name = "Dilated Light (Green)"
+ color = list(0.5,0.8,0.4,0, 0,0.8,0,0, 0,0,0.4,0, 0,0,0,1, 0,0,0,0)
+*/
+
+/datum/plant_gene/trait/modified_color/monochrome/dark/
+ name = "Dilated Light (Dark)"
+ color = list(1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1, -0.3, -0.3, -0.3, 0)
+
+/*
+/datum/plant_gene/trait/modified_color/monochrome/dark/red //for vyx
+ name = "Dilated Light (Dark Red)"
+ color = list(1,0,0,0, 0.5,0.5,0.5,0, 0.5,0.5,0.5,0, 0,0,0,1, 0,0,0,0)
+
+/datum/plant_gene/trait/modified_color/monochrome/dark/green
+ name = "Dilated Light (Dark Green)"
+ color = list(0.5,0.5,0.5,0, 0,1,0,0, 0.5,0.5,0.5,0, 0,0,0,1, 0,0,0,0)
+
+/datum/plant_gene/trait/modified_color/monochrome/dark/blue
+ name = "Dilated Light (Dark Blue)"
+ color = list(0.5,0.5,0.,0, 0.5,0.5,0.5,0, 0,0,1,0, 0,0,0,1, 0,0,0,0)
+*/
+
+/datum/plant_gene/trait/modified_color/vibrant
+ name = "Dilated Light (Strong)"
+ color = list(2,-1,-1,0, -1,2,-1,0, -1,-1,2,0, 0,0,0,1, 0,0,0,0) //Any higher starts to look like clown vomit
+
+/datum/plant_gene/trait/modified_color/cyan
+ name = "Dilated Light (Shift R)"
+ color = list(
+ 0.25, 1, 0.5, 0,
+ 0.5, 0.25, 1, 0,
+ 1, 0.5, 0.25, 0,
+ 0,0,0,1,
+ 0,0,0,0)
+
+/datum/plant_gene/trait/modified_color/magenta
+ name = "Dilated Light (Shift L)"
+ color = list(
+ 0.25, 0.5, 1, 0,
+ 1, 0.25, 0.5, 0,
+ 0.5, 1, 0.25, 0,
+ 0,0,0,1,
+ 0,0,0,0)
+
+/datum/plant_gene/trait/modified_color/sunset
+ name = "Dilated Light (Shift S)"
+ color = list(
+ 1, 0.25, 0, 0,
+ 0.25, 1, 0, 0,
+ 0.25, 0.125, 0.35,0,
+ 0,0,0,1,
+ 0,0,0,0)
+
+/datum/plant_gene/trait/modified_color/random
+ name = "Dilated Light (Shift C)"
+ color = list()
+ long_calculation = TRUE
+
+
+//Calculations
+/*
+/datum/plant_gene/trait/modified_color/shift_red/calculate()
+ var/list/M = color
+ M[5] += 0.5 * M[1]
+ M[6] += 0.5 * M[2]
+ M[7] += 0.5 * M[3]
+ color = M
+
+/datum/plant_gene/trait/modified_color/shift_green/calculate()
+ var/list/M = color
+ M[9] += 0.5 * M[5]
+ M[10] += 0.5 * M[6]
+ M[11] += 0.5 * M[7]
+ color = M
+
+/datum/plant_gene/trait/modified_color/shift_blue/calculate()
+ var/list/M = color
+ M[13] += 0.5 * M[9]
+ M[14] += 0.5 * M[10]
+ M[15] += 0.5 * M[11]
+ color = M
+*/
+
+/datum/plant_gene/trait/modified_color/random/calculate()
+ var/R = rand(0,255) / 255
+ var/G = rand(0,255) / 255
+ var/B = rand(0,255) / 255
+ var/A = rand(200,255)/ 255
+
+ if(prob(50))
+ color = list(R,0,0,0,
+ 0,G,0,0,
+ 0,0,B,0,
+ 0,0,0,1,
+ 0,0,0,0)
+ else
+ color = list(R,0,0,0,
+ 0,G,0,0,
+ 0,0,B,0,
+ 0,0,0,A,
+ 0,0,0,0)
+ var/D = rand(1,20)
+ if(color[D] != 0)
+ color[D] *= 1.5
+ else
+ color[D] = rand(-100, 100) * 0.01
/datum/plant_gene/trait/teleport
// Makes plant teleport people when squashed or slipped on.
diff --git a/code/modules/hydroponics/sample.dm b/code/modules/hydroponics/sample.dm
index fff4c646..7fb92e8f 100644
--- a/code/modules/hydroponics/sample.dm
+++ b/code/modules/hydroponics/sample.dm
@@ -18,4 +18,4 @@
/obj/item/seeds/sample/alienweed
name = "alien weed sample"
icon_state = "alienweed"
- sample_color = null
\ No newline at end of file
+ sample_color = null
diff --git a/code/modules/hydroponics/seeds.dm b/code/modules/hydroponics/seeds.dm
index d0bec3ec..b7a188aa 100644
--- a/code/modules/hydroponics/seeds.dm
+++ b/code/modules/hydroponics/seeds.dm
@@ -36,6 +36,7 @@
var/weed_rate = 1 //If the chance below passes, then this many weeds sprout during growth
var/weed_chance = 5 //Percentage chance per tray update to grow weeds
+ var/modified_colors = FALSE
/obj/item/seeds/Initialize(mapload, nogenes = 0)
. = ..()
@@ -73,6 +74,8 @@
/obj/item/seeds/examine(mob/user)
. = ..()
+ if(modified_colors)
+ . += "It looks a bit funky..."
. += "Use a pen on it to rename it or change its description."
if(reagents_add && user.can_see_reagents())
. += "- Plant Reagents -"
@@ -99,6 +102,9 @@
var/datum/plant_gene/G = g
S.genes += G.Copy()
S.reagents_add = reagents_add.Copy() // Faster than grabbing the list from genes.
+ if(modified_colors)
+ S.modified_colors = TRUE
+ S.color = color
return S
/obj/item/seeds/proc/get_gene(typepath)
@@ -191,6 +197,10 @@
result.Add(t_prod) // User gets a consumable
if(!t_prod)
return
+
+ if(modified_colors)
+ t_prod.color = color
+ t_prod.modified_colors = TRUE
t_amount++
product_name = parent.myseed.plantname
if(getYield() >= 1)
@@ -470,10 +480,16 @@
/obj/item/seeds/proc/add_random_traits(lower = 0, upper = 2)
var/amount_random_traits = rand(lower, upper)
for(var/i in 1 to amount_random_traits)
- var/random_trait = pick((subtypesof(/datum/plant_gene/trait)-typesof(/datum/plant_gene/trait/plant_type)))
+ var/random_trait
+ if(!istype(src, /obj/item/seeds/random) || prob(30)) //70% chance to not get modified_color when rolling traits as strange seeds
+ random_trait = pick((subtypesof(/datum/plant_gene/trait)-typesof(/datum/plant_gene/trait/plant_type)))
+ else
+ random_trait = pick((subtypesof(/datum/plant_gene/trait)-typesof(/datum/plant_gene/trait/plant_type)-typesof(/datum/plant_gene/trait/modified_color)))
+
var/datum/plant_gene/trait/T = new random_trait
if(T.can_add(src) && !is_gene_forbidden(random_trait))
genes += T
+ T.apply_vars(src)
else
qdel(T)
diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm
index 3ecbac0d..a9ffe70c 100644
--- a/code/modules/paperwork/paper.dm
+++ b/code/modules/paperwork/paper.dm
@@ -21,6 +21,7 @@
resistance_flags = FLAMMABLE
max_integrity = 50
dog_fashion = /datum/dog_fashion/head
+ grind_results = list(/datum/reagent/cellulose = 2)
var/info //What's actually written on the paper.
var/info_links //A different version of the paper which includes html links at fields and EOF
diff --git a/code/modules/reagents/chemistry/reagents/food_reagents.dm b/code/modules/reagents/chemistry/reagents/food_reagents.dm
index d565c7fe..bb200cdc 100644
--- a/code/modules/reagents/chemistry/reagents/food_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/food_reagents.dm
@@ -788,7 +788,7 @@
/datum/reagent/consumable/secretsauce
name = "secret sauce"
- description = "What could it be."
+ description = "What could it be?"
nutriment_factor = 2 * REAGENTS_METABOLISM
color = "#792300"
taste_description = "indescribable"
diff --git a/code/modules/reagents/chemistry/recipes/others.dm b/code/modules/reagents/chemistry/recipes/others.dm
index b06eff62..9c67fc5e 100644
--- a/code/modules/reagents/chemistry/recipes/others.dm
+++ b/code/modules/reagents/chemistry/recipes/others.dm
@@ -69,6 +69,11 @@
for(var/i = 1, i <= created_volume, i++)
new /obj/item/stack/sheet/mineral/gold(location)
+/datum/chemical_reaction/cellulose_carbonization
+ results = list(/datum/reagent/carbon = 1)
+ required_reagents = list(/datum/reagent/cellulose = 1)
+ required_temp = 512
+
/datum/chemical_reaction/capsaicincondensation
name = "Capsaicincondensation"
id = /datum/reagent/consumable/condensedcapsaicin
@@ -235,7 +240,7 @@
var/datum/disease/advance/D = locate(/datum/disease/advance) in B.data["viruses"]
if(D)
D.Evolve(level_min, level_max)
-
+
/datum/chemical_reaction/mix_virus/mix_virus_2
name = "Mix Virus 2"
diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm
index a0070273..e4269405 100644
--- a/code/modules/reagents/reagent_containers/spray.dm
+++ b/code/modules/reagents/reagent_containers/spray.dm
@@ -310,5 +310,5 @@
item_state = "plantbgone"
lefthand_file = 'icons/mob/inhands/equipment/hydroponics_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/hydroponics_righthand.dmi'
- volume = 100
- list_reagents = list(/datum/reagent/toxin/plantbgone = 100)
+ volume = 50
+ list_reagents = list(/datum/reagent/toxin/plantbgone = 50)
diff --git a/code/modules/vending/megaseed.dm b/code/modules/vending/megaseed.dm
index d48da5b1..3bcff190 100644
--- a/code/modules/vending/megaseed.dm
+++ b/code/modules/vending/megaseed.dm
@@ -4,14 +4,15 @@
product_slogans = "THIS'S WHERE TH' SEEDS LIVE! GIT YOU SOME!;Hands down the best seed selection on the station!;Also certain mushroom varieties available, more for experts! Get certified today!"
product_ads = "We like plants!;Grow some crops!;Grow, baby, growww!;Aw h'yeah son!"
icon_state = "seeds"
- products = list(/obj/item/seeds/ambrosia = 3,
- /obj/item/seeds/apple = 3,
- /obj/item/seeds/banana = 3,
- /obj/item/seeds/berry = 3,
+ products = list(/obj/item/seeds/aloe = 3,
+ /obj/item/seeds/ambrosia = 3,
+ /obj/item/seeds/apple = 3,
+ /obj/item/seeds/banana = 3,
+ /obj/item/seeds/berry = 3,
/obj/item/seeds/cabbage = 3,
/obj/item/seeds/carrot = 3,
/obj/item/seeds/cherry = 3,
- /obj/item/seeds/chanter = 3,
+ /obj/item/seeds/chanterelle = 3,
/obj/item/seeds/chili = 3,
/obj/item/seeds/cocoapod = 3,
/obj/item/seeds/coconut = 3,
@@ -19,7 +20,6 @@
/obj/item/seeds/cotton = 3,
/obj/item/seeds/corn = 3,
/obj/item/seeds/eggplant = 3,
- /obj/item/seeds/garlic = 3,
/obj/item/seeds/grape = 3,
/obj/item/seeds/grass = 3,
/obj/item/seeds/lemon = 3,
@@ -28,6 +28,7 @@
/obj/item/seeds/orange = 3,
/obj/item/seeds/peach = 3,
/obj/item/seeds/peanutseed = 3,
+ /obj/item/seeds/peas = 3,
/obj/item/seeds/pineapple = 3,
/obj/item/seeds/potato = 3,
/obj/item/seeds/poppy = 3,
@@ -45,15 +46,20 @@
/obj/item/seeds/watermelon = 3,
/obj/item/seeds/wheat = 3,
/obj/item/seeds/whitebeet = 3)
- contraband = list(/obj/item/seeds/amanita = 2,
- /obj/item/seeds/glowshroom = 2,
- /obj/item/seeds/liberty = 2,
- /obj/item/seeds/nettle = 2,
- /obj/item/seeds/plump = 2,
- /obj/item/seeds/reishi = 2,
- /obj/item/seeds/cannabis = 3,
- /obj/item/seeds/starthistle = 2,
- /obj/item/seeds/random = 2)
+
+ contraband=list(/obj/item/seeds/amanita = 2,
+ /obj/item/seeds/glowshroom = 2,
+ /obj/item/seeds/liberty = 2,
+ /obj/item/seeds/nettle = 2,
+ /obj/item/seeds/plump = 2,
+ /obj/item/seeds/reishi = 2,
+ /obj/item/seeds/cannabis = 3,
+ /obj/item/seeds/starthistle = 2,
+ /obj/item/seeds/random = 2)
premium = list(/obj/item/reagent_containers/spray/waterflower = 1)
armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
resistance_flags = FIRE_PROOF
+ refill_canister = /obj/item/vending_refill/hydroseeds
+
+/obj/item/vending_refill/hydroseeds
+ icon_state = "refill_hydro"
diff --git a/code/modules/vending/nutrimax.dm b/code/modules/vending/nutrimax.dm
index b82c95b8..74edeadd 100644
--- a/code/modules/vending/nutrimax.dm
+++ b/code/modules/vending/nutrimax.dm
@@ -18,3 +18,7 @@
/obj/item/reagent_containers/glass/bottle/diethylamine = 5)
armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
resistance_flags = FIRE_PROOF
+ refill_canister = /obj/item/vending_refill/hydronutrients
+
+/obj/item/vending_refill/hydronutrients
+ icon_state = "refill_hydro"
diff --git a/icons/obj/hydroponics/growing_vegetables.dmi b/icons/obj/hydroponics/growing_vegetables.dmi
index 01ffbb06..ed5e186f 100644
Binary files a/icons/obj/hydroponics/growing_vegetables.dmi and b/icons/obj/hydroponics/growing_vegetables.dmi differ
diff --git a/icons/obj/hydroponics/harvest.dmi b/icons/obj/hydroponics/harvest.dmi
index cf335c23..2e3094f9 100644
Binary files a/icons/obj/hydroponics/harvest.dmi and b/icons/obj/hydroponics/harvest.dmi differ
diff --git a/icons/obj/hydroponics/seeds.dmi b/icons/obj/hydroponics/seeds.dmi
index 0ab6ac84..9758af30 100644
Binary files a/icons/obj/hydroponics/seeds.dmi and b/icons/obj/hydroponics/seeds.dmi differ