"
+ dat += "Data Disk:
"
@@ -182,15 +182,15 @@
var/datum/plant_gene/G = a
dat += "
| [G.get_name()] | "
if(can_extract)
- dat += "Extract"
- dat += "Remove"
+ dat += "Extract"
+ dat += "Remove"
dat += " |
"
dat += ""
else
dat += "No content-related genes detected in sample.
"
dat += "
"
if(can_insert && istype(disk.gene, /datum/plant_gene/reagent))
- dat += "Insert: [disk.gene.get_name()]"
+ dat += "
Insert: [disk.gene.get_name()]"
dat += "
Trait Genes
"
else
dat += "
No sample found.
Please, insert a plant sample to use this device."
diff --git a/code/modules/hydroponics/grown/towercap.dm b/code/modules/hydroponics/grown/towercap.dm
index 0af7d6d0732..f5bb061daf1 100644
--- a/code/modules/hydroponics/grown/towercap.dm
+++ b/code/modules/hydroponics/grown/towercap.dm
@@ -135,7 +135,7 @@
/obj/structure/bonfire/proc/CheckOxygen()
var/datum/gas_mixture/G = loc.return_air() // Check if we're standing in an oxygenless environment
- if(G.oxygen < 16)
+ if(G.oxygen > 16)
return 1
return 0
@@ -185,6 +185,7 @@
if(..())
M.pixel_y += 13
-/obj/structure/bonfire/unbuckle_mob(mob/living/buckled_mob, force=0)
- if(..())
- buckled_mob.pixel_y -= 13
\ No newline at end of file
+/obj/structure/bonfire/unbuckle_mob(force=0)
+ if(buckled_mob)
+ buckled_mob.pixel_y -= 13
+ . = ..()
\ No newline at end of file
diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm
index b6716ce7ad3..81630ff4b24 100644
--- a/code/modules/hydroponics/hydroponics.dm
+++ b/code/modules/hydroponics/hydroponics.dm
@@ -27,7 +27,20 @@
var/recent_bee_visit = FALSE //Have we been visited by a bee recently, so bees dont overpollinate one plant
var/using_irrigation = FALSE //If the tray is connected to other trays via irrigation hoses
var/self_sustaining = FALSE //If the tray generates nutrients and water on its own
+ hud_possible = list (PLANT_NUTRIENT_HUD, PLANT_WATER_HUD, PLANT_STATUS_HUD, PLANT_HEALTH_HUD, PLANT_TOXIN_HUD, PLANT_PEST_HUD, PLANT_WEED_HUD)
+/obj/machinery/hydroponics/New()
+ ..()
+ var/datum/atom_hud/data/hydroponic/hydro_hud = huds[DATA_HUD_HYDROPONIC]
+ prepare_huds()
+ hydro_hud.add_to_hud(src)
+ plant_hud_set_nutrient()
+ plant_hud_set_water()
+ plant_hud_set_status()
+ plant_hud_set_health()
+ plant_hud_set_toxin()
+ plant_hud_set_pest()
+ plant_hud_set_weed()
/obj/machinery/hydroponics/constructable
name = "hydroponics tray"
@@ -54,6 +67,8 @@
maxnutri = tmp_capacity * 5 // Up to 30
waterlevel = maxwater
nutrilevel = 3
+ plant_hud_set_nutrient()
+ plant_hud_set_water()
/obj/machinery/hydroponics/Destroy()
if(myseed)
diff --git a/code/modules/hydroponics/seed_extractor.dm b/code/modules/hydroponics/seed_extractor.dm
index 21f10f63505..a29366a958b 100644
--- a/code/modules/hydroponics/seed_extractor.dm
+++ b/code/modules/hydroponics/seed_extractor.dm
@@ -114,14 +114,14 @@
var/amount = 0
/datum/seed_pile/New(var/name, var/life, var/endur, var/matur, var/prod, var/yie, var/poten, var/am = 1)
- name = name
- lifespan = life
- endurance = endur
- maturation = matur
- production = prod
- yield = yie
- potency = poten
- amount = am
+ src.name = name
+ src.lifespan = life
+ src.endurance = endur
+ src.maturation = matur
+ src.production = prod
+ src.yield = yie
+ src.potency = poten
+ src.amount = am
/obj/machinery/seed_extractor/attack_hand(mob/user)
user.set_machine(src)
@@ -140,7 +140,7 @@
for (var/datum/seed_pile/O in piles)
dat += "
| [O.name] | [O.lifespan] | [O.endurance] | [O.maturation] | "
dat += "[O.production] | [O.yield] | [O.potency] | "
- dat += "Vend ([O.amount] left) |
"
+ dat += "
Vend ([O.amount] left)"
dat += ""
var/datum/browser/popup = new(user, "seed_ext", name, 700, 400)
popup.set_content(dat)
diff --git a/code/modules/mob/living/carbon/human/interactive/functions.dm b/code/modules/mob/living/carbon/human/interactive/functions.dm
index 92747b54f91..272b95d3577 100644
--- a/code/modules/mob/living/carbon/human/interactive/functions.dm
+++ b/code/modules/mob/living/carbon/human/interactive/functions.dm
@@ -170,8 +170,8 @@
internalBeaker.reagents.add_reagent("diethylamine", 10)
if(HP.nutrilevel < HP.maxnutri)
change = 1
- if(!internalBeaker.reagents.has_reagent("eznutrient", 15))
- internalBeaker.reagents.add_reagent("eznutrient", 15)
+ if(!internalBeaker.reagents.has_reagent("eznutriment", 15))
+ internalBeaker.reagents.add_reagent("eznutriment", 15)
if(!internalBeaker.reagents.has_reagent("diethylamine", 15))
internalBeaker.reagents.add_reagent("diethylamine", 15)
if(HP.waterlevel < HP.maxwater)
diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm
index 16488120798..9156fc19379 100644
--- a/code/modules/mob/mob.dm
+++ b/code/modules/mob/mob.dm
@@ -1263,7 +1263,7 @@ mob/proc/yank_out_object()
return // Only living mobs can ventcrawl
//You can buckle on mobs if you're next to them since most are dense
-/mob/buckle_mob(mob/living/M)
+/mob/buckle_mob(mob/living/M, force = 0)
if(M.buckled)
return 0
var/turf/T = get_turf(src)
diff --git a/code/modules/reagents/chemistry/reagents/misc.dm b/code/modules/reagents/chemistry/reagents/misc.dm
index a3a04d2a41b..46797d7fd97 100644
--- a/code/modules/reagents/chemistry/reagents/misc.dm
+++ b/code/modules/reagents/chemistry/reagents/misc.dm
@@ -460,25 +460,40 @@
reagent_state = SOLID
color = "#7F8400" // rgb: 127, 132, 0
-//Reagents used for plant fertilizers.
-/datum/reagent/toxin/fertilizer
- name = "fertilizer"
- id = "fertilizer"
- description = "A chemical mix good for growing plants with."
- reagent_state = LIQUID
- color = "#664330" // rgb: 102, 67, 48
+//////////////////////////////////Hydroponics stuff///////////////////////////////
-/datum/reagent/toxin/fertilizer/eznutrient
- name = "EZ Nutrient"
- id = "eznutrient"
+/datum/reagent/plantnutriment
+ name = "Generic nutriment"
+ id = "plantnutriment"
+ description = "Some kind of nutriment. You can't really tell what it is. You should probably report it, along with how you obtained it."
+ color = "#000000" // RBG: 0, 0, 0
+ var/tox_prob = 0
-/datum/reagent/toxin/fertilizer/left4zed
- name = "Left-4-Zed"
- id = "left4zed"
+/datum/reagent/plantnutriment/on_mob_life(mob/living/M)
+ if(prob(tox_prob))
+ M.adjustToxLoss(1*REAGENTS_EFFECT_MULTIPLIER)
+ ..()
-/datum/reagent/toxin/fertilizer/robustharvest
+/datum/reagent/plantnutriment/eznutriment
+ name = "E-Z-Nutrient"
+ id = "eznutriment"
+ description = "Cheap and extremely common type of plant nutriment."
+ color = "#376400" // RBG: 50, 100, 0
+ tox_prob = 10
+
+/datum/reagent/plantnutriment/left4zednutriment
+ name = "Left 4 Zed"
+ id = "left4zednutriment"
+ description = "Unstable nutriment that makes plants mutate more often than usual."
+ color = "#1A1E4D" // RBG: 26, 30, 77
+ tox_prob = 25
+
+/datum/reagent/plantnutriment/robustharvestnutriment
name = "Robust Harvest"
- id = "robustharvest"
+ id = "robustharvestnutriment"
+ description = "Very potent nutriment that prevents plants from mutating."
+ color = "#9D9D00" // RBG: 157, 157, 0
+ tox_prob = 15
///Alchemical Reagents
diff --git a/code/modules/research/designs/biogenerator_designs.dm b/code/modules/research/designs/biogenerator_designs.dm
new file mode 100644
index 00000000000..d2931012299
--- /dev/null
+++ b/code/modules/research/designs/biogenerator_designs.dm
@@ -0,0 +1,212 @@
+///////////////////////////////////
+///////Biogenerator Designs ///////
+///////////////////////////////////
+
+/datum/design/milk
+ name = "10 milk"
+ id = "milk"
+ build_type = BIOGENERATOR
+ materials = list(MAT_BIOMASS = 20)
+ make_reagents = list("milk" = 10)
+ category = list("initial","Food")
+
+/datum/design/cream
+ name = "10 cream"
+ id = "cream"
+ build_type = BIOGENERATOR
+ materials = list(MAT_BIOMASS = 30)
+ make_reagents = list("cream" = 10)
+ category = list("initial","Food")
+
+/datum/design/milk_carton
+ name = "Milk carton"
+ id = "milk_carton"
+ build_type = BIOGENERATOR
+ materials = list(MAT_BIOMASS = 100)
+ build_path = /obj/item/weapon/reagent_containers/food/condiment/milk
+ category = list("initial","Food")
+
+/datum/design/cream_carton
+ name = "Cream carton"
+ id = "cream_carton"
+ build_type = BIOGENERATOR
+ materials = list(MAT_BIOMASS = 300)
+ build_path = /obj/item/weapon/reagent_containers/food/drinks/bottle/cream
+ category = list("initial","Food")
+
+/datum/design/black_pepper
+ name = "10u black pepper"
+ id = "black_pepper"
+ build_type = BIOGENERATOR
+ materials = list(MAT_BIOMASS = 25)
+ make_reagents = list("blackpepper" = 10)
+ category = list("initial","Food")
+
+/datum/design/pepper_mill
+ name = "Pepper mill"
+ id = "pepper_mill"
+ build_type = BIOGENERATOR
+ materials = list(MAT_BIOMASS = 50)
+ build_path = /obj/item/weapon/reagent_containers/food/condiment/peppermill
+ make_reagents = list()
+ category = list("initial","Food")
+
+/datum/design/monkey_cube
+ name = "Monkey cube"
+ id = "mcube"
+ build_type = BIOGENERATOR
+ materials = list(MAT_BIOMASS = 250)
+ build_path = /obj/item/weapon/reagent_containers/food/snacks/monkeycube
+ category = list("initial", "Food")
+
+/datum/design/ez_nut
+ name = "E-Z-Nutrient"
+ id = "ez_nut"
+ build_type = BIOGENERATOR
+ materials = list(MAT_BIOMASS = 10)
+ build_path = /obj/item/weapon/reagent_containers/glass/bottle/nutrient/ez
+ category = list("initial","Botany Chemicals")
+
+/datum/design/l4z_nut
+ name = "Left 4 Zed"
+ id = "l4z_nut"
+ build_type = BIOGENERATOR
+ materials = list(MAT_BIOMASS = 20)
+ build_path = /obj/item/weapon/reagent_containers/glass/bottle/nutrient/l4z
+ category = list("initial","Botany Chemicals")
+
+/datum/design/rh_nut
+ name = "Robust Harvest"
+ id = "rh_nut"
+ build_type = BIOGENERATOR
+ materials = list(MAT_BIOMASS = 25)
+ build_path = /obj/item/weapon/reagent_containers/glass/bottle/nutrient/rh
+ category = list("initial","Botany Chemicals")
+
+/datum/design/weed_killer
+ name = "Weed Killer"
+ id = "weed_killer"
+ build_type = BIOGENERATOR
+ materials = list(MAT_BIOMASS = 50)
+ build_path = /obj/item/weapon/reagent_containers/glass/bottle/killer/weedkiller
+ category = list("initial","Botany Chemicals")
+
+/datum/design/pest_spray
+ name = "Pest Killer"
+ id = "pest_spray"
+ build_type = BIOGENERATOR
+ materials = list(MAT_BIOMASS = 50)
+ build_path = /obj/item/weapon/reagent_containers/glass/bottle/killer/pestkiller
+ category = list("initial","Botany Chemicals")
+
+/datum/design/botany_bottle
+ name = "Empty Bottle"
+ id = "botany_bottle"
+ build_type = BIOGENERATOR
+ materials = list(MAT_BIOMASS = 5)
+ build_path = /obj/item/weapon/reagent_containers/glass/bottle/nutrient/empty
+ category = list("initial", "Botany Chemicals")
+
+/datum/design/cloth
+ name = "Roll of cloth"
+ id = "cloth"
+ build_type = BIOGENERATOR
+ materials = list(MAT_BIOMASS = 50)
+ build_path = /obj/item/stack/sheet/cloth
+ category = list("initial","Leather and Cloth")
+
+/datum/design/wallet
+ name = "Wallet"
+ id = "wallet"
+ build_type = BIOGENERATOR
+ materials = list(MAT_BIOMASS = 100)
+ build_path = /obj/item/weapon/storage/wallet
+ category = list("initial","Leather and Cloth")
+
+/datum/design/botany_gloves
+ name = "Botanical gloves"
+ id = "botany_gloves"
+ build_type = BIOGENERATOR
+ materials = list(MAT_BIOMASS = 150)
+ build_path = /obj/item/clothing/gloves/botanic_leather
+ category = list("initial","Leather and Cloth")
+
+/datum/design/toolbelt
+ name = "Utility Belt"
+ id = "toolbelt"
+ build_type = BIOGENERATOR
+ materials = list(MAT_BIOMASS = 300)
+ build_path = /obj/item/weapon/storage/belt/utility
+ category = list("initial","Leather and Cloth")
+
+/datum/design/secbelt
+ name = "Security belt"
+ id = "secbelt"
+ build_type = BIOGENERATOR
+ materials = list(MAT_BIOMASS = 300)
+ build_path = /obj/item/weapon/storage/belt/security
+ category = list("initial","Leather and Cloth")
+
+/datum/design/medbelt
+ name = "Medical belt"
+ id = "medbel"
+ build_type = BIOGENERATOR
+ materials = list(MAT_BIOMASS = 300)
+ build_path = /obj/item/weapon/storage/belt/medical
+ category = list("initial","Leather and Cloth")
+
+/datum/design/janibelt
+ name = "Janitorial belt"
+ id = "janibelt"
+ build_type = BIOGENERATOR
+ materials = list(MAT_BIOMASS = 300)
+ build_path = /obj/item/weapon/storage/belt/janitor
+ category = list("initial","Leather and Cloth")
+
+/datum/design/bandolier
+ name = "Bandolier belt"
+ id = "bandolier"
+ build_type = BIOGENERATOR
+ materials = list(MAT_BIOMASS = 300)
+ build_path = /obj/item/weapon/storage/belt/bandolier
+ category = list("initial","Leather and Cloth")
+
+/datum/design/s_holster
+ name = "Shoulder holster"
+ id = "s_holster"
+ build_type = BIOGENERATOR
+ materials = list(MAT_BIOMASS = 400)
+ build_path = /obj/item/weapon/storage/belt/holster
+ category = list("initial","Leather and Cloth")
+
+/datum/design/leather_satchel
+ name = "Leather satchel"
+ id = "leather_satchel"
+ build_type = BIOGENERATOR
+ materials = list(MAT_BIOMASS = 400)
+ build_path = /obj/item/weapon/storage/backpack/satchel
+ category = list("initial","Leather and Cloth")
+
+/datum/design/leather_jacket
+ name = "Leather jacket"
+ id = "leather_jacket"
+ build_type = BIOGENERATOR
+ materials = list(MAT_BIOMASS = 500)
+ build_path = /obj/item/clothing/suit/jacket/leather
+ category = list("initial","Leather and Cloth")
+
+/datum/design/leather_overcoat
+ name = "Leather overcoat"
+ id = "leather_overcoat"
+ build_type = BIOGENERATOR
+ materials = list(MAT_BIOMASS = 1000)
+ build_path = /obj/item/clothing/suit/jacket/leather/overcoat
+ category = list("initial","Leather and Cloth")
+
+/datum/design/rice_hat
+ name = "Rice hat"
+ id = "rice_hat"
+ build_type = BIOGENERATOR
+ materials = list(MAT_BIOMASS = 300)
+ build_path = /obj/item/clothing/head/rice_hat
+ category = list("initial","Leather and Cloth")
diff --git a/icons/effects/beam.dmi b/icons/effects/beam.dmi
index 657a2d43418..b20f8abf0b8 100644
Binary files a/icons/effects/beam.dmi and b/icons/effects/beam.dmi differ
diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi
index 1156fd33a6c..7d87846ed11 100644
Binary files a/icons/mob/head.dmi and b/icons/mob/head.dmi differ
diff --git a/icons/mob/suit.dmi b/icons/mob/suit.dmi
index 47e169492a1..8db229893de 100644
Binary files a/icons/mob/suit.dmi and b/icons/mob/suit.dmi differ
diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi
index 16ed4ce4b04..81f623ed4c7 100644
Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ
diff --git a/icons/obj/clothing/suits.dmi b/icons/obj/clothing/suits.dmi
index 48d76f691aa..08729c9e1ec 100644
Binary files a/icons/obj/clothing/suits.dmi and b/icons/obj/clothing/suits.dmi differ
diff --git a/paradise.dme b/paradise.dme
index 11fa3cc7e9a..e62e1d4b1b7 100644
--- a/paradise.dme
+++ b/paradise.dme
@@ -1932,6 +1932,7 @@
#include "code\modules\research\server.dm"
#include "code\modules\research\designs\AI_module_designs.dm"
#include "code\modules\research\designs\autolathe_designs.dm"
+#include "code\modules\research\designs\biogenerator_designs.dm"
#include "code\modules\research\designs\bluespace_designs.dm"
#include "code\modules\research\designs\comp_board_designs.dm"
#include "code\modules\research\designs\equipment_designs.dm"