return function(Baseless) Baseless.Make.PollutionSettings = function() return { enabled = Baseless.Data.bool, diffusion_ratio = Baseless.Data.double, min_to_diffuse = Baseless.Data.double, ageing = Baseless.Data.double, expected_max_per_chunk = Baseless.Data.double, min_to_show_per_chunk = Baseless.Data.double, min_pollution_to_damage_trees = Baseless.Data.double, pollution_with_max_forest_damage = Baseless.Data.double, pollution_restored_per_tree_damage = Baseless.Data.double, pollution_per_tree_damage = Baseless.Data.double, max_pollution_to_restore_trees = Baseless.Data.double, enemy_attack_pollution_consumption_modifier = Baseless.Data.double, } end Baseless.Make.StateSteeringSettings = function() return { radius = Baseless.Data.double, separation_factor = Baseless.Data.double, separation_force = Baseless.Data.double, force_unit_fuzzy_goto_behavior = Baseless.Data.bool, } end Baseless.Make.SteeringSettings = function() return { default = Baseless.Make.StateSteeringSettings(), moving = Baseless.Make.StateSteeringSettings(), } end Baseless.Make.EnemyEvolutionSettings = function() return { enabled = Baseless.Data.bool, time_factor = Baseless.Data.double, destroy_factor = Baseless.Data.double, pollution_factor = Baseless.Data.double, } end Baseless.Make.EnemyExpansionSettings = function() return { enabled = Baseless.Data.bool, max_expansion_distance = Baseless.Data.uint32, friendly_base_influence_radius = Baseless.Data.uint32, enemy_building_influence_radius = Baseless.Data.uint32, building_coefficient = Baseless.Data.double, other_base_coefficient = Baseless.Data.double, neighbouring_chunk_coefficient = Baseless.Data.double, neighbouring_base_chunk_coefficient = Baseless.Data.double, max_colliding_tiles_coefficient = Baseless.Data.double, settler_group_min_size = Baseless.Data.uint32, settler_group_max_size = Baseless.Data.uint32, min_expansion_cooldown = Baseless.Data.uint32, max_expansion_cooldown = Baseless.Data.uint32, } end Baseless.Make.UnitGroupSettings = function() return { min_group_gathering_time = Baseless.Data.uint32, max_group_gathering_time = Baseless.Data.uint32, max_wait_time_for_late_members = Baseless.Data.uint32, max_group_radius = Baseless.Data.double, min_group_radius = Baseless.Data.double, max_member_speedup_when_behind = Baseless.Data.double, max_member_slowdown_when_ahead = Baseless.Data.double, max_group_slowdown_factor = Baseless.Data.double, max_group_member_fallback_factor = Baseless.Data.double, member_disown_distance = Baseless.Data.double, tick_tolerance_when_member_arrives = Baseless.Data.uint32, max_gathering_unit_groups = Baseless.Data.uint32, max_unit_group_size = Baseless.Data.uint32, } end Baseless.Make.PathFinderSettings = function() return { fwd2bwd_ratio = Baseless.Data.fwd2bwd_ratio, goal_pressure_ratio = Baseless.Data.double, use_path_cache = Baseless.Data.bool, max_steps_worked_per_tick = Baseless.Data.double, max_work_done_per_tick = Baseless.Data.uint32, short_cache_size = Baseless.Data.uint32, long_cache_size = Baseless.Data.uint32, short_cache_min_cacheable_distance = Baseless.Data.double, short_cache_min_algo_steps_to_cache = Baseless.Data.uint32, long_cache_min_cacheable_distance = Baseless.Data.double, cache_max_connect_to_cache_steps_multiplier = Baseless.Data.uint32, cache_accept_path_start_distance_ratio = Baseless.Data.double, cache_accept_path_end_distance_ratio = Baseless.Data.double, negative_cache_accept_path_start_distance_ratio = Baseless.Data.double, negative_cache_accept_path_end_distance_ratio = Baseless.Data.double, cache_path_start_distance_rating_multiplier = Baseless.Data.double, cache_path_end_distance_rating_multiplier = Baseless.Data.double, stale_enemy_with_same_destination_collision_penalty = Baseless.Data.double, ignore_moving_enemy_collision_distance = Baseless.Data.double, enemy_with_different_destination_collision_penalty = Baseless.Data.double, general_entity_collision_penalty = Baseless.Data.double, general_entity_subsequent_collision_penalty = Baseless.Data.double, extended_collision_penalty = Baseless.Data.double, max_clients_to_accept_any_new_request = Baseless.Data.uint32, max_clients_to_accept_short_new_request = Baseless.Data.uint32, direct_distance_to_consider_short_request = Baseless.Data.uint32, short_request_max_steps = Baseless.Data.uint32, short_request_ratio = Baseless.Data.double, min_steps_to_check_path_find_termination = Baseless.Data.uint32, start_to_goal_cost_multiplier_to_terminate_path_find = Baseless.Data.double, overload_levels = Baseless.Data.array, overload_multipliers = Baseless.Data.array, negative_path_cache_delay_interval = Baseless.Data.double, } end Baseless.Make.DifficultySettings = function() return { recipe_difficulty = defines.difficulty_settings.recipe_difficulty.normal, technology_difficulty = defines.difficulty_settings.technology_difficulty.normal, } end Baseless.Make.Gen("_Proto", "map-settings", { pollution = Baseless.Make.PollutionSettings(), steering = Baseless.Make.SteeringSettings(), enemy_evolution = Baseless.Make.EnemyEvolutionSettings(), enemy_expansion = Baseless.Make.EnemyExpansionSettings(), unit_group = Baseless.Make.UnitGroupSettings(), path_finder = Baseless.Make.PathFinderSettings(), max_failed_behavior_count = Baseless.Data.uint32, difficulty_settings = Baseless.Make.DifficultySettings(), }) end