1
0
mirror of https://github.com/ComfyFactory/ComfyFactorio.git synced 2024-12-30 23:17:53 +02:00
ComfyFactorio/maps/scrap_towny_ffa/pollution.lua
2022-10-22 22:13:35 +02:00

118 lines
4.3 KiB
Lua

local Event = require 'utils.event'
local ScenarioTable = require 'maps.scrap_towny_ffa.table'
local Scrap = require 'maps.scrap_towny_ffa.scrap'
local Public = {}
local math_random = math.random
local pollution_index = {
['small-biter'] = {min = 0.1, max = 0.1},
['medium-biter'] = {min = 0.1, max = 0.2},
['big-biter'] = {min = 0.1, max = 0.3},
['behemoth-biter'] = {min = 0.1, max = 0.4},
['small-spitter'] = {min = 0.1, max = 0.1},
['medium-spitter'] = {min = 0.1, max = 0.2},
['big-spitter'] = {min = 0.1, max = 0.3},
['behemoth-spitter'] = {min = 0.2, max = 0.4},
['small-worm-turret'] = {min = 0.1, max = 0.1},
['medium-worm-turret'] = {min = 0.1, max = 0.2},
['big-worm-turret'] = {min = 0.1, max = 0.3},
['behemoth-worm-turret'] = {min = 0.2, max = 0.4},
['biter-spawner'] = {min = 0.5, max = 2.5},
['spitter-spawner'] = {min = 0.5, max = 2.5},
['mineable-wreckage'] = {min = 0.1, max = 0.1},
['small-ship-wreck'] = {min = 0.1, max = 0.1},
['medium-ship-wreck'] = {min = 0.1, max = 0.1},
['crash-site-spaceship-wreck-small-1'] = {min = 0.1, max = 0.1},
['crash-site-spaceship-wreck-small-2'] = {min = 0.1, max = 0.1},
['crash-site-spaceship-wreck-small-3'] = {min = 0.1, max = 0.1},
['crash-site-spaceship-wreck-small-4'] = {min = 0.1, max = 0.1},
['crash-site-spaceship-wreck-small-5'] = {min = 0.1, max = 0.1},
['crash-site-spaceship-wreck-small-6'] = {min = 0.1, max = 0.1},
['big-ship-wreck-1'] = {min = 0.2, max = 0.4},
['big-ship-wreck-2'] = {min = 0.2, max = 0.4},
['big-ship-wreck-3'] = {min = 0.2, max = 0.4},
['crash-site-chest-1'] = {min = 0.1, max = 0.2},
['crash-site-chest-2'] = {min = 0.1, max = 0.2},
['crash-site-spaceship-wreck-medium-1'] = {min = 0.1, max = 0.2},
['crash-site-spaceship-wreck-medium-2'] = {min = 0.1, max = 0.2},
['crash-site-spaceship-wreck-medium-3'] = {min = 0.1, max = 0.2},
['crash-site-spaceship-wreck-big-1'] = {min = 0.2, max = 0.4},
['crash-site-spaceship-wreck-big-2'] = {min = 0.2, max = 0.4},
['crash-site-spaceship'] = {min = 0.5, max = 2.5},
['explosion'] = {min = 0.1, max = 0.1},
['big-explosion'] = {min = 0.2, max = 0.2},
['big-artillery-explosion'] = {min = 0.5, max = 0.5},
['market'] = {min = 10, max = 50}
}
function Public.market_scent()
local this = ScenarioTable.get_table()
if this.testing_mode then
return
end
local town_centers = this.town_centers
if town_centers == nil then
return
end
for _, town_center in pairs(town_centers) do
local market = town_center.market
if market ~= nil and market.valid then
local pollution = pollution_index['market']
local amount = math_random(pollution.min, pollution.max)
local evolution = town_center.evolution.biters
market.surface.pollute(market.position, amount + evolution * 500)
end
end
end
function Public.explosion(position, surface, animation)
local pollution = pollution_index[animation]
if pollution == nil then
return
end
local amount = math_random(pollution.min, pollution.max)
surface.pollute(position, amount)
end
local function on_player_mined_entity(event)
local entity = event.entity
if Scrap.is_scrap(entity) == true then
local pollution = pollution_index[entity.name]
local amount = math_random(pollution.min, pollution.max)
entity.surface.pollute(entity.position, amount)
end
end
local function on_entity_damaged(event)
local entity = event.entity
if not entity.valid then
return
end
local pollution = pollution_index[entity.name]
if pollution == nil then
return
end
local amount = math_random(pollution.min, pollution.max)
entity.surface.pollute(entity.position, amount)
end
local function on_entity_died(event)
local entity = event.entity
if not entity.valid then
return
end
local pollution = pollution_index[entity.name]
if pollution == nil then
return
end
local amount = math_random(pollution.min, pollution.max) * 10
entity.surface.pollute(entity.position, amount)
end
Event.add(defines.events.on_player_mined_entity, on_player_mined_entity)
Event.add(defines.events.on_entity_damaged, on_entity_damaged)
Event.add(defines.events.on_entity_died, on_entity_died)
return Public