Merge pull request #1008 from DragonTrance/plant-adding

Modular Chemical Reactions for Hydroponics Trays
This commit is contained in:
QuoteFox
2021-03-02 05:10:21 +00:00
committed by GitHub
6 changed files with 312 additions and 272 deletions

View File

@@ -1,264 +0,0 @@
/obj/machinery/hydroponics/proc/applyFertilizer(datum/reagents/S, mob/user)
// Ambrosia Gaia produces earthsblood.
if(S.has_reagent(/datum/reagent/medicine/earthsblood))
self_sufficiency_progress += S.get_reagent_amount(/datum/reagent/medicine/earthsblood)
if(self_sufficiency_progress >= self_sufficiency_req)
become_self_sufficient()
else if(!self_sustaining)
to_chat(user, "<span class='notice'>[src] warms as it might on a spring day under a genuine Sun.</span>")
// Requires 5 mutagen to possibly change species.// Poor man's mutagen.
if(S.has_reagent(/datum/reagent/toxin/mutagen, 5) || S.has_reagent(/datum/reagent/radium, 10) || S.has_reagent(/datum/reagent/uranium, 10))
switch(rand(100))
if(91 to 100)
adjustHealth(-10)
to_chat(user, "<span class='warning'>The plant shrivels and burns.</span>")
if(81 to 90)
mutatespecie()
if(66 to 80)
hardmutate()
if(41 to 65)
mutate()
if(21 to 41)
to_chat(user, "<span class='notice'>The plants don't seem to react...</span>")
if(11 to 20)
mutateweed()
if(1 to 10)
mutatepest(user)
else
to_chat(user, "<span class='notice'>Nothing happens...</span>")
// 2 or 1 units is enough to change the yield and other stats.// Can change the yield and other stats, but requires more than mutagen
else if(S.has_reagent(/datum/reagent/toxin/mutagen, 2) || S.has_reagent(/datum/reagent/radium, 5) || S.has_reagent(/datum/reagent/uranium, 5))
hardmutate()
else if(S.has_reagent(/datum/reagent/toxin/mutagen, 1) || S.has_reagent(/datum/reagent/radium, 2) || S.has_reagent(/datum/reagent/uranium, 2))
mutate()
// Nutriments
if(S.has_reagent(/datum/reagent/plantnutriment/eznutriment, 1))
yieldmod = 1
mutmod = 1
adjustNutri(round(S.get_reagent_amount(/datum/reagent/plantnutriment/eznutriment) * 1))
if(S.has_reagent(/datum/reagent/plantnutriment/left4zednutriment, 1))
yieldmod = 0
mutmod = 2
adjustNutri(round(S.get_reagent_amount(/datum/reagent/plantnutriment/left4zednutriment) * 1))
if(S.has_reagent(/datum/reagent/plantnutriment/robustharvestnutriment, 1))
yieldmod = 1.3
mutmod = 0
adjustNutri(round(S.get_reagent_amount(/datum/reagent/plantnutriment/robustharvestnutriment) * 1))
/obj/machinery/hydroponics/proc/applyChemicals(datum/reagents/S, mob/user)
if(!myseed)
return
myseed.on_chem_reaction(S) //In case seeds have some special interactions with special chems, currently only used by vines
// After handling the mutating, we now handle the damage from adding crude radioactives...
if(S.has_reagent(/datum/reagent/uranium, 1))
adjustHealth(-round(S.get_reagent_amount(/datum/reagent/uranium) * 1))
adjustToxic(round(S.get_reagent_amount(/datum/reagent/uranium) * 2))
if(S.has_reagent(/datum/reagent/radium, 1))
adjustHealth(-round(S.get_reagent_amount(/datum/reagent/radium) * 1))
adjustToxic(round(S.get_reagent_amount(/datum/reagent/radium) * 3)) // Radium is harsher (OOC: also easier to produce)
if(S.has_reagent(/datum/reagent/plantnutriment/endurogrow, 1))
var/total_transferred = S.get_reagent_amount(/datum/reagent/plantnutriment/endurogrow)
if(total_transferred >= 20)
myseed.adjust_potency(-round(total_transferred / 10))
myseed.adjust_yield(-round(total_transferred / 20))
myseed.adjust_endurance(round(total_transferred / 60))
else
to_chat(user, "<span class='notice'>The plants don't seem to react...</span>")
if(S.has_reagent(/datum/reagent/plantnutriment/liquidearthquake, 1))
var/total_transferred = S.get_reagent_amount(/datum/reagent/plantnutriment/liquidearthquake)
if(total_transferred >= 20)
myseed.adjust_weed_chance(round(total_transferred / 10))
myseed.adjust_weed_rate(round(total_transferred / 60))
myseed.adjust_production(round(total_transferred / 60))
else
to_chat(user, "<span class='notice'>The plants don't seem to react...</span>")
// Antitoxin binds shit pretty well. So the tox goes significantly down
if(S.has_reagent(/datum/reagent/medicine/charcoal, 1))
adjustToxic(-round(S.get_reagent_amount(/datum/reagent/medicine/charcoal) * 2))
// Toxins, not good for anything
if(S.has_reagent(/datum/reagent/toxin, 1))
adjustToxic(round(S.get_reagent_amount(/datum/reagent/toxin) * 2))
// Milk is good for humans, but bad for plants. The sugars canot be used by plants, and the milk fat fucks up growth. Not shrooms though. I can't deal with this now...
if(S.has_reagent(/datum/reagent/consumable/milk, 1))
adjustNutri(round(S.get_reagent_amount(/datum/reagent/consumable/milk) * 0.1))
adjustWater(round(S.get_reagent_amount(/datum/reagent/consumable/milk) * 0.9))
// Beer is a chemical composition of alcohol and various other things. It's a shitty nutrient but hey, it's still one. Also alcohol is bad, mmmkay?
if(S.has_reagent(/datum/reagent/consumable/ethanol/beer, 1))
adjustHealth(-round(S.get_reagent_amount(/datum/reagent/consumable/ethanol/beer) * 0.05))
adjustNutri(round(S.get_reagent_amount(/datum/reagent/consumable/ethanol/beer) * 0.25))
adjustWater(round(S.get_reagent_amount(/datum/reagent/consumable/ethanol/beer) * 0.7))
// Fluorine one of the most corrosive and deadly gasses
if(S.has_reagent(/datum/reagent/fluorine, 1))
adjustHealth(-round(S.get_reagent_amount(/datum/reagent/fluorine) * 2))
adjustToxic(round(S.get_reagent_amount(/datum/reagent/fluorine) * 2.5))
adjustWater(-round(S.get_reagent_amount(/datum/reagent/fluorine) * 0.5))
adjustWeeds(-rand(1,4))
// Chlorine one of the most corrosive and deadly gasses
if(S.has_reagent(/datum/reagent/chlorine, 1))
adjustHealth(-round(S.get_reagent_amount(/datum/reagent/chlorine) * 1))
adjustToxic(round(S.get_reagent_amount(/datum/reagent/chlorine) * 1.5))
adjustWater(-round(S.get_reagent_amount(/datum/reagent/chlorine) * 0.5))
adjustWeeds(-rand(1,3))
// White Phosphorous + water -> phosphoric acid. That's not a good thing really.
// Phosphoric salts are beneficial though. And even if the plant suffers, in the long run the tray gets some nutrients. The benefit isn't worth that much.
if(S.has_reagent(/datum/reagent/phosphorus, 1))
adjustHealth(-round(S.get_reagent_amount(/datum/reagent/phosphorus) * 0.75))
adjustNutri(round(S.get_reagent_amount(/datum/reagent/phosphorus) * 0.1))
adjustWater(-round(S.get_reagent_amount(/datum/reagent/phosphorus) * 0.5))
adjustWeeds(-rand(1,2))
// Plants should not have sugar, they can't use it and it prevents them getting water/nutients, it is good for mold though...
if(S.has_reagent(/datum/reagent/consumable/sugar, 1))
adjustWeeds(rand(1,2))
adjustPests(rand(1,2))
adjustNutri(round(S.get_reagent_amount(/datum/reagent/consumable/sugar) * 0.1))
// It is water!
if(S.has_reagent(/datum/reagent/water, 1))
adjustWater(round(S.get_reagent_amount(/datum/reagent/water) * 1))
// Holy water. Mostly the same as water, it also heals the plant a little with the power of the spirits~
if(S.has_reagent(/datum/reagent/water/holywater, 1))
adjustWater(round(S.get_reagent_amount(/datum/reagent/water/holywater) * 1))
adjustHealth(round(S.get_reagent_amount(/datum/reagent/water/holywater) * 0.1))
// A variety of nutrients are dissolved in club soda, without sugar.
// These nutrients include carbon, oxygen, hydrogen, phosphorous, potassium, sulfur and sodium, all of which are needed for healthy plant growth.
if(S.has_reagent(/datum/reagent/consumable/sodawater, 1))
adjustWater(round(S.get_reagent_amount(/datum/reagent/consumable/sodawater) * 1))
adjustHealth(round(S.get_reagent_amount(/datum/reagent/consumable/sodawater) * 0.1))
adjustNutri(round(S.get_reagent_amount(/datum/reagent/consumable/sodawater) * 0.1))
// Sulphuric Acid
if(S.has_reagent(/datum/reagent/toxin/acid, 1))
adjustHealth(-round(S.get_reagent_amount(/datum/reagent/toxin/acid) * 1))
adjustToxic(round(S.get_reagent_amount(/datum/reagent/toxin/acid) * 1.5))
adjustWeeds(-rand(1,2))
// Acid
if(S.has_reagent(/datum/reagent/toxin/acid/fluacid, 1))
adjustHealth(-round(S.get_reagent_amount(/datum/reagent/toxin/acid/fluacid) * 2))
adjustToxic(round(S.get_reagent_amount(/datum/reagent/toxin/acid/fluacid) * 3))
adjustWeeds(-rand(1,4))
// Plant-B-Gone is just as bad
if(S.has_reagent(/datum/reagent/toxin/plantbgone, 1))
adjustHealth(-round(S.get_reagent_amount(/datum/reagent/toxin/plantbgone) * 5))
adjustToxic(round(S.get_reagent_amount(/datum/reagent/toxin/plantbgone) * 6))
adjustWeeds(-rand(4,8))
// Napalm, not known for being good for anything organic
if(S.has_reagent(/datum/reagent/napalm, 1))
if(!(myseed.resistance_flags & FIRE_PROOF))
adjustHealth(-round(S.get_reagent_amount(/datum/reagent/napalm) * 6))
adjustToxic(round(S.get_reagent_amount(/datum/reagent/napalm) * 7))
adjustWeeds(-rand(5,9))
//Weed Spray
if(S.has_reagent(/datum/reagent/toxin/plantbgone/weedkiller, 1))
adjustToxic(round(S.get_reagent_amount(/datum/reagent/toxin/plantbgone/weedkiller) * 0.5))
//old toxicity was 4, each spray is default 10 (minimal of 5) so 5 and 2.5 are the new ammounts
adjustWeeds(-rand(1,2))
//Pest Spray
if(S.has_reagent(/datum/reagent/toxin/pestkiller, 1))
adjustToxic(round(S.get_reagent_amount(/datum/reagent/toxin/pestkiller) * 0.5))
adjustPests(-rand(1,2))
// Healing
if(S.has_reagent(/datum/reagent/medicine/cryoxadone, 1))
adjustHealth(round(S.get_reagent_amount(/datum/reagent/medicine/cryoxadone) * 3))
adjustToxic(-round(S.get_reagent_amount(/datum/reagent/medicine/cryoxadone) * 3))
// Ammonia is bad ass.
if(S.has_reagent(/datum/reagent/ammonia, 1))
adjustHealth(round(S.get_reagent_amount(/datum/reagent/ammonia) * 0.5))
adjustNutri(round(S.get_reagent_amount(/datum/reagent/ammonia) * 1))
if(myseed)
myseed.adjust_yield(round(S.get_reagent_amount(/datum/reagent/ammonia) * 0.01))
// Saltpetre is used for gardening IRL, to simplify highly, it speeds up growth and strengthens plants
if(S.has_reagent(/datum/reagent/saltpetre, 1))
var/salt = S.get_reagent_amount(/datum/reagent/saltpetre)
adjustHealth(round(salt * 0.25))
if (myseed)
myseed.adjust_production(-round(salt/100)-prob(salt%100))
myseed.adjust_potency(round(salt*0.5))
// Ash is also used IRL in gardening, as a fertilizer enhancer and weed killer
if(S.has_reagent(/datum/reagent/ash, 1))
adjustHealth(round(S.get_reagent_amount(/datum/reagent/ash) * 0.25))
adjustNutri(round(S.get_reagent_amount(/datum/reagent/ash) * 0.5))
adjustWeeds(-1)
// Diethylamine is more bad ass, and pests get hurt by the corrosive nature of it, not the plant.
if(S.has_reagent(/datum/reagent/diethylamine, 1))
adjustHealth(round(S.get_reagent_amount(/datum/reagent/diethylamine) * 1))
adjustNutri(round(S.get_reagent_amount(/datum/reagent/diethylamine) * 2))
if(myseed)
myseed.adjust_yield(round(S.get_reagent_amount(/datum/reagent/diethylamine) * 0.02))
adjustPests(-rand(1,2))
// Enduro Grow sacrifices potency + yield for endurance
if(S.has_reagent(/datum/reagent/plantnutriment/endurogrow, 1))
myseed.adjust_potency(-round(S.get_reagent_amount(/datum/reagent/plantnutriment/endurogrow) * 0.1))
myseed.adjust_yield(-round(S.get_reagent_amount(/datum/reagent/plantnutriment/endurogrow) * 0.075))
myseed.adjust_endurance(round(S.get_reagent_amount(/datum/reagent/plantnutriment/endurogrow) * 0.35))
// Liquid Earthquake increases production speed but increases weeds
if(S.has_reagent(/datum/reagent/plantnutriment/liquidearthquake, 1))
myseed.adjust_weed_rate(round(S.get_reagent_amount(/datum/reagent/plantnutriment/liquidearthquake) * 0.1))
myseed.adjust_weed_chance(round(S.get_reagent_amount(/datum/reagent/plantnutriment/liquidearthquake) * 0.3))
myseed.adjust_production(round(S.get_reagent_amount(/datum/reagent/plantnutriment/liquidearthquake) * 0.075))
// Nutriment Compost, effectively
if(S.has_reagent(/datum/reagent/consumable/nutriment, 1))
adjustHealth(round(S.get_reagent_amount(/datum/reagent/consumable/nutriment) * 0.5))
adjustNutri(round(S.get_reagent_amount(/datum/reagent/consumable/nutriment) * 1))
// Virusfood Compost for EVERYTHING
if(S.has_reagent(/datum/reagent/toxin/mutagen/mutagenvirusfood, 1))
adjustNutri(round(S.get_reagent_amount(/datum/reagent/toxin/mutagen/mutagenvirusfood) * 0.5))
adjustHealth(-round(S.get_reagent_amount(/datum/reagent/toxin/mutagen/mutagenvirusfood) * 0.5))
// Blood
if(S.has_reagent(/datum/reagent/blood, 1))
adjustNutri(round(S.get_reagent_amount(/datum/reagent/blood) * 1))
adjustPests(rand(2,4))
// Strange reagent
if(S.has_reagent(/datum/reagent/medicine/strange_reagent, 1))
spawnplant()
// Adminordrazine the best stuff there is. For testing/debugging.
if(S.has_reagent(/datum/reagent/medicine/adminordrazine, 1))
adjustWater(round(S.get_reagent_amount(/datum/reagent/medicine/adminordrazine) * 1))
adjustHealth(round(S.get_reagent_amount(/datum/reagent/medicine/adminordrazine) * 1))
adjustNutri(round(S.get_reagent_amount(/datum/reagent/medicine/adminordrazine) * 1))
adjustPests(-rand(1,5))
adjustWeeds(-rand(1,5))
if(S.has_reagent(/datum/reagent/medicine/adminordrazine, 5))
switch(rand(100))
if(66 to 100)
mutatespecie()
if(33 to 65)
mutateweed()
if(1 to 32)
mutatepest(user)
else
to_chat(user, "<span class='warning'>Nothing happens...</span>")

