1
0
mirror of https://github.com/Refactorio/RedMew.git synced 2025-03-05 15:05:57 +02:00

crashsite 0.3.0

This commit is contained in:
grilledham 2018-08-01 16:35:48 +01:00
parent c980b30787
commit 9fed3f725b
32 changed files with 1919 additions and 316 deletions

View File

@ -8,8 +8,8 @@ local Random = require 'map_gen.shared.random'
local OutpostBuilder = require 'map_gen.presets.crash_site.outpost_builder'
local Perlin = require 'map_gen.shared.perlin_noise'
local outpost_seed = 7000
local ore_seed = 9000
local outpost_seed = 20000
local ore_seed = 14000
local enemy_seed = 420420
local outpost_random = Random.new(outpost_seed, outpost_seed * 2)
@ -24,6 +24,10 @@ local small_copper_plate_factory = require 'map_gen.presets.crash_site.outpost_d
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_stone_factory = require 'map_gen.presets.crash_site.outpost_data.small_stone_factory'
local medium_stone_factory = require 'map_gen.presets.crash_site.outpost_data.medium_stone_factory'
local big_stone_factory = require 'map_gen.presets.crash_site.outpost_data.big_stone_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'
@ -32,14 +36,14 @@ local small_circuit_factory = require 'map_gen.presets.crash_site.outpost_data.s
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_weapon_factory = require 'map_gen.presets.crash_site.outpost_data.small_weapon_factory'
local medium_weapon_factory = require 'map_gen.presets.crash_site.outpost_data.medium_weapon_factory'
local big_weapon_factory = require 'map_gen.presets.crash_site.outpost_data.big_weapon_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'
@ -52,14 +56,18 @@ local small_chemical_factory = require 'map_gen.presets.crash_site.outpost_data.
local medium_chemical_factory = require 'map_gen.presets.crash_site.outpost_data.medium_chemical_factory'
local big_chemical_factory = require 'map_gen.presets.crash_site.outpost_data.big_chemical_factory'
--[[ local small_power_factory = require 'map_gen.presets.crash_site.outpost_data.small_power_factory'
local medium_power_factory = require 'map_gen.presets.crash_site.outpost_data.medium_power_factory'
local big_power_factory = require 'map_gen.presets.crash_site.outpost_data.big_power_factory' ]]
local stage1 = {
small_iron_plate_factory,
small_iron_plate_factory,
small_copper_plate_factory,
small_stone_factory,
small_gear_factory,
small_circuit_factory,
small_engine_factory,
small_ammo_factory,
small_weapon_factory,
small_science_factory,
small_oil_refinery,
small_chemical_factory
@ -68,10 +76,11 @@ local stage1 = {
local stage2 = {
medium_iron_plate_factory,
medium_copper_plate_factory,
medium_stone_factory,
medium_gear_factory,
medium_circuit_factory,
medium_engine_factory,
medium_ammo_factory,
medium_weapon_factory,
medium_science_factory,
medium_oil_refinery,
medium_chemical_factory
@ -80,10 +89,11 @@ local stage2 = {
local stage3 = {
big_iron_plate_factory,
big_copper_plate_factory,
big_stone_factory,
big_gear_factory,
big_circuit_factory,
big_engine_factory,
big_ammo_factory,
big_weapon_factory,
big_science_factory,
big_oil_refinery,
big_chemical_factory
@ -171,7 +181,7 @@ local start_stone_patch =
b.translate(start_patch, 32, 32),
'stone',
function()
return 600
return 900
end
)
local start_coal_patch =
@ -212,9 +222,11 @@ end
pattern[5][5] = start_outpost
local outpost_offset = 64
local grid_size = 200
local half_total_size = grid_size * 0.5 * 8
local outpost_offset = 59
local grid_block_size = 190
local grid_number_of_blocks = 10
local half_total_size = grid_block_size * 0.5 * 8
for r = 4, 7 do
local row = pattern[r]
@ -248,9 +260,9 @@ for r = 3, 8 do
end
end
for r = 1, 10 do
for r = 1, grid_number_of_blocks do
local row = pattern[r]
for c = 1, 10 do
for c = 1, grid_number_of_blocks do
if not row[c] then
local template = stage3_iter()
local shape = outpost_builder:do_outpost(template)
@ -264,9 +276,7 @@ for r = 1, 10 do
end
end
local outposts = b.grid_pattern(pattern, 10, 10, grid_size, grid_size)
local outposts = b.grid_pattern(pattern, 10, 10, grid_block_size, grid_block_size)
--outposts = b.if_else(outposts, b.full_shape)
local spawners = {
@ -280,8 +290,8 @@ local worms = {
'big-worm-turret'
}
local max_spawner_chance = 1 / 160
local spawner_chance_factor = 1 / (160 * 512)
local max_spawner_chance = 1 / 256
local spawner_chance_factor = 1 / (256 * 512)
local max_worm_chance = 1 / 32
local worm_chance_factor = 1 / (32 * 512)
@ -294,7 +304,7 @@ local function enemy(x, y, world)
--[[ if Perlin.noise(x * scale_factor, y * scale_factor, enemy_seed) < 0 then
return nil
end ]]
local spawner_chance = d - 144
local spawner_chance = d - 128
if spawner_chance > 0 then
spawner_chance = spawner_chance * spawner_chance_factor
@ -305,7 +315,7 @@ local function enemy(x, y, world)
end
end
local worm_chance = d - 144
local worm_chance = d - 128
if worm_chance > 0 then
worm_chance = worm_chance * worm_chance_factor
@ -461,9 +471,14 @@ spawn_shape = b.change_tile(spawn_shape, false, 'stone-path')
map = b.choose(b.rectangle(16, 16), spawn_shape, map)
--return outpost_builder:do_outpost(big_engine_factory)
local bounds = b.rectangle(grid_block_size * (grid_number_of_blocks - 1))
map = b.choose(bounds, map, b.empty_shape)
--return outpost_builder:do_outpost(small_power_factory)
--return b.full_shape
return map
--return spawn_shape
--return b.apply_entity(b.full_shape, ore_grid)
--/c game.player.character = nil

View File

@ -1,6 +1,7 @@
local Gui = require 'utils.gui'
local Event = require 'utils.event'
local Global = require 'utils.global'
local PlayerStats = require 'player_stats'
local Public = {}
@ -243,6 +244,7 @@ Gui.on_click(
else
player.remove_item {name = 'coin', count = cost}
do_coin_label(player, data.coin_label)
PlayerStats.change_coin_spent(player.index, cost)
end
end
end

View File

@ -4,6 +4,7 @@ local Global = require 'utils.global'
local Event = require 'utils.event'
local Task = require 'utils.Task'
local Market = require 'map_gen.presets.crash_site.market'
local PlayerStats = require 'player_stats'
local b = require 'map_gen.shared.builders'
@ -945,6 +946,22 @@ Public.power_source_callback =
end
)
Public.power_source_player_callback =
Token.register(
function(entity, data)
local power_source =
entity.surface.create_entity {name = 'hidden-electric-energy-interface', position = entity.position}
power_source.electric_buffer_size = data.buffer_size
power_source.power_production = data.power_production
power_sources[entity.unit_number] = power_source
entity.minable = false
entity.operable = false
entity.destructible = false
end
)
local function add_magic_crafter_output(entity, output, distance)
local rate = output.min_rate + output.distance_factor * distance
table.insert(
@ -1049,13 +1066,16 @@ Public.market_set_items_callback =
local market_data = {}
for i, item in ipairs(data) do
local price = item.price
local df = item.distance_factor or 0
local min_price = item.min_price or 1
local count = price - d * df
count = math.max(count, min_price)
local df = item.distance_factor
if df then
local min_price = item.min_price or 1
market_data[i] = {name = item.name, price = count}
price = item.price - d * df
price = math.max(price, min_price)
end
market_data[i] = {name = item.name, price = price}
end
Market.add_market(entity.position, market_data)
@ -1154,6 +1174,13 @@ function Public.do_random_fluid_loot(entity, weights, loot)
entity.fluidbox[1] = {name = stack.name, amount = count}
end
local function coin_mined(event)
local stack = event.item_stack
if stack.name == 'coin' then
PlayerStats.change_coin_earned(event.player_index, stack.count)
end
end
Event.add(defines.events.on_tick, tick)
Event.add(defines.events.on_entity_died, remove_power_source)
@ -1163,4 +1190,6 @@ Event.on_init(
end
)
Event.add(defines.events.on_player_mined_item, coin_mined)
return Public

View File

@ -3,14 +3,11 @@ local Token = require 'utils.global_token'
local loot = {
{weight = 10},
{stack = {name = 'coin', count = 250, distance_factor = 1 / 20}, weight = 5},
{stack = {name = 'uranium-rounds-magazine', count = 600, distance_factor = 1 / 2}, weight = 5},
{stack = {name = 'piercing-shotgun-shell', count = 600, distance_factor = 1 / 4}, weight = 1},
{stack = {name = 'coin', count = 500, distance_factor = 1 / 8}, weight = 5},
{stack = {name = 'uranium-rounds-magazine', count = 2000, distance_factor = 1}, weight = 5},
{stack = {name = 'cluster-grenade', count = 200, distance_factor = 1 / 8}, weight = 2},
{stack = {name = 'explosive-rocket', count = 200, distance_factor = 1 / 8}, weight = 5},
{stack = {name = 'explosive-cannon-shell', count = 200, distance_factor = 1 / 8}, weight = 5},
{stack = {name = 'explosive-uranium-cannon-shell', count = 200, distance_factor = 1 / 8}, weight = 2},
{stack = {name = 'destroyer-capsule', count = 100, distance_factor = 1 / 16}, weight = 2}
{stack = {name = 'explosive-uranium-cannon-shell', count = 200, distance_factor = 1 / 8}, weight = 2}
}
local weights = ob.prepare_weighted_loot(loot)
@ -26,23 +23,15 @@ local factory = {
callback = ob.magic_item_crafting_callback,
data = {
recipe = 'uranium-rounds-magazine',
output = {min_rate = 1 / 60, distance_factor = 1 / 60 / 512, item = 'uranium-rounds-magazine'}
output = {min_rate = 2 / 60, distance_factor = 2 / 60 / 512, item = 'uranium-rounds-magazine'}
}
}
local factory_b = {
callback = ob.magic_item_crafting_callback,
data = {
recipe = 'explosive-rocket',
output = {min_rate = 1 / 3 / 60, distance_factor = 1 / 3 / 60 / 512, item = 'explosive-rocket'}
}
}
local factory_c = {
callback = ob.magic_item_crafting_callback,
data = {
recipe = 'explosive-uranium-cannon-shell',
output = {min_rate = 1 / 3 / 60, distance_factor = 1 / 3 / 60 / 512, item = 'explosive-uranium-cannon-shell'}
output = {min_rate = 1 / 2 / 60, distance_factor = 1 / 2 / 60 / 512, item = 'explosive-uranium-cannon-shell'}
}
}
@ -51,39 +40,27 @@ local market = {
data = {
{
name = 'firearm-magazine',
price = 1,
distance_factor = 0.5 / 512,
price = 0.5,
distance_factor = 0.25 / 512,
min_price = 0.1
},
{
name = 'piercing-rounds-magazine',
price = 3,
distance_factor = 1.5 / 512,
min_price = 0.3
price = 1.5,
distance_factor = 0.75 / 512,
min_price = 0.15
},
{
name = 'uranium-rounds-magazine',
price = 9,
distance_factor = 4.5 / 512,
min_price = 0.9
},
{
name = 'shotgun-shell',
price = 2,
distance_factor = 1 / 512,
min_price = 0.2
},
{
name = 'piercing-shotgun-shell',
price = 6,
distance_factor = 3 / 512,
min_price = 0.6
price = 4.5,
distance_factor = 2.25 / 512,
min_price = 0.45
},
{
name = 'grenade',
price = 10,
distance_factor = 5 / 512,
min_price = 1
price = 5,
distance_factor = 2.5 / 512,
min_price = 0.5
},
{
name = 'land-mine',
@ -91,65 +68,29 @@ local market = {
distance_factor = 0.5 / 512,
min_price = 0.1
},
{
name = 'rocket',
price = 20,
distance_factor = 10 / 512,
min_price = 2
},
{
name = 'explosive-rocket',
price = 40,
distance_factor = 20 / 512,
min_price = 4
},
{
name = 'rocket-launcher',
price = 250,
distance_factor = 125 / 512,
min_price = 125
},
{
name = 'cluster-grenade',
price = 100,
distance_factor = 50 / 512,
min_price = 10
},
{
name = 'poison-capsule',
price = 60,
distance_factor = 30 / 512,
min_price = 6
},
{
name = 'slowdown-capsule',
price = 60,
distance_factor = 60 / 512,
min_price = 6
price = 50,
distance_factor = 25 / 512,
min_price = 5
},
{
name = 'cannon-shell',
price = 60,
distance_factor = 60 / 512,
min_price = 6
price = 15,
distance_factor = 7.5 / 512,
min_price = 1.5
},
{
name = 'explosive-cannon-shell',
price = 120,
distance_factor = 120 / 512,
min_price = 12
price = 30,
distance_factor = 15 / 512,
min_price = 3
},
{
name = 'explosive-uranium-cannon-shell',
price = 160,
distance_factor = 80 / 512,
min_price = 16
},
{
name = 'destroyer-capsule',
price = 80,
distance_factor = 40 / 512,
min_price = 8
price = 60,
distance_factor = 30 / 512,
min_price = 6
},
{
name = 'vehicle-machine-gun',
@ -187,21 +128,13 @@ local level3b =
max_count = 2
}
)
local level3c =
ob.extend_1_way(
base_factory[2],
{
factory = factory_c,
fallback = level3b,
max_count = 2
}
)
local level4 =
ob.extend_1_way(
base_factory[3],
{
market = market,
fallback = level3c
fallback = level3b
}
)

View File

@ -9,7 +9,9 @@ local loot = {
{stack = {name = 'plastic-bar', count = 1000, distance_factor = 1 / 2}, weight = 5},
{stack = {name = 'battery', count = 1200, distance_factor = 1 / 2}, weight = 5},
{stack = {name = 'explosives', count = 800, distance_factor = 1 / 2}, weight = 2},
{stack = {name = 'rocket-fuel', count = 30, distance_factor = 1 / 20}, weight = 1}
{stack = {name = 'rocket-fuel', count = 30, distance_factor = 1 / 20}, weight = 1},
{stack = {name = 'poison-capsule', count = 500, distance_factor = 1 / 4}, weight = 2},
{stack = {name = 'slowdown-capsule', count = 500, distance_factor = 1 / 4}, weight = 1}
}
local weights = ob.prepare_weighted_loot(loot)
@ -88,6 +90,18 @@ local market = {
price = 10,
distance_factor = 5 / 512,
min_price = 1
},
{
name = 'poison-capsule',
price = 15,
distance_factor = 7.5 / 512,
min_price = 1.5
},
{
name = 'slowdown-capsule',
price = 15,
distance_factor = 7.5 / 512,
min_price = 1.5
}
}
}

View File

@ -2,11 +2,18 @@ local ob = require 'map_gen.presets.crash_site.outpost_builder'
local Token = require 'utils.global_token'
local loot = {
{weight = 10},
{weight = 5},
{stack = {name = 'coin', count = 250, distance_factor = 1 / 20}, weight = 5},
{stack = {name = 'iron-plate', count = 2500, distance_factor = 1 / 2}, weight = 5},
{stack = {name = 'steel-plate', count = 1000, distance_factor = 1 / 5}, weight = 1},
{stack = {name = 'iron-gear-wheel', count = 4000, distance_factor = 1}, weight = 5}
{stack = {name = 'iron-plate', count = 2500, distance_factor = 1}, weight = 5},
{stack = {name = 'steel-plate', count = 1000, distance_factor = 1}, weight = 1},
{stack = {name = 'iron-gear-wheel', count = 4000, distance_factor = 2}, weight = 10},
{stack = {name = 'engine-unit', count = 800, distance_factor = 1 / 2}, weight = 5},
{stack = {name = 'electric-engine-unit', count = 400, distance_factor = 1 / 2}, weight = 5},
{stack = {name = 'rail', count = 2500, distance_factor = 1}, weight = 1},
{stack = {name = 'tank', count = 5, 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)
@ -22,7 +29,23 @@ local factory = {
callback = ob.magic_item_crafting_callback,
data = {
recipe = 'iron-gear-wheel',
output = {min_rate = 1 / 60, distance_factor = 1 / 60 / 512, item = 'iron-gear-wheel'}
output = {min_rate = 4 / 60, distance_factor = 4 / 60 / 512, item = 'iron-gear-wheel'}
}
}
local factory_b = {
callback = ob.magic_item_crafting_callback,
data = {
recipe = 'engine-unit',
output = {min_rate = 2 / 60, distance_factor = 2 / 60 / 512, item = 'engine-unit'}
}
}
local factory_c = {
callback = ob.magic_item_crafting_callback,
data = {
recipe = 'electric-engine-unit',
output = {min_rate = 2 / 60, distance_factor = 2 / 60 / 512, item = 'electric-engine-unit'}
}
}
@ -46,6 +69,54 @@ local market = {
price = 2,
distance_factor = 1 / 512,
min_price = 0.2
},
{
name = 'engine-unit',
price = 4,
distance_factor = 2 / 512,
min_price = 0.4
},
{
name = 'electric-engine-unit',
price = 8,
distance_factor = 4 / 512,
min_price = 0.8
},
{
name = 'car',
price = 50,
distance_factor = 25 / 512,
min_price = 40
},
{
name = 'rail',
price = 1,
distance_factor = 0.5 / 512,
min_price = 0.1
},
{
name = 'tank',
price = 250,
distance_factor = 125 / 512,
min_price = 25
},
{
name = 'locomotive',
price = 100,
distance_factor = 50 / 512,
min_price = 10
},
{
name = 'cargo-wagon',
price = 20,
distance_factor = 10 / 512,
min_price = 2
},
{
name = 'fluid-wagon',
price = 40,
distance_factor = 20 / 512,
min_price = 4
}
}
}
@ -58,7 +129,26 @@ local level3 =
base_factory[2],
{
factory = factory,
fallback = level2
fallback = level2,
max_count = 4
}
)
local level3b =
ob.extend_1_way(
base_factory[2],
{
factory = factory_b,
fallback = level2,
max_count = 2
}
)
local level3c =
ob.extend_1_way(
base_factory[2],
{
factory = factory_c,
fallback = level3b,
max_count = 2
}
)
local level4 =
@ -66,7 +156,7 @@ local level4 =
base_factory[3],
{
market = market,
fallback = level3
fallback = level3c
}
)
return {
@ -80,6 +170,6 @@ return {
require 'map_gen.presets.crash_site.outpost_data.heavy_gun_turrets'
},
bases = {
{level4, level2}
{level4, level3, level2}
}
}

View File

@ -25,7 +25,7 @@ local factory = {
callback = ob.magic_item_crafting_callback,
data = {
recipe = 'production-science-pack',
output = {min_rate = 0.05 / 60, distance_factor = 0.05 / 60 / 512, item = 'production-science-pack'}
output = {min_rate = 0.25 / 60, distance_factor = 0.25 / 60 / 512, item = 'production-science-pack'}
}
}
@ -33,7 +33,7 @@ local factory_b = {
callback = ob.magic_item_crafting_callback,
data = {
recipe = 'high-tech-science-pack',
output = {min_rate = 0.05 / 60, distance_factor = 0.05 / 60 / 512, item = 'high-tech-science-pack'}
output = {min_rate = 0.25 / 60, distance_factor = 0.25 / 60 / 512, item = 'high-tech-science-pack'}
}
}

View File

@ -0,0 +1,134 @@
local ob = require 'map_gen.presets.crash_site.outpost_builder'
local Token = require 'utils.global_token'
local loot = {
{weight = 5},
{stack = {name = 'coin', count = 250, distance_factor = 1 / 20}, weight = 5},
{stack = {name = 'stone', count = 1600}, weight = 8},
{stack = {name = 'stone-brick', count = 2000, distance_factor = 1 / 2}, weight = 5},
{stack = {name = 'concrete', count = 2000, distance_factor = 1 / 2}, weight = 5},
{stack = {name = 'refined-concrete', count = 4000, distance_factor = 1 / 2}, weight = 10},
{stack = {name = 'stone-wall', count = 1000, distance_factor = 1 / 5}, weight = 5},
{stack = {name = 'gate', count = 250, distance_factor = 1 / 5}, 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 = {
furance_item = 'stone',
output = {min_rate = 2 / 60, distance_factor = 2 / 60 / 512, item = 'stone-brick'}
}
}
local factory_b = {
callback = ob.magic_item_crafting_callback,
data = {
recipe = 'refined-concrete',
output = {min_rate = 2 / 60, distance_factor = 2 / 60 / 512, item = 'refined-concrete'}
}
}
local factory_c = {
callback = ob.magic_item_crafting_callback,
data = {
recipe = 'electric-engine-unit',
output = {min_rate = 2 / 60, distance_factor = 2 / 60 / 512, item = 'electric-engine-unit'}
}
}
local market = {
callback = ob.market_set_items_callback,
data = {
{
name = 'stone',
price = 0.25,
distance_factor = 0.125 / 512,
min_price = 0.025
},
{
name = 'stone-brick',
price = 0.5,
distance_factor = 0.25 / 512,
min_price = 0.05
},
{
name = 'concrete',
price = 0.5,
distance_factor = 0.25 / 512,
min_price = 0.05
},
{
name = 'refined-concrete',
price = 1,
distance_factor = 0.5 / 512,
min_price = 0.1
},
{
name = 'stone-wall',
price = 1,
distance_factor = 0.5 / 512,
min_price = 0.1
},
{
name = 'gate',
price = 2,
distance_factor = 1 / 512,
min_price = 0.2
}
}
}
local base_factory = require 'map_gen.presets.crash_site.outpost_data.big_furance'
local base_factory2 = 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,
max_count = 1
}
)
local level3b =
ob.extend_1_way(
base_factory2[2],
{
factory = factory_b,
fallback = level3,
max_count = 2
}
)
local level4 =
ob.extend_1_way(
base_factory[3],
{
market = market,
fallback = level3b
}
)
return {
settings = {
blocks = 9,
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.walls'
},
bases = {
{level4, level2}
}
}

View File

@ -0,0 +1,278 @@
local ob = require 'map_gen.presets.crash_site.outpost_builder'
local Token = require 'utils.global_token'
local loot = {
{weight = 3},
{stack = {name = 'coin', count = 500, distance_factor = 1 / 8}, weight = 3},
{stack = {name = 'raw-fish', count = 1000, distance_factor = 1}, weight = 1},
{stack = {name = 'explosive-rocket', count = 1000, distance_factor = 1}, weight = 1},
{stack = {name = 'laser-turret', count = 500, distance_factor = 1 / 8}, weight = 1},
{stack = {name = 'cluster-grenade', count = 1000, distance_factor = 1}, weight = 1},
{stack = {name = 'destroyer-capsule', count = 250, distance_factor = 1 / 8}, weight = 1},
{stack = {name = 'power-armor-mk2', count = 5, distance_factor = 1 / 128}, weight = 1},
{stack = {name = 'fusion-reactor-equipment', count = 25, distance_factor = 1 / 128}, weight = 1},
{stack = {name = 'battery-mk2-equipment', count = 25, distance_factor = 1 / 128}, weight = 1},
{stack = {name = 'energy-shield-mk2-equipment', count = 10, distance_factor = 1 / 64}, weight = 1},
{stack = {name = 'exoskeleton-equipment', count = 10, distance_factor = 1 / 64}, weight = 1},
{stack = {name = 'personal-laser-defense-equipment', count = 10, distance_factor = 1 / 64}, 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 = 'destroyer-capsule',
output = {min_rate = 0.5 / 60, distance_factor = 0.5 / 60 / 512, item = 'destroyer-capsule'}
}
}
local factory_b = {
callback = ob.magic_item_crafting_callback,
data = {
recipe = 'laser-turret',
output = {min_rate = 0.2 / 60, distance_factor = 0.2 / 60 / 512, item = 'laser-turret'}
}
}
local market = {
callback = ob.market_set_items_callback,
data = {
{
name = 'raw-fish',
price = 1,
distance_factor = 0.5 / 512,
min_price = 0.1
},
{
name = 'combat-shotgun',
price = 125,
distance_factor = 62.5 / 512,
min_price = 62.5
},
{
name = 'shotgun-shell',
price = 1,
distance_factor = 0.5 / 512,
min_price = 0.1
},
{
name = 'piercing-shotgun-shell',
price = 3,
distance_factor = 1.5 / 512,
min_price = 0.3
},
{
name = 'flamethrower',
price = 175,
distance_factor = 87.5 / 512,
min_price = 87.5
},
{
name = 'flamethrower-ammo',
price = 7.5,
distance_factor = 3.75 / 512,
min_price = 0.75
},
{
name = 'rocket-launcher',
price = 250,
distance_factor = 125 / 512,
min_price = 125
},
{
name = 'rocket',
price = 10,
distance_factor = 5 / 512,
min_price = 1
},
{
name = 'explosive-rocket',
price = 20,
distance_factor = 10 / 512,
min_price = 2
},
{
name = 'grenade',
price = 5,
distance_factor = 5 / 512,
min_price = 0.5
},
{
name = 'cluster-grenade',
price = 50,
distance_factor = 25 / 512,
min_price = 5
},
{
name = 'destroyer-capsule',
price = 50,
distance_factor = 25 / 512,
min_price = 5
},
{
name = 'modular-armor',
price = 175
},
{
name = 'power-armor',
price = 500,
distance_factor = 250 / 512,
min_price = 250
},
{
name = 'power-armor-mk2',
price = 1000,
distance_factor = 500 / 512,
min_price = 250
},
{
name = 'solar-panel-equipment',
price = 10,
distance_factor = 5 / 512,
min_price = 1
},
{
name = 'fusion-reactor-equipment',
price = 250,
distance_factor = 125 / 512,
min_price = 75
},
{
name = 'battery-equipment',
price = 10,
distance_factor = 5 / 512,
min_price = 1
},
{
name = 'battery-mk2-equipment',
price = 50,
distance_factor = 25 / 512,
min_price = 5
},
{
name = 'energy-shield-equipment',
price = 10,
distance_factor = 5 / 512,
min_price = 1
},
{
name = 'energy-shield-mk2-equipment',
price = 50,
distance_factor = 25 / 512,
min_price = 5
},
{
name = 'exoskeleton-equipment',
price = 50,
distance_factor = 25 / 512,
min_price = 5
},
{
name = 'night-vision-equipment',
price = 10,
distance_factor = 5 / 512,
min_price = 1
},
{
name = 'personal-laser-defense-equipment',
price = 100,
distance_factor = 50 / 512,
min_price = 10
},
{
name = 'vehicle-machine-gun',
price = 1000
},
{
name = 'tank-cannon',
price = 500
},
{
name = 'artillery-wagon-cannon',
price = 2000
},
{
name = 'gun-turret',
price = 10,
distance_factor = 5 / 512,
min_price = 1
},
{
name = 'flamethrower-turret',
price = 20,
distance_factor = 10 / 512,
min_price = 2
},
{
name = 'laser-turret',
price = 30,
distance_factor = 15 / 512,
min_price = 3
}
}
}
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 = 3
}
)
local level3b =
ob.extend_1_way(
base_factory[2],
{
factory = factory_b,
fallback = level3,
max_count = 3
}
)
local level4 =
ob.extend_1_way(
base_factory[3],
{
market = market,
fallback = level3b
}
)
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

@ -3,20 +3,14 @@ local Token = require 'utils.global_token'
local loot = {
{weight = 10},
{stack = {name = 'coin', count = 75, distance_factor = 1 / 20}, 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 = 'coin', count = 150, distance_factor = 1 / 8}, weight = 5},
{stack = {name = 'piercing-rounds-magazine', count = 500, distance_factor = 1}, weight = 5},
{stack = {name = 'uranium-rounds-magazine', count = 250, distance_factor = 1 / 2}, weight = 5},
{stack = {name = 'grenade', count = 200, 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}
{stack = {name = 'cluster-grenade', count = 100, distance_factor = 1 / 32}, weight = 1}
}
local weights = ob.prepare_weighted_loot(loot)
@ -32,7 +26,7 @@ local factory = {
callback = ob.magic_item_crafting_callback,
data = {
recipe = 'piercing-rounds-magazine',
output = {min_rate = 1 / 60, distance_factor = 1 / 60 / 512, item = 'piercing-rounds-magazine'}
output = {min_rate = 1.5 / 60, distance_factor = 1.5 / 60 / 512, item = 'piercing-rounds-magazine'}
}
}
@ -40,7 +34,7 @@ local factory_b = {
callback = ob.magic_item_crafting_callback,
data = {
recipe = 'cannon-shell',
output = {min_rate = 1 / 3 / 60, distance_factor = 1 / 60 / 512, item = 'cannon-shell'}
output = {min_rate = 1 / 2 / 60, distance_factor = 1 / 2 / 60 / 512, item = 'cannon-shell'}
}
}
@ -48,7 +42,7 @@ local factory_c = {
callback = ob.magic_item_crafting_callback,
data = {
recipe = 'uranium-rounds-magazine',
output = {min_rate = 1 / 3 / 60, distance_factor = 1 / 3 / 60 / 512, item = 'uranium-rounds-magazine'}
output = {min_rate = 1 / 2 / 60, distance_factor = 1 / 2 / 60 / 512, item = 'uranium-rounds-magazine'}
}
}
@ -73,18 +67,6 @@ local market = {
distance_factor = 4.5 / 512,
min_price = 0.9
},
{
name = 'shotgun-shell',
price = 2,
distance_factor = 1 / 512,
min_price = 0.2
},
{
name = 'piercing-shotgun-shell',
price = 6,
distance_factor = 3 / 512,
min_price = 0.6
},
{
name = 'grenade',
price = 10,
@ -97,59 +79,23 @@ local market = {
distance_factor = 0.5 / 512,
min_price = 0.1
},
{
name = 'rocket',
price = 20,
distance_factor = 10 / 512,
min_price = 2
},
{
name = 'explosive-rocket',
price = 40,
distance_factor = 20 / 512,
min_price = 4
},
{
name = 'rocket-launcher',
price = 250,
distance_factor = 125 / 512,
min_price = 125
},
{
name = 'cluster-grenade',
price = 100,
distance_factor = 50 / 512,
min_price = 10
},
{
name = 'poison-capsule',
price = 60,
distance_factor = 30 / 512,
min_price = 6
},
{
name = 'slowdown-capsule',
price = 60,
distance_factor = 30 / 512,
min_price = 6
},
{
name = 'cannon-shell',
price = 60,
distance_factor = 30 / 512,
min_price = 6
price = 15,
distance_factor = 7.5 / 512,
min_price = 1.5
},
{
name = 'explosive-cannon-shell',
price = 120,
distance_factor = 60 / 512,
min_price = 12
},
{
name = 'destroyer-capsule',
price = 80,
distance_factor = 40 / 512,
min_price = 8
price = 30,
distance_factor = 15 / 512,
min_price = 3
}
}
}
@ -162,7 +108,8 @@ local level3 =
base_factory[2],
{
factory = factory,
fallback = level2
fallback = level2,
max_count = 4
}
)
local level3b =
@ -179,8 +126,8 @@ local level3c =
base_factory[2],
{
factory = factory_c,
fallback = level3b,
max_count = 1
fallback = level3,
max_count = 2
}
)
local level4 =
@ -204,6 +151,6 @@ return {
require 'map_gen.presets.crash_site.outpost_data.heavy_flame_turrets'
},
bases = {
{level4, level2}
{level4, level3b, level2}
}
}

