diff --git a/map_gen/presets/crash_site.lua b/map_gen/presets/crash_site.lua index eb27d48d..eb38d4c2 100644 --- a/map_gen/presets/crash_site.lua +++ b/map_gen/presets/crash_site.lua @@ -45,18 +45,34 @@ local half_grid_size = grid_size * 0.5 local et = OutpostBuilder.empty_template -local small_gear_factory = require 'map_gen.presets.crash_site.outpost_data.small_gear_factory' -local medium_gear_factory = require 'map_gen.presets.crash_site.outpost_data.medium_gear_factory' -local big_gear_factory = require 'map_gen.presets.crash_site.outpost_data.big_gear_factory' - local small_iron_plate_factory = require 'map_gen.presets.crash_site.outpost_data.small_iron_plate_factory' local medium_iron_plate_factory = require 'map_gen.presets.crash_site.outpost_data.medium_iron_plate_factory' local big_iron_plate_factory = require 'map_gen.presets.crash_site.outpost_data.big_iron_plate_factory' +local small_copper_plate_factory = require 'map_gen.presets.crash_site.outpost_data.small_copper_plate_factory' +local medium_copper_plate_factory = require 'map_gen.presets.crash_site.outpost_data.medium_copper_plate_factory' +local big_copper_plate_factory = require 'map_gen.presets.crash_site.outpost_data.big_copper_plate_factory' + +local small_gear_factory = require 'map_gen.presets.crash_site.outpost_data.small_gear_factory' +local medium_gear_factory = require 'map_gen.presets.crash_site.outpost_data.medium_gear_factory' +local big_gear_factory = require 'map_gen.presets.crash_site.outpost_data.big_gear_factory' + local small_circuit_factory = require 'map_gen.presets.crash_site.outpost_data.small_circuit_factory' local medium_circuit_factory = require 'map_gen.presets.crash_site.outpost_data.medium_circuit_factory' local big_circuit_factory = require 'map_gen.presets.crash_site.outpost_data.big_circuit_factory' +local small_engine_factory = require 'map_gen.presets.crash_site.outpost_data.small_engine_factory' +local medium_engine_factory = require 'map_gen.presets.crash_site.outpost_data.medium_engine_factory' +local big_engine_factory = require 'map_gen.presets.crash_site.outpost_data.big_engine_factory' + +local small_ammo_factory = require 'map_gen.presets.crash_site.outpost_data.small_ammo_factory' +local medium_ammo_factory = require 'map_gen.presets.crash_site.outpost_data.medium_ammo_factory' +local big_ammo_factory = require 'map_gen.presets.crash_site.outpost_data.big_ammo_factory' + +local small_science_factory = require 'map_gen.presets.crash_site.outpost_data.small_science_factory' +local medium_science_factory = require 'map_gen.presets.crash_site.outpost_data.medium_science_factory' +local big_science_factory = require 'map_gen.presets.crash_site.outpost_data.big_science_factory' + local stage1 = { {} } @@ -66,7 +82,7 @@ for r = 1, 100 do local row = {} pattern[r] = row for c = 1, 100 do - row[c] = outpost_builder:do_outpost(small_circuit_factory) + row[c] = outpost_builder:do_outpost(medium_ammo_factory) end end @@ -102,7 +118,6 @@ local market = { --[[ for i = 4, 1000 do market.data[i] = market.data[1] end ]] - local outpost = outpost_builder.to_shape( { @@ -117,5 +132,5 @@ local outpost = local map = b.change_tile(outposts, true, 'grass-1') --return b.full_shape ---return map -return outpost +return map +--return outpost diff --git a/map_gen/presets/crash_site/outpost_builder.lua b/map_gen/presets/crash_site/outpost_builder.lua index aac4f5ea..d466fa3d 100644 --- a/map_gen/presets/crash_site/outpost_builder.lua +++ b/map_gen/presets/crash_site/outpost_builder.lua @@ -786,13 +786,10 @@ function Public.make_4_way(data) i4 = i4 + 1 elseif offset == 1 then i = i + 1 - i4 = i4 + 1 + i2 = i2 + 6 elseif offset == 2 then i = i + 6 - i2 = i2 + 6 - else - i = i - i2 = i2 + i4 = i4 + 1 end local dir = entity.direction or 0 @@ -1065,6 +1062,7 @@ Public.market_set_items_callback = Public.firearm_magazine_ammo = {name = 'firearm-magazine', count = 200} Public.piercing_rounds_magazine_ammo = {name = 'piercing-rounds-magazine', count = 200} Public.uranium_rounds_magazine_ammo = {name = 'uranium-rounds-magazine', count = 200} +Public.artillery_shell_ammo = {name = 'artillery-shell', count = 15} Public.light_oil_ammo = {name = 'light-oil', amount = 100} Public.laser_turrent_power_source = {buffer_size = 2400000, power_production = 40000} diff --git a/map_gen/presets/crash_site/outpost_data/artillery_block.lua b/map_gen/presets/crash_site/outpost_data/artillery_block.lua new file mode 100644 index 00000000..79a4801a --- /dev/null +++ b/map_gen/presets/crash_site/outpost_data/artillery_block.lua @@ -0,0 +1,41 @@ +local ob = require 'map_gen.presets.crash_site.outpost_builder' + +return ob.make_1_way { + turret = {callback = ob.refill_turret_callback, data = ob.artillery_shell_ammo}, + [1] = {tile = 'refined-concrete'}, + [2] = {tile = 'refined-concrete'}, + [3] = {tile = 'refined-concrete'}, + [4] = {tile = 'refined-concrete'}, + [5] = {tile = 'refined-concrete'}, + [6] = {tile = 'refined-concrete'}, + [7] = {tile = 'refined-concrete'}, + [8] = {entity = {name = 'artillery-turret', callback = 'turret'}, tile = 'refined-concrete'}, + [9] = {tile = 'refined-concrete'}, + [10] = {tile = 'refined-concrete'}, + [11] = {entity = {name = 'artillery-turret', callback = 'turret', direction = 2}, tile = 'refined-concrete'}, + [12] = {tile = 'refined-concrete'}, + [13] = {tile = 'refined-concrete'}, + [14] = {tile = 'refined-concrete'}, + [15] = {tile = 'refined-concrete'}, + [16] = {tile = 'refined-concrete'}, + [17] = {tile = 'refined-concrete'}, + [18] = {tile = 'refined-concrete'}, + [19] = {tile = 'refined-concrete'}, + [20] = {tile = 'refined-concrete'}, + [21] = {tile = 'refined-concrete'}, + [22] = {tile = 'refined-concrete'}, + [23] = {tile = 'refined-concrete'}, + [24] = {tile = 'refined-concrete'}, + [25] = {tile = 'refined-concrete'}, + [26] = {entity = {name = 'artillery-turret', callback = 'turret', direction = 6}, tile = 'refined-concrete'}, + [27] = {tile = 'refined-concrete'}, + [28] = {tile = 'refined-concrete'}, + [29] = {entity = {name = 'artillery-turret', callback = 'turret', direction = 4}, tile = 'refined-concrete'}, + [30] = {tile = 'refined-concrete'}, + [31] = {tile = 'refined-concrete'}, + [32] = {tile = 'refined-concrete'}, + [33] = {tile = 'refined-concrete'}, + [34] = {tile = 'refined-concrete'}, + [35] = {tile = 'refined-concrete'}, + [36] = {tile = 'refined-concrete'} +} diff --git a/map_gen/presets/crash_site/outpost_data/big_ammo_factory.lua b/map_gen/presets/crash_site/outpost_data/big_ammo_factory.lua new file mode 100644 index 00000000..7ab3405a --- /dev/null +++ b/map_gen/presets/crash_site/outpost_data/big_ammo_factory.lua @@ -0,0 +1,201 @@ +local ob = require 'map_gen.presets.crash_site.outpost_builder' +local Token = require 'utils.global_token' + +local loot = { + {weight = 10}, + {stack = {name = 'coin', count = 750, distance_factor = 1 / 2}, weight = 5}, + {stack = {name = 'piercing-rounds-magazine', count = 500, distance_factor = 1 / 2}, weight = 5}, + {stack = {name = 'uranium-rounds-magazine', count = 300, distance_factor = 1 / 2}, weight = 5}, + {stack = {name = 'piercing-shotgun-shell', count = 200, distance_factor = 1 / 4}, weight = 2}, + {stack = {name = 'grenade', count = 100, distance_factor = 1 / 8}, weight = 1}, + {stack = {name = 'land-mine', count = 400, distance_factor = 1}, weight = 1}, + {stack = {name = 'rocket', count = 200, distance_factor = 1 / 32}, weight = 2}, + {stack = {name = 'explosive-rocket', count = 200, distance_factor = 1 / 32}, weight = 1}, + {stack = {name = 'cannon-shell', count = 200, distance_factor = 1 / 32}, weight = 2}, + {stack = {name = 'explosive-cannon-shell', count = 200, distance_factor = 1 / 32}, weight = 1}, + {stack = {name = 'cluster-grenade', count = 100, distance_factor = 1 / 32}, weight = 1}, + {stack = {name = 'poison-capsule', count = 100, distance_factor = 1 / 32}, weight = 1}, + {stack = {name = 'slowdown-capsule', count = 100, distance_factor = 1 / 32}, weight = 1}, + {stack = {name = 'destroyer-capsule', count = 20, distance_factor = 1 / 32}, weight = 1} +} + +local weights = ob.prepare_weighted_loot(loot) + +local loot_callback = + Token.register( + function(chest) + ob.do_random_loot(chest, weights, loot) + end +) + +local factory = { + callback = ob.magic_item_crafting_callback, + data = { + recipe = 'piercing-rounds-magazine', + output = {min_rate = 1 / 60, distance_factor = 1 / 60 / 100, item = 'piercing-rounds-magazine'} + } +} + +local factory_b = { + callback = ob.magic_item_crafting_callback, + data = { + recipe = 'cannon-shell', + output = {min_rate = 1 / 3 / 60, distance_factor = 1 / 60 / 100, item = 'cannon-shell'} + } +} + +local factory_c = { + callback = ob.magic_item_crafting_callback, + data = { + recipe = 'uranium-rounds-magazine', + output = {min_rate = 1 / 3 / 60, distance_factor = 1 / 60 / 100, item = 'uranium-rounds-magazine'} + } +} + +local market = { + callback = ob.market_set_items_callback, + data = { + { + name = 'firearm-magazine', + price = 1, + distance_factor = 0.005 / 32, + min_price = 0.1 + }, + { + name = 'piercing-rounds-magazine', + price = 3, + distance_factor = 0.005 / 32, + min_price = 0.3 + }, + { + name = 'uranium-rounds-magazine', + price = 9, + distance_factor = 0.005 / 32, + min_price = 0.9 + }, + { + name = 'shotgun-shell', + price = 2, + distance_factor = 0.005 / 32, + min_price = 0.2 + }, + { + name = 'piercing-shotgun-shell', + price = 6, + distance_factor = 0.005 / 32, + min_price = 0.6 + }, + { + name = 'grenade', + price = 10, + distance_factor = 0.005 / 32, + min_price = 1 + }, + { + name = 'land-mine', + price = 1, + distance_factor = 0.005 / 32, + min_price = 0.1 + }, + { + name = 'rocket', + price = 20, + distance_factor = 0.005 / 32, + min_price = 2 + }, + { + name = 'explosive-rocket', + price = 40, + distance_factor = 0.005 / 32, + min_price = 4 + }, + { + name = 'rocket-launcher', + price = 250, + distance_factor = 0.005 / 32, + min_price = 125 + }, + { + name = 'cluster-grenade', + price = 60, + distance_factor = 0.005 / 32, + min_price = 6 + }, + { + name = 'poison-capsule', + price = 60, + distance_factor = 0.005 / 32, + min_price = 6 + }, + { + name = 'slowdown-capsule', + price = 60, + distance_factor = 0.005 / 32, + min_price = 6 + }, + { + name = 'cannon-shell', + price = 60, + distance_factor = 0.005 / 32, + min_price = 6 + }, + { + name = 'explosive-cannon-shell', + price = 120, + distance_factor = 0.005 / 32, + min_price = 12 + }, + { + name = 'destroyer-capsule', + price = 80, + distance_factor = 0.005 / 32, + min_price = 8 + } + } +} + +local base_factory = require 'map_gen.presets.crash_site.outpost_data.big_factory' + +local level2 = ob.extend_1_way(base_factory[1], {loot = {callback = loot_callback}}) +local level3 = + ob.extend_1_way( + base_factory[2], + { + factory = factory, + fallback = level2 + } +) +local level4 = + ob.extend_1_way( + base_factory[3], + { + market = market, + fallback = level3 + } +) + +local artillery = + ob.extend_1_way( + require 'map_gen.presets.crash_site.outpost_data.artillery_block', + {fallback = level4, max_count = 1} +) + +return { + settings = { + blocks = 11, + variance = 3, + min_step = 2, + max_level = 5 + }, + walls = { + require 'map_gen.presets.crash_site.outpost_data.heavy_gun_turrets', + require 'map_gen.presets.crash_site.outpost_data.heavy_laser_turrets', + require 'map_gen.presets.crash_site.outpost_data.heavy_flame_turrets' + }, + bases = { + {require 'map_gen.presets.crash_site.outpost_data.laser_block'}, + {level2}, + {level4}, + {artillery} + } +} diff --git a/map_gen/presets/crash_site/outpost_data/big_circuit_factory.lua b/map_gen/presets/crash_site/outpost_data/big_circuit_factory.lua index 70bcfaf0..1faf6ab7 100644 --- a/map_gen/presets/crash_site/outpost_data/big_circuit_factory.lua +++ b/map_gen/presets/crash_site/outpost_data/big_circuit_factory.lua @@ -39,32 +39,28 @@ local market = { callback = ob.market_set_items_callback, data = { { - offer = {type = 'give-item', item = 'copper-cable', count = 200}, - name = 'coin', - price = 50, - distance_factor = 1 / 32, - min_price = 5 + name = 'copper-cable', + price = 0.25, + distance_factor = 0.005 / 32, + min_price = 0.025 }, { - offer = {type = 'give-item', item = 'electronic-circuit', count = 200}, - name = 'coin', - price = 200, - distance_factor = 1 / 32, - min_price = 10 + name = 'electronic-circuit', + price = 1, + distance_factor = 0.005 / 32, + min_price = 0.05 }, { - offer = {type = 'give-item', item = 'advanced-circuit', count = 200}, - name = 'coin', - price = 800, - distance_factor = 1 / 32, - min_price = 40 + name = 'advanced-circuit', + price = 4, + distance_factor = 0.005 / 32, + min_price = 0.2 }, { - offer = {type = 'give-item', item = 'processing-unit', count = 200}, - name = 'coin', - price = 2000, - distance_factor = 1 / 32, - min_price = 80 + name = 'processing-unit', + price = 16, + distance_factor = 0.005 / 32, + min_price = 0.8 } } } diff --git a/map_gen/presets/crash_site/outpost_data/big_copper_plate_factory.lua b/map_gen/presets/crash_site/outpost_data/big_copper_plate_factory.lua new file mode 100644 index 00000000..80b6363b --- /dev/null +++ b/map_gen/presets/crash_site/outpost_data/big_copper_plate_factory.lua @@ -0,0 +1,81 @@ +local ob = require 'map_gen.presets.crash_site.outpost_builder' +local Token = require 'utils.global_token' + +local loot = { + {weight = 5}, + {stack = {name = 'coin', count = 2500, distance_factor = 1 / 2}, weight = 5}, + {stack = {name = 'copper-ore', count = 2400}, weight = 2}, + {stack = {name = 'copper-cable', count = 1500, distance_factor = 1 / 2}, weight = 2}, + {stack = {name = 'copper-plate', count = 1000, distance_factor = 1 / 5}, weight = 8} +} + +local weights = ob.prepare_weighted_loot(loot) + +local loot_callback = + Token.register( + function(chest) + ob.do_random_loot(chest, weights, loot) + end +) + +local factory = { + callback = ob.magic_item_crafting_callback, + data = { + furance_item = {name = 'copper-ore', count = 100}, + output = {min_rate = 1.5 / 60, distance_factor = 1.5 / 60 / 100, item = 'copper-plate'} + } +} + +local market = { + callback = ob.market_set_items_callback, + data = { + { + name = 'copper-cable', + price = 0.12, + distance_factor = 0.005 / 32, + min_price = 0.012 + }, + { + name = 'copper-plate', + price = 0.3, + distance_factor = 0.005 / 32, + min_price = 0.03 + } + } +} + +local base_factory = require 'map_gen.presets.crash_site.outpost_data.medium_furance' + +local level2 = ob.extend_1_way(base_factory[1], {loot = {callback = loot_callback}}) +local level3 = + ob.extend_1_way( + base_factory[2], + { + factory = factory, + fallback = level2 + } +) + +local level4 = + ob.extend_1_way( + base_factory[3], + { + market = market, + fallback = level3 + } +) +return { + settings = { + blocks = 9, + variance = 3, + min_step = 2, + max_level = 3 + }, + walls = { + require 'map_gen.presets.crash_site.outpost_data.heavy_gun_turrets' + }, + bases = { + {level2, level3}, + {level4} + } +} diff --git a/map_gen/presets/crash_site/outpost_data/big_engine_factory.lua b/map_gen/presets/crash_site/outpost_data/big_engine_factory.lua new file mode 100644 index 00000000..7a3a69d4 --- /dev/null +++ b/map_gen/presets/crash_site/outpost_data/big_engine_factory.lua @@ -0,0 +1,136 @@ +local ob = require 'map_gen.presets.crash_site.outpost_builder' +local Token = require 'utils.global_token' + +local loot = { + {weight = 5}, + {stack = {name = 'coin', count = 2500, distance_factor = 1 / 2}, weight = 5}, + {stack = {name = 'engine-unit', count = 500, distance_factor = 1 / 2}, weight = 5}, + {stack = {name = 'electric-engine-unit', count = 250, distance_factor = 1 / 2}, weight = 5}, + {stack = {name = 'rail', count = 500, distance_factor = 1}, weight = 1}, + {stack = {name = 'tank', count = 1, distance_factor = 1 / 128}, weight = 1}, + {stack = {name = 'locomotive', count = 5, distance_factor = 1 / 128}, weight = 1}, + {stack = {name = 'cargo-wagon', count = 5, distance_factor = 1 / 128}, weight = 1}, + {stack = {name = 'fluid-wagon', count = 5, distance_factor = 1 / 128}, weight = 1} +} + +local weights = ob.prepare_weighted_loot(loot) + +local loot_callback = + Token.register( + function(chest) + ob.do_random_loot(chest, weights, loot) + end +) + +local factory = { + callback = ob.magic_item_crafting_callback, + data = { + recipe = 'engine-unit', + output = {min_rate = 1 / 60, distance_factor = 1 / 60 / 100, item = 'engine-unit'} + } +} + +local factory_b = { + callback = ob.magic_item_crafting_callback, + data = { + recipe = 'electric-engine-unit', + output = {min_rate = 1 / 60, distance_factor = 1 / 60 / 100, item = 'engine-unit'} + } +} + +local market = { + callback = ob.market_set_items_callback, + data = { + { + name = 'engine-unit', + price = 4, + distance_factor = 0.005 / 32, + min_price = 0.4 + }, + { + name = 'electric-engine-unit', + price = 8, + distance_factor = 0.005 / 32, + min_price = 0.8 + }, + { + name = 'car', + price = 50, + distance_factor = 0.005 / 32, + min_price = 40 + }, + { + name = 'rail', + price = 1, + distance_factor = 0.005 / 32, + min_price = 0.1 + }, + { + name = 'tank', + price = 1000, + distance_factor = 0.005 / 32, + min_price = 250 + }, + { + name = 'locomotive', + price = 100, + distance_factor = 0.005 / 32, + min_price = 40 + }, + { + name = 'cargo-wagon', + price = 20, + distance_factor = 0.005 / 32, + min_price = 10 + }, + { + name = 'fluid-wagon', + price = 40, + distance_factor = 0.005 / 32, + min_price = 20 + } + } +} + +local base_factory = require 'map_gen.presets.crash_site.outpost_data.big_factory' + +local level2 = ob.extend_1_way(base_factory[1], {loot = {callback = loot_callback}}) +local level3 = + ob.extend_1_way( + base_factory[2], + { + factory = factory, + fallback = level2 + } +) +local level3b = + ob.extend_1_way( + base_factory[2], + { + factory = factory_b, + fallback = level2 + } +) +local level4 = + ob.extend_1_way( + base_factory[3], + { + market = market, + fallback = level3 + } +) +return { + settings = { + blocks = 9, + variance = 3, + min_step = 2, + max_level = 3 + }, + walls = { + require 'map_gen.presets.crash_site.outpost_data.heavy_gun_turrets' + }, + bases = { + {level3, level3b, level2}, + {level4} + } +} diff --git a/map_gen/presets/crash_site/outpost_data/big_furance.lua b/map_gen/presets/crash_site/outpost_data/big_furance.lua new file mode 100644 index 00000000..d11e48e9 --- /dev/null +++ b/map_gen/presets/crash_site/outpost_data/big_furance.lua @@ -0,0 +1,132 @@ +local ob = require 'map_gen.presets.crash_site.outpost_builder' + +local level2 = + ob.make_1_way { + force = 'neutral', + [1] = {tile = 'refined-concrete'}, + [2] = {tile = 'refined-concrete'}, + [3] = {tile = 'refined-concrete'}, + [4] = {tile = 'refined-concrete'}, + [5] = {tile = 'refined-concrete'}, + [6] = {tile = 'refined-concrete'}, + [7] = {tile = 'refined-concrete'}, + [8] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, + [9] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, + [10] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, + [11] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, + [12] = {tile = 'refined-concrete'}, + [13] = {tile = 'refined-concrete'}, + [14] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, + [15] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, + [16] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, + [17] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, + [18] = {tile = 'refined-concrete'}, + [19] = {tile = 'refined-concrete'}, + [20] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, + [21] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, + [22] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, + [23] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, + [24] = {tile = 'refined-concrete'}, + [25] = {tile = 'refined-concrete'}, + [26] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, + [27] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, + [28] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, + [29] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, + [30] = {tile = 'refined-concrete'}, + [31] = {tile = 'refined-concrete'}, + [32] = {tile = 'refined-concrete'}, + [33] = {tile = 'refined-concrete'}, + [34] = {tile = 'refined-concrete'}, + [35] = {tile = 'refined-concrete'}, + [36] = {tile = 'refined-concrete'} +} + +local level3 = + ob.make_1_way { + force = 'neutral', + max_count = 9, + [1] = {tile = 'refined-concrete'}, + [2] = {tile = 'refined-concrete'}, + [3] = {tile = 'refined-concrete'}, + [4] = {tile = 'refined-concrete'}, + [5] = {tile = 'refined-concrete'}, + [6] = {tile = 'refined-concrete'}, + [7] = {tile = 'refined-concrete'}, + [8] = {tile = 'refined-concrete'}, + [9] = {tile = 'refined-concrete'}, + [10] = {tile = 'refined-concrete'}, + [11] = {tile = 'refined-concrete'}, + [12] = {tile = 'refined-concrete'}, + [13] = {tile = 'refined-concrete'}, + [14] = {tile = 'refined-concrete'}, + [15] = {entity = {name = 'electric-furnace', callback = 'factory'}, tile = 'refined-concrete'}, + [16] = {tile = 'refined-concrete'}, + [17] = {tile = 'refined-concrete'}, + [18] = {tile = 'refined-concrete'}, + [19] = {tile = 'refined-concrete'}, + [20] = {tile = 'refined-concrete'}, + [21] = {tile = 'refined-concrete'}, + [22] = {tile = 'refined-concrete'}, + [23] = {tile = 'refined-concrete'}, + [24] = {tile = 'refined-concrete'}, + [25] = {tile = 'refined-concrete'}, + [26] = {tile = 'refined-concrete'}, + [27] = {tile = 'refined-concrete'}, + [28] = {tile = 'refined-concrete'}, + [29] = {tile = 'refined-concrete'}, + [30] = {tile = 'refined-concrete'}, + [31] = {tile = 'refined-concrete'}, + [32] = {tile = 'refined-concrete'}, + [33] = {tile = 'refined-concrete'}, + [34] = {tile = 'refined-concrete'}, + [35] = {tile = 'refined-concrete'}, + [36] = {tile = 'refined-concrete'} +} + +local level4 = + ob.make_1_way { + force = 'neutral', + max_count = 1, + [1] = {tile = 'refined-concrete'}, + [2] = {tile = 'refined-concrete'}, + [3] = {tile = 'refined-concrete'}, + [4] = {tile = 'refined-concrete'}, + [5] = {tile = 'refined-concrete'}, + [6] = {tile = 'refined-concrete'}, + [7] = {tile = 'refined-concrete'}, + [8] = {tile = 'refined-concrete'}, + [9] = {tile = 'refined-concrete'}, + [10] = {tile = 'refined-concrete'}, + [11] = {tile = 'refined-concrete'}, + [12] = {tile = 'refined-concrete'}, + [13] = {tile = 'refined-concrete'}, + [14] = {tile = 'refined-concrete'}, + [15] = {entity = {name = 'market', callback = 'market'}}, + [16] = {tile = 'refined-concrete'}, + [17] = {tile = 'refined-concrete'}, + [18] = {tile = 'refined-concrete'}, + [19] = {tile = 'refined-concrete'}, + [20] = {tile = 'refined-concrete'}, + [21] = {tile = 'refined-concrete'}, + [22] = {tile = 'refined-concrete'}, + [23] = {tile = 'refined-concrete'}, + [24] = {tile = 'refined-concrete'}, + [25] = {tile = 'refined-concrete'}, + [26] = {tile = 'refined-concrete'}, + [27] = {tile = 'refined-concrete'}, + [28] = {tile = 'refined-concrete'}, + [29] = {tile = 'refined-concrete'}, + [30] = {tile = 'refined-concrete'}, + [31] = {tile = 'refined-concrete'}, + [32] = {tile = 'refined-concrete'}, + [33] = {tile = 'refined-concrete'}, + [34] = {tile = 'refined-concrete'}, + [35] = {tile = 'refined-concrete'}, + [36] = {tile = 'refined-concrete'} +} + +return { + level2, + level3, + level4 +} diff --git a/map_gen/presets/crash_site/outpost_data/big_gear_factory.lua b/map_gen/presets/crash_site/outpost_data/big_gear_factory.lua index 440675f0..415fd244 100644 --- a/map_gen/presets/crash_site/outpost_data/big_gear_factory.lua +++ b/map_gen/presets/crash_site/outpost_data/big_gear_factory.lua @@ -18,167 +18,57 @@ local loot_callback = end ) -local level2 = - ob.make_1_way { - force = 'neutral', - loot = {callback = loot_callback}, - [1] = {tile = 'refined-concrete'}, - [2] = {tile = 'refined-concrete'}, - [3] = {tile = 'refined-concrete'}, - [4] = {tile = 'refined-concrete'}, - [5] = {tile = 'refined-concrete'}, - [6] = {tile = 'refined-concrete'}, - [7] = {tile = 'refined-concrete'}, - [8] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, - [9] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, - [10] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, - [11] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, - [12] = {tile = 'refined-concrete'}, - [13] = {tile = 'refined-concrete'}, - [14] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, - [15] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, - [16] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, - [17] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, - [18] = {tile = 'refined-concrete'}, - [19] = {tile = 'refined-concrete'}, - [20] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, - [21] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, - [22] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, - [23] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, - [24] = {tile = 'refined-concrete'}, - [25] = {tile = 'refined-concrete'}, - [26] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, - [27] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, - [28] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, - [29] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, - [30] = {tile = 'refined-concrete'}, - [31] = {tile = 'refined-concrete'}, - [32] = {tile = 'refined-concrete'}, - [33] = {tile = 'refined-concrete'}, - [34] = {tile = 'refined-concrete'}, - [35] = {tile = 'refined-concrete'}, - [36] = {tile = 'refined-concrete'} +local factory = { + callback = ob.magic_item_crafting_callback, + data = { + recipe = 'iron-gear-wheel', + output = {min_rate = 1 / 60, distance_factor = 1 / 60 / 100, item = 'iron-gear-wheel'} + } } +local market = { + callback = ob.market_set_items_callback, + data = { + { + name = 'iron-gear-wheel', + price = 0.5, + distance_factor = 0.005 / 32, + min_price = 0.025 + }, + { + name = 'iron-plate', + price = 0.4, + distance_factor = 0.005 / 32, + min_price = 0.02 + }, + { + name = 'steel-plate', + price = 2, + distance_factor = 0.005 / 32, + min_price = 0.125 + } + } +} + +local base_factory = require 'map_gen.presets.crash_site.outpost_data.big_factory' + +local level2 = ob.extend_1_way(base_factory[1], {loot = {callback = loot_callback}}) local level3 = - ob.make_1_way { - force = 'neutral', - factory = { - callback = ob.magic_item_crafting_callback, - data = { - recipe = 'iron-gear-wheel', - output = {min_rate = 1 / 60, distance_factor = 1 / 60 / 100, item = 'iron-gear-wheel'} - } - }, - max_count = 8, - fallback = level2, - [1] = {tile = 'refined-concrete'}, - [2] = {tile = 'refined-concrete'}, - [3] = {tile = 'refined-concrete'}, - [4] = {tile = 'refined-concrete'}, - [5] = {tile = 'refined-concrete'}, - [6] = {tile = 'refined-concrete'}, - [7] = {tile = 'refined-concrete'}, - [8] = {tile = 'refined-concrete'}, - [9] = {tile = 'refined-concrete'}, - [10] = {tile = 'refined-concrete'}, - [11] = {tile = 'refined-concrete'}, - [12] = {tile = 'refined-concrete'}, - [13] = {tile = 'refined-concrete'}, - [14] = {tile = 'refined-concrete'}, - [15] = {entity = {name = 'assembling-machine-2', callback = 'factory'}, tile = 'refined-concrete'}, - [16] = {tile = 'refined-concrete'}, - [17] = {tile = 'refined-concrete'}, - [18] = {tile = 'refined-concrete'}, - [19] = {tile = 'refined-concrete'}, - [20] = {tile = 'refined-concrete'}, - [21] = {tile = 'refined-concrete'}, - [22] = {tile = 'refined-concrete'}, - [23] = {tile = 'refined-concrete'}, - [24] = {tile = 'refined-concrete'}, - [25] = {tile = 'refined-concrete'}, - [26] = {tile = 'refined-concrete'}, - [27] = {tile = 'refined-concrete'}, - [28] = {tile = 'refined-concrete'}, - [29] = {tile = 'refined-concrete'}, - [30] = {tile = 'refined-concrete'}, - [31] = {tile = 'refined-concrete'}, - [32] = {tile = 'refined-concrete'}, - [33] = {tile = 'refined-concrete'}, - [34] = {tile = 'refined-concrete'}, - [35] = {tile = 'refined-concrete'}, - [36] = {tile = 'refined-concrete'} -} - + ob.extend_1_way( + base_factory[2], + { + factory = factory, + fallback = level2 + } +) local level4 = - ob.make_1_way { - force = 'neutral', - market = { - callback = ob.market_set_items_callback, - data = { - { - offer = {type = 'give-item', item = 'iron-gear-wheel', count = 100}, - name = 'coin', - price = 100, - distance_factor = 1 / 32, - min_price = 5 - }, - { - offer = {type = 'give-item', item = 'iron-plate', count = 100}, - name = 'coin', - price = 80, - distance_factor = 1 / 32, - min_price = 4 - }, - { - offer = {type = 'give-item', item = 'steel-plate', count = 100}, - name = 'coin', - price = 400, - distance_factor = 1 / 32, - min_price = 25 - } - } - }, - max_count = 1, - fallback = level3, - [1] = {tile = 'refined-concrete'}, - [2] = {tile = 'refined-concrete'}, - [3] = {tile = 'refined-concrete'}, - [4] = {tile = 'refined-concrete'}, - [5] = {tile = 'refined-concrete'}, - [6] = {tile = 'refined-concrete'}, - [7] = {tile = 'refined-concrete'}, - [8] = {tile = 'refined-concrete'}, - [9] = {tile = 'refined-concrete'}, - [10] = {tile = 'refined-concrete'}, - [11] = {tile = 'refined-concrete'}, - [12] = {tile = 'refined-concrete'}, - [13] = {tile = 'refined-concrete'}, - [14] = {tile = 'refined-concrete'}, - [15] = {entity = {name = 'market', callback = 'market'}}, - [16] = {tile = 'refined-concrete'}, - [17] = {tile = 'refined-concrete'}, - [18] = {tile = 'refined-concrete'}, - [19] = {tile = 'refined-concrete'}, - [20] = {tile = 'refined-concrete'}, - [21] = {tile = 'refined-concrete'}, - [22] = {tile = 'refined-concrete'}, - [23] = {tile = 'refined-concrete'}, - [24] = {tile = 'refined-concrete'}, - [25] = {tile = 'refined-concrete'}, - [26] = {tile = 'refined-concrete'}, - [27] = {tile = 'refined-concrete'}, - [28] = {tile = 'refined-concrete'}, - [29] = {tile = 'refined-concrete'}, - [30] = {tile = 'refined-concrete'}, - [31] = {tile = 'refined-concrete'}, - [32] = {tile = 'refined-concrete'}, - [33] = {tile = 'refined-concrete'}, - [34] = {tile = 'refined-concrete'}, - [35] = {tile = 'refined-concrete'}, - [36] = {tile = 'refined-concrete'} -} - + ob.extend_1_way( + base_factory[3], + { + market = market, + fallback = level3 + } +) return { settings = { blocks = 9, diff --git a/map_gen/presets/crash_site/outpost_data/big_iron_plate_factory.lua b/map_gen/presets/crash_site/outpost_data/big_iron_plate_factory.lua index f8a43490..b5b326c2 100644 --- a/map_gen/presets/crash_site/outpost_data/big_iron_plate_factory.lua +++ b/map_gen/presets/crash_site/outpost_data/big_iron_plate_factory.lua @@ -18,193 +18,81 @@ local loot_callback = end ) -local level2 = - ob.make_1_way { - force = 'neutral', - loot = {callback = loot_callback}, - [1] = {tile = 'refined-concrete'}, - [2] = {tile = 'refined-concrete'}, - [3] = {tile = 'refined-concrete'}, - [4] = {tile = 'refined-concrete'}, - [5] = {tile = 'refined-concrete'}, - [6] = {tile = 'refined-concrete'}, - [7] = {tile = 'refined-concrete'}, - [8] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, - [9] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, - [10] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, - [11] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, - [12] = {tile = 'refined-concrete'}, - [13] = {tile = 'refined-concrete'}, - [14] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, - [15] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, - [16] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, - [17] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, - [18] = {tile = 'refined-concrete'}, - [19] = {tile = 'refined-concrete'}, - [20] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, - [21] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, - [22] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, - [23] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, - [24] = {tile = 'refined-concrete'}, - [25] = {tile = 'refined-concrete'}, - [26] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, - [27] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, - [28] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, - [29] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, - [30] = {tile = 'refined-concrete'}, - [31] = {tile = 'refined-concrete'}, - [32] = {tile = 'refined-concrete'}, - [33] = {tile = 'refined-concrete'}, - [34] = {tile = 'refined-concrete'}, - [35] = {tile = 'refined-concrete'}, - [36] = {tile = 'refined-concrete'} +local factory = { + callback = ob.magic_item_crafting_callback, + data = { + furance_item = {name = 'iron-ore', count = 100}, + output = {min_rate = 1.5 / 60, distance_factor = 1.5 / 60 / 100, item = 'iron-plate'} + } } -local level3 = - ob.make_1_way { - force = 'neutral', - factory = { - callback = ob.magic_item_crafting_callback, - data = { - furance_item = 'iron-ore', - output = {min_rate = 1.5 / 60, distance_factor = 1.5 / 60 / 100, item = 'iron-plate'} - } - }, - max_count = 9, - fallback = level2, - [1] = {tile = 'refined-concrete'}, - [2] = {tile = 'refined-concrete'}, - [3] = {tile = 'refined-concrete'}, - [4] = {tile = 'refined-concrete'}, - [5] = {tile = 'refined-concrete'}, - [6] = {tile = 'refined-concrete'}, - [7] = {tile = 'refined-concrete'}, - [8] = {tile = 'refined-concrete'}, - [9] = {tile = 'refined-concrete'}, - [10] = {tile = 'refined-concrete'}, - [11] = {tile = 'refined-concrete'}, - [12] = {tile = 'refined-concrete'}, - [13] = {tile = 'refined-concrete'}, - [14] = {tile = 'refined-concrete'}, - [15] = {entity = {name = 'electric-furnace', callback = 'factory'}, tile = 'refined-concrete'}, - [16] = {tile = 'refined-concrete'}, - [17] = {tile = 'refined-concrete'}, - [18] = {tile = 'refined-concrete'}, - [19] = {tile = 'refined-concrete'}, - [20] = {tile = 'refined-concrete'}, - [21] = {tile = 'refined-concrete'}, - [22] = {tile = 'refined-concrete'}, - [23] = {tile = 'refined-concrete'}, - [24] = {tile = 'refined-concrete'}, - [25] = {tile = 'refined-concrete'}, - [26] = {tile = 'refined-concrete'}, - [27] = {tile = 'refined-concrete'}, - [28] = {tile = 'refined-concrete'}, - [29] = {tile = 'refined-concrete'}, - [30] = {tile = 'refined-concrete'}, - [31] = {tile = 'refined-concrete'}, - [32] = {tile = 'refined-concrete'}, - [33] = {tile = 'refined-concrete'}, - [34] = {tile = 'refined-concrete'}, - [35] = {tile = 'refined-concrete'}, - [36] = {tile = 'refined-concrete'} +local factory_b = { + callback = ob.magic_item_crafting_callback, + data = { + furance_item = {name = 'iron-plate', count = 100}, + output = {min_rate = 1.5 / 60, distance_factor = 1.5 / 60 / 100, item = 'steel-plate'} + } } +local market = { + callback = ob.market_set_items_callback, + data = { + { + name = 'iron-plate', + price = 0.3, + distance_factor = 0.005 / 32, + min_price = 0.03 + }, + { + name = 'steel-plate', + price = 1.5, + distance_factor = 0.005 / 32, + min_price = 0.15 + } + } +} + +local base_factory = require 'map_gen.presets.crash_site.outpost_data.medium_furance' + +local level2 = ob.extend_1_way(base_factory[1], {loot = {callback = loot_callback}}) +local level3 = + ob.extend_1_way( + base_factory[2], + { + factory = factory, + fallback = level2 + } +) + local level3b = ob.extend_1_way( - level3, + base_factory[2], { - factory = { - callback = ob.magic_item_crafting_callback, - data = { - furance_item = {name = 'iron-plate', count = 100}, - output = {min_rate = 1.5 / 60, distance_factor = 1.5 / 60 / 100, item = 'steel-plate'} - } - } + factory = factory_b, + fallback = level2 } ) local level4 = - ob.make_1_way { - force = 'neutral', - market = { - callback = ob.market_set_items_callback, - data = { - { - offer = {type = 'give-item', item = 'iron-plate', count = 100}, - name = 'coin', - price = 60, - distance_factor = 1 / 32, - min_price = 6 - }, - { - offer = {type = 'give-item', item = 'steel-plate', count = 100}, - name = 'coin', - price = 300, - distance_factor = 1 / 32, - min_price = 30 - } - } - }, - max_count = 1, - fallback = level3, - [1] = {tile = 'refined-concrete'}, - [2] = {tile = 'refined-concrete'}, - [3] = {tile = 'refined-concrete'}, - [4] = {tile = 'refined-concrete'}, - [5] = {tile = 'refined-concrete'}, - [6] = {tile = 'refined-concrete'}, - [7] = {tile = 'refined-concrete'}, - [8] = {tile = 'refined-concrete'}, - [9] = {tile = 'refined-concrete'}, - [10] = {tile = 'refined-concrete'}, - [11] = {tile = 'refined-concrete'}, - [12] = {tile = 'refined-concrete'}, - [13] = {tile = 'refined-concrete'}, - [14] = {tile = 'refined-concrete'}, - [15] = {entity = {name = 'market', callback = 'market'}}, - [16] = {tile = 'refined-concrete'}, - [17] = {tile = 'refined-concrete'}, - [18] = {tile = 'refined-concrete'}, - [19] = {tile = 'refined-concrete'}, - [20] = {tile = 'refined-concrete'}, - [21] = {tile = 'refined-concrete'}, - [22] = {tile = 'refined-concrete'}, - [23] = {tile = 'refined-concrete'}, - [24] = {tile = 'refined-concrete'}, - [25] = {tile = 'refined-concrete'}, - [26] = {tile = 'refined-concrete'}, - [27] = {tile = 'refined-concrete'}, - [28] = {tile = 'refined-concrete'}, - [29] = {tile = 'refined-concrete'}, - [30] = {tile = 'refined-concrete'}, - [31] = {tile = 'refined-concrete'}, - [32] = {tile = 'refined-concrete'}, - [33] = {tile = 'refined-concrete'}, - [34] = {tile = 'refined-concrete'}, - [35] = {tile = 'refined-concrete'}, - [36] = {tile = 'refined-concrete'} -} - -local level4b = ob.extend_1_way( - level4, + base_factory[3], { + market = market, fallback = level3b } ) - return { settings = { blocks = 9, variance = 3, min_step = 2, - max_level = 2 + max_level = 3 }, walls = { require 'map_gen.presets.crash_site.outpost_data.heavy_gun_turrets' }, bases = { - {level4, level4b, level2} + {level2, level3}, + {level4} } } diff --git a/map_gen/presets/crash_site/outpost_data/big_science_factory.lua b/map_gen/presets/crash_site/outpost_data/big_science_factory.lua new file mode 100644 index 00000000..9bba35f9 --- /dev/null +++ b/map_gen/presets/crash_site/outpost_data/big_science_factory.lua @@ -0,0 +1,123 @@ +local ob = require 'map_gen.presets.crash_site.outpost_builder' +local Token = require 'utils.global_token' + +local loot = { + {weight = 10}, + {stack = {name = 'coin', count = 2500, distance_factor = 1 / 2}, weight = 5}, + {stack = {name = 'science-pack-1', count = 200, distance_factor = 1 / 10}, weight = 2}, + {stack = {name = 'science-pack-2', count = 100, distance_factor = 1 / 10}, weight = 2}, + {stack = {name = 'military-science-pack', count = 75, distance_factor = 1 / 10}, weight = 3}, + {stack = {name = 'science-pack-3', count = 75, distance_factor = 1 / 10}, weight = 3}, + {stack = {name = 'production-science-pack', count = 50, distance_factor = 1 / 10}, weight = 5}, + {stack = {name = 'high-tech-science-pack', count = 50, distance_factor = 1 / 10}, weight = 5} +} + +local weights = ob.prepare_weighted_loot(loot) + +local loot_callback = + Token.register( + function(chest) + ob.do_random_loot(chest, weights, loot) + end +) + +local factory = { + callback = ob.magic_item_crafting_callback, + data = { + recipe = 'production-science-pack', + output = {min_rate = 0.1 / 60, distance_factor = 1 / 60 / 1000, item = 'production-science-pack'} + } +} + +local factory_b = { + callback = ob.magic_item_crafting_callback, + data = { + recipe = 'high-tech-science-pack', + output = {min_rate = 0.1 / 60, distance_factor = 1 / 60 / 1000, item = 'high-tech-science-pack'} + } +} + +local market = { + callback = ob.market_set_items_callback, + data = { + { + name = 'science-pack-1', + price = 10, + distance_factor = 0.005 / 32, + min_price = 1 + }, + { + name = 'science-pack-2', + price = 20, + distance_factor = 0.005 / 32, + min_price = 2 + }, + { + name = 'military-science-pack', + price = 40, + distance_factor = 0.005 / 32, + min_price = 4 + }, + { + name = 'science-pack-3', + price = 60, + distance_factor = 0.005 / 32, + min_price = 4 + }, + { + name = 'production-science-pack', + price = 120, + distance_factor = 0.005 / 32, + min_price = 4 + }, + { + name = 'high-tech-science-pack', + price = 180, + distance_factor = 0.005 / 32, + min_price = 4 + } + } +} + +local base_factory = require 'map_gen.presets.crash_site.outpost_data.big_factory' + +local level2 = ob.extend_1_way(base_factory[1], {loot = {callback = loot_callback}}) +local level3 = + ob.extend_1_way( + base_factory[2], + { + factory = factory, + fallback = level2 + } +) +local level3b = + ob.extend_1_way( + base_factory[2], + { + factory = factory_b, + fallback = level2 + } +) +local level4 = + ob.extend_1_way( + base_factory[3], + { + market = market, + fallback = level3b + } +) +return { + settings = { + blocks = 9, + variance = 3, + min_step = 2, + max_level = 3 + }, + walls = { + require 'map_gen.presets.crash_site.outpost_data.heavy_laser_turrets' + }, + bases = { + {level3, level2}, + {level4} + } +} diff --git a/map_gen/presets/crash_site/outpost_data/heavy_flame_turrets.lua b/map_gen/presets/crash_site/outpost_data/heavy_flame_turrets.lua index 94d587c2..ea4d087f 100644 --- a/map_gen/presets/crash_site/outpost_data/heavy_flame_turrets.lua +++ b/map_gen/presets/crash_site/outpost_data/heavy_flame_turrets.lua @@ -2,6 +2,7 @@ local ob = require 'map_gen.presets.crash_site.outpost_builder' return { ob.make_4_way { + turret = {callback = ob.refill_liquid_turret_callback, data = ob.light_oil_ammo}, [1] = {entity = {name = 'stone-wall'}}, [2] = {entity = {name = 'stone-wall'}}, [3] = {entity = {name = 'stone-wall'}}, @@ -26,11 +27,20 @@ return { [22] = {tile = 'refined-hazard-concrete-left'}, [23] = {tile = 'refined-hazard-concrete-left'}, [24] = {tile = 'refined-hazard-concrete-left'}, - [25] = {entity = {name = 'flamethrower-turret', offset = 1}, tile = 'refined-hazard-concrete-left'}, + [25] = { + entity = {name = 'flamethrower-turret', callback = 'turret', offset = 1}, + tile = 'refined-hazard-concrete-left' + }, [26] = {tile = 'refined-hazard-concrete-left'}, - [27] = {entity = {name = 'flamethrower-turret', offset = 1}, tile = 'refined-hazard-concrete-left'}, + [27] = { + entity = {name = 'flamethrower-turret', callback = 'turret', offset = 1}, + tile = 'refined-hazard-concrete-left' + }, [28] = {tile = 'refined-hazard-concrete-left'}, - [29] = {entity = {name = 'flamethrower-turret', offset = 1}, tile = 'refined-hazard-concrete-left'}, + [29] = { + entity = {name = 'flamethrower-turret', callback = 'turret', offset = 1}, + tile = 'refined-hazard-concrete-left' + }, [30] = {tile = 'refined-hazard-concrete-left'}, [31] = {tile = 'refined-hazard-concrete-left'}, [32] = {tile = 'refined-hazard-concrete-left'}, @@ -40,6 +50,7 @@ return { [36] = {tile = 'refined-hazard-concrete-left'} }, ob.make_4_way { + turret = {callback = ob.refill_liquid_turret_callback, data = ob.light_oil_ammo}, [1] = {entity = {name = 'stone-wall'}}, [2] = {entity = {name = 'stone-wall'}}, [3] = {entity = {name = 'stone-wall'}}, @@ -54,9 +65,15 @@ return { [12] = {tile = 'refined-hazard-concrete-left'}, [13] = {entity = {name = 'stone-wall'}}, [14] = {entity = {name = 'stone-wall'}}, - [15] = {entity = {name = 'flamethrower-turret', offset = 1}, tile = 'refined-hazard-concrete-left'}, + [15] = { + entity = {name = 'flamethrower-turret', callback = 'turret', offset = 1}, + tile = 'refined-hazard-concrete-left' + }, [16] = {tile = 'refined-hazard-concrete-left'}, - [17] = {entity = {name = 'flamethrower-turret', offset = 1}, tile = 'refined-hazard-concrete-left'}, + [17] = { + entity = {name = 'flamethrower-turret', callback = 'turret', offset = 1}, + tile = 'refined-hazard-concrete-left' + }, [18] = {tile = 'refined-hazard-concrete-left'}, [19] = {entity = {name = 'stone-wall'}}, [20] = {entity = {name = 'stone-wall'}}, @@ -67,7 +84,7 @@ return { [25] = {entity = {name = 'stone-wall'}}, [26] = {tile = 'refined-hazard-concrete-left'}, [27] = { - entity = {name = 'flamethrower-turret', direction = 6, offset = 2}, + entity = {name = 'flamethrower-turret', callback = 'turret', direction = 6, offset = 2}, tile = 'refined-hazard-concrete-left' }, [28] = {tile = 'refined-hazard-concrete-left'}, @@ -81,6 +98,7 @@ return { [36] = {tile = 'refined-hazard-concrete-left'} }, ob.make_4_way { + turret = {callback = ob.refill_liquid_turret_callback, data = ob.light_oil_ammo}, [1] = {entity = {name = 'stone-wall'}}, [2] = {entity = {name = 'stone-wall'}}, [3] = {tile = 'refined-hazard-concrete-left'}, @@ -92,7 +110,7 @@ return { [9] = {tile = 'refined-hazard-concrete-left'}, [10] = {tile = 'refined-hazard-concrete-left'}, [11] = { - entity = {name = 'flamethrower-turret', direction = 6, offset = 2}, + entity = {name = 'flamethrower-turret', callback = 'turret', direction = 6, offset = 2}, tile = 'refined-hazard-concrete-left' }, [12] = {tile = 'refined-hazard-concrete-left'}, @@ -108,11 +126,20 @@ return { [22] = {tile = 'refined-hazard-concrete-left'}, [23] = {tile = 'refined-hazard-concrete-left'}, [24] = {tile = 'refined-hazard-concrete-left'}, - [25] = {entity = {name = 'flamethrower-turret', offset = 1}, tile = 'refined-hazard-concrete-left'}, + [25] = { + entity = {name = 'flamethrower-turret', callback = 'turret', offset = 1}, + tile = 'refined-hazard-concrete-left' + }, [26] = {tile = 'refined-hazard-concrete-left'}, - [27] = {entity = {name = 'flamethrower-turret', offset = 1}, tile = 'refined-hazard-concrete-left'}, + [27] = { + entity = {name = 'flamethrower-turret', callback = 'turret', offset = 1}, + tile = 'refined-hazard-concrete-left' + }, [28] = {tile = 'refined-hazard-concrete-left'}, - [29] = {entity = {name = 'flamethrower-turret', offset = 1}, tile = 'refined-hazard-concrete-left'}, + [29] = { + entity = {name = 'flamethrower-turret', callback = 'turret', offset = 1}, + tile = 'refined-hazard-concrete-left' + }, [30] = {tile = 'refined-hazard-concrete-left'}, [31] = {tile = 'refined-hazard-concrete-left'}, [32] = {tile = 'refined-hazard-concrete-left'}, diff --git a/map_gen/presets/crash_site/outpost_data/heavy_laser_turrets.lua b/map_gen/presets/crash_site/outpost_data/heavy_laser_turrets.lua index 91cf2895..47732337 100644 --- a/map_gen/presets/crash_site/outpost_data/heavy_laser_turrets.lua +++ b/map_gen/presets/crash_site/outpost_data/heavy_laser_turrets.lua @@ -2,44 +2,61 @@ local ob = require 'map_gen.presets.crash_site.outpost_builder' return { ob.make_4_way { + turret = {callback = ob.power_source_callback, data = ob.laser_turrent_power_source}, [1] = {entity = {name = 'stone-wall'}}, [2] = {entity = {name = 'stone-wall'}}, - [3] = {tile = 'concrete'}, - [4] = {tile = 'hazard-concrete-left'}, - [5] = {tile = 'concrete'}, - [6] = {tile = 'hazard-concrete-left'}, + [3] = {entity = {name = 'stone-wall'}}, + [4] = {entity = {name = 'stone-wall'}}, + [5] = {entity = {name = 'stone-wall'}}, + [6] = {entity = {name = 'stone-wall'}}, [7] = {entity = {name = 'stone-wall'}}, [8] = {entity = {name = 'stone-wall'}}, - [9] = {tile = 'hazard-concrete-left'}, - [10] = {entity = {name = 'laser-turret', offset = 3}, tile = 'concrete'}, - [11] = {tile = 'hazard-concrete-left'}, - [12] = {tile = 'concrete'}, - [13] = {tile = 'concrete'}, - [14] = {tile = 'hazard-concrete-left'}, - [15] = {tile = 'concrete'}, - [16] = {tile = 'hazard-concrete-left'}, - [17] = {tile = 'concrete'}, - [18] = {tile = 'hazard-concrete-left'}, - [19] = {tile = 'hazard-concrete-left'}, - [20] = {entity = {name = 'laser-turret', offset = 3}, tile = 'concrete'}, - [21] = {tile = 'hazard-concrete-left'}, - [22] = {tile = 'concrete'}, - [23] = {tile = 'hazard-concrete-left'}, - [24] = {tile = 'concrete'}, - [25] = {tile = 'concrete'}, - [26] = {tile = 'hazard-concrete-left'}, - [27] = {tile = 'concrete'}, - [28] = {tile = 'hazard-concrete-left'}, - [29] = {tile = 'concrete'}, - [30] = {entity = {name = 'medium-electric-pole'}, tile = 'hazard-concrete-left'}, - [31] = {tile = 'hazard-concrete-left'}, - [32] = {tile = 'concrete'}, - [33] = {tile = 'hazard-concrete-left'}, - [34] = {tile = 'concrete'}, - [35] = {entity = {name = 'medium-electric-pole'}, tile = 'hazard-concrete-left'}, - [36] = {tile = 'concrete'} + [9] = {entity = {name = 'stone-wall'}}, + [10] = {entity = {name = 'stone-wall'}}, + [11] = {entity = {name = 'stone-wall'}}, + [12] = {entity = {name = 'stone-wall'}}, + [13] = { + entity = {name = 'laser-turret', callback = 'turret', offset = 3}, + tile = 'refined-hazard-concrete-left' + }, + [14] = {tile = 'refined-hazard-concrete-left'}, + [15] = { + entity = {name = 'laser-turret', callback = 'turret', offset = 3}, + tile = 'refined-hazard-concrete-left' + }, + [16] = {tile = 'refined-hazard-concrete-left'}, + [17] = { + entity = {name = 'laser-turret', callback = 'turret', offset = 3}, + tile = 'refined-hazard-concrete-left' + }, + [18] = {tile = 'refined-hazard-concrete-left'}, + [19] = {tile = 'refined-hazard-concrete-left'}, + [20] = {tile = 'refined-hazard-concrete-left'}, + [21] = {tile = 'refined-hazard-concrete-left'}, + [22] = {tile = 'refined-hazard-concrete-left'}, + [23] = {tile = 'refined-hazard-concrete-left'}, + [24] = {tile = 'refined-hazard-concrete-left'}, + [25] = { + entity = {name = 'laser-turret', callback = 'turret', offset = 3}, + tile = 'refined-hazard-concrete-left' + }, + [26] = {tile = 'refined-hazard-concrete-left'}, + [27] = {entity = {name = 'substation', offset = 3}, tile = 'refined-hazard-concrete-left'}, + [28] = {tile = 'refined-hazard-concrete-left'}, + [29] = { + entity = {name = 'laser-turret', callback = 'turret', offset = 3}, + tile = 'refined-hazard-concrete-left' + }, + [30] = {tile = 'refined-hazard-concrete-left'}, + [31] = {tile = 'refined-hazard-concrete-left'}, + [32] = {tile = 'refined-hazard-concrete-left'}, + [33] = {tile = 'refined-hazard-concrete-left'}, + [34] = {tile = 'refined-hazard-concrete-left'}, + [35] = {tile = 'refined-hazard-concrete-left'}, + [36] = {tile = 'refined-hazard-concrete-left'} }, ob.make_4_way { + turret = {callback = ob.power_source_callback, data = ob.laser_turrent_power_source}, [1] = {entity = {name = 'stone-wall'}}, [2] = {entity = {name = 'stone-wall'}}, [3] = {entity = {name = 'stone-wall'}}, @@ -54,9 +71,15 @@ return { [12] = {entity = {name = 'stone-wall'}}, [13] = {entity = {name = 'stone-wall'}}, [14] = {entity = {name = 'stone-wall'}}, - [15] = {entity = {name = 'laser-turret', offset = 3}, tile = 'refined-hazard-concrete-left'}, + [15] = { + entity = {name = 'laser-turret', callback = 'turret', offset = 3}, + tile = 'refined-hazard-concrete-left' + }, [16] = {tile = 'refined-hazard-concrete-left'}, - [17] = {entity = {name = 'laser-turret', offset = 3}, tile = 'refined-hazard-concrete-left'}, + [17] = { + entity = {name = 'laser-turret', callback = 'turret', direction = 2, offset = 3}, + tile = 'refined-hazard-concrete-left' + }, [18] = {tile = 'refined-hazard-concrete-left'}, [19] = {entity = {name = 'stone-wall'}}, [20] = {entity = {name = 'stone-wall'}}, @@ -66,7 +89,10 @@ return { [24] = {tile = 'refined-hazard-concrete-left'}, [25] = {entity = {name = 'stone-wall'}}, [26] = {entity = {name = 'stone-wall'}}, - [27] = {entity = {name = 'laser-turret', offset = 3}, tile = 'refined-hazard-concrete-left'}, + [27] = { + entity = {name = 'laser-turret', callback = 'turret', direction = 2, offset = 3}, + tile = 'refined-hazard-concrete-left' + }, [28] = {tile = 'refined-hazard-concrete-left'}, [29] = {entity = {name = 'substation', offset = 3}, tile = 'refined-hazard-concrete-left'}, [30] = {tile = 'refined-hazard-concrete-left'}, @@ -78,11 +104,18 @@ return { [36] = {tile = 'refined-hazard-concrete-left'} }, ob.make_4_way { + turret = {callback = ob.power_source_callback, data = ob.laser_turrent_power_source}, [1] = {entity = {name = 'stone-wall'}}, [2] = {entity = {name = 'stone-wall'}}, - [3] = {entity = {name = 'laser-turret', offset = 3}, tile = 'refined-hazard-concrete-left'}, + [3] = { + entity = {name = 'laser-turret', callback = 'turret', direction = 2, offset = 3}, + tile = 'refined-hazard-concrete-left' + }, [4] = {tile = 'refined-hazard-concrete-left'}, - [5] = {entity = {name = 'laser-turret', offset = 3}, tile = 'refined-hazard-concrete-left'}, + [5] = { + entity = {name = 'laser-turret', callback = 'turret', direction = 2, offset = 3}, + tile = 'refined-hazard-concrete-left' + }, [6] = {tile = 'refined-hazard-concrete-left'}, [7] = {entity = {name = 'stone-wall'}}, [8] = {entity = {name = 'stone-wall'}}, @@ -90,11 +123,20 @@ return { [10] = {tile = 'refined-hazard-concrete-left'}, [11] = {tile = 'refined-hazard-concrete-left'}, [12] = {tile = 'refined-hazard-concrete-left'}, - [13] = {entity = {name = 'laser-turret', offset = 3}, tile = 'refined-hazard-concrete-left'}, + [13] = { + entity = {name = 'laser-turret', callback = 'turret', direction = 2, offset = 3}, + tile = 'refined-hazard-concrete-left' + }, [14] = {tile = 'refined-hazard-concrete-left'}, - [15] = {entity = {name = 'laser-turret', offset = 3}, tile = 'refined-hazard-concrete-left'}, + [15] = { + entity = {name = 'laser-turret', callback = 'turret', direction = 2, offset = 3}, + tile = 'refined-hazard-concrete-left' + }, [16] = {tile = 'refined-hazard-concrete-left'}, - [17] = {entity = {name = 'laser-turret', offset = 3}, tile = 'refined-hazard-concrete-left'}, + [17] = { + entity = {name = 'laser-turret', callback = 'turret', direction = 2, offset = 3}, + tile = 'refined-hazard-concrete-left' + }, [18] = {tile = 'refined-hazard-concrete-left'}, [19] = {tile = 'refined-hazard-concrete-left'}, [20] = {tile = 'refined-hazard-concrete-left'}, @@ -102,9 +144,15 @@ return { [22] = {tile = 'refined-hazard-concrete-left'}, [23] = {tile = 'refined-hazard-concrete-left'}, [24] = {tile = 'refined-hazard-concrete-left'}, - [25] = {entity = {name = 'laser-turret', offset = 3}, tile = 'refined-hazard-concrete-left'}, + [25] = { + entity = {name = 'laser-turret', callback = 'turret', direction = 2, offset = 3}, + tile = 'refined-hazard-concrete-left' + }, [26] = {tile = 'refined-hazard-concrete-left'}, - [27] = {entity = {name = 'laser-turret', offset = 3}, tile = 'refined-hazard-concrete-left'}, + [27] = { + entity = {name = 'laser-turret', callback = 'turret', direction = 2, offset = 3}, + tile = 'refined-hazard-concrete-left' + }, [28] = {tile = 'refined-hazard-concrete-left'}, [29] = {entity = {name = 'substation', offset = 3}, tile = 'refined-hazard-concrete-left'}, [30] = {tile = 'refined-hazard-concrete-left'}, diff --git a/map_gen/presets/crash_site/outpost_data/laser_block.lua b/map_gen/presets/crash_site/outpost_data/laser_block.lua new file mode 100644 index 00000000..f1cbcb23 --- /dev/null +++ b/map_gen/presets/crash_site/outpost_data/laser_block.lua @@ -0,0 +1,41 @@ +local ob = require 'map_gen.presets.crash_site.outpost_builder' + +return ob.make_1_way { + turret = {callback = ob.power_source_callback, data = ob.laser_turrent_power_source}, + [1] = {tile = 'refined-concrete'}, + [2] = {tile = 'refined-concrete'}, + [3] = {tile = 'refined-concrete'}, + [4] = {tile = 'refined-concrete'}, + [5] = {tile = 'refined-concrete'}, + [6] = {tile = 'refined-concrete'}, + [7] = {tile = 'refined-concrete'}, + [8] = {entity = {name = 'laser-turret', callback = 'turret'}, tile = 'refined-concrete'}, + [9] = {tile = 'refined-concrete'}, + [10] = {entity = {name = 'laser-turret', callback = 'turret'}, tile = 'refined-concrete'}, + [11] = {tile = 'refined-concrete'}, + [12] = {entity = {name = 'laser-turret', callback = 'turret'}, tile = 'refined-concrete'}, + [13] = {tile = 'refined-concrete'}, + [14] = {tile = 'refined-concrete'}, + [15] = {tile = 'refined-concrete'}, + [16] = {tile = 'refined-concrete'}, + [17] = {tile = 'refined-concrete'}, + [18] = {tile = 'refined-concrete'}, + [19] = {tile = 'refined-concrete'}, + [20] = {entity = {name = 'laser-turret', callback = 'turret'}, tile = 'refined-concrete'}, + [21] = {tile = 'refined-concrete'}, + [22] = {entity = {name = 'substation'}, tile = 'refined-concrete'}, + [23] = {tile = 'refined-concrete'}, + [24] = {entity = {name = 'laser-turret', callback = 'turret'}, tile = 'refined-concrete'}, + [25] = {tile = 'refined-concrete'}, + [26] = {tile = 'refined-concrete'}, + [27] = {tile = 'refined-concrete'}, + [28] = {tile = 'refined-concrete'}, + [29] = {tile = 'refined-concrete'}, + [30] = {tile = 'refined-concrete'}, + [31] = {tile = 'refined-concrete'}, + [32] = {entity = {name = 'laser-turret', callback = 'turret'}, tile = 'refined-concrete'}, + [33] = {tile = 'refined-concrete'}, + [34] = {entity = {name = 'laser-turret', callback = 'turret'}, tile = 'refined-concrete'}, + [35] = {tile = 'refined-concrete'}, + [36] = {entity = {name = 'laser-turret', callback = 'turret'}, tile = 'refined-concrete'} +} diff --git a/map_gen/presets/crash_site/outpost_data/light_flame_turrets.lua b/map_gen/presets/crash_site/outpost_data/light_flame_turrets.lua index c2ba8dec..a46aa8a4 100644 --- a/map_gen/presets/crash_site/outpost_data/light_flame_turrets.lua +++ b/map_gen/presets/crash_site/outpost_data/light_flame_turrets.lua @@ -2,6 +2,7 @@ local ob = require 'map_gen.presets.crash_site.outpost_builder' return { ob.make_4_way { + turret = {callback = ob.refill_liquid_turret_callback, data = ob.light_oil_ammo}, [1] = {entity = {name = 'stone-wall'}}, [2] = {entity = {name = 'stone-wall'}}, [3] = {entity = {name = 'stone-wall'}}, @@ -28,7 +29,7 @@ return { [24] = {tile = 'concrete'}, [25] = {tile = 'concrete'}, [26] = {tile = 'concrete'}, - [27] = {entity = {name = 'flamethrower-turret', offset = 1}, tile = 'concrete'}, + [27] = {entity = {name = 'flamethrower-turret', callback = 'turret', offset = 1}, tile = 'concrete'}, [28] = {tile = 'concrete'}, [29] = {tile = 'concrete'}, [30] = {tile = 'concrete'}, @@ -40,6 +41,7 @@ return { [36] = {tile = 'concrete'} }, ob.make_4_way { + turret = {callback = ob.refill_liquid_turret_callback, data = ob.light_oil_ammo}, [1] = {entity = {name = 'stone-wall'}}, [2] = {entity = {name = 'stone-wall'}}, [3] = {entity = {name = 'stone-wall'}}, @@ -67,7 +69,7 @@ return { [25] = {entity = {name = 'stone-wall'}}, [26] = {entity = {name = 'stone-wall'}}, [27] = {tile = 'hazard-concrete-left'}, - [28] = {entity = {name = 'flamethrower-turret', offset = 1}, tile = 'concrete'}, + [28] = {entity = {name = 'flamethrower-turret', callback = 'turret', offset = 1}, tile = 'concrete'}, [29] = {tile = 'concrete'}, [30] = {tile = 'concrete'}, [31] = {entity = {name = 'stone-wall'}}, @@ -78,6 +80,7 @@ return { [36] = {tile = 'concrete'} }, ob.make_4_way { + turret = {callback = ob.refill_liquid_turret_callback, data = ob.light_oil_ammo}, [1] = {entity = {name = 'stone-wall'}}, [2] = {entity = {name = 'stone-wall'}}, [3] = {tile = 'hazard-concrete-left'}, @@ -105,7 +108,7 @@ return { [25] = {tile = 'concrete'}, [26] = {tile = 'concrete'}, [27] = {tile = 'concrete'}, - [28] = {entity = {name = 'flamethrower-turret', offset = 1}, tile = 'concrete'}, + [28] = {entity = {name = 'flamethrower-turret', callback = 'turret', offset = 1}, tile = 'concrete'}, [29] = {tile = 'concrete'}, [30] = {tile = 'concrete'}, [31] = {tile = 'concrete'}, diff --git a/map_gen/presets/crash_site/outpost_data/light_laser_turrets.lua b/map_gen/presets/crash_site/outpost_data/light_laser_turrets.lua index 0ac909d0..85e142e8 100644 --- a/map_gen/presets/crash_site/outpost_data/light_laser_turrets.lua +++ b/map_gen/presets/crash_site/outpost_data/light_laser_turrets.lua @@ -2,6 +2,7 @@ local ob = require 'map_gen.presets.crash_site.outpost_builder' return { ob.make_4_way { + turret = {callback = ob.power_source_callback, data = ob.laser_turrent_power_source}, [1] = {entity = {name = 'stone-wall'}}, [2] = {entity = {name = 'stone-wall'}}, [3] = {entity = {name = 'stone-wall'}}, @@ -22,7 +23,7 @@ return { [18] = {tile = 'concrete'}, [19] = {tile = 'hazard-concrete-left'}, [20] = {tile = 'concrete'}, - [21] = {entity = {name = 'laser-turret', offset = 3}, tile = 'hazard-concrete-left'}, + [21] = {entity = {name = 'laser-turret', callback = 'turret', offset = 3}, tile = 'hazard-concrete-left'}, [22] = {tile = 'concrete'}, [23] = {tile = 'hazard-concrete-left'}, [24] = {tile = 'concrete'}, @@ -40,6 +41,7 @@ return { [36] = {tile = 'concrete'} }, ob.make_4_way { + turret = {callback = ob.power_source_callback, data = ob.laser_turrent_power_source}, [1] = {entity = {name = 'stone-wall'}}, [2] = {entity = {name = 'stone-wall'}}, [3] = {entity = {name = 'stone-wall'}}, @@ -61,7 +63,7 @@ return { [19] = {entity = {name = 'stone-wall'}}, [20] = {entity = {name = 'stone-wall'}}, [21] = {tile = 'hazard-concrete-left'}, - [22] = {entity = {name = 'laser-turret', offset = 3}, tile = 'concrete'}, + [22] = {entity = {name = 'laser-turret', callback = 'turret', offset = 3}, tile = 'concrete'}, [23] = {tile = 'hazard-concrete-left'}, [24] = {tile = 'concrete'}, [25] = {entity = {name = 'stone-wall'}}, @@ -78,6 +80,7 @@ return { [36] = {entity = {name = 'medium-electric-pole'}, tile = 'concrete'} }, ob.make_4_way { + turret = {callback = ob.power_source_callback, data = ob.laser_turrent_power_source}, [1] = {entity = {name = 'stone-wall'}}, [2] = {entity = {name = 'stone-wall'}}, [3] = {tile = 'concrete'}, @@ -99,7 +102,7 @@ return { [19] = {tile = 'hazard-concrete-left'}, [20] = {tile = 'concrete'}, [21] = {tile = 'hazard-concrete-left'}, - [22] = {entity = {name = 'laser-turret', offset = 3}, tile = 'concrete'}, + [22] = {entity = {name = 'laser-turret', callback = 'turret', offset = 3}, tile = 'concrete'}, [23] = {tile = 'hazard-concrete-left'}, [24] = {tile = 'concrete'}, [25] = {tile = 'concrete'}, diff --git a/map_gen/presets/crash_site/outpost_data/medium_ammo_factory.lua b/map_gen/presets/crash_site/outpost_data/medium_ammo_factory.lua new file mode 100644 index 00000000..5b9dde2d --- /dev/null +++ b/map_gen/presets/crash_site/outpost_data/medium_ammo_factory.lua @@ -0,0 +1,209 @@ +local ob = require 'map_gen.presets.crash_site.outpost_builder' +local Token = require 'utils.global_token' + +local loot = { + {weight = 10}, + {stack = {name = 'coin', count = 750, distance_factor = 1 / 2}, weight = 5}, + {stack = {name = 'piercing-rounds-magazine', count = 500, distance_factor = 1 / 2}, weight = 5}, + {stack = {name = 'uranium-rounds-magazine', count = 300, distance_factor = 1 / 2}, weight = 5}, + {stack = {name = 'piercing-shotgun-shell', count = 200, distance_factor = 1 / 4}, weight = 2}, + {stack = {name = 'grenade', count = 100, distance_factor = 1 / 8}, weight = 1}, + {stack = {name = 'land-mine', count = 400, distance_factor = 1}, weight = 1}, + {stack = {name = 'rocket', count = 200, distance_factor = 1 / 32}, weight = 2}, + {stack = {name = 'explosive-rocket', count = 200, distance_factor = 1 / 32}, weight = 1}, + {stack = {name = 'cannon-shell', count = 200, distance_factor = 1 / 32}, weight = 2}, + {stack = {name = 'explosive-cannon-shell', count = 200, distance_factor = 1 / 32}, weight = 1}, + {stack = {name = 'cluster-grenade', count = 100, distance_factor = 1 / 32}, weight = 1}, + {stack = {name = 'poison-capsule', count = 100, distance_factor = 1 / 32}, weight = 1}, + {stack = {name = 'slowdown-capsule', count = 100, distance_factor = 1 / 32}, weight = 1}, + {stack = {name = 'destroyer-capsule', count = 20, distance_factor = 1 / 32}, weight = 1} +} + +local weights = ob.prepare_weighted_loot(loot) + +local loot_callback = + Token.register( + function(chest) + ob.do_random_loot(chest, weights, loot) + end +) + +local factory = { + callback = ob.magic_item_crafting_callback, + data = { + recipe = 'piercing-rounds-magazine', + output = {min_rate = 1 / 60, distance_factor = 1 / 60 / 100, item = 'piercing-rounds-magazine'} + } +} + +local factory_b = { + callback = ob.magic_item_crafting_callback, + data = { + recipe = 'cannon-shell', + output = {min_rate = 1 / 3 / 60, distance_factor = 1 / 60 / 100, item = 'cannon-shell'} + } +} + +local factory_c = { + callback = ob.magic_item_crafting_callback, + data = { + recipe = 'uranium-rounds-magazine', + output = {min_rate = 1 / 3 / 60, distance_factor = 1 / 60 / 100, item = 'uranium-rounds-magazine'} + } +} + +local market = { + callback = ob.market_set_items_callback, + data = { + { + name = 'firearm-magazine', + price = 1, + distance_factor = 0.005 / 32, + min_price = 0.1 + }, + { + name = 'piercing-rounds-magazine', + price = 3, + distance_factor = 0.005 / 32, + min_price = 0.3 + }, + { + name = 'uranium-rounds-magazine', + price = 9, + distance_factor = 0.005 / 32, + min_price = 0.9 + }, + { + name = 'shotgun-shell', + price = 2, + distance_factor = 0.005 / 32, + min_price = 0.2 + }, + { + name = 'piercing-shotgun-shell', + price = 6, + distance_factor = 0.005 / 32, + min_price = 0.6 + }, + { + name = 'grenade', + price = 10, + distance_factor = 0.005 / 32, + min_price = 1 + }, + { + name = 'land-mine', + price = 1, + distance_factor = 0.005 / 32, + min_price = 0.1 + }, + { + name = 'rocket', + price = 20, + distance_factor = 0.005 / 32, + min_price = 2 + }, + { + name = 'explosive-rocket', + price = 40, + distance_factor = 0.005 / 32, + min_price = 4 + }, + { + name = 'rocket-launcher', + price = 250, + distance_factor = 0.005 / 32, + min_price = 125 + }, + { + name = 'cluster-grenade', + price = 60, + distance_factor = 0.005 / 32, + min_price = 6 + }, + { + name = 'poison-capsule', + price = 60, + distance_factor = 0.005 / 32, + min_price = 6 + }, + { + name = 'slowdown-capsule', + price = 60, + distance_factor = 0.005 / 32, + min_price = 6 + }, + { + name = 'cannon-shell', + price = 60, + distance_factor = 0.005 / 32, + min_price = 6 + }, + { + name = 'explosive-cannon-shell', + price = 120, + distance_factor = 0.005 / 32, + min_price = 12 + }, + { + name = 'destroyer-capsule', + price = 80, + distance_factor = 0.005 / 32, + min_price = 8 + } + } +} + +local base_factory = require 'map_gen.presets.crash_site.outpost_data.medium_factory' + +local level2 = ob.extend_1_way(base_factory[1], {loot = {callback = loot_callback}}) +local level3 = + ob.extend_1_way( + base_factory[2], + { + factory = factory, + fallback = level2 + } +) +local level3b = + ob.extend_1_way( + base_factory[2], + { + factory = factory_b, + fallback = level3, + max_count = 2 + } +) +local level3c = + ob.extend_1_way( + base_factory[2], + { + factory = factory_c, + fallback = level3b, + max_count = 1 + } +) +local level4 = + ob.extend_1_way( + base_factory[3], + { + market = market, + fallback = level3c + } +) +return { + settings = { + blocks = 8, + variance = 3, + min_step = 2, + max_level = 2 + }, + walls = { + require 'map_gen.presets.crash_site.outpost_data.heavy_gun_turrets', + require 'map_gen.presets.crash_site.outpost_data.heavy_laser_turrets', + require 'map_gen.presets.crash_site.outpost_data.heavy_flame_turrets' + }, + bases = { + {level4, level2} + } +} diff --git a/map_gen/presets/crash_site/outpost_data/medium_circuit_factory.lua b/map_gen/presets/crash_site/outpost_data/medium_circuit_factory.lua index 6533d968..1f1e82da 100644 --- a/map_gen/presets/crash_site/outpost_data/medium_circuit_factory.lua +++ b/map_gen/presets/crash_site/outpost_data/medium_circuit_factory.lua @@ -31,32 +31,28 @@ local market = { callback = ob.market_set_items_callback, data = { { - offer = {type = 'give-item', item = 'copper-cable', count = 200}, - name = 'coin', - price = 50, - distance_factor = 1 / 32, - min_price = 5 + name = 'copper-cable', + price = 0.25, + distance_factor = 0.005 / 32, + min_price = 0.025 }, { - offer = {type = 'give-item', item = 'electronic-circuit', count = 200}, - name = 'coin', - price = 200, - distance_factor = 1 / 32, - min_price = 10 + name= 'electronic-circuit', + price = 1, + distance_factor = 0.005 / 32, + min_price = 0.05 }, { - offer = {type = 'give-item', item = 'advanced-circuit', count = 200}, - name = 'coin', - price = 800, - distance_factor = 1 / 32, - min_price = 40 + name= 'advanced-circuit', + price = 4, + distance_factor = 0.005 / 32, + min_price = 0.2 }, { - offer = {type = 'give-item', item = 'processing-unit', count = 200}, - name = 'coin', - price = 8000, - distance_factor = 1 / 32, - min_price = 80 + name = 'processing-unit', + price = 40, + distance_factor = 0.005 / 32, + min_price = 0.8 } } } diff --git a/map_gen/presets/crash_site/outpost_data/medium_copper_plate_factory.lua b/map_gen/presets/crash_site/outpost_data/medium_copper_plate_factory.lua new file mode 100644 index 00000000..2951e552 --- /dev/null +++ b/map_gen/presets/crash_site/outpost_data/medium_copper_plate_factory.lua @@ -0,0 +1,80 @@ +local ob = require 'map_gen.presets.crash_site.outpost_builder' +local Token = require 'utils.global_token' + +local loot = { + {weight = 5}, + {stack = {name = 'coin', count = 750, distance_factor = 1 / 2}, weight = 5}, + {stack = {name = 'copper-ore', count = 2400}, weight = 8}, + {stack = {name = 'copper-cable', count = 750, distance_factor = 1 / 2}, weight = 2}, + {stack = {name = 'copper-plate', count = 750, distance_factor = 1 / 5}, weight = 10} +} + +local weights = ob.prepare_weighted_loot(loot) + +local loot_callback = + Token.register( + function(chest) + ob.do_random_loot(chest, weights, loot) + end +) + +local factory = { + callback = ob.magic_item_crafting_callback, + data = { + furance_item = 'copper-ore', + output = {min_rate = 1.5 / 60, distance_factor = 1.5 / 60 / 100, item = 'copper-plate'} + } +} + +local market = { + callback = ob.market_set_items_callback, + data = { + { + name = 'copper-cable', + price = 0.12, + distance_factor = 0.005 / 32, + min_price = 0.012 + }, + { + name = 'copper-plate', + price = 0.3, + distance_factor = 0.005 / 32, + min_price = 0.03 + } + } +} + +local base_factory = require 'map_gen.presets.crash_site.outpost_data.medium_furance' + +local level2 = ob.extend_1_way(base_factory[1], {loot = {callback = loot_callback}}) +local level3 = + ob.extend_1_way( + base_factory[2], + { + factory = factory, + fallback = level2 + } +) + +local level4 = + ob.extend_1_way( + base_factory[3], + { + market = market, + fallback = level3 + } +) +return { + settings = { + blocks = 7, + variance = 3, + min_step = 2, + max_level = 2 + }, + walls = { + require 'map_gen.presets.crash_site.outpost_data.medium_gun_turrets' + }, + bases = { + {level4, level2} + } +} diff --git a/map_gen/presets/crash_site/outpost_data/medium_engine_factory.lua b/map_gen/presets/crash_site/outpost_data/medium_engine_factory.lua new file mode 100644 index 00000000..2b00f1cd --- /dev/null +++ b/map_gen/presets/crash_site/outpost_data/medium_engine_factory.lua @@ -0,0 +1,136 @@ +local ob = require 'map_gen.presets.crash_site.outpost_builder' +local Token = require 'utils.global_token' + +local loot = { + {weight = 5}, + {stack = {name = 'coin', count = 750, distance_factor = 1 / 2}, weight = 5}, + {stack = {name = 'engine-unit', count = 200, distance_factor = 1 / 2}, weight = 5}, + {stack = {name = 'electric-engine-unit', count = 100, distance_factor = 1 / 2}, weight = 5}, + {stack = {name = 'rail', count = 500, distance_factor = 1}, weight = 2}, + {stack = {name = 'tank', count = 1, distance_factor = 1 / 128}, weight = 2}, + {stack = {name = 'locomotive', count = 5, distance_factor = 1 / 128}, weight = 2}, + {stack = {name = 'cargo-wagon', count = 5, distance_factor = 1 / 128}, weight = 2}, + {stack = {name = 'fluid-wagon', count = 5, distance_factor = 1 / 128}, weight = 2} +} + +local weights = ob.prepare_weighted_loot(loot) + +local loot_callback = + Token.register( + function(chest) + ob.do_random_loot(chest, weights, loot) + end +) + +local factory = { + callback = ob.magic_item_crafting_callback, + data = { + recipe = 'engine-unit', + output = {min_rate = 1 / 60, distance_factor = 1 / 60 / 100, item = 'engine-unit'} + } +} + +local factory_b = { + callback = ob.magic_item_crafting_callback, + data = { + recipe = 'electric-engine-unit', + output = {min_rate = 1 / 60, distance_factor = 1 / 60 / 100, item = 'engine-unit'} + } +} + +local market = { + callback = ob.market_set_items_callback, + data = { + { + name = 'engine-unit', + price = 4, + distance_factor = 0.005 / 32, + min_price = 0.4 + }, + { + name = 'electric-engine-unit', + price = 8, + distance_factor = 0.005 / 32, + min_price = 0.8 + }, + { + name = 'car', + price = 50, + distance_factor = 0.005 / 32, + min_price = 40 + }, + { + name = 'rail', + price = 1, + distance_factor = 0.005 / 32, + min_price = 0.1 + }, + { + name = 'tank', + price = 1000, + distance_factor = 0.005 / 32, + min_price = 250 + }, + { + name = 'locomotive', + price = 100, + distance_factor = 0.005 / 32, + min_price = 40 + }, + { + name = 'cargo-wagon', + price = 20, + distance_factor = 0.005 / 32, + min_price = 10 + }, + { + name = 'fluid-wagon', + price = 40, + distance_factor = 0.005 / 32, + min_price = 20 + } + } +} + +local base_factory = require 'map_gen.presets.crash_site.outpost_data.medium_factory' + +local level2 = ob.extend_1_way(base_factory[1], {loot = {callback = loot_callback}}) +local level3 = + ob.extend_1_way( + base_factory[2], + { + factory = factory, + fallback = level2 + } +) +local level3b = + ob.extend_1_way( + base_factory[2], + { + factory = factory_b, + fallback = level2 + } +) +local level4 = + ob.extend_1_way( + base_factory[3], + { + market = market, + fallback = level3 + } +) +return { + settings = { + blocks = 7, + variance = 3, + min_step = 2, + max_level = 3 + }, + walls = { + require 'map_gen.presets.crash_site.outpost_data.medium_gun_turrets' + }, + bases = { + {level3, level3b, level2}, + {level4} + } +} diff --git a/map_gen/presets/crash_site/outpost_data/medium_flame_turrets.lua b/map_gen/presets/crash_site/outpost_data/medium_flame_turrets.lua index 40727cb3..f7ab0785 100644 --- a/map_gen/presets/crash_site/outpost_data/medium_flame_turrets.lua +++ b/map_gen/presets/crash_site/outpost_data/medium_flame_turrets.lua @@ -2,6 +2,7 @@ local ob = require 'map_gen.presets.crash_site.outpost_builder' return { ob.make_4_way { + turret = {callback = ob.refill_liquid_turret_callback, data = ob.light_oil_ammo}, [1] = {entity = {name = 'stone-wall'}}, [2] = {entity = {name = 'stone-wall'}}, [3] = {entity = {name = 'stone-wall'}}, @@ -26,11 +27,11 @@ return { [22] = {tile = 'concrete'}, [23] = {tile = 'concrete'}, [24] = {tile = 'concrete'}, - [25] = {entity = {name = 'flamethrower-turret', offset = 1}, tile = 'concrete'}, + [25] = {entity = {name = 'flamethrower-turret', callback = 'turret', offset = 1}, tile = 'concrete'}, [26] = {tile = 'concrete'}, [27] = {tile = 'concrete'}, [28] = {tile = 'concrete'}, - [29] = {entity = {name = 'flamethrower-turret', offset = 1}, tile = 'concrete'}, + [29] = {entity = {name = 'flamethrower-turret', callback = 'turret', offset = 1}, tile = 'concrete'}, [30] = {tile = 'concrete'}, [31] = {tile = 'concrete'}, [32] = {tile = 'concrete'}, @@ -40,6 +41,7 @@ return { [36] = {tile = 'concrete'} }, ob.make_4_way { + turret = {callback = ob.refill_liquid_turret_callback, data = ob.light_oil_ammo}, [1] = {entity = {name = 'stone-wall'}}, [2] = {entity = {name = 'stone-wall'}}, [3] = {entity = {name = 'stone-wall'}}, @@ -56,7 +58,7 @@ return { [14] = {entity = {name = 'stone-wall'}}, [15] = {entity = {name = 'gun-turret', offset = 3}, tile = 'hazard-concrete-left'}, [16] = {tile = 'hazard-concrete-left'}, - [17] = {entity = {name = 'flamethrower-turret', offset = 1}, tile = 'hazard-concrete-left'}, + [17] = {entity = {name = 'flamethrower-turret', callback = 'turret', offset = 1}, tile = 'hazard-concrete-left'}, [18] = {tile = 'hazard-concrete-left'}, [19] = {entity = {name = 'stone-wall'}}, [20] = {entity = {name = 'stone-wall'}}, @@ -66,7 +68,10 @@ return { [24] = {tile = 'hazard-concrete-left'}, [25] = {entity = {name = 'stone-wall'}}, [26] = {tile = 'hazard-concrete-left'}, - [27] = {entity = {name = 'flamethrower-turret', direction = 6, offset = 2}, tile = 'hazard-concrete-left'}, + [27] = { + entity = {name = 'flamethrower-turret', callback = 'turret', direction = 6, offset = 2}, + tile = 'hazard-concrete-left' + }, [28] = {tile = 'hazard-concrete-left'}, [29] = {entity = {name = 'gun-turret', offset = 3}, tile = 'concrete'}, [30] = {tile = 'concrete'}, @@ -78,6 +83,7 @@ return { [36] = {tile = 'concrete'} }, ob.make_4_way { + turret = {callback = ob.refill_liquid_turret_callback, data = ob.light_oil_ammo}, [1] = {entity = {name = 'stone-wall'}}, [2] = {entity = {name = 'stone-wall'}}, [3] = {tile = 'hazard-concrete-left'}, @@ -88,7 +94,10 @@ return { [8] = {entity = {name = 'stone-wall'}}, [9] = {tile = 'hazard-concrete-left'}, [10] = {tile = 'concrete'}, - [11] = {entity = {name = 'flamethrower-turret', direction = 6, offset = 2}, tile = 'concrete'}, + [11] = { + entity = {name = 'flamethrower-turret', callback = 'turret', direction = 6, offset = 2}, + tile = 'concrete' + }, [12] = {tile = 'concrete'}, [13] = {tile = 'hazard-concrete-left'}, [14] = {tile = 'hazard-concrete-left'}, @@ -103,7 +112,7 @@ return { [23] = {tile = 'concrete'}, [24] = {tile = 'concrete'}, [25] = {tile = 'concrete'}, - [26] = {entity = {name = 'flamethrower-turret', offset = 1}, tile = 'concrete'}, + [26] = {entity = {name = 'flamethrower-turret', callback = 'turret', offset = 1}, tile = 'concrete'}, [27] = {tile = 'concrete'}, [28] = {tile = 'concrete'}, [29] = {tile = 'concrete'}, diff --git a/map_gen/presets/crash_site/outpost_data/medium_furance.lua b/map_gen/presets/crash_site/outpost_data/medium_furance.lua new file mode 100644 index 00000000..3231bbe0 --- /dev/null +++ b/map_gen/presets/crash_site/outpost_data/medium_furance.lua @@ -0,0 +1,132 @@ +local ob = require 'map_gen.presets.crash_site.outpost_builder' + +local level2 = + ob.make_1_way { + force = 'neutral', + [1] = {tile = 'concrete'}, + [2] = {tile = 'concrete'}, + [3] = {tile = 'concrete'}, + [4] = {tile = 'concrete'}, + [5] = {tile = 'concrete'}, + [6] = {tile = 'concrete'}, + [7] = {tile = 'concrete'}, + [8] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, + [9] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, + [10] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, + [11] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, + [12] = {tile = 'concrete'}, + [13] = {tile = 'concrete'}, + [14] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, + [15] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, + [16] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, + [17] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, + [18] = {tile = 'concrete'}, + [19] = {tile = 'concrete'}, + [20] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, + [21] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, + [22] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, + [23] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, + [24] = {tile = 'concrete'}, + [25] = {tile = 'concrete'}, + [26] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, + [27] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, + [28] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, + [29] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, + [30] = {tile = 'concrete'}, + [31] = {tile = 'concrete'}, + [32] = {tile = 'concrete'}, + [33] = {tile = 'concrete'}, + [34] = {tile = 'concrete'}, + [35] = {tile = 'concrete'}, + [36] = {tile = 'concrete'} +} + +local level3 = + ob.make_1_way { + force = 'neutral', + max_count = 6, + [1] = {tile = 'concrete'}, + [2] = {tile = 'concrete'}, + [3] = {tile = 'concrete'}, + [4] = {tile = 'concrete'}, + [5] = {tile = 'concrete'}, + [6] = {tile = 'concrete'}, + [7] = {tile = 'concrete'}, + [8] = {tile = 'refined-concrete'}, + [9] = {tile = 'refined-concrete'}, + [10] = {tile = 'refined-concrete'}, + [11] = {tile = 'refined-concrete'}, + [12] = {tile = 'concrete'}, + [13] = {tile = 'concrete'}, + [14] = {tile = 'refined-concrete'}, + [15] = {entity = {name = 'electric-furnace', callback = 'factory'}, tile = 'refined-concrete'}, + [16] = {tile = 'refined-concrete'}, + [17] = {tile = 'refined-concrete'}, + [18] = {tile = 'concrete'}, + [19] = {tile = 'concrete'}, + [20] = {tile = 'refined-concrete'}, + [21] = {tile = 'refined-concrete'}, + [22] = {tile = 'refined-concrete'}, + [23] = {tile = 'refined-concrete'}, + [24] = {tile = 'concrete'}, + [25] = {tile = 'concrete'}, + [26] = {tile = 'refined-concrete'}, + [27] = {tile = 'refined-concrete'}, + [28] = {tile = 'refined-concrete'}, + [29] = {tile = 'refined-concrete'}, + [30] = {tile = 'concrete'}, + [31] = {tile = 'concrete'}, + [32] = {tile = 'concrete'}, + [33] = {tile = 'concrete'}, + [34] = {tile = 'concrete'}, + [35] = {tile = 'concrete'}, + [36] = {tile = 'concrete'} +} + +local level4 = + ob.make_1_way { + force = 'neutral', + max_count = 1, + [1] = {tile = 'concrete'}, + [2] = {tile = 'concrete'}, + [3] = {tile = 'concrete'}, + [4] = {tile = 'concrete'}, + [5] = {tile = 'concrete'}, + [6] = {tile = 'concrete'}, + [7] = {tile = 'concrete'}, + [8] = {tile = 'refined-concrete'}, + [9] = {tile = 'refined-concrete'}, + [10] = {tile = 'refined-concrete'}, + [11] = {tile = 'refined-concrete'}, + [12] = {tile = 'concrete'}, + [13] = {tile = 'concrete'}, + [14] = {tile = 'refined-concrete'}, + [15] = {entity = {name = 'market', callback = 'market'}}, + [16] = {tile = 'refined-concrete'}, + [17] = {tile = 'refined-concrete'}, + [18] = {tile = 'concrete'}, + [19] = {tile = 'concrete'}, + [20] = {tile = 'refined-concrete'}, + [21] = {tile = 'refined-concrete'}, + [22] = {tile = 'refined-concrete'}, + [23] = {tile = 'refined-concrete'}, + [24] = {tile = 'concrete'}, + [25] = {tile = 'concrete'}, + [26] = {tile = 'refined-concrete'}, + [27] = {tile = 'refined-concrete'}, + [28] = {tile = 'refined-concrete'}, + [29] = {tile = 'refined-concrete'}, + [30] = {tile = 'concrete'}, + [31] = {tile = 'concrete'}, + [32] = {tile = 'concrete'}, + [33] = {tile = 'concrete'}, + [34] = {tile = 'concrete'}, + [35] = {tile = 'concrete'}, + [36] = {tile = 'concrete'} +} + +return { + level2, + level3, + level4 +} diff --git a/map_gen/presets/crash_site/outpost_data/medium_gear_factory.lua b/map_gen/presets/crash_site/outpost_data/medium_gear_factory.lua index a1fafe7b..8d95aae5 100644 --- a/map_gen/presets/crash_site/outpost_data/medium_gear_factory.lua +++ b/map_gen/presets/crash_site/outpost_data/medium_gear_factory.lua @@ -18,167 +18,57 @@ local loot_callback = end ) -local level2 = - ob.make_1_way { - force = 'neutral', - loot = {callback = loot_callback}, - [1] = {tile = 'concrete'}, - [2] = {tile = 'concrete'}, - [3] = {tile = 'concrete'}, - [4] = {tile = 'concrete'}, - [5] = {tile = 'concrete'}, - [6] = {tile = 'concrete'}, - [7] = {tile = 'concrete'}, - [8] = {entity = {name = 'iron-chest', callback = 'loot'}, tile = 'refined-concrete'}, - [9] = {entity = {name = 'iron-chest', callback = 'loot'}, tile = 'refined-concrete'}, - [10] = {entity = {name = 'iron-chest', callback = 'loot'}, tile = 'refined-concrete'}, - [11] = {entity = {name = 'iron-chest', callback = 'loot'}, tile = 'refined-concrete'}, - [12] = {tile = 'concrete'}, - [13] = {tile = 'concrete'}, - [14] = {entity = {name = 'iron-chest', callback = 'loot'}, tile = 'refined-concrete'}, - [15] = {entity = {name = 'iron-chest', callback = 'loot'}, tile = 'refined-concrete'}, - [16] = {entity = {name = 'iron-chest', callback = 'loot'}, tile = 'refined-concrete'}, - [17] = {entity = {name = 'iron-chest', callback = 'loot'}, tile = 'refined-concrete'}, - [18] = {tile = 'concrete'}, - [19] = {tile = 'concrete'}, - [20] = {entity = {name = 'iron-chest', callback = 'loot'}, tile = 'refined-concrete'}, - [21] = {entity = {name = 'iron-chest', callback = 'loot'}, tile = 'refined-concrete'}, - [22] = {entity = {name = 'iron-chest', callback = 'loot'}, tile = 'refined-concrete'}, - [23] = {entity = {name = 'iron-chest', callback = 'loot'}, tile = 'refined-concrete'}, - [24] = {tile = 'concrete'}, - [25] = {tile = 'concrete'}, - [26] = {entity = {name = 'iron-chest', callback = 'loot'}, tile = 'refined-concrete'}, - [27] = {entity = {name = 'iron-chest', callback = 'loot'}, tile = 'refined-concrete'}, - [28] = {entity = {name = 'iron-chest', callback = 'loot'}, tile = 'refined-concrete'}, - [29] = {entity = {name = 'iron-chest', callback = 'loot'}, tile = 'refined-concrete'}, - [30] = {tile = 'concrete'}, - [31] = {tile = 'concrete'}, - [32] = {tile = 'concrete'}, - [33] = {tile = 'concrete'}, - [34] = {tile = 'concrete'}, - [35] = {tile = 'concrete'}, - [36] = {tile = 'concrete'} +local factory = { + callback = ob.magic_item_crafting_callback, + data = { + recipe = 'iron-gear-wheel', + output = {min_rate = 1 / 60, distance_factor = 1 / 60 / 100, item = 'iron-gear-wheel'} + } } +local market = { + callback = ob.market_set_items_callback, + data = { + { + name = 'iron-gear-wheel', + price = 0.5, + distance_factor = 0.005 / 32, + min_price = 0.05 + }, + { + name = 'iron-plate', + price = 0.4, + distance_factor = 0.005 / 32, + min_price = 0.04 + }, + { + name = 'steel-plate', + price = 2, + distance_factor = 0.005 / 32, + min_price = 0.2 + } + } +} + +local base_factory = require 'map_gen.presets.crash_site.outpost_data.medium_factory' + +local level2 = ob.extend_1_way(base_factory[1], {loot = {callback = loot_callback}}) local level3 = - ob.make_1_way { - force = 'neutral', - factory = { - callback = ob.magic_item_crafting_callback, - data = { - recipe = 'iron-gear-wheel', - output = {min_rate = 1 / 60, distance_factor = 1 / 60 / 100, item = 'iron-gear-wheel'} - } - }, - max_count = 6, - fallback = level2, - [1] = {tile = 'concrete'}, - [2] = {tile = 'concrete'}, - [3] = {tile = 'concrete'}, - [4] = {tile = 'concrete'}, - [5] = {tile = 'concrete'}, - [6] = {tile = 'concrete'}, - [7] = {tile = 'concrete'}, - [8] = {tile = 'refined-concrete'}, - [9] = {tile = 'refined-concrete'}, - [10] = {tile = 'refined-concrete'}, - [11] = {tile = 'refined-concrete'}, - [12] = {tile = 'concrete'}, - [13] = {tile = 'concrete'}, - [14] = {tile = 'refined-concrete'}, - [15] = {entity = {name = 'assembling-machine-2', callback = 'factory'}, tile = 'refined-concrete'}, - [16] = {tile = 'refined-concrete'}, - [17] = {tile = 'refined-concrete'}, - [18] = {tile = 'concrete'}, - [19] = {tile = 'concrete'}, - [20] = {tile = 'refined-concrete'}, - [21] = {tile = 'refined-concrete'}, - [22] = {tile = 'refined-concrete'}, - [23] = {tile = 'refined-concrete'}, - [24] = {tile = 'concrete'}, - [25] = {tile = 'concrete'}, - [26] = {tile = 'refined-concrete'}, - [27] = {tile = 'refined-concrete'}, - [28] = {tile = 'refined-concrete'}, - [29] = {tile = 'refined-concrete'}, - [30] = {tile = 'concrete'}, - [31] = {tile = 'concrete'}, - [32] = {tile = 'concrete'}, - [33] = {tile = 'concrete'}, - [34] = {tile = 'concrete'}, - [35] = {tile = 'concrete'}, - [36] = {tile = 'concrete'} -} - + ob.extend_1_way( + base_factory[2], + { + factory = factory, + fallback = level2 + } +) local level4 = - ob.make_1_way { - force = 'neutral', - market = { - callback = ob.market_set_items_callback, - data = { - { - offer = {type = 'give-item', item = 'iron-gear-wheel', count = 100}, - name = 'coin', - price = 100, - distance_factor = 1 / 32, - min_price = 10 - }, - { - offer = {type = 'give-item', item = 'iron-plate', count = 100}, - name = 'coin', - price = 80, - distance_factor = 1 / 32, - min_price = 8 - }, - { - offer = {type = 'give-item', item = 'steel-plate', count = 100}, - name = 'coin', - price = 400, - distance_factor = 1 / 32, - min_price = 40 - } - } - }, - max_count = 1, - fallback = level3, - [1] = {tile = 'concrete'}, - [2] = {tile = 'concrete'}, - [3] = {tile = 'concrete'}, - [4] = {tile = 'concrete'}, - [5] = {tile = 'concrete'}, - [6] = {tile = 'concrete'}, - [7] = {tile = 'concrete'}, - [8] = {tile = 'refined-concrete'}, - [9] = {tile = 'refined-concrete'}, - [10] = {tile = 'refined-concrete'}, - [11] = {tile = 'refined-concrete'}, - [12] = {tile = 'concrete'}, - [13] = {tile = 'concrete'}, - [14] = {tile = 'refined-concrete'}, - [15] = {entity = {name = 'market', callback = 'market'}}, - [16] = {tile = 'refined-concrete'}, - [17] = {tile = 'refined-concrete'}, - [18] = {tile = 'concrete'}, - [19] = {tile = 'concrete'}, - [20] = {tile = 'refined-concrete'}, - [21] = {tile = 'refined-concrete'}, - [22] = {tile = 'refined-concrete'}, - [23] = {tile = 'refined-concrete'}, - [24] = {tile = 'concrete'}, - [25] = {tile = 'concrete'}, - [26] = {tile = 'refined-concrete'}, - [27] = {tile = 'refined-concrete'}, - [28] = {tile = 'refined-concrete'}, - [29] = {tile = 'refined-concrete'}, - [30] = {tile = 'concrete'}, - [31] = {tile = 'concrete'}, - [32] = {tile = 'concrete'}, - [33] = {tile = 'concrete'}, - [34] = {tile = 'concrete'}, - [35] = {tile = 'concrete'}, - [36] = {tile = 'concrete'} -} - + ob.extend_1_way( + base_factory[3], + { + market = market, + fallback = level3 + } +) return { settings = { blocks = 7, diff --git a/map_gen/presets/crash_site/outpost_data/medium_iron_plate_factory.lua b/map_gen/presets/crash_site/outpost_data/medium_iron_plate_factory.lua index 39662702..df3ccda9 100644 --- a/map_gen/presets/crash_site/outpost_data/medium_iron_plate_factory.lua +++ b/map_gen/presets/crash_site/outpost_data/medium_iron_plate_factory.lua @@ -18,182 +18,78 @@ local loot_callback = end ) -local level2 = - ob.make_1_way { - force = 'neutral', - loot = {callback = loot_callback}, - [1] = {tile = 'concrete'}, - [2] = {tile = 'concrete'}, - [3] = {tile = 'concrete'}, - [4] = {tile = 'concrete'}, - [5] = {tile = 'concrete'}, - [6] = {tile = 'concrete'}, - [7] = {tile = 'concrete'}, - [8] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, - [9] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, - [10] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, - [11] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, - [12] = {tile = 'concrete'}, - [13] = {tile = 'concrete'}, - [14] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, - [15] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, - [16] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, - [17] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, - [18] = {tile = 'concrete'}, - [19] = {tile = 'concrete'}, - [20] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, - [21] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, - [22] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, - [23] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, - [24] = {tile = 'concrete'}, - [25] = {tile = 'concrete'}, - [26] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, - [27] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, - [28] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, - [29] = {entity = {name = 'steel-chest', callback = 'loot'}, tile = 'refined-concrete'}, - [30] = {tile = 'concrete'}, - [31] = {tile = 'concrete'}, - [32] = {tile = 'concrete'}, - [33] = {tile = 'concrete'}, - [34] = {tile = 'concrete'}, - [35] = {tile = 'concrete'}, - [36] = {tile = 'concrete'} +local factory = { + callback = ob.magic_item_crafting_callback, + data = { + furance_item = 'iron-ore', + output = {min_rate = 1.5 / 60, distance_factor = 1.5 / 60 / 100, item = 'iron-plate'} + } } -local level3 = - ob.make_1_way { - force = 'neutral', - factory = { - callback = ob.magic_item_crafting_callback, - data = { - furance_item = 'iron-ore', - output = {min_rate = 1.5 / 60, distance_factor = 1.5 / 60 / 100, item = 'iron-plate'} - } - }, - max_count = 6, - fallback = level2, - [1] = {tile = 'concrete'}, - [2] = {tile = 'concrete'}, - [3] = {tile = 'concrete'}, - [4] = {tile = 'concrete'}, - [5] = {tile = 'concrete'}, - [6] = {tile = 'concrete'}, - [7] = {tile = 'concrete'}, - [8] = {tile = 'refined-concrete'}, - [9] = {tile = 'refined-concrete'}, - [10] = {tile = 'refined-concrete'}, - [11] = {tile = 'refined-concrete'}, - [12] = {tile = 'concrete'}, - [13] = {tile = 'concrete'}, - [14] = {tile = 'refined-concrete'}, - [15] = {entity = {name = 'electric-furnace', callback = 'factory'}, tile = 'refined-concrete'}, - [16] = {tile = 'refined-concrete'}, - [17] = {tile = 'refined-concrete'}, - [18] = {tile = 'concrete'}, - [19] = {tile = 'concrete'}, - [20] = {tile = 'refined-concrete'}, - [21] = {tile = 'refined-concrete'}, - [22] = {tile = 'refined-concrete'}, - [23] = {tile = 'refined-concrete'}, - [24] = {tile = 'concrete'}, - [25] = {tile = 'concrete'}, - [26] = {tile = 'refined-concrete'}, - [27] = {tile = 'refined-concrete'}, - [28] = {tile = 'refined-concrete'}, - [29] = {tile = 'refined-concrete'}, - [30] = {tile = 'concrete'}, - [31] = {tile = 'concrete'}, - [32] = {tile = 'concrete'}, - [33] = {tile = 'concrete'}, - [34] = {tile = 'concrete'}, - [35] = {tile = 'concrete'}, - [36] = {tile = 'concrete'} +local factory_b = { + callback = ob.magic_item_crafting_callback, + data = { + furance_item = {name = 'iron-plate', count = 100}, + output = {min_rate = 1.5 / 60, distance_factor = 1.5 / 60 / 100, item = 'steel-plate'} + } } +local market = { + callback = ob.market_set_items_callback, + data = { + { + name = 'iron-plate', + price = 0.3, + distance_factor = 0.005 / 32, + min_price = 0.03 + }, + { + name = 'steel-plate', + price = 1.5, + distance_factor = 0.005 / 32, + min_price = 0.15 + } + } +} + +local base_factory = require 'map_gen.presets.crash_site.outpost_data.medium_furance' + +local level2 = ob.extend_1_way(base_factory[1], {loot = {callback = loot_callback}}) +local level3 = + ob.extend_1_way( + base_factory[2], + { + factory = factory, + fallback = level2 + } +) + local level3b = ob.extend_1_way( - level3, + base_factory[2], { - factory = { - callback = ob.magic_item_crafting_callback, - data = { - furance_item = {name = 'iron-plate', count = 100}, - output = {min_rate = 1.5 / 60, distance_factor = 1.5 / 60 / 100, item = 'steel-plate'} - } - } + factory = factory_b, + fallback = level2 } ) local level4 = - ob.make_1_way { - force = 'neutral', - market = { - callback = ob.market_set_items_callback, - data = { - { - offer = {type = 'give-item', item = 'iron-plate', count = 100}, - name = 'coin', - price = 60, - distance_factor = 1 / 32, - min_price = 6 - }, - { - offer = {type = 'give-item', item = 'steel-plate', count = 100}, - name = 'coin', - price = 300, - distance_factor = 1 / 32, - min_price = 30 - } - } - }, - max_count = 1, - fallback = level3, - [1] = {tile = 'concrete'}, - [2] = {tile = 'concrete'}, - [3] = {tile = 'concrete'}, - [4] = {tile = 'concrete'}, - [5] = {tile = 'concrete'}, - [6] = {tile = 'concrete'}, - [7] = {tile = 'concrete'}, - [8] = {tile = 'refined-concrete'}, - [9] = {tile = 'refined-concrete'}, - [10] = {tile = 'refined-concrete'}, - [11] = {tile = 'refined-concrete'}, - [12] = {tile = 'concrete'}, - [13] = {tile = 'concrete'}, - [14] = {tile = 'refined-concrete'}, - [15] = {entity = {name = 'market', callback = 'market'}}, - [16] = {tile = 'refined-concrete'}, - [17] = {tile = 'refined-concrete'}, - [18] = {tile = 'concrete'}, - [19] = {tile = 'concrete'}, - [20] = {tile = 'refined-concrete'}, - [21] = {tile = 'refined-concrete'}, - [22] = {tile = 'refined-concrete'}, - [23] = {tile = 'refined-concrete'}, - [24] = {tile = 'concrete'}, - [25] = {tile = 'concrete'}, - [26] = {tile = 'refined-concrete'}, - [27] = {tile = 'refined-concrete'}, - [28] = {tile = 'refined-concrete'}, - [29] = {tile = 'refined-concrete'}, - [30] = {tile = 'concrete'}, - [31] = {tile = 'concrete'}, - [32] = {tile = 'concrete'}, - [33] = {tile = 'concrete'}, - [34] = {tile = 'concrete'}, - [35] = {tile = 'concrete'}, - [36] = {tile = 'concrete'} -} - -local level4b = ob.extend_1_way( - level4, + base_factory[3], { - fallback = level3b + market = market, + fallback = level3 } ) +local level4b = + ob.extend_1_way( + base_factory[3], + { + market = market, + fallback = level3b + } +) return { settings = { blocks = 7, diff --git a/map_gen/presets/crash_site/outpost_data/medium_laser_turrets.lua b/map_gen/presets/crash_site/outpost_data/medium_laser_turrets.lua index edb1e38f..5cd47386 100644 --- a/map_gen/presets/crash_site/outpost_data/medium_laser_turrets.lua +++ b/map_gen/presets/crash_site/outpost_data/medium_laser_turrets.lua @@ -2,6 +2,7 @@ local ob = require 'map_gen.presets.crash_site.outpost_builder' return { ob.make_4_way { + turret = {callback = ob.power_source_callback, data = ob.laser_turrent_power_source}, [1] = {entity = {name = 'stone-wall'}}, [2] = {entity = {name = 'stone-wall'}}, [3] = {entity = {name = 'stone-wall'}}, @@ -21,9 +22,9 @@ return { [17] = {tile = 'hazard-concrete-left'}, [18] = {tile = 'concrete'}, [19] = {tile = 'hazard-concrete-left'}, - [20] = {entity = {name = 'laser-turret', offset = 3}, tile = 'concrete'}, + [20] = {entity = {name = 'laser-turret', callback = 'turret', offset = 3}, tile = 'concrete'}, [21] = {tile = 'hazard-concrete-left'}, - [22] = {entity = {name = 'laser-turret', offset = 3}, tile = 'concrete'}, + [22] = {entity = {name = 'laser-turret', callback = 'turret', offset = 3}, tile = 'concrete'}, [23] = {tile = 'hazard-concrete-left'}, [24] = {tile = 'concrete'}, [25] = {tile = 'hazard-concrete-left'}, @@ -40,6 +41,7 @@ return { [36] = {tile = 'concrete'} }, ob.make_4_way { + turret = {callback = ob.power_source_callback, data = ob.laser_turrent_power_source}, [1] = {entity = {name = 'stone-wall'}}, [2] = {entity = {name = 'stone-wall'}}, [3] = {entity = {name = 'stone-wall'}}, @@ -54,9 +56,9 @@ return { [12] = {entity = {name = 'stone-wall'}}, [13] = {entity = {name = 'stone-wall'}}, [14] = {entity = {name = 'stone-wall'}}, - [15] = {entity = {name = 'laser-turret', offset = 3}, tile = 'concrete'}, + [15] = {entity = {name = 'laser-turret', callback = 'turret', offset = 3}, tile = 'concrete'}, [16] = {tile = 'hazard-concrete-left'}, - [17] = {entity = {name = 'laser-turret', offset = 3}, tile = 'concrete'}, + [17] = {entity = {name = 'laser-turret', callback = 'turret', offset = 3}, tile = 'concrete'}, [18] = {tile = 'hazard-concrete-left'}, [19] = {entity = {name = 'stone-wall'}}, [20] = {entity = {name = 'stone-wall'}}, @@ -66,7 +68,7 @@ return { [24] = {tile = 'concrete'}, [25] = {entity = {name = 'stone-wall'}}, [26] = {entity = {name = 'stone-wall'}}, - [27] = {entity = {name = 'laser-turret', offset = 3}, tile = 'concrete'}, + [27] = {entity = {name = 'laser-turret', callback = 'turret', offset = 3}, tile = 'concrete'}, [28] = {tile = 'hazard-concrete-left'}, [29] = {entity = {name = 'medium-electric-pole'}, tile = 'concrete'}, [30] = {tile = 'hazard-concrete-left'}, @@ -78,6 +80,7 @@ return { [36] = {entity = {name = 'medium-electric-pole'}, tile = 'concrete'} }, ob.make_4_way { + turret = {callback = ob.power_source_callback, data = ob.laser_turrent_power_source}, [1] = {entity = {name = 'stone-wall'}}, [2] = {entity = {name = 'stone-wall'}}, [3] = {tile = 'concrete'}, @@ -87,7 +90,7 @@ return { [7] = {entity = {name = 'stone-wall'}}, [8] = {entity = {name = 'stone-wall'}}, [9] = {tile = 'hazard-concrete-left'}, - [10] = {entity = {name = 'laser-turret', offset = 3}, tile = 'concrete'}, + [10] = {entity = {name = 'laser-turret', callback = 'turret', offset = 3}, tile = 'concrete'}, [11] = {tile = 'hazard-concrete-left'}, [12] = {tile = 'concrete'}, [13] = {tile = 'concrete'}, @@ -97,7 +100,7 @@ return { [17] = {tile = 'concrete'}, [18] = {tile = 'hazard-concrete-left'}, [19] = {tile = 'hazard-concrete-left'}, - [20] = {entity = {name = 'laser-turret', offset = 3}, tile = 'concrete'}, + [20] = {entity = {name = 'laser-turret', callback = 'turret', offset = 3}, tile = 'concrete'}, [21] = {tile = 'hazard-concrete-left'}, [22] = {tile = 'concrete'}, [23] = {tile = 'hazard-concrete-left'}, diff --git a/map_gen/presets/crash_site/outpost_data/medium_science_factory.lua b/map_gen/presets/crash_site/outpost_data/medium_science_factory.lua new file mode 100644 index 00000000..dbc72272 --- /dev/null +++ b/map_gen/presets/crash_site/outpost_data/medium_science_factory.lua @@ -0,0 +1,108 @@ +local ob = require 'map_gen.presets.crash_site.outpost_builder' +local Token = require 'utils.global_token' + +local loot = { + {weight = 10}, + {stack = {name = 'coin', count = 750, distance_factor = 1 / 2}, weight = 5}, + {stack = {name = 'science-pack-1', count = 100, distance_factor = 1 / 10}, weight = 5}, + {stack = {name = 'science-pack-2', count = 50, distance_factor = 1 / 10}, weight = 5}, + {stack = {name = 'military-science-pack', count = 25, distance_factor = 1 / 10}, weight = 5}, + {stack = {name = 'science-pack-3', count = 25, distance_factor = 1 / 10}, weight = 5} +} + +local weights = ob.prepare_weighted_loot(loot) + +local loot_callback = + Token.register( + function(chest) + ob.do_random_loot(chest, weights, loot) + end +) + +local factory = { + callback = ob.magic_item_crafting_callback, + data = { + recipe = 'military-science-pack', + output = {min_rate = 0.1 / 60, distance_factor = 1 / 60 / 1000, item = 'military-science-pack'} + } +} + +local factory_b = { + callback = ob.magic_item_crafting_callback, + data = { + recipe = 'science-pack-3', + output = {min_rate = 0.1 / 60, distance_factor = 1 / 60 / 1000, item = 'science-pack-3'} + } +} + +local market = { + callback = ob.market_set_items_callback, + data = { + { + name = 'science-pack-1', + price = 10, + distance_factor = 0.005 / 32, + min_price = 1 + }, + { + name = 'science-pack-2', + price = 20, + distance_factor = 0.005 / 32, + min_price = 2 + }, + { + name = 'military-science-pack', + price = 40, + distance_factor = 0.005 / 32, + min_price = 4 + }, + { + name = 'science-pack-3', + price = 60, + distance_factor = 0.005 / 32, + min_price = 4 + } + } +} + +local base_factory = require 'map_gen.presets.crash_site.outpost_data.medium_factory' + +local level2 = ob.extend_1_way(base_factory[1], {loot = {callback = loot_callback}}) +local level3 = + ob.extend_1_way( + base_factory[2], + { + factory = factory, + fallback = level2 + } +) +local level3b = + ob.extend_1_way( + base_factory[2], + { + factory = factory_b, + fallback = level2 + } +) +local level4 = + ob.extend_1_way( + base_factory[3], + { + market = market, + fallback = level3 + } +) +return { + settings = { + blocks = 7, + variance = 3, + min_step = 2, + max_level = 2 + }, + walls = { + require 'map_gen.presets.crash_site.outpost_data.medium_laser_turrets' + }, + bases = { + {level4, level3b, level2} + } +} diff --git a/map_gen/presets/crash_site/outpost_data/small_ammo_factory.lua b/map_gen/presets/crash_site/outpost_data/small_ammo_factory.lua new file mode 100644 index 00000000..76a2332b --- /dev/null +++ b/map_gen/presets/crash_site/outpost_data/small_ammo_factory.lua @@ -0,0 +1,163 @@ +local ob = require 'map_gen.presets.crash_site.outpost_builder' +local Token = require 'utils.global_token' + +local loot = { + {weight = 10}, + {stack = {name = 'coin', count = 500, distance_factor = 1 / 2}, weight = 5}, + {stack = {name = 'firearm-magazine', count = 500, distance_factor = 1}, weight = 5}, + {stack = {name = 'piercing-rounds-magazine', count = 300, distance_factor = 1 / 2}, weight = 5}, + {stack = {name = 'shotgun-shell', count = 200, distance_factor = 1 / 4}, weight = 2}, + {stack = {name = 'grenade', count = 100, distance_factor = 1 / 8}, weight = 3}, + {stack = {name = 'land-mine', count = 400, distance_factor = 1}, weight = 2}, + {stack = {name = 'rocket', count = 50, distance_factor = 1 / 32}, weight = 1}, + {stack = {name = 'cannon-shell', count = 50, distance_factor = 1 / 32}, weight = 1}, + {stack = {name = 'cluster-grenade', count = 10, distance_factor = 1 / 32}, weight = 1}, + {stack = {name = 'poison-capsule', count = 10, distance_factor = 1 / 32}, weight = 1} +} + +local weights = ob.prepare_weighted_loot(loot) + +local loot_callback = + Token.register( + function(chest) + ob.do_random_loot(chest, weights, loot) + end +) + +local factory = { + callback = ob.magic_item_crafting_callback, + data = { + recipe = 'firearm-magazine', + output = {min_rate = 1 / 60, distance_factor = 1 / 60 / 100, item = 'firearm-magazine'} + } +} + +local factory_b = { + callback = ob.magic_item_crafting_callback, + data = { + recipe = 'piercing-rounds-magazine', + output = {min_rate = 1 / 3 / 60, distance_factor = 1 / 60 / 100, item = 'piercing-rounds-magazine'} + } +} + +local factory_c = { + callback = ob.magic_item_crafting_callback, + data = { + recipe = 'grenade', + output = {min_rate = 1 / 3 / 60, distance_factor = 1 / 60 / 100, item = 'grenade'} + } +} + +local market = { + callback = ob.market_set_items_callback, + data = { + { + name = 'firearm-magazine', + price = 1, + distance_factor = 0.005 / 32, + min_price = 0.1 + }, + { + name = 'piercing-rounds-magazine', + price = 3, + distance_factor = 0.005 / 32, + min_price = 0.3 + }, + { + name = 'shotgun-shell', + price = 2, + distance_factor = 0.005 / 32, + min_price = 0.2 + }, + { + name = 'grenade', + price = 10, + distance_factor = 0.005 / 32, + min_price = 1 + }, + { + name = 'land-mine', + price = 1, + distance_factor = 0.005 / 32, + min_price = 0.1 + }, + { + name = 'rocket', + price = 20, + distance_factor = 0.005 / 32, + min_price = 2 + }, + { + name = 'rocket-launcher', + price = 250, + distance_factor = 0.005 / 32, + min_price = 125 + }, + { + name = 'cluster-grenade', + price = 60, + distance_factor = 0.005 / 32, + min_price = 6 + }, + { + name = 'poison-capsule', + price = 60, + distance_factor = 0.005 / 32, + min_price = 6 + } + } +} + +local base_factory = require 'map_gen.presets.crash_site.outpost_data.small_factory' + +local level2 = ob.extend_1_way(base_factory[1], {loot = {callback = loot_callback}}) +local level3 = + ob.extend_1_way( + base_factory[2], + { + factory = factory, + fallback = level2 + } +) +local level3b = + ob.extend_1_way( + base_factory[2], + { + factory = factory_b, + fallback = level3, + max_count = 2 + } +) +local level3c = + ob.extend_1_way( + base_factory[2], + { + factory = factory_c, + fallback = level3b, + max_count = 1 + } +) +local level4 = + ob.extend_1_way( + base_factory[3], + { + market = market, + fallback = level3c + } +) +return { + settings = { + blocks = 7, + variance = 3, + min_step = 2, + max_level = 2 + }, + walls = { + require 'map_gen.presets.crash_site.outpost_data.medium_gun_turrets', + require 'map_gen.presets.crash_site.outpost_data.medium_laser_turrets', + require 'map_gen.presets.crash_site.outpost_data.medium_flame_turrets' + }, + bases = { + {level4, level2} + } +} diff --git a/map_gen/presets/crash_site/outpost_data/small_circuit_factory.lua b/map_gen/presets/crash_site/outpost_data/small_circuit_factory.lua index f7096d71..a8218e73 100644 --- a/map_gen/presets/crash_site/outpost_data/small_circuit_factory.lua +++ b/map_gen/presets/crash_site/outpost_data/small_circuit_factory.lua @@ -24,21 +24,21 @@ local market = { data = { { name = 'copper-cable', - price = 50 / 200, - distance_factor = 1 / 200 / 32, - min_price = 5 / 200 + price = 0.25, + distance_factor = 0.005 / 32, + min_price = 0.025 }, { name = 'electronic-circuit', - price = 200 / 200, - distance_factor = 1 / 200 / 32, - min_price = 10 / 200 + price = 1, + distance_factor = 0.005 / 32, + min_price = 0.05 }, { name = 'advanced-circuit', - price = 2000 / 200, - distance_factor = 1 / 200 / 32, - min_price = 100 / 200 + price = 10, + distance_factor = 0.005 / 32, + min_price = 0.5 } } } diff --git a/map_gen/presets/crash_site/outpost_data/small_copper_plate_factory.lua b/map_gen/presets/crash_site/outpost_data/small_copper_plate_factory.lua new file mode 100644 index 00000000..d2b760a4 --- /dev/null +++ b/map_gen/presets/crash_site/outpost_data/small_copper_plate_factory.lua @@ -0,0 +1,79 @@ +local ob = require 'map_gen.presets.crash_site.outpost_builder' +local Token = require 'utils.global_token' + +local loot = { + {weight = 5}, + {stack = {name = 'coin', count = 500, distance_factor = 1 / 2}, weight = 5}, + {stack = {name = 'copper-ore', count = 1600}, weight = 8}, + {stack = {name = 'copper-cable', count = 500, distance_factor = 1 / 2}, weight = 2}, + {stack = {name = 'copper-plate', count = 500, distance_factor = 1 / 2}, weight = 10} +} + +local weights = ob.prepare_weighted_loot(loot) + +local loot_callback = + Token.register( + function(chest) + ob.do_random_loot(chest, weights, loot) + end +) + +local factory = { + callback = ob.magic_item_crafting_callback, + data = { + furance_item = 'copper-ore', + output = {min_rate = 1.5 / 60, distance_factor = 1.5 / 60 / 100, item = 'copper-plate'} + } +} + +local market = { + callback = ob.market_set_items_callback, + data = { + { + name = 'copper-cable', + price = 0.12, + distance_factor = 0.005 / 32, + min_price = 0.012 + }, + { + name = 'copper-plate', + price = 0.3, + distance_factor = 0.005 / 32, + min_price = 0.03 + } + } +} + +local base_factory = require 'map_gen.presets.crash_site.outpost_data.small_furance' + +local level2 = ob.extend_1_way(base_factory[1], {loot = {callback = loot_callback}}) +local level3 = + ob.extend_1_way( + base_factory[2], + { + factory = factory, + fallback = level2 + } +) +local level4 = + ob.extend_1_way( + base_factory[3], + { + market = market, + fallback = level3 + } +) +return { + settings = { + blocks = 6, + variance = 3, + min_step = 2, + max_level = 2 + }, + walls = { + require 'map_gen.presets.crash_site.outpost_data.light_gun_turrets' + }, + bases = { + {level4, level2} + } +} diff --git a/map_gen/presets/crash_site/outpost_data/small_engine_factory.lua b/map_gen/presets/crash_site/outpost_data/small_engine_factory.lua new file mode 100644 index 00000000..0dfb55a6 --- /dev/null +++ b/map_gen/presets/crash_site/outpost_data/small_engine_factory.lua @@ -0,0 +1,93 @@ +local ob = require 'map_gen.presets.crash_site.outpost_builder' +local Token = require 'utils.global_token' + +local loot = { + {weight = 5}, + {stack = {name = 'coin', count = 500, distance_factor = 1 / 2}, weight = 5}, + {stack = {name = 'engine-unit', count = 100, distance_factor = 1 / 2}, weight = 10}, + {stack = {name = 'electric-engine-unit', count = 50, distance_factor = 1 / 2}, weight = 5}, + {stack = {name = 'car', count = 1, distance_factor = 1 / 128}, weight = 2}, + {stack = {name = 'rail', count = 100, distance_factor = 1}, weight = 2} +} + +local weights = ob.prepare_weighted_loot(loot) + +local loot_callback = + Token.register( + function(chest) + ob.do_random_loot(chest, weights, loot) + end +) + +local factory = { + callback = ob.magic_item_crafting_callback, + data = { + recipe = 'engine-unit', + output = {min_rate = 1 / 60, distance_factor = 1 / 60 / 100, item = 'engine-unit'} + } +} + +local market = { + callback = ob.market_set_items_callback, + data = { + { + name = 'engine-unit', + price = 4, + distance_factor = 0.005 / 32, + min_price = 0.4 + }, + { + name = 'electric-engine-unit', + price = 8, + distance_factor = 0.005 / 32, + min_price = 0.8 + }, + { + name = 'car', + price = 50, + distance_factor = 0.005 / 32, + min_price = 40 + }, + { + name = 'rail', + price = 1, + distance_factor = 0.005 / 32, + min_price = 0.1 + } + } +} + +local base_factory = require 'map_gen.presets.crash_site.outpost_data.small_factory' + +local level2 = ob.extend_1_way(base_factory[1], {loot = {callback = loot_callback}}) +local level3 = + ob.extend_1_way( + base_factory[2], + { + factory = factory, + fallback = level2, + max_count = 2 + } +) +local level4 = + ob.extend_1_way( + base_factory[3], + { + market = market, + fallback = level3 + } +) +return { + settings = { + blocks = 6, + variance = 3, + min_step = 2, + max_level = 2 + }, + walls = { + require 'map_gen.presets.crash_site.outpost_data.light_gun_turrets' + }, + bases = { + {level4, level2} + } +} diff --git a/map_gen/presets/crash_site/outpost_data/small_furance.lua b/map_gen/presets/crash_site/outpost_data/small_furance.lua new file mode 100644 index 00000000..5e961bd9 --- /dev/null +++ b/map_gen/presets/crash_site/outpost_data/small_furance.lua @@ -0,0 +1,132 @@ +local ob = require 'map_gen.presets.crash_site.outpost_builder' + +local level2 = + ob.make_1_way { + force = 'neutral', + [1] = {tile = 'stone-path'}, + [2] = {tile = 'stone-path'}, + [3] = {tile = 'stone-path'}, + [4] = {tile = 'stone-path'}, + [5] = {tile = 'stone-path'}, + [6] = {tile = 'stone-path'}, + [7] = {tile = 'stone-path'}, + [8] = {entity = {name = 'iron-chest', callback = 'loot'}, tile = 'concrete'}, + [9] = {entity = {name = 'iron-chest', callback = 'loot'}, tile = 'concrete'}, + [10] = {entity = {name = 'iron-chest', callback = 'loot'}, tile = 'concrete'}, + [11] = {entity = {name = 'iron-chest', callback = 'loot'}, tile = 'concrete'}, + [12] = {tile = 'stone-path'}, + [13] = {tile = 'stone-path'}, + [14] = {entity = {name = 'iron-chest', callback = 'loot'}, tile = 'concrete'}, + [15] = {entity = {name = 'iron-chest', callback = 'loot'}, tile = 'concrete'}, + [16] = {entity = {name = 'iron-chest', callback = 'loot'}, tile = 'concrete'}, + [17] = {entity = {name = 'iron-chest', callback = 'loot'}, tile = 'concrete'}, + [18] = {tile = 'stone-path'}, + [19] = {tile = 'stone-path'}, + [20] = {entity = {name = 'iron-chest', callback = 'loot'}, tile = 'concrete'}, + [21] = {entity = {name = 'iron-chest', callback = 'loot'}, tile = 'concrete'}, + [22] = {entity = {name = 'iron-chest', callback = 'loot'}, tile = 'concrete'}, + [23] = {entity = {name = 'iron-chest', callback = 'loot'}, tile = 'concrete'}, + [24] = {tile = 'stone-path'}, + [25] = {tile = 'stone-path'}, + [26] = {entity = {name = 'iron-chest', callback = 'loot'}, tile = 'concrete'}, + [27] = {entity = {name = 'iron-chest', callback = 'loot'}, tile = 'concrete'}, + [28] = {entity = {name = 'iron-chest', callback = 'loot'}, tile = 'concrete'}, + [29] = {entity = {name = 'iron-chest', callback = 'loot'}, tile = 'concrete'}, + [30] = {tile = 'stone-path'}, + [31] = {tile = 'stone-path'}, + [32] = {tile = 'stone-path'}, + [33] = {tile = 'stone-path'}, + [34] = {tile = 'stone-path'}, + [35] = {tile = 'stone-path'}, + [36] = {tile = 'stone-path'} +} + +local level3 = + ob.make_1_way { + force = 'neutral', + max_count = 4, + [1] = {tile = 'stone-path'}, + [2] = {tile = 'stone-path'}, + [3] = {tile = 'stone-path'}, + [4] = {tile = 'stone-path'}, + [5] = {tile = 'stone-path'}, + [6] = {tile = 'stone-path'}, + [7] = {tile = 'stone-path'}, + [8] = {tile = 'concrete'}, + [9] = {tile = 'concrete'}, + [10] = {tile = 'concrete'}, + [11] = {tile = 'concrete'}, + [12] = {tile = 'stone-path'}, + [13] = {tile = 'stone-path'}, + [14] = {tile = 'concrete'}, + [15] = {entity = {name = 'electric-furnace', callback = 'factory'}, tile = 'concrete'}, + [16] = {tile = 'concrete'}, + [17] = {tile = 'concrete'}, + [18] = {tile = 'stone-path'}, + [19] = {tile = 'stone-path'}, + [20] = {tile = 'concrete'}, + [21] = {tile = 'concrete'}, + [22] = {tile = 'concrete'}, + [23] = {tile = 'concrete'}, + [24] = {tile = 'stone-path'}, + [25] = {tile = 'stone-path'}, + [26] = {tile = 'concrete'}, + [27] = {tile = 'concrete'}, + [28] = {tile = 'concrete'}, + [29] = {tile = 'concrete'}, + [30] = {tile = 'stone-path'}, + [31] = {tile = 'stone-path'}, + [32] = {tile = 'stone-path'}, + [33] = {tile = 'stone-path'}, + [34] = {tile = 'stone-path'}, + [35] = {tile = 'stone-path'}, + [36] = {tile = 'stone-path'} +} + +local level4 = + ob.make_1_way { + force = 'neutral', + max_count = 1, + [1] = {tile = 'stone-path'}, + [2] = {tile = 'stone-path'}, + [3] = {tile = 'stone-path'}, + [4] = {tile = 'stone-path'}, + [5] = {tile = 'stone-path'}, + [6] = {tile = 'stone-path'}, + [7] = {tile = 'stone-path'}, + [8] = {tile = 'concrete'}, + [9] = {tile = 'concrete'}, + [10] = {tile = 'concrete'}, + [11] = {tile = 'concrete'}, + [12] = {tile = 'stone-path'}, + [13] = {tile = 'stone-path'}, + [14] = {tile = 'concrete'}, + [15] = {entity = {name = 'market', callback = 'market'}}, + [16] = {tile = 'concrete'}, + [17] = {tile = 'concrete'}, + [18] = {tile = 'stone-path'}, + [19] = {tile = 'stone-path'}, + [20] = {tile = 'concrete'}, + [21] = {tile = 'concrete'}, + [22] = {tile = 'concrete'}, + [23] = {tile = 'concrete'}, + [24] = {tile = 'stone-path'}, + [25] = {tile = 'stone-path'}, + [26] = {tile = 'concrete'}, + [27] = {tile = 'concrete'}, + [28] = {tile = 'concrete'}, + [29] = {tile = 'concrete'}, + [30] = {tile = 'stone-path'}, + [31] = {tile = 'stone-path'}, + [32] = {tile = 'stone-path'}, + [33] = {tile = 'stone-path'}, + [34] = {tile = 'stone-path'}, + [35] = {tile = 'stone-path'}, + [36] = {tile = 'stone-path'} +} + +return { + level2, + level3, + level4 +} diff --git a/map_gen/presets/crash_site/outpost_data/small_gear_factory.lua b/map_gen/presets/crash_site/outpost_data/small_gear_factory.lua index dc6cc95e..b5c54b2a 100644 --- a/map_gen/presets/crash_site/outpost_data/small_gear_factory.lua +++ b/map_gen/presets/crash_site/outpost_data/small_gear_factory.lua @@ -18,167 +18,57 @@ local loot_callback = end ) -local level2 = - ob.make_1_way { - force = 'neutral', - loot = {callback = loot_callback}, - [1] = {tile = 'stone-path'}, - [2] = {tile = 'stone-path'}, - [3] = {tile = 'stone-path'}, - [4] = {tile = 'stone-path'}, - [5] = {tile = 'stone-path'}, - [6] = {tile = 'stone-path'}, - [7] = {tile = 'stone-path'}, - [8] = {entity = {name = 'iron-chest', callback = 'loot'}, tile = 'concrete'}, - [9] = {entity = {name = 'iron-chest', callback = 'loot'}, tile = 'concrete'}, - [10] = {entity = {name = 'iron-chest', callback = 'loot'}, tile = 'concrete'}, - [11] = {entity = {name = 'iron-chest', callback = 'loot'}, tile = 'concrete'}, - [12] = {tile = 'stone-path'}, - [13] = {tile = 'stone-path'}, - [14] = {entity = {name = 'iron-chest', callback = 'loot'}, tile = 'concrete'}, - [15] = {entity = {name = 'iron-chest', callback = 'loot'}, tile = 'concrete'}, - [16] = {entity = {name = 'iron-chest', callback = 'loot'}, tile = 'concrete'}, - [17] = {entity = {name = 'iron-chest', callback = 'loot'}, tile = 'concrete'}, - [18] = {tile = 'stone-path'}, - [19] = {tile = 'stone-path'}, - [20] = {entity = {name = 'iron-chest', callback = 'loot'}, tile = 'concrete'}, - [21] = {entity = {name = 'iron-chest', callback = 'loot'}, tile = 'concrete'}, - [22] = {entity = {name = 'iron-chest', callback = 'loot'}, tile = 'concrete'}, - [23] = {entity = {name = 'iron-chest', callback = 'loot'}, tile = 'concrete'}, - [24] = {tile = 'stone-path'}, - [25] = {tile = 'stone-path'}, - [26] = {entity = {name = 'iron-chest', callback = 'loot'}, tile = 'concrete'}, - [27] = {entity = {name = 'iron-chest', callback = 'loot'}, tile = 'concrete'}, - [28] = {entity = {name = 'iron-chest', callback = 'loot'}, tile = 'concrete'}, - [29] = {entity = {name = 'iron-chest', callback = 'loot'}, tile = 'concrete'}, - [30] = {tile = 'stone-path'}, - [31] = {tile = 'stone-path'}, - [32] = {tile = 'stone-path'}, - [33] = {tile = 'stone-path'}, - [34] = {tile = 'stone-path'}, - [35] = {tile = 'stone-path'}, - [36] = {tile = 'stone-path'} +local factory = { + callback = ob.magic_item_crafting_callback, + data = { + recipe = 'iron-gear-wheel', + output = {min_rate = 1 / 60, distance_factor = 1 / 60 / 100, item = 'iron-gear-wheel'} + } } +local market = { + callback = ob.market_set_items_callback, + data = { + { + name = 'iron-gear-wheel', + price = 0.5, + distance_factor = 0.005 / 32, + min_price = 0.05 + }, + { + name = 'iron-plate', + price = 0.4, + distance_factor = 0.005 / 32, + min_price = 0.04 + }, + { + name = 'steel-plate', + price = 2, + distance_factor = 0.005 / 32, + min_price = 0.2 + } + } +} + +local base_factory = require 'map_gen.presets.crash_site.outpost_data.small_factory' + +local level2 = ob.extend_1_way(base_factory[1], {loot = {callback = loot_callback}}) local level3 = - ob.make_1_way { - force = 'neutral', - factory = { - callback = ob.magic_item_crafting_callback, - data = { - recipe = 'iron-gear-wheel', - output = {min_rate = 1 / 60, distance_factor = 1 / 60 / 100, item = 'iron-gear-wheel'} - } - }, - max_count = 4, - fallback = level2, - [1] = {tile = 'stone-path'}, - [2] = {tile = 'stone-path'}, - [3] = {tile = 'stone-path'}, - [4] = {tile = 'stone-path'}, - [5] = {tile = 'stone-path'}, - [6] = {tile = 'stone-path'}, - [7] = {tile = 'stone-path'}, - [8] = {tile = 'concrete'}, - [9] = {tile = 'concrete'}, - [10] = {tile = 'concrete'}, - [11] = {tile = 'concrete'}, - [12] = {tile = 'stone-path'}, - [13] = {tile = 'stone-path'}, - [14] = {tile = 'concrete'}, - [15] = {entity = {name = 'assembling-machine-2', callback = 'factory'}, tile = 'concrete'}, - [16] = {tile = 'concrete'}, - [17] = {tile = 'concrete'}, - [18] = {tile = 'stone-path'}, - [19] = {tile = 'stone-path'}, - [20] = {tile = 'concrete'}, - [21] = {tile = 'concrete'}, - [22] = {tile = 'concrete'}, - [23] = {tile = 'concrete'}, - [24] = {tile = 'stone-path'}, - [25] = {tile = 'stone-path'}, - [26] = {tile = 'concrete'}, - [27] = {tile = 'concrete'}, - [28] = {tile = 'concrete'}, - [29] = {tile = 'concrete'}, - [30] = {tile = 'stone-path'}, - [31] = {tile = 'stone-path'}, - [32] = {tile = 'stone-path'}, - [33] = {tile = 'stone-path'}, - [34] = {tile = 'stone-path'}, - [35] = {tile = 'stone-path'}, - [36] = {tile = 'stone-path'} -} - + ob.extend_1_way( + base_factory[2], + { + factory = factory, + fallback = level2 + } +) local level4 = - ob.make_1_way { - force = 'neutral', - market = { - callback = ob.market_set_items_callback, - data = { - { - offer = {type = 'give-item', item = 'iron-gear-wheel', count = 100}, - name = 'coin', - price = 100, - distance_factor = 1 / 32, - min_price = 10 - }, - { - offer = {type = 'give-item', item = 'iron-plate', count = 100}, - name = 'coin', - price = 80, - distance_factor = 1 / 32, - min_price = 8 - }, - { - offer = {type = 'give-item', item = 'steel-plate', count = 100}, - name = 'coin', - price = 400, - distance_factor = 1 / 32, - min_price = 40 - } - } - }, - max_count = 1, - fallback = level3, - [1] = {tile = 'stone-path'}, - [2] = {tile = 'stone-path'}, - [3] = {tile = 'stone-path'}, - [4] = {tile = 'stone-path'}, - [5] = {tile = 'stone-path'}, - [6] = {tile = 'stone-path'}, - [7] = {tile = 'stone-path'}, - [8] = {tile = 'concrete'}, - [9] = {tile = 'concrete'}, - [10] = {tile = 'concrete'}, - [11] = {tile = 'concrete'}, - [12] = {tile = 'stone-path'}, - [13] = {tile = 'stone-path'}, - [14] = {tile = 'concrete'}, - [15] = {entity = {name = 'market', callback = 'market'}}, - [16] = {tile = 'concrete'}, - [17] = {tile = 'concrete'}, - [18] = {tile = 'stone-path'}, - [19] = {tile = 'stone-path'}, - [20] = {tile = 'concrete'}, - [21] = {tile = 'concrete'}, - [22] = {tile = 'concrete'}, - [23] = {tile = 'concrete'}, - [24] = {tile = 'stone-path'}, - [25] = {tile = 'stone-path'}, - [26] = {tile = 'concrete'}, - [27] = {tile = 'concrete'}, - [28] = {tile = 'concrete'}, - [29] = {tile = 'concrete'}, - [30] = {tile = 'stone-path'}, - [31] = {tile = 'stone-path'}, - [32] = {tile = 'stone-path'}, - [33] = {tile = 'stone-path'}, - [34] = {tile = 'stone-path'}, - [35] = {tile = 'stone-path'}, - [36] = {tile = 'stone-path'} -} - + ob.extend_1_way( + base_factory[3], + { + market = market, + fallback = level3 + } +) return { settings = { blocks = 6, diff --git a/map_gen/presets/crash_site/outpost_data/small_iron_plate_factory.lua b/map_gen/presets/crash_site/outpost_data/small_iron_plate_factory.lua index e3ced7cf..cfa19464 100644 --- a/map_gen/presets/crash_site/outpost_data/small_iron_plate_factory.lua +++ b/map_gen/presets/crash_site/outpost_data/small_iron_plate_factory.lua @@ -18,160 +18,51 @@ local loot_callback = end ) -local level2 = - ob.make_1_way { - force = 'neutral', - loot = {callback = loot_callback}, - [1] = {tile = 'stone-path'}, - [2] = {tile = 'stone-path'}, - [3] = {tile = 'stone-path'}, - [4] = {tile = 'stone-path'}, - [5] = {tile = 'stone-path'}, - [6] = {tile = 'stone-path'}, - [7] = {tile = 'stone-path'}, - [8] = {entity = {name = 'iron-chest', callback = 'loot'}, tile = 'concrete'}, - [9] = {entity = {name = 'iron-chest', callback = 'loot'}, tile = 'concrete'}, - [10] = {entity = {name = 'iron-chest', callback = 'loot'}, tile = 'concrete'}, - [11] = {entity = {name = 'iron-chest', callback = 'loot'}, tile = 'concrete'}, - [12] = {tile = 'stone-path'}, - [13] = {tile = 'stone-path'}, - [14] = {entity = {name = 'iron-chest', callback = 'loot'}, tile = 'concrete'}, - [15] = {entity = {name = 'iron-chest', callback = 'loot'}, tile = 'concrete'}, - [16] = {entity = {name = 'iron-chest', callback = 'loot'}, tile = 'concrete'}, - [17] = {entity = {name = 'iron-chest', callback = 'loot'}, tile = 'concrete'}, - [18] = {tile = 'stone-path'}, - [19] = {tile = 'stone-path'}, - [20] = {entity = {name = 'iron-chest', callback = 'loot'}, tile = 'concrete'}, - [21] = {entity = {name = 'iron-chest', callback = 'loot'}, tile = 'concrete'}, - [22] = {entity = {name = 'iron-chest', callback = 'loot'}, tile = 'concrete'}, - [23] = {entity = {name = 'iron-chest', callback = 'loot'}, tile = 'concrete'}, - [24] = {tile = 'stone-path'}, - [25] = {tile = 'stone-path'}, - [26] = {entity = {name = 'iron-chest', callback = 'loot'}, tile = 'concrete'}, - [27] = {entity = {name = 'iron-chest', callback = 'loot'}, tile = 'concrete'}, - [28] = {entity = {name = 'iron-chest', callback = 'loot'}, tile = 'concrete'}, - [29] = {entity = {name = 'iron-chest', callback = 'loot'}, tile = 'concrete'}, - [30] = {tile = 'stone-path'}, - [31] = {tile = 'stone-path'}, - [32] = {tile = 'stone-path'}, - [33] = {tile = 'stone-path'}, - [34] = {tile = 'stone-path'}, - [35] = {tile = 'stone-path'}, - [36] = {tile = 'stone-path'} +local factory = { + callback = ob.magic_item_crafting_callback, + data = { + furance_item = 'iron-ore', + output = {min_rate = 1.5 / 60, distance_factor = 1.5 / 60 / 100, item = 'iron-plate'} + } } +local market = { + callback = ob.market_set_items_callback, + data = { + { + name = 'iron-plate', + price = 0.3, + distance_factor = 0.005 / 32, + min_price = 0.03 + }, + { + name = 'steel-plate', + price = 1.5, + distance_factor = 0.005 / 32, + min_price = 0.15 + } + } +} + +local base_factory = require 'map_gen.presets.crash_site.outpost_data.small_furance' + +local level2 = ob.extend_1_way(base_factory[1], {loot = {callback = loot_callback}}) local level3 = - ob.make_1_way { - force = 'neutral', - factory = { - callback = ob.magic_item_crafting_callback, - data = { - furance_item = 'iron-ore', - output = {min_rate = 1.5 / 60, distance_factor = 1.5 / 60 / 100, item = 'iron-plate'} - } - }, - max_count = 4, - fallback = level2, - [1] = {tile = 'stone-path'}, - [2] = {tile = 'stone-path'}, - [3] = {tile = 'stone-path'}, - [4] = {tile = 'stone-path'}, - [5] = {tile = 'stone-path'}, - [6] = {tile = 'stone-path'}, - [7] = {tile = 'stone-path'}, - [8] = {tile = 'concrete'}, - [9] = {tile = 'concrete'}, - [10] = {tile = 'concrete'}, - [11] = {tile = 'concrete'}, - [12] = {tile = 'stone-path'}, - [13] = {tile = 'stone-path'}, - [14] = {tile = 'concrete'}, - [15] = {entity = {name = 'electric-furnace', callback = 'factory'}, tile = 'concrete'}, - [16] = {tile = 'concrete'}, - [17] = {tile = 'concrete'}, - [18] = {tile = 'stone-path'}, - [19] = {tile = 'stone-path'}, - [20] = {tile = 'concrete'}, - [21] = {tile = 'concrete'}, - [22] = {tile = 'concrete'}, - [23] = {tile = 'concrete'}, - [24] = {tile = 'stone-path'}, - [25] = {tile = 'stone-path'}, - [26] = {tile = 'concrete'}, - [27] = {tile = 'concrete'}, - [28] = {tile = 'concrete'}, - [29] = {tile = 'concrete'}, - [30] = {tile = 'stone-path'}, - [31] = {tile = 'stone-path'}, - [32] = {tile = 'stone-path'}, - [33] = {tile = 'stone-path'}, - [34] = {tile = 'stone-path'}, - [35] = {tile = 'stone-path'}, - [36] = {tile = 'stone-path'} -} - + ob.extend_1_way( + base_factory[2], + { + factory = factory, + fallback = level2 + } +) local level4 = - ob.make_1_way { - force = 'neutral', - market = { - callback = ob.market_set_items_callback, - data = { - { - offer = {type = 'give-item', item = 'iron-plate', count = 100}, - name = 'coin', - price = 60, - distance_factor = 1 / 32, - min_price = 6 - }, - { - offer = {type = 'give-item', item = 'steel-plate', count = 100}, - name = 'coin', - price = 300, - distance_factor = 1 / 32, - min_price = 30 - } - } - }, - max_count = 1, - fallback = level3, - [1] = {tile = 'stone-path'}, - [2] = {tile = 'stone-path'}, - [3] = {tile = 'stone-path'}, - [4] = {tile = 'stone-path'}, - [5] = {tile = 'stone-path'}, - [6] = {tile = 'stone-path'}, - [7] = {tile = 'stone-path'}, - [8] = {tile = 'concrete'}, - [9] = {tile = 'concrete'}, - [10] = {tile = 'concrete'}, - [11] = {tile = 'concrete'}, - [12] = {tile = 'stone-path'}, - [13] = {tile = 'stone-path'}, - [14] = {tile = 'concrete'}, - [15] = {entity = {name = 'market', callback = 'market'}}, - [16] = {tile = 'concrete'}, - [17] = {tile = 'concrete'}, - [18] = {tile = 'stone-path'}, - [19] = {tile = 'stone-path'}, - [20] = {tile = 'concrete'}, - [21] = {tile = 'concrete'}, - [22] = {tile = 'concrete'}, - [23] = {tile = 'concrete'}, - [24] = {tile = 'stone-path'}, - [25] = {tile = 'stone-path'}, - [26] = {tile = 'concrete'}, - [27] = {tile = 'concrete'}, - [28] = {tile = 'concrete'}, - [29] = {tile = 'concrete'}, - [30] = {tile = 'stone-path'}, - [31] = {tile = 'stone-path'}, - [32] = {tile = 'stone-path'}, - [33] = {tile = 'stone-path'}, - [34] = {tile = 'stone-path'}, - [35] = {tile = 'stone-path'}, - [36] = {tile = 'stone-path'} -} - + ob.extend_1_way( + base_factory[3], + { + market = market, + fallback = level3 + } +) return { settings = { blocks = 6, diff --git a/map_gen/presets/crash_site/outpost_data/small_science_factory.lua b/map_gen/presets/crash_site/outpost_data/small_science_factory.lua new file mode 100644 index 00000000..64bad84a --- /dev/null +++ b/map_gen/presets/crash_site/outpost_data/small_science_factory.lua @@ -0,0 +1,100 @@ +local ob = require 'map_gen.presets.crash_site.outpost_builder' +local Token = require 'utils.global_token' + +local loot = { + {weight = 10}, + {stack = {name = 'coin', count = 500, distance_factor = 1 / 2}, weight = 5}, + {stack = {name = 'science-pack-1', count = 50, distance_factor = 1 / 10}, weight = 5}, + {stack = {name = 'science-pack-2', count = 25, distance_factor = 1 / 10}, weight = 5} +} + +local weights = ob.prepare_weighted_loot(loot) + +local loot_callback = + Token.register( + function(chest) + ob.do_random_loot(chest, weights, loot) + end +) + +local factory = { + callback = ob.magic_item_crafting_callback, + data = { + recipe = 'science-pack-1', + output = {min_rate = 0.1 / 60, distance_factor = 1 / 60 / 1000, item = 'science-pack-1'} + } +} + +local factory_b = { + callback = ob.magic_item_crafting_callback, + data = { + recipe = 'science-pack-2', + output = {min_rate = 0.1 / 60, distance_factor = 1 / 60 / 1000, item = 'science-pack-2'} + } +} + +local market = { + callback = ob.market_set_items_callback, + data = { + { + name = 'science-pack-1', + price = 10, + distance_factor = 0.005 / 32, + min_price = 1 + }, + { + name = 'science-pack-2', + price = 20, + distance_factor = 0.005 / 32, + min_price = 2 + }, + { + name = 'military-science-pack', + price = 40, + distance_factor = 0.005 / 32, + min_price = 4 + } + } +} + +local base_factory = require 'map_gen.presets.crash_site.outpost_data.small_factory' + +local level2 = ob.extend_1_way(base_factory[1], {loot = {callback = loot_callback}}) +local level3 = + ob.extend_1_way( + base_factory[2], + { + factory = factory, + fallback = level2 + } +) +local level3b = + ob.extend_1_way( + base_factory[2], + { + factory = factory_b, + fallback = level2 + } +) +local level4 = + ob.extend_1_way( + base_factory[3], + { + market = market, + fallback = level3 + } +) +return { + settings = { + blocks = 6, + variance = 3, + min_step = 2, + max_level = 2 + }, + walls = { + require 'map_gen.presets.crash_site.outpost_data.light_laser_turrets' + }, + bases = { + {level4, level3b, level2} + } +}