Skip to content

Commit e948a36

Browse files
Formatting
1 parent f5240d7 commit e948a36

File tree

1 file changed

+65
-62
lines changed

1 file changed

+65
-62
lines changed

SeaBlock/mapgen.lua

Lines changed: 65 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -33,67 +33,69 @@ data.raw.tile["sand-5"].vehicle_friction_modifier = 1.8
3333
data.raw.tile["landfill"].vehicle_friction_modifier = 1.8
3434

3535
for _, v in pairs(data.raw.tile) do
36-
v.autoplace = nil
36+
v.autoplace = nil
3737
end
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

4141
data: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
8990
local elevation = data.raw["noise-expression"]["elevation"]
9091

9192
elevation.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
111113
for _, 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")
113115
end
114116

115117
seablock.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 -------
125127
local enemy_random_seed = 1
126128
local 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
129131
end
130132

131133
local 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+
}
139142
end
140143

141144
data.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
147150
data.raw.tree["angels-puffer-nest"].autoplace = worm_autoplace(0, 0.01, "s", 0)
148151

149152
if 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")
151154
end
152155
if 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")
154157
end
155158
if 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")
157160
end
158161
if 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")
160163
end
161164
if 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")
163166
end
164167
if 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")
166169
end

0 commit comments

Comments
 (0)