diff --git a/code/game/atoms.dm b/code/game/atoms.dm
index b02d6ba04c1..663d6c5a8f9 100644
--- a/code/game/atoms.dm
+++ b/code/game/atoms.dm
@@ -15,10 +15,6 @@
var/atom_say_verb = "says"
var/dont_save = 0 // For atoms that are temporary by necessity - like lighting overlays
- // A list of datums that desire to interact with this atom - used so that automated processes
- // don't step on one another's toes, if they are doing an action that takes time
- var/list/interaction_queue = list()
-
///Chemistry.
var/datum/reagents/reagents = null
diff --git a/code/modules/food_and_drinks/kitchen_machinery/gibber.dm b/code/modules/food_and_drinks/kitchen_machinery/gibber.dm
index 71376425939..3fd026f563c 100644
--- a/code/modules/food_and_drinks/kitchen_machinery/gibber.dm
+++ b/code/modules/food_and_drinks/kitchen_machinery/gibber.dm
@@ -317,7 +317,7 @@
var/lastacceptdir = NORTH
var/turf/lturf
var/consumption_delay = 3 SECONDS
- var/target_found = 0
+ var/list/victim_targets = list()
/obj/machinery/gibber/autogibber/New()
..()
@@ -332,7 +332,7 @@
RefreshParts()
/obj/machinery/gibber/autogibber/process()
- if(!lturf || occupant || locked || dirty || operating || occupant || target_found)
+ if(!lturf || occupant || locked || dirty || operating || occupant || victim_targets.len)
return
if(acceptdir != lastacceptdir)
@@ -343,11 +343,13 @@
lturf = T
for(var/mob/living/carbon/human/H in lturf)
- if(istype(H) && H.loc == lturf && !(locate(/obj/machinery/gibber/autogibber) in H.interaction_queue))
- target_found = 1
- H.interaction_queue += src
- visible_message({"\The [src] states, "Food detected!""})
- sleep(consumption_delay)
+ if(istype(H) && H.loc == lturf)
+ victim_targets += H
+
+ if(victim_targets.len)
+ visible_message({"\The [src] states, "Food detected!""})
+ sleep(consumption_delay)
+ for(var/mob/living/carbon/H in victim_targets)
if(H.loc == lturf) //still standing there
if(force_move_into_gibber(H))
locked = 1 // no escape
@@ -355,10 +357,8 @@
cleanbay()
startgibbing(null, 1)
locked = 0
- if(H)
- H.interaction_queue -= src
break
- target_found = 0
+ victim_targets.Cut()
/obj/machinery/gibber/autogibber/proc/force_move_into_gibber(var/mob/living/carbon/human/victim)
if(!istype(victim)) return 0