mirror of
https://github.com/ComfyFactory/ComfyFactorio.git
synced 2025-01-10 00:43:27 +02:00
85 lines
2.1 KiB
Lua
85 lines
2.1 KiB
Lua
local Public = {}
|
|
|
|
local math_abs = math.abs
|
|
|
|
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, tick)
|
|
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 |