diff --git a/_maps/map_files/RandomRuins/LavaRuins/chasm_bridges/lavaland_bridge_horizontal_1.dmm b/_maps/map_files/RandomRuins/LavaRuins/chasm_bridges/lavaland_bridge_horizontal_1.dmm
new file mode 100644
index 00000000000..2d2a3b57b75
--- /dev/null
+++ b/_maps/map_files/RandomRuins/LavaRuins/chasm_bridges/lavaland_bridge_horizontal_1.dmm
@@ -0,0 +1,46 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"a" = (
+/turf/simulated/wall/clockwork,
+/area/lavaland/surface/outdoors/unexplored/danger)
+"b" = (
+/turf/simulated/floor/clockwork,
+/area/lavaland/surface/outdoors/unexplored/danger)
+"c" = (
+/turf/template_noop,
+/area/lavaland/surface/outdoors/unexplored/danger)
+
+(1,1,1) = {"
+c
+a
+b
+a
+c
+"}
+(2,1,1) = {"
+c
+c
+b
+c
+c
+"}
+(3,1,1) = {"
+c
+c
+b
+c
+c
+"}
+(4,1,1) = {"
+c
+c
+b
+c
+c
+"}
+(5,1,1) = {"
+c
+a
+b
+a
+c
+"}
diff --git a/_maps/map_files/RandomRuins/LavaRuins/chasm_bridges/lavaland_bridge_horizontal_2.dmm b/_maps/map_files/RandomRuins/LavaRuins/chasm_bridges/lavaland_bridge_horizontal_2.dmm
new file mode 100644
index 00000000000..7996a2aa6d4
--- /dev/null
+++ b/_maps/map_files/RandomRuins/LavaRuins/chasm_bridges/lavaland_bridge_horizontal_2.dmm
@@ -0,0 +1,46 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"a" = (
+/turf/simulated/wall/cult,
+/area/lavaland/surface/outdoors/unexplored/danger)
+"b" = (
+/turf/simulated/floor/engine/cult,
+/area/lavaland/surface/outdoors/unexplored/danger)
+"c" = (
+/turf/template_noop,
+/area/lavaland/surface/outdoors/unexplored/danger)
+
+(1,1,1) = {"
+c
+a
+b
+a
+c
+"}
+(2,1,1) = {"
+c
+c
+b
+c
+c
+"}
+(3,1,1) = {"
+c
+c
+b
+c
+c
+"}
+(4,1,1) = {"
+c
+c
+b
+c
+c
+"}
+(5,1,1) = {"
+c
+a
+b
+a
+c
+"}
diff --git a/_maps/map_files/RandomRuins/LavaRuins/chasm_bridges/lavaland_bridge_horizontal_3.dmm b/_maps/map_files/RandomRuins/LavaRuins/chasm_bridges/lavaland_bridge_horizontal_3.dmm
new file mode 100644
index 00000000000..2d3360cc580
--- /dev/null
+++ b/_maps/map_files/RandomRuins/LavaRuins/chasm_bridges/lavaland_bridge_horizontal_3.dmm
@@ -0,0 +1,73 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"a" = (
+/turf/simulated/wall/cult,
+/area/lavaland/surface/outdoors/unexplored/danger)
+"b" = (
+/obj/structure/stone_tile/surrounding,
+/obj/structure/stone_tile/center,
+/turf/template_noop,
+/area/lavaland/surface/outdoors/unexplored/danger)
+"c" = (
+/turf/template_noop,
+/area/lavaland/surface/outdoors/unexplored/danger)
+"g" = (
+/obj/structure/stone_tile/slab/cracked,
+/turf/template_noop,
+/area/lavaland/surface/outdoors/unexplored/danger)
+"h" = (
+/obj/structure/stone_tile/slab,
+/turf/template_noop,
+/area/lavaland/surface/outdoors/unexplored/danger)
+"m" = (
+/obj/structure/stone_tile/block,
+/obj/structure/stone_tile/block/cracked{
+ dir = 1
+ },
+/turf/template_noop,
+/area/lavaland/surface/outdoors/unexplored/danger)
+"o" = (
+/obj/structure/stone_tile/block{
+ dir = 1
+ },
+/obj/structure/stone_tile/burnt,
+/obj/structure/stone_tile/surrounding_tile{
+ dir = 8
+ },
+/turf/template_noop,
+/area/lavaland/surface/outdoors/unexplored/danger)
+
+(1,1,1) = {"
+c
+a
+h
+a
+c
+"}
+(2,1,1) = {"
+c
+c
+m
+c
+c
+"}
+(3,1,1) = {"
+c
+c
+b
+c
+c
+"}
+(4,1,1) = {"
+c
+c
+o
+c
+c
+"}
+(5,1,1) = {"
+c
+a
+g
+a
+c
+"}
diff --git a/_maps/map_files/RandomRuins/LavaRuins/chasm_bridges/lavaland_bridge_horizontal_4.dmm b/_maps/map_files/RandomRuins/LavaRuins/chasm_bridges/lavaland_bridge_horizontal_4.dmm
new file mode 100644
index 00000000000..272dfcd1246
--- /dev/null
+++ b/_maps/map_files/RandomRuins/LavaRuins/chasm_bridges/lavaland_bridge_horizontal_4.dmm
@@ -0,0 +1,49 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"a" = (
+/turf/simulated/wall/indestructible/hierophant,
+/area/lavaland/surface/outdoors/unexplored/danger)
+"b" = (
+/turf/simulated/floor/indestructible/hierophant,
+/area/lavaland/surface/outdoors/unexplored/danger)
+"c" = (
+/turf/template_noop,
+/area/lavaland/surface/outdoors/unexplored/danger)
+"o" = (
+/turf/simulated/floor/indestructible/hierophant/two,
+/area/lavaland/surface/outdoors/unexplored/danger)
+
+(1,1,1) = {"
+c
+a
+b
+a
+c
+"}
+(2,1,1) = {"
+c
+c
+b
+c
+c
+"}
+(3,1,1) = {"
+c
+c
+o
+c
+c
+"}
+(4,1,1) = {"
+c
+c
+b
+c
+c
+"}
+(5,1,1) = {"
+c
+a
+b
+a
+c
+"}
diff --git a/_maps/map_files/RandomRuins/LavaRuins/chasm_bridges/lavaland_bridge_horizontal_5.dmm b/_maps/map_files/RandomRuins/LavaRuins/chasm_bridges/lavaland_bridge_horizontal_5.dmm
new file mode 100644
index 00000000000..29b681cae82
--- /dev/null
+++ b/_maps/map_files/RandomRuins/LavaRuins/chasm_bridges/lavaland_bridge_horizontal_5.dmm
@@ -0,0 +1,56 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"a" = (
+/turf/simulated/wall/mineral/wood/nonmetal,
+/area/lavaland/surface/outdoors/unexplored/danger)
+"b" = (
+/turf/simulated/floor/wood,
+/area/lavaland/surface/outdoors/unexplored/danger)
+"c" = (
+/turf/template_noop,
+/area/lavaland/surface/outdoors/unexplored/danger)
+"v" = (
+/turf/simulated/floor/wood{
+ icon_state = "wood-broken3"
+ },
+/area/lavaland/surface/outdoors/unexplored/danger)
+"C" = (
+/turf/simulated/floor/wood{
+ icon_state = "wood-broken7"
+ },
+/area/lavaland/surface/outdoors/unexplored/danger)
+
+(1,1,1) = {"
+c
+a
+C
+a
+c
+"}
+(2,1,1) = {"
+c
+c
+b
+c
+c
+"}
+(3,1,1) = {"
+c
+c
+b
+c
+c
+"}
+(4,1,1) = {"
+c
+c
+v
+c
+c
+"}
+(5,1,1) = {"
+c
+a
+b
+a
+c
+"}
diff --git a/_maps/map_files/RandomRuins/LavaRuins/chasm_bridges/lavaland_bridge_horizontal_6.dmm b/_maps/map_files/RandomRuins/LavaRuins/chasm_bridges/lavaland_bridge_horizontal_6.dmm
new file mode 100644
index 00000000000..2cfe9bd7446
--- /dev/null
+++ b/_maps/map_files/RandomRuins/LavaRuins/chasm_bridges/lavaland_bridge_horizontal_6.dmm
@@ -0,0 +1,49 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"a" = (
+/obj/structure/lattice/catwalk/mining,
+/obj/structure/marker_beacon/dock_marker/collision,
+/turf/template_noop,
+/area/lavaland/surface/outdoors/unexplored/danger)
+"b" = (
+/obj/structure/lattice/catwalk/mining,
+/turf/template_noop,
+/area/lavaland/surface/outdoors/unexplored/danger)
+"c" = (
+/turf/template_noop,
+/area/lavaland/surface/outdoors/unexplored/danger)
+
+(1,1,1) = {"
+c
+a
+b
+a
+c
+"}
+(2,1,1) = {"
+c
+c
+b
+c
+c
+"}
+(3,1,1) = {"
+c
+c
+b
+c
+c
+"}
+(4,1,1) = {"
+c
+c
+b
+c
+c
+"}
+(5,1,1) = {"
+c
+a
+b
+a
+c
+"}
diff --git a/_maps/map_files/RandomRuins/LavaRuins/chasm_bridges/lavaland_bridge_vertical_1.dmm b/_maps/map_files/RandomRuins/LavaRuins/chasm_bridges/lavaland_bridge_vertical_1.dmm
new file mode 100644
index 00000000000..473e4df56c6
--- /dev/null
+++ b/_maps/map_files/RandomRuins/LavaRuins/chasm_bridges/lavaland_bridge_vertical_1.dmm
@@ -0,0 +1,46 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"a" = (
+/turf/simulated/wall/clockwork,
+/area/lavaland/surface/outdoors/unexplored/danger)
+"b" = (
+/turf/simulated/floor/clockwork,
+/area/lavaland/surface/outdoors/unexplored/danger)
+"c" = (
+/turf/template_noop,
+/area/lavaland/surface/outdoors/unexplored/danger)
+
+(1,1,1) = {"
+c
+c
+c
+c
+c
+"}
+(2,1,1) = {"
+a
+c
+c
+c
+a
+"}
+(3,1,1) = {"
+b
+b
+b
+b
+b
+"}
+(4,1,1) = {"
+a
+c
+c
+c
+a
+"}
+(5,1,1) = {"
+c
+c
+c
+c
+c
+"}
diff --git a/_maps/map_files/RandomRuins/LavaRuins/chasm_bridges/lavaland_bridge_vertical_2.dmm b/_maps/map_files/RandomRuins/LavaRuins/chasm_bridges/lavaland_bridge_vertical_2.dmm
new file mode 100644
index 00000000000..44eb0610f50
--- /dev/null
+++ b/_maps/map_files/RandomRuins/LavaRuins/chasm_bridges/lavaland_bridge_vertical_2.dmm
@@ -0,0 +1,46 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"a" = (
+/turf/simulated/wall/cult,
+/area/lavaland/surface/outdoors/unexplored/danger)
+"b" = (
+/turf/simulated/floor/engine/cult,
+/area/lavaland/surface/outdoors/unexplored/danger)
+"c" = (
+/turf/template_noop,
+/area/lavaland/surface/outdoors/unexplored/danger)
+
+(1,1,1) = {"
+c
+c
+c
+c
+c
+"}
+(2,1,1) = {"
+a
+c
+c
+c
+a
+"}
+(3,1,1) = {"
+b
+b
+b
+b
+b
+"}
+(4,1,1) = {"
+a
+c
+c
+c
+a
+"}
+(5,1,1) = {"
+c
+c
+c
+c
+c
+"}
diff --git a/_maps/map_files/RandomRuins/LavaRuins/chasm_bridges/lavaland_bridge_vertical_3.dmm b/_maps/map_files/RandomRuins/LavaRuins/chasm_bridges/lavaland_bridge_vertical_3.dmm
new file mode 100644
index 00000000000..8fbfe6ba32e
--- /dev/null
+++ b/_maps/map_files/RandomRuins/LavaRuins/chasm_bridges/lavaland_bridge_vertical_3.dmm
@@ -0,0 +1,83 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"a" = (
+/turf/simulated/wall/cult,
+/area/lavaland/surface/outdoors/unexplored/danger)
+"b" = (
+/obj/structure/stone_tile/slab,
+/turf/template_noop,
+/area/lavaland/surface/outdoors/unexplored/danger)
+"c" = (
+/turf/template_noop,
+/area/lavaland/surface/outdoors/unexplored/danger)
+"w" = (
+/obj/structure/stone_tile/center/cracked,
+/obj/structure/stone_tile/surrounding/cracked,
+/obj/structure/stone_tile/slab/cracked{
+ dir = 10
+ },
+/turf/template_noop,
+/area/lavaland/surface/outdoors/unexplored/danger)
+"I" = (
+/obj/structure/stone_tile,
+/obj/structure/stone_tile{
+ dir = 4
+ },
+/obj/structure/stone_tile{
+ dir = 8
+ },
+/obj/structure/stone_tile/cracked{
+ dir = 1
+ },
+/turf/template_noop,
+/area/lavaland/surface/outdoors/unexplored/danger)
+"M" = (
+/obj/structure/stone_tile/slab/cracked{
+ dir = 5
+ },
+/turf/template_noop,
+/area/lavaland/surface/outdoors/unexplored/danger)
+"R" = (
+/obj/structure/stone_tile/block/cracked{
+ dir = 8
+ },
+/obj/structure/stone_tile/block{
+ dir = 4
+ },
+/turf/template_noop,
+/area/lavaland/surface/outdoors/unexplored/danger)
+
+(1,1,1) = {"
+c
+c
+c
+c
+c
+"}
+(2,1,1) = {"
+a
+c
+c
+c
+a
+"}
+(3,1,1) = {"
+b
+I
+w
+R
+M
+"}
+(4,1,1) = {"
+a
+c
+c
+c
+a
+"}
+(5,1,1) = {"
+c
+c
+c
+c
+c
+"}
diff --git a/_maps/map_files/RandomRuins/LavaRuins/chasm_bridges/lavaland_bridge_vertical_4.dmm b/_maps/map_files/RandomRuins/LavaRuins/chasm_bridges/lavaland_bridge_vertical_4.dmm
new file mode 100644
index 00000000000..7c187f4aeec
--- /dev/null
+++ b/_maps/map_files/RandomRuins/LavaRuins/chasm_bridges/lavaland_bridge_vertical_4.dmm
@@ -0,0 +1,49 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"a" = (
+/turf/simulated/floor/indestructible/hierophant/two,
+/area/lavaland/surface/outdoors/unexplored/danger)
+"b" = (
+/turf/simulated/floor/indestructible/hierophant,
+/area/lavaland/surface/outdoors/unexplored/danger)
+"c" = (
+/turf/template_noop,
+/area/lavaland/surface/outdoors/unexplored/danger)
+"y" = (
+/turf/simulated/wall/indestructible/hierophant,
+/area/lavaland/surface/outdoors/unexplored/danger)
+
+(1,1,1) = {"
+c
+c
+c
+c
+c
+"}
+(2,1,1) = {"
+y
+c
+c
+c
+y
+"}
+(3,1,1) = {"
+a
+a
+b
+a
+a
+"}
+(4,1,1) = {"
+y
+c
+c
+c
+y
+"}
+(5,1,1) = {"
+c
+c
+c
+c
+c
+"}
diff --git a/_maps/map_files/RandomRuins/LavaRuins/chasm_bridges/lavaland_bridge_vertical_5.dmm b/_maps/map_files/RandomRuins/LavaRuins/chasm_bridges/lavaland_bridge_vertical_5.dmm
new file mode 100644
index 00000000000..15f612927e4
--- /dev/null
+++ b/_maps/map_files/RandomRuins/LavaRuins/chasm_bridges/lavaland_bridge_vertical_5.dmm
@@ -0,0 +1,62 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"a" = (
+/turf/simulated/floor/wood,
+/area/lavaland/surface/outdoors/unexplored/danger)
+"b" = (
+/turf/simulated/floor/wood{
+ broken = 1;
+ icon_state = "wood-broken"
+ },
+/area/lavaland/surface/outdoors/unexplored/danger)
+"c" = (
+/turf/template_noop,
+/area/lavaland/surface/outdoors/unexplored/danger)
+"q" = (
+/turf/simulated/floor/wood{
+ icon_state = "wood-broken3"
+ },
+/area/lavaland/surface/outdoors/unexplored/danger)
+"y" = (
+/turf/simulated/wall/mineral/wood,
+/area/lavaland/surface/outdoors/unexplored/danger)
+"S" = (
+/turf/simulated/floor/wood{
+ icon_state = "wood-broken7"
+ },
+/area/lavaland/surface/outdoors/unexplored/danger)
+
+(1,1,1) = {"
+c
+c
+c
+c
+c
+"}
+(2,1,1) = {"
+y
+c
+c
+c
+y
+"}
+(3,1,1) = {"
+q
+a
+b
+a
+S
+"}
+(4,1,1) = {"
+y
+c
+c
+c
+y
+"}
+(5,1,1) = {"
+c
+c
+c
+c
+c
+"}
diff --git a/_maps/map_files/RandomRuins/LavaRuins/chasm_bridges/lavaland_bridge_vertical_6.dmm b/_maps/map_files/RandomRuins/LavaRuins/chasm_bridges/lavaland_bridge_vertical_6.dmm
new file mode 100644
index 00000000000..ae47effe5fc
--- /dev/null
+++ b/_maps/map_files/RandomRuins/LavaRuins/chasm_bridges/lavaland_bridge_vertical_6.dmm
@@ -0,0 +1,49 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"a" = (
+/obj/structure/lattice/catwalk/mining,
+/obj/structure/marker_beacon/dock_marker,
+/turf/template_noop,
+/area/lavaland/surface/outdoors/unexplored/danger)
+"b" = (
+/obj/structure/lattice/catwalk/mining,
+/turf/template_noop,
+/area/lavaland/surface/outdoors/unexplored/danger)
+"c" = (
+/turf/template_noop,
+/area/lavaland/surface/outdoors/unexplored/danger)
+
+(1,1,1) = {"
+c
+c
+c
+c
+c
+"}
+(2,1,1) = {"
+b
+c
+c
+c
+b
+"}
+(3,1,1) = {"
+b
+a
+b
+a
+b
+"}
+(4,1,1) = {"
+b
+c
+c
+c
+b
+"}
+(5,1,1) = {"
+c
+c
+c
+c
+c
+"}
diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_blooddrunk1.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_blooddrunk1.dmm
index 5629bb19b49..cb963246b39 100644
--- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_blooddrunk1.dmm
+++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_blooddrunk1.dmm
@@ -93,7 +93,7 @@
/obj/structure/stone_tile{
dir = 1
},
-/turf/simulated/floor/plating/lava/smooth/lava_land_surface,
+/turf/simulated/floor/plating/lava/smooth/mapping_lava,
/area/lavaland/surface/outdoors)
"r" = (
/obj/structure/stone_tile/block{
@@ -106,7 +106,7 @@
/obj/structure/stone_tile/cracked{
dir = 4
},
-/turf/simulated/floor/plating/lava/smooth/lava_land_surface,
+/turf/simulated/floor/plating/lava/smooth/mapping_lava,
/area/lavaland/surface/outdoors)
"t" = (
/obj/structure/stone_tile/surrounding/cracked{
@@ -115,14 +115,14 @@
/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner{
dir = 1
},
-/turf/simulated/floor/plating/lava/smooth/lava_land_surface,
+/turf/simulated/floor/plating/lava/smooth/mapping_lava,
/area/lavaland/surface/outdoors)
"u" = (
/obj/structure/stone_tile{
dir = 1
},
/obj/structure/stone_tile/block/cracked,
-/turf/simulated/floor/plating/lava/smooth/lava_land_surface,
+/turf/simulated/floor/plating/lava/smooth/mapping_lava,
/area/lavaland/surface/outdoors)
"v" = (
/obj/structure/stone_tile{
@@ -136,7 +136,7 @@
/obj/structure/stone_tile/block/cracked{
dir = 8
},
-/turf/simulated/floor/plating/lava/smooth/lava_land_surface,
+/turf/simulated/floor/plating/lava/smooth/mapping_lava,
/area/lavaland/surface/outdoors)
"x" = (
/obj/structure/stone_tile{
diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_cultaltar.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_cultaltar.dmm
index 052ac940448..eb87e9f8e66 100644
--- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_cultaltar.dmm
+++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_cultaltar.dmm
@@ -10,7 +10,7 @@
},
/area/ruin/unpowered/misc_lavaruin)
"c" = (
-/turf/simulated/floor/plating/lava/smooth/lava_land_surface,
+/turf/simulated/floor/plating/lava/smooth/mapping_lava,
/area/ruin/unpowered/misc_lavaruin)
"d" = (
/turf/simulated/wall/cult,
diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_dead_ratvar.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_dead_ratvar.dmm
index 66a8ba0e158..6db766c602d 100644
--- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_dead_ratvar.dmm
+++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_dead_ratvar.dmm
@@ -51,7 +51,7 @@
},
/area/lavaland/surface/outdoors/unexplored)
"l" = (
-/turf/simulated/floor/plating/lava/smooth/lava_land_surface,
+/turf/simulated/floor/plating/lava/smooth/mapping_lava,
/area/lavaland/surface/outdoors/unexplored)
"m" = (
/obj/item/clockwork/alloy_shards/medium,
@@ -75,7 +75,7 @@
/area/lavaland/surface/outdoors/unexplored)
"q" = (
/obj/structure/lattice/catwalk/clockwork,
-/turf/simulated/floor/plating/lava/smooth/lava_land_surface,
+/turf/simulated/floor/plating/lava/smooth/mapping_lava,
/area/lavaland/surface/outdoors/unexplored)
"r" = (
/obj/structure/lattice/clockwork,
diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_envy.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_envy.dmm
index 2628c8c4f24..8f328c20132 100644
--- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_envy.dmm
+++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_envy.dmm
@@ -6,7 +6,7 @@
/turf/simulated/mineral/volcanic/lava_land_surface,
/area/lavaland/surface/outdoors)
"c" = (
-/turf/simulated/floor/plating/lava/smooth/lava_land_surface,
+/turf/simulated/floor/plating/lava/smooth/mapping_lava,
/area/lavaland/surface/outdoors)
"d" = (
/obj/effect/spawner/random_spawners/wall_rusted_always,
diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_gluttony.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_gluttony.dmm
index c6636911f72..3684e0027ce 100644
--- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_gluttony.dmm
+++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_gluttony.dmm
@@ -6,7 +6,7 @@
/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors)
"c" = (
-/turf/simulated/floor/plating/lava/smooth/lava_land_surface,
+/turf/simulated/floor/plating/lava/smooth/mapping_lava,
/area/lavaland/surface/outdoors)
"d" = (
/obj/effect/baseturf_helper/lava_land/surface,
diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_greed.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_greed.dmm
index 14ef5982d63..7e1bc2f11e0 100644
--- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_greed.dmm
+++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_greed.dmm
@@ -6,7 +6,7 @@
/turf/simulated/mineral/volcanic/lava_land_surface,
/area/lavaland/surface/outdoors)
"c" = (
-/turf/simulated/floor/plating/lava/smooth/lava_land_surface,
+/turf/simulated/floor/plating/lava/smooth/mapping_lava,
/area/lavaland/surface/outdoors)
"d" = (
/obj/effect/baseturf_helper/lava_land/surface,
diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_monster_nest.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_monster_nest.dmm
index d1b00e4775a..51dcf1d6225 100644
--- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_monster_nest.dmm
+++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_monster_nest.dmm
@@ -8,7 +8,7 @@
/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors)
"m" = (
-/turf/simulated/floor/plating/lava/smooth/lava_land_surface,
+/turf/simulated/floor/plating/lava/smooth/mapping_lava,
/area/lavaland/surface/outdoors)
"r" = (
/obj/effect/mapping_helpers/no_lava,
diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_pride.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_pride.dmm
index 314a7285bf0..d308b8fcdaa 100644
--- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_pride.dmm
+++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_pride.dmm
@@ -6,7 +6,7 @@
/turf/simulated/mineral/volcanic/lava_land_surface,
/area/lavaland/surface/outdoors)
"c" = (
-/turf/simulated/floor/plating/lava/smooth/lava_land_surface,
+/turf/simulated/floor/plating/lava/smooth/mapping_lava,
/area/lavaland/surface/outdoors)
"d" = (
/obj/effect/baseturf_helper/lava_land/surface,
diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_sloth.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_sloth.dmm
index a3dd45e2845..f2cdee32a34 100644
--- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_sloth.dmm
+++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_sloth.dmm
@@ -3,7 +3,7 @@
/turf/simulated/wall/indestructible/riveted,
/area/ruin/unpowered/misc_lavaruin)
"b" = (
-/turf/simulated/floor/plating/lava/smooth/lava_land_surface,
+/turf/simulated/floor/plating/lava/smooth/mapping_lava,
/area/ruin/unpowered/misc_lavaruin)
"c" = (
/obj/item/paper/fluff/stations/lavaland/sloth/note,
diff --git a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_xeno_nest.dmm b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_xeno_nest.dmm
index b0323d3ed42..f0f246a4aa7 100644
--- a/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_xeno_nest.dmm
+++ b/_maps/map_files/RandomRuins/LavaRuins/lavaland_surface_xeno_nest.dmm
@@ -124,7 +124,7 @@
/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface,
/area/ruin/unpowered/xenonest)
"G" = (
-/turf/simulated/floor/plating/lava/smooth/lava_land_surface,
+/turf/simulated/floor/plating/lava/smooth/mapping_lava,
/area/lavaland/surface/outdoors)
"H" = (
/obj/structure/alien/weeds,
diff --git a/_maps/map_files/generic/Lavaland.dmm b/_maps/map_files/generic/Lavaland.dmm
index 1a17cc1a69d..fbe5798597d 100644
--- a/_maps/map_files/generic/Lavaland.dmm
+++ b/_maps/map_files/generic/Lavaland.dmm
@@ -60,7 +60,7 @@
/turf/simulated/mineral/random/volcanic,
/area/lavaland/surface/outdoors)
"aj" = (
-/turf/simulated/floor/plating/lava/smooth/lava_land_surface,
+/turf/simulated/floor/plating/lava/smooth/mapping_lava,
/area/lavaland/surface/outdoors)
"ak" = (
/turf/simulated/mineral/random/volcanic,
@@ -1779,7 +1779,7 @@
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4
},
-/turf/simulated/floor/plating/lava/smooth/lava_land_surface,
+/turf/simulated/floor/plating/lava/smooth/mapping_lava,
/area/lavaland/surface/outdoors)
"dP" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
@@ -1850,7 +1850,7 @@
dir = 1
},
/obj/structure/lattice/catwalk/mining,
-/turf/simulated/floor/plating/lava/smooth/lava_land_surface,
+/turf/simulated/floor/plating/lava/smooth/mapping_lava,
/area/lavaland/surface/outdoors)
"dU" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
@@ -3175,7 +3175,7 @@
/area/mine/sleeper)
"go" = (
/obj/structure/stone_tile/block,
-/turf/simulated/floor/plating/lava/smooth/lava_land_surface,
+/turf/simulated/floor/plating/lava/smooth/mapping_lava,
/area/lavaland/surface/outdoors)
"gp" = (
/obj/structure/closet/secure_closet/miner,
@@ -3417,13 +3417,13 @@
/obj/structure/stone_tile/block{
dir = 4
},
-/turf/simulated/floor/plating/lava/smooth/lava_land_surface,
+/turf/simulated/floor/plating/lava/smooth/mapping_lava,
/area/lavaland/surface/outdoors)
"gO" = (
/obj/structure/stone_tile/block{
dir = 8
},
-/turf/simulated/floor/plating/lava/smooth/lava_land_surface,
+/turf/simulated/floor/plating/lava/smooth/mapping_lava,
/area/lavaland/surface/outdoors)
"gP" = (
/obj/structure/stone_tile/slab,
@@ -3464,7 +3464,7 @@
/obj/structure/stone_tile/block{
dir = 1
},
-/turf/simulated/floor/plating/lava/smooth/lava_land_surface,
+/turf/simulated/floor/plating/lava/smooth/mapping_lava,
/area/lavaland/surface/outdoors)
"hv" = (
/obj/effect/decal/cleanable/dirt,
@@ -3750,7 +3750,7 @@
/obj/structure/stone_tile/surrounding_tile/cracked{
dir = 8
},
-/turf/simulated/floor/plating/lava/smooth/lava_land_surface,
+/turf/simulated/floor/plating/lava/smooth/mapping_lava,
/area/lavaland/surface/outdoors)
"jH" = (
/obj/structure/stone_tile/surrounding_tile{
@@ -3761,7 +3761,7 @@
/obj/structure/stone_tile/surrounding_tile/cracked{
dir = 4
},
-/turf/simulated/floor/plating/lava/smooth/lava_land_surface,
+/turf/simulated/floor/plating/lava/smooth/mapping_lava,
/area/lavaland/surface/outdoors)
"jK" = (
/turf/simulated/floor/plasteel{
@@ -3778,7 +3778,7 @@
/obj/structure/stone_tile/surrounding_tile/cracked{
dir = 8
},
-/turf/simulated/floor/plating/lava/smooth/lava_land_surface,
+/turf/simulated/floor/plating/lava/smooth/mapping_lava,
/area/lavaland/surface/outdoors)
"jN" = (
/obj/structure/stone_tile/surrounding_tile{
@@ -3789,7 +3789,7 @@
},
/obj/structure/stone_tile/surrounding_tile,
/obj/structure/stone_tile/center/cracked,
-/turf/simulated/floor/plating/lava/smooth/lava_land_surface,
+/turf/simulated/floor/plating/lava/smooth/mapping_lava,
/area/lavaland/surface/outdoors)
"jP" = (
/obj/effect/spawner/random_spawners/wall_rusted_maybe,
@@ -3870,7 +3870,7 @@
/obj/structure/stone_tile/surrounding_tile/cracked{
dir = 1
},
-/turf/simulated/floor/plating/lava/smooth/lava_land_surface,
+/turf/simulated/floor/plating/lava/smooth/mapping_lava,
/area/lavaland/surface/outdoors)
"kD" = (
/obj/structure/stone_tile/surrounding_tile{
@@ -3883,7 +3883,7 @@
dir = 8
},
/obj/structure/stone_tile/center,
-/turf/simulated/floor/plating/lava/smooth/lava_land_surface,
+/turf/simulated/floor/plating/lava/smooth/mapping_lava,
/area/lavaland/surface/outdoors)
"kH" = (
/obj/structure/stone_tile/surrounding_tile{
@@ -3894,7 +3894,7 @@
dir = 4
},
/obj/structure/stone_tile/center/cracked,
-/turf/simulated/floor/plating/lava/smooth/lava_land_surface,
+/turf/simulated/floor/plating/lava/smooth/mapping_lava,
/area/lavaland/surface/outdoors)
"kI" = (
/turf/simulated/wall/mineral/titanium,
@@ -3910,7 +3910,7 @@
dir = 1
},
/obj/structure/stone_tile/center,
-/turf/simulated/floor/plating/lava/smooth/lava_land_surface,
+/turf/simulated/floor/plating/lava/smooth/mapping_lava,
/area/lavaland/surface/outdoors)
"kM" = (
/obj/structure/stone_tile/block/cracked{
@@ -3996,7 +3996,7 @@
/obj/structure/stone_tile/cracked{
dir = 8
},
-/turf/simulated/floor/plating/lava/smooth/lava_land_surface,
+/turf/simulated/floor/plating/lava/smooth/mapping_lava,
/area/lavaland/surface/outdoors)
"lu" = (
/obj/structure/stone_tile/block/cracked{
@@ -4015,17 +4015,17 @@
/obj/structure/stone_tile/cracked{
dir = 1
},
-/turf/simulated/floor/plating/lava/smooth/lava_land_surface,
+/turf/simulated/floor/plating/lava/smooth/mapping_lava,
/area/lavaland/surface/outdoors)
"lw" = (
/obj/structure/stone_tile/cracked,
-/turf/simulated/floor/plating/lava/smooth/lava_land_surface,
+/turf/simulated/floor/plating/lava/smooth/mapping_lava,
/area/lavaland/surface/outdoors)
"ly" = (
/obj/structure/stone_tile/cracked{
dir = 1
},
-/turf/simulated/floor/plating/lava/smooth/lava_land_surface,
+/turf/simulated/floor/plating/lava/smooth/mapping_lava,
/area/lavaland/surface/outdoors)
"lz" = (
/obj/structure/stone_tile/cracked{
@@ -4034,7 +4034,7 @@
/obj/structure/stone_tile/block{
dir = 4
},
-/turf/simulated/floor/plating/lava/smooth/lava_land_surface,
+/turf/simulated/floor/plating/lava/smooth/mapping_lava,
/area/lavaland/surface/outdoors)
"lD" = (
/obj/structure/stone_tile/block/cracked{
@@ -4043,7 +4043,7 @@
/obj/structure/stone_tile/block/cracked{
dir = 8
},
-/turf/simulated/floor/plating/lava/smooth/lava_land_surface,
+/turf/simulated/floor/plating/lava/smooth/mapping_lava,
/area/lavaland/surface/outdoors)
"lE" = (
/obj/structure/stone_tile/block/cracked{
@@ -4052,7 +4052,7 @@
/obj/structure/stone_tile/cracked{
dir = 1
},
-/turf/simulated/floor/plating/lava/smooth/lava_land_surface,
+/turf/simulated/floor/plating/lava/smooth/mapping_lava,
/area/lavaland/surface/outdoors)
"lF" = (
/obj/structure/stone_tile/block/cracked{
@@ -4064,7 +4064,7 @@
/obj/structure/stone_tile{
dir = 8
},
-/turf/simulated/floor/plating/lava/smooth/lava_land_surface,
+/turf/simulated/floor/plating/lava/smooth/mapping_lava,
/area/lavaland/surface/outdoors)
"lG" = (
/obj/structure/stone_tile/block/cracked{
@@ -4077,7 +4077,7 @@
/obj/structure/stone_tile/cracked{
dir = 4
},
-/turf/simulated/floor/plating/lava/smooth/lava_land_surface,
+/turf/simulated/floor/plating/lava/smooth/mapping_lava,
/area/lavaland/surface/outdoors)
"lO" = (
/obj/effect/decal/cleanable/dirt,
@@ -4100,7 +4100,7 @@
/obj/structure/stone_tile/surrounding/cracked{
dir = 6
},
-/turf/simulated/floor/plating/lava/smooth/lava_land_surface,
+/turf/simulated/floor/plating/lava/smooth/mapping_lava,
/area/lavaland/surface/outdoors)
"lR" = (
/obj/structure/stone_tile/block/cracked{
@@ -4122,14 +4122,14 @@
/obj/structure/stone_tile/cracked{
dir = 8
},
-/turf/simulated/floor/plating/lava/smooth/lava_land_surface,
+/turf/simulated/floor/plating/lava/smooth/mapping_lava,
/area/lavaland/surface/outdoors)
"lW" = (
/obj/structure/stone_tile/block/cracked,
/obj/structure/stone_tile/block/cracked{
dir = 1
},
-/turf/simulated/floor/plating/lava/smooth/lava_land_surface,
+/turf/simulated/floor/plating/lava/smooth/mapping_lava,
/area/lavaland/surface/outdoors)
"lZ" = (
/obj/structure/stone_tile/block/cracked{
@@ -4138,7 +4138,7 @@
/obj/structure/stone_tile/cracked{
dir = 4
},
-/turf/simulated/floor/plating/lava/smooth/lava_land_surface,
+/turf/simulated/floor/plating/lava/smooth/mapping_lava,
/area/lavaland/surface/outdoors)
"ma" = (
/obj/structure/stone_tile/block/cracked{
@@ -4157,7 +4157,7 @@
/obj/structure/stone_tile/block{
dir = 8
},
-/turf/simulated/floor/plating/lava/smooth/lava_land_surface,
+/turf/simulated/floor/plating/lava/smooth/mapping_lava,
/area/lavaland/surface/outdoors)
"mi" = (
/obj/machinery/computer/security{
@@ -4188,7 +4188,7 @@
dir = 8
},
/obj/structure/stone_tile/cracked,
-/turf/simulated/floor/plating/lava/smooth/lava_land_surface,
+/turf/simulated/floor/plating/lava/smooth/mapping_lava,
/area/lavaland/surface/outdoors)
"mn" = (
/obj/structure/stone_tile/block/cracked,
@@ -4254,7 +4254,7 @@
/obj/structure/stone_tile{
dir = 4
},
-/turf/simulated/floor/plating/lava/smooth/lava_land_surface,
+/turf/simulated/floor/plating/lava/smooth/mapping_lava,
/area/lavaland/surface/outdoors)
"mw" = (
/obj/structure/stone_tile{
@@ -4263,11 +4263,11 @@
/obj/structure/stone_tile{
dir = 4
},
-/turf/simulated/floor/plating/lava/smooth/lava_land_surface,
+/turf/simulated/floor/plating/lava/smooth/mapping_lava,
/area/lavaland/surface/outdoors)
"mx" = (
/obj/structure/stone_tile,
-/turf/simulated/floor/plating/lava/smooth/lava_land_surface,
+/turf/simulated/floor/plating/lava/smooth/mapping_lava,
/area/lavaland/surface/outdoors)
"my" = (
/obj/structure/stone_tile/cracked{
@@ -4300,7 +4300,7 @@
/obj/structure/stone_tile{
dir = 1
},
-/turf/simulated/floor/plating/lava/smooth/lava_land_surface,
+/turf/simulated/floor/plating/lava/smooth/mapping_lava,
/area/lavaland/surface/outdoors)
"mD" = (
/obj/structure/stone_tile,
diff --git a/code/__DEFINES/misc_defines.dm b/code/__DEFINES/misc_defines.dm
index 387a43cadf1..b380d059cd8 100644
--- a/code/__DEFINES/misc_defines.dm
+++ b/code/__DEFINES/misc_defines.dm
@@ -546,3 +546,9 @@
#define DEADCHAT_ANARCHY_MODE (1<<1)
/// Mutes the democracy mode messages send to orbiters at the end of each cycle. Useful for when the cooldown is so low it'd get spammy.
#define MUTE_DEADCHAT_DEMOCRACY_MESSAGES (1<<2)
+
+// Lavaland cave design defines
+
+#define BLOCKED_BURROWS "Blocked Burrows"
+#define CLASSIC_CAVES "Classic Caves"
+#define DEADLY_DEEPROCK "Deadly Deeprock"
diff --git a/code/_globalvars/mapping_vars.dm b/code/_globalvars/mapping_vars.dm
index f734c6ed723..67857902c53 100644
--- a/code/_globalvars/mapping_vars.dm
+++ b/code/_globalvars/mapping_vars.dm
@@ -50,4 +50,6 @@ GLOBAL_LIST_EMPTY(space_ruins_templates)
GLOBAL_LIST_EMPTY(lava_ruins_templates)
GLOBAL_LIST_EMPTY(shelter_templates)
GLOBAL_LIST_EMPTY(shuttle_templates)
+GLOBAL_LIST_EMPTY(bridge_horizontal_templates)
+GLOBAL_LIST_EMPTY(bridge_vertical_templates)
GLOBAL_LIST_EMPTY(event_templates)
diff --git a/code/controllers/subsystem/non_firing/SSmapping.dm b/code/controllers/subsystem/non_firing/SSmapping.dm
index a823d924d8b..60cbe444e16 100644
--- a/code/controllers/subsystem/non_firing/SSmapping.dm
+++ b/code/controllers/subsystem/non_firing/SSmapping.dm
@@ -12,6 +12,10 @@ SUBSYSTEM_DEF(mapping)
var/list/ghostteleportlocs
///List of areas that exist on the station this shift
var/list/existing_station_areas
+ ///What do we have as the lavaland theme today?
+ var/turf/simulated/floor/lavaland_theme
+ ///What primary cave theme we have picked for cave generation today.
+ var/cave_theme
// This has to be here because world/New() uses [station_name()], which looks this datum up
/datum/controller/subsystem/mapping/PreInit()
@@ -36,6 +40,10 @@ SUBSYSTEM_DEF(mapping)
F << next_map.type
/datum/controller/subsystem/mapping/Initialize()
+ lavaland_theme = pick(/turf/simulated/floor/plating/lava/smooth/lava_land_surface, /turf/simulated/floor/plating/lava/smooth/lava_land_surface/plasma, /turf/simulated/floor/chasm/straight_down/lava_land_surface)
+ log_startup_progress("We feel like [lavaland_theme] today...") //We load this first. In the event some nerd ever makes a surface map, and we don't have it in lavaland in the event lavaland is disabled.
+ cave_theme = pick(BLOCKED_BURROWS, CLASSIC_CAVES, DEADLY_DEEPROCK)
+ log_startup_progress("We feel like [cave_theme] today...")
// Load all Z level templates
preloadTemplates()
@@ -63,8 +71,22 @@ SUBSYSTEM_DEF(mapping)
log_startup_progress("Populating lavaland...")
var/lavaland_setup_timer = start_watch()
seedRuins(list(level_name_to_num(MINING)), GLOB.configuration.ruins.lavaland_ruin_budget, /area/lavaland/surface/outdoors/unexplored, GLOB.lava_ruins_templates)
- spawn_rivers(level_name_to_num(MINING))
- log_startup_progress("Successfully populated lavaland in [stop_watch(lavaland_setup_timer)]s.")
+ switch(lavaland_theme)
+ if(/turf/simulated/floor/plating/lava/smooth/lava_land_surface)
+ spawn_rivers(level_name_to_num(MINING)) //Default spawn, no tweaks needed
+ if(/turf/simulated/floor/plating/lava/smooth/lava_land_surface/plasma) //More rivers, smaller
+ spawn_rivers(level_name_to_num(MINING), nodes = 2)
+ spawn_rivers(level_name_to_num(MINING), nodes = 2)
+ if(/turf/simulated/floor/chasm/straight_down/lava_land_surface) //Thiner chasms, bridges, reaches to edge of map.
+ spawn_rivers(level_name_to_num(MINING), nodes = 6, turf_type = /turf/simulated/floor/plating/lava/smooth/mapping_lava, whitelist_area = /area/lavaland/surface/outdoors, min_x = 50, min_y = 7, max_x = 250, max_y = 225, prob = 10, prob_loss = 5)
+ var/time_spent = stop_watch(lavaland_setup_timer)
+ log_startup_progress("Successfully populated lavaland in [time_spent]s.")
+ if(time_spent >= 10)
+ log_startup_progress("!!!ERROR!!! Lavaland took FAR too long to generate at [time_spent] seconds. Notify maintainers immediately! !!!ERROR!!!") //In 3 testing cases so far, I have had it take far too long to generate. I am 99% sure I have fixed this issue, but never hurts to be sure
+ WARNING("!!!ERROR!!! Lavaland took FAR too long to generate at [time_spent] seconds. Notify maintainers immediately! !!!ERROR!!!")
+ var/loud_annoying_alarm = sound('sound/machines/engine_alert1.ogg')
+ for(var/get_player_attention in GLOB.player_list)
+ SEND_SOUND(get_player_attention, loud_annoying_alarm)
else
log_startup_progress("Skipping lavaland ruins...")
diff --git a/code/datums/helper_datums/map_template.dm b/code/datums/helper_datums/map_template.dm
index da7f3c2b683..170f6773b1d 100644
--- a/code/datums/helper_datums/map_template.dm
+++ b/code/datums/helper_datums/map_template.dm
@@ -122,6 +122,7 @@
preloadRuinTemplates()
preloadShelterTemplates()
preloadShuttleTemplates()
+ preloadBridgeTemplates()
preloadEventTemplates()
/proc/preloadRuinTemplates()
@@ -170,6 +171,22 @@
GLOB.shuttle_templates[S.shuttle_id] = S
GLOB.map_templates[S.shuttle_id] = S
+/proc/preloadBridgeTemplates()
+ for(var/item in subtypesof(/datum/map_template/ruin/bridge/horizontal))
+ var/datum/map_template/ruin/bridge/horizontal/horizontal_type = item
+ if(!(initial(horizontal_type.suffix)))
+ continue
+ var/datum/map_template/ruin/bridge/horizontal/S = new horizontal_type()
+ GLOB.bridge_horizontal_templates[S.suffix] = S
+ GLOB.map_templates[S.suffix] = S
+ for(var/item in subtypesof(/datum/map_template/ruin/bridge/vertical))
+ var/datum/map_template/ruin/bridge/horizontal/vertical_type = item
+ if(!(initial(vertical_type.suffix)))
+ continue
+ var/datum/map_template/ruin/bridge/vertical/V = new vertical_type()
+ GLOB.bridge_vertical_templates[V.suffix] = V
+ GLOB.map_templates[V.suffix] = V
+
/proc/preloadEventTemplates()
for(var/item in subtypesof(/datum/map_template/event))
var/datum/map_template/event/event_type = item
diff --git a/code/datums/ruins/bridges/bridges.dm b/code/datums/ruins/bridges/bridges.dm
new file mode 100644
index 00000000000..a23da600dff
--- /dev/null
+++ b/code/datums/ruins/bridges/bridges.dm
@@ -0,0 +1,82 @@
+/datum/map_template/ruin/bridge
+ prefix = "_maps/map_files/RandomRuins/LavaRuins/chasm_bridges/"
+ ci_exclude = /datum/map_template/ruin/bridge
+
+/datum/map_template/ruin/bridge/horizontal
+ ci_exclude = /datum/map_template/ruin/bridge/horizontal
+
+/datum/map_template/ruin/bridge/horizontal/one
+ name = "Horizontal Bridge One"
+ suffix = "lavaland_bridge_horizontal_1.dmm"
+
+/datum/map_template/ruin/bridge/horizontal/two
+ name = "Horizontal Bridge Two"
+ suffix = "lavaland_bridge_horizontal_2.dmm"
+
+/datum/map_template/ruin/bridge/horizontal/three
+ name = "Horizontal Bridge Three"
+ suffix = "lavaland_bridge_horizontal_3.dmm"
+
+/datum/map_template/ruin/bridge/horizontal/four
+ name = "Horizontal Bridge Four"
+ suffix = "lavaland_bridge_horizontal_4.dmm"
+
+/datum/map_template/ruin/bridge/horizontal/five
+ name = "Horizontal Bridge Five"
+ suffix = "lavaland_bridge_horizontal_5.dmm"
+
+/datum/map_template/ruin/bridge/horizontal/six
+ name = "Horizontal Bridge Six"
+ suffix = "lavaland_bridge_horizontal_6.dmm"
+
+/datum/map_template/ruin/bridge/vertical
+ ci_exclude = /datum/map_template/ruin/bridge/vertical
+
+/datum/map_template/ruin/bridge/vertical/one
+ name = "Vertical Bridge One"
+ suffix = "lavaland_bridge_vertical_1.dmm"
+
+/datum/map_template/ruin/bridge/vertical/two
+ name = "Vertical Bridge Two"
+ suffix = "lavaland_bridge_vertical_2.dmm"
+
+/datum/map_template/ruin/bridge/vertical/three
+ name = "Vertical Bridge Three"
+ suffix = "lavaland_bridge_vertical_3.dmm"
+
+/datum/map_template/ruin/bridge/vertical/four
+ name = "Vertical Bridge Four"
+ suffix = "lavaland_bridge_vertical_4.dmm"
+
+/datum/map_template/ruin/bridge/vertical/five
+ name = "Vertical Bridge Five"
+ suffix = "lavaland_bridge_vertical_5.dmm"
+
+/datum/map_template/ruin/bridge/vertical/six
+ name = "Vertical Bridge Six"
+ suffix = "lavaland_bridge_vertical_6.dmm"
+
+/obj/effect/spawner/bridge
+ name = "Bridge spawner"
+ var/datum/map_template/ruin/bridge/template
+
+/obj/effect/spawner/bridge/Initialize(mapload)
+ . = ..()
+
+ var/turf/east = locate(x + 3, y, z)
+ var/turf/west = locate(x - 3, y, z)
+ var/turf/north = locate(x, y + 3, z)
+ var/turf/south = locate(x, y - 3, z)
+ var/turf/e1 = locate(x + 1, y, z)
+ var/turf/w1 = locate(x - 1, y, z)
+ var/turf/n1 = locate(x, y + 1, z)
+ var/turf/s1 = locate(x, y - 1, z)
+
+
+ if((ismineralturf(east) || istype(east, /turf/simulated/floor/plating/asteroid)) && (ismineralturf(west) || istype(west, /turf/simulated/floor/plating/asteroid)) && !(ismineralturf(n1) || istype(n1, /turf/simulated/floor/plating/asteroid)) && !(ismineralturf(s1) || istype(s1, /turf/simulated/floor/plating/asteroid)))
+ template = GLOB.bridge_horizontal_templates[pick("lavaland_bridge_horizontal_1.dmm", "lavaland_bridge_horizontal_2.dmm", "lavaland_bridge_horizontal_3.dmm", "lavaland_bridge_horizontal_4.dmm", "lavaland_bridge_horizontal_5.dmm", "lavaland_bridge_horizontal_6.dmm")]
+ template.load(loc, centered = TRUE)
+ else if((ismineralturf(north) || istype(north, /turf/simulated/floor/plating/asteroid)) && (ismineralturf(south) || istype(south, /turf/simulated/floor/plating/asteroid)) && !(ismineralturf(e1) || istype(e1, /turf/simulated/floor/plating/asteroid)) && !(ismineralturf(w1) || istype(w1, /turf/simulated/floor/plating/asteroid)))
+ template = GLOB.bridge_vertical_templates[pick("lavaland_bridge_vertical_1.dmm", "lavaland_bridge_vertical_2.dmm", "lavaland_bridge_vertical_3.dmm", "lavaland_bridge_vertical_4.dmm", "lavaland_bridge_vertical_5.dmm", "lavaland_bridge_vertical_6.dmm")]
+ template.load(loc, centered = TRUE)
+ return INITIALIZE_HINT_QDEL
diff --git a/code/game/turfs/simulated/floor/asteroid_floors.dm b/code/game/turfs/simulated/floor/asteroid_floors.dm
index 292fa382482..aef389caa42 100644
--- a/code/game/turfs/simulated/floor/asteroid_floors.dm
+++ b/code/game/turfs/simulated/floor/asteroid_floors.dm
@@ -148,7 +148,7 @@
nitrogen = 23
temperature = 300
planetary_atmos = TRUE
- baseturf = /turf/simulated/floor/plating/lava/smooth/lava_land_surface
+ baseturf = /turf/simulated/floor/plating/lava/smooth/mapping_lava
/turf/simulated/floor/plating/asteroid/airless
temperature = TCMB
@@ -198,7 +198,9 @@ GLOBAL_LIST_INIT(megafauna_spawn_list, list(/mob/living/simple_animal/hostile/me
if (!megafauna_spawn_list)
megafauna_spawn_list = GLOB.megafauna_spawn_list
if (!flora_spawn_list)
- flora_spawn_list = list(/obj/structure/flora/ash/leaf_shroom = 2 , /obj/structure/flora/ash/cap_shroom = 2 , /obj/structure/flora/ash/stem_shroom = 2 , /obj/structure/flora/ash/cacti = 1, /obj/structure/flora/ash/tall_shroom = 2)
+ flora_spawn_list = list(/obj/structure/flora/ash/leaf_shroom = 2, /obj/structure/flora/ash/cap_shroom = 2, /obj/structure/flora/ash/stem_shroom = 2, /obj/structure/flora/ash/cacti = 1, /obj/structure/flora/ash/tall_shroom = 2, /obj/structure/flora/ash/rock/style_random = 1)
+ if(SSmapping.cave_theme == BLOCKED_BURROWS)
+ flora_spawn_list += list(/obj/structure/flora/ash/rock/style_random = 3) //Let us see how this goes
. = ..()
if(!has_data)
produce_tunnel_from_data()
@@ -216,7 +218,18 @@ GLOBAL_LIST_INIT(megafauna_spawn_list, list(/mob/living/simple_animal/hostile/me
backward_cave_dir = angle2dir(dir2angle(forward_cave_dir) + 180)
/turf/simulated/floor/plating/asteroid/airless/cave/proc/produce_tunnel_from_data(tunnel_length, excluded_dir = -1)
- get_cave_data(tunnel_length, excluded_dir)
+ if(!tunnel_length)//This is a sub cave do not overide repeat do not overide
+ get_cave_data(tunnel_length, excluded_dir)
+ switch(SSmapping.cave_theme)
+ if(BLOCKED_BURROWS) //Longer on average
+ get_cave_data(rand(40, 60), excluded_dir)
+ if(CLASSIC_CAVES) //Classic
+ get_cave_data(tunnel_length, excluded_dir)
+ if(DEADLY_DEEPROCK) //Smaller into large rooms with more mobs.
+ get_cave_data(rand(20, 40), excluded_dir)
+ if(prob(25)) //Less caves due to big openings. This may lead to fauna inside 1x1 rooms. We'll call that a suprise mechanic
+ SpawnFloor(src, 75) //now with extra suprise
+ return
// Make our tunnels
make_tunnel(forward_cave_dir)
if(going_backwards)
@@ -233,7 +246,7 @@ GLOBAL_LIST_INIT(megafauna_spawn_list, list(/mob/living/simple_animal/hostile/me
break
var/list/L = list(45)
- if(ISODD(dir2angle(dir))) // We're going at an angle and we want thick angled tunnels.
+ if(ISODD(dir2angle(dir)) && (!SSmapping.cave_theme == BLOCKED_BURROWS || prob(33))) // We're going at an angle and we want thick angled tunnels.
L += -45
// Expand the edges of our tunnel
@@ -250,7 +263,13 @@ GLOBAL_LIST_INIT(megafauna_spawn_list, list(/mob/living/simple_animal/hostile/me
if(istype(tunnel))
// Small chance to have forks in our tunnel; otherwise dig our tunnel.
- if(i > 3 && prob(20))
+ var/caveprob = 20
+ switch(SSmapping.cave_theme)
+ if(BLOCKED_BURROWS) //Longer on average
+ caveprob = 30 //More splitting
+ if(DEADLY_DEEPROCK) //Smaller into large rooms with more mobs.
+ caveprob = 10 //Less splitting
+ if(i > 3 && prob(caveprob))
var/turf/simulated/floor/plating/asteroid/airless/cave/C = tunnel.ChangeTurf(data_having_type, FALSE, TRUE)
C.going_backwards = FALSE
C.produce_tunnel_from_data(rand(10, 15), dir)
@@ -262,11 +281,47 @@ GLOBAL_LIST_INIT(megafauna_spawn_list, list(/mob/living/simple_animal/hostile/me
// Chance to change our direction left or right.
if(i > 2 && prob(33))
// We can't go a full loop though
- next_angle = -next_angle
+ if(!SSmapping.cave_theme == BLOCKED_BURROWS || prob(60))
+ next_angle = -next_angle
setDir(angle2dir(dir2angle(dir) )+ next_angle)
+ if(length -2 == i && !has_data) //Branches will not make this
+ SpawnRoom(tunnel)
+/turf/simulated/floor/plating/asteroid/airless/cave/proc/SpawnRoom(turf/T)
+ switch(SSmapping.cave_theme)
+ if(DEADLY_DEEPROCK)
+ var/tempradius = rand(10, 15)
+ var/probmodifer = 43 * tempradius //Yes this is a magic number, it is a magic number that works well.
+ for(var/turf/NT in circlerangeturfs(T, tempradius))
+ var/distance = (max(get_dist(T, NT), 1)) //Get dist throws -1 if same turf
+ if(prob(min(probmodifer / distance, 100)))
+ if(ismineralturf(NT) || istype(NT, /turf/simulated/floor/plating/asteroid)) //No spawning on lava / other ruins
+ SpawnFloor(NT, 50) //Room has higher probabilty.
+ if(prob(25))
+ tempradius = round(tempradius / 3)
+ var/turf/oasis_lake = pickweight(list(/turf/simulated/floor/plating/lava/smooth/lava_land_surface = 4, /turf/simulated/floor/plating/lava/smooth/lava_land_surface/plasma = 4, /turf/simulated/floor/chasm/straight_down/lava_land_surface = 4, /turf/simulated/floor/plating/lava/smooth/mapping_lava = 6, /turf/simulated/floor/beach/away/water = 1, /turf/simulated/floor/plating/asteroid = 1))
+ if(oasis_lake == /turf/simulated/floor/plating/asteroid)
+ new /obj/effect/spawner/oasisrock(T, tempradius)
+ for(var/turf/oasis in circlerangeturfs(T, tempradius))
+ oasis.ChangeTurf(oasis_lake, ignore_air = TRUE)
-/turf/simulated/floor/plating/asteroid/airless/cave/proc/SpawnFloor(turf/T)
+/obj/effect/spawner/oasisrock
+ name = "Oasis rock spawner"
+
+/obj/effect/spawner/oasisrock/Initialize(mapload, radius)
+ . = ..()
+
+ addtimer(CALLBACK(src, PROC_REF(make_rock), radius), 5 SECONDS)
+
+/obj/effect/spawner/oasisrock/proc/make_rock(radius)
+ for(var/turf/oasis in circlerangeturfs(get_turf(src), radius))
+ oasis.ChangeTurf(/turf/simulated/mineral/random/high_chance/volcanic, ignore_air = TRUE)
+ var/list/valid_turfs = RANGE_EDGE_TURFS(radius + 2, src)
+ for(var/mob/M in range(src, radius)) //We don't want mobs inside the ore rock
+ M.forceMove(pick(valid_turfs))
+ qdel(src)
+
+/turf/simulated/floor/plating/asteroid/airless/cave/proc/SpawnFloor(turf/T, monsterprob = 30)
for(var/S in RANGE_TURFS(1, src))
var/turf/NT = S
if(!NT || isspaceturf(NT) || istype(NT.loc, /area/mine/explored) || istype(NT.loc, /area/lavaland/surface/outdoors/explored))
@@ -276,11 +331,11 @@ GLOBAL_LIST_INIT(megafauna_spawn_list, list(/mob/living/simple_animal/hostile/me
return
SpawnFlora(T)
- SpawnMonster(T)
+ SpawnMonster(T, monsterprob)
T.ChangeTurf(turf_type, FALSE, FALSE, TRUE)
-/turf/simulated/floor/plating/asteroid/airless/cave/proc/SpawnMonster(turf/T)
- if(prob(30))
+/turf/simulated/floor/plating/asteroid/airless/cave/proc/SpawnMonster(turf/T, monsterprob = 30)
+ if(prob(monsterprob))
if(istype(loc, /area/mine/explored) || !istype(loc, /area/lavaland/surface/outdoors/unexplored))
return
var/randumb = pickweight(mob_spawn_list)
@@ -291,11 +346,17 @@ GLOBAL_LIST_INIT(megafauna_spawn_list, list(/mob/living/simple_animal/hostile/me
randumb = maybe_boss
else //this is not danger, don't spawn a boss, spawn something else
randumb = pickweight(mob_spawn_list)
-
- for(var/thing in urange(12, T)) //prevents mob clumps
+ var/scanrange = 12
+ var/megafaunarange = 7
+ switch(SSmapping.cave_theme)
+ if(DEADLY_DEEPROCK)
+ if(prob(50) && monsterprob > 30)
+ scanrange = rand(4, 7)
+ megafaunarange = scanrange
+ for(var/thing in urange(scanrange, T)) //prevents mob clumps
if(!ishostile(thing) && !istype(thing, /obj/structure/spawner))
continue
- if((ismegafauna(randumb) || ismegafauna(thing)) && get_dist(T, thing) <= 7)
+ if((ismegafauna(randumb) || ismegafauna(thing)) && get_dist(T, thing) <= megafaunarange)
return //if there's a megafauna within standard view don't spawn anything at all
if(ispath(randumb, /mob/living/simple_animal/hostile/asteroid) || istype(thing, /mob/living/simple_animal/hostile/asteroid))
return //if the random is a standard mob, avoid spawning if there's another one within 12 tiles
@@ -314,7 +375,11 @@ GLOBAL_LIST_INIT(megafauna_spawn_list, list(/mob/living/simple_animal/hostile/me
#undef SPAWN_BUBBLEGUM
/turf/simulated/floor/plating/asteroid/airless/cave/proc/SpawnFlora(turf/T)
- if(prob(12))
+ var/floraprob = 12
+ switch(SSmapping.cave_theme)
+ if(BLOCKED_BURROWS)
+ floraprob = 30 //Lots of folliage, lots of blockage
+ if(prob(floraprob))
if(istype(loc, /area/mine/explored) || istype(loc, /area/lavaland/surface/outdoors/explored))
return
var/randumb = pickweight(flora_spawn_list)
diff --git a/code/game/turfs/simulated/floor/chasm.dm b/code/game/turfs/simulated/floor/chasm.dm
index ab1d0711071..20cd70e4ef6 100644
--- a/code/game/turfs/simulated/floor/chasm.dm
+++ b/code/game/turfs/simulated/floor/chasm.dm
@@ -9,6 +9,8 @@
smoothing_groups = list(SMOOTH_GROUP_TURF, SMOOTH_GROUP_TURF_CHASM)
canSmoothWith = list(SMOOTH_GROUP_TURF_CHASM)
density = TRUE //This will prevent hostile mobs from pathing into chasms, while the canpass override will still let it function like an open turf
+ layer = 1.7
+ intact = 0
var/static/list/falling_atoms = list() //Atoms currently falling into the chasm
var/static/list/forbidden_types = typecacheof(list(
/obj/singularity,
@@ -24,7 +26,10 @@
/obj/effect/collapse,
/obj/effect/particle_effect/ion_trails,
/obj/effect/abstract,
- /obj/effect/ebeam
+ /obj/effect/ebeam,
+ /obj/effect/spawner,
+ /obj/structure/railing,
+ /obj/machinery/atmospherics/pipe/simple
))
var/drop_x = 1
var/drop_y = 1
@@ -65,7 +70,7 @@
qdel(L)
playsound(src, 'sound/weapons/genhit.ogg', 50, 1)
to_chat(user, "You build a floor.")
- ChangeTurf(/turf/simulated/floor/plating)
+ ChangeTurf(/turf/simulated/floor/plating, keep_icon = FALSE)
else
to_chat(user, "You need one floor tile to build a floor!")
else
@@ -140,9 +145,9 @@
nitrogen = 23
temperature = 300
planetary_atmos = TRUE
- baseturf = /turf/simulated/floor/chasm/straight_down/lava_land_surface
- light_range = 1.9 //slightly less range than lava
- light_power = 0.65 //less bright, too
+ baseturf = /turf/simulated/floor/chasm/straight_down/lava_land_surface //Chasms should not turn into lava
+ light_range = 2
+ light_power = 0.75
light_color = LIGHT_COLOR_LAVA //let's just say you're falling into lava, that makes sense right
/turf/simulated/floor/chasm/straight_down/lava_land_surface/drop(atom/movable/AM)
diff --git a/code/game/turfs/simulated/floor/lava.dm b/code/game/turfs/simulated/floor/lava.dm
index 66d8fb8dc0a..3d207719e7b 100644
--- a/code/game/turfs/simulated/floor/lava.dm
+++ b/code/game/turfs/simulated/floor/lava.dm
@@ -56,7 +56,7 @@
return FALSE
/turf/simulated/floor/plating/lava/proc/burn_stuff(AM)
- . = 0
+ . = FALSE
if(find_safeties())
return FALSE
@@ -71,7 +71,7 @@
continue
if((O.resistance_flags & (LAVA_PROOF|INDESTRUCTIBLE)) || O.throwing)
continue
- . = 1
+ . = TRUE
if((O.resistance_flags & (ON_FIRE)))
continue
if(!(O.resistance_flags & FLAMMABLE))
@@ -83,7 +83,7 @@
O.fire_act(10000, 1000)
else if(isliving(thing))
- . = 1
+ . = TRUE
var/mob/living/L = thing
if(L.flying)
continue //YOU'RE FLYING OVER IT
@@ -142,3 +142,101 @@
/turf/simulated/floor/plating/lava/smooth/airless
temperature = TCMB
+
+/turf/simulated/floor/plating/lava/smooth/lava_land_surface/plasma
+ name = "liquid plasma"
+ desc = "A flowing stream of chilled liquid plasma. You probably shouldn't get in."
+ icon = 'icons/turf/floors/liquidplasma.dmi'
+ icon_state = "liquidplasma-255"
+ base_icon_state = "liquidplasma"
+ baseturf = /turf/simulated/floor/plating/lava/smooth/lava_land_surface/plasma
+
+ light_range = 3
+ light_power = 0.75
+ light_color = LIGHT_COLOR_PINK
+
+/turf/simulated/floor/plating/lava/smooth/lava_land_surface/plasma/examine(mob/user)
+ . = ..()
+ . += "Some liquid plasma could probably be scooped up with a container."
+
+/turf/simulated/floor/plating/lava/smooth/lava_land_surface/plasma/attackby(obj/item/I, mob/user, params)
+ if(!I.is_open_container())
+ return ..()
+ if(!I.reagents.add_reagent("plasma", 10))
+ to_chat(user, "[I] is full.")
+ return
+ to_chat(user, "You scoop out some plasma from the [src] using [I].")
+
+/turf/simulated/floor/plating/lava/smooth/lava_land_surface/plasma/burn_stuff(AM)
+ . = FALSE
+ if(find_safeties())
+ return FALSE
+
+ var/thing_to_check = src
+ if(AM)
+ thing_to_check = list(AM)
+ for(var/thing in thing_to_check)
+ if(isobj(thing))
+ var/obj/O = thing
+ if(!O.simulated)
+ continue
+ if((O.resistance_flags & (LAVA_PROOF|INDESTRUCTIBLE)) || O.throwing)
+ continue
+ . = TRUE
+ if((O.resistance_flags & ON_FIRE))
+ continue
+ if(!(O.resistance_flags & FLAMMABLE))
+ O.resistance_flags |= FLAMMABLE //Even fireproof things burn up in lava
+ if(O.resistance_flags & FIRE_PROOF)
+ O.resistance_flags &= ~FIRE_PROOF
+ if(O.armor.getRating(FIRE) > 50) //obj with 100% fire armor still get slowly burned away.
+ O.armor = O.armor.setRating(fire_value = 50)
+ O.fire_act(10000, 1000)
+
+ if(!isliving(thing))
+ continue
+ . = TRUE
+ var/mob/living/burn_living = thing
+ if(burn_living.flying)
+ continue //YOU'RE FLYING OVER IT
+ var/buckle_check = burn_living.buckling
+ if(!buckle_check)
+ buckle_check = burn_living.buckled
+ if(isobj(buckle_check))
+ var/obj/O = buckle_check
+ if(O.resistance_flags & LAVA_PROOF)
+ continue
+ else if(isliving(buckle_check))
+ var/mob/living/live = buckle_check
+ if("lava" in live.weather_immunities)
+ continue
+ if("lava" in burn_living.weather_immunities)
+ continue
+ burn_living.adjustFireLoss(2)
+ if(QDELETED(burn_living))
+ return
+ burn_living.adjust_fire_stacks(20) //dipping into a stream of plasma would probably make you more flammable than usual
+ burn_living.IgniteMob()
+ burn_living.adjust_bodytemperature(-rand(50, 65)) //its cold, man
+ if(!ishuman(burn_living) || prob(65))
+ return
+ var/mob/living/carbon/human/burn_human = burn_living
+ var/datum/species/burn_species = burn_human.dna.species
+ if(istype(burn_species, /datum/species/plasmaman) || istype(burn_species, /datum/species/machine)) //ignore plasmamen/robotic species.
+ return
+
+ burn_human.adjustToxLoss(15) //Cold mutagen is bad for you, more at 11.
+ burn_human.adjustFireLoss(15)
+
+/turf/simulated/floor/plating/lava/smooth/mapping_lava
+ name = "Adaptive lava / chasm / plasma"
+ icon_state = "mappinglava"
+ base_icon_state = "mappinglava"
+ baseturf = /turf/simulated/floor/plating/lava/smooth/mapping_lava
+
+
+/turf/simulated/floor/plating/lava/smooth/mapping_lava/Initialize(mapload)
+ . = ..()
+ ChangeTurf(SSmapping.lavaland_theme)
+
+
diff --git a/code/game/turfs/simulated/minerals.dm b/code/game/turfs/simulated/minerals.dm
index b593aad49e1..4e2697eced5 100644
--- a/code/game/turfs/simulated/minerals.dm
+++ b/code/game/turfs/simulated/minerals.dm
@@ -251,7 +251,7 @@
/turf/simulated/mineral/random/high_chance/volcanic
environment_type = "basalt"
turf_type = /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface
- baseturf = /turf/simulated/floor/plating/lava/smooth/lava_land_surface
+ baseturf = /turf/simulated/floor/plating/lava/smooth/mapping_lava
oxygen = 14
nitrogen = 23
temperature = 300
@@ -271,7 +271,7 @@
/turf/simulated/mineral/random/volcanic
environment_type = "basalt"
turf_type = /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface
- baseturf = /turf/simulated/floor/plating/lava/smooth/lava_land_surface
+ baseturf = /turf/simulated/floor/plating/lava/smooth/mapping_lava
oxygen = 14
nitrogen = 23
temperature = 300
@@ -293,7 +293,7 @@
/turf/simulated/mineral/random/labormineral/volcanic
environment_type = "basalt"
turf_type = /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface
- baseturf = /turf/simulated/floor/plating/lava/smooth/lava_land_surface
+ baseturf = /turf/simulated/floor/plating/lava/smooth/mapping_lava
oxygen = 14
nitrogen = 23
temperature = 300
@@ -467,7 +467,7 @@
/turf/simulated/mineral/volcanic/lava_land_surface
environment_type = "basalt"
turf_type = /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface
- baseturf = /turf/simulated/floor/plating/lava/smooth/lava_land_surface
+ baseturf = /turf/simulated/floor/plating/lava/smooth/mapping_lava
defer_change = 1
//gibtonite state defines
diff --git a/code/game/turfs/simulated/river.dm b/code/game/turfs/simulated/river.dm
index 6547a8922db..883ea8f4a4e 100644
--- a/code/game/turfs/simulated/river.dm
+++ b/code/game/turfs/simulated/river.dm
@@ -4,7 +4,7 @@
#define RANDOM_LOWER_X 50
#define RANDOM_LOWER_Y 50
-/proc/spawn_rivers(target_z, nodes = 4, turf_type = /turf/simulated/floor/plating/lava/smooth/lava_land_surface, whitelist_area = /area/lavaland/surface/outdoors, min_x = RANDOM_LOWER_X, min_y = RANDOM_LOWER_Y, max_x = RANDOM_UPPER_X, max_y = RANDOM_UPPER_Y)
+/proc/spawn_rivers(target_z, nodes = 4, turf_type = /turf/simulated/floor/plating/lava/smooth/mapping_lava, whitelist_area = /area/lavaland/surface/outdoors, min_x = RANDOM_LOWER_X, min_y = RANDOM_LOWER_Y, max_x = RANDOM_UPPER_X, max_y = RANDOM_UPPER_Y, prob = 25, prob_loss = 11)
var/list/river_nodes = list()
var/num_spawned = 0
var/list/possible_locs = block(locate(min_x, min_y, target_z), locate(max_x, max_y, target_z))
@@ -46,6 +46,9 @@
cur_dir = get_dir(cur_turf, target_turf)
cur_turf = get_step(cur_turf, cur_dir)
+ if(cur_turf == null) //This might be the fuck up. Kill the loop if this happens
+ message_admins("Encountered a null turf in river loop.")
+ break
var/area/new_area = get_area(cur_turf)
if(!istype(new_area, whitelist_area) || (cur_turf.flags & NO_LAVA_GEN)) //Rivers will skip ruins
detouring = 0
@@ -54,7 +57,9 @@
continue
else
var/turf/river_turf = cur_turf.ChangeTurf(turf_type, ignore_air = TRUE)
- river_turf.Spread(25, 11, whitelist_area)
+ if(prob(1))
+ new /obj/effect/spawner/bridge(river_turf)
+ river_turf.Spread(prob, prob_loss, whitelist_area)
for(var/WP in river_nodes)
qdel(WP)
@@ -91,6 +96,8 @@
var/turf/T = F
if(!istype(T, logged_turf_type) && T.ChangeTurf(type, ignore_air = TRUE) && prob(probability))
T.Spread(probability - prob_loss, prob_loss, whitelisted_area)
+ if(prob(1))
+ new /obj/effect/spawner/bridge(T)
for(var/F in diagonal_turfs) //diagonal turfs only sometimes change, but will always spread if changed
var/turf/T = F
@@ -99,6 +106,8 @@
else if(ismineralturf(T))
var/turf/simulated/mineral/M = T
M.ChangeTurf(M.turf_type, ignore_air = TRUE)
+ if(prob(1))
+ new /obj/effect/spawner/bridge(M)
#undef RANDOM_UPPER_X
diff --git a/code/modules/mapping/mapping_helpers.dm b/code/modules/mapping/mapping_helpers.dm
index d6a528f1f6f..56665987307 100644
--- a/code/modules/mapping/mapping_helpers.dm
+++ b/code/modules/mapping/mapping_helpers.dm
@@ -52,7 +52,7 @@
/obj/effect/baseturf_helper/lava_land/surface
name = "lavaland baseturf editor"
- baseturf = /turf/simulated/floor/plating/lava/smooth/lava_land_surface
+ baseturf = /turf/simulated/floor/plating/lava/smooth/mapping_lava
/obj/effect/mapping_helpers
icon = 'icons/effects/mapping_helpers.dmi'
diff --git a/code/modules/mining/lavaland/ash_flora.dm b/code/modules/mining/lavaland/ash_flora.dm
index c7557ccea6b..7a9d08733e3 100644
--- a/code/modules/mining/lavaland/ash_flora.dm
+++ b/code/modules/mining/lavaland/ash_flora.dm
@@ -17,6 +17,7 @@
var/harvest_message_med = "You pick a mushroom, carefully collecting the shavings from its cap."
var/harvest_message_high = "You harvest and collect shavings from several mushroom caps."
var/harvested = FALSE
+ var/delete_on_harvest = FALSE
var/base_icon
var/regrowth_time_low = 8 MINUTES
var/regrowth_time_high = 16 MINUTES
@@ -46,6 +47,9 @@
name = harvested_name
desc = harvested_desc
harvested = TRUE
+ if(delete_on_harvest)
+ qdel(src)
+ return 1
addtimer(CALLBACK(src, PROC_REF(regrow)), rand(regrowth_time_low, regrowth_time_high))
return 1
@@ -143,6 +147,40 @@
// min dmg 3, max dmg 6, prob(70)
AddComponent(/datum/component/caltrop, 3, 6, 70)
+
+/*********
+ * Rocks *
+ *********/
+// (I know these aren't plants)
+
+/obj/structure/flora/ash/rock
+ name = "large rock"
+ desc = "A volcanic rock. Pioneers used to ride these babies for miles."
+ icon_state = "basalt1"
+ density = TRUE
+ resistance_flags = FIRE_PROOF
+ harvest = /obj/item/stack/ore/glass/basalt
+ harvest_time = 6 SECONDS
+ harvest_amount_low = 10
+ harvest_amount_high = 20
+ harvest_message_low = "You finish mining the rock."
+ harvest_message_med = "You finish mining the rock."
+ harvest_message_high = "You finish mining the rock."
+ delete_on_harvest = TRUE
+
+/obj/structure/flora/ash/rock/style_2
+ icon_state = "basalt2"
+
+/obj/structure/flora/ash/rock/style_3
+ icon_state = "basalt3"
+
+/obj/structure/flora/ash/rock/style_4
+ icon_state = "basalt4"
+
+/obj/structure/flora/ash/rock/style_random/Initialize(mapload)
+ . = ..()
+ icon_state = "basalt[rand(1, 4)]"
+
/obj/item/reagent_containers/food/snacks/grown/ash_flora
name = "mushroom shavings"
desc = "Some shavings from a tall mushroom. With enough, might serve as a bowl."
diff --git a/icons/mob/hud.dmi b/icons/mob/hud.dmi
index aa4f84098de..fa2d49111f9 100644
Binary files a/icons/mob/hud.dmi and b/icons/mob/hud.dmi differ
diff --git a/icons/obj/lavaland/ash_flora.dmi b/icons/obj/lavaland/ash_flora.dmi
index c8c128a0ab5..3c262cd882c 100644
Binary files a/icons/obj/lavaland/ash_flora.dmi and b/icons/obj/lavaland/ash_flora.dmi differ
diff --git a/icons/turf/floors/lava.dmi b/icons/turf/floors/lava.dmi
index 3b889c9a5f6..f3c51368fec 100644
Binary files a/icons/turf/floors/lava.dmi and b/icons/turf/floors/lava.dmi differ
diff --git a/icons/turf/floors/liquidplasma.dmi b/icons/turf/floors/liquidplasma.dmi
new file mode 100644
index 00000000000..f4917c23878
Binary files /dev/null and b/icons/turf/floors/liquidplasma.dmi differ
diff --git a/paradise.dme b/paradise.dme
index b0feee6edf6..9cc94c4cdb1 100644
--- a/paradise.dme
+++ b/paradise.dme
@@ -476,6 +476,7 @@
#include "code\datums\outfits\vv_outfit.dm"
#include "code\datums\ruins\lavaland.dm"
#include "code\datums\ruins\space_ruins.dm"
+#include "code\datums\ruins\bridges\bridges.dm"
#include "code\datums\spell_cooldown\spell_charges.dm"
#include "code\datums\spell_cooldown\spell_cooldown.dm"
#include "code\datums\spell_handler\alien_spell_handler.dm"