diff --git a/__DEFINES/hydroponics.dm b/__DEFINES/hydroponics.dm index a24db7dba06..76e46f74b9f 100644 --- a/__DEFINES/hydroponics.dm +++ b/__DEFINES/hydroponics.dm @@ -9,6 +9,7 @@ // Definitions for genes (trait groupings) #define GENE_PHYTOCHEMISTRY "phytochemistry" +#define GENE_BIOMOLECULES "biomolecules" #define GENE_MORPHOLOGY "morphology" #define GENE_BIOLUMINESCENCE "bioluminescence" #define GENE_ECOLOGY "ecology" @@ -27,7 +28,10 @@ //Xenobotany mutations //Phytochemistry #define PLANT_CHEMICAL (1<<0) -#define PLANT_POTENCY (1<<1) +#define PLANT_POTENCY (1<<1) + +//Biomolecules +#define PLANT_MOLECULE (1<<0) //Morphology #define PLANT_PRODUCTS (1<<0) @@ -72,4 +76,4 @@ #define PLANT_TELEPORT (1<<0) #define PLANT_ROOMTEMP (1<<1) #define PLANT_GAS (1<<2) -#define PLANT_NOREACT (1<<3) //unique to xeno plants, unused \ No newline at end of file +#define PLANT_NOREACT (1<<3) //unique to xeno plants, unused diff --git a/__DEFINES/reagents.dm b/__DEFINES/reagents.dm index acf339acab5..e6dcc0b776c 100644 --- a/__DEFINES/reagents.dm +++ b/__DEFINES/reagents.dm @@ -571,3 +571,10 @@ var/list/cheartstopper = list(/*"potassium_chloride",*/ CHEESYGLOOP) //this stop #define INCENSE_CRAVE "vales" #define INCENSE_CORNOIL "cornoils" #define INCENSE_MUSTARDPLANT "mustardplant" + +#define GLUCOSE "Glucose" +#define CELLULOSE "Cellulose" +#define PROTEIN "Protein" +#define STARCH "Starch" +#define CHITIN "Chitin" +#define XENOPHYLL "Xenophyll" diff --git a/code/game/machinery/biogenerator.dm b/code/game/machinery/biogenerator.dm index 85c808afaa3..95dcaad4169 100644 --- a/code/game/machinery/biogenerator.dm +++ b/code/game/machinery/biogenerator.dm @@ -1,6 +1,6 @@ /datum/biogen_recipe var/id="" - var/cost=0 + var/cost=list() var/category="" var/name="" var/amount_per_unit=1 @@ -9,7 +9,12 @@ var/result=null /datum/biogen_recipe/proc/Render(var/context) - var/html = "
  • [name][(amount_per_unit > 1) ? " [amount_per_unit] units" : ""] ([cost])" + var/html = "
  • [name][(amount_per_unit > 1) ? " [amount_per_unit] units" : ""] (" + var/cost_list = list() + for(var/molecule in cost) + cost_list += "[cost[molecule]] [molecule]" + html += jointext(cost_list, ", ") + html += ")" if(other_amounts.len) var/first=1 html += " (" @@ -29,35 +34,35 @@ id=MILK name=MILK reagent=MILK - cost=20 + cost=list(GLUCOSE = 20) amount_per_unit=10 other_amounts=list(5) /datum/biogen_recipe/food/cheese id="cheese" 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) result=/obj/item/weapon/reagent_containers/food/snacks/sliceable/cheesewheel /datum/biogen_recipe/food/butter id="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) result=/obj/item/weapon/reagent_containers/food/snacks/butter /datum/biogen_recipe/food/meat id="meat" name="Slab of meat" - cost=50 + cost=list(PROTEIN = 50) other_amounts=list(5) result=/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh /datum/biogen_recipe/food/monkeycube id="monkeycube" name="Monkey cube" - cost=250 + cost=list(PROTEIN = 250) other_amounts=list(5) result=/obj/item/weapon/reagent_containers/food/snacks/monkeycube @@ -68,7 +73,7 @@ id="ez" name="E-Z-Nutrient" reagent=EZNUTRIENT - cost=10 + cost=list(STARCH = 5, GLUCOSE = 5) amount_per_unit=10 other_amounts=list(5) @@ -76,7 +81,7 @@ id="l4z" name="Left 4 Zed" reagent=LEFT4ZED - cost=20 + cost=list(CHITIN = 10, GLUCOSE = 10) amount_per_unit=10 other_amounts=list(5) @@ -84,12 +89,12 @@ id="rh" name="Robust Harvest" reagent=ROBUSTHARVEST - cost=25 + cost=list(PROTEIN = 15, GLUCOSE = 10) amount_per_unit=10 other_amounts=list(5) /datum/biogen_recipe/nutrient/beez - cost=40 + cost=list(PROTEIN = 10, GLUCOSE = 30) id="beez" name="Bottle of BeezEez" other_amounts=list(5) @@ -99,133 +104,134 @@ category="Leather" /datum/biogen_recipe/leather/bee_net - cost = 100 + cost=list(STARCH = 30, CELLULOSE = 70) id="bee_net" name = "Bee Net" result=/obj/item/weapon/bee_net /datum/biogen_recipe/leather/wallet - cost=100 + cost=list(CELLULOSE = 100) id="wallet" name="Wallet" result=/obj/item/weapon/storage/wallet /datum/biogen_recipe/leather/gloves - cost=250 + cost=list(CELLULOSE = 200, CHITIN = 50) id="gloves" name="Botanical Gloves" result=/obj/item/clothing/gloves/botanic_leather /datum/biogen_recipe/leather/knifeholster - cost=250 + cost=list(CELLULOSE = 150, CHITIN = 100) id="knifeholster" name="Boot Knife Holster" result=/obj/item/clothing/accessory/holster/knife/boot /datum/biogen_recipe/leather/ammo_pouch - cost = 250 + cost=list(CELLULOSE = 100, CHITIN = 150) id="ammopouch" name = "Ammo Pouch" result=/obj/item/weapon/storage/bag/ammo_pouch /datum/biogen_recipe/leather/moneybag - cost=300 + cost=list(CELLULOSE = 300) id="moneybag" name="Money Bag" result=/obj/item/weapon/storage/bag/money /datum/biogen_recipe/leather/belt/slim - cost=300 + cost=list(CELLULOSE = 100, CHITIN = 100, STARCH = 100) id="slim-belt" name="Slim Belt" result=/obj/item/weapon/storage/belt/slim /datum/biogen_recipe/leather/belt - cost=300 + cost=list(CELLULOSE = 200, STARCH = 100) id="belt" name="Tool-belt" result=/obj/item/weapon/storage/belt/utility +//TODO /datum/biogen_recipe/leather/bandolier - cost = 300 + cost=list(CELLULOSE = 100, STARCH = 100, GLUCOSE = 100) id="bandolier" name = "Bandolier" result=/obj/item/clothing/accessory/storage/bandolier /datum/biogen_recipe/leather/handgunholster - cost=350 + cost=list(CELLULOSE = 150, STARCH = 150, GLUCOSE = 50) id="handgunholster" name="Handgun Holster" result=/obj/item/clothing/accessory/holster/handgun/biogenerator /datum/biogen_recipe/leather/fannypack - cost=100 + cost=list(CELLULOSE = 75, CHITIN = 25) id="fannypack" name="Fanny Pack" result=/obj/item/clothing/accessory/storage/fannypack /datum/biogen_recipe/leather/ore - cost=350 + cost=list(CELLULOSE = 100, PROTEIN = 250) id="ore" name="Mining Satchel" result=/obj/item/weapon/storage/bag/ore /datum/biogen_recipe/leather/gadget - cost=350 + cost=list(CELLULOSE = 100, CHITIN = 250) id="gadget" name="Gadget Bag" result=/obj/item/weapon/storage/bag/gadgets /datum/biogen_recipe/leather/slime - cost=350 + cost=list(STARCH = 100, CHITIN = 250) id="slime" name="Slime Bag" result=/obj/item/weapon/storage/bag/xenobio /datum/biogen_recipe/leather/plants - cost=350 + cost=list(CELLULOSE = 200, STARCH = 150) id="plants" name="Plant Bag" result=/obj/item/weapon/storage/bag/plants /datum/biogen_recipe/leather/materials - cost=500 + cost=list(CELLULOSE = 100, STARCH = 100, GLUCOSE = 100, CHITIN = 100, PROTEIN = 100) id="materials" name="Materials Bag" result=/obj/item/weapon/storage/bag/materials /datum/biogen_recipe/leather/secbelt - cost=400 + cost=list(PROTEIN = 400) id="secbelt" name="Security Belt" result=/obj/item/weapon/storage/belt/security /datum/biogen_recipe/leather/minebelt - cost=350 + cost=list(CELLULOSE = 200, PROTEIN = 150) id="minebelt" name="Mining Gear Belt" result=/obj/item/weapon/storage/belt/mining /datum/biogen_recipe/leather/janibelt - cost=350 + cost=list(CELLULOSE = 200, STARCH = 100, GLUCOSE=50) id="janibelt" name="Janibelt" result=/obj/item/weapon/storage/belt/janitor /datum/biogen_recipe/leather/hydrobelt - cost=350 + cost=list(CELLULOSE = 100, STARCH = 100, GLUCOSE = 100, CHITIN = 50) id="hydrobelt" name="Botany Gear Belt" result=/obj/item/weapon/storage/belt/botanist /datum/biogen_recipe/leather/briefcase - cost=400 + cost=list(CELLULOSE = 200, STARCH = 200) id="briefcase" name="Leather Briefcase" result=/obj/item/weapon/storage/briefcase/biogen /datum/biogen_recipe/leather/satchel - cost=400 + cost=list(CELLULOSE = 200, STARCH = 200) id="satchel" name="Leather Satchel" result=/obj/item/weapon/storage/backpack/satchel @@ -234,41 +240,41 @@ category="Paper" /datum/biogen_recipe/paper/papersheet - cost=15 + cost=list(CELLULOSE = 15) id="papersheet" name="Paper Sheet" other_amounts=list(5,10) result=/obj/item/weapon/paper /datum/biogen_recipe/paper/cardboard - cost=25 + cost=list(CELLULOSE = 15, STARCH = 10) id="cardboard" name="Cardboard Sheet" other_amounts=list(5,10,50) result=/obj/item/stack/sheet/cardboard /datum/biogen_recipe/paper/giftwrap - cost=25 + cost=list(CELLULOSE = 5, STARCH = 20) id="giftwrap" name="Gift Wrap" amount_per_unit = 24 result=/obj/item/stack/package_wrap/gift /datum/biogen_recipe/paper/packagewrap - cost=30 + cost=list(CELLULOSE = 5, STARCH = 20) id="packagewrap" name="Package Wrap" amount_per_unit = 24 result=/obj/item/stack/package_wrap /datum/biogen_recipe/paper/clipboard - cost=75 + cost=list(CELLULOSE = 75) id="clipboard" name="Clipboard" result=/obj/item/weapon/storage/bag/clipboard /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" name="Paper Bin (30 sheets)" result=/obj/item/weapon/paper_bin @@ -279,7 +285,7 @@ /datum/biogen_recipe/misc/insecticide id = "insecticide" name = "Insecticide" - cost=35 + cost=list(PROTEIN = 10, STARCH = 10, CHITIN = 15) reagent=INSECTICIDE amount_per_unit=10 other_amounts=list(5) @@ -288,32 +294,32 @@ id="plantbgone" name="Plant-B-Gone" reagent=PLANTBGONE - cost=35 + cost=list(CHITIN = 30, CELLULOSE = 5) amount_per_unit=10 other_amounts=list(5) /datum/biogen_recipe/misc/candle - cost=50 + cost=list(STARCH = 40, GLUCOSE = 10) id="candle" name="Red Candle" other_amounts=list(5) result=/obj/item/candle /datum/biogen_recipe/misc/charcoal - cost=100 + cost=list(CELLULOSE = 100) id="charcoal" name="Charcoal Sheet" other_amounts=list(5,10) result=/obj/item/stack/sheet/charcoal /datum/biogen_recipe/misc/soap - cost=250 + cost=list(GLUCOSE = 150, STARCH = 100) id="soap" name="Bar of Soap" result=/obj/item/weapon/soap/nanotrasen /datum/biogen_recipe/misc/crayons - cost=400 + cost=list(CELLULOSE = 200, STARCH = 200) id="crayons" name="Box of Crayons" result=/obj/item/weapon/storage/fancy/crayons @@ -321,39 +327,39 @@ /datum/biogen_recipe/misc/rice_hat name = "Rice Hat" id = "rice_hat" - cost = 300 + cost=list(STARCH = 300) result = /obj/item/clothing/head/rice_hat /datum/biogen_recipe/misc/roningasa name = "Wickerwork Hat" id = "wickerwork_hat" - cost = 300 + cost=list(CELLULOSE = 300) result = /obj/item/clothing/head/rice_hat/ronin /datum/biogen_recipe/misc/mino name = "Grass Coat" id = "grass_coat" - cost = 500 + cost=list(CELLULOSE = 300) result = /obj/item/clothing/suit/mino /datum/biogen_recipe/misc/rvest name = "Reticulated Vest" id = "rvest" - cost = 500 + cost=list(CELLULOSE = 200, STARCH = 300) result = /obj/item/clothing/suit/reticulatedvest /datum/biogen_recipe/flooring category="Flooring" /datum/biogen_recipe/flooring/carpet - cost=10 + cost=list(CELLULOSE = 5, STARCH = 5) id="carpet" name="Piece of Carpet" other_amounts=list(5,10,20) result=/obj/item/stack/tile/carpet /datum/biogen_recipe/flooring/arcade - cost=10 + cost=list(CELLULOSE = 5, STARCH = 5) id="arcadecarpet" name="Piece of Arcade Carpet" other_amounts=list(5,10,20) @@ -372,7 +378,7 @@ var/biomass_coefficient = 9 var/tmp/processing = 0 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/tmp/list/recipes[0] var/tmp/list/recipe_categories[0] @@ -562,7 +568,9 @@ if (processing) dat += "Biogenerator is processing! Please wait..." else - dat += "Biomass: [points] points.
    " + for (var/nutrient in points) + if (points[nutrient] > 0) + dat += "[nutrient]: [points[nutrient]] points.
    " switch(menustat) if("menu") if (beaker) @@ -613,10 +621,8 @@ var/S = 0 for(var/obj/item/weapon/reagent_containers/food/snacks/grown/I in contents) S += 5 - if(I.reagents.get_reagent_amount(NUTRIMENT) < 0.1) - points += 1 - else - points += I.reagents.get_reagent_amount(NUTRIMENT)*biomass_coefficient + for (var/molecule in I.seed.molecule_type) + points[molecule] += round((min(I.seed.potency, 200)*biomass_coefficient) / I.seed.molecule_type.len) qdel(I) if(S) processing = 1 @@ -631,15 +637,16 @@ menustat = "void" /obj/machinery/biogenerator/proc/check_cost(var/cost) - if (cost > points) - menustat = "nopoints" - return 1 - else - points -= cost - processing = 1 - update_icon() - updateUsrDialog() - sleep(30) + for (var/nutrient in cost) + if (cost[nutrient] > points[nutrient]) + menustat = "nopoints" + return 1 + for (var/nutrient in cost) + points[nutrient] -= cost[nutrient] + processing = 1 + update_icon() + updateUsrDialog() + sleep(30) /obj/machinery/biogenerator/proc/create_product(var/item, var/num) var/datum/biogen_recipe/recipe=recipes[item] @@ -649,7 +656,11 @@ if(!(num in (recipe.other_amounts + 1))) 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 if(recipe.reagent) diff --git a/code/modules/hydroponics/hydro_tools.dm b/code/modules/hydroponics/hydro_tools.dm index 7b1cfd7161e..a76d4499d8e 100644 --- a/code/modules/hydroponics/hydro_tools.dm +++ b/code/modules/hydroponics/hydro_tools.dm @@ -77,6 +77,7 @@ dat += "Maturation time[round(grown_seed.maturation, 0.01)]" dat += "Production time[round(grown_seed.production, 0.01)]" dat += "Potency[round(grown_seed.potency, 0.01)]" + dat += "Primary Molecules[jointext(grown_seed.molecule_type, ", ")]" dat += "" if(grown_reagents && grown_reagents.reagent_list && grown_reagents.reagent_list.len) diff --git a/code/modules/hydroponics/hydroponics_mutations.dm b/code/modules/hydroponics/hydroponics_mutations.dm index 789361a53e1..af11966f6ed 100644 --- a/code/modules/hydroponics/hydroponics_mutations.dm +++ b/code/modules/hydroponics/hydroponics_mutations.dm @@ -16,7 +16,7 @@ if(age < 3 && length(seed.mutants) && gene) mutate_species() 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() //The scaling functions modify stats with diminishing returns, approaching the hardcap value @@ -45,6 +45,15 @@ if(check_success) visible_message("\The [seed.display_name] develops a strange-looking gland.") + if(GENE_BIOMOLECULES) + var/new_molecule = pick(STARCH, CHITIN, PROTEIN, GLUCOSE, CELLULOSE, XENOPHYLL) + if (new_molecule in seed.molecule_type) + visible_message("\The [seed.display_name] has its phloem shrivel up.") + seed.molecule_type -= new_molecule + else + visible_message("\The [seed.display_name] seems to have a new substance filling its phloem.") + seed.molecule_type += new_molecule + if(GENE_MORPHOLOGY) var/mutation_type = pick(PLANT_PRODUCTS, PLANT_THORNY, PLANT_JUICY, PLANT_LIGNEOUS, PLANT_STINGING, PLANT_APPEARANCE) switch(mutation_type) @@ -58,7 +67,7 @@ else visible_message("\The [seed.display_name] sheds its thorns away...") 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 generic_mutation_message("wobbles!") if(PLANT_LIGNEOUS) @@ -111,7 +120,7 @@ //lower better var/hardcap = 0.1 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 var/hardcap = 500 var/max_change = 0.15 //percent diff --git a/code/modules/hydroponics/prehistoric_plants.dm b/code/modules/hydroponics/prehistoric_plants.dm index 4f8a5168fc3..8f7654a2230 100644 --- a/code/modules/hydroponics/prehistoric_plants.dm +++ b/code/modules/hydroponics/prehistoric_plants.dm @@ -9,6 +9,7 @@ mutants = null harvest_repeat = 1 chems = list(DIETHYLAMINE = list(0,10)) + molecule_type = list(XENOPHYLL) lifespan = 60 maturation = 6 @@ -36,6 +37,7 @@ mutants = null harvest_repeat = 1 chems = list(FROSTOIL = list(5,30)) + molecule_type = list(XENOPHYLL) lifespan = 50 maturation = 3 @@ -64,7 +66,7 @@ products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/jurlmah) mutants = null chems = list(CLONEXADONE = list(1,10)) - + molecule_type = list(XENOPHYLL) lifespan = 25 maturation = 6 production = 1 @@ -95,6 +97,7 @@ mutants = null noreact = 1 chems = list(POTASSIUM = list(0,10),SUGAR = list(0,10),PHOSPHORUS = list(0,10)) + molecule_type = list(XENOPHYLL) lifespan = 25 maturation = 10 @@ -127,6 +130,7 @@ mutants = null harvest_repeat = 2 chems = list(NUTRIMENT = list(1,10)) + molecule_type = list(XENOPHYLL) lifespan = 55 maturation = 6 @@ -157,6 +161,7 @@ mutants = null harvest_repeat = 1 chems = list(NUTRIMENT = list(1,10),SPORTDRINK = list(0,2),THYMOL = list(0,5)) + molecule_type = list(XENOPHYLL) lifespan = 100 maturation = 6 @@ -187,6 +192,7 @@ mutants = null harvest_repeat = 1 chems = list(KARMOTRINE = list(2,2)) + molecule_type = list(XENOPHYLL) lifespan = 55 maturation = 7 diff --git a/code/modules/hydroponics/seed_datums.dm b/code/modules/hydroponics/seed_datums.dm index 8e7247b17a4..786f528a8a9 100644 --- a/code/modules/hydroponics/seed_datums.dm +++ b/code/modules/hydroponics/seed_datums.dm @@ -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/juicy = 0 // 0 = no, 1 = splatters when thrown, 2 = slips 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. 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) 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.values[1]) 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) P.values = list( (chems ? chems : 0), - (potency ? potency : 0), + (potency ? potency : 0) + ) + if(GENE_BIOMOLECULES) + P.values = list( + (molecule_type ? molecule_type : 0) ) if(GENE_MORPHOLOGY) 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.plant_dmi = plant_dmi new_seed.mutation_log = mutation_log + new_seed.molecule_type = molecule_type new_seed.mutation_log += "([timestamp()]) Diverged from seed with uid: [uid]." ASSERT(istype(new_seed)) //something happened... oh no... diff --git a/code/modules/hydroponics/seed_machines.dm b/code/modules/hydroponics/seed_machines.dm index 91da281c556..2cfce134543 100644 --- a/code/modules/hydroponics/seed_machines.dm +++ b/code/modules/hydroponics/seed_machines.dm @@ -191,6 +191,7 @@ var/list/data = list() var/static/list/gene_tag_list = list( list("tag" = GENE_PHYTOCHEMISTRY), + list("tag" = GENE_BIOMOLECULES), list("tag" = GENE_MORPHOLOGY), list("tag" = GENE_BIOLUMINESCENCE), list("tag" = GENE_ECOLOGY), diff --git a/code/modules/hydroponics/seeds.dm b/code/modules/hydroponics/seeds.dm index d0569dd4f4c..11a56ac7ea4 100644 --- a/code/modules/hydroponics/seeds.dm +++ b/code/modules/hydroponics/seeds.dm @@ -520,6 +520,7 @@ chems = list(CAPSAICIN = list(3,5), NUTRIMENT = list(1,25)) mutants = list("icechili", "ghostpepper") harvest_repeat = 1 + molecule_type = list(CELLULOSE) lifespan = 20 maturation = 5 @@ -562,6 +563,7 @@ mutants = list("glowberries","poisonberries") harvest_repeat = 1 chems = list(NUTRIMENT = list(1,10)) + molecule_type = list(GLUCOSE) lifespan = 20 maturation = 5 @@ -621,6 +623,7 @@ mutants = list("deathnettle") harvest_repeat = 1 chems = list(NUTRIMENT = list(1,50), FORMIC_ACID = list(0,1)) + molecule_type = list(CELLULOSE) lifespan = 30 maturation = 6 production = 6 @@ -650,6 +653,7 @@ mutants = list("bluetomato","bloodtomato") harvest_repeat = 1 chems = list(NUTRIMENT = list(1,10)) + molecule_type = list(GLUCOSE) lifespan = 25 maturation = 8 @@ -716,6 +720,7 @@ mutants = list("realeggplant") harvest_repeat = 1 chems = list(NUTRIMENT = list(1,10)) + molecule_type = list(CELLULOSE) lifespan = 25 maturation = 6 @@ -747,6 +752,7 @@ mutants = list("poisonapple","goldapple") harvest_repeat = 1 chems = list(NUTRIMENT = list(1,10)) + molecule_type = list(GLUCOSE) lifespan = 55 maturation = 6 @@ -785,6 +791,7 @@ mutants = list("ambrosiadeus") harvest_repeat = 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 maturation = 6 @@ -828,6 +835,7 @@ products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/chanterelle) mutants = list("reishi","amanita","plumphelmet") chems = list(NUTRIMENT = list(1,25)) + molecule_type = list(CHITIN) lifespan = 35 maturation = 7 @@ -930,6 +938,7 @@ plant_dmi = 'icons/obj/hydroponics/towercap.dmi' mutants = null products = list(/obj/item/weapon/grown/log) + molecule_type = list(CELLULOSE) lifespan = 80 maturation = 15 @@ -990,6 +999,7 @@ plant_dmi = 'icons/obj/hydroponics/harebell.dmi' products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/harebell) chems = list(NUTRIMENT = list(1,20)) + molecule_type = list(CELLULOSE) lifespan = 100 maturation = 7 @@ -1096,6 +1106,7 @@ products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/grapes) harvest_repeat = 1 chems = list(NUTRIMENT = list(1,10), SUGAR = list(1,5)) + molecule_type = list(GLUCOSE) lifespan = 50 maturation = 3 @@ -1126,6 +1137,7 @@ mutants = list("rocknut") harvest_repeat = 1 chems = list(NUTRIMENT = list(1,10)) + molecule_type = list(PROTEIN) lifespan = 55 maturation = 6 @@ -1142,6 +1154,7 @@ products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/rocknut) harvest_repeat = 1 chems = list(NUTRIMENT = list(1,10),IRON = list(3,5)) + molecule_type = list(PROTEIN) lifespan = 70 maturation = 6 @@ -1158,6 +1171,7 @@ mutants = list("plasmacabbage") harvest_repeat = 1 chems = list(NUTRIMENT = list(1,10)) + molecule_type = list(CELLULOSE) lifespan = 50 maturation = 3 @@ -1177,6 +1191,7 @@ products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/plasmacabbage) harvest_repeat = 1 chems = list(NUTRIMENT = list(1,10),PLASMA = list(3,5)) + molecule_type = list(CELLULOSE) lifespan = 30 maturation = 3 @@ -1195,6 +1210,7 @@ plant_dmi = 'icons/obj/hydroponics/shand.dmi' products = list(/obj/item/stack/medical/bruise_pack/tajaran) chems = list(OPIUM = list(0,10)) + molecule_type = list(XENOPHYLL) lifespan = 50 maturation = 3 @@ -1210,6 +1226,7 @@ plant_dmi = 'icons/obj/hydroponics/mtear.dmi' products = list(/obj/item/stack/medical/ointment/tajaran) chems = list(HONEY = list(1,10), TANNIC_ACID = list(3,5)) + molecule_type = list(XENOPHYLL) lifespan = 50 maturation = 3 @@ -1227,6 +1244,7 @@ harvest_repeat = 1 chems = list(BANANA = list(1,10), POTASSIUMCARBONATE = list(0.1,30)) mutants = list("bluespacebanana") + molecule_type = list(GLUCOSE) lifespan = 50 maturation = 6 @@ -1252,6 +1270,7 @@ plant_dmi = 'icons/obj/hydroponics/corn.dmi' products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/corn) chems = list(NUTRIMENT = list(1,10)) + molecule_type = list(CELLULOSE) lifespan = 25 maturation = 8 @@ -1271,6 +1290,7 @@ plant_dmi = 'icons/obj/hydroponics/potato.dmi' products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/potato) chems = list(NUTRIMENT = list(1,10)) + molecule_type = list(STARCH) lifespan = 30 maturation = 10 @@ -1289,6 +1309,7 @@ mutants = list("koibean") harvest_repeat = 1 chems = list(NUTRIMENT = list(1,20)) + molecule_type = list(PROTEIN) lifespan = 25 maturation = 4 @@ -1304,6 +1325,7 @@ products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/koibeans) harvest_repeat = 1 chems = list(NUTRIMENT = list(1,10),CARPOTOXIN = list(1,25)) + molecule_type = list(PROTEIN) lifespan = 25 maturation = 4 @@ -1318,6 +1340,7 @@ plant_dmi = 'icons/obj/hydroponics/wheat.dmi' products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/wheat) chems = list(NUTRIMENT = list(1,25)) + molecule_type = list(STARCH) lifespan = 25 maturation = 6 @@ -1334,6 +1357,7 @@ plant_dmi = 'icons/obj/hydroponics/rice.dmi' products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/ricestalk) chems = list(NUTRIMENT = list(1,25)) + molecule_type = list(STARCH) lifespan = 25 maturation = 6 @@ -1352,6 +1376,7 @@ products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/carrot) mutants = list("diamondcarrot") chems = list(NUTRIMENT = list(1,20), ZEAXANTHIN = list(3,5)) + molecule_type = list(CELLULOSE) lifespan = 25 maturation = 10 @@ -1394,6 +1419,7 @@ plant_dmi = 'icons/obj/hydroponics/whitebeet.dmi' products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/whitebeet) chems = list(NUTRIMENT = list(0,20), SUGAR = list(1,5)) + molecule_type = list(STARCH) lifespan = 60 maturation = 6 @@ -1410,6 +1436,7 @@ products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/sugarcane) harvest_repeat = 1 chems = list(SUGAR = list(4,5)) + molecule_type = list(GLUCOSE) lifespan = 60 maturation = 3 @@ -1427,6 +1454,7 @@ products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/watermelon) harvest_repeat = 1 chems = list(NUTRIMENT = list(1,6)) + molecule_type = list(GLUCOSE) lifespan = 50 maturation = 6 @@ -1445,6 +1473,7 @@ products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/pumpkin) harvest_repeat = 1 chems = list(NUTRIMENT = list(1,6)) + molecule_type = list(STARCH) lifespan = 50 maturation = 6 @@ -1463,6 +1492,7 @@ harvest_repeat = 1 mutants = list("silicatecitrus") chems = list(NUTRIMENT = list(1,20)) + molecule_type = list(GLUCOSE) lifespan = 55 maturation = 6 @@ -1481,6 +1511,7 @@ harvest_repeat = 1 mutants = list("silicatecitrus") chems = list(NUTRIMENT = list(1,20)) + molecule_type = list(GLUCOSE) lifespan = 55 maturation = 6 @@ -1499,6 +1530,7 @@ harvest_repeat = 1 mutants = list("silicatecitrus") chems = list(NUTRIMENT = list(1,20)) + molecule_type = list(GLUCOSE) lifespan = 60 maturation = 6 @@ -1517,6 +1549,7 @@ harvest_repeat = 1 mutants = list("shardlime") chems = list(SILICATE = list(3,5)) + molecule_type = list(XENOPHYLL) lifespan = 55 maturation = 6 @@ -1531,6 +1564,7 @@ products = list(/obj/item/weapon/shard) mutants = list("purpleshardlime") harvest_repeat = 1 + molecule_type = list(XENOPHYLL) lifespan = 70 maturation = 4 @@ -1548,6 +1582,7 @@ products = list(/obj/item/weapon/shard/plasma) harvest_repeat = 1 mutants = null + molecule_type = list(XENOPHYLL) lifespan = 70 maturation = 4 @@ -1564,6 +1599,7 @@ plant_dmi = 'icons/obj/hydroponics/grass.dmi' products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/grass) harvest_repeat = 1 + molecule_type = list(CELLULOSE) lifespan = 60 maturation = 2 @@ -1581,6 +1617,7 @@ products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/cocoapod) harvest_repeat = 1 chems = list(NUTRIMENT = list(1,10), COCO = list(4,5)) + molecule_type = list(GLUCOSE) lifespan = 20 maturation = 5 @@ -1601,6 +1638,7 @@ products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/cherries) harvest_repeat = 1 chems = list(NUTRIMENT = list(1,15)) + molecule_type = list(GLUCOSE) lifespan = 35 maturation = 5 @@ -1618,6 +1656,7 @@ plant_dmi = 'icons/obj/hydroponics/cinnamomum.dmi' products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/cinnamon) chems = list(CINNAMON = list(4,3)) + molecule_type = list(CELLULOSE) lifespan = 80 maturation = 15 @@ -1636,6 +1675,7 @@ plant_dmi = 'icons/obj/hydroponics/kudzu.dmi' products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/kudzupod) chems = list(NUTRIMENT = list(1,50), ALLICIN = list(2,10)) + molecule_type = list(CELLULOSE) lifespan = 20 maturation = 6 @@ -1657,6 +1697,7 @@ product_requires_player = 1 product_kill_inactive = FALSE immutable = 1 + molecule_type = list(CELLULOSE) lifespan = 50 endurance = 35 @@ -1673,6 +1714,7 @@ plant_dmi = 'icons/obj/hydroponics/replicapod.dmi' products = list(/mob/living/simple_animal/hostile/retaliate/clown) product_requires_player = 1 + molecule_type = list(XENOPHYLL) lifespan = 100 endurance = 8 @@ -1692,6 +1734,7 @@ product_requires_player = TRUE product_kill_inactive = FALSE immutable = TRUE + molecule_type = list(XENOPHYLL) lifespan = 50 endurance = 35 @@ -1709,6 +1752,7 @@ products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/nofruit) chems = list(NOTHING = list(1,20)) immutable = 1 + molecule_type = list(XENOPHYLL) lifespan = 30 maturation = 5 @@ -1727,6 +1771,7 @@ products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/avocado) harvest_repeat = 1 chems = list(NUTRIMENT = list(1,20)) + molecule_type = list(GLUCOSE) lifespan = 55 maturation = 6 @@ -1746,6 +1791,7 @@ mutants = list("silverpear") harvest_repeat = 1 chems = list(NUTRIMENT = list(1,10)) + molecule_type = list(GLUCOSE) lifespan = 55 maturation = 6 @@ -1793,6 +1839,7 @@ plant_dmi = 'icons/obj/hydroponics/woodapple.dmi' products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/woodapple) chems = list(SUGAR = list(1,10)) + molecule_type = list(CELLULOSE) growth_stages = 3 maturation = 4 @@ -1808,6 +1855,7 @@ products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/breadfruit) harvest_repeat = 1 chems = list(FLOUR = list(2,10)) + molecule_type = list(STARCH) potency = 30 lifespan = 50 @@ -1826,6 +1874,7 @@ plant_dmi = 'icons/obj/hydroponics/garlic.dmi' 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)) + molecule_type = list(CELLULOSE) potency = 15 lifespan = 200 @@ -1843,6 +1892,7 @@ plant_dmi = 'icons/obj/hydroponics/pitcher.dmi' products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/pitcher) chems = list(FORMIC_ACID = list(1,25)) + molecule_type = list(CELLULOSE) potency = 10 lifespan = 50 @@ -1864,6 +1914,7 @@ plant_dmi = 'icons/obj/hydroponics/aloe.dmi' 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. + molecule_type = list(GLUCOSE) lifespan = 30 maturation = 6 @@ -1881,6 +1932,7 @@ plant_dmi = 'icons/obj/hydroponics/vaporsac.dmi' products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/vaporsac) chems = list(VAPORSALT = list(1,2)) + molecule_type = list(GLUCOSE) lifespan = 50 maturation = 6 @@ -1897,6 +1949,7 @@ plant_icon_state = "clover" products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/clover) chems = list(NUTRIMENT = list(1,25)) + molecule_type = list(CELLULOSE) harvest_repeat = 1 lifespan = 60 maturation = 2 diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index 07fa0d60c39..be3f48825cd 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -271,7 +271,7 @@ H.zombify(user) else success = FALSE - + else if(istype(target, /mob/living/simple_animal/hostile/necro/zombie/)) success = TRUE var/mob/living/simple_animal/S = target @@ -443,7 +443,7 @@ modifystate = "floramut" var/charge_tick = 0 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/isSomatoraying = FALSE @@ -552,7 +552,7 @@ playsound(user,'sound/effects/stealthoff.ogg', 50) if((H.species.flags & IS_PLANT) && (H.nutrition < 500)) H.nutrition += 30 - else + else H.show_message("The radiation beam dissipates harmlessly through your body.") isSomatoraying = FALSE