From c0b8b622c1c9a6cc0c20cdbb414fc59e34560164 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Fri, 25 Jul 2014 22:14:38 +0930 Subject: [PATCH 1/5] Nano templates for Botany machinery. --- nano/templates/botany_editor.tmpl | 56 ++++++++++++++++++++++ nano/templates/botany_isolator.tmpl | 73 +++++++++++++++++++++++++++++ 2 files changed, 129 insertions(+) create mode 100644 nano/templates/botany_editor.tmpl create mode 100644 nano/templates/botany_isolator.tmpl diff --git a/nano/templates/botany_editor.tmpl b/nano/templates/botany_editor.tmpl new file mode 100644 index 00000000000..afd24f0f811 --- /dev/null +++ b/nano/templates/botany_editor.tmpl @@ -0,0 +1,56 @@ + + +{{if data.activity}} + Scanning... +{{else}} +

Buffered Genetic Data

+ {{if data.disk}} +
+
+ Source: +
+
+ {{:data.sourceName}} +
+
+ Gene decay: +
+
+ {{if data.degradation <= 100}} + {{:data.degradation}}% + {{else}} + FURTHER AMENDMENTS NONVIABLE + {{/if}} +
+
+ Locus: +
+
+ {{:data.locus}} +
+ {{:helper.link('Eject Disk', 'circle-arrow-e', {'eject_disk' : 1}, null)}} +
+ {{else}} +
No disk loaded.
+ {{/if}} +

Loaded Material

+ {{if data.loaded}} +
+
+ Target: +
+
+ {{:data.loaded}} +
+ {{if data.degradation <= 100}} + {{:helper.link('Apply Gene Mods', 'gear', {'apply_gene' : 1}, null)}} + {{/if}} + {{:helper.link('Eject Target', 'circle-arrow-e', {'eject_packet' : 1}, null)}} +
+ {{else}} +
No target seed packet loaded
+ {{/if}} +{{/if}} \ No newline at end of file diff --git a/nano/templates/botany_isolator.tmpl b/nano/templates/botany_isolator.tmpl new file mode 100644 index 00000000000..c0e4d4a6131 --- /dev/null +++ b/nano/templates/botany_isolator.tmpl @@ -0,0 +1,73 @@ + + +{{if data.activity}} + Scanning... +{{else}} +

Buffered Genetic Data

+ {{if data.hasGenetics}} +
+
+ Source: +
+
+ {{:data.sourceName}} +
+
+ Gene decay: +
+
+ {{:data.degradation}}% +
+
+ {{if data.disk}} + {{for data.geneMasks}} +
+
+ {{:value.mask}} +
+
+ {{:helper.link('Extract', 'circle-arrow-s', {'get_gene' : value.tag}, null)}} +
+
+ {{empty}} +
Data error. Genetic record corrupt.
+ {{/for}} +
+
+ {{:helper.link('Eject Loaded Disk', 'circle-arrow-e', {'eject_disk' : 1}, null)}} + {{:helper.link('Clear Genetic Buffer', 'gear', {'clear_buffer' : 1}, null)}} +
+ {{else}} +
No disk inserted.
+ {{/if}} + {{else}} +
No data buffered.
+ {{if data.disk}} +
+
+ {{:helper.link('Eject Loaded Disk', 'circle-arrow-e', {'eject_disk' : 1}, null)}} +
+ {{else}} +
No disk inserted.
+ {{/if}} + {{/if}} +

Loaded Material

+ {{if data.loaded}} +
+
+ Packet loaded: +
+
+ {{:data.loaded}} +
+
+ {{:helper.link('Process Genome', 'gear', {'scan_genome' : 1}, null)}}{{:helper.link('Eject Packet', 'circle-arrow-e', {'eject_packet' : 1}, null)}} +
+
+ {{else}} +
No seeds loaded.
+ {{/if}} +{{/if}} \ No newline at end of file From 7fb8f30cc7bac9afd121dd4604010256aad9f260 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Fri, 25 Jul 2014 22:15:33 +0930 Subject: [PATCH 2/5] New machines, adjusted Cael's seeds, rewrote space vines. --- code/modules/hydroponics/grown_inedible.dm | 99 +- code/modules/hydroponics/hydro_tools.dm | 284 ++-- code/modules/hydroponics/hydro_tray.dm | 1368 +++++++--------- code/modules/hydroponics/seed_datums.dm | 1403 +++++++++++++++++ code/modules/hydroponics/seed_machines.dm | 324 ++++ code/modules/hydroponics/seed_mobs.dm | 80 + code/modules/hydroponics/seeds.dm | 1171 ++------------ code/modules/hydroponics/vines.dm | 386 +++++ .../genetics/prehistoric_seeds.dm | 139 ++ 9 files changed, 3276 insertions(+), 1978 deletions(-) create mode 100644 code/modules/hydroponics/seed_datums.dm create mode 100644 code/modules/hydroponics/seed_machines.dm create mode 100644 code/modules/hydroponics/seed_mobs.dm create mode 100644 code/modules/hydroponics/vines.dm create mode 100644 code/modules/research/xenoarchaeology/genetics/prehistoric_seeds.dm diff --git a/code/modules/hydroponics/grown_inedible.dm b/code/modules/hydroponics/grown_inedible.dm index ee8697578c4..7db850670f1 100644 --- a/code/modules/hydroponics/grown_inedible.dm +++ b/code/modules/hydroponics/grown_inedible.dm @@ -5,26 +5,39 @@ /obj/item/weapon/grown // Grown weapons name = "grown_weapon" icon = 'icons/obj/weapons.dmi' - var/seed = "" - var/plantname = "" - var/productname = "" - var/species = "" - var/lifespan = 20 - var/endurance = 15 - var/maturation = 7 - var/production = 7 - var/yield = 2 + var/plantname var/potency = 1 - var/plant_type = 0 - New() - var/datum/reagents/R = new/datum/reagents(50) - reagents = R - R.my_atom = src + +/obj/item/weapon/grown/New() + + ..() + + var/datum/reagents/R = new/datum/reagents(50) + reagents = R + R.my_atom = src + + //Handle some post-spawn var stuff. + spawn(1) + // Fill the object up with the appropriate reagents. + if(!isnull(plantname)) + var/datum/seed/S = seed_types[plantname] + if(!S || !S.chems) + return + + potency = S.potency + + for(var/rid in S.chems) + var/list/reagent_data = S.chems[rid] + var/rtotal = reagent_data[1] + if(reagent_data.len > 1 && potency > 0) + rtotal += round(potency/reagent_data[2]) + reagents.add_reagent(rid,max(1,rtotal)) /obj/item/weapon/grown/proc/changePotency(newValue) //-QualityVan potency = newValue /obj/item/weapon/grown/log + name = "towercap" name = "tower-cap log" desc = "It's better than bad, it's good!" icon = 'icons/obj/harvest.dmi' @@ -35,9 +48,7 @@ w_class = 3.0 throw_speed = 3 throw_range = 3 - plant_type = 2 origin_tech = "materials=1" - seed = "/obj/item/seeds/towermycelium" attack_verb = list("bashed", "battered", "bludgeoned", "whacked") attackby(obj/item/weapon/W as obj, mob/user as mob) @@ -55,8 +66,8 @@ del(src) return - /obj/item/weapon/grown/sunflower // FLOWER POWER! + plantname = "sunflowers" name = "sunflower" desc = "It's beautiful! A certain person might beat you to death if you trample these." icon = 'icons/obj/harvest.dmi' @@ -68,40 +79,13 @@ w_class = 1.0 throw_speed = 1 throw_range = 3 - plant_type = 1 - seed = "/obj/item/seeds/sunflower" - /obj/item/weapon/grown/sunflower/attack(mob/M as mob, mob/user as mob) M << " [user] smacks you with a sunflower!FLOWER POWER" user << " Your sunflower's FLOWER POWER strikes [M]" -/* -/obj/item/weapon/grown/gibtomato - desc = "A plump tomato." - icon = 'icons/obj/harvest.dmi' - name = "Gib Tomato" - icon_state = "gibtomato" - damtype = "fire" - force = 0 - flags = TABLEPASS - throwforce = 1 - w_class = 2.0 - throw_speed = 1 - throw_range = 3 - plant_type = 1 - seed = "/obj/item/seeds/gibtomato" - New() - ..() - - -/obj/item/weapon/grown/gibtomato/New() - ..() - src.gibs = new /obj/effect/gibspawner/human(get_turf(src)) - src.gibs.attach(src) - src.smoke.set_up(10, 0, usr.loc) -*/ /obj/item/weapon/grown/nettle // -- Skie + plantname = "nettle" desc = "It's probably not wise to touch it with bare hands..." icon = 'icons/obj/weapons.dmi' name = "nettle" @@ -113,17 +97,12 @@ w_class = 2.0 throw_speed = 1 throw_range = 3 - plant_type = 1 origin_tech = "combat=1" - seed = "/obj/item/seeds/nettleseed" New() ..() - spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1+round((potency / 50), 1)) - reagents.add_reagent("sacid", round(potency, 1)) + spawn(5) force = round((5+potency/5), 1) - /obj/item/weapon/grown/nettle/pickup(mob/living/carbon/human/user as mob) if(!user.gloves) user << "\red The nettle burns your bare hand!" @@ -135,7 +114,6 @@ else user.take_organ_damage(0,force) - /obj/item/weapon/grown/nettle/afterattack(atom/A as mob|obj, mob/user as mob, proximity) if(!proximity) return if(force > 0) @@ -145,14 +123,12 @@ usr << "All the leaves have fallen off the nettle from violent whacking." del(src) - /obj/item/weapon/grown/nettle/changePotency(newValue) //-QualityVan potency = newValue force = round((5+potency/5), 1) - - /obj/item/weapon/grown/deathnettle // -- Skie + plantname = "deathnettle" desc = "The \red glowing \black nettle incites \redrage\black in you just from looking at it!" icon = 'icons/obj/weapons.dmi' name = "deathnettle" @@ -164,22 +140,17 @@ w_class = 2.0 throw_speed = 1 throw_range = 3 - plant_type = 1 - seed = "/obj/item/seeds/deathnettleseed" origin_tech = "combat=3" attack_verb = list("stung") New() ..() - spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1+round((potency / 50), 1)) - reagents.add_reagent("pacid", round(potency, 1)) + spawn(5) force = round((5+potency/2.5), 1) suicide_act(mob/user) viewers(user) << "\red [user] is eating some of the [src.name]! It looks like \he's trying to commit suicide." return (BRUTELOSS|TOXLOSS) - /obj/item/weapon/grown/deathnettle/pickup(mob/living/carbon/human/user as mob) if(!user.gloves) if(istype(user, /mob/living/carbon/human)) @@ -193,7 +164,6 @@ user.Paralyse(5) user << "\red You are stunned by the Deathnettle when you try picking it up!" - /obj/item/weapon/grown/deathnettle/attack(mob/living/carbon/M as mob, mob/user as mob) if(!..()) return if(istype(M, /mob/living)) @@ -211,7 +181,6 @@ M.Weaken(force/15) M.drop_item() - /obj/item/weapon/grown/deathnettle/afterattack(atom/A as mob|obj, mob/user as mob, proximity) if(!proximity) return if (force > 0) @@ -221,13 +190,10 @@ usr << "All the leaves have fallen off the deathnettle from violent whacking." del(src) - /obj/item/weapon/grown/deathnettle/changePotency(newValue) //-QualityVan potency = newValue force = round((5+potency/2.5), 1) - - /obj/item/weapon/corncob name = "corn cob" desc = "A reminder of meals gone by." @@ -239,7 +205,6 @@ throw_speed = 4 throw_range = 20 - /obj/item/weapon/corncob/attackby(obj/item/weapon/W as obj, mob/user as mob) ..() if(istype(W, /obj/item/weapon/circular_saw) || istype(W, /obj/item/weapon/hatchet) || istype(W, /obj/item/weapon/kitchen/utensil/knife) || istype(W, /obj/item/weapon/kitchenknife) || istype(W, /obj/item/weapon/kitchenknife/ritual)) diff --git a/code/modules/hydroponics/hydro_tools.dm b/code/modules/hydroponics/hydro_tools.dm index a8fc8aaa31d..098a9383deb 100644 --- a/code/modules/hydroponics/hydro_tools.dm +++ b/code/modules/hydroponics/hydro_tools.dm @@ -1,105 +1,210 @@ //Analyzer, pestkillers, weedkillers, nutrients, hatchets. - /obj/item/device/analyzer/plant_analyzer name = "plant analyzer" icon = 'icons/obj/device.dmi' icon_state = "hydro" item_state = "analyzer" - attack_self(mob/user as mob) - return 0 +/obj/item/device/analyzer/plant_analyzer/attack_self(mob/user as mob) + return 0 +/obj/item/device/analyzer/plant_analyzer/afterattack(obj/target, mob/user, flag) + if(!flag) return -// ************************************* -// Pestkiller defines for hydroponics -// ************************************* + var/datum/seed/grown_seed + var/datum/reagents/grown_reagents + if(istype(target,/obj/item/weapon/reagent_containers/food/snacks/grown)) -/obj/item/pestkiller - name = "bottle of pestkiller" - icon = 'icons/obj/chemical.dmi' - icon_state = "bottle16" - flags = FPRINT | TABLEPASS - var/toxicity = 0 - var/PestKillStr = 0 - New() - src.pixel_x = rand(-5.0, 5) - src.pixel_y = rand(-5.0, 5) + var/obj/item/weapon/reagent_containers/food/snacks/grown/G = target + grown_seed = seed_types[G.plantname] + grown_reagents = G.reagents -/obj/item/pestkiller/carbaryl - name = "bottle of carbaryl" - icon = 'icons/obj/chemical.dmi' - icon_state = "bottle16" - flags = FPRINT | TABLEPASS - toxicity = 4 - PestKillStr = 2 - New() - src.pixel_x = rand(-5.0, 5) - src.pixel_y = rand(-5.0, 5) + else if(istype(target,/obj/item/weapon/grown)) -/obj/item/pestkiller/lindane - name = "bottle of lindane" - icon = 'icons/obj/chemical.dmi' - icon_state = "bottle18" - flags = FPRINT | TABLEPASS - toxicity = 6 - PestKillStr = 4 - New() - src.pixel_x = rand(-5.0, 5) - src.pixel_y = rand(-5.0, 5) + var/obj/item/weapon/grown/G = target + grown_seed = seed_types[G.plantname] + grown_reagents = G.reagents -/obj/item/pestkiller/phosmet - name = "bottle of phosmet" - icon = 'icons/obj/chemical.dmi' - icon_state = "bottle15" - flags = FPRINT | TABLEPASS - toxicity = 8 - PestKillStr = 7 - New() - src.pixel_x = rand(-5.0, 5) - src.pixel_y = rand(-5.0, 5) + else if(istype(target,/obj/item/seeds)) + + var/obj/item/seeds/S = target + grown_seed = S.seed + + else if(istype(target,/obj/machinery/hydroponics)) + + var/obj/machinery/hydroponics/H = target + grown_seed = H.seed + grown_reagents = H.reagents + + if(!grown_seed) + user << "\red [src] can tell you nothing about [target]." + return + + var/dat = "

Plant data for [target]

" + user.visible_message("\blue [user] runs the scanner over [target].") + + dat += "

General Data

" + + dat += "" + dat += "" + dat += "" + dat += "" + dat += "" + dat += "" + dat += "" + dat += "
Endurance[grown_seed.endurance]
Yield[grown_seed.yield]
Lifespan[grown_seed.lifespan]
Maturation time[grown_seed.maturation]
Production time[grown_seed.production]
Potency[grown_seed.potency]
" + + if(grown_reagents && grown_reagents.reagent_list && grown_reagents.reagent_list.len) + dat += "

Reagent Data

" + + dat += "
This sample contains: " + for(var/datum/reagent/R in grown_reagents.reagent_list) + dat += "
- [R.id], [grown_reagents.get_reagent_amount(R.id)] unit(s)" + + dat += "

Other Data

