diff --git a/code/game/objects/items/weapons/swords_axes_etc.dm b/code/game/objects/items/weapons/swords_axes_etc.dm
index 11ff6700c1e..8a9eda9d76a 100644
--- a/code/game/objects/items/weapons/swords_axes_etc.dm
+++ b/code/game/objects/items/weapons/swords_axes_etc.dm
@@ -52,6 +52,14 @@
add_fingerprint(user)
return
+/obj/item/weapon/melee/energy/sword/attackby(obj/item/weapon/W as obj, mob/user as mob)
+ ..()
+ if(istype(W, /obj/item/weapon/melee/energy/sword))
+ user << "\blue You attach the ends of the two energy swords, making a single double-bladed weapon! You're cool."
+ new /obj/item/weapon/twohanded/dualsaber(user.loc)
+ del(W)
+ del(src)
+
/*
* Classic Baton
*/
diff --git a/code/game/objects/items/weapons/twohanded.dm b/code/game/objects/items/weapons/twohanded.dm
index 4e3d77bedbb..68e877559da 100644
--- a/code/game/objects/items/weapons/twohanded.dm
+++ b/code/game/objects/items/weapons/twohanded.dm
@@ -156,6 +156,7 @@
/obj/item/weapon/twohanded/dualsaber/update_icon()
icon_state = "dualsaber[wielded]"
+ clean_blood()//blood overlays get weird otherwise, because the sprite changes.
return
/obj/item/weapon/twohanded/dualsaber/attack(target as mob, mob/living/user as mob)
diff --git a/code/modules/reagents/reagent_containers/food/snacks/grown.dm b/code/modules/hydroponics/grown.dm
similarity index 88%
rename from code/modules/reagents/reagent_containers/food/snacks/grown.dm
rename to code/modules/hydroponics/grown.dm
index 19257de6fd2..ea41dc1d0bf 100644
--- a/code/modules/reagents/reagent_containers/food/snacks/grown.dm
+++ b/code/modules/hydroponics/grown.dm
@@ -603,15 +603,15 @@
reagents.add_reagent("blood", 1+round((potency / 5), 1))
bitesize = 1+round(reagents.total_volume / 2, 1)
- 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"
@@ -626,15 +626,15 @@
reagents.add_reagent("lube", 1+round((potency / 5), 1))
bitesize = 1+round(reagents.total_volume / 2, 1)
- throw_impact(atom/hit_atom)
- ..()
- new/obj/effect/decal/cleanable/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/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))
@@ -894,12 +894,6 @@
user.SetLuminosity(round(user.luminosity + (potency/10),1))
SetLuminosity(round(potency/10,1))
-
-// *************************************
-// Complex Grown Object Defines -
-// 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 dosh and delete itself. -Cheridan
/obj/item/weapon/reagent_containers/food/snacks/grown/money
seed = "/obj/item/seeds/cashseed"
@@ -940,54 +934,4 @@
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)
-
- 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/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.")
- del(src)
- return
\ No newline at end of file
+ bitesize = 1+round(reagents.total_volume / 2, 1)
\ No newline at end of file
diff --git a/code/modules/hydroponics/growninedible.dm b/code/modules/hydroponics/growninedible.dm
new file mode 100644
index 00000000000..c3b50ed5142
--- /dev/null
+++ b/code/modules/hydroponics/growninedible.dm
@@ -0,0 +1,138 @@
+// **********************
+// Other harvested materials from plants (that are not food)
+// **********************
+
+/obj/item/weapon/grown // Grown weapons
+ name = "grown_weapon"
+ icon = 'icons/obj/weapons.dmi'
+ var/seed = ""
+ var/plantname = ""
+ var/product //a type path
+ var/species = ""
+ var/lifespan = 20
+ var/endurance = 15
+ var/maturation = 7
+ var/production = 7
+ var/yield = 2
+ 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/proc/changePotency(newValue) //-QualityVan
+ potency = newValue
+
+/obj/item/weapon/grown/log
+ name = "tower-cap log"
+ desc = "It's better than bad, it's good!"
+ icon = 'icons/obj/harvest.dmi'
+ icon_state = "logs"
+ force = 5
+ flags = TABLEPASS
+ throwforce = 5
+ 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")
+
+/obj/item/weapon/grown/log/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/twohanded/fireaxe) && W:wielded) || istype(W, /obj/item/weapon/melee/energy))
+ user.show_message("You make planks out of the [src]!", 1)
+ for(var/i=0,i<2,i++)
+ var/obj/item/stack/sheet/wood/NG = new (user.loc)
+ for (var/obj/item/stack/sheet/wood/G in user.loc)
+ if(G==NG)
+ continue
+ if(G.amount>=G.max_amount)
+ continue
+ G.attackby(NG, user)
+ usr << "You add the newly-formed wood to the stack. It now contains [NG.amount] planks."
+ del(src)
+ return
+
+/obj/item/weapon/grown/sunflower // FLOWER POWER!
+ name = "sunflower"
+ desc = "It's beautiful! A certain person might beat you to death if you trample these."
+ icon = 'icons/obj/harvest.dmi'
+ icon_state = "sunflower"
+ damtype = "fire"
+ force = 0
+ flags = TABLEPASS
+ throwforce = 1
+ w_class = 1.0
+ throw_speed = 1
+ throw_range = 3
+ plant_type = 0
+ seed = "/obj/item/seeds/sunflower"
+
+/obj/item/weapon/grown/novaflower
+ name = "novaflower"
+ desc = "It's beautiful! A certain person might beat you to death if you trample these."
+ icon = 'icons/obj/harvest.dmi'
+ icon_state = "novaflower"
+ damtype = "fire"
+ force = 0
+ flags = TABLEPASS
+ throwforce = 1
+ w_class = 1.0
+ throw_speed = 1
+ throw_range = 3
+ plant_type = 0
+ seed = "/obj/item/seeds/novaflower"
+ attack_verb = list("seared", "heated", "whacked", "steamed")
+
+/obj/item/weapon/grown/nettle // -- Skie
+ desc = "It's probably not wise to touch it with bare hands..."
+ icon = 'icons/obj/weapons.dmi'
+ name = "nettle"
+ icon_state = "nettle"
+ damtype = "fire"
+ force = 15
+ flags = TABLEPASS
+ throwforce = 1
+ w_class = 1.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))
+ force = round((5+potency/5), 1)
+
+/obj/item/weapon/grown/deathnettle // -- Skie
+ desc = "The \red glowing \black nettle incites \red rage\black in you just from looking at it!"
+ icon = 'icons/obj/weapons.dmi'
+ name = "deathnettle"
+ icon_state = "deathnettle"
+ damtype = "fire"
+ force = 30
+ flags = TABLEPASS
+ throwforce = 1
+ w_class = 1.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))
+ 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)
+
diff --git a/code/game/objects/items/weapons/hydroponics.dm b/code/modules/hydroponics/hydroitemcode.dm
similarity index 58%
rename from code/game/objects/items/weapons/hydroponics.dm
rename to code/modules/hydroponics/hydroitemcode.dm
index 8789a369c5a..85a3d765ab8 100644
--- a/code/game/objects/items/weapons/hydroponics.dm
+++ b/code/modules/hydroponics/hydroitemcode.dm
@@ -1,16 +1,9 @@
-/* Hydroponic stuff
+/* Hydroponic Item Procs and Stuff
* Contains:
- * Sunflowers/Novaflowers
- * Nettle
- * Deathnettle
- * Corncob
- */
-
-
-/*
- * Sun/Novaflower
+ * Sunflowers Novaflowers Nettle Deathnettle Corncob
*/
+//Sun/Novaflower
/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]"
@@ -28,9 +21,8 @@
usr << "All the petals have fallen off the [name] from violent whacking."
del(src)
-/*
- * Nettle
- */
+
+//Nettle
/obj/item/weapon/grown/nettle/pickup(mob/living/carbon/human/user as mob)
if(!user.gloves)
user << "\red The nettle burns your bare hand!"
@@ -54,10 +46,7 @@
potency = newValue
force = round((5+potency/5), 1)
-/*
- * Deathnettle
- */
-
+//Deathnettle
/obj/item/weapon/grown/deathnettle/pickup(mob/living/carbon/human/user as mob)
if(!user.gloves)
if(istype(user, /mob/living/carbon/human))
@@ -101,9 +90,7 @@
force = round((5+potency/2.5), 1)
-/*
- * Corncob
- */
+//Corncob
/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))
@@ -111,3 +98,54 @@
new /obj/item/clothing/mask/cigarette/pipe/cobpipe (user.loc)
del(src)
return
+
+//Bluespace Tomatoes
+/obj/item/weapon/reagent_containers/food/snacks/grown/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/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.")
+ del(src)
+ return
\ No newline at end of file
diff --git a/code/modules/hydroponics/hydroitemdefines.dm b/code/modules/hydroponics/hydroitemdefines.dm
new file mode 100644
index 00000000000..2638f1783d4
--- /dev/null
+++ b/code/modules/hydroponics/hydroitemdefines.dm
@@ -0,0 +1,201 @@
+// Plant analyzer
+/obj/item/device/analyzer/plant_analyzer
+ name = "plant analyzer"
+ desc = "A scanner used to evaluate a plant's various areas of growth."
+ icon = 'icons/obj/device.dmi'
+ icon_state = "hydro"
+ item_state = "analyzer"
+ origin_tech = "magnets=1;biotech=1"
+
+ attack_self(mob/user as mob)
+ return 0
+
+// *************************************
+// Pestkiller defines for hydroponics
+// *************************************
+
+/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)
+
+/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)
+
+/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)
+
+/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)
+
+// *************************************
+// Hydroponics Tools
+// *************************************
+
+/obj/item/weapon/weedspray // -- Skie
+ desc = "It's a toxic mixture, in spray form, to kill small weeds."
+ icon = 'icons/obj/hydroponics.dmi'
+ name = "weed-spray"
+ icon_state = "weedspray"
+ item_state = "spray"
+ flags = TABLEPASS | OPENCONTAINER | FPRINT | USEDELAY
+ slot_flags = SLOT_BELT
+ throwforce = 4
+ w_class = 2.0
+ throw_speed = 2
+ throw_range = 10
+ var/toxicity = 4
+ var/WeedKillStr = 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'
+ name = "pest-spray"
+ icon_state = "pestspray"
+ item_state = "spray"
+ flags = TABLEPASS | OPENCONTAINER | FPRINT | USEDELAY
+ slot_flags = SLOT_BELT
+ throwforce = 4
+ w_class = 2.0
+ throw_speed = 2
+ throw_range = 10
+ var/toxicity = 4
+ var/PestKillStr = 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/minihoe // -- Numbers
+ name = "mini hoe"
+ desc = "It's used for removing weeds or scratching your back."
+ icon = 'icons/obj/weapons.dmi'
+ icon_state = "hoe"
+ item_state = "hoe"
+ flags = FPRINT | TABLEPASS | CONDUCT | USEDELAY
+ force = 5.0
+ throwforce = 7.0
+ w_class = 2.0
+ m_amt = 50
+ attack_verb = list("slashed", "sliced", "cut", "clawed")
+
+// *************************************
+// Weedkiller defines for hydroponics
+// *************************************
+
+/obj/item/weedkiller
+ name = "bottle of weedkiller"
+ icon = 'icons/obj/chemical.dmi'
+ icon_state = "bottle16"
+ flags = FPRINT | TABLEPASS
+ var/toxicity = 0
+ var/WeedKillStr = 0
+
+/obj/item/weedkiller/glyphosate
+ name = "bottle of glyphosate"
+ icon = 'icons/obj/chemical.dmi'
+ icon_state = "bottle16"
+ flags = FPRINT | TABLEPASS
+ toxicity = 4
+ WeedKillStr = 2
+
+/obj/item/weedkiller/triclopyr
+ name = "bottle of triclopyr"
+ icon = 'icons/obj/chemical.dmi'
+ icon_state = "bottle18"
+ flags = FPRINT | TABLEPASS
+ toxicity = 6
+ WeedKillStr = 4
+
+/obj/item/weedkiller/D24
+ name = "bottle of 2,4-D"
+ icon = 'icons/obj/chemical.dmi'
+ icon_state = "bottle15"
+ flags = FPRINT | TABLEPASS
+ toxicity = 8
+ WeedKillStr = 7
+
+// *************************************
+// Nutrient defines for hydroponics
+// *************************************
+
+/obj/item/nutrient
+ name = "bottle of nutrient"
+ icon = 'icons/obj/chemical.dmi'
+ icon_state = "bottle16"
+ flags = FPRINT | TABLEPASS
+ w_class = 1.0
+ var/mutmod = 0
+ var/yieldmod = 0
+ New()
+ src.pixel_x = rand(-5.0, 5)
+ src.pixel_y = rand(-5.0, 5)
+
+/obj/item/nutrient/ez
+ name = "bottle of E-Z-Nutrient"
+ icon = 'icons/obj/chemical.dmi'
+ icon_state = "bottle16"
+ 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"
+ icon = 'icons/obj/chemical.dmi'
+ 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)
+
+
diff --git a/code/game/machinery/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm
similarity index 100%
rename from code/game/machinery/hydroponics.dm
rename to code/modules/hydroponics/hydroponics.dm
diff --git a/code/defines/obj/hydro.dm b/code/modules/hydroponics/seeds.dm
similarity index 68%
rename from code/defines/obj/hydro.dm
rename to code/modules/hydroponics/seeds.dm
index 174f3baa339..f463816e7d3 100644
--- a/code/defines/obj/hydro.dm
+++ b/code/modules/hydroponics/seeds.dm
@@ -1,16 +1,3 @@
-// Plant analyzer
-
-/obj/item/device/analyzer/plant_analyzer
- name = "plant analyzer"
- desc = "A scanner used to evaluate a plant's various areas of growth."
- icon = 'icons/obj/device.dmi'
- icon_state = "hydro"
- item_state = "analyzer"
- origin_tech = "magnets=1;biotech=1"
-
- attack_self(mob/user as mob)
- return 0
-
// ********************************************************
// Here's all the seeds (plants) that can be used in hydro
// ********************************************************
@@ -1030,398 +1017,4 @@
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"
- species = "gibtomato"
- plantname = "Gib Tomato plant"
- product = /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"
- species = ""
- plantname = ""
- product = /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
-
-*/
-
-// *****************oolokitthesefancystars********
-// Grown FOOD types moved to reagents
-// **********************
-
-// **********************
-// Other harvested materials from plants (that are not food)
-// **********************
-
-/obj/item/weapon/grown // Grown weapons
- name = "grown_weapon"
- icon = 'icons/obj/weapons.dmi'
- var/seed = ""
- var/plantname = ""
- var/product //a type path
- var/species = ""
- var/lifespan = 20
- var/endurance = 15
- var/maturation = 7
- var/production = 7
- var/yield = 2
- 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/proc/changePotency(newValue) //-QualityVan
- potency = newValue
-
-/obj/item/weapon/grown/log
- name = "tower-cap log"
- desc = "It's better than bad, it's good!"
- icon = 'icons/obj/harvest.dmi'
- icon_state = "logs"
- force = 5
- flags = TABLEPASS
- throwforce = 5
- 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)
- ..()
- if(istype(W, /obj/item/weapon/circular_saw) || istype(W, /obj/item/weapon/hatchet) || (istype(W, /obj/item/weapon/twohanded/fireaxe) && W:wielded) || istype(W, /obj/item/weapon/melee/energy))
- user.show_message("You make planks out of the [src]!", 1)
- for(var/i=0,i<2,i++)
- var/obj/item/stack/sheet/wood/NG = new (user.loc)
- for (var/obj/item/stack/sheet/wood/G in user.loc)
- if(G==NG)
- continue
- if(G.amount>=G.max_amount)
- continue
- G.attackby(NG, user)
- usr << "You add the newly-formed wood to the stack. It now contains [NG.amount] planks."
- del(src)
- return
-
-
-/obj/item/weapon/grown/sunflower // FLOWER POWER!
- name = "sunflower"
- desc = "It's beautiful! A certain person might beat you to death if you trample these."
- icon = 'icons/obj/harvest.dmi'
- icon_state = "sunflower"
- damtype = "fire"
- force = 0
- flags = TABLEPASS
- throwforce = 1
- w_class = 1.0
- throw_speed = 1
- throw_range = 3
- plant_type = 0
- seed = "/obj/item/seeds/sunflower"
-
-/obj/item/weapon/grown/novaflower
- name = "novaflower"
- desc = "It's beautiful! A certain person might beat you to death if you trample these."
- icon = 'icons/obj/harvest.dmi'
- icon_state = "novaflower"
- damtype = "fire"
- force = 0
- flags = TABLEPASS
- throwforce = 1
- w_class = 1.0
- throw_speed = 1
- throw_range = 3
- plant_type = 0
- seed = "/obj/item/seeds/novaflower"
- attack_verb = list("seared", "heated", "whacked", "steamed")
-/*
-/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 = 1.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
- desc = "It's probably not wise to touch it with bare hands..."
- icon = 'icons/obj/weapons.dmi'
- name = "nettle"
- icon_state = "nettle"
- damtype = "fire"
- force = 15
- flags = TABLEPASS
- throwforce = 1
- w_class = 1.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))
- force = round((5+potency/5), 1)
-
-/obj/item/weapon/grown/deathnettle // -- Skie
- desc = "The \red glowing \black nettle incites \red rage\black in you just from looking at it!"
- icon = 'icons/obj/weapons.dmi'
- name = "deathnettle"
- icon_state = "deathnettle"
- damtype = "fire"
- force = 30
- flags = TABLEPASS
- throwforce = 1
- w_class = 1.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))
- 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)
-
-// *************************************
-// Pestkiller defines for hydroponics
-// *************************************
-
-/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)
-
-/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)
-
-/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)
-
-/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)
-
-// *************************************
-// Hydroponics Tools
-// *************************************
-
-/obj/item/weapon/weedspray // -- Skie
- desc = "It's a toxic mixture, in spray form, to kill small weeds."
- icon = 'icons/obj/hydroponics.dmi'
- name = "weed-spray"
- icon_state = "weedspray"
- item_state = "spray"
- flags = TABLEPASS | OPENCONTAINER | FPRINT | USEDELAY
- slot_flags = SLOT_BELT
- throwforce = 4
- w_class = 2.0
- throw_speed = 2
- throw_range = 10
- var/toxicity = 4
- var/WeedKillStr = 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'
- name = "pest-spray"
- icon_state = "pestspray"
- item_state = "spray"
- flags = TABLEPASS | OPENCONTAINER | FPRINT | USEDELAY
- slot_flags = SLOT_BELT
- throwforce = 4
- w_class = 2.0
- throw_speed = 2
- throw_range = 10
- var/toxicity = 4
- var/PestKillStr = 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/minihoe // -- Numbers
- name = "mini hoe"
- desc = "It's used for removing weeds or scratching your back."
- icon = 'icons/obj/weapons.dmi'
- icon_state = "hoe"
- item_state = "hoe"
- flags = FPRINT | TABLEPASS | CONDUCT | USEDELAY
- force = 5.0
- throwforce = 7.0
- w_class = 2.0
- m_amt = 50
- attack_verb = list("slashed", "sliced", "cut", "clawed")
-
-// *************************************
-// Weedkiller defines for hydroponics
-// *************************************
-
-/obj/item/weedkiller
- name = "bottle of weedkiller"
- icon = 'icons/obj/chemical.dmi'
- icon_state = "bottle16"
- flags = FPRINT | TABLEPASS
- var/toxicity = 0
- var/WeedKillStr = 0
-
-/obj/item/weedkiller/triclopyr
- name = "bottle of glyphosate"
- icon = 'icons/obj/chemical.dmi'
- icon_state = "bottle16"
- flags = FPRINT | TABLEPASS
- toxicity = 4
- WeedKillStr = 2
-
-/obj/item/weedkiller/lindane
- name = "bottle of triclopyr"
- icon = 'icons/obj/chemical.dmi'
- icon_state = "bottle18"
- flags = FPRINT | TABLEPASS
- toxicity = 6
- WeedKillStr = 4
-
-/obj/item/weedkiller/D24
- name = "bottle of 2,4-D"
- icon = 'icons/obj/chemical.dmi'
- icon_state = "bottle15"
- flags = FPRINT | TABLEPASS
- toxicity = 8
- WeedKillStr = 7
-
-// *************************************
-// Nutrient defines for hydroponics
-// *************************************
-
-/obj/item/nutrient
- name = "bottle of nutrient"
- icon = 'icons/obj/chemical.dmi'
- icon_state = "bottle16"
- flags = FPRINT | TABLEPASS
- w_class = 1.0
- var/mutmod = 0
- var/yieldmod = 0
- New()
- src.pixel_x = rand(-5.0, 5)
- src.pixel_y = rand(-5.0, 5)
-
-/obj/item/nutrient/ez
- name = "bottle of E-Z-Nutrient"
- icon = 'icons/obj/chemical.dmi'
- icon_state = "bottle16"
- 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"
- icon = 'icons/obj/chemical.dmi'
- 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)
-
-
+ del(src)
\ No newline at end of file
diff --git a/tgstation.dme b/tgstation.dme
index 7868034c7f2..c667c6e17f7 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -138,12 +138,14 @@
#include "code\datums\diseases\advance\symptoms\damage_converter.dm"
#include "code\datums\diseases\advance\symptoms\dizzy.dm"
#include "code\datums\diseases\advance\symptoms\fever.dm"
+#include "code\datums\diseases\advance\symptoms\flesh_eating.dm"
#include "code\datums\diseases\advance\symptoms\hallucigen.dm"
#include "code\datums\diseases\advance\symptoms\headache.dm"
#include "code\datums\diseases\advance\symptoms\heal.dm"
#include "code\datums\diseases\advance\symptoms\itching.dm"
#include "code\datums\diseases\advance\symptoms\shivering.dm"
#include "code\datums\diseases\advance\symptoms\sneeze.dm"
+#include "code\datums\diseases\advance\symptoms\stimulant.dm"
#include "code\datums\diseases\advance\symptoms\symptoms.dm"
#include "code\datums\diseases\advance\symptoms\voice_change.dm"
#include "code\datums\diseases\advance\symptoms\vomit.dm"
@@ -180,7 +182,6 @@
#include "code\datums\wires\robot.dm"
#include "code\datums\wires\wires.dm"
#include "code\defines\obj.dm"
-#include "code\defines\obj\hydro.dm"
#include "code\defines\obj\weapon.dm"
#include "code\defines\procs\AStar.dm"
#include "code\defines\procs\captain_announce.dm"
@@ -282,7 +283,6 @@
#include "code\game\machinery\flasher.dm"
#include "code\game\machinery\Freezer.dm"
#include "code\game\machinery\hologram.dm"
-#include "code\game\machinery\hydroponics.dm"
#include "code\game\machinery\igniter.dm"
#include "code\game\machinery\lightswitch.dm"
#include "code\game\machinery\machinery.dm"
@@ -502,7 +502,6 @@
#include "code\game\objects\items\weapons\flamethrower.dm"
#include "code\game\objects\items\weapons\gift_wrappaper.dm"
#include "code\game\objects\items\weapons\handcuffs.dm"
-#include "code\game\objects\items\weapons\hydroponics.dm"
#include "code\game\objects\items\weapons\kitchen.dm"
#include "code\game\objects\items\weapons\manuals.dm"
#include "code\game\objects\items\weapons\mop.dm"
@@ -777,6 +776,12 @@
#include "code\modules\flufftext\Hallucination.dm"
#include "code\modules\flufftext\TextFilters.dm"
#include "code\modules\food\recipes_microwave.dm"
+#include "code\modules\hydroponics\grown.dm"
+#include "code\modules\hydroponics\growninedible.dm"
+#include "code\modules\hydroponics\hydroitemcode.dm"
+#include "code\modules\hydroponics\hydroitemdefines.dm"
+#include "code\modules\hydroponics\hydroponics.dm"
+#include "code\modules\hydroponics\seeds.dm"
#include "code\modules\library\lib_items.dm"
#include "code\modules\library\lib_machines.dm"
#include "code\modules\library\lib_readme.dm"
@@ -1067,7 +1072,6 @@
#include "code\modules\reagents\reagent_containers\food\drinks\drinkingglass.dm"
#include "code\modules\reagents\reagent_containers\food\drinks\jar.dm"
#include "code\modules\reagents\reagent_containers\food\drinks\bottle\robot.dm"
-#include "code\modules\reagents\reagent_containers\food\snacks\grown.dm"
#include "code\modules\reagents\reagent_containers\food\snacks\meat.dm"
#include "code\modules\reagents\reagent_containers\glass\bottle.dm"
#include "code\modules\reagents\reagent_containers\glass\bottle\robot.dm"