Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- script.on_event(defines.events.on_tick, function(event)
- leech()
- end)
- script.on_event(defines.events.on_built_entity, function(event)
- if not string.find(event.created_entity.name, "burner") then return end
- if not string.find(event.created_entity.name, "inserter") then return end
- if not global.burner then
- global.burner = {}
- end
- local burner = event.created_entity
- table.insert(global.burner, burner)
- check_burner(burner)
- end)
- script.on_event(defines.events.on_robot_built_entity, function(event)
- if not string.find(event.created_entity.name, "burner") then return end
- if not string.find(event.created_entity.name, "inserter") then return end
- if not global.burner then
- global.burner = {}
- end
- local burner = event.created_entity
- table.insert(global.burner, burner)
- check_burner(burner)
- end)
- function leech()
- if not fuel_list then
- --I recalculate the fuel list everytime because adding or removing mod/items can fuck it all up and this doesn't take very long
- fuel_list = {}
- for k, v in pairs (game.item_prototypes) do
- if v.fuel_value > 0 then
- table.insert(fuel_list,v)
- end
- end
- end
- if global.burner_index == nil then
- global.burner_index = 1
- end
- if global.burner == nil then return end
- if global.burner[global.burner_index] == nil then return end
- check_burner(global.burner[global.burner_index])
- if global.burner_index >= #global.burner then
- global.burner_index = 1
- else
- global.burner_index = global.burner_index + 1
- end
- end
- function check_burner(burner)
- if not burner then return end
- if not burner.valid then
- table.remove(global.burner, global.burner_index)
- global.burner_index = global.burner_index -1
- return
- end
- local send_to_target = false
- if burner.drop_target ~= nil then
- if burner.drop_target.get_fuel_inventory() ~= nil then
- if burner.drop_target.get_fuel_inventory().get_item_count() < 1 then
- send_to_target = true
- end
- end
- end
- if burner.pickup_target == nil then return end
- if burner.get_item_count() < 1 or send_to_target then
- leeched = burner.pickup_target
- if leeched == nil then return end
- if burner.held_stack.valid_for_read == false then
- for j, v in pairs (fuel_list) do
- if leeched.get_item_count(v.name) > 0 then
- burner.held_stack.set_stack({name = v.name, count = 1})
- leeched.remove_item({name = v.name, count = 1})
- return
- end
- end
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement