diff --git a/code/game/machinery/biogenerator.dm b/code/game/machinery/biogenerator.dm index 766b470b54..27dad792aa 100644 --- a/code/game/machinery/biogenerator.dm +++ b/code/game/machinery/biogenerator.dm @@ -120,6 +120,7 @@ dat += "Plant bag ([round(250/build_eff)])
" dat += "Large plant bag ([round(250/build_eff)])
" dat += "Utility belt ([round(300/build_eff)])
" + dat += "Botany belt ([round(300/build_eff)])
" dat += "Leather Satchel ([round(400/build_eff)])
" dat += "Cash Bag ([round(400/build_eff)])
" dat += "Chemistry Bag ([round(400/build_eff)])
" @@ -250,6 +251,8 @@ new/obj/item/storage/bag/plants/large(loc) if("tbelt") new/obj/item/storage/belt/utility(loc) + if("plantbelt") + new/obj/item/storage/belt/plant(loc) if("satchel") new/obj/item/storage/backpack/satchel(loc) if("cashbag") diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm index 7bd3e1bd9f..5b13b5ee40 100644 --- a/code/game/objects/items/weapons/storage/belt.dm +++ b/code/game/objects/items/weapons/storage/belt.dm @@ -464,3 +464,21 @@ can_hold = list( /obj/item/ammo_casing/afoam_dart ) + +/obj/item/storage/belt/plant + name = "botany toolbelt" + desc = "A belt to hold various botanical tools." + icon_state = "plantbelt" + storage_slots = 8 + can_hold = list( + /obj/item/reagent_containers/glass/bottle, + /obj/item/reagent_containers/glass/beaker, + /obj/item/material/minihoe, + /obj/item/shovel/spade, + /obj/item/material/knife/machete/hatchet, + /obj/item/analyzer/plant_analyzer, + /obj/item/gun/energy/floragun, + /obj/item/tool/wirecutters, + /obj/item/tool/wrench, + /obj/item/multitool, + ) diff --git a/code/modules/hydroponics/trays/tray.dm b/code/modules/hydroponics/trays/tray.dm index b7e879b56e..6e519d8f6b 100644 --- a/code/modules/hydroponics/trays/tray.dm +++ b/code/modules/hydroponics/trays/tray.dm @@ -574,6 +574,29 @@ anchored = !anchored to_chat(user, "You [anchored ? "wrench" : "unwrench"] \the [src].") + else if(istype(O, /obj/item/shovel/spade)) + if(!weedlevel && !seed) // Don't do anything if the tray is truly empty + to_chat(user, SPAN_NOTICE("[src] doesn't have any plants or weeds!")) + return + user.visible_message(SPAN_NOTICE("[user] starts digging out [src]'s plants...")) + to_chat(user, SPAN_NOTICE("You start digging out [src]'s plants...")) + playsound(src, O.usesound, 50, 1) + if(do_after(user, 40 * O.toolspeed)) + to_chat(user, SPAN_NOTICE("[user] digs out the plants in [src]!"), SPAN_NOTICE("You dig out all of [src]'s plants!")) + if(seed) // Chuck the seed -- it's basically just a forced remove_dead() without the verbosity + seed = null + dead = 0 + sampled = 0 + age = 0 + yield_mod = 0 + mutation_mod = 0 + lastproduce = 0 + weedlevel = 0 + check_health() + force_update = 1 + process() + return + else if(istype(O,/obj/item/multitool)) if(!anchored) to_chat(user, "Anchor it first!") diff --git a/icons/obj/clothing/belts.dmi b/icons/obj/clothing/belts.dmi index 2d19da251a..ca75de3acd 100644 Binary files a/icons/obj/clothing/belts.dmi and b/icons/obj/clothing/belts.dmi differ diff --git a/maps/cynosure/cynosure-2.dmm b/maps/cynosure/cynosure-2.dmm index 70445c9a6e..f0c50991c5 100644 --- a/maps/cynosure/cynosure-2.dmm +++ b/maps/cynosure/cynosure-2.dmm @@ -44134,6 +44134,9 @@ pixel_y = 2 }, /obj/item/reagent_containers/glass/bucket, +/obj/item/shovel/spade, +/obj/item/shovel/spade, +/obj/item/shovel/spade, /turf/simulated/floor/tiled/hydro, /area/surface/station/hydroponics) "tzy" = ( @@ -54049,6 +54052,8 @@ /obj/effect/floor_decal/corner/green/border{ dir = 4 }, +/obj/item/shovel/spade, +/obj/item/shovel/spade, /turf/simulated/floor/tiled/neutral, /area/surface/station/rnd/xenobiology/xenoflora) "xYt" = (