local config = {script_data = {}} config.get_config = function() local data = {} data.game_config = { time_limit = 0, allow_spectators = false, no_rush_time = 0, base_exclusion_time = 0, reveal_team_positions = true, reveal_map_center = true, team_walls = true, team_moat = true, team_turrets = true, turret_ammunition = { options = {"firearm-magazine"}, selected = "firearm-magazine" }, team_artillery = false, give_artillery_remote = false, auto_new_round_time = 0, protect_empty_teams = false, enemy_building_restriction = false, neutral_chests = false, seed = 0 } data.victory = { last_silo_standing = { active = true }, space_race = { active = true, required_rockets_sent = 1 }, production_score = { active = false, required_production_score = 50000000 }, oil_harvest = { active = false, required_oil = 1000000 }, kill_score = { active = false, required_kill_score = 1000000 } } local items = game.item_prototypes local entity_name = "gun-turret" local prototype = game.entity_prototypes[entity_name] if not prototype then data.game_config.team_turrets = nil data.game_config.turret_ammunition = nil else local category = prototype.attack_parameters.ammo_category if category then local ammos = {} for name, item in pairs (items) do if item.type == "ammo" then local ammo = item.get_ammo_type() if ammo and ammo.category == category then table.insert(ammos, name) end end end data.game_config.turret_ammunition.options = ammos if not items["firearm-magazine"] then data.game_config.turret_ammunition.selected = ammos[1] or "" end end end data.team_config = { friendly_fire = true, unlock_combat_research = false, defcon_mode = false, max_players = 0, defcon_timer = 5, starting_chest_multiplier = 5, research_level = { options = {"none"}, selected = "none" }, average_team_displacement = math.floor(game.surfaces[1].get_starting_area_radius()) * 6 , always_day = false, evolution_factor = 0, duplicate_starting_area_entities = false, technology_price_multiplier = 1 } local packs = {} local sorted_packs = {} local techs = game.technology_prototypes for k, tech in pairs (techs) do for k, ingredient in pairs (tech.research_unit_ingredients) do if not packs[ingredient.name] then packs[ingredient.name] = true local order = tostring(items[ingredient.name].order) or "Z-Z" local added = false for k, t in pairs (sorted_packs) do if order < t.order then table.insert(sorted_packs, k, {name = ingredient.name, order = order}) added = true break end end if not added then table.insert(sorted_packs, {name = ingredient.name, order = order}) end end end end for k, t in pairs (sorted_packs) do table.insert(data.team_config.research_level.options, t.name) end data.research_ingredient_list = {} for k, research in pairs (data.team_config.research_level.options) do data.research_ingredient_list[research] = false end data.colors = { { name = "orange" , color = { r = 0.869, g = 0.5 , b = 0.130, a = 0.5 }}, { name = "purple" , color = { r = 0.485, g = 0.111, b = 0.659, a = 0.5 }}, { name = "red" , color = { r = 0.815, g = 0.024, b = 0.0 , a = 0.5 }}, { name = "green" , color = { r = 0.093, g = 0.768, b = 0.172, a = 0.5 }}, { name = "blue" , color = { r = 0.155, g = 0.540, b = 0.898, a = 0.5 }}, { name = "yellow" , color = { r = 0.835, g = 0.666, b = 0.077, a = 0.5 }}, { name = "pink" , color = { r = 0.929, g = 0.386, b = 0.514, a = 0.5 }}, { name = "white" , color = { r = 0.8 , g = 0.8 , b = 0.8 , a = 0.5 }}, { name = "black" , color = { r = 0.1 , g = 0.1 , b = 0.1, a = 0.5 }}, { name = "gray" , color = { r = 0.4 , g = 0.4 , b = 0.4, a = 0.5 }}, { name = "brown" , color = { r = 0.300, g = 0.117, b = 0.0, a = 0.5 }}, { name = "cyan" , color = { r = 0.275, g = 0.755, b = 0.712, a = 0.5 }}, { name = "acid" , color = { r = 0.559, g = 0.761, b = 0.157, a = 0.5 }} } data.color_map = {} for k, color in pairs (data.colors) do data.color_map[color.name] = k end data.teams = { {name = game.backer_names[math.random(#game.backer_names)], color = "orange", team = "-", members = {}}, {name = game.backer_names[math.random(#game.backer_names)], color = "purple", team = "-", members = {}} } data.starting_equipment = { options = {"none", "small", "medium", "large"}, selected = "none" } data.starting_chest = { options = {"none", "small", "medium", "large"}, selected = "none" } data.inventory_list = { none = {}, small = { ["iron-plate"] = 200, ["pipe"] = 100, ["pipe-to-ground"] = 20, ["copper-plate"] = 200, ["iron-gear-wheel"] = 200, ["electronic-circuit"] = 200, ["transport-belt"] = 400, ["repair-pack"] = 20, ["inserter"] = 100, ["small-electric-pole"] = 50, ["burner-mining-drill"] = 50, ["stone-furnace"] = 50, ["burner-inserter"] = 100, ["assembling-machine-1"] = 20, ["electric-mining-drill"] = 20, ["boiler"] = 5, ["steam-engine"] = 10, ["offshore-pump"] = 2, ["wood"] = 50 }, medium = { ["iron-plate"] = 200, ["pipe"] = 100, ["pipe-to-ground"] = 20, ["iron-gear-wheel"] = 100, ["copper-plate"] = 100, ["steel-plate"] = 100, ["electronic-circuit"] = 400, ["transport-belt"] = 400, ["underground-belt"] = 20, ["splitter"] = 20, ["repair-pack"] = 20, ["inserter"] = 150, ["small-electric-pole"] = 100, ["medium-electric-pole"] = 50, ["fast-inserter"] = 50, ["long-handed-inserter"] = 50, ["burner-inserter"] = 100, ["burner-mining-drill"] = 50, ["electric-mining-drill"] = 40, ["stone-furnace"] = 100, ["steel-furnace"] = 30, ["assembling-machine-1"] = 40, ["assembling-machine-2"] = 20, ["boiler"] = 10, ["steam-engine"] = 20, ["chemical-plant"] = 20, ["oil-refinery"] = 5, ["pumpjack"] = 8, ["offshore-pump"] = 2, ["wood"] = 50 }, large = { ["iron-plate"] = 200, ["pipe"] = 100, ["pipe-to-ground"] = 20, ["copper-plate"] = 200, ["steel-plate"] = 200, ["electronic-circuit"] = 400, ["iron-gear-wheel"] = 250, ["transport-belt"] = 400, ["underground-belt"] = 40, ["splitter"] = 40, ["repair-pack"] = 20, ["inserter"] = 200, ["burner-inserter"] = 50, ["small-electric-pole"] = 50, ["burner-mining-drill"] = 50, ["electric-mining-drill"] = 50, ["stone-furnace"] = 100, ["steel-furnace"] = 50, ["electric-furnace"] = 20, ["assembling-machine-1"] = 50, ["assembling-machine-2"] = 40, ["assembling-machine-3"] = 20, ["fast-inserter"] = 100, ["long-handed-inserter"] = 100, ["medium-electric-pole"] = 50, ["substation"] = 10, ["big-electric-pole"] = 10, ["boiler"] = 10, ["steam-engine"] = 20, ["chemical-plant"] = 20, ["oil-refinery"] = 5, ["pumpjack"] = 10, ["offshore-pump"] = 2, ["wood"] = 50 } } data.equipment_list = { none = { ["pistol"] = 1, ["firearm-magazine"] = 10 }, small = { ["submachine-gun"] = 1, ["firearm-magazine"] = 30, ["shotgun"] = 1, ["shotgun-shell"] = 20, ["heavy-armor"] = 1 }, medium = { ["submachine-gun"] = 1, ["firearm-magazine"] = 40, ["shotgun"] = 1, ["shotgun-shell"] = 20, ["car"] = 1, ["modular-armor"] = 1 }, large = { ["submachine-gun"] = 1, ["piercing-rounds-magazine"] = 40, ["combat-shotgun"] = 1, ["piercing-shotgun-shell"] = 20, ["rocket-launcher"] = 1, ["rocket"] = 80, ["construction-robot"] = 25, ["car"] = 1, ["power-armor"] = 1, ["fusion-reactor-equipment"] = 1, ["exoskeleton-equipment"] = 1, ["energy-shield-equipment"] = 2, ["personal-roboport-mk2-equipment"] = 1 } } data.prototypes = { chest = "steel-chest", wall = "stone-wall", gate = "gate", turret = "gun-turret", artillery = "artillery-turret", artillery_ammo = "artillery-shell", silo = "rocket-silo", tile_1 = "refined-concrete", tile_2 = "refined-hazard-concrete-left", artillery_remote = "artillery-targeting-remote", oil = "crude-oil", oil_resource = "crude-oil", moat = "water" } data.silo_offset = {x = 0, y = 0} data.chest_offset = {x = 0, y = 16} return data end config.give_equipment = function(player) if not config.script_data.config.equipment_list then return end if not config.script_data.config.starting_equipment then return end local setting = config.script_data.config.starting_equipment.selected if not setting then return end local equipment = config.script_data.config.equipment_list[setting] if not equipment then return end local items = game.item_prototypes local list = {items = {}, armor, equipment = {}} for name, count in pairs (equipment) do local item = items[name] if item then if item.type == "armor" then local count = count if not list.armor then list.armor = item end count = count - 1 if count > 0 then list.items[item] = (list.items[item] or 0) + count end elseif item.place_as_equipment_result then list.equipment[item] = (list.equipment[item] or 0) + count else list.items[item] = (list.items[item] or 0) + count end else equipment[name] = nil end end local put_equipment = false if list.armor then local stack = player.get_inventory(defines.inventory.character_armor)[1] stack.set_stack{name = list.armor.name} local grid = stack.grid if grid then put_equipment = true for prototype, count in pairs (list.equipment) do local equipment = prototype.place_as_equipment_result for k = 1, count do if not grid.put{name = equipment.name} then player.insert{name = prototype.name} end end end end end if not put_equipment then for prototype, count in pairs (list.equipment) do player.insert{name = prototype.name, count = count} end end for prototype, count in pairs (list.items) do player.insert{name = prototype.name, count = count} end end config.localised_names = { seed = {"gui-map-generator.map-seed"} } -- "" for no tooltip config.localised_tooltips = { friendly_fire = "", always_day = "", evolution_factor = "", duplicate_starting_area_entities = "", friendly_fire = "", technology_price_multiplier = "" } return config