" + + if(grown_seed.harvest_repeat) + dat += "This plant can be harvested repeatedly.
" + + if(grown_seed.immutable) + dat += "This plant does not possess genetics that are alterable.
" + + if(grown_seed.products && grown_seed.products.len) + dat += "The mature plant will produce [grown_seed.products.len == 1 ? "fruit" : "[grown_seed.products.len] varieties of fruit"].
" + + if(grown_seed.requires_nutrients) + if(grown_seed.nutrient_consumption < 0.05) + dat += "It consumes a small amount of nutrient fluid.
" + else if(grown_seed.nutrient_consumption > 0.2) + dat += "It requires a heavy supply of nutrient fluid.
" + else + dat += "It requires a supply of nutrient fluid.
" + + if(grown_seed.requires_water) + if(grown_seed.water_consumption < 1) + dat += "It requires very little water.
" + else if(grown_seed.water_consumption > 5) + dat += "It requires a large amount of water.
" + else + dat += "It requires a stable supply of water.
" + + if(grown_seed.mutants && grown_seed.mutants.len) + dat += "It exhibits a high degree of potential subspecies shift.
" + + dat += "It thrives in a temperature of [grown_seed.ideal_heat] Kelvin." + + if(grown_seed.lowkpa_tolerance < 20) + dat += "
It is well adapted to low pressure levels." + if(grown_seed.highkpa_tolerance > 220) + dat += "
It is well adapted to high pressure levels." + + if(grown_seed.heat_tolerance > 30) + dat += "
It is well adapted to a range of temperatures." + else if(grown_seed.heat_tolerance < 10) + dat += "
It is very sensitive to temperature shifts." + + dat += "
It thrives in a light level of [grown_seed.ideal_light] lumen[grown_seed.ideal_light == 1 ? "" : "s"]." + + if(grown_seed.light_tolerance > 10) + dat += "
It is well adapted to a range of light levels." + else if(grown_seed.light_tolerance < 3) + dat += "
It is very sensitive to light level shifts." + + if(grown_seed.toxins_tolerance < 3) + dat += "
It is highly sensitive to toxins." + else if(grown_seed.toxins_tolerance > 6) + dat += "
It is remarkably resistant to toxins." + + if(grown_seed.pest_tolerance < 3) + dat += "
It is highly sensitive to pests." + else if(grown_seed.pest_tolerance > 6) + dat += "
It is remarkably resistant to pests." + + if(grown_seed.weed_tolerance < 3) + dat += "
It is highly sensitive to weeds." + else if(grown_seed.weed_tolerance > 6) + dat += "
It is remarkably resistant to weeds." + + switch(grown_seed.spread) + if(1) + dat += "
It is capable of growing beyond the confines of a tray." + if(2) + dat += "
It is a robust and vigorous vine that will spread rapidly." + + switch(grown_seed.carnivorous) + if(1) + dat += "
It is carniovorous and will eat tray pests for sustenance." + if(2) + dat += "
It is carnivorous and poses a significant threat to living things around it." + + if(grown_seed.parasite) + dat += "
It is capable of parisitizing and gaining sustenance from tray weeds." + if(grown_seed.alter_temp) + dat += "
It will periodically alter the local temperature by [grown_seed.alter_temp] degrees Kelvin." + + if(grown_seed.biolum) + dat += "
It is [grown_seed.biolum_colour ? "bio-luminescent" : "bio-luminescent"]." + if(grown_seed.flowers) + dat += "
It has [grown_seed.flower_colour ? "flowers" : "flowers"]." + + if(dat) + user << browse(dat,"window=plant_analyzer") + + return // ************************************* // Hydroponics Tools // ************************************* -/obj/item/weapon/weedspray // -- Skie - desc = "It's a toxic mixture, in spray form, to kill small weeds." +/obj/item/weapon/plantspray icon = 'icons/obj/hydroponics.dmi' + item_state = "spray" + flags = TABLEPASS | OPENCONTAINER | FPRINT | NOBLUDGEON + slot_flags = SLOT_BELT + throwforce = 4 + w_class = 2.0 + throw_speed = 2 + throw_range = 10 + var/toxicity = 4 + var/pest_kill_str = 0 + var/weed_kill_str = 0 + +/obj/item/weapon/plantspray/weeds // -- Skie + name = "weed-spray" + desc = "It's a toxic mixture, in spray form, to kill small weeds." icon_state = "weedspray" - item_state = "spray" - flags = TABLEPASS | OPENCONTAINER | FPRINT | NOBLUDGEON - slot_flags = SLOT_BELT - throwforce = 4 - w_class = 2.0 - throw_speed = 2 - throw_range = 10 - var/toxicity = 4 - var/WeedKillStr = 2 + weed_kill_str = 2 - suicide_act(mob/user) - viewers(user) << "\red [user] is huffing the [src.name]! It looks like \he's trying to commit suicide." - return (TOXLOSS) - -/obj/item/weapon/pestspray // -- Skie - desc = "It's some pest eliminator spray! Do not inhale!" - icon = 'icons/obj/hydroponics.dmi' +/obj/item/weapon/plantspray/pests name = "pest-spray" + desc = "It's some pest eliminator spray! Do not inhale!" icon_state = "pestspray" - item_state = "spray" - flags = TABLEPASS | OPENCONTAINER | FPRINT | NOBLUDGEON - slot_flags = SLOT_BELT - throwforce = 4 - w_class = 2.0 - throw_speed = 2 - throw_range = 10 - var/toxicity = 4 - var/PestKillStr = 2 + pest_kill_str = 2 - suicide_act(mob/user) - viewers(user) << "\red [user] is huffing the [src.name]! It looks like \he's trying to commit suicide." - return (TOXLOSS) +/obj/item/weapon/plantspray/pests/old + name = "bottle of pestkiller" + icon = 'icons/obj/chemical.dmi' + icon_state = "bottle16" + +/obj/item/weapon/plantspray/pests/old/carbaryl + name = "bottle of carbaryl" + icon_state = "bottle16" + toxicity = 4 + pest_kill_str = 2 + +/obj/item/weapon/plantspray/pests/old/lindane + name = "bottle of lindane" + icon_state = "bottle18" + toxicity = 6 + pest_kill_str = 4 + +/obj/item/weapon/plantspray/pests/old/phosmet + name = "bottle of phosmet" + icon_state = "bottle15" + toxicity = 8 + pest_kill_str = 7 /obj/item/weapon/minihoe // -- Numbers name = "mini hoe" @@ -125,7 +230,7 @@ icon_state = "bottle16" flags = FPRINT | TABLEPASS var/toxicity = 0 - var/WeedKillStr = 0 + var/weed_kill_str = 0 /obj/item/weedkiller/triclopyr name = "bottle of glyphosate" @@ -133,7 +238,7 @@ icon_state = "bottle16" flags = FPRINT | TABLEPASS toxicity = 4 - WeedKillStr = 2 + weed_kill_str = 2 /obj/item/weedkiller/lindane name = "bottle of triclopyr" @@ -141,7 +246,7 @@ icon_state = "bottle18" flags = FPRINT | TABLEPASS toxicity = 6 - WeedKillStr = 4 + weed_kill_str = 4 /obj/item/weedkiller/D24 name = "bottle of 2,4-D" @@ -149,7 +254,7 @@ icon_state = "bottle15" flags = FPRINT | TABLEPASS toxicity = 8 - WeedKillStr = 7 + weed_kill_str = 7 // ************************************* @@ -175,9 +280,6 @@ flags = FPRINT | TABLEPASS mutmod = 1 yieldmod = 1 - New() - src.pixel_x = rand(-5.0, 5) - src.pixel_y = rand(-5.0, 5) /obj/item/nutrient/l4z name = "bottle of Left 4 Zed" @@ -185,22 +287,13 @@ icon_state = "bottle18" flags = FPRINT | TABLEPASS mutmod = 2 - yieldmod = 0 - New() - src.pixel_x = rand(-5.0, 5) - src.pixel_y = rand(-5.0, 5) /obj/item/nutrient/rh name = "bottle of Robust Harvest" icon = 'icons/obj/chemical.dmi' icon_state = "bottle15" flags = FPRINT | TABLEPASS - mutmod = 0 yieldmod = 2 - New() - src.pixel_x = rand(-5.0, 5) - src.pixel_y = rand(-5.0, 5) - //Hatchets and things to kill kudzu /obj/item/weapon/hatchet @@ -215,7 +308,7 @@ throw_speed = 4 throw_range = 4 sharp = 1 - edge = 1 + edge = 1 matter = list("metal" = 15000) origin_tech = "materials=2;combat=1" attack_verb = list("chopped", "torn", "cut") @@ -232,7 +325,6 @@ icon_state = "unathiknife" attack_verb = list("ripped", "torn", "cut") - /obj/item/weapon/scythe icon_state = "scythe0" name = "scythe" @@ -249,8 +341,8 @@ /obj/item/weapon/scythe/afterattack(atom/A, mob/user as mob, proximity) if(!proximity) return - if(istype(A, /obj/effect/spacevine)) - for(var/obj/effect/spacevine/B in orange(A,1)) + if(istype(A, /obj/effect/plantsegment)) + for(var/obj/effect/plantsegment/B in orange(A,1)) if(prob(80)) del B del A \ No newline at end of file diff --git a/code/modules/hydroponics/hydro_tray.dm b/code/modules/hydroponics/hydro_tray.dm index 1e586eacf0b..c7a778dd5a2 100644 --- a/code/modules/hydroponics/hydro_tray.dm +++ b/code/modules/hydroponics/hydro_tray.dm @@ -1,4 +1,4 @@ -#define HYDRO_SPEED_MULTIPLIER 0.25 +#define HYDRO_SPEED_MULTIPLIER 1 /obj/machinery/hydroponics name = "hydroponics tray" @@ -6,37 +6,136 @@ icon_state = "hydrotray3" density = 1 anchored = 1 - var/waterlevel = 100 // The amount of water in the tray (max 100) - var/nutrilevel = 10 // The amount of nutrient in the tray (max 10) - var/pestlevel = 0 // The amount of pests in the tray (max 10) - var/weedlevel = 0 // The amount of weeds in the tray (max 10) - var/yieldmod = 1 //Modifier to yield - var/mutmod = 1 //Modifier to mutation chance - var/toxic = 0 // Toxicity in the tray? - var/age = 0 // Current age - var/dead = 0 // Is it dead? - var/health = 0 // Its health. - var/lastproduce = 0 // Last time it was harvested - var/lastcycle = 0 //Used for timing of cycles. - var/cycledelay = 200 // About 10 seconds / cycle - var/planted = 0 // Is it occupied? - var/harvest = 0 //Ready to harvest? - var/obj/item/seeds/myseed = null // The currently planted seed + var/draw_warnings = 1 //Set to 0 to stop it from drawing the alert lights. -/obj/machinery/hydroponics/bullet_act(var/obj/item/projectile/Proj) //Works with the Somatoray to modify plant variables. - if(istype(Proj ,/obj/item/projectile/energy/floramut)) - if(planted) - mutate() - else if(istype(Proj ,/obj/item/projectile/energy/florayield)) - if(planted && myseed.yield == 0)//Oh god don't divide by zero you'll doom us all. - myseed.yield += 1 - //world << "Yield increased by 1, from 0, to a total of [myseed.yield]" - else if (planted && (prob(1/(myseed.yield * myseed.yield) *100)))//This formula gives you diminishing returns based on yield. 100% with 1 yield, decreasing to 25%, 11%, 6, 4, 2... - myseed.yield += 1 - //world << "Yield increased by 1, to a total of [myseed.yield]" - else - ..() + // Plant maintenance vars. + var/waterlevel = 100 // Water level (max 100) + var/nutrilevel = 10 // Nutrient level (max 10) + var/pestlevel = 0 // Pests (max 10) + var/weedlevel = 0 // Weeds (max 10)s + + // Tray state vars. + var/dead = 0 // Is it dead? + var/harvest = 0 // Is it ready to harvest? + var/age = 0 // Current plant age + + // Harvest/mutation mods. + var/yield_mod = 0 // Modifier to yield + var/mutation_mod = 0 // Modifier to mutation chance + var/toxins = 0 // Toxicity in the tray? + + // Mechanical concerns. + var/health = 0 // Plant health. + var/lastproduce = 0 // Last time tray was harvested + var/lastcycle = 0 // Cycle timing/tracking var. + var/cycledelay = 150 // Delay per cycle. + var/closed_system // If set, the tray will attempt to take atmos from a pipe. + var/obj/machinery/atmospherics/portables_connector/atmos_source //Used for above. + + // Seed details/line data. + var/datum/seed/seed = null // The currently planted seed + + // Reagent information for attackby(), consider moving this to a controller along + // with cycle information under 'mechanical concerns' at some point. + // For all following lists, when called in attackby() the relevant value will be increased + // by 1,val if val>0 or decreased by 1,val if val<0. + + var/global/list/toxic_reagents = list( + "anti_toxin" = -2, + "toxin" = 2, + "fluorine" = 2.5, + "chlorine" = 1.5, + "sacid" = 1.5, + "pacid" = 3, + "plantbgone" = 3, + "cryoxadone" = -3, + "radium" = 2 + ) + var/global/list/nutrient_reagents = list( + "milk" = 0.1, + "beer" = 0.25, + "phosphorus" = 0.1, + "sugar" = 0.1, + "sodawater" = 0.1, + "ammonia" = 1, + "diethylamine" = 2, + "nutriment" = 1, + "adminordrazine" = 1 + ) + var/global/list/weedkiller_reagents = list( + "fluorine" = -4, + "chlorine" = -3, + "phosphorus" = -2, + "sugar" = 2, + "sacid" = -2, + "pacid" = -4, + "plantbgone" = -8, + "adminordrazine" = -5 + ) + var/global/list/pestkiller_reagents = list( + "sugar" = 2, + "diethylamine" = -2, + "adminordrazine" = -5 + ) + var/global/list/beneficial_reagents = list( + "beer" = -0.05, + "fluorine" = -2, + "chlorine" = -1, + "phosphorus" = -0.75, + "sodawater" = 0.1, + "sacid" = -1, + "pacid" = -2, + "plantbgone" = -2, + "cryoxadone" = 3, + "ammonia" = 0.5, + "diethylamine" = 1, + "nutriment" = 0.5, + "radium" = -1.5, + "adminordrazine" = 1 + ) + var/global/list/water_reagents = list( + "adminordrazine" = 1, + "milk" = 0.9, + "beer" = 0.7, + "flourine" = -0.5, + "chlorine" = -0.5, + "phosphorus" = -0.5, + "water" = 1, + "sodawater" = 1, + ) + + // Mutagen list specifies minimum value for the mutation to take place, rather + // than a bound as the lists above specify. + var/global/list/mutagenic_reagents = list( + "radium" = 8, + "mutagen" = 3 + ) + +/obj/machinery/hydroponics/New() + ..() + if(closed_system) + get_connector() + updateicon() + +/obj/machinery/hydroponics/proc/get_connector() + atmos_source = null + var/turf/T = get_turf(src) + if(!T) return + atmos_source = locate() in T.contents + if(atmos_source) + src.visible_message("[src] connects to [atmos_source] with a solid clunk.") + +/obj/machinery/hydroponics/bullet_act(var/obj/item/projectile/Proj) + + //Override for somatoray projectiles. + if(istype(Proj ,/obj/item/projectile/energy/floramut) && prob(20)) + mutate(1) return + else if(istype(Proj ,/obj/item/projectile/energy/florayield) && prob(20)) + yield_mod = min(10,yield_mod+rand(1,2)) + return + + ..() /obj/machinery/hydroponics/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) if(air_group || (height==0)) return 1 @@ -46,408 +145,314 @@ else return 0 -obj/machinery/hydroponics/process() +/obj/machinery/hydroponics/process() - if(myseed && (myseed.loc != src)) - myseed.loc = src + // Update values every cycle rather than every process() tick. + if(world.time < (lastcycle + cycledelay)) + return + lastcycle = world.time - if(world.time > (lastcycle + cycledelay)) - lastcycle = world.time - if(planted && !dead) - // Advance age - age += 1 * HYDRO_SPEED_MULTIPLIER + // Weeds like water and nutrients, there's a chance the weed population will increase. + // Bonus chance if the tray is unoccupied. + if(waterlevel > 10 && nutrilevel > 2 && prob(isnull(seed) ? 6 : 3)) + weedlevel += 1 * HYDRO_SPEED_MULTIPLIER -//Nutrients////////////////////////////////////////////////////////////// - // Nutrients deplete slowly - if(nutrilevel > 0) - if(prob(50)) - nutrilevel -= 1 * HYDRO_SPEED_MULTIPLIER + // There's a chance for a weed explosion to happen if the weeds take over. + // Plants that are themselves weeds (weed_tolernace > 10) are unaffected. + if (weedlevel >= 10 && prob(10)) + if(!seed || weedlevel >= seed.weed_tolerance) + weed_invasion() - // Lack of nutrients hurts non-weeds - if(nutrilevel <= 0 && myseed.plant_type != 1) - health -= rand(1,3) * HYDRO_SPEED_MULTIPLIER + // If there is no seed data (and hence nothing planted), + // or the plant is dead, process nothing further. + if(!seed || dead) + return -//Water////////////////////////////////////////////////////////////////// - // Drink random amount of water - waterlevel = max(waterlevel - rand(1,6) * HYDRO_SPEED_MULTIPLIER, 0) + // Advance plant age. + age += 1 * HYDRO_SPEED_MULTIPLIER - // If the plant is dry, it loses health pretty fast, unless mushroom - if(waterlevel <= 10 && myseed.plant_type != 2) - health -= rand(0,1) * HYDRO_SPEED_MULTIPLIER - if(waterlevel <= 0) - health -= rand(0,2) * HYDRO_SPEED_MULTIPLIER + // Maintain tray nutrient and water levels. + if(seed.nutrient_consumption > 0 && nutrilevel > 0 && prob(25)) + nutrilevel -= max(0,seed.nutrient_consumption * HYDRO_SPEED_MULTIPLIER) + if(seed.water_consumption > 0 && waterlevel > 0 && prob(25)) + waterlevel -= max(0,seed.water_consumption * HYDRO_SPEED_MULTIPLIER) - // Sufficient water level and nutrient level = plant healthy - else if(waterlevel > 10 && nutrilevel > 0) - health += rand(1,2) * HYDRO_SPEED_MULTIPLIER - if(prob(5)) //5 percent chance the weed population will increase - weedlevel += 1 * HYDRO_SPEED_MULTIPLIER -//Toxins///////////////////////////////////////////////////////////////// + // Make sure the plant is not starving or thirsty. Adequate + // water and nutrients will cause a plant to become healthier. + var/healthmod = rand(1,3) * HYDRO_SPEED_MULTIPLIER + if(seed.requires_nutrients && prob(35)) + health += (nutrilevel < 2 ? -healthmod : healthmod) + if(seed.requires_water && prob(35)) + health += (waterlevel < 10 ? -healthmod : healthmod) - // Too much toxins cause harm, but when the plant drinks the contaiminated water, the toxins disappear slowly - if(toxic >= 40 && toxic < 80) - health -= 1 * HYDRO_SPEED_MULTIPLIER - toxic -= rand(1,10) * HYDRO_SPEED_MULTIPLIER - else if(toxic >= 80) // I don't think it ever gets here tbh unless above is commented out - health -= 3 * HYDRO_SPEED_MULTIPLIER - toxic -= rand(1,10) * HYDRO_SPEED_MULTIPLIER - else if(toxic < 0) // Make sure it won't go overoboard - toxic = 0 + // Check that pressure, heat and light are all within bounds. + // First, handle an open system or an unconnected closed system. -//Pests & Weeds////////////////////////////////////////////////////////// + var/turf/T = loc + var/datum/gas_mixture/environment - // Too many pests cause the plant to be sick - if (pestlevel > 10 ) // Make sure it won't go overoboard - pestlevel = 10 + // If we're a closed system, take from any connected network. + if(closed_system && atmos_source) + if(atmos_source.network) + environment = atmos_source.network.air_transient - else if(pestlevel >= 5) - health -= 1 * HYDRO_SPEED_MULTIPLIER + // If atmos input is not there, grab from turf. + if(!environment) + if(istype(T)) + environment = T.return_air() + if(!environment) //We're in a crate or nullspace, bail out. + return - // If it's a weed, it doesn't stunt the growth - if(weedlevel >= 5 && myseed.plant_type != 1 ) - health -= 1 * HYDRO_SPEED_MULTIPLIER + // Process it. + var/pressure = environment.return_pressure() + if(pressure < seed.lowkpa_tolerance || pressure > seed.highkpa_tolerance) + health -= healthmod + if(abs(environment.temperature - seed.ideal_heat) > seed.heat_tolerance) + health -= healthmod -//Health & Age/////////////////////////////////////////////////////////// - // Don't go overboard with the health - if(health > myseed.endurance) - health = myseed.endurance - - // Plant dies if health <= 0 - else if(health <= 0) - dead = 1 - harvest = 0 - weedlevel += 1 * HYDRO_SPEED_MULTIPLIER // Weeds flourish - pestlevel = 0 // Pests die - - // If the plant is too old, lose health fast - if(age > myseed.lifespan) - health -= rand(1,5) * HYDRO_SPEED_MULTIPLIER - - // Harvest code - if(age > myseed.production && (age - lastproduce) > myseed.production && (!harvest && !dead)) - for(var/i = 0; i < mutmod; i++) - if(prob(85)) - mutate() - else if(prob(30)) - hardmutate() - else if(prob(5)) - mutatespecie() - - if(yieldmod > 0 && myseed.yield != -1) // Unharvestable shouldn't be harvested - harvest = 1 - else - lastproduce = age - if(prob(5)) // On each tick, there's a 5 percent chance the pest population will increase - pestlevel += 1 * HYDRO_SPEED_MULTIPLIER + // Handle light requirements. + var/area/A = T.loc + if(A) + var/light_available + if(A.lighting_use_dynamic) + light_available = max(0,min(10,T.lighting_lumcount)-5) else - if(waterlevel > 10 && nutrilevel > 0 && prob(10)) // If there's no plant, the percentage chance is 10% - weedlevel += 1 * HYDRO_SPEED_MULTIPLIER - if(weedlevel > 10) - weedlevel = 10 + light_available = 5 + if(abs(light_available - seed.ideal_light) > seed.light_tolerance) + health -= healthmod - // Weeeeeeeeeeeeeeedddssss + // Toxin levels beyond the plant's tolerance cause damage, but + // toxins are sucked up each tick and slowly reduce over time. + if(toxins > 0) + var/toxin_uptake = max(1,round(toxins/10)) + if(toxins > seed.toxins_tolerance) + health -= toxin_uptake + toxins -= toxin_uptake - if (weedlevel >= 10 && prob(50)) // At this point the plant is kind of fucked. Weeds can overtake the plant spot. - if(planted) - if(myseed.plant_type == 0) // If a normal plant - weedinvasion() - else - weedinvasion() // Weed invasion into empty tray - updateicon() + // Check for pests and weeds. + // Some carnivorous plants happily eat pests. + if(pestlevel > 0) + if(seed.carnivorous) + health += HYDRO_SPEED_MULTIPLIER + pestlevel -= HYDRO_SPEED_MULTIPLIER + else if (pestlevel >= seed.pest_tolerance) + health -= HYDRO_SPEED_MULTIPLIER + + // Some plants thrive and live off of weeds. + if(weedlevel > 0) + if(seed.parasite) + health += HYDRO_SPEED_MULTIPLIER + weedlevel -= HYDRO_SPEED_MULTIPLIER + else if (weedlevel >= seed.weed_tolerance) + health -= HYDRO_SPEED_MULTIPLIER + + // Handle life and death. + // If the plant is too old, it loses health fast. + if(age > seed.lifespan) + health -= rand(3,5) * HYDRO_SPEED_MULTIPLIER + + // When the plant dies, weeds thrive and pests die off. + if(health <= 0) + dead = 1 + harvest = 0 + weedlevel += 1 * HYDRO_SPEED_MULTIPLIER + pestlevel = 0 + + // If enough time (in cycles, not ticks) has passed since the plant was harvested, we're ready to harvest again. + else if(age > seed.production && (age - lastproduce) > seed.production && (!harvest && !dead)) + harvest = 1 + lastproduce = age + + if(prob(5)) // On each tick, there's a 5 percent chance the pest population will increase + pestlevel += 1 * HYDRO_SPEED_MULTIPLIER + + check_level_sanity() + updateicon() return +//Harvests the product of a plant. +/obj/machinery/hydroponics/proc/harvest(var/mob/user) + //Harvest the product of the plant, + if(!seed || !harvest || !user) + return -obj/machinery/hydroponics/proc/updateicon() - //Refreshes the icon and sets the luminosity - overlays.Cut() - if(planted) - if(dead) - overlays += image('icons/obj/hydroponics.dmi', icon_state="[myseed.species]-dead") - else if(harvest) - if(myseed.plant_type == 2) // Shrooms don't have a -harvest graphic - overlays += image('icons/obj/hydroponics.dmi', icon_state="[myseed.species]-grow[myseed.growthstages]") - else - overlays += image('icons/obj/hydroponics.dmi', icon_state="[myseed.species]-harvest") - else if(age < myseed.maturation) - var/t_growthstate = ((age / myseed.maturation) * myseed.growthstages ) // Make sure it won't crap out due to HERPDERP 6 stages only - overlays += image('icons/obj/hydroponics.dmi', icon_state="[myseed.species]-grow[round(t_growthstate)]") - lastproduce = age //Cheating by putting this here, it means that it isn't instantly ready to harvest - else - overlays += image('icons/obj/hydroponics.dmi', icon_state="[myseed.species]-grow[myseed.growthstages]") // Same + if(closed_system) + user << "You can't harvest from the plant while the lid is shut." + return - if(waterlevel <= 10) - overlays += image('icons/obj/hydroponics.dmi', icon_state="over_lowwater3") - if(nutrilevel <= 2) - overlays += image('icons/obj/hydroponics.dmi', icon_state="over_lownutri3") - if(health <= (myseed.endurance / 2)) - overlays += image('icons/obj/hydroponics.dmi', icon_state="over_lowhealth3") - if(weedlevel >= 5) - overlays += image('icons/obj/hydroponics.dmi', icon_state="over_alert3") - if(pestlevel >= 5) - overlays += image('icons/obj/hydroponics.dmi', icon_state="over_alert3") - if(toxic >= 40) - overlays += image('icons/obj/hydroponics.dmi', icon_state="over_alert3") - if(harvest) - overlays += image('icons/obj/hydroponics.dmi', icon_state="over_harvest3") + seed.harvest(user,yield_mod) - if(istype(myseed,/obj/item/seeds/glowshroom)) - SetLuminosity(round(myseed.potency/10)) - else - SetLuminosity(0) + // Reset values. + harvest = 0 + lastproduce = age + if(!seed.harvest_repeat) + yield_mod = 0 + seed = null + dead = 0 + age = 0 + + check_level_sanity() + updateicon() return +//Clears out a dead plant. +/obj/machinery/hydroponics/proc/remove_dead(var/mob/user) + if(!user || !dead) return + if(closed_system) + user << "You can't remove the dead plant while the lid is shut." + return -obj/machinery/hydroponics/proc/weedinvasion() // If a weed growth is sufficient, this happens. + seed = null dead = 0 - if(myseed) // In case there's nothing in the tray beforehand - del(myseed) - switch(rand(1,18)) // randomly pick predominative weed - if(16 to 18) - myseed = new /obj/item/seeds/reishimycelium - if(14 to 15) - myseed = new /obj/item/seeds/nettleseed - if(12 to 13) - myseed = new /obj/item/seeds/harebell - if(10 to 11) - myseed = new /obj/item/seeds/amanitamycelium - if(8 to 9) - myseed = new /obj/item/seeds/chantermycelium - if(6 to 7) // implementation for tower caps still kinda missing ~ Not Anymore! -Cheridan - myseed = new /obj/item/seeds/towermycelium - if(4 to 5) - myseed = new /obj/item/seeds/plumpmycelium + user << "You remove the dead plant from the [src]." + check_level_sanity() + updateicon() + return + +//Refreshes the icon and sets the luminosity +/obj/machinery/hydroponics/proc/updateicon() + + overlays.Cut() + + // Updates the plant overlay. + if(!isnull(seed)) + + if(draw_warnings && health <= (seed.endurance / 2)) + overlays += "over_lowhealth3" + + if(dead) + overlays += "[seed.plant_icon]-dead" + else if(harvest) + overlays += "[seed.plant_icon]-harvest" + else if(age < seed.maturation) + + var/t_growthstate + if(age >= seed.maturation) + t_growthstate = seed.growth_stages + else + t_growthstate = round(seed.maturation / seed.growth_stages) + + overlays += "[seed.plant_icon]-grow[t_growthstate]" + lastproduce = age else - myseed = new /obj/item/seeds/weeds - planted = 1 + overlays += "[seed.plant_icon]-grow[seed.growth_stages]" + + //Draw the cover. + if(closed_system) + overlays += "hydrocover" + + //Updated the various alert icons. + if(draw_warnings) + if(waterlevel <= 10) + overlays += "over_lowwater3" + if(nutrilevel <= 2) + overlays += "over_lownutri3" + if(weedlevel >= 5 || pestlevel >= 5 || toxins >= 40) + overlays += "over_alert3" + if(harvest) + overlays += "over_harvest3" + + // Update bioluminescence. + if(seed) + if(seed.biolum) + SetLuminosity(round(seed.potency/10)) + if(seed.biolum_colour) + l_color = seed.biolum_colour + else + l_color = null + return + + SetLuminosity(0) + return + + // If a weed growth is sufficient, this proc is called. +obj/machinery/hydroponics/proc/weed_invasion() + + //Remove the seed if something is already planted. + if(seed) seed = null + seed = seed_types[pick(list("reishi","nettles","amanita","mushrooms","plumphelmet","towercap","harebells","weeds"))] + if(!seed) return //Weed does not exist, someone fucked up. + + dead = 0 age = 0 - health = myseed.endurance + health = seed.endurance lastcycle = world.time harvest = 0 - weedlevel = 0 // Reset - pestlevel = 0 // Reset + weedlevel = 0 + pestlevel = 0 updateicon() - visible_message("\blue [src] has been overtaken by [myseed.plantname].") + visible_message("\blue [src] has been overtaken by [seed.display_name].") return +/obj/machinery/hydroponics/proc/mutate(var/severity) -obj/machinery/hydroponics/proc/mutate() // Mutates the current seed + // No seed, no mutations. + if(!seed) + return - myseed.lifespan += rand(-2,2) - if(myseed.lifespan < 10) - myseed.lifespan = 10 - else if(myseed.lifespan > 30) - myseed.lifespan = 30 + // Check if we should even bother working on the current seed datum. + if(seed.mutants.len && severity > 1 && prob(10+mutation_mod)) + world << "Mutating species instead." + mutate_species() + return - myseed.endurance += rand(-5,5) - if(myseed.endurance < 10) - myseed.endurance = 10 - else if(myseed.endurance > 100) - myseed.endurance = 100 + // We need to make sure we're not modifying one of the global seed datums. + // If it's not in the global list, then no products of the line have been + // harvested yet and it's safe to assume it's restricted to this tray. + if(!isnull(seed_types[seed.name])) + seed = seed.diverge() + seed.mutate(severity,get_turf(src)) - myseed.production += rand(-1,1) - if(myseed.production < 2) - myseed.production = 2 - else if(myseed.production > 10) - myseed.production = 10 - - if(myseed.yield != -1) // Unharvestable shouldn't suddenly turn harvestable - myseed.yield += rand(-2,2) - if(myseed.yield < 0) - myseed.yield = 0 - else if(myseed.yield > 10) - myseed.yield = 10 - if(myseed.yield == 0 && myseed.plant_type == 2) - myseed.yield = 1 // Mushrooms always have a minimum yield of 1. - - if(myseed.potency != -1) //Not all plants have a potency - myseed.potency += rand(-25,25) - if(myseed.potency < 0) - myseed.potency = 0 - else if(myseed.potency > 100) - myseed.potency = 100 return +/obj/machinery/hydroponics/proc/check_level_sanity() + //Make sure various values are sane. + if(seed) + health = max(0,min(seed.endurance,health)) + else + health = 0 + dead = 0 + + nutrilevel = max(0,min(nutrilevel,10)) + waterlevel = max(0,min(waterlevel,100)) + pestlevel = max(0,min(pestlevel,10)) + weedlevel = max(0,min(weedlevel,10)) + toxins = max(0,min(toxins,10)) -obj/machinery/hydroponics/proc/hardmutate() // Strongly mutates the current seed. - - myseed.lifespan += rand(-4,4) - if(myseed.lifespan < 10) - myseed.lifespan = 10 - else if(myseed.lifespan > 30 && !istype(myseed,/obj/item/seeds/glowshroom)) //hack to prevent glowshrooms from always resetting to 30 sec delay - myseed.lifespan = 30 - - myseed.endurance += rand(-10,10) - if(myseed.endurance < 10) - myseed.endurance = 10 - else if(myseed.endurance > 100) - myseed.endurance = 100 - - myseed.production += rand(-2,2) - if(myseed.production < 2) - myseed.production = 2 - else if(myseed.production > 10) - myseed.production = 10 - - if(myseed.yield != -1) // Unharvestable shouldn't suddenly turn harvestable - myseed.yield += rand(-4,4) - if(myseed.yield < 0) - myseed.yield = 0 - else if(myseed.yield > 10) - myseed.yield = 10 - if(myseed.yield == 0 && myseed.plant_type == 2) - myseed.yield = 1 // Mushrooms always have a minimum yield of 1. - - if(myseed.potency != -1) //Not all plants have a potency - myseed.potency += rand(-50,50) - if(myseed.potency < 0) - myseed.potency = 0 - else if(myseed.potency > 100) - myseed.potency = 100 - return - - - -obj/machinery/hydroponics/proc/mutatespecie() // Mutagent produced a new plant! - - if ( istype(myseed, /obj/item/seeds/nettleseed )) - del(myseed) - myseed = new /obj/item/seeds/deathnettleseed - - else if ( istype(myseed, /obj/item/seeds/amanitamycelium )) - del(myseed) - myseed = new /obj/item/seeds/angelmycelium - - else if ( istype(myseed, /obj/item/seeds/lemonseed )) - del(myseed) - myseed = new /obj/item/seeds/cashseed - - else if ( istype(myseed, /obj/item/seeds/ambrosiavulgarisseed )) - del(myseed) - myseed = new /obj/item/seeds/ambrosiadeusseed - - else if ( istype(myseed, /obj/item/seeds/plumpmycelium )) - del(myseed) - myseed = new /obj/item/seeds/walkingmushroommycelium - - else if ( istype(myseed, /obj/item/seeds/chiliseed )) - del(myseed) - myseed = new /obj/item/seeds/icepepperseed - - else if ( istype(myseed, /obj/item/seeds/appleseed )) - del(myseed) - myseed = new /obj/item/seeds/goldappleseed - - else if ( istype(myseed, /obj/item/seeds/berryseed )) - del(myseed) - switch(rand(1,100)) - if(1 to 50) - myseed = new /obj/item/seeds/poisonberryseed - if(51 to 100) - myseed = new /obj/item/seeds/glowberryseed - - else if ( istype(myseed, /obj/item/seeds/poisonberryseed )) - del(myseed) - myseed = new /obj/item/seeds/deathberryseed - - else if ( istype(myseed, /obj/item/seeds/tomatoseed )) - del(myseed) - switch(rand(1,100)) - if(1 to 35) - myseed = new /obj/item/seeds/bluetomatoseed - if(36 to 70) - myseed = new /obj/item/seeds/bloodtomatoseed - if(71 to 100) - myseed = new /obj/item/seeds/killertomatoseed - - else if ( istype(myseed, /obj/item/seeds/bluetomatoseed )) - del(myseed) - myseed = new /obj/item/seeds/bluespacetomatoseed - - else if ( istype(myseed, /obj/item/seeds/grapeseed )) - del(myseed) - myseed = new /obj/item/seeds/greengrapeseed -/* - else if ( istype(myseed, /obj/item/seeds/tomatoseed )) - del(myseed) - myseed = new /obj/item/seeds/gibtomatoseed -*/ - else if ( istype(myseed, /obj/item/seeds/eggplantseed )) - del(myseed) - myseed = new /obj/item/seeds/eggyseed +/obj/machinery/hydroponics/proc/mutate_species() + var/previous_plant = seed.display_name + var/newseed = seed.get_mutant_variant() + if(newseed in seed_types) + seed = seed_types[newseed] else return dead = 0 - hardmutate() - planted = 1 + mutate(1) age = 0 - health = myseed.endurance + health = seed.endurance lastcycle = world.time harvest = 0 - weedlevel = 0 // Reset + weedlevel = 0 - spawn(5) // Wait a while updateicon() - visible_message("\red[src] has suddenly mutated into \blue [myseed.plantname]!") + visible_message("\red The \blue [previous_plant] \red has suddenly mutated into \blue [seed.display_name]!") return +/obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob) + if(closed_system && !istype(O,/obj/item/weapon/wrench)) + user << "You can't reach the interior while the lid is shut." + return -obj/machinery/hydroponics/proc/mutateweed() // If the weeds gets the mutagent instead. Mind you, this pretty much destroys the old plant - if ( weedlevel > 5 ) - del(myseed) - var/newWeed = pick(/obj/item/seeds/libertymycelium, /obj/item/seeds/angelmycelium, /obj/item/seeds/deathnettleseed, /obj/item/seeds/kudzuseed) - myseed = new newWeed - dead = 0 - hardmutate() - planted = 1 - age = 0 - health = myseed.endurance - lastcycle = world.time - harvest = 0 - weedlevel = 0 // Reset - - spawn(5) // Wait a while - updateicon() - visible_message("\red The mutated weeds in [src] spawned a \blue [myseed.plantname]!") - else - usr << "The few weeds in the [src] seem to react, but only for a moment..." - return - - - -obj/machinery/hydroponics/proc/plantdies() // OH NOES!!!!! I put this all in one function to make things easier - health = 0 - dead = 1 - harvest = 0 - updateicon() - visible_message("\red[src] is looking very unhealthy!") - return - - - -obj/machinery/hydroponics/proc/mutatepest() // Until someone makes a spaceworm, this is commented out - if ( pestlevel > 5 ) - visible_message("The pests seem to behave oddly...") -// spawn(10) -// new /obj/effect/alien/spaceworm(loc) - else - usr << "The pests seem to behave oddly, but quickly settle down..." //Modified to give a better idea of what's happening when you inject mutagen. There's still nothing proper to spawn here though. -Cheridan - return - - - -obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob) - - //Called when mob user "attacks" it with object O if (istype(O, /obj/item/weapon/reagent_containers/glass)) var/b_amount = O.reagents.get_reagent_amount("water") if(b_amount > 0 && waterlevel < 100) @@ -456,265 +461,204 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob) O.reagents.remove_reagent("water", b_amount) waterlevel += b_amount playsound(loc, 'sound/effects/slosh.ogg', 25, 1) - user << "You fill \the [src] with [b_amount] units of water." + user << "You fill \the [src] with [round(b_amount,0.1)] units of water." - // Toxicity dilutation code. The more water you put in, the lesser the toxin concentration. - toxic -= round(b_amount/4) - if (toxic < 0 ) // Make sure it won't go overboard - toxic = 0 + // The more water you put in, the more diluted the toxins become. + toxins -= round(b_amount/4) else if(waterlevel >= 100) user << "\red \The [src] is already full." else user << "\red \The [O] is not filled with water." + + check_level_sanity() updateicon() + // Nutrient fluid replacement. TODO: Consider rolling this into a proper reagent-processing proc. else if ( istype(O, /obj/item/nutrient) ) - var/obj/item/nutrient/myNut = O + var/obj/item/nutrient/nutrient = O user.u_equip(O) nutrilevel = 10 - yieldmod = myNut.yieldmod - mutmod = myNut.mutmod + yield_mod = nutrient.yieldmod + mutation_mod = nutrient.mutmod user << "You replace the nutrient solution in the [src]." del(O) updateicon() - else if(istype(O, /obj/item/weapon/reagent_containers/syringe)) // Syringe stuff + // Syringe stuff + else if(istype(O, /obj/item/weapon/reagent_containers/syringe)) + var/obj/item/weapon/reagent_containers/syringe/S = O - if (planted) + + if(seed) + // Injecting into the plant. if (S.mode == 1) if(!S.reagents.total_volume) - user << "\red \The [O] is empty." + user << "\red [O] is empty." return - user << "\red You inject the [myseed.plantname] with a chemical solution." - // There needs to be a good amount of mutagen to actually work + user << "\red You inject the [seed.display_name] with a chemical solution." - if(S.reagents.has_reagent("mutagen", 5)) - switch(rand(100)) - if (91 to 100) plantdies() - if (81 to 90) mutatespecie() - if (66 to 80) hardmutate() - if (41 to 65) mutate() - if (21 to 41) user << "The plants don't seem to react..." - if (11 to 20) mutateweed() - if (1 to 10) mutatepest() - else user << "Nothing happens..." + // Uuuuuugh this whole chunk is going to be awful. TODO: condense it down somehow. + // Run through the various reagents in the lists and apply their effects as needed. + for(var/datum/reagent/R in S.reagents.reagent_list) - // Antitoxin binds shit pretty well. So the tox goes significantly down - if(S.reagents.has_reagent("anti_toxin", 1)) - toxic -= round(S.reagents.get_reagent_amount("anti_toxin")*2) + var/reagent_value = 0 - // NIGGA, YOU JUST WENT ON FULL RETARD. - if(S.reagents.has_reagent("toxin", 1)) - toxic += round(S.reagents.get_reagent_amount("toxin")*2) + if(toxic_reagents[R.id]) + reagent_value = toxic_reagents[R.id] + if(reagent_value > 0) + if(reagent_value < 1) + toxins += reagent_value + else + toxins += round(S.reagents.get_reagent_amount(R.id)*rand(1,reagent_value)) + else + if(reagent_value > -1) + toxins += reagent_value + else + toxins -= abs(round(S.reagents.get_reagent_amount(R.id)*rand(1,abs(reagent_value)))) - // Milk is good for humans, but bad for plants. The sugars canot be used by plants, and the milk fat fucks up growth. Not shrooms though. I can't deal with this now... - if(S.reagents.has_reagent("milk", 1)) - nutrilevel += round(S.reagents.get_reagent_amount("milk")*0.1) - waterlevel += round(S.reagents.get_reagent_amount("milk")*0.9) + if(nutrient_reagents[R.id]) + reagent_value = nutrient_reagents[R.id] + if(reagent_value > 0) + if(reagent_value < 1) + nutrilevel += reagent_value + else + nutrilevel += round(S.reagents.get_reagent_amount(R.id)*rand(1,reagent_value)) + else + if(reagent_value > -1) + nutrilevel += reagent_value + else + nutrilevel -= abs(round(S.reagents.get_reagent_amount(R.id)*rand(1,abs(reagent_value)))) - // Beer is a chemical composition of alcohol and various other things. It's a shitty nutrient but hey, it's still one. Also alcohol is bad, mmmkay? - if(S.reagents.has_reagent("beer", 1)) - health -= round(S.reagents.get_reagent_amount("beer")*0.05) - nutrilevel += round(S.reagents.get_reagent_amount("beer")*0.25) - waterlevel += round(S.reagents.get_reagent_amount("beer")*0.7) + if(weedkiller_reagents[R.id]) + reagent_value = weedkiller_reagents[R.id] + if(reagent_value > 0) + if(reagent_value < 1) + weedlevel += reagent_value + else + weedlevel += round(S.reagents.get_reagent_amount(R.id)*rand(1,reagent_value)) + else + if(reagent_value > -1) + weedlevel += reagent_value + else + weedlevel -= abs(round(S.reagents.get_reagent_amount(R.id)*rand(1,abs(reagent_value)))) - // You're an idiot of thinking that one of the most corrosive and deadly gasses would be beneficial - if(S.reagents.has_reagent("fluorine", 1)) - health -= round(S.reagents.get_reagent_amount("fluorine")*2) - toxic += round(S.reagents.get_reagent_amount("flourine")*2.5) - waterlevel -= round(S.reagents.get_reagent_amount("flourine")*0.5) - weedlevel -= rand(1,4) + if(pestkiller_reagents[R.id]) + reagent_value = pestkiller_reagents[R.id] + if(reagent_value > 0) + if(reagent_value < 1) + pestlevel += reagent_value + else + pestlevel += round(S.reagents.get_reagent_amount(R.id)*rand(1,reagent_value)) + else + if(reagent_value > -1) + pestlevel += reagent_value + else + pestlevel -= abs(round(S.reagents.get_reagent_amount(R.id)*rand(1,abs(reagent_value)))) - // You're an idiot of thinking that one of the most corrosive and deadly gasses would be beneficial - if(S.reagents.has_reagent("chlorine", 1)) - health -= round(S.reagents.get_reagent_amount("chlorine")*1) - toxic += round(S.reagents.get_reagent_amount("chlorine")*1.5) - waterlevel -= round(S.reagents.get_reagent_amount("chlorine")*0.5) - weedlevel -= rand(1,3) + if(beneficial_reagents[R.id]) + reagent_value = beneficial_reagents[R.id] + if(reagent_value > 0) + if(reagent_value < 1) + health += reagent_value + else + health += round(S.reagents.get_reagent_amount(R.id)*rand(1,reagent_value)) + else + if(reagent_value > -1) + health += reagent_value + else + health -= abs(round(S.reagents.get_reagent_amount(R.id)*rand(1,abs(reagent_value)))) - // White Phosphorous + water -> phosphoric acid. That's not a good thing really. Phosphoric salts are beneficial though. And even if the plant suffers, in the long run the tray gets some nutrients. The benefit isn't worth that much. - if(S.reagents.has_reagent("phosphorus", 1)) - health -= round(S.reagents.get_reagent_amount("phosphorus")*0.75) - nutrilevel += round(S.reagents.get_reagent_amount("phosphorus")*0.1) - waterlevel -= round(S.reagents.get_reagent_amount("phosphorus")*0.5) - weedlevel -= rand(1,2) + if(water_reagents[R.id]) + reagent_value = water_reagents[R.id] + if(reagent_value > 0) + if(reagent_value < 1) + waterlevel += reagent_value + else + waterlevel += round(S.reagents.get_reagent_amount(R.id)*rand(1,reagent_value)) + else + if(reagent_value > -1) + waterlevel += reagent_value + else + waterlevel -= abs(round(S.reagents.get_reagent_amount(R.id)*rand(1,abs(reagent_value)))) - // Plants should not have sugar, they can't use it and it prevents them getting water/ nutients, it is good for mold though... - if(S.reagents.has_reagent("sugar", 1)) - weedlevel += rand(1,2) - pestlevel += rand(1,2) - nutrilevel+= round(S.reagents.get_reagent_amount("sugar")*0.1) - - // It is water! - if(S.reagents.has_reagent("water", 1)) - waterlevel += round(S.reagents.get_reagent_amount("water")*1) - - // Holy water. Mostly the same as water, it also heals the plant a little with the power of the spirits~ - if(S.reagents.has_reagent("holywater", 1)) - waterlevel += round(S.reagents.get_reagent_amount("holywater")*1) - health += round(S.reagents.get_reagent_amount("holywater")*0.1) - - // A variety of nutrients are dissolved in club soda, without sugar. These nutrients include carbon, oxygen, hydrogen, phosphorous, potassium, sulfur and sodium, all of which are needed for healthy plant growth. - if(S.reagents.has_reagent("sodawater", 1)) - waterlevel += round(S.reagents.get_reagent_amount("sodawater")*1) - health += round(S.reagents.get_reagent_amount("sodawater")*0.1) - nutrilevel += round(S.reagents.get_reagent_amount("sodawater")*0.1) - - // Man, you guys are retards - if(S.reagents.has_reagent("sacid", 1)) - health -= round(S.reagents.get_reagent_amount("sacid")*1) - toxic += round(S.reagents.get_reagent_amount("sacid")*1.5) - weedlevel -= rand(1,2) - - // SERIOUSLY - if(S.reagents.has_reagent("pacid", 1)) - health -= round(S.reagents.get_reagent_amount("pacid")*2) - toxic += round(S.reagents.get_reagent_amount("pacid")*3) - weedlevel -= rand(1,4) - - // Plant-B-Gone is just as bad - if(S.reagents.has_reagent("plantbgone", 1)) - health -= round(S.reagents.get_reagent_amount("plantbgone")*2) - toxic -= round(S.reagents.get_reagent_amount("plantbgone")*3) - weedlevel -= rand(4,8) - - // Healing - if(S.reagents.has_reagent("cryoxadone", 1)) - health += round(S.reagents.get_reagent_amount("cryoxadone")*3) - toxic -= round(S.reagents.get_reagent_amount("cryoxadone")*3) - - // FINALLY IMPLEMENTED, Ammonia is bad ass. - if(S.reagents.has_reagent("ammonia", 1)) - health += round(S.reagents.get_reagent_amount("ammonia")*0.5) - nutrilevel += round(S.reagents.get_reagent_amount("ammonia")*1) - - // FINALLY IMPLEMENTED, This is more bad ass, and pests get hurt by the corrosive nature of it, not the plant. - if(S.reagents.has_reagent("diethylamine", 1)) - health += round(S.reagents.get_reagent_amount("diethylamine")*1) - nutrilevel += round(S.reagents.get_reagent_amount("diethylamine")*2) - pestlevel -= rand(1,2) - - // Compost, effectively - if(S.reagents.has_reagent("nutriment", 1)) - health += round(S.reagents.get_reagent_amount("nutriment")*0.5) - nutrilevel += round(S.reagents.get_reagent_amount("nutriment")*1) - - // Poor man's mutagen. - if(S.reagents.has_reagent("radium", 1)) - health -= round(S.reagents.get_reagent_amount("radium")*1.5) - toxic += round(S.reagents.get_reagent_amount("radium")*2) - if(S.reagents.has_reagent("radium", 10)) - switch(rand(100)) - if (91 to 100) plantdies() - if (81 to 90) mutatespecie() - if (66 to 80) hardmutate() - if (41 to 65) mutate() - if (21 to 41) user << "The plants don't seem to react..." - if (11 to 20) mutateweed() - if (1 to 10) mutatepest() - else user << "Nothing happens..." - - // The best stuff there is. For testing/debugging. - if(S.reagents.has_reagent("adminordrazine", 1)) - waterlevel += round(S.reagents.get_reagent_amount("adminordrazine")*1) - health += round(S.reagents.get_reagent_amount("adminordrazine")*1) - nutrilevel += round(S.reagents.get_reagent_amount("adminordrazine")*1) - pestlevel -= rand(1,5) - weedlevel -= rand(1,5) - if(S.reagents.has_reagent("adminordrazine", 5)) - switch(rand(100)) - if (66 to 100) mutatespecie() - if (33 to 65) mutateweed() - if (1 to 32) mutatepest() - else user << "Nothing happens..." + // Mutagen is distinct from the previous types and mostly has a chance of proccing a mutation. + if(mutagenic_reagents[R.id]) + var/reagent_total = S.reagents.get_reagent_amount(R.id) + reagent_value = mutagenic_reagents[R.id]+mutation_mod + if(reagent_total >= reagent_value) + if(prob(min(reagent_total*reagent_value,100))) + mutate(reagent_value > 10 ? 2 : 1) S.reagents.clear_reagents() - if (weedlevel < 0 ) // The following checks are to prevent the stats from going out of bounds. - weedlevel = 0 - if (health < 0 ) - health = 0 - if (waterlevel > 100 ) - waterlevel = 100 - if (waterlevel < 0 ) - waterlevel = 0 - if (toxic < 0 ) - toxic = 0 - if (toxic > 100 ) - toxic = 100 - if (pestlevel < 0 ) - pestlevel = 0 - if (nutrilevel > 10 ) - nutrilevel = 10 + else user << "You can't get any extract out of this plant." else - user << "There's nothing to apply the solution into." + user << "There's nothing to inject the solution into." + + check_level_sanity() updateicon() - else if ( istype(O, /obj/item/seeds/) ) - if(!planted) - user.u_equip(O) - user << "You plant the [O.name]" - dead = 0 - myseed = O - planted = 1 - age = 1 - health = myseed.endurance - lastcycle = world.time - O.loc = src - if((user.client && user.s_active != src)) - user.client.screen -= O - O.dropped(user) + else if (istype(O, /obj/item/seeds)) + + if(!seed) + + var/obj/item/seeds/S = O + user.drop_item(O) + + if(!S.seed) + user << "The packet seems to be empty. You throw it away." + del(O) + return + + user << "You plant the [S.seed.seed_name] [S.seed.seed_noun]." + + if(S.seed.spread == 1) + msg_admin_attack("[key_name(user)] has planted a creeper packet.") + var/obj/effect/plant_controller/creeper/PC = new(get_turf(src)) + if(PC) + PC.seed = S.seed + else if(S.seed.spread == 2) + msg_admin_attack("[key_name(user)] has planted a spreading vine packet.") + var/obj/effect/plant_controller/PC = new(get_turf(src)) + if(PC) + PC.seed = S.seed + else + seed = S.seed //Grab the seed datum. + dead = 0 + age = 1 + health = seed.endurance + lastcycle = world.time + + del(O) + + check_level_sanity() updateicon() else user << "\red The [src] already has seeds in it!" - else if (istype(O, /obj/item/device/analyzer/plant_analyzer)) - if(planted && myseed) - user << "*** [myseed.plantname] ***" //Carn: now reports the plants growing, not the seeds. - user << "-Plant Age: \blue [age]" - user << "-Plant Endurance: \blue [myseed.endurance]" - user << "-Plant Lifespan: \blue [myseed.lifespan]" - if(myseed.yield != -1) - user << "-Plant Yield: \blue [myseed.yield]" - user << "-Plant Production: \blue [myseed.production]" - if(myseed.potency != -1) - user << "-Plant Potency: \blue [myseed.potency]" - user << "-Weed level: \blue [weedlevel]/10" - user << "-Pest level: \blue [pestlevel]/10" - user << "-Toxicity level: \blue [toxic]/100" - user << "-Water level: \blue [waterlevel]/100" - user << "-Nutrition level: \blue [nutrilevel]/10" - user << "" - else - user << "No plant found." - user << "-Weed level: \blue [weedlevel]/10" - user << "-Pest level: \blue [pestlevel]/10" - user << "-Toxicity level: \blue [toxic]/100" - user << "-Water level: \blue [waterlevel]/100" - user << "-Nutrition level: \blue [nutrilevel]/10" - user << "" - else if (istype(O, /obj/item/weapon/reagent_containers/spray/plantbgone)) - if(planted && myseed) + if(seed) health -= rand(5,20) if(pestlevel > 0) - pestlevel -= 2 // Kill kill kill - else - pestlevel = 0 + pestlevel -= 2 if(weedlevel > 0) - weedlevel -= 3 // Kill kill kill - else - weedlevel = 0 - toxic += 4 // Oops + weedlevel -= 3 + + toxins += 4 + + check_level_sanity() + visible_message("\red \The [src] has been sprayed with \the [O][(user ? " by [user]." : ".")]") playsound(loc, 'sound/effects/spray3.ogg', 50, 1, -6) updateicon() + else + user << "There's nothing in [src] to spray!" else if (istype(O, /obj/item/weapon/minihoe)) // The minihoe //var/deweeding @@ -722,56 +666,46 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob) user.visible_message("\red [user] starts uprooting the weeds.", "\red You remove the weeds from the [src].") weedlevel = 0 updateicon() - src.updateicon() else user << "\red This plot is completely devoid of weeds. It doesn't need uprooting." - else if ( istype(O, /obj/item/weapon/weedspray) ) - var/obj/item/weedkiller/myWKiller = O - user.u_equip(O) - toxic += myWKiller.toxicity - weedlevel -= myWKiller.WeedKillStr - if (weedlevel < 0 ) // Make sure it won't go overoboard - weedlevel = 0 - if (toxic > 100 ) // Make sure it won't go overoboard - toxic = 100 - user << "You apply the weedkiller solution into the [src]." - playsound(loc, 'sound/effects/spray3.ogg', 50, 1, -6) - del(O) - updateicon() - else if (istype(O, /obj/item/weapon/storage/bag/plants)) + attack_hand(user) + var/obj/item/weapon/storage/bag/plants/S = O for (var/obj/item/weapon/reagent_containers/food/snacks/grown/G in locate(user.x,user.y,user.z)) if(!S.can_be_inserted(G)) return S.handle_item_insertion(G, 1) - else if ( istype(O, /obj/item/weapon/pestspray) ) - var/obj/item/pestkiller/myPKiller = O - user.u_equip(O) - toxic += myPKiller.toxicity - pestlevel -= myPKiller.PestKillStr - if (pestlevel < 0 ) // Make sure it won't go overoboard - pestlevel = 0 - if (toxic > 100 ) // Make sure it won't go overoboard - toxic = 100 - user << "You apply the pestkiller solution into the [src]." + else if ( istype(O, /obj/item/weapon/plantspray) ) + + var/obj/item/weapon/plantspray/spray = O + user.drop_item(O) + toxins += spray.toxicity + pestlevel -= spray.pest_kill_str + weedlevel -= spray.weed_kill_str + user << "You spray [src] with [O]." playsound(loc, 'sound/effects/spray3.ogg', 50, 1, -6) del(O) + + check_level_sanity() updateicon() + else if(istype(O, /obj/item/weapon/wrench)) playsound(loc, 'sound/items/Ratchet.ogg', 50, 1) anchored = !anchored user << "You [anchored ? "wrench" : "unwrench"] \the [src]." - else if(istype(O, /obj/item/weapon/shovel)) - if(istype(src, /obj/machinery/hydroponics/soil)) - user << "You clear up the [src]!" - del(src) + + //Update atmos feed, if needed. + if(anchored && closed_system) + get_connector() + else if(istype(O, /obj/item/apiary)) - if(planted) - user << "\red The hydroponics tray is already occupied!" + + if(seed) + user << "\red [src] is already occupied!" else user.drop_item() del(O) @@ -784,190 +718,70 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob) return /obj/machinery/hydroponics/attack_tk(mob/user as mob) + if(harvest) - myseed.harvest(src) + harvest(user) + else if(dead) - planted = 0 - dead = 0 - usr << text("You remove the dead plant from the [src].") - del(myseed) - updateicon() + remove_dead(user) /obj/machinery/hydroponics/attack_hand(mob/user as mob) - if(istype(usr,/mob/living/silicon)) //How does AI know what plant is? + + if(istype(usr,/mob/living/silicon)) return + if(harvest) - if(!user in range(1,src)) - return - myseed.harvest() + harvest(user) else if(dead) - planted = 0 - dead = 0 - usr << text("You remove the dead plant from the [src].") - del(myseed) - updateicon() + remove_dead(user) + else - if(planted && !dead) - usr << text("The [src] has \blue [myseed.plantname] \black planted.") - if(health <= (myseed.endurance / 2)) - usr << text("The plant looks unhealthy") + if(seed && !dead) + usr << "[src] has \blue [seed.display_name] \black planted." + if(health <= (seed.endurance / 2)) + usr << "The plant looks \red unhealthy." else - usr << text("The [src] is empty.") - usr << text("Water: [waterlevel]/100") - usr << text("Nutrient: [nutrilevel]/10") - if(weedlevel >= 5) // Visual aid for those blind - usr << text("The [src] is filled with weeds!") - if(pestlevel >= 5) // Visual aid for those blind - usr << text("The [src] is filled with tiny worms!") - usr << text ("") // Empty line for readability. + usr << "[src] is empty." + usr << "Water: [round(waterlevel,0.1)]/100" + usr << "Nutrient: [round(nutrilevel,0.1)]/10" + if(weedlevel >= 5) + usr << "[src] is \red filled with weeds!" + if(pestlevel >= 5) + usr << "[src] is \red filled with tiny worms!" + usr << text ("") +/obj/machinery/hydroponics/verb/close_lid() + set name = "Toggle Tray Lid" + set category = "Object" + set src in view(1) -/obj/item/seeds/proc/harvest(mob/user = usr) - var/produce = text2path(productname) - var/obj/machinery/hydroponics/parent = loc //for ease of access - var/t_amount = 0 + if(!usr || usr.stat || usr.restrained()) + return - while ( t_amount < (yield * parent.yieldmod )) - var/obj/item/weapon/reagent_containers/food/snacks/grown/t_prod = new produce(user.loc, potency) // User gets a consumable - if(!t_prod) return - t_prod.seed = mypath - t_prod.species = species - t_prod.lifespan = lifespan - t_prod.endurance = endurance - t_prod.maturation = maturation - t_prod.production = production - t_prod.yield = yield - t_prod.potency = potency - t_prod.plant_type = plant_type - t_amount++ - - parent.update_tray() - -/obj/item/seeds/grassseed/harvest(mob/user = usr) - var/obj/machinery/hydroponics/parent = loc //for ease of access - var/t_yield = round(yield*parent.yieldmod) - - if(t_yield > 0) - var/obj/item/stack/tile/grass/new_grass = new/obj/item/stack/tile/grass(user.loc) - new_grass.amount = t_yield - - parent.update_tray() - -/obj/item/seeds/gibtomato/harvest(mob/user = usr) - var/produce = text2path(productname) - var/obj/machinery/hydroponics/parent = loc //for ease of access - var/t_amount = 0 - - while ( t_amount < (yield * parent.yieldmod )) - var/obj/item/weapon/reagent_containers/food/snacks/grown/t_prod = new produce(user.loc, potency) // User gets a consumable - - t_prod.seed = mypath - t_prod.species = species - t_prod.lifespan = lifespan - t_prod.endurance = endurance - t_prod.maturation = maturation - t_prod.production = production - t_prod.yield = yield - t_prod.potency = potency - t_prod.plant_type = plant_type - t_amount++ - - parent.update_tray() - -/obj/item/seeds/nettleseed/harvest(mob/user = usr) - var/produce = text2path(productname) - var/obj/machinery/hydroponics/parent = loc //for ease of access - var/t_amount = 0 - - while ( t_amount < (yield * parent.yieldmod )) - var/obj/item/weapon/grown/t_prod = new produce(user.loc, potency) // User gets a consumable -QualityVan - t_prod.seed = mypath - t_prod.species = species - t_prod.lifespan = lifespan - t_prod.endurance = endurance - t_prod.maturation = maturation - t_prod.production = production - t_prod.yield = yield - t_prod.changePotency(potency) // -QualityVan - t_prod.plant_type = plant_type - t_amount++ - - parent.update_tray() - -/obj/item/seeds/deathnettleseed/harvest(mob/user = usr) //isn't a nettle subclass yet, so - var/produce = text2path(productname) - var/obj/machinery/hydroponics/parent = loc //for ease of access - var/t_amount = 0 - - while ( t_amount < (yield * parent.yieldmod )) - var/obj/item/weapon/grown/t_prod = new produce(user.loc, potency) // User gets a consumable -QualityVan - t_prod.seed = mypath - t_prod.species = species - t_prod.lifespan = lifespan - t_prod.endurance = endurance - t_prod.maturation = maturation - t_prod.production = production - t_prod.yield = yield - t_prod.changePotency(potency) // -QualityVan - t_prod.plant_type = plant_type - t_amount++ - - parent.update_tray() - -/obj/item/seeds/eggyseed/harvest(mob/user = usr) - var/produce = text2path(productname) - var/obj/machinery/hydroponics/parent = loc //for ease of access - var/t_amount = 0 - - while ( t_amount < (yield * parent.yieldmod )) - new produce(user.loc) - t_amount++ - - parent.update_tray() - -/obj/machinery/hydroponics/proc/update_tray(mob/user = usr) - harvest = 0 - lastproduce = age - if((yieldmod * myseed.yield) <= 0 || istype(myseed,/obj/item/seeds/replicapod)) - user << text("\red You fail to harvest anything useful.") - else - user << text("You harvest from the [myseed.plantname].") - if(myseed.oneharvest) - del(myseed) - planted = 0 - dead = 0 + closed_system = !closed_system + usr << "You [closed_system ? "close" : "open"] the tray's lid." updateicon() -/////////////////////////////////////////////////////////////////////////////// -/obj/machinery/hydroponics/soil //Not actually hydroponics at all! Honk! + if(anchored && closed_system) + get_connector() + +/obj/machinery/hydroponics/soil name = "soil" icon = 'icons/obj/hydroponics.dmi' icon_state = "soil" density = 0 use_power = 0 + draw_warnings = 0 - updateicon() // Same as normal but with the overlays removed - Cheridan. - overlays.Cut() - if(planted) - if(dead) - overlays += image('icons/obj/hydroponics.dmi', icon_state="[myseed.species]-dead") - else if(harvest) - if(myseed.plant_type == 2) // Shrooms don't have a -harvest graphic - overlays += image('icons/obj/hydroponics.dmi', icon_state="[myseed.species]-grow[myseed.growthstages]") - else - overlays += image('icons/obj/hydroponics.dmi', icon_state="[myseed.species]-harvest") - else if(age < myseed.maturation) - var/t_growthstate = ((age / myseed.maturation) * myseed.growthstages ) - overlays += image('icons/obj/hydroponics.dmi', icon_state="[myseed.species]-grow[round(t_growthstate)]") - lastproduce = age - else - overlays += image('icons/obj/hydroponics.dmi', icon_state="[myseed.species]-grow[myseed.growthstages]") +/obj/machinery/hydroponics/soil/attackby(var/obj/item/O as obj, var/mob/user as mob) + if(istype(O, /obj/item/weapon/shovel)) + user << "You clear up [src]!" + del(src) + else + ..() - if(!luminosity) - if(istype(myseed,/obj/item/seeds/glowshroom)) - SetLuminosity(round(myseed.potency/10)) - else - SetLuminosity(0) - return +/obj/machinery/hydroponics/soil/New() + ..() + verbs -= /obj/machinery/hydroponics/verb/close_lid -#undef HYDRO_SPEED_MULTIPLIER +#undef HYDRO_SPEED_MULTIPLIER \ No newline at end of file diff --git a/code/modules/hydroponics/seed_datums.dm b/code/modules/hydroponics/seed_datums.dm new file mode 100644 index 00000000000..9f4c1e53e3f --- /dev/null +++ b/code/modules/hydroponics/seed_datums.dm @@ -0,0 +1,1403 @@ +var/global/list/seed_types = list() // A list of all seed data. +var/global/list/gene_tag_masks = list() // Gene obfuscation for delicious trial and error goodness. + +// Predefined/roundstart varieties use a string key to make it +// easier to grab the new variety when mutating. Post-roundstart +// and mutant varieties use their uid converted to a string instead. +// Looks like shit but it's sort of necessary. + +proc/populate_seed_list() + + // Populate the global seed datum list. + for(var/type in typesof(/datum/seed)-/datum/seed) + var/datum/seed/S = new type + seed_types[S.name] = S + S.uid = "[seed_types.len]" + S.roundstart = 1 + + // Make sure any seed packets that were mapped in are updated + // correctly (since the seed datums did not exist a tick ago). + for(var/obj/item/seeds/S in world) + S.update_seed() + + //Might as well mask the gene types while we're at it. + var/list/gene_tags = list("products","consumption","environment","resistance","vigour","flowers") + var/list/used_masks = list() + + while(gene_tags && gene_tags.len) + var/gene_tag = pick(gene_tags) + var/gene_mask = "[num2hex(rand(0,255))]" + + while(gene_mask in used_masks) + gene_mask = "[num2hex(rand(0,255))]" + + used_masks += gene_mask + gene_tags -= gene_tag + gene_tag_masks[gene_tag] = gene_mask + +/datum/plantgene + var/genetype // Label used when applying trait. + var/list/values // Values to copy into the target seed datum. + +/datum/seed + + //Tracking. + var/uid // Unique identifier. + var/name // Index for global list. + var/seed_name // Plant name for seed packet. + var/seed_noun = "seeds" // Descriptor for packet. + var/display_name // Prettier name. + var/roundstart // If set, seed will not display variety number. + + // Output. + var/list/products // Possible fruit/other product paths. + var/list/mutants // Possible predefined mutant varieties, if any. + var/list/chems // Chemicals that plant produces in products/injects into victim. + var/list/consume_gasses // The plant will absorb these gasses during its life. + var/list/exude_gasses // The plant will exude these gasses during its life. + + //Tolerances. + var/requires_nutrients = 1 // The plant can starve. + var/nutrient_consumption = 0.1 // Plant eats this much per tick. + var/requires_water = 1 // The plant can become dehydrated. + var/water_consumption = 1 // Plant drinks this much per tick. + var/ideal_heat = 293 // Preferred temperature in Kelvin. + var/heat_tolerance = 20 // Departure from ideal that is survivable. + var/ideal_light = 8 // Preferred light level in luminosity. + var/light_tolerance = 5 // Departure from ideal that is survivable. + var/toxins_tolerance = 5 // Resistance to poison. + var/lowkpa_tolerance = 25 // Low pressure capacity. + var/highkpa_tolerance = 200 // High pressure capacity. + var/pest_tolerance = 5 // Threshold for pests to impact health. + var/weed_tolerance = 5 // Threshold for weeds to impact health. + + //General traits. + var/endurance = 100 // Maximum plant HP when growing. + var/yield = 0 // Amount of product. + var/lifespan = 0 // Time before the plant dies. + var/maturation = 0 // Time taken before the plant is mature. + var/production = 0 // Time before harvesting can be undertaken again. + var/growth_stages = 6 // Number of stages the plant passes through before it is mature. + var/harvest_repeat = 0 // If 1, this plant will fruit repeatedly.. + var/potency = 1 // General purpose plant strength value. + var/spread = 0 // 0 limits plant to tray, 1 = creepers, 2 = vines. + var/carnivorous = 0 // 0 = none, 1 = eat pests in tray, 2 = eat living things (when a vine). + var/parasite = 0 // 0 = no, 1 = gain health from weed level. + var/immutable // If set, plant will never mutate. + var/alter_temp // If set, the plant will periodically alter local temp by this amount. + + // Cosmetics. + var/plant_icon // Icon to use for the plant growing in the tray. + var/product_icon // Base to use for fruit coming from this plant (if a vine). + var/product_colour // Colour to apply to product base (if a vine). + var/packet_icon = "seed" // Icon to use for physical seed packet item. + var/biolum // Plant is bioluminescent. + var/biolum_colour // The colour of the plant's radiance. + var/flowers // Plant has a flower overlay. + var/flower_icon = "vine_fruit" // Which overlay to use. + var/flower_colour // Which colour to use. + +//Returns a key corresponding to an entry in the global seed list. +/datum/seed/proc/get_mutant_variant() + if(!mutants || !mutants.len || immutable) return 0 + return pick(mutants) + +//Mutates the plant overall (randomly). +/datum/seed/proc/mutate(var/degree,var/turf/source_turf) + if(!degree || immutable) return + + source_turf.visible_message("[display_name] quivers uneasily!") + + //This looks like shit, but it's a lot easier to read/change this way. + var/total_mutations = rand(1,1+degree) + for(var/i = 0;ichanges colour!") + else + source_turf.visible_message("[display_name]'s glow dims...") + if(11) + if(prob(degree*2)) + flowers = !flowers + if(flowers) + source_turf.visible_message("[display_name] sprouts a bevy of flowers!") + if(prob(degree*2)) + flower_colour = "#[pick(list("FF0000","FF7F00","FFFF00","00FF00","0000FF","4B0082","8F00FF"))]" + source_turf.visible_message("[display_name]'s flowers changes colour!") + else + source_turf.visible_message("[display_name]'s flowers wither and fall off.") + return + +//Mutates a specific trait/set of traits. +/datum/seed/proc/apply_gene(var/datum/plantgene/gene) + + if(!gene || !gene.values || immutable) return + + switch(gene.genetype) + + //Splicing products has some detrimental effects on yield and lifespan. + if("products") + + if(gene.values.len < 6) return + + yield = round(yield*0.5) + endurance = round(endurance*0.5) + lifespan = round(lifespan*0.8) + + if(!products) products = list() + products |= gene.values[1] + + if(!chems) chems = list() + for(var/rid in gene.values[2]) + var/existing_chem + for(var/chem in chems) + if(rid == chem) + existing_chem = 1 + break + + if(existing_chem) + chems[rid][1] = max(1,round((chems[rid][1]+gene.values[2][rid][1])/2)) + chems[rid][2] = max(1,round((chems[rid][2]+gene.values[2][rid][2])/2)) + else + chems[rid] = gene.values[2][rid] + + //TODO. + //if(!exude_gasses) exude_gasses = list() + //exude_gasses |= gene.values[3] + //for(var/gas in exude_gasses) + // exude_gasses[gas] = max(1,round(exude_gasses[gas]/2)) + + alter_temp = gene.values[4] + potency = gene.values[5] + harvest_repeat = gene.values[6] + + if("consumption") + + if(gene.values.len < 7) return + + consume_gasses = gene.values[1] + requires_nutrients = gene.values[2] + nutrient_consumption = gene.values[3] + requires_water = gene.values[4] + water_consumption = gene.values[5] + carnivorous = gene.values[6] + parasite = gene.values[7] + + if("environment") + + if(gene.values.len < 6) return + + ideal_heat = gene.values[1] + heat_tolerance = gene.values[2] + ideal_light = gene.values[3] + light_tolerance = gene.values[4] + lowkpa_tolerance = gene.values[5] + highkpa_tolerance = gene.values[6] + + if("resistance") + + if(gene.values.len < 3) return + + toxins_tolerance = gene.values[1] + pest_tolerance = gene.values[2] + weed_tolerance = gene.values[3] + + if("vigour") + + if(gene.values.len < 6) return + + endurance = gene.values[1] + yield = gene.values[2] + lifespan = gene.values[3] + spread = gene.values[4] + maturation = gene.values[5] + production = gene.values[6] + + if("flowers") + + if(gene.values.len < 7) return + + product_icon = gene.values[1] + product_colour = gene.values[2] + biolum = gene.values[3] + biolum_colour = gene.values[4] + flowers = gene.values[5] + flower_icon = gene.values[6] + flower_colour = gene.values[7] + +//Returns a list of the desired trait values. +/datum/seed/proc/get_gene(var/genetype) + + if(!genetype) return 0 + + var/datum/plantgene/P = new() + P.genetype = genetype + + switch(genetype) + if("products") + P.values = list( + (products ? products : 0), + (chems ? chems : 0), + (exude_gasses ? exude_gasses : 0), + (alter_temp ? alter_temp : 0), + (potency ? potency : 0), + (harvest_repeat ? harvest_repeat : 0) + ) + + if("consumption") + P.values = list( + (consume_gasses ? consume_gasses : 0), + (requires_nutrients ? requires_nutrients : 0), + (nutrient_consumption ? nutrient_consumption : 0), + (requires_water ? requires_water : 0), + (water_consumption ? water_consumption : 0), + (carnivorous ? carnivorous : 0), + (parasite ? parasite : 0) + ) + + if("environment") + P.values = list( + (ideal_heat ? ideal_heat : 0), + (heat_tolerance ? heat_tolerance : 0), + (ideal_light ? ideal_light : 0), + (light_tolerance ? light_tolerance : 0), + (lowkpa_tolerance ? lowkpa_tolerance : 0), + (highkpa_tolerance ? highkpa_tolerance : 0) + ) + + if("resistance") + P.values = list( + (toxins_tolerance ? toxins_tolerance : 0), + (pest_tolerance ? pest_tolerance : 0), + (weed_tolerance ? weed_tolerance : 0) + ) + + if("vigour") + P.values = list( + (endurance ? endurance : 0), + (yield ? yield : 0), + (lifespan ? lifespan : 0), + (spread ? spread : 0), + (maturation ? maturation : 0), + (production ? production : 0) + ) + + if("flowers") + P.values = list( + (product_icon ? product_icon : 0), + (product_colour ? product_colour : 0), + (biolum ? biolum : 0), + (biolum_colour ? biolum_colour : 0), + (flowers ? flowers : 0), + (flower_icon ? flower_icon : 0), + (flower_colour ? flower_colour : 0) + ) + + return (P ? P : 0) + +//Place the plant products at the feet of the user. +/datum/seed/proc/harvest(var/mob/user,var/yield_mod) + if(!user) + return + + //TODO: check for failing to harvest. + var/got_product + if(!isnull(products) && products.len && yield > 0) + got_product = 1 + + if(!got_product) + user << "\red You fail to harvest anything useful." + else + user << "You harvest from the [display_name]." + + //This may be a new line. Update the global if it is. + if(name == "new line" || !(name in seed_types)) + uid = seed_types.len + 1 + name = "[uid]" + seed_types[name] = src + + var/total_yield + if(isnull(yield_mod) || yield_mod < 1) + yield_mod = 0 + total_yield = yield + else + total_yield = max(1,rand(1,((yield_mod+yield)))) + + currently_querying = list() + for(var/i = 0;i last_action + action_time) + finished_task() + +/obj/machinery/botany/attack_paw(mob/user as mob) + return attack_hand(user) + +/obj/machinery/botany/attack_ai(mob/user as mob) + return attack_hand(user) + +/obj/machinery/botany/attack_hand(mob/user as mob) + ui_interact(user) + +/obj/machinery/botany/proc/finished_task() + active = 0 + if(failed_task) + failed_task = 0 + visible_message("\icon[src] [src] pings unhappily, flashing a red warning light.") + else + visible_message("\icon[src] [src] pings happily.") + + if(eject_disk) + eject_disk = 0 + if(loaded_disk) + loaded_disk.loc = get_turf(src) + visible_message("\icon[src] [src] beeps and spits out [loaded_disk].") + loaded_disk = null + +/obj/machinery/botany/attackby(obj/item/weapon/W as obj, mob/user as mob) + if(istype(W,/obj/item/seeds)) + if(seed) + if(seed.seed.immutable) + user << "That seed is not compatible with our genetics technology." + else + user << "There is already a seed loaded." + else + user.drop_item(W) + W.loc = src + seed = W + user << "You load [W] into [src]." + return + if(istype(W,/obj/item/weapon/screwdriver)) + open = !open + user << "\blue You [open ? "open" : "close"] the maintenance panel." + return + + if(open) + if(istype(W, /obj/item/weapon/crowbar)) + dismantle() + return + + if(istype(W,/obj/item/weapon/disk/botany)) + if(loaded_disk) + user << "There is already a data disk loaded." + return + else + var/obj/item/weapon/disk/botany/B = W + + if(B.genes && B.genes.len) + if(!disk_needs_genes) + user << "That disk already has gene data loaded." + return + else + if(disk_needs_genes) + user << "That disk does not have any gene data loaded." + return + + user.drop_item(W) + W.loc = src + loaded_disk = W + user << "You load [W] into [src]." + + return + ..() + +// Allows for a trait to be extracted from a seed packet, destroying that seed. +/obj/machinery/botany/extractor + name = "lysis-isolation centrifuge" + icon_state = "traitcopier" + + var/datum/seed/genetics // Currently scanned seed genetic structure. + var/degradation = 0 // Increments with each scan, stops allowing gene mods after a certain point. + +/obj/machinery/botany/extractor/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) + + if(!user) + return + + var/list/data = list() + + var/list/geneMasks[0] + for(var/gene_tag in gene_tag_masks) + geneMasks.Add(list(list("tag" = gene_tag, "mask" = gene_tag_masks[gene_tag]))) + data["geneMasks"] = geneMasks + + data["activity"] = active + data["degradation"] = degradation + + if(loaded_disk) + data["disk"] = 1 + else + data["disk"] = 0 + + if(seed) + data["loaded"] = "[seed.name]" + else + data["loaded"] = 0 + + if(genetics) + data["hasGenetics"] = 1 + data["sourceName"] = genetics.display_name + if(!genetics.roundstart) + data["sourceName"] += " (variety #[genetics.uid])" + else + data["hasGenetics"] = 0 + data["sourceName"] = 0 + + ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) + if (!ui) + ui = new(user, src, ui_key, "botany_isolator.tmpl", "Lysis-isolation Centrifuge UI", 470, 450) + ui.set_initial_data(data) + ui.open() + ui.set_auto_update(1) + +/obj/machinery/botany/Topic(href, href_list) + + if(..()) + return + + if(href_list["eject_packet"]) + if(!seed) return + seed.loc = get_turf(src) + + if(seed.seed.name == "new line" || isnull(seed_types[seed.seed.name])) + seed.seed.uid = seed_types.len + 1 + seed.seed.name = "[uid]" + seed_types[seed.seed.name] = seed.seed + + seed.update_seed() + visible_message("\icon[src] [src] beeps and spits out [seed].") + + seed = null + + if(href_list["eject_disk"]) + if(!loaded_disk) return + loaded_disk.loc = get_turf(src) + visible_message("\icon[src] [src] beeps and spits out [loaded_disk].") + loaded_disk = null + + usr.set_machine(src) + src.add_fingerprint(usr) + +/obj/machinery/botany/extractor/Topic(href, href_list) + + if(..()) + return + + usr.set_machine(src) + src.add_fingerprint(usr) + + if(href_list["scan_genome"]) + + if(!seed) return + + last_action = world.time + active = 1 + + if(seed && seed.seed) + genetics = seed.seed + del(seed) + seed = null + + if(href_list["get_gene"]) + + if(!genetics || !loaded_disk) return + + last_action = world.time + active = 1 + + var/datum/plantgene/P = genetics.get_gene(href_list["get_gene"]) + if(!P) return + loaded_disk.genes += P + + loaded_disk.genesource = "[genetics.display_name]" + if(!genetics.roundstart) + loaded_disk.genesource += " (variety #[genetics.uid])" + + loaded_disk.name += " ([gene_tag_masks[href_list["get_gene"]]])" + loaded_disk.desc += " The label reads \'gene [gene_tag_masks[href_list["get_gene"]]], sampled from [genetics.display_name]\'." + eject_disk = 1 + + degradation += rand(20,60) + if(degradation >= 100) + failed_task = 1 + genetics = null + degradation = 0 + + if(href_list["clear_buffer"]) + if(!genetics) return + genetics = null + degradation = 0 + + src.updateUsrDialog() + return + +// Fires an extracted trait into another packet of seeds with a chance +// of destroying it based on the size/complexity of the plasmid. +/obj/machinery/botany/editor + name = "bioballistic delivery system" + icon_state = "traitgun" + disk_needs_genes = 1 + +/obj/machinery/botany/editor/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) + + if(!user) + return + + var/list/data = list() + + data["activity"] = active + + if(seed) + data["degradation"] = seed.modified + else + data["degradation"] = 0 + + if(loaded_disk && loaded_disk.genes.len) + data["disk"] = 1 + data["sourceName"] = loaded_disk.genesource + data["locus"] = "" + + for(var/datum/plantgene/P in loaded_disk.genes) + if(data["locus"] != "") data["locus"] += ", " + data["locus"] += "[gene_tag_masks[P.genetype]]" + + else + data["disk"] = 0 + data["sourceName"] = 0 + data["locus"] = 0 + + if(seed) + data["loaded"] = "[seed.name]" + else + data["loaded"] = 0 + + ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) + if (!ui) + ui = new(user, src, ui_key, "botany_editor.tmpl", "Bioballistic Delivery UI", 470, 450) + ui.set_initial_data(data) + ui.open() + ui.set_auto_update(1) + +/obj/machinery/botany/editor/Topic(href, href_list) + + if(..()) + return + + if(href_list["apply_gene"]) + if(!loaded_disk || !seed) return + + last_action = world.time + active = 1 + + if(!isnull(seed_types[seed.seed.name])) + seed.seed = seed.seed.diverge(1) + seed.seed_type = seed.seed.name + seed.update_seed() + + if(prob(seed.modified)) + failed_task = 1 + seed.modified = 101 + + for(var/datum/plantgene/gene in loaded_disk.genes) + seed.seed.apply_gene(gene) + seed.modified += rand(5,10) + + usr.set_machine(src) + src.add_fingerprint(usr) \ No newline at end of file diff --git a/code/modules/hydroponics/seed_mobs.dm b/code/modules/hydroponics/seed_mobs.dm new file mode 100644 index 00000000000..0bb301298a5 --- /dev/null +++ b/code/modules/hydroponics/seed_mobs.dm @@ -0,0 +1,80 @@ +/datum/seed + var/product_requires_player // If yes, product will ask for a player among the ghosts. + var/list/currently_querying // Used to avoid asking the same ghost repeatedly. + +// The following procs are used to grab players for mobs produced by a seed (mostly for dionaea). +/datum/seed/proc/handle_living_product(var/mob/living/host) + + if(!host || !istype(host)) return + + if(product_requires_player) + spawn(0) + request_player(host) + spawn(75) + if(!host.ckey && !host.client) + host.death() // This seems redundant, but a lot of mobs don't + host.stat = 2 // handle death() properly. Better safe than etc. + host.visible_message("\red [host] is malformed and unable to survive. It expires pitifully, leaving behind some seeds.") + + var/total_yield = rand(1,3) + for(var/j = 0;j<=total_yield;j++) + var/obj/item/seeds/S = new(get_turf(host)) + S.seed_type = name + S.update_seed() + +/datum/seed/proc/request_player(var/mob/living/host) + if(!host) return + for(var/mob/dead/observer/O in player_list) + if(jobban_isbanned(O, "Dionaea") || (!is_alien_whitelisted(src, "Diona") && config.usealienwhitelist)) + continue + if(O.client) + if(O.client.prefs.be_special & BE_PLANT && !(O.client in currently_querying)) + currently_querying |= O.client + question(O.client,host) + +/datum/seed/proc/question(var/client/C,var/mob/living/host) + spawn(0) + + if(!C || !host || !(C.mob && istype(C.mob,/mob/dead))) return // We don't want to spam them repeatedly if they're already in a mob. + + var/response = alert(C, "Someone is harvesting [display_name]. Would you like to play as one?", "Sentient plant harvest", "Yes", "No", "Never for this round.") + + if(!C || !host || !(C.mob && istype(C.mob,/mob/dead))) return // ...or accidentally accept an invalid argument for transfer. + + if(response == "Yes") + transfer_personality(C,host) + else if (response == "Never for this round") + C.prefs.be_special ^= BE_PLANT + + currently_querying -= C + +/datum/seed/proc/transfer_personality(var/client/player,var/mob/living/host) + + //Something is wrong, abort. + if(!player || !host) return + + //Host already has a controller, pike off slowpoke. + if(host.client && host.ckey) return + + //Transfer them over. + host.ckey = player.ckey + if(player.mob && player.mob.mind) + player.mob.mind.transfer_to(host) + + if(host.dna) host.dna.real_name = host.real_name + + // Update mode specific HUD icons. + callHook("harvest_podman", list(host)) + + host << "\green You awaken slowly, stirring into sluggish motion as the air caresses you." + + // This is a hack, replace with some kind of species blurb proc. + if(istype(host,/mob/living/carbon/monkey/diona)) + host << "You are [host], one of a race of drifting interstellar plantlike creatures that sometimes share their seeds with human traders." + host << "Too much darkness will send you into shock and starve you, but light will help you heal." + + var/newname = input(host,"Enter a name, or leave blank for the default name.", "Name change","") as text + newname = sanitize(newname) + if (newname != "") + host.real_name = newname + host.name = host.real_name \ No newline at end of file diff --git a/code/modules/hydroponics/seeds.dm b/code/modules/hydroponics/seeds.dm index 2fb0acda317..40c5923866f 100644 --- a/code/modules/hydroponics/seeds.dm +++ b/code/modules/hydroponics/seeds.dm @@ -1,1128 +1,223 @@ -// ******************************************************** -// Here's all the seeds (plants) that can be used in hydro -// ******************************************************** - +//Seed packet object/procs. /obj/item/seeds - name = "pack of seeds" + name = "packet of seeds" icon = 'icons/obj/seeds.dmi' - icon_state = "seed" // unknown plant seed - these shouldn't exist in-game + icon_state = "seed" flags = FPRINT | TABLEPASS - w_class = 2.0 // Makes them pocketable - var/mypath = "/obj/item/seeds" - var/plantname = "Plants" - var/productname = "" - var/species = "" - var/lifespan = 0 - var/endurance = 0 - var/maturation = 0 - var/production = 0 - var/yield = 0 // If is -1, the plant/shroom/weed is never meant to be harvested - var/oneharvest = 0 - var/potency = -1 - var/growthstages = 0 - var/plant_type = 0 // 0 = 'normal plant'; 1 = weed; 2 = shroom + w_class = 2.0 -/obj/item/seeds/attackby(var/obj/item/O as obj, var/mob/user as mob) - if (istype(O, /obj/item/device/analyzer/plant_analyzer)) - user << "*** [plantname] ***" - user << "-Plant Endurance: \blue [endurance]" - user << "-Plant Lifespan: \blue [lifespan]" - if(yield != -1) - user << "-Plant Yield: \blue [yield]" - user << "-Plant Production: \blue [production]" - if(potency != -1) - user << "-Plant Potency: \blue [potency]" - return - ..() // Fallthrough to item/attackby() so that bags can pick seeds up + var/seed_type + var/datum/seed/seed + var/modified = 0 +/obj/item/seeds/New() + ..() + update_seed() -/obj/item/seeds/chiliseed - name = "pack of chili seeds" - desc = "These seeds grow into chili plants. HOT! HOT! HOT!" - icon_state = "seed-chili" - mypath = "/obj/item/seeds/chiliseed" - species = "chili" - plantname = "Chili Plants" - productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/chili" - lifespan = 20 - endurance = 15 - maturation = 5 - production = 5 - yield = 4 - potency = 20 - plant_type = 0 - growthstages = 6 +//Grabs the appropriate seed datum from the global list. +/obj/item/seeds/proc/update_seed() + if(!seed && seed_type && !isnull(seed_types) && seed_types[seed_type]) + seed = seed_types[seed_type] + update_appearance() -/obj/item/seeds/plastiseed - name = "plastellium mycelium" - desc = "This mycelium grows into Plastellium" - icon_state = "mycelium-plast" - mypath = "/obj/item/seeds/plastiseed" - species = "plastellium" - plantname = "Plastellium" - productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/plastellium" - lifespan = 15 - endurance = 17 - maturation = 5 - production = 6 - yield = 6 - oneharvest = 1 - potency = 20 - plant_type = 2 - growthstages = 3 +//Updates strings and icon appropriately based on seed datum. +/obj/item/seeds/proc/update_appearance() + if(!seed) return + icon_state = seed.packet_icon + src.name = "packet of [seed.seed_name] [seed.seed_noun]" + src.desc = "It has a picture of [seed.display_name] on the front." -/obj/item/seeds/grapeseed - name = "pack of grape seeds" - desc = "These seeds grow into grape vines." - icon_state = "seed-grapes" - mypath = "/obj/item/seeds/grapeseed" - species = "grape" - plantname = "Grape Vine" - productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/grapes" - lifespan = 50 - endurance = 25 - maturation = 3 - production = 5 - yield = 4 - potency = 10 - plant_type = 0 - growthstages = 2 +/obj/item/seeds/examine() + ..() + if(seed && !seed.roundstart) + usr << "It's tagged as variety #[seed.uid]." -/obj/item/seeds/greengrapeseed - name = "pack of green grape seeds" - desc = "These seeds grow into green-grape vines." - icon_state = "seed-greengrapes" - mypath = "/obj/item/seeds/greengrapeseed" - species = "greengrape" - plantname = "Green-Grape Vine" - productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/greengrapes" - lifespan = 50 - endurance = 25 - maturation = 3 - production = 5 - yield = 4 - potency = 10 - plant_type = 0 - growthstages = 2 +/obj/item/seeds/replicapod + name = "pack of dionaea-replicant seeds" + seed_type = "diona" -/obj/item/seeds/peanutseed - name = "pack of peanut seeds" - desc = "These seeds grow into peanut vines." - icon_state = "seed-peanut" - mypath = "/obj/item/seeds/peanutseed" - species = "peanut" - plantname = "Peanuts" - productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/peanut" - lifespan = 55 - endurance = 50 - maturation = 6 - production = 6 - yield = 6 - potency = 10 - plant_type = 0 - growthstages = 6 - - -/obj/item/seeds/cabbageseed - name = "pack of cabbage seeds" - desc = "These seeds grow into cabbages." - icon_state = "seed-cabbage" - mypath = "/obj/item/seeds/cabbageseed" - species = "cabbage" - plantname = "Cabbages" - productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/cabbage" - lifespan = 50 - endurance = 25 - maturation = 3 - production = 5 - yield = 4 - potency = 10 - plant_type = 0 - growthstages = 1 - -/obj/item/seeds/shandseed - name = "pack of s'rendarr's hand seeds" - desc = "These seeds grow into a helpful herb called S'Rendarr's Hand, native to Ahdomai." - icon_state = "seed-shand" - mypath = "/obj/item/seeds/shandseed" - species = "shand" - plantname = "S'Rendarr's Hand" - productname = "/obj/item/stack/medical/bruise_pack/tajaran" - lifespan = 50 - endurance = 25 - maturation = 3 - production = 5 - yield = 4 - potency = 10 - plant_type = 0 - growthstages = 3 - -/obj/item/seeds/mtearseed - name = "pack of messa's tear seeds" - desc = "These seeds grow into a helpful herb called Messa's Tear, native to Ahdomai." - icon_state = "seed-mtear" - mypath = "/obj/item/seeds/mtearseed" - species = "mtear" - plantname = "Messa's Tear" - productname = "/obj/item/stack/medical/ointment/tajaran" - lifespan = 50 - endurance = 25 - maturation = 3 - production = 5 - yield = 4 - potency = 10 - plant_type = 0 - growthstages = 3 - -/obj/item/seeds/berryseed - name = "pack of berry seeds" - desc = "These seeds grow into berry bushes." - icon_state = "seed-berry" - mypath = "/obj/item/seeds/berryseed" - species = "berry" - plantname = "Berry Bush" - productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/berries" - lifespan = 20 - endurance = 15 - maturation = 5 - production = 5 - yield = 2 - potency = 10 - plant_type = 0 - growthstages = 6 - -/obj/item/seeds/glowberryseed - name = "pack of glow-berry seeds" - desc = "These seeds grow into glow-berry bushes." - icon_state = "seed-glowberry" - mypath = "/obj/item/seeds/glowberryseed" - species = "glowberry" - plantname = "Glow-Berry Bush" - productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/glowberries" - lifespan = 30 - endurance = 25 - maturation = 5 - production = 5 - yield = 2 - potency = 10 - plant_type = 0 - growthstages = 6 - -/obj/item/seeds/bananaseed - name = "pack of banana seeds" - desc = "They're seeds that grow into banana trees." - icon_state = "seed-banana" - mypath = "/obj/item/seeds/bananaseed" - species = "banana" - plantname = "Banana Tree" - productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/banana" - lifespan = 50 - endurance = 30 - maturation = 6 - production = 6 - yield = 3 - plant_type = 0 - growthstages = 6 - -/obj/item/seeds/eggplantseed - name = "pack of eggplant seeds" - desc = "These seeds grow to produce berries that look nothing like eggs." - icon_state = "seed-eggplant" - mypath = "/obj/item/seeds/eggplantseed" - species = "eggplant" - plantname = "Eggplants" - productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/eggplant" - lifespan = 25 - endurance = 15 - maturation = 6 - production = 6 - yield = 2 - potency = 20 - plant_type = 0 - growthstages = 6 - -/obj/item/seeds/eggyseed - name = "pack of eggplant seeds" - desc = "These seeds grow to produce berries that look a lot like eggs." - icon_state = "seed-eggy" - mypath = "/obj/item/seeds/eggy" - species = "eggy" - plantname = "Eggplants" - productname = "/obj/item/weapon/reagent_containers/food/snacks/egg" - lifespan = 75 - endurance = 15 - maturation = 6 - production = 12 - yield = 2 - plant_type = 0 - growthstages = 6 - -/obj/item/seeds/bloodtomatoseed - name = "pack of blood-tomato seeds" - desc = "These seeds grow into blood-tomato plants." - icon_state = "seed-bloodtomato" - mypath = "/obj/item/seeds/bloodtomatoseed" - species = "bloodtomato" - plantname = "Blood-Tomato Plants" - productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/bloodtomato" - lifespan = 25 - endurance = 20 - maturation = 8 - production = 6 - yield = 3 - potency = 10 - plant_type = 0 - growthstages = 6 - -/obj/item/seeds/tomatoseed - name = "pack of tomato seeds" - desc = "These seeds grow into tomato plants." - icon_state = "seed-tomato" - mypath = "/obj/item/seeds/tomatoseed" - species = "tomato" - plantname = "Tomato Plants" - productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/tomato" - lifespan = 25 - endurance = 15 - maturation = 8 - production = 6 - yield = 2 - potency = 10 - plant_type = 0 - growthstages = 6 - -/obj/item/seeds/killertomatoseed - name = "pack of killer-tomato seeds" - desc = "These seeds grow into killer-tomato plants." - icon_state = "seed-killertomato" - mypath = "/obj/item/seeds/killertomatoseed" - species = "killertomato" - plantname = "Killer-Tomato Plants" - productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/killertomato" - lifespan = 25 - endurance = 15 - maturation = 8 - production = 6 - yield = 2 - potency = 10 - plant_type = 0 - oneharvest = 1 - growthstages = 2 - -/obj/item/seeds/bluetomatoseed - name = "pack of blue-tomato seeds" - desc = "These seeds grow into blue-tomato plants." - icon_state = "seed-bluetomato" - mypath = "/obj/item/seeds/bluetomatoseed" - species = "bluetomato" - plantname = "Blue-Tomato Plants" - productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/bluetomato" - lifespan = 25 - endurance = 15 - maturation = 8 - production = 6 - yield = 2 - potency = 10 - plant_type = 0 - growthstages = 6 - -/obj/item/seeds/bluespacetomatoseed - name = "pack of blue-space tomato seeds" - desc = "These seeds grow into blue-space tomato plants." - icon_state = "seed-bluespacetomato" - mypath = "/obj/item/seeds/bluespacetomatoseed" - species = "bluespacetomato" - plantname = "Blue-Space Tomato Plants" - productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/bluespacetomato" - lifespan = 25 - endurance = 15 - maturation = 8 - production = 6 - yield = 2 - potency = 10 - plant_type = 0 - growthstages = 6 - -/obj/item/seeds/cornseed - name = "pack of corn seeds" - desc = "I don't mean to sound corny..." - icon_state = "seed-corn" - mypath = "/obj/item/seeds/cornseed" - species = "corn" - plantname = "Corn Stalks" - productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/corn" - lifespan = 25 - endurance = 15 - maturation = 8 - production = 6 - yield = 3 - plant_type = 0 - oneharvest = 1 - potency = 20 - growthstages = 3 + var/ckey = null + var/realName = null + var/mob/living/carbon/human/source + var/obj/machinery/hydroponics/parent = null + var/found_player = 0 /obj/item/seeds/poppyseed - name = "pack of poppy seeds" - desc = "These seeds grow into poppies." - icon_state = "seed-poppy" - mypath = "/obj/item/seeds/poppyseed" - species = "poppy" - plantname = "Poppy Plants" - productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/poppy" - lifespan = 25 - endurance = 10 - potency = 20 - maturation = 8 - production = 6 - yield = 6 - plant_type = 0 - oneharvest = 1 - growthstages = 3 + seed_type = "poppies" + +/obj/item/seeds/chiliseed + seed_type = "chili" + +/obj/item/seeds/plastiseed + seed_type = "plastic" + +/obj/item/seeds/grapeseed + seed_type = "grapes" + +/obj/item/seeds/greengrapeseed + seed_type = "greengrapes" + +/obj/item/seeds/peanutseed + seed_type = "peanut" + +/obj/item/seeds/cabbageseed + seed_type = "cabbage" + +/obj/item/seeds/shandseed + seed_type = "shand" + +/obj/item/seeds/mtearseed + seed_type = "mtear" + +/obj/item/seeds/berryseed + seed_type = "berries" + +/obj/item/seeds/glowberryseed + seed_type = "glowberries" + +/obj/item/seeds/bananaseed + seed_type = "banana" + +/obj/item/seeds/eggplantseed + seed_type = "eggplant" + +/obj/item/seeds/eggyseed + seed_type = "realeggplant" + +/obj/item/seeds/bloodtomatoseed + seed_type = "bloodtomato" + +/obj/item/seeds/tomatoseed + seed_type = "tomato" + +/obj/item/seeds/killertomatoseed + seed_type = "killertomato" + +/obj/item/seeds/bluetomatoseed + seed_type = "bluetomato" + +/obj/item/seeds/bluespacetomatoseed + seed_type = "bluespacetomato" + +/obj/item/seeds/cornseed + seed_type = "corn" + +/obj/item/seeds/poppyseed + seed_type = "poppies" /obj/item/seeds/potatoseed - name = "pack of potato seeds" - desc = "Boil 'em! Mash 'em! Stick 'em in a stew!" - icon_state = "seed-potato" - mypath = "/obj/item/seeds/potatoseed" - species = "potato" - plantname = "Potato-Plants" - productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/potato" - lifespan = 30 - endurance = 15 - maturation = 10 - production = 1 - yield = 4 - plant_type = 0 - oneharvest = 1 - potency = 10 - growthstages = 4 + seed_type = "potato" /obj/item/seeds/icepepperseed - name = "pack of ice-pepper seeds" - desc = "These seeds grow into ice-pepper plants." - icon_state = "seed-icepepper" - mypath = "/obj/item/seeds/icepepperseed" - species = "chiliice" - plantname = "Ice-Pepper Plants" - productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/icepepper" - lifespan = 25 - endurance = 15 - maturation = 4 - production = 4 - yield = 4 - potency = 20 - plant_type = 0 - growthstages = 6 + seed_type = "icechili" /obj/item/seeds/soyaseed - name = "pack of soybean seeds" - desc = "These seeds grow into soybean plants." - icon_state = "seed-soybean" - mypath = "/obj/item/seeds/soyaseed" - species = "soybean" - plantname = "Soybean Plants" - productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/soybeans" - lifespan = 25 - endurance = 15 - maturation = 4 - production = 4 - yield = 3 - potency = 5 - plant_type = 0 - growthstages = 6 + seed_type = "soybean" /obj/item/seeds/wheatseed - name = "pack of wheat seeds" - desc = "These may, or may not, grow into weed." - icon_state = "seed-wheat" - mypath = "/obj/item/seeds/wheatseed" - species = "wheat" - plantname = "Wheat Stalks" - productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/wheat" - lifespan = 25 - endurance = 15 - maturation = 6 - production = 1 - yield = 4 - potency = 5 - oneharvest = 1 - plant_type = 0 - growthstages = 6 + seed_type = "wheat" /obj/item/seeds/riceseed - name = "pack of rice seeds" - desc = "These seeds grow into rice stalks." - icon_state = "seed-rice" - mypath = "/obj/item/seeds/riceseed" - species = "rice" - plantname = "Rice Stalks" - productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/ricestalk" - lifespan = 25 - endurance = 15 - maturation = 6 - production = 1 - yield = 4 - potency = 5 - oneharvest = 1 - plant_type = 0 - growthstages = 4 + seed_type = "rice" /obj/item/seeds/carrotseed - name = "pack of carrot seeds" - desc = "These seeds grow into carrots." - icon_state = "seed-carrot" - mypath = "/obj/item/seeds/carrotseed" - species = "carrot" - plantname = "Carrots" - productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/carrot" - lifespan = 25 - endurance = 15 - maturation = 10 - production = 1 - yield = 5 - potency = 10 - oneharvest = 1 - plant_type = 0 - growthstages = 3 + seed_type = "carrot" /obj/item/seeds/reishimycelium - name = "pack of reishi mycelium" - desc = "This mycelium grows into something relaxing." - icon_state = "mycelium-reishi" - mypath = "/obj/item/seeds/reishimycelium" - species = "reishi" - plantname = "Reishi" - productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/reishi" - lifespan = 35 - endurance = 35 - maturation = 10 - production = 5 - yield = 4 - potency = 15 // Sleeping based on potency? - oneharvest = 1 - growthstages = 4 - plant_type = 2 + seed_type = "reishi" /obj/item/seeds/amanitamycelium - name = "pack of fly amanita mycelium" - desc = "This mycelium grows into something horrible." - icon_state = "mycelium-amanita" - mypath = "/obj/item/seeds/amanitamycelium" - species = "amanita" - plantname = "Fly Amanitas" - productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/amanita" - lifespan = 50 - endurance = 35 - maturation = 10 - production = 5 - yield = 4 - potency = 10 // Damage based on potency? - oneharvest = 1 - growthstages = 3 - plant_type = 2 + seed_type = "amanita" /obj/item/seeds/angelmycelium - name = "pack of destroying angel mycelium" - desc = "This mycelium grows into something devestating." - icon_state = "mycelium-angel" - mypath = "/obj/item/seeds/angelmycelium" - species = "angel" - plantname = "Destroying Angels" - productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/angel" - lifespan = 50 - endurance = 35 - maturation = 12 - production = 5 - yield = 2 - potency = 35 - oneharvest = 1 - growthstages = 3 - plant_type = 2 + seed_type = "destroyingangel" /obj/item/seeds/libertymycelium - name = "pack of liberty-cap mycelium" - desc = "This mycelium grows into liberty-cap mushrooms." - icon_state = "mycelium-liberty" - mypath = "/obj/item/seeds/libertymycelium" - species = "liberty" - plantname = "Liberty-Caps" - productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/libertycap" - lifespan = 25 - endurance = 15 - maturation = 7 - production = 1 - yield = 5 - potency = 15 // Lowish potency at start - oneharvest = 1 - growthstages = 3 - plant_type = 2 + seed_type = "libertycap" /obj/item/seeds/chantermycelium - name = "pack of chanterelle mycelium" - desc = "This mycelium grows into chanterelle mushrooms." - icon_state = "mycelium-chanter" - mypath = "/obj/item/seeds/chantermycelium" - species = "chanter" - plantname = "Chanterelle Mushrooms" - productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/chanterelle" - lifespan = 35 - endurance = 20 - maturation = 7 - production = 1 - yield = 5 - potency = 1 - oneharvest = 1 - growthstages = 3 - plant_type = 2 + seed_type = "mushrooms" /obj/item/seeds/towermycelium - name = "pack of tower-cap mycelium" - desc = "This mycelium grows into tower-cap mushrooms." - icon_state = "mycelium-tower" - mypath = "/obj/item/seeds/towermycelium" - species = "towercap" - plantname = "Tower Caps" - productname = "/obj/item/weapon/grown/log" - lifespan = 80 - endurance = 50 - maturation = 15 - production = 1 - yield = 5 - potency = 1 - oneharvest = 1 - growthstages = 3 - plant_type = 2 + seed_type = "towercap" /obj/item/seeds/glowshroom - name = "pack of glowshroom mycelium" - desc = "This mycelium -glows- into mushrooms!" - icon_state = "mycelium-glowshroom" - mypath = "/obj/item/seeds/glowshroom" - species = "glowshroom" - plantname = "Glowshrooms" - productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/glowshroom" - lifespan = 120 //ten times that is the delay - endurance = 30 - maturation = 15 - production = 1 - yield = 3 //-> spread - potency = 30 //-> brightness - oneharvest = 1 - growthstages = 4 - plant_type = 2 + seed_type = "glowshroom" /obj/item/seeds/plumpmycelium - name = "pack of plump-helmet mycelium" - desc = "This mycelium grows into helmets... maybe." - icon_state = "mycelium-plump" - mypath = "/obj/item/seeds/plumpmycelium" - species = "plump" - plantname = "Plump-Helmet Mushrooms" - productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/plumphelmet" - lifespan = 25 - endurance = 15 - maturation = 8 - production = 1 - yield = 4 - potency = 0 - oneharvest = 1 - growthstages = 3 - plant_type = 2 + seed_type = "plumphelmet" /obj/item/seeds/walkingmushroommycelium - name = "pack of walking mushroom mycelium" - desc = "This mycelium will grow into huge stuff!" - icon_state = "mycelium-walkingmushroom" - mypath = "/obj/item/seeds/walkingmushroommycelium" - species = "walkingmushroom" - plantname = "Walking Mushrooms" - productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/walkingmushroom" - lifespan = 30 - endurance = 30 - maturation = 5 - production = 1 - yield = 1 - potency = 0 - oneharvest = 1 - growthstages = 3 - plant_type = 2 + seed_type = "walkingmushroom" /obj/item/seeds/nettleseed - name = "pack of nettle seeds" - desc = "These seeds grow into nettles." - icon_state = "seed-nettle" - mypath = "/obj/item/seeds/nettleseed" - species = "nettle" - plantname = "Nettles" - productname = "/obj/item/weapon/grown/nettle" - lifespan = 30 - endurance = 40 // tuff like a toiger - maturation = 6 - production = 6 - yield = 4 - potency = 10 - oneharvest = 0 - growthstages = 5 - plant_type = 1 + seed_type = "nettle" /obj/item/seeds/deathnettleseed - name = "pack of death-nettle seeds" - desc = "These seeds grow into death-nettles." - icon_state = "seed-deathnettle" - mypath = "/obj/item/seeds/deathnettleseed" - species = "deathnettle" - plantname = "Death Nettles" - productname = "/obj/item/weapon/grown/deathnettle" - lifespan = 30 - endurance = 25 - maturation = 8 - production = 6 - yield = 2 - potency = 10 - oneharvest = 0 - growthstages = 5 - plant_type = 1 + seed_type = "deathnettle" /obj/item/seeds/weeds - name = "pack of weed seeds" - desc = "Yo mang, want some weeds?" - icon_state = "seed" - mypath = "/obj/item/seeds/weeds" - species = "weeds" - plantname = "Starthistle" - productname = "" - lifespan = 100 - endurance = 50 // damm pesky weeds - maturation = 5 - production = 1 - yield = -1 - potency = -1 - oneharvest = 1 - growthstages = 4 - plant_type = 1 + seed_type = "weeds" /obj/item/seeds/harebell - name = "pack of harebell seeds" - desc = "These seeds grow into pretty little flowers." - icon_state = "seed-harebell" - mypath = "/obj/item/seeds/harebell" - species = "harebell" - plantname = "Harebells" - productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/harebell" - lifespan = 100 - endurance = 20 - maturation = 7 - production = 1 - yield = 2 - potency = 1 - oneharvest = 1 - growthstages = 4 - plant_type = 1 + seed_type = "harebells" /obj/item/seeds/sunflowerseed - name = "pack of sunflower seeds" - desc = "These seeds grow into sunflowers." - icon_state = "seed-sunflower" - mypath = "/obj/item/seeds/sunflowerseed" - species = "sunflower" - plantname = "Sunflowers" - productname = "/obj/item/weapon/grown/sunflower" - lifespan = 25 - endurance = 20 - maturation = 6 - production = 1 - yield = 2 - potency = 1 - oneharvest = 1 - growthstages = 3 - plant_type = 1 + seed_type = "sunflowers" /obj/item/seeds/brownmold - name = "pack of brown mold" - desc = "Eww.. moldy." - icon_state = "seed" - mypath = "/obj/item/seeds/brownmold" - species = "mold" - plantname = "Brown Mold" - productname = "" - lifespan = 50 - endurance = 30 - maturation = 10 - production = 1 - yield = -1 - potency = 1 - oneharvest = 1 - growthstages = 3 - plant_type = 2 + seed_type = "mold" /obj/item/seeds/appleseed - name = "pack of apple seeds" - desc = "These seeds grow into apple trees." - icon_state = "seed-apple" - mypath = "/obj/item/seeds/appleseed" - species = "apple" - plantname = "Apple Tree" - productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/apple" - lifespan = 55 - endurance = 35 - maturation = 6 - production = 6 - yield = 5 - potency = 10 - plant_type = 0 - growthstages = 6 + seed_type = "apple" /obj/item/seeds/poisonedappleseed - name = "pack of apple seeds" - desc = "These seeds grow into apple trees." - icon_state = "seed-apple" - mypath = "/obj/item/seeds/poisonedappleseed" - species = "apple" - plantname = "Apple Tree" - productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/apple/poisoned" - lifespan = 55 - endurance = 35 - maturation = 6 - production = 6 - yield = 5 - potency = 10 - plant_type = 0 - growthstages = 6 + seed_type = "poisonapple" /obj/item/seeds/goldappleseed - name = "pack of golden apple seeds" - desc = "These seeds grow into golden apple trees. Good thing there are no firebirds in space." - icon_state = "seed-goldapple" - mypath = "/obj/item/seeds/goldappleseed" - species = "goldapple" - plantname = "Golden Apple Tree" - productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/goldapple" - lifespan = 55 - endurance = 35 - maturation = 10 - production = 10 - yield = 3 - potency = 10 - plant_type = 0 - growthstages = 6 + seed_type = "goldapple" /obj/item/seeds/ambrosiavulgarisseed - name = "pack of ambrosia vulgaris seeds" - desc = "These seeds grow into common ambrosia, a plant grown by and from medicine." - icon_state = "seed-ambrosiavulgaris" - mypath = "/obj/item/seeds/ambrosiavulgarisseed" - species = "ambrosiavulgaris" - plantname = "Ambrosia Vulgaris" - productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiavulgaris" - lifespan = 60 - endurance = 25 - maturation = 6 - production = 6 - yield = 6 - potency = 5 - plant_type = 0 - growthstages = 6 + seed_type = "ambrosia" /obj/item/seeds/ambrosiadeusseed - name = "pack of ambrosia deus seeds" - desc = "These seeds grow into ambrosia deus. Could it be the food of the gods..?" - icon_state = "seed-ambrosiadeus" - mypath = "/obj/item/seeds/ambrosiadeusseed" - species = "ambrosiadeus" - plantname = "Ambrosia Deus" - productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiadeus" - lifespan = 60 - endurance = 25 - maturation = 6 - production = 6 - yield = 6 - potency = 5 - plant_type = 0 - growthstages = 6 + seed_type = "ambrosiadeus" /obj/item/seeds/whitebeetseed - name = "pack of white-beet seeds" - desc = "These seeds grow into sugary beet producing plants." - icon_state = "seed-whitebeet" - mypath = "/obj/item/seeds/whitebeetseed" - species = "whitebeet" - plantname = "White-Beet Plants" - productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/whitebeet" - lifespan = 60 - endurance = 50 - maturation = 6 - production = 6 - yield = 6 - oneharvest = 1 - potency = 10 - plant_type = 0 - growthstages = 6 + seed_type = "whitebeet" /obj/item/seeds/sugarcaneseed - name = "pack of sugarcane seeds" - desc = "These seeds grow into sugarcane." - icon_state = "seed-sugarcane" - mypath = "/obj/item/seeds/sugarcaneseed" - species = "sugarcane" - plantname = "Sugarcane" - productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/sugarcane" - lifespan = 60 - endurance = 50 - maturation = 3 - production = 6 - yield = 4 - potency = 10 - plant_type = 0 - growthstages = 3 + seed_type = "sugarcane" /obj/item/seeds/watermelonseed - name = "pack of watermelon seeds" - desc = "These seeds grow into watermelon plants." - icon_state = "seed-watermelon" - mypath = "/obj/item/seeds/watermelonseed" - species = "watermelon" - plantname = "Watermelon Vines" - productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/watermelon" - lifespan = 50 - endurance = 40 - maturation = 6 - production = 6 - yield = 3 - potency = 1 - plant_type = 0 - growthstages = 6 + seed_type = "watermelon" /obj/item/seeds/pumpkinseed - name = "pack of pumpkin seeds" - desc = "These seeds grow into pumpkin vines." - icon_state = "seed-pumpkin" - mypath = "/obj/item/seeds/pumpkinseed" - species = "pumpkin" - plantname = "Pumpkin Vines" - productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/pumpkin" - lifespan = 50 - endurance = 40 - maturation = 6 - production = 6 - yield = 3 - potency = 10 - plant_type = 0 - growthstages = 3 - + seed_type = "pumpkin" /obj/item/seeds/limeseed - name = "pack of lime seeds" - desc = "These are very sour seeds." - icon_state = "seed-lime" - mypath = "/obj/item/seeds/limeseed" - species = "lime" - plantname = "Lime Tree" - productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/lime" - lifespan = 55 - endurance = 50 - maturation = 6 - production = 6 - yield = 4 - potency = 15 - plant_type = 0 - growthstages = 6 + seed_type = "lime" /obj/item/seeds/lemonseed - name = "pack of lemon seeds" - desc = "These are sour seeds." - icon_state = "seed-lemon" - mypath = "/obj/item/seeds/lemonseed" - species = "lemon" - plantname = "Lemon Tree" - productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/lemon" - lifespan = 55 - endurance = 45 - maturation = 6 - production = 6 - yield = 4 - potency = 10 - plant_type = 0 - growthstages = 6 - -/obj/item/seeds/cashseed - name = "pack of money seeds" - desc = "When life gives you lemons, mutate them into cash." - icon_state = "seed-cash" - mypath = "/obj/item/seeds/cashseed" - species = "cashtree" - plantname = "Money Tree" - productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/money" - lifespan = 55 - endurance = 45 - maturation = 6 - production = 6 - yield = 4 - potency = 10 - plant_type = 0 - growthstages = 6 + seed_type = "lemon" /obj/item/seeds/orangeseed - name = "pack of orange seed" - desc = "Sour seeds." - icon_state = "seed-orange" - mypath = "/obj/item/seeds/orangeseed" - species = "orange" - plantname = "Orange Tree" - productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/orange" - lifespan = 60 - endurance = 50 - maturation = 6 - production = 6 - yield = 5 - potency = 1 - plant_type = 0 - growthstages = 6 + seed_type = "orange" /obj/item/seeds/poisonberryseed - name = "pack of poison-berry seeds" - desc = "These seeds grow into poison-berry bushes." - icon_state = "seed-poisonberry" - mypath = "/obj/item/seeds/poisonberryseed" - species = "poisonberry" - plantname = "Poison-Berry Bush" - productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/poisonberries" - lifespan = 20 - endurance = 15 - maturation = 5 - production = 5 - yield = 2 - potency = 10 - plant_type = 0 - growthstages = 6 + seed_type = "poisonberries" /obj/item/seeds/deathberryseed - name = "pack of death-berry seeds" - desc = "These seeds grow into death berries." - icon_state = "seed-deathberry" - mypath = "/obj/item/seeds/deathberryseed" - species = "deathberry" - plantname = "Death Berry Bush" - productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/deathberries" - lifespan = 30 - endurance = 20 - maturation = 5 - production = 5 - yield = 3 - potency = 50 - plant_type = 0 - growthstages = 6 + seed_type = "deathberries" /obj/item/seeds/grassseed - name = "pack of grass seeds" - desc = "These seeds grow into grass. Yummy!" - icon_state = "seed-grass" - mypath = "/obj/item/seeds/grassseed" - species = "grass" - plantname = "Grass" - productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/grass" - lifespan = 60 - endurance = 50 - maturation = 2 - production = 5 - yield = 5 - plant_type = 0 - growthstages = 2 + seed_type = "grass" /obj/item/seeds/cocoapodseed - name = "pack of cocoa pod seeds" - desc = "These seeds grow into cacao trees. They look fattening." //SIC: cocoa is the seeds. The tress ARE spelled cacao. - icon_state = "seed-cocoapod" - mypath = "/obj/item/seeds/cocoapodseed" - species = "cocoapod" - plantname = "Cocao Tree" //SIC: see above - productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/cocoapod" - lifespan = 20 - endurance = 15 - maturation = 5 - production = 5 - yield = 2 - potency = 10 - plant_type = 0 - growthstages = 5 + seed_type = "cocoa" /obj/item/seeds/cherryseed - name = "pack of cherry pits" - desc = "Careful not to crack a tooth on one... That'd be the pits." - icon_state = "seed-cherry" - mypath = "/obj/item/seeds/cherryseed" - species = "cherry" - plantname = "Cherry Tree" - productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/cherries" - lifespan = 35 - endurance = 35 - maturation = 5 - production = 5 - yield = 3 - potency = 10 - plant_type = 0 - growthstages = 5 + seed_type = "cherry" /obj/item/seeds/kudzuseed - name = "pack of kudzu seeds" - desc = "These seeds grow into a weed that grows incredibly fast." - icon_state = "seed-kudzu" - mypath = "/obj/item/seeds/kudzuseed" - species = "kudzu" - plantname = "Kudzu" - productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/kudzupod" - lifespan = 20 - endurance = 10 - maturation = 6 - production = 6 - yield = 4 - potency = 10 - growthstages = 4 - plant_type = 1 - -/obj/item/seeds/kudzuseed/attack_self(mob/user as mob) - if(istype(user.loc,/turf/space)) - return - user << "You plant the kudzu. You monster." - new /obj/effect/spacevine_controller(user.loc) - del(src) - - - -/* // Maybe one day when I get it to work like a grenade which exlodes gibs. -/obj/item/seeds/gibtomatoseed - name = "Gib Tomato seeds" - desc = "Used to grow gib tomotoes." - icon_state = "seed-gibtomato" - mypath = "/obj/item/seeds/gibtomatoseed" - species = "gibtomato" - plantname = "Gib Tomato plant" - productname = "/obj/item/weapon/grown/gibtomato" - lifespan = 35 - endurance = 25 - maturation = 6 - production = 6 - yield = 3 - potency = 10 - plant_type = 0 - growthstages = 6 -*/ - -/* -/obj/item/seeds/ - name = "" - icon_state = "seed" - mypath = "/obj/item/seeds/" - species = "" - plantname = "" - productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/" - lifespan = 25 - endurance = 15 - maturation = 10 - production = 1 - yield = -1 - potency = 0 - oneharvest = 1 - growthstages = 3 - plant_type = 0 - -*/ \ No newline at end of file + seed_type = "kudzu" \ No newline at end of file diff --git a/code/modules/hydroponics/vines.dm b/code/modules/hydroponics/vines.dm new file mode 100644 index 00000000000..a7312e3dc1a --- /dev/null +++ b/code/modules/hydroponics/vines.dm @@ -0,0 +1,386 @@ +// SPACE VINES (Note that this code is very similar to Biomass code) +/obj/effect/plantsegment + name = "space vines" + desc = "An extremely expansionistic species of vine." + icon = 'icons/effects/spacevines.dmi' + icon_state = "Light1" + anchored = 1 + density = 0 + layer = 5 + pass_flags = PASSTABLE | PASSGRILLE + + // Vars used by vines with seed data. + var/age = 0 + var/lastproduce = 0 + var/harvest = 0 + var/list/chems + var/plant_damage_noun = "Thorns" + var/limited_growth = 0 + + // Life vars/ + var/energy = 0 + var/obj/effect/plant_controller/master = null + var/mob/living/buckled_mob + var/datum/seed/seed + +/obj/effect/plantsegment/New() + return + +/obj/effect/plantsegment/Del() + if(master) + master.vines -= src + master.growth_queue -= src + ..() + +/obj/effect/plantsegment/attackby(obj/item/weapon/W as obj, mob/user as mob) + if (!W || !user || !W.type) return + switch(W.type) + if(/obj/item/weapon/circular_saw) del src + if(/obj/item/weapon/kitchen/utensil/knife) del src + if(/obj/item/weapon/scalpel) del src + if(/obj/item/weapon/twohanded/fireaxe) del src + if(/obj/item/weapon/hatchet) del src + if(/obj/item/weapon/melee/energy) del src + + // Less effective weapons + if(/obj/item/weapon/wirecutters) + if(prob(25)) del src + if(/obj/item/weapon/shard) + if(prob(25)) del src + + // Weapons with subtypes + else + if(istype(W, /obj/item/weapon/melee/energy/sword)) del src + else if(istype(W, /obj/item/weapon/weldingtool)) + var/obj/item/weapon/weldingtool/WT = W + if(WT.remove_fuel(0, user)) del src + else + manual_unbuckle(user) + return + // Plant-b-gone damage is handled in its entry in chemistry-reagents.dm + ..() + + +/obj/effect/plantsegment/attack_hand(mob/user as mob) + + if(user.a_intent == "help" && seed && harvest) + seed.harvest(user,1) + harvest = 0 + lastproduce = age + update() + return + + manual_unbuckle(user) + + +/obj/effect/plantsegment/attack_paw(mob/user as mob) + manual_unbuckle(user) + +/obj/effect/plantsegment/proc/unbuckle() + if(buckled_mob) + if(buckled_mob.buckled == src) //this is probably unneccesary, but it doesn't hurt + buckled_mob.buckled = null + buckled_mob.anchored = initial(buckled_mob.anchored) + buckled_mob.update_canmove() + buckled_mob = null + return + +/obj/effect/plantsegment/proc/manual_unbuckle(mob/user as mob) + if(buckled_mob) + if(prob(seed ? min(max(0,100 - seed.potency),100) : 50)) + if(buckled_mob.buckled == src) + if(buckled_mob != user) + buckled_mob.visible_message(\ + "[user.name] frees [buckled_mob.name] from [src].",\ + "[user.name] frees you from [src].",\ + "You hear shredding and ripping.") + else + buckled_mob.visible_message(\ + "[buckled_mob.name] struggles free of [src].",\ + "You untangle [src] from around yourself.",\ + "You hear shredding and ripping.") + unbuckle() + else + var/text = pick("rips","tears","pulls") + user.visible_message(\ + "[user.name] [text] at [src].",\ + "You [text] at [src].",\ + "You hear shredding and ripping.") + return + +/obj/effect/plantsegment/proc/grow() + + if(!energy) + src.icon_state = pick("Med1", "Med2", "Med3") + energy = 1 + + //Low-lying creepers do not block vision or grow thickly. + if(limited_growth) + energy = 2 + return + + src.opacity = 1 + layer = 5 + else if(!limited_growth) + src.icon_state = pick("Hvy1", "Hvy2", "Hvy3") + energy = 2 + +/obj/effect/plantsegment/proc/entangle_mob() + + if(limited_growth) + return + + if(prob(seed ? seed.potency : 25)) + + if(!buckled_mob) + var/mob/living/carbon/V = locate() in src.loc + if(V && (V.stat != DEAD) && (V.buckled != src)) // If mob exists and is not dead or captured. + V.buckled = src + V.loc = src.loc + V.update_canmove() + src.buckled_mob = V + V << "The vines [pick("wind", "tangle", "tighten")] around you!" + + // FEED ME, SEYMOUR. + if(buckled_mob && seed && (buckled_mob.stat != DEAD)) //Don't bother with a dead mob. + + var/mob/living/M = buckled_mob + if(!istype(M)) return + var/mob/living/carbon/human/H = buckled_mob + + // Drink some blood/cause some brute. + if(seed.carnivorous == 2) + buckled_mob << "\The [src] pierces your flesh greedily!" + + var/damage = rand(round(seed.potency/2),seed.potency) + if(!istype(H)) + H.adjustBruteLoss(damage) + return + + var/datum/organ/external/affecting = H.get_organ(pick("l_foot","r_foot","l_leg","r_leg","l_hand","r_hand","l_arm", "r_arm","head","chest","groin")) + + if(affecting) + affecting.take_damage(damage, 0) + if(affecting.parent) + affecting.parent.add_autopsy_data("[plant_damage_noun]", damage) + else + H.adjustBruteLoss(damage) + + H.UpdateDamageIcon() + H.updatehealth() + + // Inject some chems. + if(seed.chems && seed.chems.len && istype(H)) + H << "You feel something seeping into your skin!" + for(var/rid in seed.chems) + var/injecting = min(5,max(1,seed.potency/5)) + H.reagents.add_reagent(rid,injecting) + +/obj/effect/plantsegment/proc/update() + if(!seed) return + + // Update bioluminescence. + if(seed.biolum) + SetLuminosity(1+round(seed.potency/10)) + if(seed.biolum_colour) + l_color = seed.biolum_colour + else + l_color = null + return + else + SetLuminosity(0) + + // Update flower/product overlay. + overlays.Cut() + if(age >= seed.maturation) + if(prob(20) && seed.products && seed.products.len && !harvest && ((age-lastproduce) > seed.production)) + harvest = 1 + lastproduce = age + + if(harvest) + var/image/fruit_overlay = image('icons/obj/hydroponics.dmi',"") + if(seed.product_colour) + fruit_overlay.color = seed.product_colour + overlays += fruit_overlay + + if(seed.flowers) + var/image/flower_overlay = image('icons/obj/hydroponics.dmi',"[seed.flower_icon]") + if(seed.flower_colour) + flower_overlay.color = seed.flower_colour + overlays += flower_overlay + +/obj/effect/plantsegment/proc/spread() + var/direction = pick(cardinal) + var/step = get_step(src,direction) + if(istype(step,/turf/simulated/floor)) + var/turf/simulated/floor/F = step + if(!locate(/obj/effect/plantsegment,F)) + if(F.Enter(src)) + if(master) + master.spawn_piece( F ) + +// Explosion damage. +/obj/effect/plantsegment/ex_act(severity) + switch(severity) + if(1.0) + die() + return + if(2.0) + if (prob(90)) + die() + return + if(3.0) + if (prob(50)) + die() + return + return + +// Hotspots kill vines. +/obj/effect/plantsegment/fire_act(null, temp, volume) + del src + +/obj/effect/plantsegment/proc/die() + if(seed && harvest) + seed.harvest(src,1) + del(src) + +/obj/effect/plantsegment/proc/life() + + if(!seed) + return + + if(prob(30)) + age++ + + var/turf/T = loc + var/datum/gas_mixture/environment + if(T) environment = T.return_air() + + if(!environment) + return + + var/pressure = environment.return_pressure() + if(pressure < seed.lowkpa_tolerance || pressure > seed.highkpa_tolerance) + die() + return + + if(abs(environment.temperature - seed.ideal_heat) > seed.heat_tolerance) + die() + return + + var/area/A = T.loc + if(A) + var/light_available + if(A.lighting_use_dynamic) + light_available = max(0,min(10,T.lighting_lumcount)-5) + else + light_available = 5 + if(abs(light_available - seed.ideal_light) > seed.light_tolerance) + die() + return + +/obj/effect/plant_controller + + //What this does is that instead of having the grow minimum of 1, required to start growing, the minimum will be 0, + //meaning if you get the spacevines' size to something less than 20 plots, it won't grow anymore. + + var/list/obj/effect/plantsegment/vines = list() + var/list/growth_queue = list() + var/reached_collapse_size + var/reached_slowdown_size + var/datum/seed/seed + + var/collapse_limit = 250 + var/slowdown_limit = 30 + var/limited_growth = 0 + +/obj/effect/plant_controller/creeper + collapse_limit = 50 + slowdown_limit = 5 + limited_growth = 1 + +/obj/effect/plant_controller/New() + if(!istype(src.loc,/turf/simulated/floor)) + del(src) + + spawn(0) + spawn_piece(src.loc) + + processing_objects.Add(src) + +/obj/effect/plant_controller/Del() + processing_objects.Remove(src) + ..() + +/obj/effect/plant_controller/proc/spawn_piece(var/turf/location) + var/obj/effect/plantsegment/SV = new(location) + SV.limited_growth = src.limited_growth + growth_queue += SV + vines += SV + SV.master = src + if(seed) + SV.seed = seed + SV.name = "[seed.seed_name] vines" + SV.update() + +/obj/effect/plant_controller/process() + + // Space vines exterminated. Remove the controller + if(!vines) + del(src) + return + + // Sanity check. + if(!growth_queue) + del(src) + return + + // Check if we're too big for our own good. + if(vines.len >= (seed ? seed.potency * collapse_limit : 250) && !reached_collapse_size) + reached_collapse_size = 1 + if(vines.len >= (seed ? seed.potency * slowdown_limit : 30) && !reached_slowdown_size ) + reached_slowdown_size = 1 + + var/length = 0 + if(reached_collapse_size) + length = 0 + else if(reached_slowdown_size) + if(prob(seed ? seed.potency : 25)) + length = 1 + else + length = 0 + else + length = 1 + + length = min(30, max(length, vines.len/5)) + + // Update as many pieces of vine as we're allowed to. + // Append updated vines to the end of the growth queue. + var/i = 0 + var/list/obj/effect/plantsegment/queue_end = list() + for(var/obj/effect/plantsegment/SV in growth_queue) + i++ + queue_end += SV + growth_queue -= SV + + SV.life() + + if(SV.energy < 2) //If tile isn't fully grown + var/chance + if(seed) + chance = limited_growth ? round(seed.potency/2,1) : seed.potency + else + chance = 20 + + if(prob(chance)) + SV.grow() + + else if(!seed || !limited_growth) //If tile is fully grown and not just a creeper. + SV.entangle_mob() + + SV.update() + SV.spread() + if(i >= length) + break + + growth_queue = growth_queue + queue_end \ No newline at end of file diff --git a/code/modules/research/xenoarchaeology/genetics/prehistoric_seeds.dm b/code/modules/research/xenoarchaeology/genetics/prehistoric_seeds.dm new file mode 100644 index 00000000000..5597d275322 --- /dev/null +++ b/code/modules/research/xenoarchaeology/genetics/prehistoric_seeds.dm @@ -0,0 +1,139 @@ +/datum/seed/telriis + + name = "telriis" + seed_name = "telriis" + display_name = "telriis grass" + products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/telriis_clump) + packet_icon = "seed-alien1" + plant_icon = "telriis" + + lifespan = 50 + endurance = 50 + maturation = 5 + production = 5 + yield = 4 + potency = 5 + growth_stages = 4 + +/datum/seed/thaadra + + name = "thaadra" + seed_name = "thaa'dra" + display_name = "thaa'dra lichen" + products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/thaadrabloom) + packet_icon = "seed-alien3" + plant_icon = "thaadra" + + lifespan = 20 + endurance = 10 + maturation = 5 + production = 9 + yield = 2 + potency = 5 + growth_stages = 4 + +/datum/seed/jurlmah + + name = "jurlmah" + seed_name = "jurl'mah" + display_name = "jurl'mah reeds" + products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/jurlmah) + packet_icon = "seed-alien3" + plant_icon = "jurlmah" + + lifespan = 20 + endurance = 12 + maturation = 8 + production = 9 + yield = 3 + potency = 10 + growth_stages = 5 + +/datum/seed/amauri + + name = "amauri" + seed_name = "amauri" + display_name = "amauri plant" + products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/amauri) + packet_icon = "seed-alien3" + plant_icon = "amauri" + + lifespan = 30 + endurance = 10 + maturation = 8 + production = 9 + yield = 4 + potency = 10 + growth_stages = 3 + +/datum/seed/gelthi + + name = "gelthi" + seed_name = "gelthi" + display_name = "gelthi plant" + products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/gelthi) + packet_icon = "seed-alien2" + plant_icon = "gelthi" + + lifespan = 20 + endurance = 15 + maturation = 6 + production = 6 + yield = 2 + potency = 1 + growth_stages = 3 + +/datum/seed/vale + + name = "vale" + seed_name = "vale" + display_name = "vale bush" + products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/vale) + packet_icon = "seed-alien2" + plant_icon = "vale" + + lifespan = 25 + endurance = 15 + maturation = 8 + production = 10 + yield = 3 + potency = 3 + growth_stages = 4 + +/datum/seed/surik + + name = "surik" + seed_name = "surik" + display_name = "surik vine" + products = list(/obj/item/weapon/reagent_containers/food/snacks/grown/surik) + packet_icon = "seed-alien3" + plant_icon = "surik" + + lifespan = 30 + endurance = 18 + maturation = 7 + production = 7 + yield = 3 + potency = 3 + growth_stages = 4 + +/obj/item/seeds/jurlmah + seed_type = "jurlmah" + +/obj/item/seeds/amauri + seed_type = "amauri" + +/obj/item/seeds/gelthi + seed_type = "gelthi" + +/obj/item/seeds/vale + seed_type = "vale" + +/obj/item/seeds/surik + seed_type = "surik" + +/obj/item/seeds/telriis + seed_type = "telriis" + +/obj/item/seeds/thaadra + seed_type = "thaadra" \ No newline at end of file From 4d1812ba2b2175564d443f00e2ce0c56d2ac7700 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Fri, 25 Jul 2014 22:16:04 +0930 Subject: [PATCH 3/5] Hydroponics rewrite, details will be in PR. Big commit. --- baystation12.dme | 6 +- .../Cael_Aislinn/Jungle/jungle_plants.dm | 1 - code/controllers/master_controller.dm | 4 +- code/datums/supplypacks.dm | 1 + code/game/gamemodes/events/spacevines.dm | 246 +----- code/game/machinery/bees_apiary.dm | 18 +- code/game/machinery/seed_extractor.dm | 61 +- code/game/machinery/vending.dm | 2 +- code/game/objects/structures.dm | 2 +- .../mob/living/carbon/brain/posibrain.dm | 124 ++- code/modules/mob/living/simple_animal/bees.dm | 4 +- .../simple_animal/friendly/farm_animals.dm | 10 +- code/modules/mob/mob.dm | 12 +- code/modules/reagents/Chemistry-Reagents.dm | 12 +- .../reagent_containers/food/snacks/grown.dm | 759 ++++-------------- .../genetics/prehistoric_plants.dm | 123 +-- icons/obj/hydroponics.dmi | Bin 158662 -> 162570 bytes maps/tgstation2.dmm | 41 +- 18 files changed, 297 insertions(+), 1129 deletions(-) diff --git a/baystation12.dme b/baystation12.dme index e3de1ac51f4..5cefa5dc191 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -311,7 +311,6 @@ #include "code\game\machinery\newscaster.dm" #include "code\game\machinery\OpTable.dm" #include "code\game\machinery\overview.dm" -#include "code\game\machinery\podmen.dm" #include "code\game\machinery\portable_turret.dm" #include "code\game\machinery\recharger.dm" #include "code\game\machinery\rechargestation.dm" @@ -858,7 +857,11 @@ #include "code\modules\hydroponics\grown_inedible.dm" #include "code\modules\hydroponics\hydro_tools.dm" #include "code\modules\hydroponics\hydro_tray.dm" +#include "code\modules\hydroponics\seed_datums.dm" +#include "code\modules\hydroponics\seed_machines.dm" +#include "code\modules\hydroponics\seed_mobs.dm" #include "code\modules\hydroponics\seeds.dm" +#include "code\modules\hydroponics\vines.dm" #include "code\modules\library\lib_items.dm" #include "code\modules\library\lib_machines.dm" #include "code\modules\library\lib_readme.dm" @@ -1268,6 +1271,7 @@ #include "code\modules\research\xenoarchaeology\finds\finds_talkingitem.dm" #include "code\modules\research\xenoarchaeology\genetics\prehistoric_animals.dm" #include "code\modules\research\xenoarchaeology\genetics\prehistoric_plants.dm" +#include "code\modules\research\xenoarchaeology\genetics\prehistoric_seeds.dm" #include "code\modules\research\xenoarchaeology\genetics\reconstitutor.dm" #include "code\modules\research\xenoarchaeology\machinery\artifact_analyser.dm" #include "code\modules\research\xenoarchaeology\machinery\artifact_harvester.dm" diff --git a/code/WorkInProgress/Cael_Aislinn/Jungle/jungle_plants.dm b/code/WorkInProgress/Cael_Aislinn/Jungle/jungle_plants.dm index 5a0f955df30..3f1a7c2f4bb 100644 --- a/code/WorkInProgress/Cael_Aislinn/Jungle/jungle_plants.dm +++ b/code/WorkInProgress/Cael_Aislinn/Jungle/jungle_plants.dm @@ -65,7 +65,6 @@ var/jungle_plants_init = 0 reagent_effects = shuffle(reagent_effects) /obj/item/weapon/reagent_containers/food/snacks/grown/jungle_fruit - seed = "" name = "jungle fruit" desc = "It smells weird and looks off." icon = 'code/WorkInProgress/Cael_Aislinn/Jungle/jungle.dmi' diff --git a/code/controllers/master_controller.dm b/code/controllers/master_controller.dm index 0b314a25312..d81e44670d6 100644 --- a/code/controllers/master_controller.dm +++ b/code/controllers/master_controller.dm @@ -109,7 +109,6 @@ datum/controller/game_controller/proc/setup_objects() var/obj/machinery/atmospherics/unary/vent_scrubber/T = U T.broadcast_status() - //Create the mining ore distribution map. //Create the mining ore distribution map. asteroid_ore_map = new /datum/ore_distribution() asteroid_ore_map.populate_distribution_map() @@ -120,6 +119,9 @@ datum/controller/game_controller/proc/setup_objects() //Set up gear list. populate_gear_list() + //Set up roundstart seed list. + populate_seed_list() + world << "\red \b Initializations complete." sleep(-1) diff --git a/code/datums/supplypacks.dm b/code/datums/supplypacks.dm index abca12f25e1..4bbe8b38c1d 100755 --- a/code/datums/supplypacks.dm +++ b/code/datums/supplypacks.dm @@ -832,6 +832,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee containername = "Arts and Crafts crate" group = "Operations" + /datum/supply_packs/randomised/contraband num_contained = 5 contains = list(/obj/item/seeds/bloodtomatoseed, diff --git a/code/game/gamemodes/events/spacevines.dm b/code/game/gamemodes/events/spacevines.dm index b3af8195ca4..d095f19d564 100644 --- a/code/game/gamemodes/events/spacevines.dm +++ b/code/game/gamemodes/events/spacevines.dm @@ -1,247 +1,3 @@ -// SPACE VINES (Note that this code is very similar to Biomass code) -/obj/effect/spacevine - name = "space vines" - desc = "An extremely expansionistic species of vine." - icon = 'icons/effects/spacevines.dmi' - icon_state = "Light1" - anchored = 1 - density = 0 - layer = 5 - pass_flags = PASSTABLE | PASSGRILLE - var/energy = 0 - var/obj/effect/spacevine_controller/master = null - var/mob/living/buckled_mob - - New() - return - - Del() - if(master) - master.vines -= src - master.growth_queue -= src - ..() - - -/obj/effect/spacevine/attackby(obj/item/weapon/W as obj, mob/user as mob) - if (!W || !user || !W.type) return - switch(W.type) - if(/obj/item/weapon/circular_saw) del src - if(/obj/item/weapon/kitchen/utensil/knife) del src - if(/obj/item/weapon/scalpel) del src - if(/obj/item/weapon/twohanded/fireaxe) del src - if(/obj/item/weapon/hatchet) del src - if(/obj/item/weapon/melee/energy) del src - - //less effective weapons - if(/obj/item/weapon/wirecutters) - if(prob(25)) del src - if(/obj/item/weapon/shard) - if(prob(25)) del src - - else //weapons with subtypes - if(istype(W, /obj/item/weapon/melee/energy/sword)) del src - else if(istype(W, /obj/item/weapon/weldingtool)) - var/obj/item/weapon/weldingtool/WT = W - if(WT.remove_fuel(0, user)) del src - else - manual_unbuckle(user) - return - //Plant-b-gone damage is handled in its entry in chemistry-reagents.dm - ..() - - -/obj/effect/spacevine/attack_hand(mob/user as mob) - manual_unbuckle(user) - - -/obj/effect/spacevine/attack_paw(mob/user as mob) - manual_unbuckle(user) - -/obj/effect/spacevine/proc/unbuckle() - if(buckled_mob) - if(buckled_mob.buckled == src) //this is probably unneccesary, but it doesn't hurt - buckled_mob.buckled = null - buckled_mob.anchored = initial(buckled_mob.anchored) - buckled_mob.update_canmove() - buckled_mob = null - return - -/obj/effect/spacevine/proc/manual_unbuckle(mob/user as mob) - if(buckled_mob) - if(prob(50)) - if(buckled_mob.buckled == src) - if(buckled_mob != user) - buckled_mob.visible_message(\ - "[user.name] frees [buckled_mob.name] from the vines.",\ - "[user.name] frees you from the vines.",\ - "You hear shredding and ripping.") - else - buckled_mob.visible_message(\ - "[buckled_mob.name] struggles free of the vines.",\ - "You untangle the vines from around yourself.",\ - "You hear shredding and ripping.") - unbuckle() - else - var/text = pick("rips","tears","pulls") - user.visible_message(\ - "[user.name] [text] at the vines.",\ - "You [text] at the vines.",\ - "You hear shredding and ripping.") - return - -/obj/effect/spacevine_controller - var/list/obj/effect/spacevine/vines = list() - var/list/growth_queue = list() - var/reached_collapse_size - var/reached_slowdown_size - //What this does is that instead of having the grow minimum of 1, required to start growing, the minimum will be 0, - //meaning if you get the spacevines' size to something less than 20 plots, it won't grow anymore. - - New() - if(!istype(src.loc,/turf/simulated/floor)) - del(src) - - spawn_spacevine_piece(src.loc) - processing_objects.Add(src) - - Del() - processing_objects.Remove(src) - ..() - - proc/spawn_spacevine_piece(var/turf/location) - var/obj/effect/spacevine/SV = new(location) - growth_queue += SV - vines += SV - SV.master = src - - process() - if(!vines) - del(src) //space vines exterminated. Remove the controller - return - if(!growth_queue) - del(src) //Sanity check - return - if(vines.len >= 250 && !reached_collapse_size) - reached_collapse_size = 1 - if(vines.len >= 30 && !reached_slowdown_size ) - reached_slowdown_size = 1 - - var/length = 0 - if(reached_collapse_size) - length = 0 - else if(reached_slowdown_size) - if(prob(25)) - length = 1 - else - length = 0 - else - length = 1 - length = min( 30 , max( length , vines.len / 5 ) ) - var/i = 0 - var/list/obj/effect/spacevine/queue_end = list() - - for( var/obj/effect/spacevine/SV in growth_queue ) - i++ - queue_end += SV - growth_queue -= SV - if(SV.energy < 2) //If tile isn't fully grown - if(prob(20)) - SV.grow() - else //If tile is fully grown - SV.buckle_mob() - - //if(prob(25)) - SV.spread() - if(i >= length) - break - - growth_queue = growth_queue + queue_end - //sleep(5) - //src.process() - -/obj/effect/spacevine/proc/grow() - if(!energy) - src.icon_state = pick("Med1", "Med2", "Med3") - energy = 1 - src.opacity = 1 - layer = 5 - else - src.icon_state = pick("Hvy1", "Hvy2", "Hvy3") - energy = 2 - -/obj/effect/spacevine/proc/buckle_mob() - if(!buckled_mob && prob(25)) - for(var/mob/living/carbon/V in src.loc) - if((V.stat != DEAD) && (V.buckled != src)) //if mob not dead or captured - V.buckled = src - V.loc = src.loc - V.update_canmove() - src.buckled_mob = V - V << "The vines [pick("wind", "tangle", "tighten")] around you!" - break //only capture one mob at a time. - -/obj/effect/spacevine/proc/spread() - var/direction = pick(cardinal) - var/step = get_step(src,direction) - if(istype(step,/turf/simulated/floor)) - var/turf/simulated/floor/F = step - if(!locate(/obj/effect/spacevine,F)) - if(F.Enter(src)) - if(master) - master.spawn_spacevine_piece( F ) - -/* -/obj/effect/spacevine/proc/Life() - if (!src) return - var/Vspread - if (prob(50)) Vspread = locate(src.x + rand(-1,1),src.y,src.z) - else Vspread = locate(src.x,src.y + rand(-1, 1),src.z) - var/dogrowth = 1 - if (!istype(Vspread, /turf/simulated/floor)) dogrowth = 0 - for(var/obj/O in Vspread) - if (istype(O, /obj/structure/window) || istype(O, /obj/effect/forcefield) || istype(O, /obj/effect/blob) || istype(O, /obj/effect/alien/weeds) || istype(O, /obj/effect/spacevine)) dogrowth = 0 - if (istype(O, /obj/machinery/door/)) - if(O:p_open == 0 && prob(50)) O:open() - else dogrowth = 0 - if (dogrowth == 1) - var/obj/effect/spacevine/B = new /obj/effect/spacevine(Vspread) - B.icon_state = pick("vine-light1", "vine-light2", "vine-light3") - spawn(20) - if(B) - B.Life() - src.growth += 1 - if (src.growth == 10) - src.name = "Thick Space Kudzu" - src.icon_state = pick("vine-med1", "vine-med2", "vine-med3") - src.opacity = 1 - src.waittime = 80 - if (src.growth == 20) - src.name = "Dense Space Kudzu" - src.icon_state = pick("vine-hvy1", "vine-hvy2", "vine-hvy3") - src.density = 1 - spawn(src.waittime) - if (src.growth < 20) src.Life() - -*/ - -/obj/effect/spacevine/ex_act(severity) - switch(severity) - if(1.0) - del(src) - return - if(2.0) - if (prob(90)) - del(src) - return - if(3.0) - if (prob(50)) - del(src) - return - return - -/obj/effect/spacevine/fire_act(null, temp, volume) //hotspots kill vines - del src - //Carn: Spacevines random event. /proc/spacevine_infestation() @@ -256,5 +12,5 @@ if(turfs.len) //Pick a turf to spawn at if we can var/turf/simulated/floor/T = pick(turfs) - new/obj/effect/spacevine_controller(T) //spawn a controller at turf + new/obj/effect/plant_controller(T) //spawn a controller at turf message_admins("\blue Event: Spacevines spawned at [T.loc] ([T.x],[T.y],[T.z])") diff --git a/code/game/machinery/bees_apiary.dm b/code/game/machinery/bees_apiary.dm index 2c2de70163d..800d244d2fa 100644 --- a/code/game/machinery/bees_apiary.dm +++ b/code/game/machinery/bees_apiary.dm @@ -170,13 +170,13 @@ //find some plants, harvest for(var/obj/machinery/hydroponics/H in view(7, src)) - if(H.planted && !H.dead && H.myseed && prob(owned_bee_swarms.len * 10)) + if(H.seed && !H.dead && prob(owned_bee_swarms.len * 10)) src.nutrilevel++ H.nutrilevel++ - if(mut < H.mutmod - 1) - mut = H.mutmod - 1 - else if(mut > H.mutmod - 1) - H.mutmod = mut + if(mut < H.mutation_mod - 1) + mut = H.mutation_mod - 1 + else if(mut > H.mutation_mod - 1) + H.mutation_mod = mut //flowers give us pollen (nutrients) /* - All plants should be giving nutrients to the hive. @@ -188,11 +188,11 @@ if(prob(10)) H.lastcycle -= 5 if(prob(10)) - H.myseed.lifespan = max(initial(H.myseed.lifespan) * 1.5, H.myseed.lifespan + 1) + H.seed.lifespan = max(initial(H.seed.lifespan) * 1.5, H.seed.lifespan + 1) if(prob(10)) - H.myseed.endurance = max(initial(H.myseed.endurance) * 1.5, H.myseed.endurance + 1) - if(H.toxic && prob(10)) - H.toxic = min(0, H.toxic - 1) + H.seed.endurance = max(initial(H.seed.endurance) * 1.5, H.seed.endurance + 1) + if(H.toxins && prob(10)) + H.toxins = min(0, H.toxins - 1) toxic++ /obj/machinery/apiary/proc/die() diff --git a/code/game/machinery/seed_extractor.dm b/code/game/machinery/seed_extractor.dm index 615e52f3980..dbb5a9d2712 100644 --- a/code/game/machinery/seed_extractor.dm +++ b/code/game/machinery/seed_extractor.dm @@ -7,44 +7,33 @@ anchored = 1 obj/machinery/seed_extractor/attackby(var/obj/item/O as obj, var/mob/user as mob) - if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/grown/)) - var/obj/item/weapon/reagent_containers/food/snacks/grown/F = O - user.drop_item() - user << "You extract some seeds from the [F.name]." - var/seed = text2path(F.seed) - var/t_amount = 0 - var/t_max = rand(1,4) - while(t_amount < t_max) - var/obj/item/seeds/t_prod = new seed(loc) - t_prod.species = F.species - t_prod.lifespan = F.lifespan - t_prod.endurance = F.endurance - t_prod.maturation = F.maturation - t_prod.production = F.production - t_prod.yield = F.yield - t_prod.potency = F.potency - t_amount++ - del(O) - - else if(istype(O, /obj/item/weapon/grown/)) - var/obj/item/weapon/grown/F = O - user.drop_item() - user << "You extract some seeds from the [F.name]." - var/seed = text2path(F.seed) - var/t_amount = 0 - var/t_max = rand(1,4) - while(t_amount < t_max) - var/obj/item/seeds/t_prod = new seed(loc) - t_prod.species = F.species - t_prod.lifespan = F.lifespan - t_prod.endurance = F.endurance - t_prod.maturation = F.maturation - t_prod.production = F.production - t_prod.yield = F.yield - t_prod.potency = F.potency - t_amount++ + + // Fruits and vegetables. + if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/grown) || istype(O, /obj/item/weapon/grown)) + + user.drop_item(O) + + var/datum/seed/new_seed_type + if(istype(O, /obj/item/weapon/grown)) + var/obj/item/weapon/grown/F = O + new_seed_type = seed_types[F.plantname] + else + var/obj/item/weapon/reagent_containers/food/snacks/grown/F = O + new_seed_type = seed_types[F.plantname] + + if(new_seed_type) + user << "You extract some seeds from [O]." + var/produce = rand(1,4) + for(var/i = 0;i<=produce;i++) + var/obj/item/seeds/seeds = new(get_turf(src)) + seeds.seed_type = new_seed_type.name + seeds.update_seed() + else + user << "[O] doesn't seem to have any usable seeds inside it." + del(O) + //Grass. else if(istype(O, /obj/item/stack/tile/grass)) var/obj/item/stack/tile/grass/S = O user << "You extract some seeds from the [S.name]." diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index 8d3ee589444..cf94be5e953 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -801,7 +801,7 @@ product_ads = "We like plants!;Don't you want some?;The greenest thumbs ever.;We like big plants.;Soft soil..." icon_state = "nutri" icon_deny = "nutri-deny" - products = list(/obj/item/nutrient/ez = 35,/obj/item/nutrient/l4z = 25,/obj/item/nutrient/rh = 15,/obj/item/weapon/pestspray = 20, + products = list(/obj/item/nutrient/ez = 35,/obj/item/nutrient/l4z = 25,/obj/item/nutrient/rh = 15,/obj/item/weapon/plantspray/pests = 20, /obj/item/weapon/reagent_containers/syringe = 5,/obj/item/weapon/storage/bag/plants = 5) premium = list(/obj/item/weapon/reagent_containers/glass/bottle/ammonia = 10,/obj/item/weapon/reagent_containers/glass/bottle/diethylamine = 5) diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm index 04648c39b3e..20927cee632 100644 --- a/code/game/objects/structures.dm +++ b/code/game/objects/structures.dm @@ -81,7 +81,7 @@ var/damage = rand(15,30) var/mob/living/carbon/human/H = M - if(!istype(M)) + if(!istype(H)) H << "\red You land heavily!" M.adjustBruteLoss(damage) return diff --git a/code/modules/mob/living/carbon/brain/posibrain.dm b/code/modules/mob/living/carbon/brain/posibrain.dm index 4f324805a28..6877ed4b854 100644 --- a/code/modules/mob/living/carbon/brain/posibrain.dm +++ b/code/modules/mob/living/carbon/brain/posibrain.dm @@ -16,80 +16,78 @@ mecha = null//This does not appear to be used outside of reference in mecha.dm. - attack_self(mob/user as mob) - if(brainmob && !brainmob.key && searching == 0) - //Start the process of searching for a new user. - user << "\blue You carefully locate the manual activation switch and start the positronic brain's boot process." - icon_state = "posibrain-searching" - src.searching = 1 - src.request_player() - spawn(600) reset_search() +/obj/item/device/mmi/posibrain/attack_self(mob/user as mob) + if(brainmob && !brainmob.key && searching == 0) + //Start the process of searching for a new user. + user << "\blue You carefully locate the manual activation switch and start the positronic brain's boot process." + icon_state = "posibrain-searching" + src.searching = 1 + src.request_player() + spawn(600) reset_search() - proc/request_player() - for(var/mob/dead/observer/O in player_list) - if(O.has_enabled_antagHUD == 1 && config.antag_hud_restricted) - continue - if(jobban_isbanned(O, "pAI")) - continue - if(O.client) - if(O.client.prefs.be_special & BE_PAI) - question(O.client) +/obj/item/device/mmi/posibrain/proc/request_player() + for(var/mob/dead/observer/O in player_list) + if(O.has_enabled_antagHUD == 1 && config.antag_hud_restricted) + continue + if(jobban_isbanned(O, "pAI")) + continue + if(O.client) + if(O.client.prefs.be_special & BE_PAI) + question(O.client) - proc/question(var/client/C) - spawn(0) - if(!C) return - var/response = alert(C, "Someone is requesting a personality for a positronic brain. Would you like to play as one?", "Positronic brain request", "Yes", "No", "Never for this round") - if(!C || brainmob.key || 0 == searching) return //handle logouts that happen whilst the alert is waiting for a response, and responses issued after a brain has been located. - if(response == "Yes") - transfer_personality(C.mob) - else if (response == "Never for this round") - C.prefs.be_special ^= BE_PAI +/obj/item/device/mmi/posibrain/proc/question(var/client/C) + spawn(0) + if(!C) return + var/response = alert(C, "Someone is requesting a personality for a positronic brain. Would you like to play as one?", "Positronic brain request", "Yes", "No", "Never for this round") + if(!C || brainmob.key || 0 == searching) return //handle logouts that happen whilst the alert is waiting for a response, and responses issued after a brain has been located. + if(response == "Yes") + transfer_personality(C.mob) + else if (response == "Never for this round") + C.prefs.be_special ^= BE_PAI - transfer_identity(var/mob/living/carbon/H) - name = "positronic brain ([H])" - brainmob.name = H.real_name - brainmob.real_name = H.real_name - brainmob.dna = H.dna - brainmob.timeofhostdeath = H.timeofdeath - brainmob.stat = 0 - if(brainmob.mind) - brainmob.mind.assigned_role = "Positronic Brain" - if(H.mind) - H.mind.transfer_to(brainmob) - brainmob << "\blue You feel slightly disoriented. That's normal when you're just a metal cube." - icon_state = "posibrain-occupied" - return +/obj/item/device/mmi/posibrain/transfer_identity(var/mob/living/carbon/H) + name = "positronic brain ([H])" + brainmob.name = H.real_name + brainmob.real_name = H.real_name + brainmob.dna = H.dna + brainmob.timeofhostdeath = H.timeofdeath + brainmob.stat = 0 + if(brainmob.mind) + brainmob.mind.assigned_role = "Positronic Brain" + if(H.mind) + H.mind.transfer_to(brainmob) + brainmob << "\blue You feel slightly disoriented. That's normal when you're just a metal cube." + icon_state = "posibrain-occupied" + return - proc/transfer_personality(var/mob/candidate) +/obj/item/device/mmi/posibrain/proc/transfer_personality(var/mob/candidate) - src.searching = 0 - src.brainmob.mind = candidate.mind - //src.brainmob.key = candidate.key - src.brainmob.ckey = candidate.ckey - src.name = "positronic brain ([src.brainmob.name])" + src.searching = 0 + src.brainmob.mind = candidate.mind + src.brainmob.ckey = candidate.ckey + src.name = "positronic brain ([src.brainmob.name])" + src.brainmob << "You are a positronic brain, brought into existence on [station_name()]." + src.brainmob << "As a synthetic intelligence, you answer to all crewmembers, as well as the AI." + src.brainmob << "Remember, the purpose of your existence is to serve the crew and the station. Above all else, do no harm." + src.brainmob << "Use say :b to speak to other artificial intelligences." + src.brainmob.mind.assigned_role = "Positronic Brain" - src.brainmob << "You are a positronic brain, brought into existence on [station_name()]." - src.brainmob << "As a synthetic intelligence, you answer to all crewmembers, as well as the AI." - src.brainmob << "Remember, the purpose of your existence is to serve the crew and the station. Above all else, do no harm." - src.brainmob << "Use say :b to speak to other artificial intelligences." - src.brainmob.mind.assigned_role = "Positronic Brain" + var/turf/T = get_turf_or_move(src.loc) + for (var/mob/M in viewers(T)) + M.show_message("\blue The positronic brain chimes quietly.") + icon_state = "posibrain-occupied" - var/turf/T = get_turf_or_move(src.loc) - for (var/mob/M in viewers(T)) - M.show_message("\blue The positronic brain chimes quietly.") - icon_state = "posibrain-occupied" +/obj/item/device/mmi/posibrain/proc/reset_search() //We give the players sixty seconds to decide, then reset the timer. - proc/reset_search() //We give the players sixty seconds to decide, then reset the timer. + if(src.brainmob && src.brainmob.key) return - if(src.brainmob && src.brainmob.key) return + src.searching = 0 + icon_state = "posibrain" - src.searching = 0 - icon_state = "posibrain" - - var/turf/T = get_turf_or_move(src.loc) - for (var/mob/M in viewers(T)) - M.show_message("\blue The positronic brain buzzes quietly, and the golden lights fade away. Perhaps you could try again?") + var/turf/T = get_turf_or_move(src.loc) + for (var/mob/M in viewers(T)) + M.show_message("\blue The positronic brain buzzes quietly, and the golden lights fade away. Perhaps you could try again?") /obj/item/device/mmi/posibrain/examine() diff --git a/code/modules/mob/living/simple_animal/bees.dm b/code/modules/mob/living/simple_animal/bees.dm index 45ece9f6df1..d2b65fc25ee 100644 --- a/code/modules/mob/living/simple_animal/bees.dm +++ b/code/modules/mob/living/simple_animal/bees.dm @@ -155,10 +155,10 @@ turns_per_move = rand(1,3) else if(feral < 0) turns_since_move = 0 - else if(!my_hydrotray || my_hydrotray.loc != src.loc || !my_hydrotray.planted || my_hydrotray.dead || !my_hydrotray.myseed) + else if(!my_hydrotray || my_hydrotray.loc != src.loc || my_hydrotray.dead || !my_hydrotray.seed) var/obj/machinery/hydroponics/my_hydrotray = locate() in src.loc if(my_hydrotray) - if(my_hydrotray.planted && !my_hydrotray.dead && my_hydrotray.myseed) + if(!my_hydrotray.dead && my_hydrotray.seed) turns_per_move = rand(20,50) else my_hydrotray = null diff --git a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm index 41bdbfe323f..822d4e65fa6 100644 --- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm +++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm @@ -45,8 +45,8 @@ if(udder && prob(5)) udder.add_reagent("milk", rand(5, 10)) - if(locate(/obj/effect/spacevine) in loc) - var/obj/effect/spacevine/SV = locate(/obj/effect/spacevine) in loc + if(locate(/obj/effect/plantsegment) in loc) + var/obj/effect/plantsegment/SV = locate(/obj/effect/plantsegment) in loc del(SV) if(prob(10)) say("Nom") @@ -55,7 +55,7 @@ for(var/direction in shuffle(list(1,2,4,8,5,6,9,10))) var/step = get_step(src, direction) if(step) - if(locate(/obj/effect/spacevine) in step) + if(locate(/obj/effect/plantsegment) in step) Move(step) /mob/living/simple_animal/hostile/retaliate/goat/Retaliate() @@ -65,8 +65,8 @@ /mob/living/simple_animal/hostile/retaliate/goat/Move() ..() if(!stat) - if(locate(/obj/effect/spacevine) in loc) - var/obj/effect/spacevine/SV = locate(/obj/effect/spacevine) in loc + if(locate(/obj/effect/plantsegment) in loc) + var/obj/effect/plantsegment/SV = locate(/obj/effect/plantsegment) in loc del(SV) if(prob(10)) say("Nom") diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 0177034e806..580d8dfd87b 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -755,10 +755,15 @@ note dizziness decrements automatically in the mob's Life() proc. //Updates canmove, lying and icons. Could perhaps do with a rename but I can't think of anything to describe it. /mob/proc/update_canmove() - if(buckled && (!buckled.movable)) + + var/is_movable + if(buckled && istype(buckled)) + is_movable = buckled.movable + + if(buckled && !is_movable) anchored = 1 canmove = 0 - if( istype(buckled,/obj/structure/stool/bed/chair) ) + if(istype(buckled,/obj/structure/stool/bed/chair) ) lying = 0 else if(istype(buckled, /obj/vehicle)) var/obj/vehicle/V = buckled @@ -768,7 +773,7 @@ note dizziness decrements automatically in the mob's Life() proc. lying = 1 else lying = 1 - else if(buckled && (buckled.movable)) + else if(buckled && is_movable) anchored = 0 canmove = 1 lying = 0 @@ -776,7 +781,6 @@ note dizziness decrements automatically in the mob's Life() proc. lying = 1 canmove = 0 else if( stunned ) -// lying = 0 canmove = 0 else if(captured) anchored = 1 diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index 4d278053811..a621e976823 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -842,18 +842,18 @@ datum description = "Sterilizes wounds in preparation for surgery." reagent_state = LIQUID color = "#C8A5DC" // rgb: 200, 165, 220 - + //makes you squeaky clean reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume) if (method == TOUCH) M.germ_level -= min(volume*20, M.germ_level) - + reaction_obj(var/obj/O, var/volume) O.germ_level -= min(volume*20, O.germ_level) - + reaction_turf(var/turf/T, var/volume) T.germ_level -= min(volume*20, T.germ_level) - + /* reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume) src = null if (method==TOUCH) @@ -1332,7 +1332,7 @@ datum if(!M) M = holder.my_atom if(ishuman(M)) var/mob/living/carbon/human/H = M - + //Peridaxon is hard enough to get, it's probably fair to make this all internal organs for(var/datum/organ/internal/I in H.internal_organs) if(I.damage > 0) @@ -1768,7 +1768,7 @@ datum alien_weeds.healthcheck() else if(istype(O,/obj/effect/glowshroom)) //even a small amount is enough to kill it del(O) - else if(istype(O,/obj/effect/spacevine)) + else if(istype(O,/obj/effect/plantsegment)) if(prob(50)) del(O) //Kills kudzu too. // Damage that is done to growing plants is separately at code/game/machinery/hydroponics at obj/item/hydroponics diff --git a/code/modules/reagents/reagent_containers/food/snacks/grown.dm b/code/modules/reagents/reagent_containers/food/snacks/grown.dm index 9fb7fc2d977..6b26a16c0d4 100644 --- a/code/modules/reagents/reagent_containers/food/snacks/grown.dm +++ b/code/modules/reagents/reagent_containers/food/snacks/grown.dm @@ -8,17 +8,8 @@ //Grown foods //Subclass so we can pass on values /obj/item/weapon/reagent_containers/food/snacks/grown/ - var/seed = "" - var/plantname = "" - var/productname = "" - var/species = "" - var/lifespan = 0 - var/endurance = 0 - var/maturation = 0 - var/production = 0 - var/yield = 0 + var/plantname var/potency = -1 - var/plant_type = 0 icon = 'icons/obj/harvest.dmi' New(newloc,newpotency) if (!isnull(newpotency)) @@ -27,154 +18,69 @@ src.pixel_x = rand(-5.0, 5) src.pixel_y = rand(-5.0, 5) -/obj/item/weapon/reagent_containers/food/snacks/grown/attackby(var/obj/item/O as obj, var/mob/user as mob) +/obj/item/weapon/reagent_containers/food/snacks/grown/New() ..() - if (istype(O, /obj/item/device/analyzer/plant_analyzer)) - var/msg - msg = "*---------*\n This is \a [src]\n" - switch(plant_type) - if(0) - msg += "- Plant type: Normal plant\n" - if(1) - msg += "- Plant type: Weed\n" - if(2) - msg += "- Plant type: Mushroom\n" - msg += "- Potency: [potency]\n" - msg += "- Yield: [yield]\n" - msg += "- Maturation speed: [maturation]\n" - msg += "- Production speed: [production]\n" - msg += "- Endurance: [endurance]\n" - msg += "- Healing properties: [reagents.get_reagent_amount("nutriment")]\n" - msg += "*---------*" - usr << msg - return - /*if (istype(O, /obj/item/weapon/storage/bag/plants)) - var/obj/item/weapon/plantbag/S = O - if (S.mode == 1) - for(var/obj/item/G in get_turf(src)) - if(istype(G, /obj/item/seeds) || istype(G, /obj/item/weapon/reagent_containers/food/snacks/grown)) - if (S.contents.len < S.capacity) - S.contents += G - else - user << "\blue The plant bag is full." - return - user << "\blue You pick up all the plants and seeds." - else - if (S.contents.len < S.capacity) - S.contents += src; - else - user << "\blue The plant bag is full."*/ - return + //Handle some post-spawn var stuff. + spawn(1) + // Fill the object up with the appropriate reagents. + if(!isnull(plantname)) + var/datum/seed/S = seed_types[plantname] + if(!S || !S.chems) + return -/*/obj/item/seeds/attackby(var/obj/item/O as obj, var/mob/user as mob) - if (istype(O, /obj/item/weapon/storage/bag/plants)) - var/obj/item/weapon/plantbag/S = O - if (S.mode == 1) - for(var/obj/item/G in get_turf(src)) - if(istype(G, /obj/item/seeds) || istype(G, /obj/item/weapon/reagent_containers/food/snacks/grown)) - if (S.contents.len < S.capacity) - S.contents += G - else - user << "\blue The plant bag is full." - return - user << "\blue You pick up all the plants and seeds." - else - if (S.contents.len < S.capacity) - S.contents += src; - else - user << "\blue The plant bag is full." - return*/ + potency = S.potency -/obj/item/weapon/grown/attackby(var/obj/item/O as obj, var/mob/user as mob) - ..() - if (istype(O, /obj/item/device/analyzer/plant_analyzer)) - var/msg - msg = "*---------*\n This is \a [src]\n" - switch(plant_type) - if(0) - msg += "- Plant type: Normal plant\n" - if(1) - msg += "- Plant type: Weed\n" - if(2) - msg += "- Plant type: Mushroom\n" - msg += "- Acid strength: [potency]\n" - msg += "- Yield: [yield]\n" - msg += "- Maturation speed: [maturation]\n" - msg += "- Production speed: [production]\n" - msg += "- Endurance: [endurance]\n" - msg += "*---------*" - usr << msg - return + for(var/rid in S.chems) + var/list/reagent_data = S.chems[rid] + var/rtotal = reagent_data[1] + if(reagent_data.len > 1 && potency > 0) + rtotal += round(potency/reagent_data[2]) + reagents.add_reagent(rid,max(1,rtotal)) + + if(reagents.total_volume > 0) + bitesize = 1+round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/corn - seed = "/obj/item/seeds/cornseed" name = "ear of corn" desc = "Needs some butter!" + plantname = "corn" icon_state = "corn" potency = 40 filling_color = "#FFEE00" trash = /obj/item/weapon/corncob - New() - ..() - spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1+round((potency / 10), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) - /obj/item/weapon/reagent_containers/food/snacks/grown/cherries - seed = "/obj/item/seeds/cherryseed" name = "cherries" desc = "Great for toppings!" icon_state = "cherry" filling_color = "#FF0000" gender = PLURAL - New() - ..() - spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1+round((potency / 15), 1)) - reagents.add_reagent("sugar", 1+round((potency / 15), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + plantname = "cherry" /obj/item/weapon/reagent_containers/food/snacks/grown/poppy - seed = "/obj/item/seeds/poppyseed" name = "poppy" desc = "Long-used as a symbol of rest, peace, and death." icon_state = "poppy" potency = 30 filling_color = "#CC6464" - New() - ..() - spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1+round((potency / 20), 1)) - reagents.add_reagent("bicaridine", 1+round((potency / 10), 1)) - bitesize = 1+round(reagents.total_volume / 3, 1) + plantname = "poppies" /obj/item/weapon/reagent_containers/food/snacks/grown/harebell - seed = "obj/item/seeds/harebellseed" name = "harebell" desc = "\"I'll sweeten thy sad grave: thou shalt not lack the flower that's like thy face, pale primrose, nor the azured hare-bell, like thy veins; no, nor the leaf of eglantine, whom not to slander, out-sweeten’d not thy breath.\"" icon_state = "harebell" potency = 1 filling_color = "#D4B2C9" - New() - ..() - spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1+round((potency / 20), 1)) - bitesize = 1+round(reagents.total_volume / 3, 1) + plantname = "harebells" /obj/item/weapon/reagent_containers/food/snacks/grown/potato - seed = "/obj/item/seeds/potatoseed" name = "potato" desc = "Boil 'em! Mash 'em! Stick 'em in a stew!" icon_state = "potato" potency = 25 filling_color = "#E6E8DA" - New() - ..() - reagents.add_reagent("nutriment", 1+round((potency / 10), 1)) - spawn(5) //So potency can be set in the proc that creates these crops - bitesize = reagents.total_volume + plantname = "potato" /obj/item/weapon/reagent_containers/food/snacks/grown/potato/attackby(obj/item/weapon/W as obj, mob/user as mob) ..() @@ -190,107 +96,63 @@ return /obj/item/weapon/reagent_containers/food/snacks/grown/grapes - seed = "/obj/item/seeds/grapeseed" name = "bunch of grapes" desc = "Nutritious!" icon_state = "grapes" filling_color = "#A332AD" - New() - ..() - spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1+round((potency / 10), 1)) - reagents.add_reagent("sugar", 1+round((potency / 5), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + plantname = "grapes" /obj/item/weapon/reagent_containers/food/snacks/grown/greengrapes - seed = "/obj/item/seeds/greengrapeseed" name = "bunch of green grapes" desc = "Nutritious!" icon_state = "greengrapes" potency = 25 filling_color = "#A6FFA3" - New() - ..() - spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1+round((potency / 10), 1)) - reagents.add_reagent("kelotane", 3+round((potency / 5), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + plantname = "greengrapes" /obj/item/weapon/reagent_containers/food/snacks/grown/peanut - seed = "/obj/item/seeds/peanutseed" name = "peanut" desc = "Nuts!" icon_state = "peanut" filling_color = "857e27" potency = 25 - New () - ..() - spawn(5) - reagents.add_reagent("nutriment", 1+round((potency / 10), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + plantname = "peanut" /obj/item/weapon/reagent_containers/food/snacks/grown/cabbage - seed = "/obj/item/seeds/cabbageseed" name = "cabbage" desc = "Ewwwwwwwwww. Cabbage." icon_state = "cabbage" potency = 25 filling_color = "#A2B5A1" - New() - ..() - spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1+round((potency / 10), 1)) - bitesize = reagents.total_volume + plantname = "cabbage" /obj/item/weapon/reagent_containers/food/snacks/grown/berries - seed = "/obj/item/seeds/berryseed" name = "bunch of berries" desc = "Nutritious!" icon_state = "berrypile" filling_color = "#C2C9FF" - New() - ..() - spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1+round((potency / 10), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + plantname = "berries" /obj/item/weapon/reagent_containers/food/snacks/grown/plastellium - seed = "/obj/item/seeds/plastiseed" name = "clump of plastellium" desc = "Hmm, needs some processing" icon_state = "plastellium" filling_color = "#C4C4C4" - New() - ..() - spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("plasticide", 1+round((potency / 10), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) - + plantname = "plastic" /obj/item/weapon/reagent_containers/food/snacks/grown/shand - seed = "/obj/item/seeds/shandseed" name = "S'rendarr's Hand leaf" - desc = "A leaf sample from a lowland thicket shrub, often hid in by prey and predator to staunch their wounds and conceal their scent, allowing the plant to spread far on its native Ahdomai. Smells strongly like wax." + desc = "A leaf sample from a lowland thicket shrub. Smells strongly like wax." icon_state = "shand" filling_color = "#70C470" - New() - ..() - spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("bicaridine", round((potency / 10), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + plantname = "shand" /obj/item/weapon/reagent_containers/food/snacks/grown/mtear - seed = "/obj/item/seeds/mtearseed" name = "sprig of Messa's Tear" - desc = "A mountain climate herb with a soft, cold blue flower, known to contain an abundance of chemicals in it's flower useful to treating burns- Bad for the allergic to pollen." + desc = "A mountain climate herb with a soft, cold blue flower, known to contain an abundance of healing chemicals." icon_state = "mtear" filling_color = "#70C470" - New() - ..() - spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("honey", 1+round((potency / 10), 1)) - reagents.add_reagent("kelotane", 3+round((potency / 5), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + plantname = "mtear" /obj/item/weapon/reagent_containers/food/snacks/grown/mtear/attack_self(mob/user as mob) if(istype(user.loc,/turf/space)) @@ -313,19 +175,13 @@ user << "You mash the leaves into a poultice." /obj/item/weapon/reagent_containers/food/snacks/grown/glowberries - seed = "/obj/item/seeds/glowberryseed" name = "bunch of glow-berries" desc = "Nutritious!" var/light_on = 1 var/brightness_on = 2 //luminosity when on filling_color = "#D3FF9E" icon_state = "glowberrypile" - New() - ..() - spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", round((potency / 10), 1)) - reagents.add_reagent("uranium", 3+round(potency / 5, 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + plantname = "glowberries" /obj/item/weapon/reagent_containers/food/snacks/grown/glowberries/Del() if(istype(loc,/mob)) @@ -341,146 +197,80 @@ src.SetLuminosity(round(potency/5,1)) /obj/item/weapon/reagent_containers/food/snacks/grown/cocoapod - seed = "/obj/item/seeds/cocoapodseed" name = "cocoa pod" - desc = "Fattening... Mmmmm... chucklate." + desc = "Can be ground into cocoa powder." icon_state = "cocoapod" potency = 50 filling_color = "#9C8E54" - New() - ..() - spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1+round((potency / 10), 1)) - reagents.add_reagent("coco", 4+round((potency / 5), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + plantname = "cocoa" /obj/item/weapon/reagent_containers/food/snacks/grown/sugarcane - seed = "/obj/item/seeds/sugarcaneseed" name = "sugarcane" desc = "Sickly sweet." icon_state = "sugarcane" potency = 50 filling_color = "#C0C9AD" - New() - ..() - spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("sugar", 4+round((potency / 5), 1)) + plantname = "sugarcane" /obj/item/weapon/reagent_containers/food/snacks/grown/poisonberries - seed = "/obj/item/seeds/poisonberryseed" name = "bunch of poison-berries" desc = "Taste so good, you could die!" icon_state = "poisonberrypile" gender = PLURAL potency = 15 filling_color = "#B422C7" - New() - ..() - spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1) - reagents.add_reagent("toxin", 3+round(potency / 5, 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + plantname = "poisonberries" /obj/item/weapon/reagent_containers/food/snacks/grown/deathberries - seed = "/obj/item/seeds/deathberryseed" name = "bunch of death-berries" desc = "Taste so good, you could die!" icon_state = "deathberrypile" gender = PLURAL potency = 50 filling_color = "#4E0957" - New() - ..() - spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1) - reagents.add_reagent("toxin", 3+round(potency / 3, 1)) - reagents.add_reagent("lexorin", 1+round(potency / 5, 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + plantname = "deathberries" /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiavulgaris - seed = "/obj/item/seeds/ambrosiavulgaris" name = "ambrosia vulgaris branch" desc = "This is a plant containing various healing chemicals." icon_state = "ambrosiavulgaris" potency = 10 filling_color = "#125709" - New() - ..() - spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1) - reagents.add_reagent("space_drugs", 1+round(potency / 8, 1)) - reagents.add_reagent("kelotane", 1+round(potency / 8, 1)) - reagents.add_reagent("bicaridine", 1+round(potency / 10, 1)) - reagents.add_reagent("toxin", 1+round(potency / 10, 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + plantname = "ambrosia" /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiadeus - seed = "/obj/item/seeds/ambrosiadeus" name = "ambrosia deus branch" desc = "Eating this makes you feel immortal!" icon_state = "ambrosiadeus" potency = 10 filling_color = "#229E11" - New() - ..() - spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1) - reagents.add_reagent("bicaridine", 1+round(potency / 8, 1)) - reagents.add_reagent("synaptizine", 1+round(potency / 8, 1)) - reagents.add_reagent("hyperzine", 1+round(potency / 10, 1)) - reagents.add_reagent("space_drugs", 1+round(potency / 10, 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + plantname = "ambrosiadeus" /obj/item/weapon/reagent_containers/food/snacks/grown/apple - seed = "/obj/item/seeds/appleseed" name = "apple" desc = "It's a little piece of Eden." icon_state = "apple" potency = 15 filling_color = "#DFE88B" - New() - ..() - spawn(5) //So potency can be set in the proc that creates these crops - reagents.maximum_volume = 20 - reagents.add_reagent("nutriment", 1+round((potency / 10), 1)) - bitesize = reagents.maximum_volume // Always eat the apple in one + plantname = "apple" /obj/item/weapon/reagent_containers/food/snacks/grown/apple/poisoned - seed = "/obj/item/seeds/poisonedappleseed" name = "apple" desc = "It's a little piece of Eden." icon_state = "apple" potency = 15 filling_color = "#B3BD5E" - New() - ..() - spawn(5) //So potency can be set in the proc that creates these crops - reagents.maximum_volume = 20 - reagents.add_reagent("cyanide", 1+round((potency / 5), 1)) - bitesize = reagents.maximum_volume // Always eat the apple in one + plantname = "poisonapple" /obj/item/weapon/reagent_containers/food/snacks/grown/goldapple - seed = "/obj/item/seeds/goldappleseed" name = "golden apple" desc = "Emblazoned upon the apple is the word 'Kallisti'." icon_state = "goldapple" potency = 15 filling_color = "#F5CB42" - New() - ..() - spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1+round((potency / 10), 1)) - reagents.add_reagent("gold", 1+round((potency / 5), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) - -/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/libertycap/attackby(var/obj/item/O as obj, var/mob/user as mob) - . = ..() - if (istype(O, /obj/item/device/analyzer/plant_analyzer)) - user << "- Mineral Content: [reagents.get_reagent_amount("gold")]%" - + plantname = "goldapple" /obj/item/weapon/reagent_containers/food/snacks/grown/watermelon - seed = "/obj/item/seeds/watermelonseed" name = "watermelon" desc = "It's full of watery goodness." icon_state = "watermelon" @@ -488,25 +278,15 @@ filling_color = "#FA2863" slice_path = /obj/item/weapon/reagent_containers/food/snacks/watermelonslice slices_num = 5 - New() - ..() - spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1+round((potency / 6), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + plantname = "watermelon" /obj/item/weapon/reagent_containers/food/snacks/grown/pumpkin - seed = "/obj/item/seeds/pumpkinseed" name = "pumpkin" desc = "It's large and scary." icon_state = "pumpkin" potency = 10 filling_color = "#FAB728" - New() - ..() - spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1+round((potency / 6), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) - + plantname = "pumpkin" /obj/item/weapon/reagent_containers/food/snacks/grown/pumpkin/attackby(obj/item/weapon/W as obj, mob/user as mob) ..() @@ -517,60 +297,38 @@ return /obj/item/weapon/reagent_containers/food/snacks/grown/lime - seed = "/obj/item/seeds/limeseed" name = "lime" desc = "It's so sour, your face will twist." icon_state = "lime" potency = 20 filling_color = "#28FA59" - New() - ..() - spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1+round((potency / 20), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + plantname = "lime" /obj/item/weapon/reagent_containers/food/snacks/grown/lemon - seed = "/obj/item/seeds/lemonseed" name = "lemon" desc = "When life gives you lemons, be grateful they aren't limes." icon_state = "lemon" potency = 20 filling_color = "#FAF328" - New() - ..() - spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1+round((potency / 20), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + plantname = "lemon" /obj/item/weapon/reagent_containers/food/snacks/grown/orange - seed = "/obj/item/seeds/orangeseed" name = "orange" desc = "It's an tangy fruit." icon_state = "orange" potency = 20 filling_color = "#FAAD28" - New() - ..() - spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1+round((potency / 20), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + plantname = "orange" /obj/item/weapon/reagent_containers/food/snacks/grown/whitebeet - seed = "/obj/item/seeds/whitebeetseed" name = "white-beet" desc = "You can't beat white-beet." icon_state = "whitebeet" potency = 15 filling_color = "#FFFCCC" - New() - ..() - spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", round((potency / 20), 1)) - reagents.add_reagent("sugar", 1+round((potency / 5), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + plantname = "whitebeet" /obj/item/weapon/reagent_containers/food/snacks/grown/banana - seed = "/obj/item/seeds/bananaseed" name = "banana" desc = "It's an excellent prop for a comedy." icon = 'icons/obj/items.dmi' @@ -578,99 +336,53 @@ item_state = "banana" filling_color = "#FCF695" trash = /obj/item/weapon/bananapeel - - New() - ..() - spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("banana", 1+round((potency / 10), 1)) - bitesize = 5 - src.pixel_x = rand(-5.0, 5) - src.pixel_y = rand(-5.0, 5) + plantname = "banana" /obj/item/weapon/reagent_containers/food/snacks/grown/chili - seed = "/obj/item/seeds/chiliseed" name = "chili" desc = "It's spicy! Wait... IT'S BURNING ME!!" icon_state = "chilipepper" filling_color = "#FF0000" - New() - ..() - spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1+round((potency / 25), 1)) - reagents.add_reagent("capsaicin", 3+round(potency / 5, 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) - -/obj/item/weapon/reagent_containers/food/snacks/grown/chili/attackby(var/obj/item/O as obj, var/mob/user as mob) - . = ..() - if (istype(O, /obj/item/device/analyzer/plant_analyzer)) - user << "- Capsaicin: [reagents.get_reagent_amount("capsaicin")]%" + plantname = "chili" /obj/item/weapon/reagent_containers/food/snacks/grown/eggplant - seed = "/obj/item/seeds/eggplantseed" name = "eggplant" desc = "Maybe there's a chicken inside?" icon_state = "eggplant" filling_color = "#550F5C" - New() - ..() - spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1+round((potency / 10), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + plantname = "eggplant" /obj/item/weapon/reagent_containers/food/snacks/grown/soybeans - seed = "/obj/item/seeds/soyaseed" name = "soybeans" desc = "It's pretty bland, but oh the possibilities..." gender = PLURAL filling_color = "#E6E8B7" icon_state = "soybeans" - New() - ..() - spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1+round((potency / 20), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + plantname = "soybean" /obj/item/weapon/reagent_containers/food/snacks/grown/tomato - seed = "/obj/item/seeds/tomatoseed" name = "tomato" desc = "I say to-mah-to, you say tom-mae-to." icon_state = "tomato" filling_color = "#FF0000" potency = 10 - New() - ..() - spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1+round((potency / 10), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + plantname = "tomato" - throw_impact(atom/hit_atom) - ..() - new/obj/effect/decal/cleanable/tomato_smudge(src.loc) - src.visible_message("The [src.name] has been squashed.","You hear a smack.") - del(src) - return +/obj/item/weapon/reagent_containers/food/snacks/grown/tomato/throw_impact(atom/hit_atom) + ..() + new/obj/effect/decal/cleanable/tomato_smudge(src.loc) + src.visible_message("The [src.name] has been squashed.","You hear a smack.") + del(src) + return /obj/item/weapon/reagent_containers/food/snacks/grown/killertomato - seed = "/obj/item/seeds/killertomatoseed" name = "killer-tomato" desc = "I say to-mah-to, you say tom-mae-to... OH GOD IT'S EATING MY LEGS!!" icon_state = "killertomato" potency = 10 filling_color = "#FF0000" - New() - ..() - spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1+round((potency / 10), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) - if(istype(src.loc,/mob)) - pickup(src.loc) - lifespan = 120 - endurance = 30 - maturation = 15 - production = 1 - yield = 3 potency = 30 - plant_type = 2 + plantname = "killertomato" /obj/item/weapon/reagent_containers/food/snacks/grown/killertomato/attack_self(mob/user as mob) if(istype(user.loc,/turf/space)) @@ -681,52 +393,40 @@ user << "You plant the killer-tomato." /obj/item/weapon/reagent_containers/food/snacks/grown/bloodtomato - seed = "/obj/item/seeds/bloodtomatoseed" name = "blood-tomato" desc = "So bloody...so...very...bloody....AHHHH!!!!" icon_state = "bloodtomato" potency = 10 filling_color = "#FF0000" - New() - ..() - spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1+round((potency / 10), 1)) - reagents.add_reagent("blood", 1+round((potency / 5), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + plantname = "bloodtomato" - throw_impact(atom/hit_atom) - ..() - new/obj/effect/decal/cleanable/blood/splatter(src.loc) - src.visible_message("The [src.name] has been squashed.","You hear a smack.") - src.reagents.reaction(get_turf(hit_atom)) - for(var/atom/A in get_turf(hit_atom)) - src.reagents.reaction(A) - del(src) - return +/obj/item/weapon/reagent_containers/food/snacks/grown/bloodtomato/throw_impact(atom/hit_atom) + ..() + new/obj/effect/decal/cleanable/blood/splatter(src.loc) + src.visible_message("The [src.name] has been squashed.","You hear a smack.") + src.reagents.reaction(get_turf(hit_atom)) + for(var/atom/A in get_turf(hit_atom)) + src.reagents.reaction(A) + del(src) + return /obj/item/weapon/reagent_containers/food/snacks/grown/bluetomato - seed = "/obj/item/seeds/bluetomatoseed" name = "blue-tomato" desc = "I say blue-mah-to, you say blue-mae-to." icon_state = "bluetomato" potency = 10 filling_color = "#586CFC" - New() - ..() - spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1+round((potency / 20), 1)) - reagents.add_reagent("lube", 1+round((potency / 5), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + plantname = "bluetomato" - throw_impact(atom/hit_atom) - ..() - new/obj/effect/decal/cleanable/blood/oil(src.loc) - src.visible_message("The [src.name] has been squashed.","You hear a smack.") - src.reagents.reaction(get_turf(hit_atom)) - for(var/atom/A in get_turf(hit_atom)) - src.reagents.reaction(A) - del(src) - return +/obj/item/weapon/reagent_containers/food/snacks/grown/bluetomato/throw_impact(atom/hit_atom) + ..() + new/obj/effect/decal/cleanable/blood/oil(src.loc) + src.visible_message("The [src.name] has been squashed.","You hear a smack.") + src.reagents.reaction(get_turf(hit_atom)) + for(var/atom/A in get_turf(hit_atom)) + src.reagents.reaction(A) + del(src) + return /obj/item/weapon/reagent_containers/food/snacks/grown/bluetomato/HasEntered(AM as mob|obj) if (istype(AM, /mob/living/carbon)) @@ -741,191 +441,90 @@ M.Weaken(5) /obj/item/weapon/reagent_containers/food/snacks/grown/wheat - seed = "/obj/item/seeds/wheatseed" name = "wheat" desc = "Sigh... wheat... a-grain?" gender = PLURAL icon_state = "wheat" filling_color = "#F7E186" - New() - ..() - spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1+round((potency / 25), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + plantname = "wheat" /obj/item/weapon/reagent_containers/food/snacks/grown/ricestalk - seed = "/obj/item/seeds/riceseed" name = "rice stalk" desc = "Rice to see you." gender = PLURAL icon_state = "rice" filling_color = "#FFF8DB" - New() - ..() - spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1+round((potency / 25), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + plantname = "rice" /obj/item/weapon/reagent_containers/food/snacks/grown/kudzupod - seed = "/obj/item/seeds/kudzuseed" name = "kudzu pod" desc = "Pueraria Virallis: An invasive species with vines that rapidly creep and wrap around whatever they contact." icon_state = "kudzupod" filling_color = "#59691B" - New() - ..() - spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment",1+round((potency / 50), 1)) - reagents.add_reagent("anti_toxin",1+round((potency / 25), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + plantname = "kudzu" /obj/item/weapon/reagent_containers/food/snacks/grown/icepepper - seed = "/obj/item/seeds/icepepperseed" name = "ice-pepper" desc = "It's a mutant strain of chili" icon_state = "icepepper" potency = 20 filling_color = "#66CEED" - New() - ..() - spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1+round((potency / 50), 1)) - reagents.add_reagent("frostoil", 3+round(potency / 5, 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) - -/obj/item/weapon/reagent_containers/food/snacks/grown/icepepper/attackby(var/obj/item/O as obj, var/mob/user as mob) - . = ..() - if (istype(O, /obj/item/device/analyzer/plant_analyzer)) - user << "- Frostoil: [reagents.get_reagent_amount("frostoil")]%" + plantname = "icechili" /obj/item/weapon/reagent_containers/food/snacks/grown/carrot - seed = "/obj/item/seeds/carrotseed" name = "carrot" desc = "It's good for the eyes!" icon_state = "carrot" potency = 10 filling_color = "#FFC400" - New() - ..() - spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1+round((potency / 20), 1)) - reagents.add_reagent("imidazoline", 3+round(potency / 5, 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + plantname = "carrot" /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/reishi - seed = "/obj/item/seeds/reishimycelium" name = "reishi" desc = "Ganoderma lucidum: A special fungus believed to help relieve stress." icon_state = "reishi" potency = 10 filling_color = "#FF4800" - New() - ..() - spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1) - reagents.add_reagent("stoxin", 3+round(potency / 3, 1)) - reagents.add_reagent("space_drugs", 1+round(potency / 25, 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) - -/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/reishi/attackby(var/obj/item/O as obj, var/mob/user as mob) - . = ..() - if (istype(O, /obj/item/device/analyzer/plant_analyzer)) - user << "- Sleep Toxin: [reagents.get_reagent_amount("stoxin")]%" - user << "- Space Drugs: [reagents.get_reagent_amount("space_drugs")]%" + plantname = "reishi" /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/amanita - seed = "/obj/item/seeds/amanitamycelium" name = "fly amanita" desc = "Amanita Muscaria: Learn poisonous mushrooms by heart. Only pick mushrooms you know." icon_state = "amanita" potency = 10 filling_color = "#FF0000" - New() - ..() - spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1) - reagents.add_reagent("amatoxin", 3+round(potency / 3, 1)) - reagents.add_reagent("psilocybin", 1+round(potency / 25, 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) - -/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/amanita/attackby(var/obj/item/O as obj, var/mob/user as mob) - . = ..() - if (istype(O, /obj/item/device/analyzer/plant_analyzer)) - user << "- Amatoxins: [reagents.get_reagent_amount("amatoxin")]%" - user << "- Psilocybin: [reagents.get_reagent_amount("psilocybin")]%" + plantname = "amanita" /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/angel - seed = "/obj/item/seeds/angelmycelium" name = "destroying angel" desc = "Amanita Virosa: Deadly poisonous basidiomycete fungus filled with alpha amatoxins." icon_state = "angel" potency = 35 filling_color = "#FFDEDE" - New() - ..() - spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1+round((potency / 50), 1)) - reagents.add_reagent("amatoxin", 13+round(potency / 3, 1)) - reagents.add_reagent("psilocybin", 1+round(potency / 25, 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) - -/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/angel/attackby(var/obj/item/O as obj, var/mob/user as mob) - . = ..() - if (istype(O, /obj/item/device/analyzer/plant_analyzer)) - user << "- Amatoxins: [reagents.get_reagent_amount("amatoxin")]%" - user << "- Psilocybin: [reagents.get_reagent_amount("psilocybin")]%" + plantname = "destroyingangel" /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/libertycap - seed = "/obj/item/seeds/libertymycelium" name = "liberty-cap" desc = "Psilocybe Semilanceata: Liberate yourself!" icon_state = "libertycap" potency = 15 filling_color = "#F714BE" - New() - ..() - spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1+round((potency / 50), 1)) - reagents.add_reagent("psilocybin", 3+round(potency / 5, 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) - -/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/libertycap/attackby(var/obj/item/O as obj, var/mob/user as mob) - . = ..() - if (istype(O, /obj/item/device/analyzer/plant_analyzer)) - user << "- Psilocybin: [reagents.get_reagent_amount("psilocybin")]%" + plantname = "libertycap" /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/plumphelmet - seed = "/obj/item/seeds/plumpmycelium" name = "plump-helmet" desc = "Plumus Hellmus: Plump, soft and s-so inviting~" icon_state = "plumphelmet" filling_color = "#F714BE" - New() - ..() - spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 2+round((potency / 10), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + plantname = "plumphelmet" /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/walkingmushroom - seed = "/obj/item/seeds/walkingmushroom" name = "walking mushroom" desc = "Plumus Locomotus: The beginning of the great walk." icon_state = "walkingmushroom" filling_color = "#FFBFEF" - New() - ..() - spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 2+round((potency / 10), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) - if(istype(src.loc,/mob)) - pickup(src.loc) - lifespan = 120 - endurance = 30 - maturation = 15 - production = 1 - yield = 3 potency = 30 - plant_type = 2 + plantname = "walkingmushroom" /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/walkingmushroom/attack_self(mob/user as mob) if(istype(user.loc,/turf/space)) @@ -936,47 +535,27 @@ user << "You plant the walking mushroom." /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/chanterelle - seed = "/obj/item/seeds/chantermycelium" name = "chanterelle cluster" desc = "Cantharellus Cibarius: These jolly yellow little shrooms sure look tasty!" icon_state = "chanterelle" filling_color = "#FFE991" - New() - ..() - spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment",1+round((potency / 25), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + plantname = "mushrooms" /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/glowshroom - seed = "/obj/item/seeds/glowshroom" name = "glowshroom cluster" desc = "Mycena Bregprox: This species of mushroom glows in the dark. Or does it?" icon_state = "glowshroom" filling_color = "#DAFF91" - New() - ..() - spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("radium",1+round((potency / 20), 1)) - if(istype(src.loc,/mob)) - pickup(src.loc) - else - src.SetLuminosity(round(potency/10,1)) - lifespan = 120 //ten times that is the delay - endurance = 30 - maturation = 15 - production = 1 - yield = 3 potency = 30 - plant_type = 2 + plantname = "glowshroom" /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/glowshroom/attack_self(mob/user as mob) if(istype(user.loc,/turf/space)) return var/obj/effect/glowshroom/planted = new /obj/effect/glowshroom(user.loc) - planted.delay = lifespan * 50 - planted.endurance = endurance - planted.yield = yield + planted.delay = 50 + planted.endurance = 100 planted.potency = potency del(src) @@ -1001,109 +580,61 @@ // Putting these at the bottom so they don't clutter the list up. -Cheridan // ************************************* -/* -//This object is just a transition object. All it does is make a grass tile and delete itself. -/obj/item/weapon/reagent_containers/food/snacks/grown/grass - seed = "/obj/item/seeds/grassseed" - name = "grass" - desc = "Green and lush." - icon_state = "spawner" - potency = 20 - New() - new/obj/item/stack/tile/grass(src.loc) - spawn(5) //Workaround to keep harvesting from working weirdly. - del(src) -*/ - -//This object is just a transition object. All it does is make dosh and delete itself. -Cheridan -/obj/item/weapon/reagent_containers/food/snacks/grown/money - seed = "/obj/item/seeds/cashseed" - name = "dosh" - desc = "Green and lush." - icon_state = "spawner" - potency = 10 - New() - switch(rand(1,100))//(potency) //It wants to use the default potency instead of the new, so it was always 10. Will try to come back to this later - Cheridan - if(0 to 10) - new/obj/item/weapon/spacecash/(src.loc) - if(11 to 20) - new/obj/item/weapon/spacecash/c10(src.loc) - if(21 to 30) - new/obj/item/weapon/spacecash/c20(src.loc) - if(31 to 40) - new/obj/item/weapon/spacecash/c50(src.loc) - if(41 to 50) - new/obj/item/weapon/spacecash/c100(src.loc) - if(51 to 60) - new/obj/item/weapon/spacecash/c200(src.loc) - if(61 to 80) - new/obj/item/weapon/spacecash/c500(src.loc) - else - new/obj/item/weapon/spacecash/c1000(src.loc) - spawn(5) //Workaround to keep harvesting from working weirdly. - del(src) - /obj/item/weapon/reagent_containers/food/snacks/grown/bluespacetomato - seed = "/obj/item/seeds/bluespacetomatoseed" name = "blue-space tomato" desc = "So lubricated, you might slip through space-time." icon_state = "bluespacetomato" potency = 20 origin_tech = "bluespace=3" filling_color = "#91F8FF" - New() - ..() - spawn(5) //So potency can be set in the proc that creates these crops - reagents.add_reagent("nutriment", 1+round((potency / 20), 1)) - reagents.add_reagent("singulo", 1+round((potency / 5), 1)) - bitesize = 1+round(reagents.total_volume / 2, 1) + plantname = "bluespacetomato" - throw_impact(atom/hit_atom) - ..() - var/mob/M = usr - var/outer_teleport_radius = potency/10 //Plant potency determines radius of teleport. - var/inner_teleport_radius = potency/15 - var/list/turfs = new/list() - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread - if(inner_teleport_radius < 1) //Wasn't potent enough, it just splats. - new/obj/effect/decal/cleanable/blood/oil(src.loc) - src.visible_message("The [src.name] has been squashed.","You hear a smack.") - del(src) - return - for(var/turf/T in orange(M,outer_teleport_radius)) - if(T in orange(M,inner_teleport_radius)) continue - if(istype(T,/turf/space)) continue - if(T.density) continue - if(T.x>world.maxx-outer_teleport_radius || T.xworld.maxy-outer_teleport_radius || T.yThe [src.name] has been squashed, causing a distortion in space-time.","You hear a splat and a crackle.") + src.visible_message("The [src.name] has been squashed.","You hear a smack.") del(src) return + for(var/turf/T in orange(M,outer_teleport_radius)) + if(T in orange(M,inner_teleport_radius)) continue + if(istype(T,/turf/space)) continue + if(T.density) continue + if(T.x>world.maxx-outer_teleport_radius || T.xworld.maxy-outer_teleport_radius || T.yThe [src.name] has been squashed, causing a distortion in space-time.","You hear a splat and a crackle.") + del(src) + return \ No newline at end of file diff --git a/code/modules/research/xenoarchaeology/genetics/prehistoric_plants.dm b/code/modules/research/xenoarchaeology/genetics/prehistoric_plants.dm index 8496869c853..d9212ac5b01 100644 --- a/code/modules/research/xenoarchaeology/genetics/prehistoric_plants.dm +++ b/code/modules/research/xenoarchaeology/genetics/prehistoric_plants.dm @@ -1,21 +1,3 @@ - -/obj/item/seeds/telriis - name = "pack of telriis seeds" - desc = "These seeds grow into telriis grass. Not recommended for consumption by sentient species." - icon_state = "seed-alien1" - mypath = "/obj/item/seeds/telriis" - species = "telriis" - plantname = "Telriis grass" - productname = "/obj/item/weapon/telriis_clump" - lifespan = 50 //number of ticks - endurance = 50 // - maturation = 5 //ticks to full growth stage - production = 5 //ticks till ready to harvest - yield = 4 //number produced when harvest - potency = 5 - plant_type = 1 //1=weed, 2=shroom, 0=normal - growthstages = 4 - /obj/item/weapon/reagent_containers/food/snacks/grown/telriis_clump name = "telriis grass" desc = "A clump of telriis grass, not recommended for consumption by sentients." @@ -27,24 +9,6 @@ reagents.add_reagent("nutriment", potency) bitesize = 1+round(reagents.total_volume / 2, 1) - -/obj/item/seeds/thaadra - name = "pack of thaa'dra seeds" - desc = "These seeds grow into Thaa'dra lichen. Likes the cold." - icon_state = "seed-alien3" - mypath = "/obj/item/seeds/thaadra" - species = "thaadra" - plantname = "Thaa'dra lichen" - productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/thaadra" - lifespan = 20 - endurance = 10 - maturation = 5 - production = 9 - yield = 2 - potency = 5 - plant_type = 2 - growthstages = 4 - /obj/item/weapon/reagent_containers/food/snacks/grown/thaadrabloom name = "thaa'dra bloom" desc = "Looks chewy, might be good to eat." @@ -56,23 +20,6 @@ reagents.add_reagent("nutriment", potency) bitesize = 1+round(reagents.total_volume / 2, 1) - -/obj/item/seeds/jurlmah - name = "pack of jurl'mah seeds" - desc = "These seeds grow into jurl'mah reeds, which produce large syrupy pods." - icon_state = "seed-alien3" - mypath = "/obj/item/seeds/jurlmah" - species = "jurlmah" - plantname = "jurl'mah reeds" - productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/jurlmah" - lifespan = 20 - endurance = 12 - maturation = 8 - production = 9 - yield = 3 - potency = 10 - growthstages = 5 - /obj/item/weapon/reagent_containers/food/snacks/grown/jurlmah name = "jurl'mah pod" desc = "Bulbous and veiny, it appears to pulse slightly as you look at it." @@ -84,23 +31,6 @@ reagents.add_reagent("nutriment", potency) bitesize = 1+round(reagents.total_volume / 2, 1) - -/obj/item/seeds/amauri - name = "pack of amauri seeds" - desc = "Grows into a straight, dark plant with small round fruit." - icon_state = "seed-alien3" - mypath = "/obj/item/seeds/amauri" - species = "amauri" - plantname = "amauri plant" - productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/amauri" - lifespan = 30 - endurance = 10 - maturation = 8 - production = 9 - yield = 4 - potency = 10 - growthstages = 3 - /obj/item/weapon/reagent_containers/food/snacks/grown/amauri name = "amauri fruit" desc = "It is small, round and hard. Its skin is a thick dark purple." @@ -113,23 +43,6 @@ reagents.add_reagent("nutriment", potency) bitesize = 1+round(reagents.total_volume / 2, 1) - -/obj/item/seeds/gelthi - name = "pack of gelthi seeds" - desc = "Grows into a bright, wavy plant with many small fruits." - icon_state = "seed-alien2" - mypath = "/obj/item/seeds/gelthi" - species = "gelthi" - plantname = "gelthi plant" - productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/gelthi" - lifespan = 20 - endurance = 15 - maturation = 6 - production = 6 - yield = 2 - potency = 1 - growthstages = 3 - /obj/item/weapon/reagent_containers/food/snacks/grown/gelthi name = "gelthi berries" desc = "They feel fluffy and slightly warm to the touch." @@ -143,23 +56,6 @@ reagents.add_reagent("nutriment", potency) bitesize = 1+round(reagents.total_volume / 2, 1) - -/obj/item/seeds/vale - name = "pack of vale seeds" - desc = "The vale bush is often depicted in ancient heiroglyphs and is similar to cherry blossoms." - icon_state = "seed-alien2" - mypath = "/obj/item/seeds/vale" - species = "vale" - plantname = "vale bush" - productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/vale" - lifespan = 25 - endurance = 15 - maturation = 8 - production = 10 - yield = 3 - potency = 3 - growthstages = 4 - /obj/item/weapon/reagent_containers/food/snacks/grown/vale name = "vale leaves" desc = "Small, curly leaves covered in a soft pale fur." @@ -172,23 +68,6 @@ reagents.add_reagent("nutriment", potency) bitesize = 1+round(reagents.total_volume / 2, 1) - -/obj/item/seeds/surik - name = "pack of surik seeds" - desc = "A spiky blue vine with large fruit resembling pig ears." - icon_state = "seed-alien3" - mypath = "/obj/item/seeds/surik" - species = "surik" - plantname = "surik vine" - productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/surik" - lifespan = 30 - endurance = 18 - maturation = 7 - production = 7 - yield = 3 - potency = 3 - growthstages = 4 - /obj/item/weapon/reagent_containers/food/snacks/grown/surik name = "surik fruit" desc = "Multiple layers of blue skin peeling away to reveal a spongey core, vaguely resembling an ear." @@ -199,4 +78,4 @@ reagents.add_reagent("impedrezene", potency * 3) reagents.add_reagent("synaptizine", potency * 2) reagents.add_reagent("nutriment", potency) - bitesize = 1+round(reagents.total_volume / 2, 1) + bitesize = 1+round(reagents.total_volume / 2, 1) \ No newline at end of file diff --git a/icons/obj/hydroponics.dmi b/icons/obj/hydroponics.dmi index 5459ad4cb24f226c639b5766613e36bc04cc2d42..700031943dcf5908d7ccbe45a14110b95c1f8a1c 100644 GIT binary patch literal 162570 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