View File

@ -8,7 +8,9 @@ local loot = {
{stack = {name = 'sulfur', count = 500, distance_factor = 1 / 2}, weight = 3},
{stack = {name = 'plastic-bar', count = 500, distance_factor = 1 / 2}, weight = 3},
{stack = {name = 'battery', count = 600, distance_factor = 1 / 2}, weight = 5},
{stack = {name = 'explosives', count = 400, distance_factor = 1 / 2}, weight = 5}
{stack = {name = 'explosives', count = 400, distance_factor = 1 / 2}, weight = 5},
{stack = {name = 'poison-capsule', count = 100, distance_factor = 1 / 16}, weight = 2},
{stack = {name = 'slowdown-capsule', count = 100, distance_factor = 1 / 16}, weight = 1}
}
local weights = ob.prepare_weighted_loot(loot)
@ -74,7 +76,19 @@ local market = {
price = 3,
distance_factor = 1.5 / 512,
min_price = 0.3
}
},
{
name = 'poison-capsule',
price = 30,
distance_factor = 15 / 512,
min_price = 3
},
{
name = 'slowdown-capsule',
price = 30,
distance_factor = 15 / 512,
min_price = 3
},
}
}

View File

@ -2,11 +2,18 @@ local ob = require 'map_gen.presets.crash_site.outpost_builder'
local Token = require 'utils.global_token'
local loot = {
{weight = 10},
{weight = 5},
{stack = {name = 'coin', count = 75, distance_factor = 1 / 20}, weight = 5},
{stack = {name = 'iron-plate', count = 750, distance_factor = 1 / 2}, weight = 5},
{stack = {name = 'steel-plate', count = 200, distance_factor = 1 / 5}, weight = 1},
{stack = {name = 'iron-gear-wheel', count = 1500, distance_factor = 1}, weight = 5}
{stack = {name = 'iron-plate', count = 1000, distance_factor = 1}, weight = 5},
{stack = {name = 'steel-plate', count = 500, distance_factor = 1 / 2}, weight = 1},
{stack = {name = 'iron-gear-wheel', count = 1500, distance_factor = 1}, weight = 10},
{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)
@ -22,7 +29,23 @@ local factory = {
callback = ob.magic_item_crafting_callback,
data = {
recipe = 'iron-gear-wheel',
output = {min_rate = 1 / 60, distance_factor = 1 / 60 / 512, item = 'iron-gear-wheel'}
output = {min_rate = 2 / 60, distance_factor = 2 / 60 / 512, item = 'iron-gear-wheel'}
}
}
local factory_b = {
callback = ob.magic_item_crafting_callback,
data = {
recipe = 'engine-unit',
output = {min_rate = 1 / 60, distance_factor = 1 / 60 / 512, item = 'engine-unit'}
}
}
local factory_c = {
callback = ob.magic_item_crafting_callback,
data = {
recipe = 'electric-engine-unit',
output = {min_rate = 1 / 60, distance_factor = 1 / 60 / 512, item = 'electric-engine-unit'}
}
}
@ -46,6 +69,54 @@ local market = {
price = 2,
distance_factor = 1 / 512,
min_price = 0.2
},
{
name = 'engine-unit',
price = 4,
distance_factor = 2 / 512,
min_price = 0.4
},
{
name = 'electric-engine-unit',
price = 8,
distance_factor = 4 / 512,
min_price = 0.8
},
{
name = 'car',
price = 50,
distance_factor = 25 / 512,
min_price = 40
},
{
name = 'tank',
price = 250,
distance_factor = 125 / 512,
min_price = 25
},
{
name = 'locomotive',
price = 100,
distance_factor = 50 / 512,
min_price = 40
},
{
name = 'cargo-wagon',
price = 20,
distance_factor = 10 / 512,
min_price = 10
},
{
name = 'fluid-wagon',
price = 40,
distance_factor = 20 / 512,
min_price = 20
},
{
name = 'rail',
price = 1,
distance_factor = 0.5 / 512,
min_price = 0.1
}
}
}
@ -58,7 +129,27 @@ local level3 =
base_factory[2],
{
factory = factory,
fallback = level2
fallback = level2,
max_count = 2
}
)
local level3b =
ob.extend_1_way(
base_factory[2],
{
factory = factory_b,
fallback = level2,
max_count = 2
}
)
local level3c =
ob.extend_1_way(
base_factory[2],
{
factory = factory_c,
fallback = level3b,
max_count = 2
}
)
local level4 =
@ -66,7 +157,7 @@ local level4 =
base_factory[3],
{
market = market,
fallback = level3
fallback = level3c
}
)
return {
@ -80,6 +171,6 @@ return {
require 'map_gen.presets.crash_site.outpost_data.medium_gun_turrets'
},
bases = {
{level4, level2}
{level4, level3, level2}
}
}

