diff --git a/code/defines/obj/hydro.dm b/code/defines/obj/hydro.dm index 550d043a2df..cc2ffa4640c 100644 --- a/code/defines/obj/hydro.dm +++ b/code/defines/obj/hydro.dm @@ -33,6 +33,11 @@ var/growthstages = 0 var/plant_type = 0 // 0 = 'normal plant'; 1 = weed; 2 = shroom +/obj/item/seeds/New() + ..() + pixel_x = rand(-8, 8) + pixel_y = rand(-8, 8) + /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] ***" @@ -966,11 +971,12 @@ species = "grass" plantname = "Grass" productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/grass" - lifespan = 60 - endurance = 50 + lifespan = 40 + endurance = 40 maturation = 2 production = 5 yield = 5 + potency = 10 plant_type = 0 growthstages = 2 @@ -1032,8 +1038,6 @@ 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" diff --git a/code/game/machinery/hydroponics.dm b/code/game/machinery/hydroponics.dm index f0ac50d09ff..8b576b235a0 100644 --- a/code/game/machinery/hydroponics.dm +++ b/code/game/machinery/hydroponics.dm @@ -809,7 +809,7 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob) 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) @@ -840,7 +840,7 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob) 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 diff --git a/code/game/machinery/seed_extractor.dm b/code/game/machinery/seed_extractor.dm index 615e52f3980..de2fd65f663 100644 --- a/code/game/machinery/seed_extractor.dm +++ b/code/game/machinery/seed_extractor.dm @@ -1,3 +1,50 @@ +/proc/seedify(var/obj/item/O as obj, var/t_max) + var/t_amount = 0 + if(t_max == -1) + t_max = rand(1,4) + + if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/grown/)) + var/obj/item/weapon/reagent_containers/food/snacks/grown/F = O + var/seed = text2path(F.seed) + while(t_amount < t_max) + var/obj/item/seeds/t_prod = new seed(O.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) + return 1 + + else if(istype(O, /obj/item/weapon/grown/)) + var/obj/item/weapon/grown/F = O + var/seed = text2path(F.seed) + while(t_amount < t_max) + var/obj/item/seeds/t_prod = new seed(O.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) + return 1 + + /*else if(istype(O, /obj/item/stack/tile/grass)) + var/obj/item/stack/tile/grass/S = O + new /obj/item/seeds/grassseed(O.loc) + S.use(1) + return 1*/ + + else + return 0 + + /obj/machinery/seed_extractor name = "seed extractor" desc = "Extracts and bags seeds from produce." @@ -7,48 +54,12 @@ 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++ - del(O) - - 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]." - S.use(1) - new /obj/item/seeds/grassseed(loc) - - return \ No newline at end of file + if(isrobot(user)) + return + user.drop_item() + if(O && O.loc) + O.loc = src.loc + if(seedify(O,-1)) + user << "You extract some seeds." + else + user << "You can't extract any seeds from that!" \ No newline at end of file diff --git a/code/game/objects/items/stacks/tiles/tile_types.dm b/code/game/objects/items/stacks/tiles/tile_types.dm index 1e10932b9d1..c85daa7a625 100644 --- a/code/game/objects/items/stacks/tiles/tile_types.dm +++ b/code/game/objects/items/stacks/tiles/tile_types.dm @@ -37,7 +37,7 @@ throw_range = 20 flags = FPRINT | TABLEPASS | CONDUCT max_amount = 60 - + origin_tech = "biotech=1" /* * Carpets */ diff --git a/code/game/objects/items/weapons/storage/bags.dm b/code/game/objects/items/weapons/storage/bags.dm index ebaebdcabe0..2d78dd57a9a 100644 --- a/code/game/objects/items/weapons/storage/bags.dm +++ b/code/game/objects/items/weapons/storage/bags.dm @@ -79,6 +79,23 @@ w_class = 1 can_hold = list("/obj/item/weapon/reagent_containers/food/snacks/grown","/obj/item/seeds","/obj/item/weapon/grown") +//////// + +/obj/item/weapon/storage/bag/plants/portaseeder + name = "portable seed extractor" + desc = "For the enterprising botanist on the go. Less efficient than the stationary model, it creates one seed per plant." + icon_state = "portaseeder" + + verb/dissolve_contents() + set name = "Activate Seed Extraction" + set category = "Object" + set desc = "Activate to convert your plants into plantable seeds." + for(var/obj/item/O in contents) + seedify(O, 1) + for(var/mob/M in range(1)) + if (M.s_active == src) + src.close(M) + // ----------------------------- // Sheet Snatcher diff --git a/code/game/objects/structures/crates_lockers/closets/secure/hydroponics.dm b/code/game/objects/structures/crates_lockers/closets/secure/hydroponics.dm index cf2db4fa7bb..9568e0eab1c 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/hydroponics.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/hydroponics.dm @@ -17,7 +17,7 @@ new /obj/item/clothing/suit/apron(src) if(2) new /obj/item/clothing/suit/apron/overalls(src) - new /obj/item/weapon/storage/bag/plants(src) + new /obj/item/weapon/storage/bag/plants/portaseeder(src) new /obj/item/clothing/under/rank/hydroponics(src) new /obj/item/device/analyzer/plant_analyzer(src) new /obj/item/clothing/head/greenbandana(src) diff --git a/code/modules/reagents/reagent_containers/food/snacks/grown.dm b/code/modules/reagents/reagent_containers/food/snacks/grown.dm index e75c7f5d743..fa341c496ac 100644 --- a/code/modules/reagents/reagent_containers/food/snacks/grown.dm +++ b/code/modules/reagents/reagent_containers/food/snacks/grown.dm @@ -648,6 +648,22 @@ reagents.add_reagent("nutriment", 1+round((potency / 25), 1)) bitesize = 1+round(reagents.total_volume / 2, 1) +/obj/item/weapon/reagent_containers/food/snacks/grown/grass + seed = "/obj/item/seeds/grassseed" + name = "grass" + desc = "Green and lush." + icon_state = "grassclump" + New() + ..() + spawn(5) //So potency can be set in the proc that creates these crops + reagents.add_reagent("nutriment", 1+round((potency / 50), 1)) + bitesize = 1+round(reagents.total_volume / 2, 1) + +/obj/item/weapon/reagent_containers/food/snacks/grown/grass/attack_self(mob/user as mob) + user << "You prepare the astroturf." + new/obj/item/stack/tile/grass(user.loc) + del(src) + /obj/item/weapon/reagent_containers/food/snacks/grown/kudzupod seed = "/obj/item/seeds/kudzuseed" name = "kudzu pod" @@ -872,20 +888,6 @@ // 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" diff --git a/html/changelog.html b/html/changelog.html index 9a9e4d45e48..43c73e4e84e 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -52,7 +52,11 @@ should be listed in the changelog upon commit tho. Thanks. -->