local Public = {} function Public.settings() global.gui_refresh_delay = 0 global.game_lobby_active = true global.bb_debug = false global.combat_balance = {} global.nv_settings = { --TEAM SETTINGS-- ['team_balancing'] = true, --Should players only be able to join a team that has less or equal members than the opposing team? ['only_admins_vote'] = false, --Are only admins able to vote on the global difficulty? --GENERAL SETTINGS-- ['blueprint_library_importing'] = false, --Allow the importing of blueprints from the blueprint library? ['blueprint_string_importing'] = false --Allow the importing of blueprints via blueprint strings? } end function Public.surface() local map_gen_settings = {} map_gen_settings.seed = math.random(1, 99999999) map_gen_settings.water = math.random(5, 10) * 0.025 map_gen_settings.starting_area = 1 map_gen_settings.terrain_segmentation = 8 map_gen_settings.cliff_settings = {cliff_elevation_interval = 0, cliff_elevation_0 = 0} map_gen_settings.autoplace_controls = { ['coal'] = {frequency = 2.5, size = 0.65, richness = 0.5}, ['stone'] = {frequency = 2.5, size = 0.65, richness = 0.5}, ['copper-ore'] = {frequency = 2.5, size = 0.65, richness = 0.5}, ['iron-ore'] = {frequency = 2.5, size = 0.65, richness = 0.5}, ['uranium-ore'] = {frequency = 2, size = 1, richness = 1}, ['crude-oil'] = {frequency = 3, size = 1, richness = 0.75}, ['trees'] = {frequency = math.random(5, 12) * 0.1, size = math.random(5, 12) * 0.1, richness = math.random(1, 10) * 0.1}, ['enemy-base'] = {frequency = 0, size = 0, richness = 0} } local surface = game.create_surface('mirror_terrain', map_gen_settings) local hatchery_position = {x = 200, y = 0} local x = hatchery_position.x - 16 local offset = 38 surface.request_to_generate_chunks({x, 0}, 5) surface.force_generate_chunk_requests() local positions = {{x = x, y = offset}, {x = x, y = offset * -1}, {x = x, y = offset * -2}, {x = x, y = offset * 2}} table.shuffle_table(positions) local r = 32 for x = r * -1, r, 1 do for y = r * -1, r, 1 do local p = {x = hatchery_position.x + x, y = hatchery_position.y + y} if math.sqrt(x ^ 2 + y ^ 2) < r then local tile = surface.get_tile(p) if tile.name == 'water' or tile.name == 'deepwater' then surface.set_tiles({{name = 'landfill', position = p}}, true) end end end end local map_gen_settings2 = { ['seed'] = 1, ['water'] = 1, ['starting_area'] = 1, ['cliff_settings'] = {cliff_elevation_interval = 0, cliff_elevation_0 = 0}, ['default_enable_all_autoplace_controls'] = false, ['autoplace_settings'] = { ['entity'] = {treat_missing_as_default = false}, ['tile'] = {treat_missing_as_default = false}, ['decorative'] = {treat_missing_as_default = false} } } global.active_surface_index = game.create_surface('native_war', map_gen_settings2) local surface = game.surfaces['native_war'] surface.request_to_generate_chunks({0, 0}, 8) surface.force_generate_chunk_requests() end function Public.forces() local surface = game.surfaces['native_war'] game.create_force('west') game.create_force('east') game.create_force('spectator') game.forces.west.set_friend('spectator', true) game.forces.west.set_spawn_position({-205, 0}, surface) game.forces.west.share_chart = true game.forces.east.set_friend('spectator', true) game.forces.east.set_spawn_position({205, 0}, surface) game.forces.east.share_chart = true game.forces.spectator.set_friend('west', true) game.forces.spectator.set_friend('east', true) game.forces.spectator.set_spawn_position({0, -190}, surface) game.forces.spectator.share_chart = false if not global.nv_settings.blueprint_library_importing then game.permissions.get_group('Default').set_allows_action(defines.input_action.grab_blueprint_record, false) end if not global.nv_settings.blueprint_string_importing then game.permissions.get_group('Default').set_allows_action(defines.input_action.import_blueprint_string, false) game.permissions.get_group('Default').set_allows_action(defines.input_action.import_blueprint, false) end 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.activate_copy, defines.input_action.activate_cut, defines.input_action.activate_paste, defines.input_action.clear_cursor, defines.input_action.edit_permission_group, defines.input_action.gui_click, defines.input_action.gui_confirmed, defines.input_action.gui_elem_changed, defines.input_action.gui_location_changed, defines.input_action.gui_selected_tab_changed, defines.input_action.gui_selection_state_changed, defines.input_action.gui_switch_state_changed, defines.input_action.gui_text_changed, defines.input_action.gui_value_changed, defines.input_action.open_character_gui, defines.input_action.open_kills_gui, defines.input_action.rotate_entity, defines.input_action.start_walking, defines.input_action.toggle_show_entity_info, defines.input_action.write_to_console } for _, d in pairs(defs) do p.set_allows_action(d, true) end global.rocket_silo = {} global.spectator_rejoin_delay = {} global.spy_fish_timeout = {} global.force_area = {} global.unit_spawners = {} global.unit_spawners.north_biters = {} global.unit_spawners.south_biters = {} global.active_biters = {} global.biter_raffle = {} global.evo_raise_counter = 1 global.next_attack = 'north' if math.random(1, 2) == 1 then global.next_attack = 'south' end global.bb_evolution = {} global.bb_threat_income = {} global.bb_threat = {} global.chunks_to_mirror = {} global.map_pregen_message_counter = {} for _, force_name in pairs({'west', 'east'}) do game.forces[force_name].share_chart = true game.forces[force_name].research_queue_enabled = true game.forces[force_name].technologies['artillery'].enabled = false game.forces[force_name].technologies['artillery-shell-range-1'].enabled = false game.forces[force_name].technologies['artillery-shell-speed-1'].enabled = false game.forces[force_name].technologies['land-mine'].enabled = false game.forces[force_name].technologies['atomic-bomb'].enabled = false game.forces[force_name].research_queue_enabled = true game.forces[force_name].share_chart = true local force_index = game.forces[force_name].index global.map_forces[force_name].unit_health_boost = 1 global.map_forces[force_name].unit_count = 0 global.map_forces[force_name].units = {} global.map_forces[force_name].radar = {} global.map_forces[force_name].max_unit_count = 768 global.map_forces[force_name].player_count = 0 global.biter_reanimator.forces[force_index] = 0 global.map_forces[force_name].energy = 0 global.map_forces[force_name].modifier = {damage = 1, resistance = 1, splash = 1} global.map_forces[force_name].ate_buffer_potion = { ['automation-science-pack'] = 0, ['logistic-science-pack'] = 0, ['military-science-pack'] = 0, ['chemical-science-pack'] = 0, ['production-science-pack'] = 0, ['utility-science-pack'] = 0 } if force_name == 'west' then global.map_forces[force_name].worm_turrets_positions = { [1] = {x = -127, y = -38}, [2] = {x = -112, y = -38}, [3] = {x = -127, y = -70}, [4] = {x = -112, y = -70}, [5] = {x = -127, y = -102}, [6] = {x = -112, y = -102}, [7] = {x = -90, y = -119}, [8] = {x = -90, y = -136}, [9] = {x = -70, y = -90}, [10] = {x = -50, y = -90}, [11] = {x = -70, y = -58}, [12] = {x = -50, y = -58}, [13] = {x = -70, y = -26}, [14] = {x = -50, y = -26}, [15] = {x = -70, y = 0}, [16] = {x = -50, y = 0}, [17] = {x = -70, y = 36}, [18] = {x = -50, y = 36}, [19] = {x = -70, y = 68}, [20] = {x = -50, y = 68}, [21] = {x = -70, y = 100}, [22] = {x = -50, y = 100}, [23] = {x = -30, y = 119}, [24] = {x = -30, y = 136}, [25] = {x = -9, y = 90}, [26] = {x = 9, y = 90}, [27] = {x = -9, y = 59}, [28] = {x = 9, y = 59}, [29] = {x = -9, y = 27}, [30] = {x = 9, y = 27} } global.map_forces[force_name].spawn = {x = -137, y = 0} global.map_forces[force_name].eei = {x = -200, y = 0} else global.map_forces[force_name].worm_turrets_positions = { [1] = {x = 127, y = 38}, [2] = {x = 112, y = 38}, [3] = {x = 127, y = 70}, [4] = {x = 112, y = 70}, [5] = {x = 127, y = 102}, [6] = {x = 112, y = 102}, [7] = {x = 90, y = 119}, [8] = {x = 90, y = 136}, [9] = {x = 70, y = 90}, [10] = {x = 50, y = 90}, [11] = {x = 70, y = 58}, [12] = {x = 50, y = 58}, [13] = {x = 70, y = 26}, [14] = {x = 50, y = 26}, [15] = {x = 70, y = 0}, [16] = {x = 50, y = 0}, [17] = {x = 70, y = -36}, [18] = {x = 50, y = -36}, [19] = {x = 70, y = -68}, [20] = {x = 50, y = -68}, [21] = {x = 70, y = -100}, [22] = {x = 50, y = -100}, [23] = {x = 30, y = -119}, [24] = {x = 30, y = -136}, [25] = {x = -9, y = -90}, [26] = {x = 9, y = -90}, [27] = {x = 9, y = -59}, [28] = {x = -9, y = -59}, [29] = {x = 9, y = -27}, [30] = {x = -9, y = -27} } global.map_forces[force_name].spawn = {x = 137, y = 0} global.map_forces[force_name].eei = {x = 201, y = 0} end global.active_biters[force_name] = {} global.biter_raffle[force_name] = {} end end return Public