View File

@ -23,7 +23,7 @@ local factory = {
callback = ob.magic_item_crafting_callback,
data = {
recipe = 'military-science-pack',
output = {min_rate = 0.05 / 60, distance_factor = 0.05 / 60 / 512, item = 'military-science-pack'}
output = {min_rate = 0.25 / 60, distance_factor = 0.25 / 60 / 512, item = 'military-science-pack'}
}
}
@ -31,7 +31,7 @@ local factory_b = {
callback = ob.magic_item_crafting_callback,
data = {
recipe = 'science-pack-3',
output = {min_rate = 0.05 / 60, distance_factor = 0.05 / 60 / 512, item = 'science-pack-3'}
output = {min_rate = 0.25 / 60, distance_factor = 0.25 / 60 / 512, item = 'science-pack-3'}
}
}

View File

@ -0,0 +1,120 @@
local ob = require 'map_gen.presets.crash_site.outpost_builder'
local Token = require 'utils.global_token'
local loot = {
{weight = 5},
{stack = {name = 'coin', count = 75, distance_factor = 1 / 20}, weight = 5},
{stack = {name = 'stone', count = 1600}, weight = 8},
{stack = {name = 'stone-brick', count = 1000, distance_factor = 1 / 2}, weight = 10},
{stack = {name = 'concrete', count = 1000, distance_factor = 1 / 2}, weight = 10},
{stack = {name = 'stone-wall', count = 500, distance_factor = 1 / 5}, weight = 5},
{stack = {name = 'gate', count = 100, distance_factor = 1 / 5}, 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 = {
furance_item = 'stone',
output = {min_rate = 2 / 60, distance_factor = 2 / 60 / 512, item = 'stone-brick'}
}
}
local factory_b = {
callback = ob.magic_item_crafting_callback,
data = {
recipe = 'concrete',
output = {min_rate = 2 / 60, distance_factor = 2 / 60 / 512, item = 'concrete'}
}
}
local market = {
callback = ob.market_set_items_callback,
data = {
{
name = 'stone',
price = 0.25,
distance_factor = 0.125 / 512,
min_price = 0.025
},
{
name = 'stone-brick',
price = 0.5,
distance_factor = 0.25 / 512,
min_price = 0.05
},
{
name = 'concrete',
price = 0.5,
distance_factor = 0.25 / 512,
min_price = 0.05
},
{
name = 'stone-wall',
price = 1,
distance_factor = 0.5 / 512,
min_price = 0.1
},
{
name = 'gate',
price = 2,
distance_factor = 1 / 512,
min_price = 0.2
}
}
}
local base_factory = require 'map_gen.presets.crash_site.outpost_data.medium_furance'
local base_factory2 = 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,
max_count = 1
}
)
local level3b =
ob.extend_1_way(
base_factory2[2],
{
factory = factory_b,
fallback = level3,
max_count = 2
}
)
local level4 =
ob.extend_1_way(
base_factory[3],
{
market = market,
fallback = level3b
}
)
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.walls'
},
bases = {
{level4, level2}
}
}

