mirror of
https://github.com/goonstation/goonstation-2016.git
synced 2026-08-30 17:36:35 +01:00
Initial Commit
This commit is contained in:
@@ -0,0 +1,186 @@
|
||||
/datum/plant_gene_strain
|
||||
var/name = null // self-explanatory
|
||||
var/desc = null // this too
|
||||
var/strain_type = "gene strain" // is this a gene strain? a disease? a parasite?
|
||||
var/chance = 10 // base chance of this mutation developing
|
||||
var/negative = 0 // is this mutation something you shouldn't want?
|
||||
var/process_proc_chance = 100 // on_process's chance of actually occurring per call
|
||||
|
||||
proc/on_process(var/obj/machinery/plantpot/PP)
|
||||
if (!PP)
|
||||
return 1
|
||||
if (!PP.current)
|
||||
return 1
|
||||
if (!prob(process_proc_chance))
|
||||
return 1
|
||||
|
||||
/datum/plant_gene_strain/immunity_toxin
|
||||
name = "Toxin Immunity"
|
||||
desc = "This genetic strain enables a plant to wholly resist damage from toxic substances."
|
||||
|
||||
/datum/plant_gene_strain/immunity_radiation
|
||||
name = "Radiation Immunity"
|
||||
desc = "Strengthening the gene structure, this mutation eliminates all radiation damage to the plant."
|
||||
|
||||
/datum/plant_gene_strain/resistance_drought
|
||||
name = "Drought Resistance"
|
||||
desc = "Enhanced fluid retention enables this genetic strain to protect the plant from drought."
|
||||
|
||||
/datum/plant_gene_strain/metabolism_fast
|
||||
name = "Fast Metabolism"
|
||||
desc = "This gene causes a plant to grow faster, but also consume water more rapidly."
|
||||
|
||||
/datum/plant_gene_strain/metabolism_slow
|
||||
name = "Slow Metabolism"
|
||||
desc = "This gene slows the growth of a plant, but reduces water consumption."
|
||||
|
||||
/datum/plant_gene_strain/growth_fast
|
||||
name = "Rapid Growth"
|
||||
desc = "This gene causes a plant to grow more rapidly with no drawbacks."
|
||||
|
||||
on_process(var/obj/machinery/plantpot/PP)
|
||||
if (..())
|
||||
return
|
||||
PP.growth += 2
|
||||
|
||||
/datum/plant_gene_strain/growth_slow
|
||||
name = "Stunted Growth"
|
||||
desc = "This gene slows down a plant's growth rate."
|
||||
negative = 1
|
||||
|
||||
on_process(var/obj/machinery/plantpot/PP)
|
||||
if (..())
|
||||
return
|
||||
if (PP.growth > 1)
|
||||
PP.growth--
|
||||
|
||||
/datum/plant_gene_strain/yield
|
||||
name = "Enhanced Yield"
|
||||
desc = "This gene allows a plant to grow a greater number of items without any harm done."
|
||||
var/yield_mod = 0
|
||||
var/yield_mult = 2
|
||||
|
||||
/datum/plant_gene_strain/yield/stunted
|
||||
name = "Stunted Yield"
|
||||
desc = "This gene reduces the amount of viable items a plant will produce."
|
||||
negative = 1
|
||||
|
||||
/datum/plant_gene_strain/quality
|
||||
name = "Superior Quality"
|
||||
desc = "Produce harvested from this plant will be of a greater quality than usual."
|
||||
var/quality_mult = 2
|
||||
var/quality_mod = 5
|
||||
|
||||
/datum/plant_gene_strain/quality/inferior
|
||||
name = "Inferior Quality"
|
||||
desc = "Produce harvested from this plant will be of much worse quality than usual."
|
||||
negative = 1
|
||||
|
||||
/datum/plant_gene_strain/splicing
|
||||
name = "Splice Enabler"
|
||||
desc = "Chromosomal alterations enable seeds from this plant to be spliced with others more easily."
|
||||
var/splice_mod = 20
|
||||
|
||||
/datum/plant_gene_strain/splicing/bad
|
||||
name = "Splice Blocker"
|
||||
desc = "Chromosomal alterations prevent seeds from this plant from being spliced as easily."
|
||||
negative = 1
|
||||
|
||||
/datum/plant_gene_strain/damage_res
|
||||
name = "Damage Resistance"
|
||||
desc = "Enables the plant to take less damage from anything that would harm it."
|
||||
var/damage_mod = 0
|
||||
var/damage_mult = 2
|
||||
|
||||
/datum/plant_gene_strain/damage_res/bad
|
||||
name = "Vulnerability"
|
||||
desc = "Frail growth makes this plant much more susceptible to any kind of damage."
|
||||
negative = 1
|
||||
|
||||
/datum/plant_gene_strain/mutations
|
||||
name = "Mutagenic"
|
||||
desc = "Quirks in the plant's genetic structure cause mutations to occur more easily than usual."
|
||||
var/chance_mod = 15
|
||||
|
||||
/datum/plant_gene_strain/mutations/bad
|
||||
name = "Anti-Mutagenic"
|
||||
desc = "This plant's genetic structure makes mutations less likely to occur."
|
||||
negative = 1
|
||||
|
||||
/datum/plant_gene_strain/health_poor
|
||||
name = "Poor Health"
|
||||
desc = "A harmful gene strain that will cause gradual and continuous damage to the plant."
|
||||
negative = 1
|
||||
process_proc_chance = 24
|
||||
|
||||
on_process(var/obj/machinery/plantpot/PP)
|
||||
if (..())
|
||||
return
|
||||
PP.HYPdamageplant("frailty",1)
|
||||
|
||||
/datum/plant_gene_strain/seedless
|
||||
name = "Seedless"
|
||||
desc = "A gene strain that renders the plant infertile. It will not produce any seeds."
|
||||
negative = 1
|
||||
|
||||
/datum/plant_gene_strain/immortal
|
||||
name = "Immortal"
|
||||
desc = "A rare and valued gene strain that allows infinite harvests from fruiting plants."
|
||||
|
||||
/datum/plant_gene_strain/terminator
|
||||
name = "Terminator"
|
||||
desc = "A drastic genetic fault which can rarely cause plants to suddenly die."
|
||||
process_proc_chance = 1
|
||||
negative = 1
|
||||
|
||||
on_process(var/obj/machinery/plantpot/PP)
|
||||
if (..())
|
||||
return
|
||||
PP.HYPkillplant()
|
||||
|
||||
/datum/plant_gene_strain/unstable
|
||||
name = "Unstable"
|
||||
desc = "Weakening of the genetic structure will cause this plant to mutate by itself."
|
||||
process_proc_chance = 18
|
||||
|
||||
on_process(var/obj/machinery/plantpot/PP)
|
||||
if (..())
|
||||
return
|
||||
PP.HYPmutateplant(1)
|
||||
|
||||
/datum/plant_gene_strain/stabilizer
|
||||
name = "Stabilizer"
|
||||
desc = "A strengthened genetic structure prevents mutations from occurring."
|
||||
|
||||
/datum/plant_gene_strain/accelerator
|
||||
name = "Accelerator"
|
||||
desc = "A highly rare gene strain that will cause the plant to gradually improve its own growth rate."
|
||||
process_proc_chance = 10
|
||||
|
||||
on_process(var/obj/machinery/plantpot/PP)
|
||||
if (..())
|
||||
return
|
||||
var/datum/plantgenes/DNA = PP.plantgenes
|
||||
DNA.growtime--
|
||||
DNA.harvtime--
|
||||
|
||||
/datum/plant_gene_strain/photosynthesis
|
||||
name = "Advanced Photosynthesis"
|
||||
desc = "A chlorophyll mutation causing the plant to respond very well to high amounts of light."
|
||||
|
||||
on_process(var/obj/machinery/plantpot/PP)
|
||||
if (..())
|
||||
return
|
||||
var/turf/T = PP.loc
|
||||
if (istype(T,/turf/) && T.RL_GetBrightness() >= 1)
|
||||
PP.growth += 2
|
||||
|
||||
/datum/plant_gene_strain/reagent_adder
|
||||
name = "Hyperaquacity"
|
||||
desc = "Produce harvested from this plant will contain a higher than usual amount of water."
|
||||
var/list/reagents_to_add = list("water")
|
||||
|
||||
/datum/plant_gene_strain/reagent_adder/toxic
|
||||
name = "Toxic"
|
||||
desc = "Produce harvested from this plant may contain toxic substances."
|
||||
reagents_to_add = list ("toxin")
|
||||
@@ -0,0 +1,354 @@
|
||||
/datum/plantmutation/
|
||||
var/name = null // If this is set, plants will use this instead of regular plant name
|
||||
var/crop = null // What crop does it give?
|
||||
var/special_dmi = null // same as in base plant thing really
|
||||
var/iconmod = null // name of the sprite files in hydro_mutants.dmi
|
||||
var/harvest_override = 0 // If 1, you can harvest it irregardless of the plant's base harvestability
|
||||
var/harvested_proc_override = 0
|
||||
var/special_proc_override = 0
|
||||
// If 0, just use the base plant's settings
|
||||
// If 1, use the mutation's special_proc instead
|
||||
// If anything else, use both the base and the mutant procs
|
||||
|
||||
// Ranges various genes have to be in to get the mutation to appear - lower and upper bound
|
||||
var/list/GTrange = list(null,null) // null means there is no limit so an upper bound of 25
|
||||
var/list/HTrange = list(null,null) // and no lower bound means the mutation will occur when
|
||||
var/list/HVrange = list(null,null) // the plant is below 25 in that gene, but can be as low
|
||||
var/list/CZrange = list(null,null) // as it wants otherwise with no consideration
|
||||
var/list/PTrange = list(null,null)
|
||||
var/list/ENrange = list(null,null)
|
||||
var/commut = null // is a paticular common mutation required for this? (keeping it to 1 for now)
|
||||
var/chance = 8 // How likely out of 100% is this mutation to appear when conditions are met?
|
||||
var/list/assoc_reagents = list() // Used for extractions, harvesting, etc
|
||||
|
||||
var/lasterr = 0
|
||||
|
||||
proc/HYPharvested_proc_M(var/obj/machinery/plantpot/POT, var/mob/user)
|
||||
lasterr = 0
|
||||
if (!POT || !user) return 301
|
||||
if (POT.dead || !POT.current) return 302
|
||||
if (lasterr)
|
||||
logTheThing("debug", null, null, "<b>Plant HYP</b> [src] in pot [POT] failed with error [.]")
|
||||
harvested_proc_override = 0
|
||||
return lasterr
|
||||
|
||||
proc/HYPspecial_proc_M(var/obj/machinery/plantpot/POT)
|
||||
lasterr = 0
|
||||
if (!POT) lasterr = 401
|
||||
if (POT.dead || !POT.current) lasterr = 402
|
||||
if (lasterr)
|
||||
logTheThing("debug", null, null, "<b>Plant HYP</b> [src] in pot [POT] failed with error [.]")
|
||||
special_proc_override = 0
|
||||
return lasterr
|
||||
|
||||
// Tomato Mutations
|
||||
|
||||
/datum/plantmutation/tomato/explosive
|
||||
name = "Seething Tomato"
|
||||
crop = /obj/item/reagent_containers/food/snacks/plant/tomato/explosive
|
||||
iconmod = "exptom"
|
||||
|
||||
HYPharvested_proc_M(var/obj/machinery/plantpot/POT, var/mob/user)
|
||||
. = ..()
|
||||
if (.)
|
||||
return .
|
||||
if (prob(5) || (user.client && user.client.hellbanned && prob(50)))
|
||||
boutput(user, "<span style='color:red'>A tomato explodes as you pick it off the plant!</span>")
|
||||
explosion_new(POT, get_turf(user), 10, 1)
|
||||
return 399
|
||||
return 0
|
||||
|
||||
/datum/plantmutation/tomato/killer
|
||||
name = "Suspicious Tomato"
|
||||
crop = /obj/critter/killertomato
|
||||
iconmod = "kiltom"
|
||||
|
||||
// Grape Mutations
|
||||
|
||||
/datum/plantmutation/grapes/green
|
||||
crop = /obj/item/reagent_containers/food/snacks/plant/grape/green
|
||||
iconmod = "Ggrape"
|
||||
|
||||
// Orange Mutations
|
||||
|
||||
/datum/plantmutation/orange/blood
|
||||
name = "Blood Orange"
|
||||
assoc_reagents = list("bloodc") // heh
|
||||
|
||||
/datum/plantmutation/orange/clockwork
|
||||
name = "Clockwork Orange"
|
||||
crop = /obj/item/reagent_containers/food/snacks/plant/orange/clockwork
|
||||
assoc_reagents = list("iron")
|
||||
ENrange = list(30,null)
|
||||
chance = 20
|
||||
|
||||
// Melon Mutations
|
||||
|
||||
/datum/plantmutation/melon/george
|
||||
name = "Rainbow Melons"
|
||||
crop = /obj/item/reagent_containers/food/snacks/plant/melon/george
|
||||
assoc_reagents = list("george_melonium")
|
||||
|
||||
// Chili Mutations
|
||||
|
||||
/datum/plantmutation/chili/chilly
|
||||
name = "chilly"
|
||||
iconmod = "chilly"
|
||||
crop = /obj/item/reagent_containers/food/snacks/plant/chili/chilly
|
||||
assoc_reagents = list("cryostylane")
|
||||
|
||||
/datum/plantmutation/chili/ghost
|
||||
name = "fiery chili"
|
||||
iconmod = "ghost"
|
||||
crop = /obj/item/reagent_containers/food/snacks/plant/chili/ghost_chili
|
||||
PTrange = list(75,null)
|
||||
chance = 10
|
||||
assoc_reagents = list("ghostchilijuice")
|
||||
|
||||
// Eggplant Mutations
|
||||
|
||||
/datum/plantmutation/eggplant/literal
|
||||
name = "free range eggplant"
|
||||
iconmod = "eggs"
|
||||
crop = /obj/item/reagent_containers/food/snacks/ingredient/egg
|
||||
|
||||
// Wheat Mutations
|
||||
|
||||
/datum/plantmutation/wheat/steelwheat
|
||||
name = "steelwheat"
|
||||
iconmod = "steelwheat"
|
||||
crop = /obj/item/plant/wheat/metal
|
||||
|
||||
// Synthmeat Mutations
|
||||
|
||||
/datum/plantmutation/synthmeat/butt
|
||||
name = "Synthbutt"
|
||||
iconmod = "butts"
|
||||
crop = /obj/item/clothing/head/butt/synth
|
||||
special_proc_override = 1
|
||||
|
||||
HYPspecial_proc_M(var/obj/machinery/plantpot/POT)
|
||||
..()
|
||||
if (.) return
|
||||
var/datum/plant/P = POT.current
|
||||
var/datum/plantgenes/DNA = POT.plantgenes
|
||||
|
||||
var/fart_prob = max(0,min(100,DNA.potency))
|
||||
|
||||
if (POT.growth > (P.growtime + DNA.growtime) && prob(fart_prob))
|
||||
POT.visible_message("<span style=\"color:red\"><b>[POT]</b> farts!</span>")
|
||||
playsound(POT.loc, "sound/misc/poo2.ogg", 50, 1)
|
||||
// coder.Life()
|
||||
// whoops undefined proc
|
||||
|
||||
/datum/plantmutation/synthmeat/limb
|
||||
name = "Synthlimb"
|
||||
iconmod = "limbs" // haine has farted up a shitty recolored sprite for these, everyone rejoice
|
||||
crop = list(/obj/item/parts/human_parts/arm/left/synth, /obj/item/parts/human_parts/arm/right/synth,
|
||||
/obj/item/parts/human_parts/leg/left/synth, /obj/item/parts/human_parts/leg/right/synth,
|
||||
/obj/item/parts/human_parts/arm/left/synth/bloom, /obj/item/parts/human_parts/arm/right/synth/bloom,
|
||||
/obj/item/parts/human_parts/leg/left/synth/bloom, /obj/item/parts/human_parts/leg/right/synth/bloom)
|
||||
|
||||
/datum/plantmutation/synthmeat/organ
|
||||
name = "Synthorgan"
|
||||
iconmod = "limbs"
|
||||
crop = list(/obj/item/organ/heart/synth, /obj/item/organ/brain/synth, /obj/item/organ/eye/synth) // Just slap your new organ in there.
|
||||
|
||||
/datum/plantmutation/synthmeat/butt/buttbot
|
||||
name = "Synthbuttbot"
|
||||
iconmod = "butts"
|
||||
crop = /obj/machinery/bot/buttbot
|
||||
|
||||
// Soy Mutations
|
||||
|
||||
/datum/plantmutation/soy/soylent
|
||||
name = "Strange soybean"
|
||||
crop = /obj/item/reagent_containers/food/snacks/plant/soylent
|
||||
iconmod = "soylent"
|
||||
|
||||
// Contusine Mutations
|
||||
|
||||
/datum/plantmutation/contusine/shivering
|
||||
name = "Shivering Contusine"
|
||||
iconmod = "shivercon"
|
||||
assoc_reagents = list("salbutamol")
|
||||
chance = 20
|
||||
|
||||
/datum/plantmutation/contusine/quivering
|
||||
name = "Quivering Contusine"
|
||||
iconmod = "shivercon"
|
||||
assoc_reagents = list("curare")
|
||||
chance = 10
|
||||
|
||||
// Nureous Mutations
|
||||
|
||||
/datum/plantmutation/nureous/fuzzy
|
||||
name = "Fuzzy Nureous"
|
||||
assoc_reagents = list("hairgrownium")
|
||||
|
||||
// Asomna Mutations
|
||||
|
||||
/datum/plantmutation/asomna/robust
|
||||
name = "Robust Asomna"
|
||||
iconmod = "AsomnaR"
|
||||
assoc_reagents = list("methamphetamine")
|
||||
chance = 10
|
||||
|
||||
// Commol Mutations
|
||||
|
||||
/datum/plantmutation/commol/burning
|
||||
name = "Burning Commol"
|
||||
iconmod = "CommolB"
|
||||
assoc_reagents = list("napalm")
|
||||
chance = 10
|
||||
|
||||
// Venne Mutations
|
||||
|
||||
/datum/plantmutation/venne/toxic
|
||||
name = "Black Venne"
|
||||
iconmod = "venneT"
|
||||
crop = /obj/item/plant/herb/venne/toxic
|
||||
assoc_reagents = list("atropine")
|
||||
chance = 10
|
||||
|
||||
/datum/plantmutation/venne/curative
|
||||
name = "Sunrise Venne"
|
||||
iconmod = "venneC"
|
||||
crop = /obj/item/plant/herb/venne/curative
|
||||
assoc_reagents = list("oculine","mannitol","mutadone")
|
||||
chance = 5
|
||||
|
||||
// Cannabis Mutations
|
||||
|
||||
/datum/plantmutation/cannabis/rainbow
|
||||
name = "Rainbow Weed"
|
||||
iconmod = "megaweed"
|
||||
crop = /obj/item/plant/herb/cannabis/mega
|
||||
assoc_reagents = list("LSD")
|
||||
|
||||
/datum/plantmutation/cannabis/death
|
||||
name = "Deathweed"
|
||||
iconmod = "deathweed"
|
||||
crop = /obj/item/plant/herb/cannabis/black
|
||||
PTrange = list(null,30)
|
||||
ENrange = list(10,30)
|
||||
chance = 20
|
||||
assoc_reagents = list("cyanide")
|
||||
|
||||
/datum/plantmutation/cannabis/white
|
||||
name = "Lifeweed"
|
||||
iconmod = "lifeweed"
|
||||
crop = /obj/item/plant/herb/cannabis/white
|
||||
PTrange = list(30,null)
|
||||
ENrange = list(30,50)
|
||||
chance = 20
|
||||
assoc_reagents = list("omnizine")
|
||||
|
||||
/datum/plantmutation/cannabis/ultimate
|
||||
name = "Omega Weed"
|
||||
iconmod = "Oweed"
|
||||
crop = /obj/item/plant/herb/cannabis/omega
|
||||
PTrange = list(420,null)
|
||||
chance = 100
|
||||
assoc_reagents = list("LSD","suicider","space_drugs","mercury","lithium",
|
||||
"atropine", "ephedrine", "haloperidol","methamphetamine","THC","capsaicin","psilocybin","hairgrownium",
|
||||
"ectoplasm","bathsalts","itching","crank","krokodil","catdrugs","histamine")
|
||||
|
||||
// Fungus Mutations
|
||||
|
||||
/datum/plantmutation/fungus/psilocybin
|
||||
name = "Magic Mushroom"
|
||||
iconmod = "magmush"
|
||||
crop = /obj/item/reagent_containers/food/snacks/mushroom/psilocybin
|
||||
assoc_reagents = list("psilocybin")
|
||||
|
||||
/datum/plantmutation/fungus/amanita
|
||||
name = "White Fungus"
|
||||
iconmod = "deathcap"
|
||||
crop = /obj/item/reagent_containers/food/snacks/mushroom/amanita
|
||||
ENrange = list(null,10)
|
||||
PTrange = list(30,null)
|
||||
chance = 20
|
||||
assoc_reagents = list("amanitin")
|
||||
|
||||
// Lasher Mutations
|
||||
|
||||
/datum/plantmutation/lasher/berries
|
||||
name = "Blooming Lasher"
|
||||
iconmod = "lashberry"
|
||||
harvest_override = 1
|
||||
crop = /obj/item/reagent_containers/food/snacks/plant/lashberry/
|
||||
chance = 20
|
||||
|
||||
// Radweed Mutations
|
||||
|
||||
/datum/plantmutation/radweed/safeweed
|
||||
name = "White Radweed"
|
||||
iconmod = "whiterad"
|
||||
special_proc_override = 1
|
||||
|
||||
HYPspecial_proc_M(var/obj/machinery/plantpot/POT)
|
||||
..()
|
||||
if (.) return
|
||||
var/datum/plant/P = POT.current
|
||||
var/datum/plantgenes/DNA = POT.plantgenes
|
||||
|
||||
if (POT.growth > (P.harvtime + DNA.harvtime) && prob(10))
|
||||
var/obj/overlay/B = new /obj/overlay( POT.loc )
|
||||
B.icon = 'icons/obj/hydroponics/hydromisc.dmi'
|
||||
B.icon_state = "radpulse"
|
||||
B.name = "radioactive pulse"
|
||||
B.anchored = 1
|
||||
B.density = 0
|
||||
B.layer = 5 // TODO what layer should this be on?
|
||||
spawn(20)
|
||||
qdel(B)
|
||||
var/radrange = 1
|
||||
switch (POT.health)
|
||||
if (60 to 159)
|
||||
radrange = 2
|
||||
if (160 to INFINITY)
|
||||
radrange = 3
|
||||
for (var/obj/machinery/plantpot/C in range(radrange,POT))
|
||||
var/datum/plant/growing = C.current
|
||||
if (istype(growing,/datum/plant/radweed)) continue
|
||||
if (growing) C.HYPmutateplant(radrange * 2)
|
||||
|
||||
/datum/plantmutation/radweed/redweed
|
||||
name = "Smoldering Radweed"
|
||||
iconmod = "redweed"
|
||||
assoc_reagents = list("napalm")
|
||||
|
||||
// Slurrypod Mutations
|
||||
|
||||
/datum/plantmutation/slurrypod/omega
|
||||
name = "Glowing Slurrypod"
|
||||
iconmod = "omegaS"
|
||||
crop = /obj/item/reagent_containers/food/snacks/plant/slurryfruit/omega
|
||||
assoc_reagents = list("omega_mutagen")
|
||||
|
||||
// Rock Plant Mutations
|
||||
|
||||
/datum/plantmutation/rocks/syreline
|
||||
crop = /obj/item/raw_material/syreline
|
||||
chance = 40
|
||||
|
||||
/datum/plantmutation/rocks/bohrum
|
||||
crop = /obj/item/raw_material/bohrum
|
||||
chance = 20
|
||||
|
||||
/datum/plantmutation/rocks/mauxite
|
||||
crop = /obj/item/raw_material/mauxite
|
||||
chance = 10
|
||||
|
||||
/datum/plantmutation/rocks/erebite
|
||||
crop = /obj/item/raw_material/erebite
|
||||
chance = 5
|
||||
|
||||
// trees. :effort:
|
||||
|
||||
/datum/plantmutation/tree/money
|
||||
name = "Money Tree"
|
||||
iconmod = "Cash"
|
||||
crop = /obj/item/spacecash
|
||||
chance = 20
|
||||
@@ -0,0 +1,201 @@
|
||||
// This file is arguably where all the "content" of Hydroponics lies, the framework being taken
|
||||
// care of mostly in plantpot.dm - though some of it is also based here. This file contains
|
||||
// all plant species and mutations that aren't ones created specifically for setpieces.
|
||||
//
|
||||
// Other files you'll want if you're looking up on Hydroponics stuff:
|
||||
// obj/item/plants_food_etc.dm: Most of the seed and produce items are in here.
|
||||
// obj/item/hydroponics.dm: The tools players use to do hydro work are here.
|
||||
// obj/machinery/plantpot.dm: The plantpot file, where most of the Stuff happens.
|
||||
// obj/submachine/seed.dm: The splicer and reagent extractor are in here.
|
||||
|
||||
/datum/plant/
|
||||
// Standard variables for plants are added here.
|
||||
var/name = "plant species name" // Name of the plant species
|
||||
var/sprite = null // The plant's normal sprite - overridden by special_icon
|
||||
var/growthmode = "normal" // what "family" is this plant part of? used for various things
|
||||
var/nothirst = 0 // For weeds - won't die or halt growth from drought
|
||||
var/simplegrowth = 0 // For boring decorative plants that don't do anything
|
||||
var/special_icon = null // If you need the icon to be different to the name
|
||||
var/special_dmi = null // If you need a new DMI for whatever reason. why not!
|
||||
var/crop = null // What crop does this plant produce?
|
||||
var/force_seed_on_harvest = 0 // an override so plants like synthmeat can give seeds
|
||||
var/starthealth = 0 // What health does this plant start at?
|
||||
var/growtime = 0 // How long it takes this plant to mature
|
||||
var/harvtime = 0 // How long it takes this plant to produce harvests after maturing
|
||||
var/cropsize = 0 // How many items you get per harvest
|
||||
var/harvestable = 1 // Does this plant even produce anything
|
||||
var/harvests = 1 // How many times you can harvest this species
|
||||
var/endurance = 0 // How much endurance this species normally has
|
||||
var/isgrass = 0 // Always dies after one harvest
|
||||
var/cantscan = 0 // Can't be scanned by an analyzer
|
||||
var/nectarlevel = 0 //If nonzero, slowly tries to maintain this level of nectar reagent.
|
||||
var/list/assoc_reagents = list() // Used for extractions, harvesting, etc
|
||||
var/list/commuts = list() // What general mutations can occur in this plant?
|
||||
var/list/mutations = list() // what mutant variants does this plant have?
|
||||
var/genome = 0 // Used for splicing - how "similar" the plants are = better odds of splice
|
||||
|
||||
var/special_proc = 0 // Does this plant do something special when it's in the pot?
|
||||
var/attacked_proc = 0 // Does this plant react if you try to attack it?
|
||||
var/harvested_proc = 0 // Take a guess
|
||||
|
||||
var/category = null // Used for vendor filtering
|
||||
var/vending = 1 // 1 = Appears in seed vendors, 2 = appears when hacked, 0 = doesn't appear
|
||||
var/unique_seed = null // Does this plant produce a paticular instance of seeds?
|
||||
var/seedcolor = "#000000" // color on the seed packet, if applicable
|
||||
var/hybrid = 0 // used for seed manipulator stuff
|
||||
|
||||
var/lasterr = 0
|
||||
|
||||
// fixed some runtime errors here - singh
|
||||
// hyp procs now return 0 for success and continue, any other number for error codes
|
||||
// for now its setup as ABB where A = proc type and B = error
|
||||
// proc 100: HYPspecial
|
||||
// proc 200: HYPattacked
|
||||
// proc 300: HYPharvested
|
||||
// proc 400: HYPspecial_M
|
||||
// error 1: called with null pot
|
||||
// error 2: called when plant is dead or no plant exists
|
||||
// error 3: called with a plant that is not ready to harvest
|
||||
// when overriding these in child types start the child proc with
|
||||
/*
|
||||
..()
|
||||
if (.) return
|
||||
*/
|
||||
// ..() calls the parent type which performs the check and returns 0 or an error code
|
||||
// . holds the return value, after ..() executes the child version continues running
|
||||
// so it needs to check . to check the return of the parent type and decide whether
|
||||
// or not to continue
|
||||
|
||||
proc/HYPspecial_proc(var/obj/machinery/plantpot/POT)
|
||||
lasterr = 0
|
||||
if (!POT) lasterr = 101
|
||||
if (POT.dead || !POT.current) lasterr = 102
|
||||
if (lasterr)
|
||||
logTheThing("debug", null, null, "<b>Plant HYP</b> [src] in pot [POT] failed with error [.]")
|
||||
special_proc = 0
|
||||
return lasterr
|
||||
|
||||
proc/HYPattacked_proc(var/obj/machinery/plantpot/POT,var/mob/user)
|
||||
// If it returns 0, it should halt the proc that called it also
|
||||
lasterr = 0
|
||||
if (!POT || !user) lasterr = 201
|
||||
if (POT.dead || !POT.current) lasterr = 202
|
||||
if (lasterr)
|
||||
logTheThing("debug", null, null, "<b>Plant HYP</b> [src] in pot [POT] failed with error [.]")
|
||||
attacked_proc = 0
|
||||
return lasterr
|
||||
|
||||
proc/HYPharvested_proc(var/obj/machinery/plantpot/POT,var/mob/user)
|
||||
lasterr = 0
|
||||
if (!POT || !user) return 301
|
||||
if (POT.dead || !POT.current) return 302
|
||||
if (!src.harvestable || !src.crop) return 303
|
||||
if (lasterr)
|
||||
logTheThing("debug", null, null, "<b>Plant HYP</b> [src] in pot [POT] failed with error [.]")
|
||||
harvested_proc = 0
|
||||
return lasterr
|
||||
|
||||
proc/HYPinfusionP(var/obj/item/seed/S,var/reagent)
|
||||
var/datum/plantgenes/DNA = S.plantgenes
|
||||
|
||||
var/damage_prob = 100 - (src.endurance + DNA.endurance)
|
||||
damage_prob = max(0,min(100,damage_prob))
|
||||
var/damage_amt = 0
|
||||
switch (reagent)
|
||||
if ("napalm","infernite","thalmerite","sorium")
|
||||
damage_amt = rand(80,100)
|
||||
if ("pacid")
|
||||
damage_amt = rand(75,80)
|
||||
if ("acid")
|
||||
damage_amt = rand(40,50)
|
||||
if ("weedkiller")
|
||||
if (!HYPCheckCommut(DNA,/datum/plant_gene_strain/immunity_toxin) && src.growthmode == "weed")
|
||||
damage_amt = rand(50,60)
|
||||
if ("toxin","mercury","chlorine","fluorine","fuel","oil","cleaner")
|
||||
if (!HYPCheckCommut(DNA,/datum/plant_gene_strain/immunity_toxin))
|
||||
damage_amt = rand(15,30)
|
||||
if ("plasma")
|
||||
if (!HYPCheckCommut(DNA,/datum/plant_gene_strain/immunity_toxin))
|
||||
damage_amt = rand(15,30)
|
||||
if ("blood","bloodc")
|
||||
if (src.growthmode == "carnivore")
|
||||
DNA.growtime -= rand(5,10)
|
||||
DNA.harvtime -= rand(5,10)
|
||||
DNA.endurance += rand(10,30)
|
||||
if ("radium","uranium")
|
||||
damage_amt = rand(5,15)
|
||||
HYPmutateDNA(DNA,1)
|
||||
HYPnewcommutcheck(src,DNA)
|
||||
HYPnewmutationcheck(src,DNA)
|
||||
if ("dna_mutagen")
|
||||
HYPmutateDNA(DNA,1)
|
||||
HYPnewcommutcheck(src,DNA)
|
||||
HYPnewmutationcheck(src,DNA)
|
||||
if (prob(2))
|
||||
HYPaddCommut(DNA,/datum/plant_gene_strain/unstable)
|
||||
if ("mutagen")
|
||||
HYPmutateDNA(DNA,2)
|
||||
HYPnewcommutcheck(src,DNA)
|
||||
HYPnewmutationcheck(src,DNA)
|
||||
if (prob(5))
|
||||
HYPaddCommut(DNA,/datum/plant_gene_strain/unstable)
|
||||
if ("ammonia")
|
||||
damage_amt = rand(10,20)
|
||||
DNA.growtime -= rand(5,10)
|
||||
DNA.harvtime -= rand(2,5)
|
||||
if (prob(5))
|
||||
HYPaddCommut(DNA,/datum/plant_gene_strain/accelerator)
|
||||
if ("potash")
|
||||
DNA.cropsize += rand(1,4)
|
||||
DNA.harvests -= rand(0,2)
|
||||
if ("saltpetre")
|
||||
DNA.potency += rand(2,8)
|
||||
DNA.cropsize += rand(0,2)
|
||||
if ("space_fungus")
|
||||
DNA.endurance += rand(1,3)
|
||||
if (prob(3))
|
||||
HYPaddCommut(DNA,/datum/plant_gene_strain/damage_res)
|
||||
if ("mutadone")
|
||||
if (DNA.growtime > 0)
|
||||
DNA.growtime--
|
||||
if (DNA.harvtime > 0)
|
||||
DNA.harvtime--
|
||||
if (DNA.harvests < 0)
|
||||
DNA.harvests++
|
||||
if (DNA.cropsize < 0)
|
||||
DNA.cropsize++
|
||||
if (DNA.potency < 0)
|
||||
DNA.potency++
|
||||
if (DNA.endurance < 0)
|
||||
DNA.endurance++
|
||||
|
||||
if (damage_amt)
|
||||
if (prob(damage_prob)) S.seeddamage += damage_amt
|
||||
if (S.seeddamage > 99)
|
||||
return 99 // destroy the seed
|
||||
|
||||
/datum/plantgenes/
|
||||
var/growtime = 0 // These vars are pretty much bonuses/penalties applied on top of the
|
||||
var/harvtime = 0 // same vars found in /datum/plant honestly. They go largely towards
|
||||
var/harvests = 0 // the same purpose for the most part.
|
||||
var/cropsize = 0
|
||||
var/potency = 0 // Apart from this one - this one deals with reagents.
|
||||
var/endurance = 0
|
||||
var/list/commuts = list() // General transferrable mutations
|
||||
var/datum/plantmutation/mutation = null // is it mutated? if so which variation?
|
||||
var/list/alleles = list(0,0,0,0,0,0,0)
|
||||
// Order goes:
|
||||
// Species, Growtime, Harvtime, Cropsize, Harvests, Potency, Endurance
|
||||
// Species allele controls name, appearance, crop produce and mutations
|
||||
// 1 is dominant, else recessive
|
||||
|
||||
New(var/loc,var/random_alleles = 1)
|
||||
if (random_alleles)
|
||||
src.alleles[1] = rand(0,1)
|
||||
src.alleles[2] = rand(0,1)
|
||||
src.alleles[3] = rand(0,1)
|
||||
src.alleles[4] = rand(0,1)
|
||||
src.alleles[5] = rand(0,1)
|
||||
src.alleles[6] = rand(0,1)
|
||||
src.alleles[7] = rand(0,1)
|
||||
// optimise this later
|
||||
@@ -0,0 +1,155 @@
|
||||
/datum/plant/artifact
|
||||
name = "Unknown"
|
||||
special_dmi = 'icons/obj/hydroponics/hydro_alien.dmi'
|
||||
cantscan = 1
|
||||
vending = 0
|
||||
|
||||
// non-harvestables
|
||||
|
||||
/datum/plant/artifact/pukeplant
|
||||
name = "Puker"
|
||||
growthmode = "weed"
|
||||
special_icon = "puker"
|
||||
unique_seed = /obj/item/seed/alien/pukeplant
|
||||
nothirst = 1
|
||||
starthealth = 80
|
||||
growtime = 60
|
||||
harvtime = 140
|
||||
harvestable = 0
|
||||
endurance = 40
|
||||
special_proc = 1
|
||||
|
||||
HYPspecial_proc(var/obj/machinery/plantpot/POT)
|
||||
..()
|
||||
if (.) return
|
||||
var/datum/plant/P = POT.current
|
||||
var/datum/plantgenes/DNA = POT.plantgenes
|
||||
|
||||
if (POT.growth > (P.harvtime + DNA.harvtime) && prob(20))
|
||||
POT.visible_message("<span style=\"color:red\"><b>[POT.name]</b> vomits profusely!</span>")
|
||||
playsound(POT.loc, "sound/effects/splat.ogg", 50, 1)
|
||||
if(!locate(/obj/decal/cleanable/vomit) in POT.loc) new /obj/decal/cleanable/vomit(POT.loc)
|
||||
|
||||
/datum/plant/artifact/peeker
|
||||
name = "Peeker"
|
||||
growthmode = "weed"
|
||||
special_icon = "peeker"
|
||||
unique_seed = /obj/item/seed/alien/peeker
|
||||
nothirst = 1
|
||||
starthealth = 120
|
||||
growtime = 20
|
||||
harvtime = 100
|
||||
harvestable = 0
|
||||
endurance = 60
|
||||
special_proc = 1
|
||||
|
||||
HYPspecial_proc(var/obj/machinery/plantpot/POT)
|
||||
..()
|
||||
if (.) return
|
||||
var/datum/plant/P = POT.current
|
||||
var/datum/plantgenes/DNA = POT.plantgenes
|
||||
|
||||
if (POT.growth > (P.growtime + DNA.growtime) && prob(16))
|
||||
var/list/stuffnearby = list()
|
||||
for (var/mob/living/X in view(7,POT)) stuffnearby.Add("[X.name]")
|
||||
for (var/obj/item/X in view(7,POT)) stuffnearby.Add("[X.name]")
|
||||
if (stuffnearby.len > 1) POT.visible_message("<span style=\"color:red\"><b>[POT.name]</b> stares at [pick(stuffnearby)].</span>")
|
||||
|
||||
// harvestables
|
||||
|
||||
/datum/plant/artifact/dripper
|
||||
name = "Dripper"
|
||||
special_icon = "dripper"
|
||||
crop = /obj/item/reagent_containers/food/snacks/plant/purplegoop
|
||||
unique_seed = /obj/item/seed/alien/dripper
|
||||
starthealth = 4
|
||||
growtime = 15
|
||||
harvtime = 45
|
||||
cropsize = 3
|
||||
harvests = 6
|
||||
endurance = 0
|
||||
assoc_reagents = list("plasma")
|
||||
|
||||
/datum/plant/artifact/rocks
|
||||
name = "Rock"
|
||||
special_icon = "rocks"
|
||||
crop = /obj/item/raw_material/rock
|
||||
unique_seed = /obj/item/seed/alien/rocks
|
||||
starthealth = 80
|
||||
growtime = 220
|
||||
harvtime = 500
|
||||
cropsize = 3
|
||||
harvests = 8
|
||||
endurance = 40
|
||||
force_seed_on_harvest = 1
|
||||
mutations = list(/datum/plantmutation/rocks/syreline,/datum/plantmutation/rocks/bohrum,/datum/plantmutation/rocks/mauxite,/datum/plantmutation/rocks/erebite)
|
||||
|
||||
/datum/plant/artifact/litelotus
|
||||
name = "Light Lotus"
|
||||
special_icon = "litelotus"
|
||||
crop = /obj/item/reagent_containers/food/snacks/plant/glowfruit
|
||||
unique_seed = /obj/item/seed/alien/litelotus
|
||||
starthealth = 30
|
||||
growtime = 280
|
||||
harvtime = 300
|
||||
cropsize = 2
|
||||
harvests = 2
|
||||
endurance = 20
|
||||
assoc_reagents = list("omnizine")
|
||||
|
||||
// Weird Shit
|
||||
|
||||
/datum/plant/maneater
|
||||
name = "Man-Eating"
|
||||
sprite = "Maneater"
|
||||
growthmode = "carnivore"
|
||||
unique_seed = /obj/item/seed/maneater
|
||||
starthealth = 40
|
||||
growtime = 30
|
||||
harvtime = 200
|
||||
harvestable = 0
|
||||
endurance = 10
|
||||
special_proc = 1
|
||||
attacked_proc = 1
|
||||
vending = 0
|
||||
|
||||
HYPspecial_proc(var/obj/machinery/plantpot/POT)
|
||||
..()
|
||||
if (.) return
|
||||
var/datum/plant/P = POT.current
|
||||
var/datum/plantgenes/DNA = POT.plantgenes
|
||||
if (POT.growth > (P.growtime + DNA.growtime) && prob(4))
|
||||
var/MEspeech = pick("Feed me!", "I'm hungryyyy...", "Give me blood!", "I'm starving!", "What's for dinner?")
|
||||
for(var/mob/M in hearers(POT, null)) M.show_message("<B>Man-Eating Plant</B> gurgles, \"[MEspeech]\"")
|
||||
if (POT.growth > (P.harvtime + DNA.harvtime))
|
||||
var/obj/critter/maneater/ME = new(POT.loc)
|
||||
ME.health = POT.health * 3
|
||||
ME.friends = ME.friends | POT.contributors
|
||||
POT.visible_message("<span style=\"color:blue\">The man-eating plant climbs out of the tray!</span>")
|
||||
POT.HYPdestroyplant()
|
||||
return
|
||||
|
||||
HYPattacked_proc(var/obj/machinery/plantpot/POT,var/mob/user)
|
||||
..()
|
||||
if (.) return
|
||||
var/datum/plant/P = POT.current
|
||||
var/datum/plantgenes/DNA = POT.plantgenes
|
||||
|
||||
if (POT.growth < (P.growtime + DNA.growtime)) return 0
|
||||
|
||||
var/MEspeech = pick("Hands off, asshole!","The hell d'you think you're doin'?!","You dick!","Bite me, motherfucker!")
|
||||
for(var/mob/O in hearers(POT, null))
|
||||
O.show_message("<B>Man-Eating Plant</B> gurgles, \"[MEspeech]\"", 1)
|
||||
boutput(user, "<span style=\"color:red\">The plant angrily bites you!</span>")
|
||||
random_brute_damage(user, 9)
|
||||
return 1
|
||||
|
||||
/datum/plant/crystal
|
||||
name = "Crystal"
|
||||
starthealth = 50
|
||||
growtime = 300
|
||||
harvtime = 600
|
||||
harvestable = 0
|
||||
endurance = 100
|
||||
simplegrowth = 1
|
||||
vending = 0
|
||||
@@ -0,0 +1,179 @@
|
||||
/datum/plant/wheat
|
||||
name = "Wheat"
|
||||
category = "Miscellaneous"
|
||||
seedcolor = "#FFFF88"
|
||||
crop = /obj/item/plant/wheat
|
||||
starthealth = 15
|
||||
growtime = 40
|
||||
harvtime = 80
|
||||
cropsize = 5
|
||||
harvests = 1
|
||||
isgrass = 1
|
||||
endurance = 0
|
||||
genome = 10
|
||||
mutations = list(/datum/plantmutation/wheat/steelwheat)
|
||||
commuts = list(/datum/plant_gene_strain/growth_fast,/datum/plant_gene_strain/health_poor)
|
||||
|
||||
HYPinfusionP(var/obj/item/seed/S,var/reagent)
|
||||
..()
|
||||
var/datum/plantgenes/DNA = S.plantgenes
|
||||
if (!DNA) return
|
||||
if (reagent == "iron")
|
||||
DNA.mutation = HY_get_mutation_from_path(/datum/plantmutation/wheat/steelwheat)
|
||||
|
||||
/datum/plant/rice
|
||||
name = "Rice"
|
||||
category = "Miscellaneous"
|
||||
seedcolor = "#FFFFAA"
|
||||
crop = /obj/item/reagent_containers/food/snacks/ingredient/rice
|
||||
starthealth = 20
|
||||
growtime = 30
|
||||
harvtime = 70
|
||||
cropsize = 4
|
||||
harvests = 1
|
||||
isgrass = 1
|
||||
endurance = 0
|
||||
genome = 8
|
||||
vending = 0
|
||||
commuts = list(/datum/plant_gene_strain/yield,/datum/plant_gene_strain/health_poor)
|
||||
|
||||
/datum/plant/beans
|
||||
name = "Bean"
|
||||
category = "Miscellaneous"
|
||||
seedcolor = "#AA7777"
|
||||
crop = /obj/item/reagent_containers/food/snacks/ingredient/bean
|
||||
starthealth = 40
|
||||
growtime = 50
|
||||
harvtime = 130
|
||||
cropsize = 4
|
||||
harvests = 5
|
||||
endurance = 0
|
||||
genome = 6
|
||||
vending = 0
|
||||
commuts = list(/datum/plant_gene_strain/immunity_toxin,/datum/plant_gene_strain/metabolism_slow)
|
||||
|
||||
/datum/plant/corn
|
||||
name = "Corn"
|
||||
category = "Miscellaneous"
|
||||
seedcolor = "#FFFF00"
|
||||
crop = /obj/item/reagent_containers/food/snacks/plant/corn
|
||||
starthealth = 20
|
||||
growtime = 60
|
||||
harvtime = 110
|
||||
cropsize = 3
|
||||
harvests = 3
|
||||
endurance = 2
|
||||
genome = 10
|
||||
commuts = list(/datum/plant_gene_strain/photosynthesis,/datum/plant_gene_strain/splicing/bad)
|
||||
assoc_reagents = list("cornstarch")
|
||||
|
||||
/datum/plant/synthmeat
|
||||
name = "Synthmeat"
|
||||
category = "Miscellaneous"
|
||||
seedcolor = "#550000"
|
||||
crop = /obj/item/reagent_containers/food/snacks/ingredient/meat/synthmeat
|
||||
starthealth = 5
|
||||
growtime = 60
|
||||
harvtime = 120
|
||||
cropsize = 3
|
||||
harvests = 2
|
||||
endurance = 3
|
||||
force_seed_on_harvest = 1
|
||||
genome = 7
|
||||
special_proc = 1
|
||||
assoc_reagents = list("synthflesh")
|
||||
mutations = list(/datum/plantmutation/synthmeat/butt,/datum/plantmutation/synthmeat/limb,/datum/plantmutation/synthmeat/organ)
|
||||
commuts = list(/datum/plant_gene_strain/yield,/datum/plant_gene_strain/unstable)
|
||||
|
||||
HYPinfusionP(var/obj/item/seed/S,var/reagent)
|
||||
..()
|
||||
var/datum/plantgenes/DNA = S.plantgenes
|
||||
if (!DNA) return
|
||||
if (reagent == "nanites" && (DNA.mutation && istype(DNA.mutation,/datum/plantmutation/synthmeat/butt)))
|
||||
DNA.mutation = HY_get_mutation_from_path(/datum/plantmutation/synthmeat/butt/buttbot)
|
||||
|
||||
/obj/item/clothing/head/butt/synth
|
||||
name = "synthetic butt"
|
||||
desc = "Why would you even grow this. What the fuck is wrong with you?"
|
||||
|
||||
/obj/machinery/bot/buttbot/synth
|
||||
name = "Organic Buttbot"
|
||||
desc = "What part of this even makes any sense."
|
||||
|
||||
/datum/plant/sugar
|
||||
name = "Sugar"
|
||||
category = "Miscellaneous"
|
||||
seedcolor = "#BBBBBB"
|
||||
crop = /obj/item/plant/sugar
|
||||
starthealth = 10
|
||||
growtime = 30
|
||||
harvtime = 60
|
||||
cropsize = 7
|
||||
harvests = 1
|
||||
isgrass = 1
|
||||
endurance = 0
|
||||
genome = 8
|
||||
commuts = list(/datum/plant_gene_strain/quality,/datum/plant_gene_strain/terminator)
|
||||
assoc_reagents = list("sugar")
|
||||
|
||||
/datum/plant/soy
|
||||
name = "Soybean"
|
||||
category = "Miscellaneous"
|
||||
seedcolor = "#CCCC88"
|
||||
crop = /obj/item/reagent_containers/food/snacks/plant/soy
|
||||
starthealth = 15
|
||||
growtime = 60
|
||||
harvtime = 105
|
||||
cropsize = 4
|
||||
harvests = 3
|
||||
endurance = 1
|
||||
genome = 7
|
||||
commuts = list(/datum/plant_gene_strain/metabolism_fast,/datum/plant_gene_strain/quality/inferior)
|
||||
assoc_reagents = list("grease")
|
||||
mutations = list(/datum/plantmutation/soy/soylent)
|
||||
|
||||
/datum/plant/peanut
|
||||
name = "Peanut"
|
||||
category = "Miscellaneous"
|
||||
seedcolor = "#999900"
|
||||
crop = /obj/item/reagent_containers/food/snacks/plant/peanuts
|
||||
starthealth = 40
|
||||
growtime = 80
|
||||
harvtime = 160
|
||||
cropsize = 4
|
||||
harvests = 1
|
||||
isgrass = 1
|
||||
endurance = 10
|
||||
genome = 6
|
||||
|
||||
/datum/plant/cotton
|
||||
name = "Cotton"
|
||||
category = "Miscellaneous"
|
||||
seedcolor = "#FFFFFF"
|
||||
crop = /obj/item/raw_material/cotton
|
||||
starthealth = 10
|
||||
growtime = 40
|
||||
harvtime = 150
|
||||
cropsize = 4
|
||||
harvests = 4
|
||||
endurance = 0
|
||||
genome = 5
|
||||
force_seed_on_harvest = 1
|
||||
commuts = list(/datum/plant_gene_strain/immunity_radiation,/datum/plant_gene_strain/metabolism_slow)
|
||||
|
||||
/datum/plant/tree // :effort:
|
||||
name = "Tree"
|
||||
category = "Miscellaneous"
|
||||
seedcolor = "#9C5E13"
|
||||
crop = /obj/item/plank
|
||||
starthealth = 40
|
||||
growtime = 200
|
||||
harvtime = 260
|
||||
cropsize = 3
|
||||
harvests = 10
|
||||
endurance = 5
|
||||
genome = 20
|
||||
force_seed_on_harvest = 1
|
||||
vending = 1
|
||||
mutations = list(/datum/plantmutation/tree/money)
|
||||
commuts = list(/datum/plant_gene_strain/metabolism_fast,/datum/plant_gene_strain/metabolism_slow,/datum/plant_gene_strain/resistance_drought)
|
||||
@@ -0,0 +1,234 @@
|
||||
/datum/plant/tomato
|
||||
name = "Tomato" // You want to capitalise this, it shows up in the seed vendor and plant pot
|
||||
category = "Fruit" // This is either Fruit, Vegetable, Herb or Miscellaneous
|
||||
seedcolor = "#CC0000" // Hex string for color. Don't forget the hash!
|
||||
crop = /obj/item/reagent_containers/food/snacks/plant/tomato
|
||||
starthealth = 20
|
||||
growtime = 75
|
||||
harvtime = 110
|
||||
cropsize = 3
|
||||
harvests = 3
|
||||
endurance = 3
|
||||
nectarlevel = 5
|
||||
genome = 18
|
||||
assoc_reagents = list("juice_tomato")
|
||||
commuts = list(/datum/plant_gene_strain/splicing,/datum/plant_gene_strain/quality/inferior)
|
||||
|
||||
HYPinfusionP(var/obj/item/seed/S,var/reagent)
|
||||
..()
|
||||
var/datum/plantgenes/DNA = S.plantgenes
|
||||
if (!DNA) return
|
||||
switch(reagent)
|
||||
if("napalm","infernite","thalmerite","sorium")
|
||||
if (prob(50))
|
||||
DNA.mutation = HY_get_mutation_from_path(/datum/plantmutation/tomato/explosive)
|
||||
if("strange_reagent")
|
||||
if (prob(50))
|
||||
DNA.mutation = HY_get_mutation_from_path(/datum/plantmutation/tomato/killer)
|
||||
|
||||
/datum/plant/grape
|
||||
name = "Grape"
|
||||
category = "Fruit"
|
||||
seedcolor = "#8800CC"
|
||||
crop = /obj/item/reagent_containers/food/snacks/plant/grape
|
||||
starthealth = 5
|
||||
growtime = 40
|
||||
harvtime = 120
|
||||
cropsize = 5
|
||||
harvests = 2
|
||||
endurance = 0
|
||||
genome = 20
|
||||
nectarlevel = 10
|
||||
mutations = list(/datum/plantmutation/grapes/green)
|
||||
commuts = list(/datum/plant_gene_strain/metabolism_fast,/datum/plant_gene_strain/seedless)
|
||||
|
||||
/datum/plant/orange
|
||||
name = "Orange"
|
||||
category = "Fruit"
|
||||
seedcolor = "#FF8800"
|
||||
crop = /obj/item/reagent_containers/food/snacks/plant/orange
|
||||
starthealth = 20
|
||||
growtime = 60
|
||||
harvtime = 100
|
||||
cropsize = 2
|
||||
harvests = 3
|
||||
endurance = 3
|
||||
genome = 21
|
||||
nectarlevel = 10
|
||||
mutations = list(/datum/plantmutation/orange/blood, /datum/plantmutation/orange/clockwork)
|
||||
commuts = list(/datum/plant_gene_strain/splicing,/datum/plant_gene_strain/damage_res/bad)
|
||||
assoc_reagents = list("juice_orange")
|
||||
|
||||
/datum/plant/melon
|
||||
name = "Melon"
|
||||
category = "Fruit"
|
||||
seedcolor = "#33BB00"
|
||||
crop = /obj/item/reagent_containers/food/snacks/plant/melon
|
||||
starthealth = 80
|
||||
growtime = 120
|
||||
harvtime = 200
|
||||
cropsize = 2
|
||||
harvests = 5
|
||||
endurance = 5
|
||||
genome = 19
|
||||
assoc_reagents = list("water")
|
||||
nectarlevel = 15
|
||||
mutations = list(/datum/plantmutation/melon/george)
|
||||
commuts = list(/datum/plant_gene_strain/immortal,/datum/plant_gene_strain/seedless)
|
||||
|
||||
/datum/plant/chili
|
||||
name = "Chili"
|
||||
category = "Fruit"
|
||||
seedcolor = "#FF0000"
|
||||
crop = /obj/item/reagent_containers/food/snacks/plant/chili
|
||||
starthealth = 20
|
||||
growtime = 60
|
||||
harvtime = 100
|
||||
cropsize = 3
|
||||
harvests = 3
|
||||
endurance = 3
|
||||
genome = 17
|
||||
assoc_reagents = list("capsaicin")
|
||||
mutations = list(/datum/plantmutation/chili/chilly,/datum/plantmutation/chili/ghost)
|
||||
commuts = list(/datum/plant_gene_strain/immunity_toxin,/datum/plant_gene_strain/growth_slow)
|
||||
|
||||
HYPinfusionP(var/obj/item/seed/S,var/reagent)
|
||||
..()
|
||||
var/datum/plantgenes/DNA = S.plantgenes
|
||||
if (!DNA) return
|
||||
switch(reagent)
|
||||
if("cryostylane")
|
||||
if (prob(80))
|
||||
DNA.mutation = HY_get_mutation_from_path(/datum/plantmutation/chili/chilly)
|
||||
if("cryoxadone")
|
||||
if (prob(40))
|
||||
DNA.mutation = HY_get_mutation_from_path(/datum/plantmutation/chili/chilly)
|
||||
if("el_diablo")
|
||||
if (prob(60))
|
||||
DNA.mutation = HY_get_mutation_from_path(/datum/plantmutation/chili/ghost)
|
||||
if("napalm")
|
||||
if (prob(95))
|
||||
DNA.mutation = HY_get_mutation_from_path(/datum/plantmutation/chili/ghost)
|
||||
|
||||
/datum/plant/apple
|
||||
name = "Apple"
|
||||
category = "Fruit"
|
||||
seedcolor = "#00AA00"
|
||||
crop = /obj/item/reagent_containers/food/snacks/plant/apple
|
||||
starthealth = 40
|
||||
growtime = 200
|
||||
harvtime = 260
|
||||
cropsize = 3
|
||||
harvests = 10
|
||||
endurance = 5
|
||||
genome = 19
|
||||
commuts = list(/datum/plant_gene_strain/quality,/datum/plant_gene_strain/unstable)
|
||||
|
||||
/datum/plant/banana
|
||||
name = "Banana"
|
||||
category = "Fruit"
|
||||
seedcolor = "#CCFF99"
|
||||
crop = /obj/item/reagent_containers/food/snacks/plant/banana
|
||||
starthealth = 15
|
||||
growtime = 120
|
||||
harvtime = 160
|
||||
cropsize = 5
|
||||
harvests = 4
|
||||
endurance = 3
|
||||
genome = 15
|
||||
assoc_reagents = list("potassium")
|
||||
commuts = list(/datum/plant_gene_strain/immortal,/datum/plant_gene_strain/growth_slow)
|
||||
|
||||
/datum/plant/lime
|
||||
name = "Lime"
|
||||
category = "Fruit"
|
||||
seedcolor = "#00FF00"
|
||||
crop = /obj/item/reagent_containers/food/snacks/plant/lime
|
||||
starthealth = 30
|
||||
growtime = 30
|
||||
harvtime = 100
|
||||
cropsize = 3
|
||||
harvests = 3
|
||||
endurance = 3
|
||||
genome = 21
|
||||
commuts = list(/datum/plant_gene_strain/photosynthesis,/datum/plant_gene_strain/splicing/bad)
|
||||
assoc_reagents = list("juice_lime")
|
||||
|
||||
/datum/plant/lemon
|
||||
name = "Lemon"
|
||||
category = "Fruit"
|
||||
seedcolor = "#FFFF00"
|
||||
crop = /obj/item/reagent_containers/food/snacks/plant/lemon
|
||||
starthealth = 30
|
||||
growtime = 100
|
||||
harvtime = 130
|
||||
cropsize = 3
|
||||
harvests = 3
|
||||
endurance = 3
|
||||
genome = 21
|
||||
assoc_reagents = list("juice_lemon")
|
||||
|
||||
/datum/plant/pumpkin
|
||||
name = "Pumpkin"
|
||||
category = "Fruit"
|
||||
seedcolor = "#DD7733"
|
||||
crop = /obj/item/reagent_containers/food/snacks/plant/pumpkin
|
||||
starthealth = 60
|
||||
growtime = 100
|
||||
harvtime = 175
|
||||
cropsize = 2
|
||||
harvests = 4
|
||||
endurance = 10
|
||||
genome = 19
|
||||
commuts = list(/datum/plant_gene_strain/damage_res,/datum/plant_gene_strain/stabilizer)
|
||||
|
||||
/datum/plant/avocado
|
||||
name = "Avocado"
|
||||
category = "Fruit"
|
||||
seedcolor = "#00CC66"
|
||||
crop = /obj/item/reagent_containers/food/snacks/plant/avocado
|
||||
starthealth = 20
|
||||
growtime = 65
|
||||
harvtime = 110
|
||||
cropsize = 3
|
||||
harvests = 2
|
||||
endurance = 4
|
||||
genome = 18
|
||||
|
||||
/datum/plant/eggplant
|
||||
name = "Eggplant"
|
||||
category = "Fruit"
|
||||
seedcolor = "#CCCCCC"
|
||||
crop = /obj/item/reagent_containers/food/snacks/plant/eggplant
|
||||
starthealth = 25
|
||||
growtime = 70
|
||||
harvtime = 110
|
||||
cropsize = 4
|
||||
harvests = 2
|
||||
endurance = 2
|
||||
genome = 18
|
||||
commuts = list(/datum/plant_gene_strain/mutations,/datum/plant_gene_strain/terminator)
|
||||
mutations = list(/datum/plantmutation/eggplant/literal)
|
||||
assoc_reagents = list("nicotine")
|
||||
|
||||
HYPinfusionP(var/obj/item/seed/S,var/reagent)
|
||||
..()
|
||||
var/datum/plantgenes/DNA = S.plantgenes
|
||||
if (!DNA) return
|
||||
if(reagent == "eggnog" && prob(80))
|
||||
DNA.mutation = HY_get_mutation_from_path(/datum/plantmutation/eggplant/literal)
|
||||
|
||||
/datum/plant/strawberry
|
||||
name = "Strawberry"
|
||||
category = "Fruit"
|
||||
seedcolor = "#FF2244"
|
||||
crop = /obj/item/reagent_containers/food/snacks/plant/strawberry
|
||||
starthealth = 10
|
||||
growtime = 60
|
||||
harvtime = 120
|
||||
cropsize = 2
|
||||
harvests = 3
|
||||
endurance = 1
|
||||
genome = 18
|
||||
nectarlevel = 10
|
||||
assoc_reagents = list("juice_strawberry")
|
||||
@@ -0,0 +1,121 @@
|
||||
/datum/plant/contusine
|
||||
name = "Contusine"
|
||||
category = "Herb"
|
||||
seedcolor = "#DD00AA"
|
||||
crop = /obj/item/plant/herb/contusine
|
||||
starthealth = 20
|
||||
growtime = 30
|
||||
harvtime = 100
|
||||
cropsize = 5
|
||||
harvests = 1
|
||||
isgrass = 1
|
||||
endurance = 0
|
||||
nectarlevel = 10
|
||||
genome = 3
|
||||
assoc_reagents = list("salicylic_acid")
|
||||
mutations = list(/datum/plantmutation/contusine/shivering,/datum/plantmutation/contusine/quivering)
|
||||
|
||||
/datum/plant/nureous
|
||||
name = "Nureous"
|
||||
category = "Herb"
|
||||
seedcolor = "#226600"
|
||||
crop = /obj/item/plant/herb/nureous
|
||||
starthealth = 20
|
||||
growtime = 30
|
||||
harvtime = 100
|
||||
cropsize = 5
|
||||
harvests = 1
|
||||
isgrass = 1
|
||||
endurance = 0
|
||||
nectarlevel = 10
|
||||
genome = 3
|
||||
mutations = list(/datum/plantmutation/nureous/fuzzy)
|
||||
commuts = list(/datum/plant_gene_strain/immunity_radiation,/datum/plant_gene_strain/damage_res/bad)
|
||||
assoc_reagents = list("anti_rad")
|
||||
|
||||
/datum/plant/asomna
|
||||
name = "Asomna"
|
||||
seedcolor = "#00AA77"
|
||||
crop = /obj/item/plant/herb/asomna
|
||||
starthealth = 20
|
||||
growtime = 30
|
||||
harvtime = 100
|
||||
cropsize = 5
|
||||
harvests = 1
|
||||
isgrass = 1
|
||||
endurance = 0
|
||||
nectarlevel = 15
|
||||
genome = 3
|
||||
assoc_reagents = list("ephedrine")
|
||||
mutations = list(/datum/plantmutation/asomna/robust)
|
||||
|
||||
/datum/plant/commol
|
||||
name = "Commol"
|
||||
category = "Herb"
|
||||
seedcolor = "#559900"
|
||||
crop = /obj/item/plant/herb/commol
|
||||
starthealth = 20
|
||||
growtime = 30
|
||||
harvtime = 100
|
||||
cropsize = 5
|
||||
harvests = 1
|
||||
isgrass = 1
|
||||
endurance = 0
|
||||
genome = 16
|
||||
nectarlevel = 5
|
||||
commuts = list(/datum/plant_gene_strain/resistance_drought,/datum/plant_gene_strain/yield/stunted)
|
||||
assoc_reagents = list("silver_sulfadiazine")
|
||||
mutations = list(/datum/plantmutation/commol/burning)
|
||||
|
||||
/datum/plant/venne
|
||||
name = "Venne"
|
||||
category = "Herb"
|
||||
seedcolor = "#DDFF99"
|
||||
crop = /obj/item/plant/herb/venne
|
||||
starthealth = 20
|
||||
growtime = 30
|
||||
harvtime = 100
|
||||
cropsize = 5
|
||||
harvests = 1
|
||||
isgrass = 1
|
||||
endurance = 0
|
||||
nectarlevel = 5
|
||||
genome = 1
|
||||
assoc_reagents = list("charcoal")
|
||||
mutations = list(/datum/plantmutation/venne/toxic,/datum/plantmutation/venne/curative)
|
||||
|
||||
/datum/plant/cannabis
|
||||
name = "Cannabis"
|
||||
category = "Herb"
|
||||
seedcolor = "#66DD66"
|
||||
crop = /obj/item/plant/herb/cannabis
|
||||
starthealth = 10
|
||||
growtime = 30
|
||||
harvtime = 80
|
||||
cropsize = 6
|
||||
harvests = 1
|
||||
endurance = 0
|
||||
isgrass = 1
|
||||
vending = 2
|
||||
nectarlevel = 5
|
||||
genome = 2
|
||||
assoc_reagents = list("THC")
|
||||
mutations = list(/datum/plantmutation/cannabis/rainbow,/datum/plantmutation/cannabis/death,
|
||||
/datum/plantmutation/cannabis/white,/datum/plantmutation/cannabis/ultimate)
|
||||
commuts = list(/datum/plant_gene_strain/resistance_drought,/datum/plant_gene_strain/yield/stunted)
|
||||
|
||||
/datum/plant/catnip
|
||||
name = "Nepeta Cataria"
|
||||
category = "Herb"
|
||||
seedcolor = "#00CA70"
|
||||
crop = /obj/item/plant/herb/catnip
|
||||
starthealth = 10
|
||||
growtime = 30
|
||||
harvtime = 80
|
||||
cropsize = 6
|
||||
harvests = 1
|
||||
endurance = 0
|
||||
isgrass = 1
|
||||
vending = 2
|
||||
genome = 1
|
||||
assoc_reagents = list("catonium")
|
||||
@@ -0,0 +1,89 @@
|
||||
/datum/plant/lettuce
|
||||
name = "Lettuce"
|
||||
category = "Vegetable"
|
||||
seedcolor = "#006622"
|
||||
crop = /obj/item/reagent_containers/food/snacks/plant/lettuce
|
||||
starthealth = 30
|
||||
growtime = 40
|
||||
harvtime = 80
|
||||
cropsize = 8
|
||||
harvests = 1
|
||||
isgrass = 1
|
||||
endurance = 5
|
||||
genome = 12
|
||||
commuts = list(/datum/plant_gene_strain/reagent_adder,/datum/plant_gene_strain/damage_res/bad)
|
||||
|
||||
/datum/plant/cucumber
|
||||
name = "Cucumber"
|
||||
category = "Vegetable"
|
||||
seedcolor = "#005622"
|
||||
crop = /obj/item/reagent_containers/food/snacks/plant/cucumber
|
||||
starthealth = 25
|
||||
growtime = 50
|
||||
harvtime = 100
|
||||
cropsize = 8
|
||||
harvests = 1
|
||||
isgrass = 1
|
||||
endurance = 6
|
||||
genome = 19
|
||||
commuts = list(/datum/plant_gene_strain/damage_res,/datum/plant_gene_strain/stabilizer)
|
||||
|
||||
/datum/plant/carrot
|
||||
name = "Carrot"
|
||||
category = "Vegetable"
|
||||
seedcolor = "#774400"
|
||||
crop = /obj/item/reagent_containers/food/snacks/plant/carrot
|
||||
starthealth = 20
|
||||
growtime = 50
|
||||
harvtime = 100
|
||||
cropsize = 6
|
||||
harvests = 1
|
||||
isgrass = 1
|
||||
endurance = 5
|
||||
genome = 16
|
||||
nectarlevel = 10
|
||||
commuts = list(/datum/plant_gene_strain/immunity_toxin,/datum/plant_gene_strain/mutations/bad)
|
||||
|
||||
/datum/plant/potato
|
||||
name = "Potato"
|
||||
category = "Vegetable"
|
||||
seedcolor = "#555500"
|
||||
crop = /obj/item/reagent_containers/food/snacks/plant/potato
|
||||
starthealth = 40
|
||||
growtime = 80
|
||||
harvtime = 160
|
||||
cropsize = 4
|
||||
harvests = 1
|
||||
isgrass = 1
|
||||
endurance = 10
|
||||
genome = 16
|
||||
nectarlevel = 6
|
||||
commuts = list(/datum/plant_gene_strain/damage_res,/datum/plant_gene_strain/stabilizer)
|
||||
|
||||
/datum/plant/onion
|
||||
name = "Onion"
|
||||
category = "Vegetable"
|
||||
seedcolor = "#DDFFDD"
|
||||
crop = /obj/item/reagent_containers/food/snacks/plant/onion
|
||||
starthealth = 20
|
||||
growtime = 60
|
||||
harvtime = 100
|
||||
cropsize = 3
|
||||
harvests = 1
|
||||
endurance = 3
|
||||
genome = 13
|
||||
commuts = list(/datum/plant_gene_strain/splicing,/datum/plant_gene_strain/reagent_adder/toxic)
|
||||
|
||||
/datum/plant/garlic
|
||||
name = "Garlic"
|
||||
category = "Vegetable"
|
||||
seedcolor = "#BBDDBB"
|
||||
crop = /obj/item/reagent_containers/food/snacks/plant/garlic
|
||||
starthealth = 20
|
||||
growtime = 60
|
||||
harvtime = 100
|
||||
cropsize = 3
|
||||
harvests = 1
|
||||
endurance = 3
|
||||
genome = 13
|
||||
commuts = list(/datum/plant_gene_strain/growth_fast,/datum/plant_gene_strain/terminator)
|
||||
@@ -0,0 +1,240 @@
|
||||
/datum/plant/fungus
|
||||
name = "Fungus"
|
||||
growthmode = "weed"
|
||||
category = "Miscellaneous"
|
||||
seedcolor = "#224400"
|
||||
crop = /obj/item/reagent_containers/food/snacks/mushroom
|
||||
nothirst = 1
|
||||
starthealth = 20
|
||||
growtime = 30
|
||||
harvtime = 250
|
||||
harvests = 10
|
||||
endurance = 40
|
||||
cropsize = 3
|
||||
force_seed_on_harvest = 1
|
||||
vending = 2
|
||||
genome = 30
|
||||
assoc_reagents = list("space_fungus")
|
||||
mutations = list(/datum/plantmutation/fungus/amanita,/datum/plantmutation/fungus/psilocybin)
|
||||
|
||||
/datum/plant/lasher
|
||||
name = "Lasher"
|
||||
growthmode = "weed"
|
||||
category = "Miscellaneous"
|
||||
seedcolor = "#00FFFF"
|
||||
cropsize = 3
|
||||
nothirst = 1
|
||||
starthealth = 45
|
||||
growtime = 50
|
||||
harvtime = 100
|
||||
harvestable = 0
|
||||
endurance = 50
|
||||
isgrass = 1
|
||||
special_proc = 1
|
||||
attacked_proc = 1
|
||||
harvested_proc = 1
|
||||
vending = 2
|
||||
genome = 5
|
||||
mutations = list(/datum/plantmutation/lasher/berries)
|
||||
|
||||
HYPspecial_proc(var/obj/machinery/plantpot/POT)
|
||||
..()
|
||||
if (.) return
|
||||
var/datum/plant/P = POT.current
|
||||
var/datum/plantgenes/DNA = POT.plantgenes
|
||||
|
||||
if (POT.growth > (P.growtime + DNA.growtime) && prob(33))
|
||||
for (var/mob/living/M in range(1,POT))
|
||||
if (POT.health > P.starthealth / 2)
|
||||
random_brute_damage(M, 2)
|
||||
if (prob(20)) M.weakened += 3
|
||||
|
||||
if (POT.health <= P.starthealth / 2) POT.visible_message("<span style=\"color:red\"><b>[POT.name]</b> weakly slaps [M] with a vine!</span>")
|
||||
else POT.visible_message("<span style=\"color:red\"><b>[POT.name]</b> slashes [M] with thorny vines!</span>")
|
||||
|
||||
HYPattacked_proc(var/obj/machinery/plantpot/POT,var/mob/user,var/obj/item/W)
|
||||
..()
|
||||
if (.) return
|
||||
var/datum/plant/P = POT.current
|
||||
var/datum/plantgenes/DNA = POT.plantgenes
|
||||
|
||||
if (POT.growth < (P.growtime + DNA.growtime)) return 0
|
||||
// It's not big enough to be violent yet, so nothing happens
|
||||
|
||||
POT.visible_message("<span style=\"color:red\"><b>[POT.name]</b> violently retaliates against [user.name]!</span>")
|
||||
random_brute_damage(user, 3)
|
||||
if (W && prob(50))
|
||||
boutput(user, "<span style=\"color:red\">The lasher grabs and smashes your [W]!</span>")
|
||||
W.dropped()
|
||||
qdel(W)
|
||||
return 1
|
||||
|
||||
HYPharvested_proc(var/obj/machinery/plantpot/POT,var/mob/user)
|
||||
..()
|
||||
if (.) return
|
||||
if (POT.health > src.starthealth / 2)
|
||||
boutput(user, "<span style=\"color:red\">The lasher flails at you violently! You might need to weaken it first...</span>")
|
||||
return 1
|
||||
else return 0
|
||||
|
||||
/datum/plant/creeper
|
||||
name = "Creeper"
|
||||
unique_seed = /obj/item/seed/creeper
|
||||
growthmode = "weed"
|
||||
category = "Miscellaneous"
|
||||
seedcolor = "#CC00FF"
|
||||
nothirst = 1
|
||||
starthealth = 30
|
||||
growtime = 30
|
||||
harvtime = 100
|
||||
harvestable = 0
|
||||
endurance = 40
|
||||
isgrass = 1
|
||||
special_proc = 1
|
||||
vending = 2
|
||||
genome = 8
|
||||
|
||||
HYPspecial_proc(var/obj/machinery/plantpot/POT)
|
||||
..()
|
||||
if (.) return
|
||||
var/datum/plant/P = POT.current
|
||||
var/datum/plantgenes/DNA = POT.plantgenes
|
||||
|
||||
if (POT.growth > (P.growtime + DNA.growtime) && POT.health > P.starthealth / 2 && prob(33))
|
||||
for (var/obj/machinery/plantpot/C in range(1,POT))
|
||||
var/datum/plant/growing = C.current
|
||||
if (!C.dead && C.current && !istype(growing,/datum/plant/crystal) && !istype(growing,/datum/plant/creeper)) C.health -= 10
|
||||
else if (C.dead) C.HYPdestroyplant()
|
||||
else if (!C.current)
|
||||
var/obj/item/seed/creeper/WS = new(src)
|
||||
C.HYPnewplant(WS)
|
||||
sleep(5)
|
||||
qdel(WS)
|
||||
break
|
||||
|
||||
/datum/plant/radweed
|
||||
name = "Radweed"
|
||||
growthmode = "weed"
|
||||
category = "Miscellaneous"
|
||||
seedcolor = "#55CC55"
|
||||
nothirst = 1
|
||||
starthealth = 40
|
||||
growtime = 140
|
||||
harvtime = 200
|
||||
harvestable = 0
|
||||
endurance = 80
|
||||
special_proc = 1
|
||||
vending = 2
|
||||
genome = 40
|
||||
assoc_reagents = list("radium")
|
||||
mutations = list(/datum/plantmutation/radweed/redweed,/datum/plantmutation/radweed/safeweed)
|
||||
|
||||
HYPspecial_proc(var/obj/machinery/plantpot/POT)
|
||||
..()
|
||||
if (.) return
|
||||
var/datum/plant/P = POT.current
|
||||
var/datum/plantgenes/DNA = POT.plantgenes
|
||||
|
||||
if (POT.growth > (P.harvtime + DNA.harvtime) && prob(10))
|
||||
var/obj/overlay/B = new /obj/overlay( POT.loc )
|
||||
B.icon = 'icons/obj/hydroponics/hydromisc.dmi'
|
||||
B.icon_state = "radpulse"
|
||||
B.name = "radioactive pulse"
|
||||
B.anchored = 1
|
||||
B.density = 0
|
||||
B.layer = 5 // TODO What layer should this be on?
|
||||
spawn(20)
|
||||
qdel(B)
|
||||
var/radstrength = 5
|
||||
var/radrange = 1
|
||||
switch (POT.health)
|
||||
if (21 to 129)
|
||||
radstrength = 15
|
||||
if (130 to 159)
|
||||
radstrength = 25
|
||||
radrange = 2
|
||||
if (160 to INFINITY)
|
||||
radstrength = 50
|
||||
radrange = 3
|
||||
for (var/mob/living/carbon/M in range(radrange,POT))
|
||||
M.irradiate(radstrength)
|
||||
for (var/obj/machinery/plantpot/C in range(radrange,POT))
|
||||
var/datum/plant/growing = C.current
|
||||
if (POT.health <= P.starthealth / 2) break
|
||||
if (istype(growing,/datum/plant/radweed)) continue
|
||||
if (growing) C.HYPmutateplant(radrange * 2)
|
||||
if (growing) C.HYPdamageplant("radiation",rand(0,radrange * 2))
|
||||
|
||||
/datum/plant/slurrypod
|
||||
name = "Slurrypod"
|
||||
growthmode = "weed"
|
||||
category = "Miscellaneous"
|
||||
seedcolor = "#004400"
|
||||
crop = /obj/item/reagent_containers/food/snacks/plant/slurryfruit
|
||||
nothirst = 1
|
||||
starthealth = 25
|
||||
growtime = 30
|
||||
harvtime = 60
|
||||
harvests = 1
|
||||
cropsize = 3
|
||||
endurance = 30
|
||||
special_proc = 1
|
||||
vending = 2
|
||||
genome = 45
|
||||
var/exploding = 0
|
||||
assoc_reagents = list("toxic_slurry")
|
||||
mutations = list(/datum/plantmutation/slurrypod/omega)
|
||||
|
||||
HYPinfusionP(var/obj/item/seed/S,var/reagent)
|
||||
..()
|
||||
var/datum/plantgenes/DNA = S.plantgenes
|
||||
switch(reagent)
|
||||
if ("toxic_slurry","gvomit","gcheese")
|
||||
DNA.endurance += rand(4,8)
|
||||
S.seeddamage = 0
|
||||
if ("charcoal")
|
||||
S.seeddamage = 100
|
||||
|
||||
HYPspecial_proc(var/obj/machinery/plantpot/POT)
|
||||
..()
|
||||
if (.) return
|
||||
var/datum/plant/P = POT.current
|
||||
var/datum/plantgenes/DNA = POT.plantgenes
|
||||
|
||||
if (POT.growth >= (P.harvtime + DNA.harvtime + 50) && prob(10) && !src.exploding)
|
||||
src.exploding = 1
|
||||
POT.visible_message("<span style=\"color:red\"><b>[POT]</b> begins to bubble and expand!</span>")
|
||||
playsound(POT.loc, "sound/effects/bubbles.ogg", 50, 1)
|
||||
|
||||
spawn(50)
|
||||
POT.visible_message("<span style=\"color:red\"><b>[POT]</b> bursts, sending toxic goop everywhere!</span>")
|
||||
playsound(POT.loc, "sound/effects/splat.ogg", 50, 1)
|
||||
|
||||
for (var/mob/living/carbon/human/M in view(3,POT))
|
||||
if(istype(M.wear_suit, /obj/item/clothing/suit/bio_suit) && istype(M.head, /obj/item/clothing/head/bio_hood))
|
||||
boutput(M, "<span style=\"color:blue\">You are splashed by toxic goop, but your biosuit protects you!</span>")
|
||||
continue
|
||||
boutput(M, "<span style=\"color:red\">You are splashed by toxic goop!</span>")
|
||||
M.reagents.add_reagent("toxic_slurry", rand(5,20))
|
||||
for (var/obj/machinery/plantpot/C in view(3,POT)) C.reagents.add_reagent("toxic_slurry", rand(5,10))
|
||||
|
||||
POT.HYPdestroyplant()
|
||||
return
|
||||
|
||||
/datum/plant/grass
|
||||
name = "Grass"
|
||||
growthmode = "weed"
|
||||
category = "Miscellaneous"
|
||||
seedcolor = "#00CC00"
|
||||
crop = /obj/item/seed/grass
|
||||
unique_seed = /obj/item/seed/grass
|
||||
isgrass = 1
|
||||
nothirst = 1
|
||||
starthealth = 5
|
||||
growtime = 15
|
||||
harvtime = 50
|
||||
harvests = 1
|
||||
cropsize = 8
|
||||
endurance = 10
|
||||
vending = 2
|
||||
genome = 4
|
||||
Reference in New Issue
Block a user