--Author: Valansch local function is_depleted(drill) local position = drill.position local area = {} if drill.name == "electric-mining-drill" then area = {{position.x - 2, position.y - 2},{position.x + 2, position.y + 2}} else area = {{position.x - 1, position.y - 1},{position.x + 1, position.y + 1}} end local count = -1 for _,resource in pairs(drill.surface.find_entities_filtered{type="resource", area = area}) do if resource.name ~= "crude-oil" then count = count + 1 end end return count == 0 end local function mark_if_depleted(drill) if is_depleted(drill) then drill.order_deconstruction(drill.force) end end local function on_resource_depleted(event) local area = {{event.entity.position.x-1, event.entity.position.y-1}, {event.entity.position.x+1, event.entity.position.y + 1}} local drills = event.entity.surface.find_entities_filtered{area = area, type="mining-drill"} for _,drill in pairs(drills) do if drill.name ~= "pumpjack" then mark_if_depleted(drill) end end end Event.register(defines.events.on_resource_depleted, on_resource_depleted)