View File

@ -0,0 +1,254 @@
local ob = require 'map_gen.presets.crash_site.outpost_builder'
local Token = require 'utils.global_token'
local loot = {
{weight = 5},
{stack = {name = 'coin', count = 150, distance_factor = 1 / 8}, weight = 3},
{stack = {name = 'raw-fish', count = 100, distance_factor = 1 / 8}, weight = 1},
{stack = {name = 'piercing-shotgun-shell', count = 500, distance_factor = 1 / 8}, weight = 1},
{stack = {name = 'flamethrower-ammo', count = 250, distance_factor = 1 / 8}, weight = 1},
{stack = {name = 'rocket', count = 200, distance_factor = 1 / 8}, weight = 1},
{stack = {name = 'explosive-rocket', count = 200, distance_factor = 1 / 8}, weight = 1},
{stack = {name = 'gun-turret', count = 250, distance_factor = 1 / 16}, weight = 1},
{stack = {name = 'flamethrower-turret', count = 250, distance_factor = 1 / 16}, weight = 1},
{stack = {name = 'cluster-grenade', count = 100, distance_factor = 1 / 32}, weight = 1},
{stack = {name = 'power-armor', count = 5, distance_factor = 1 / 128}, weight = 1},
{stack = {name = 'solar-panel-equipment', count = 25, distance_factor = 1 / 32}, weight = 1},
{stack = {name = 'fusion-reactor-equipment', count = 5, distance_factor = 1 / 128}, weight = 1},
{stack = {name = 'battery-equipment', count = 25, distance_factor = 1 / 128}, weight = 1},
{stack = {name = 'battery-mk2-equipment', count = 5, distance_factor = 1 / 128}, weight = 1},
{stack = {name = 'energy-shield-equipment', count = 50, distance_factor = 1 / 64}, weight = 1},
{stack = {name = 'energy-shield-mk2-equipment', count = 10, distance_factor = 1 / 64}, weight = 1},
{stack = {name = 'exoskeleton-equipment', count = 10, distance_factor = 1 / 64}, weight = 1},
{stack = {name = 'night-vision-equipment', count = 5, distance_factor = 1 / 64}, 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 = 'explosive-rocket',
output = {min_rate = 0.5 / 60, distance_factor = 0.5 / 60 / 512, item = 'explosive-rocket'}
}
}
local factory_b = {
callback = ob.magic_item_crafting_callback,
data = {
recipe = 'cluster-grenade',
output = {min_rate = 0.2 / 60, distance_factor = 0.2 / 60 / 512, item = 'cluster-grenade'}
}
}
local factory_c = {
callback = ob.magic_item_crafting_callback,
data = {
recipe = 'flamethrower-turret',
output = {min_rate = 0.2 / 60, distance_factor = 0.2 / 60 / 512, item = 'flamethrower-turret'}
}
}
local market = {
callback = ob.market_set_items_callback,
data = {
{
name = 'raw-fish',
price = 1,
distance_factor = 0.5 / 512,
min_price = 0.1
},
{
name = 'combat-shotgun',
price = 125,
distance_factor = 62.5 / 512,
min_price = 62.5
},
{
name = 'shotgun-shell',
price = 1,
distance_factor = 0.5 / 512,
min_price = 0.1
},
{
name = 'piercing-shotgun-shell',
price = 3,
distance_factor = 1.5 / 512,
min_price = 0.3
},
{
name = 'flamethrower',
price = 175,
distance_factor = 87.5 / 512,
min_price = 87.5
},
{
name = 'flamethrower-ammo',
price = 7.5,
distance_factor = 3.75 / 512,
min_price = 0.75
},
{
name = 'rocket-launcher',
price = 250,
distance_factor = 125 / 512,
min_price = 125
},
{
name = 'rocket',
price = 10,
distance_factor = 5 / 512,
min_price = 1
},
{
name = 'explosive-rocket',
price = 20,
distance_factor = 10 / 512,
min_price = 2
},
{
name = 'grenade',
price = 5,
distance_factor = 5 / 512,
min_price = 0.5
},
{
name = 'cluster-grenade',
price = 50,
distance_factor = 25 / 512,
min_price = 5
},
{
name = 'modular-armor',
price = 175
},
{
name = 'power-armor',
price = 500,
distance_factor = 250 / 512,
min_price = 250
},
{
name = 'solar-panel-equipment',
price = 75,
distance_factor = 37.5 / 512,
min_price = 7.5
},
{
name = 'fusion-reactor-equipment',
price = 625,
distance_factor = 312.5 / 512,
min_price = 312.5
},
{
name = 'battery-equipment',
price = 50,
distance_factor = 25 / 512,
min_price = 5
},
{
name = 'battery-mk2-equipment',
price = 250,
distance_factor = 125 / 512,
min_price = 125
},
{
name = 'energy-shield-equipment',
price = 50,
distance_factor = 37.5 / 512,
min_price = 15
},
{
name = 'energy-shield-mk2-equipment',
price = 100,
distance_factor = 50 / 512,
min_price = 25
},
{
name = 'exoskeleton-equipment',
price = 100,
distance_factor = 50 / 512,
min_price = 10
},
{
name = 'night-vision-equipment',
price = 50,
distance_factor = 25 / 512,
min_price = 5
},
{
name = 'gun-turret',
price = 20,
distance_factor = 10 / 512,
min_price = 2
},
{
name = 'flamethrower-turret',
price = 50,
distance_factor = 25 / 512,
min_price = 5
}
}
}
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 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 = 2
}
)
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, level3b, level2}
}
}

