mirror of
https://github.com/ComfyFactory/ComfyFactorio.git
synced 2025-01-08 00:39:30 +02:00
105 lines
3.6 KiB
Lua
105 lines
3.6 KiB
Lua
local function init_surface()
|
|
local map_gen_settings = {}
|
|
map_gen_settings.water = "0"
|
|
map_gen_settings.starting_area = "5"
|
|
map_gen_settings.cliff_settings = {cliff_elevation_interval = 12, cliff_elevation_0 = 32}
|
|
map_gen_settings.autoplace_controls = {
|
|
["coal"] = {frequency = "0", size = "0", richness = "0"},
|
|
["stone"] = {frequency = "0", size = "0", richness = "0"},
|
|
["copper-ore"] = {frequency = "0", size = "0", richness = "0"},
|
|
["iron-ore"] = {frequency = "0", size = "0", richness = "0"},
|
|
["uranium-ore"] = {frequency = "0", size = "0", richness = "0"},
|
|
["crude-oil"] = {frequency = "0", size = "0", richness = "0"},
|
|
["trees"] = {frequency = "0", size = "0", richness = "0"},
|
|
["enemy-base"] = {frequency = "0", size = "0", richness = "0"}
|
|
}
|
|
local surface = game.create_surface("wave_of_death", map_gen_settings)
|
|
|
|
game.map_settings.enemy_evolution.time_factor = 0
|
|
game.map_settings.enemy_evolution.destroy_factor = 0
|
|
game.map_settings.enemy_evolution.pollution_factor = 0
|
|
game.map_settings.pollution.enabled = false
|
|
game.map_settings.enemy_expansion.enabled = false
|
|
game.difficulty_settings.technology_price_multiplier = 0.8
|
|
|
|
return surface
|
|
end
|
|
|
|
local function init_forces(surface)
|
|
game.create_force("1")
|
|
game.create_force("2")
|
|
game.create_force("3")
|
|
game.create_force("4")
|
|
|
|
for _, force in pairs(game.forces) do
|
|
if force.name ~= "enemy" then
|
|
force.technologies["optics"].researched = true
|
|
force.technologies["artillery"].enabled = false
|
|
force.technologies["artillery-shell-range-1"].enabled = false
|
|
force.technologies["artillery-shell-speed-1"].enabled = false
|
|
force.technologies["atomic-bomb"].enabled = false
|
|
force.set_ammo_damage_modifier("shotgun-shell", 1)
|
|
force.research_queue_enabled = true
|
|
force.share_chart = true
|
|
for _, force_2 in pairs(game.forces) do
|
|
if force_2.name ~= "enemy" then
|
|
force.set_cease_fire(force_2.name, true)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
for i = 1, 4, 1 do
|
|
game.forces[i].set_friend("player", true)
|
|
game.forces["player"].set_friend(game.forces[i].name, true)
|
|
end
|
|
game.forces["player"].set_spawn_position({x = 32, y = 0}, surface)
|
|
|
|
local p = game.permissions.create_group("spectator")
|
|
for action_name, _ in pairs(defines.input_action) do
|
|
p.set_allows_action(defines.input_action[action_name], false)
|
|
end
|
|
local defs = {
|
|
defines.input_action.write_to_console,
|
|
defines.input_action.gui_click,
|
|
defines.input_action.gui_selection_state_changed,
|
|
defines.input_action.gui_checked_state_changed ,
|
|
defines.input_action.gui_elem_changed,
|
|
defines.input_action.gui_text_changed,
|
|
defines.input_action.gui_value_changed,
|
|
defines.input_action.start_walking,
|
|
defines.input_action.open_kills_gui,
|
|
defines.input_action.open_character_gui,
|
|
defines.input_action.edit_permission_group,
|
|
defines.input_action.toggle_show_entity_info,
|
|
defines.input_action.rotate_entity,
|
|
defines.input_action.start_research
|
|
}
|
|
for _, d in pairs(defs) do p.set_allows_action(d, true) end
|
|
end
|
|
|
|
local function init_globals()
|
|
global.spread_amount_modifier = 0.75 --percentage of a cleared wave to spawn at all other teams
|
|
global.wod_lane = {}
|
|
global.wod_biters = {}
|
|
global.lobby_active = true
|
|
|
|
for i = 1, 4, 1 do
|
|
global.wod_lane[i] = {}
|
|
global.wod_lane[i].current_wave = 1
|
|
global.wod_lane[i].alive_biters = 0
|
|
global.wod_lane[i].game_lost = false
|
|
end
|
|
end
|
|
|
|
local function init()
|
|
if global.spread_amount_modifier then return end
|
|
local surface = init_surface()
|
|
init_globals()
|
|
init_forces(surface)
|
|
|
|
surface.request_to_generate_chunks({x = 0, y = 0}, 8)
|
|
surface.force_generate_chunk_requests()
|
|
end
|
|
|
|
return init |