Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
L
loud_walking
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Operate
Environments
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Illuna-Minetest
loud_walking
Commits
c67e7a17
Commit
c67e7a17
authored
9 years ago
by
Duane Robertson
Browse files
Options
Downloads
Patches
Plain Diff
Add cave stones.
parent
cee178f3
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
mapgen.lua
+28
-11
28 additions, 11 deletions
mapgen.lua
with
28 additions
and
11 deletions
mapgen.lua
+
28
−
11
View file @
c67e7a17
...
...
@@ -63,6 +63,17 @@ do
end
end
local
cave_stones
=
{
"loud_walking:stone_with_moss"
,
"loud_walking:stone_with_lichen"
,
"loud_walking:stone_with_algae"
,
"loud_walking:stone_with_salt"
,
}
local
mushroom_stones
=
{}
mushroom_stones
[
node
(
"default:stone"
)]
=
true
mushroom_stones
[
node
(
"loud_walking:stone_with_algae"
)]
=
true
mushroom_stones
[
node
(
"loud_walking:stone_with_lichen"
)]
=
true
local
function
place_schematic
(
pos
,
schem
,
center
)
local
yslice
=
{}
if
schem
.
yslice_prob
then
...
...
@@ -178,7 +189,7 @@ local function get_biome(px, pz)
end
local
biome
=
biome_names
[
rarity
][
math.random
(
#
biome_names
[
rarity
])]
return
biome
--return "
glacier
"
--return "
sandstone_grassland
"
end
local
function
get_decoration
(
biome
)
...
...
@@ -227,6 +238,10 @@ function loud_walking.generate(p_minp, p_maxp, seed)
local
px
=
math.floor
((
minp
.
x
+
32
)
/
csize
.
x
)
local
pz
=
math.floor
((
minp
.
z
+
32
)
/
csize
.
z
)
local
biome
=
get_biome
(
px
,
pz
)
local
cave_lining
=
cave_stones
[
math.random
(
#
cave_stones
)]
if
math.random
(
3
)
==
1
then
cave_lining
=
nil
end
local
node_top
=
biomes
[
biome
].
node_top
or
"default:dirt_with_grass"
local
node_filler
=
biomes
[
biome
].
node_filler
or
"default:dirt"
...
...
@@ -281,7 +296,7 @@ function loud_walking.generate(p_minp, p_maxp, seed)
lightmap
[
ivm
]
=
0
in_cave
=
false
elseif
math.min
(
dx
,
csize
.
x
-
dx
)
+
math.min
(
dy
,
csize
.
y
-
dy
)
+
math.min
(
dz
,
csize
.
z
-
dz
)
<
bevel
+
1
then
if
dy
<
half
then
if
biome
~=
"underground"
and
dy
<
half
then
data
[
ivm
]
=
node
(
"loud_walking:scrith"
)
lightmap
[
ivm
]
=
0
else
...
...
@@ -293,7 +308,7 @@ function loud_walking.generate(p_minp, p_maxp, seed)
if
math.abs
(
dy
-
half
-
2
)
<
2
and
(
dz
==
half
or
dx
==
half
)
then
data
[
ivm
]
=
node
(
"air"
)
else
if
dy
<
half
then
if
biome
~=
"underground"
and
dy
<
half
then
data
[
ivm
]
=
node
(
"loud_walking:scrith"
)
lightmap
[
ivm
]
=
0
else
...
...
@@ -331,10 +346,11 @@ function loud_walking.generate(p_minp, p_maxp, seed)
data
[
ivm
]
=
node
(
"air"
)
in_cave
=
false
elseif
cave
[
index3d
]
^
2
>
(
biome
==
"underground"
and
0
.
5
or
1
.
3
-
math.sin
(
dy
/
(
half
*
0
.
2
)))
then
cave_height
=
cave_height
+
1
if
terr
+
ground
>=
dy
and
not
in_cave
and
dy
>
terr
+
ground
-
10
then
data
[
ivm
]
=
node
(
node_top
)
elseif
dy
==
1
then
if
not
ocean
and
not
swamp
and
not
beach
and
math.random
(
6
)
==
1
then
if
not
cave_lining
and
not
ocean
and
not
swamp
and
not
beach
and
biome
~=
"glacier"
and
math.random
(
6
)
==
1
then
data
[
ivm
]
=
node
(
"default:lava_source"
)
elseif
ocean
or
swamp
or
beach
then
data
[
ivm
]
=
node
(
node_filler
)
...
...
@@ -343,16 +359,16 @@ function loud_walking.generate(p_minp, p_maxp, seed)
data
[
ivm
]
=
node
(
"loud_walking:glowing_fungal_stone"
)
elseif
(
ocean
or
swamp
or
beach
)
and
dy
<
half
then
data
[
ivm
]
=
node
(
node_water
)
elseif
cave_height
==
2
and
node_filler
==
"default:dirt"
and
data
[
ivm
-
3
]
==
node
(
node_stone
)
and
math.random
(
40
)
==
1
then
elseif
cave_height
==
3
and
node_filler
==
"default:dirt"
and
mushroom_stones
[
data
[
ivm
-
3
*
a
.
ystride
]]
and
math.random
(
40
)
==
1
then
data
[
ivm
]
=
node
(
"loud_walking:giant_mushroom_cap"
)
data
[
ivm
-
a
.
ystride
]
=
node
(
"loud_walking:giant_mushroom_stem"
)
data
[
ivm
-
2
*
a
.
ystride
]
=
node
(
"loud_walking:giant_mushroom_stem"
)
data
[
ivm
-
3
*
a
.
ystride
]
=
node
(
node_filler
)
elseif
cave_height
==
1
and
node_filler
==
"default:dirt"
and
data
[
ivm
-
3
]
==
node
(
node_stone
)
and
math.random
(
20
)
==
1
then
elseif
cave_height
==
2
and
node_filler
==
"default:dirt"
and
mushroom_stones
[
data
[
ivm
-
2
*
a
.
ystride
]]
and
math.random
(
20
)
==
1
then
data
[
ivm
]
=
node
(
"loud_walking:huge_mushroom_cap"
)
data
[
ivm
-
a
.
ystride
]
=
node
(
"loud_walking:giant_mushroom_stem"
)
data
[
ivm
-
2
*
a
.
ystride
]
=
node
(
node_filler
)
elseif
not
in_cave
and
node_stone
==
"default:stone"
and
math.random
(
10
)
==
1
then
elseif
not
in_cave
and
node_stone
==
"default:stone"
and
not
cave_lining
and
math.random
(
10
)
==
1
then
data
[
ivm
]
=
node
(
"loud_walking:stalagmite"
)
elseif
not
in_cave
and
node_stone
==
"default:ice"
and
math.random
(
10
)
==
1
then
data
[
ivm
]
=
node
(
"loud_walking:icicle_up"
)
...
...
@@ -361,6 +377,9 @@ function loud_walking.generate(p_minp, p_maxp, seed)
end
in_cave
=
true
lightmap
[
ivm
]
=
0
elseif
cave_lining
and
cave
[
index3d
]
^
2
>
(
biome
==
"underground"
and
0
.
4
or
1
.
2
-
math.sin
(
dy
/
(
half
*
0
.
2
)))
then
data
[
ivm
]
=
node
(
cave_lining
)
lightmap
[
ivm
]
=
0
elseif
dy
>
terr
+
ground
-
depth_top
then
data
[
ivm
]
=
node
(
node_top
)
lightmap
[
ivm
]
=
0
...
...
@@ -375,7 +394,7 @@ function loud_walking.generate(p_minp, p_maxp, seed)
data
[
ivm
]
=
node
(
node_stone
)
if
in_cave
and
node_stone
==
"default:stone"
and
math.random
(
20
)
==
1
then
data
[
ivm
]
=
node
(
"loud_walking:glowing_fungal_stone"
)
elseif
in_cave
and
not
(
ocean
or
swamp
or
beach
)
and
node_stone
==
"default:stone"
and
math.random
(
10
)
==
1
then
elseif
in_cave
and
not
(
ocean
or
swamp
or
beach
)
and
node_stone
==
"default:stone"
and
not
cave_lining
and
math.random
(
10
)
==
1
then
data
[
ivm
-
a
.
ystride
]
=
node
(
"loud_walking:stalactite"
)
elseif
in_cave
and
not
(
ocean
or
swamp
or
beach
)
and
node_stone
==
"default:ice"
and
math.random
(
10
)
==
1
then
data
[
ivm
-
a
.
ystride
]
=
node
(
"loud_walking:icicle_down"
)
...
...
@@ -390,9 +409,7 @@ function loud_walking.generate(p_minp, p_maxp, seed)
write
=
true
end
if
in_cave
then
cave_height
=
cave_height
+
1
else
if
not
in_cave
then
cave_height
=
0
end
ivm
=
ivm
+
a
.
ystride
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment