@@ -33,67 +33,69 @@ data.raw.tile["sand-5"].vehicle_friction_modifier = 1.8
3333data .raw .tile [" landfill" ].vehicle_friction_modifier = 1.8
3434
3535for _ , v in pairs (data .raw .tile ) do
36- v .autoplace = nil
36+ v .autoplace = nil
3737end
3838
39- data .raw .cliff [" cliff" ].collision_mask = { not_colliding_with_itself = true , layers = { object = true , train = true } }
39+ data .raw .cliff [" cliff" ].collision_mask = { not_colliding_with_itself = true , layers = { object = true , train = true } }
4040
4141data :extend ({
42- {
43- type = " noise-expression" ,
44- name = " waterline" ,
45- expression = " 10"
42+ {
43+ type = " noise-expression" ,
44+ name = " waterline" ,
45+ expression = " 10"
46+ },
47+ {
48+ type = " noise-expression" ,
49+ name = " distance_sigmoid" , -- sigmoid to gradually increase island size while limiting the maximum size
50+ local_expressions = {
51+ amount = " 2" ,
52+ offset = " 500" ,
53+ scale = " 300"
4654 },
47- {
48- type = " noise-expression" ,
49- name = " distance_sigmoid" , -- sigmoid to gradually increase island size while limiting the maximum size
50- local_expressions = {
51- amount = " 2" ,
52- offset = " 500" ,
53- scale = " 300"
54- },
55- expression = " amount/(1+e^(-(distance-offset)/scale))"
55+ expression = " amount/(1+e^(-(distance-offset)/scale))"
56+ },
57+ {
58+ type = " noise-function" ,
59+ name = " shifted_hyperbolic_rational" ,
60+ parameters = { " amplitude" , " offset" , " squish" },
61+ expression = " (amplitude*4)/(distance*squish-offset*squish) - (amplitude*4)/((distance*squish-offset*squish)^2)"
62+ },
63+ {
64+ type = " noise-function" ,
65+ name = " random_tree_islands" ,
66+ parameters = { " seed" , " noise_seed" , " frequency" , " limit" },
67+ local_expressions = {
68+ base = " basis_noise{x = x, y = y, seed0 = map_seed, seed1 = noise_seed, input_scale = 1.99995}" ,
69+ multoctave =
70+ " multioctave_noise{x = x, y = y, persistence = 0.75, seed0 = map_seed, seed1 = seed, octaves = 3, input_scale = 1/32, output_scale = 10} * (1+frequency+shifted_hyperbolic_rational(200, 0, 0.7))"
5671 },
57- {
58- type = " noise-function" ,
59- name = " shifted_hyperbolic_rational" ,
60- parameters = { " amplitude" , " offset" , " squish" },
61- expression = " (amplitude*4)/(distance*squish-offset*squish) - (amplitude*4)/((distance*squish-offset*squish)^2)"
72+ expression = " if(multoctave >= limit, base, -inf)"
73+ },
74+ {
75+ type = " noise-function" ,
76+ name = " worm_autoplace" ,
77+ parameters = { " other_distance" , " probability" , " falloff" , " seed" },
78+ local_expressions = {
79+ d = " distance - starting_area_radius" ,
80+ _falloff = " if(falloff == 1, clamp(((other_distance+2)*128-d)/128, 0, 1), 1)" ,
81+ _waterline = " clamp(waterline-elevation, 0, 1)" ,
82+ prob = " clamp((d-other_distance*128)/128, 0, 1) * _falloff * _waterline * probability" ,
83+ pen = " random_penalty(x, y, prob, seed, probability*0.5)"
6284 },
63- {
64- type = " noise-function" ,
65- name = " random_tree_islands" ,
66- parameters = { " seed" , " noise_seed" , " frequency" , " limit" },
67- local_expressions = {
68- base = " basis_noise{x = x, y = y, seed0 = map_seed, seed1 = noise_seed, input_scale = 1.99995}" ,
69- multoctave = " multioctave_noise{x = x, y = y, persistence = 0.75, seed0 = map_seed, seed1 = seed, octaves = 3, input_scale = 1/32, output_scale = 10} * (1+frequency+shifted_hyperbolic_rational(200, 0, 0.7))"
70- },
71- expression = " if(multoctave >= limit, base, -inf)"
72- },
73- {
74- type = " noise-function" ,
75- name = " worm_autoplace" ,
76- parameters = { " other_distance" , " probability" , " falloff" , " seed" },
77- local_expressions = {
78- d = " distance - starting_area_radius" ,
79- _falloff = " if(falloff == 1, clamp(((other_distance+2)*128-d)/128, 0, 1), 1)" ,
80- _waterline = " clamp(waterline-elevation, 0, 1)" ,
81- prob = " clamp((d-other_distance*128)/128, 0, 1) * _falloff * _waterline * probability" ,
82- pen = " random_penalty(x, y, prob, seed, probability*0.5)"
83- },
84- expression = " pen"
85- }
85+ expression = " pen"
86+ }
8687})
8788
8889-- cant put that in data:extend since elevation exists in base game
8990local elevation = data .raw [" noise-expression" ][" elevation" ]
9091
9192elevation .local_expressions = {
92- base = " basis_noise{x = x, y = y, seed0 = map_seed, seed1 = 5, input_scale = 1/32, output_scale = 6}" ,
93- starting_tile = " if(distance <= 1, 100, 0)" ,
93+ base = " basis_noise{x = x, y = y, seed0 = map_seed, seed1 = 5, input_scale = 1/32, output_scale = 6}" ,
94+ starting_tile = " if(distance <= 1, 100, 0)" ,
9495}
9596
96- elevation .expression = " if(distance <= starting_area_radius/2, min(base - waterline, 0), base - waterline) + starting_tile + distance_sigmoid+1"
97+ elevation .expression =
98+ " if(distance <= starting_area_radius/2, min(base - waterline, 0), base - waterline) + starting_tile + distance_sigmoid+1"
9799
98100---- --- Tiles -------
99101-- Water
@@ -109,7 +111,7 @@ seablock.lib.set_probability_expression("tile", "sand-5", "if(elevation >= 1.2,
109111---- --- Trees -------
110112-- Trees should only spawn on sand-5 which is the middle of each island
111113for _ , name in pairs ({ " angels-desert-garden" , " angels-temperate-garden" , " angels-swamp-garden" , " angels-desert-tree" , " angels-temperate-tree" , " angels-swamp-tree" , }) do
112- seablock .lib .set_tile_restriction (" tree" , name , " sand-5" )
114+ seablock .lib .set_tile_restriction (" tree" , name , " sand-5" )
113115end
114116
115117seablock .lib .set_probability_expression (" tree" , " angels-desert-garden" , " random_tree_islands(1, 1, 0.6, 16)" )
@@ -124,18 +126,19 @@ seablock.lib.set_probability_expression("tree", "angels-swamp-tree", "random_tre
124126---- --- Enemies -------
125127local enemy_random_seed = 1
126128local function new_random_seed ()
127- enemy_random_seed = enemy_random_seed + 1
128- return enemy_random_seed
129+ enemy_random_seed = enemy_random_seed + 1
130+ return enemy_random_seed
129131end
130132
131133local function worm_autoplace (distance , probability , order , falloff , control_name )
132- return {
133- control = control_name ,
134- order = order ,
135- force = " enemy" ,
136- probability_expression = " worm_autoplace(" .. distance .. " ," .. probability .. " ," .. falloff .. " ," .. new_random_seed ().. " )" ,
137- richness_expression = 1 ,
138- }
134+ return {
135+ control = control_name ,
136+ order = order ,
137+ force = " enemy" ,
138+ probability_expression = " worm_autoplace(" .. distance .. " ," ..
139+ probability .. " ," .. falloff .. " ," .. new_random_seed () .. " )" ,
140+ richness_expression = 1 ,
141+ }
139142end
140143
141144data .raw .turret [" small-worm-turret" ].autoplace = worm_autoplace (0 , 1 , " z" , 1 , " enemy-base" )
@@ -147,20 +150,20 @@ seablock.lib.set_tile_restriction("tree", "angels-puffer-nest", {}) --clear tile
147150data .raw .tree [" angels-puffer-nest" ].autoplace = worm_autoplace (0 , 0.01 , " s" , 0 )
148151
149152if data .raw .turret [" bob-big-explosive-worm-turret" ] then
150- data .raw .turret [" bob-big-explosive-worm-turret" ].autoplace = worm_autoplace (1.5 , 0.5 , " v" , 0 , " enemy-base" )
153+ data .raw .turret [" bob-big-explosive-worm-turret" ].autoplace = worm_autoplace (1.5 , 0.5 , " v" , 0 , " enemy-base" )
151154end
152155if data .raw .turret [" bob-big-fire-worm-turret" ] then
153- data .raw .turret [" bob-big-fire-worm-turret" ].autoplace = worm_autoplace (1.5 , 0.5 , " v" , 0 , " enemy-base" )
156+ data .raw .turret [" bob-big-fire-worm-turret" ].autoplace = worm_autoplace (1.5 , 0.5 , " v" , 0 , " enemy-base" )
154157end
155158if data .raw .turret [" bob-big-poison-worm-turret" ] then
156- data .raw .turret [" bob-big-poison-worm-turret" ].autoplace = worm_autoplace (1.5 , 0.5 , " v" , 0 , " enemy-base" )
159+ data .raw .turret [" bob-big-poison-worm-turret" ].autoplace = worm_autoplace (1.5 , 0.5 , " v" , 0 , " enemy-base" )
157160end
158161if data .raw .turret [" bob-big-piercing-worm-turret" ] then
159- data .raw .turret [" bob-big-piercing-worm-turret" ].autoplace = worm_autoplace (1.5 , 0.5 , " v" , 0 , " enemy-base" )
162+ data .raw .turret [" bob-big-piercing-worm-turret" ].autoplace = worm_autoplace (1.5 , 0.5 , " v" , 0 , " enemy-base" )
160163end
161164if data .raw .turret [" bob-big-electric-worm-turret" ] then
162- data .raw .turret [" bob-big-electric-worm-turret" ].autoplace = worm_autoplace (1.5 , 0.5 , " v" , 0 , " enemy-base" )
165+ data .raw .turret [" bob-big-electric-worm-turret" ].autoplace = worm_autoplace (1.5 , 0.5 , " v" , 0 , " enemy-base" )
163166end
164167if data .raw .turret [" bob-giant-worm-turret" ] then
165- data .raw .turret [" bob-giant-worm-turret" ].autoplace = worm_autoplace (2 , 0.6 , " u" , 0 , " enemy-base" )
168+ data .raw .turret [" bob-giant-worm-turret" ].autoplace = worm_autoplace (2 , 0.6 , " u" , 0 , " enemy-base" )
166169end
0 commit comments