mirror of
https://github.com/ComfyFactory/ComfyFactorio.git
synced 2025-02-05 13:15:03 +02:00
updates
This commit is contained in:
parent
3c07a9f547
commit
92a5e5f666
@ -5,21 +5,45 @@ local math_random = math.random
|
||||
require 'utils.table'
|
||||
|
||||
local search_radius = 6
|
||||
local explosions = {"explosion", "explosion", "explosion", "medium-explosion", "uranium-cannon-explosion"}
|
||||
local explosions = {"explosion", "explosion", "explosion", "explosion", "explosion", "explosion", "medium-explosion", "uranium-cannon-explosion", "uranium-cannon-explosion"}
|
||||
|
||||
local default_limit = 2
|
||||
local entity_limits = {
|
||||
["transport-belt"] = 7,
|
||||
["transport-belt"] = search_radius * 2 + 1,
|
||||
["pipe"] = search_radius * 2 + 2,
|
||||
["pipe-to-ground"] = 2,
|
||||
["heat-pipe"] = search_radius * 2,
|
||||
["inserter"] = 3,
|
||||
["underground-belt"] = 3,
|
||||
["electric-pole"] = 2,
|
||||
["assembling-machine"] = 2
|
||||
["electric-pole"] = 3,
|
||||
["generator"] = 1,
|
||||
["assembling-machine"] = 4,
|
||||
["accumulator"] = 4,
|
||||
["container"] = search_radius * 2,
|
||||
["furnace"] = 4,
|
||||
["mining-drill"] = 1
|
||||
}
|
||||
|
||||
local ignore_list = {
|
||||
["curved-rail"] = true,
|
||||
["straight-rail"] = true,
|
||||
["rail-signal"] = true,
|
||||
["rail-chain-signal"] = true,
|
||||
["car"] = true,
|
||||
["cargo-wagon"] = true,
|
||||
["locomotive"] = true,
|
||||
["land-mine"] = true,
|
||||
["entity-ghost"] = true,
|
||||
["character"] = true,
|
||||
["gate"] = true,
|
||||
["wall"] = true
|
||||
}
|
||||
|
||||
local function error_message()
|
||||
local errors = {"spaghett", "not found", "cat", "error", "not enough", "pylons", "out of", "limit reached", "void",
|
||||
"balance", "operation", "alert", "not responding", "angry", "sad", "not working", "can not compute", "unstable location", "invalid",
|
||||
"gearwheel", "malfunction", "unknown", "can not", "wrong", "dog", "ocelot", "failure", "division by", "zero", "bathwater", "faulty", "conveyor", "too many"
|
||||
"gearwheel", "malfunctioning", "unknown", "can not", "wrong", "dog", "ocelot", "failure", "division by", "zero", "bathwater", "faulty", "conveyor", "too many",
|
||||
"ravioli", "pasta", "overflow", "major"
|
||||
}
|
||||
table.shuffle_table(errors)
|
||||
local message = table.concat({errors[1], " ", errors[2], " ", errors[3], "!"})
|
||||
@ -28,8 +52,8 @@ end
|
||||
|
||||
local function count_same_entities(entity)
|
||||
local same_entity_count = 0
|
||||
for _, e in pairs(entity.surface.find_entities_filtered({name = entity.name, area = {{entity.position.x - search_radius, entity.position.y - search_radius},{entity.position.x + search_radius, entity.position.y + search_radius}}})) do
|
||||
if entity.name == e.name and entity.direction == e.direction then
|
||||
for _, e in pairs(entity.surface.find_entities_filtered({type = entity.type, area = {{entity.position.x - search_radius, entity.position.y - search_radius},{entity.position.x + search_radius, entity.position.y + search_radius}}})) do
|
||||
if entity.type == e.type and entity.direction == e.direction then
|
||||
same_entity_count = same_entity_count + 1
|
||||
end
|
||||
end
|
||||
@ -37,20 +61,27 @@ local function count_same_entities(entity)
|
||||
end
|
||||
|
||||
local function spaghett(surface, entity, inventory, player)
|
||||
if ignore_list[entity.type] then return end
|
||||
local limit = entity_limits[entity.type]
|
||||
if not limit then limit = 2 end
|
||||
if count_same_entities(entity) > limit then
|
||||
inventory.insert({name = entity.name, count = 1})
|
||||
surface.create_entity({name = explosions[math_random(1, #explosions)], position = entity.position})
|
||||
entity.die("player")
|
||||
if player then
|
||||
if not global.last_spaghett_error then global.last_spaghett_error = {} end
|
||||
if not global.last_spaghett_error[player.index] then global.last_spaghett_error[player.index] = 0 end
|
||||
if game.tick - global.last_spaghett_error[player.index] > 180 then
|
||||
game.print(error_message(), {r = math.random(200, 255), g = math.random(150, 200), b = math.random(150, 200)})
|
||||
if game.tick - global.last_spaghett_error[player.index] > 30 then
|
||||
local gb = math.random(0, 150)
|
||||
surface.create_entity({
|
||||
name = "flying-text",
|
||||
position = entity.position,
|
||||
text = error_message(),
|
||||
color = {r = math.random(200, 255), g = math.random(0, 125), b = math.random(0, 125)}
|
||||
})
|
||||
global.last_spaghett_error[player.index] = game.tick
|
||||
end
|
||||
end
|
||||
entity.die("player")
|
||||
end
|
||||
end
|
||||
|
||||
@ -66,6 +97,35 @@ local function on_robot_built_entity(event)
|
||||
spaghett(event.robot.surface, event.created_entity, event.robot.get_inventory(defines.inventory.robot_cargo))
|
||||
end
|
||||
|
||||
function on_player_created(event)
|
||||
local force = game.players[event.player_index].force
|
||||
force.technologies["logistic-system"].enabled = false
|
||||
force.technologies["construction-robotics"].enabled = false
|
||||
force.technologies["logistic-robotics"].enabled = false
|
||||
force.technologies["robotics"].enabled = false
|
||||
force.technologies["personal-roboport-equipment"].enabled = false
|
||||
force.technologies["personal-roboport-mk2-equipment"].enabled = false
|
||||
force.technologies["character-logistic-trash-slots-1"].enabled = false
|
||||
force.technologies["character-logistic-trash-slots-2"].enabled = false
|
||||
force.technologies["auto-character-logistic-trash-slots"].enabled = false
|
||||
force.technologies["worker-robots-storage-1"].enabled = false
|
||||
force.technologies["worker-robots-storage-2"].enabled = false
|
||||
force.technologies["worker-robots-storage-3"].enabled = false
|
||||
force.technologies["character-logistic-slots-1"].enabled = false
|
||||
force.technologies["character-logistic-slots-2"].enabled = false
|
||||
force.technologies["character-logistic-slots-3"].enabled = false
|
||||
force.technologies["character-logistic-slots-4"].enabled = false
|
||||
force.technologies["character-logistic-slots-5"].enabled = false
|
||||
force.technologies["character-logistic-slots-6"].enabled = false
|
||||
force.technologies["worker-robots-speed-1"].enabled = false
|
||||
force.technologies["worker-robots-speed-2"].enabled = false
|
||||
force.technologies["worker-robots-speed-3"].enabled = false
|
||||
force.technologies["worker-robots-speed-4"].enabled = false
|
||||
force.technologies["worker-robots-speed-5"].enabled = false
|
||||
force.technologies["worker-robots-speed-6"].enabled = false
|
||||
end
|
||||
|
||||
event.add(defines.events.on_player_created, on_player_created)
|
||||
event.add(defines.events.on_robot_built_entity, on_robot_built_entity)
|
||||
event.add(defines.events.on_built_entity, on_built_entity)
|
||||
event.add(defines.events.on_player_rotated_entity, on_player_rotated_entity)
|
Loading…
x
Reference in New Issue
Block a user