44 lines
1.3 KiB
Lua

local function update_pollution(factory)
local inside_surface = factory.inside_surface
local chunk
local pollution, cp = 0, 0
local inside_x, inside_y = factory.inside_x, factory.inside_y
chunk = {inside_x - 16,inside_y - 16}
cp = inside_surface.get_pollution(chunk)
if cp ~= 0 then inside_surface.pollute(chunk, -cp) end
pollution = pollution + cp
chunk = {inside_x + 16,inside_y - 16}
cp = inside_surface.get_pollution(chunk)
if cp ~= 0 then inside_surface.pollute(chunk, -cp) end
pollution = pollution + cp
chunk = {inside_x - 16,inside_y + 16}
cp = inside_surface.get_pollution(chunk)
if cp ~= 0 then inside_surface.pollute(chunk, -cp) end
pollution = pollution + cp
chunk = {inside_x + 16,inside_y + 16}
cp = inside_surface.get_pollution(chunk)
if cp ~= 0 then inside_surface.pollute(chunk, -cp) end
pollution = pollution + cp
if pollution == 0 then return end
if factory.built then
factory.outside_surface.pollute({factory.outside_x, factory.outside_y}, pollution + factory.stored_pollution)
factory.stored_pollution = 0
else
factory.stored_pollution = factory.stored_pollution + pollution
end
end
script.on_nth_tick(15, function(event)
local factories = global.factories
for i = (event.tick%4+1), #factories, 4 do
local factory = factories[i]
if factory ~= nil then update_pollution(factory) end
end
end)