mirror of
https://github.com/ComfyFactory/ComfyFactorio.git
synced 2025-01-06 00:23:49 +02:00
100 lines
2.5 KiB
Lua
100 lines
2.5 KiB
Lua
local Public = {}
|
|
|
|
local score_values = {
|
|
['small-spitter'] = 1,
|
|
['small-biter'] = 1,
|
|
['medium-spitter'] = 3,
|
|
['medium-biter'] = 3,
|
|
['big-spitter'] = 5,
|
|
['big-biter'] = 5,
|
|
['behemoth-spitter'] = 10,
|
|
['behemoth-biter'] = 10,
|
|
['small-worm-turret'] = 4,
|
|
['medium-worm-turret'] = 6,
|
|
['big-worm-turret'] = 8,
|
|
['behemoth-worm-turret'] = 10,
|
|
['biter-spawner'] = 16,
|
|
['spitter-spawner'] = 16
|
|
}
|
|
|
|
function Public.set_daytime_difficulty(surface)
|
|
local daytime = surface.daytime
|
|
if daytime < 0.30 then
|
|
surface.peaceful_mode = true
|
|
else
|
|
surface.peaceful_mode = false
|
|
end
|
|
end
|
|
|
|
function Public.set_biter_difficulty()
|
|
local daytime = global.daytime
|
|
|
|
local daytime_extra_life_modifier = (-0.30 + daytime) * 2
|
|
if daytime_extra_life_modifier < 0 then
|
|
daytime_extra_life_modifier = 0
|
|
end
|
|
|
|
local extra_lifes = global.map_score * 0.0001 * daytime + daytime_extra_life_modifier
|
|
global.biter_reanimator.forces[2] = extra_lifes
|
|
end
|
|
|
|
function Public.add_score(entity)
|
|
local value = score_values[entity.name]
|
|
if not value then
|
|
return
|
|
end
|
|
global.map_score = global.map_score + value
|
|
end
|
|
|
|
function Public.fleeing_biteys(entity, cause)
|
|
local surface = entity.surface
|
|
if not surface.peaceful_mode then
|
|
return
|
|
end
|
|
|
|
if not cause then
|
|
return
|
|
end
|
|
if not cause.valid then
|
|
return
|
|
end
|
|
if entity.type ~= 'unit' then
|
|
return
|
|
end
|
|
|
|
local unit_groups = {}
|
|
local position = entity.position
|
|
local units = surface.find_entities_filtered({type = 'unit', force = 'enemy', area = {{position.x - 16, position.y - 16}, {position.x + 16, position.y + 16}}})
|
|
|
|
for _, unit in pairs(units) do
|
|
local unit_group = unit.unit_group
|
|
if unit_group then
|
|
if unit_group.valid then
|
|
if not unit_groups[unit_group.group_number] then
|
|
unit_groups[unit_group.group_number] = unit_group
|
|
end
|
|
end
|
|
else
|
|
unit.set_command(
|
|
{
|
|
type = defines.command.flee,
|
|
from = cause,
|
|
distraction = defines.distraction.none
|
|
}
|
|
)
|
|
end
|
|
end
|
|
|
|
for _, group in pairs(unit_groups) do
|
|
group.set_command(
|
|
{
|
|
type = defines.command.flee,
|
|
from = cause,
|
|
distraction = defines.distraction.none
|
|
}
|
|
)
|
|
end
|
|
end
|
|
|
|
return Public
|