mirror of
https://github.com/ComfyFactory/ComfyFactorio.git
synced 2024-12-30 23:17:53 +02:00
46 lines
1.6 KiB
Lua
46 lines
1.6 KiB
Lua
-- biters explode -- by mewmew
|
|
|
|
local Event = require 'utils.event'
|
|
|
|
local biter_values = {
|
|
['medium-biter'] = {'blood-explosion-big', 20, 1.5},
|
|
['big-biter'] = {'blood-explosion-huge', 40, 2},
|
|
['behemoth-biter'] = {'blood-explosion-huge', 60, 2.5}
|
|
}
|
|
|
|
local function damage_entities_in_radius(surface, position, radius, damage)
|
|
local entities_to_damage = surface.find_entities_filtered({area = {{position.x - radius, position.y - radius}, {position.x + radius, position.y + radius}}})
|
|
for _, entity in pairs(entities_to_damage) do
|
|
if entity.health and entity.name ~= 'land-mine' then
|
|
if entity.force.name ~= 'enemy' then
|
|
if entity.name == 'character' then
|
|
entity.damage(damage, 'enemy')
|
|
else
|
|
entity.health = entity.health - damage
|
|
if entity.health <= 0 then
|
|
entity.die('enemy')
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
local function on_entity_died(event)
|
|
if not event.entity.valid then
|
|
return
|
|
end
|
|
if biter_values[event.entity.name] then
|
|
local entity = event.entity
|
|
entity.surface.create_entity({name = biter_values[entity.name][1], position = entity.position})
|
|
damage_entities_in_radius(
|
|
entity.surface,
|
|
entity.position,
|
|
biter_values[entity.name][3],
|
|
math.random(math.ceil(biter_values[entity.name][2] * 0.75), math.ceil(biter_values[entity.name][2] * 1.25))
|
|
)
|
|
end
|
|
end
|
|
|
|
Event.add(defines.events.on_entity_died, on_entity_died)
|