1
0
mirror of https://github.com/ComfyFactory/ComfyFactorio.git synced 2025-03-17 20:58:13 +02:00
ComfyFactorio/modules/spawners_contain_biters.lua

47 lines
1.6 KiB
Lua
Raw Normal View History

2018-12-31 03:47:53 +01:00
-- spawners release biters on death -- by mewmew
2021-02-13 13:04:22 +01:00
local Event = require 'utils.event'
2018-12-31 03:47:53 +01:00
local math_random = math.random
local biter_building_inhabitants = {
2024-10-14 23:46:34 +02:00
[1] = { { 'small-biter', 8, 16 } },
[2] = { { 'small-biter', 12, 24 } },
[3] = { { 'small-biter', 8, 16 }, { 'medium-biter', 1, 2 } },
[4] = { { 'small-biter', 4, 8 }, { 'medium-biter', 4, 8 } },
[5] = { { 'small-biter', 3, 5 }, { 'medium-biter', 8, 12 } },
[6] = { { 'small-biter', 3, 5 }, { 'medium-biter', 5, 7 }, { 'big-biter', 1, 2 } },
[7] = { { 'medium-biter', 6, 8 }, { 'big-biter', 3, 5 } },
[8] = { { 'medium-biter', 2, 4 }, { 'big-biter', 6, 8 } },
[9] = { { 'medium-biter', 2, 3 }, { 'big-biter', 7, 9 } },
[10] = { { 'big-biter', 4, 8 }, { 'behemoth-biter', 3, 4 } }
2018-12-31 03:47:53 +01:00
}
2021-02-13 13:04:22 +01:00
local function on_entity_died(event)
if not event.entity.valid then
return
end
local entity = event.entity
if entity.type ~= 'unit-spawner' then
return
end
if entity.force.index == 1 then
return
end
2024-10-14 23:46:34 +02:00
local evo = entity.force.get_evolution_factor(entity.surface.index)
2021-02-13 13:04:22 +01:00
2024-10-14 23:46:34 +02:00
local e = math.ceil(evo * 10)
2021-02-13 13:04:22 +01:00
if e < 1 then
e = 1
end
for _, t in pairs(biter_building_inhabitants[e]) do
for _ = 1, math_random(t[2], t[3]), 1 do
local p = entity.surface.find_non_colliding_position(t[1], entity.position, 6, 1)
if p then
2024-10-14 23:46:34 +02:00
entity.surface.create_entity { name = t[1], position = p, force = entity.force.name }
2021-02-13 13:04:22 +01:00
end
end
end
2018-12-31 03:47:53 +01:00
end
2021-02-13 13:04:22 +01:00
Event.add(defines.events.on_entity_died, on_entity_died)