v8-x+O(q1F1nr!r5%1Sp3x}> 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

tQM^Qbx>DLdkx)v$jFZE`cua| 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%0AyKXyd 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" - if(source && ckey && podman.ckey == ckey) - podman << "Memories of a life as [source] drift oddly through a mind unsuited for them, like a skin of oil over a fathomless lake." - podman << "You are now one of the Dionaea, a race of drifting interstellar plantlike creatures that sometimes share their seeds with human traders." - podman << "Too much darkness will send you into shock and starve you, but light will help you heal." - if(!realName) - var/newname = input(podman,"Enter a name, or leave blank for the default name.", "Name change","") as text - if (newname != "") - podman.real_name = newname - - parent.visible_message("\blue The pod disgorges a fully-formed plant creature!") - parent.update_tray() From 69b397b5c441f3b034c269b66a3336d75cc064bc Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Sat, 26 Jul 2014 01:42:05 +0930 Subject: [PATCH 5/5] Compile fix. --- baystation12.dme | 1 - code/modules/hydroponics/hydro_tray.dm | 7 ++++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/baystation12.dme b/baystation12.dme index 3514834745b..cbe094ac93d 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -1271,7 +1271,6 @@ #include "code\modules\research\xenoarchaeology\finds\finds_talkingitem.dm" #include "code\modules\research\xenoarchaeology\genetics\prehistoric_animals.dm" #include "code\modules\research\xenoarchaeology\genetics\prehistoric_plants.dm" -#include "code\modules\research\xenoarchaeology\genetics\prehistoric_seeds.dm" #include "code\modules\research\xenoarchaeology\genetics\reconstitutor.dm" #include "code\modules\research\xenoarchaeology\machinery\artifact_analyser.dm" #include "code\modules\research\xenoarchaeology\machinery\artifact_harvester.dm" diff --git a/code/modules/hydroponics/hydro_tray.dm b/code/modules/hydroponics/hydro_tray.dm index c7a778dd5a2..70e1f8aa44d 100644 --- a/code/modules/hydroponics/hydro_tray.dm +++ b/code/modules/hydroponics/hydro_tray.dm @@ -191,10 +191,11 @@ var/turf/T = loc var/datum/gas_mixture/environment + //TODO: Fix this. Dev atmos changes impacted it most likely. // If we're a closed system, take from any connected network. - if(closed_system && atmos_source) - if(atmos_source.network) - environment = atmos_source.network.air_transient + //if(closed_system && atmos_source) + // if(atmos_source.network) + // environment = atmos_source.network.air_transient // If atmos input is not there, grab from turf. if(!environment)