/proc/seedify(obj/item/O, t_max, obj/machinery/seed_extractor/extractor, mob/living/user)
var/t_amount = 0
if(t_max == -1)
if(extractor)
t_max = rand(1,4) * extractor.seed_multiplier
else
t_max = rand(1,4)
var/seedloc = O.loc
if(extractor)
seedloc = extractor.loc
if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/grown/))
var/obj/item/weapon/reagent_containers/food/snacks/grown/F = O
if(F.seed)
if(user && !user.drop_item()) //couldn't drop the item
return
while(t_amount < t_max)
var/obj/item/seeds/t_prod = F.seed.Copy()
t_prod.loc = seedloc
t_amount++
qdel(O)
return 1
else if(istype(O, /obj/item/weapon/grown))
var/obj/item/weapon/grown/F = O
if(F.seed)
if(user && !user.drop_item())
return
while(t_amount < t_max)
var/obj/item/seeds/t_prod = F.seed.Copy()
t_prod.loc = seedloc
t_amount++
qdel(O)
return 1
return 0
/obj/machinery/seed_extractor
name = "seed extractor"
desc = "Extracts and bags seeds from produce."
icon = 'icons/obj/hydroponics/equipment.dmi'
icon_state = "sextractor"
density = TRUE
anchored = TRUE
circuit = /obj/item/weapon/circuitboard/machine/seed_extractor
var/piles = list()
var/max_seeds = 1000
var/seed_multiplier = 1
/obj/machinery/seed_extractor/RefreshParts()
for(var/obj/item/weapon/stock_parts/matter_bin/B in component_parts)
max_seeds = 1000 * B.rating
for(var/obj/item/weapon/stock_parts/manipulator/M in component_parts)
seed_multiplier = M.rating
/obj/machinery/seed_extractor/attackby(obj/item/O, mob/user, params)
if(default_deconstruction_screwdriver(user, "sextractor_open", "sextractor", O))
return
if(exchange_parts(user, O))
return
if(default_pry_open(O))
return
if(default_unfasten_wrench(user, O))
return
if(default_deconstruction_crowbar(O))
return
if (istype(O, /obj/item/weapon/storage/bag/plants))
var/obj/item/weapon/storage/P = O
var/loaded = 0
for(var/obj/item/seeds/G in P.contents)
if(contents.len >= max_seeds)
break
++loaded
add_seed(G)
if (loaded)
to_chat(user, "You put the seeds from \the [O.name] into [src].")
else
to_chat(user, "There are no seeds in \the [O.name].")
return
else if(seedify(O,-1, src, user))
to_chat(user, "You extract some seeds.")
return
else if (istype(O, /obj/item/seeds))
if(add_seed(O))
to_chat(user, "You add [O] to [src.name].")
updateUsrDialog()
return
else if(user.a_intent != INTENT_HARM)
to_chat(user, "You can't extract any seeds from \the [O.name]!")
else
return ..()
/datum/seed_pile
var/name = ""
var/lifespan = 0 //Saved stats
var/endurance = 0
var/maturation = 0
var/production = 0
var/yield = 0
var/potency = 0
var/amount = 0
/datum/seed_pile/New(var/name, var/life, var/endur, var/matur, var/prod, var/yie, var/poten, var/am = 1)
src.name = name
src.lifespan = life
src.endurance = endur
src.maturation = matur
src.production = prod
src.yield = yie
src.potency = poten
src.amount = am
/obj/machinery/seed_extractor/attack_hand(mob/user)
user.set_machine(src)
interact(user)
/obj/machinery/seed_extractor/interact(mob/user)
if (stat)
return 0
var/dat = "Stored seeds:
"
if (contents.len == 0)
dat += "No seeds"
else
dat += "
| Name | Lifespan | Endurance | Maturation | Production | Yield | Potency | Stock |
| [O.name] | [O.lifespan] | [O.endurance] | [O.maturation] | " dat += "[O.production] | [O.yield] | [O.potency] | " dat += "Vend ([O.amount] left) |