From 8803f536b7f6ba72e3aa142107d2c0fbdee180e4 Mon Sep 17 00:00:00 2001 From: Qwertytoforty <52090703+Qwertytoforty@users.noreply.github.com> Date: Fri, 1 Sep 2023 17:40:39 -0400 Subject: [PATCH] [READY FOR REVIEW] Lava land generation overhaul / variety (#21838) * she lavas on my land till I chasm? * need this * whoops * qwerty you are a dumbass * now with 12 more maps per map * repaths mesons, advanced mesons / meson implants show chasms * more stuff * range not radius dipshit * sprites yipee * define it * undo mesons * removes things I missed * Apply suggestions from code review Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> * I'm lavaing it --------- Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> --- .../lavaland_bridge_horizontal_1.dmm | 46 ++++++++ .../lavaland_bridge_horizontal_2.dmm | 46 ++++++++ .../lavaland_bridge_horizontal_3.dmm | 73 ++++++++++++ .../lavaland_bridge_horizontal_4.dmm | 49 +++++++++ .../lavaland_bridge_horizontal_5.dmm | 56 ++++++++++ .../lavaland_bridge_horizontal_6.dmm | 49 +++++++++ .../lavaland_bridge_vertical_1.dmm | 46 ++++++++ .../lavaland_bridge_vertical_2.dmm | 46 ++++++++ .../lavaland_bridge_vertical_3.dmm | 83 ++++++++++++++ .../lavaland_bridge_vertical_4.dmm | 49 +++++++++ .../lavaland_bridge_vertical_5.dmm | 62 +++++++++++ .../lavaland_bridge_vertical_6.dmm | 49 +++++++++ .../lavaland_surface_blooddrunk1.dmm | 10 +- .../LavaRuins/lavaland_surface_cultaltar.dmm | 2 +- .../lavaland_surface_dead_ratvar.dmm | 4 +- .../LavaRuins/lavaland_surface_envy.dmm | 2 +- .../LavaRuins/lavaland_surface_gluttony.dmm | 2 +- .../LavaRuins/lavaland_surface_greed.dmm | 2 +- .../lavaland_surface_monster_nest.dmm | 2 +- .../LavaRuins/lavaland_surface_pride.dmm | 2 +- .../LavaRuins/lavaland_surface_sloth.dmm | 2 +- .../LavaRuins/lavaland_surface_xeno_nest.dmm | 2 +- _maps/map_files/generic/Lavaland.dmm | 68 ++++++------ code/__DEFINES/misc_defines.dm | 6 + code/_globalvars/mapping_vars.dm | 2 + .../subsystem/non_firing/SSmapping.dm | 26 ++++- code/datums/helper_datums/map_template.dm | 17 +++ code/datums/ruins/bridges/bridges.dm | 82 ++++++++++++++ .../turfs/simulated/floor/asteroid_floors.dm | 93 +++++++++++++--- code/game/turfs/simulated/floor/chasm.dm | 15 ++- code/game/turfs/simulated/floor/lava.dm | 104 +++++++++++++++++- code/game/turfs/simulated/minerals.dm | 8 +- code/game/turfs/simulated/river.dm | 13 ++- code/modules/mapping/mapping_helpers.dm | 2 +- code/modules/mining/lavaland/ash_flora.dm | 38 +++++++ icons/mob/hud.dmi | Bin 16247 -> 16268 bytes icons/obj/lavaland/ash_flora.dmi | Bin 17974 -> 20449 bytes icons/turf/floors/lava.dmi | Bin 9697 -> 15279 bytes icons/turf/floors/liquidplasma.dmi | Bin 0 -> 37097 bytes paradise.dme | 1 + 40 files changed, 1079 insertions(+), 80 deletions(-) create mode 100644 _maps/map_files/RandomRuins/LavaRuins/chasm_bridges/lavaland_bridge_horizontal_1.dmm create mode 100644 _maps/map_files/RandomRuins/LavaRuins/chasm_bridges/lavaland_bridge_horizontal_2.dmm create mode 100644 _maps/map_files/RandomRuins/LavaRuins/chasm_bridges/lavaland_bridge_horizontal_3.dmm create mode 100644 _maps/map_files/RandomRuins/LavaRuins/chasm_bridges/lavaland_bridge_horizontal_4.dmm create mode 100644 _maps/map_files/RandomRuins/LavaRuins/chasm_bridges/lavaland_bridge_horizontal_5.dmm create mode 100644 _maps/map_files/RandomRuins/LavaRuins/chasm_bridges/lavaland_bridge_horizontal_6.dmm create mode 100644 _maps/map_files/RandomRuins/LavaRuins/chasm_bridges/lavaland_bridge_vertical_1.dmm create mode 100644 _maps/map_files/RandomRuins/LavaRuins/chasm_bridges/lavaland_bridge_vertical_2.dmm create mode 100644 _maps/map_files/RandomRuins/LavaRuins/chasm_bridges/lavaland_bridge_vertical_3.dmm create mode 100644 _maps/map_files/RandomRuins/LavaRuins/chasm_bridges/lavaland_bridge_vertical_4.dmm create mode 100644 _maps/map_files/RandomRuins/LavaRuins/chasm_bridges/lavaland_bridge_vertical_5.dmm create mode 100644 _maps/map_files/RandomRuins/LavaRuins/chasm_bridges/lavaland_bridge_vertical_6.dmm create mode 100644 code/datums/ruins/bridges/bridges.dm create mode 100644 icons/turf/floors/liquidplasma.dmi 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 aa4f84098de6ed3649525d4f2e8501046efa35bb..fa2d49111f9b44e62158f1456a0d4c900d719c61 100644 GIT binary patch delta 868 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 B=9}ez2Lu*06a%v+XC{iHV{+#xlievSZ8{|cy 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 literal 17974 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

3zqt-#Caq+fN4B8ytZDWSmE%sa0s* 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

AsH~@>kDfpGC~ZStZ(!2bx6yPv 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 IQ!y@>55^_`geW zEdyvG%jELqHT(^h%)lX&o7teo)7?`FQ&%~<=NW-4Fb)@s?Nnb~H{o^>+C#1KqDPk4iBJ?E2sza^dQm z5?$-qqp9q7W1=BDuM6Wn6kZuDD3N2REOGT}sGnQM{4hrPDzJ#$WA~FY&*PbFkjd-z zqvFc^K}-xYlr}W4%aymf7yo7Utn(o*YZ;b&V)((W2wGqC;B0l=ixWW`_OBBLwr{O= znAX|67H9v{xK#zj>aW_vvN>q2jKE8A%q&!B)Co-XGb# z&uY;&hDW;@laF)=1Zp=_m?seEo}d*5;1UPYr}-}*G3Sm*sP;KI;CV0%p00i_>zopr E0PvV&@&Et; diff --git a/icons/turf/floors/lava.dmi b/icons/turf/floors/lava.dmi index 3b889c9a5f68c17e0ada49b6699e95d3a6bc37d8..f3c51368fece03551fda6451c27bc0dd7b0bda5d 100644 GIT binary patch literal 15279 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 literal 9697 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 diff --git a/icons/turf/floors/liquidplasma.dmi b/icons/turf/floors/liquidplasma.dmi new file mode 100644 index 0000000000000000000000000000000000000000..f4917c2387846bdf04ab8a12e2b5a4cbc01bae51 GIT binary patch literal 37097 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%0A#Og@#kc1Y%&Mwopv>-HxXXn&sqc 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