View File

@ -0,0 +1,41 @@
local ob = require 'map_gen.presets.crash_site.outpost_builder'
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] = {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 = 'nuclear-reactor', callback = 'power'}, 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'}
}

View File

@ -3,16 +3,15 @@ local Token = require 'utils.global_token'
local loot = {
{weight = 10},
{stack = {name = 'coin', count = 50, distance_factor = 1 / 20}, weight = 5},
{stack = {name = 'coin', count = 100, distance_factor = 1 / 8}, 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 = 'piercing-rounds-magazine', count = 250, distance_factor = 1 / 2}, weight = 5},
{stack = {name = 'shotgun-shell', count = 200, distance_factor = 1 / 4}, weight = 1},
{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 = 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}
{stack = {name = 'cluster-grenade', count = 10, distance_factor = 1 / 32}, weight = 1}
}
local weights = ob.prepare_weighted_loot(loot)
@ -36,15 +35,7 @@ local factory_b = {
callback = ob.magic_item_crafting_callback,
data = {
recipe = 'piercing-rounds-magazine',
output = {min_rate = 1 / 3 / 60, distance_factor = 1 / 3 / 60 / 512, 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 / 3 / 60 / 512, item = 'grenade'}
output = {min_rate = 1 / 2 / 60, distance_factor = 1 / 2 / 60 / 512, item = 'piercing-rounds-magazine'}
}
}
@ -81,29 +72,11 @@ local market = {
distance_factor = 0.5 / 512,
min_price = 0.1
},
{
name = 'rocket',
price = 20,
distance_factor = 10 / 512,
min_price = 2
},
{
name = 'rocket-launcher',
price = 250,
distance_factor = 125 / 512,
min_price = 125
},
{
name = 'cluster-grenade',
price = 100,
distance_factor = 50 / 512,
min_price = 10
},
{
name = 'poison-capsule',
price = 60,
distance_factor = 30 / 512,
min_price = 6
}
}
}
@ -128,21 +101,13 @@ local level3b =
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
fallback = level3b
}
)
return {

View File

@ -6,7 +6,9 @@ local loot = {
{stack = {name = 'coin', count = 50, distance_factor = 1 / 20}, weight = 5},
{stack = {name = 'coal', count = 1000, distance_factor = 1}, weight = 2},
{stack = {name = 'sulfur', count = 500, distance_factor = 1 / 2}, weight = 5},
{stack = {name = 'plastic-bar', count = 500, distance_factor = 1 / 2}, weight = 5}
{stack = {name = 'plastic-bar', count = 500, distance_factor = 1 / 2}, weight = 5},
{stack = {name = 'poison-capsule', count = 50, distance_factor = 1 / 32}, weight = 2},
{stack = {name = 'slowdown-capsule', count = 50, distance_factor = 1 / 32}, weight = 1}
}
local weights = ob.prepare_weighted_loot(loot)
@ -60,7 +62,19 @@ local market = {
price = 1,
distance_factor = 0.5 / 512,
min_price = 0.1
}
},
{
name = 'poison-capsule',
price = 30,
distance_factor = 15 / 512,
min_price = 3
},
{
name = 'slowdown-capsule',
price = 30,
distance_factor = 15 / 512,
min_price = 3
},
}
}

