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