Initial Commit

This commit is contained in:
Tobba
2016-03-06 20:52:14 +01:00
commit b181d0b552
4325 changed files with 579453 additions and 0 deletions
+186
View File
@@ -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")
+354
View File
@@ -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
+201
View File
@@ -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
+155
View File
@@ -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
+179
View File
@@ -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)
+234
View File
@@ -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")
+121
View File
@@ -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")
+89
View File
@@ -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)
+240
View File
@@ -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