1
0
mirror of https://github.com/Refactorio/RedMew.git synced 2025-11-06 09:09:26 +02:00
This commit is contained in:
grilledham
2018-07-27 00:36:25 +01:00
parent 8a75b66908
commit 0bdef410f4
34 changed files with 2506 additions and 1076 deletions

View File

@@ -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

View File

@@ -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}

View File

@@ -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'}
}

View File

@@ -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}
}
}

View File

@@ -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
}
}
}

View File

@@ -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}
}
}

View File

@@ -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}
}
}

View File

@@ -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
}

View File

@@ -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 level3 =
ob.make_1_way {
force = 'neutral',
factory = {
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'}
}
},
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'}
}
local level4 =
ob.make_1_way {
force = 'neutral',
market = {
local 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
name = 'iron-gear-wheel',
price = 0.5,
distance_factor = 0.005 / 32,
min_price = 0.025
},
{
offer = {type = 'give-item', item = 'iron-plate', count = 100},
name = 'coin',
price = 80,
distance_factor = 1 / 32,
min_price = 4
name = 'iron-plate',
price = 0.4,
distance_factor = 0.005 / 32,
min_price = 0.02
},
{
offer = {type = 'give-item', item = 'steel-plate', count = 100},
name = 'coin',
price = 400,
distance_factor = 1 / 32,
min_price = 25
name = 'steel-plate',
price = 2,
distance_factor = 0.005 / 32,
min_price = 0.125
}
}
},
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 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
}
)
return {
settings = {
blocks = 9,

View File

@@ -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 level3 =
ob.make_1_way {
force = 'neutral',
factory = {
local factory = {
callback = ob.magic_item_crafting_callback,
data = {
furance_item = 'iron-ore',
furance_item = {name = 'iron-ore', count = 100},
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 level3b =
ob.extend_1_way(
level3,
{
factory = {
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(
base_factory[2],
{
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}
}
}

View File

@@ -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}
}
}

View File

@@ -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'},

View File

@@ -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'},

View File

@@ -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'}
}

View File

@@ -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'},

View File

@@ -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'},

View File

@@ -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}
}
}

View File

@@ -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
}
}
}

View File

@@ -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}
}
}

View File

@@ -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}
}
}

View File

@@ -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'},

View File

@@ -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
}

View File

@@ -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 level3 =
ob.make_1_way {
force = 'neutral',
factory = {
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'}
}
},
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'}
}
local level4 =
ob.make_1_way {
force = 'neutral',
market = {
local 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
name = 'iron-gear-wheel',
price = 0.5,
distance_factor = 0.005 / 32,
min_price = 0.05
},
{
offer = {type = 'give-item', item = 'iron-plate', count = 100},
name = 'coin',
price = 80,
distance_factor = 1 / 32,
min_price = 8
name = 'iron-plate',
price = 0.4,
distance_factor = 0.005 / 32,
min_price = 0.04
},
{
offer = {type = 'give-item', item = 'steel-plate', count = 100},
name = 'coin',
price = 400,
distance_factor = 1 / 32,
min_price = 40
name = 'steel-plate',
price = 2,
distance_factor = 0.005 / 32,
min_price = 0.2
}
}
},
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 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 level4 =
ob.extend_1_way(
base_factory[3],
{
market = market,
fallback = level3
}
)
return {
settings = {
blocks = 7,

View File

@@ -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 level3 =
ob.make_1_way {
force = 'neutral',
factory = {
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'}
}
},
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 level3b =
ob.extend_1_way(
level3,
{
factory = {
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(
base_factory[2],
{
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,

View File

@@ -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'},

View File

@@ -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}
}
}

View File

@@ -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}
}
}

View File

@@ -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
}
}
}

View File

@@ -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}
}
}

View File

@@ -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}
}
}

View File

@@ -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
}

View File

@@ -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 level3 =
ob.make_1_way {
force = 'neutral',
factory = {
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'}
}
},
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'}
}
local level4 =
ob.make_1_way {
force = 'neutral',
market = {
local 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
name = 'iron-gear-wheel',
price = 0.5,
distance_factor = 0.005 / 32,
min_price = 0.05
},
{
offer = {type = 'give-item', item = 'iron-plate', count = 100},
name = 'coin',
price = 80,
distance_factor = 1 / 32,
min_price = 8
name = 'iron-plate',
price = 0.4,
distance_factor = 0.005 / 32,
min_price = 0.04
},
{
offer = {type = 'give-item', item = 'steel-plate', count = 100},
name = 'coin',
price = 400,
distance_factor = 1 / 32,
min_price = 40
name = 'steel-plate',
price = 2,
distance_factor = 0.005 / 32,
min_price = 0.2
}
}
},
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'}
}
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 level4 =
ob.extend_1_way(
base_factory[3],
{
market = market,
fallback = level3
}
)
return {
settings = {
blocks = 6,

View File

@@ -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 level3 =
ob.make_1_way {
force = 'neutral',
factory = {
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'}
}
},
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'}
}
local level4 =
ob.make_1_way {
force = 'neutral',
market = {
local 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
name = 'iron-plate',
price = 0.3,
distance_factor = 0.005 / 32,
min_price = 0.03
},
{
offer = {type = 'give-item', item = 'steel-plate', count = 100},
name = 'coin',
price = 300,
distance_factor = 1 / 32,
min_price = 30
name = 'steel-plate',
price = 1.5,
distance_factor = 0.005 / 32,
min_price = 0.15
}
}
},
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'}
}
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,

View File

@@ -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}
}
}