You've already forked ComfyFactorio
							
							
				mirror of
				https://github.com/ComfyFactory/ComfyFactorio.git
				synced 2025-10-30 23:47:41 +02:00 
			
		
		
		
	port prototypes on game
This commit is contained in:
		| @@ -439,7 +439,7 @@ local function on_player_joined_game() | ||||
|         ['rock-huge'] = { 'uranium-ore' } | ||||
|     } | ||||
|  | ||||
|     if game.item_prototypes['angels-ore1'] then | ||||
|     if prototypes.item['angels-ore1'] then | ||||
|         storage.entity_yield['tree-01'] = { 'angels-ore1', 'angels-ore2' } | ||||
|         storage.entity_yield['tree-02-red'] = { 'angels-ore5', 'angels-ore6' } | ||||
|         storage.entity_yield['tree-04'] = { 'coal' } | ||||
| @@ -448,7 +448,7 @@ local function on_player_joined_game() | ||||
|         game.map_settings.pollution.ageing = 0 | ||||
|     end | ||||
|  | ||||
|     if game.item_prototypes['thorium-ore'] then | ||||
|     if prototypes.item['thorium-ore'] then | ||||
|         storage.entity_yield['rock-big'] = { 'uranium-ore', 'thorium-ore' } | ||||
|         storage.entity_yield['rock-huge'] = { 'uranium-ore', 'thorium-ore' } | ||||
|     end | ||||
|   | ||||
| @@ -12,8 +12,8 @@ local chests = {} | ||||
| local chests_next = {} | ||||
|  | ||||
| Global.register( | ||||
|     {chests = chests, chests_next = chests_next}, | ||||
|     function(tbl) | ||||
|     { chests = chests, chests_next = chests_next }, | ||||
|     function (tbl) | ||||
|         chests = tbl.chests | ||||
|         chests_next = tbl.chests_next | ||||
|     end | ||||
| @@ -23,8 +23,8 @@ local chest_gui_frame_name = Gui.uid_name() | ||||
| local chest_content_table_name = Gui.uid_name() | ||||
|  | ||||
| function Public.create_chest(surface, position, storage) | ||||
|     local entity = surface.create_entity {name = 'infinity-chest', position = position, force = 'neutral'} | ||||
|     chests[entity.unit_number] = {entity = entity, storage = storage} | ||||
|     local entity = surface.create_entity { name = 'infinity-chest', position = position, force = 'neutral' } | ||||
|     chests[entity.unit_number] = { entity = entity, storage = storage } | ||||
|     return entity | ||||
| end | ||||
|  | ||||
| @@ -36,11 +36,11 @@ local function built_entity(event) | ||||
|  | ||||
|     entity.active = false | ||||
|  | ||||
|     chests[entity.unit_number] = {entity = entity, storage = {}} | ||||
|     chests[entity.unit_number] = { entity = entity, storage = {} } | ||||
| end | ||||
|  | ||||
| local function get_stack_size(name) | ||||
|     local proto = game.item_prototypes[name] | ||||
|     local proto = prototypes.item[name] | ||||
|     if not proto then | ||||
|         log('item prototype ' .. name .. ' not found') | ||||
|         return 1 | ||||
| @@ -60,7 +60,7 @@ local function do_item(name, count, inv, storage) | ||||
|     local new_amount = 0 | ||||
|  | ||||
|     if diff > 0 then | ||||
|         inv.remove({name = name, count = diff}) | ||||
|         inv.remove({ name = name, count = diff }) | ||||
|         local prev = storage[name] or 0 | ||||
|         new_amount = prev + diff | ||||
|     elseif diff < 0 then | ||||
| @@ -70,7 +70,7 @@ local function do_item(name, count, inv, storage) | ||||
|         end | ||||
|  | ||||
|         diff = math.min(prev, -diff) | ||||
|         local inserted = inv.insert({name = name, count = diff}) | ||||
|         local inserted = inv.insert({ name = name, count = diff }) | ||||
|         new_amount = prev - inserted | ||||
|     end | ||||
|  | ||||
| @@ -119,7 +119,7 @@ local function create_chest_gui_content(frame, player, chest) | ||||
|     if grid then | ||||
|         grid.clear() | ||||
|     else | ||||
|         grid = frame.add {type = 'table', name = chest_content_table_name, column_count = 10, style = 'slot_table'} | ||||
|         grid = frame.add { type = 'table', name = chest_content_table_name, column_count = 10, style = 'slot_table' } | ||||
|     end | ||||
|  | ||||
|     for name, count in pairs(storage) do | ||||
| @@ -153,36 +153,36 @@ end | ||||
| local chest_gui_content_callback | ||||
| chest_gui_content_callback = | ||||
|     Token.register( | ||||
|     function(data) | ||||
|         local player = data.player | ||||
|         function (data) | ||||
|             local player = data.player | ||||
|  | ||||
|         if not player or not player.valid then | ||||
|             return | ||||
|             if not player or not player.valid then | ||||
|                 return | ||||
|             end | ||||
|  | ||||
|             local opened = data.opened | ||||
|             if not opened or not opened.valid then | ||||
|                 return | ||||
|             end | ||||
|  | ||||
|             local entity = data.chest.entity | ||||
|             if not entity.valid then | ||||
|                 player.opened = nil | ||||
|                 opened.destroy() | ||||
|                 return | ||||
|             end | ||||
|  | ||||
|             if not player.connected then | ||||
|                 player.opened = nil | ||||
|                 opened.destroy() | ||||
|                 return | ||||
|             end | ||||
|  | ||||
|             create_chest_gui_content(opened, player, data.chest) | ||||
|  | ||||
|             Task.set_timeout_in_ticks(60, chest_gui_content_callback, data) | ||||
|         end | ||||
|  | ||||
|         local opened = data.opened | ||||
|         if not opened or not opened.valid then | ||||
|             return | ||||
|         end | ||||
|  | ||||
|         local entity = data.chest.entity | ||||
|         if not entity.valid then | ||||
|             player.opened = nil | ||||
|             opened.destroy() | ||||
|             return | ||||
|         end | ||||
|  | ||||
|         if not player.connected then | ||||
|             player.opened = nil | ||||
|             opened.destroy() | ||||
|             return | ||||
|         end | ||||
|  | ||||
|         create_chest_gui_content(opened, player, data.chest) | ||||
|  | ||||
|         Task.set_timeout_in_ticks(60, chest_gui_content_callback, data) | ||||
|     end | ||||
| ) | ||||
|     ) | ||||
|  | ||||
| local function gui_opened(event) | ||||
|     if not event.gui_type == defines.gui_type.entity then | ||||
| @@ -207,27 +207,27 @@ local function gui_opened(event) | ||||
|  | ||||
|     local frame = | ||||
|         player.gui.center.add { | ||||
|         type = 'frame', | ||||
|         name = chest_gui_frame_name, | ||||
|         caption = 'Infinite Storage Chest', | ||||
|         direction = 'vertical' | ||||
|     } | ||||
|             type = 'frame', | ||||
|             name = chest_gui_frame_name, | ||||
|             caption = 'Infinite Storage Chest', | ||||
|             direction = 'vertical' | ||||
|         } | ||||
|  | ||||
|     local text = | ||||
|         frame.add { | ||||
|         type = 'label', | ||||
|         caption = format( | ||||
|             'This chest stores unlimited quantity of items (up to 48 different item types).\nThe chest is best used with an inserter to add / remove items.\nIf the chest is mined or destroyed the items are lost.' | ||||
|         ) | ||||
|     } | ||||
|             type = 'label', | ||||
|             caption = format( | ||||
|                 'This chest stores unlimited quantity of items (up to 48 different item types).\nThe chest is best used with an inserter to add / remove items.\nIf the chest is mined or destroyed the items are lost.' | ||||
|             ) | ||||
|         } | ||||
|     text.style.single_line = false | ||||
|  | ||||
|     local content_header = frame.add {type = 'label', caption = 'Content'} | ||||
|     local content_header = frame.add { type = 'label', caption = 'Content' } | ||||
|     content_header.style.font = 'default-listbox' | ||||
|  | ||||
|     create_chest_gui_content(frame, player, chest) | ||||
|  | ||||
|     Task.set_timeout_in_ticks(60, chest_gui_content_callback, {player = player, chest = chest, opened = frame}) | ||||
|     Task.set_timeout_in_ticks(60, chest_gui_content_callback, { player = player, chest = chest, opened = frame }) | ||||
| end | ||||
|  | ||||
| Event.add(defines.events.on_built_entity, built_entity) | ||||
| @@ -237,7 +237,7 @@ Event.add(defines.events.on_gui_opened, gui_opened) | ||||
|  | ||||
| Event.add( | ||||
|     defines.events.on_player_died, | ||||
|     function(event) | ||||
|     function (event) | ||||
|         local player = game.get_player(event.player_index or 0) | ||||
|  | ||||
|         if not player or not player.valid then | ||||
| @@ -257,7 +257,7 @@ Event.add( | ||||
|  | ||||
| Gui.on_custom_close( | ||||
|     chest_gui_frame_name, | ||||
|     function(event) | ||||
|     function (event) | ||||
|         event.element.destroy() | ||||
|     end | ||||
| ) | ||||
|   | ||||
| @@ -1036,7 +1036,7 @@ local function on_chunk_generated(event) | ||||
|     end | ||||
|  | ||||
|     local decorative_names = {} | ||||
|     for k, v in pairs(game.decorative_prototypes) do | ||||
|     for k, v in pairs(prototypes.decorative) do | ||||
|         if v.autoplace_specification then | ||||
|             decorative_names[#decorative_names + 1] = k | ||||
|         end | ||||
|   | ||||
| @@ -794,7 +794,7 @@ local function on_chunk_generated(event) | ||||
|     end | ||||
|  | ||||
|     local decorative_names = {} | ||||
|     for k, v in pairs(game.decorative_prototypes) do | ||||
|     for k, v in pairs(prototypes.decorative) do | ||||
|         if v.autoplace_specification then | ||||
|             decorative_names[#decorative_names + 1] = k | ||||
|         end | ||||
|   | ||||
| @@ -24,7 +24,7 @@ end | ||||
|  | ||||
| function Public.get_colored_name(player_index) | ||||
|     local player = game.players[player_index] | ||||
|     local colored_name = table.concat({'[color=', player.chat_color.r, ',', player.chat_color.g, ',', player.chat_color.b, ']', player.name, '[/color]'}) | ||||
|     local colored_name = table.concat({ '[color=', player.chat_color.r, ',', player.chat_color.g, ',', player.chat_color.b, ']', player.name, '[/color]' }) | ||||
|     return colored_name | ||||
| end | ||||
|  | ||||
| @@ -64,30 +64,30 @@ function Public.reveal(cave_miner, surface, source_surface, position, brushsize) | ||||
|     local copied_tiles = {} | ||||
|     local i = 0 | ||||
|     local brushsize_square = brushsize ^ 2 | ||||
|     for _, tile in pairs(source_surface.find_tiles_filtered({area = {{position.x - brushsize, position.y - brushsize}, {position.x + brushsize, position.y + brushsize}}})) do | ||||
|     for _, tile in pairs(source_surface.find_tiles_filtered({ area = { { position.x - brushsize, position.y - brushsize }, { position.x + brushsize, position.y + brushsize } } })) do | ||||
|         local tile_position = tile.position | ||||
|         if tile.name ~= 'lab-dark-2' and tile.name ~= 'lab-dark-1' and (position.x - tile_position.x) ^ 2 + (position.y - tile_position.y) ^ 2 < brushsize_square then | ||||
|             i = i + 1 | ||||
|             copied_tiles[i] = {name = 'lab-dark-1', position = tile.position} | ||||
|             tiles[i] = {name = tile.name, position = tile.position} | ||||
|             copied_tiles[i] = { name = 'lab-dark-1', position = tile.position } | ||||
|             tiles[i] = { name = tile.name, position = tile.position } | ||||
|         end | ||||
|     end | ||||
|     surface.set_tiles(tiles, true, false, false, false) | ||||
|     source_surface.set_tiles(copied_tiles, false, false, false, false) | ||||
|  | ||||
|     for _, entity in pairs(source_surface.find_entities_filtered({area = {{position.x - brushsize, position.y - brushsize}, {position.x + brushsize, position.y + brushsize}}})) do | ||||
|     for _, entity in pairs(source_surface.find_entities_filtered({ area = { { position.x - brushsize, position.y - brushsize }, { position.x + brushsize, position.y + brushsize } } })) do | ||||
|         local entity_position = entity.position | ||||
|         if (position.x - entity_position.x) ^ 2 + (position.y - entity_position.y) ^ 2 < brushsize_square then | ||||
|             local e = entity.clone({position = entity_position, surface = surface}) | ||||
|             local e = entity.clone({ position = entity_position, surface = surface }) | ||||
|             if entity.force.index == 2 then | ||||
|                 e.active = true | ||||
|                 table.insert(cave_miner.reveal_queue, {entity.type, entity.position.x, entity.position.y}) | ||||
|                 table.insert(cave_miner.reveal_queue, { entity.type, entity.position.x, entity.position.y }) | ||||
|             end | ||||
|             entity.destroy() | ||||
|         end | ||||
|     end | ||||
|  | ||||
|     source_surface.set_tiles({{name = 'lab-dark-2', position = position}}, false) | ||||
|     source_surface.set_tiles({ { name = 'lab-dark-2', position = position } }, false) | ||||
|     source_surface.request_to_generate_chunks(position, 3) | ||||
| end | ||||
|  | ||||
| @@ -116,7 +116,7 @@ function Public.spawn_player(player) | ||||
|     player.teleport(position, surface) | ||||
|  | ||||
|     for name, count in pairs(Constants.starting_items) do | ||||
|         player.insert({name = name, count = count}) | ||||
|         player.insert({ name = name, count = count }) | ||||
|     end | ||||
| end | ||||
|  | ||||
| @@ -126,7 +126,7 @@ function Public.set_mining_speed(cave_miner, force) | ||||
| end | ||||
|  | ||||
| function Public.place_worm(surface, position, multiplier) | ||||
|     local e = surface.create_entity({name = BiterRaffle.roll('worm', Public.get_difficulty_modifier(position) * multiplier), position = position, force = 'enemy'}) | ||||
|     local e = surface.create_entity({ name = BiterRaffle.roll('worm', Public.get_difficulty_modifier(position) * multiplier), position = position, force = 'enemy' }) | ||||
|     return e | ||||
| end | ||||
|  | ||||
| @@ -135,9 +135,9 @@ function Public.spawn_random_biter(surface, position, multiplier) | ||||
|     local non_colliding_position = surface.find_non_colliding_position(name, position, 16, 1) | ||||
|     local unit | ||||
|     if non_colliding_position then | ||||
|         unit = surface.create_entity({name = name, position = non_colliding_position, force = 'enemy'}) | ||||
|         unit = surface.create_entity({ name = name, position = non_colliding_position, force = 'enemy' }) | ||||
|     else | ||||
|         unit = surface.create_entity({name = name, position = position, force = 'enemy'}) | ||||
|         unit = surface.create_entity({ name = name, position = position, force = 'enemy' }) | ||||
|     end | ||||
|     unit.ai_settings.allow_try_return_to_spawner = false | ||||
|     unit.ai_settings.allow_destroy_when_commands_fail = false | ||||
| @@ -150,7 +150,7 @@ function Public.rock_spawns_biters(cave_miner, position) | ||||
|     local difficulty_modifier = Public.get_difficulty_modifier(position) | ||||
|     local tick = game.tick | ||||
|     for c = 1, amount, 1 do | ||||
|         Esq.add_to_queue(tick + c * 25, surface, {name = BiterRaffle.roll('mixed', difficulty_modifier), position = position, force = 'enemy'}, 8) | ||||
|         Esq.add_to_queue(tick + c * 25, surface, { name = BiterRaffle.roll('mixed', difficulty_modifier), position = position, force = 'enemy' }, 8) | ||||
|     end | ||||
| end | ||||
|  | ||||
| @@ -158,14 +158,14 @@ function Public.loot_crate(surface, position, container_name, player_index) | ||||
|     local amount_multiplier = Constants.treasures[container_name].amount_multiplier | ||||
|     local base_amount = 16 * amount_multiplier | ||||
|     local difficulty_modifier = Public.get_difficulty_modifier(position) | ||||
|     local slots = game.entity_prototypes[container_name].get_inventory_size(defines.inventory.chest) | ||||
|     local slots = prototypes.entity[container_name].get_inventory_size(defines.inventory.chest) | ||||
|     local tech_bonus = Constants.treasures[container_name].tech_bonus | ||||
|     local description = Constants.treasures[container_name].description | ||||
|  | ||||
|     local blacklist = LootRaffle.get_tech_blacklist(difficulty_modifier + tech_bonus) | ||||
|  | ||||
|     local item_stacks = LootRaffle.roll(base_amount + difficulty_modifier * amount_multiplier * 5000, slots, blacklist) | ||||
|     local container = surface.create_entity({name = container_name, position = position, force = 'neutral'}) | ||||
|     local container = surface.create_entity({ name = container_name, position = position, force = 'neutral' }) | ||||
|     for _, item_stack in pairs(item_stacks) do | ||||
|         container.insert(item_stack) | ||||
|     end | ||||
| @@ -186,17 +186,17 @@ function Public.loot_crate(surface, position, container_name, player_index) | ||||
|     end | ||||
|  | ||||
|     for _, player in pairs(game.forces.player.connected_players) do | ||||
|         player.add_custom_alert(container, {type = 'item', name = 'wooden-chest'}, text, true) | ||||
|         player.add_custom_alert(container, { type = 'item', name = 'wooden-chest' }, text, true) | ||||
|     end | ||||
| end | ||||
|  | ||||
| function Public.place_crude_oil(surface, position, multiplier) | ||||
|     if not surface.can_place_entity({name = 'crude-oil', position = position, amount = 1}) then | ||||
|     if not surface.can_place_entity({ name = 'crude-oil', position = position, amount = 1 }) then | ||||
|         return | ||||
|     end | ||||
|     local d = math_sqrt(position.x ^ 2 + position.y ^ 2) | ||||
|     local amount = math_random(50000, 100000) + d * 100 * multiplier | ||||
|     surface.create_entity({name = 'crude-oil', position = position, amount = amount}) | ||||
|     surface.create_entity({ name = 'crude-oil', position = position, amount = amount }) | ||||
| end | ||||
|  | ||||
| function Public.create_top_gui(player) | ||||
| @@ -204,18 +204,18 @@ function Public.create_top_gui(player) | ||||
|     if frame then | ||||
|         return | ||||
|     end | ||||
|     frame = player.gui.top.add({type = 'frame', name = 'cave_miner', direction = 'horizontal'}) | ||||
|     frame = player.gui.top.add({ type = 'frame', name = 'cave_miner', direction = 'horizontal' }) | ||||
|     frame.style.maximal_height = 38 | ||||
|  | ||||
|     local label = frame.add({type = 'label', caption = 'Loading...'}) | ||||
|     local label = frame.add({ type = 'label', caption = 'Loading...' }) | ||||
|     label.style.font = 'heading-2' | ||||
|     label.style.font_color = {225, 225, 225} | ||||
|     label.style.font_color = { 225, 225, 225 } | ||||
|     label.style.margin = 0 | ||||
|     label.style.padding = 0 | ||||
|  | ||||
|     local label = frame.add({type = 'label', caption = 'Loading...'}) | ||||
|     local label = frame.add({ type = 'label', caption = 'Loading...' }) | ||||
|     label.style.font = 'heading-2' | ||||
|     label.style.font_color = {225, 225, 225} | ||||
|     label.style.font_color = { 225, 225, 225 } | ||||
|     label.style.margin = 0 | ||||
|     label.style.padding = 0 | ||||
| end | ||||
| @@ -246,7 +246,7 @@ local function is_entity_in_darkness(entity) | ||||
|         return false | ||||
|     end | ||||
|  | ||||
|     for _, lamp in pairs(entity.surface.find_entities_filtered({area = {{position.x - 16, position.y - 16}, {position.x + 16, position.y + 16}}, name = 'small-lamp'})) do | ||||
|     for _, lamp in pairs(entity.surface.find_entities_filtered({ area = { { position.x - 16, position.y - 16 }, { position.x + 16, position.y + 16 } }, name = 'small-lamp' })) do | ||||
|         local circuit = lamp.get_or_create_control_behavior() | ||||
|         if circuit then | ||||
|             if lamp.energy > 25 and circuit.disabled == false then | ||||
| @@ -284,7 +284,7 @@ local function darkness_event(cave_miner, entity) | ||||
|         count = 16 | ||||
|     end | ||||
|     for c = 1, count, 1 do | ||||
|         Esq.add_to_queue(game.tick + math_random(5, 45) * c, entity.surface, {name = BiterRaffle.roll('mixed', difficulty_modifier), position = position, force = 'enemy'}, 8) | ||||
|         Esq.add_to_queue(game.tick + math_random(5, 45) * c, entity.surface, { name = BiterRaffle.roll('mixed', difficulty_modifier), position = position, force = 'enemy' }, 8) | ||||
|     end | ||||
|  | ||||
|     entity.damage(darkness[index] * 2, 'neutral', 'poison') | ||||
| @@ -306,58 +306,58 @@ end | ||||
|  | ||||
| Public.mining_events = { | ||||
|     { | ||||
|         function(cave_miner, entity, player_index) | ||||
|         function (cave_miner, entity, player_index) | ||||
|             if math.random(1, 8) == 1 then | ||||
|                 entity.surface.spill_item_stack(entity.position, {name = 'raw-fish', count = 1}, true) | ||||
|                 entity.surface.spill_item_stack(entity.position, { name = 'raw-fish', count = 1 }, true) | ||||
|             end | ||||
|         end, | ||||
|         350000, | ||||
|         'Nothing' | ||||
|     }, | ||||
|     { | ||||
|         function(cave_miner, entity, player_index) | ||||
|         function (cave_miner, entity, player_index) | ||||
|             local amount = Public.roll_biter_amount() | ||||
|             local position = entity.position | ||||
|             local surface = entity.surface | ||||
|             local difficulty_modifier = Public.get_difficulty_modifier(position) | ||||
|             local tick = game.tick | ||||
|             for c = 1, amount, 1 do | ||||
|                 Esq.add_to_queue(tick + c * 25, surface, {name = BiterRaffle.roll('mixed', difficulty_modifier), position = position, force = 'enemy'}, 8) | ||||
|                 Esq.add_to_queue(tick + c * 25, surface, { name = BiterRaffle.roll('mixed', difficulty_modifier), position = position, force = 'enemy' }, 8) | ||||
|             end | ||||
|         end, | ||||
|         16384, | ||||
|         'Mixed_Biters' | ||||
|     }, | ||||
|     { | ||||
|         function(cave_miner, entity, player_index) | ||||
|         function (cave_miner, entity, player_index) | ||||
|             local amount = Public.roll_biter_amount() | ||||
|             local position = entity.position | ||||
|             local surface = entity.surface | ||||
|             local difficulty_modifier = Public.get_difficulty_modifier(position) | ||||
|             local tick = game.tick | ||||
|             for c = 1, amount, 1 do | ||||
|                 Esq.add_to_queue(tick + c * 25, surface, {name = BiterRaffle.roll('biter', difficulty_modifier), position = position, force = 'enemy'}, 8) | ||||
|                 Esq.add_to_queue(tick + c * 25, surface, { name = BiterRaffle.roll('biter', difficulty_modifier), position = position, force = 'enemy' }, 8) | ||||
|             end | ||||
|         end, | ||||
|         2048, | ||||
|         'Biters' | ||||
|     }, | ||||
|     { | ||||
|         function(cave_miner, entity, player_index) | ||||
|         function (cave_miner, entity, player_index) | ||||
|             local amount = Public.roll_biter_amount() | ||||
|             local position = entity.position | ||||
|             local surface = entity.surface | ||||
|             local difficulty_modifier = Public.get_difficulty_modifier(position) | ||||
|             local tick = game.tick | ||||
|             for c = 1, amount, 1 do | ||||
|                 Esq.add_to_queue(tick + c * 25, surface, {name = BiterRaffle.roll('spitter', difficulty_modifier), position = position, force = 'enemy'}, 8) | ||||
|                 Esq.add_to_queue(tick + c * 25, surface, { name = BiterRaffle.roll('spitter', difficulty_modifier), position = position, force = 'enemy' }, 8) | ||||
|             end | ||||
|         end, | ||||
|         2048, | ||||
|         'Spitters' | ||||
|     }, | ||||
|     { | ||||
|         function(cave_miner, entity, player_index) | ||||
|         function (cave_miner, entity, player_index) | ||||
|             local position = entity.position | ||||
|             local surface = entity.surface | ||||
|             Public.loot_crate(surface, position, 'wooden-chest', player_index) | ||||
| @@ -366,7 +366,7 @@ Public.mining_events = { | ||||
|         'Treasure_Tier_1' | ||||
|     }, | ||||
|     { | ||||
|         function(cave_miner, entity, player_index) | ||||
|         function (cave_miner, entity, player_index) | ||||
|             local position = entity.position | ||||
|             local surface = entity.surface | ||||
|             Public.loot_crate(surface, position, 'iron-chest', player_index) | ||||
| @@ -375,7 +375,7 @@ Public.mining_events = { | ||||
|         'Treasure_Tier_2' | ||||
|     }, | ||||
|     { | ||||
|         function(cave_miner, entity, player_index) | ||||
|         function (cave_miner, entity, player_index) | ||||
|             local position = entity.position | ||||
|             local surface = entity.surface | ||||
|             Public.loot_crate(surface, position, 'steel-chest', player_index) | ||||
| @@ -384,7 +384,7 @@ Public.mining_events = { | ||||
|         'Treasure_Tier_3' | ||||
|     }, | ||||
|     { | ||||
|         function(cave_miner, entity, player_index) | ||||
|         function (cave_miner, entity, player_index) | ||||
|             local position = entity.position | ||||
|             local surface = entity.surface | ||||
|             Public.loot_crate(surface, position, 'crash-site-spaceship-wreck-medium-' .. math_random(1, 3), player_index) | ||||
| @@ -393,7 +393,7 @@ Public.mining_events = { | ||||
|         'Treasure_Tier_4' | ||||
|     }, | ||||
|     { | ||||
|         function(cave_miner, entity, player_index) | ||||
|         function (cave_miner, entity, player_index) | ||||
|             local position = entity.position | ||||
|             local surface = entity.surface | ||||
|             Public.loot_crate(surface, position, 'crash-site-spaceship-wreck-big-' .. math_random(1, 2), player_index) | ||||
| @@ -402,7 +402,7 @@ Public.mining_events = { | ||||
|         'Treasure_Tier_5' | ||||
|     }, | ||||
|     { | ||||
|         function(cave_miner, entity, player_index) | ||||
|         function (cave_miner, entity, player_index) | ||||
|             local position = entity.position | ||||
|             local surface = entity.surface | ||||
|             Public.loot_crate(surface, position, 'big-ship-wreck-' .. math_random(1, 3), player_index) | ||||
| @@ -411,7 +411,7 @@ Public.mining_events = { | ||||
|         'Treasure_Tier_6' | ||||
|     }, | ||||
|     { | ||||
|         function(cave_miner, entity, player_index) | ||||
|         function (cave_miner, entity, player_index) | ||||
|             local position = entity.position | ||||
|             local surface = entity.surface | ||||
|             Public.loot_crate(surface, position, 'crash-site-chest-' .. math_random(1, 2), player_index) | ||||
| @@ -420,7 +420,7 @@ Public.mining_events = { | ||||
|         'Treasure_Tier_7' | ||||
|     }, | ||||
|     { | ||||
|         function(cave_miner, entity, player_index) | ||||
|         function (cave_miner, entity, player_index) | ||||
|             local position = entity.position | ||||
|             local surface = entity.surface | ||||
|             Public.loot_crate(surface, position, 'crash-site-spaceship', player_index) | ||||
| @@ -430,7 +430,7 @@ Public.mining_events = { | ||||
|         'Treasure_Tier_8' | ||||
|     }, | ||||
|     { | ||||
|         function(cave_miner, entity, player_index) | ||||
|         function (cave_miner, entity, player_index) | ||||
|             local position = entity.position | ||||
|             local surface = entity.surface | ||||
|             local unit = Public.spawn_random_biter(surface, position, 2) | ||||
| @@ -440,17 +440,17 @@ Public.mining_events = { | ||||
|         'Pet' | ||||
|     }, | ||||
|     { | ||||
|         function(cave_miner, entity, player_index) | ||||
|         function (cave_miner, entity, player_index) | ||||
|             local position = entity.position | ||||
|             local surface = entity.surface | ||||
|             surface.create_entity({name = 'biter-spawner', position = position, force = 'enemy'}) | ||||
|             surface.create_entity({ name = 'biter-spawner', position = position, force = 'enemy' }) | ||||
|             Public.unstuck_player(player_index) | ||||
|         end, | ||||
|         1024, | ||||
|         'Nest' | ||||
|     }, | ||||
|     { | ||||
|         function(cave_miner, entity, player_index) | ||||
|         function (cave_miner, entity, player_index) | ||||
|             local position = entity.position | ||||
|             local surface = entity.surface | ||||
|             Public.place_worm(surface, position, 1) | ||||
| @@ -460,7 +460,7 @@ Public.mining_events = { | ||||
|         'Worm' | ||||
|     }, | ||||
|     { | ||||
|         function(cave_miner, entity, player_index) | ||||
|         function (cave_miner, entity, player_index) | ||||
|             local position = entity.position | ||||
|             if position.x ^ 2 + position.y ^ 2 < 8000 then | ||||
|                 return | ||||
| @@ -476,7 +476,7 @@ Public.mining_events = { | ||||
|                     surface, | ||||
|                     { | ||||
|                         name = BiterRaffle.roll('worm', difficulty_modifier), | ||||
|                         position = {position.x + (-4 + math_random(0, 8)), position.y + (-4 + math_random(0, 8))}, | ||||
|                         position = { position.x + (-4 + math_random(0, 8)), position.y + (-4 + math_random(0, 8)) }, | ||||
|                         force = 'enemy' | ||||
|                     }, | ||||
|                     16 | ||||
| @@ -487,28 +487,28 @@ Public.mining_events = { | ||||
|         'Worms' | ||||
|     }, | ||||
|     { | ||||
|         function(cave_miner, entity, player_index) | ||||
|         function (cave_miner, entity, player_index) | ||||
|             local position = entity.position | ||||
|             local surface = entity.surface | ||||
|             surface.create_entity({name = 'compilatron', position = position, force = 'player'}) | ||||
|             surface.create_entity({ name = 'compilatron', position = position, force = 'player' }) | ||||
|         end, | ||||
|         64, | ||||
|         'Friendly Compilatron' | ||||
|     }, | ||||
|     { | ||||
|         function(cave_miner, entity, player_index) | ||||
|         function (cave_miner, entity, player_index) | ||||
|             local position = entity.position | ||||
|             local surface = entity.surface | ||||
|             surface.create_entity({name = 'compilatron', position = position, force = 'enemy'}) | ||||
|             surface.create_entity({ name = 'compilatron', position = position, force = 'enemy' }) | ||||
|         end, | ||||
|         128, | ||||
|         'Enemy Compilatron' | ||||
|     }, | ||||
|     { | ||||
|         function(cave_miner, entity, player_index) | ||||
|         function (cave_miner, entity, player_index) | ||||
|             local position = entity.position | ||||
|             local surface = entity.surface | ||||
|             local entity = surface.create_entity({name = cave_miner.buildings_raffle[math_random(1, #cave_miner.buildings_raffle)], position = position, force = 'player'}) | ||||
|             local entity = surface.create_entity({ name = cave_miner.buildings_raffle[math_random(1, #cave_miner.buildings_raffle)], position = position, force = 'player' }) | ||||
|             entity.health = math_random(1, entity.prototype.max_health) | ||||
|             local player = game.players[player_index] | ||||
|             game.print(Public.get_colored_name(player_index) .. ' discovered an abandoned building', Constants.chat_color) | ||||
| @@ -517,10 +517,10 @@ Public.mining_events = { | ||||
|         'Abandoned Building' | ||||
|     }, | ||||
|     { | ||||
|         function(cave_miner, entity, player_index) | ||||
|         function (cave_miner, entity, player_index) | ||||
|             local position = entity.position | ||||
|             local surface = entity.surface | ||||
|             surface.create_entity({name = 'car', position = position, force = 'player'}) | ||||
|             surface.create_entity({ name = 'car', position = position, force = 'player' }) | ||||
|             Public.unstuck_player(player_index) | ||||
|             local player = game.players[player_index] | ||||
|             game.print(player.name .. ' has finally found their car!!', Constants.chat_color) | ||||
| @@ -529,22 +529,22 @@ Public.mining_events = { | ||||
|         'Car' | ||||
|     }, | ||||
|     { | ||||
|         function(cave_miner, entity, player_index) | ||||
|         function (cave_miner, entity, player_index) | ||||
|             local position = entity.position | ||||
|             local surface = entity.surface | ||||
|             local tick = game.tick | ||||
|  | ||||
|             local trees = {} | ||||
|             for k, prototype in pairs(game.entity_prototypes) do | ||||
|             for k, prototype in pairs(prototypes.entity) do | ||||
|                 if prototype.type == 'tree' then | ||||
|                     table.insert(trees, k) | ||||
|                 end | ||||
|             end | ||||
|             table.shuffle_table(trees) | ||||
|             local tree = game.entity_prototypes[trees[1]].name | ||||
|             local tree = prototypes.entity[trees[1]].name | ||||
|  | ||||
|             for c = 1, math_random(4, 96), 1 do | ||||
|                 Esq.add_to_queue(tick + c * 5, surface, {name = tree, position = position, force = 'neutral'}, 64) | ||||
|                 Esq.add_to_queue(tick + c * 5, surface, { name = tree, position = position, force = 'neutral' }, 64) | ||||
|             end | ||||
|             local player = game.players[player_index] | ||||
|             game.print(player.name .. ' found a whole forest!', Constants.chat_color) | ||||
| @@ -555,14 +555,14 @@ Public.mining_events = { | ||||
| } | ||||
|  | ||||
| Public.on_entity_died = { | ||||
|     ['unit'] = function(cave_miner, entity) | ||||
|     ['unit'] = function (cave_miner, entity) | ||||
|         local position = entity.position | ||||
|         local surface = entity.surface | ||||
|         if math.random(1, 8) == 1 then | ||||
|             surface.spill_item_stack(position, {name = 'raw-fish', count = 1}, true) | ||||
|             surface.spill_item_stack(position, { name = 'raw-fish', count = 1 }, true) | ||||
|         end | ||||
|     end, | ||||
|     ['unit-spawner'] = function(cave_miner, entity) | ||||
|     ['unit-spawner'] = function (cave_miner, entity) | ||||
|         local position = entity.position | ||||
|         local surface = entity.surface | ||||
|         local a = 64 * 0.0001 | ||||
| @@ -572,14 +572,14 @@ Public.on_entity_died = { | ||||
|             Public.spawn_random_biter(surface, position, 1) | ||||
|         end | ||||
|     end, | ||||
|     ['simple-entity'] = function(cave_miner, entity) | ||||
|     ['simple-entity'] = function (cave_miner, entity) | ||||
|         local position = entity.position | ||||
|         cave_miner.rocks_broken = cave_miner.rocks_broken + 1 | ||||
|         if math.random(1, 6) == 1 then | ||||
|             Public.rock_spawns_biters(cave_miner, position) | ||||
|         end | ||||
|     end, | ||||
|     ['container'] = function(cave_miner, entity) | ||||
|     ['container'] = function (cave_miner, entity) | ||||
|         local position = entity.position | ||||
|         Public.reveal(cave_miner, game.surfaces.nauvis, game.surfaces.cave_miner_source, position, 20) | ||||
|     end | ||||
|   | ||||
| @@ -208,7 +208,7 @@ local function on_init() | ||||
|     cave_miner.buildings_raffle = {} | ||||
|  | ||||
|     local types = { 'furnace', 'assembling-machine', 'reactor', 'artillery-turret', 'boiler', 'beacon', 'generator', 'storage-tank', 'roboport' } | ||||
|     for _, e in pairs(game.entity_prototypes) do | ||||
|     for _, e in pairs(prototypes.entity) do | ||||
|         for _, t in pairs(types) do | ||||
|             if e.type == t then | ||||
|                 table.insert(cave_miner.buildings_raffle, e.name) | ||||
|   | ||||
| @@ -274,7 +274,7 @@ local function on_player_joined_game(event) | ||||
|         ['rock-huge'] = { 'uranium-ore' } | ||||
|     } | ||||
|  | ||||
|     if game.item_prototypes['angels-ore1'] then | ||||
|     if prototypes.item['angels-ore1'] then | ||||
|         storage.entity_yield['tree-01'] = { 'angels-ore1', 'angels-ore2' } | ||||
|         storage.entity_yield['tree-02-red'] = { 'angels-ore5', 'angels-ore6' } | ||||
|         storage.entity_yield['tree-04'] = { 'coal' } | ||||
| @@ -283,7 +283,7 @@ local function on_player_joined_game(event) | ||||
|         game.map_settings.pollution.ageing = 0 | ||||
|     end | ||||
|  | ||||
|     if game.item_prototypes['thorium-ore'] then | ||||
|     if prototypes.item['thorium-ore'] then | ||||
|         storage.entity_yield['rock-big'] = { 'uranium-ore', 'thorium-ore' } | ||||
|         storage.entity_yield['rock-huge'] = { 'uranium-ore', 'thorium-ore' } | ||||
|     end | ||||
|   | ||||
| @@ -395,7 +395,7 @@ local function on_player_joined_game(event) | ||||
|         ['tree-05'] = { 'copper-ore', 'stone' } | ||||
|     } | ||||
|  | ||||
|     if game.item_prototypes['angels-ore1'] then | ||||
|     if prototypes.item['angels-ore1'] then | ||||
|         storage.entity_yield['tree-01'] = { 'angels-ore1', 'angels-ore2' } | ||||
|         storage.entity_yield['tree-02-red'] = { 'angels-ore5', 'angels-ore6' } | ||||
|         storage.entity_yield['tree-04'] = { 'coal' } | ||||
| @@ -404,7 +404,7 @@ local function on_player_joined_game(event) | ||||
|         --game.map_settings.pollution.ageing = 0 | ||||
|     end | ||||
|  | ||||
|     if game.item_prototypes['thorium-ore'] then | ||||
|     if prototypes.item['thorium-ore'] then | ||||
|         storage.entity_yield['rock-big'] = { 'uranium-ore', 'thorium-ore' } | ||||
|         storage.entity_yield['rock-huge'] = { 'uranium-ore', 'thorium-ore' } | ||||
|     end | ||||
| @@ -636,9 +636,9 @@ local function on_player_mined_entity(event) | ||||
|  | ||||
|         player.create_local_flying_text( | ||||
|             { | ||||
|             position = entity.position, | ||||
|             text = '+' .. amount .. ' [item=' .. main_item .. '] +' .. second_item_amount .. ' [item=' .. second_item .. ']', | ||||
|             color = { r = 0.8, g = 0.8, b = 0.8 } | ||||
|                 position = entity.position, | ||||
|                 text = '+' .. amount .. ' [item=' .. main_item .. '] +' .. second_item_amount .. ' [item=' .. second_item .. ']', | ||||
|                 color = { r = 0.8, g = 0.8, b = 0.8 } | ||||
|             } | ||||
|         ) | ||||
|  | ||||
|   | ||||
| @@ -12,53 +12,53 @@ local floor = math.floor | ||||
| local Public = {} | ||||
|  | ||||
| local noises = { | ||||
|     ['no_rocks'] = {{modifier = 0.0033, weight = 1}, {modifier = 0.01, weight = 0.22}, {modifier = 0.05, weight = 0.05}, {modifier = 0.1, weight = 0.04}}, | ||||
|     ['no_rocks_2'] = {{modifier = 0.013, weight = 1}, {modifier = 0.1, weight = 0.1}}, | ||||
|     ['large_caves'] = {{modifier = 0.0033, weight = 1}, {modifier = 0.01, weight = 0.22}, {modifier = 0.05, weight = 0.05}, {modifier = 0.1, weight = 0.04}}, | ||||
|     ['small_caves'] = {{modifier = 0.008, weight = 1}, {modifier = 0.03, weight = 0.15}, {modifier = 0.25, weight = 0.05}}, | ||||
|     ['small_caves_2'] = {{modifier = 0.009, weight = 1}, {modifier = 0.05, weight = 0.25}, {modifier = 0.25, weight = 0.05}}, | ||||
|     ['cave_ponds'] = {{modifier = 0.01, weight = 1}, {modifier = 0.1, weight = 0.06}}, | ||||
|     ['cave_rivers'] = {{modifier = 0.005, weight = 1}, {modifier = 0.01, weight = 0.25}, {modifier = 0.05, weight = 0.01}}, | ||||
|     ['cave_rivers_2'] = {{modifier = 0.003, weight = 1}, {modifier = 0.01, weight = 0.21}, {modifier = 0.05, weight = 0.01}}, | ||||
|     ['cave_rivers_3'] = {{modifier = 0.002, weight = 1}, {modifier = 0.01, weight = 0.15}, {modifier = 0.05, weight = 0.01}}, | ||||
|     ['cave_rivers_4'] = {{modifier = 0.001, weight = 1}, {modifier = 0.01, weight = 0.11}, {modifier = 0.05, weight = 0.01}}, | ||||
|     ['scrapyard'] = {{modifier = 0.005, weight = 1}, {modifier = 0.01, weight = 0.35}, {modifier = 0.05, weight = 0.23}, {modifier = 0.1, weight = 0.11}}, | ||||
|     ['forest_location'] = {{modifier = 0.006, weight = 1}, {modifier = 0.01, weight = 0.25}, {modifier = 0.05, weight = 0.15}, {modifier = 0.1, weight = 0.05}}, | ||||
|     ['forest_density'] = {{modifier = 0.01, weight = 1}, {modifier = 0.05, weight = 0.5}, {modifier = 0.1, weight = 0.025}}, | ||||
|     ['ores'] = {{modifier = 0.05, weight = 1}, {modifier = 0.02, weight = 0.55}, {modifier = 0.05, weight = 0.05}}, | ||||
|     ['hedgemaze'] = {{modifier = 0.001, weight = 1}} | ||||
|     ['no_rocks'] = { { modifier = 0.0033, weight = 1 }, { modifier = 0.01, weight = 0.22 }, { modifier = 0.05, weight = 0.05 }, { modifier = 0.1, weight = 0.04 } }, | ||||
|     ['no_rocks_2'] = { { modifier = 0.013, weight = 1 }, { modifier = 0.1, weight = 0.1 } }, | ||||
|     ['large_caves'] = { { modifier = 0.0033, weight = 1 }, { modifier = 0.01, weight = 0.22 }, { modifier = 0.05, weight = 0.05 }, { modifier = 0.1, weight = 0.04 } }, | ||||
|     ['small_caves'] = { { modifier = 0.008, weight = 1 }, { modifier = 0.03, weight = 0.15 }, { modifier = 0.25, weight = 0.05 } }, | ||||
|     ['small_caves_2'] = { { modifier = 0.009, weight = 1 }, { modifier = 0.05, weight = 0.25 }, { modifier = 0.25, weight = 0.05 } }, | ||||
|     ['cave_ponds'] = { { modifier = 0.01, weight = 1 }, { modifier = 0.1, weight = 0.06 } }, | ||||
|     ['cave_rivers'] = { { modifier = 0.005, weight = 1 }, { modifier = 0.01, weight = 0.25 }, { modifier = 0.05, weight = 0.01 } }, | ||||
|     ['cave_rivers_2'] = { { modifier = 0.003, weight = 1 }, { modifier = 0.01, weight = 0.21 }, { modifier = 0.05, weight = 0.01 } }, | ||||
|     ['cave_rivers_3'] = { { modifier = 0.002, weight = 1 }, { modifier = 0.01, weight = 0.15 }, { modifier = 0.05, weight = 0.01 } }, | ||||
|     ['cave_rivers_4'] = { { modifier = 0.001, weight = 1 }, { modifier = 0.01, weight = 0.11 }, { modifier = 0.05, weight = 0.01 } }, | ||||
|     ['scrapyard'] = { { modifier = 0.005, weight = 1 }, { modifier = 0.01, weight = 0.35 }, { modifier = 0.05, weight = 0.23 }, { modifier = 0.1, weight = 0.11 } }, | ||||
|     ['forest_location'] = { { modifier = 0.006, weight = 1 }, { modifier = 0.01, weight = 0.25 }, { modifier = 0.05, weight = 0.15 }, { modifier = 0.1, weight = 0.05 } }, | ||||
|     ['forest_density'] = { { modifier = 0.01, weight = 1 }, { modifier = 0.05, weight = 0.5 }, { modifier = 0.1, weight = 0.025 } }, | ||||
|     ['ores'] = { { modifier = 0.05, weight = 1 }, { modifier = 0.02, weight = 0.55 }, { modifier = 0.05, weight = 0.05 } }, | ||||
|     ['hedgemaze'] = { { modifier = 0.001, weight = 1 } } | ||||
| } | ||||
|  | ||||
| local entity_functions = { | ||||
|     ['turret'] = function(surface, entity) | ||||
|     ['turret'] = function (surface, entity) | ||||
|         surface.create_entity(entity) | ||||
|     end, | ||||
|     ['simple-entity'] = function(surface, entity) | ||||
|     ['simple-entity'] = function (surface, entity) | ||||
|         surface.create_entity(entity) | ||||
|     end, | ||||
|     ['simple-entity-with-owner'] = function(surface, entity) | ||||
|     ['simple-entity-with-owner'] = function (surface, entity) | ||||
|         surface.create_entity(entity) | ||||
|     end, | ||||
|     ['ammo-turret'] = function(surface, entity) | ||||
|     ['ammo-turret'] = function (surface, entity) | ||||
|         local e = surface.create_entity(entity) | ||||
|         e.insert({name = 'uranium-rounds-magazine', count = random(16, 64)}) | ||||
|         e.insert({ name = 'uranium-rounds-magazine', count = random(16, 64) }) | ||||
|     end, | ||||
|     ['container'] = function(surface, entity) | ||||
|     ['container'] = function (surface, entity) | ||||
|         Treasure(surface, entity.position, entity.name) | ||||
|     end, | ||||
|     ['lab'] = function(surface, entity) | ||||
|     ['lab'] = function (surface, entity) | ||||
|         local objective = Chrono_table.get_table() | ||||
|         local e = surface.create_entity(entity) | ||||
|         local evo = 1 + min(floor(objective.chronojumps / 5), 4) | ||||
|         local research = { | ||||
|             {'automation-science-pack', 'logistic-science-pack'}, | ||||
|             {'automation-science-pack', 'logistic-science-pack', 'military-science-pack'}, | ||||
|             {'automation-science-pack', 'logistic-science-pack', 'military-science-pack', 'chemical-science-pack'}, | ||||
|             {'automation-science-pack', 'logistic-science-pack', 'military-science-pack', 'chemical-science-pack', 'production-science-pack'}, | ||||
|             {'automation-science-pack', 'logistic-science-pack', 'military-science-pack', 'chemical-science-pack', 'production-science-pack', 'utility-science-pack'} | ||||
|             { 'automation-science-pack', 'logistic-science-pack' }, | ||||
|             { 'automation-science-pack', 'logistic-science-pack', 'military-science-pack' }, | ||||
|             { 'automation-science-pack', 'logistic-science-pack', 'military-science-pack', 'chemical-science-pack' }, | ||||
|             { 'automation-science-pack', 'logistic-science-pack', 'military-science-pack', 'chemical-science-pack', 'production-science-pack' }, | ||||
|             { 'automation-science-pack', 'logistic-science-pack', 'military-science-pack', 'chemical-science-pack', 'production-science-pack', 'utility-science-pack' } | ||||
|         } | ||||
|         for _, science in pairs(research[evo]) do | ||||
|             e.insert({name = science, count = random(min(30 + objective.chronojumps * 5, 100), min(60 + objective.chronojumps * 5, 200))}) | ||||
|             e.insert({ name = science, count = random(min(30 + objective.chronojumps * 5, 100), min(60 + objective.chronojumps * 5, 200)) }) | ||||
|         end | ||||
|     end | ||||
| } | ||||
| @@ -66,7 +66,7 @@ local entity_functions = { | ||||
| local function get_replacement_tile(surface, position) | ||||
|     local objective = Chrono_table.get_table() | ||||
|     for i = 1, 128, 1 do | ||||
|         local vectors = {{0, i}, {0, i * -1}, {i, 0}, {i * -1, 0}} | ||||
|         local vectors = { { 0, i }, { 0, i * -1 }, { i, 0 }, { i * -1, 0 } } | ||||
|         table.shuffle_table(vectors) | ||||
|         for k, v in pairs(vectors) do | ||||
|             local tile = surface.get_tile(position.x + v[1], position.y + v[2]) | ||||
| @@ -94,12 +94,12 @@ function Public.replace_water(surface, left_top) | ||||
|     local tiles = {} | ||||
|     for x = 0, 31, 1 do | ||||
|         for y = 0, 31, 1 do | ||||
|             local p = {x = left_top.x + x, y = left_top.y + y} | ||||
|             local p = { x = left_top.x + x, y = left_top.y + y } | ||||
|             local tile = surface.get_tile(p) | ||||
|             if tile.hidden_tile then | ||||
|                 surface.set_hidden_tile(p, get_replacement_tile(surface, p).name) | ||||
|             elseif tile.collides_with('resource-layer') then | ||||
|                 tiles[#tiles + 1] = {name = get_replacement_tile(surface, p), position = p} | ||||
|                 tiles[#tiles + 1] = { name = get_replacement_tile(surface, p), position = p } | ||||
|             end | ||||
|         end | ||||
|     end | ||||
| @@ -109,8 +109,8 @@ end | ||||
| function Public.spawn_entities(surface, entities) | ||||
|     local objective = Chrono_table.get_table() | ||||
|     for _, entity in pairs(entities) do | ||||
|         if entity_functions[game.entity_prototypes[entity.name].type] then | ||||
|             entity_functions[game.entity_prototypes[entity.name].type](surface, entity) | ||||
|         if entity_functions[prototypes.entity[entity.name].type] then | ||||
|             entity_functions[prototypes.entity[entity.name].type](surface, entity) | ||||
|         else | ||||
|             if surface.can_place_entity(entity) then | ||||
|                 local e = surface.create_entity(entity) | ||||
| @@ -125,7 +125,7 @@ function Public.spawn_entities(surface, entities) | ||||
| end | ||||
|  | ||||
| function Public.spawn_decoratives(surface, decoratives) | ||||
|     surface.create_decoratives {check_collision = false, decoratives = decoratives} | ||||
|     surface.create_decoratives { check_collision = false, decoratives = decoratives } | ||||
| end | ||||
|  | ||||
| function Public.spawn_treasures(surface, treasures) | ||||
| @@ -134,7 +134,7 @@ function Public.spawn_treasures(surface, treasures) | ||||
|         if random(1, 6) == 1 then | ||||
|             name = 'iron-chest' | ||||
|         end | ||||
|         if surface.can_place_entity({name = name, position = p}) then | ||||
|         if surface.can_place_entity({ name = name, position = p }) then | ||||
|             Treasure(surface, p, name) | ||||
|         end | ||||
|     end | ||||
| @@ -160,16 +160,16 @@ end | ||||
|  | ||||
| --LABYRINTH-- | ||||
| local modifiers = { | ||||
|     {x = 0, y = -1}, | ||||
|     {x = -1, y = 0}, | ||||
|     {x = 1, y = 0}, | ||||
|     {x = 0, y = 1} | ||||
|     { x = 0,  y = -1 }, | ||||
|     { x = -1, y = 0 }, | ||||
|     { x = 1,  y = 0 }, | ||||
|     { x = 0,  y = 1 } | ||||
| } | ||||
| local modifiers_diagonal = { | ||||
|     {diagonal = {x = -1, y = 1}, connection_1 = {x = -1, y = 0}, connection_2 = {x = 0, y = 1}}, | ||||
|     {diagonal = {x = 1, y = -1}, connection_1 = {x = 1, y = 0}, connection_2 = {x = 0, y = -1}}, | ||||
|     {diagonal = {x = 1, y = 1}, connection_1 = {x = 1, y = 0}, connection_2 = {x = 0, y = 1}}, | ||||
|     {diagonal = {x = -1, y = -1}, connection_1 = {x = -1, y = 0}, connection_2 = {x = 0, y = -1}} | ||||
|     { diagonal = { x = -1, y = 1 }, connection_1 = { x = -1, y = 0 }, connection_2 = { x = 0, y = 1 } }, | ||||
|     { diagonal = { x = 1, y = -1 }, connection_1 = { x = 1, y = 0 }, connection_2 = { x = 0, y = -1 } }, | ||||
|     { diagonal = { x = 1, y = 1 }, connection_1 = { x = 1, y = 0 }, connection_2 = { x = 0, y = 1 } }, | ||||
|     { diagonal = { x = -1, y = -1 }, connection_1 = { x = -1, y = 0 }, connection_2 = { x = 0, y = -1 } } | ||||
| } | ||||
|  | ||||
| local function get_path_connections_count(cell_pos) | ||||
| @@ -186,7 +186,7 @@ end | ||||
| function Public.process_labyrinth_cell(pos, seed) | ||||
|     local scheduletable = Chrono_table.get_schedule_table() | ||||
|     local lake_noise_value = -0.85 | ||||
|     local cell_position = {x = pos.x / 32, y = pos.y / 32} | ||||
|     local cell_position = { x = pos.x / 32, y = pos.y / 32 } | ||||
|     local mazenoise = Public.get_noise('hedgemaze', cell_position, seed) | ||||
|  | ||||
|     if mazenoise < lake_noise_value and Public.distance(pos.x / 32, pos.y / 32) > 65 then | ||||
| @@ -206,7 +206,7 @@ function Public.process_labyrinth_cell(pos, seed) | ||||
|     end | ||||
|  | ||||
|     for _, m in pairs(modifiers) do | ||||
|         if get_path_connections_count({x = cell_position.x + m.x, y = cell_position.y + m.y}) >= random(2, 3) then | ||||
|         if get_path_connections_count({ x = cell_position.x + m.x, y = cell_position.y + m.y }) >= random(2, 3) then | ||||
|             return false | ||||
|         end | ||||
|     end | ||||
| @@ -220,15 +220,15 @@ function Public.process_labyrinth_cell(pos, seed) | ||||
| end | ||||
|  | ||||
| function Public.build_blueprint(surface, position, id, force) | ||||
| 	local item = surface.create_entity{name = "item-on-ground", position = position, stack = {name = "blueprint", count = 1}} | ||||
| 	local success = item.stack.import_stack(Blueprints[id]) | ||||
| 	if success <= 0 then | ||||
| 		local ghosts = item.stack.build_blueprint{surface = surface, force = force, position = position, force_build = true} | ||||
| 		for _, ghost in pairs(ghosts) do | ||||
| 			ghost.silent_revive({raise_revive = true}) | ||||
| 		end | ||||
| 	end | ||||
| 	if item.valid then item.destroy() end | ||||
|     local item = surface.create_entity { name = "item-on-ground", position = position, stack = { name = "blueprint", count = 1 } } | ||||
|     local success = item.stack.import_stack(Blueprints[id]) | ||||
|     if success <= 0 then | ||||
|         local ghosts = item.stack.build_blueprint { surface = surface, force = force, position = position, force_build = true } | ||||
|         for _, ghost in pairs(ghosts) do | ||||
|             ghost.silent_revive({ raise_revive = true }) | ||||
|         end | ||||
|     end | ||||
|     if item.valid then item.destroy() end | ||||
| end | ||||
|  | ||||
| return Public | ||||
|   | ||||
| @@ -17,7 +17,7 @@ end | ||||
|  | ||||
| local function get_replacement_tile(surface, position) | ||||
|     for i = 1, 128, 1 do | ||||
|         local vectors = {{0, i}, {0, i * -1}, {i, 0}, {i * -1, 0}} | ||||
|         local vectors = { { 0, i }, { 0, i * -1 }, { i, 0 }, { i * -1, 0 } } | ||||
|         shuffle(vectors) | ||||
|         for k, v in pairs(vectors) do | ||||
|             local tile = surface.get_tile(position.x + v[1], position.y + v[2]) | ||||
| @@ -39,7 +39,7 @@ local function is_enemy_territory(surface, p) | ||||
| end | ||||
|  | ||||
| local function place_crab_market(surface, position) | ||||
|     local market = surface.create_entity({name = 'market', position = position, force = 'player'}) | ||||
|     local market = surface.create_entity({ name = 'market', position = position, force = 'player' }) | ||||
|     market.minable = false | ||||
|     return market | ||||
| end | ||||
| @@ -58,23 +58,23 @@ local function enemy_territory(surface, left_top) | ||||
|         return | ||||
|     end | ||||
|  | ||||
|     local area = {{left_top.x, left_top.y}, {left_top.x + 32, left_top.y + 32}} | ||||
|     local area = { { left_top.x, left_top.y }, { left_top.x + 32, left_top.y + 32 } } | ||||
|     local find_entities_filtered = surface.find_entities_filtered | ||||
|  | ||||
|     for x = 0, 31, 1 do | ||||
|         for y = 0, 31, 1 do | ||||
|             local pos = {x = left_top.x + x, y = left_top.y + y} | ||||
|             local pos = { x = left_top.x + x, y = left_top.y + y } | ||||
|             local get_tile = surface.get_tile(pos) | ||||
|  | ||||
|             if is_enemy_territory(surface, pos) then | ||||
|                 if get_tile.valid and get_tile.name == 'tutorial-grid' then | ||||
|                     if math_random(1, 1024) == 1 then | ||||
|                         if surface.can_place_entity({name = 'biter-spawner', force = 'decoratives', position = pos}) then | ||||
|                         if surface.can_place_entity({ name = 'biter-spawner', force = 'decoratives', position = pos }) then | ||||
|                             local entity | ||||
|                             if math_random(1, 4) == 1 then | ||||
|                                 entity = surface.create_entity({name = 'spitter-spawner', force = 'decoratives', position = pos}) | ||||
|                                 entity = surface.create_entity({ name = 'spitter-spawner', force = 'decoratives', position = pos }) | ||||
|                             else | ||||
|                                 entity = surface.create_entity({name = 'biter-spawner', force = 'decoratives', position = pos}) | ||||
|                                 entity = surface.create_entity({ name = 'biter-spawner', force = 'decoratives', position = pos }) | ||||
|                             end | ||||
|                             entity.active = false | ||||
|                             entity.destructible = false | ||||
| @@ -85,9 +85,9 @@ local function enemy_territory(surface, left_top) | ||||
|         end | ||||
|     end | ||||
|  | ||||
|     for _, entity in pairs(find_entities_filtered({area = area, type = 'resource'})) do | ||||
|     for _, entity in pairs(find_entities_filtered({ area = area, type = 'resource' })) do | ||||
|         if is_enemy_territory(surface, entity.position) then | ||||
|             surface.create_entity({name = 'uranium-ore', position = entity.position, amount = math_random(200, 8000)}) | ||||
|             surface.create_entity({ name = 'uranium-ore', position = entity.position, amount = math_random(200, 8000) }) | ||||
|             entity.destroy() | ||||
|         end | ||||
|     end | ||||
| @@ -102,16 +102,16 @@ local function render_market_hp() | ||||
|  | ||||
|     this.caption = | ||||
|         rendering.draw_text { | ||||
|         text = 'Crab Market', | ||||
|         surface = surface, | ||||
|         target = this.market, | ||||
|         target_offset = {0, -3.4}, | ||||
|         color = {0, 255, 0}, | ||||
|         scale = 1.80, | ||||
|         font = 'default-game', | ||||
|         alignment = 'center', | ||||
|         scale_with_zoom = false | ||||
|     } | ||||
|             text = 'Crab Market', | ||||
|             surface = surface, | ||||
|             target = this.market, | ||||
|             target_offset = { 0, -3.4 }, | ||||
|             color = { 0, 255, 0 }, | ||||
|             scale = 1.80, | ||||
|             font = 'default-game', | ||||
|             alignment = 'center', | ||||
|             scale_with_zoom = false | ||||
|         } | ||||
| end | ||||
|  | ||||
| local function generate_spawn_area(this, surface) | ||||
| @@ -120,36 +120,36 @@ local function generate_spawn_area(this, surface) | ||||
|     end | ||||
|     local find_entities_filtered = surface.find_entities_filtered | ||||
|  | ||||
|     surface.request_to_generate_chunks({x = 0, y = 0}, 1) | ||||
|     surface.request_to_generate_chunks({x = 32, y = 118}, 1) | ||||
|     surface.request_to_generate_chunks({ x = 0, y = 0 }, 1) | ||||
|     surface.request_to_generate_chunks({ x = 32, y = 118 }, 1) | ||||
|  | ||||
|     if not surface.is_chunk_generated({-7, 0}) then | ||||
|     if not surface.is_chunk_generated({ -7, 0 }) then | ||||
|         return | ||||
|     end | ||||
|     if not surface.is_chunk_generated({5, 0}) then | ||||
|     if not surface.is_chunk_generated({ 5, 0 }) then | ||||
|         return | ||||
|     end | ||||
|  | ||||
|     local spawn_position_x = 32 | ||||
|     local spawn_position_y = 120 | ||||
|  | ||||
|     surface.create_entity({name = 'electric-beam', position = {-532, -10}, source = {-532, -10}, target = {-471, -124}}) | ||||
|     surface.create_entity({name = 'electric-beam', position = {665, -10}, source = {665, -10}, target = {601, -127}}) | ||||
|     surface.create_entity({ name = 'electric-beam', position = { -532, -10 }, source = { -532, -10 }, target = { -471, -124 } }) | ||||
|     surface.create_entity({ name = 'electric-beam', position = { 665, -10 }, source = { 665, -10 }, target = { 601, -127 } }) | ||||
|  | ||||
|     for _, tile in pairs(surface.find_tiles_filtered({name = {'water', 'deepwater'}, area = {{-145, -133}, {32, 59}}})) do | ||||
|     for _, tile in pairs(surface.find_tiles_filtered({ name = { 'water', 'deepwater' }, area = { { -145, -133 }, { 32, 59 } } })) do | ||||
|         local noise = math_abs(simplex_noise(tile.position.x * 0.02, tile.position.y * 0.02, game.surfaces[1].map_gen_settings.seed) * 16) | ||||
|         if tile.position.x > -160 + noise then | ||||
|             surface.set_tiles({{name = get_replacement_tile(surface, tile.position), position = {tile.position.x, tile.position.y}}}, true) | ||||
|             surface.set_tiles({ { name = get_replacement_tile(surface, tile.position), position = { tile.position.x, tile.position.y } } }, true) | ||||
|         end | ||||
|     end | ||||
|  | ||||
|     for _, entity in pairs( | ||||
|         find_entities_filtered( | ||||
|             { | ||||
|                 type = {'resource', 'cliff'}, | ||||
|                 type = { 'resource', 'cliff' }, | ||||
|                 area = { | ||||
|                     {spawn_position_x - 128, spawn_position_y - 132}, | ||||
|                     {spawn_position_x + 64, spawn_position_y + 32} | ||||
|                     { spawn_position_x - 128, spawn_position_y - 132 }, | ||||
|                     { spawn_position_x + 64,  spawn_position_y + 32 } | ||||
|                 } | ||||
|             } | ||||
|         ) | ||||
| @@ -158,33 +158,33 @@ local function generate_spawn_area(this, surface) | ||||
|     end | ||||
|  | ||||
|     local decorative_names = {} | ||||
|     for k, v in pairs(game.decorative_prototypes) do | ||||
|     for k, v in pairs(prototypes.decorative) do | ||||
|         if v.autoplace_specification then | ||||
|             decorative_names[#decorative_names + 1] = k | ||||
|         end | ||||
|     end | ||||
|     for x = -4, 4, 1 do | ||||
|         for y = -3, 3, 1 do | ||||
|             surface.regenerate_decorative(decorative_names, {{x, y}}) | ||||
|             surface.regenerate_decorative(decorative_names, { { x, y } }) | ||||
|         end | ||||
|     end | ||||
|  | ||||
|     local ore_positions = { | ||||
|         {x = spawn_position_x - 80, y = spawn_position_y + 50}, | ||||
|         {x = spawn_position_x - 40, y = spawn_position_y + 50}, | ||||
|         {x = spawn_position_x, y = spawn_position_y + 50}, | ||||
|         {x = spawn_position_x + 40, y = spawn_position_y + 50}, | ||||
|         {x = spawn_position_x + 80, y = spawn_position_y + 50} | ||||
|         { x = spawn_position_x - 80, y = spawn_position_y + 50 }, | ||||
|         { x = spawn_position_x - 40, y = spawn_position_y + 50 }, | ||||
|         { x = spawn_position_x,      y = spawn_position_y + 50 }, | ||||
|         { x = spawn_position_x + 40, y = spawn_position_y + 50 }, | ||||
|         { x = spawn_position_x + 80, y = spawn_position_y + 50 } | ||||
|     } | ||||
|     shuffle(ore_positions) | ||||
|     map_functions.draw_smoothed_out_ore_circle(ore_positions[1], 'copper-ore', surface, 15, 2500) | ||||
|     map_functions.draw_smoothed_out_ore_circle(ore_positions[2], 'iron-ore', surface, 15, 2500) | ||||
|     map_functions.draw_smoothed_out_ore_circle(ore_positions[3], 'coal', surface, 15, 1500) | ||||
|     map_functions.draw_smoothed_out_ore_circle(ore_positions[4], 'stone', surface, 15, 1500) | ||||
|     map_functions.draw_noise_tile_circle({x = spawn_position_x, y = spawn_position_y + 25}, 'water', surface, 16) | ||||
|     map_functions.draw_noise_tile_circle({ x = spawn_position_x, y = spawn_position_y + 25 }, 'water', surface, 16) | ||||
|     map_functions.draw_oil_circle(ore_positions[5], 'crude-oil', surface, 8, 200000) | ||||
|  | ||||
|     local pos = surface.find_non_colliding_position('market', {spawn_position_x, spawn_position_y}, 50, 1) | ||||
|     local pos = surface.find_non_colliding_position('market', { spawn_position_x, spawn_position_y }, 50, 1) | ||||
|     this.market = place_crab_market(surface, pos) | ||||
|  | ||||
|     render_market_hp() | ||||
| @@ -194,8 +194,8 @@ local function generate_spawn_area(this, surface) | ||||
|         find_entities_filtered( | ||||
|             { | ||||
|                 area = { | ||||
|                     {this.market.position.x - r, this.market.position.y - r}, | ||||
|                     {this.market.position.x + r, this.market.position.y + r} | ||||
|                     { this.market.position.x - r, this.market.position.y - r }, | ||||
|                     { this.market.position.x + r, this.market.position.y + r } | ||||
|                 }, | ||||
|                 type = 'tree' | ||||
|             } | ||||
| @@ -204,33 +204,33 @@ local function generate_spawn_area(this, surface) | ||||
|         entity.destroy() | ||||
|     end | ||||
|  | ||||
|     local turret_pos = surface.find_non_colliding_position('gun-turret', {spawn_position_x, spawn_position_y - 5}, 50, 1) | ||||
|     local turret = surface.create_entity({name = 'gun-turret', position = turret_pos, force = 'player'}) | ||||
|     turret.insert({name = 'firearm-magazine', count = 32}) | ||||
|     local turret_pos = surface.find_non_colliding_position('gun-turret', { spawn_position_x, spawn_position_y - 5 }, 50, 1) | ||||
|     local turret = surface.create_entity({ name = 'gun-turret', position = turret_pos, force = 'player' }) | ||||
|     turret.insert({ name = 'firearm-magazine', count = 32 }) | ||||
|  | ||||
|     for x = -20, 20, 1 do | ||||
|         for y = -20, 20, 1 do | ||||
|             local market_pos = {x = this.market.position.x + x, y = this.market.position.y + y} | ||||
|             local market_pos = { x = this.market.position.x + x, y = this.market.position.y + y } | ||||
|             local distance_to_center = x ^ 2 + y ^ 2 | ||||
|             if distance_to_center > 64 and distance_to_center < 225 then | ||||
|                 if math_random(1, 3) == 1 and surface.can_place_entity({name = 'wooden-chest', position = market_pos, force = 'player'}) then | ||||
|                     surface.create_entity({name = 'wooden-chest', position = market_pos, force = 'player'}) | ||||
|                 if math_random(1, 3) == 1 and surface.can_place_entity({ name = 'wooden-chest', position = market_pos, force = 'player' }) then | ||||
|                     surface.create_entity({ name = 'wooden-chest', position = market_pos, force = 'player' }) | ||||
|                 end | ||||
|             end | ||||
|         end | ||||
|     end | ||||
|  | ||||
|     local area = {{x = -160, y = -96}, {x = 160, y = 96}} | ||||
|     for _, tile in pairs(surface.find_tiles_filtered({name = 'water', area = area})) do | ||||
|     local area = { { x = -160, y = -96 }, { x = 160, y = 96 } } | ||||
|     for _, tile in pairs(surface.find_tiles_filtered({ name = 'water', area = area })) do | ||||
|         if math_random(1, 32) == 1 then | ||||
|             surface.create_entity({name = 'fish', position = tile.position}) | ||||
|             surface.create_entity({ name = 'fish', position = tile.position }) | ||||
|         end | ||||
|     end | ||||
|  | ||||
|     local character_pos = surface.find_non_colliding_position('character', {spawn_position_x + 1, spawn_position_y}, 50, 1) | ||||
|     local character_pos = surface.find_non_colliding_position('character', { spawn_position_x + 1, spawn_position_y }, 50, 1) | ||||
|     game.forces['player'].set_spawn_position(character_pos, surface) | ||||
|     for _, player in pairs(game.connected_players) do | ||||
|         local spawn_pos = surface.find_non_colliding_position('character', {spawn_position_x + 1, spawn_position_y}, 50, 1) | ||||
|         local spawn_pos = surface.find_non_colliding_position('character', { spawn_position_x + 1, spawn_position_y }, 50, 1) | ||||
|         player.teleport(spawn_pos, surface) | ||||
|     end | ||||
|     this.spawn_area_generated = true | ||||
| @@ -250,8 +250,8 @@ local function process_chunk(left_top) | ||||
|     for _, entity in pairs( | ||||
|         find_entities_filtered( | ||||
|             { | ||||
|                 area = {{left_top.x - 32, left_top.y - 32}, {left_top.x + 32, left_top.y + 32}}, | ||||
|                 type = {'tree', 'simple-entity', 'cliff'} | ||||
|                 area = { { left_top.x - 32, left_top.y - 32 }, { left_top.x + 32, left_top.y + 32 } }, | ||||
|                 type = { 'tree', 'simple-entity', 'cliff' } | ||||
|             } | ||||
|         ) | ||||
|     ) do | ||||
| @@ -260,7 +260,7 @@ local function process_chunk(left_top) | ||||
|         end | ||||
|     end | ||||
|  | ||||
|     game.forces.player.chart(surface, {{left_top.x, left_top.y}, {left_top.x + 31, left_top.y + 31}}) | ||||
|     game.forces.player.chart(surface, { { left_top.x, left_top.y }, { left_top.x + 31, left_top.y + 31 } }) | ||||
|     if this.market and this.market.valid then | ||||
|         this.game_reset = false | ||||
|     end | ||||
|   | ||||
| @@ -14,7 +14,7 @@ local random = math.random | ||||
| local function on_chunk_charted(event) | ||||
|     local settings = DPT.get('settings') | ||||
|     local surface = game.get_surface(event.surface_index) | ||||
|     local deco = game.decorative_prototypes | ||||
|     local deco = prototypes.decorative | ||||
|     local position = event.position | ||||
|     if settings.chunks_charted[tostring(position.x) .. tostring(position.y)] then | ||||
|         return | ||||
| @@ -27,27 +27,27 @@ local function on_chunk_charted(event) | ||||
|             decorative_names[#decorative_names + 1] = k | ||||
|         end | ||||
|     end | ||||
|     surface.regenerate_decorative(decorative_names, {position}) | ||||
|     surface.regenerate_decorative(decorative_names, { position }) | ||||
|  | ||||
|     if random(1, 14) ~= 1 then | ||||
|         return | ||||
|     end | ||||
|  | ||||
|     map_functions.draw_rainbow_patch({x = position.x * 32 + random(1, 32), y = position.y * 32 + random(1, 32)}, surface, random(14, 26), 2000) | ||||
|     map_functions.draw_rainbow_patch({ x = position.x * 32 + random(1, 32), y = position.y * 32 + random(1, 32) }, surface, random(14, 26), 2000) | ||||
| end | ||||
|  | ||||
| local function on_player_joined_game(event) | ||||
|     local player = game.get_player(event.player_index) | ||||
|     local surface = game.get_surface('deep_jungle') | ||||
|     if player.online_time < 5 and surface.is_chunk_generated({0, 0}) then | ||||
|         player.teleport(surface.find_non_colliding_position('character', {0, 0}, 2, 1), 'deep_jungle') | ||||
|     if player.online_time < 5 and surface.is_chunk_generated({ 0, 0 }) then | ||||
|         player.teleport(surface.find_non_colliding_position('character', { 0, 0 }, 2, 1), 'deep_jungle') | ||||
|     else | ||||
|         if player.online_time < 5 then | ||||
|             player.teleport({0, 0}, 'deep_jungle') | ||||
|             player.teleport({ 0, 0 }, 'deep_jungle') | ||||
|         end | ||||
|     end | ||||
|     if player.online_time < 2 then | ||||
|         player.insert {name = 'iron-plate', count = 32} | ||||
|         player.insert { name = 'iron-plate', count = 32 } | ||||
|     end | ||||
| end | ||||
|  | ||||
| @@ -61,43 +61,43 @@ local function on_entity_died(event) | ||||
|         if random(1, 8) == 1 then | ||||
|             local p = surface.find_non_colliding_position('small-biter', entity.position, 2, 0.5) | ||||
|             if p then | ||||
|                 surface.create_entity {name = 'small-biter', position = entity.position} | ||||
|                 surface.create_entity { name = 'small-biter', position = entity.position } | ||||
|             end | ||||
|             return | ||||
|         end | ||||
|         if random(1, 16) == 1 then | ||||
|             local p = surface.find_non_colliding_position('medium-biter', entity.position, 2, 0.5) | ||||
|             if p then | ||||
|                 surface.create_entity {name = 'medium-biter', position = entity.position} | ||||
|                 surface.create_entity { name = 'medium-biter', position = entity.position } | ||||
|             end | ||||
|             return | ||||
|         end | ||||
|         if random(1, 32) == 1 then | ||||
|             local p = surface.find_non_colliding_position('big-biter', entity.position, 2, 0.5) | ||||
|             if p then | ||||
|                 surface.create_entity {name = 'big-biter', position = entity.position} | ||||
|                 surface.create_entity { name = 'big-biter', position = entity.position } | ||||
|             end | ||||
|             return | ||||
|         end | ||||
|         if random(1, 512) == 1 then | ||||
|             local p = surface.find_non_colliding_position('behemoth-biter', entity.position, 2, 0.5) | ||||
|             if p then | ||||
|                 surface.create_entity {name = 'behemoth-biter', position = entity.position} | ||||
|                 surface.create_entity { name = 'behemoth-biter', position = entity.position } | ||||
|             end | ||||
|             return | ||||
|         end | ||||
|     end | ||||
|     if entity.type == 'simple-entity' then | ||||
|         if random(1, 8) == 1 then | ||||
|             surface.create_entity {name = 'small-worm-turret', position = entity.position} | ||||
|             surface.create_entity { name = 'small-worm-turret', position = entity.position } | ||||
|             return | ||||
|         end | ||||
|         if random(1, 16) == 1 then | ||||
|             surface.create_entity {name = 'medium-worm-turret', position = entity.position} | ||||
|             surface.create_entity { name = 'medium-worm-turret', position = entity.position } | ||||
|             return | ||||
|         end | ||||
|         if random(1, 32) == 1 then | ||||
|             surface.create_entity {name = 'big-worm-turret', position = entity.position} | ||||
|             surface.create_entity { name = 'big-worm-turret', position = entity.position } | ||||
|             return | ||||
|         end | ||||
|     end | ||||
| @@ -115,7 +115,7 @@ local function chunk_load() | ||||
|     end | ||||
| end | ||||
|  | ||||
| local on_tick = function() | ||||
| local on_tick = function () | ||||
|     local tick = game.tick | ||||
|     if tick % 40 == 0 then | ||||
|         chunk_load() | ||||
| @@ -129,18 +129,18 @@ local function on_init() | ||||
|     map_gen_settings.moisture = 0.99 | ||||
|     map_gen_settings.water = 'none' | ||||
|     map_gen_settings.starting_area = 'normal' | ||||
|     map_gen_settings.cliff_settings = {cliff_elevation_interval = 4, cliff_elevation_0 = 0.1} | ||||
|     map_gen_settings.cliff_settings = { cliff_elevation_interval = 4, cliff_elevation_0 = 0.1 } | ||||
|     map_gen_settings.autoplace_controls = { | ||||
|         ['coal'] = {frequency = 'none', size = 'none', richness = 'none'}, | ||||
|         ['stone'] = {frequency = 'none', size = 'none', richness = 'none'}, | ||||
|         ['copper-ore'] = {frequency = 'none', size = 'none', richness = 'none'}, | ||||
|         ['iron-ore'] = {frequency = 'none', size = 'none', richness = 'none'}, | ||||
|         ['crude-oil'] = {frequency = 'very-high', size = 'big', richness = 'normal'}, | ||||
|         ['trees'] = {frequency = 'none', size = 'none', richness = 'none'}, | ||||
|         ['enemy-base'] = {frequency = 'high', size = 'big', richness = 'good'} | ||||
|         ['coal'] = { frequency = 'none', size = 'none', richness = 'none' }, | ||||
|         ['stone'] = { frequency = 'none', size = 'none', richness = 'none' }, | ||||
|         ['copper-ore'] = { frequency = 'none', size = 'none', richness = 'none' }, | ||||
|         ['iron-ore'] = { frequency = 'none', size = 'none', richness = 'none' }, | ||||
|         ['crude-oil'] = { frequency = 'very-high', size = 'big', richness = 'normal' }, | ||||
|         ['trees'] = { frequency = 'none', size = 'none', richness = 'none' }, | ||||
|         ['enemy-base'] = { frequency = 'high', size = 'big', richness = 'good' } | ||||
|     } | ||||
|     game.create_surface('deep_jungle', map_gen_settings) | ||||
|     game.forces.player.set_spawn_position({0, 0}, game.surfaces['deep_jungle']) | ||||
|     game.forces.player.set_spawn_position({ 0, 0 }, game.surfaces['deep_jungle']) | ||||
|     settings.force_chunk = true | ||||
|     settings.chunk_load_tick = game.tick + 200 | ||||
| end | ||||
|   | ||||
| @@ -132,7 +132,7 @@ local function on_chunk_generated(event) | ||||
|         if get_noise('oasis', entity.position, seed) <= oasis_start then | ||||
|             entity.destroy() | ||||
|         else | ||||
|             if game.item_prototypes[entity.name] then | ||||
|             if prototypes.item[entity.name] then | ||||
|                 surface.create_entity( | ||||
|                     { name = entity.name, position = entity.position, amount = math_random(200, 300) + math.sqrt(entity.position.x ^ 2 + entity.position.y ^ 2) * 0.65 } | ||||
|                 ) | ||||
| @@ -278,7 +278,7 @@ local function deny_tile_building(surface, inventory, tiles, tile) | ||||
|     for _, t in pairs(tiles) do | ||||
|         if not save_tiles[t.old_tile.name] then | ||||
|             surface.set_tiles({ { name = t.old_tile.name, position = t.position } }, true) | ||||
|             if game.item_prototypes[tile.name] then | ||||
|             if prototypes.item[tile.name] then | ||||
|                 inventory.insert({ name = tile.name, count = 1 }) | ||||
|             else | ||||
|                 if tile_to_item[tile.name] then | ||||
|   | ||||
| @@ -193,7 +193,7 @@ function Public.spawn_units(spawner) | ||||
| end | ||||
|  | ||||
| function Public.get_item_tooltip(name) | ||||
|     return { 'expanse.stats_item_tooltip', game.item_prototypes[name].localised_name, Price_raffle.get_item_worth(name) } | ||||
|     return { 'expanse.stats_item_tooltip', prototypes.item[name].localised_name, Price_raffle.get_item_worth(name) } | ||||
| end | ||||
|  | ||||
| function Public.invasion_numbers() | ||||
|   | ||||
| @@ -236,7 +236,7 @@ function Public.roll_item_stack(remaining_budget, blacklist, value_blacklist) | ||||
|         end | ||||
|     end | ||||
|  | ||||
|     local stack_size = game.item_prototypes[item_name].stack_size * 32 | ||||
|     local stack_size = prototypes.item[item_name].stack_size * 32 | ||||
|  | ||||
|     local item_count = 1 | ||||
|  | ||||
|   | ||||
| @@ -24,7 +24,7 @@ local rock_raffle = { | ||||
|  | ||||
| local function get_replacement_tile(surface, position) | ||||
|     for i = 1, 128, 1 do | ||||
|         local vectors = {{0, i}, {0, i * -1}, {i, 0}, {i * -1, 0}} | ||||
|         local vectors = { { 0, i }, { 0, i * -1 }, { i, 0 }, { i * -1, 0 } } | ||||
|         table.shuffle_table(vectors) | ||||
|         for k, v in pairs(vectors) do | ||||
|             local tile = surface.get_tile(position.x + v[1], position.y + v[2]) | ||||
| @@ -63,15 +63,15 @@ end | ||||
|  | ||||
| local body_radius = 3072 | ||||
| local body_square_radius = body_radius ^ 2 | ||||
| local body_center_position = {x = -1500, y = 0} | ||||
| local body_center_position = { x = -1500, y = 0 } | ||||
| local body_spacing = math_floor(body_radius * 0.82) | ||||
| local body_circle_center_1 = {x = body_center_position.x, y = body_center_position.y - body_spacing} | ||||
| local body_circle_center_2 = {x = body_center_position.x, y = body_center_position.y + body_spacing} | ||||
| local body_circle_center_1 = { x = body_center_position.x, y = body_center_position.y - body_spacing } | ||||
| local body_circle_center_2 = { x = body_center_position.x, y = body_center_position.y + body_spacing } | ||||
|  | ||||
| local fin_radius = 800 | ||||
| local square_fin_radius = fin_radius ^ 2 | ||||
| local fin_circle_center_1 = {x = -480, y = 0} | ||||
| local fin_circle_center_2 = {x = -480 - 360, y = 0} | ||||
| local fin_circle_center_1 = { x = -480, y = 0 } | ||||
| local fin_circle_center_2 = { x = -480 - 360, y = 0 } | ||||
|  | ||||
| local function is_body(p) | ||||
|     local this = FDT.get() | ||||
| @@ -124,39 +124,39 @@ local function is_out_of_map_tile(p) | ||||
| end | ||||
|  | ||||
| local function place_fish_market(surface, position) | ||||
|     local market = surface.create_entity({name = 'market', position = position, force = 'player'}) | ||||
|     local market = surface.create_entity({ name = 'market', position = position, force = 'player' }) | ||||
|     market.minable = false | ||||
|     return market | ||||
| end | ||||
|  | ||||
| local function generate_spawn_area(surface) | ||||
|     surface.request_to_generate_chunks({x = 0, y = 0}, 7) | ||||
|     surface.request_to_generate_chunks({x = 160, y = 0}, 4) | ||||
|     surface.request_to_generate_chunks({ x = 0, y = 0 }, 7) | ||||
|     surface.request_to_generate_chunks({ x = 160, y = 0 }, 4) | ||||
|     --surface.force_generate_chunk_requests() | ||||
|     local spawn_area_generated = FDT.get('spawn_area_generated') | ||||
|     if spawn_area_generated then | ||||
|         return | ||||
|     end | ||||
|     if not surface.is_chunk_generated({-7, 0}) then | ||||
|     if not surface.is_chunk_generated({ -7, 0 }) then | ||||
|         return | ||||
|     end | ||||
|     if not surface.is_chunk_generated({5, 0}) then | ||||
|     if not surface.is_chunk_generated({ 5, 0 }) then | ||||
|         return | ||||
|     end | ||||
|     FDT.get().spawn_area_generated = true | ||||
|  | ||||
|     local spawn_position_x = -128 | ||||
|  | ||||
|     surface.create_entity({name = 'electric-beam', position = {160, -96}, source = {160, -96}, target = {160, 96}}) | ||||
|     surface.create_entity({ name = 'electric-beam', position = { 160, -96 }, source = { 160, -96 }, target = { 160, 96 } }) | ||||
|  | ||||
|     for _, tile in pairs(surface.find_tiles_filtered({name = {'water', 'deepwater'}, area = {{-160, -160}, {160, 160}}})) do | ||||
|     for _, tile in pairs(surface.find_tiles_filtered({ name = { 'water', 'deepwater' }, area = { { -160, -160 }, { 160, 160 } } })) do | ||||
|         local noise = math_abs(simplex_noise(tile.position.x * 0.02, tile.position.y * 0.02, game.surfaces[1].map_gen_settings.seed) * 16) | ||||
|         if tile.position.x > -160 + noise then | ||||
|             surface.set_tiles({{name = get_replacement_tile(surface, tile.position), position = {tile.position.x, tile.position.y}}}, true) | ||||
|             surface.set_tiles({ { name = get_replacement_tile(surface, tile.position), position = { tile.position.x, tile.position.y } } }, true) | ||||
|         end | ||||
|     end | ||||
|  | ||||
|     for _, entity in pairs(surface.find_entities_filtered({type = {'resource', 'cliff'}, area = {{spawn_position_x - 32, -256}, {160, 256}}})) do | ||||
|     for _, entity in pairs(surface.find_entities_filtered({ type = { 'resource', 'cliff' }, area = { { spawn_position_x - 32, -256 }, { 160, 256 } } })) do | ||||
|         if is_body(entity.position) then | ||||
|             if entity.position.x > spawn_position_x - 32 + math_abs(simplex_noise(entity.position.x * 0.02, entity.position.y * 0.02, game.surfaces[1].map_gen_settings.seed) * 16) then | ||||
|                 entity.destroy() | ||||
| @@ -165,34 +165,34 @@ local function generate_spawn_area(surface) | ||||
|     end | ||||
|  | ||||
|     local decorative_names = {} | ||||
|     for k, v in pairs(game.decorative_prototypes) do | ||||
|     for k, v in pairs(prototypes.decorative) do | ||||
|         if v.autoplace_specification then | ||||
|             decorative_names[#decorative_names + 1] = k | ||||
|         end | ||||
|     end | ||||
|     for x = -4, 4, 1 do | ||||
|         for y = -3, 3, 1 do | ||||
|             surface.regenerate_decorative(decorative_names, {{x, y}}) | ||||
|             surface.regenerate_decorative(decorative_names, { { x, y } }) | ||||
|         end | ||||
|     end | ||||
|  | ||||
|     local y = 80 | ||||
|     local ore_positions = { | ||||
|         {x = spawn_position_x - 52, y = y}, | ||||
|         {x = spawn_position_x - 52, y = y * 0.5}, | ||||
|         {x = spawn_position_x - 52, y = 0}, | ||||
|         {x = spawn_position_x - 52, y = y * -0.5}, | ||||
|         {x = spawn_position_x - 52, y = y * -1} | ||||
|         { x = spawn_position_x - 52, y = y }, | ||||
|         { x = spawn_position_x - 52, y = y * 0.5 }, | ||||
|         { x = spawn_position_x - 52, y = 0 }, | ||||
|         { x = spawn_position_x - 52, y = y * -0.5 }, | ||||
|         { x = spawn_position_x - 52, y = y * -1 } | ||||
|     } | ||||
|     table.shuffle_table(ore_positions) | ||||
|     map_functions.draw_smoothed_out_ore_circle(ore_positions[1], 'copper-ore', surface, 15, 2500) | ||||
|     map_functions.draw_smoothed_out_ore_circle(ore_positions[2], 'iron-ore', surface, 15, 2500) | ||||
|     map_functions.draw_smoothed_out_ore_circle(ore_positions[3], 'coal', surface, 15, 1500) | ||||
|     map_functions.draw_smoothed_out_ore_circle(ore_positions[4], 'stone', surface, 15, 1500) | ||||
|     map_functions.draw_noise_tile_circle({x = spawn_position_x - 20, y = 0}, 'water', surface, 16) | ||||
|     map_functions.draw_noise_tile_circle({ x = spawn_position_x - 20, y = 0 }, 'water', surface, 16) | ||||
|     map_functions.draw_oil_circle(ore_positions[5], 'crude-oil', surface, 8, 200000) | ||||
|  | ||||
|     local pos = surface.find_non_colliding_position('market', {spawn_position_x, 0}, 50, 1) | ||||
|     local pos = surface.find_non_colliding_position('market', { spawn_position_x, 0 }, 50, 1) | ||||
|     FDT.get().market = place_fish_market(surface, pos) | ||||
|     local market = FDT.get('market') | ||||
|  | ||||
| @@ -201,8 +201,8 @@ local function generate_spawn_area(surface) | ||||
|         surface.find_entities_filtered( | ||||
|             { | ||||
|                 area = { | ||||
|                     {market.position.x - r, market.position.y - r}, | ||||
|                     {market.position.x + r, market.position.y + r} | ||||
|                     { market.position.x - r, market.position.y - r }, | ||||
|                     { market.position.x + r, market.position.y + r } | ||||
|                 }, | ||||
|                 type = 'tree' | ||||
|             } | ||||
| @@ -216,35 +216,35 @@ local function generate_spawn_area(surface) | ||||
|         end | ||||
|     end | ||||
|  | ||||
|     local pos = surface.find_non_colliding_position('gun-turret', {spawn_position_x + 5, 1}, 50, 1) | ||||
|     local turret = surface.create_entity({name = 'gun-turret', position = pos, force = 'player'}) | ||||
|     turret.insert({name = 'firearm-magazine', count = 32}) | ||||
|     local pos = surface.find_non_colliding_position('gun-turret', { spawn_position_x + 5, 1 }, 50, 1) | ||||
|     local turret = surface.create_entity({ name = 'gun-turret', position = pos, force = 'player' }) | ||||
|     turret.insert({ name = 'firearm-magazine', count = 32 }) | ||||
|  | ||||
|     for x = -20, 20, 1 do | ||||
|         for y = -20, 20, 1 do | ||||
|             local pos = {x = market.position.x + x, y = market.position.y + y} | ||||
|             local pos = { x = market.position.x + x, y = market.position.y + y } | ||||
|             --local distance_to_center = math_sqrt(x^2 + y^2) | ||||
|             --if distance_to_center > 8 and distance_to_center < 15 then | ||||
|             local distance_to_center = x ^ 2 + y ^ 2 | ||||
|             if distance_to_center > 64 and distance_to_center < 225 then | ||||
|                 if math_random(1, 3) == 1 and surface.can_place_entity({name = 'wooden-chest', position = pos, force = 'player'}) then | ||||
|                     local chest = surface.create_entity({name = 'wooden-chest', position = pos, force = 'player'}) | ||||
|                 if math_random(1, 3) == 1 and surface.can_place_entity({ name = 'wooden-chest', position = pos, force = 'player' }) then | ||||
|                     local chest = surface.create_entity({ name = 'wooden-chest', position = pos, force = 'player' }) | ||||
|                 end | ||||
|             end | ||||
|         end | ||||
|     end | ||||
|  | ||||
|     local area = {{x = -160, y = -96}, {x = 160, y = 96}} | ||||
|     for _, tile in pairs(surface.find_tiles_filtered({name = 'water', area = area})) do | ||||
|     local area = { { x = -160, y = -96 }, { x = 160, y = 96 } } | ||||
|     for _, tile in pairs(surface.find_tiles_filtered({ name = 'water', area = area })) do | ||||
|         if math_random(1, 32) == 1 then | ||||
|             surface.create_entity({name = 'fish', position = tile.position}) | ||||
|             surface.create_entity({ name = 'fish', position = tile.position }) | ||||
|         end | ||||
|     end | ||||
|  | ||||
|     local pos = surface.find_non_colliding_position('character', {spawn_position_x + 1, 4}, 50, 1) | ||||
|     local pos = surface.find_non_colliding_position('character', { spawn_position_x + 1, 4 }, 50, 1) | ||||
|     game.forces['player'].set_spawn_position(pos, surface) | ||||
|     for _, player in pairs(game.connected_players) do | ||||
|         local pos = surface.find_non_colliding_position('character', {spawn_position_x + 1, 4}, 50, 1) | ||||
|         local pos = surface.find_non_colliding_position('character', { spawn_position_x + 1, 4 }, 50, 1) | ||||
|         player.teleport(pos, surface) | ||||
|     end | ||||
| end | ||||
| @@ -266,7 +266,7 @@ local function enemy_territory(surface, left_top) | ||||
|         return | ||||
|     end | ||||
|  | ||||
|     local area = {{left_top.x, left_top.y}, {left_top.x + 32, left_top.y + 32}} | ||||
|     local area = { { left_top.x, left_top.y }, { left_top.x + 32, left_top.y + 32 } } | ||||
|  | ||||
|     --local area = {{160, -512},{750, 512}} | ||||
|     --for _, tile in pairs(surface.find_tiles_filtered({area = area})) do | ||||
| @@ -277,47 +277,47 @@ local function enemy_territory(surface, left_top) | ||||
|     if left_top.x > 256 then | ||||
|         for x = 0, 31, 1 do | ||||
|             for y = 0, 31, 1 do | ||||
|                 local pos = {x = left_top.x + x, y = left_top.y + y} | ||||
|                 local pos = { x = left_top.x + x, y = left_top.y + y } | ||||
|                 if is_enemy_territory(pos) then | ||||
|                     if math_random(1, 512) == 1 then | ||||
|                         if surface.can_place_entity({name = 'biter-spawner', force = 'decoratives', position = pos}) then | ||||
|                         if surface.can_place_entity({ name = 'biter-spawner', force = 'decoratives', position = pos }) then | ||||
|                             local entity | ||||
|                             if math_random(1, 4) == 1 then | ||||
|                                 entity = surface.create_entity({name = 'spitter-spawner', force = 'decoratives', position = pos}) | ||||
|                                 entity = surface.create_entity({ name = 'spitter-spawner', force = 'decoratives', position = pos }) | ||||
|                             else | ||||
|                                 entity = surface.create_entity({name = 'biter-spawner', force = 'decoratives', position = pos}) | ||||
|                                 entity = surface.create_entity({ name = 'biter-spawner', force = 'decoratives', position = pos }) | ||||
|                             end | ||||
|                             entity.active = false | ||||
|                             entity.destructible = false | ||||
|                         end | ||||
|                     end | ||||
|                 --if pos.x % 32 == 0 and pos.y % 32 == 0 then | ||||
|                 --	local decorative_names = {} | ||||
|                 --	for k,v in pairs(game.decorative_prototypes) do | ||||
|                 --		if v.autoplace_specification then | ||||
|                 --		  decorative_names[#decorative_names+1] = k | ||||
|                 --		end | ||||
|                 --	 end | ||||
|                 --	surface.regenerate_decorative(decorative_names, {{x=math_floor(pos.x/32),y=math_floor(pos.y/32)}}) | ||||
|                 --end | ||||
|                     --if pos.x % 32 == 0 and pos.y % 32 == 0 then | ||||
|                     --	local decorative_names = {} | ||||
|                     --	for k,v in pairs(prototypes.decorative) do | ||||
|                     --		if v.autoplace_specification then | ||||
|                     --		  decorative_names[#decorative_names+1] = k | ||||
|                     --		end | ||||
|                     --	 end | ||||
|                     --	surface.regenerate_decorative(decorative_names, {{x=math_floor(pos.x/32),y=math_floor(pos.y/32)}}) | ||||
|                     --end | ||||
|                 end | ||||
|             end | ||||
|         end | ||||
|     end | ||||
|     for _, entity in pairs(surface.find_entities_filtered({area = area, type = {'tree', 'cliff'}})) do | ||||
|     for _, entity in pairs(surface.find_entities_filtered({ area = area, type = { 'tree', 'cliff' } })) do | ||||
|         if is_enemy_territory(entity.position) then | ||||
|             entity.destroy() | ||||
|         end | ||||
|     end | ||||
|     for _, entity in pairs(surface.find_entities_filtered({area = area, type = 'resource'})) do | ||||
|     for _, entity in pairs(surface.find_entities_filtered({ area = area, type = 'resource' })) do | ||||
|         if is_enemy_territory(entity.position) then | ||||
|             surface.create_entity({name = 'uranium-ore', position = entity.position, amount = math_random(200, 8000)}) | ||||
|             surface.create_entity({ name = 'uranium-ore', position = entity.position, amount = math_random(200, 8000) }) | ||||
|             entity.destroy() | ||||
|         end | ||||
|     end | ||||
|     for _, tile in pairs(surface.find_tiles_filtered({name = {'water', 'deepwater'}, area = area})) do | ||||
|     for _, tile in pairs(surface.find_tiles_filtered({ name = { 'water', 'deepwater' }, area = area })) do | ||||
|         if is_enemy_territory(tile.position) then | ||||
|             surface.set_tiles({{name = get_replacement_tile(surface, tile.position), position = {tile.position.x, tile.position.y}}}, true) | ||||
|             surface.set_tiles({ { name = get_replacement_tile(surface, tile.position), position = { tile.position.x, tile.position.y } } }, true) | ||||
|         end | ||||
|     end | ||||
| end | ||||
| @@ -338,10 +338,10 @@ local function fish_mouth(surface, left_top) | ||||
|  | ||||
|     for x = 0, 31, 1 do | ||||
|         for y = 0, 31, 1 do | ||||
|             local pos = {x = left_top.x + x, y = left_top.y + y} | ||||
|             local pos = { x = left_top.x + x, y = left_top.y + y } | ||||
|             local noise = simplex_noise(pos.x * 0.006, 0, game.surfaces[1].map_gen_settings.seed) * 20 | ||||
|             if pos.y <= 12 + noise and pos.y >= -12 + noise then | ||||
|                 surface.set_tiles({{name = 'water', position = pos}}) | ||||
|                 surface.set_tiles({ { name = 'water', position = pos } }) | ||||
|             end | ||||
|         end | ||||
|     end | ||||
| @@ -352,7 +352,7 @@ function Public.fish_eye(surface, position) | ||||
|     surface.force_generate_chunk_requests() | ||||
|     for x = -48, 48, 1 do | ||||
|         for y = -48, 48, 1 do | ||||
|             local p = {x = position.x + x, y = position.y + y} | ||||
|             local p = { x = position.x + x, y = position.y + y } | ||||
|             --local distance = math_sqrt(((position.x - p.x) ^ 2) + ((position.y - p.y) ^ 2)) | ||||
|             --if distance < 44 then | ||||
|             --	surface.set_tiles({{name = "water-green", position = p}}, true) | ||||
| @@ -364,16 +364,16 @@ function Public.fish_eye(surface, position) | ||||
|             local distance = ((position.x - p.x) ^ 2) + ((position.y - p.y) ^ 2) | ||||
|             if distance < 1936 then | ||||
|                 if distance < 484 then | ||||
|                     surface.set_tiles({{name = 'out-of-map', position = p}}, true) | ||||
|                     surface.set_tiles({ { name = 'out-of-map', position = p } }, true) | ||||
|                 else | ||||
|                     surface.set_tiles({{name = 'water-green', position = p}}, true) | ||||
|                     surface.set_tiles({ { name = 'water-green', position = p } }, true) | ||||
|                 end | ||||
|             end | ||||
|         end | ||||
|     end | ||||
| end | ||||
|  | ||||
| local ores = {'coal', 'iron-ore', 'copper-ore', 'stone'} | ||||
| local ores = { 'coal', 'iron-ore', 'copper-ore', 'stone' } | ||||
|  | ||||
| local function plankton_territory(surface, position, seed) | ||||
|     local snoise = simplex_noise | ||||
| @@ -391,18 +391,18 @@ local function plankton_territory(surface, position, seed) | ||||
|     if noise_2 > 0.75 then | ||||
|         local i = math_floor(noise * 6) % 4 + 1 | ||||
|         --surface.set_tiles({{name = "grass-" .. i, position = position}}, true) | ||||
|         surface.create_entity({name = ores[i], position = position, amount = 1 + 2500 * math_abs(noise_2 * 3)}) | ||||
|         surface.create_entity({ name = ores[i], position = position, amount = 1 + 2500 * math_abs(noise_2 * 3) }) | ||||
|         return ('grass-' .. i) | ||||
|     end | ||||
|     if noise_2 < -0.76 then | ||||
|         local i = math_floor(noise * 6) % 4 + 1 | ||||
|         --surface.set_tiles({{name = "grass-" .. i, position = position}}, true) | ||||
|         if noise_2 < -0.86 then | ||||
|             surface.create_entity({name = 'uranium-ore', position = position, amount = 1 + 1000 * math_abs(noise_2 * 2)}) | ||||
|             surface.create_entity({ name = 'uranium-ore', position = position, amount = 1 + 1000 * math_abs(noise_2 * 2) }) | ||||
|             return ('grass-' .. i) | ||||
|         end | ||||
|         if math_random(1, 3) ~= 1 then | ||||
|             surface.create_entity({name = rock_raffle[math_random(1, #rock_raffle)], position = position}) | ||||
|             surface.create_entity({ name = rock_raffle[math_random(1, #rock_raffle)], position = position }) | ||||
|         end | ||||
|         return ('grass-' .. i) | ||||
|     end | ||||
| @@ -411,14 +411,14 @@ local function plankton_territory(surface, position, seed) | ||||
|         local i = math_floor(noise * 32) % 4 + 1 | ||||
|         --surface.set_tiles({{name = "grass-" .. i, position = position}}, true) | ||||
|         if math_random(1, 5) == 1 then | ||||
|             surface.create_entity({name = rock_raffle[math_random(1, #rock_raffle)], position = position}) | ||||
|             surface.create_entity({ name = rock_raffle[math_random(1, #rock_raffle)], position = position }) | ||||
|         end | ||||
|         return ('grass-' .. i) | ||||
|     end | ||||
|  | ||||
|     --surface.set_tiles({{name = "water", position = position}}, true) | ||||
|     if math_random(1, 128) == 1 then | ||||
|         surface.create_entity({name = 'fish', position = position}) | ||||
|         surface.create_entity({ name = 'fish', position = position }) | ||||
|     end | ||||
|  | ||||
|     return 'water' | ||||
| @@ -443,12 +443,12 @@ local function process_chunk(left_top) | ||||
|  | ||||
|     for x = 0, 31, 1 do | ||||
|         for y = 0, 31, 1 do | ||||
|             local pos = {x = left_top.x + x, y = left_top.y + y} | ||||
|             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} | ||||
|                 tiles[#tiles + 1] = { name = tile_to_set, position = pos } | ||||
|             end | ||||
|         end | ||||
|     end | ||||
| @@ -457,7 +457,7 @@ local function process_chunk(left_top) | ||||
|  | ||||
|     --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}}) | ||||
|     game.forces.player.chart(surface, { { left_top.x, left_top.y }, { left_top.x + 31, left_top.y + 31 } }) | ||||
|     --end | ||||
|     if market and market.valid then | ||||
|         FDT.get().game_reset = false | ||||
| @@ -490,7 +490,7 @@ local function on_chunk_generated(event) | ||||
|         if game_has_ended then | ||||
|             return | ||||
|         end | ||||
|         this.chunk_queue[#this.chunk_queue + 1] = {x = left_top.x, y = left_top.y} | ||||
|         this.chunk_queue[#this.chunk_queue + 1] = { x = left_top.x, y = left_top.y } | ||||
|     end | ||||
| end | ||||
|  | ||||
|   | ||||
| @@ -1377,7 +1377,7 @@ local function on_chunk_generated(event) | ||||
|             end | ||||
|  | ||||
|             local decorative_names = {} | ||||
|             for k, v in pairs(game.decorative_prototypes) do | ||||
|             for k, v in pairs(prototypes.decorative) do | ||||
|                 if v.autoplace_specification then | ||||
|                     decorative_names[#decorative_names + 1] = k | ||||
|                 end | ||||
| @@ -1552,7 +1552,7 @@ local function on_chunk_generated(event) | ||||
|     surface.set_tiles(tiles, true) | ||||
|  | ||||
|     local decorative_names = {} | ||||
|     for k, v in pairs(game.decorative_prototypes) do | ||||
|     for k, v in pairs(prototypes.decorative) do | ||||
|         if v.autoplace_specification then | ||||
|             decorative_names[#decorative_names + 1] = k | ||||
|         end | ||||
|   | ||||
| @@ -24,7 +24,7 @@ local size_of_rock_raffle = #rock_raffle | ||||
| local function place_rock(surface, position) | ||||
|     local a = (random(-250, 250)) * 0.05 | ||||
|     local b = (random(-250, 250)) * 0.05 | ||||
|     surface.create_entity({name = rock_raffle[random(1, size_of_rock_raffle)], position = {position.x + a, position.y + b}}) | ||||
|     surface.create_entity({ name = rock_raffle[random(1, size_of_rock_raffle)], position = { position.x + a, position.y + b } }) | ||||
| end | ||||
|  | ||||
| local function shuffle(tbl) | ||||
| @@ -40,7 +40,7 @@ local function resource_placement(surface, position, name, amount, tiles) | ||||
|     local w_max = 256 | ||||
|     local h_max = 256 | ||||
|  | ||||
|     local biases = {[0] = {[0] = 1}} | ||||
|     local biases = { [0] = { [0] = 1 } } | ||||
|     local ti = 1 | ||||
|  | ||||
|     local function grow(grid, t) | ||||
| @@ -48,7 +48,7 @@ local function resource_placement(surface, position, name, amount, tiles) | ||||
|         local new_count = 0 | ||||
|         for x, _ in pairs(grid) do | ||||
|             for y, _ in pairs(_) do | ||||
|                 table.insert(old, {x, y}) | ||||
|                 table.insert(old, { x, y }) | ||||
|             end | ||||
|         end | ||||
|         for _, pos in pairs(old) do | ||||
| @@ -89,7 +89,7 @@ local function resource_placement(surface, position, name, amount, tiles) | ||||
|                 name = name, | ||||
|                 amount = amount * (bias / total_bias), | ||||
|                 force = 'neutral', | ||||
|                 position = {position.x + x, position.y + y} | ||||
|                 position = { position.x + x, position.y + y } | ||||
|             } | ||||
|         end | ||||
|     end | ||||
| @@ -97,7 +97,7 @@ end | ||||
|  | ||||
| function Public.get_replacement_tile(surface, position) | ||||
|     for i = 1, 128, 1 do | ||||
|         local vectors = {{0, i}, {0, i * -1}, {i, 0}, {i * -1, 0}} | ||||
|         local vectors = { { 0, i }, { 0, i * -1 }, { i, 0 }, { i * -1, 0 } } | ||||
|         shuffle(vectors) | ||||
|         for k, v in pairs(vectors) do | ||||
|             local tile = surface.get_tile(position.x + v[1], position.y + v[2]) | ||||
| @@ -130,7 +130,7 @@ local function is_enemy_territory(p) | ||||
| end | ||||
|  | ||||
| local function place_fish_market(surface, position) | ||||
|     local market = surface.create_entity({name = 'market', position = position, force = 'player'}) | ||||
|     local market = surface.create_entity({ name = 'market', position = position, force = 'player' }) | ||||
|     market.minable = false | ||||
|  | ||||
|     return market | ||||
| @@ -138,303 +138,303 @@ end | ||||
|  | ||||
| local enemy_territory_token = | ||||
|     Token.register( | ||||
|     function(data) | ||||
|         local surface_index = data.surface_index | ||||
|         local left_top = data.left_top | ||||
|         local surface = game.get_surface(surface_index) | ||||
|         if left_top.x < 256 then | ||||
|             return | ||||
|         end | ||||
|         if left_top.x > 750 then | ||||
|             return | ||||
|         end | ||||
|         if left_top.y > 766 then | ||||
|             return | ||||
|         end | ||||
|         if left_top.y < -256 then | ||||
|             return | ||||
|         end | ||||
|         function (data) | ||||
|             local surface_index = data.surface_index | ||||
|             local left_top = data.left_top | ||||
|             local surface = game.get_surface(surface_index) | ||||
|             if left_top.x < 256 then | ||||
|                 return | ||||
|             end | ||||
|             if left_top.x > 750 then | ||||
|                 return | ||||
|             end | ||||
|             if left_top.y > 766 then | ||||
|                 return | ||||
|             end | ||||
|             if left_top.y < -256 then | ||||
|                 return | ||||
|             end | ||||
|  | ||||
|         local area = {{left_top.x, left_top.y}, {left_top.x + 32, left_top.y + 32}} | ||||
|             local area = { { left_top.x, left_top.y }, { left_top.x + 32, left_top.y + 32 } } | ||||
|  | ||||
|         if left_top.x > 300 then | ||||
|             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_enemy_territory(pos) then | ||||
|                         if random(1, 512) == 1 then | ||||
|                             if surface.can_place_entity({name = 'biter-spawner', force = 'decoratives', position = pos}) then | ||||
|                                 local entity | ||||
|                                 if random(1, 4) == 1 then | ||||
|                                     entity = surface.create_entity({name = 'spitter-spawner', force = 'decoratives', position = pos}) | ||||
|                                 else | ||||
|                                     entity = surface.create_entity({name = 'biter-spawner', force = 'decoratives', position = pos}) | ||||
|             if left_top.x > 300 then | ||||
|                 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_enemy_territory(pos) then | ||||
|                             if random(1, 512) == 1 then | ||||
|                                 if surface.can_place_entity({ name = 'biter-spawner', force = 'decoratives', position = pos }) then | ||||
|                                     local entity | ||||
|                                     if random(1, 4) == 1 then | ||||
|                                         entity = surface.create_entity({ name = 'spitter-spawner', force = 'decoratives', position = pos }) | ||||
|                                     else | ||||
|                                         entity = surface.create_entity({ name = 'biter-spawner', force = 'decoratives', position = pos }) | ||||
|                                     end | ||||
|                                     entity.active = false | ||||
|                                     entity.destructible = false | ||||
|                                 end | ||||
|                                 entity.active = false | ||||
|                                 entity.destructible = false | ||||
|                             end | ||||
|                         end | ||||
|                     end | ||||
|                 end | ||||
|             end | ||||
|         end | ||||
|         for _, entity in pairs(surface.find_entities_filtered({area = area, type = {'tree', 'cliff'}})) do | ||||
|             if is_enemy_territory(entity.position) then | ||||
|                 entity.destroy() | ||||
|             for _, entity in pairs(surface.find_entities_filtered({ area = area, type = { 'tree', 'cliff' } })) do | ||||
|                 if is_enemy_territory(entity.position) then | ||||
|                     entity.destroy() | ||||
|                 end | ||||
|             end | ||||
|         end | ||||
|         for _, entity in pairs(surface.find_entities_filtered({area = area, type = 'resource'})) do | ||||
|             if is_enemy_territory(entity.position) then | ||||
|                 surface.create_entity({name = 'uranium-ore', position = entity.position, amount = random(200, 8000)}) | ||||
|                 entity.destroy() | ||||
|             for _, entity in pairs(surface.find_entities_filtered({ area = area, type = 'resource' })) do | ||||
|                 if is_enemy_territory(entity.position) then | ||||
|                     surface.create_entity({ name = 'uranium-ore', position = entity.position, amount = random(200, 8000) }) | ||||
|                     entity.destroy() | ||||
|                 end | ||||
|             end | ||||
|         end | ||||
|         for _, tile in pairs(surface.find_tiles_filtered({name = {'water', 'deepwater'}, area = area})) do | ||||
|             if is_enemy_territory(tile.position) then | ||||
|                 surface.set_tiles({{name = Public.get_replacement_tile(surface, tile.position), position = {tile.position.x, tile.position.y}}}, true) | ||||
|             end | ||||
|         end | ||||
|     end | ||||
| ) | ||||
|  | ||||
| local fish_mouth_token = | ||||
|     Token.register( | ||||
|     function(data) | ||||
|         local surface_index = data.surface_index | ||||
|         local left_top = data.left_top | ||||
|         local surface = game.get_surface(surface_index) | ||||
|         if left_top.x > -1800 then | ||||
|             return | ||||
|         end | ||||
|         if left_top.y > 64 then | ||||
|             return | ||||
|         end | ||||
|         if left_top.y < -64 then | ||||
|             return | ||||
|         end | ||||
|         if left_top.x < -2200 then | ||||
|             return | ||||
|         end | ||||
|  | ||||
|         for x = 0, 31, 1 do | ||||
|             for y = 0, 31, 1 do | ||||
|                 local pos = {x = left_top.x + x, y = left_top.y + y} | ||||
|                 local noise = simplex_noise(pos.x * 0.006, 0, game.surfaces[1].map_gen_settings.seed) * 20 | ||||
|                 if pos.y <= 12 + noise and pos.y >= -12 + noise then | ||||
|                     surface.set_tiles({{name = 'water', position = pos}}) | ||||
|             for _, tile in pairs(surface.find_tiles_filtered({ name = { 'water', 'deepwater' }, area = area })) do | ||||
|                 if is_enemy_territory(tile.position) then | ||||
|                     surface.set_tiles({ { name = Public.get_replacement_tile(surface, tile.position), position = { tile.position.x, tile.position.y } } }, true) | ||||
|                 end | ||||
|             end | ||||
|         end | ||||
|     end | ||||
| ) | ||||
|     ) | ||||
|  | ||||
| local fish_mouth_token = | ||||
|     Token.register( | ||||
|         function (data) | ||||
|             local surface_index = data.surface_index | ||||
|             local left_top = data.left_top | ||||
|             local surface = game.get_surface(surface_index) | ||||
|             if left_top.x > -1800 then | ||||
|                 return | ||||
|             end | ||||
|             if left_top.y > 64 then | ||||
|                 return | ||||
|             end | ||||
|             if left_top.y < -64 then | ||||
|                 return | ||||
|             end | ||||
|             if left_top.x < -2200 then | ||||
|                 return | ||||
|             end | ||||
|  | ||||
|             for x = 0, 31, 1 do | ||||
|                 for y = 0, 31, 1 do | ||||
|                     local pos = { x = left_top.x + x, y = left_top.y + y } | ||||
|                     local noise = simplex_noise(pos.x * 0.006, 0, game.surfaces[1].map_gen_settings.seed) * 20 | ||||
|                     if pos.y <= 12 + noise and pos.y >= -12 + noise then | ||||
|                         surface.set_tiles({ { name = 'water', position = pos } }) | ||||
|                     end | ||||
|                 end | ||||
|             end | ||||
|         end | ||||
|     ) | ||||
|  | ||||
| local request_to_generate_chunks_token = | ||||
|     Token.register( | ||||
|     function(data) | ||||
|         local surface_index = data.surface_index | ||||
|         local surface = game.get_surface(surface_index) | ||||
|         local spawn_area_generated = Public.get('spawn_area_generated') | ||||
|         if spawn_area_generated then | ||||
|             return | ||||
|         function (data) | ||||
|             local surface_index = data.surface_index | ||||
|             local surface = game.get_surface(surface_index) | ||||
|             local spawn_area_generated = Public.get('spawn_area_generated') | ||||
|             if spawn_area_generated then | ||||
|                 return | ||||
|             end | ||||
|  | ||||
|             surface.request_to_generate_chunks({ 0, 0 }, 8) | ||||
|  | ||||
|             local fish_eye_location = Public.get('fish_eye_location') | ||||
|  | ||||
|             surface.request_to_generate_chunks(fish_eye_location, 2) | ||||
|         end | ||||
|  | ||||
|         surface.request_to_generate_chunks({0, 0}, 8) | ||||
|  | ||||
|         local fish_eye_location = Public.get('fish_eye_location') | ||||
|  | ||||
|         surface.request_to_generate_chunks(fish_eye_location, 2) | ||||
|     end | ||||
| ) | ||||
|     ) | ||||
|  | ||||
| local function initial_cargo_boxes() | ||||
|     return { | ||||
|         {name = 'coal', count = random(32, 64)}, | ||||
|         {name = 'coal', count = random(32, 64)}, | ||||
|         {name = 'coal', count = random(32, 64)}, | ||||
|         {name = 'iron-ore', count = random(32, 128)}, | ||||
|         {name = 'iron-ore', count = random(32, 128)}, | ||||
|         {name = 'iron-ore', count = random(32, 128)}, | ||||
|         {name = 'copper-ore', count = random(32, 128)}, | ||||
|         {name = 'copper-ore', count = random(32, 128)}, | ||||
|         {name = 'copper-ore', count = random(32, 128)}, | ||||
|         {name = 'submachine-gun', count = 1}, | ||||
|         {name = 'submachine-gun', count = 1}, | ||||
|         {name = 'submachine-gun', count = 1}, | ||||
|         {name = 'shotgun', count = 1}, | ||||
|         {name = 'shotgun', count = 1}, | ||||
|         {name = 'shotgun', count = 1}, | ||||
|         {name = 'burner-mining-drill', count = 1}, | ||||
|         {name = 'burner-mining-drill', count = 2}, | ||||
|         {name = 'burner-mining-drill', count = 1}, | ||||
|         {name = 'burner-mining-drill', count = 4}, | ||||
|         {name = 'gun-turret', count = 1}, | ||||
|         {name = 'gun-turret', count = 1}, | ||||
|         {name = 'gun-turret', count = 1}, | ||||
|         {name = 'shotgun-shell', count = random(4, 5)}, | ||||
|         {name = 'shotgun-shell', count = random(4, 5)}, | ||||
|         {name = 'shotgun-shell', count = random(4, 5)}, | ||||
|         {name = 'grenade', count = random(2, 7)}, | ||||
|         {name = 'grenade', count = random(2, 8)}, | ||||
|         {name = 'grenade', count = random(2, 7)}, | ||||
|         {name = 'light-armor', count = random(2, 4)}, | ||||
|         {name = 'iron-gear-wheel', count = random(7, 15)}, | ||||
|         {name = 'iron-gear-wheel', count = random(7, 15)}, | ||||
|         {name = 'iron-gear-wheel', count = random(7, 15)}, | ||||
|         {name = 'iron-gear-wheel', count = random(7, 15)}, | ||||
|         {name = 'iron-plate', count = random(15, 23)}, | ||||
|         {name = 'iron-plate', count = random(15, 23)}, | ||||
|         {name = 'iron-plate', count = random(15, 23)}, | ||||
|         {name = 'iron-plate', count = random(15, 23)}, | ||||
|         {name = 'copper-plate', count = random(15, 23)}, | ||||
|         {name = 'copper-plate', count = random(15, 23)}, | ||||
|         {name = 'copper-plate', count = random(15, 23)}, | ||||
|         {name = 'copper-plate', count = random(15, 23)}, | ||||
|         {name = 'firearm-magazine', count = random(10, 15)}, | ||||
|         {name = 'firearm-magazine', count = random(10, 15)}, | ||||
|         {name = 'firearm-magazine', count = random(10, 15)}, | ||||
|         {name = 'firearm-magazine', count = random(10, 15)} | ||||
|         { name = 'coal',                count = random(32, 64) }, | ||||
|         { name = 'coal',                count = random(32, 64) }, | ||||
|         { name = 'coal',                count = random(32, 64) }, | ||||
|         { name = 'iron-ore',            count = random(32, 128) }, | ||||
|         { name = 'iron-ore',            count = random(32, 128) }, | ||||
|         { name = 'iron-ore',            count = random(32, 128) }, | ||||
|         { name = 'copper-ore',          count = random(32, 128) }, | ||||
|         { name = 'copper-ore',          count = random(32, 128) }, | ||||
|         { name = 'copper-ore',          count = random(32, 128) }, | ||||
|         { name = 'submachine-gun',      count = 1 }, | ||||
|         { name = 'submachine-gun',      count = 1 }, | ||||
|         { name = 'submachine-gun',      count = 1 }, | ||||
|         { name = 'shotgun',             count = 1 }, | ||||
|         { name = 'shotgun',             count = 1 }, | ||||
|         { name = 'shotgun',             count = 1 }, | ||||
|         { name = 'burner-mining-drill', count = 1 }, | ||||
|         { name = 'burner-mining-drill', count = 2 }, | ||||
|         { name = 'burner-mining-drill', count = 1 }, | ||||
|         { name = 'burner-mining-drill', count = 4 }, | ||||
|         { name = 'gun-turret',          count = 1 }, | ||||
|         { name = 'gun-turret',          count = 1 }, | ||||
|         { name = 'gun-turret',          count = 1 }, | ||||
|         { name = 'shotgun-shell',       count = random(4, 5) }, | ||||
|         { name = 'shotgun-shell',       count = random(4, 5) }, | ||||
|         { name = 'shotgun-shell',       count = random(4, 5) }, | ||||
|         { name = 'grenade',             count = random(2, 7) }, | ||||
|         { name = 'grenade',             count = random(2, 8) }, | ||||
|         { name = 'grenade',             count = random(2, 7) }, | ||||
|         { name = 'light-armor',         count = random(2, 4) }, | ||||
|         { name = 'iron-gear-wheel',     count = random(7, 15) }, | ||||
|         { name = 'iron-gear-wheel',     count = random(7, 15) }, | ||||
|         { name = 'iron-gear-wheel',     count = random(7, 15) }, | ||||
|         { name = 'iron-gear-wheel',     count = random(7, 15) }, | ||||
|         { name = 'iron-plate',          count = random(15, 23) }, | ||||
|         { name = 'iron-plate',          count = random(15, 23) }, | ||||
|         { name = 'iron-plate',          count = random(15, 23) }, | ||||
|         { name = 'iron-plate',          count = random(15, 23) }, | ||||
|         { name = 'copper-plate',        count = random(15, 23) }, | ||||
|         { name = 'copper-plate',        count = random(15, 23) }, | ||||
|         { name = 'copper-plate',        count = random(15, 23) }, | ||||
|         { name = 'copper-plate',        count = random(15, 23) }, | ||||
|         { name = 'firearm-magazine',    count = random(10, 15) }, | ||||
|         { name = 'firearm-magazine',    count = random(10, 15) }, | ||||
|         { name = 'firearm-magazine',    count = random(10, 15) }, | ||||
|         { name = 'firearm-magazine',    count = random(10, 15) } | ||||
|     } | ||||
| end | ||||
|  | ||||
| local generate_spawn_area_token = | ||||
|     Token.register( | ||||
|     function(data) | ||||
|         local surface_index = data.surface_index | ||||
|         local surface = game.get_surface(surface_index) | ||||
|         local spawn_area_generated = Public.get('spawn_area_generated') | ||||
|         if spawn_area_generated then | ||||
|             return | ||||
|         end | ||||
|  | ||||
|         local chunk_load_tick = Public.get('chunk_load_tick') | ||||
|         if chunk_load_tick > game.tick then | ||||
|             if game.tick % 100 == 1 then | ||||
|                 game.print('[color=blue][Map Generator][/color] Generating map in progress...') | ||||
|         function (data) | ||||
|             local surface_index = data.surface_index | ||||
|             local surface = game.get_surface(surface_index) | ||||
|             local spawn_area_generated = Public.get('spawn_area_generated') | ||||
|             if spawn_area_generated then | ||||
|                 return | ||||
|             end | ||||
|             return | ||||
|         end | ||||
|  | ||||
|         local spawn_position_x = -128 | ||||
|  | ||||
|         surface.create_entity({name = 'electric-beam', position = {254, -143}, source = {254, -143}, target = {254, 193}}) -- fish | ||||
|         --surface.create_entity({name = 'electric-beam', position = {160, -101}, source = {160, -101}, target = {160, 248}}) -- fish | ||||
|         --surface.create_entity({name = 'electric-beam', position = {160, -88}, source = {160, -88}, target = {160, 185}}) | ||||
|  | ||||
|         for _, tile in pairs(surface.find_tiles_filtered({name = {'water', 'deepwater'}, area = {{-300, -256}, {300, 300}}})) do | ||||
|             surface.set_tiles({{name = Public.get_replacement_tile(surface, tile.position), position = {tile.position.x, tile.position.y}}}, true) | ||||
|         end | ||||
|  | ||||
|         for _, entity in pairs(surface.find_entities_filtered({type = {'resource', 'cliff'}, area = {{-300, -256}, {300, 300}}})) do | ||||
|             entity.destroy() | ||||
|         end | ||||
|  | ||||
|         local decorative_names = {} | ||||
|         for k, v in pairs(game.decorative_prototypes) do | ||||
|             if v.autoplace_specification then | ||||
|                 decorative_names[#decorative_names + 1] = k | ||||
|             local chunk_load_tick = Public.get('chunk_load_tick') | ||||
|             if chunk_load_tick > game.tick then | ||||
|                 if game.tick % 100 == 1 then | ||||
|                     game.print('[color=blue][Map Generator][/color] Generating map in progress...') | ||||
|                 end | ||||
|                 return | ||||
|             end | ||||
|         end | ||||
|         for x = -4, 4, 1 do | ||||
|             for y = -3, 3, 1 do | ||||
|                 surface.regenerate_decorative(decorative_names, {{x, y}}) | ||||
|  | ||||
|             local spawn_position_x = -128 | ||||
|  | ||||
|             surface.create_entity({ name = 'electric-beam', position = { 254, -143 }, source = { 254, -143 }, target = { 254, 193 } }) -- fish | ||||
|             --surface.create_entity({name = 'electric-beam', position = {160, -101}, source = {160, -101}, target = {160, 248}}) -- fish | ||||
|             --surface.create_entity({name = 'electric-beam', position = {160, -88}, source = {160, -88}, target = {160, 185}}) | ||||
|  | ||||
|             for _, tile in pairs(surface.find_tiles_filtered({ name = { 'water', 'deepwater' }, area = { { -300, -256 }, { 300, 300 } } })) do | ||||
|                 surface.set_tiles({ { name = Public.get_replacement_tile(surface, tile.position), position = { tile.position.x, tile.position.y } } }, true) | ||||
|             end | ||||
|         end | ||||
|  | ||||
|         local _y = 80 | ||||
|         local ore_positions = { | ||||
|             {x = spawn_position_x - 52, y = _y}, | ||||
|             {x = spawn_position_x - 52, y = _y * 0.5}, | ||||
|             {x = spawn_position_x - 52, y = 0}, | ||||
|             {x = spawn_position_x - 52, y = _y * -0.5}, | ||||
|             {x = spawn_position_x - 52, y = _y * -1} | ||||
|         } | ||||
|         shuffle(ore_positions) | ||||
|             for _, entity in pairs(surface.find_entities_filtered({ type = { 'resource', 'cliff' }, area = { { -300, -256 }, { 300, 300 } } })) do | ||||
|                 entity.destroy() | ||||
|             end | ||||
|  | ||||
|         resource_placement(surface, ore_positions[1], 'copper-ore', 1500000, 650) | ||||
|         resource_placement(surface, ore_positions[2], 'iron-ore', 1500000, 650) | ||||
|         resource_placement(surface, ore_positions[3], 'coal', 1300000, 650) | ||||
|         resource_placement(surface, ore_positions[4], 'stone', 1300000, 650) | ||||
|  | ||||
|         for _ = 0, 10, 1 do | ||||
|             place_rock(surface, ore_positions[4]) --add rocks to stone area | ||||
|         end | ||||
|  | ||||
|         map_functions.draw_noise_tile_circle({x = spawn_position_x - 20, y = 0}, 'water', surface, 16) | ||||
|         map_functions.draw_oil_circle(ore_positions[5], 'crude-oil', surface, 8, 200000) | ||||
|  | ||||
|         local pos = surface.find_non_colliding_position('market', {spawn_position_x, 0}, 50, 1) | ||||
|         local market = Public.set('market', place_fish_market(surface, pos)) | ||||
|  | ||||
|         local r = 16 | ||||
|         for _, entity in pairs( | ||||
|             surface.find_entities_filtered( | ||||
|                 { | ||||
|                     area = { | ||||
|                         {market.position.x - r, market.position.y - r}, | ||||
|                         {market.position.x + r, market.position.y + r} | ||||
|                     }, | ||||
|                     type = 'tree' | ||||
|                 } | ||||
|             ) | ||||
|         ) do | ||||
|             local distance_to_center = sqrt((entity.position.x - market.position.x) ^ 2 + (entity.position.y - market.position.y) ^ 2) | ||||
|             if distance_to_center < r then | ||||
|                 if random(1, r) > distance_to_center then | ||||
|                     entity.destroy() | ||||
|             local decorative_names = {} | ||||
|             for k, v in pairs(prototypes.decorative) do | ||||
|                 if v.autoplace_specification then | ||||
|                     decorative_names[#decorative_names + 1] = k | ||||
|                 end | ||||
|             end | ||||
|             for x = -4, 4, 1 do | ||||
|                 for y = -3, 3, 1 do | ||||
|                     surface.regenerate_decorative(decorative_names, { { x, y } }) | ||||
|                 end | ||||
|             end | ||||
|         end | ||||
|  | ||||
|         local turret_pos = surface.find_non_colliding_position('gun-turret', {spawn_position_x + 5, 1}, 50, 1) | ||||
|         local turret = surface.create_entity({name = 'gun-turret', position = turret_pos, force = 'player'}) | ||||
|         turret.insert({name = 'firearm-magazine', count = 32}) | ||||
|             local _y = 80 | ||||
|             local ore_positions = { | ||||
|                 { x = spawn_position_x - 52, y = _y }, | ||||
|                 { x = spawn_position_x - 52, y = _y * 0.5 }, | ||||
|                 { x = spawn_position_x - 52, y = 0 }, | ||||
|                 { x = spawn_position_x - 52, y = _y * -0.5 }, | ||||
|                 { x = spawn_position_x - 52, y = _y * -1 } | ||||
|             } | ||||
|             shuffle(ore_positions) | ||||
|  | ||||
|         local cargo_boxes = initial_cargo_boxes() | ||||
|             resource_placement(surface, ore_positions[1], 'copper-ore', 1500000, 650) | ||||
|             resource_placement(surface, ore_positions[2], 'iron-ore', 1500000, 650) | ||||
|             resource_placement(surface, ore_positions[3], 'coal', 1300000, 650) | ||||
|             resource_placement(surface, ore_positions[4], 'stone', 1300000, 650) | ||||
|  | ||||
|         for x = -20, 20, 1 do | ||||
|             for y = -20, 20, 1 do | ||||
|                 local market_pos = {x = market.position.x + x, y = market.position.y + y} | ||||
|                 local distance_to_center = x ^ 2 + y ^ 2 | ||||
|                 if distance_to_center > 64 and distance_to_center < 225 then | ||||
|                     if random(1, 3) == 1 and surface.can_place_entity({name = 'wooden-chest', position = market_pos, force = 'player'}) then | ||||
|                         local e = surface.create_entity({name = 'wooden-chest', position = market_pos, force = 'player', create_build_effect_smoke = false}) | ||||
|                         if random(1, 8) == 1 then | ||||
|                             local inventory = e.get_inventory(defines.inventory.chest) | ||||
|                             inventory.insert(cargo_boxes[random(1, #cargo_boxes)]) | ||||
|             for _ = 0, 10, 1 do | ||||
|                 place_rock(surface, ore_positions[4]) --add rocks to stone area | ||||
|             end | ||||
|  | ||||
|             map_functions.draw_noise_tile_circle({ x = spawn_position_x - 20, y = 0 }, 'water', surface, 16) | ||||
|             map_functions.draw_oil_circle(ore_positions[5], 'crude-oil', surface, 8, 200000) | ||||
|  | ||||
|             local pos = surface.find_non_colliding_position('market', { spawn_position_x, 0 }, 50, 1) | ||||
|             local market = Public.set('market', place_fish_market(surface, pos)) | ||||
|  | ||||
|             local r = 16 | ||||
|             for _, entity in pairs( | ||||
|                 surface.find_entities_filtered( | ||||
|                     { | ||||
|                         area = { | ||||
|                             { market.position.x - r, market.position.y - r }, | ||||
|                             { market.position.x + r, market.position.y + r } | ||||
|                         }, | ||||
|                         type = 'tree' | ||||
|                     } | ||||
|                 ) | ||||
|             ) do | ||||
|                 local distance_to_center = sqrt((entity.position.x - market.position.x) ^ 2 + (entity.position.y - market.position.y) ^ 2) | ||||
|                 if distance_to_center < r then | ||||
|                     if random(1, r) > distance_to_center then | ||||
|                         entity.destroy() | ||||
|                     end | ||||
|                 end | ||||
|             end | ||||
|  | ||||
|             local turret_pos = surface.find_non_colliding_position('gun-turret', { spawn_position_x + 5, 1 }, 50, 1) | ||||
|             local turret = surface.create_entity({ name = 'gun-turret', position = turret_pos, force = 'player' }) | ||||
|             turret.insert({ name = 'firearm-magazine', count = 32 }) | ||||
|  | ||||
|             local cargo_boxes = initial_cargo_boxes() | ||||
|  | ||||
|             for x = -20, 20, 1 do | ||||
|                 for y = -20, 20, 1 do | ||||
|                     local market_pos = { x = market.position.x + x, y = market.position.y + y } | ||||
|                     local distance_to_center = x ^ 2 + y ^ 2 | ||||
|                     if distance_to_center > 64 and distance_to_center < 225 then | ||||
|                         if random(1, 3) == 1 and surface.can_place_entity({ name = 'wooden-chest', position = market_pos, force = 'player' }) then | ||||
|                             local e = surface.create_entity({ name = 'wooden-chest', position = market_pos, force = 'player', create_build_effect_smoke = false }) | ||||
|                             if random(1, 8) == 1 then | ||||
|                                 local inventory = e.get_inventory(defines.inventory.chest) | ||||
|                                 inventory.insert(cargo_boxes[random(1, #cargo_boxes)]) | ||||
|                             end | ||||
|                         end | ||||
|                     end | ||||
|                 end | ||||
|             end | ||||
|         end | ||||
|  | ||||
|         local area = {{x = -160, y = -96}, {x = 160, y = 96}} | ||||
|         for _, tile in pairs(surface.find_tiles_filtered({name = 'water', area = area})) do | ||||
|             if random(1, 32) == 1 then | ||||
|                 surface.create_entity({name = 'fish', position = tile.position}) | ||||
|             local area = { { x = -160, y = -96 }, { x = 160, y = 96 } } | ||||
|             for _, tile in pairs(surface.find_tiles_filtered({ name = 'water', area = area })) do | ||||
|                 if random(1, 32) == 1 then | ||||
|                     surface.create_entity({ name = 'fish', position = tile.position }) | ||||
|                 end | ||||
|             end | ||||
|  | ||||
|             local character_pos = surface.find_non_colliding_position('character', { spawn_position_x + 1, 4 }, 50, 1) | ||||
|             game.forces['player'].set_spawn_position(character_pos, surface) | ||||
|  | ||||
|             for _, player in pairs(game.connected_players) do | ||||
|                 local spawn_pos = surface.find_non_colliding_position('character', { spawn_position_x + 1, 4 }, 50, 1) | ||||
|                 player.teleport(spawn_pos, surface) | ||||
|             end | ||||
|  | ||||
|             local rr = 200 | ||||
|             local p = { x = -131, y = 5 } | ||||
|             game.forces.player.chart( | ||||
|                 surface, | ||||
|                 { | ||||
|                     { p.x - rr - 100, p.y - rr }, | ||||
|                     { p.x + rr + 400, p.y + rr } | ||||
|                 } | ||||
|             ) | ||||
|  | ||||
|             Public.set('spawn_area_generated', true) | ||||
|         end | ||||
|  | ||||
|         local character_pos = surface.find_non_colliding_position('character', {spawn_position_x + 1, 4}, 50, 1) | ||||
|         game.forces['player'].set_spawn_position(character_pos, surface) | ||||
|  | ||||
|         for _, player in pairs(game.connected_players) do | ||||
|             local spawn_pos = surface.find_non_colliding_position('character', {spawn_position_x + 1, 4}, 50, 1) | ||||
|             player.teleport(spawn_pos, surface) | ||||
|         end | ||||
|  | ||||
|         local rr = 200 | ||||
|         local p = {x = -131, y = 5} | ||||
|         game.forces.player.chart( | ||||
|             surface, | ||||
|             { | ||||
|                 {p.x - rr - 100, p.y - rr}, | ||||
|                 {p.x + rr + 400, p.y + rr} | ||||
|             } | ||||
|         ) | ||||
|  | ||||
|         Public.set('spawn_area_generated', true) | ||||
|     end | ||||
| ) | ||||
|     ) | ||||
|  | ||||
| local function process_chunk(left_top) | ||||
|     local active_surface_index = Public.get('active_surface_index') | ||||
| @@ -443,14 +443,14 @@ local function process_chunk(left_top) | ||||
|         return | ||||
|     end | ||||
|  | ||||
|     Task.set_timeout_in_ticks(1, request_to_generate_chunks_token, {surface_index = surface.index}) | ||||
|     Task.set_timeout_in_ticks(15, generate_spawn_area_token, {surface_index = surface.index}) | ||||
|     Task.set_timeout_in_ticks(60, enemy_territory_token, {surface_index = surface.index, left_top = left_top}) | ||||
|     Task.set_timeout_in_ticks(90, fish_mouth_token, {surface_index = surface.index, left_top = left_top}) | ||||
|     Task.set_timeout_in_ticks(1, request_to_generate_chunks_token, { surface_index = surface.index }) | ||||
|     Task.set_timeout_in_ticks(15, generate_spawn_area_token, { surface_index = surface.index }) | ||||
|     Task.set_timeout_in_ticks(60, enemy_territory_token, { surface_index = surface.index, left_top = left_top }) | ||||
|     Task.set_timeout_in_ticks(90, fish_mouth_token, { surface_index = surface.index, left_top = left_top }) | ||||
|  | ||||
|     local market = Public.get('market') | ||||
|  | ||||
|     game.forces.player.chart(surface, {{left_top.x, left_top.y}, {left_top.x + 31, left_top.y + 31}}) | ||||
|     game.forces.player.chart(surface, { { left_top.x, left_top.y }, { left_top.x + 31, left_top.y + 31 } }) | ||||
|     if market and market.valid then | ||||
|         Public.set('game_reset', false) | ||||
|     end | ||||
|   | ||||
| @@ -22,9 +22,9 @@ local modifiers = { | ||||
| } | ||||
|  | ||||
| local modifiers_diagonal = { | ||||
|     { diagonal = { x = -1, y = 1 }, connection_1 = { x = -1, y = 0 }, connection_2 = { x = 0, y = 1 } }, | ||||
|     { diagonal = { x = 1, y = -1 }, connection_1 = { x = 1, y = 0 }, connection_2 = { x = 0, y = -1 } }, | ||||
|     { diagonal = { x = 1, y = 1 }, connection_1 = { x = 1, y = 0 }, connection_2 = { x = 0, y = 1 } }, | ||||
|     { diagonal = { x = -1, y = 1 },  connection_1 = { x = -1, y = 0 }, connection_2 = { x = 0, y = 1 } }, | ||||
|     { diagonal = { x = 1, y = -1 },  connection_1 = { x = 1, y = 0 },  connection_2 = { x = 0, y = -1 } }, | ||||
|     { diagonal = { x = 1, y = 1 },   connection_1 = { x = 1, y = 0 },  connection_2 = { x = 0, y = 1 } }, | ||||
|     { diagonal = { x = -1, y = -1 }, connection_1 = { x = -1, y = 0 }, connection_2 = { x = 0, y = -1 } } | ||||
| } | ||||
|  | ||||
| @@ -43,66 +43,66 @@ local wrecks = { 'big-ship-wreck-1', 'big-ship-wreck-2', 'big-ship-wreck-3' } | ||||
| local function create_shipwreck(surface, position) | ||||
|     local raffle = {} | ||||
|     local loot = { | ||||
|         { { name = 'iron-gear-wheel', count = math_random(80, 100) },     weight = 3, evolution_min = 0.0, evolution_max = 0.3 }, | ||||
|         { { name = 'copper-cable', count = math_random(100, 200) },       weight = 3, evolution_min = 0.0, evolution_max = 0.3 }, | ||||
|         { { name = 'engine-unit', count = math_random(16, 32) },          weight = 2, evolution_min = 0.1, evolution_max = 0.5 }, | ||||
|         { { name = 'electric-engine-unit', count = math_random(16, 32) }, weight = 2, evolution_min = 0.4, evolution_max = 0.8 }, | ||||
|         { { name = 'battery', count = math_random(40, 80) },              weight = 2, evolution_min = 0.3, evolution_max = 0.8 }, | ||||
|         { { name = 'advanced-circuit', count = math_random(40, 80) },     weight = 3, evolution_min = 0.4, evolution_max = 1 }, | ||||
|         { { name = 'electronic-circuit', count = math_random(100, 200) }, weight = 3, evolution_min = 0.0, evolution_max = 0.4 }, | ||||
|         { { name = 'processing-unit', count = math_random(30, 60) },      weight = 3, evolution_min = 0.7, evolution_max = 1 }, | ||||
|         { { name = 'explosives', count = math_random(25, 50) },           weight = 1, evolution_min = 0.2, evolution_max = 0.6 }, | ||||
|         { { name = 'lubricant-barrel', count = math_random(4, 10) },      weight = 1, evolution_min = 0.3, evolution_max = 0.5 }, | ||||
|         { { name = 'rocket-fuel', count = math_random(4, 10) },           weight = 2, evolution_min = 0.3, evolution_max = 0.7 }, | ||||
|         { { name = 'steel-plate', count = math_random(50, 100) },         weight = 2, evolution_min = 0.1, evolution_max = 0.3 }, | ||||
|         { { name = 'nuclear-fuel', count = 1 },                           weight = 2, evolution_min = 0.7, evolution_max = 1 }, | ||||
|         { { name = 'burner-inserter', count = math_random(4, 8) },        weight = 3, evolution_min = 0.0, evolution_max = 0.1 }, | ||||
|         { { name = 'inserter', count = math_random(4, 8) },               weight = 3, evolution_min = 0.0, evolution_max = 0.4 }, | ||||
|         { { name = 'long-handed-inserter', count = math_random(4, 8) },   weight = 3, evolution_min = 0.0, evolution_max = 0.4 }, | ||||
|         { { name = 'fast-inserter', count = math_random(4, 8) },          weight = 3, evolution_min = 0.1, evolution_max = 1 }, | ||||
|         { { name = 'filter-inserter', count = math_random(4, 8) },        weight = 1, evolution_min = 0.2, evolution_max = 1 }, | ||||
|         { { name = 'stack-filter-inserter', count = math_random(2, 4) },  weight = 1, evolution_min = 0.4, evolution_max = 1 }, | ||||
|         { { name = 'stack-inserter', count = math_random(2, 4) },         weight = 3, evolution_min = 0.3, evolution_max = 1 }, | ||||
|         { { name = 'small-electric-pole', count = math_random(8, 16) },   weight = 3, evolution_min = 0.0, evolution_max = 0.3 }, | ||||
|         { { name = 'medium-electric-pole', count = math_random(4, 8) },   weight = 3, evolution_min = 0.2, evolution_max = 1 }, | ||||
|         { { name = 'wooden-chest', count = math_random(16, 24) },         weight = 3, evolution_min = 0.0, evolution_max = 0.2 }, | ||||
|         { { name = 'iron-chest', count = math_random(4, 8) },             weight = 3, evolution_min = 0.1, evolution_max = 0.4 }, | ||||
|         { { name = 'steel-chest', count = math_random(4, 8) },            weight = 3, evolution_min = 0.3, evolution_max = 1 }, | ||||
|         { { name = 'small-lamp', count = math_random(8, 16) },            weight = 3, evolution_min = 0.1, evolution_max = 0.3 }, | ||||
|         { { name = 'rail', count = math_random(50, 75) },                 weight = 3, evolution_min = 0.1, evolution_max = 0.6 }, | ||||
|         { { name = 'assembling-machine-1', count = math_random(1, 2) },   weight = 3, evolution_min = 0.0, evolution_max = 0.3 }, | ||||
|         { { name = 'assembling-machine-2', count = math_random(1, 2) },   weight = 3, evolution_min = 0.2, evolution_max = 0.8 }, | ||||
|         { { name = 'offshore-pump', count = 1 },                          weight = 2, evolution_min = 0.0, evolution_max = 0.1 }, | ||||
|         { { name = 'heat-pipe', count = math_random(8, 12) },             weight = 2, evolution_min = 0.5, evolution_max = 1 }, | ||||
|         { { name = 'arithmetic-combinator', count = math_random(8, 16) }, weight = 1, evolution_min = 0.1, evolution_max = 1 }, | ||||
|         { { name = 'constant-combinator', count = math_random(8, 16) },   weight = 1, evolution_min = 0.1, evolution_max = 1 }, | ||||
|         { { name = 'decider-combinator', count = math_random(8, 16) },    weight = 1, evolution_min = 0.1, evolution_max = 1 }, | ||||
|         { { name = 'power-switch', count = math_random(2, 4) },           weight = 1, evolution_min = 0.1, evolution_max = 1 }, | ||||
|         { { name = 'programmable-speaker', count = math_random(2, 4) },   weight = 1, evolution_min = 0.1, evolution_max = 1 }, | ||||
|         { { name = 'green-wire', count = math_random(50, 100) },          weight = 1, evolution_min = 0.1, evolution_max = 1 }, | ||||
|         { { name = 'red-wire', count = math_random(50, 100) },            weight = 1, evolution_min = 0.1, evolution_max = 1 }, | ||||
|         { { name = 'burner-mining-drill', count = math_random(2, 4) },    weight = 3, evolution_min = 0.0, evolution_max = 0.2 }, | ||||
|         { { name = 'electric-mining-drill', count = math_random(2, 4) },  weight = 3, evolution_min = 0.2, evolution_max = 0.6 }, | ||||
|         { { name = 'iron-gear-wheel', count = math_random(80, 100) },       weight = 3, evolution_min = 0.0, evolution_max = 0.3 }, | ||||
|         { { name = 'copper-cable', count = math_random(100, 200) },         weight = 3, evolution_min = 0.0, evolution_max = 0.3 }, | ||||
|         { { name = 'engine-unit', count = math_random(16, 32) },            weight = 2, evolution_min = 0.1, evolution_max = 0.5 }, | ||||
|         { { name = 'electric-engine-unit', count = math_random(16, 32) },   weight = 2, evolution_min = 0.4, evolution_max = 0.8 }, | ||||
|         { { name = 'battery', count = math_random(40, 80) },                weight = 2, evolution_min = 0.3, evolution_max = 0.8 }, | ||||
|         { { name = 'advanced-circuit', count = math_random(40, 80) },       weight = 3, evolution_min = 0.4, evolution_max = 1 }, | ||||
|         { { name = 'electronic-circuit', count = math_random(100, 200) },   weight = 3, evolution_min = 0.0, evolution_max = 0.4 }, | ||||
|         { { name = 'processing-unit', count = math_random(30, 60) },        weight = 3, evolution_min = 0.7, evolution_max = 1 }, | ||||
|         { { name = 'explosives', count = math_random(25, 50) },             weight = 1, evolution_min = 0.2, evolution_max = 0.6 }, | ||||
|         { { name = 'lubricant-barrel', count = math_random(4, 10) },        weight = 1, evolution_min = 0.3, evolution_max = 0.5 }, | ||||
|         { { name = 'rocket-fuel', count = math_random(4, 10) },             weight = 2, evolution_min = 0.3, evolution_max = 0.7 }, | ||||
|         { { name = 'steel-plate', count = math_random(50, 100) },           weight = 2, evolution_min = 0.1, evolution_max = 0.3 }, | ||||
|         { { name = 'nuclear-fuel', count = 1 },                             weight = 2, evolution_min = 0.7, evolution_max = 1 }, | ||||
|         { { name = 'burner-inserter', count = math_random(4, 8) },          weight = 3, evolution_min = 0.0, evolution_max = 0.1 }, | ||||
|         { { name = 'inserter', count = math_random(4, 8) },                 weight = 3, evolution_min = 0.0, evolution_max = 0.4 }, | ||||
|         { { name = 'long-handed-inserter', count = math_random(4, 8) },     weight = 3, evolution_min = 0.0, evolution_max = 0.4 }, | ||||
|         { { name = 'fast-inserter', count = math_random(4, 8) },            weight = 3, evolution_min = 0.1, evolution_max = 1 }, | ||||
|         { { name = 'filter-inserter', count = math_random(4, 8) },          weight = 1, evolution_min = 0.2, evolution_max = 1 }, | ||||
|         { { name = 'stack-filter-inserter', count = math_random(2, 4) },    weight = 1, evolution_min = 0.4, evolution_max = 1 }, | ||||
|         { { name = 'stack-inserter', count = math_random(2, 4) },           weight = 3, evolution_min = 0.3, evolution_max = 1 }, | ||||
|         { { name = 'small-electric-pole', count = math_random(8, 16) },     weight = 3, evolution_min = 0.0, evolution_max = 0.3 }, | ||||
|         { { name = 'medium-electric-pole', count = math_random(4, 8) },     weight = 3, evolution_min = 0.2, evolution_max = 1 }, | ||||
|         { { name = 'wooden-chest', count = math_random(16, 24) },           weight = 3, evolution_min = 0.0, evolution_max = 0.2 }, | ||||
|         { { name = 'iron-chest', count = math_random(4, 8) },               weight = 3, evolution_min = 0.1, evolution_max = 0.4 }, | ||||
|         { { name = 'steel-chest', count = math_random(4, 8) },              weight = 3, evolution_min = 0.3, evolution_max = 1 }, | ||||
|         { { name = 'small-lamp', count = math_random(8, 16) },              weight = 3, evolution_min = 0.1, evolution_max = 0.3 }, | ||||
|         { { name = 'rail', count = math_random(50, 75) },                   weight = 3, evolution_min = 0.1, evolution_max = 0.6 }, | ||||
|         { { name = 'assembling-machine-1', count = math_random(1, 2) },     weight = 3, evolution_min = 0.0, evolution_max = 0.3 }, | ||||
|         { { name = 'assembling-machine-2', count = math_random(1, 2) },     weight = 3, evolution_min = 0.2, evolution_max = 0.8 }, | ||||
|         { { name = 'offshore-pump', count = 1 },                            weight = 2, evolution_min = 0.0, evolution_max = 0.1 }, | ||||
|         { { name = 'heat-pipe', count = math_random(8, 12) },               weight = 2, evolution_min = 0.5, evolution_max = 1 }, | ||||
|         { { name = 'arithmetic-combinator', count = math_random(8, 16) },   weight = 1, evolution_min = 0.1, evolution_max = 1 }, | ||||
|         { { name = 'constant-combinator', count = math_random(8, 16) },     weight = 1, evolution_min = 0.1, evolution_max = 1 }, | ||||
|         { { name = 'decider-combinator', count = math_random(8, 16) },      weight = 1, evolution_min = 0.1, evolution_max = 1 }, | ||||
|         { { name = 'power-switch', count = math_random(2, 4) },             weight = 1, evolution_min = 0.1, evolution_max = 1 }, | ||||
|         { { name = 'programmable-speaker', count = math_random(2, 4) },     weight = 1, evolution_min = 0.1, evolution_max = 1 }, | ||||
|         { { name = 'green-wire', count = math_random(50, 100) },            weight = 1, evolution_min = 0.1, evolution_max = 1 }, | ||||
|         { { name = 'red-wire', count = math_random(50, 100) },              weight = 1, evolution_min = 0.1, evolution_max = 1 }, | ||||
|         { { name = 'burner-mining-drill', count = math_random(2, 4) },      weight = 3, evolution_min = 0.0, evolution_max = 0.2 }, | ||||
|         { { name = 'electric-mining-drill', count = math_random(2, 4) },    weight = 3, evolution_min = 0.2, evolution_max = 0.6 }, | ||||
|         { { name = 'express-transport-belt', count = math_random(25, 75) }, weight = 3, evolution_min = 0.5, evolution_max = 1 }, | ||||
|         { { name = 'express-underground-belt', count = math_random(4, 8) }, weight = 3, evolution_min = 0.5, evolution_max = 1 }, | ||||
|         { { name = 'express-splitter', count = math_random(2, 4) },       weight = 3, evolution_min = 0.5, evolution_max = 1 }, | ||||
|         { { name = 'fast-transport-belt', count = math_random(25, 75) },  weight = 3, evolution_min = 0.2, evolution_max = 0.7 }, | ||||
|         { { name = 'fast-underground-belt', count = math_random(4, 8) },  weight = 3, evolution_min = 0.2, evolution_max = 0.7 }, | ||||
|         { { name = 'fast-splitter', count = math_random(2, 4) },          weight = 3, evolution_min = 0.2, evolution_max = 0.3 }, | ||||
|         { { name = 'transport-belt', count = math_random(25, 75) },       weight = 3, evolution_min = 0,   evolution_max = 0.3 }, | ||||
|         { { name = 'underground-belt', count = math_random(4, 8) },       weight = 3, evolution_min = 0,   evolution_max = 0.3 }, | ||||
|         { { name = 'splitter', count = math_random(2, 4) },               weight = 3, evolution_min = 0,   evolution_max = 0.3 }, | ||||
|         { { name = 'pipe', count = math_random(40, 50) },                 weight = 3, evolution_min = 0.0, evolution_max = 0.3 }, | ||||
|         { { name = 'pipe-to-ground', count = math_random(8, 16) },        weight = 1, evolution_min = 0.2, evolution_max = 0.5 }, | ||||
|         { { name = 'pump', count = math_random(1, 4) },                   weight = 1, evolution_min = 0.3, evolution_max = 0.8 }, | ||||
|         { { name = 'rail-signal', count = math_random(8, 16) },           weight = 2, evolution_min = 0.2, evolution_max = 0.8 }, | ||||
|         { { name = 'rail-chain-signal', count = math_random(8, 16) },     weight = 2, evolution_min = 0.2, evolution_max = 0.8 }, | ||||
|         { { name = 'stone-wall', count = math_random(25, 75) },           weight = 1, evolution_min = 0.1, evolution_max = 0.5 }, | ||||
|         { { name = 'gate', count = math_random(4, 8) },                   weight = 1, evolution_min = 0.1, evolution_max = 0.5 }, | ||||
|         { { name = 'train-stop', count = math_random(1, 2) },             weight = 1, evolution_min = 0.2, evolution_max = 0.7 }, | ||||
|         { { name = 'express-loader', count = math_random(1, 2) },         weight = 1, evolution_min = 0.5, evolution_max = 1 }, | ||||
|         { { name = 'fast-loader', count = math_random(1, 2) },            weight = 1, evolution_min = 0.2, evolution_max = 0.7 }, | ||||
|         { { name = 'loader', count = math_random(1, 2) },                 weight = 1, evolution_min = 0.0, evolution_max = 0.5 } | ||||
|         { { name = 'express-splitter', count = math_random(2, 4) },         weight = 3, evolution_min = 0.5, evolution_max = 1 }, | ||||
|         { { name = 'fast-transport-belt', count = math_random(25, 75) },    weight = 3, evolution_min = 0.2, evolution_max = 0.7 }, | ||||
|         { { name = 'fast-underground-belt', count = math_random(4, 8) },    weight = 3, evolution_min = 0.2, evolution_max = 0.7 }, | ||||
|         { { name = 'fast-splitter', count = math_random(2, 4) },            weight = 3, evolution_min = 0.2, evolution_max = 0.3 }, | ||||
|         { { name = 'transport-belt', count = math_random(25, 75) },         weight = 3, evolution_min = 0,   evolution_max = 0.3 }, | ||||
|         { { name = 'underground-belt', count = math_random(4, 8) },         weight = 3, evolution_min = 0,   evolution_max = 0.3 }, | ||||
|         { { name = 'splitter', count = math_random(2, 4) },                 weight = 3, evolution_min = 0,   evolution_max = 0.3 }, | ||||
|         { { name = 'pipe', count = math_random(40, 50) },                   weight = 3, evolution_min = 0.0, evolution_max = 0.3 }, | ||||
|         { { name = 'pipe-to-ground', count = math_random(8, 16) },          weight = 1, evolution_min = 0.2, evolution_max = 0.5 }, | ||||
|         { { name = 'pump', count = math_random(1, 4) },                     weight = 1, evolution_min = 0.3, evolution_max = 0.8 }, | ||||
|         { { name = 'rail-signal', count = math_random(8, 16) },             weight = 2, evolution_min = 0.2, evolution_max = 0.8 }, | ||||
|         { { name = 'rail-chain-signal', count = math_random(8, 16) },       weight = 2, evolution_min = 0.2, evolution_max = 0.8 }, | ||||
|         { { name = 'stone-wall', count = math_random(25, 75) },             weight = 1, evolution_min = 0.1, evolution_max = 0.5 }, | ||||
|         { { name = 'gate', count = math_random(4, 8) },                     weight = 1, evolution_min = 0.1, evolution_max = 0.5 }, | ||||
|         { { name = 'train-stop', count = math_random(1, 2) },               weight = 1, evolution_min = 0.2, evolution_max = 0.7 }, | ||||
|         { { name = 'express-loader', count = math_random(1, 2) },           weight = 1, evolution_min = 0.5, evolution_max = 1 }, | ||||
|         { { name = 'fast-loader', count = math_random(1, 2) },              weight = 1, evolution_min = 0.2, evolution_max = 0.7 }, | ||||
|         { { name = 'loader', count = math_random(1, 2) },                   weight = 1, evolution_min = 0.0, evolution_max = 0.5 } | ||||
|     } | ||||
|  | ||||
|     local distance_to_center = math.sqrt(position.x ^ 2 + position.y ^ 2) | ||||
| @@ -296,7 +296,7 @@ local function on_chunk_generated(event) | ||||
|     labyrinth(event) | ||||
|  | ||||
|     local decorative_names = {} | ||||
|     for k, v in pairs(game.decorative_prototypes) do | ||||
|     for k, v in pairs(prototypes.decorative) do | ||||
|         if v.autoplace_specification then | ||||
|             decorative_names[#decorative_names + 1] = k | ||||
|         end | ||||
|   | ||||
| @@ -223,7 +223,7 @@ local function on_init() | ||||
|     surface.force_generate_chunk_requests() | ||||
|  | ||||
|     --storage.tree_raffle = {} | ||||
|     --for _, e in pairs(game.entity_prototypes) do | ||||
|     --for _, e in pairs(prototypes.entity) do | ||||
|     --	if e.type == "tree" then | ||||
|     --		table.insert(storage.tree_raffle, e.name) | ||||
|     --	end | ||||
| @@ -238,7 +238,7 @@ local function on_init() | ||||
|         ['red-desert-decal'] = true | ||||
|     } | ||||
|     storage.decorative_names = {} | ||||
|     for k, v in pairs(game.decorative_prototypes) do | ||||
|     for k, v in pairs(prototypes.decorative) do | ||||
|         if not blacklist[k] then | ||||
|             if v.autoplace_specification then | ||||
|                 storage.decorative_names[#storage.decorative_names + 1] = k | ||||
|   | ||||
| @@ -14,7 +14,7 @@ local math_floor = math.floor | ||||
| local math_abs = math.abs | ||||
|  | ||||
| local Public = {} | ||||
| local mixed_ores = {'copper-ore', 'iron-ore', 'stone', 'coal'} | ||||
| local mixed_ores = { 'copper-ore', 'iron-ore', 'stone', 'coal' } | ||||
|  | ||||
| local function clear_selectors(journey) | ||||
|     for k, world_selector in pairs(journey.world_selectors) do | ||||
| @@ -46,35 +46,35 @@ function Public.place_mixed_ore(event, journey) | ||||
|     local y = event.area.left_top.y + math_random(0, 31) | ||||
|     local base_amount = 1000 + math_sqrt(x ^ 2 + y ^ 2) * 5 | ||||
|     local richness = journey.mixed_ore_richness | ||||
|     Map_functions.draw_rainbow_patch({x = x, y = y}, surface, math_random(17, 22), base_amount * richness + 100) | ||||
|     Map_functions.draw_rainbow_patch({ x = x, y = y }, surface, math_random(17, 22), base_amount * richness + 100) | ||||
| end | ||||
|  | ||||
| local function place_teleporter(journey, surface, position, build_beacon) | ||||
|     local tiles = {} | ||||
|     for x = -2, 2, 1 do | ||||
|         for y = -2, 2, 1 do | ||||
|             local pos = {x = position.x + x, y = position.y + y} | ||||
|             table.insert(tiles, {name = Constants.teleporter_tile, position = pos}) | ||||
|             local pos = { x = position.x + x, y = position.y + y } | ||||
|             table.insert(tiles, { name = Constants.teleporter_tile, position = pos }) | ||||
|         end | ||||
|     end | ||||
|     surface.set_tiles(tiles, false) | ||||
|     surface.create_entity({name = 'electric-beam-no-sound', position = position, source = {x = position.x - 1.5, y = position.y - 1.5}, target = {x = position.x + 2.5, y = position.y - 1.0}}) | ||||
|     surface.create_entity({name = 'electric-beam-no-sound', position = position, source = {x = position.x + 2.5, y = position.y - 1.5}, target = {x = position.x + 2.5, y = position.y + 3.0}}) | ||||
|     surface.create_entity({name = 'electric-beam-no-sound', position = position, source = {x = position.x + 2.5, y = position.y + 2.5}, target = {x = position.x - 1.5, y = position.y + 3.0}}) | ||||
|     surface.create_entity({name = 'electric-beam-no-sound', position = position, source = {x = position.x - 1.5, y = position.y + 2.5}, target = {x = position.x - 1.5, y = position.y - 1.0}}) | ||||
|     surface.destroy_decoratives({area = {{position.x - 3, position.y - 3}, {position.x + 3, position.y + 3}}}) | ||||
|     surface.create_entity({ name = 'electric-beam-no-sound', position = position, source = { x = position.x - 1.5, y = position.y - 1.5 }, target = { x = position.x + 2.5, y = position.y - 1.0 } }) | ||||
|     surface.create_entity({ name = 'electric-beam-no-sound', position = position, source = { x = position.x + 2.5, y = position.y - 1.5 }, target = { x = position.x + 2.5, y = position.y + 3.0 } }) | ||||
|     surface.create_entity({ name = 'electric-beam-no-sound', position = position, source = { x = position.x + 2.5, y = position.y + 2.5 }, target = { x = position.x - 1.5, y = position.y + 3.0 } }) | ||||
|     surface.create_entity({ name = 'electric-beam-no-sound', position = position, source = { x = position.x - 1.5, y = position.y + 2.5 }, target = { x = position.x - 1.5, y = position.y - 1.0 } }) | ||||
|     surface.destroy_decoratives({ area = { { position.x - 3, position.y - 3 }, { position.x + 3, position.y + 3 } } }) | ||||
|     if build_beacon then | ||||
|         local beacon = surface.create_entity({name = 'beacon', position = {x = position.x, y = position.y}, force = 'player'}) | ||||
|         local beacon = surface.create_entity({ name = 'beacon', position = { x = position.x, y = position.y }, force = 'player' }) | ||||
|         journey.beacon_objective_health = 10000 | ||||
|         beacon.operable = false | ||||
|         beacon.minable = false | ||||
|         beacon.active = false | ||||
|         rendering.draw_text { | ||||
|             text = {'journey.teleporter'}, | ||||
|             text = { 'journey.teleporter' }, | ||||
|             surface = surface, | ||||
|             target = beacon, | ||||
|             target_offset = {0, -1.5}, | ||||
|             color = {0, 1, 0}, | ||||
|             target_offset = { 0, -1.5 }, | ||||
|             color = { 0, 1, 0 }, | ||||
|             scale = 0.90, | ||||
|             font = 'default-game', | ||||
|             alignment = 'center', | ||||
| @@ -82,16 +82,16 @@ local function place_teleporter(journey, surface, position, build_beacon) | ||||
|         } | ||||
|         local hp = | ||||
|             rendering.draw_text { | ||||
|             text = {'journey.beacon_hp', journey.beacon_objective_health}, | ||||
|             surface = surface, | ||||
|             target = beacon, | ||||
|             target_offset = {0, -1.0}, | ||||
|             color = {0, 1, 0}, | ||||
|             scale = 0.90, | ||||
|             font = 'default-game', | ||||
|             alignment = 'center', | ||||
|             scale_with_zoom = false | ||||
|         } | ||||
|                 text = { 'journey.beacon_hp', journey.beacon_objective_health }, | ||||
|                 surface = surface, | ||||
|                 target = beacon, | ||||
|                 target_offset = { 0, -1.0 }, | ||||
|                 color = { 0, 1, 0 }, | ||||
|                 scale = 0.90, | ||||
|                 font = 'default-game', | ||||
|                 alignment = 'center', | ||||
|                 scale_with_zoom = false | ||||
|             } | ||||
|         journey.beacon_objective = beacon | ||||
|         journey.beacon_objective_hp_label = hp | ||||
|     end | ||||
| @@ -101,12 +101,12 @@ local function destroy_teleporter(journey, surface, position) | ||||
|     local tiles = {} | ||||
|     for x = -2, 2, 1 do | ||||
|         for y = -2, 2, 1 do | ||||
|             local pos = {x = position.x + x, y = position.y + y} | ||||
|             table.insert(tiles, {name = 'lab-dark-1', position = pos}) | ||||
|             local pos = { x = position.x + x, y = position.y + y } | ||||
|             table.insert(tiles, { name = 'lab-dark-1', position = pos }) | ||||
|         end | ||||
|     end | ||||
|     surface.set_tiles(tiles, true) | ||||
|     for _, e in pairs(surface.find_entities_filtered({name = 'electric-beam-no-sound', area = {{position.x - 3, position.y - 3}, {position.x + 3, position.y + 3}}})) do | ||||
|     for _, e in pairs(surface.find_entities_filtered({ name = 'electric-beam-no-sound', area = { { position.x - 3, position.y - 3 }, { position.x + 3, position.y + 3 } } })) do | ||||
|         e.destroy() | ||||
|     end | ||||
| end | ||||
| @@ -124,14 +124,14 @@ local function drop_player_items(journey, player) | ||||
|  | ||||
|     for i = 1, player.crafting_queue_size, 1 do | ||||
|         if player.crafting_queue_size > 0 then | ||||
|             player.cancel_crafting {index = 1, count = 99999999} | ||||
|             player.cancel_crafting { index = 1, count = 99999999 } | ||||
|         end | ||||
|     end | ||||
|  | ||||
|     local surface = player.surface | ||||
|     local spill_blockage = surface.create_entity {name = 'oil-refinery', position = journey.beacon_objective.position or player.position} | ||||
|     local spill_blockage = surface.create_entity { name = 'oil-refinery', position = journey.beacon_objective.position or player.position } | ||||
|  | ||||
|     for _, define in pairs({defines.inventory.character_main, defines.inventory.character_guns, defines.inventory.character_ammo, defines.inventory.character_armor, defines.inventory.character_vehicle, defines.inventory.character_trash}) do | ||||
|     for _, define in pairs({ defines.inventory.character_main, defines.inventory.character_guns, defines.inventory.character_ammo, defines.inventory.character_armor, defines.inventory.character_vehicle, defines.inventory.character_trash }) do | ||||
|         local inventory = character.get_inventory(define) | ||||
|         if inventory and inventory.valid then | ||||
|             for i = 1, #inventory, 1 do | ||||
| @@ -156,7 +156,7 @@ function Public.clear_player(player) | ||||
|         return | ||||
|     end | ||||
|     player.character.destroy() | ||||
|     player.set_controller({type = defines.controllers.god}) | ||||
|     player.set_controller({ type = defines.controllers.god }) | ||||
|     player.create_character() | ||||
|     player.clear_items_inside() | ||||
| end | ||||
| @@ -182,7 +182,7 @@ end | ||||
|  | ||||
| local function set_map_modifiers(journey) | ||||
|     local mgs = game.surfaces.nauvis.map_gen_settings | ||||
|     for _, name in pairs({'iron-ore', 'copper-ore', 'uranium-ore', 'coal', 'stone', 'crude-oil'}) do | ||||
|     for _, name in pairs({ 'iron-ore', 'copper-ore', 'uranium-ore', 'coal', 'stone', 'crude-oil' }) do | ||||
|         mgs.autoplace_controls[name].richness = calc_modifier(journey, name) | ||||
|         mgs.autoplace_controls[name].size = calc_modifier(journey, 'ore_size') | ||||
|         mgs.autoplace_controls[name].frequency = calc_modifier(journey, 'ore_frequency') | ||||
| @@ -230,16 +230,16 @@ local function delete_nauvis_chunks(journey) | ||||
|     if not journey.nauvis_chunk_positions then | ||||
|         journey.nauvis_chunk_positions = {} | ||||
|         for chunk in surface.get_chunks() do | ||||
|             table.insert(journey.nauvis_chunk_positions, {chunk.x, chunk.y}) | ||||
|             table.insert(journey.nauvis_chunk_positions, { chunk.x, chunk.y }) | ||||
|         end | ||||
|         journey.size_of_nauvis_chunk_positions = #journey.nauvis_chunk_positions | ||||
|         for _, e in pairs(surface.find_entities_filtered {type = 'radar'}) do | ||||
|         for _, e in pairs(surface.find_entities_filtered { type = 'radar' }) do | ||||
|             e.destroy() | ||||
|         end | ||||
|         for _, player in pairs(game.players) do | ||||
|             local button = player.gui.top.add({type = 'sprite-button', name = 'chunk_progress', caption = ''}) | ||||
|             local button = player.gui.top.add({ type = 'sprite-button', name = 'chunk_progress', caption = '' }) | ||||
|             button.style.font = 'heading-1' | ||||
|             button.style.font_color = {222, 222, 222} | ||||
|             button.style.font_color = { 222, 222, 222 } | ||||
|             button.style.minimal_height = 38 | ||||
|             button.style.maximal_height = 38 | ||||
|             button.style.minimal_width = 240 | ||||
| @@ -261,7 +261,7 @@ local function delete_nauvis_chunks(journey) | ||||
|         end | ||||
|     end | ||||
|  | ||||
|     local caption = {'journey.chunks_delete', journey.size_of_nauvis_chunk_positions} | ||||
|     local caption = { 'journey.chunks_delete', journey.size_of_nauvis_chunk_positions } | ||||
|     for _, player in pairs(game.connected_players) do | ||||
|         if player.gui.top.chunk_progress then | ||||
|             player.gui.top.chunk_progress.caption = caption | ||||
| @@ -276,7 +276,7 @@ function Public.mothership_message_queue(journey) | ||||
|         return | ||||
|     end | ||||
|     if text ~= '' then | ||||
|         game.print({'journey.mothership_format', text}) | ||||
|         game.print({ 'journey.mothership_format', text }) | ||||
|     end | ||||
|     table.remove(journey.mothership_messages, 1) | ||||
| end | ||||
| @@ -314,17 +314,17 @@ end | ||||
| local function cargo_gui(name, itemname, tooltip, value, hidden) | ||||
|     for _, player in pairs(game.connected_players) do | ||||
|         if not player.gui.top[name] then | ||||
|             local frame = player.gui.top.add({type = 'frame', name = name}) | ||||
|             local frame = player.gui.top.add({ type = 'frame', name = name }) | ||||
|             frame.style.left_margin = 0 | ||||
|             frame.style.padding = 0 | ||||
|             local sprite = frame.add({type = 'sprite', sprite = 'item/' .. itemname, name = name .. '_sprite', resize_to_sprite = false}) | ||||
|             local sprite = frame.add({ type = 'sprite', sprite = 'item/' .. itemname, name = name .. '_sprite', resize_to_sprite = false }) | ||||
|             sprite.style.minimal_width = 28 | ||||
|             sprite.style.minimal_height = 28 | ||||
|             sprite.style.maximal_width = 28 | ||||
|             sprite.style.maximal_height = 28 | ||||
|             sprite.style.margin = 0 | ||||
|             sprite.style.padding = 0 | ||||
|             local progressbar = frame.add({type = 'progressbar', name = name .. '_progressbar', value = 0}) | ||||
|             local progressbar = frame.add({ type = 'progressbar', name = name .. '_progressbar', value = 0 }) | ||||
|             progressbar.style = 'achievement_progressbar' | ||||
|             progressbar.style.minimal_width = 100 | ||||
|             progressbar.style.maximal_width = 100 | ||||
| @@ -348,13 +348,13 @@ local function cargo_gui(name, itemname, tooltip, value, hidden) | ||||
| end | ||||
|  | ||||
| function Public.update_tooltips(journey) | ||||
|     local modiftt = {''} | ||||
|     local modiftt = { '' } | ||||
|     for k, v in pairs(Constants.modifiers) do | ||||
|         modiftt = {'', modiftt, {'journey.tooltip_modifier', v.name, math.round(get_modifier(k, journey) * 100)}} | ||||
|         modiftt = { '', modiftt, { 'journey.tooltip_modifier', v.name, math.round(get_modifier(k, journey) * 100) } } | ||||
|     end | ||||
|     journey.tooltip_modifiers = modiftt | ||||
|  | ||||
|     local capsulett = {''} | ||||
|     local capsulett = { '' } | ||||
|     local c = 0 | ||||
|     for k, v in pairs(journey.bonus_goods) do | ||||
|         local str = '    ' | ||||
| @@ -362,9 +362,9 @@ function Public.update_tooltips(journey) | ||||
|         v = string.sub(str, 1, -string.len(v2)) .. v2 | ||||
|         c = c + 1 | ||||
|         if c % 3 == 0 then | ||||
|             capsulett = {'', capsulett, {'journey.tooltip_capsule2', v, k}} | ||||
|             capsulett = { '', capsulett, { 'journey.tooltip_capsule2', v, k } } | ||||
|         else | ||||
|             capsulett = {'', capsulett, {'journey.tooltip_capsule', v, k}} | ||||
|             capsulett = { '', capsulett, { 'journey.tooltip_capsule', v, k } } | ||||
|         end | ||||
|     end | ||||
|     journey.tooltip_capsules = capsulett | ||||
| @@ -373,14 +373,14 @@ end | ||||
| function Public.draw_gui(journey) | ||||
|     local surface = game.surfaces.nauvis | ||||
|     local mgs = surface.map_gen_settings | ||||
|     local caption = {'journey.world', journey.world_number, Constants.unique_world_traits[journey.world_trait].name} | ||||
|     local tooltip = {'journey.world_tooltip', Constants.unique_world_traits[journey.world_trait].desc, journey.tooltip_modifiers, journey.tooltip_capsules} | ||||
|     local caption = { 'journey.world', journey.world_number, Constants.unique_world_traits[journey.world_trait].name } | ||||
|     local tooltip = { 'journey.world_tooltip', Constants.unique_world_traits[journey.world_trait].desc, journey.tooltip_modifiers, journey.tooltip_capsules } | ||||
|  | ||||
|     for _, player in pairs(game.connected_players) do | ||||
|         if not player.gui.top.journey_button then | ||||
|             local element = player.gui.top.add({type = 'sprite-button', name = 'journey_button', caption = ''}) | ||||
|             local element = player.gui.top.add({ type = 'sprite-button', name = 'journey_button', caption = '' }) | ||||
|             element.style.font = 'heading-1' | ||||
|             element.style.font_color = {222, 222, 222} | ||||
|             element.style.font_color = { 222, 222, 222 } | ||||
|             element.style.minimal_height = 38 | ||||
|             element.style.maximal_height = 38 | ||||
|             element.style.minimal_width = 250 | ||||
| @@ -398,24 +398,24 @@ function Public.draw_gui(journey) | ||||
|     else | ||||
|         value = journey.mothership_cargo['uranium-fuel-cell'] / fuel_requirement | ||||
|     end | ||||
|     cargo_gui('journey_fuel', 'uranium-fuel-cell', {'journey.tooltip_fuel', fuel_requirement, journey.mothership_cargo['uranium-fuel-cell']}, value) | ||||
|     cargo_gui('journey_fuel', 'uranium-fuel-cell', { 'journey.tooltip_fuel', fuel_requirement, journey.mothership_cargo['uranium-fuel-cell'] }, value) | ||||
|  | ||||
|     local max_satellites = journey.mothership_cargo_space['satellite'] | ||||
|     local value2 = journey.mothership_cargo['satellite'] / max_satellites | ||||
|     cargo_gui('journey_satellites', 'satellite', {'journey.tooltip_satellite', journey.mothership_cargo['satellite'], max_satellites}, value2) | ||||
|     cargo_gui('journey_satellites', 'satellite', { 'journey.tooltip_satellite', journey.mothership_cargo['satellite'], max_satellites }, value2) | ||||
|  | ||||
|     local max_emergency_fuel = journey.mothership_cargo_space['nuclear-reactor'] | ||||
|     local value3 = journey.mothership_cargo['nuclear-reactor'] / max_emergency_fuel | ||||
|     cargo_gui('journey_emergency', 'nuclear-reactor', {'journey.tooltip_nuclear_fuel', journey.mothership_cargo['nuclear-reactor'], max_emergency_fuel}, value3) | ||||
|     cargo_gui('journey_emergency', 'nuclear-reactor', { 'journey.tooltip_nuclear_fuel', journey.mothership_cargo['nuclear-reactor'], max_emergency_fuel }, value3) | ||||
|  | ||||
|     local item = journey.speedrun.item | ||||
|     local time = math.round(journey.speedrun.time / 6) / 10 | ||||
|     local speedgoal = journey.mothership_cargo_space[item] or 1 | ||||
|     local value4 = (journey.mothership_cargo[item] or 0) / speedgoal | ||||
|     if journey.speedrun.enabled then | ||||
|         cargo_gui('journey_delivery', item, {'journey.tooltip_delivery', journey.mothership_cargo[item] or 0, speedgoal, time}, value4) | ||||
|         cargo_gui('journey_delivery', item, { 'journey.tooltip_delivery', journey.mothership_cargo[item] or 0, speedgoal, time }, value4) | ||||
|     else | ||||
|         cargo_gui('journey_delivery', item, {'journey.tooltip_delivery', journey.mothership_cargo[item] or 0, speedgoal, time}, value4, true) | ||||
|         cargo_gui('journey_delivery', item, { 'journey.tooltip_delivery', journey.mothership_cargo[item] or 0, speedgoal, time }, value4, true) | ||||
|     end | ||||
| end | ||||
|  | ||||
| @@ -426,7 +426,7 @@ local function is_mothership(position) | ||||
|     if math.abs(position.y) > Constants.mothership_radius then | ||||
|         return false | ||||
|     end | ||||
|     local p = {x = position.x, y = position.y} | ||||
|     local p = { x = position.x, y = position.y } | ||||
|     if p.x > 0 then | ||||
|         p.x = p.x + 1 | ||||
|     end | ||||
| @@ -446,11 +446,11 @@ function Public.on_mothership_chunk_generated(event) | ||||
|     local tiles = {} | ||||
|     for x = 0, 31, 1 do | ||||
|         for y = 0, 31, 1 do | ||||
|             local position = {x = left_top.x + x, y = left_top.y + y} | ||||
|             local position = { x = left_top.x + x, y = left_top.y + y } | ||||
|             if is_mothership(position) then | ||||
|                 table.insert(tiles, {name = 'black-refined-concrete', position = position}) | ||||
|                 table.insert(tiles, { name = 'black-refined-concrete', position = position }) | ||||
|             else | ||||
|                 table.insert(tiles, {name = 'out-of-map', position = position}) | ||||
|                 table.insert(tiles, { name = 'out-of-map', position = position }) | ||||
|             end | ||||
|         end | ||||
|     end | ||||
| @@ -506,7 +506,7 @@ function Public.restart_server(journey) | ||||
|         log('Can force restart only during world selection stages') | ||||
|         return | ||||
|     end | ||||
|     game.print({'journey.cmd_server_restarting'}, {r = 255, g = 255, b = 0}) | ||||
|     game.print({ 'journey.cmd_server_restarting' }, { r = 255, g = 255, b = 0 }) | ||||
|     Public.export_journey(journey, true) | ||||
|     Server.start_scenario('Journey') | ||||
|     return | ||||
| @@ -514,7 +514,7 @@ end | ||||
|  | ||||
| function Public.hard_reset(journey) | ||||
|     if journey.restart_from_scenario then | ||||
|         game.print({'journey.cmd_server_restarting'}, {r = 255, g = 255, b = 0}) | ||||
|         game.print({ 'journey.cmd_server_restarting' }, { r = 255, g = 255, b = 0 }) | ||||
|         Public.export_journey(journey, false) | ||||
|         Server.start_scenario('Journey') | ||||
|         return | ||||
| @@ -540,11 +540,11 @@ function Public.hard_reset(journey) | ||||
|     game.map_settings.pollution.min_to_diffuse = 75 | ||||
|     game.map_settings.pollution.expected_max_per_chunk = 300 | ||||
|  | ||||
|     game.map_settings.enemy_expansion.max_expansion_distance = 5 --default 7 | ||||
|     game.map_settings.enemy_expansion.friendly_base_influence_radius = 1 --default 2 | ||||
|     game.map_settings.enemy_expansion.enemy_building_influence_radius = 5 --default 2 | ||||
|     game.map_settings.enemy_expansion.building_coefficient = 0.02 --default 0.1 | ||||
|     game.map_settings.enemy_expansion.neighbouring_chunk_coefficient = 0.25 --defualt 0.5 | ||||
|     game.map_settings.enemy_expansion.max_expansion_distance = 5                 --default 7 | ||||
|     game.map_settings.enemy_expansion.friendly_base_influence_radius = 1         --default 2 | ||||
|     game.map_settings.enemy_expansion.enemy_building_influence_radius = 5        --default 2 | ||||
|     game.map_settings.enemy_expansion.building_coefficient = 0.02                --default 0.1 | ||||
|     game.map_settings.enemy_expansion.neighbouring_chunk_coefficient = 0.25      --defualt 0.5 | ||||
|     game.map_settings.enemy_expansion.neighbouring_base_chunk_coefficient = 0.25 --default 0.4 | ||||
|  | ||||
|     local surface = game.surfaces[1] | ||||
| @@ -562,9 +562,9 @@ function Public.hard_reset(journey) | ||||
|     end | ||||
|  | ||||
|     journey.world_selectors = {} | ||||
|     journey.reroll_selector = {activation_level = 0} | ||||
|     journey.reroll_selector = { activation_level = 0 } | ||||
|     for i = 1, 3, 1 do | ||||
|         journey.world_selectors[i] = {activation_level = 0, texts = {}} | ||||
|         journey.world_selectors[i] = { activation_level = 0, texts = {} } | ||||
|     end | ||||
|     journey.mothership_speed = 0.5 | ||||
|     journey.characters_in_mothership = 0 | ||||
| @@ -594,7 +594,7 @@ function Public.hard_reset(journey) | ||||
|     journey.emergency_triggered = false | ||||
|     journey.emergency_selected = false | ||||
|     journey.game_state = 'create_mothership' | ||||
|     journey.speedrun = {enabled = false, time = 0, item = 'iron-stick'} | ||||
|     journey.speedrun = { enabled = false, time = 0, item = 'iron-stick' } | ||||
|     journey.vote_minimum = 1 | ||||
|     journey.mothership_messages_last_damage = game.tick | ||||
|     for k, modifier in pairs(Constants.modifiers) do | ||||
| @@ -605,7 +605,7 @@ end | ||||
|  | ||||
| function Public.create_mothership(journey) | ||||
|     local surface = game.create_surface('mothership', Constants.mothership_gen_settings) | ||||
|     surface.request_to_generate_chunks({x = 0, y = 0}, 6) | ||||
|     surface.request_to_generate_chunks({ x = 0, y = 0 }, 6) | ||||
|     surface.force_generate_chunk_requests() | ||||
|     surface.freeze_daytime = true | ||||
|     journey.game_state = 'draw_mothership' | ||||
| @@ -617,7 +617,7 @@ function Public.draw_mothership(journey) | ||||
|     local positions = {} | ||||
|     for x = Constants.mothership_radius * -1, Constants.mothership_radius, 1 do | ||||
|         for y = Constants.mothership_radius * -1, Constants.mothership_radius, 1 do | ||||
|             local position = {x = x, y = y} | ||||
|             local position = { x = x, y = y } | ||||
|             if is_mothership(position) then | ||||
|                 table.insert(positions, position) | ||||
|             end | ||||
| @@ -627,19 +627,19 @@ function Public.draw_mothership(journey) | ||||
|     table.shuffle_table(positions) | ||||
|  | ||||
|     for _, position in pairs(positions) do | ||||
|         if surface.count_tiles_filtered({area = {{position.x - 1, position.y - 1}, {position.x + 2, position.y + 2}}, name = 'out-of-map'}) > 0 then | ||||
|             local e = surface.create_entity({name = 'stone-wall', position = position, force = 'player'}) | ||||
|         if surface.count_tiles_filtered({ area = { { position.x - 1, position.y - 1 }, { position.x + 2, position.y + 2 } }, name = 'out-of-map' }) > 0 then | ||||
|             local e = surface.create_entity({ name = 'stone-wall', position = position, force = 'player' }) | ||||
|             protect(e, true) | ||||
|         end | ||||
|         if surface.count_tiles_filtered({area = {{position.x - 1, position.y - 1}, {position.x + 2, position.y + 2}}, name = 'lab-dark-1'}) < 4 then | ||||
|             surface.set_tiles({{name = 'lab-dark-1', position = position}}, true) | ||||
|         if surface.count_tiles_filtered({ area = { { position.x - 1, position.y - 1 }, { position.x + 2, position.y + 2 } }, name = 'lab-dark-1' }) < 4 then | ||||
|             surface.set_tiles({ { name = 'lab-dark-1', position = position } }, true) | ||||
|         end | ||||
|     end | ||||
|  | ||||
|     for _, tile in pairs( | ||||
|         surface.find_tiles_filtered({area = {{Constants.mothership_teleporter_position.x - 2, Constants.mothership_teleporter_position.y - 2}, {Constants.mothership_teleporter_position.x + 2, Constants.mothership_teleporter_position.y + 2}}}) | ||||
|         surface.find_tiles_filtered({ area = { { Constants.mothership_teleporter_position.x - 2, Constants.mothership_teleporter_position.y - 2 }, { Constants.mothership_teleporter_position.x + 2, Constants.mothership_teleporter_position.y + 2 } } }) | ||||
|     ) do | ||||
|         surface.set_tiles({{name = 'lab-dark-1', position = tile.position}}, true) | ||||
|         surface.set_tiles({ { name = 'lab-dark-1', position = tile.position } }, true) | ||||
|     end | ||||
|  | ||||
|     for k, area in pairs(Constants.world_selector_areas) do | ||||
| @@ -647,65 +647,65 @@ function Public.draw_mothership(journey) | ||||
|         local position = area.left_top | ||||
|         local rectangle = | ||||
|             rendering.draw_rectangle { | ||||
|             width = 1, | ||||
|             filled = true, | ||||
|             surface = surface, | ||||
|             left_top = position, | ||||
|             right_bottom = {position.x + Constants.world_selector_width, position.y + Constants.world_selector_height}, | ||||
|             color = Constants.world_selector_colors[k], | ||||
|             draw_on_ground = true, | ||||
|             only_in_alt_mode = false | ||||
|         } | ||||
|                 width = 1, | ||||
|                 filled = true, | ||||
|                 surface = surface, | ||||
|                 left_top = position, | ||||
|                 right_bottom = { position.x + Constants.world_selector_width, position.y + Constants.world_selector_height }, | ||||
|                 color = Constants.world_selector_colors[k], | ||||
|                 draw_on_ground = true, | ||||
|                 only_in_alt_mode = false | ||||
|             } | ||||
|         table.insert(journey.world_selectors[k].rectangles, rectangle) | ||||
|         journey.world_selectors[k].border = | ||||
|             rendering.draw_rectangle { | ||||
|             width = 8, | ||||
|             filled = false, | ||||
|             surface = surface, | ||||
|             left_top = position, | ||||
|             right_bottom = {position.x + Constants.world_selector_width, position.y + Constants.world_selector_height}, | ||||
|             color = {r = 100, g = 100, b = 100, a = 255}, | ||||
|             draw_on_ground = true, | ||||
|             only_in_alt_mode = false | ||||
|         } | ||||
|                 width = 8, | ||||
|                 filled = false, | ||||
|                 surface = surface, | ||||
|                 left_top = position, | ||||
|                 right_bottom = { position.x + Constants.world_selector_width, position.y + Constants.world_selector_height }, | ||||
|                 color = { r = 100, g = 100, b = 100, a = 255 }, | ||||
|                 draw_on_ground = true, | ||||
|                 only_in_alt_mode = false | ||||
|             } | ||||
|     end | ||||
|  | ||||
|     journey.reroll_selector.rectangle = | ||||
|         rendering.draw_rectangle { | ||||
|         width = 8, | ||||
|         filled = true, | ||||
|         surface = surface, | ||||
|         left_top = Constants.reroll_selector_area.left_top, | ||||
|         right_bottom = Constants.reroll_selector_area.right_bottom, | ||||
|         color = Constants.reroll_selector_area_color, | ||||
|         draw_on_ground = true, | ||||
|         only_in_alt_mode = false | ||||
|     } | ||||
|             width = 8, | ||||
|             filled = true, | ||||
|             surface = surface, | ||||
|             left_top = Constants.reroll_selector_area.left_top, | ||||
|             right_bottom = Constants.reroll_selector_area.right_bottom, | ||||
|             color = Constants.reroll_selector_area_color, | ||||
|             draw_on_ground = true, | ||||
|             only_in_alt_mode = false | ||||
|         } | ||||
|     journey.reroll_selector.border = | ||||
|         rendering.draw_rectangle { | ||||
|         width = 8, | ||||
|         filled = false, | ||||
|         surface = surface, | ||||
|         left_top = Constants.reroll_selector_area.left_top, | ||||
|         right_bottom = Constants.reroll_selector_area.right_bottom, | ||||
|         color = {r = 100, g = 100, b = 100, a = 255}, | ||||
|         draw_on_ground = true, | ||||
|         only_in_alt_mode = false | ||||
|     } | ||||
|             width = 8, | ||||
|             filled = false, | ||||
|             surface = surface, | ||||
|             left_top = Constants.reroll_selector_area.left_top, | ||||
|             right_bottom = Constants.reroll_selector_area.right_bottom, | ||||
|             color = { r = 100, g = 100, b = 100, a = 255 }, | ||||
|             draw_on_ground = true, | ||||
|             only_in_alt_mode = false | ||||
|         } | ||||
|  | ||||
|     for k, item_name in pairs({'arithmetic-combinator', 'constant-combinator', 'decider-combinator', 'programmable-speaker', 'red-wire', 'green-wire', 'small-lamp', 'substation', 'pipe', 'gate', 'stone-wall', 'transport-belt'}) do | ||||
|         local chest = surface.create_entity({name = 'infinity-chest', position = {-7 + k, Constants.mothership_radius - 3}, force = 'player'}) | ||||
|         chest.set_infinity_container_filter(1, {name = item_name, count = game.item_prototypes[item_name].stack_size}) | ||||
|     for k, item_name in pairs({ 'arithmetic-combinator', 'constant-combinator', 'decider-combinator', 'programmable-speaker', 'red-wire', 'green-wire', 'small-lamp', 'substation', 'pipe', 'gate', 'stone-wall', 'transport-belt' }) do | ||||
|         local chest = surface.create_entity({ name = 'infinity-chest', position = { -7 + k, Constants.mothership_radius - 3 }, force = 'player' }) | ||||
|         chest.set_infinity_container_filter(1, { name = item_name, count = prototypes.item[item_name].stack_size }) | ||||
|         protect(chest, false) | ||||
|         local loader = surface.create_entity({name = 'express-loader', position = {-7 + k, Constants.mothership_radius - 4}, force = 'player'}) | ||||
|         local loader = surface.create_entity({ name = 'express-loader', position = { -7 + k, Constants.mothership_radius - 4 }, force = 'player' }) | ||||
|         protect(loader, true) | ||||
|         loader.direction = 4 | ||||
|     end | ||||
|  | ||||
|     for m = -1, 1, 2 do | ||||
|         local inter = surface.create_entity({name = 'electric-energy-interface', position = {11 * m, Constants.mothership_radius - 4}, force = 'player'}) | ||||
|         local inter = surface.create_entity({ name = 'electric-energy-interface', position = { 11 * m, Constants.mothership_radius - 4 }, force = 'player' }) | ||||
|         protect(inter, true) | ||||
|         local sub = surface.create_entity({name = 'substation', position = {9 * m, Constants.mothership_radius - 4}, force = 'player'}) | ||||
|         local sub = surface.create_entity({ name = 'substation', position = { 9 * m, Constants.mothership_radius - 4 }, force = 'player' }) | ||||
|         protect(sub, true) | ||||
|     end | ||||
|  | ||||
| @@ -715,21 +715,21 @@ function Public.draw_mothership(journey) | ||||
|             x = x - 1 | ||||
|         end | ||||
|         local y = Constants.mothership_radius * 0.5 - 7 | ||||
|         local turret = surface.create_entity({name = 'artillery-turret', position = {x * m, y}, force = 'player'}) | ||||
|         local turret = surface.create_entity({ name = 'artillery-turret', position = { x * m, y }, force = 'player' }) | ||||
|         turret.direction = 4 | ||||
|         protect(turret, false) | ||||
|         local ins = surface.create_entity({name = 'burner-inserter', position = {(x - 1) * m, y}, force = 'player'}) | ||||
|         local ins = surface.create_entity({ name = 'burner-inserter', position = { (x - 1) * m, y }, force = 'player' }) | ||||
|         ins.direction = 4 + m * 2 | ||||
|         ins.rotatable = false | ||||
|         protect(ins, false) | ||||
|         local chest = surface.create_entity({name = 'infinity-chest', position = {(x - 2) * m, y}, force = 'player'}) | ||||
|         chest.set_infinity_container_filter(1, {name = 'solid-fuel', count = 50}) | ||||
|         chest.set_infinity_container_filter(2, {name = 'artillery-shell', count = 1}) | ||||
|         local chest = surface.create_entity({ name = 'infinity-chest', position = { (x - 2) * m, y }, force = 'player' }) | ||||
|         chest.set_infinity_container_filter(1, { name = 'solid-fuel', count = 50 }) | ||||
|         chest.set_infinity_container_filter(2, { name = 'artillery-shell', count = 1 }) | ||||
|         protect(chest, false) | ||||
|     end | ||||
|  | ||||
|     for _ = 1, 3, 1 do | ||||
|         local comp = surface.create_entity({name = 'compilatron', position = Constants.mothership_teleporter_position, force = 'player'}) | ||||
|         local comp = surface.create_entity({ name = 'compilatron', position = Constants.mothership_teleporter_position, force = 'player' }) | ||||
|         comp.destructible = false | ||||
|     end | ||||
|     Public.draw_gui(journey) | ||||
| @@ -743,7 +743,7 @@ function Public.teleport_players_to_mothership(journey) | ||||
|     for _, player in pairs(game.connected_players) do | ||||
|         if player.surface.name ~= 'mothership' then | ||||
|             Public.clear_player(player) | ||||
|             player.teleport(surface.find_non_colliding_position('character', {0, 0}, 32, 0.5), surface) | ||||
|             player.teleport(surface.find_non_colliding_position('character', { 0, 0 }, 32, 0.5), surface) | ||||
|             journey.characters_in_mothership = journey.characters_in_mothership + 1 | ||||
|             table.insert(journey.mothership_messages, 'Welcome home ' .. player.name .. '!') | ||||
|             return | ||||
| @@ -767,12 +767,12 @@ function Public.set_minimum_to_vote(journey) | ||||
|     end | ||||
|     local surface = game.surfaces.mothership | ||||
|     if #game.connected_players <= journey.vote_minimum and surface and surface.daytime <= 0.5 then | ||||
|         table.insert(journey.mothership_messages, {'journey.message_min_players', journey.vote_minimum}) | ||||
|         table.insert(journey.mothership_messages, { 'journey.message_min_players', journey.vote_minimum }) | ||||
|     end | ||||
| end | ||||
|  | ||||
| local function get_activation_level(journey, surface, area) | ||||
|     local player_count_in_area = surface.count_entities_filtered({area = area, name = 'character'}) | ||||
|     local player_count_in_area = surface.count_entities_filtered({ area = area, name = 'character' }) | ||||
|     local player_count_for_max_activation = math.max(#game.connected_players, journey.vote_minimum) * (2 / 3) | ||||
|     local level = player_count_in_area / player_count_for_max_activation | ||||
|     level = math.round(level, 2) | ||||
| @@ -790,7 +790,7 @@ local function animate_selectors(journey) | ||||
|         end | ||||
|         for _, rectangle in pairs(world_selector.rectangles) do | ||||
|             local color = Constants.world_selector_colors[k] | ||||
|             rendering.set_color(rectangle, {r = color.r * activation_level, g = color.g * activation_level, b = color.b * activation_level, a = 255}) | ||||
|             rendering.set_color(rectangle, { r = color.r * activation_level, g = color.g * activation_level, b = color.b * activation_level, a = 255 }) | ||||
|         end | ||||
|     end | ||||
|     local activation_level = journey.reroll_selector.activation_level | ||||
| @@ -801,7 +801,7 @@ local function animate_selectors(journey) | ||||
|         activation_level = 1 | ||||
|     end | ||||
|     local color = Constants.reroll_selector_area_color | ||||
|     rendering.set_color(journey.reroll_selector.rectangle, {r = color.r * activation_level, g = color.g * activation_level, b = color.b * activation_level, a = 255}) | ||||
|     rendering.set_color(journey.reroll_selector.rectangle, { r = color.r * activation_level, g = color.g * activation_level, b = color.b * activation_level, a = 255 }) | ||||
| end | ||||
|  | ||||
| local function draw_background(journey, surface) | ||||
| @@ -811,23 +811,23 @@ local function draw_background(journey, surface) | ||||
|     local speed = journey.mothership_speed | ||||
|     for c = 1, 16 * speed, 1 do | ||||
|         local position = Constants.particle_spawn_vectors[math.random(1, Constants.size_of_particle_spawn_vectors)] | ||||
|         surface.create_entity({name = 'shotgun-pellet', position = position, target = {position[1], position[2] + Constants.mothership_radius * 2}, speed = speed}) | ||||
|         surface.create_entity({ name = 'shotgun-pellet', position = position, target = { position[1], position[2] + Constants.mothership_radius * 2 }, speed = speed }) | ||||
|     end | ||||
|     for c = 1, 16 * speed, 1 do | ||||
|         local position = Constants.particle_spawn_vectors[math.random(1, Constants.size_of_particle_spawn_vectors)] | ||||
|         surface.create_entity({name = 'piercing-shotgun-pellet', position = position, target = {position[1], position[2] + Constants.mothership_radius * 2}, speed = speed}) | ||||
|         surface.create_entity({ name = 'piercing-shotgun-pellet', position = position, target = { position[1], position[2] + Constants.mothership_radius * 2 }, speed = speed }) | ||||
|     end | ||||
|     for c = 1, 2 * speed, 1 do | ||||
|         local position = Constants.particle_spawn_vectors[math.random(1, Constants.size_of_particle_spawn_vectors)] | ||||
|         surface.create_entity({name = 'cannon-projectile', position = position, target = {position[1], position[2] + Constants.mothership_radius * 2}, speed = speed}) | ||||
|         surface.create_entity({ name = 'cannon-projectile', position = position, target = { position[1], position[2] + Constants.mothership_radius * 2 }, speed = speed }) | ||||
|     end | ||||
|     for c = 1, 1 * speed, 1 do | ||||
|         local position = Constants.particle_spawn_vectors[math.random(1, Constants.size_of_particle_spawn_vectors)] | ||||
|         surface.create_entity({name = 'uranium-cannon-projectile', position = position, target = {position[1], position[2] + Constants.mothership_radius * 2}, speed = speed}) | ||||
|         surface.create_entity({ name = 'uranium-cannon-projectile', position = position, target = { position[1], position[2] + Constants.mothership_radius * 2 }, speed = speed }) | ||||
|     end | ||||
|     if math.random(1, 32) == 1 then | ||||
|         local position = Constants.particle_spawn_vectors[math.random(1, Constants.size_of_particle_spawn_vectors)] | ||||
|         surface.create_entity({name = 'explosive-uranium-cannon-projectile', position = position, target = {position[1], position[2] + Constants.mothership_radius * 3}, speed = speed}) | ||||
|         surface.create_entity({ name = 'explosive-uranium-cannon-projectile', position = position, target = { position[1], position[2] + Constants.mothership_radius * 3 }, speed = speed }) | ||||
|     end | ||||
|     if math.random(1, 90) == 1 then | ||||
|         local position_x = math.random(64, 160) | ||||
| @@ -838,7 +838,7 @@ local function draw_background(journey, surface) | ||||
|         if math.random(1, 2) == 1 then | ||||
|             position_y = position_y * -1 | ||||
|         end | ||||
|         surface.create_entity({name = 'big-worm-turret', position = {position_x, position_y}, force = 'enemy'}) | ||||
|         surface.create_entity({ name = 'big-worm-turret', position = { position_x, position_y }, force = 'enemy' }) | ||||
|     end | ||||
| end | ||||
|  | ||||
| @@ -850,7 +850,7 @@ local function roll_bonus_goods(journey, trait, amount) | ||||
|             local loot_table = Constants.starter_goods_pool[key] | ||||
|             if #bonus_goods < (amount or 3) and math.random(numbers[1], numbers[2]) >= 1 then | ||||
|                 local item = loot_table[math.random(1, #loot_table)] | ||||
|                 bonus_goods[#bonus_goods + 1] = {item[1], math.random(item[2], item[3])} | ||||
|                 bonus_goods[#bonus_goods + 1] = { item[1], math.random(item[2], item[3]) } | ||||
|             end | ||||
|         end | ||||
|     end | ||||
| @@ -864,8 +864,8 @@ function Public.set_world_selectors(journey) | ||||
|         rendering.draw_text { | ||||
|             text = journey.mothership_cargo.satellite .. ' x ', | ||||
|             surface = surface, | ||||
|             target = {x, Constants.reroll_selector_area.left_top.y - 1.5}, | ||||
|             color = {255, 255, 255, 255}, | ||||
|             target = { x, Constants.reroll_selector_area.left_top.y - 1.5 }, | ||||
|             color = { 255, 255, 255, 255 }, | ||||
|             scale = 1.5, | ||||
|             font = 'default-large-bold', | ||||
|             alignment = 'center', | ||||
| @@ -876,7 +876,7 @@ function Public.set_world_selectors(journey) | ||||
|             surface = surface, | ||||
|             y_scale = 1.5, | ||||
|             x_scale = 1.5, | ||||
|             target = {x + 1.6, Constants.reroll_selector_area.left_top.y - 1} | ||||
|             target = { x + 1.6, Constants.reroll_selector_area.left_top.y - 1 } | ||||
|         } | ||||
|     } | ||||
|  | ||||
| @@ -905,8 +905,8 @@ function Public.set_world_selectors(journey) | ||||
|         local texts = world_selector.texts | ||||
|         local modifiers = world_selector.modifiers | ||||
|         local y_modifier = -11.3 | ||||
|         local limits = {6, Constants.unique_world_traits[world_selector.world_trait].mods} | ||||
|         local counts = {0, 0} | ||||
|         local limits = { 6, Constants.unique_world_traits[world_selector.world_trait].mods } | ||||
|         local counts = { 0, 0 } | ||||
|         local i = 1 | ||||
|         if journey.importing then | ||||
|             goto skip_reroll | ||||
| @@ -920,35 +920,35 @@ function Public.set_world_selectors(journey) | ||||
|                     --at max, so we lower it as a positive modifier | ||||
|                     v = math.floor(math.random(data.dmin, data.dmax) * -0.5) | ||||
|                     counts[2] = counts[2] + 1 | ||||
|                     modifiers[i] = {name = modifier, value = v, neg = false} | ||||
|                     modifiers[i] = { name = modifier, value = v, neg = false } | ||||
|                 elseif data.dmin < 0 and counts[1] < limits[1] then | ||||
|                     --at max, but it is good modifier, so lower it as negative modifier | ||||
|                     v = math.floor(math.random(data.dmin, data.dmax)) | ||||
|                     counts[1] = counts[1] + 1 | ||||
|                     modifiers[i] = {name = modifier, value = v, neg = true} | ||||
|                     modifiers[i] = { name = modifier, value = v, neg = true } | ||||
|                 end | ||||
|             elseif journey.world_modifiers[modifier] <= data.min then | ||||
|                 if data.dmin < 0 and counts[1] < limits[1] then | ||||
|                     --at min, but good to have it min, so we grow it as negative modifier | ||||
|                     v = math.floor(math.random(data.dmin, data.dmax)) | ||||
|                     counts[1] = counts[1] + 1 | ||||
|                     modifiers[i] = {name = modifier, value = v, neg = true} | ||||
|                     modifiers[i] = { name = modifier, value = v, neg = true } | ||||
|                 elseif data.dmin > 0 and counts[2] < limits[2] then | ||||
|                     --at min, but min is bad, so we grow it as positive modifier | ||||
|                     v = math.floor(math.random(data.dmin, data.dmax) * -0.5) | ||||
|                     counts[2] = counts[2] + 1 | ||||
|                     modifiers[i] = {name = modifier, value = v, neg = false} | ||||
|                     modifiers[i] = { name = modifier, value = v, neg = false } | ||||
|                 end | ||||
|             else | ||||
|                 --somewhere in middle, we first try to fill the positives then negatives. table is shuffled so it should be fine | ||||
|                 if counts[2] < limits[2] then | ||||
|                     v = math.floor(math.random(data.dmin, data.dmax) * -0.5) | ||||
|                     counts[2] = counts[2] + 1 | ||||
|                     modifiers[i] = {name = modifier, value = v, neg = false} | ||||
|                     modifiers[i] = { name = modifier, value = v, neg = false } | ||||
|                 elseif counts[1] < limits[1] then | ||||
|                     v = math.floor(math.random(data.dmin, data.dmax)) | ||||
|                     counts[1] = counts[1] + 1 | ||||
|                     modifiers[i] = {name = modifier, value = v, neg = true} | ||||
|                     modifiers[i] = { name = modifier, value = v, neg = true } | ||||
|                 end | ||||
|             end | ||||
|             i = i + 1 | ||||
| @@ -961,8 +961,8 @@ function Public.set_world_selectors(journey) | ||||
|             rendering.draw_text { | ||||
|                 text = Constants.unique_world_traits[world_selector.world_trait].name, | ||||
|                 surface = surface, | ||||
|                 target = {position.x + Constants.world_selector_width * 0.5, position.y + y_modifier}, | ||||
|                 color = {100, 0, 255, 255}, | ||||
|                 target = { position.x + Constants.world_selector_width * 0.5, position.y + y_modifier }, | ||||
|                 color = { 100, 0, 255, 255 }, | ||||
|                 scale = 1.25, | ||||
|                 font = 'default-large-bold', | ||||
|                 alignment = 'center', | ||||
| @@ -981,9 +981,9 @@ function Public.set_world_selectors(journey) | ||||
|  | ||||
|             local color | ||||
|             if modifier.neg then | ||||
|                 color = {200, 0, 0, 255} | ||||
|                 color = { 200, 0, 0, 255 } | ||||
|             else | ||||
|                 color = {0, 200, 0, 255} | ||||
|                 color = { 0, 200, 0, 255 } | ||||
|             end | ||||
|  | ||||
|             table.insert( | ||||
| @@ -991,7 +991,7 @@ function Public.set_world_selectors(journey) | ||||
|                 rendering.draw_text { | ||||
|                     text = text, | ||||
|                     surface = surface, | ||||
|                     target = {position.x + Constants.world_selector_width * 0.5, position.y + y_modifier}, | ||||
|                     target = { position.x + Constants.world_selector_width * 0.5, position.y + y_modifier }, | ||||
|                     color = color, | ||||
|                     scale = 1.25, | ||||
|                     font = 'default-large', | ||||
| @@ -1007,8 +1007,8 @@ function Public.set_world_selectors(journey) | ||||
|             rendering.draw_text { | ||||
|                 text = 'Fuel requirement +' .. world_selector.fuel_requirement, | ||||
|                 surface = surface, | ||||
|                 target = {position.x + Constants.world_selector_width * 0.5, position.y + y_modifier}, | ||||
|                 color = {155, 155, 0, 255}, | ||||
|                 target = { position.x + Constants.world_selector_width * 0.5, position.y + y_modifier }, | ||||
|                 color = { 155, 155, 0, 255 }, | ||||
|                 scale = 1.25, | ||||
|                 font = 'default-large', | ||||
|                 alignment = 'center', | ||||
| @@ -1020,7 +1020,7 @@ function Public.set_world_selectors(journey) | ||||
|             rendering.draw_sprite { | ||||
|                 sprite = 'item/uranium-fuel-cell', | ||||
|                 surface = surface, | ||||
|                 target = {position.x + Constants.world_selector_width * 0.5 + 3.7, position.y + y_modifier + 0.5} | ||||
|                 target = { position.x + Constants.world_selector_width * 0.5 + 3.7, position.y + y_modifier + 0.5 } | ||||
|             } | ||||
|         ) | ||||
|  | ||||
| @@ -1030,15 +1030,15 @@ function Public.set_world_selectors(journey) | ||||
|         for k2, good in pairs(world_selector.bonus_goods) do | ||||
|             local render_id = | ||||
|                 rendering.draw_text { | ||||
|                 text = '+' .. good[2], | ||||
|                 surface = surface, | ||||
|                 target = {position.x + x_modifier, position.y + y_modifier}, | ||||
|                 color = {200, 200, 0, 255}, | ||||
|                 scale = 1.25, | ||||
|                 font = 'default-large', | ||||
|                 alignment = 'center', | ||||
|                 scale_with_zoom = false | ||||
|             } | ||||
|                     text = '+' .. good[2], | ||||
|                     surface = surface, | ||||
|                     target = { position.x + x_modifier, position.y + y_modifier }, | ||||
|                     color = { 200, 200, 0, 255 }, | ||||
|                     scale = 1.25, | ||||
|                     font = 'default-large', | ||||
|                     alignment = 'center', | ||||
|                     scale_with_zoom = false | ||||
|                 } | ||||
|             table.insert(texts, render_id) | ||||
|  | ||||
|             x_modifier = x_modifier + 0.95 | ||||
| @@ -1051,10 +1051,10 @@ function Public.set_world_selectors(journey) | ||||
|  | ||||
|             local render_id = | ||||
|                 rendering.draw_sprite { | ||||
|                 sprite = 'item/' .. good[1], | ||||
|                 surface = surface, | ||||
|                 target = {position.x + x_modifier, position.y + 0.5 + y_modifier} | ||||
|             } | ||||
|                     sprite = 'item/' .. good[1], | ||||
|                     surface = surface, | ||||
|                     target = { position.x + x_modifier, position.y + 0.5 + y_modifier } | ||||
|                 } | ||||
|             table.insert(texts, render_id) | ||||
|  | ||||
|             x_modifier = x_modifier + 1.70 | ||||
| @@ -1271,7 +1271,7 @@ function Public.create_the_world(journey) | ||||
|     for _, modifier in pairs(modifiers) do | ||||
|         local m = (100 + modifier.value) * 0.01 | ||||
|         local name = modifier.name | ||||
|         local extremes = {Constants.modifiers[name].min, Constants.modifiers[name].max} | ||||
|         local extremes = { Constants.modifiers[name].min, Constants.modifiers[name].max } | ||||
|         journey.world_modifiers[name] = math.round(math.min(extremes[2], math.max(extremes[1], journey.world_modifiers[name] * m)) * 100000, 5) / 100000 | ||||
|     end | ||||
|     surface.map_gen_settings = mgs | ||||
| @@ -1307,7 +1307,7 @@ function Public.create_the_world(journey) | ||||
|     end | ||||
|     journey.goods_to_dispatch = {} | ||||
|     for k, v in pairs(journey.bonus_goods) do | ||||
|         table.insert(journey.goods_to_dispatch, {k, v}) | ||||
|         table.insert(journey.goods_to_dispatch, { k, v }) | ||||
|     end | ||||
|     table.shuffle_table(journey.goods_to_dispatch) | ||||
|     Public.update_tooltips(journey) | ||||
| @@ -1388,7 +1388,7 @@ end | ||||
|  | ||||
| function Public.place_teleporter_into_world(journey) | ||||
|     local surface = game.surfaces.nauvis | ||||
|     surface.request_to_generate_chunks({x = 0, y = 0}, 3) | ||||
|     surface.request_to_generate_chunks({ x = 0, y = 0 }, 3) | ||||
|     surface.force_generate_chunk_requests() | ||||
|     place_teleporter(journey, surface, Constants.mothership_teleporter_position, true) | ||||
|     journey.game_state = 'make_it_night' | ||||
| @@ -1439,7 +1439,7 @@ function Public.dispatch_goods(journey) | ||||
|  | ||||
|     if journey.dispatch_beacon_position then | ||||
|         local good = goods_to_dispatch[journey.dispatch_key] | ||||
|         surface.spill_item_stack(journey.dispatch_beacon_position, {name = good[1], count = good[2]}, true, nil, false) | ||||
|         surface.spill_item_stack(journey.dispatch_beacon_position, { name = good[1], count = good[2] }, true, nil, false) | ||||
|         table.remove(journey.goods_to_dispatch, journey.dispatch_key) | ||||
|         journey.dispatch_beacon = nil | ||||
|         journey.dispatch_beacon_position = nil | ||||
| @@ -1452,15 +1452,15 @@ function Public.dispatch_goods(journey) | ||||
|         return | ||||
|     end | ||||
|  | ||||
|     local position = {x = chunk.x * 32 + math.random(0, 31), y = chunk.y * 32 + math.random(0, 31)} | ||||
|     local position = { x = chunk.x * 32 + math.random(0, 31), y = chunk.y * 32 + math.random(0, 31) } | ||||
|     position = surface.find_non_colliding_position('rocket-silo', position, 32, 1) | ||||
|     if not position then | ||||
|         return | ||||
|     end | ||||
|  | ||||
|     journey.dispatch_beacon = surface.create_entity({name = 'stone-wall', position = position, force = 'neutral'}) | ||||
|     journey.dispatch_beacon = surface.create_entity({ name = 'stone-wall', position = position, force = 'neutral' }) | ||||
|     journey.dispatch_beacon.minable = false | ||||
|     journey.dispatch_beacon_position = {x = position.x, y = position.y} | ||||
|     journey.dispatch_beacon_position = { x = position.x, y = position.y } | ||||
|     journey.dispatch_key = math.random(1, size_of_goods_to_dispatch) | ||||
|  | ||||
|     local good = goods_to_dispatch[journey.dispatch_key] | ||||
| @@ -1469,7 +1469,7 @@ function Public.dispatch_goods(journey) | ||||
|         Server.to_discord_embed('A capsule containing ' .. good[2] .. 'x ' .. good[1] .. ' was spotted at: x=' .. position.x .. ', y=' .. position.y .. '!') | ||||
|     end | ||||
|  | ||||
|     surface.create_entity({name = 'artillery-projectile', position = {x = position.x - 256 + math.random(0, 512), y = position.y - 256}, target = position, speed = 0.2}) | ||||
|     surface.create_entity({ name = 'artillery-projectile', position = { x = position.x - 256 + math.random(0, 512), y = position.y - 256 }, target = position, speed = 0.2 }) | ||||
| end | ||||
|  | ||||
| function Public.world(journey) | ||||
| @@ -1486,7 +1486,7 @@ function Public.world(journey) | ||||
|         local time = math.round(journey.speedrun.time / 6) / 10 | ||||
|         if journey.mothership_cargo[item] and journey.mothership_cargo[item] >= journey.mothership_cargo_space[item] then | ||||
|             local amount = 6 | ||||
|             local brackets = {120, 120, 240, 480, 960, 1920} | ||||
|             local brackets = { 120, 120, 240, 480, 960, 1920 } | ||||
|             local timer = time | ||||
|             for i = 1, 6, 1 do | ||||
|                 if timer >= brackets[i] then | ||||
| @@ -1496,8 +1496,8 @@ function Public.world(journey) | ||||
|                     break | ||||
|                 end | ||||
|             end | ||||
|             table.insert(journey.mothership_messages, {'journey.message_delivery_done', item, time, amount}) | ||||
|             Server.to_discord_embed({'journey.message_delivery_done', item, time, amount}, true) | ||||
|             table.insert(journey.mothership_messages, { 'journey.message_delivery_done', item, time, amount }) | ||||
|             Server.to_discord_embed({ 'journey.message_delivery_done', item, time, amount }, true) | ||||
|             local bonus_goods = roll_bonus_goods(journey, 'resupply_station', amount) | ||||
|             for _, good in pairs(bonus_goods) do | ||||
|                 if journey.bonus_goods[good[1]] then | ||||
| @@ -1505,7 +1505,7 @@ function Public.world(journey) | ||||
|                 else | ||||
|                     journey.bonus_goods[good[1]] = good[2] | ||||
|                 end | ||||
|                 table.insert(journey.mothership_messages, {'journey.message_delivered', good[1], good[2]}) | ||||
|                 table.insert(journey.mothership_messages, { 'journey.message_delivered', good[1], good[2] }) | ||||
|             end | ||||
|             Public.update_tooltips(journey) | ||||
|             journey.speedrun.enabled = false | ||||
| @@ -1515,7 +1515,7 @@ function Public.world(journey) | ||||
|             time = math.round(journey.speedrun.time / 6) / 10 | ||||
|             local speedgoal = journey.mothership_cargo_space[item] or 1 | ||||
|             local value = (journey.mothership_cargo[item] or 0) / speedgoal | ||||
|             cargo_gui('journey_delivery', item, {'journey.tooltip_delivery', journey.mothership_cargo[item] or 0, speedgoal, time}, value) | ||||
|             cargo_gui('journey_delivery', item, { 'journey.tooltip_delivery', journey.mothership_cargo[item] or 0, speedgoal, time }, value) | ||||
|         end | ||||
|     end | ||||
|  | ||||
| @@ -1533,9 +1533,9 @@ function Public.world(journey) | ||||
|             local name = slot.name | ||||
|             local count = slot.count | ||||
|             local needs = (journey.mothership_cargo_space[name] or 0) - (journey.mothership_cargo[name] or 0) | ||||
|             if needs > 0 and count >= math.min(game.item_prototypes[name].stack_size, needs) then | ||||
|             if needs > 0 and count >= math.min(prototypes.item[name].stack_size, needs) then | ||||
|                 if silo.launch_rocket() then | ||||
|                     table.insert(journey.mothership_messages, {'journey.message_rocket_launched', count, name, silo.position.x, silo.position.y}) | ||||
|                     table.insert(journey.mothership_messages, { 'journey.message_rocket_launched', count, name, silo.position.x, silo.position.y }) | ||||
|                 end | ||||
|             end | ||||
|         end | ||||
| @@ -1571,7 +1571,7 @@ function Public.teleporters(journey, player) | ||||
|     if tile.name ~= Constants.teleporter_tile and tile.hidden_tile ~= Constants.teleporter_tile then | ||||
|         return | ||||
|     end | ||||
|     local base_position = {0, 0} | ||||
|     local base_position = { 0, 0 } | ||||
|     if surface.index == 1 then | ||||
|         drop_player_items(journey, player) | ||||
|         local position = game.surfaces.mothership.find_non_colliding_position('character', base_position, 32, 0.5) | ||||
| @@ -1603,7 +1603,7 @@ function Public.deal_damage_to_beacon(journey, incoming_damage) | ||||
|     end | ||||
|     local resistance = journey.beacon_objective_resistance | ||||
|     journey.beacon_objective_health = math.floor(journey.beacon_objective_health - (incoming_damage * (1 - resistance))) | ||||
|     rendering.set_text(journey.beacon_objective_hp_label, {'journey.beacon_hp', journey.beacon_objective_health}) | ||||
|     rendering.set_text(journey.beacon_objective_hp_label, { 'journey.beacon_hp', journey.beacon_objective_health }) | ||||
|     if journey.beacon_objective_health < 5000 and game.tick > journey.mothership_messages_last_damage + 900 then --under 50%, once every 15 seconds max | ||||
|         table.insert(journey.mothership_messages, 'The personal teleporter is being damaged, preparing for emergency departure.') | ||||
|         journey.mothership_messages_last_damage = game.tick | ||||
| @@ -1633,10 +1633,10 @@ function Public.lure_biters(journey, position) | ||||
|     end | ||||
|     local beacon = journey.beacon_objective | ||||
|     local surface = beacon.surface | ||||
|     local biters = surface.find_entities_filtered {position = position or beacon.position, radius = 80, force = 'enemy', type = 'unit'} | ||||
|     local biters = surface.find_entities_filtered { position = position or beacon.position, radius = 80, force = 'enemy', type = 'unit' } | ||||
|     if #biters > 0 then | ||||
|         for _, biter in pairs(biters) do | ||||
|             biter.set_command({type = defines.command.attack_area, destination = beacon.position, radius = 10, distraction = defines.distraction.by_anything}) | ||||
|             biter.set_command({ type = defines.command.attack_area, destination = beacon.position, radius = 10, distraction = defines.distraction.by_anything }) | ||||
|         end | ||||
|     end | ||||
|     --return (#biters or 0) | ||||
|   | ||||
| @@ -6,7 +6,7 @@ local math_random = math.random | ||||
| local math_abs = math.abs | ||||
| local math_floor = math.floor | ||||
| local math_sqrt = math.sqrt | ||||
| local rock_raffle = {'sand-rock-big', 'sand-rock-big', 'rock-big', 'rock-big', 'rock-big', 'rock-big', 'rock-big', 'rock-big', 'rock-big', 'rock-huge'} | ||||
| local rock_raffle = { 'sand-rock-big', 'sand-rock-big', 'rock-big', 'rock-big', 'rock-big', 'rock-big', 'rock-big', 'rock-big', 'rock-big', 'rock-huge' } | ||||
| local size_of_rock_raffle = #rock_raffle | ||||
| local ore_raffle = {} | ||||
| for i = 1, 25, 1 do | ||||
| @@ -73,24 +73,24 @@ local Public = {} | ||||
| Public.lush = {} | ||||
|  | ||||
| Public.eternal_day = { | ||||
|     on_world_start = function(journey) | ||||
|     on_world_start = function (journey) | ||||
|         game.surfaces.nauvis.daytime = 0 | ||||
|         game.surfaces.nauvis.freeze_daytime = true | ||||
|     end, | ||||
|     clear = function(journey) | ||||
|     clear = function (journey) | ||||
|         local surface = game.surfaces.nauvis | ||||
|         surface.freeze_daytime = false | ||||
|     end | ||||
| } | ||||
|  | ||||
| Public.eternal_night = { | ||||
|     on_world_start = function(journey) | ||||
|     on_world_start = function (journey) | ||||
|         local surface = game.surfaces.nauvis | ||||
|         surface.daytime = 0.44 | ||||
|         surface.freeze_daytime = true | ||||
|         surface.solar_power_multiplier = 5 | ||||
|     end, | ||||
|     clear = function(journey) | ||||
|     clear = function (journey) | ||||
|         local surface = game.surfaces.nauvis | ||||
|         surface.freeze_daytime = false | ||||
|         surface.solar_power_multiplier = 1 | ||||
| @@ -98,25 +98,25 @@ Public.eternal_night = { | ||||
| } | ||||
|  | ||||
| Public.pitch_black = { | ||||
|     on_world_start = function(journey) | ||||
|     on_world_start = function (journey) | ||||
|         local surface = game.surfaces.nauvis | ||||
|         surface.daytime = 0.44 | ||||
|         surface.freeze_daytime = true | ||||
|         surface.solar_power_multiplier = 3 | ||||
|         surface.min_brightness = 0 | ||||
|         surface.brightness_visual_weights = {0.8, 0.8, 0.8, 1} | ||||
|         surface.brightness_visual_weights = { 0.8, 0.8, 0.8, 1 } | ||||
|     end, | ||||
|     clear = function(journey) | ||||
|     clear = function (journey) | ||||
|         local surface = game.surfaces.nauvis | ||||
|         surface.freeze_daytime = false | ||||
|         surface.solar_power_multiplier = 1 | ||||
|         surface.min_brightness = 0.15 | ||||
|         surface.brightness_visual_weights = {0, 0, 0, 1} | ||||
|         surface.brightness_visual_weights = { 0, 0, 0, 1 } | ||||
|     end | ||||
| } | ||||
|  | ||||
| Public.matter_anomaly = { | ||||
|     on_world_start = function(journey) | ||||
|     on_world_start = function (journey) | ||||
|         local force = game.forces.player | ||||
|         for i = 1, 4, 1 do | ||||
|             force.technologies['mining-productivity-' .. i].researched = true | ||||
| @@ -125,7 +125,7 @@ Public.matter_anomaly = { | ||||
|             force.technologies['mining-productivity-4'].researched = true | ||||
|         end | ||||
|     end, | ||||
|     on_robot_built_entity = function(event) | ||||
|     on_robot_built_entity = function (event) | ||||
|         local entity = event.created_entity | ||||
|         if not entity.valid then | ||||
|             return | ||||
| @@ -137,7 +137,7 @@ Public.matter_anomaly = { | ||||
|             entity.die() | ||||
|         end | ||||
|     end, | ||||
|     on_built_entity = function(event) | ||||
|     on_built_entity = function (event) | ||||
|         local entity = event.created_entity | ||||
|         if not entity.valid then | ||||
|             return | ||||
| @@ -152,7 +152,7 @@ Public.matter_anomaly = { | ||||
| } | ||||
|  | ||||
| Public.quantum_anomaly = { | ||||
|     on_world_start = function(journey) | ||||
|     on_world_start = function (journey) | ||||
|         local force = game.forces.player | ||||
|         for i = 1, 6, 1 do | ||||
|             force.technologies['research-speed-' .. i].researched = true | ||||
| @@ -162,11 +162,11 @@ Public.quantum_anomaly = { | ||||
| } | ||||
|  | ||||
| Public.mountainous = { | ||||
|     on_world_start = function(journey) | ||||
|     on_world_start = function (journey) | ||||
|         local force = game.forces.player | ||||
|         force.character_loot_pickup_distance_bonus = 2 | ||||
|     end, | ||||
|     on_player_mined_entity = function(event) | ||||
|     on_player_mined_entity = function (event) | ||||
|         local entity = event.entity | ||||
|         if not entity.valid then | ||||
|             return | ||||
| @@ -180,10 +180,10 @@ Public.mountainous = { | ||||
|         local count = math_floor(math_sqrt(entity.position.x ^ 2 + entity.position.y ^ 2) * 0.05) + math_random(25, 75) | ||||
|         local ore_amount = math_floor(count * 0.85) | ||||
|         local stone_amount = math_floor(count * 0.15) | ||||
|         surface.spill_item_stack(entity.position, {name = ore, count = ore_amount}, true) | ||||
|         surface.spill_item_stack(entity.position, {name = 'stone', count = stone_amount}, true) | ||||
|         surface.spill_item_stack(entity.position, { name = ore, count = ore_amount }, true) | ||||
|         surface.spill_item_stack(entity.position, { name = 'stone', count = stone_amount }, true) | ||||
|     end, | ||||
|     on_chunk_generated = function(event, journey) | ||||
|     on_chunk_generated = function (event, journey) | ||||
|         local surface = event.surface | ||||
|         local seed = surface.map_gen_settings.seed | ||||
|         local left_top_x = event.area.left_top.x | ||||
| @@ -193,11 +193,11 @@ Public.mountainous = { | ||||
|         for x = 0, 31, 1 do | ||||
|             for y = 0, 31, 1 do | ||||
|                 if math_random(1, 3) ~= 1 then | ||||
|                     position = {x = left_top_x + x, y = left_top_y + y} | ||||
|                     if surface.can_place_entity({name = 'coal', position = position}) then | ||||
|                     position = { x = left_top_x + x, y = left_top_y + y } | ||||
|                     if surface.can_place_entity({ name = 'coal', position = position }) then | ||||
|                         noise = math_abs(Get_noise('scrapyard', position, seed)) | ||||
|                         if noise < 0.025 or noise > 0.50 then | ||||
|                             surface.create_entity({name = rock_raffle[math_random(1, size_of_rock_raffle)], position = position}) | ||||
|                             surface.create_entity({ name = rock_raffle[math_random(1, size_of_rock_raffle)], position = position }) | ||||
|                         end | ||||
|                     end | ||||
|                 end | ||||
| @@ -207,7 +207,7 @@ Public.mountainous = { | ||||
| } | ||||
|  | ||||
| Public.replicant_fauna = { | ||||
|     on_entity_died = function(event) | ||||
|     on_entity_died = function (event) | ||||
|         local entity = event.entity | ||||
|         if not entity.valid then | ||||
|             return | ||||
| @@ -220,13 +220,13 @@ Public.replicant_fauna = { | ||||
|             return | ||||
|         end | ||||
|         if cause.force.index == 2 then | ||||
|             cause.surface.create_entity({name = BiterRaffle.roll('mixed', game.forces.enemy.evolution_factor), position = entity.position, force = 'enemy'}) | ||||
|             cause.surface.create_entity({ name = BiterRaffle.roll('mixed', game.forces.enemy.evolution_factor), position = entity.position, force = 'enemy' }) | ||||
|         end | ||||
|     end | ||||
| } | ||||
|  | ||||
| Public.tarball = { | ||||
|     on_robot_built_entity = function(event) | ||||
|     on_robot_built_entity = function (event) | ||||
|         local entity = event.created_entity | ||||
|         if not entity.valid then | ||||
|             return | ||||
| @@ -239,7 +239,7 @@ Public.tarball = { | ||||
|         end | ||||
|         entity.minable = false | ||||
|     end, | ||||
|     on_built_entity = function(event) | ||||
|     on_built_entity = function (event) | ||||
|         local entity = event.created_entity | ||||
|         if not entity.valid then | ||||
|             return | ||||
| @@ -252,7 +252,7 @@ Public.tarball = { | ||||
|         end | ||||
|         entity.minable = false | ||||
|     end, | ||||
|     on_chunk_generated = function(event, journey) | ||||
|     on_chunk_generated = function (event, journey) | ||||
|         table.insert( | ||||
|             journey.world_color_filters, | ||||
|             rendering.draw_sprite( | ||||
| @@ -262,13 +262,13 @@ Public.tarball = { | ||||
|                     y_scale = 32, | ||||
|                     target = event.area.left_top, | ||||
|                     surface = event.surface, | ||||
|                     tint = {r = 0.0, g = 0.0, b = 0.0, a = 0.45}, | ||||
|                     tint = { r = 0.0, g = 0.0, b = 0.0, a = 0.45 }, | ||||
|                     render_layer = 'ground' | ||||
|                 } | ||||
|             ) | ||||
|         ) | ||||
|     end, | ||||
|     clear = function(journey) | ||||
|     clear = function (journey) | ||||
|         for _, id in pairs(journey.world_color_filters) do | ||||
|             rendering.destroy(id) | ||||
|         end | ||||
| @@ -277,26 +277,26 @@ Public.tarball = { | ||||
| } | ||||
|  | ||||
| Public.swamps = { | ||||
|     set_specials = function(journey) | ||||
|     set_specials = function (journey) | ||||
|         journey.world_specials['water'] = 2 | ||||
|     end, | ||||
|     on_chunk_generated = function(event, journey) | ||||
|     on_chunk_generated = function (event, journey) | ||||
|         local surface = event.surface | ||||
|         local seed = surface.map_gen_settings.seed | ||||
|         local left_top_x = event.area.left_top.x | ||||
|         local left_top_y = event.area.left_top.y | ||||
|  | ||||
|         local tiles = {} | ||||
|         for _, tile in pairs(surface.find_tiles_filtered({name = {'water', 'deepwater'}, area = event.area})) do | ||||
|             table.insert(tiles, {name = 'water-shallow', position = tile.position}) | ||||
|         for _, tile in pairs(surface.find_tiles_filtered({ name = { 'water', 'deepwater' }, area = event.area })) do | ||||
|             table.insert(tiles, { name = 'water-shallow', position = tile.position }) | ||||
|         end | ||||
|  | ||||
|         for x = 0, 31, 1 do | ||||
|             for y = 0, 31, 1 do | ||||
|                 local position = {x = left_top_x + x, y = left_top_y + y} | ||||
|                 local position = { x = left_top_x + x, y = left_top_y + y } | ||||
|                 local noise = Get_noise('journey_swamps', position, seed) | ||||
|                 if noise > 0.45 or noise < -0.65 then | ||||
|                     table.insert(tiles, {name = 'water-shallow', position = {x = position.x, y = position.y}}) | ||||
|                     table.insert(tiles, { name = 'water-shallow', position = { x = position.x, y = position.y } }) | ||||
|                 end | ||||
|             end | ||||
|         end | ||||
| @@ -304,23 +304,23 @@ Public.swamps = { | ||||
|  | ||||
|         for _, tile in pairs(tiles) do | ||||
|             if math_random(1, 32) == 1 then | ||||
|                 surface.create_entity({name = 'fish', position = tile.position}) | ||||
|                 surface.create_entity({ name = 'fish', position = tile.position }) | ||||
|             end | ||||
|         end | ||||
|     end | ||||
| } | ||||
|  | ||||
| Public.wasteland = { | ||||
|     on_chunk_generated = function(event, journey) | ||||
|     on_chunk_generated = function (event, journey) | ||||
|         local surface = event.surface | ||||
|         local left_top_x = event.area.left_top.x | ||||
|         local left_top_y = event.area.left_top.y | ||||
|         local tiles = {} | ||||
|         for _, tile in pairs(surface.find_tiles_filtered({name = {'water'}, area = event.area})) do | ||||
|             table.insert(tiles, {name = 'water-green', position = tile.position}) | ||||
|         for _, tile in pairs(surface.find_tiles_filtered({ name = { 'water' }, area = event.area })) do | ||||
|             table.insert(tiles, { name = 'water-green', position = tile.position }) | ||||
|         end | ||||
|         for _, tile in pairs(surface.find_tiles_filtered({name = {'deepwater'}, area = event.area})) do | ||||
|             table.insert(tiles, {name = 'deepwater-green', position = tile.position}) | ||||
|         for _, tile in pairs(surface.find_tiles_filtered({ name = { 'deepwater' }, area = event.area })) do | ||||
|             table.insert(tiles, { name = 'deepwater-green', position = tile.position }) | ||||
|         end | ||||
|         surface.set_tiles(tiles, true, false, false, false) | ||||
|         if math_random(1, 3) ~= 1 then | ||||
| @@ -328,11 +328,11 @@ Public.wasteland = { | ||||
|         end | ||||
|         for _ = 1, math_random(0, 5), 1 do | ||||
|             local name = wrecks[math_random(1, size_of_wrecks)] | ||||
|             local position = surface.find_non_colliding_position(name, {left_top_x + math_random(0, 31), left_top_y + math_random(0, 31)}, 16, 1) | ||||
|             local position = surface.find_non_colliding_position(name, { left_top_x + math_random(0, 31), left_top_y + math_random(0, 31) }, 16, 1) | ||||
|             if position then | ||||
|                 local e = surface.create_entity({name = name, position = position, force = 'neutral'}) | ||||
|                 local e = surface.create_entity({ name = name, position = position, force = 'neutral' }) | ||||
|                 if math_random(1, 4) == 1 then | ||||
|                     local slots = game.entity_prototypes[e.name].get_inventory_size(defines.inventory.chest) | ||||
|                     local slots = prototypes.entity[e.name].get_inventory_size(defines.inventory.chest) | ||||
|                     local blacklist = LootRaffle.get_tech_blacklist(0.2) | ||||
|                     local item_stacks = LootRaffle.roll(math_random(16, 64), slots, blacklist) | ||||
|                     for _, item_stack in pairs(item_stacks) do | ||||
| @@ -342,7 +342,7 @@ Public.wasteland = { | ||||
|             end | ||||
|         end | ||||
|     end, | ||||
|     on_world_start = function(journey) | ||||
|     on_world_start = function (journey) | ||||
|         local surface = game.surfaces.nauvis | ||||
|         local mgs = surface.map_gen_settings | ||||
|         mgs.terrain_segmentation = 2.7 | ||||
| @@ -350,7 +350,7 @@ Public.wasteland = { | ||||
|         surface.map_gen_settings = mgs | ||||
|         surface.clear(true) | ||||
|     end, | ||||
|     clear = function(journey) | ||||
|     clear = function (journey) | ||||
|         local surface = game.surfaces.nauvis | ||||
|         local mgs = surface.map_gen_settings | ||||
|         mgs.water = mgs.water - 1 | ||||
| @@ -359,7 +359,7 @@ Public.wasteland = { | ||||
| } | ||||
|  | ||||
| Public.oceanic = { | ||||
|     on_world_start = function(journey) | ||||
|     on_world_start = function (journey) | ||||
|         local surface = game.surfaces.nauvis | ||||
|         local mgs = surface.map_gen_settings | ||||
|         mgs.terrain_segmentation = 0.5 | ||||
| @@ -367,7 +367,7 @@ Public.oceanic = { | ||||
|         surface.map_gen_settings = mgs | ||||
|         surface.clear(true) | ||||
|     end, | ||||
|     on_robot_built_entity = function(event) | ||||
|     on_robot_built_entity = function (event) | ||||
|         local entity = event.created_entity | ||||
|         if not entity.valid then | ||||
|             return | ||||
| @@ -379,7 +379,7 @@ Public.oceanic = { | ||||
|             entity.die() | ||||
|         end | ||||
|     end, | ||||
|     on_built_entity = function(event) | ||||
|     on_built_entity = function (event) | ||||
|         local entity = event.created_entity | ||||
|         if not entity.valid then | ||||
|             return | ||||
| @@ -391,7 +391,7 @@ Public.oceanic = { | ||||
|             entity.die() | ||||
|         end | ||||
|     end, | ||||
|     clear = function(journey) | ||||
|     clear = function (journey) | ||||
|         local surface = game.surfaces.nauvis | ||||
|         local mgs = surface.map_gen_settings | ||||
|         mgs.water = mgs.water - 6 | ||||
| @@ -400,7 +400,7 @@ Public.oceanic = { | ||||
| } | ||||
|  | ||||
| Public.volcanic = { | ||||
|     on_chunk_generated = function(event, journey) | ||||
|     on_chunk_generated = function (event, journey) | ||||
|         table.insert( | ||||
|             journey.world_color_filters, | ||||
|             rendering.draw_sprite( | ||||
| @@ -410,13 +410,13 @@ Public.volcanic = { | ||||
|                     y_scale = 32, | ||||
|                     target = event.area.left_top, | ||||
|                     surface = event.surface, | ||||
|                     tint = {r = 0.55, g = 0.0, b = 0.0, a = 0.25}, | ||||
|                     tint = { r = 0.55, g = 0.0, b = 0.0, a = 0.25 }, | ||||
|                     render_layer = 'ground' | ||||
|                 } | ||||
|             ) | ||||
|         ) | ||||
|     end, | ||||
|     on_player_changed_position = function(event) | ||||
|     on_player_changed_position = function (event) | ||||
|         local player = game.players[event.player_index] | ||||
|         if player.driving then | ||||
|             return | ||||
| @@ -428,22 +428,22 @@ Public.volcanic = { | ||||
|         if solid_tiles[surface.get_tile(player.position).name] then | ||||
|             return | ||||
|         end | ||||
|         surface.create_entity({name = 'fire-flame', position = player.position}) | ||||
|         surface.create_entity({ name = 'fire-flame', position = player.position }) | ||||
|     end, | ||||
|     on_world_start = function(journey) | ||||
|     on_world_start = function (journey) | ||||
|         local surface = game.surfaces.nauvis | ||||
|         surface.request_to_generate_chunks({x = 0, y = 0}, 3) | ||||
|         surface.request_to_generate_chunks({ x = 0, y = 0 }, 3) | ||||
|         surface.force_generate_chunk_requests() | ||||
|         surface.spill_item_stack({0, 0}, {name = 'stone-brick', count = 4096}, true) | ||||
|         surface.spill_item_stack({ 0, 0 }, { name = 'stone-brick', count = 4096 }, true) | ||||
|         for x = -24, 24, 1 do | ||||
|             for y = -24, 24, 1 do | ||||
|                 if math.sqrt(x ^ 2 + y ^ 2) < 24 then | ||||
|                     surface.set_tiles({{name = 'stone-path', position = {x, y}}}, true) | ||||
|                     surface.set_tiles({ { name = 'stone-path', position = { x, y } } }, true) | ||||
|                 end | ||||
|             end | ||||
|         end | ||||
|     end, | ||||
|     clear = function(journey) | ||||
|     clear = function (journey) | ||||
|         for _, id in pairs(journey.world_color_filters) do | ||||
|             rendering.destroy(id) | ||||
|         end | ||||
| @@ -452,17 +452,17 @@ Public.volcanic = { | ||||
| } | ||||
|  | ||||
| Public.chaotic_resources = { | ||||
|     on_chunk_generated = function(event, journey) | ||||
|     on_chunk_generated = function (event, journey) | ||||
|         local surface = event.surface | ||||
|         for _, ore in pairs(surface.find_entities_filtered({area = event.area, name = {'iron-ore', 'copper-ore', 'coal', 'stone'}})) do | ||||
|             surface.create_entity({name = ore_raffle_2[math_random(1, size_of_ore_raffle_2)], position = ore.position, amount = ore.amount}) | ||||
|         for _, ore in pairs(surface.find_entities_filtered({ area = event.area, name = { 'iron-ore', 'copper-ore', 'coal', 'stone' } })) do | ||||
|             surface.create_entity({ name = ore_raffle_2[math_random(1, size_of_ore_raffle_2)], position = ore.position, amount = ore.amount }) | ||||
|             ore.destroy() | ||||
|         end | ||||
|     end | ||||
| } | ||||
|  | ||||
| Public.infested = { | ||||
|     on_chunk_generated = function(event, journey) | ||||
|     on_chunk_generated = function (event, journey) | ||||
|         table.insert( | ||||
|             journey.world_color_filters, | ||||
|             rendering.draw_sprite( | ||||
| @@ -472,24 +472,24 @@ Public.infested = { | ||||
|                     y_scale = 32, | ||||
|                     target = event.area.left_top, | ||||
|                     surface = event.surface, | ||||
|                     tint = {r = 0.8, g = 0.0, b = 0.8, a = 0.25}, | ||||
|                     tint = { r = 0.8, g = 0.0, b = 0.8, a = 0.25 }, | ||||
|                     render_layer = 'ground' | ||||
|                 } | ||||
|             ) | ||||
|         ) | ||||
|     end, | ||||
|     set_specials = function(journey) | ||||
|     set_specials = function (journey) | ||||
|         journey.world_specials['trees_size'] = 4 | ||||
|         journey.world_specials['trees_richness'] = 2 | ||||
|         journey.world_specials['trees_frequency'] = 2 | ||||
|     end, | ||||
|     clear = function(journey) | ||||
|     clear = function (journey) | ||||
|         for _, id in pairs(journey.world_color_filters) do | ||||
|             rendering.destroy(id) | ||||
|         end | ||||
|         journey.world_color_filters = {} | ||||
|     end, | ||||
|     on_entity_died = function(event) | ||||
|     on_entity_died = function (event) | ||||
|         local entity = event.entity | ||||
|         if not entity.valid then | ||||
|             return | ||||
| @@ -500,9 +500,9 @@ Public.infested = { | ||||
|         if entity.type ~= 'simple-entity' and entity.type ~= 'tree' then | ||||
|             return | ||||
|         end | ||||
|         entity.surface.create_entity({name = BiterRaffle.roll('mixed', game.forces.enemy.evolution_factor + 0.1), position = entity.position, force = 'enemy'}) | ||||
|         entity.surface.create_entity({ name = BiterRaffle.roll('mixed', game.forces.enemy.evolution_factor + 0.1), position = entity.position, force = 'enemy' }) | ||||
|     end, | ||||
|     on_player_mined_entity = function(event) | ||||
|     on_player_mined_entity = function (event) | ||||
|         if math_random(1, 2) == 1 then | ||||
|             return | ||||
|         end | ||||
| @@ -516,9 +516,9 @@ Public.infested = { | ||||
|         if entity.type ~= 'simple-entity' and entity.type ~= 'tree' then | ||||
|             return | ||||
|         end | ||||
|         entity.surface.create_entity({name = BiterRaffle.roll('mixed', game.forces.enemy.evolution_factor + 0.1), position = entity.position, force = 'enemy'}) | ||||
|         entity.surface.create_entity({ name = BiterRaffle.roll('mixed', game.forces.enemy.evolution_factor + 0.1), position = entity.position, force = 'enemy' }) | ||||
|     end, | ||||
|     on_robot_mined_entity = function(event) | ||||
|     on_robot_mined_entity = function (event) | ||||
|         local entity = event.entity | ||||
|         if not entity.valid then | ||||
|             return | ||||
| @@ -529,12 +529,12 @@ Public.infested = { | ||||
|         if entity.type ~= 'simple-entity' and entity.type ~= 'tree' then | ||||
|             return | ||||
|         end | ||||
|         entity.surface.create_entity({name = BiterRaffle.roll('mixed', game.forces.enemy.evolution_factor + 0.1), position = entity.position, force = 'enemy'}) | ||||
|         entity.surface.create_entity({ name = BiterRaffle.roll('mixed', game.forces.enemy.evolution_factor + 0.1), position = entity.position, force = 'enemy' }) | ||||
|     end | ||||
| } | ||||
|  | ||||
| Public.undead_plague = { | ||||
|     on_entity_died = function(event) | ||||
|     on_entity_died = function (event) | ||||
|         local entity = event.entity | ||||
|         if not entity.valid then | ||||
|             return | ||||
| @@ -548,12 +548,12 @@ Public.undead_plague = { | ||||
|         if entity.type ~= 'unit' then | ||||
|             return | ||||
|         end | ||||
|         entity.surface.create_entity({name = entity.name, position = entity.position, force = 'enemy'}) | ||||
|         entity.surface.create_entity({ name = entity.name, position = entity.position, force = 'enemy' }) | ||||
|     end | ||||
| } | ||||
|  | ||||
| Public.low_mass = { | ||||
|     on_world_start = function(journey) | ||||
|     on_world_start = function (journey) | ||||
|         local force = game.forces.player | ||||
|         force.character_running_speed_modifier = 0.5 | ||||
|         for i = 1, 6, 1 do | ||||
| @@ -563,7 +563,7 @@ Public.low_mass = { | ||||
| } | ||||
|  | ||||
| Public.dense_atmosphere = { | ||||
|     on_robot_built_entity = function(event) | ||||
|     on_robot_built_entity = function (event) | ||||
|         local entity = event.created_entity | ||||
|         if not entity.valid then | ||||
|             return | ||||
| @@ -575,7 +575,7 @@ Public.dense_atmosphere = { | ||||
|             entity.die() | ||||
|         end | ||||
|     end, | ||||
|     on_built_entity = function(event) | ||||
|     on_built_entity = function (event) | ||||
|         local entity = event.created_entity | ||||
|         if not entity.valid then | ||||
|             return | ||||
| @@ -599,7 +599,7 @@ local function update_lazy_bastard(journey, count) | ||||
| end | ||||
|  | ||||
| Public.lazy_bastard = { | ||||
|     on_robot_built_entity = function(event, journey) | ||||
|     on_robot_built_entity = function (event, journey) | ||||
|         local entity = event.created_entity | ||||
|         if not entity.valid then | ||||
|             return | ||||
| @@ -611,7 +611,7 @@ Public.lazy_bastard = { | ||||
|             update_lazy_bastard(journey, 1) | ||||
|         end | ||||
|     end, | ||||
|     on_built_entity = function(event, journey) | ||||
|     on_built_entity = function (event, journey) | ||||
|         local entity = event.created_entity | ||||
|         if not entity.valid then | ||||
|             return | ||||
| @@ -623,7 +623,7 @@ Public.lazy_bastard = { | ||||
|             update_lazy_bastard(journey, 1) | ||||
|         end | ||||
|     end, | ||||
|     on_entity_died = function(event, journey) | ||||
|     on_entity_died = function (event, journey) | ||||
|         local entity = event.entity | ||||
|         if not entity.valid then | ||||
|             return | ||||
| @@ -635,7 +635,7 @@ Public.lazy_bastard = { | ||||
|             update_lazy_bastard(journey, -1) | ||||
|         end | ||||
|     end, | ||||
|     on_player_mined_entity = function(event, journey) | ||||
|     on_player_mined_entity = function (event, journey) | ||||
|         local entity = event.entity | ||||
|         if not entity.valid then | ||||
|             return | ||||
| @@ -647,7 +647,7 @@ Public.lazy_bastard = { | ||||
|             update_lazy_bastard(journey, -1) | ||||
|         end | ||||
|     end, | ||||
|     on_robot_mined_entity = function(event, journey) | ||||
|     on_robot_mined_entity = function (event, journey) | ||||
|         local entity = event.entity | ||||
|         if not entity.valid then | ||||
|             return | ||||
| @@ -659,37 +659,37 @@ Public.lazy_bastard = { | ||||
|             update_lazy_bastard(journey, -1) | ||||
|         end | ||||
|     end, | ||||
|     on_world_start = function(journey) | ||||
|     on_world_start = function (journey) | ||||
|         journey.lazy_bastard_machines = 0 | ||||
|     end, | ||||
|     clear = function(journey) | ||||
|     clear = function (journey) | ||||
|         game.forces.player.manual_crafting_speed_modifier = 0 | ||||
|     end | ||||
| } | ||||
|  | ||||
| Public.ribbon = { | ||||
|     on_chunk_generated = function(event, journey) | ||||
|     on_chunk_generated = function (event, journey) | ||||
|         local surface = event.surface | ||||
|         local left_top_x = event.area.left_top.x | ||||
|         local left_top_y = event.area.left_top.y | ||||
|         if (left_top_x + left_top_y) ^ 2 <= 256 then | ||||
|             local oils = surface.count_entities_filtered {name = 'crude-oil', position = {x = 0, y = 0}, radius = 256} | ||||
|             local oils = surface.count_entities_filtered { name = 'crude-oil', position = { x = 0, y = 0 }, radius = 256 } | ||||
|             if math.random(1, 10 + oils * 10) == 1 then | ||||
|                 local pos = surface.find_non_colliding_position_in_box('oil-refinery', event.area, 0.1, true) | ||||
|                 if pos then | ||||
|                     surface.create_entity({name = 'crude-oil', position = pos, amount = 60000}) | ||||
|                     surface.create_entity({ name = 'crude-oil', position = pos, amount = 60000 }) | ||||
|                 end | ||||
|             end | ||||
|         end | ||||
|     end, | ||||
|     on_world_start = function(journey) | ||||
|     on_world_start = function (journey) | ||||
|         local surface = game.surfaces.nauvis | ||||
|         local mgs = surface.map_gen_settings | ||||
|         mgs.height = 256 | ||||
|         surface.map_gen_settings = mgs | ||||
|         surface.clear(true) | ||||
|     end, | ||||
|     clear = function(journey) | ||||
|     clear = function (journey) | ||||
|         local surface = game.surfaces.nauvis | ||||
|         local mgs = surface.map_gen_settings | ||||
|         mgs.height = nil | ||||
| @@ -698,18 +698,18 @@ Public.ribbon = { | ||||
| } | ||||
|  | ||||
| Public.abandoned_library = { | ||||
|     on_world_start = function(journey) | ||||
|     on_world_start = function (journey) | ||||
|         game.permissions.get_group('Default').set_allows_action(defines.input_action.open_blueprint_library_gui, false) | ||||
|         game.permissions.get_group('Default').set_allows_action(defines.input_action.import_blueprint_string, false) | ||||
|     end, | ||||
|     clear = function(journey) | ||||
|     clear = function (journey) | ||||
|         game.permissions.get_group('Default').set_allows_action(defines.input_action.open_blueprint_library_gui, true) | ||||
|         game.permissions.get_group('Default').set_allows_action(defines.input_action.import_blueprint_string, true) | ||||
|     end | ||||
| } | ||||
|  | ||||
| Public.railworld = { | ||||
|     set_specials = function(journey) | ||||
|     set_specials = function (journey) | ||||
|         journey.world_specials['ore_size'] = 4 | ||||
|         journey.world_specials['ore_frequency'] = 0.25 | ||||
|         journey.world_specials['coal'] = 4 | ||||
| @@ -738,12 +738,12 @@ local delivery_options = { | ||||
| } | ||||
|  | ||||
| Public.resupply_station = { | ||||
|     on_world_start = function(journey) | ||||
|     on_world_start = function (journey) | ||||
|         local pick = delivery_options[math.random(1, #delivery_options)] | ||||
|         journey.speedrun = {enabled = true, time = 0, item = pick} | ||||
|         journey.mothership_cargo_space[pick] = game.item_prototypes[pick].stack_size | ||||
|         journey.speedrun = { enabled = true, time = 0, item = pick } | ||||
|         journey.mothership_cargo_space[pick] = prototypes.item[pick].stack_size | ||||
|     end, | ||||
|     clear = function(journey) | ||||
|     clear = function (journey) | ||||
|         journey.mothership_cargo_space[journey.speedrun.item] = nil | ||||
|         journey.mothership_cargo[journey.speedrun.item] = 0 | ||||
|         journey.speedrun.enabled = false | ||||
| @@ -751,17 +751,17 @@ Public.resupply_station = { | ||||
| } | ||||
|  | ||||
| Public.crazy_science = { | ||||
|     set_specials = function(journey) | ||||
|     set_specials = function (journey) | ||||
|         journey.world_specials['technology_price_multiplier'] = 50 | ||||
|         journey.world_specials['starting_area'] = 3 | ||||
|         journey.world_specials['copper-ore'] = 2 | ||||
|         journey.world_specials['iron-ore'] = 4 | ||||
|     end, | ||||
|     on_world_start = function(journey) | ||||
|     on_world_start = function (journey) | ||||
|         game.forces.player.laboratory_productivity_bonus = 5 | ||||
|         game.forces.player.laboratory_speed_modifier = 10 | ||||
|     end, | ||||
|     on_research_finished = function(event, journey) | ||||
|     on_research_finished = function (event, journey) | ||||
|         local name = 'technology_price_multiplier' | ||||
|         local force = event.research.force | ||||
|         journey.world_specials[name] = math.max(0.1, journey.world_specials[name] * 0.95) | ||||
|   | ||||
| @@ -451,7 +451,7 @@ local function on_chunk_charted(event) | ||||
|     storage.chunks_charted[tostring(position.x) .. tostring(position.y)] = true | ||||
|  | ||||
|     local decorative_names = {} | ||||
|     for k, v in pairs(game.decorative_prototypes) do | ||||
|     for k, v in pairs(prototypes.decorative) do | ||||
|         if v.autoplace_specification then | ||||
|             decorative_names[#decorative_names + 1] = k | ||||
|         end | ||||
|   | ||||
| @@ -337,8 +337,8 @@ local function process_mirror_surface(event) | ||||
|     end | ||||
|  | ||||
|     for _, entity in pairs(entities) do | ||||
|         if entity_functions[game.entity_prototypes[entity.name].type] then | ||||
|             entity_functions[game.entity_prototypes[entity.name].type](surface, entity) | ||||
|         if entity_functions[prototypes.entity[entity.name].type] then | ||||
|             entity_functions[prototypes.entity[entity.name].type](surface, entity) | ||||
|         else | ||||
|             if surface.can_place_entity(entity) then | ||||
|                 surface.create_entity(entity) | ||||
|   | ||||
| @@ -270,7 +270,7 @@ local function grow_cell(chunk_position, surface) -- luacheck: ignore | ||||
|     end | ||||
|  | ||||
|     local tree_raffle = {} | ||||
|     for _, e in pairs(game.entity_prototypes) do | ||||
|     for _, e in pairs(prototypes.entity) do | ||||
|         if e.type == 'tree' then | ||||
|             table.insert(tree_raffle, e.name) | ||||
|         end | ||||
| @@ -293,7 +293,7 @@ local function grow_cell(chunk_position, surface) -- luacheck: ignore | ||||
|         'splitter', | ||||
|         'straight-rail' | ||||
|     } | ||||
|     for _, e in pairs(game.entity_prototypes) do | ||||
|     for _, e in pairs(prototypes.entity) do | ||||
|         for _, t in pairs(types) do | ||||
|             if e.type == t then | ||||
|                 table.insert(allied_entity_raffle, e.name) | ||||
| @@ -586,7 +586,7 @@ local function grow_cell(chunk_position, surface) -- luacheck: ignore | ||||
|         surface.set_tiles(tiles, true) | ||||
|  | ||||
|         local decorative_names = {} | ||||
|         for k, v in pairs(game.decorative_prototypes) do | ||||
|         for k, v in pairs(prototypes.decorative) do | ||||
|             if v.autoplace_specification then | ||||
|                 decorative_names[#decorative_names + 1] = k | ||||
|             end | ||||
| @@ -706,135 +706,135 @@ local function treasure_chest(position, surface) | ||||
|     local math_random = math.random | ||||
|     local chest_raffle = {} | ||||
|     local chest_loot = { | ||||
|         { { name = 'submachine-gun', count = math_random(1, 3) },                 weight = 3,  evolution_min = 0.0, evolution_max = 0.1 }, | ||||
|         { { name = 'slowdown-capsule', count = math_random(16, 32) },             weight = 1,  evolution_min = 0.0, evolution_max = 1 }, | ||||
|         { { name = 'poison-capsule', count = math_random(16, 32) },               weight = 3,  evolution_min = 0.3, evolution_max = 1 }, | ||||
|         { { name = 'uranium-cannon-shell', count = math_random(16, 32) },         weight = 5,  evolution_min = 0.6, evolution_max = 1 }, | ||||
|         { { name = 'cannon-shell', count = math_random(16, 32) },                 weight = 5,  evolution_min = 0.4, evolution_max = 0.7 }, | ||||
|         { { name = 'explosive-uranium-cannon-shell', count = math_random(16, 32) }, weight = 5, evolution_min = 0.6, evolution_max = 1 }, | ||||
|         { { name = 'explosive-cannon-shell', count = math_random(16, 32) },       weight = 5,  evolution_min = 0.4, evolution_max = 0.8 }, | ||||
|         { { name = 'shotgun', count = 1 },                                        weight = 2,  evolution_min = 0.0, evolution_max = 0.2 }, | ||||
|         { { name = 'shotgun-shell', count = math_random(16, 32) },                weight = 5,  evolution_min = 0.0, evolution_max = 0.2 }, | ||||
|         { { name = 'combat-shotgun', count = 1 },                                 weight = 10, evolution_min = 0.3, evolution_max = 0.8 }, | ||||
|         { { name = 'piercing-shotgun-shell', count = math_random(16, 32) },       weight = 10, evolution_min = 0.2, evolution_max = 1 }, | ||||
|         { { name = 'flamethrower', count = 1 },                                   weight = 3,  evolution_min = 0.3, evolution_max = 0.6 }, | ||||
|         { { name = 'flamethrower-ammo', count = math_random(16, 32) },            weight = 5,  evolution_min = 0.3, evolution_max = 1 }, | ||||
|         { { name = 'rocket-launcher', count = 1 },                                weight = 5,  evolution_min = 0.2, evolution_max = 0.6 }, | ||||
|         { { name = 'rocket', count = math_random(16, 32) },                       weight = 10, evolution_min = 0.2, evolution_max = 0.7 }, | ||||
|         { { name = 'explosive-rocket', count = math_random(16, 32) },             weight = 10, evolution_min = 0.3, evolution_max = 1 }, | ||||
|         { { name = 'land-mine', count = math_random(16, 32) },                    weight = 10, evolution_min = 0.2, evolution_max = 0.7 }, | ||||
|         { { name = 'grenade', count = math_random(16, 32) },                      weight = 10, evolution_min = 0.0, evolution_max = 0.5 }, | ||||
|         { { name = 'cluster-grenade', count = math_random(16, 32) },              weight = 5,  evolution_min = 0.4, evolution_max = 1 }, | ||||
|         { { name = 'firearm-magazine', count = math_random(32, 128) },            weight = 10, evolution_min = 0,   evolution_max = 0.3 }, | ||||
|         { { name = 'piercing-rounds-magazine', count = math_random(32, 128) },    weight = 10, evolution_min = 0.1, evolution_max = 0.8 }, | ||||
|         { { name = 'uranium-rounds-magazine', count = math_random(32, 128) },     weight = 10, evolution_min = 0.5, evolution_max = 1 }, | ||||
|         { { name = 'defender-capsule', count = math_random(8, 16) },              weight = 10, evolution_min = 0.0, evolution_max = 0.7 }, | ||||
|         { { name = 'distractor-capsule', count = math_random(8, 16) },            weight = 10, evolution_min = 0.2, evolution_max = 1 }, | ||||
|         { { name = 'destroyer-capsule', count = math_random(8, 16) },             weight = 10, evolution_min = 0.3, evolution_max = 1 }, | ||||
|         { { name = 'atomic-bomb', count = math_random(8, 16) },                   weight = 1,  evolution_min = 0.3, evolution_max = 1 }, | ||||
|         { { name = 'light-armor', count = 1 },                                    weight = 3,  evolution_min = 0,   evolution_max = 0.1 }, | ||||
|         { { name = 'heavy-armor', count = 1 },                                    weight = 3,  evolution_min = 0.1, evolution_max = 0.3 }, | ||||
|         { { name = 'modular-armor', count = 1 },                                  weight = 2,  evolution_min = 0.2, evolution_max = 0.6 }, | ||||
|         { { name = 'power-armor', count = 1 },                                    weight = 2,  evolution_min = 0.4, evolution_max = 1 }, | ||||
|         { { name = 'power-armor-mk2', count = 1 },                                weight = 1,  evolution_min = 0.8, evolution_max = 1 }, | ||||
|         { { name = 'battery-equipment', count = 1 },                              weight = 2,  evolution_min = 0.3, evolution_max = 0.7 }, | ||||
|         { { name = 'battery-mk2-equipment', count = 1 },                          weight = 2,  evolution_min = 0.6, evolution_max = 1 }, | ||||
|         { { name = 'belt-immunity-equipment', count = 1 },                        weight = 1,  evolution_min = 0.3, evolution_max = 1 }, | ||||
|         { { name = 'solar-panel-equipment', count = math_random(1, 4) },          weight = 5,  evolution_min = 0.3, evolution_max = 0.8 }, | ||||
|         { { name = 'discharge-defense-equipment', count = 1 },                    weight = 1,  evolution_min = 0.5, evolution_max = 0.8 }, | ||||
|         { { name = 'energy-shield-equipment', count = math_random(1, 2) },        weight = 2,  evolution_min = 0.3, evolution_max = 0.8 }, | ||||
|         { { name = 'energy-shield-mk2-equipment', count = 1 },                    weight = 2,  evolution_min = 0.7, evolution_max = 1 }, | ||||
|         { { name = 'exoskeleton-equipment', count = 1 },                          weight = 1,  evolution_min = 0.3, evolution_max = 1 }, | ||||
|         { { name = 'fusion-reactor-equipment', count = 1 },                       weight = 1,  evolution_min = 0.5, evolution_max = 1 }, | ||||
|         { { name = 'night-vision-equipment', count = 1 },                         weight = 1,  evolution_min = 0.3, evolution_max = 0.8 }, | ||||
|         { { name = 'personal-laser-defense-equipment', count = 1 },               weight = 2,  evolution_min = 0.4, evolution_max = 1 }, | ||||
|         { { name = 'exoskeleton-equipment', count = 1 },                          weight = 1,  evolution_min = 0.3, evolution_max = 1 }, | ||||
|         { { name = 'iron-gear-wheel', count = math_random(80, 100) },             weight = 3,  evolution_min = 0.0, evolution_max = 0.3 }, | ||||
|         { { name = 'copper-cable', count = math_random(100, 200) },               weight = 3,  evolution_min = 0.0, evolution_max = 0.3 }, | ||||
|         { { name = 'engine-unit', count = math_random(16, 32) },                  weight = 2,  evolution_min = 0.1, evolution_max = 0.5 }, | ||||
|         { { name = 'electric-engine-unit', count = math_random(16, 32) },         weight = 2,  evolution_min = 0.4, evolution_max = 0.8 }, | ||||
|         { { name = 'battery', count = math_random(100, 200) },                    weight = 2,  evolution_min = 0.3, evolution_max = 0.8 }, | ||||
|         { { name = 'advanced-circuit', count = math_random(100, 200) },           weight = 3,  evolution_min = 0.4, evolution_max = 1 }, | ||||
|         { { name = 'electronic-circuit', count = math_random(100, 200) },         weight = 3,  evolution_min = 0.0, evolution_max = 0.4 }, | ||||
|         { { name = 'processing-unit', count = math_random(100, 200) },            weight = 3,  evolution_min = 0.7, evolution_max = 1 }, | ||||
|         { { name = 'explosives', count = math_random(25, 50) },                   weight = 1,  evolution_min = 0.2, evolution_max = 0.6 }, | ||||
|         { { name = 'lubricant-barrel', count = math_random(4, 10) },              weight = 1,  evolution_min = 0.3, evolution_max = 0.5 }, | ||||
|         { { name = 'rocket-fuel', count = math_random(4, 10) },                   weight = 2,  evolution_min = 0.3, evolution_max = 0.7 }, | ||||
|         { { name = 'player-port', count = 1 },                                    weight = 1,  evolution_min = 0.2, evolution_max = 1 }, | ||||
|         { { name = 'steel-plate', count = math_random(50, 100) },                 weight = 2,  evolution_min = 0.1, evolution_max = 0.3 }, | ||||
|         { { name = 'nuclear-fuel', count = 1 },                                   weight = 2,  evolution_min = 0.7, evolution_max = 1 }, | ||||
|         { { name = 'burner-inserter', count = math_random(8, 16) },               weight = 3,  evolution_min = 0.0, evolution_max = 0.1 }, | ||||
|         { { name = 'inserter', count = math_random(8, 16) },                      weight = 3,  evolution_min = 0.0, evolution_max = 0.4 }, | ||||
|         { { name = 'long-handed-inserter', count = math_random(8, 16) },          weight = 3,  evolution_min = 0.0, evolution_max = 0.4 }, | ||||
|         { { name = 'fast-inserter', count = math_random(8, 16) },                 weight = 3,  evolution_min = 0.1, evolution_max = 1 }, | ||||
|         { { name = 'filter-inserter', count = math_random(8, 16) },               weight = 1,  evolution_min = 0.2, evolution_max = 1 }, | ||||
|         { { name = 'stack-filter-inserter', count = math_random(4, 8) },          weight = 1,  evolution_min = 0.4, evolution_max = 1 }, | ||||
|         { { name = 'stack-inserter', count = math_random(4, 8) },                 weight = 3,  evolution_min = 0.3, evolution_max = 1 }, | ||||
|         { { name = 'small-electric-pole', count = math_random(16, 32) },          weight = 3,  evolution_min = 0.0, evolution_max = 0.3 }, | ||||
|         { { name = 'medium-electric-pole', count = math_random(8, 16) },          weight = 3,  evolution_min = 0.2, evolution_max = 1 }, | ||||
|         { { name = 'big-electric-pole', count = math_random(8, 16) },             weight = 3,  evolution_min = 0.3, evolution_max = 1 }, | ||||
|         { { name = 'substation', count = math_random(2, 4) },                     weight = 3,  evolution_min = 0.5, evolution_max = 1 }, | ||||
|         { { name = 'wooden-chest', count = math_random(25, 50) },                 weight = 3,  evolution_min = 0.0, evolution_max = 0.2 }, | ||||
|         { { name = 'iron-chest', count = math_random(4, 8) },                     weight = 3,  evolution_min = 0.1, evolution_max = 0.4 }, | ||||
|         { { name = 'steel-chest', count = math_random(4, 8) },                    weight = 3,  evolution_min = 0.3, evolution_max = 1 }, | ||||
|         { { name = 'small-lamp', count = math_random(8, 16) },                    weight = 3,  evolution_min = 0.1, evolution_max = 0.3 }, | ||||
|         { { name = 'rail', count = math_random(50, 75) },                         weight = 3,  evolution_min = 0.1, evolution_max = 0.6 }, | ||||
|         { { name = 'assembling-machine-1', count = math_random(2, 4) },           weight = 3,  evolution_min = 0.0, evolution_max = 0.3 }, | ||||
|         { { name = 'assembling-machine-2', count = math_random(2, 4) },           weight = 3,  evolution_min = 0.2, evolution_max = 0.8 }, | ||||
|         { { name = 'assembling-machine-3', count = math_random(2, 4) },           weight = 3,  evolution_min = 0.5, evolution_max = 1 }, | ||||
|         { { name = 'accumulator', count = math_random(4, 8) },                    weight = 3,  evolution_min = 0.4, evolution_max = 1 }, | ||||
|         { { name = 'offshore-pump', count = math_random(1, 2) },                  weight = 2,  evolution_min = 0.0, evolution_max = 0.1 }, | ||||
|         { { name = 'beacon', count = math_random(1, 2) },                         weight = 3,  evolution_min = 0.7, evolution_max = 1 }, | ||||
|         { { name = 'boiler', count = math_random(2, 4) },                         weight = 3,  evolution_min = 0.0, evolution_max = 0.3 }, | ||||
|         { { name = 'steam-engine', count = math_random(2, 4) },                   weight = 3,  evolution_min = 0.0, evolution_max = 0.5 }, | ||||
|         { { name = 'steam-turbine', count = math_random(1, 2) },                  weight = 2,  evolution_min = 0.5, evolution_max = 1 }, | ||||
|         { { name = 'submachine-gun', count = math_random(1, 3) },                   weight = 3,  evolution_min = 0.0, evolution_max = 0.1 }, | ||||
|         { { name = 'slowdown-capsule', count = math_random(16, 32) },               weight = 1,  evolution_min = 0.0, evolution_max = 1 }, | ||||
|         { { name = 'poison-capsule', count = math_random(16, 32) },                 weight = 3,  evolution_min = 0.3, evolution_max = 1 }, | ||||
|         { { name = 'uranium-cannon-shell', count = math_random(16, 32) },           weight = 5,  evolution_min = 0.6, evolution_max = 1 }, | ||||
|         { { name = 'cannon-shell', count = math_random(16, 32) },                   weight = 5,  evolution_min = 0.4, evolution_max = 0.7 }, | ||||
|         { { name = 'explosive-uranium-cannon-shell', count = math_random(16, 32) }, weight = 5,  evolution_min = 0.6, evolution_max = 1 }, | ||||
|         { { name = 'explosive-cannon-shell', count = math_random(16, 32) },         weight = 5,  evolution_min = 0.4, evolution_max = 0.8 }, | ||||
|         { { name = 'shotgun', count = 1 },                                          weight = 2,  evolution_min = 0.0, evolution_max = 0.2 }, | ||||
|         { { name = 'shotgun-shell', count = math_random(16, 32) },                  weight = 5,  evolution_min = 0.0, evolution_max = 0.2 }, | ||||
|         { { name = 'combat-shotgun', count = 1 },                                   weight = 10, evolution_min = 0.3, evolution_max = 0.8 }, | ||||
|         { { name = 'piercing-shotgun-shell', count = math_random(16, 32) },         weight = 10, evolution_min = 0.2, evolution_max = 1 }, | ||||
|         { { name = 'flamethrower', count = 1 },                                     weight = 3,  evolution_min = 0.3, evolution_max = 0.6 }, | ||||
|         { { name = 'flamethrower-ammo', count = math_random(16, 32) },              weight = 5,  evolution_min = 0.3, evolution_max = 1 }, | ||||
|         { { name = 'rocket-launcher', count = 1 },                                  weight = 5,  evolution_min = 0.2, evolution_max = 0.6 }, | ||||
|         { { name = 'rocket', count = math_random(16, 32) },                         weight = 10, evolution_min = 0.2, evolution_max = 0.7 }, | ||||
|         { { name = 'explosive-rocket', count = math_random(16, 32) },               weight = 10, evolution_min = 0.3, evolution_max = 1 }, | ||||
|         { { name = 'land-mine', count = math_random(16, 32) },                      weight = 10, evolution_min = 0.2, evolution_max = 0.7 }, | ||||
|         { { name = 'grenade', count = math_random(16, 32) },                        weight = 10, evolution_min = 0.0, evolution_max = 0.5 }, | ||||
|         { { name = 'cluster-grenade', count = math_random(16, 32) },                weight = 5,  evolution_min = 0.4, evolution_max = 1 }, | ||||
|         { { name = 'firearm-magazine', count = math_random(32, 128) },              weight = 10, evolution_min = 0,   evolution_max = 0.3 }, | ||||
|         { { name = 'piercing-rounds-magazine', count = math_random(32, 128) },      weight = 10, evolution_min = 0.1, evolution_max = 0.8 }, | ||||
|         { { name = 'uranium-rounds-magazine', count = math_random(32, 128) },       weight = 10, evolution_min = 0.5, evolution_max = 1 }, | ||||
|         { { name = 'defender-capsule', count = math_random(8, 16) },                weight = 10, evolution_min = 0.0, evolution_max = 0.7 }, | ||||
|         { { name = 'distractor-capsule', count = math_random(8, 16) },              weight = 10, evolution_min = 0.2, evolution_max = 1 }, | ||||
|         { { name = 'destroyer-capsule', count = math_random(8, 16) },               weight = 10, evolution_min = 0.3, evolution_max = 1 }, | ||||
|         { { name = 'atomic-bomb', count = math_random(8, 16) },                     weight = 1,  evolution_min = 0.3, evolution_max = 1 }, | ||||
|         { { name = 'light-armor', count = 1 },                                      weight = 3,  evolution_min = 0,   evolution_max = 0.1 }, | ||||
|         { { name = 'heavy-armor', count = 1 },                                      weight = 3,  evolution_min = 0.1, evolution_max = 0.3 }, | ||||
|         { { name = 'modular-armor', count = 1 },                                    weight = 2,  evolution_min = 0.2, evolution_max = 0.6 }, | ||||
|         { { name = 'power-armor', count = 1 },                                      weight = 2,  evolution_min = 0.4, evolution_max = 1 }, | ||||
|         { { name = 'power-armor-mk2', count = 1 },                                  weight = 1,  evolution_min = 0.8, evolution_max = 1 }, | ||||
|         { { name = 'battery-equipment', count = 1 },                                weight = 2,  evolution_min = 0.3, evolution_max = 0.7 }, | ||||
|         { { name = 'battery-mk2-equipment', count = 1 },                            weight = 2,  evolution_min = 0.6, evolution_max = 1 }, | ||||
|         { { name = 'belt-immunity-equipment', count = 1 },                          weight = 1,  evolution_min = 0.3, evolution_max = 1 }, | ||||
|         { { name = 'solar-panel-equipment', count = math_random(1, 4) },            weight = 5,  evolution_min = 0.3, evolution_max = 0.8 }, | ||||
|         { { name = 'discharge-defense-equipment', count = 1 },                      weight = 1,  evolution_min = 0.5, evolution_max = 0.8 }, | ||||
|         { { name = 'energy-shield-equipment', count = math_random(1, 2) },          weight = 2,  evolution_min = 0.3, evolution_max = 0.8 }, | ||||
|         { { name = 'energy-shield-mk2-equipment', count = 1 },                      weight = 2,  evolution_min = 0.7, evolution_max = 1 }, | ||||
|         { { name = 'exoskeleton-equipment', count = 1 },                            weight = 1,  evolution_min = 0.3, evolution_max = 1 }, | ||||
|         { { name = 'fusion-reactor-equipment', count = 1 },                         weight = 1,  evolution_min = 0.5, evolution_max = 1 }, | ||||
|         { { name = 'night-vision-equipment', count = 1 },                           weight = 1,  evolution_min = 0.3, evolution_max = 0.8 }, | ||||
|         { { name = 'personal-laser-defense-equipment', count = 1 },                 weight = 2,  evolution_min = 0.4, evolution_max = 1 }, | ||||
|         { { name = 'exoskeleton-equipment', count = 1 },                            weight = 1,  evolution_min = 0.3, evolution_max = 1 }, | ||||
|         { { name = 'iron-gear-wheel', count = math_random(80, 100) },               weight = 3,  evolution_min = 0.0, evolution_max = 0.3 }, | ||||
|         { { name = 'copper-cable', count = math_random(100, 200) },                 weight = 3,  evolution_min = 0.0, evolution_max = 0.3 }, | ||||
|         { { name = 'engine-unit', count = math_random(16, 32) },                    weight = 2,  evolution_min = 0.1, evolution_max = 0.5 }, | ||||
|         { { name = 'electric-engine-unit', count = math_random(16, 32) },           weight = 2,  evolution_min = 0.4, evolution_max = 0.8 }, | ||||
|         { { name = 'battery', count = math_random(100, 200) },                      weight = 2,  evolution_min = 0.3, evolution_max = 0.8 }, | ||||
|         { { name = 'advanced-circuit', count = math_random(100, 200) },             weight = 3,  evolution_min = 0.4, evolution_max = 1 }, | ||||
|         { { name = 'electronic-circuit', count = math_random(100, 200) },           weight = 3,  evolution_min = 0.0, evolution_max = 0.4 }, | ||||
|         { { name = 'processing-unit', count = math_random(100, 200) },              weight = 3,  evolution_min = 0.7, evolution_max = 1 }, | ||||
|         { { name = 'explosives', count = math_random(25, 50) },                     weight = 1,  evolution_min = 0.2, evolution_max = 0.6 }, | ||||
|         { { name = 'lubricant-barrel', count = math_random(4, 10) },                weight = 1,  evolution_min = 0.3, evolution_max = 0.5 }, | ||||
|         { { name = 'rocket-fuel', count = math_random(4, 10) },                     weight = 2,  evolution_min = 0.3, evolution_max = 0.7 }, | ||||
|         { { name = 'player-port', count = 1 },                                      weight = 1,  evolution_min = 0.2, evolution_max = 1 }, | ||||
|         { { name = 'steel-plate', count = math_random(50, 100) },                   weight = 2,  evolution_min = 0.1, evolution_max = 0.3 }, | ||||
|         { { name = 'nuclear-fuel', count = 1 },                                     weight = 2,  evolution_min = 0.7, evolution_max = 1 }, | ||||
|         { { name = 'burner-inserter', count = math_random(8, 16) },                 weight = 3,  evolution_min = 0.0, evolution_max = 0.1 }, | ||||
|         { { name = 'inserter', count = math_random(8, 16) },                        weight = 3,  evolution_min = 0.0, evolution_max = 0.4 }, | ||||
|         { { name = 'long-handed-inserter', count = math_random(8, 16) },            weight = 3,  evolution_min = 0.0, evolution_max = 0.4 }, | ||||
|         { { name = 'fast-inserter', count = math_random(8, 16) },                   weight = 3,  evolution_min = 0.1, evolution_max = 1 }, | ||||
|         { { name = 'filter-inserter', count = math_random(8, 16) },                 weight = 1,  evolution_min = 0.2, evolution_max = 1 }, | ||||
|         { { name = 'stack-filter-inserter', count = math_random(4, 8) },            weight = 1,  evolution_min = 0.4, evolution_max = 1 }, | ||||
|         { { name = 'stack-inserter', count = math_random(4, 8) },                   weight = 3,  evolution_min = 0.3, evolution_max = 1 }, | ||||
|         { { name = 'small-electric-pole', count = math_random(16, 32) },            weight = 3,  evolution_min = 0.0, evolution_max = 0.3 }, | ||||
|         { { name = 'medium-electric-pole', count = math_random(8, 16) },            weight = 3,  evolution_min = 0.2, evolution_max = 1 }, | ||||
|         { { name = 'big-electric-pole', count = math_random(8, 16) },               weight = 3,  evolution_min = 0.3, evolution_max = 1 }, | ||||
|         { { name = 'substation', count = math_random(2, 4) },                       weight = 3,  evolution_min = 0.5, evolution_max = 1 }, | ||||
|         { { name = 'wooden-chest', count = math_random(25, 50) },                   weight = 3,  evolution_min = 0.0, evolution_max = 0.2 }, | ||||
|         { { name = 'iron-chest', count = math_random(4, 8) },                       weight = 3,  evolution_min = 0.1, evolution_max = 0.4 }, | ||||
|         { { name = 'steel-chest', count = math_random(4, 8) },                      weight = 3,  evolution_min = 0.3, evolution_max = 1 }, | ||||
|         { { name = 'small-lamp', count = math_random(8, 16) },                      weight = 3,  evolution_min = 0.1, evolution_max = 0.3 }, | ||||
|         { { name = 'rail', count = math_random(50, 75) },                           weight = 3,  evolution_min = 0.1, evolution_max = 0.6 }, | ||||
|         { { name = 'assembling-machine-1', count = math_random(2, 4) },             weight = 3,  evolution_min = 0.0, evolution_max = 0.3 }, | ||||
|         { { name = 'assembling-machine-2', count = math_random(2, 4) },             weight = 3,  evolution_min = 0.2, evolution_max = 0.8 }, | ||||
|         { { name = 'assembling-machine-3', count = math_random(2, 4) },             weight = 3,  evolution_min = 0.5, evolution_max = 1 }, | ||||
|         { { name = 'accumulator', count = math_random(4, 8) },                      weight = 3,  evolution_min = 0.4, evolution_max = 1 }, | ||||
|         { { name = 'offshore-pump', count = math_random(1, 2) },                    weight = 2,  evolution_min = 0.0, evolution_max = 0.1 }, | ||||
|         { { name = 'beacon', count = math_random(1, 2) },                           weight = 3,  evolution_min = 0.7, evolution_max = 1 }, | ||||
|         { { name = 'boiler', count = math_random(2, 4) },                           weight = 3,  evolution_min = 0.0, evolution_max = 0.3 }, | ||||
|         { { name = 'steam-engine', count = math_random(2, 4) },                     weight = 3,  evolution_min = 0.0, evolution_max = 0.5 }, | ||||
|         { { name = 'steam-turbine', count = math_random(1, 2) },                    weight = 2,  evolution_min = 0.5, evolution_max = 1 }, | ||||
|         --{{name = "nuclear-reactor", count = 1}, weight = 2, evolution_min = 0.5, evolution_max = 1}, | ||||
|         { { name = 'centrifuge', count = math_random(1, 2) },                     weight = 2,  evolution_min = 0.5, evolution_max = 1 }, | ||||
|         { { name = 'heat-pipe', count = math_random(8, 12) },                     weight = 2,  evolution_min = 0.5, evolution_max = 1 }, | ||||
|         { { name = 'heat-exchanger', count = math_random(2, 4) },                 weight = 2,  evolution_min = 0.5, evolution_max = 1 }, | ||||
|         { { name = 'arithmetic-combinator', count = math_random(8, 16) },         weight = 1,  evolution_min = 0.1, evolution_max = 1 }, | ||||
|         { { name = 'constant-combinator', count = math_random(8, 16) },           weight = 1,  evolution_min = 0.1, evolution_max = 1 }, | ||||
|         { { name = 'decider-combinator', count = math_random(8, 16) },            weight = 1,  evolution_min = 0.1, evolution_max = 1 }, | ||||
|         { { name = 'power-switch', count = math_random(2, 4) },                   weight = 1,  evolution_min = 0.1, evolution_max = 1 }, | ||||
|         { { name = 'programmable-speaker', count = math_random(2, 4) },           weight = 1,  evolution_min = 0.1, evolution_max = 1 }, | ||||
|         { { name = 'green-wire', count = math_random(50, 100) },                  weight = 1,  evolution_min = 0.1, evolution_max = 1 }, | ||||
|         { { name = 'red-wire', count = math_random(50, 100) },                    weight = 1,  evolution_min = 0.1, evolution_max = 1 }, | ||||
|         { { name = 'chemical-plant', count = math_random(2, 4) },                 weight = 3,  evolution_min = 0.3, evolution_max = 1 }, | ||||
|         { { name = 'burner-mining-drill', count = math_random(4, 8) },            weight = 3,  evolution_min = 0.0, evolution_max = 0.2 }, | ||||
|         { { name = 'electric-mining-drill', count = math_random(4, 8) },          weight = 3,  evolution_min = 0.2, evolution_max = 0.6 }, | ||||
|         { { name = 'express-transport-belt', count = math_random(25, 75) },       weight = 3,  evolution_min = 0.5, evolution_max = 1 }, | ||||
|         { { name = 'express-underground-belt', count = math_random(4, 8) },       weight = 3,  evolution_min = 0.5, evolution_max = 1 }, | ||||
|         { { name = 'express-splitter', count = math_random(2, 4) },               weight = 3,  evolution_min = 0.5, evolution_max = 1 }, | ||||
|         { { name = 'fast-transport-belt', count = math_random(25, 75) },          weight = 3,  evolution_min = 0.2, evolution_max = 0.7 }, | ||||
|         { { name = 'fast-underground-belt', count = math_random(4, 8) },          weight = 3,  evolution_min = 0.2, evolution_max = 0.7 }, | ||||
|         { { name = 'fast-splitter', count = math_random(2, 4) },                  weight = 3,  evolution_min = 0.2, evolution_max = 0.3 }, | ||||
|         { { name = 'transport-belt', count = math_random(25, 75) },               weight = 3,  evolution_min = 0,   evolution_max = 0.3 }, | ||||
|         { { name = 'underground-belt', count = math_random(4, 8) },               weight = 3,  evolution_min = 0,   evolution_max = 0.3 }, | ||||
|         { { name = 'splitter', count = math_random(2, 4) },                       weight = 3,  evolution_min = 0,   evolution_max = 0.3 }, | ||||
|         { { name = 'oil-refinery', count = math_random(1, 2) },                   weight = 2,  evolution_min = 0.3, evolution_max = 1 }, | ||||
|         { { name = 'pipe', count = math_random(40, 50) },                         weight = 3,  evolution_min = 0.0, evolution_max = 0.3 }, | ||||
|         { { name = 'pipe-to-ground', count = math_random(8, 16) },                weight = 1,  evolution_min = 0.2, evolution_max = 0.5 }, | ||||
|         { { name = 'pumpjack', count = math_random(1, 2) },                       weight = 1,  evolution_min = 0.3, evolution_max = 0.8 }, | ||||
|         { { name = 'pump', count = math_random(1, 4) },                           weight = 1,  evolution_min = 0.3, evolution_max = 0.8 }, | ||||
|         { { name = 'solar-panel', count = math_random(4, 8) },                    weight = 3,  evolution_min = 0.4, evolution_max = 0.9 }, | ||||
|         { { name = 'electric-furnace', count = math_random(2, 4) },               weight = 3,  evolution_min = 0.5, evolution_max = 1 }, | ||||
|         { { name = 'steel-furnace', count = math_random(4, 8) },                  weight = 3,  evolution_min = 0.2, evolution_max = 0.7 }, | ||||
|         { { name = 'stone-furnace', count = math_random(8, 16) },                 weight = 3,  evolution_min = 0.0, evolution_max = 0.1 }, | ||||
|         { { name = 'radar', count = math_random(1, 2) },                          weight = 1,  evolution_min = 0.1, evolution_max = 0.3 }, | ||||
|         { { name = 'rail-signal', count = math_random(8, 16) },                   weight = 2,  evolution_min = 0.2, evolution_max = 0.8 }, | ||||
|         { { name = 'rail-chain-signal', count = math_random(8, 16) },             weight = 2,  evolution_min = 0.2, evolution_max = 0.8 }, | ||||
|         { { name = 'stone-wall', count = math_random(25, 75) },                   weight = 1,  evolution_min = 0.1, evolution_max = 0.5 }, | ||||
|         { { name = 'gate', count = math_random(4, 8) },                           weight = 1,  evolution_min = 0.1, evolution_max = 0.5 }, | ||||
|         { { name = 'storage-tank', count = math_random(2, 4) },                   weight = 3,  evolution_min = 0.3, evolution_max = 0.6 }, | ||||
|         { { name = 'train-stop', count = math_random(1, 2) },                     weight = 1,  evolution_min = 0.2, evolution_max = 0.7 }, | ||||
|         { { name = 'express-loader', count = math_random(1, 2) },                 weight = 1,  evolution_min = 0.5, evolution_max = 1 }, | ||||
|         { { name = 'fast-loader', count = math_random(1, 2) },                    weight = 1,  evolution_min = 0.2, evolution_max = 0.7 }, | ||||
|         { { name = 'loader', count = math_random(1, 2) },                         weight = 1,  evolution_min = 0.0, evolution_max = 0.5 }, | ||||
|         { { name = 'lab', count = math_random(2, 4) },                            weight = 2,  evolution_min = 0.0, evolution_max = 0.1 }, | ||||
|         { { name = 'centrifuge', count = math_random(1, 2) },                       weight = 2,  evolution_min = 0.5, evolution_max = 1 }, | ||||
|         { { name = 'heat-pipe', count = math_random(8, 12) },                       weight = 2,  evolution_min = 0.5, evolution_max = 1 }, | ||||
|         { { name = 'heat-exchanger', count = math_random(2, 4) },                   weight = 2,  evolution_min = 0.5, evolution_max = 1 }, | ||||
|         { { name = 'arithmetic-combinator', count = math_random(8, 16) },           weight = 1,  evolution_min = 0.1, evolution_max = 1 }, | ||||
|         { { name = 'constant-combinator', count = math_random(8, 16) },             weight = 1,  evolution_min = 0.1, evolution_max = 1 }, | ||||
|         { { name = 'decider-combinator', count = math_random(8, 16) },              weight = 1,  evolution_min = 0.1, evolution_max = 1 }, | ||||
|         { { name = 'power-switch', count = math_random(2, 4) },                     weight = 1,  evolution_min = 0.1, evolution_max = 1 }, | ||||
|         { { name = 'programmable-speaker', count = math_random(2, 4) },             weight = 1,  evolution_min = 0.1, evolution_max = 1 }, | ||||
|         { { name = 'green-wire', count = math_random(50, 100) },                    weight = 1,  evolution_min = 0.1, evolution_max = 1 }, | ||||
|         { { name = 'red-wire', count = math_random(50, 100) },                      weight = 1,  evolution_min = 0.1, evolution_max = 1 }, | ||||
|         { { name = 'chemical-plant', count = math_random(2, 4) },                   weight = 3,  evolution_min = 0.3, evolution_max = 1 }, | ||||
|         { { name = 'burner-mining-drill', count = math_random(4, 8) },              weight = 3,  evolution_min = 0.0, evolution_max = 0.2 }, | ||||
|         { { name = 'electric-mining-drill', count = math_random(4, 8) },            weight = 3,  evolution_min = 0.2, evolution_max = 0.6 }, | ||||
|         { { name = 'express-transport-belt', count = math_random(25, 75) },         weight = 3,  evolution_min = 0.5, evolution_max = 1 }, | ||||
|         { { name = 'express-underground-belt', count = math_random(4, 8) },         weight = 3,  evolution_min = 0.5, evolution_max = 1 }, | ||||
|         { { name = 'express-splitter', count = math_random(2, 4) },                 weight = 3,  evolution_min = 0.5, evolution_max = 1 }, | ||||
|         { { name = 'fast-transport-belt', count = math_random(25, 75) },            weight = 3,  evolution_min = 0.2, evolution_max = 0.7 }, | ||||
|         { { name = 'fast-underground-belt', count = math_random(4, 8) },            weight = 3,  evolution_min = 0.2, evolution_max = 0.7 }, | ||||
|         { { name = 'fast-splitter', count = math_random(2, 4) },                    weight = 3,  evolution_min = 0.2, evolution_max = 0.3 }, | ||||
|         { { name = 'transport-belt', count = math_random(25, 75) },                 weight = 3,  evolution_min = 0,   evolution_max = 0.3 }, | ||||
|         { { name = 'underground-belt', count = math_random(4, 8) },                 weight = 3,  evolution_min = 0,   evolution_max = 0.3 }, | ||||
|         { { name = 'splitter', count = math_random(2, 4) },                         weight = 3,  evolution_min = 0,   evolution_max = 0.3 }, | ||||
|         { { name = 'oil-refinery', count = math_random(1, 2) },                     weight = 2,  evolution_min = 0.3, evolution_max = 1 }, | ||||
|         { { name = 'pipe', count = math_random(40, 50) },                           weight = 3,  evolution_min = 0.0, evolution_max = 0.3 }, | ||||
|         { { name = 'pipe-to-ground', count = math_random(8, 16) },                  weight = 1,  evolution_min = 0.2, evolution_max = 0.5 }, | ||||
|         { { name = 'pumpjack', count = math_random(1, 2) },                         weight = 1,  evolution_min = 0.3, evolution_max = 0.8 }, | ||||
|         { { name = 'pump', count = math_random(1, 4) },                             weight = 1,  evolution_min = 0.3, evolution_max = 0.8 }, | ||||
|         { { name = 'solar-panel', count = math_random(4, 8) },                      weight = 3,  evolution_min = 0.4, evolution_max = 0.9 }, | ||||
|         { { name = 'electric-furnace', count = math_random(2, 4) },                 weight = 3,  evolution_min = 0.5, evolution_max = 1 }, | ||||
|         { { name = 'steel-furnace', count = math_random(4, 8) },                    weight = 3,  evolution_min = 0.2, evolution_max = 0.7 }, | ||||
|         { { name = 'stone-furnace', count = math_random(8, 16) },                   weight = 3,  evolution_min = 0.0, evolution_max = 0.1 }, | ||||
|         { { name = 'radar', count = math_random(1, 2) },                            weight = 1,  evolution_min = 0.1, evolution_max = 0.3 }, | ||||
|         { { name = 'rail-signal', count = math_random(8, 16) },                     weight = 2,  evolution_min = 0.2, evolution_max = 0.8 }, | ||||
|         { { name = 'rail-chain-signal', count = math_random(8, 16) },               weight = 2,  evolution_min = 0.2, evolution_max = 0.8 }, | ||||
|         { { name = 'stone-wall', count = math_random(25, 75) },                     weight = 1,  evolution_min = 0.1, evolution_max = 0.5 }, | ||||
|         { { name = 'gate', count = math_random(4, 8) },                             weight = 1,  evolution_min = 0.1, evolution_max = 0.5 }, | ||||
|         { { name = 'storage-tank', count = math_random(2, 4) },                     weight = 3,  evolution_min = 0.3, evolution_max = 0.6 }, | ||||
|         { { name = 'train-stop', count = math_random(1, 2) },                       weight = 1,  evolution_min = 0.2, evolution_max = 0.7 }, | ||||
|         { { name = 'express-loader', count = math_random(1, 2) },                   weight = 1,  evolution_min = 0.5, evolution_max = 1 }, | ||||
|         { { name = 'fast-loader', count = math_random(1, 2) },                      weight = 1,  evolution_min = 0.2, evolution_max = 0.7 }, | ||||
|         { { name = 'loader', count = math_random(1, 2) },                           weight = 1,  evolution_min = 0.0, evolution_max = 0.5 }, | ||||
|         { { name = 'lab', count = math_random(2, 4) },                              weight = 2,  evolution_min = 0.0, evolution_max = 0.1 }, | ||||
|         --{{name = "roboport", count = math_random(2,4)}, weight = 2, evolution_min = 0.6, evolution_max = 1}, | ||||
|         --{{name = "flamethrower-turret", count = math_random(4,8)}, weight = 3, evolution_min = 0.5, evolution_max = 1}, | ||||
|         --{{name = "laser-turret", count = math_random(4,8)}, weight = 3, evolution_min = 0.5, evolution_max = 1}, | ||||
|         { { name = 'gun-turret', count = math_random(2, 4) },                     weight = 3,  evolution_min = 0.2, evolution_max = 0.9 } | ||||
|         { { name = 'gun-turret', count = math_random(2, 4) },                       weight = 3,  evolution_min = 0.2, evolution_max = 0.9 } | ||||
|     } | ||||
|     for _, t in pairs(chest_loot) do | ||||
|         for _ = 1, t.weight, 1 do | ||||
|   | ||||
| @@ -494,7 +494,7 @@ local function deny_building(event) | ||||
|         return | ||||
|     end | ||||
|  | ||||
|     if not game.item_prototypes[entity.name] then | ||||
|     if not prototypes.item[entity.name] then | ||||
|         return | ||||
|     end | ||||
|     if not Functions.is_minefield_tile(entity.position, true) then | ||||
|   | ||||
| @@ -239,7 +239,7 @@ local function generate_north_chunk(area, surface) | ||||
|     end | ||||
|  | ||||
|     local decorative_names = {} | ||||
|     for k, v in pairs(game.decorative_prototypes) do | ||||
|     for k, v in pairs(prototypes.decorative) do | ||||
|         if v.autoplace_specification then | ||||
|             decorative_names[#decorative_names + 1] = k | ||||
|         end | ||||
|   | ||||
| @@ -1012,8 +1012,8 @@ local function rock_chunk(surface, left_top) | ||||
|     end | ||||
|  | ||||
|     for _, entity in pairs(entities) do | ||||
|         if entity_functions[game.entity_prototypes[entity.name].type] then | ||||
|             entity_functions[game.entity_prototypes[entity.name].type](surface, entity) | ||||
|         if entity_functions[prototypes.entity[entity.name].type] then | ||||
|             entity_functions[prototypes.entity[entity.name].type](surface, entity) | ||||
|         else | ||||
|             if surface.can_place_entity(entity) then | ||||
|                 surface.create_entity(entity) | ||||
|   | ||||
| @@ -580,7 +580,7 @@ end | ||||
| local function input_filtered(car_inv, chest, chest_inv, free_slots) | ||||
|     local request_stacks = {} | ||||
|  | ||||
|     local prototypes = game.item_prototypes | ||||
|     local prototypes = prototypes.item | ||||
|     for slot_index = 1, 30, 1 do | ||||
|         local stack = chest.get_request_slot(slot_index) | ||||
|         if stack then | ||||
|   | ||||
| @@ -856,7 +856,7 @@ local function update_gui() | ||||
|         local btn | ||||
|  | ||||
|         for item_name, item_count in pairs(items) do | ||||
|             local localized_name = game.item_prototypes[item_name].localised_name[1] | ||||
|             local localized_name = prototypes.item[item_name].localised_name[1] | ||||
|             if container.requested_item and tbl[container.requested_item] then | ||||
|                 tbl[container.requested_item].number = item_count | ||||
|             else | ||||
|   | ||||
| @@ -67,7 +67,7 @@ local function add_random_loot_to_main_market(rarity) | ||||
|         return false | ||||
|     end | ||||
|  | ||||
|     local types = game.item_prototypes | ||||
|     local types = prototypes.item | ||||
|  | ||||
|     for k, v in pairs(main_market_items) do | ||||
|         if not v.static then | ||||
|   | ||||
| @@ -48,7 +48,7 @@ function Public.add_loot(surface, position, chest, collision) | ||||
|  | ||||
|     local result = base_amount + budget + distance_mod | ||||
|  | ||||
|     local c = game.entity_prototypes[chest] | ||||
|     local c = prototypes.entity[chest] | ||||
|     local slots = c.get_inventory_size(defines.inventory.chest) | ||||
|  | ||||
|     local item_stacks = LootRaffle.roll(result, slots, blacklist) | ||||
| @@ -61,7 +61,7 @@ function Public.add_loot(surface, position, chest, collision) | ||||
|         end | ||||
|     end | ||||
|  | ||||
|     local container = surface.create_entity({name = chest, position = new_position, force = 'neutral', create_build_effect_smoke = false}) | ||||
|     local container = surface.create_entity({ name = chest, position = new_position, force = 'neutral', create_build_effect_smoke = false }) | ||||
|  | ||||
|     for _, item_stack in pairs(item_stacks) do | ||||
|         container.insert(item_stack) | ||||
| @@ -69,20 +69,20 @@ function Public.add_loot(surface, position, chest, collision) | ||||
|     container.minable = false | ||||
|  | ||||
|     if random(1, 8) == 1 then | ||||
|         container.insert({name = 'coin', count = random(1, 32)}) | ||||
|         container.insert({ name = 'coin', count = random(1, 32) }) | ||||
|     elseif random(1, 32) == 1 then | ||||
|         container.insert({name = 'coin', count = random(1, 128)}) | ||||
|         container.insert({ name = 'coin', count = random(1, 128) }) | ||||
|     elseif random(1, 128) == 1 then | ||||
|         container.insert({name = 'coin', count = random(1, 256)}) | ||||
|         container.insert({ name = 'coin', count = random(1, 256) }) | ||||
|     elseif random(1, 256) == 1 then | ||||
|         container.insert({name = 'coin', count = random(1, 512)}) | ||||
|         container.insert({ name = 'coin', count = random(1, 512) }) | ||||
|     elseif random(1, 512) == 1 then | ||||
|         container.insert({name = 'coin', count = random(1, 1024)}) | ||||
|         container.insert({ name = 'coin', count = random(1, 1024) }) | ||||
|     end | ||||
|  | ||||
|     for _ = 1, 3, 1 do | ||||
|         if random(1, 16) == 1 then | ||||
|             container.insert({name = 'explosives', count = random(25, 50)}) | ||||
|             container.insert({ name = 'explosives', count = random(25, 50) }) | ||||
|         else | ||||
|             break | ||||
|         end | ||||
| @@ -111,31 +111,31 @@ function Public.add_loot_rare(surface, position, chest, magic) | ||||
|  | ||||
|     local result = base_amount + budget + distance_mod | ||||
|  | ||||
|     local c = game.entity_prototypes[chest] | ||||
|     local c = prototypes.entity[chest] | ||||
|     local slots = c.get_inventory_size(defines.inventory.chest) | ||||
|  | ||||
|     local item_stacks = LootRaffle.roll(result, slots, blacklist) | ||||
|     local container = surface.create_entity({name = chest, position = position, force = 'neutral', create_build_effect_smoke = false}) | ||||
|     local container = surface.create_entity({ name = chest, position = position, force = 'neutral', create_build_effect_smoke = false }) | ||||
|     for _, item_stack in pairs(item_stacks) do | ||||
|         container.insert(item_stack) | ||||
|     end | ||||
|     container.minable = false | ||||
|  | ||||
|     if random(1, 8) == 1 then | ||||
|         container.insert({name = 'coin', count = random(1, 32)}) | ||||
|         container.insert({ name = 'coin', count = random(1, 32) }) | ||||
|     elseif random(1, 32) == 1 then | ||||
|         container.insert({name = 'coin', count = random(1, 128)}) | ||||
|         container.insert({ name = 'coin', count = random(1, 128) }) | ||||
|     elseif random(1, 128) == 1 then | ||||
|         container.insert({name = 'coin', count = random(1, 256)}) | ||||
|         container.insert({ name = 'coin', count = random(1, 256) }) | ||||
|     elseif random(1, 256) == 1 then | ||||
|         container.insert({name = 'coin', count = random(1, 512)}) | ||||
|         container.insert({ name = 'coin', count = random(1, 512) }) | ||||
|     elseif random(1, 512) == 1 then | ||||
|         container.insert({name = 'coin', count = random(1, 2048)}) | ||||
|         container.insert({ name = 'coin', count = random(1, 2048) }) | ||||
|     end | ||||
|  | ||||
|     for _ = 1, 3, 1 do | ||||
|         if random(1, 16) == 1 then | ||||
|             container.insert({name = 'explosives', count = random(25, 50)}) | ||||
|             container.insert({ name = 'explosives', count = random(25, 50) }) | ||||
|         else | ||||
|             break | ||||
|         end | ||||
|   | ||||
| @@ -440,7 +440,7 @@ function Public.roll_item_stack(remaining_budget, blacklist) | ||||
|         end | ||||
|     end | ||||
|  | ||||
|     local stack_size = game.item_prototypes[item_name].stack_size * 32 | ||||
|     local stack_size = prototypes.item[item_name].stack_size * 32 | ||||
|  | ||||
|     local item_count = 1 | ||||
|  | ||||
|   | ||||
| @@ -15,7 +15,7 @@ local this = { | ||||
|  | ||||
| Global.register( | ||||
|     this, | ||||
|     function(t) | ||||
|     function (t) | ||||
|         this = t | ||||
|     end | ||||
| ) | ||||
| @@ -27,22 +27,22 @@ local valid_entities = { | ||||
| } | ||||
|  | ||||
| local size_raffle = { | ||||
|     {'giant', 65, 96}, | ||||
|     {'huge', 33, 64}, | ||||
|     {'big', 17, 32}, | ||||
|     {'small', 9, 16}, | ||||
|     {'tiny', 4, 8} | ||||
|     { 'giant', 65, 96 }, | ||||
|     { 'huge',  33, 64 }, | ||||
|     { 'big',   17, 32 }, | ||||
|     { 'small', 9,  16 }, | ||||
|     { 'tiny',  4,  8 } | ||||
| } | ||||
|  | ||||
| local function get_chances() | ||||
|     local chances = {} | ||||
|  | ||||
|     table.insert(chances, {'iron-ore', 25}) | ||||
|     table.insert(chances, {'copper-ore', 18}) | ||||
|     table.insert(chances, {'mixed', 15}) | ||||
|     table.insert(chances, {'coal', 14}) | ||||
|     table.insert(chances, {'stone', 8}) | ||||
|     table.insert(chances, {'uranium-ore', 3}) | ||||
|     table.insert(chances, { 'iron-ore', 25 }) | ||||
|     table.insert(chances, { 'copper-ore', 18 }) | ||||
|     table.insert(chances, { 'mixed', 15 }) | ||||
|     table.insert(chances, { 'coal', 14 }) | ||||
|     table.insert(chances, { 'stone', 8 }) | ||||
|     table.insert(chances, { 'uranium-ore', 3 }) | ||||
|  | ||||
|     return chances | ||||
| end | ||||
| @@ -55,7 +55,7 @@ local function set_raffle() | ||||
|         end | ||||
|     end | ||||
|  | ||||
|     this.mixed_ores = {'iron-ore', 'copper-ore', 'stone', 'coal'} | ||||
|     this.mixed_ores = { 'iron-ore', 'copper-ore', 'stone', 'coal' } | ||||
| end | ||||
|  | ||||
| local function get_amount(position) | ||||
| @@ -66,14 +66,14 @@ local function get_amount(position) | ||||
| end | ||||
|  | ||||
| local function draw_chain(surface, count, ore, ore_entities, ore_positions) | ||||
|     local vectors = {{0, -1}, {-1, 0}, {1, 0}, {0, 1}} | ||||
|     local vectors = { { 0, -1 }, { -1, 0 }, { 1, 0 }, { 0, 1 } } | ||||
|     local r = random(1, #ore_entities) | ||||
|     local position = {x = ore_entities[r].position.x, y = ore_entities[r].position.y} | ||||
|     local position = { x = ore_entities[r].position.x, y = ore_entities[r].position.y } | ||||
|     for _ = 1, count, 1 do | ||||
|         table.shuffle_table(vectors) | ||||
|         for i = 1, 4, 1 do | ||||
|             local p = {x = position.x + vectors[i][1], y = position.y + vectors[i][2]} | ||||
|             if surface.can_place_entity({name = 'coal', position = p, amount = 1}) then | ||||
|             local p = { x = position.x + vectors[i][1], y = position.y + vectors[i][2] } | ||||
|             if surface.can_place_entity({ name = 'coal', position = p, amount = 1 }) then | ||||
|                 if not ore_positions[p.x .. '_' .. p.y] then | ||||
|                     position.x = p.x | ||||
|                     position.y = p.y | ||||
| @@ -82,7 +82,7 @@ local function draw_chain(surface, count, ore, ore_entities, ore_positions) | ||||
|                     if ore == 'mixed' then | ||||
|                         name = this.mixed_ores[random(1, #this.mixed_ores)] | ||||
|                     end | ||||
|                     ore_entities[#ore_entities + 1] = {name = name, position = p, amount = get_amount(position)} | ||||
|                     ore_entities[#ore_entities + 1] = { name = name, position = p, amount = get_amount(position) } | ||||
|                     break | ||||
|                 end | ||||
|             end | ||||
| @@ -95,7 +95,7 @@ local function ore_vein(player, entity) | ||||
|     local size = size_raffle[random(1, #size_raffle)] | ||||
|     local ore = this.raffle[random(1, #this.raffle)] | ||||
|     local icon | ||||
|     if game.entity_prototypes[ore] then | ||||
|     if prototypes.entity[ore] then | ||||
|         icon = '[img=entity/' .. ore .. ']' | ||||
|     else | ||||
|         icon = ' ' | ||||
| @@ -104,20 +104,20 @@ local function ore_vein(player, entity) | ||||
|     player.print( | ||||
|         { | ||||
|             'rocks_yield_ore_veins.player_print', | ||||
|             {'rocks_yield_ore_veins_colors.' .. ore}, | ||||
|             {'rocks_yield_ore_veins.' .. size[1]}, | ||||
|             {'rocks_yield_ore_veins.' .. ore}, | ||||
|             { 'rocks_yield_ore_veins_colors.' .. ore }, | ||||
|             { 'rocks_yield_ore_veins.' .. size[1] }, | ||||
|             { 'rocks_yield_ore_veins.' .. ore }, | ||||
|             icon | ||||
|         }, | ||||
|         {r = 0.80, g = 0.80, b = 0.80} | ||||
|         { r = 0.80, g = 0.80, b = 0.80 } | ||||
|     ) | ||||
|  | ||||
|     local ore_entities = {{name = ore, position = {x = entity.position.x, y = entity.position.y}, amount = get_amount(entity.position)}} | ||||
|     local ore_entities = { { name = ore, position = { x = entity.position.x, y = entity.position.y }, amount = get_amount(entity.position) } } | ||||
|     if ore == 'mixed' then | ||||
|         ore_entities = { | ||||
|             { | ||||
|                 name = this.mixed_ores[random(1, #this.mixed_ores)], | ||||
|                 position = {x = entity.position.x, y = entity.position.y}, | ||||
|                 position = { x = entity.position.x, y = entity.position.y }, | ||||
|                 amount = get_amount(entity.position) | ||||
|             } | ||||
|         } | ||||
| @@ -125,7 +125,7 @@ local function ore_vein(player, entity) | ||||
|  | ||||
|     StatData.get_data(player):increase('ore_veins') | ||||
|  | ||||
|     local ore_positions = {[entity.position.x .. '_' .. entity.position.y] = true} | ||||
|     local ore_positions = { [entity.position.x .. '_' .. entity.position.y] = true } | ||||
|     local count = random(size[2], size[3]) | ||||
|  | ||||
|     for _ = 1, 128, 1 do | ||||
|   | ||||
| @@ -1350,7 +1350,7 @@ local function event_on_research_finished(event) | ||||
| 		-- using a localised string means we have to write this out (recall that "" signals concatenation) | ||||
| 		memory.force.print({ "", '>> ', { 'pirates.research_notification', research.localised_name } }, CoreData.colors.notify_force_light) | ||||
|  | ||||
| 		Server.to_discord_embed_raw({ '', '[' .. memory.name .. '] ', { 'pirates.research_notification', game.technology_prototypes[research.name].localised_name } }, true) | ||||
| 		Server.to_discord_embed_raw({ '', '[' .. memory.name .. '] ', { 'pirates.research_notification', prototypes.technology[research.name].localised_name } }, true) | ||||
| 	end | ||||
|  | ||||
| 	for _, e in ipairs(research.effects) do | ||||
|   | ||||
| @@ -201,7 +201,7 @@ function Public.create_cabin_surface() | ||||
| 				filter = 'coal' | ||||
| 			elseif splitter.type <= 6 then | ||||
| 				priority = 'right' | ||||
| 				filter = game.item_prototypes[CoreData.cost_items[splitter.type].name] | ||||
| 				filter = prototypes.item[CoreData.cost_items[splitter.type].name] | ||||
| 			elseif splitter.type == 7 then | ||||
| 				priority = 'left' | ||||
| 			elseif splitter.type == 8 then | ||||
|   | ||||
| @@ -343,7 +343,7 @@ local function on_init() | ||||
|         ['capsule'] = true | ||||
|     } | ||||
|  | ||||
|     for _, recipe in pairs(game.recipe_prototypes) do | ||||
|     for _, recipe in pairs(prototypes.recipe) do | ||||
|         if types_to_disable[recipe.subgroup.name] then | ||||
|             force.set_hand_crafting_disabled_for_recipe(recipe.name, true) | ||||
|         end | ||||
|   | ||||
| @@ -134,7 +134,7 @@ local function map_reset() | ||||
|         ['gun'] = true, | ||||
|         ['capsule'] = true | ||||
|     } | ||||
|     for _, recipe in pairs(game.recipe_prototypes) do | ||||
|     for _, recipe in pairs(prototypes.recipe) do | ||||
|         if types_to_disable[recipe.subgroup.name] then | ||||
|             force.set_hand_crafting_disabled_for_recipe(recipe.name, true) | ||||
|         end | ||||
|   | ||||
| @@ -16,7 +16,7 @@ local disabled_for_deconstruction = { | ||||
|     ['fish'] = true | ||||
| } | ||||
|  | ||||
| local rock_raffle = {'sand-rock-big', 'sand-rock-big', 'rock-big', 'rock-big', 'rock-big', 'rock-big', 'rock-big', 'rock-big', 'rock-huge'} | ||||
| local rock_raffle = { 'sand-rock-big', 'sand-rock-big', 'rock-big', 'rock-big', 'rock-big', 'rock-big', 'rock-big', 'rock-big', 'rock-huge' } | ||||
|  | ||||
| local tile_replacements = { | ||||
|     ['water'] = 'grass-2', | ||||
| @@ -75,26 +75,26 @@ local connections = 0.08 | ||||
| local function process_tiles(surface, pos, noise, noise_2) | ||||
|     local tile = surface.get_tile(pos) | ||||
|     if tile_replacements[tile.name] then | ||||
|         surface.set_tiles({{name = tile_replacements[tile.name], position = pos}}, true) | ||||
|         surface.set_tiles({ { name = tile_replacements[tile.name], position = pos } }, true) | ||||
|     end | ||||
|  | ||||
|     if noise > water_level * -1 and noise < water_level then | ||||
|         if noise_2 < connections * -1 or noise_2 > connections then | ||||
|             surface.set_tiles({{name = 'water', position = pos}}, true) | ||||
|             surface.set_tiles({ { name = 'water', position = pos } }, true) | ||||
|             if math_random(1, 256) == 1 then | ||||
|                 surface.create_entity({name = 'fish', position = pos}) | ||||
|                 surface.create_entity({ name = 'fish', position = pos }) | ||||
|             end | ||||
|             return | ||||
|         else | ||||
|             if math_random(1, 2) == 1 then | ||||
|                 surface.create_entity({name = rock_raffle[math_random(1, #rock_raffle)], position = pos}) | ||||
|                 surface.create_entity({ name = rock_raffle[math_random(1, #rock_raffle)], position = pos }) | ||||
|             end | ||||
|         end | ||||
|     end | ||||
| end | ||||
|  | ||||
| local function process_entities(surface, pos, noise, noise_2) | ||||
|     if not surface.can_place_entity({name = 'iron-ore', position = pos, amount = 1}) then | ||||
|     if not surface.can_place_entity({ name = 'iron-ore', position = pos, amount = 1 }) then | ||||
|         return | ||||
|     end | ||||
|  | ||||
| @@ -102,10 +102,10 @@ local function process_entities(surface, pos, noise, noise_2) | ||||
|         local distance_to_center = math.sqrt(pos.x ^ 2 + pos.y ^ 2) | ||||
|         local amount = (600 + distance_to_center) * math.abs(noise) | ||||
|         if math.floor(noise * 15) % 3 ~= 0 then | ||||
|             surface.create_entity({name = 'iron-ore', position = pos, amount = amount}) | ||||
|             surface.create_entity({ name = 'iron-ore', position = pos, amount = amount }) | ||||
|             return | ||||
|         else | ||||
|             surface.create_entity({name = 'coal', position = pos, amount = amount}) | ||||
|             surface.create_entity({ name = 'coal', position = pos, amount = amount }) | ||||
|             return | ||||
|         end | ||||
|     end | ||||
| @@ -114,10 +114,10 @@ local function process_entities(surface, pos, noise, noise_2) | ||||
|         local distance_to_center = math.sqrt(pos.x ^ 2 + pos.y ^ 2) | ||||
|         local amount = (600 + distance_to_center) * math.abs(noise) | ||||
|         if math.floor(noise * 15) % 3 ~= 0 then | ||||
|             surface.create_entity({name = 'copper-ore', position = pos, amount = amount}) | ||||
|             surface.create_entity({ name = 'copper-ore', position = pos, amount = amount }) | ||||
|             return | ||||
|         else | ||||
|             surface.create_entity({name = 'stone', position = pos, amount = amount}) | ||||
|             surface.create_entity({ name = 'stone', position = pos, amount = amount }) | ||||
|             return | ||||
|         end | ||||
|     end | ||||
| @@ -134,7 +134,7 @@ local function on_chunk_generated(event) | ||||
|  | ||||
|     for x = 0, 31, 1 do | ||||
|         for y = 0, 31, 1 do | ||||
|             local pos = {x = left_top.x + x, y = left_top.y + y} | ||||
|             local pos = { x = left_top.x + x, y = left_top.y + y } | ||||
|             local noise_1 = get_noise(1, pos) | ||||
|             local noise_2 = get_noise(2, pos) | ||||
|             process_tiles(surface, pos, noise_1, noise_2) | ||||
| @@ -143,12 +143,12 @@ local function on_chunk_generated(event) | ||||
|     end | ||||
|  | ||||
|     local decorative_names = {} | ||||
|     for k, v in pairs(game.decorative_prototypes) do | ||||
|     for k, v in pairs(prototypes.decorative) do | ||||
|         if v.autoplace_specification then | ||||
|             decorative_names[#decorative_names + 1] = k | ||||
|         end | ||||
|     end | ||||
|     surface.regenerate_decorative(decorative_names, {{left_top.x / 32, left_top.y / 32}}) | ||||
|     surface.regenerate_decorative(decorative_names, { { left_top.x / 32, left_top.y / 32 } }) | ||||
| end | ||||
|  | ||||
| local function init_map() | ||||
| @@ -159,15 +159,15 @@ local function init_map() | ||||
|     local map_gen_settings = {} | ||||
|     map_gen_settings.water = '0' | ||||
|     map_gen_settings.starting_area = '1' | ||||
|     map_gen_settings.cliff_settings = {cliff_elevation_interval = 22, cliff_elevation_0 = 22} | ||||
|     map_gen_settings.cliff_settings = { cliff_elevation_interval = 22, cliff_elevation_0 = 22 } | ||||
|     map_gen_settings.autoplace_controls = { | ||||
|         ['coal'] = {frequency = 'none', size = 'none', richness = 'none'}, | ||||
|         ['stone'] = {frequency = 'none', size = 'none', richness = 'none'}, | ||||
|         ['copper-ore'] = {frequency = 'none', size = 'none', richness = 'none'}, | ||||
|         ['iron-ore'] = {frequency = 'none', size = 'none', richness = 'none'}, | ||||
|         ['crude-oil'] = {frequency = '4', size = '1', richness = '1'}, | ||||
|         ['trees'] = {frequency = '4', size = '1', richness = '1'}, | ||||
|         ['enemy-base'] = {frequency = '50', size = '1.5', richness = '1'} | ||||
|         ['coal'] = { frequency = 'none', size = 'none', richness = 'none' }, | ||||
|         ['stone'] = { frequency = 'none', size = 'none', richness = 'none' }, | ||||
|         ['copper-ore'] = { frequency = 'none', size = 'none', richness = 'none' }, | ||||
|         ['iron-ore'] = { frequency = 'none', size = 'none', richness = 'none' }, | ||||
|         ['crude-oil'] = { frequency = '4', size = '1', richness = '1' }, | ||||
|         ['trees'] = { frequency = '4', size = '1', richness = '1' }, | ||||
|         ['enemy-base'] = { frequency = '50', size = '1.5', richness = '1' } | ||||
|     } | ||||
|     game.create_surface('rivers', map_gen_settings) | ||||
|  | ||||
| @@ -178,13 +178,13 @@ local function init_map() | ||||
|     game.map_settings.enemy_expansion.min_expansion_cooldown = 18000 | ||||
|     game.map_settings.enemy_expansion.max_expansion_cooldown = 36000 | ||||
|  | ||||
|     surface.request_to_generate_chunks({0, 0}, 3) | ||||
|     surface.request_to_generate_chunks({ 0, 0 }, 3) | ||||
|     surface.force_generate_chunk_requests() | ||||
|  | ||||
|     map_functions.draw_smoothed_out_ore_circle({x = -3, y = -3}, 'iron-ore', surface, 8, 5000) | ||||
|     map_functions.draw_smoothed_out_ore_circle({x = 3, y = 3}, 'copper-ore', surface, 8, 5000) | ||||
|     map_functions.draw_smoothed_out_ore_circle({x = 3, y = -3}, 'stone', surface, 8, 5000) | ||||
|     map_functions.draw_smoothed_out_ore_circle({x = -3, y = 3}, 'coal', surface, 8, 5000) | ||||
|     map_functions.draw_smoothed_out_ore_circle({ x = -3, y = -3 }, 'iron-ore', surface, 8, 5000) | ||||
|     map_functions.draw_smoothed_out_ore_circle({ x = 3, y = 3 }, 'copper-ore', surface, 8, 5000) | ||||
|     map_functions.draw_smoothed_out_ore_circle({ x = 3, y = -3 }, 'stone', surface, 8, 5000) | ||||
|     map_functions.draw_smoothed_out_ore_circle({ x = -3, y = 3 }, 'coal', surface, 8, 5000) | ||||
| end | ||||
|  | ||||
| local function on_player_joined_game(event) | ||||
| @@ -192,9 +192,9 @@ local function on_player_joined_game(event) | ||||
|  | ||||
|     local player = game.players[event.player_index] | ||||
|     if player.online_time == 0 then | ||||
|         player.insert({name = 'iron-plate', count = 32}) | ||||
|         player.insert({name = 'iron-gear-wheel', count = 16}) | ||||
|         player.teleport(game.surfaces['rivers'].find_non_colliding_position('character', {0, 2}, 50, 0.5), 'rivers') | ||||
|         player.insert({ name = 'iron-plate', count = 32 }) | ||||
|         player.insert({ name = 'iron-gear-wheel', count = 16 }) | ||||
|         player.teleport(game.surfaces['rivers'].find_non_colliding_position('character', { 0, 2 }, 50, 0.5), 'rivers') | ||||
|     end | ||||
| end | ||||
|  | ||||
|   | ||||
| @@ -14,21 +14,21 @@ local valid_entities = { | ||||
| } | ||||
|  | ||||
| local size_raffle = { | ||||
|     {'giant', 500, 1000}, | ||||
|     {'huge', 300, 500}, | ||||
|     {'big', 150, 300}, | ||||
|     {'small', 80, 150}, | ||||
|     {'tiny', 50, 80} | ||||
|     { 'giant', 500, 1000 }, | ||||
|     { 'huge',  300, 500 }, | ||||
|     { 'big',   150, 300 }, | ||||
|     { 'small', 80,  150 }, | ||||
|     { 'tiny',  50,  80 } | ||||
| } | ||||
|  | ||||
| local function get_chances() | ||||
|     local chances = {} | ||||
|     table_insert(chances, {'iron-ore', 24}) | ||||
|     table_insert(chances, {'copper-ore', 18}) | ||||
|     table_insert(chances, {'mixed', 12}) | ||||
|     table_insert(chances, {'coal', 14}) | ||||
|     table_insert(chances, {'stone', 12}) | ||||
|     table_insert(chances, {'uranium-ore', 8}) | ||||
|     table_insert(chances, { 'iron-ore', 24 }) | ||||
|     table_insert(chances, { 'copper-ore', 18 }) | ||||
|     table_insert(chances, { 'mixed', 12 }) | ||||
|     table_insert(chances, { 'coal', 14 }) | ||||
|     table_insert(chances, { 'stone', 12 }) | ||||
|     table_insert(chances, { 'uranium-ore', 8 }) | ||||
|     return chances | ||||
| end | ||||
|  | ||||
| @@ -40,7 +40,7 @@ local function set_raffle() | ||||
|             table_insert(this.rocks_yield_ore_veins.raffle, t[1]) | ||||
|         end | ||||
|     end | ||||
|     this.rocks_yield_ore_veins.mixed_ores = {'iron-ore', 'copper-ore', 'stone', 'coal'} | ||||
|     this.rocks_yield_ore_veins.mixed_ores = { 'iron-ore', 'copper-ore', 'stone', 'coal' } | ||||
| end | ||||
|  | ||||
| local function get_amount() | ||||
| @@ -49,35 +49,35 @@ end | ||||
|  | ||||
| local function draw_chain(surface, count, ore, ore_entities, ore_positions) | ||||
|     local this = ScenarioTable.get_table() | ||||
|     local vectors = {{0, -0.75}, {-0.75, 0}, {0.75, 0}, {0, 0.75}} | ||||
|     local vectors = { { 0, -0.75 }, { -0.75, 0 }, { 0.75, 0 }, { 0, 0.75 } } | ||||
|     local r = math_random(1, #ore_entities) | ||||
|     local position = {x = ore_entities[r].ore.position.x, y = ore_entities[r].ore.position.y} | ||||
|     local position = { x = ore_entities[r].ore.position.x, y = ore_entities[r].ore.position.y } | ||||
|     for _ = 1, count, 1 do | ||||
|         table_shuffle(vectors) | ||||
|         for i = 1, 4, 1 do | ||||
|             local p = {x = position.x + vectors[i][1], y = position.y + vectors[i][2]} | ||||
|             local p = { x = position.x + vectors[i][1], y = position.y + vectors[i][2] } | ||||
|             -- dispersion will make patches more round | ||||
|             local dx = (math_random(0, 100) - 50) / 100 | ||||
|             local dy = (math_random(0, 100) - 50) / 100 | ||||
|             local dp = {x = p.x + dx, y = p.y + dy} | ||||
|             local dp = { x = p.x + dx, y = p.y + dy } | ||||
|  | ||||
|             local name = ore | ||||
|             if ore == 'mixed' then | ||||
|                 name = this.rocks_yield_ore_veins.mixed_ores[math_random(1, #this.rocks_yield_ore_veins.mixed_ores)] | ||||
|             end | ||||
|             if surface.can_place_entity({name = name, position = p, force = 'neutral'}) then | ||||
|             if surface.can_place_entity({ name = name, position = p, force = 'neutral' }) then | ||||
|                 if math_random(1, 2) == 1 then | ||||
|                     if not ore_positions[p.x .. '_' .. p.y] then | ||||
|                         position.x = p.x | ||||
|                         position.y = p.y | ||||
|                         ore_positions[p.x .. '_' .. p.y] = true | ||||
|                         ore_entities[#ore_entities + 1] = {ore = {name = name, position = dp}, amount = get_amount()} | ||||
|                         ore_entities[#ore_entities + 1] = { ore = { name = name, position = dp }, amount = get_amount() } | ||||
|                         break | ||||
|                     end | ||||
|                 end | ||||
|             else | ||||
|                 -- existing ore of same name | ||||
|                 if surface.can_fast_replace({name = name, position = p, force = 'neutral'}) then | ||||
|                 if surface.can_fast_replace({ name = name, position = p, force = 'neutral' }) then | ||||
|                     local amount = get_amount() | ||||
|                     local deposit = surface.find_entity(name, p) | ||||
|                     if deposit ~= nil then | ||||
| @@ -86,7 +86,7 @@ local function draw_chain(surface, count, ore, ore_entities, ore_positions) | ||||
|                             position.x = p.x | ||||
|                             position.y = p.y | ||||
|                             ore_positions[p.x .. '_' .. p.y] = true | ||||
|                             ore_entities[#ore_entities + 1] = {ore = {name = name, position = dp}, amount = amount, fast_replace = true} | ||||
|                             ore_entities[#ore_entities + 1] = { ore = { name = name, position = dp }, amount = amount, fast_replace = true } | ||||
|                             break | ||||
|                         end | ||||
|                     end | ||||
| @@ -102,7 +102,7 @@ local function ore_vein(event) | ||||
|     local size = size_raffle[math_random(1, #size_raffle)] | ||||
|     local ore = this.rocks_yield_ore_veins.raffle[math_random(1, #this.rocks_yield_ore_veins.raffle)] | ||||
|     local icon | ||||
|     if game.entity_prototypes[ore] then | ||||
|     if prototypes.entity[ore] then | ||||
|         icon = '[img=entity/' .. ore .. ']' | ||||
|     else | ||||
|         icon = ' ' | ||||
| @@ -114,12 +114,12 @@ local function ore_vein(event) | ||||
|             p.print( | ||||
|                 { | ||||
|                     'rocks_yield_ore_veins.player_print', | ||||
|                     {'rocks_yield_ore_veins_colors.' .. ore}, | ||||
|                     {'rocks_yield_ore_veins.' .. size[1]}, | ||||
|                     {'rocks_yield_ore_veins.' .. ore}, | ||||
|                     { 'rocks_yield_ore_veins_colors.' .. ore }, | ||||
|                     { 'rocks_yield_ore_veins.' .. size[1] }, | ||||
|                     { 'rocks_yield_ore_veins.' .. ore }, | ||||
|                     icon | ||||
|                 }, | ||||
|                 {r = 0.80, g = 0.80, b = 0.80} | ||||
|                 { r = 0.80, g = 0.80, b = 0.80 } | ||||
|             ) | ||||
|         else | ||||
|             if p.force == player.force then | ||||
| @@ -127,31 +127,31 @@ local function ore_vein(event) | ||||
|                     { | ||||
|                         'rocks_yield_ore_veins.game_print', | ||||
|                         '[color=' .. player.chat_color.r .. ',' .. player.chat_color.g .. ',' .. player.chat_color.b .. ']' .. player.name .. '[/color]', | ||||
|                         {'rocks_yield_ore_veins.' .. size[1]}, | ||||
|                         {'rocks_yield_ore_veins.' .. ore}, | ||||
|                         { 'rocks_yield_ore_veins.' .. size[1] }, | ||||
|                         { 'rocks_yield_ore_veins.' .. ore }, | ||||
|                         icon | ||||
|                     }, | ||||
|                     {r = 0.80, g = 0.80, b = 0.80} | ||||
|                     { r = 0.80, g = 0.80, b = 0.80 } | ||||
|                 ) | ||||
|             end | ||||
|         end | ||||
|     end | ||||
|  | ||||
|     local position = event.entity.position | ||||
|     local ore_entities = {{ore = {name = ore, position = {x = position.x, y = position.y}}, amount = get_amount()}} | ||||
|     local ore_entities = { { ore = { name = ore, position = { x = position.x, y = position.y } }, amount = get_amount() } } | ||||
|     if ore == 'mixed' then | ||||
|         ore_entities = { | ||||
|             { | ||||
|                 ore = { | ||||
|                     name = this.rocks_yield_ore_veins.mixed_ores[math_random(1, #this.rocks_yield_ore_veins.mixed_ores)], | ||||
|                     position = {x = position.x, y = position.y} | ||||
|                     position = { x = position.x, y = position.y } | ||||
|                 }, | ||||
|                 amount = get_amount() | ||||
|             } | ||||
|         } | ||||
|     end | ||||
|  | ||||
|     local ore_positions = {[event.entity.position.x .. '_' .. event.entity.position.y] = true} | ||||
|     local ore_positions = { [event.entity.position.x .. '_' .. event.entity.position.y] = true } | ||||
|     local count = math_random(size[2], size[3]) | ||||
|  | ||||
|     for _ = 1, 128, 1 do | ||||
|   | ||||
| @@ -21,10 +21,10 @@ local function on_built_entity(event) | ||||
|                 name = 'flying-text', | ||||
|                 position = entity.position, | ||||
|                 text = 'You are not acclimated to this technology!', | ||||
|                 color = {r = 0.77, g = 0.0, b = 0.0} | ||||
|                 color = { r = 0.77, g = 0.0, b = 0.0 } | ||||
|             } | ||||
|         ) | ||||
|         player.insert({name = 'laser-turret', count = 1}) | ||||
|         player.insert({ name = 'laser-turret', count = 1 }) | ||||
|         entity.destroy() | ||||
|         return | ||||
|     end | ||||
| @@ -37,10 +37,10 @@ local function on_built_entity(event) | ||||
|                 name = 'flying-text', | ||||
|                 position = entity.position, | ||||
|                 text = 'You do not have enough slots!', | ||||
|                 color = {r = 0.77, g = 0.0, b = 0.0} | ||||
|                 color = { r = 0.77, g = 0.0, b = 0.0 } | ||||
|             } | ||||
|         ) | ||||
|         player.insert({name = 'laser-turret', count = 1}) | ||||
|         player.insert({ name = 'laser-turret', count = 1 }) | ||||
|         entity.destroy() | ||||
|         return | ||||
|     end | ||||
| @@ -56,7 +56,7 @@ local function on_built_entity(event) | ||||
|             name = 'flying-text', | ||||
|             position = entity.position, | ||||
|             text = 'Using ' .. locations .. '/' .. slots .. ' slots', | ||||
|             color = {r = 1.0, g = 1.0, b = 1.0} | ||||
|             color = { r = 1.0, g = 1.0, b = 1.0 } | ||||
|         } | ||||
|     ) | ||||
| end | ||||
| @@ -81,10 +81,10 @@ local function on_robot_built_entity(event) | ||||
|                 name = 'flying-text', | ||||
|                 position = entity.position, | ||||
|                 text = 'Robot not acclimated to this technology!', | ||||
|                 color = {r = 0.77, g = 0.0, b = 0.0} | ||||
|                 color = { r = 0.77, g = 0.0, b = 0.0 } | ||||
|             } | ||||
|         ) | ||||
|         robot.insert({name = 'laser-turret', count = 1}) | ||||
|         robot.insert({ name = 'laser-turret', count = 1 }) | ||||
|         entity.destroy() | ||||
|         return | ||||
|     end | ||||
| @@ -96,10 +96,10 @@ local function on_robot_built_entity(event) | ||||
|                 name = 'flying-text', | ||||
|                 position = entity.position, | ||||
|                 text = 'Town does not have enough slots!', | ||||
|                 color = {r = 0.77, g = 0.0, b = 0.0} | ||||
|                 color = { r = 0.77, g = 0.0, b = 0.0 } | ||||
|             } | ||||
|         ) | ||||
|         robot.insert({name = 'laser-turret', count = 1}) | ||||
|         robot.insert({ name = 'laser-turret', count = 1 }) | ||||
|         entity.destroy() | ||||
|         return | ||||
|     end | ||||
| @@ -115,7 +115,7 @@ local function on_robot_built_entity(event) | ||||
|             name = 'flying-text', | ||||
|             position = entity.position, | ||||
|             text = 'Using ' .. locations .. '/' .. slots .. ' slots', | ||||
|             color = {r = 1.0, g = 1.0, b = 1.0} | ||||
|             color = { r = 1.0, g = 1.0, b = 1.0 } | ||||
|         } | ||||
|     ) | ||||
| end | ||||
|   | ||||
| @@ -77,47 +77,47 @@ local rock_raffle = { 'sand-rock-big', 'sand-rock-big', 'rock-big', 'rock-big', | ||||
|  | ||||
| local function secret_shop(pos, surface) | ||||
|     local secret_market_items = { | ||||
|         { price = { { 'raw-fish', math_random(75, 125) } }, offer = { type = 'give-item', item = 'combat-shotgun' } }, | ||||
|         { price = { { 'raw-fish', math_random(40, 60) } }, offer = { type = 'give-item', item = 'rocket-launcher' } }, | ||||
|         { price = { { 'raw-fish', math_random(1, 2) } }, offer = { type = 'give-item', item = 'piercing-rounds-magazine' } }, | ||||
|         { price = { { 'raw-fish', math_random(3, 6) } }, offer = { type = 'give-item', item = 'uranium-rounds-magazine' } }, | ||||
|         { price = { { 'raw-fish', math_random(1, 4) } }, offer = { type = 'give-item', item = 'piercing-shotgun-shell' } }, | ||||
|         { price = { { 'raw-fish', math_random(1, 2) } }, offer = { type = 'give-item', item = 'rocket' } }, | ||||
|         { price = { { 'raw-fish', math_random(2, 3) } }, offer = { type = 'give-item', item = 'explosive-rocket' } }, | ||||
|         { price = { { 'raw-fish', math_random(1, 2) } }, offer = { type = 'give-item', item = 'explosive-cannon-shell' } }, | ||||
|         { price = { { 'raw-fish', math_random(3, 6) } }, offer = { type = 'give-item', item = 'explosive-uranium-cannon-shell' } }, | ||||
|         { price = { { 'raw-fish', math_random(4, 8) } }, offer = { type = 'give-item', item = 'cluster-grenade' } }, | ||||
|         { price = { { 'raw-fish', math_random(1, 2) } }, offer = { type = 'give-item', item = 'land-mine' } }, | ||||
|         { price = { { 'raw-fish', math_random(25, 50) } }, offer = { type = 'give-item', item = 'heavy-armor' } }, | ||||
|         { price = { { 'raw-fish', math_random(75, 125) } },  offer = { type = 'give-item', item = 'combat-shotgun' } }, | ||||
|         { price = { { 'raw-fish', math_random(40, 60) } },   offer = { type = 'give-item', item = 'rocket-launcher' } }, | ||||
|         { price = { { 'raw-fish', math_random(1, 2) } },     offer = { type = 'give-item', item = 'piercing-rounds-magazine' } }, | ||||
|         { price = { { 'raw-fish', math_random(3, 6) } },     offer = { type = 'give-item', item = 'uranium-rounds-magazine' } }, | ||||
|         { price = { { 'raw-fish', math_random(1, 4) } },     offer = { type = 'give-item', item = 'piercing-shotgun-shell' } }, | ||||
|         { price = { { 'raw-fish', math_random(1, 2) } },     offer = { type = 'give-item', item = 'rocket' } }, | ||||
|         { price = { { 'raw-fish', math_random(2, 3) } },     offer = { type = 'give-item', item = 'explosive-rocket' } }, | ||||
|         { price = { { 'raw-fish', math_random(1, 2) } },     offer = { type = 'give-item', item = 'explosive-cannon-shell' } }, | ||||
|         { price = { { 'raw-fish', math_random(3, 6) } },     offer = { type = 'give-item', item = 'explosive-uranium-cannon-shell' } }, | ||||
|         { price = { { 'raw-fish', math_random(4, 8) } },     offer = { type = 'give-item', item = 'cluster-grenade' } }, | ||||
|         { price = { { 'raw-fish', math_random(1, 2) } },     offer = { type = 'give-item', item = 'land-mine' } }, | ||||
|         { price = { { 'raw-fish', math_random(25, 50) } },   offer = { type = 'give-item', item = 'heavy-armor' } }, | ||||
|         { price = { { 'raw-fish', math_random(125, 250) } }, offer = { type = 'give-item', item = 'modular-armor' } }, | ||||
|         { price = { { 'raw-fish', math_random(300, 600) } }, offer = { type = 'give-item', item = 'power-armor' } }, | ||||
|         { price = { { 'raw-fish', math_random(300, 600) } }, offer = { type = 'give-item', item = 'fusion-reactor-equipment' } }, | ||||
|         { price = { { 'raw-fish', math_random(20, 40) } }, offer = { type = 'give-item', item = 'battery-equipment' } }, | ||||
|         { price = { { 'raw-fish', math_random(20, 40) } },   offer = { type = 'give-item', item = 'battery-equipment' } }, | ||||
|         { price = { { 'raw-fish', math_random(100, 150) } }, offer = { type = 'give-item', item = 'belt-immunity-equipment' } }, | ||||
|         { price = { { 'raw-fish', math_random(40, 80) } }, offer = { type = 'give-item', item = 'night-vision-equipment' } }, | ||||
|         { price = { { 'raw-fish', math_random(60, 120) } }, offer = { type = 'give-item', item = 'exoskeleton-equipment' } }, | ||||
|         { price = { { 'raw-fish', math_random(60, 120) } }, offer = { type = 'give-item', item = 'personal-roboport-equipment' } }, | ||||
|         { price = { { 'raw-fish', math_random(3, 9) } }, offer = { type = 'give-item', item = 'construction-robot' } }, | ||||
|         { price = { { 'raw-fish', math_random(40, 80) } },   offer = { type = 'give-item', item = 'night-vision-equipment' } }, | ||||
|         { price = { { 'raw-fish', math_random(60, 120) } },  offer = { type = 'give-item', item = 'exoskeleton-equipment' } }, | ||||
|         { price = { { 'raw-fish', math_random(60, 120) } },  offer = { type = 'give-item', item = 'personal-roboport-equipment' } }, | ||||
|         { price = { { 'raw-fish', math_random(3, 9) } },     offer = { type = 'give-item', item = 'construction-robot' } }, | ||||
|         { price = { { 'raw-fish', math_random(100, 200) } }, offer = { type = 'give-item', item = 'energy-shield-equipment' } }, | ||||
|         { price = { { 'raw-fish', math_random(200, 400) } }, offer = { type = 'give-item', item = 'personal-laser-defense-equipment' } }, | ||||
|         { price = { { 'raw-fish', math_random(30, 60) } }, offer = { type = 'give-item', item = 'loader' } }, | ||||
|         { price = { { 'raw-fish', math_random(50, 80) } }, offer = { type = 'give-item', item = 'fast-loader' } }, | ||||
|         { price = { { 'raw-fish', math_random(70, 100) } }, offer = { type = 'give-item', item = 'express-loader' } }, | ||||
|         { price = { { 'raw-fish', math_random(30, 60) } }, offer = { type = 'give-item', item = 'locomotive' } }, | ||||
|         { price = { { 'raw-fish', math_random(15, 35) } }, offer = { type = 'give-item', item = 'cargo-wagon' } }, | ||||
|         { price = { { 'raw-fish', math_random(1, 4) } }, offer = { type = 'give-item', item = 'grenade' } }, | ||||
|         { price = { { 'raw-fish', 1 } },                 offer = { type = 'give-item', item = 'rail', count = 4 } }, | ||||
|         { price = { { 'raw-fish', math_random(30, 60) } },   offer = { type = 'give-item', item = 'loader' } }, | ||||
|         { price = { { 'raw-fish', math_random(50, 80) } },   offer = { type = 'give-item', item = 'fast-loader' } }, | ||||
|         { price = { { 'raw-fish', math_random(70, 100) } },  offer = { type = 'give-item', item = 'express-loader' } }, | ||||
|         { price = { { 'raw-fish', math_random(30, 60) } },   offer = { type = 'give-item', item = 'locomotive' } }, | ||||
|         { price = { { 'raw-fish', math_random(15, 35) } },   offer = { type = 'give-item', item = 'cargo-wagon' } }, | ||||
|         { price = { { 'raw-fish', math_random(1, 4) } },     offer = { type = 'give-item', item = 'grenade' } }, | ||||
|         { price = { { 'raw-fish', 1 } },                     offer = { type = 'give-item', item = 'rail', count = 4 } }, | ||||
|         --	{price = {{"raw-fish", 1}}, offer = {type = 'give-item', item = 'rail-signal', count = 2}}, | ||||
|         --	{price = {{"raw-fish", 1}}, offer = {type = 'give-item', item = 'rail-chain-signal', count = 2}}, | ||||
|         { price = { { 'raw-fish', 5 } },                 offer = { type = 'give-item', item = 'train-stop' } }, | ||||
|         { price = { { 'raw-fish', 1 } },                 offer = { type = 'give-item', item = 'small-lamp' } }, | ||||
|         { price = { { 'raw-fish', 2 } },                 offer = { type = 'give-item', item = 'firearm-magazine' } }, | ||||
|         { price = { { 'raw-fish', 1 } },                 offer = { type = 'give-item', item = 'wood', count = math_random(25, 75) } }, | ||||
|         { price = { { 'raw-fish', 1 } },                 offer = { type = 'give-item', item = 'iron-ore', count = math_random(25, 75) } }, | ||||
|         { price = { { 'raw-fish', 1 } },                 offer = { type = 'give-item', item = 'copper-ore', count = math_random(25, 75) } }, | ||||
|         { price = { { 'raw-fish', 1 } },                 offer = { type = 'give-item', item = 'stone', count = math_random(25, 75) } }, | ||||
|         { price = { { 'raw-fish', 1 } },                 offer = { type = 'give-item', item = 'coal', count = math_random(25, 75) } }, | ||||
|         { price = { { 'raw-fish', 1 } },                 offer = { type = 'give-item', item = 'uranium-ore', count = math_random(25, 75) } } | ||||
|         { price = { { 'raw-fish', 5 } },                     offer = { type = 'give-item', item = 'train-stop' } }, | ||||
|         { price = { { 'raw-fish', 1 } },                     offer = { type = 'give-item', item = 'small-lamp' } }, | ||||
|         { price = { { 'raw-fish', 2 } },                     offer = { type = 'give-item', item = 'firearm-magazine' } }, | ||||
|         { price = { { 'raw-fish', 1 } },                     offer = { type = 'give-item', item = 'wood', count = math_random(25, 75) } }, | ||||
|         { price = { { 'raw-fish', 1 } },                     offer = { type = 'give-item', item = 'iron-ore', count = math_random(25, 75) } }, | ||||
|         { price = { { 'raw-fish', 1 } },                     offer = { type = 'give-item', item = 'copper-ore', count = math_random(25, 75) } }, | ||||
|         { price = { { 'raw-fish', 1 } },                     offer = { type = 'give-item', item = 'stone', count = math_random(25, 75) } }, | ||||
|         { price = { { 'raw-fish', 1 } },                     offer = { type = 'give-item', item = 'coal', count = math_random(25, 75) } }, | ||||
|         { price = { { 'raw-fish', 1 } },                     offer = { type = 'give-item', item = 'uranium-ore', count = math_random(25, 75) } } | ||||
|     } | ||||
|     secret_market_items = shuffle(secret_market_items) | ||||
|  | ||||
| @@ -270,7 +270,7 @@ local function regenerate_decoratives_for_chunk(surface, position) | ||||
|     local chunk = get_chunk_position(position) | ||||
|     surface.destroy_decoratives({ area = { { chunk.x * 32, chunk.y * 32 }, { chunk.x * 32 + 32, chunk.y * 32 + 32 } } }) | ||||
|     local decorative_names = {} | ||||
|     for k, v in pairs(game.decorative_prototypes) do | ||||
|     for k, v in pairs(prototypes.decorative) do | ||||
|         if v.autoplace_specification then | ||||
|             decorative_names[#decorative_names + 1] = k | ||||
|         end | ||||
|   | ||||
| @@ -187,7 +187,7 @@ local function regenerate_decoratives(surface, position) | ||||
|     end | ||||
|     surface.destroy_decoratives({ area = { { chunk.x * 32, chunk.y * 32 }, { chunk.x * 32 + 32, chunk.y * 32 + 32 } } }) | ||||
|     local decorative_names = {} | ||||
|     for k, v in pairs(game.decorative_prototypes) do | ||||
|     for k, v in pairs(prototypes.decorative) do | ||||
|         if v.autoplace_specification then | ||||
|             decorative_names[#decorative_names + 1] = k | ||||
|         end | ||||
|   | ||||
| @@ -232,7 +232,7 @@ local function generate_north_chunk(area, surface) | ||||
|     end | ||||
|  | ||||
|     local decorative_names = {} | ||||
|     for k, v in pairs(game.decorative_prototypes) do | ||||
|     for k, v in pairs(prototypes.decorative) do | ||||
|         if v.autoplace_specification then | ||||
|             decorative_names[#decorative_names + 1] = k | ||||
|         end | ||||
|   | ||||
| @@ -15,7 +15,7 @@ local random = math.random | ||||
|  | ||||
| Global.register( | ||||
|     this, | ||||
|     function(tbl) | ||||
|     function (tbl) | ||||
|         this = tbl | ||||
|     end | ||||
| ) | ||||
| @@ -39,25 +39,25 @@ local tile_blacklist = { | ||||
| } | ||||
|  | ||||
| local loot = { | ||||
|     {{name = 'flamethrower-ammo', count = 16}, weight = 2}, | ||||
|     {{name = 'piercing-shotgun-shell', count = 16}, weight = 2}, | ||||
|     {{name = 'explosive-rocket', count = 8}, weight = 2}, | ||||
|     {{name = 'rocket', count = 8}, weight = 2}, | ||||
|     {{name = 'grenade', count = 16}, weight = 2}, | ||||
|     {{name = 'cluster-grenade', count = 8}, weight = 2}, | ||||
|     {{name = 'defender-capsule', count = 6}, weight = 1}, | ||||
|     {{name = 'distractor-capsule', count = 3}, weight = 1}, | ||||
|     {{name = 'cannon-shell', count = 8}, weight = 16}, | ||||
|     {{name = 'explosive-cannon-shell', count = 8}, weight = 16}, | ||||
|     {{name = 'uranium-cannon-shell', count = 8}, weight = 6}, | ||||
|     {{name = 'explosive-uranium-cannon-shell', count = 8}, weight = 6}, | ||||
|     {{name = 'energy-shield-equipment', count = 1}, weight = 2}, | ||||
|     {{name = 'fusion-reactor-equipment', count = 1}, weight = 2}, | ||||
|     {{name = 'repair-pack', count = 1}, weight = 6}, | ||||
|     {{name = 'coal', count = 16}, weight = 3}, | ||||
|     {{name = 'nuclear-fuel', count = 1}, weight = 1}, | ||||
|     {{name = 'gate', count = 16}, weight = 2}, | ||||
|     {{name = 'stone-wall', count = 16}, weight = 2} | ||||
|     { { name = 'flamethrower-ammo', count = 16 },             weight = 2 }, | ||||
|     { { name = 'piercing-shotgun-shell', count = 16 },        weight = 2 }, | ||||
|     { { name = 'explosive-rocket', count = 8 },               weight = 2 }, | ||||
|     { { name = 'rocket', count = 8 },                         weight = 2 }, | ||||
|     { { name = 'grenade', count = 16 },                       weight = 2 }, | ||||
|     { { name = 'cluster-grenade', count = 8 },                weight = 2 }, | ||||
|     { { name = 'defender-capsule', count = 6 },               weight = 1 }, | ||||
|     { { name = 'distractor-capsule', count = 3 },             weight = 1 }, | ||||
|     { { name = 'cannon-shell', count = 8 },                   weight = 16 }, | ||||
|     { { name = 'explosive-cannon-shell', count = 8 },         weight = 16 }, | ||||
|     { { name = 'uranium-cannon-shell', count = 8 },           weight = 6 }, | ||||
|     { { name = 'explosive-uranium-cannon-shell', count = 8 }, weight = 6 }, | ||||
|     { { name = 'energy-shield-equipment', count = 1 },        weight = 2 }, | ||||
|     { { name = 'fusion-reactor-equipment', count = 1 },       weight = 2 }, | ||||
|     { { name = 'repair-pack', count = 1 },                    weight = 6 }, | ||||
|     { { name = 'coal', count = 16 },                          weight = 3 }, | ||||
|     { { name = 'nuclear-fuel', count = 1 },                   weight = 1 }, | ||||
|     { { name = 'gate', count = 16 },                          weight = 2 }, | ||||
|     { { name = 'stone-wall', count = 16 },                    weight = 2 } | ||||
| } | ||||
| local loot_raffle = {} | ||||
| for _, item in pairs(loot) do | ||||
| @@ -81,10 +81,10 @@ local function create_gui(player) | ||||
|         return | ||||
|     end | ||||
|  | ||||
|     frame = player.gui.left.add({type = 'frame', name = 'status_players', direction = 'vertical'}) | ||||
|     frame = player.gui.left.add({ type = 'frame', name = 'status_players', direction = 'vertical' }) | ||||
|  | ||||
|     local lbl = frame.add({type = 'label', caption = 'Waiting for more players before round starts.'}) | ||||
|     lbl.style.font_color = {r = 0.98, g = 0.66, b = 0.22} | ||||
|     local lbl = frame.add({ type = 'label', caption = 'Waiting for more players before round starts.' }) | ||||
|     lbl.style.font_color = { r = 0.98, g = 0.66, b = 0.22 } | ||||
|     lbl.style.font = 'default-listbox' | ||||
|  | ||||
|     frame.visible = false | ||||
| @@ -142,9 +142,9 @@ local function create_tank_battle_score_gui() | ||||
|  | ||||
|     local scores = {} | ||||
|     Core.iter_connected_players( | ||||
|         function(player_amp) | ||||
|         function (player_amp) | ||||
|             if this.tank_battles_score[player_amp.index] then | ||||
|                 insert(scores, {name = player_amp.name, score = this.tank_battles_score[player_amp.index], color = player_amp.color}) | ||||
|                 insert(scores, { name = player_amp.name, score = this.tank_battles_score[player_amp.index], color = player_amp.color }) | ||||
|             end | ||||
|         end | ||||
|     ) | ||||
| @@ -154,19 +154,19 @@ local function create_tank_battle_score_gui() | ||||
|     end | ||||
|  | ||||
|     Core.iter_connected_players( | ||||
|         function(player) | ||||
|         function (player) | ||||
|             local frame = player.gui.left['tank_battle_score'] | ||||
|             if frame and frame.valid then | ||||
|                 frame.destroy() | ||||
|             end | ||||
|  | ||||
|             frame = player.gui.left.add({type = 'frame', name = 'tank_battle_score', direction = 'vertical'}) | ||||
|             frame = player.gui.left.add({ type = 'frame', name = 'tank_battle_score', direction = 'vertical' }) | ||||
|  | ||||
|             local lbl = frame.add({type = 'label', caption = 'Won rounds'}) | ||||
|             lbl.style.font_color = {r = 0.98, g = 0.66, b = 0.22} | ||||
|             local lbl = frame.add({ type = 'label', caption = 'Won rounds' }) | ||||
|             lbl.style.font_color = { r = 0.98, g = 0.66, b = 0.22 } | ||||
|             lbl.style.font = 'default-listbox' | ||||
|  | ||||
|             local t = frame.add({type = 'table', column_count = 2}) | ||||
|             local t = frame.add({ type = 'table', column_count = 2 }) | ||||
|  | ||||
|             for _ = 1, #scores, 1 do | ||||
|                 for y = 1, #scores, 1 do | ||||
| @@ -186,11 +186,11 @@ local function create_tank_battle_score_gui() | ||||
|                     local player_name = scores[i].name | ||||
|                     local player_color = scores[i].color | ||||
|                     local player_score = scores[i].score | ||||
|                     local l = t.add({type = 'label', caption = player_name}) | ||||
|                     player_color = {r = player_color.r * 0.6 + 0.4, g = player_color.g * 0.6 + 0.4, b = player_color.b * 0.6 + 0.4, a = 1} | ||||
|                     local l = t.add({ type = 'label', caption = player_name }) | ||||
|                     player_color = { r = player_color.r * 0.6 + 0.4, g = player_color.g * 0.6 + 0.4, b = player_color.b * 0.6 + 0.4, a = 1 } | ||||
|                     l.style.font_color = player_color | ||||
|                     l.style.font = 'default-bold' | ||||
|                     t.add({type = 'label', caption = player_score}) | ||||
|                     t.add({ type = 'label', caption = player_score }) | ||||
|                 end | ||||
|             end | ||||
|         end | ||||
| @@ -202,20 +202,20 @@ local function get_valid_random_spawn_position(surface, chunks) | ||||
|  | ||||
|     for _, chunk in pairs(chunks) do | ||||
|         if chunk.x * 32 < arena_size and chunk.y * 32 < arena_size and chunk.x * 32 >= arena_size * -1 and chunk.y * 32 >= arena_size * -1 then | ||||
|             local area = {{chunk.x * 32 - 64, chunk.y * 32 - 64}, {chunk.x * 32 + 64, chunk.y * 32 + 64}} | ||||
|             if surface.count_entities_filtered({name = 'tank', area = area}) == 0 then | ||||
|                 local pos = surface.find_non_colliding_position('tank', {chunk.x * 32 + 16, chunk.y * 32 + 16}, 16, 8) | ||||
|             local area = { { chunk.x * 32 - 64, chunk.y * 32 - 64 }, { chunk.x * 32 + 64, chunk.y * 32 + 64 } } | ||||
|             if surface.count_entities_filtered({ name = 'tank', area = area }) == 0 then | ||||
|                 local pos = surface.find_non_colliding_position('tank', { chunk.x * 32 + 16, chunk.y * 32 + 16 }, 16, 8) | ||||
|                 return pos | ||||
|             end | ||||
|         end | ||||
|     end | ||||
|  | ||||
|     local pos = surface.find_non_colliding_position('tank', {0, 0}, 32, 4) | ||||
|     local pos = surface.find_non_colliding_position('tank', { 0, 0 }, 32, 4) | ||||
|     if pos then | ||||
|         return pos | ||||
|     end | ||||
|  | ||||
|     return {0, 0} | ||||
|     return { 0, 0 } | ||||
| end | ||||
|  | ||||
| local function put_players_into_arena() | ||||
| @@ -223,11 +223,11 @@ local function put_players_into_arena() | ||||
|  | ||||
|     local chunks = {} | ||||
|     for chunk in surface.get_chunks() do | ||||
|         insert(chunks, {x = chunk.x, y = chunk.y}) | ||||
|         insert(chunks, { x = chunk.x, y = chunk.y }) | ||||
|     end | ||||
|  | ||||
|     Core.iter_connected_players( | ||||
|         function(player) | ||||
|         function (player) | ||||
|             local permissions_group = game.permissions.get_group('Default') | ||||
|             permissions_group.add_player(player.name) | ||||
|  | ||||
| @@ -238,22 +238,22 @@ local function put_players_into_arena() | ||||
|  | ||||
|             player.create_character() | ||||
|  | ||||
|             player.insert({name = 'combat-shotgun', count = 1}) | ||||
|             player.insert({name = 'rocket-launcher', count = 1}) | ||||
|             player.insert({name = 'flamethrower', count = 1}) | ||||
|             player.insert({ name = 'combat-shotgun', count = 1 }) | ||||
|             player.insert({ name = 'rocket-launcher', count = 1 }) | ||||
|             player.insert({ name = 'flamethrower', count = 1 }) | ||||
|  | ||||
|             local pos = get_valid_random_spawn_position(surface, chunks) | ||||
|  | ||||
|             player.force.chart(surface, {{x = -1 * arena_size, y = -1 * arena_size}, {x = arena_size, y = arena_size}}) | ||||
|             player.force.chart(surface, { { x = -1 * arena_size, y = -1 * arena_size }, { x = arena_size, y = arena_size } }) | ||||
|  | ||||
|             if pos then | ||||
|                 player.teleport(pos, surface) | ||||
|             else | ||||
|                 pos = get_valid_random_spawn_position(surface, chunks) | ||||
|             end | ||||
|             local tank = surface.create_entity({name = 'tank', force = game.forces[player.name], position = pos}) | ||||
|             tank.insert({name = 'coal', count = 24}) | ||||
|             tank.insert({name = 'cannon-shell', count = 16}) | ||||
|             local tank = surface.create_entity({ name = 'tank', force = game.forces[player.name], position = pos }) | ||||
|             tank.insert({ name = 'coal', count = 24 }) | ||||
|             tank.insert({ name = 'cannon-shell', count = 16 }) | ||||
|             tank.set_driver(player) | ||||
|         end | ||||
|     ) | ||||
| @@ -261,7 +261,7 @@ end | ||||
|  | ||||
| local function get_arena_layout_modifiers() | ||||
|     this.arena_layout_modifiers = {} | ||||
|     local proto = game.entity_prototypes | ||||
|     local proto = prototypes.entity | ||||
|  | ||||
|     local tree_raffle = {} | ||||
|     for _, e in pairs(proto) do | ||||
| @@ -274,7 +274,7 @@ local function get_arena_layout_modifiers() | ||||
|     this.arena_layout_modifiers.arena_tree_noise = random(0, 75) * 0.01 | ||||
|  | ||||
|     local entity_raffle = {} | ||||
|     local types = {'furnace', 'assembling-machine', 'power-switch', 'programmable-speaker', 'reactor'} | ||||
|     local types = { 'furnace', 'assembling-machine', 'power-switch', 'programmable-speaker', 'reactor' } | ||||
|     for _, e in pairs(proto) do | ||||
|         for _, t in pairs(types) do | ||||
|             if e.type == t then | ||||
| @@ -286,7 +286,7 @@ local function get_arena_layout_modifiers() | ||||
|  | ||||
|     local tile_raffle = {} | ||||
|  | ||||
|     for _, t in pairs(game.tile_prototypes) do | ||||
|     for _, t in pairs(prototypes.tile) do | ||||
|         if not tile_blacklist[t.name] then | ||||
|             insert(tile_raffle, t.name) | ||||
|         end | ||||
| @@ -298,12 +298,12 @@ end | ||||
| local function regenerate_arena() | ||||
|     local surface = game.get_surface('nauvis') | ||||
|     for chunk in surface.get_chunks() do | ||||
|         surface.set_chunk_generated_status({x = chunk.x, y = chunk.y}, defines.chunk_generated_status.custom_tiles) | ||||
|         surface.set_chunk_generated_status({ x = chunk.x, y = chunk.y }, defines.chunk_generated_status.custom_tiles) | ||||
|     end | ||||
|  | ||||
|     this.noise_seed = nil | ||||
|     ---@diagnostic disable-next-line: param-type-mismatch | ||||
|     surface.request_to_generate_chunks({0, 0}, math.ceil(arena_size / 32) + 3) | ||||
|     surface.request_to_generate_chunks({ 0, 0 }, math.ceil(arena_size / 32) + 3) | ||||
|  | ||||
|     get_arena_layout_modifiers() | ||||
|  | ||||
| @@ -331,12 +331,12 @@ local function shrink_arena() | ||||
|  | ||||
|     for x = arena_size * -1, arena_size, 1 do | ||||
|         for y = current_arena_size * -1 - shrink_width, current_arena_size * -1, 1 do | ||||
|             local pos = {x = x, y = y} | ||||
|             local pos = { x = x, y = y } | ||||
|             local tile = surface.get_tile(pos.x, pos.y) | ||||
|             if tile.name ~= 'water' and tile.name ~= 'deepwater' then | ||||
|                 if x > current_arena_size or y > current_arena_size or x < current_arena_size * -1 or y < current_arena_size * -1 then | ||||
|                     if random(1, 3) ~= 1 then | ||||
|                         insert(tiles, {name = 'water', position = pos}) | ||||
|                         insert(tiles, { name = 'water', position = pos }) | ||||
|                     end | ||||
|                 end | ||||
|             end | ||||
| @@ -345,12 +345,12 @@ local function shrink_arena() | ||||
|  | ||||
|     for x = arena_size * -1, arena_size, 1 do | ||||
|         for y = current_arena_size, current_arena_size + shrink_width, 1 do | ||||
|             local pos = {x = x, y = y} | ||||
|             local pos = { x = x, y = y } | ||||
|             local tile = surface.get_tile(pos.x, pos.y) | ||||
|             if tile.name ~= 'water' and tile.name ~= 'deepwater' then | ||||
|                 if x > current_arena_size or y > current_arena_size or x < current_arena_size * -1 or y < current_arena_size * -1 then | ||||
|                     if random(1, 3) ~= 1 then | ||||
|                         insert(tiles, {name = 'water', position = pos}) | ||||
|                         insert(tiles, { name = 'water', position = pos }) | ||||
|                     end | ||||
|                 end | ||||
|             end | ||||
| @@ -359,12 +359,12 @@ local function shrink_arena() | ||||
|  | ||||
|     for x = current_arena_size * -1 - shrink_width, current_arena_size * -1, 1 do | ||||
|         for y = arena_size * -1, arena_size, 1 do | ||||
|             local pos = {x = x, y = y} | ||||
|             local pos = { x = x, y = y } | ||||
|             local tile = surface.get_tile(pos.x, pos.y) | ||||
|             if tile.name ~= 'water' and tile.name ~= 'deepwater' then | ||||
|                 if x > current_arena_size or y > current_arena_size or x < current_arena_size * -1 or y < current_arena_size * -1 then | ||||
|                     if random(1, 3) ~= 1 then | ||||
|                         insert(tiles, {name = 'water', position = pos}) | ||||
|                         insert(tiles, { name = 'water', position = pos }) | ||||
|                     end | ||||
|                 end | ||||
|             end | ||||
| @@ -373,12 +373,12 @@ local function shrink_arena() | ||||
|  | ||||
|     for x = current_arena_size, current_arena_size + shrink_width, 1 do | ||||
|         for y = arena_size * -1, arena_size, 1 do | ||||
|             local pos = {x = x, y = y} | ||||
|             local pos = { x = x, y = y } | ||||
|             local tile = surface.get_tile(pos.x, pos.y) | ||||
|             if tile.name ~= 'water' and tile.name ~= 'deepwater' then | ||||
|                 if x > current_arena_size or y > current_arena_size or x < current_arena_size * -1 or y < current_arena_size * -1 then | ||||
|                     if random(1, 3) ~= 1 then | ||||
|                         insert(tiles, {name = 'water', position = pos}) | ||||
|                         insert(tiles, { name = 'water', position = pos }) | ||||
|                     end | ||||
|                 end | ||||
|             end | ||||
| @@ -395,49 +395,49 @@ local function get_arena_entity(surface, pos) | ||||
|     local noise2 = get_noise('rocks_2', pos) | ||||
|  | ||||
|     if noise > -0.1 and noise < 0.1 and noise2 > -0.3 and noise2 < 0.3 then | ||||
|         return {name = 'rock-big', position = pos} | ||||
|         return { name = 'rock-big', position = pos } | ||||
|     end | ||||
|  | ||||
|     if random(1, 16) == 1 and noise2 > 0.78 then | ||||
|         if surface.can_place_entity({name = 'wooden-chest', position = pos, force = 'enemy'}) then | ||||
|             return {name = 'wooden-chest', position = pos, force = 'enemy'} | ||||
|         if surface.can_place_entity({ name = 'wooden-chest', position = pos, force = 'enemy' }) then | ||||
|             return { name = 'wooden-chest', position = pos, force = 'enemy' } | ||||
|         end | ||||
|     end | ||||
|  | ||||
|     if random(1, 16) == 1 and noise2 < -0.78 then | ||||
|         if surface.can_place_entity({name = 'wooden-chest', position = pos, force = 'enemy'}) then | ||||
|             return {name = 'wooden-chest', position = pos, force = 'enemy'} | ||||
|         if surface.can_place_entity({ name = 'wooden-chest', position = pos, force = 'enemy' }) then | ||||
|             return { name = 'wooden-chest', position = pos, force = 'enemy' } | ||||
|         end | ||||
|     end | ||||
|  | ||||
|     if random(1, this.arena_layout_modifiers.arena_tree_chance) == 1 and noise > this.arena_layout_modifiers.arena_tree_noise then | ||||
|         return {name = this.arena_layout_modifiers.arena_tree, position = pos} | ||||
|         return { name = this.arena_layout_modifiers.arena_tree, position = pos } | ||||
|     end | ||||
|  | ||||
|     if random(1, 1024) == 1 then | ||||
|         if random(1, 16) == 1 then | ||||
|             if surface.can_place_entity({name = this.arena_layout_modifiers.secret_entity, position = pos, force = 'enemy'}) then | ||||
|                 return {name = this.arena_layout_modifiers.secret_entity, position = pos, force = 'enemy'} | ||||
|             if surface.can_place_entity({ name = this.arena_layout_modifiers.secret_entity, position = pos, force = 'enemy' }) then | ||||
|                 return { name = this.arena_layout_modifiers.secret_entity, position = pos, force = 'enemy' } | ||||
|             end | ||||
|         end | ||||
|         if random(1, 64) == 1 then | ||||
|             if surface.can_place_entity({name = 'big-worm-turret', position = pos, force = 'enemy'}) then | ||||
|                 return {name = 'big-worm-turret', position = pos, force = 'enemy'} | ||||
|             if surface.can_place_entity({ name = 'big-worm-turret', position = pos, force = 'enemy' }) then | ||||
|                 return { name = 'big-worm-turret', position = pos, force = 'enemy' } | ||||
|             end | ||||
|         end | ||||
|         if random(1, 32) == 1 then | ||||
|             if surface.can_place_entity({name = 'medium-worm-turret', position = pos, force = 'enemy'}) then | ||||
|                 return {name = 'medium-worm-turret', position = pos, force = 'enemy'} | ||||
|             if surface.can_place_entity({ name = 'medium-worm-turret', position = pos, force = 'enemy' }) then | ||||
|                 return { name = 'medium-worm-turret', position = pos, force = 'enemy' } | ||||
|             end | ||||
|         end | ||||
|         if random(1, 512) == 1 then | ||||
|             if surface.can_place_entity({name = 'behemoth-biter', position = pos, force = 'enemy'}) then | ||||
|                 return {name = 'behemoth-biter', position = pos, force = 'enemy'} | ||||
|             if surface.can_place_entity({ name = 'behemoth-biter', position = pos, force = 'enemy' }) then | ||||
|                 return { name = 'behemoth-biter', position = pos, force = 'enemy' } | ||||
|             end | ||||
|         end | ||||
|         if random(1, 64) == 1 then | ||||
|             if surface.can_place_entity({name = 'big-biter', position = pos, force = 'enemy'}) then | ||||
|                 return {name = 'big-biter', position = pos, force = 'enemy'} | ||||
|             if surface.can_place_entity({ name = 'big-biter', position = pos, force = 'enemy' }) then | ||||
|                 return { name = 'big-biter', position = pos, force = 'enemy' } | ||||
|             end | ||||
|         end | ||||
|     end | ||||
| @@ -450,7 +450,7 @@ local function render_arena_chunk(event) | ||||
|     local surface = event.surface | ||||
|     local left_top = event.area.left_top | ||||
|  | ||||
|     for _, entity in pairs(surface.find_entities_filtered({area = event.area})) do | ||||
|     for _, entity in pairs(surface.find_entities_filtered({ area = event.area })) do | ||||
|         if entity and entity.valid then | ||||
|             if entity.name ~= 'character' then | ||||
|                 entity.destroy() | ||||
| @@ -461,15 +461,15 @@ local function render_arena_chunk(event) | ||||
|     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} | ||||
|             local pos = { x = left_top.x + x, y = left_top.y + y } | ||||
|             if pos.x > arena_size or pos.y > arena_size or pos.x < arena_size * -1 or pos.y < arena_size * -1 then | ||||
|                 insert(tiles, {name = 'water', position = pos}) | ||||
|                 insert(tiles, { name = 'water', position = pos }) | ||||
|             else | ||||
|                 local noise = get_noise('terrain', pos) | ||||
|                 if noise > 0 then | ||||
|                     insert(tiles, {name = this.arena_layout_modifiers.arena_tile_1, position = pos}) | ||||
|                     insert(tiles, { name = this.arena_layout_modifiers.arena_tile_1, position = pos }) | ||||
|                 else | ||||
|                     insert(tiles, {name = this.arena_layout_modifiers.arena_tile_2, position = pos}) | ||||
|                     insert(tiles, { name = this.arena_layout_modifiers.arena_tile_2, position = pos }) | ||||
|                 end | ||||
|                 local entity = get_arena_entity(surface, pos) | ||||
|                 if entity then | ||||
| @@ -483,18 +483,18 @@ end | ||||
|  | ||||
| local function kill_idle_players() | ||||
|     Core.iter_connected_players( | ||||
|         function(player) | ||||
|         function (player) | ||||
|             if player.character then | ||||
|                 if player.afk_time > 600 then | ||||
|                     local area = {{player.position.x - 1, player.position.y - 1}, {player.position.x + 1, player.position.y + 1}} | ||||
|                     local water_tile_count = player.surface.count_tiles_filtered({name = {'water', 'deepwater'}, area = area}) | ||||
|                     local area = { { player.position.x - 1, player.position.y - 1 }, { player.position.x + 1, player.position.y + 1 } } | ||||
|                     local water_tile_count = player.surface.count_tiles_filtered({ name = { 'water', 'deepwater' }, area = area }) | ||||
|                     if water_tile_count and water_tile_count > 3 then | ||||
|                         player.character.die() | ||||
|                         game.print(player.name .. ' drowned.', {r = 150, g = 150, b = 0}) | ||||
|                         game.print(player.name .. ' drowned.', { r = 150, g = 150, b = 0 }) | ||||
|                     else | ||||
|                         if player.afk_time > 9000 then | ||||
|                             player.character.die() | ||||
|                             game.print(player.name .. ' was idle for too long.', {r = 150, g = 150, b = 0}) | ||||
|                             game.print(player.name .. ' was idle for too long.', { r = 150, g = 150, b = 0 }) | ||||
|                         end | ||||
|                     end | ||||
|                 end | ||||
| @@ -511,7 +511,7 @@ local function check_for_game_over() | ||||
|     create_tank_battle_score_gui() | ||||
|  | ||||
|     Core.iter_connected_players( | ||||
|         function(player) | ||||
|         function (player) | ||||
|             if player.character and player.driving then | ||||
|                 alive_players = alive_players + 1 | ||||
|             end | ||||
| @@ -524,7 +524,7 @@ local function check_for_game_over() | ||||
|  | ||||
|     local player | ||||
|     Core.iter_connected_players( | ||||
|         function(player_amp) | ||||
|         function (player_amp) | ||||
|             if player_amp.character and player_amp.driving then | ||||
|                 player = player_amp | ||||
|             end | ||||
| @@ -537,13 +537,13 @@ local function check_for_game_over() | ||||
|         else | ||||
|             this.tank_battles_score[player.index] = this.tank_battles_score[player.index] + 1 | ||||
|         end | ||||
|         game.print(player.name .. ' has won the battle!', {r = 150, g = 150, b = 0}) | ||||
|         game.print(player.name .. ' has won the battle!', { r = 150, g = 150, b = 0 }) | ||||
|         Server.to_discord_embed(player.name .. ' has won the battle!') | ||||
|         create_tank_battle_score_gui() | ||||
|     end | ||||
|  | ||||
|     if alive_players == 0 then | ||||
|         game.print('No players alive! Round ends in a draw!', {r = 150, g = 150, b = 0}) | ||||
|         game.print('No players alive! Round ends in a draw!', { r = 150, g = 150, b = 0 }) | ||||
|         Server.to_discord_embed('No players alive! Round ends in a draw!') | ||||
|     end | ||||
|  | ||||
| @@ -630,7 +630,7 @@ local function on_player_joined_game(event) | ||||
|  | ||||
|     local permissions_group = game.permissions.get_group('Spectator') | ||||
|     permissions_group.add_player(player.name) | ||||
|     player.teleport({0, 0}, 'nauvis') | ||||
|     player.teleport({ 0, 0 }, 'nauvis') | ||||
| end | ||||
|  | ||||
| local function on_player_driving_changed_state(event) | ||||
| @@ -672,7 +672,7 @@ local function on_player_respawned(event) | ||||
|     player.character.destroy() | ||||
|     player.character = nil | ||||
|  | ||||
|     player.print('You are now spectating.', {r = 0, g = 150, b = 150}) | ||||
|     player.print('You are now spectating.', { r = 0, g = 150, b = 150 }) | ||||
| end | ||||
|  | ||||
| local function lobby() | ||||
| @@ -680,7 +680,7 @@ local function lobby() | ||||
|  | ||||
|     if connected_players_count < 2 then | ||||
|         Core.iter_connected_players( | ||||
|             function(player) | ||||
|             function (player) | ||||
|                 create_gui(player) | ||||
|                 local gui = player.gui.left.status_players | ||||
|                 if gui and gui.valid then | ||||
| @@ -692,7 +692,7 @@ local function lobby() | ||||
|     end | ||||
|  | ||||
|     Core.iter_connected_players( | ||||
|         function(player) | ||||
|         function (player) | ||||
|             local gui = player.gui.left.status_players | ||||
|             if gui and gui.valid then | ||||
|                 gui.visible = false | ||||
| @@ -705,10 +705,10 @@ local function lobby() | ||||
|     end | ||||
|     if this.lobby_timer % 600 == 0 then | ||||
|         if this.lobby_timer <= 0 then | ||||
|             game.print('Round has started!', {r = 0, g = 150, b = 150}) | ||||
|             game.print('Round has started!', { r = 0, g = 150, b = 150 }) | ||||
|             Server.to_discord_embed('Round has started!') | ||||
|         else | ||||
|             game.print('Round will begin in ' .. this.lobby_timer / 60 .. ' seconds.', {r = 0, g = 150, b = 150}) | ||||
|             game.print('Round will begin in ' .. this.lobby_timer / 60 .. ' seconds.', { r = 0, g = 150, b = 150 }) | ||||
|             Server.to_discord_embed('Round will begin in ' .. this.lobby_timer / 60 .. ' seconds.') | ||||
|         end | ||||
|     end | ||||
| @@ -769,9 +769,9 @@ local function on_player_died(event) | ||||
|         end | ||||
|     end | ||||
|     Core.iter_connected_players( | ||||
|         function(target_player) | ||||
|         function (target_player) | ||||
|             if target_player.name ~= player.name then | ||||
|                 player.print(player.name .. ' was killed' .. str, {r = 0.99, g = 0.0, b = 0.0}) | ||||
|                 player.print(player.name .. ' was killed' .. str, { r = 0.99, g = 0.0, b = 0.0 }) | ||||
|             end | ||||
|         end | ||||
|     ) | ||||
| @@ -793,7 +793,7 @@ local function on_console_chat(event) | ||||
|     color.a = 1 | ||||
|  | ||||
|     Core.iter_connected_players( | ||||
|         function(target_player) | ||||
|         function (target_player) | ||||
|             if target_player.name ~= player.name then | ||||
|                 target_player.print(player.name .. ': ' .. event.message, color) | ||||
|             end | ||||
| @@ -802,7 +802,7 @@ local function on_console_chat(event) | ||||
| end | ||||
|  | ||||
| Event.on_init( | ||||
|     function() | ||||
|     function () | ||||
|         local surface = game.get_surface('nauvis') | ||||
|         local mgs = surface.map_gen_settings | ||||
|         mgs.width = 400 | ||||
| @@ -832,14 +832,14 @@ Event.on_init( | ||||
|         T.sub_caption = 'a playground made for tanks' | ||||
|         T.text = | ||||
|             table.concat( | ||||
|             { | ||||
|                 'The opponent wants your tank destroyed! Destroy their tank to win the round!\n', | ||||
|                 '\n', | ||||
|                 "The tank doors has oddly malfunctioned and you're locked inside.\n", | ||||
|                 '\n', | ||||
|                 'Destroying wooden chests seems to grant loot.\n' | ||||
|             } | ||||
|         ) | ||||
|                 { | ||||
|                     'The opponent wants your tank destroyed! Destroy their tank to win the round!\n', | ||||
|                     '\n', | ||||
|                     "The tank doors has oddly malfunctioned and you're locked inside.\n", | ||||
|                     '\n', | ||||
|                     'Destroying wooden chests seems to grant loot.\n' | ||||
|                 } | ||||
|             ) | ||||
|     end | ||||
| ) | ||||
| Event.add(defines.events.on_tick, on_tick) | ||||
|   | ||||
| @@ -187,7 +187,7 @@ local function on_init() | ||||
|         ['red-desert-decal'] = true | ||||
|     } | ||||
|     storage.decorative_names = {} | ||||
|     for k, v in pairs(game.decorative_prototypes) do | ||||
|     for k, v in pairs(prototypes.decorative) do | ||||
|         if not blacklist[k] then | ||||
|             if v.autoplace_specification then | ||||
|                 storage.decorative_names[#storage.decorative_names + 1] = k | ||||
| @@ -204,7 +204,7 @@ local function on_init() | ||||
|     game.forces.shopping_chests.set_friend('player', true) | ||||
|  | ||||
|     local tree_raffle = {} | ||||
|     for _, e in pairs(game.entity_prototypes) do | ||||
|     for _, e in pairs(prototypes.entity) do | ||||
|         if e.type == 'tree' then | ||||
|             table.insert(tree_raffle, e.name) | ||||
|         end | ||||
| @@ -213,7 +213,7 @@ local function on_init() | ||||
|     storage.tree_raffle = tree_raffle | ||||
|  | ||||
|     local corpses_raffle = {} | ||||
|     for _, e in pairs(game.entity_prototypes) do | ||||
|     for _, e in pairs(prototypes.entity) do | ||||
|         if e.type == 'corpse' then | ||||
|             table.insert(corpses_raffle, e.name) | ||||
|         end | ||||
|   | ||||
| @@ -24,10 +24,10 @@ local function is_item_already_present_in_hotbar(player, item) | ||||
| end | ||||
|  | ||||
| local function set_hotbar(player, item) | ||||
|     if not game.entity_prototypes[item] then | ||||
|     if not prototypes.entity[item] then | ||||
|         return | ||||
|     end | ||||
|     if not game.recipe_prototypes[item] then | ||||
|     if not prototypes.recipe[item] then | ||||
|         return | ||||
|     end | ||||
|     local slot_index = get_empty_hotbar_slot(player) | ||||
|   | ||||
| @@ -97,7 +97,7 @@ local function create_floaty_text(surface, position, name, count) | ||||
|                 position.x, | ||||
|                 position.y + this.floating_text_y_offsets[position.x .. '_' .. position.y] | ||||
|             }, | ||||
|             text = { '', '-', count, ' ', game.item_prototypes[name].localised_name }, | ||||
|             text = { '', '-', count, ' ', prototypes.item[name].localised_name }, | ||||
|             color = { r = 255, g = 255, b = 255 } | ||||
|         } | ||||
|     ) | ||||
| @@ -501,10 +501,10 @@ local function insert_item_into_chest(stack, chests, filtered_chests, name, floa | ||||
|         end | ||||
|     end | ||||
|  | ||||
|     local item_prototypes = game.item_prototypes | ||||
|     local item_prototypes = prototypes.item | ||||
|  | ||||
|     --Attempt to store in chests with same item subgroup. | ||||
|     local item_subgroup = game.item_prototypes[name].subgroup.name | ||||
|     local item_subgroup = prototypes.item[name].subgroup.name | ||||
|     if item_subgroup then | ||||
|         for chestnr, chest in pairs(filtered_chests.chest) do | ||||
|             if chest.request_slot_count and chest.request_slot_count > 0 then | ||||
| @@ -735,8 +735,8 @@ local function do_whitelist() | ||||
|         return | ||||
|     end | ||||
|     Task.delay(on_init_token, {}) | ||||
|     local resources = game.entity_prototypes | ||||
|     local items = game.item_prototypes | ||||
|     local resources = prototypes.entity | ||||
|     local items = prototypes.item | ||||
|     this.whitelist = {} | ||||
|     for k, _ in pairs(resources) do | ||||
|         if resources[k] and resources[k].type == 'resource' and resources[k].mineable_properties then | ||||
|   | ||||
| @@ -29,8 +29,8 @@ local function compute_fullness(player) | ||||
|     local contents = inv.get_contents() | ||||
|     for item, count in pairs(contents) do | ||||
|         local stack_size = 1 | ||||
|         if game.item_prototypes[item].stackable then | ||||
|             stack_size = game.item_prototypes[item].stack_size | ||||
|         if prototypes.item[item].stackable then | ||||
|             stack_size = prototypes.item[item].stack_size | ||||
|         end | ||||
|  | ||||
|         num_stacks = num_stacks + count / stack_size | ||||
|   | ||||
| @@ -16,16 +16,16 @@ local water_tile_whitelist = { | ||||
| local spiral_coords = {} | ||||
| for r = 1, 96, 1 do | ||||
|     for x = r * -1, r - 1, 1 do | ||||
|         table_insert(spiral_coords, {x = x, y = r * -1}) | ||||
|         table_insert(spiral_coords, { x = x, y = r * -1 }) | ||||
|     end | ||||
|     for y = r * -1, r - 1, 1 do | ||||
|         table_insert(spiral_coords, {x = r, y = y}) | ||||
|         table_insert(spiral_coords, { x = r, y = y }) | ||||
|     end | ||||
|     for x = r, r * -1 + 1, -1 do | ||||
|         table_insert(spiral_coords, {x = x, y = r}) | ||||
|         table_insert(spiral_coords, { x = x, y = r }) | ||||
|     end | ||||
|     for y = r, r * -1 + 1, -1 do | ||||
|         table_insert(spiral_coords, {x = r * -1, y = y}) | ||||
|         table_insert(spiral_coords, { x = r * -1, y = y }) | ||||
|     end | ||||
| end | ||||
|  | ||||
| @@ -51,14 +51,14 @@ local function regenerate_decoratives(surface, position) | ||||
|     if not chunk then | ||||
|         return | ||||
|     end | ||||
|     surface.destroy_decoratives({area = {{chunk.x * 32, chunk.y * 32}, {chunk.x * 32 + 32, chunk.y * 32 + 32}}}) | ||||
|     surface.destroy_decoratives({ area = { { chunk.x * 32, chunk.y * 32 }, { chunk.x * 32 + 32, chunk.y * 32 + 32 } } }) | ||||
|     local decorative_names = {} | ||||
|     for k, v in pairs(game.decorative_prototypes) do | ||||
|     for k, v in pairs(prototypes.decorative) do | ||||
|         if v.autoplace_specification then | ||||
|             decorative_names[#decorative_names + 1] = k | ||||
|         end | ||||
|     end | ||||
|     surface.regenerate_decorative(decorative_names, {chunk}) | ||||
|     surface.regenerate_decorative(decorative_names, { chunk }) | ||||
| end | ||||
|  | ||||
| local function is_this_a_valid_source_tile(pos, tiles) | ||||
| @@ -72,7 +72,7 @@ end | ||||
|  | ||||
| local function place_fitting_tile(position, surface, tiles_placed) | ||||
|     for _, coord in pairs(spiral_coords) do | ||||
|         local tile = surface.get_tile({position.x + coord.x, position.y + coord.y}) | ||||
|         local tile = surface.get_tile({ position.x + coord.x, position.y + coord.y }) | ||||
|         if not tile.collides_with('player-layer') then | ||||
|             local valid_source_tile = is_this_a_valid_source_tile(tile.position, tiles_placed) | ||||
|             if tile.name == 'out-of-map' then | ||||
| @@ -81,9 +81,9 @@ local function place_fitting_tile(position, surface, tiles_placed) | ||||
|  | ||||
|             if valid_source_tile then | ||||
|                 if tile.hidden_tile then | ||||
|                     surface.set_tiles({{name = tile.hidden_tile, position = position}}, true) | ||||
|                     surface.set_tiles({ { name = tile.hidden_tile, position = position } }, true) | ||||
|                 else | ||||
|                     surface.set_tiles({{name = tile.name, position = position}}, true) | ||||
|                     surface.set_tiles({ { name = tile.name, position = position } }, true) | ||||
|                 end | ||||
|                 return | ||||
|             end | ||||
|   | ||||
| @@ -15,7 +15,7 @@ function Public.get_crafting_machines_for_recipe(force_name, recipe) | ||||
|     local i = 1 | ||||
|     for _, name in pairs(crafting_machines) do | ||||
|         if item_whitelist[name] or name == 'character' then | ||||
|             local crafting_categories = game.entity_prototypes[name].crafting_categories | ||||
|             local crafting_categories = prototypes.entity[name].crafting_categories | ||||
|             for category, _ in pairs(crafting_categories) do | ||||
|                 if recipe_category == category then | ||||
|                     result[i] = name | ||||
| @@ -32,7 +32,7 @@ local function set_crafting_machines() | ||||
|     storage.fjei.crafting_machines = {} | ||||
|     local list = storage.fjei.crafting_machines | ||||
|     local i = 1 | ||||
|     for _, prototype in pairs(game.entity_prototypes) do | ||||
|     for _, prototype in pairs(prototypes.entity) do | ||||
|         if prototype.crafting_categories then | ||||
|             list[i] = prototype.name | ||||
|             i = i + 1 | ||||
| @@ -93,7 +93,7 @@ end | ||||
| local function set_item_list() | ||||
|     storage.fjei.item_list = {} | ||||
|     local item_list = storage.fjei.item_list | ||||
|     for recipe_name, recipe in pairs(game.recipe_prototypes) do | ||||
|     for recipe_name, recipe in pairs(prototypes.recipe) do | ||||
|         for key, product in pairs(recipe.products) do | ||||
|             add_item_list_product(item_list, product.name, recipe_name) | ||||
|         end | ||||
| @@ -132,8 +132,8 @@ local function set_sorted_item_list() | ||||
|     storage.fjei.sorted_item_list = {} | ||||
|     local sorted_item_list = storage.fjei.sorted_item_list | ||||
|     local item_list = storage.fjei.item_list | ||||
|     local item_prototypes = game.item_prototypes | ||||
|     local fluid_prototypes = game.fluid_prototypes | ||||
|     local item_prototypes = prototypes.item | ||||
|     local fluid_prototypes = prototypes.fluid | ||||
|  | ||||
|     local sorted_items = {} | ||||
|     local i = 1 | ||||
| @@ -186,13 +186,13 @@ local function add_recipe_to_whitelist(item_whitelist, recipe) | ||||
|  | ||||
|     --Adding "place_result" in case the inventory item can turn into a differently named entity after placement on the map. | ||||
|     for key, product in pairs(recipe.products) do | ||||
|         local p = game.item_prototypes[product.name] | ||||
|         local p = prototypes.item[product.name] | ||||
|         if p and p.place_result then | ||||
|             item_whitelist[p.place_result.name] = true | ||||
|         end | ||||
|     end | ||||
|     for key, ingredient in pairs(recipe.ingredients) do | ||||
|         local p = game.item_prototypes[ingredient.name] | ||||
|         local p = prototypes.item[ingredient.name] | ||||
|         if p and p.place_result then | ||||
|             item_whitelist[p.place_result.name] = true | ||||
|         end | ||||
| @@ -207,7 +207,7 @@ function Public.add_research_to_whitelist(force, effects) | ||||
|     local items_have_been_added = false | ||||
|     for _, effect in pairs(effects) do | ||||
|         if effect.recipe then | ||||
|             add_recipe_to_whitelist(item_whitelist, game.recipe_prototypes[effect.recipe]) | ||||
|             add_recipe_to_whitelist(item_whitelist, prototypes.recipe[effect.recipe]) | ||||
|             items_have_been_added = true | ||||
|         end | ||||
|     end | ||||
| @@ -241,15 +241,15 @@ local function set_item_whitelists_for_all_forces() | ||||
| end | ||||
|  | ||||
| local function get_localised_name(name) | ||||
|     local item = game.item_prototypes[name] | ||||
|     local item = prototypes.item[name] | ||||
|     if item then | ||||
|         return item.localised_name | ||||
|     end | ||||
|     local fluid = game.fluid_prototypes[name] | ||||
|     local fluid = prototypes.fluid[name] | ||||
|     if fluid then | ||||
|         return fluid.localised_name | ||||
|     end | ||||
|     local recipe = game.recipe_prototypes[name] | ||||
|     local recipe = prototypes.recipe[name] | ||||
|     if recipe then | ||||
|         return recipe.localised_name | ||||
|     end | ||||
|   | ||||
| @@ -68,15 +68,15 @@ local function get_formatted_amount(amount) | ||||
| end | ||||
|  | ||||
| local function get_localised_name(name) | ||||
|     local item = game.item_prototypes[name] | ||||
|     local item = prototypes.item[name] | ||||
|     if item then | ||||
|         return item.localised_name | ||||
|     end | ||||
|     local fluid = game.fluid_prototypes[name] | ||||
|     local fluid = prototypes.fluid[name] | ||||
|     if fluid then | ||||
|         return fluid.localised_name | ||||
|     end | ||||
|     local recipe = game.recipe_prototypes[name] | ||||
|     local recipe = prototypes.recipe[name] | ||||
|     if recipe then | ||||
|         return recipe.localised_name | ||||
|     end | ||||
| @@ -84,16 +84,16 @@ local function get_localised_name(name) | ||||
| end | ||||
|  | ||||
| local function get_sprite_type(name) | ||||
|     if game.item_prototypes[name] then | ||||
|     if prototypes.item[name] then | ||||
|         return 'item' | ||||
|     end | ||||
|     if game.fluid_prototypes[name] then | ||||
|     if prototypes.fluid[name] then | ||||
|         return 'fluid' | ||||
|     end | ||||
|     if game.entity_prototypes[name] then | ||||
|     if prototypes.entity[name] then | ||||
|         return 'entity' | ||||
|     end | ||||
|     if game.recipe_prototypes[name] then | ||||
|     if prototypes.recipe[name] then | ||||
|         return 'recipe' | ||||
|     end | ||||
|     return false | ||||
| @@ -321,7 +321,7 @@ local function draw_recipe_window_header(player, container, item_name, recipes, | ||||
| end | ||||
|  | ||||
| local function draw_recipe(player, container, recipe_name) | ||||
|     local recipe = game.recipe_prototypes[recipe_name] | ||||
|     local recipe = prototypes.recipe[recipe_name] | ||||
|  | ||||
|     local t = container.add({ type = 'table', column_count = 2 }) | ||||
|     add_choose_elem_button(t, recipe.name, true) | ||||
| @@ -444,7 +444,7 @@ local function draw_recipe(player, container, recipe_name) | ||||
|     element.style.font = 'heading-2' | ||||
|  | ||||
|     for key, machine in pairs(machines) do | ||||
|         local prototype = game.entity_prototypes[machine] | ||||
|         local prototype = prototypes.entity[machine] | ||||
|         if prototype then | ||||
|             add_choose_elem_button(t, machine) | ||||
|         end | ||||
| @@ -510,7 +510,7 @@ local function create_recipe_window(item_name, player, button, selected_recipe) | ||||
|  | ||||
|     if not selected_recipe then | ||||
|         for key, recipe_name in pairs(recipes) do | ||||
|             if #Functions.get_crafting_machines_for_recipe(player.force.name, game.recipe_prototypes[recipe_name]) > 0 then | ||||
|             if #Functions.get_crafting_machines_for_recipe(player.force.name, prototypes.recipe[recipe_name]) > 0 then | ||||
|                 selected_recipe = recipe_name | ||||
|                 break | ||||
|             end | ||||
| @@ -559,7 +559,7 @@ local function create_recipe_window(item_name, player, button, selected_recipe) | ||||
| end | ||||
|  | ||||
| local function add_to_history(item_name, player) | ||||
|     if not game.item_prototypes[item_name] and not game.fluid_prototypes[item_name] then | ||||
|     if not prototypes.item[item_name] and not prototypes.fluid[item_name] then | ||||
|         return | ||||
|     end | ||||
|  | ||||
|   | ||||
| @@ -36,10 +36,10 @@ local function connect_power_pole(entity, wagon_area_left_top_y) | ||||
|     local surface = entity.surface | ||||
|     local max_wire_distance = entity.prototype.max_wire_distance | ||||
|     local area = { | ||||
|         {entity.position.x - max_wire_distance, entity.position.y - max_wire_distance}, | ||||
|         {entity.position.x + max_wire_distance, entity.position.y - 1} | ||||
|         { entity.position.x - max_wire_distance, entity.position.y - max_wire_distance }, | ||||
|         { entity.position.x + max_wire_distance, entity.position.y - 1 } | ||||
|     } | ||||
|     for _, pole in pairs(surface.find_entities_filtered({area = area, name = entity.name})) do | ||||
|     for _, pole in pairs(surface.find_entities_filtered({ area = area, name = entity.name })) do | ||||
|         if pole.position.y < wagon_area_left_top_y then | ||||
|             entity.connect_neighbour(pole) | ||||
|             return | ||||
| @@ -74,9 +74,9 @@ local function equal_fluid(source_tank, target_tank) | ||||
|         return | ||||
|     end | ||||
|  | ||||
|     local inserted_amount = target_tank.insert_fluid({name = source_fluid.name, amount = amount, temperature = source_fluid.temperature}) | ||||
|     local inserted_amount = target_tank.insert_fluid({ name = source_fluid.name, amount = amount, temperature = source_fluid.temperature }) | ||||
|     if inserted_amount > 0 then | ||||
|         source_tank.remove_fluid({name = source_fluid.name, amount = inserted_amount}) | ||||
|         source_tank.remove_fluid({ name = source_fluid.name, amount = inserted_amount }) | ||||
|     end | ||||
| end | ||||
|  | ||||
| @@ -88,7 +88,7 @@ end | ||||
|  | ||||
| local function input_filtered(wagon_inventory, chest, chest_inventory, free_slots) | ||||
|     local request_stacks = {} | ||||
|     local prototypes = game.item_prototypes | ||||
|     local prototypes = prototypes.item | ||||
|     for slot_index = 1, 4, 1 do | ||||
|         local stack = chest.get_request_slot(slot_index) | ||||
|         if stack then | ||||
| @@ -213,17 +213,17 @@ local function construct_wagon_doors(icw, wagon) | ||||
|     local area = wagon.area | ||||
|     local surface = wagon.surface | ||||
|  | ||||
|     for _, x in pairs({area.left_top.x - 0.55, area.right_bottom.x + 0.55}) do | ||||
|     for _, x in pairs({ area.left_top.x - 0.55, area.right_bottom.x + 0.55 }) do | ||||
|         local e = | ||||
|             surface.create_entity( | ||||
|             { | ||||
|                 name = 'car', | ||||
|                 position = {x, area.left_top.y + ((area.right_bottom.y - area.left_top.y) * 0.5)}, | ||||
|                 force = 'neutral', | ||||
|                 create_build_effect_smoke = false | ||||
|             } | ||||
|         ) | ||||
|         e.get_inventory(defines.inventory.fuel).insert({name = 'wood', count = 1}) | ||||
|                 { | ||||
|                     name = 'car', | ||||
|                     position = { x, area.left_top.y + ((area.right_bottom.y - area.left_top.y) * 0.5) }, | ||||
|                     force = 'neutral', | ||||
|                     create_build_effect_smoke = false | ||||
|                 } | ||||
|             ) | ||||
|         e.get_inventory(defines.inventory.fuel).insert({ name = 'wood', count = 1 }) | ||||
|         e.destructible = false | ||||
|         e.minable = false | ||||
|         e.operable = false | ||||
| @@ -262,7 +262,7 @@ function Public.kill_wagon(icw, entity) | ||||
|     local surface = wagon.surface | ||||
|     kick_players_out_of_vehicles(wagon) | ||||
|     kill_wagon_doors(icw, wagon) | ||||
|     for _, e in pairs(surface.find_entities_filtered({area = wagon.area})) do | ||||
|     for _, e in pairs(surface.find_entities_filtered({ area = wagon.area })) do | ||||
|         if e.name == 'character' and e.player then | ||||
|             local p = wagon.entity.surface.find_non_colliding_position('character', wagon.entity.position, 128, 0.5) | ||||
|             if p then | ||||
| @@ -275,8 +275,8 @@ function Public.kill_wagon(icw, entity) | ||||
|             e.die() | ||||
|         end | ||||
|     end | ||||
|     for _, tile in pairs(surface.find_tiles_filtered({area = wagon.area})) do | ||||
|         surface.set_tiles({{name = 'out-of-map', position = tile.position}}, true) | ||||
|     for _, tile in pairs(surface.find_tiles_filtered({ area = wagon.area })) do | ||||
|         surface.set_tiles({ { name = 'out-of-map', position = tile.position } }, true) | ||||
|     end | ||||
|     wagon.entity.force.chart(surface, wagon.area) | ||||
|     icw.wagons[entity.unit_number] = nil | ||||
| @@ -292,21 +292,21 @@ function Public.create_room_surface(icw, unit_number) | ||||
|         ['height'] = 2, | ||||
|         ['water'] = 0, | ||||
|         ['starting_area'] = 1, | ||||
|         ['cliff_settings'] = {cliff_elevation_interval = 0, cliff_elevation_0 = 0}, | ||||
|         ['cliff_settings'] = { cliff_elevation_interval = 0, cliff_elevation_0 = 0 }, | ||||
|         ['default_enable_all_autoplace_controls'] = true, | ||||
|         ['autoplace_settings'] = { | ||||
|             ['entity'] = {treat_missing_as_default = false}, | ||||
|             ['tile'] = {treat_missing_as_default = true}, | ||||
|             ['decorative'] = {treat_missing_as_default = false} | ||||
|             ['entity'] = { treat_missing_as_default = false }, | ||||
|             ['tile'] = { treat_missing_as_default = true }, | ||||
|             ['decorative'] = { treat_missing_as_default = false } | ||||
|         } | ||||
|     } | ||||
|     local surface = game.create_surface(tostring(unit_number), map_gen_settings) | ||||
|     surface.freeze_daytime = true | ||||
|     surface.daytime = 0.1 | ||||
|     surface.request_to_generate_chunks({16, 16}, 2) | ||||
|     surface.request_to_generate_chunks({ 16, 16 }, 2) | ||||
|     surface.force_generate_chunk_requests() | ||||
|     for _, tile in pairs(surface.find_tiles_filtered({area = {{-2, -2}, {2, 2}}})) do | ||||
|         surface.set_tiles({{name = 'out-of-map', position = tile.position}}, true) | ||||
|     for _, tile in pairs(surface.find_tiles_filtered({ area = { { -2, -2 }, { 2, 2 } } })) do | ||||
|         surface.set_tiles({ { name = 'out-of-map', position = tile.position } }, true) | ||||
|     end | ||||
|     table_insert(icw.surfaces, surface) | ||||
|     return surface | ||||
| @@ -323,20 +323,20 @@ function Public.create_wagon_room(icw, wagon) | ||||
|  | ||||
|     local tiles = {} | ||||
|     for x = -3, 2, 1 do | ||||
|         table_insert(tiles, {name = 'hazard-concrete-right', position = {x, area.left_top.y}}) | ||||
|         table_insert(tiles, {name = 'hazard-concrete-right', position = {x, area.right_bottom.y - 1}}) | ||||
|         table_insert(tiles, { name = 'hazard-concrete-right', position = { x, area.left_top.y } }) | ||||
|         table_insert(tiles, { name = 'hazard-concrete-right', position = { x, area.right_bottom.y - 1 } }) | ||||
|     end | ||||
|     for x = area.left_top.x, area.right_bottom.x - 1, 1 do | ||||
|         for y = area.left_top.y + 2, area.right_bottom.y - 3, 1 do | ||||
|             table_insert(tiles, {name = main_tile_name, position = {x, y}}) | ||||
|             table_insert(tiles, { name = main_tile_name, position = { x, y } }) | ||||
|         end | ||||
|     end | ||||
|     for x = -3, 2, 1 do | ||||
|         for y = 1, 3, 1 do | ||||
|             table_insert(tiles, {name = main_tile_name, position = {x, y}}) | ||||
|             table_insert(tiles, { name = main_tile_name, position = { x, y } }) | ||||
|         end | ||||
|         for y = area.right_bottom.y - 4, area.right_bottom.y - 2, 1 do | ||||
|             table_insert(tiles, {name = main_tile_name, position = {x, y}}) | ||||
|             table_insert(tiles, { name = main_tile_name, position = { x, y } }) | ||||
|         end | ||||
|     end | ||||
|  | ||||
| @@ -346,13 +346,13 @@ function Public.create_wagon_room(icw, wagon) | ||||
|         local r2 = math_random(1, 2) | ||||
|         for x = math_random(1, 2) * -1, math_random(1, 2), 1 do | ||||
|             for y = r1, r2, 1 do | ||||
|                 table_insert(vectors, {x, y}) | ||||
|                 table_insert(vectors, { x, y }) | ||||
|             end | ||||
|         end | ||||
|         local position = {x = area.left_top.x + (area.right_bottom.x - area.left_top.x) * 0.5, y = area.left_top.y + (area.right_bottom.y - area.left_top.y) * 0.5} | ||||
|         position = {x = position.x + (-4 + math_random(0, 8)), y = position.y + (-6 + math_random(0, 12))} | ||||
|         local position = { x = area.left_top.x + (area.right_bottom.x - area.left_top.x) * 0.5, y = area.left_top.y + (area.right_bottom.y - area.left_top.y) * 0.5 } | ||||
|         position = { x = position.x + (-4 + math_random(0, 8)), y = position.y + (-6 + math_random(0, 12)) } | ||||
|         for _, v in pairs(vectors) do | ||||
|             table_insert(tiles, {name = 'water', position = {position.x + v[1], position.y + v[2]}}) | ||||
|             table_insert(tiles, { name = 'water', position = { position.x + v[1], position.y + v[2] } }) | ||||
|         end | ||||
|     end | ||||
|  | ||||
| @@ -363,57 +363,57 @@ function Public.create_wagon_room(icw, wagon) | ||||
|     if wagon.entity.type == 'fluid-wagon' then | ||||
|         local height = area.right_bottom.y - area.left_top.y | ||||
|         local positions = { | ||||
|             {area.right_bottom.x, area.left_top.y + height * 0.25}, | ||||
|             {area.right_bottom.x, area.left_top.y + height * 0.75}, | ||||
|             {area.left_top.x - 1, area.left_top.y + height * 0.25}, | ||||
|             {area.left_top.x - 1, area.left_top.y + height * 0.75} | ||||
|             { area.right_bottom.x, area.left_top.y + height * 0.25 }, | ||||
|             { area.right_bottom.x, area.left_top.y + height * 0.75 }, | ||||
|             { area.left_top.x - 1, area.left_top.y + height * 0.25 }, | ||||
|             { area.left_top.x - 1, area.left_top.y + height * 0.75 } | ||||
|         } | ||||
|         table.shuffle_table(positions) | ||||
|         local e = | ||||
|             surface.create_entity( | ||||
|             { | ||||
|                 name = 'storage-tank', | ||||
|                 position = positions[1], | ||||
|                 force = 'neutral', | ||||
|                 create_build_effect_smoke = false | ||||
|             } | ||||
|         ) | ||||
|                 { | ||||
|                     name = 'storage-tank', | ||||
|                     position = positions[1], | ||||
|                     force = 'neutral', | ||||
|                     create_build_effect_smoke = false | ||||
|                 } | ||||
|             ) | ||||
|         e.destructible = false | ||||
|         e.minable = false | ||||
|         wagon.transfer_entities = {e} | ||||
|         wagon.transfer_entities = { e } | ||||
|         return | ||||
|     end | ||||
|  | ||||
|     if wagon.entity.type == 'cargo-wagon' then | ||||
|         local vectors = {{0, -1}, {0, 1}, {-1, 0}, {1, 0}} | ||||
|         local vectors = { { 0, -1 }, { 0, 1 }, { -1, 0 }, { 1, 0 } } | ||||
|         local v = vectors[math_random(1, 4)] | ||||
|         local position = {math_random(area.left_top.x + 2, area.right_bottom.x - 3), math_random(area.left_top.y + 5, area.right_bottom.y - 6)} | ||||
|         local position = { math_random(area.left_top.x + 2, area.right_bottom.x - 3), math_random(area.left_top.y + 5, area.right_bottom.y - 6) } | ||||
|  | ||||
|         local e = | ||||
|             surface.create_entity( | ||||
|             { | ||||
|                 name = 'logistic-chest-requester', | ||||
|                 position = position, | ||||
|                 force = 'neutral', | ||||
|                 create_build_effect_smoke = false | ||||
|             } | ||||
|         ) | ||||
|                 { | ||||
|                     name = 'logistic-chest-requester', | ||||
|                     position = position, | ||||
|                     force = 'neutral', | ||||
|                     create_build_effect_smoke = false | ||||
|                 } | ||||
|             ) | ||||
|         e.destructible = false | ||||
|         e.minable = false | ||||
|  | ||||
|         e2 = | ||||
|             surface.create_entity( | ||||
|             { | ||||
|                 name = 'logistic-chest-passive-provider', | ||||
|                 position = {position[1] + v[1], position[2] + v[2]}, | ||||
|                 force = 'neutral', | ||||
|                 create_build_effect_smoke = false | ||||
|             } | ||||
|         ) | ||||
|                 { | ||||
|                     name = 'logistic-chest-passive-provider', | ||||
|                     position = { position[1] + v[1], position[2] + v[2] }, | ||||
|                     force = 'neutral', | ||||
|                     create_build_effect_smoke = false | ||||
|                 } | ||||
|             ) | ||||
|         e2.destructible = false | ||||
|         e2.minable = false | ||||
|  | ||||
|         wagon.transfer_entities = {e, e2} | ||||
|         wagon.transfer_entities = { e, e2 } | ||||
|         return | ||||
|     end | ||||
| end | ||||
| @@ -432,7 +432,7 @@ function Public.create_wagon(icw, created_entity, delay_surface) | ||||
|  | ||||
|     icw.wagons[created_entity.unit_number] = { | ||||
|         entity = created_entity, | ||||
|         area = {left_top = {x = wagon_area.left_top.x, y = wagon_area.left_top.y}, right_bottom = {x = wagon_area.right_bottom.x, y = wagon_area.right_bottom.y}}, | ||||
|         area = { left_top = { x = wagon_area.left_top.x, y = wagon_area.left_top.y }, right_bottom = { x = wagon_area.right_bottom.x, y = wagon_area.right_bottom.y } }, | ||||
|         doors = {}, | ||||
|         entity_count = 0 | ||||
|     } | ||||
| @@ -499,12 +499,12 @@ function Public.use_cargo_wagon_door(icw, player, door) | ||||
|     end | ||||
|  | ||||
|     player_data.fallback_surface = wagon.entity.surface.index | ||||
|     player_data.fallback_position = {wagon.entity.position.x, wagon.entity.position.y} | ||||
|     player_data.fallback_position = { wagon.entity.position.x, wagon.entity.position.y } | ||||
|  | ||||
|     if wagon.entity.surface.name ~= player.surface.name then | ||||
|         local surface = wagon.entity.surface | ||||
|         local x_vector = (door.position.x / math.abs(door.position.x)) * 2 | ||||
|         local position = {wagon.entity.position.x + x_vector, wagon.entity.position.y} | ||||
|         local position = { wagon.entity.position.x + x_vector, wagon.entity.position.y } | ||||
|         local position = surface.find_non_colliding_position('character', position, 128, 0.5) | ||||
|         if not position then | ||||
|             return | ||||
| @@ -520,9 +520,9 @@ function Public.use_cargo_wagon_door(icw, player, door) | ||||
|         local x_vector = door.position.x - player.position.x | ||||
|         local position | ||||
|         if x_vector > 0 then | ||||
|             position = {area.left_top.x + 0.5, area.left_top.y + ((area.right_bottom.y - area.left_top.y) * 0.5)} | ||||
|             position = { area.left_top.x + 0.5, area.left_top.y + ((area.right_bottom.y - area.left_top.y) * 0.5) } | ||||
|         else | ||||
|             position = {area.right_bottom.x - 0.5, area.left_top.y + ((area.right_bottom.y - area.left_top.y) * 0.5)} | ||||
|             position = { area.right_bottom.x - 0.5, area.left_top.y + ((area.right_bottom.y - area.left_top.y) * 0.5) } | ||||
|         end | ||||
|         local p = surface.find_non_colliding_position('character', position, 128, 0.5) | ||||
|         if p then | ||||
| @@ -542,8 +542,8 @@ local function move_room_to_train(icw, train, wagon) | ||||
|     table_insert(train.wagons, wagon.entity.unit_number) | ||||
|  | ||||
|     local destination_area = { | ||||
|         left_top = {x = wagon.area.left_top.x, y = train.top_y}, | ||||
|         right_bottom = {x = wagon.area.right_bottom.x, y = train.top_y + (wagon.area.right_bottom.y - wagon.area.left_top.y)} | ||||
|         left_top = { x = wagon.area.left_top.x, y = train.top_y }, | ||||
|         right_bottom = { x = wagon.area.right_bottom.x, y = train.top_y + (wagon.area.right_bottom.y - wagon.area.left_top.y) } | ||||
|     } | ||||
|  | ||||
|     train.top_y = destination_area.right_bottom.y | ||||
| @@ -554,11 +554,11 @@ local function move_room_to_train(icw, train, wagon) | ||||
|  | ||||
|     kick_players_out_of_vehicles(wagon) | ||||
|     local player_positions = {} | ||||
|     for _, e in pairs(wagon.surface.find_entities_filtered({name = 'character', area = wagon.area})) do | ||||
|     for _, e in pairs(wagon.surface.find_entities_filtered({ name = 'character', area = wagon.area })) do | ||||
|         local player = e.player | ||||
|         if player then | ||||
|             player_positions[player.index] = {player.position.x, player.position.y + (destination_area.left_top.y - wagon.area.left_top.y)} | ||||
|             player.teleport({0, 0}, game.surfaces.nauvis) | ||||
|             player_positions[player.index] = { player.position.x, player.position.y + (destination_area.left_top.y - wagon.area.left_top.y) } | ||||
|             player.teleport({ 0, 0 }, game.surfaces.nauvis) | ||||
|         end | ||||
|     end | ||||
|  | ||||
| @@ -583,8 +583,8 @@ local function move_room_to_train(icw, train, wagon) | ||||
|         player.teleport(position, train.surface) | ||||
|     end | ||||
|  | ||||
|     for _, tile in pairs(wagon.surface.find_tiles_filtered({area = wagon.area})) do | ||||
|         wagon.surface.set_tiles({{name = 'out-of-map', position = tile.position}}, true) | ||||
|     for _, tile in pairs(wagon.surface.find_tiles_filtered({ area = wagon.area })) do | ||||
|         wagon.surface.set_tiles({ { name = 'out-of-map', position = tile.position } }, true) | ||||
|     end | ||||
|     wagon.entity.force.chart(wagon.surface, wagon.area) | ||||
|  | ||||
| @@ -594,11 +594,11 @@ local function move_room_to_train(icw, train, wagon) | ||||
|     construct_wagon_doors(icw, wagon) | ||||
|  | ||||
|     local left_top_y = wagon.area.left_top.y | ||||
|     for _, e in pairs(wagon.surface.find_entities_filtered({type = 'electric-pole', area = wagon.area})) do | ||||
|     for _, e in pairs(wagon.surface.find_entities_filtered({ type = 'electric-pole', area = wagon.area })) do | ||||
|         connect_power_pole(e, left_top_y) | ||||
|     end | ||||
|  | ||||
|     for _, e in pairs(wagon.surface.find_entities_filtered({area = wagon.area, force = 'neutral'})) do | ||||
|     for _, e in pairs(wagon.surface.find_entities_filtered({ area = wagon.area, force = 'neutral' })) do | ||||
|         if transfer_functions[e.name] then | ||||
|             table_insert(wagon.transfer_entities, e) | ||||
|         end | ||||
| @@ -612,7 +612,7 @@ function Public.construct_train(icw, carriages) | ||||
|         return | ||||
|     end | ||||
|  | ||||
|     local train = {surface = Public.create_room_surface(icw, unit_number), wagons = {}, top_y = 0} | ||||
|     local train = { surface = Public.create_room_surface(icw, unit_number), wagons = {}, top_y = 0 } | ||||
|     icw.trains[unit_number] = train | ||||
|  | ||||
|     for k, carriage in pairs(carriages) do | ||||
| @@ -656,15 +656,15 @@ function Public.draw_minimap(icw, player, surface, position) | ||||
|         local player_data = get_player_data(icw, player) | ||||
|         element = | ||||
|             player.gui.left.add( | ||||
|             { | ||||
|                 type = 'camera', | ||||
|                 name = 'icw_map', | ||||
|                 position = position, | ||||
|                 surface_index = surface.index, | ||||
|                 zoom = player_data.zoom, | ||||
|                 tooltip = 'LMB: Increase zoom level.\nRMB: Decrease zoom level.\nMMB: Toggle camera size.' | ||||
|             } | ||||
|         ) | ||||
|                 { | ||||
|                     type = 'camera', | ||||
|                     name = 'icw_map', | ||||
|                     position = position, | ||||
|                     surface_index = surface.index, | ||||
|                     zoom = player_data.zoom, | ||||
|                     tooltip = 'LMB: Increase zoom level.\nRMB: Decrease zoom level.\nMMB: Toggle camera size.' | ||||
|                 } | ||||
|             ) | ||||
|         element.style.margin = 1 | ||||
|         element.style.minimal_height = player_data.map_size | ||||
|         element.style.minimal_width = player_data.map_size | ||||
|   | ||||
| @@ -23,7 +23,7 @@ Public.storage = {} | ||||
|  | ||||
| Global.register( | ||||
|     this, | ||||
|     function(tbl) | ||||
|     function (tbl) | ||||
|         this = tbl | ||||
|     end | ||||
| ) | ||||
| @@ -33,8 +33,8 @@ function Public.get_table() | ||||
| end | ||||
|  | ||||
| function Public.create_chest(surface, position, storage) | ||||
|     local entity = surface.create_entity {name = 'infinity-chest', position = position, force = 'player'} | ||||
|     this.inf_chests[entity.unit_number] = {entity = entity, storage = storage} | ||||
|     local entity = surface.create_entity { name = 'infinity-chest', position = position, force = 'player' } | ||||
|     this.inf_chests[entity.unit_number] = { entity = entity, storage = storage } | ||||
|     return entity | ||||
| end | ||||
|  | ||||
| @@ -115,9 +115,9 @@ local function built_entity(event) | ||||
|             text = '♾', | ||||
|             surface = entity.surface, | ||||
|             target = entity, | ||||
|             target_offset = {0, -0.6}, | ||||
|             target_offset = { 0, -0.6 }, | ||||
|             scale = 2, | ||||
|             color = {r = 0, g = 0.6, b = 1}, | ||||
|             color = { r = 0, g = 0.6, b = 1 }, | ||||
|             alignment = 'center' | ||||
|         } | ||||
|     end | ||||
| @@ -135,7 +135,7 @@ local function built_entity_robot(event) | ||||
| end | ||||
|  | ||||
| local function item(item_name, item_count, inv, unit_number) | ||||
|     local item_stack = game.item_prototypes[item_name].stack_size | ||||
|     local item_stack = prototypes.item[item_name].stack_size | ||||
|     local diff = item_count - item_stack | ||||
|  | ||||
|     if not this.inf_storage[unit_number] then | ||||
| @@ -151,7 +151,7 @@ local function item(item_name, item_count, inv, unit_number) | ||||
|     end | ||||
|     if diff > 0 then | ||||
|         if not storage[item_name] then | ||||
|             local count = inv.remove({name = item_name, count = diff}) | ||||
|             local count = inv.remove({ name = item_name, count = diff }) | ||||
|             this.inf_storage[unit_number][item_name] = count | ||||
|         else | ||||
|             if this.inf_storage[unit_number][item_name] >= this.limits[unit_number] then | ||||
| @@ -159,13 +159,13 @@ local function item(item_name, item_count, inv, unit_number) | ||||
|                 if mode == 1 then | ||||
|                     this.inf_mode[unit_number] = 3 | ||||
|                 end | ||||
|                 if inv.can_insert({name = item_name, count = item_stack}) then | ||||
|                     local count = inv.insert({name = item_name, count = item_stack}) | ||||
|                 if inv.can_insert({ name = item_name, count = item_stack }) then | ||||
|                     local count = inv.insert({ name = item_name, count = item_stack }) | ||||
|                     this.inf_storage[unit_number][item_name] = storage[item_name] - count | ||||
|                 end | ||||
|                 return | ||||
|             end | ||||
|             local count = inv.remove({name = item_name, count = diff}) | ||||
|             local count = inv.remove({ name = item_name, count = diff }) | ||||
|             this.inf_storage[unit_number][item_name] = storage[item_name] + count | ||||
|         end | ||||
|     elseif diff < 0 then | ||||
| @@ -173,10 +173,10 @@ local function item(item_name, item_count, inv, unit_number) | ||||
|             return | ||||
|         end | ||||
|         if storage[item_name] > (diff * -1) then | ||||
|             local inserted = inv.insert({name = item_name, count = (diff * -1)}) | ||||
|             local inserted = inv.insert({ name = item_name, count = (diff * -1) }) | ||||
|             this.inf_storage[unit_number][item_name] = storage[item_name] - inserted | ||||
|         else | ||||
|             inv.insert({name = item_name, count = storage[item_name]}) | ||||
|             inv.insert({ name = item_name, count = storage[item_name] }) | ||||
|             this.inf_storage[unit_number][item_name] = nil | ||||
|         end | ||||
|     end | ||||
| @@ -359,60 +359,60 @@ local function gui_opened(event) | ||||
|     local player = game.players[event.player_index] | ||||
|     local frame = | ||||
|         player.gui.center.add { | ||||
|         type = 'frame', | ||||
|         caption = 'Unlimited Chest', | ||||
|         direction = 'vertical', | ||||
|         name = entity.unit_number | ||||
|     } | ||||
|     local controls = frame.add {type = 'flow', direction = 'horizontal'} | ||||
|     local items = frame.add {type = 'flow', direction = 'vertical'} | ||||
|             type = 'frame', | ||||
|             caption = 'Unlimited Chest', | ||||
|             direction = 'vertical', | ||||
|             name = entity.unit_number | ||||
|         } | ||||
|     local controls = frame.add { type = 'flow', direction = 'horizontal' } | ||||
|     local items = frame.add { type = 'flow', direction = 'vertical' } | ||||
|  | ||||
|     local mode = this.inf_mode[entity.unit_number] | ||||
|     local selected = mode and mode or 1 | ||||
|     local tbl = controls.add {type = 'table', column_count = 1} | ||||
|     local tbl = controls.add { type = 'table', column_count = 1 } | ||||
|  | ||||
|     local limit_tooltip = '[color=yellow]Limit Info:[/color]\nThis is only usable if you intend to use this chest for one item.' | ||||
|  | ||||
|     local mode_tooltip = | ||||
|         '[color=yellow]Mode Info:[/color]\nEnabled: will active the chest and allow for insertions.\nDisabled: will deactivate the chest and let´s the player utilize the GUI to retrieve items.\nLimited: will deactivate the chest as per limit.' | ||||
|     '[color=yellow]Mode Info:[/color]\nEnabled: will active the chest and allow for insertions.\nDisabled: will deactivate the chest and let´s the player utilize the GUI to retrieve items.\nLimited: will deactivate the chest as per limit.' | ||||
|  | ||||
|     local btn = | ||||
|         tbl.add { | ||||
|         type = 'sprite-button', | ||||
|         tooltip = '[color=blue]Info![/color]\nThis chest stores unlimited quantity of items (up to 48 different item types).\nThe chest is best used with an inserter to add / remove items.\nThe chest is mineable if state is disabled.\nContent is kept when mined.\n[color=yellow]Limit:[/color]\nThis is only usable if you intend to use this chest for one item.', | ||||
|         sprite = 'utility/questionmark' | ||||
|     } | ||||
|             type = 'sprite-button', | ||||
|             tooltip = '[color=blue]Info![/color]\nThis chest stores unlimited quantity of items (up to 48 different item types).\nThe chest is best used with an inserter to add / remove items.\nThe chest is mineable if state is disabled.\nContent is kept when mined.\n[color=yellow]Limit:[/color]\nThis is only usable if you intend to use this chest for one item.', | ||||
|             sprite = 'utility/questionmark' | ||||
|         } | ||||
|     btn.style.height = 20 | ||||
|     btn.style.width = 20 | ||||
|     btn.enabled = false | ||||
|     btn.focus() | ||||
|  | ||||
|     local tbl_2 = tbl.add {type = 'table', column_count = 4} | ||||
|     local tbl_2 = tbl.add { type = 'table', column_count = 4 } | ||||
|  | ||||
|     tbl_2.add {type = 'label', caption = 'Mode: ', tooltip = mode_tooltip} | ||||
|     tbl_2.add { type = 'label', caption = 'Mode: ', tooltip = mode_tooltip } | ||||
|     local drop_down | ||||
|     if player.admin and this.editor[player.name] then | ||||
|         drop_down = | ||||
|             tbl_2.add { | ||||
|             type = 'drop-down', | ||||
|             items = {'Enabled', 'Disabled', 'Limited', 'Editor'}, | ||||
|             selected_index = selected, | ||||
|             name = entity.unit_number, | ||||
|             tooltip = mode_tooltip | ||||
|         } | ||||
|                 type = 'drop-down', | ||||
|                 items = { 'Enabled', 'Disabled', 'Limited', 'Editor' }, | ||||
|                 selected_index = selected, | ||||
|                 name = entity.unit_number, | ||||
|                 tooltip = mode_tooltip | ||||
|             } | ||||
|     else | ||||
|         drop_down = | ||||
|             tbl_2.add { | ||||
|             type = 'drop-down', | ||||
|             items = {'Enabled', 'Disabled', 'Limited'}, | ||||
|             selected_index = selected, | ||||
|             name = entity.unit_number, | ||||
|             tooltip = mode_tooltip | ||||
|         } | ||||
|                 type = 'drop-down', | ||||
|                 items = { 'Enabled', 'Disabled', 'Limited' }, | ||||
|                 selected_index = selected, | ||||
|                 name = entity.unit_number, | ||||
|                 tooltip = mode_tooltip | ||||
|             } | ||||
|     end | ||||
|  | ||||
|     tbl_2.add({type = 'label', caption = ' Limit: ', tooltip = limit_tooltip}) | ||||
|     local text_field = tbl_2.add({type = 'textfield', text = this.limits[entity.unit_number]}) | ||||
|     tbl_2.add({ type = 'label', caption = ' Limit: ', tooltip = limit_tooltip }) | ||||
|     local text_field = tbl_2.add({ type = 'textfield', text = this.limits[entity.unit_number] }) | ||||
|     text_field.style.width = 80 | ||||
|     text_field.numeric = true | ||||
|     text_field.tooltip = limit_tooltip | ||||
| @@ -448,7 +448,7 @@ local function update_gui() | ||||
|         end | ||||
|         frame.clear() | ||||
|  | ||||
|         local tbl = frame.add {type = 'table', column_count = 10, name = 'infinity_chest_inventory'} | ||||
|         local tbl = frame.add { type = 'table', column_count = 10, name = 'infinity_chest_inventory' } | ||||
|         local total = 0 | ||||
|         local items = {} | ||||
|  | ||||
| @@ -490,23 +490,23 @@ local function update_gui() | ||||
|             if mode == 1 or mode == 3 then | ||||
|                 btn = | ||||
|                     tbl.add { | ||||
|                     type = 'sprite-button', | ||||
|                     sprite = 'item/' .. item_name, | ||||
|                     style = 'slot_button', | ||||
|                     number = item_count, | ||||
|                     name = item_name, | ||||
|                     tooltip = 'Withdrawal is possible when state is disabled!' | ||||
|                 } | ||||
|                         type = 'sprite-button', | ||||
|                         sprite = 'item/' .. item_name, | ||||
|                         style = 'slot_button', | ||||
|                         number = item_count, | ||||
|                         name = item_name, | ||||
|                         tooltip = 'Withdrawal is possible when state is disabled!' | ||||
|                     } | ||||
|                 btn.enabled = false | ||||
|             elseif mode == 2 or mode == 4 then | ||||
|                 btn = | ||||
|                     tbl.add { | ||||
|                     type = 'sprite-button', | ||||
|                     sprite = 'item/' .. item_name, | ||||
|                     style = 'slot_button', | ||||
|                     number = item_count, | ||||
|                     name = item_name | ||||
|                 } | ||||
|                         type = 'sprite-button', | ||||
|                         sprite = 'item/' .. item_name, | ||||
|                         style = 'slot_button', | ||||
|                         number = item_count, | ||||
|                         name = item_name | ||||
|                     } | ||||
|                 btn.enabled = true | ||||
|             end | ||||
|         end | ||||
| @@ -514,10 +514,10 @@ local function update_gui() | ||||
|         while total < 48 do | ||||
|             local btns | ||||
|             if mode == 1 or mode == 2 or mode == 3 then | ||||
|                 btns = tbl.add {type = 'sprite-button', style = 'slot_button'} | ||||
|                 btns = tbl.add { type = 'sprite-button', style = 'slot_button' } | ||||
|                 btns.enabled = false | ||||
|             elseif mode == 4 then | ||||
|                 btns = tbl.add {type = 'choose-elem-button', style = 'slot_button', elem_type = 'item'} | ||||
|                 btns = tbl.add { type = 'choose-elem-button', style = 'slot_button', elem_type = 'item' } | ||||
|                 btns.enabled = true | ||||
|             end | ||||
|  | ||||
| @@ -628,7 +628,7 @@ local function gui_click(event) | ||||
|         if not count then | ||||
|             return | ||||
|         end | ||||
|         local inserted = player.insert {name = name, count = count} | ||||
|         local inserted = player.insert { name = name, count = count } | ||||
|         if not inserted then | ||||
|             return | ||||
|         end | ||||
| @@ -639,7 +639,7 @@ local function gui_click(event) | ||||
|         end | ||||
|     elseif shift then | ||||
|         local count = storage[name] | ||||
|         local stack = game.item_prototypes[name].stack_size | ||||
|         local stack = prototypes.item[name].stack_size | ||||
|         if not count then | ||||
|             return | ||||
|         end | ||||
| @@ -647,10 +647,10 @@ local function gui_click(event) | ||||
|             return | ||||
|         end | ||||
|         if count > stack then | ||||
|             local inserted = player.insert {name = name, count = stack} | ||||
|             local inserted = player.insert { name = name, count = stack } | ||||
|             storage[name] = storage[name] - inserted | ||||
|         else | ||||
|             player.insert {name = name, count = count} | ||||
|             player.insert { name = name, count = count } | ||||
|             storage[name] = nil | ||||
|         end | ||||
|     else | ||||
| @@ -658,7 +658,7 @@ local function gui_click(event) | ||||
|             return | ||||
|         end | ||||
|         storage[name] = storage[name] - 1 | ||||
|         player.insert {name = name, count = 1} | ||||
|         player.insert { name = name, count = 1 } | ||||
|         if storage[name] <= 0 then | ||||
|             storage[name] = nil | ||||
|         end | ||||
|   | ||||
| @@ -231,7 +231,7 @@ local function roll_item_stack(entity, wave) | ||||
|         end | ||||
|     end | ||||
|  | ||||
|     local stack_size = game.item_prototypes[item_name].stack_size | ||||
|     local stack_size = prototypes.item[item_name].stack_size | ||||
|  | ||||
|     local item_count = 1 | ||||
|  | ||||
|   | ||||
| @@ -39,7 +39,7 @@ local Public = {} | ||||
|  | ||||
| Global.register( | ||||
|     this, | ||||
|     function(tbl) | ||||
|     function (tbl) | ||||
|         this = tbl | ||||
|     end | ||||
| ) | ||||
| @@ -98,15 +98,15 @@ local function item(item_name, item_count, player, storage) | ||||
|     local stack_size = this.stack_size[player.index] | ||||
|     local item_stack | ||||
|     if stack_size then | ||||
|         item_stack = game.item_prototypes[item_name].stack_size * stack_size | ||||
|         item_stack = prototypes.item[item_name].stack_size * stack_size | ||||
|     else | ||||
|         item_stack = game.item_prototypes[item_name].stack_size | ||||
|         item_stack = prototypes.item[item_name].stack_size | ||||
|     end | ||||
|  | ||||
|     local diff = item_count - item_stack | ||||
|  | ||||
|     if diff > 0 then | ||||
|         local count = player.remove({name = item_name, count = diff}) | ||||
|         local count = player.remove({ name = item_name, count = diff }) | ||||
|         if not storage[item_name] then | ||||
|             storage[item_name] = count | ||||
|         else | ||||
| @@ -117,10 +117,10 @@ local function item(item_name, item_count, player, storage) | ||||
|             goto continue | ||||
|         end | ||||
|         if storage[item_name] > (diff * -1) then | ||||
|             local inserted = player.insert({name = item_name, count = (diff * -1)}) | ||||
|             local inserted = player.insert({ name = item_name, count = (diff * -1) }) | ||||
|             storage[item_name] = storage[item_name] - inserted | ||||
|         else | ||||
|             player.insert({name = item_name, count = storage[item_name]}) | ||||
|             player.insert({ name = item_name, count = storage[item_name] }) | ||||
|             storage[item_name] = 0 | ||||
|         end | ||||
|     end | ||||
| @@ -167,25 +167,25 @@ local function draw_main_frame(player, target, chest_id) | ||||
|     local p = target or player | ||||
|     local frame = | ||||
|         player.gui.screen.add { | ||||
|         type = 'frame', | ||||
|         caption = p.name .. '´s private portable stash', | ||||
|         direction = 'vertical', | ||||
|         name = main_frame_name | ||||
|     } | ||||
|             type = 'frame', | ||||
|             caption = p.name .. '´s private portable stash', | ||||
|             direction = 'vertical', | ||||
|             name = main_frame_name | ||||
|         } | ||||
|     frame.auto_center = true | ||||
|  | ||||
|     local data = {} | ||||
|  | ||||
|     local controls = frame.add {type = 'flow', direction = 'horizontal'} | ||||
|     local items = frame.add {type = 'flow', direction = 'vertical'} | ||||
|     local controls = frame.add { type = 'flow', direction = 'horizontal' } | ||||
|     local items = frame.add { type = 'flow', direction = 'vertical' } | ||||
|  | ||||
|     local tbl = controls.add {type = 'table', column_count = 1} | ||||
|     local tbl = controls.add { type = 'table', column_count = 1 } | ||||
|     local btn = | ||||
|         tbl.add { | ||||
|         type = 'sprite-button', | ||||
|         tooltip = '[color=blue]Info![/color]\nYou can easily remove an item by left/right-clicking it.\n\nItems selected in the table below will remove all stacks except one from the player inventory.\nIf the stack-size is bigger in the personal stash than the players inventory stack then the players inventory will automatically refill from the personal stash.\n\n[color=red]Usage[/color]\nPressing the following keys will do the following actions:\nCTRL: Retrieves all stacks from clicked item\nSHIFT:Retrieves a stack from clicked item.\nStack-Size slider will always ensure that you have <x> amounts of stacks in your inventory.\n\n[color=red]Deleting[/color]\nDelete Mode: Will delete the clicked item instantly.', | ||||
|         sprite = 'utility/questionmark' | ||||
|     } | ||||
|             type = 'sprite-button', | ||||
|             tooltip = '[color=blue]Info![/color]\nYou can easily remove an item by left/right-clicking it.\n\nItems selected in the table below will remove all stacks except one from the player inventory.\nIf the stack-size is bigger in the personal stash than the players inventory stack then the players inventory will automatically refill from the personal stash.\n\n[color=red]Usage[/color]\nPressing the following keys will do the following actions:\nCTRL: Retrieves all stacks from clicked item\nSHIFT:Retrieves a stack from clicked item.\nStack-Size slider will always ensure that you have <x> amounts of stacks in your inventory.\n\n[color=red]Deleting[/color]\nDelete Mode: Will delete the clicked item instantly.', | ||||
|             sprite = 'utility/questionmark' | ||||
|         } | ||||
|     btn.style.height = 20 | ||||
|     btn.style.width = 20 | ||||
|     btn.enabled = false | ||||
| @@ -204,40 +204,40 @@ local function draw_main_frame(player, target, chest_id) | ||||
|  | ||||
|     local text = | ||||
|         tbl.add { | ||||
|         type = 'label', | ||||
|         caption = format('Stores unlimited quantity of items (up to ' .. amount_and_types .. ' types).\nRead the tooltip by hovering the question-mark above!') | ||||
|     } | ||||
|             type = 'label', | ||||
|             caption = format('Stores unlimited quantity of items (up to ' .. amount_and_types .. ' types).\nRead the tooltip by hovering the question-mark above!') | ||||
|         } | ||||
|     text.style.single_line = false | ||||
|  | ||||
|     local tbl_2 = tbl.add {type = 'table', column_count = 4} | ||||
|     local tbl_2 = tbl.add { type = 'table', column_count = 4 } | ||||
|     local stack_size = this.stack_size[player.index] | ||||
|  | ||||
|     local stack_value = tbl_2.add({type = 'label', caption = 'Stack Size: ' .. stack_size .. ' '}) | ||||
|     local stack_value = tbl_2.add({ type = 'label', caption = 'Stack Size: ' .. stack_size .. ' ' }) | ||||
|     stack_value.style.font = 'default-bold' | ||||
|     data.stack_value = stack_value | ||||
|  | ||||
|     local slider = | ||||
|         tbl_2.add( | ||||
|         { | ||||
|             type = 'slider', | ||||
|             minimum_value = 1, | ||||
|             maximum_value = 10, | ||||
|             name = stack_slider_name, | ||||
|             value = stack_size | ||||
|         } | ||||
|     ) | ||||
|             { | ||||
|                 type = 'slider', | ||||
|                 minimum_value = 1, | ||||
|                 maximum_value = 10, | ||||
|                 name = stack_slider_name, | ||||
|                 value = stack_size | ||||
|             } | ||||
|         ) | ||||
|     data.slider = slider | ||||
|     slider.style.width = 115 | ||||
|     Gui.set_data(slider, data) | ||||
|  | ||||
|     local delete_mode = tbl_2.add({type = 'label', caption = '  Delete Mode: '}) | ||||
|     local delete_mode = tbl_2.add({ type = 'label', caption = '  Delete Mode: ' }) | ||||
|     delete_mode.style.font = 'default-bold' | ||||
|     local checkbox = tbl_2.add({type = 'checkbox', name = delete_mode_name, state = false}) | ||||
|     local checkbox = tbl_2.add({ type = 'checkbox', name = delete_mode_name, state = false }) | ||||
|     data.checkbox = checkbox | ||||
|  | ||||
|     Gui.set_data(checkbox, data) | ||||
|  | ||||
|     tbl.add({type = 'line'}) | ||||
|     tbl.add({ type = 'line' }) | ||||
|  | ||||
|     player.opened = frame | ||||
|     if target and target.valid then | ||||
| @@ -281,7 +281,7 @@ local function update_gui() | ||||
|         end | ||||
|         frame.clear() | ||||
|  | ||||
|         local tbl = frame.add {type = 'table', column_count = 10, name = 'personal_inventory'} | ||||
|         local tbl = frame.add { type = 'table', column_count = 10, name = 'personal_inventory' } | ||||
|         local total = 0 | ||||
|         local items = {} | ||||
|  | ||||
| @@ -302,12 +302,12 @@ local function update_gui() | ||||
|         for item_name, item_count in pairs(items) do | ||||
|             btn = | ||||
|                 tbl.add { | ||||
|                 type = 'sprite-button', | ||||
|                 sprite = 'item/' .. item_name, | ||||
|                 style = 'slot_button', | ||||
|                 number = item_count, | ||||
|                 name = item_name | ||||
|             } | ||||
|                     type = 'sprite-button', | ||||
|                     sprite = 'item/' .. item_name, | ||||
|                     style = 'slot_button', | ||||
|                     number = item_count, | ||||
|                     name = item_name | ||||
|                 } | ||||
|             btn.enabled = true | ||||
|             btn.style.height = size | ||||
|             btn.style.width = size | ||||
| @@ -318,7 +318,7 @@ local function update_gui() | ||||
|         end | ||||
|  | ||||
|         while total < this.total_slots[player.index] do | ||||
|             local btns = tbl.add {type = 'choose-elem-button', style = 'slot_button', elem_type = 'item'} | ||||
|             local btns = tbl.add { type = 'choose-elem-button', style = 'slot_button', elem_type = 'item' } | ||||
|             btns.enabled = true | ||||
|             btns.style.height = size | ||||
|             btns.style.width = size | ||||
| @@ -406,7 +406,7 @@ local function gui_click(event) | ||||
|         if not count then | ||||
|             return | ||||
|         end | ||||
|         local inserted = player.insert {name = name, count = count} | ||||
|         local inserted = player.insert { name = name, count = count } | ||||
|         if not inserted then | ||||
|             return | ||||
|         end | ||||
| @@ -420,7 +420,7 @@ local function gui_click(event) | ||||
|         end | ||||
|     elseif shift then | ||||
|         local count = storage[name] | ||||
|         local stack = game.item_prototypes[name].stack_size | ||||
|         local stack = prototypes.item[name].stack_size | ||||
|         if not count then | ||||
|             return | ||||
|         end | ||||
| @@ -428,10 +428,10 @@ local function gui_click(event) | ||||
|             return | ||||
|         end | ||||
|         if count > stack then | ||||
|             local inserted = player.insert {name = name, count = stack} | ||||
|             local inserted = player.insert { name = name, count = stack } | ||||
|             storage[name] = storage[name] - inserted | ||||
|         else | ||||
|             player.insert {name = name, count = count} | ||||
|             player.insert { name = name, count = count } | ||||
|             storage[name] = nil | ||||
|         end | ||||
|         if this.inf_gui[player.index] then | ||||
| @@ -568,7 +568,7 @@ end | ||||
|  | ||||
| Gui.on_click( | ||||
|     main_button_name, | ||||
|     function(event) | ||||
|     function (event) | ||||
|         local is_spamming = SpamProtection.is_spamming(event.player, nil, 'Portable Chest Main Button') | ||||
|         if is_spamming then | ||||
|             return | ||||
| @@ -590,7 +590,7 @@ Gui.on_click( | ||||
|  | ||||
| Gui.on_value_changed( | ||||
|     stack_slider_name, | ||||
|     function(event) | ||||
|     function (event) | ||||
|         local player = event.player | ||||
|         local element = event.element | ||||
|  | ||||
| @@ -617,7 +617,7 @@ Gui.on_value_changed( | ||||
|  | ||||
| Gui.on_checked_state_changed( | ||||
|     delete_mode_name, | ||||
|     function(event) | ||||
|     function (event) | ||||
|         local player = event.player | ||||
|         local element = event.element | ||||
|  | ||||
| @@ -639,7 +639,7 @@ Gui.on_checked_state_changed( | ||||
| commands.add_command( | ||||
|     'open_stash', | ||||
|     'Opens a players private stash!', | ||||
|     function(cmd) | ||||
|     function (cmd) | ||||
|         local player = game.player | ||||
|  | ||||
|         if not validate_player(player) then | ||||
|   | ||||
| @@ -27,7 +27,7 @@ local particles = { | ||||
| local function get_chances() | ||||
|     local chances = {} | ||||
|  | ||||
|     if game.entity_prototypes['angels-ore1'] then | ||||
|     if prototypes.entity['angels-ore1'] then | ||||
|         for i = 1, 6, 1 do | ||||
|             table.insert(chances, { 'angels-ore' .. i, 1 }) | ||||
|         end | ||||
|   | ||||
| @@ -18,7 +18,7 @@ local size_raffle = { | ||||
| local function get_chances() | ||||
|     local chances = {} | ||||
|  | ||||
|     if game.entity_prototypes['angels-ore1'] then | ||||
|     if prototypes.entity['angels-ore1'] then | ||||
|         for i = 1, 6, 1 do | ||||
|             table.insert(chances, { 'angels-ore' .. i, 1 }) | ||||
|         end | ||||
| @@ -45,7 +45,7 @@ local function set_raffle() | ||||
|         end | ||||
|     end | ||||
|  | ||||
|     if game.entity_prototypes['angels-ore1'] then | ||||
|     if prototypes.entity['angels-ore1'] then | ||||
|         storage.rocks_yield_ore_veins.mixed_ores = { 'angels-ore1', 'angels-ore2', 'angels-ore3', 'angels-ore4', 'angels-ore5', 'angels-ore6', 'coal' } | ||||
|         return | ||||
|     end | ||||
| @@ -90,7 +90,7 @@ local function ore_vein(event) | ||||
|     local size = size_raffle[math_random(1, #size_raffle)] | ||||
|     local ore = storage.rocks_yield_ore_veins.raffle[math_random(1, #storage.rocks_yield_ore_veins.raffle)] | ||||
|     local icon | ||||
|     if game.entity_prototypes[ore] then | ||||
|     if prototypes.entity[ore] then | ||||
|         icon = '[img=entity/' .. ore .. ']' | ||||
|     else | ||||
|         icon = ' ' | ||||
|   | ||||
| @@ -8,7 +8,7 @@ local stone_ratio = 0.25      --If math.random() is between diversity and this, | ||||
| --Build a table of potential ores to pick from.  Uranium is exempt from popping up randomly. | ||||
| local function init() | ||||
|     storage.diverse_ores = {} | ||||
|     for k, v in pairs(game.entity_prototypes) do | ||||
|     for k, v in pairs(prototypes.entity) do | ||||
|         if v.type == 'resource' and v.resource_category == 'basic-solid' and v.mineable_properties.required_fluid == nil then | ||||
|             table.insert(storage.diverse_ores, v.name) | ||||
|         end | ||||
|   | ||||
| @@ -182,7 +182,7 @@ local function redraw_inventory(gui, source, target, caption, panel_type) | ||||
|     gui.clear() | ||||
|  | ||||
|     local items_table = gui.add({ type = 'table', column_count = 11 }) | ||||
|     local types = game.item_prototypes | ||||
|     local types = prototypes.item | ||||
|  | ||||
|     local screen = source.gui.screen | ||||
|  | ||||
|   | ||||
| @@ -10,13 +10,13 @@ local table_remove = table.remove | ||||
|  | ||||
| local function get_commmands(target, group) | ||||
|     local commands = {} | ||||
|     local group_position = {x = group.position.x, y = group.position.y} | ||||
|     local group_position = { x = group.position.x, y = group.position.y } | ||||
|     local step_length = 128 | ||||
|  | ||||
|     local target_position = target.position | ||||
|     local distance_to_target = math_floor(math_sqrt((target_position.x - group_position.x) ^ 2 + (target_position.y - group_position.y) ^ 2)) | ||||
|     local steps = math_floor(distance_to_target / step_length) + 1 | ||||
|     local vector = {math_round((target_position.x - group_position.x) / steps, 3), math_round((target_position.y - group_position.y) / steps, 3)} | ||||
|     local vector = { math_round((target_position.x - group_position.x) / steps, 3), math_round((target_position.y - group_position.y) / steps, 3) } | ||||
|  | ||||
|     for i = 1, steps, 1 do | ||||
|         group_position.x = group_position.x + vector[1] | ||||
| @@ -25,7 +25,7 @@ local function get_commmands(target, group) | ||||
|         if position then | ||||
|             commands[#commands + 1] = { | ||||
|                 type = defines.command.attack_area, | ||||
|                 destination = {x = position.x, y = position.y}, | ||||
|                 destination = { x = position.x, y = position.y }, | ||||
|                 radius = 16, | ||||
|                 distraction = defines.distraction.by_anything | ||||
|             } | ||||
| @@ -53,7 +53,7 @@ local function roll_market() | ||||
|     local town_centers = townytable.town_centers | ||||
|  | ||||
|     --Skip Towns that are too low in reserach for the current biter evolution. | ||||
|     local research_threshold = game.forces.enemy.evolution_factor * #game.technology_prototypes * 0.175 | ||||
|     local research_threshold = game.forces.enemy.evolution_factor * #prototypes.technology * 0.175 | ||||
|  | ||||
|     for k, town_center in pairs(town_centers) do | ||||
|         if town_center.research_counter >= research_threshold then | ||||
| @@ -77,7 +77,7 @@ local function roll_market() | ||||
| end | ||||
|  | ||||
| local function get_random_close_spawner(surface, market) | ||||
|     local spawners = surface.find_entities_filtered({type = 'unit-spawner'}) | ||||
|     local spawners = surface.find_entities_filtered({ type = 'unit-spawner' }) | ||||
|     if not spawners[1] then | ||||
|         return false | ||||
|     end | ||||
| @@ -135,15 +135,15 @@ function Public.wipe_units_out_of_evo_range() | ||||
|         units_to_wipe[#units_to_wipe + 1] = 'medium-spitter' | ||||
|     end | ||||
|     for k, surface in pairs(game.surfaces) do | ||||
|         for k2, unit in pairs(surface.find_entities_filtered({name = units_to_wipe, force = 'enemy'})) do | ||||
|         for k2, unit in pairs(surface.find_entities_filtered({ name = units_to_wipe, force = 'enemy' })) do | ||||
|             unit.destroy() | ||||
|         end | ||||
|     end | ||||
| end | ||||
|  | ||||
| function Public.clear_spawn_for_player(player) | ||||
|     local area = {{player.position.x - 64, player.position.y - 64}, {player.position.x + 64, player.position.y + 64}} | ||||
|     for _, e in pairs(player.surface.find_entities_filtered({force = 'enemy', type = {'unit-spawner', 'unit', 'turret'}, area = area})) do | ||||
|     local area = { { player.position.x - 64, player.position.y - 64 }, { player.position.x + 64, player.position.y + 64 } } | ||||
|     for _, e in pairs(player.surface.find_entities_filtered({ force = 'enemy', type = { 'unit-spawner', 'unit', 'turret' }, area = area })) do | ||||
|         e.destroy() | ||||
|     end | ||||
| end | ||||
| @@ -187,7 +187,7 @@ function Public.swarm() | ||||
|     if not unit_group_position then | ||||
|         return | ||||
|     end | ||||
|     local unit_group = surface.create_unit_group({position = unit_group_position, force = units[1].force}) | ||||
|     local unit_group = surface.create_unit_group({ position = unit_group_position, force = units[1].force }) | ||||
|     local count = (town_center.research_counter * 1.5) + 4 | ||||
|     for key, unit in pairs(units) do | ||||
|         if key > count then | ||||
| @@ -202,7 +202,7 @@ function Public.swarm() | ||||
|             commands = get_commmands(market, unit_group) | ||||
|         } | ||||
|     ) | ||||
|     table_insert(townytable.swarms, {group = unit_group, timeout = game.tick + 36000}) | ||||
|     table_insert(townytable.swarms, { group = unit_group, timeout = game.tick + 36000 }) | ||||
| end | ||||
|  | ||||
| function Public.set_evolution() | ||||
| @@ -213,7 +213,7 @@ function Public.set_evolution() | ||||
|         return | ||||
|     end | ||||
|  | ||||
|     local max_research_count = math_floor(#game.technology_prototypes * 0.30) | ||||
|     local max_research_count = math_floor(#prototypes.technology * 0.30) | ||||
|  | ||||
|     local evo = 0 | ||||
|     for _, town_center in pairs(townytable.town_centers) do | ||||
|   | ||||
| @@ -355,7 +355,7 @@ function Public.insert_all_items(player) | ||||
|                 player.get_inventory(defines.inventory.character_armor).clear() | ||||
|             end | ||||
|             player.insert { name = 'power-armor-mk2', count = 1 } | ||||
|             Modifiers.update_single_modifier(player, 'character_inventory_slots_bonus', 'creative', #game.item_prototypes) | ||||
|             Modifiers.update_single_modifier(player, 'character_inventory_slots_bonus', 'creative', #prototypes.item) | ||||
|             Modifiers.update_single_modifier(player, 'character_mining_speed_modifier', 'creative', 150) | ||||
|             Modifiers.update_single_modifier(player, 'character_health_bonus', 'creative', 2000) | ||||
|             Modifiers.update_single_modifier(player, 'character_crafting_speed_modifier', 'creative', 150) | ||||
| @@ -382,7 +382,7 @@ function Public.insert_all_items(player) | ||||
|                 p_armor.put({ name = 'battery-mk2-equipment' }) | ||||
|                 p_armor.put({ name = 'battery-mk2-equipment' }) | ||||
|             end | ||||
|             local item = game.item_prototypes | ||||
|             local item = prototypes.item | ||||
|             local i = 0 | ||||
|             for _k, _v in pairs(item) do | ||||
|                 i = i + 1 | ||||
|   | ||||
| @@ -458,7 +458,7 @@ function Public.roll_item_stack(remaining_budget, blacklist) | ||||
|         end | ||||
|     end | ||||
|  | ||||
|     local stack_size = game.item_prototypes[item_name] and game.item_prototypes[item_name].stack_size and game.item_prototypes[item_name].stack_size | ||||
|     local stack_size = prototypes.item[item_name] and prototypes.item[item_name].stack_size and prototypes.item[item_name].stack_size | ||||
|     if not stack_size then stack_size = 1 end | ||||
|  | ||||
|     local item_count = 1 | ||||
|   | ||||
| @@ -70,7 +70,7 @@ end | ||||
|  | ||||
| local function on_init() | ||||
|     storage.watery_world_fishes = {} | ||||
|     for _, prototype in pairs(game.entity_prototypes) do | ||||
|     for _, prototype in pairs(prototypes.entity) do | ||||
|         if prototype.type == 'fish' then | ||||
|             table.insert(storage.watery_world_fishes, prototype.name) | ||||
|         end | ||||
|   | ||||
		Reference in New Issue
	
	Block a user