mirror of
https://github.com/goonstation/goonstation-2020.git
synced 2026-08-23 03:56:15 +01:00
485 lines
13 KiB
Plaintext
485 lines
13 KiB
Plaintext
/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
|
|
var/name_prefix = "" // Prepend to plant name
|
|
var/name_suffix = "" // Append to plant name
|
|
// 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"
|
|
name_prefix = "Seething "
|
|
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"
|
|
name_prefix = "Suspicious "
|
|
crop = /obj/critter/killertomato
|
|
iconmod = "kiltom"
|
|
|
|
/datum/plantmutation/tomato/tomacco
|
|
name = "Tomacco"
|
|
name_suffix = " Tomacco"
|
|
crop = /obj/item/reagent_containers/food/snacks/plant/tomato/tomacco
|
|
iconmod = "kiltom"
|
|
|
|
// Grape Mutations
|
|
|
|
/datum/plantmutation/grapes/green
|
|
name_prefix = "green "
|
|
crop = /obj/item/reagent_containers/food/snacks/plant/grape/green
|
|
iconmod = "Ggrape"
|
|
|
|
// Orange Mutations
|
|
|
|
/datum/plantmutation/orange/blood
|
|
name = "Blood Orange"
|
|
name_prefix = "Blood "
|
|
assoc_reagents = list("bloodc") // heh
|
|
|
|
/datum/plantmutation/orange/clockwork
|
|
name = "Clockwork Orange"
|
|
name_prefix = "Clockwork "
|
|
crop = /obj/item/reagent_containers/food/snacks/plant/orange/clockwork
|
|
assoc_reagents = list("iron")
|
|
ENrange = list(30,null)
|
|
chance = 20
|
|
|
|
// Apple Mutations
|
|
|
|
/datum/plantmutation/apple/poison
|
|
name = "Delicious Apple"
|
|
name_prefix = "Delicious "
|
|
crop = /obj/item/reagent_containers/food/snacks/plant/apple/poison
|
|
iconmod = "poison"
|
|
assoc_reagents = list("capulettium")
|
|
ENrange = list(40,null)
|
|
chance = 10
|
|
|
|
// Melon Mutations
|
|
|
|
/datum/plantmutation/melon/george
|
|
name = "Rainbow Melons"
|
|
name_prefix = "Rainbow "
|
|
crop = /obj/item/reagent_containers/food/snacks/plant/melon/george
|
|
assoc_reagents = list("george_melonium")
|
|
|
|
/datum/plantmutation/melon/balloon
|
|
name = "Balloon Melons"
|
|
name_prefix = "Balloon "
|
|
crop = /obj/item/reagent_containers/balloon
|
|
iconmod = "balloon"
|
|
assoc_reagents = list("helium")
|
|
|
|
/datum/plantmutation/melon/hindenballoon
|
|
name = "Balloon... Melons?"
|
|
name_prefix = "Balloon "
|
|
crop = /obj/item/reagent_containers/balloon
|
|
iconmod = "balloon"
|
|
assoc_reagents = list("hydrogen")
|
|
|
|
/datum/plantmutation/melon/bowling
|
|
name = "Bowling Melons"
|
|
name_prefix = "Bowling "
|
|
crop = /obj/item/reagent_containers/food/snacks/plant/melon/bowling
|
|
ENrange = list(12,null)
|
|
chance = 20
|
|
special_proc_override = 1
|
|
|
|
HYPspecial_proc_M(var/obj/machinery/plantpot/POT)
|
|
..()
|
|
if (.) return
|
|
var/datum/plantgenes/DNA = POT.plantgenes
|
|
|
|
var/thud_prob = max(0,min(100, DNA.endurance / 2))
|
|
|
|
if (prob(thud_prob))
|
|
playsound(POT.loc, "sound/effects/exlow.ogg", 30, 1)
|
|
var/wiggle = 4
|
|
while(wiggle > 0)
|
|
wiggle--
|
|
POT.pixel_x = rand(-2,2)
|
|
POT.pixel_y = rand(-2,2)
|
|
sleep(1)
|
|
POT.pixel_x = 0
|
|
POT.pixel_y = 0
|
|
|
|
// Chili Mutations
|
|
|
|
/datum/plantmutation/chili/chilly
|
|
name = "chilly"
|
|
name_prefix = "chilly "
|
|
iconmod = "chilly"
|
|
crop = /obj/item/reagent_containers/food/snacks/plant/chili/chilly
|
|
assoc_reagents = list("cryostylane")
|
|
|
|
/datum/plantmutation/chili/ghost
|
|
name = "fiery chili"
|
|
name_prefix = "fiery "
|
|
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"
|
|
name_prefix = "free range "
|
|
iconmod = "eggs"
|
|
crop = /obj/item/reagent_containers/food/snacks/ingredient/egg
|
|
|
|
// Wheat Mutations
|
|
|
|
/datum/plantmutation/wheat/durum
|
|
name = "durum wheat"
|
|
name_prefix = "durum "
|
|
crop = /obj/item/plant/wheat/durum
|
|
|
|
/datum/plantmutation/wheat/steelwheat
|
|
name = "steelwheat"
|
|
name_prefix = "steel"
|
|
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/voice/farts/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"
|
|
name_prefix = "Strange "
|
|
crop = /obj/item/reagent_containers/food/snacks/plant/soylent
|
|
iconmod = "soylent"
|
|
|
|
// Contusine Mutations
|
|
|
|
/datum/plantmutation/contusine/shivering
|
|
name = "Shivering Contusine"
|
|
name_prefix = "Shivering "
|
|
iconmod = "shivercon"
|
|
assoc_reagents = list("salbutamol")
|
|
chance = 20
|
|
|
|
/datum/plantmutation/contusine/quivering
|
|
name = "Quivering Contusine"
|
|
name_prefix = "Quivering "
|
|
iconmod = "shivercon"
|
|
assoc_reagents = list("curare")
|
|
chance = 10
|
|
|
|
// Nureous Mutations
|
|
|
|
/datum/plantmutation/nureous/fuzzy
|
|
name = "Fuzzy Nureous"
|
|
name_prefix = "Fuzzy "
|
|
assoc_reagents = list("hairgrownium")
|
|
|
|
// Asomna Mutations
|
|
|
|
/datum/plantmutation/asomna/robust
|
|
name = "Robust Asomna"
|
|
name_prefix = "Robust "
|
|
iconmod = "AsomnaR"
|
|
assoc_reagents = list("methamphetamine")
|
|
chance = 10
|
|
|
|
// Commol Mutations
|
|
|
|
/datum/plantmutation/commol/burning
|
|
name = "Burning Commol"
|
|
name_prefix = "Burning "
|
|
iconmod = "CommolB"
|
|
assoc_reagents = list("phlogiston")
|
|
chance = 10
|
|
|
|
// Venne Mutations
|
|
|
|
/datum/plantmutation/venne/toxic
|
|
name = "Black Venne"
|
|
name_prefix = "Black "
|
|
iconmod = "venneT"
|
|
crop = /obj/item/plant/herb/venne/toxic
|
|
assoc_reagents = list("atropine")
|
|
chance = 10
|
|
|
|
/datum/plantmutation/venne/curative
|
|
name = "Sunrise Venne"
|
|
name_prefix = "Sunrise "
|
|
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"
|
|
name_prefix = "Rainbow "
|
|
iconmod = "megaweed"
|
|
crop = /obj/item/plant/herb/cannabis/mega
|
|
assoc_reagents = list("LSD")
|
|
|
|
/datum/plantmutation/cannabis/death
|
|
name = "Deathweed"
|
|
name_prefix = "Black "
|
|
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"
|
|
name_prefix = "White "
|
|
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"
|
|
name_prefix = "Glowing "
|
|
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"
|
|
name_prefix = "Magic "
|
|
iconmod = "magmush"
|
|
crop = /obj/item/reagent_containers/food/snacks/mushroom/psilocybin
|
|
assoc_reagents = list("psilocybin")
|
|
|
|
/datum/plantmutation/fungus/amanita
|
|
name = "White Fungus"
|
|
name_prefix = "White "
|
|
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"
|
|
name_prefix = "Blooming "
|
|
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"
|
|
name_prefix = "White "
|
|
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.set_density(0)
|
|
B.layer = 5 // TODO what layer should this be on?
|
|
SPAWN_DBG(2 SECONDS)
|
|
qdel(B)
|
|
B=null
|
|
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"
|
|
name_prefix = "Smoldering "
|
|
iconmod = "redweed"
|
|
assoc_reagents = list("phlogiston")
|
|
|
|
// Slurrypod Mutations
|
|
|
|
/datum/plantmutation/slurrypod/omega
|
|
name = "Glowing Slurrypod"
|
|
name_prefix = "Glowing "
|
|
iconmod = "omegaS"
|
|
crop = /obj/item/reagent_containers/food/snacks/plant/slurryfruit/omega
|
|
assoc_reagents = list("omega_mutagen")
|
|
|
|
// Rock Plant Mutations
|
|
|
|
/datum/plantmutation/rocks/syreline
|
|
name_prefix = "Syreline "
|
|
crop = /obj/item/raw_material/syreline
|
|
chance = 40
|
|
|
|
/datum/plantmutation/rocks/bohrum
|
|
name_prefix = "Bohrum "
|
|
crop = /obj/item/raw_material/bohrum
|
|
chance = 20
|
|
|
|
/datum/plantmutation/rocks/mauxite
|
|
name_prefix = "Mauxite "
|
|
crop = /obj/item/raw_material/mauxite
|
|
chance = 10
|
|
|
|
/datum/plantmutation/rocks/erebite
|
|
name_prefix = "Erebite "
|
|
crop = /obj/item/raw_material/erebite
|
|
chance = 5
|
|
|
|
// trees. :effort:
|
|
|
|
/datum/plantmutation/tree/money
|
|
name = "Money Tree"
|
|
name_prefix = "Money "
|
|
iconmod = "Cash"
|
|
crop = /obj/item/spacecash
|
|
chance = 20
|
|
|
|
/datum/plantmutation/tree/rubber
|
|
name = "Rubber Tree"
|
|
name_prefix = "Rubber "
|
|
iconmod = "Rubber"
|
|
crop = /obj/item/material_piece/rubber/latex
|
|
chance = 20
|
|
|
|
/datum/plantmutation/tree/sassafras
|
|
name = "Sassafras Tree"
|
|
name_prefix = "Sassafras "
|
|
iconmod = "Sassafras"
|
|
assoc_reagents = list("safrole")
|
|
crop = /obj/item/plant/herb/sassafras
|
|
|
|
//peanuuts
|
|
|
|
/datum/plantmutation/peanut/sandwich
|
|
name = "Peanutbutter Sandwich"
|
|
name_suffix = "butter Sandwich"
|
|
crop = /obj/item/reagent_containers/food/snacks/sandwich/pb
|
|
iconmod = "Peanut"
|
|
|
|
//Tobacco mutations
|
|
|
|
/datum/plantmutation/tobacco/twobacco
|
|
name = "Twobacco"
|
|
iconmod = "Twobacco"
|
|
PTrange = list(30,null)
|
|
crop = /obj/item/plant/herb/tobacco/twobacco
|
|
assoc_reagents = list("nicotine2")
|
|
chance = 50
|