View File

@@ -529,15 +529,17 @@
for(var/obj/machinery/hydroponics/H in trays)
//cause I don't want to feel like im juggling 15 tamagotchis and I can get to my real work of ripping flooring apart in hopes of validating my life choices of becoming a space-gardener
var/datum/reagents/S = new /datum/reagents() //This is a strange way, but I don't know of a better one so I can't fix it at the moment...
S.my_atom = H
var/datum/reagents/S = new /datum/reagents //This is a strange way, but I don't know of a better one so I can't fix it at the moment...
reagent_source.reagents.trans_to(S,split)
if(istype(reagent_source, /obj/item/reagent_containers/food/snacks) || istype(reagent_source, /obj/item/reagent_containers/pill))
qdel(reagent_source)
lastuser = user
H.applyFertilizer(S, user)
H.applyChemicals(S, user)
if(myseed)
myseed.on_chem_reaction(S)
lastuser = user
for(var/datum/reagent/R in S.reagent_list)
if(R.on_tray(H, R.volume, user) >= 1)
lastuser = user
S.clear_reagents()
qdel(S)
@@ -545,6 +547,7 @@
if(reagent_source) // If the source wasn't composted and destroyed
reagent_source.update_icon()
else if(istype(O, /obj/item/seeds) && !istype(O, /obj/item/seeds/sample))
if(!myseed)
if(istype(O, /obj/item/seeds/kudzu))

