44 lines
1.3 KiB
Lua
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)
|