diff --git a/code/modules/hydroponics/seed_storage.dm b/code/modules/hydroponics/seed_storage.dm index 4c6d8b2798..808b65cb41 100644 --- a/code/modules/hydroponics/seed_storage.dm +++ b/code/modules/hydroponics/seed_storage.dm @@ -445,6 +445,27 @@ piles -= N qdel(N) break + if(hacked || emagged) + for (var/datum/seed_pile/N in piles_contra) + if (N.ID == ID) + if (task == "vend") + var/obj/O = pick(N.seeds) + if (O) + --N.amount + N.seeds -= O + if (N.amount <= 0 || N.seeds.len <= 0) + piles_contra -= N + qdel(N) + O.loc = src.loc + else + piles_contra -= N + qdel(N) + else if (task == "purge") + for (var/obj/O in N.seeds) + qdel(O) + piles_contra -= N + qdel(N) + break updateUsrDialog() /obj/machinery/seed_storage/attackby(var/obj/item/O as obj, var/mob/user as mob) @@ -477,6 +498,23 @@ else if((istype(O, /obj/item/weapon/wirecutters) || istype(O, /obj/item/device/multitool)) && panel_open) wires.Interact(user) +/obj/machinery/seed_storage/emag_act(var/remaining_charges, var/mob/user) + if(!src.emagged) + emagged = 1 + if(lockdown) + to_chat(user, "\The [src]'s control panel thunks, as its cover retracts.") + lockdown = 0 + if(req_access || req_one_access) + req_access = list() + req_one_access = list() + to_chat(user, "\The [src]'s access mechanism shorts out.") + var/datum/effect/effect/system/spark_spread/sparks = new /datum/effect/effect/system/spark_spread() + sparks.set_up(3, 0, get_turf(src)) + sparks.start() + visible_message("\The [src]'s panel sparks!") + qdel(sparks) + return 1 + /obj/machinery/seed_storage/proc/add(var/obj/item/seeds/O as obj, var/contraband = 0) if (istype(O.loc, /mob)) var/mob/user = O.loc @@ -489,6 +527,8 @@ var/newID = 0 if(contraband) + var/datum/seed_pile/final_pile = piles[piles.len] + newID = final_pile.ID + 1 for (var/datum/seed_pile/N in piles_contra) if (N.matches(O)) ++N.amount