View File

@ -6,7 +6,12 @@ local loot = {
{stack = {name = 'coin', count = 50, distance_factor = 1 / 20}, weight = 5},
{stack = {name = 'iron-plate', count = 500, distance_factor = 1 / 2}, weight = 5},
{stack = {name = 'steel-plate', count = 100, distance_factor = 1 / 5}, weight = 1},
{stack = {name = 'iron-gear-wheel', count = 1000, distance_factor = 1}, weight = 5}
{stack = {name = 'iron-gear-wheel', count = 1000, distance_factor = 1}, weight = 5},
{stack = {name = 'pipe', count = 200, distance_factor = 1}, weight = 1},
{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)
@ -26,6 +31,14 @@ local factory = {
}
}
local factory_b = {
callback = ob.magic_item_crafting_callback,
data = {
recipe = 'engine-unit',
output = {min_rate = 0.5 / 60, distance_factor = 0.5 / 60 / 512, item = 'engine-unit'}
}
}
local market = {
callback = ob.market_set_items_callback,
data = {
@ -46,6 +59,36 @@ local market = {
price = 2,
distance_factor = 1 / 512,
min_price = 0.2
},
{
name = 'engine-unit',
price = 4,
distance_factor = 2 / 512,
min_price = 0.4
},
{
name = 'electric-engine-unit',
price = 8,
distance_factor = 4 / 512,
min_price = 0.8
},
{
name = 'car',
price = 50,
distance_factor = 25 / 512,
min_price = 40
},
{
name = 'tank',
price = 500,
distance_factor = 250 / 512,
min_price = 250
},
{
name = 'rail',
price = 1,
distance_factor = 0.5 / 512,
min_price = 0.1
}
}
}
@ -61,12 +104,21 @@ local level3 =
fallback = level2
}
)
local level3b =
ob.extend_1_way(
base_factory[2],
{
factory = factory_b,
fallback = level3,
max_count = 1
}
)
local level4 =
ob.extend_1_way(
base_factory[3],
{
market = market,
fallback = level3
fallback = level3b
}
)
return {

View File

@ -0,0 +1,117 @@
local ob = require 'map_gen.presets.crash_site.outpost_builder'
local Token = require 'utils.global_token'
local loot = {
{weight = 10},
{stack = {name = 'coin', count = 50, distance_factor = 1 / 20}, weight = 5},
{stack = {name = 'coal', count = 1000, distance_factor = 1}, weight = 5},
{stack = {name = 'solid-fuel', count = 500, distance_factor = 1}, weight = 5},
{stack = {name = 'boiler', count = 25, distance_factor = 1 / 2}, weight = 5},
{stack = {name = 'steam-engine', count = 50, distance_factor = 1 / 5}, weight = 5},
{stack = {name = 'offshore-pump', count = 5, distance_factor = 1}, weight = 5},
{stack = {name = 'pipe', count = 200, distance_factor = 1}, weight = 5},
{stack = {name = 'pipe-to-ground', count = 50, distance_factor = 1 / 2}, weight = 5},
{stack = {name = 'medium-electric-pole', count = 50, distance_factor = 1 / 2}, 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 market = {
callback = ob.market_set_items_callback,
data = {
{
name = 'coal',
price = 0.5,
distance_factor = 0.25 / 512,
min_price = 0.05
},
{
name = 'solid-fuel',
price = 1.25,
distance_factor = 0.75 / 512,
min_price = 0.125
},
{
name = 'boiler',
price = 3,
distance_factor = 1.5 / 512,
min_price = 0.3
},
{
name = 'steam-engine',
price = 6,
distance_factor = 3 / 512,
min_price = 0.6
},
{
name = 'offshore-pump',
price = 2,
distance_factor = 1 / 512,
min_price = 0.2
},
{
name = 'pipe',
price = 0.25,
distance_factor = 0.125 / 512,
min_price = 0.025
},
{
name = 'pipe-to-ground',
price = 2.5,
distance_factor = 1.25 / 512,
min_price = 0.25
},
{
name = 'medium-electric-pole',
price = 2,
distance_factor = 1 / 512,
min_price = 0.2
}
}
}
local base_factory = require 'map_gen.presets.crash_site.outpost_data.small_factory'
local power_factory = require 'map_gen.presets.crash_site.outpost_data.steam_engine_block'
local level2 = ob.extend_1_way(base_factory[1], {loot = {callback = loot_callback}})
local level3 =
ob.extend_1_way(
power_factory,
{
power = power,
fallback = level2,
max_count = 4
}
)
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',
--require 'map_gen.presets.crash_site.outpost_data.light_laser_turrets'
require 'map_gen.presets.crash_site.outpost_data.walls'
},
bases = {
{level4, level2}
}
}

View File

@ -21,7 +21,7 @@ local factory = {
callback = ob.magic_item_crafting_callback,
data = {
recipe = 'science-pack-1',
output = {min_rate = 0.05 / 60, distance_factor = 0.05 / 60 / 512, item = 'science-pack-1'}
output = {min_rate = 0.25 / 60, distance_factor = 0.25 / 60 / 512, item = 'science-pack-1'}
}
}
@ -29,7 +29,7 @@ local factory_b = {
callback = ob.magic_item_crafting_callback,
data = {
recipe = 'science-pack-2',
output = {min_rate = 0.05 / 60, distance_factor = 0.05 / 60 / 512, item = 'science-pack-2'}
output = {min_rate = 0.25 / 60, distance_factor = 0.25 / 60 / 512, item = 'science-pack-2'}
}
}

View File

@ -0,0 +1,112 @@
local ob = require 'map_gen.presets.crash_site.outpost_builder'
local Token = require 'utils.global_token'
local loot = {
{weight = 5},
{stack = {name = 'coin', count = 50, distance_factor = 1 / 20}, weight = 5},
{stack = {name = 'stone', count = 1600}, weight = 8},
{stack = {name = 'stone-brick', count = 500, distance_factor = 1 / 2}, weight = 10},
{stack = {name = 'stone-wall', count = 250, distance_factor = 1 / 5}, weight = 5},
{stack = {name = 'gate', count = 50, distance_factor = 1 / 5}, 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 = {
furance_item = 'stone',
output = {min_rate = 1 / 60, distance_factor = 1 / 60 / 512, item = 'stone-brick'}
}
}
local factory_b = {
callback = ob.magic_item_crafting_callback,
data = {
recipe = 'stone-wall',
output = {min_rate = 1 / 60, distance_factor = 1 / 60 / 512, item = 'stone-wall'}
}
}
local market = {
callback = ob.market_set_items_callback,
data = {
{
name = 'stone',
price = 0.25,
distance_factor = 0.125 / 512,
min_price = 0.025
},
{
name = 'stone-brick',
price = 0.5,
distance_factor = 0.25 / 512,
min_price = 0.05
},
{
name = 'stone-wall',
price = 1,
distance_factor = 0.5 / 512,
min_price = 0.1
},
{
name = 'gate',
price = 2,
distance_factor = 1 / 512,
min_price = 0.2
}
}
}
local base_factory = require 'map_gen.presets.crash_site.outpost_data.small_furance'
local base_factory2 = 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 = 1
}
)
local level3b =
ob.extend_1_way(
base_factory2[2],
{
factory = factory_b,
fallback = level3,
max_count = 1
}
)
local level4 =
ob.extend_1_way(
base_factory[3],
{
market = market,
fallback = level3b
}
)
return {
settings = {
blocks = 6,
variance = 3,
min_step = 2,
max_level = 2
},
walls = {
require 'map_gen.presets.crash_site.outpost_data.light_gun_turrets',
require 'map_gen.presets.crash_site.outpost_data.walls'
},
bases = {
{level4, level2}
}
}

