Rework materials system for biogenerator. (#33985)

* Rework materials system for biogenerator.

* Added molecule types for prehistoric plants.

* Shifted molecule type to be on the seed datum, made it a list, and added genetics capabilities

* Change molecule_type field on prehistoric plants to seed datum

* Change plant molecule to new gene group
This commit is contained in:
TJ
2023-02-10 16:03:26 -05:00
committed by GitHub
parent f5924cd9b8
commit ff5363fd05
10 changed files with 182 additions and 77 deletions

View File

@@ -9,6 +9,7 @@
// Definitions for genes (trait groupings) // Definitions for genes (trait groupings)
#define GENE_PHYTOCHEMISTRY "phytochemistry" #define GENE_PHYTOCHEMISTRY "phytochemistry"
#define GENE_BIOMOLECULES "biomolecules"
#define GENE_MORPHOLOGY "morphology" #define GENE_MORPHOLOGY "morphology"
#define GENE_BIOLUMINESCENCE "bioluminescence" #define GENE_BIOLUMINESCENCE "bioluminescence"
#define GENE_ECOLOGY "ecology" #define GENE_ECOLOGY "ecology"
@@ -27,7 +28,10 @@
//Xenobotany mutations //Xenobotany mutations
//Phytochemistry //Phytochemistry
#define PLANT_CHEMICAL (1<<0) #define PLANT_CHEMICAL (1<<0)
#define PLANT_POTENCY (1<<1) #define PLANT_POTENCY (1<<1)
//Biomolecules
#define PLANT_MOLECULE (1<<0)
//Morphology //Morphology
#define PLANT_PRODUCTS (1<<0) #define PLANT_PRODUCTS (1<<0)
@@ -72,4 +76,4 @@
#define PLANT_TELEPORT (1<<0) #define PLANT_TELEPORT (1<<0)
#define PLANT_ROOMTEMP (1<<1) #define PLANT_ROOMTEMP (1<<1)
#define PLANT_GAS (1<<2) #define PLANT_GAS (1<<2)
#define PLANT_NOREACT (1<<3) //unique to xeno plants, unused #define PLANT_NOREACT (1<<3) //unique to xeno plants, unused

View File

@@ -571,3 +571,10 @@ var/list/cheartstopper = list(/*"potassium_chloride",*/ CHEESYGLOOP) //this stop
#define INCENSE_CRAVE "vales" #define INCENSE_CRAVE "vales"
#define INCENSE_CORNOIL "cornoils" #define INCENSE_CORNOIL "cornoils"
#define INCENSE_MUSTARDPLANT "mustardplant" #define INCENSE_MUSTARDPLANT "mustardplant"
#define GLUCOSE "Glucose"
#define CELLULOSE "Cellulose"
#define PROTEIN "Protein"
#define STARCH "Starch"
#define CHITIN "Chitin"
#define XENOPHYLL "Xenophyll"

View File

@@ -1,6 +1,6 @@
/datum/biogen_recipe /datum/biogen_recipe
var/id="" var/id=""
var/cost=0 var/cost=list()
var/category="" var/category=""
var/name="" var/name=""
var/amount_per_unit=1 var/amount_per_unit=1
@@ -9,7 +9,12 @@
var/result=null var/result=null
/datum/biogen_recipe/proc/Render(var/context) /datum/biogen_recipe/proc/Render(var/context)
var/html = "<li><a href='?src=\ref[context];action=create;item=[id];num=1'>[name][(amount_per_unit > 1) ? " [amount_per_unit] units" : ""]</a> <FONT COLOR=blue>([cost])</FONT>" var/html = "<li><a href='?src=\ref[context];action=create;item=[id];num=1'>[name][(amount_per_unit > 1) ? " [amount_per_unit] units" : ""]</a> (<FONT COLOR=blue>"
var/cost_list = list()
for(var/molecule in cost)
cost_list += "[cost[molecule]] [molecule]"
html += jointext(cost_list, ", ")
html += ")</FONT>"
if(other_amounts.len) if(other_amounts.len)
var/first=1 var/first=1
html += " (" html += " ("
@@ -29,35 +34,35 @@
id=MILK id=MILK
name=MILK name=MILK
reagent=MILK reagent=MILK
cost=20 cost=list(GLUCOSE = 20)
amount_per_unit=10 amount_per_unit=10
other_amounts=list(5) other_amounts=list(5)
/datum/biogen_recipe/food/cheese /datum/biogen_recipe/food/cheese
id="cheese" id="cheese"
name="Cheese Wheel" name="Cheese Wheel"
cost=100 //Making milk and reacting it with enzyme costs 80, so this is 25% more expensive cost=list(GLUCOSE = 100) //Making milk and reacting it with enzyme costs 80, so this is 25% more expensive
other_amounts=list(5) other_amounts=list(5)
result=/obj/item/weapon/reagent_containers/food/snacks/sliceable/cheesewheel result=/obj/item/weapon/reagent_containers/food/snacks/sliceable/cheesewheel
/datum/biogen_recipe/food/butter /datum/biogen_recipe/food/butter
id="butter" id="butter"
name="Butter" name="Butter"
cost=150 //The 40u milk for 20u cream costs 80, so this is about 87% more expensive cost=list(GLUCOSE = 150) //The 40u milk for 20u cream costs 80, so this is about 87% more expensive
other_amounts=list(5) other_amounts=list(5)
result=/obj/item/weapon/reagent_containers/food/snacks/butter result=/obj/item/weapon/reagent_containers/food/snacks/butter
/datum/biogen_recipe/food/meat /datum/biogen_recipe/food/meat
id="meat" id="meat"
name="Slab of meat" name="Slab of meat"
cost=50 cost=list(PROTEIN = 50)
other_amounts=list(5) other_amounts=list(5)
result=/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh result=/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh
/datum/biogen_recipe/food/monkeycube /datum/biogen_recipe/food/monkeycube
id="monkeycube" id="monkeycube"
name="Monkey cube" name="Monkey cube"
cost=250 cost=list(PROTEIN = 250)
other_amounts=list(5) other_amounts=list(5)
result=/obj/item/weapon/reagent_containers/food/snacks/monkeycube result=/obj/item/weapon/reagent_containers/food/snacks/monkeycube
@@ -68,7 +73,7 @@
id="ez" id="ez"
name="E-Z-Nutrient" name="E-Z-Nutrient"
reagent=EZNUTRIENT reagent=EZNUTRIENT
cost=10 cost=list(STARCH = 5, GLUCOSE = 5)
amount_per_unit=10 amount_per_unit=10
other_amounts=list(5) other_amounts=list(5)
@@ -76,7 +81,7 @@
id="l4z" id="l4z"
name="Left 4 Zed" name="Left 4 Zed"
reagent=LEFT4ZED reagent=LEFT4ZED
cost=20 cost=list(CHITIN = 10, GLUCOSE = 10)
amount_per_unit=10 amount_per_unit=10
other_amounts=list(5) other_amounts=list(5)
@@ -84,12 +89,12 @@
id="rh" id="rh"
name="Robust Harvest" name="Robust Harvest"
reagent=ROBUSTHARVEST reagent=ROBUSTHARVEST
cost=25 cost=list(PROTEIN = 15, GLUCOSE = 10)
amount_per_unit=10 amount_per_unit=10
other_amounts=list(5) other_amounts=list(5)
/datum/biogen_recipe/nutrient/beez /datum/biogen_recipe/nutrient/beez
cost=40 cost=list(PROTEIN = 10, GLUCOSE = 30)
id="beez" id="beez"
name="Bottle of BeezEez" name="Bottle of BeezEez"
other_amounts=list(5) other_amounts=list(5)
@@ -99,133 +104,134 @@
category="Leather" category="Leather"
/datum/biogen_recipe/leather/bee_net /datum/biogen_recipe/leather/bee_net
cost = 100 cost=list(STARCH = 30, CELLULOSE = 70)
id="bee_net" id="bee_net"
name = "Bee Net" name = "Bee Net"
result=/obj/item/weapon/bee_net result=/obj/item/weapon/bee_net
/datum/biogen_recipe/leather/wallet /datum/biogen_recipe/leather/wallet
cost=100 cost=list(CELLULOSE = 100)
id="wallet" id="wallet"
name="Wallet" name="Wallet"
result=/obj/item/weapon/storage/wallet result=/obj/item/weapon/storage/wallet
/datum/biogen_recipe/leather/gloves /datum/biogen_recipe/leather/gloves
cost=250 cost=list(CELLULOSE = 200, CHITIN = 50)
id="gloves" id="gloves"
name="Botanical Gloves" name="Botanical Gloves"
result=/obj/item/clothing/gloves/botanic_leather result=/obj/item/clothing/gloves/botanic_leather
/datum/biogen_recipe/leather/knifeholster /datum/biogen_recipe/leather/knifeholster
cost=250 cost=list(CELLULOSE = 150, CHITIN = 100)
id="knifeholster" id="knifeholster"
name="Boot Knife Holster" name="Boot Knife Holster"
result=/obj/item/clothing/accessory/holster/knife/boot result=/obj/item/clothing/accessory/holster/knife/boot
/datum/biogen_recipe/leather/ammo_pouch /datum/biogen_recipe/leather/ammo_pouch
cost = 250 cost=list(CELLULOSE = 100, CHITIN = 150)
id="ammopouch" id="ammopouch"
name = "Ammo Pouch" name = "Ammo Pouch"
result=/obj/item/weapon/storage/bag/ammo_pouch result=/obj/item/weapon/storage/bag/ammo_pouch
/datum/biogen_recipe/leather/moneybag /datum/biogen_recipe/leather/moneybag
cost=300 cost=list(CELLULOSE = 300)
id="moneybag" id="moneybag"
name="Money Bag" name="Money Bag"
result=/obj/item/weapon/storage/bag/money result=/obj/item/weapon/storage/bag/money
/datum/biogen_recipe/leather/belt/slim /datum/biogen_recipe/leather/belt/slim
cost=300 cost=list(CELLULOSE = 100, CHITIN = 100, STARCH = 100)
id="slim-belt" id="slim-belt"
name="Slim Belt" name="Slim Belt"
result=/obj/item/weapon/storage/belt/slim result=/obj/item/weapon/storage/belt/slim
/datum/biogen_recipe/leather/belt /datum/biogen_recipe/leather/belt
cost=300 cost=list(CELLULOSE = 200, STARCH = 100)
id="belt" id="belt"
name="Tool-belt" name="Tool-belt"
result=/obj/item/weapon/storage/belt/utility result=/obj/item/weapon/storage/belt/utility
//TODO
/datum/biogen_recipe/leather/bandolier /datum/biogen_recipe/leather/bandolier
cost = 300 cost=list(CELLULOSE = 100, STARCH = 100, GLUCOSE = 100)
id="bandolier" id="bandolier"
name = "Bandolier" name = "Bandolier"
result=/obj/item/clothing/accessory/storage/bandolier result=/obj/item/clothing/accessory/storage/bandolier
/datum/biogen_recipe/leather/handgunholster /datum/biogen_recipe/leather/handgunholster
cost=350 cost=list(CELLULOSE = 150, STARCH = 150, GLUCOSE = 50)
id="handgunholster" id="handgunholster"
name="Handgun Holster" name="Handgun Holster"
result=/obj/item/clothing/accessory/holster/handgun/biogenerator result=/obj/item/clothing/accessory/holster/handgun/biogenerator
/datum/biogen_recipe/leather/fannypack /datum/biogen_recipe/leather/fannypack
cost=100 cost=list(CELLULOSE = 75, CHITIN = 25)
id="fannypack" id="fannypack"
name="Fanny Pack" name="Fanny Pack"
result=/obj/item/clothing/accessory/storage/fannypack result=/obj/item/clothing/accessory/storage/fannypack
/datum/biogen_recipe/leather/ore /datum/biogen_recipe/leather/ore
cost=350 cost=list(CELLULOSE = 100, PROTEIN = 250)
id="ore" id="ore"
name="Mining Satchel" name="Mining Satchel"
result=/obj/item/weapon/storage/bag/ore result=/obj/item/weapon/storage/bag/ore
/datum/biogen_recipe/leather/gadget /datum/biogen_recipe/leather/gadget
cost=350 cost=list(CELLULOSE = 100, CHITIN = 250)
id="gadget" id="gadget"
name="Gadget Bag" name="Gadget Bag"
result=/obj/item/weapon/storage/bag/gadgets result=/obj/item/weapon/storage/bag/gadgets
/datum/biogen_recipe/leather/slime /datum/biogen_recipe/leather/slime
cost=350 cost=list(STARCH = 100, CHITIN = 250)
id="slime" id="slime"
name="Slime Bag" name="Slime Bag"
result=/obj/item/weapon/storage/bag/xenobio result=/obj/item/weapon/storage/bag/xenobio
/datum/biogen_recipe/leather/plants /datum/biogen_recipe/leather/plants
cost=350 cost=list(CELLULOSE = 200, STARCH = 150)
id="plants" id="plants"
name="Plant Bag" name="Plant Bag"
result=/obj/item/weapon/storage/bag/plants result=/obj/item/weapon/storage/bag/plants
/datum/biogen_recipe/leather/materials /datum/biogen_recipe/leather/materials
cost=500 cost=list(CELLULOSE = 100, STARCH = 100, GLUCOSE = 100, CHITIN = 100, PROTEIN = 100)
id="materials" id="materials"
name="Materials Bag" name="Materials Bag"
result=/obj/item/weapon/storage/bag/materials result=/obj/item/weapon/storage/bag/materials
/datum/biogen_recipe/leather/secbelt /datum/biogen_recipe/leather/secbelt
cost=400 cost=list(PROTEIN = 400)
id="secbelt" id="secbelt"
name="Security Belt" name="Security Belt"
result=/obj/item/weapon/storage/belt/security result=/obj/item/weapon/storage/belt/security
/datum/biogen_recipe/leather/minebelt /datum/biogen_recipe/leather/minebelt
cost=350 cost=list(CELLULOSE = 200, PROTEIN = 150)
id="minebelt" id="minebelt"
name="Mining Gear Belt" name="Mining Gear Belt"
result=/obj/item/weapon/storage/belt/mining result=/obj/item/weapon/storage/belt/mining
/datum/biogen_recipe/leather/janibelt /datum/biogen_recipe/leather/janibelt
cost=350 cost=list(CELLULOSE = 200, STARCH = 100, GLUCOSE=50)
id="janibelt" id="janibelt"
name="Janibelt" name="Janibelt"
result=/obj/item/weapon/storage/belt/janitor result=/obj/item/weapon/storage/belt/janitor
/datum/biogen_recipe/leather/hydrobelt /datum/biogen_recipe/leather/hydrobelt
cost=350 cost=list(CELLULOSE = 100, STARCH = 100, GLUCOSE = 100, CHITIN = 50)
id="hydrobelt" id="hydrobelt"
name="Botany Gear Belt" name="Botany Gear Belt"
result=/obj/item/weapon/storage/belt/botanist result=/obj/item/weapon/storage/belt/botanist
/datum/biogen_recipe/leather/briefcase /datum/biogen_recipe/leather/briefcase
cost=400 cost=list(CELLULOSE = 200, STARCH = 200)
id="briefcase" id="briefcase"
name="Leather Briefcase" name="Leather Briefcase"
result=/obj/item/weapon/storage/briefcase/biogen result=/obj/item/weapon/storage/briefcase/biogen
/datum/biogen_recipe/leather/satchel /datum/biogen_recipe/leather/satchel
cost=400 cost=list(CELLULOSE = 200, STARCH = 200)
id="satchel" id="satchel"
name="Leather Satchel" name="Leather Satchel"
result=/obj/item/weapon/storage/backpack/satchel result=/obj/item/weapon/storage/backpack/satchel
@@ -234,41 +240,41 @@
category="Paper" category="Paper"
/datum/biogen_recipe/paper/papersheet /datum/biogen_recipe/paper/papersheet
cost=15 cost=list(CELLULOSE = 15)
id="papersheet" id="papersheet"
name="Paper Sheet" name="Paper Sheet"
other_amounts=list(5,10) other_amounts=list(5,10)
result=/obj/item/weapon/paper result=/obj/item/weapon/paper
/datum/biogen_recipe/paper/cardboard /datum/biogen_recipe/paper/cardboard
cost=25 cost=list(CELLULOSE = 15, STARCH = 10)
id="cardboard" id="cardboard"
name="Cardboard Sheet" name="Cardboard Sheet"
other_amounts=list(5,10,50) other_amounts=list(5,10,50)
result=/obj/item/stack/sheet/cardboard result=/obj/item/stack/sheet/cardboard
/datum/biogen_recipe/paper/giftwrap /datum/biogen_recipe/paper/giftwrap
cost=25 cost=list(CELLULOSE = 5, STARCH = 20)
id="giftwrap" id="giftwrap"
name="Gift Wrap" name="Gift Wrap"
amount_per_unit = 24 amount_per_unit = 24
result=/obj/item/stack/package_wrap/gift result=/obj/item/stack/package_wrap/gift
/datum/biogen_recipe/paper/packagewrap /datum/biogen_recipe/paper/packagewrap
cost=30 cost=list(CELLULOSE = 5, STARCH = 20)
id="packagewrap" id="packagewrap"
name="Package Wrap" name="Package Wrap"
amount_per_unit = 24 amount_per_unit = 24
result=/obj/item/stack/package_wrap result=/obj/item/stack/package_wrap
/datum/biogen_recipe/paper/clipboard /datum/biogen_recipe/paper/clipboard
cost=75 cost=list(CELLULOSE = 75)
id="clipboard" id="clipboard"
name="Clipboard" name="Clipboard"
result=/obj/item/weapon/storage/bag/clipboard result=/obj/item/weapon/storage/bag/clipboard
/datum/biogen_recipe/paper/paperbin /datum/biogen_recipe/paper/paperbin
cost=475 //25 from the cardboard, 30*15=450 from the paper cost=list(CELLULOSE = 465, STARCH = 10) //25 from the cardboard, 30*15=450 from the paper
id="paperbin" id="paperbin"
name="Paper Bin (30 sheets)" name="Paper Bin (30 sheets)"
result=/obj/item/weapon/paper_bin result=/obj/item/weapon/paper_bin
@@ -279,7 +285,7 @@
/datum/biogen_recipe/misc/insecticide /datum/biogen_recipe/misc/insecticide
id = "insecticide" id = "insecticide"
name = "Insecticide" name = "Insecticide"
cost=35 cost=list(PROTEIN = 10, STARCH = 10, CHITIN = 15)
reagent=INSECTICIDE reagent=INSECTICIDE
amount_per_unit=10 amount_per_unit=10
other_amounts=list(5) other_amounts=list(5)
@@ -288,32 +294,32 @@
id="plantbgone" id="plantbgone"
name="Plant-B-Gone" name="Plant-B-Gone"
reagent=PLANTBGONE reagent=PLANTBGONE
cost=35 cost=list(CHITIN = 30, CELLULOSE = 5)
amount_per_unit=10 amount_per_unit=10
other_amounts=list(5) other_amounts=list(5)
/datum/biogen_recipe/misc/candle /datum/biogen_recipe/misc/candle
cost=50 cost=list(STARCH = 40, GLUCOSE = 10)
id="candle" id="candle"
name="Red Candle" name="Red Candle"
other_amounts=list(5) other_amounts=list(5)
result=/obj/item/candle result=/obj/item/candle
/datum/biogen_recipe/misc/charcoal /datum/biogen_recipe/misc/charcoal
cost=100 cost=list(CELLULOSE = 100)
id="charcoal" id="charcoal"
name="Charcoal Sheet" name="Charcoal Sheet"
other_amounts=list(5,10) other_amounts=list(5,10)
result=/obj/item/stack/sheet/charcoal result=/obj/item/stack/sheet/charcoal
/datum/biogen_recipe/misc/soap /datum/biogen_recipe/misc/soap
cost=250 cost=list(GLUCOSE = 150, STARCH = 100)
id="soap" id="soap"
name="Bar of Soap" name="Bar of Soap"
result=/obj/item/weapon/soap/nanotrasen result=/obj/item/weapon/soap/nanotrasen
/datum/biogen_recipe/misc/crayons /datum/biogen_recipe/misc/crayons
cost=400 cost=list(CELLULOSE = 200, STARCH = 200)
id="crayons" id="crayons"
name="Box of Crayons" name="Box of Crayons"
result=/obj/item/weapon/storage/fancy/crayons result=/obj/item/weapon/storage/fancy/crayons
@@ -321,39 +327,39 @@
/datum/biogen_recipe/misc/rice_hat /datum/biogen_recipe/misc/rice_hat
name = "Rice Hat" name = "Rice Hat"
id = "rice_hat" id = "rice_hat"
cost = 300 cost=list(STARCH = 300)
result = /obj/item/clothing/head/rice_hat result = /obj/item/clothing/head/rice_hat
/datum/biogen_recipe/misc/roningasa /datum/biogen_recipe/misc/roningasa
name = "Wickerwork Hat" name = "Wickerwork Hat"
id = "wickerwork_hat" id = "wickerwork_hat"
cost = 300 cost=list(CELLULOSE = 300)
result = /obj/item/clothing/head/rice_hat/ronin result = /obj/item/clothing/head/rice_hat/ronin
/datum/biogen_recipe/misc/mino /datum/biogen_recipe/misc/mino
name = "Grass Coat" name = "Grass Coat"
id = "grass_coat" id = "grass_coat"
cost = 500 cost=list(CELLULOSE = 300)
result = /obj/item/clothing/suit/mino result = /obj/item/clothing/suit/mino
/datum/biogen_recipe/misc/rvest /datum/biogen_recipe/misc/rvest
name = "Reticulated Vest" name = "Reticulated Vest"
id = "rvest" id = "rvest"
cost = 500 cost=list(CELLULOSE = 200, STARCH = 300)
result = /obj/item/clothing/suit/reticulatedvest result = /obj/item/clothing/suit/reticulatedvest
/datum/biogen_recipe/flooring /datum/biogen_recipe/flooring
category="Flooring" category="Flooring"
/datum/biogen_recipe/flooring/carpet /datum/biogen_recipe/flooring/carpet
cost=10 cost=list(CELLULOSE = 5, STARCH = 5)
id="carpet" id="carpet"
name="Piece of Carpet" name="Piece of Carpet"
other_amounts=list(5,10,20) other_amounts=list(5,10,20)
result=/obj/item/stack/tile/carpet result=/obj/item/stack/tile/carpet
/datum/biogen_recipe/flooring/arcade /datum/biogen_recipe/flooring/arcade
cost=10 cost=list(CELLULOSE = 5, STARCH = 5)
id="arcadecarpet" id="arcadecarpet"
name="Piece of Arcade Carpet" name="Piece of Arcade Carpet"
other_amounts=list(5,10,20) other_amounts=list(5,10,20)
@@ -372,7 +378,7 @@
var/biomass_coefficient = 9 var/biomass_coefficient = 9
var/tmp/processing = 0 var/tmp/processing = 0
var/obj/item/weapon/reagent_containers/glass/beaker = null var/obj/item/weapon/reagent_containers/glass/beaker = null
var/points = 0 var/points = list(STARCH = 0, CHITIN = 0, GLUCOSE = 0, PROTEIN = 0, CELLULOSE = 0, XENOPHYLL = 0)
var/menustat = "menu" var/menustat = "menu"
var/tmp/list/recipes[0] var/tmp/list/recipes[0]
var/tmp/list/recipe_categories[0] var/tmp/list/recipe_categories[0]
@@ -562,7 +568,9 @@
if (processing) if (processing)
dat += "<FONT COLOR=red>Biogenerator is processing! Please wait...</FONT>" dat += "<FONT COLOR=red>Biogenerator is processing! Please wait...</FONT>"
else else
dat += "Biomass: [points] points.<HR>" for (var/nutrient in points)
if (points[nutrient] > 0)
dat += "[nutrient]: [points[nutrient]] points.<BR>"
switch(menustat) switch(menustat)
if("menu") if("menu")
if (beaker) if (beaker)
@@ -613,10 +621,8 @@
var/S = 0 var/S = 0
for(var/obj/item/weapon/reagent_containers/food/snacks/grown/I in contents) for(var/obj/item/weapon/reagent_containers/food/snacks/grown/I in contents)
S += 5 S += 5
if(I.reagents.get_reagent_amount(NUTRIMENT) < 0.1) for (var/molecule in I.seed.molecule_type)
points += 1 points[molecule] += round((min(I.seed.potency, 200)*biomass_coefficient) / I.seed.molecule_type.len)
else
points += I.reagents.get_reagent_amount(NUTRIMENT)*biomass_coefficient
qdel(I) qdel(I)
if(S) if(S)
processing = 1 processing = 1
@@ -631,15 +637,16 @@
menustat = "void" menustat = "void"
/obj/machinery/biogenerator/proc/check_cost(var/cost) /obj/machinery/biogenerator/proc/check_cost(var/cost)
if (cost > points) for (var/nutrient in cost)
menustat = "nopoints" if (cost[nutrient] > points[nutrient])
return 1 menustat = "nopoints"
else return 1
points -= cost for (var/nutrient in cost)
processing = 1 points[nutrient] -= cost[nutrient]
update_icon() processing = 1
updateUsrDialog() update_icon()
sleep(30) updateUsrDialog()
sleep(30)
/obj/machinery/biogenerator/proc/create_product(var/item, var/num) /obj/machinery/biogenerator/proc/create_product(var/item, var/num)
var/datum/biogen_recipe/recipe=recipes[item] var/datum/biogen_recipe/recipe=recipes[item]
@@ -649,7 +656,11 @@
if(!(num in (recipe.other_amounts + 1))) if(!(num in (recipe.other_amounts + 1)))
return 0 return 0
if(check_cost(recipe.cost*num)) if(num > 1)
for (var/molecule in recipe.cost)
recipe.cost[molecule] *= num
if(check_cost(recipe.cost))
return 0 return 0
if(recipe.reagent) if(recipe.reagent)

View File

@@ -77,6 +77,7 @@
dat += "<tr><td><b>Maturation time</b></td><td>[round(grown_seed.maturation, 0.01)]</td></tr>" dat += "<tr><td><b>Maturation time</b></td><td>[round(grown_seed.maturation, 0.01)]</td></tr>"
dat += "<tr><td><b>Production time</b></td><td>[round(grown_seed.production, 0.01)]</td></tr>" dat += "<tr><td><b>Production time</b></td><td>[round(grown_seed.production, 0.01)]</td></tr>"
dat += "<tr><td><b>Potency</b></td><td>[round(grown_seed.potency, 0.01)]</td></tr>" dat += "<tr><td><b>Potency</b></td><td>[round(grown_seed.potency, 0.01)]</td></tr>"
dat += "<tr><td><b>Primary Molecules</b></td><td>[jointext(grown_seed.molecule_type, ", ")]</td></tr>"
dat += "</table>" dat += "</table>"
if(grown_reagents && grown_reagents.reagent_list && grown_reagents.reagent_list.len) if(grown_reagents && grown_reagents.reagent_list && grown_reagents.reagent_list.len)

View File

@@ -16,7 +16,7 @@
if(age < 3 && length(seed.mutants) && gene) if(age < 3 && length(seed.mutants) && gene)
mutate_species() mutate_species()
if(!gene) if(!gene)
gene = pick(GENE_PHYTOCHEMISTRY, GENE_MORPHOLOGY, GENE_BIOLUMINESCENCE, GENE_ECOLOGY, GENE_ECOPHYSIOLOGY, GENE_METABOLISM, GENE_DEVELOPMENT, GENE_XENOPHYSIOLOGY) gene = pick(GENE_PHYTOCHEMISTRY, GENE_BIOMOLECULES, GENE_MORPHOLOGY, GENE_BIOLUMINESCENCE, GENE_ECOLOGY, GENE_ECOPHYSIOLOGY, GENE_METABOLISM, GENE_DEVELOPMENT, GENE_XENOPHYSIOLOGY)
check_for_divergence() check_for_divergence()
//The scaling functions modify stats with diminishing returns, approaching the hardcap value //The scaling functions modify stats with diminishing returns, approaching the hardcap value
@@ -45,6 +45,15 @@
if(check_success) if(check_success)
visible_message("<span class='notice'>\The [seed.display_name] develops a strange-looking gland.</span>") visible_message("<span class='notice'>\The [seed.display_name] develops a strange-looking gland.</span>")
if(GENE_BIOMOLECULES)
var/new_molecule = pick(STARCH, CHITIN, PROTEIN, GLUCOSE, CELLULOSE, XENOPHYLL)
if (new_molecule in seed.molecule_type)
visible_message("<span class='notice'>\The [seed.display_name] has its phloem shrivel up.</span>")
seed.molecule_type -= new_molecule
else
visible_message("<span class='notice'>\The [seed.display_name] seems to have a new substance filling its phloem.</span>")
seed.molecule_type += new_molecule
if(GENE_MORPHOLOGY) if(GENE_MORPHOLOGY)
var/mutation_type = pick(PLANT_PRODUCTS, PLANT_THORNY, PLANT_JUICY, PLANT_LIGNEOUS, PLANT_STINGING, PLANT_APPEARANCE) var/mutation_type = pick(PLANT_PRODUCTS, PLANT_THORNY, PLANT_JUICY, PLANT_LIGNEOUS, PLANT_STINGING, PLANT_APPEARANCE)
switch(mutation_type) switch(mutation_type)
@@ -58,7 +67,7 @@
else else
visible_message("<span class='notice'>\The [seed.display_name] sheds its thorns away...</span>") visible_message("<span class='notice'>\The [seed.display_name] sheds its thorns away...</span>")
if(PLANT_JUICY) if(PLANT_JUICY)
//clever way of going from 0 to 1 to 2. //clever way of going from 0 to 1 to 2.
seed.juicy = (seed.juicy + 1) % 3 seed.juicy = (seed.juicy + 1) % 3
generic_mutation_message("wobbles!") generic_mutation_message("wobbles!")
if(PLANT_LIGNEOUS) if(PLANT_LIGNEOUS)
@@ -111,7 +120,7 @@
//lower better //lower better
var/hardcap = 0.1 var/hardcap = 0.1
var/max_change = 0.15 //percent var/max_change = 0.15 //percent
seed.lowkpa_tolerance -= round(min(hardcap - hardcap/2*round(log(10,hardcap/seed.lowkpa_tolerance*100),0.01),max_change*seed.lowkpa_tolerance),0.1) seed.lowkpa_tolerance -= round(min(hardcap - hardcap/2*round(log(10,hardcap/seed.lowkpa_tolerance*100),0.01),max_change*seed.lowkpa_tolerance),0.1)
//higher better //higher better
var/hardcap = 500 var/hardcap = 500
var/max_change = 0.15 //percent var/max_change = 0.15 //percent

View File

@@ -9,6 +9,7 @@
mutants = null mutants = null
harvest_repeat = 1 harvest_repeat = 1
chems = list(DIETHYLAMINE = list(0,10)) chems = list(DIETHYLAMINE = list(0,10))
molecule_type = list(XENOPHYLL)
lifespan = 60 lifespan = 60
maturation = 6 maturation = 6
@@ -36,6 +37,7 @@
mutants = null mutants = null
harvest_repeat = 1 harvest_repeat = 1
chems = list(FROSTOIL = list(5,30)) chems = list(FROSTOIL = list(5,30))
molecule_type = list(XENOPHYLL)
lifespan = 50 lifespan = 50
maturation = 3 maturation = 3
@@ -64,7 +66,7 @@
products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/jurlmah) products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/jurlmah)
mutants = null mutants = null
chems = list(CLONEXADONE = list(1,10)) chems = list(CLONEXADONE = list(1,10))
molecule_type = list(XENOPHYLL)
lifespan = 25 lifespan = 25
maturation = 6 maturation = 6
production = 1 production = 1
@@ -95,6 +97,7 @@
mutants = null mutants = null
noreact = 1 noreact = 1
chems = list(POTASSIUM = list(0,10),SUGAR = list(0,10),PHOSPHORUS = list(0,10)) chems = list(POTASSIUM = list(0,10),SUGAR = list(0,10),PHOSPHORUS = list(0,10))
molecule_type = list(XENOPHYLL)
lifespan = 25 lifespan = 25
maturation = 10 maturation = 10
@@ -127,6 +130,7 @@
mutants = null mutants = null
harvest_repeat = 2 harvest_repeat = 2
chems = list(NUTRIMENT = list(1,10)) chems = list(NUTRIMENT = list(1,10))
molecule_type = list(XENOPHYLL)
lifespan = 55 lifespan = 55
maturation = 6 maturation = 6
@@ -157,6 +161,7 @@
mutants = null mutants = null
harvest_repeat = 1 harvest_repeat = 1
chems = list(NUTRIMENT = list(1,10),SPORTDRINK = list(0,2),THYMOL = list(0,5)) chems = list(NUTRIMENT = list(1,10),SPORTDRINK = list(0,2),THYMOL = list(0,5))
molecule_type = list(XENOPHYLL)
lifespan = 100 lifespan = 100
maturation = 6 maturation = 6
@@ -187,6 +192,7 @@
mutants = null mutants = null
harvest_repeat = 1 harvest_repeat = 1
chems = list(KARMOTRINE = list(2,2)) chems = list(KARMOTRINE = list(2,2))
molecule_type = list(XENOPHYLL)
lifespan = 55 lifespan = 55
maturation = 7 maturation = 7

