mirror of
https://github.com/ComfyFactory/ComfyFactorio.git
synced 2025-03-17 20:58:13 +02:00
fixes
This commit is contained in:
parent
e43cb5b7f2
commit
edbef96f78
@ -26,7 +26,6 @@ local this = {
|
||||
players_warned = {},
|
||||
log_tree_harvest = false,
|
||||
do_not_check_trusted = true,
|
||||
protect_entities = true,
|
||||
enable_autokick = true,
|
||||
enable_autoban = false
|
||||
}
|
||||
@ -53,52 +52,6 @@ local ammo_names = {
|
||||
['rocket'] = true
|
||||
}
|
||||
|
||||
local protected = {
|
||||
['reactor'] = true,
|
||||
['roboport'] = true,
|
||||
['rocket-silo'] = true,
|
||||
['solar-panel'] = true,
|
||||
['generator'] = true,
|
||||
['splitter'] = true,
|
||||
['transport-belt'] = true,
|
||||
['underground-belt'] = true,
|
||||
['assembling-machine'] = true,
|
||||
['storage-tank'] = true,
|
||||
['pump'] = true,
|
||||
['mining-drill'] = true,
|
||||
['market'] = true,
|
||||
['accumulator'] = true,
|
||||
['ammo-turret'] = true,
|
||||
['artillery-turret'] = true,
|
||||
['artillery-wagon'] = true,
|
||||
['beacon'] = true,
|
||||
['boiler'] = true,
|
||||
['burner-generator'] = true,
|
||||
['car'] = true,
|
||||
['cargo-wagon'] = true,
|
||||
['constant-combinator'] = true,
|
||||
['straight-rail'] = true,
|
||||
['curved-rail'] = true,
|
||||
['decider-combinator'] = true,
|
||||
['electric-pole'] = true,
|
||||
['electric-turret'] = true,
|
||||
['fluid-turret'] = true,
|
||||
['fluid-wagon'] = true,
|
||||
['furnace'] = true,
|
||||
['gate'] = true,
|
||||
['heat-interface'] = true,
|
||||
['heat-pipe'] = true,
|
||||
['inserter'] = true,
|
||||
['lab'] = true,
|
||||
['lamp'] = true,
|
||||
['loader'] = true,
|
||||
['locomotive'] = true,
|
||||
['logistic-robot'] = true,
|
||||
['offshore-pump'] = true,
|
||||
['pipe-to-ground'] = true,
|
||||
['pipe'] = true
|
||||
}
|
||||
|
||||
Global.register(
|
||||
this,
|
||||
function(t)
|
||||
@ -704,46 +657,6 @@ local function on_player_cancelled_crafting(event)
|
||||
end
|
||||
end
|
||||
|
||||
local function protect_entities(event)
|
||||
local entity = event.entity
|
||||
|
||||
local function is_protected(e)
|
||||
if protected[e.type] then
|
||||
return true
|
||||
end
|
||||
|
||||
return false
|
||||
end
|
||||
|
||||
if is_protected(entity) then
|
||||
entity.health = entity.health + event.final_damage_amount
|
||||
end
|
||||
end
|
||||
|
||||
--- Protect entities from the player force
|
||||
---@param event
|
||||
local function on_entity_damaged(event)
|
||||
if not this.protect_entities then
|
||||
return
|
||||
end
|
||||
|
||||
local entity = event.entity
|
||||
|
||||
if not entity or not entity.valid then
|
||||
return
|
||||
end
|
||||
|
||||
if event.force.index ~= 1 then
|
||||
return
|
||||
end
|
||||
|
||||
if entity.force.index ~= 1 then
|
||||
return
|
||||
end
|
||||
|
||||
protect_entities(event)
|
||||
end
|
||||
|
||||
local function on_init()
|
||||
local branch_version = '0.18.35'
|
||||
local sub = string.sub
|
||||
@ -767,14 +680,6 @@ local function on_init()
|
||||
end
|
||||
end
|
||||
|
||||
--- Enabling this will protect all entities except for those in the not_protected table.
|
||||
---@param boolean true/false
|
||||
function Public.protect_entities(value)
|
||||
if value then
|
||||
this.protect_entities = value
|
||||
end
|
||||
end
|
||||
|
||||
--- This will reset the table of this
|
||||
function Public.reset_tables()
|
||||
this.landfill_history = {}
|
||||
@ -833,6 +738,5 @@ Event.add(defines.events.on_player_used_capsule, on_player_used_capsule)
|
||||
Event.add(defines.events.on_player_cursor_stack_changed, on_player_cursor_stack_changed)
|
||||
Event.add(defines.events.on_player_cancelled_crafting, on_player_cancelled_crafting)
|
||||
Event.add(defines.events.on_player_joined_game, on_player_joined_game)
|
||||
Event.add(defines.events.on_entity_damaged, on_entity_damaged)
|
||||
|
||||
return Public
|
||||
|
@ -13,7 +13,8 @@ to your scenario control.lua.
|
||||
Minor changes by ~~~Gerkiz~~~
|
||||
--]]
|
||||
local Event = require 'utils.event'
|
||||
local play_time = require 'utils.session_data'
|
||||
local Session = require 'utils.session_data'
|
||||
local Jailed = require 'utils.jail_data'
|
||||
local Tabs = require 'comfy_panel.main'
|
||||
|
||||
local symbol_asc = '▲'
|
||||
@ -218,7 +219,7 @@ local function get_formatted_playtime(x)
|
||||
end
|
||||
|
||||
local function get_rank(player)
|
||||
local play_table = play_time.get_session_table()
|
||||
local play_table = Session.get_session_table()
|
||||
local t = 0
|
||||
if play_table then
|
||||
if play_table[player.name] then
|
||||
@ -337,7 +338,7 @@ local function get_comparator(sort_by)
|
||||
end
|
||||
|
||||
local function get_sorted_list(sort_by)
|
||||
local play_table = play_time.get_session_table()
|
||||
local play_table = Session.get_session_table()
|
||||
local player_list = {}
|
||||
for i, player in pairs(game.connected_players) do
|
||||
player_list[i] = {}
|
||||
@ -369,12 +370,14 @@ local function player_list_show(player, frame, sort_by)
|
||||
-- Frame management
|
||||
frame.clear()
|
||||
frame.style.padding = 8
|
||||
local play_table = play_time.get_trusted_table()
|
||||
local play_table = Session.get_trusted_table()
|
||||
local jailed = Jailed.get_jailed_table()
|
||||
|
||||
-- Header management
|
||||
local t = frame.add {type = 'table', name = 'player_list_panel_header_table', column_count = 5}
|
||||
local column_widths = {tonumber(40), tonumber(240), tonumber(240), tonumber(150), tonumber(100)}
|
||||
for _, w in ipairs(column_widths) do
|
||||
local column_widths = {tonumber(40), tonumber(218), tonumber(220), tonumber(222), tonumber(50)}
|
||||
local header_column_widths = {tonumber(40), tonumber(210), tonumber(220), tonumber(226), tonumber(50)}
|
||||
for _, w in ipairs(header_column_widths) do
|
||||
local label = t.add {type = 'label', caption = ''}
|
||||
label.style.minimal_width = w
|
||||
label.style.maximal_width = w
|
||||
@ -427,14 +430,14 @@ local function player_list_show(player, frame, sort_by)
|
||||
header_modifier[sort_by](headers)
|
||||
|
||||
for k, v in ipairs(headers) do
|
||||
local label =
|
||||
local header_label =
|
||||
t.add {
|
||||
type = 'label',
|
||||
name = 'player_list_panel_header_' .. k,
|
||||
caption = v
|
||||
}
|
||||
label.style.font = 'default-bold'
|
||||
label.style.font_color = {r = 0.98, g = 0.66, b = 0.22}
|
||||
header_label.style.font = 'default-bold'
|
||||
header_label.style.font_color = {r = 0.98, g = 0.66, b = 0.22}
|
||||
end
|
||||
|
||||
-- special style on first header
|
||||
@ -476,6 +479,9 @@ local function player_list_show(player, frame, sort_by)
|
||||
if game.players[player_list[i].name].admin then
|
||||
trusted = '[color=red][A][/color]'
|
||||
tooltip = 'This player is an admin of this server.'
|
||||
elseif jailed[player_list[i].name] then
|
||||
trusted = '[color=orange][J][/color]'
|
||||
tooltip = 'This player is currently jailed.'
|
||||
elseif play_table[player_list[i].name] then
|
||||
trusted = '[color=green][T][/color]'
|
||||
tooltip = 'This player is trusted.'
|
||||
@ -485,41 +491,42 @@ local function player_list_show(player, frame, sort_by)
|
||||
end
|
||||
|
||||
-- Name
|
||||
local label =
|
||||
local name_label =
|
||||
player_list_panel_table.add {
|
||||
type = 'label',
|
||||
name = 'player_list_panel_player_names_' .. i,
|
||||
caption = player_list[i].name .. ' ' .. trusted,
|
||||
tooltip = tooltip
|
||||
}
|
||||
label.style.font = 'default'
|
||||
label.style.font_color = {
|
||||
r = .4 + game.players[player_list[i].player_index].color.r * 0.6,
|
||||
g = .4 + game.players[player_list[i].player_index].color.g * 0.6,
|
||||
b = .4 + game.players[player_list[i].player_index].color.b * 0.6
|
||||
local p_color = game.players[player_list[i].player_index]
|
||||
name_label.style.font = 'default'
|
||||
name_label.style.font_color = {
|
||||
r = .4 + p_color.color.r * 0.6,
|
||||
g = .4 + p_color.color.g * 0.6,
|
||||
b = .4 + p_color.color.b * 0.6
|
||||
}
|
||||
label.style.minimal_width = column_widths[2]
|
||||
label.style.maximal_width = column_widths[2]
|
||||
name_label.style.minimal_width = column_widths[2]
|
||||
name_label.style.maximal_width = column_widths[2]
|
||||
|
||||
-- Total time
|
||||
local label =
|
||||
local total_label =
|
||||
player_list_panel_table.add {
|
||||
type = 'label',
|
||||
name = 'player_list_panel_player_total_time_played_' .. i,
|
||||
caption = player_list[i].total_played_time
|
||||
}
|
||||
label.style.minimal_width = column_widths[3]
|
||||
label.style.maximal_width = column_widths[3]
|
||||
total_label.style.minimal_width = column_widths[3]
|
||||
total_label.style.maximal_width = column_widths[3]
|
||||
|
||||
-- Current time
|
||||
local label =
|
||||
local current_label =
|
||||
player_list_panel_table.add {
|
||||
type = 'label',
|
||||
name = 'player_list_panel_player_time_played_' .. i,
|
||||
caption = player_list[i].played_time
|
||||
}
|
||||
label.style.minimal_width = column_widths[4]
|
||||
label.style.maximal_width = column_widths[4]
|
||||
current_label.style.minimal_width = column_widths[4]
|
||||
current_label.style.maximal_width = column_widths[4]
|
||||
|
||||
-- Poke
|
||||
local flow = player_list_panel_table.add {type = 'flow', name = 'button_flow_' .. i, direction = 'horizontal'}
|
||||
@ -527,6 +534,7 @@ local function player_list_show(player, frame, sort_by)
|
||||
local button =
|
||||
flow.add {type = 'button', name = 'poke_player_' .. player_list[i].name, caption = player_list[i].pokes}
|
||||
button.style.font = 'default'
|
||||
button.tooltip = 'Poke ' .. player_list[i].name .. ' with a random message!'
|
||||
label.style.font_color = {r = 0.83, g = 0.83, b = 0.83}
|
||||
button.style.minimal_height = 30
|
||||
button.style.minimal_width = 30
|
||||
|
@ -1,5 +1,6 @@
|
||||
local Server = require 'utils.server'
|
||||
local FDT = require 'maps.fish_defender.table'
|
||||
local Task = require 'utils.task'
|
||||
|
||||
local mapkeeper = '[color=blue]Mapkeeper:[/color]'
|
||||
|
||||
@ -93,3 +94,55 @@ commands.add_command(
|
||||
end
|
||||
end
|
||||
)
|
||||
|
||||
commands.add_command(
|
||||
'set_queue_speed',
|
||||
'Usable only for admins - sets the queue speed of this map!',
|
||||
function(cmd)
|
||||
local p
|
||||
local player = game.player
|
||||
local param = tonumber(cmd.parameter)
|
||||
|
||||
if player then
|
||||
if player ~= nil then
|
||||
p = player.print
|
||||
if not player.admin then
|
||||
p("[ERROR] You're not admin!", Color.fail)
|
||||
return
|
||||
end
|
||||
if not param then
|
||||
return
|
||||
end
|
||||
p('Queue speed set to: ' .. param)
|
||||
Task.set_queue_speed(param)
|
||||
else
|
||||
p = log
|
||||
p('Queue speed set to: ' .. param)
|
||||
Task.set_queue_speed(param)
|
||||
end
|
||||
end
|
||||
end
|
||||
)
|
||||
|
||||
commands.add_command(
|
||||
'get_queue_speed',
|
||||
'Usable only for admins - gets the queue speed of this map!',
|
||||
function()
|
||||
local p
|
||||
local player = game.player
|
||||
|
||||
if player then
|
||||
if player ~= nil then
|
||||
p = player.print
|
||||
if not player.admin then
|
||||
p("[ERROR] You're not admin!", Color.fail)
|
||||
return
|
||||
end
|
||||
p(Task.get_queue_speed())
|
||||
else
|
||||
p = log
|
||||
p(Task.get_queue_speed())
|
||||
end
|
||||
end
|
||||
end
|
||||
)
|
||||
|
@ -13,6 +13,7 @@ require 'modules.dangerous_goods'
|
||||
require 'modules.custom_death_messages'
|
||||
|
||||
local Terrain = require 'maps.fish_defender.terrain'
|
||||
local Task = require 'utils.task'
|
||||
local Unit_health_booster = require 'modules.biter_health_booster'
|
||||
local Difficulty = require 'modules.difficulty_vote'
|
||||
local Map = require 'modules.map_info'
|
||||
@ -40,14 +41,11 @@ local starting_items = {
|
||||
['stone'] = 12
|
||||
}
|
||||
|
||||
local function shuffle(t)
|
||||
local tbl = {}
|
||||
for i = 1, #t do
|
||||
tbl[i] = t[i]
|
||||
end
|
||||
for i = #tbl, 2, -1 do
|
||||
local j = math.random(i)
|
||||
tbl[i], tbl[j] = tbl[j], tbl[i]
|
||||
local function shuffle(tbl)
|
||||
local size = #tbl
|
||||
for i = size, 1, -1 do
|
||||
local rand = math.random(size)
|
||||
tbl[i], tbl[rand] = tbl[rand], tbl[i]
|
||||
end
|
||||
return tbl
|
||||
end
|
||||
@ -551,19 +549,30 @@ local function wake_up_the_biters(surface)
|
||||
)
|
||||
end
|
||||
|
||||
local function damage_entity_outside_of_fence(e)
|
||||
local function damage_entity_outside_and_inside_of_fence(e)
|
||||
if not e.health then
|
||||
return
|
||||
end
|
||||
|
||||
if e.force.name == 'neutral' then
|
||||
return
|
||||
end
|
||||
|
||||
if e.type == 'unit' or e.type == 'unit-spawner' then
|
||||
return
|
||||
end
|
||||
|
||||
e.surface.create_entity({name = 'water-splash', position = e.position})
|
||||
|
||||
if e.type == 'land-mine' then
|
||||
e.health =
|
||||
e.health - math_random(math.floor(e.prototype.max_health * 0.2), math.floor(e.prototype.max_health * 0.4))
|
||||
if e.health <= 0 then
|
||||
e.die('enemy')
|
||||
end
|
||||
return
|
||||
end
|
||||
|
||||
if e.type == 'entity-ghost' then
|
||||
e.destroy()
|
||||
return
|
||||
@ -646,8 +655,8 @@ local function biter_attack_wave()
|
||||
-- end
|
||||
--end
|
||||
|
||||
for _, e in pairs(surface.find_entities_filtered({area = {{160, -256}, {360, 256}}})) do
|
||||
damage_entity_outside_of_fence(e)
|
||||
for _, e in pairs(surface.find_entities_filtered({area = {{110, -256}, {360, 256}}})) do
|
||||
damage_entity_outside_and_inside_of_fence(e)
|
||||
end
|
||||
|
||||
local y_raffle = get_y_coord_raffle_table()
|
||||
@ -1432,6 +1441,9 @@ function Public.reset_game()
|
||||
|
||||
Terrain.fish_eye(surface, {x = -2150, y = -300})
|
||||
|
||||
Task.get_task_queue(4)
|
||||
Task.start_queue()
|
||||
|
||||
game.map_settings.enemy_expansion.enabled = false
|
||||
game.map_settings.enemy_evolution.destroy_factor = 0
|
||||
game.map_settings.enemy_evolution.time_factor = 0
|
||||
|
@ -25,6 +25,7 @@ function Public.reset_table()
|
||||
this.game_reset = false
|
||||
this.spawn_area_generated = false
|
||||
this.results_sent = false
|
||||
|
||||
this.explosive_bullets_unlocked = false
|
||||
this.bouncy_shells_unlocked = false
|
||||
this.trapped_capsules_unlocked = false
|
||||
@ -49,7 +50,7 @@ function Public.reset_table()
|
||||
['laser-turret'] = {placed = 0, limit = 1, str = 'laser turret', slot_price = 300},
|
||||
['artillery-turret'] = {placed = 0, limit = 1, str = 'artillery turret', slot_price = 500},
|
||||
['flamethrower-turret'] = {placed = 0, limit = 0, str = 'flamethrower turret', slot_price = 50000},
|
||||
['land-mine'] = {placed = 0, limit = 1, str = 'mine', slot_price = 6}
|
||||
['land-mine'] = {placed = 0, limit = 1, str = 'mine', slot_price = 20}
|
||||
}
|
||||
this.difficulties_votes = {
|
||||
[1] = {wave_interval = 4500, amount_modifier = 0.52, strength_modifier = 0.40, boss_modifier = 3.0},
|
||||
|
@ -2,10 +2,14 @@ local Event = require 'utils.event'
|
||||
local map_functions = require 'tools.map_functions'
|
||||
local simplex_noise = require 'utils.simplex_noise'.d2
|
||||
local FDT = require 'maps.fish_defender.table'
|
||||
local Task = require 'utils.task'
|
||||
local Token = require 'utils.token'
|
||||
local math_random = math.random
|
||||
local math_abs = math.abs
|
||||
local math_floor = math.floor
|
||||
local math_sqrt = math.sqrt
|
||||
local tiles_per_call = 16
|
||||
local total_calls = math.ceil(1024 / tiles_per_call)
|
||||
|
||||
local Public = {}
|
||||
|
||||
@ -21,14 +25,11 @@ local rock_raffle = {
|
||||
'rock-huge'
|
||||
}
|
||||
|
||||
local function shuffle(t)
|
||||
local tbl = {}
|
||||
for i = 1, #t do
|
||||
tbl[i] = t[i]
|
||||
end
|
||||
for i = #tbl, 2, -1 do
|
||||
local j = math.random(i)
|
||||
tbl[i], tbl[j] = tbl[j], tbl[i]
|
||||
local function shuffle(tbl)
|
||||
local size = #tbl
|
||||
for i = size, 1, -1 do
|
||||
local rand = math.random(size)
|
||||
tbl[i], tbl[rand] = tbl[rand], tbl[i]
|
||||
end
|
||||
return tbl
|
||||
end
|
||||
@ -287,76 +288,6 @@ local function plankton_territory(surface, position, seed)
|
||||
return 'water'
|
||||
end
|
||||
|
||||
local function process_chunk(left_top)
|
||||
local this = FDT.get()
|
||||
local surface = game.surfaces[this.active_surface_index]
|
||||
if not surface or not surface.valid then
|
||||
return
|
||||
end
|
||||
|
||||
local seed = game.surfaces[1].map_gen_settings.seed
|
||||
|
||||
Public.generate_spawn_area(this, surface, left_top)
|
||||
enemy_territory(surface, left_top)
|
||||
fish_mouth(surface, left_top)
|
||||
|
||||
local tiles = {}
|
||||
|
||||
for x = 0, 31, 1 do
|
||||
for y = 0, 31, 1 do
|
||||
local pos = {x = left_top.x + x, y = left_top.y + y}
|
||||
if is_out_of_map_tile(pos) then
|
||||
--if not plankton_territory(surface, pos, seed) then surface.set_tiles({{name = "out-of-map", position = pos}}, true) end
|
||||
local tile_to_set = plankton_territory(surface, pos, seed)
|
||||
--local tile_to_set = "out-of-map"
|
||||
tiles[#tiles + 1] = {name = tile_to_set, position = pos}
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
surface.set_tiles(tiles, true)
|
||||
|
||||
--if game.tick == 0 then return end
|
||||
--if game.forces.player.is_chunk_charted(surface, {left_top.x / 32, left_top.y / 32}) then
|
||||
game.forces.player.chart(surface, {{left_top.x, left_top.y}, {left_top.x + 31, left_top.y + 31}})
|
||||
--end
|
||||
if this.market and this.market.valid then
|
||||
this.game_reset = false
|
||||
end
|
||||
end
|
||||
|
||||
local function process_chunk_queue()
|
||||
local chunks = #global.chunk_queue
|
||||
if chunks <= 0 then
|
||||
return
|
||||
end
|
||||
|
||||
for k, left_top in pairs(global.chunk_queue) do
|
||||
process_chunk(left_top)
|
||||
global.chunk_queue[k] = nil
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
local function on_chunk_generated(event)
|
||||
local map_name = 'fish_defender'
|
||||
|
||||
if string.sub(event.surface.name, 0, #map_name) ~= map_name then
|
||||
return
|
||||
end
|
||||
local left_top = event.area.left_top
|
||||
local this = FDT.get()
|
||||
if this.game_has_ended then
|
||||
return
|
||||
end
|
||||
|
||||
if game.tick == 0 or this.game_reset or this.force_chunk then
|
||||
process_chunk(left_top)
|
||||
else
|
||||
global.chunk_queue[#global.chunk_queue + 1] = {x = left_top.x, y = left_top.y}
|
||||
end
|
||||
end
|
||||
|
||||
local function render_market_hp()
|
||||
local this = FDT.get()
|
||||
local surface = game.surfaces[this.active_surface_index]
|
||||
@ -391,7 +322,7 @@ local function render_market_hp()
|
||||
}
|
||||
end
|
||||
|
||||
function Public.generate_spawn_area(this, surface)
|
||||
local function generate_spawn_area(this, surface)
|
||||
if this.spawn_area_generated then
|
||||
return
|
||||
end
|
||||
@ -541,6 +472,81 @@ function Public.generate_spawn_area(this, surface)
|
||||
this.spawn_area_generated = true
|
||||
end
|
||||
|
||||
local function process_chunk(left_top)
|
||||
local this = FDT.get()
|
||||
local surface = game.surfaces[this.active_surface_index]
|
||||
if not surface or not surface.valid then
|
||||
return
|
||||
end
|
||||
|
||||
local seed = game.surfaces[1].map_gen_settings.seed
|
||||
|
||||
generate_spawn_area(this, surface, left_top)
|
||||
enemy_territory(surface, left_top)
|
||||
fish_mouth(surface, left_top)
|
||||
|
||||
local tiles = {}
|
||||
|
||||
for x = 0, 31, 1 do
|
||||
for y = 0, 31, 1 do
|
||||
local pos = {x = left_top.x + x, y = left_top.y + y}
|
||||
if is_out_of_map_tile(pos) then
|
||||
--if not plankton_territory(surface, pos, seed) then surface.set_tiles({{name = "out-of-map", position = pos}}, true) end
|
||||
local tile_to_set = plankton_territory(surface, pos, seed)
|
||||
--local tile_to_set = "out-of-map"
|
||||
tiles[#tiles + 1] = {name = tile_to_set, position = pos}
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
surface.set_tiles(tiles, true)
|
||||
|
||||
--if game.tick == 0 then return end
|
||||
--if game.forces.player.is_chunk_charted(surface, {left_top.x / 32, left_top.y / 32}) then
|
||||
game.forces.player.chart(surface, {{left_top.x, left_top.y}, {left_top.x + 31, left_top.y + 31}})
|
||||
--end
|
||||
if this.market and this.market.valid then
|
||||
this.game_reset = false
|
||||
end
|
||||
end
|
||||
|
||||
local process_chunk_queue =
|
||||
Token.register(
|
||||
function(data)
|
||||
local chunk_queue = data.chunk_queue
|
||||
|
||||
for i = 1, #chunk_queue do
|
||||
local pos = {x = chunk_queue[i].x, y = chunk_queue[i].y}
|
||||
process_chunk(pos)
|
||||
chunk_queue[i] = nil
|
||||
end
|
||||
end
|
||||
)
|
||||
|
||||
local function on_chunk_generated(event)
|
||||
local map_name = 'fish_defender'
|
||||
|
||||
if string.sub(event.surface.name, 0, #map_name) ~= map_name then
|
||||
return
|
||||
end
|
||||
local left_top = event.area.left_top
|
||||
local this = FDT.get()
|
||||
if this.game_has_ended then
|
||||
return
|
||||
end
|
||||
|
||||
if game.tick == 0 or this.game_reset or this.force_chunk then
|
||||
process_chunk(left_top)
|
||||
else
|
||||
global.chunk_queue[#global.chunk_queue + 1] = {x = left_top.x, y = left_top.y}
|
||||
|
||||
local data = {
|
||||
chunk_queue = global.chunk_queue
|
||||
}
|
||||
Task.set_timeout_in_ticks(total_calls, process_chunk_queue, data)
|
||||
end
|
||||
end
|
||||
|
||||
function Public.fish_eye(surface, position)
|
||||
surface.request_to_generate_chunks(position, 2)
|
||||
surface.force_generate_chunk_requests()
|
||||
@ -567,7 +573,6 @@ function Public.fish_eye(surface, position)
|
||||
end
|
||||
end
|
||||
|
||||
Event.on_nth_tick(25, process_chunk_queue)
|
||||
Event.add(defines.events.on_chunk_generated, on_chunk_generated)
|
||||
|
||||
return Public
|
||||
|
@ -265,7 +265,7 @@ function Public.reset_map()
|
||||
Collapse.set_direction('north')
|
||||
Collapse.start_now(false)
|
||||
|
||||
--[[ local x_value = rng(15, 25)
|
||||
local x_value = rng(15, 25)
|
||||
local y_value = rng(50, 60)
|
||||
|
||||
local data = {
|
||||
@ -274,7 +274,7 @@ function Public.reset_map()
|
||||
['fluid-wagon'] = {left_top = {x = -x_value, y = 0}, right_bottom = {x = x_value, y = y_value}},
|
||||
['locomotive'] = {left_top = {x = -x_value, y = 0}, right_bottom = {x = x_value, y = y_value}}
|
||||
}
|
||||
ICT.set_wagon_area(data) ]]
|
||||
ICT.set_wagon_area(data)
|
||||
this.locomotive_health = 10000
|
||||
this.locomotive_max_health = 10000
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user