local next = next function on_active_tick(event) local active_mining_drills = global.active.mining_drills local passive_mining_drills = global.passive.mining_drills local miners = table.remove_key(active_mining_drills, event.tick) or {} for _, miner in pairs(miners) do if miner.valid then local status = miner.status if status == defines.entity_status.no_minable_resources then miner.order_deconstruction(miner.force, nil) elseif status ~= defines.entity_status.working then passive_mining_drills[miner] = true script.on_nth_tick(passive_tick, on_passive_tick) end end end if next(active_mining_drills) == nil then script.on_nth_tick(active_tick, nil) return end end function on_passive_tick(event) local passive_mining_drills = global.passive.mining_drills for miner, _ in pairs(passive_mining_drills) do if miner.valid then local status = miner.status if status == defines.entity_status.no_minable_resources then miner.order_deconstruction(miner.force, nil) passive_mining_drills[miner] = nil elseif status == defines.entity_status.working then passive_mining_drills[miner] = nil end else passive_mining_drills[miner] = nil end end if next(passive_mining_drills) == nil then script.on_nth_tick(passive_tick, nil) return end end