View File

@@ -56,6 +56,7 @@ var/global/list/gene_tag_masks = list() // Gene obfuscation for delicious tria
var/teleporting = 0 // If 1, causes teleportation when thrown. var/teleporting = 0 // If 1, causes teleportation when thrown.
var/juicy = 0 // 0 = no, 1 = splatters when thrown, 2 = slips var/juicy = 0 // 0 = no, 1 = splatters when thrown, 2 = slips
var/noreact = 0 // If 1, chems do not react inside the plant. var/noreact = 0 // If 1, chems do not react inside the plant.
var/list/molecule_type = list() // Types of organic molecules produced by this plant. Used for biogenerator.
// Cosmetics. // Cosmetics.
var/plant_dmi = 'icons/obj/hydroponics/apple.dmi'// DMI to use for the plant growing in the tray. var/plant_dmi = 'icons/obj/hydroponics/apple.dmi'// DMI to use for the plant growing in the tray.
@@ -279,6 +280,13 @@ var/global/list/gene_tag_masks = list() // Gene obfuscation for delicious tria
if(GENEGUN_MODE_SPLICE) if(GENEGUN_MODE_SPLICE)
potency = round(mix(gene.values[2], potency, rand(40, 60)/100), 0.1) potency = round(mix(gene.values[2], potency, rand(40, 60)/100), 0.1)
if(GENE_BIOMOLECULES)
if (gene.values[1])
switch(mode)
if(GENEGUN_MODE_PURGE)
molecule_type = gene.values[1]
if(GENEGUN_MODE_SPLICE)
molecule_type += gene.values[1]
if(GENE_MORPHOLOGY) if(GENE_MORPHOLOGY)
if(gene.values[1]) if(gene.values[1])
if(!products || mode == GENEGUN_MODE_PURGE) if(!products || mode == GENEGUN_MODE_PURGE)
@@ -407,7 +415,11 @@ var/global/list/gene_tag_masks = list() // Gene obfuscation for delicious tria
if(GENE_PHYTOCHEMISTRY) if(GENE_PHYTOCHEMISTRY)
P.values = list( P.values = list(
(chems ? chems : 0), (chems ? chems : 0),
(potency ? potency : 0), (potency ? potency : 0)
)
if(GENE_BIOMOLECULES)
P.values = list(
(molecule_type ? molecule_type : 0)
) )
if(GENE_MORPHOLOGY) if(GENE_MORPHOLOGY)
P.values = list( P.values = list(
@@ -655,6 +667,7 @@ var/global/list/gene_tag_masks = list() // Gene obfuscation for delicious tria
new_seed.alter_temp = alter_temp new_seed.alter_temp = alter_temp
new_seed.plant_dmi = plant_dmi new_seed.plant_dmi = plant_dmi
new_seed.mutation_log = mutation_log new_seed.mutation_log = mutation_log
new_seed.molecule_type = molecule_type
new_seed.mutation_log += "([timestamp()]) Diverged from seed with uid: [uid]." new_seed.mutation_log += "([timestamp()]) Diverged from seed with uid: [uid]."
ASSERT(istype(new_seed)) //something happened... oh no... ASSERT(istype(new_seed)) //something happened... oh no...

View File

@@ -191,6 +191,7 @@
var/list/data = list() var/list/data = list()
var/static/list/gene_tag_list = list( var/static/list/gene_tag_list = list(
list("tag" = GENE_PHYTOCHEMISTRY), list("tag" = GENE_PHYTOCHEMISTRY),
list("tag" = GENE_BIOMOLECULES),
list("tag" = GENE_MORPHOLOGY), list("tag" = GENE_MORPHOLOGY),
list("tag" = GENE_BIOLUMINESCENCE), list("tag" = GENE_BIOLUMINESCENCE),
list("tag" = GENE_ECOLOGY), list("tag" = GENE_ECOLOGY),

View File

@@ -520,6 +520,7 @@
chems = list(CAPSAICIN = list(3,5), NUTRIMENT = list(1,25)) chems = list(CAPSAICIN = list(3,5), NUTRIMENT = list(1,25))
mutants = list("icechili", "ghostpepper") mutants = list("icechili", "ghostpepper")
harvest_repeat = 1 harvest_repeat = 1
molecule_type = list(CELLULOSE)
lifespan = 20 lifespan = 20
maturation = 5 maturation = 5
@@ -562,6 +563,7 @@
mutants = list("glowberries","poisonberries") mutants = list("glowberries","poisonberries")
harvest_repeat = 1 harvest_repeat = 1
chems = list(NUTRIMENT = list(1,10)) chems = list(NUTRIMENT = list(1,10))
molecule_type = list(GLUCOSE)
lifespan = 20 lifespan = 20
maturation = 5 maturation = 5
@@ -621,6 +623,7 @@
mutants = list("deathnettle") mutants = list("deathnettle")
harvest_repeat = 1 harvest_repeat = 1
chems = list(NUTRIMENT = list(1,50), FORMIC_ACID = list(0,1)) chems = list(NUTRIMENT = list(1,50), FORMIC_ACID = list(0,1))
molecule_type = list(CELLULOSE)
lifespan = 30 lifespan = 30
maturation = 6 maturation = 6
production = 6 production = 6
@@ -650,6 +653,7 @@
mutants = list("bluetomato","bloodtomato") mutants = list("bluetomato","bloodtomato")
harvest_repeat = 1 harvest_repeat = 1
chems = list(NUTRIMENT = list(1,10)) chems = list(NUTRIMENT = list(1,10))
molecule_type = list(GLUCOSE)
lifespan = 25 lifespan = 25
maturation = 8 maturation = 8
@@ -716,6 +720,7 @@
mutants = list("realeggplant") mutants = list("realeggplant")
harvest_repeat = 1 harvest_repeat = 1
chems = list(NUTRIMENT = list(1,10)) chems = list(NUTRIMENT = list(1,10))
molecule_type = list(CELLULOSE)
lifespan = 25 lifespan = 25
maturation = 6 maturation = 6
@@ -747,6 +752,7 @@
mutants = list("poisonapple","goldapple") mutants = list("poisonapple","goldapple")
harvest_repeat = 1 harvest_repeat = 1
chems = list(NUTRIMENT = list(1,10)) chems = list(NUTRIMENT = list(1,10))
molecule_type = list(GLUCOSE)
lifespan = 55 lifespan = 55
maturation = 6 maturation = 6
@@ -785,6 +791,7 @@
mutants = list("ambrosiadeus") mutants = list("ambrosiadeus")
harvest_repeat = 1 harvest_repeat = 1
chems = list(NUTRIMENT = list(1), MESCALINE = list(1,8), TANNIC_ACID = list(1,8,1), OPIUM = list(1,10,1)) chems = list(NUTRIMENT = list(1), MESCALINE = list(1,8), TANNIC_ACID = list(1,8,1), OPIUM = list(1,10,1))
molecule_type = list(CELLULOSE)
lifespan = 60 lifespan = 60
maturation = 6 maturation = 6
@@ -828,6 +835,7 @@
products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/chanterelle) products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/chanterelle)
mutants = list("reishi","amanita","plumphelmet") mutants = list("reishi","amanita","plumphelmet")
chems = list(NUTRIMENT = list(1,25)) chems = list(NUTRIMENT = list(1,25))
molecule_type = list(CHITIN)
lifespan = 35 lifespan = 35
maturation = 7 maturation = 7
@@ -930,6 +938,7 @@
plant_dmi = 'icons/obj/hydroponics/towercap.dmi' plant_dmi = 'icons/obj/hydroponics/towercap.dmi'
mutants = null mutants = null
products = list(/obj/item/weapon/grown/log) products = list(/obj/item/weapon/grown/log)
molecule_type = list(CELLULOSE)
lifespan = 80 lifespan = 80
maturation = 15 maturation = 15
@@ -990,6 +999,7 @@
plant_dmi = 'icons/obj/hydroponics/harebell.dmi' plant_dmi = 'icons/obj/hydroponics/harebell.dmi'
products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/harebell) products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/harebell)
chems = list(NUTRIMENT = list(1,20)) chems = list(NUTRIMENT = list(1,20))
molecule_type = list(CELLULOSE)
lifespan = 100 lifespan = 100
maturation = 7 maturation = 7
@@ -1096,6 +1106,7 @@
products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/grapes) products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/grapes)
harvest_repeat = 1 harvest_repeat = 1
chems = list(NUTRIMENT = list(1,10), SUGAR = list(1,5)) chems = list(NUTRIMENT = list(1,10), SUGAR = list(1,5))
molecule_type = list(GLUCOSE)
lifespan = 50 lifespan = 50
maturation = 3 maturation = 3
@@ -1126,6 +1137,7 @@
mutants = list("rocknut") mutants = list("rocknut")
harvest_repeat = 1 harvest_repeat = 1
chems = list(NUTRIMENT = list(1,10)) chems = list(NUTRIMENT = list(1,10))
molecule_type = list(PROTEIN)
lifespan = 55 lifespan = 55
maturation = 6 maturation = 6
@@ -1142,6 +1154,7 @@
products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/rocknut) products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/rocknut)
harvest_repeat = 1 harvest_repeat = 1
chems = list(NUTRIMENT = list(1,10),IRON = list(3,5)) chems = list(NUTRIMENT = list(1,10),IRON = list(3,5))
molecule_type = list(PROTEIN)
lifespan = 70 lifespan = 70
maturation = 6 maturation = 6
@@ -1158,6 +1171,7 @@
mutants = list("plasmacabbage") mutants = list("plasmacabbage")
harvest_repeat = 1 harvest_repeat = 1
chems = list(NUTRIMENT = list(1,10)) chems = list(NUTRIMENT = list(1,10))
molecule_type = list(CELLULOSE)
lifespan = 50 lifespan = 50
maturation = 3 maturation = 3
@@ -1177,6 +1191,7 @@
products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/plasmacabbage) products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/plasmacabbage)
harvest_repeat = 1 harvest_repeat = 1
chems = list(NUTRIMENT = list(1,10),PLASMA = list(3,5)) chems = list(NUTRIMENT = list(1,10),PLASMA = list(3,5))
molecule_type = list(CELLULOSE)
lifespan = 30 lifespan = 30
maturation = 3 maturation = 3
@@ -1195,6 +1210,7 @@
plant_dmi = 'icons/obj/hydroponics/shand.dmi' plant_dmi = 'icons/obj/hydroponics/shand.dmi'
products = list(/obj/item/stack/medical/bruise_pack/tajaran) products = list(/obj/item/stack/medical/bruise_pack/tajaran)
chems = list(OPIUM = list(0,10)) chems = list(OPIUM = list(0,10))
molecule_type = list(XENOPHYLL)
lifespan = 50 lifespan = 50
maturation = 3 maturation = 3
@@ -1210,6 +1226,7 @@
plant_dmi = 'icons/obj/hydroponics/mtear.dmi' plant_dmi = 'icons/obj/hydroponics/mtear.dmi'
products = list(/obj/item/stack/medical/ointment/tajaran) products = list(/obj/item/stack/medical/ointment/tajaran)
chems = list(HONEY = list(1,10), TANNIC_ACID = list(3,5)) chems = list(HONEY = list(1,10), TANNIC_ACID = list(3,5))
molecule_type = list(XENOPHYLL)
lifespan = 50 lifespan = 50
maturation = 3 maturation = 3
@@ -1227,6 +1244,7 @@
harvest_repeat = 1 harvest_repeat = 1
chems = list(BANANA = list(1,10), POTASSIUMCARBONATE = list(0.1,30)) chems = list(BANANA = list(1,10), POTASSIUMCARBONATE = list(0.1,30))
mutants = list("bluespacebanana") mutants = list("bluespacebanana")
molecule_type = list(GLUCOSE)
lifespan = 50 lifespan = 50
maturation = 6 maturation = 6
@@ -1252,6 +1270,7 @@
plant_dmi = 'icons/obj/hydroponics/corn.dmi' plant_dmi = 'icons/obj/hydroponics/corn.dmi'
products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/corn) products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/corn)
chems = list(NUTRIMENT = list(1,10)) chems = list(NUTRIMENT = list(1,10))
molecule_type = list(CELLULOSE)
lifespan = 25 lifespan = 25
maturation = 8 maturation = 8
@@ -1271,6 +1290,7 @@
plant_dmi = 'icons/obj/hydroponics/potato.dmi' plant_dmi = 'icons/obj/hydroponics/potato.dmi'
products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/potato) products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/potato)
chems = list(NUTRIMENT = list(1,10)) chems = list(NUTRIMENT = list(1,10))
molecule_type = list(STARCH)
lifespan = 30 lifespan = 30
maturation = 10 maturation = 10
@@ -1289,6 +1309,7 @@
mutants = list("koibean") mutants = list("koibean")
harvest_repeat = 1 harvest_repeat = 1
chems = list(NUTRIMENT = list(1,20)) chems = list(NUTRIMENT = list(1,20))
molecule_type = list(PROTEIN)
lifespan = 25 lifespan = 25
maturation = 4 maturation = 4
@@ -1304,6 +1325,7 @@
products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/koibeans) products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/koibeans)
harvest_repeat = 1 harvest_repeat = 1
chems = list(NUTRIMENT = list(1,10),CARPOTOXIN = list(1,25)) chems = list(NUTRIMENT = list(1,10),CARPOTOXIN = list(1,25))
molecule_type = list(PROTEIN)
lifespan = 25 lifespan = 25
maturation = 4 maturation = 4
@@ -1318,6 +1340,7 @@
plant_dmi = 'icons/obj/hydroponics/wheat.dmi' plant_dmi = 'icons/obj/hydroponics/wheat.dmi'
products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/wheat) products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/wheat)
chems = list(NUTRIMENT = list(1,25)) chems = list(NUTRIMENT = list(1,25))
molecule_type = list(STARCH)
lifespan = 25 lifespan = 25
maturation = 6 maturation = 6
@@ -1334,6 +1357,7 @@
plant_dmi = 'icons/obj/hydroponics/rice.dmi' plant_dmi = 'icons/obj/hydroponics/rice.dmi'
products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/ricestalk) products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/ricestalk)
chems = list(NUTRIMENT = list(1,25)) chems = list(NUTRIMENT = list(1,25))
molecule_type = list(STARCH)
lifespan = 25 lifespan = 25
maturation = 6 maturation = 6
@@ -1352,6 +1376,7 @@
products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/carrot) products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/carrot)
mutants = list("diamondcarrot") mutants = list("diamondcarrot")
chems = list(NUTRIMENT = list(1,20), ZEAXANTHIN = list(3,5)) chems = list(NUTRIMENT = list(1,20), ZEAXANTHIN = list(3,5))
molecule_type = list(CELLULOSE)
lifespan = 25 lifespan = 25
maturation = 10 maturation = 10
@@ -1394,6 +1419,7 @@
plant_dmi = 'icons/obj/hydroponics/whitebeet.dmi' plant_dmi = 'icons/obj/hydroponics/whitebeet.dmi'
products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/whitebeet) products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/whitebeet)
chems = list(NUTRIMENT = list(0,20), SUGAR = list(1,5)) chems = list(NUTRIMENT = list(0,20), SUGAR = list(1,5))
molecule_type = list(STARCH)
lifespan = 60 lifespan = 60
maturation = 6 maturation = 6
@@ -1410,6 +1436,7 @@
products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/sugarcane) products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/sugarcane)
harvest_repeat = 1 harvest_repeat = 1
chems = list(SUGAR = list(4,5)) chems = list(SUGAR = list(4,5))
molecule_type = list(GLUCOSE)
lifespan = 60 lifespan = 60
maturation = 3 maturation = 3
@@ -1427,6 +1454,7 @@
products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/watermelon) products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/watermelon)
harvest_repeat = 1 harvest_repeat = 1
chems = list(NUTRIMENT = list(1,6)) chems = list(NUTRIMENT = list(1,6))
molecule_type = list(GLUCOSE)
lifespan = 50 lifespan = 50
maturation = 6 maturation = 6
@@ -1445,6 +1473,7 @@
products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/pumpkin) products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/pumpkin)
harvest_repeat = 1 harvest_repeat = 1
chems = list(NUTRIMENT = list(1,6)) chems = list(NUTRIMENT = list(1,6))
molecule_type = list(STARCH)
lifespan = 50 lifespan = 50
maturation = 6 maturation = 6
@@ -1463,6 +1492,7 @@
harvest_repeat = 1 harvest_repeat = 1
mutants = list("silicatecitrus") mutants = list("silicatecitrus")
chems = list(NUTRIMENT = list(1,20)) chems = list(NUTRIMENT = list(1,20))
molecule_type = list(GLUCOSE)
lifespan = 55 lifespan = 55
maturation = 6 maturation = 6
@@ -1481,6 +1511,7 @@
harvest_repeat = 1 harvest_repeat = 1
mutants = list("silicatecitrus") mutants = list("silicatecitrus")
chems = list(NUTRIMENT = list(1,20)) chems = list(NUTRIMENT = list(1,20))
molecule_type = list(GLUCOSE)
lifespan = 55 lifespan = 55
maturation = 6 maturation = 6
@@ -1499,6 +1530,7 @@
harvest_repeat = 1 harvest_repeat = 1
mutants = list("silicatecitrus") mutants = list("silicatecitrus")
chems = list(NUTRIMENT = list(1,20)) chems = list(NUTRIMENT = list(1,20))
molecule_type = list(GLUCOSE)
lifespan = 60 lifespan = 60
maturation = 6 maturation = 6
@@ -1517,6 +1549,7 @@
harvest_repeat = 1 harvest_repeat = 1
mutants = list("shardlime") mutants = list("shardlime")
chems = list(SILICATE = list(3,5)) chems = list(SILICATE = list(3,5))
molecule_type = list(XENOPHYLL)
lifespan = 55 lifespan = 55
maturation = 6 maturation = 6
@@ -1531,6 +1564,7 @@
products = list(/obj/item/weapon/shard) products = list(/obj/item/weapon/shard)
mutants = list("purpleshardlime") mutants = list("purpleshardlime")
harvest_repeat = 1 harvest_repeat = 1
molecule_type = list(XENOPHYLL)
lifespan = 70 lifespan = 70
maturation = 4 maturation = 4
@@ -1548,6 +1582,7 @@
products = list(/obj/item/weapon/shard/plasma) products = list(/obj/item/weapon/shard/plasma)
harvest_repeat = 1 harvest_repeat = 1
mutants = null mutants = null
molecule_type = list(XENOPHYLL)
lifespan = 70 lifespan = 70
maturation = 4 maturation = 4
@@ -1564,6 +1599,7 @@
plant_dmi = 'icons/obj/hydroponics/grass.dmi' plant_dmi = 'icons/obj/hydroponics/grass.dmi'
products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/grass) products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/grass)
harvest_repeat = 1 harvest_repeat = 1
molecule_type = list(CELLULOSE)
lifespan = 60 lifespan = 60
maturation = 2 maturation = 2
@@ -1581,6 +1617,7 @@
products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/cocoapod) products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/cocoapod)
harvest_repeat = 1 harvest_repeat = 1
chems = list(NUTRIMENT = list(1,10), COCO = list(4,5)) chems = list(NUTRIMENT = list(1,10), COCO = list(4,5))
molecule_type = list(GLUCOSE)
lifespan = 20 lifespan = 20
maturation = 5 maturation = 5
@@ -1601,6 +1638,7 @@
products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/cherries) products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/cherries)
harvest_repeat = 1 harvest_repeat = 1
chems = list(NUTRIMENT = list(1,15)) chems = list(NUTRIMENT = list(1,15))
molecule_type = list(GLUCOSE)
lifespan = 35 lifespan = 35
maturation = 5 maturation = 5
@@ -1618,6 +1656,7 @@
plant_dmi = 'icons/obj/hydroponics/cinnamomum.dmi' plant_dmi = 'icons/obj/hydroponics/cinnamomum.dmi'
products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/cinnamon) products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/cinnamon)
chems = list(CINNAMON = list(4,3)) chems = list(CINNAMON = list(4,3))
molecule_type = list(CELLULOSE)
lifespan = 80 lifespan = 80
maturation = 15 maturation = 15
@@ -1636,6 +1675,7 @@
plant_dmi = 'icons/obj/hydroponics/kudzu.dmi' plant_dmi = 'icons/obj/hydroponics/kudzu.dmi'
products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/kudzupod) products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/kudzupod)
chems = list(NUTRIMENT = list(1,50), ALLICIN = list(2,10)) chems = list(NUTRIMENT = list(1,50), ALLICIN = list(2,10))
molecule_type = list(CELLULOSE)
lifespan = 20 lifespan = 20
maturation = 6 maturation = 6
@@ -1657,6 +1697,7 @@
product_requires_player = 1 product_requires_player = 1
product_kill_inactive = FALSE product_kill_inactive = FALSE
immutable = 1 immutable = 1
molecule_type = list(CELLULOSE)
lifespan = 50 lifespan = 50
endurance = 35 endurance = 35
@@ -1673,6 +1714,7 @@
plant_dmi = 'icons/obj/hydroponics/replicapod.dmi' plant_dmi = 'icons/obj/hydroponics/replicapod.dmi'
products = list(/mob/living/simple_animal/hostile/retaliate/clown) products = list(/mob/living/simple_animal/hostile/retaliate/clown)
product_requires_player = 1 product_requires_player = 1
molecule_type = list(XENOPHYLL)
lifespan = 100 lifespan = 100
endurance = 8 endurance = 8
@@ -1692,6 +1734,7 @@
product_requires_player = TRUE product_requires_player = TRUE
product_kill_inactive = FALSE product_kill_inactive = FALSE
immutable = TRUE immutable = TRUE
molecule_type = list(XENOPHYLL)
lifespan = 50 lifespan = 50
endurance = 35 endurance = 35
@@ -1709,6 +1752,7 @@
products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/nofruit) products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/nofruit)
chems = list(NOTHING = list(1,20)) chems = list(NOTHING = list(1,20))
immutable = 1 immutable = 1
molecule_type = list(XENOPHYLL)
lifespan = 30 lifespan = 30
maturation = 5 maturation = 5
@@ -1727,6 +1771,7 @@
products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/avocado) products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/avocado)
harvest_repeat = 1 harvest_repeat = 1
chems = list(NUTRIMENT = list(1,20)) chems = list(NUTRIMENT = list(1,20))
molecule_type = list(GLUCOSE)
lifespan = 55 lifespan = 55
maturation = 6 maturation = 6
@@ -1746,6 +1791,7 @@
mutants = list("silverpear") mutants = list("silverpear")
harvest_repeat = 1 harvest_repeat = 1
chems = list(NUTRIMENT = list(1,10)) chems = list(NUTRIMENT = list(1,10))
molecule_type = list(GLUCOSE)
lifespan = 55 lifespan = 55
maturation = 6 maturation = 6
@@ -1793,6 +1839,7 @@
plant_dmi = 'icons/obj/hydroponics/woodapple.dmi' plant_dmi = 'icons/obj/hydroponics/woodapple.dmi'
products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/woodapple) products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/woodapple)
chems = list(SUGAR = list(1,10)) chems = list(SUGAR = list(1,10))
molecule_type = list(CELLULOSE)
growth_stages = 3 growth_stages = 3
maturation = 4 maturation = 4
@@ -1808,6 +1855,7 @@
products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/breadfruit) products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/breadfruit)
harvest_repeat = 1 harvest_repeat = 1
chems = list(FLOUR = list(2,10)) chems = list(FLOUR = list(2,10))
molecule_type = list(STARCH)
potency = 30 potency = 30
lifespan = 50 lifespan = 50
@@ -1826,6 +1874,7 @@
plant_dmi = 'icons/obj/hydroponics/garlic.dmi' plant_dmi = 'icons/obj/hydroponics/garlic.dmi'
products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/garlic) products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/garlic)
chems = list(HOLYWATER = list(1,25),NUTRIMENT = list(1,10), ALLICIN = list(5,10)) chems = list(HOLYWATER = list(1,25),NUTRIMENT = list(1,10), ALLICIN = list(5,10))
molecule_type = list(CELLULOSE)
potency = 15 potency = 15
lifespan = 200 lifespan = 200
@@ -1843,6 +1892,7 @@
plant_dmi = 'icons/obj/hydroponics/pitcher.dmi' plant_dmi = 'icons/obj/hydroponics/pitcher.dmi'
products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/pitcher) products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/pitcher)
chems = list(FORMIC_ACID = list(1,25)) chems = list(FORMIC_ACID = list(1,25))
molecule_type = list(CELLULOSE)
potency = 10 potency = 10
lifespan = 50 lifespan = 50
@@ -1864,6 +1914,7 @@
plant_dmi = 'icons/obj/hydroponics/aloe.dmi' plant_dmi = 'icons/obj/hydroponics/aloe.dmi'
products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/aloe) products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/aloe)
chems = list(KATHALAI = list(1,10)) //Not as good as poppy's opium for speedy heals, but general purpose. chems = list(KATHALAI = list(1,10)) //Not as good as poppy's opium for speedy heals, but general purpose.
molecule_type = list(GLUCOSE)
lifespan = 30 lifespan = 30
maturation = 6 maturation = 6
@@ -1881,6 +1932,7 @@
plant_dmi = 'icons/obj/hydroponics/vaporsac.dmi' plant_dmi = 'icons/obj/hydroponics/vaporsac.dmi'
products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/vaporsac) products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/vaporsac)
chems = list(VAPORSALT = list(1,2)) chems = list(VAPORSALT = list(1,2))
molecule_type = list(GLUCOSE)
lifespan = 50 lifespan = 50
maturation = 6 maturation = 6
@@ -1897,6 +1949,7 @@
plant_icon_state = "clover" plant_icon_state = "clover"
products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/clover) products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/clover)
chems = list(NUTRIMENT = list(1,25)) chems = list(NUTRIMENT = list(1,25))
molecule_type = list(CELLULOSE)
harvest_repeat = 1 harvest_repeat = 1
lifespan = 60 lifespan = 60
maturation = 2 maturation = 2