View File

@@ -36,10 +36,11 @@
for(var/obj/machinery/hydroponics/H in trays)
var/datum/reagents/temp_reagents = new /datum/reagents()
temp_reagents.my_atom = H
source.reagents.trans_to(temp_reagents, split)
H.applyChemicals(temp_reagents)
for(var/datum/reagent/R in temp_reagents.reagent_list)
if(R.on_tray(H, R.volume, src) >= 1)
tray.lastuser = src
temp_reagents.clear_reagents()
qdel(temp_reagents)

View File

@@ -77,6 +77,12 @@ GLOBAL_LIST_INIT(name2reagent, build_name2reagent())
/datum/reagent/proc/reaction_turf(turf/T, volume)
return
//Hyperstation Edit: Hydroponics trays reactions, idea stolen from citadel but not directly referenced
/datum/reagent/proc/on_tray(obj/machinery/hydroponics/T, volume, mob/user) //See hyperstation's reagent module
if(!T.myseed)
return 0
return -1
/datum/reagent/proc/on_mob_life(mob/living/carbon/M)
current_cycle++
if(holder)

View File

@@ -0,0 +1,294 @@
/*
* If you ever decide to add more reactions, please remember to keep these
* in alphabetical order, according to reagent names and not their datums.
* It could be hard to find reactions when code diving.
* Due note, unlike before this change, that subtypes will apply to the tray the same as their parents
* -DT
*/
#define DEFAULT_ACT_MUTAGEN switch(rand(100)){\
if(91 to 100){\
T.adjustHealth(-10);\
to_chat(user, "<span class='warning'>The plant shrivels and burns.</span>");}\
if(81 to 90)\
T.mutatespecie();\
if(66 to 80)\
T.hardmutate();\
if(41 to 65)\
T.mutate();\
if(21 to 41)\
to_chat(user, "<span class='notice'>The plants don't seem to react...</span>");\
if(11 to 20)\
T.mutateweed();\
if(1 to 10)\
T.mutatepest(user);\
else\
to_chat(user, "<span class='notice'>Nothing happens...</span>");}
//Ammonia
/datum/reagent/ammonia/on_tray(obj/machinery/hydroponics/T, volume, mob/user)
T.adjustHealth(round(volume * 0.5))
T.adjustNutri(round(volume * 1))
if(..())
T.myseed.adjust_yield(round(volume * 0.01))
return 1
//Ash
/datum/reagent/ash/on_tray(obj/machinery/hydroponics/T, volume, mob/user)
// Ash is used IRL in gardening, as a fertilizer enhancer and weed killer
T.adjustHealth(round(volume * 0.25))
T.adjustNutri(round(volume * 0.5))
T.adjustWeeds(-round(volume / 10))
return 1
//Beer
/datum/reagent/consumable/ethanol/beer/on_tray(obj/machinery/hydroponics/T, volume, mob/user)
// Beer is a chemical composition of alcohol and various other things. It's a shitty nutrient but hey, it's still one. Also alcohol is bad, mmmkay?
T.adjustHealth(-round(volume * 0.05))
T.adjustNutri(round(volume * 0.25))
T.adjustWater(round(volume * 0.7))
return 1
//Blood
/datum/reagent/blood/on_tray(obj/machinery/hydroponics/T, volume, mob/user)
T.adjustNutri(round(volume * 0.6))
T.adjustHealth(-round(volume))
T.adjustPests(rand(2,4)) //they HUNGER
return 1
//Charcoal
/datum/reagent/medicine/charcoal/on_tray(obj/machinery/hydroponics/T, volume, mob/user)
T.adjustToxic(-round(volume * 2)) //Antitoxin binds shit pretty well. So the tox goes significantly down
return 1
//Chlorine
/datum/reagent/chlorine/on_tray(obj/machinery/hydroponics/T, volume, mob/user)
T.adjustHealth(-round(volume * 1))
T.adjustToxic(round(volume * 1.5))
T.adjustWater(-round(volume * 0.5))
T.adjustWeeds(-rand(1,volume * 0.125))
return 1
//Diethylamine
/datum/reagent/diethylamine/on_tray(obj/machinery/hydroponics/T, volume, mob/user)
//Corrosive to pests, but not to plants
if(..())
T.myseed.adjust_yield(round(volume * 0.02))
T.adjustHealth(round(volume))
T.adjustNutri(round(volume * 2))
T.adjustPests(-rand(1,round(volume / 30)))
return 1
//Earthsblood
/datum/reagent/medicine/earthsblood/on_tray(obj/machinery/hydroponics/T, volume, mob/user)
T.self_sufficiency_progress += volume
if(T.self_sufficiency_progress >= T.self_sufficiency_req)
T.become_self_sufficient()
else
to_chat(user, "<span class='notice'>[T] warms as it might on a spring day under a genuine Sun.</span>")
return 1
//Enduro-Grow
/datum/reagent/plantnutriment/endurogrow/on_tray(obj/machinery/hydroponics/T, volume, mob/user)
if(!..())
return -1
T.myseed.adjust_potency(-round(volume / 10))
T.myseed.adjust_yield(-round(volume / 30))
T.myseed.adjust_endurance(round(volume / 30))
return 1
//E-Z Nutrient
/datum/reagent/plantnutriment/eznutriment/on_tray(obj/machinery/hydroponics/T, volume, mob/user)
T.yieldmod = 1
T.mutmod = 1
return ..()
//Flourine
/datum/reagent/fluorine/on_tray(obj/machinery/hydroponics/T, volume, mob/user)
// Fluorine one of the most corrosive and deadly gasses
T.adjustHealth(-round(volume * 2))
T.adjustToxic(round(volume * 2.5))
T.adjustWater(-round(volume * 0.5))
T.adjustWeeds(-rand(1, volume * 0.25))
return 1
//Fluorosulfuric acid
/datum/reagent/toxin/acid/fluacid/on_tray(obj/machinery/hydroponics/T, volume, mob/user)
T.adjustHealth(-round(volume * 2))
T.adjustToxic(round(volume * 3))
T.adjustWeeds(-rand(1,volume * 0.5))
return 1
//Holy Water
/datum/reagent/water/holywater/on_tray(obj/machinery/hydroponics/T, volume, mob/user)
//Mostly the same as water, it also heals the plant a little with the power of the spirits~
T.adjustWater(round(volume))
T.adjustHealth(round(volume * 0.1))
return 1
//Left-4-Zed
/datum/reagent/plantnutriment/left4zednutriment/on_tray(obj/machinery/hydroponics/T, volume, mob/user)
T.yieldmod = 0
T.mutmod = 2
return ..()
//Liquid Earthquake
/datum/reagent/plantnutriment/liquidearthquake/on_tray(obj/machinery/hydroponics/T, volume, mob/user)
if(!..())
return -1
T.myseed.adjust_weed_chance(round(volume / 10))
T.myseed.adjust_weed_rate(round(volume / 30))
T.myseed.adjust_production(-round(volume / 30))
return 1
//Milk
/datum/reagent/consumable/milk/on_tray(obj/machinery/hydroponics/T, volume, mob/user)
T.adjustNutri(round(volume * 0.2))
T.adjustWater(round(volume * 0.5))
if(..()) // Milk is good for humans, but bad for plants. The sugars canot be used by plants, and the milk fat fucks up growth.
if(!T.myseed.get_gene(/datum/plant_gene/trait/plant_type/fungal_metabolism)) //Not shrooms though
T.adjustHealth(-round(volume / 2))
return 1
//Napalm
/datum/reagent/napalm/on_tray(obj/machinery/hydroponics/T, volume, mob/user)
if(..())
if(T.myseed.resistance_flags & FIRE_PROOF)
return 1
T.adjustHealth(-round(volume * 6))
T.adjustToxic(round(volume * 7))
T.adjustWeeds(-rand(5,9))
return 1
//Nutriment
/datum/reagent/consumable/nutriment/on_tray(obj/machinery/hydroponics/T, volume, mob/user)
//Compost, effectively
T.adjustHealth(round(volume * 0.5))
T.adjustNutri(round(volume))
return 1
//Pest Killer
/datum/reagent/toxin/pestkiller/on_tray(obj/machinery/hydroponics/T, volume, mob/user)
T.adjustToxic(round(volume * 0.5))
T.adjustPests(-rand(1,volume / 5))
return 1
//Phosphorus
/datum/reagent/phosphorus/on_tray(obj/machinery/hydroponics/T, volume, mob/user)
// White Phosphorous + water -> phosphoric acid. That's not a good thing really.
// Phosphoric salts are beneficial though. And even if the plant suffers, in the long run the tray gets some nutrients. The benefit isn't worth that much.
T.adjustHealth(-round(volume * 0.75))
T.adjustNutri(round(volume * 0.1))
T.adjustWater(-round(volume * 0.5))
T.adjustWeeds(-rand(1, volume * 0.1))
return 1
//Plant-B-Gone
/datum/reagent/toxin/plantbgone/on_tray(obj/machinery/hydroponics/T, volume, mob/user)
T.adjustHealth(-round(volume * 5))
T.adjustToxic(round(volume * 6))
T.adjustWeeds(-rand(4,8))
return 1
//Plant Base
//For subtypes of /datum/reagent/plantnutriment/
/datum/reagent/plantnutriment/on_tray(obj/machinery/hydroponics/T, volume, mob/user)
T.adjustNutri(round(volume))
return ..()
//Radium
/datum/reagent/radium/on_tray(obj/machinery/hydroponics/T, volume, mob/user)
if(volume >= 10)
DEFAULT_ACT_MUTAGEN
else if(volume >= 5)
T.hardmutate()
else if(volume >= 2)
T.mutate()
T.adjustHealth(-round(volume))
T.adjustToxic(round(volume * 3)) // Radium is harsher (OOC: also easier to produce)
return 1
//Robust Harvest
/datum/reagent/plantnutriment/robustharvestnutriment/on_tray(obj/machinery/hydroponics/T, volume, mob/user)
T.yieldmod = 1.3
T.mutmod = 0
return ..()
//Saltpetre
/datum/reagent/saltpetre/on_tray(obj/machinery/hydroponics/T, volume, mob/user)
// Saltpetre is used for gardening IRL. To simplify highly, it speeds up growth and strengthens plants
T.adjustHealth(round(volume * 0.25))
if (..())
T.myseed.adjust_production(-round(volume/100)-prob(volume%100))
T.myseed.adjust_potency(round(volume*0.5))
return 1
//Soda Water
/datum/reagent/consumable/sodawater/on_tray(obj/machinery/hydroponics/T, volume, mob/user)
// A variety of nutrients are dissolved in club soda, without sugar.
// These nutrients include carbon, oxygen, hydrogen, phosphorous, potassium, sulfur and sodium, all of which are needed for healthy plant growth.
T.adjustWater(round(volume) * 0.9)
T.adjustHealth(round(volume * 0.1))
T.adjustNutri(round(volume * 0.1))
return 1
//Sugar
/datum/reagent/consumable/sugar/on_tray(obj/machinery/hydroponics/T, volume, mob/user)
T.adjustWeeds(round(rand(1, volume / 5)))
T.adjustPests(round(rand(1, volume / 5)))
return 1
//Sulphuric Acid
/datum/reagent/toxin/acid/on_tray(obj/machinery/hydroponics/T, volume, mob/user)
T.adjustHealth(-round(volume * 1))
T.adjustToxic(round(volume * 1.5))
T.adjustWeeds(-rand(1,volume * 0.25))
return 1
//Toxin
/datum/reagent/toxin/on_tray(obj/machinery/hydroponics/T, volume, mob/user)
T.adjustToxic(round(volume * 2))
return 1
//Unstable Mutagen
/datum/reagent/toxin/mutagen/on_tray(obj/machinery/hydroponics/T, volume, mob/user)
if(volume >= 5)
DEFAULT_ACT_MUTAGEN
else if(volume >= 2)
T.hardmutate()
else if(volume >= 1)
T.mutate()
return 1
//Uranium
/datum/reagent/uranium/on_tray(obj/machinery/hydroponics/T, volume, mob/user)
if(volume >= 10)
DEFAULT_ACT_MUTAGEN
else if(volume >= 5)
T.hardmutate()
else if(volume >= 2)
T.mutate()
T.adjustHealth(-round(volume))
T.adjustToxic(round(volume * 2))
return 1
//Virus Food
/datum/reagent/toxin/mutagen/mutagenvirusfood/on_tray(obj/machinery/hydroponics/T, volume, mob/user)
T.adjustNutri(round(volume * 0.5))
T.adjustHealth(-round(volume * 0.5))
return 1
//Water
/datum/reagent/water/on_tray(obj/machinery/hydroponics/T, volume, mob/user)
T.adjustWater(round(volume))
return 1
//Weed Killer
/datum/reagent/toxin/plantbgone/weedkiller/on_tray(obj/machinery/hydroponics/T, volume, mob/user)
T.adjustToxic(round(volume / 2))
T.adjustWeeds(-rand(1,volume / 5))
return 1
#undef DEFAULT_ACT_MUTAGEN

View File

@@ -1827,7 +1827,6 @@
#include "code\modules\hydroponics\gene_modder.dm"
#include "code\modules\hydroponics\grown.dm"
#include "code\modules\hydroponics\growninedible.dm"
#include "code\modules\hydroponics\hydro_chemreact.dm"
#include "code\modules\hydroponics\hydroitemdefines.dm"
#include "code\modules\hydroponics\hydroponics.dm"
#include "code\modules\hydroponics\plant_genes.dm"
@@ -3066,6 +3065,7 @@
#include "hyperstation\code\modules\mob\mob_helpers.dm"
#include "hyperstation\code\modules\patreon\patreon.dm"
#include "hyperstation\code\modules\reagents\chemistry\reagents\food_reagents.dm"
#include "hyperstation\code\modules\reagents\chemistry\reagents\hydroponics_reactions.dm"
#include "hyperstation\code\modules\resize\resizing.dm"
#include "hyperstation\code\modules\resize\sizechems.dm"
#include "hyperstation\code\modules\resize\sizegun.dm"