View File

@ -0,0 +1,213 @@
local ob = require 'map_gen.presets.crash_site.outpost_builder'
local Token = require 'utils.global_token'
local loot = {
{weight = 5},
{stack = {name = 'coin', count = 100, distance_factor = 1 / 8}, weight = 3},
{stack = {name = 'raw-fish', count = 50, distance_factor = 1 / 16}, weight = 1},
{stack = {name = 'combat-shotgun', count = 5, distance_factor = 1 / 128}, weight = 1},
{stack = {name = 'shotgun-shell', count = 200, distance_factor = 1 / 8}, weight = 1},
{stack = {name = 'piercing-shotgun-shell', count = 50, distance_factor = 1 / 8}, weight = 1},
{stack = {name = 'flamethrower', count = 5, distance_factor = 1 / 128}, weight = 1},
{stack = {name = 'flamethrower-ammo', count = 50, distance_factor = 1 / 8}, weight = 1},
{stack = {name = 'rocket-launcher', count = 5, distance_factor = 1 / 128}, weight = 1},
{stack = {name = 'rocket', count = 50, distance_factor = 1 / 8}, weight = 1},
{stack = {name = 'gun-turret', count = 50, distance_factor = 1 / 16}, weight = 1},
{stack = {name = 'flamethrower-turret', count = 50, distance_factor = 1 / 16}, weight = 1},
{stack = {name = 'grenade', count = 100, distance_factor = 1 / 8}, weight = 1},
{stack = {name = 'cluster-grenade', count = 10, distance_factor = 1 / 32}, weight = 1},
{stack = {name = 'modular-armor', count = 5, distance_factor = 1 / 128}, weight = 1},
{stack = {name = 'solar-panel-equipment', count = 25, distance_factor = 1 / 32}, weight = 1},
{stack = {name = 'battery-equipment', count = 5, distance_factor = 1 / 128}, weight = 1},
{stack = {name = 'energy-shield-equipment', count = 10, distance_factor = 1 / 64}, 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-shotgun-shell',
output = {min_rate = 0.5 / 60, distance_factor = 0.5 / 60 / 512, item = 'piercing-shotgun-shell'}
}
}
local factory_b = {
callback = ob.magic_item_crafting_callback,
data = {
recipe = 'grenade',
output = {min_rate = 0.2 / 60, distance_factor = 0.2 / 60 / 512, item = 'grenade'}
}
}
local factory_c = {
callback = ob.magic_item_crafting_callback,
data = {
recipe = 'gun-turret',
output = {min_rate = 0.2 / 60, distance_factor = 0.2 / 60 / 512, item = 'gun-turret'}
}
}
local market = {
callback = ob.market_set_items_callback,
data = {
{
name = 'raw-fish',
price = 1,
distance_factor = 0.5 / 512,
min_price = 0.1
},
{
name = 'combat-shotgun',
price = 125,
distance_factor = 62.5 / 512,
min_price = 62.5
},
{
name = 'shotgun-shell',
price = 1,
distance_factor = 0.5 / 512,
min_price = 0.1
},
{
name = 'piercing-shotgun-shell',
price = 3,
distance_factor = 1.5 / 512,
min_price = 0.3
},
{
name = 'flamethrower',
price = 175,
distance_factor = 87.5 / 512,
min_price = 87.5
},
{
name = 'flamethrower-ammo',
price = 7.5,
distance_factor = 3.75 / 512,
min_price = 0.75
},
{
name = 'rocket-launcher',
price = 250,
distance_factor = 125 / 512,
min_price = 125
},
{
name = 'rocket',
price = 20,
distance_factor = 10 / 512,
min_price = 2
},
{
name = 'grenade',
price = 5,
distance_factor = 5 / 512,
min_price = 0.5
},
{
name = 'cluster-grenade',
price = 100,
distance_factor = 50 / 512,
min_price = 10
},
{
name = 'modular-armor',
price = 350,
distance_factor = 175 / 512,
min_price = 175
},
{
name = 'solar-panel-equipment',
price = 75,
distance_factor = 37.5 / 512,
min_price = 37.5
},
{
name = 'battery-equipment',
price = 50,
distance_factor = 25 / 512,
min_price = 25
},
{
name = 'energy-shield-equipment',
price = 75,
distance_factor = 37.5 / 512,
min_price = 37.5
},
{
name = 'gun-turret',
price = 20,
distance_factor = 10 / 512,
min_price = 2
},
{
name = 'flamethrower-turret',
price = 100,
distance_factor = 50 / 512,
min_price = 50
}
}
}
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 = 1
}
)
local level3b =
ob.extend_1_way(
base_factory[2],
{
factory = factory_b,
fallback = level3,
max_count = 1
}
)
local level3c =
ob.extend_1_way(
base_factory[2],
{
factory = factory_c,
fallback = level3b,
max_count = 4
}
)
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, level3b, level2}
}
}

View File

@ -0,0 +1,41 @@
local ob = require 'map_gen.presets.crash_site.outpost_builder'
return 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] = {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 = 'solar-panel', callback = 'power'}, 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'}
}

View File

@ -0,0 +1,41 @@
local ob = require 'map_gen.presets.crash_site.outpost_builder'
return ob.make_1_way {
force = 'neutral',
[1] = {tile = 'stone-path'},
[2] = {tile = 'concrete'},
[3] = {tile = 'concrete'},
[4] = {tile = 'concrete'},
[5] = {tile = 'stone-path'},
[6] = {tile = 'stone-path'},
[7] = {tile = 'stone-path'},
[8] = {tile = 'concrete'},
[9] = {tile = 'concrete'},
[10] = {tile = 'concrete'},
[11] = {tile = 'stone-path'},
[12] = {tile = 'stone-path'},
[13] = {tile = 'stone-path'},
[14] = {tile = 'concrete'},
[15] = {entity = {name = 'steam-engine', callback = 'power'}, tile = 'concrete'},
[16] = {tile = 'concrete'},
[17] = {tile = 'stone-path'},
[18] = {tile = 'stone-path'},
[19] = {tile = 'stone-path'},
[20] = {tile = 'concrete'},
[21] = {tile = 'concrete'},
[22] = {tile = 'concrete'},
[23] = {tile = 'stone-path'},
[24] = {tile = 'stone-path'},
[25] = {tile = 'stone-path'},
[26] = {tile = 'concrete'},
[27] = {tile = 'concrete'},
[28] = {tile = 'concrete'},
[29] = {tile = 'stone-path'},
[30] = {tile = 'stone-path'},
[31] = {tile = 'stone-path'},
[32] = {tile = 'concrete'},
[33] = {tile = 'concrete'},
[34] = {tile = 'concrete'},
[35] = {tile = 'stone-path'},
[36] = {tile = 'stone-path'}
}

View File