View File

@@ -271,7 +271,7 @@
H.zombify(user) H.zombify(user)
else else
success = FALSE success = FALSE
else if(istype(target, /mob/living/simple_animal/hostile/necro/zombie/)) else if(istype(target, /mob/living/simple_animal/hostile/necro/zombie/))
success = TRUE success = TRUE
var/mob/living/simple_animal/S = target var/mob/living/simple_animal/S = target
@@ -443,7 +443,7 @@
modifystate = "floramut" modifystate = "floramut"
var/charge_tick = 0 var/charge_tick = 0
var/mode = 1 var/mode = 1
var/list/genes = list(GENE_PHYTOCHEMISTRY, GENE_MORPHOLOGY, GENE_BIOLUMINESCENCE, GENE_ECOLOGY, GENE_ECOPHYSIOLOGY, GENE_METABOLISM, GENE_DEVELOPMENT, GENE_XENOPHYSIOLOGY) var/list/genes = list(GENE_PHYTOCHEMISTRY, GENE_BIOMOLECULES, GENE_MORPHOLOGY, GENE_BIOLUMINESCENCE, GENE_ECOLOGY, GENE_ECOPHYSIOLOGY, GENE_METABOLISM, GENE_DEVELOPMENT, GENE_XENOPHYSIOLOGY)
var/emagged = FALSE var/emagged = FALSE
var/isSomatoraying = FALSE var/isSomatoraying = FALSE
@@ -552,7 +552,7 @@
playsound(user,'sound/effects/stealthoff.ogg', 50) playsound(user,'sound/effects/stealthoff.ogg', 50)
if((H.species.flags & IS_PLANT) && (H.nutrition < 500)) if((H.species.flags & IS_PLANT) && (H.nutrition < 500))
H.nutrition += 30 H.nutrition += 30
else else
H.show_message("<span class='notice'>The radiation beam dissipates harmlessly through your body.</span>") H.show_message("<span class='notice'>The radiation beam dissipates harmlessly through your body.</span>")
isSomatoraying = FALSE isSomatoraying = FALSE