@ -13,7 +13,31 @@ return {
[9] = {entity = {name = 'stone-wall'}},
[10] = {entity = {name = 'stone-wall'}},
[11] = {entity = {name = 'stone-wall'}},
[12] = {entity = {name = 'stone-wall'}}
[12] = {entity = {name = 'stone-wall'}},
[13] = {tile = 'stone-path'},
[14] = {tile = 'stone-path'},
[15] = {tile = 'stone-path'},
[16] = {tile = 'stone-path'},
[17] = {tile = 'stone-path'},
[18] = {tile = 'stone-path'},
[19] = {tile = 'concrete'},
[20] = {tile = 'concrete'},
[21] = {tile = 'concrete'},
[22] = {tile = 'concrete'},
[23] = {tile = 'concrete'},
[24] = {tile = 'concrete'},
[25] = {tile = 'concrete'},
[26] = {tile = 'concrete'},
[27] = {tile = 'concrete'},
[28] = {tile = 'concrete'},
[29] = {tile = 'concrete'},
[30] = {tile = 'concrete'},
[31] = {tile = 'stone-path'},
[32] = {tile = 'stone-path'},
[33] = {tile = 'stone-path'},
[34] = {tile = 'stone-path'},
[35] = {tile = 'stone-path'},
[36] = {tile = 'stone-path'}
},
ob.make_4_way {
[1] = {entity = {name = 'stone-wall'}},
@ -30,17 +54,65 @@ return {
[12] = {entity = {name = 'stone-wall'}},
[13] = {entity = {name = 'stone-wall'}},
[14] = {entity = {name = 'stone-wall'}},
[15] = {tile = 'stone-path'},
[16] = {tile = 'stone-path'},
[17] = {tile = 'stone-path'},
[18] = {tile = 'stone-path'},
[19] = {entity = {name = 'stone-wall'}},
[20] = {entity = {name = 'stone-wall'}},
[21] = {tile = 'stone-path'},
[22] = {tile = 'concrete'},
[23] = {tile = 'concrete'},
[24] = {tile = 'concrete'},
[25] = {entity = {name = 'stone-wall'}},
[26] = {entity = {name = 'stone-wall'}},
[27] = {tile = 'stone-path'},
[28] = {tile = 'concrete'},
[29] = {tile = 'concrete'},
[30] = {tile = 'concrete'},
[31] = {entity = {name = 'stone-wall'}},
[32] = {entity = {name = 'stone-wall'}}
[32] = {entity = {name = 'stone-wall'}},
[33] = {tile = 'stone-path'},
[34] = {tile = 'concrete'},
[35] = {tile = 'concrete'},
[36] = {tile = 'stone-path'}
},
ob.make_4_way {
[1] = {entity = {name = 'stone-wall'}},
[2] = {entity = {name = 'stone-wall'}},
[3] = {tile = 'stone-path'},
[4] = {tile = 'concrete'},
[5] = {tile = 'concrete'},
[6] = {tile = 'stone-path'},
[7] = {entity = {name = 'stone-wall'}},
[8] = {entity = {name = 'stone-wall'}}
[8] = {entity = {name = 'stone-wall'}},
[9] = {tile = 'stone-path'},
[10] = {tile = 'concrete'},
[11] = {tile = 'concrete'},
[12] = {tile = 'stone-path'},
[13] = {tile = 'stone-path'},
[14] = {tile = 'stone-path'},
[15] = {tile = 'stone-path'},
[16] = {tile = 'concrete'},
[17] = {tile = 'concrete'},
[18] = {tile = 'stone-path'},
[19] = {tile = 'concrete'},
[20] = {tile = 'concrete'},
[21] = {tile = 'concrete'},
[22] = {tile = 'concrete'},
[23] = {tile = 'concrete'},
[24] = {tile = 'stone-path'},
[25] = {tile = 'concrete'},
[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'}
}
}

View File

@ -4,7 +4,7 @@ local Event = require 'utils.event'
local player_ammo_starting_modifiers = {
['artillery-shell'] = -0.75,
['biological'] = -0.5,
['bullet'] = -0.25,
['bullet'] = -0.35,
['cannon-shell'] = -0.75,
['capsule'] = -0.5,
['combat-robot-beam'] = -0.5,
@ -17,7 +17,7 @@ local player_ammo_starting_modifiers = {
['melee'] = 0,
['railgun'] = 0,
['rocket'] = -0.5,
['shotgun-shell'] = -0.5
['shotgun-shell'] = -0.25
}
local player_ammo_research_modifiers = {
@ -36,7 +36,7 @@ local player_ammo_research_modifiers = {
['melee'] = -0.5,
['railgun'] = -0.5,
['rocket'] = -0.5,
['shotgun-shell'] = -0.5
['shotgun-shell'] = -0.25
}
local player_turrets_research_modifiers = {

View File

@ -55,7 +55,7 @@ local player_name_heading_name = Gui.uid_name()
local time_heading_name = Gui.uid_name()
local rank_heading_name = Gui.uid_name()
local distance_heading_name = Gui.uid_name()
local fish_heading_name = Gui.uid_name()
local coin_heading_name = Gui.uid_name()
local deaths_heading_name = Gui.uid_name()
local poke_name_heading_name = Gui.uid_name()
@ -64,7 +64,7 @@ local player_name_cell_name = Gui.uid_name()
local time_cell_name = Gui.uid_name()
local rank_cell_name = Gui.uid_name()
local distance_cell_name = Gui.uid_name()
local fish_cell_name = Gui.uid_name()
local coin_cell_name = Gui.uid_name()
local deaths_cell_name = Gui.uid_name()
local poke_cell_name = Gui.uid_name()
@ -283,29 +283,29 @@ local column_builders = {
return label
end
},
[fish_heading_name] = {
[coin_heading_name] = {
create_data = function(player)
local index = player.index
return {
fish_earned = PlayerStats.get_fish_earned(index),
fish_spent = PlayerStats.get_fish_spent(index)
coin_earned = PlayerStats.get_coin_earned(index),
coin_spent = PlayerStats.get_coin_spent(index)
}
end,
sort = function(a, b)
local a_fish_earned, b_fish_earned = a.fish_earned, b.fish_earned
if a_fish_earned == b_fish_earned then
return a.fish_spent < b.fish_spent
local a_coin_earned, b_coin_earned = a.coin_earned, b.coin_earned
if a_coin_earned == b_coin_earned then
return a.coin_spent < b.coin_spent
else
return a_fish_earned < b_fish_earned
return a_coin_earned < b_coin_earned
end
end,
draw_heading = function(parent)
local label =
parent.add {
type = 'label',
name = fish_heading_name,
caption = 'Fish',
tooltip = 'Fish earned / spent.'
name = coin_heading_name,
caption = 'Coins',
tooltip = 'Coins earned / spent.'
}
local label_style = label.style
apply_heading_style(label_style)
@ -314,9 +314,9 @@ local column_builders = {
return label
end,
draw_cell = function(parent, cell_data)
local text = table.concat({cell_data.fish_earned, '/', cell_data.fish_spent})
local text = table.concat({cell_data.coin_earned, '/', cell_data.coin_spent})
local label = parent.add {type = 'label', name = fish_cell_name, caption = text}
local label = parent.add {type = 'label', name = coin_cell_name, caption = text}
local label_style = label.style
label_style.align = 'center'
label_style.width = 80
@ -415,7 +415,7 @@ local function get_default_player_settings()
time_heading_name,
rank_heading_name,
distance_heading_name,
--fish_heading_name,
coin_heading_name,
deaths_heading_name,
poke_name_heading_name
},

View File

@ -3,8 +3,8 @@ local Global = require 'utils.global'
local player_last_position = {}
local player_walk_distances = {}
local player_fish_earned = {}
local player_fish_spent = {}
local player_coin_earned = {}
local player_coin_spent = {}
local player_deaths = {}
local total_players = {0}
@ -12,16 +12,16 @@ Global.register(
{
player_last_position = player_last_position,
player_walk_distances = player_walk_distances,
player_fish_earned = player_fish_earned,
player_fish_spent = player_fish_spent,
player_coin_earned = player_coin_earned,
player_coin_spent = player_coin_spent,
player_deaths = player_deaths,
total_players = total_players
},
function(tbl)
player_last_position = tbl.player_last_position
player_walk_distances = tbl.player_walk_distances
player_fish_earned = tbl.player_fish_earned
player_fish_spent = tbl.player_fish_spent
player_coin_earned = tbl.player_coin_earned
player_coin_spent = tbl.player_coin_spent
player_deaths = tbl.player_deaths
total_players = tbl.total_players
end
@ -32,8 +32,8 @@ local function player_created(event)
player_last_position[index] = game.players[index].position
player_walk_distances[index] = 0
player_fish_earned[index] = 0
player_fish_spent[index] = 0
player_coin_earned[index] = 0
player_coin_spent[index] = 0
player_deaths[index] = {causes = {}, count = 0}
total_players[1] = total_players[1] + 1
end
@ -69,9 +69,9 @@ end
local function picked_up_item(event)
local stack = event.item_stack
if stack.name == 'raw-fish' then
if stack.name == 'coin' then
local player_index = event.player_index
player_fish_earned[player_index] = player_fish_earned[player_index] + stack.count
player_coin_earned[player_index] = player_coin_earned[player_index] + stack.count
end
end
@ -102,28 +102,28 @@ function Public.get_walk_distance(player_index)
return player_walk_distances[player_index]
end
function Public.get_fish_earned(player_index)
return player_fish_earned[player_index]
function Public.get_coin_earned(player_index)
return player_coin_earned[player_index]
end
function Public.set_fish_earned(player_index, value)
player_fish_earned[player_index] = value
function Public.set_coin_earned(player_index, value)
player_coin_earned[player_index] = value
end
function Public.change_fish_earned(player_index, amount)
player_fish_earned[player_index] = player_fish_earned[player_index] + amount
function Public.change_coin_earned(player_index, amount)
player_coin_earned[player_index] = player_coin_earned[player_index] + amount
end
function Public.get_fish_spent(player_index)
return player_fish_spent[player_index]
function Public.get_coin_spent(player_index)
return player_coin_spent[player_index]
end
function Public.set_fish_spent(player_index, value)
player_fish_spent[player_index] = value
function Public.set_coin_spent(player_index, value)
player_coin_spent[player_index] = value
end
function Public.change_fish_spent(player_index, amount)
player_fish_spent[player_index] = player_fish_spent[player_index] + amount
function Public.change_coin_spent(player_index, amount)
player_coin_spent[player_index] = player_coin_spent[player_index] + amount
end
function Public.get_death_count(player_index)

View File

@ -267,7 +267,6 @@ return {
['warnotte'] = true,
['watchinghawk'] = true,
['wekkka'] = true,
['wesoly1234'] = true,
['wickvitaminc'] = true,
['williambellwisdo'] = true,
['wurzeltroll42'] = true,
@ -445,7 +444,6 @@ return {
['SmotPokin42000'] = true,
['Theysaywhatnow'] = true,
['SwampD0nkey'] = true,
['BTG'] = true,
['Anubi5'] = true,
['Slas'] = true,
['McTheDerp'] = true,
@ -527,5 +525,21 @@ return {
['Cruelcoder'] = true,
['Unrealrules'] = true,
['Lithidoria'] = true,
['LordElmi'] = true
['LordElmi'] = true,
['Kane.Nexus'] = true,
['OmegaLunch'] = true,
['korokoroneruneru'] = true,
['Krengrus'] = true,
['Rinncar72'] = true,
['Patti2507'] = true,
['f198904011'] = true,
['BTG'] = true,
['SwaggerC4'] = true,
['biohaze'] = true,
['SMikiS'] = true,
['sejyoo'] = true,
['Askiph'] = true,
['undefinable'] = true,
['snapboogie'] = true,
['Wesoly1234'] = true
}