Added random map generation to Southern Cross.

This commit is contained in:
MistakeNot4892
2021-10-13 19:20:14 +11:00
parent cebc5fa3a1
commit 9ce14595e8
9 changed files with 214 additions and 80 deletions
+4
View File
@@ -20,6 +20,10 @@ SUBSYSTEM_DEF(mapping)
maploader = new()
load_map_templates()
#if UNIT_TEST
config.generate_map = TRUE
#endif
if(config.generate_map)
// Map-gen is still very specific to the map, however putting it here should ensure it loads in the correct order.
using_map.perform_map_generation()
+13 -58
View File
@@ -1,7 +1,3 @@
var/list/grass_types = list(
)
/turf/simulated/floor/outdoors/grass
name = "grass"
icon_state = "grass0"
@@ -11,20 +7,22 @@ var/list/grass_types = list(
turf_layers = list(
/turf/simulated/floor/outdoors/rocks,
/turf/simulated/floor/outdoors/dirt
)
var/grass_chance = 20
/*
var/animal_chance = 1
// Weighted spawn list.
var/list/animal_types = list(
/mob/living/simple_mob/animal/passive/tindalos = 1
)
*/
)
var/grass_chance = 0
var/tree_chance = 0
var/list/grass_types = list(
/obj/structure/flora/ausbushes/sparsegrass,
/obj/structure/flora/ausbushes/fullgrass
)
)
/turf/simulated/floor/outdoors/grass/Initialize()
if(!check_density())
if(tree_chance && prob(tree_chance))
new /obj/structure/flora/tree/sif(src)
else if(grass_chance && prob(grass_chance))
var/grass_type = pickweight(grass_types)
new grass_type(src)
. = ..()
/datum/category_item/catalogue/flora/sif_grass
name = "Sivian Flora - Moss"
@@ -39,47 +37,12 @@ var/list/grass_types = list(
icon_state = "grass_sif0"
initial_flooring = /decl/flooring/grass/sif
edge_blending_priority = 4
grass_chance = 5
var/tree_chance = 2
/*
animal_chance = 0.5
animal_types = list(
/mob/living/simple_mob/animal/sif/diyaab = 10,
/mob/living/simple_mob/animal/sif/glitterfly = 2,
/mob/living/simple_mob/animal/sif/duck = 2,
/mob/living/simple_mob/animal/sif/shantak/retaliate = 2,
/obj/random/mob/multiple/sifmobs = 1
)
*/
grass_types = list(
/obj/structure/flora/sif/eyes = 1,
/obj/structure/flora/sif/tendrils = 10
)
catalogue_data = list(/datum/category_item/catalogue/flora/sif_grass)
catalogue_delay = 2 SECONDS
/turf/simulated/floor/outdoors/grass/sif/Initialize()
if(tree_chance && prob(tree_chance) && !check_density())
new /obj/structure/flora/tree/sif(src)
. = ..()
/turf/simulated/floor/outdoors/grass/Initialize()
if(grass_chance && prob(grass_chance) && !check_density())
var/grass_type = pickweight(grass_types)
new grass_type(src)
/*
if(animal_chance && prob(animal_chance) && !check_density())
var/animal_type = pickweight(animal_types)
new animal_type(src)
*/
. = ..()
/turf/simulated/floor/outdoors/grass/forest
name = "thick grass"
icon_state = "grass-dark0"
grass_chance = 80
//tree_chance = 20
edge_blending_priority = 5
/turf/simulated/floor/outdoors/grass/sif/forest
@@ -87,11 +50,3 @@ var/list/grass_types = list(
icon_state = "grass_sif_dark0"
initial_flooring = /decl/flooring/grass/sif/forest
edge_blending_priority = 5
tree_chance = 10
grass_chance = 1
grass_types = list(
/obj/structure/flora/sif/frostbelle = 1,
/obj/structure/flora/sif/eyes = 5,
/obj/structure/flora/sif/tendrils = 30
)
@@ -0,0 +1,26 @@
/turf/simulated/floor/outdoors/grass/sif/random
grass_chance = 5
grass_types = list(
/obj/structure/flora/sif/eyes = 1,
/obj/structure/flora/sif/tendrils = 10
)
tree_chance = 2
/turf/simulated/floor/outdoors/grass/forest/random
grass_chance = 80
/turf/simulated/floor/outdoors/grass/sif/forest/random
tree_chance = 10
grass_chance = 1
grass_types = list(
/obj/structure/flora/sif/frostbelle = 1,
/obj/structure/flora/sif/eyes = 5,
/obj/structure/flora/sif/tendrils = 30
)
/turf/simulated/floor/outdoors/grass/random
grass_chance = 5
grass_types = list(
/obj/structure/flora/sif/eyes = 1,
/obj/structure/flora/sif/tendrils = 10
)
+142
View File
@@ -0,0 +1,142 @@
/turf/simulated/floor/outdoors/mask // Used solely as a placeholder to avoid changeturf.
/datum/random_map/noise/sif
descriptor = "Sif plains (roundstart)"
smoothing_iterations = 3
target_turf_type = /turf/simulated/floor/outdoors/mask
smooth_single_tiles = TRUE
var/refresh_icons_post_apply = TRUE
/datum/random_map/noise/sif/cleanup()
..()
// Round down to 1-9.
for(var/x = 1, x <= limit_x, x++)
for(var/y = 1, y <= limit_y, y++)
var/current_cell = get_map_cell(x,y)
var/current_val = map[current_cell]
map[current_cell] = min(9,max(0,round((current_val/cell_range)*10)))
/datum/random_map/noise/sif/apply_to_map()
..()
if(refresh_icons_post_apply)
for(var/x = 1, x <= limit_x, x++)
for(var/y = 1, y <= limit_y, y++)
var/turf/simulated/floor/outdoors/T = locate((origin_x-1)+x,(origin_y-1)+y,origin_z)
if(istype(T))
T.update_icon()
/datum/random_map/noise/sif/get_appropriate_path(var/value)
switch(value)
if(0)
return /turf/simulated/floor/outdoors/mud/sif/planetuse
if(1 to 2)
return /turf/simulated/floor/outdoors/dirt/sif/planetuse
if(3 to 5)
return /turf/simulated/floor/outdoors/grass/sif/planetuse
if(6 to 8)
return /turf/simulated/floor/outdoors/grass/sif/forest/planetuse
if(9)
return /turf/simulated/floor/outdoors/snow/sif/planetuse
/datum/random_map/noise/sif/get_additional_spawns(var/value, var/turf/T)
if(prob(60))
return
switch(value)
if(1 to 2)
if(prob(1))
new /obj/structure/flora/sif/eyes(T)
else if(prob(1))
new /obj/structure/flora/mushroom(T)
if(3 to 4)
if(prob(1))
new /obj/structure/flora/sif/eyes(T)
else if(prob(1))
new /obj/structure/flora/sif/tendrils(T)
else if(prob(1))
new /obj/structure/flora/mushroom(T)
if(5 to 6)
if(prob(1))
new /obj/structure/flora/sif/tendrils(T)
else if(prob(1))
new /obj/structure/flora/sif/frostbelle(T)
else if (prob(1))
new /obj/structure/flora/sif/eyes(T)
if(7 to 8)
if(prob(5))
new /obj/structure/flora/tree/sif(T)
else if(prob(1))
new /obj/structure/flora/sif/frostbelle(T)
else if(prob(1))
new /obj/structure/flora/sif/eyes(T)
else if(prob(1))
new /obj/structure/flora/sif/tendrils(T)
/datum/random_map/noise/sif/forest
descriptor = "Sif forest (roundstart)"
/datum/random_map/noise/sif/forest/get_appropriate_path(var/value)
switch(value)
if(0 to 3)
return /turf/simulated/floor/outdoors/grass/sif/planetuse
if(4 to 6)
return /turf/simulated/floor/outdoors/grass/sif/forest/planetuse
if(7 to 9)
return /turf/simulated/floor/outdoors/snow/sif/planetuse
/datum/random_map/noise/sif/forest/get_additional_spawns(var/value, var/turf/T)
if(prob(25))
return
switch(value)
if(0 to 5)
if(value >= 3 && prob(5))
new /obj/structure/flora/tree/sif(T)
return
if(prob(1))
new /obj/structure/flora/sif/eyes(T)
else if(prob(1))
new /obj/structure/flora/sif/tendrils(T)
else if(prob(1))
new /obj/structure/flora/mushroom(T)
if(6 to 9)
if(prob((value <= 7) ? 15 : 35))
new /obj/structure/flora/tree/sif(T)
return
if(prob(1))
new /obj/structure/flora/sif/frostbelle(T)
else if(prob(1))
new /obj/structure/flora/sif/eyes(T)
else if(prob(1))
new /obj/structure/flora/sif/tendrils(T)
/datum/random_map/noise/sif/underground
descriptor = "Sif underground (roundstart)"
target_turf_type = /turf/simulated/mineral/sif
skip_dense = TRUE
keep_outside = TRUE
refresh_icons_post_apply = FALSE
/datum/random_map/noise/sif/underground/get_appropriate_path(var/value)
switch(value)
if(0 to 2)
return /turf/simulated/floor/outdoors/mud/sif/planetuse
if(3 to 4)
return /turf/simulated/floor/outdoors/dirt/sif/planetuse
/datum/random_map/noise/sif/underground/get_additional_spawns(var/value, var/turf/T)
if(value <= 1 && prob(30)) // Mud is very fun-gy.
new /obj/structure/flora/mushroom(T)
else if(!prob(30))
var/mushroom_prob = 0
switch(value)
if(2)
mushroom_prob = 8
if(3)
mushroom_prob = 4
if(4 to 6)
mushroom_prob = 2
if(7)
mushroom_prob = 1
if(mushroom_prob && prob(mushroom_prob))
new /obj/structure/flora/mushroom(T)
else if(prob(0.1))
new /obj/structure/flora/sif/subterranean(T)
+8 -8
View File
@@ -9593,7 +9593,7 @@
/turf/simulated/floor/tiled/steel/sif/planetuse,
/area/surface/outside/path/plains)
"uy" = (
/turf/simulated/floor/outdoors/grass/sif/planetuse,
/turf/simulated/floor/outdoors/mask,
/area/surface/outside/plains/outpost)
"uz" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
@@ -9923,7 +9923,7 @@
/turf/simulated/mineral/sif,
/area/surface/outside/plains/normal)
"vp" = (
/turf/simulated/floor/outdoors/grass/sif/planetuse,
/turf/simulated/floor/outdoors/mask,
/area/surface/outside/plains/normal)
"vq" = (
/turf/simulated/floor/outdoors/rocks/sif/planetuse,
@@ -10126,7 +10126,7 @@
/area/surface/outpost/research/xenoresearch)
"vL" = (
/obj/effect/zone_divider,
/turf/simulated/floor/outdoors/grass/sif/planetuse,
/turf/simulated/floor/outdoors/mask,
/area/surface/outside/plains/outpost)
"vM" = (
/turf/simulated/floor/outdoors/dirt/sif/planetuse,
@@ -13589,7 +13589,7 @@
/area/surface/outpost/research/xenoresearch/xenobiology)
"Dk" = (
/obj/effect/zone_divider,
/turf/simulated/floor/outdoors/grass/sif/planetuse,
/turf/simulated/floor/outdoors/mask,
/area/surface/outside/plains/normal)
"Dl" = (
/obj/effect/zone_divider,
@@ -13615,7 +13615,7 @@
"Dq" = (
/obj/effect/step_trigger/teleporter/bridge/north_to_south,
/obj/structure/railing,
/turf/simulated/floor/outdoors/grass/sif/planetuse,
/turf/simulated/floor/outdoors/mask,
/area/surface/outside/plains/normal)
"Dr" = (
/obj/machinery/atmospherics/pipe/simple/visible{
@@ -13635,7 +13635,7 @@
/obj/structure/railing{
dir = 1
},
/turf/simulated/floor/outdoors/grass/sif/planetuse,
/turf/simulated/floor/outdoors/mask,
/area/surface/outside/plains/normal)
"Du" = (
/obj/effect/step_trigger/teleporter/bridge/south_to_north,
@@ -13667,7 +13667,7 @@
/turf/simulated/floor/outdoors/dirt/sif/planetuse,
/area/syndicate_station/planet)
"DA" = (
/turf/simulated/floor/outdoors/grass/sif/forest/planetuse,
/turf/simulated/floor/outdoors/mask,
/area/surface/outside/plains/normal)
"DB" = (
/turf/simulated/floor/plating/sif/planetuse,
@@ -13688,7 +13688,7 @@
/area/surface/outside/river/faxalven)
"DE" = (
/obj/effect/zone_divider,
/turf/simulated/floor/outdoors/grass/sif/forest/planetuse,
/turf/simulated/floor/outdoors/mask,
/area/surface/outside/plains/normal)
"DF" = (
/obj/effect/zone_divider,
+13 -13
View File
@@ -2,13 +2,13 @@
"ab" = (/turf/unsimulated/wall/planetary/sif{icon_state = "rock-dark"},/area/surface/outside/wilderness/mountains)
"ac" = (/turf/simulated/mineral/sif,/area/surface/outside/wilderness/mountains)
"ad" = (/obj/effect/zone_divider,/turf/simulated/mineral/sif,/area/surface/outside/wilderness/mountains)
"ae" = (/turf/simulated/floor/outdoors/grass/sif/forest/planetuse,/area/surface/outside/wilderness/deep)
"af" = (/turf/simulated/floor/outdoors/grass/sif/forest/planetuse,/area/surface/outpost/wall)
"ag" = (/obj/effect/zone_divider,/turf/simulated/floor/outdoors/grass/sif/forest/planetuse,/area/surface/outside/wilderness/deep)
"ae" = (/turf/simulated/floor/outdoors/mask,/area/surface/outside/wilderness/deep)
"af" = (/turf/simulated/floor/outdoors/mask,/area/surface/outpost/wall)
"ag" = (/obj/effect/zone_divider,/turf/simulated/floor/outdoors/mask,/area/surface/outside/wilderness/deep)
"ah" = (/turf/simulated/floor/outdoors/dirt/sif/planetuse,/area/surface/outside/wilderness/deep)
"ai" = (/turf/simulated/floor/outdoors/dirt,/area/surface/outside/wilderness/deep)
"aj" = (/turf/simulated/floor/outdoors/grass/sif/planetuse,/area/surface/outside/wilderness/deep)
"ak" = (/obj/effect/zone_divider,/turf/simulated/floor/outdoors/grass/sif/planetuse,/area/surface/outside/wilderness/deep)
"aj" = (/turf/simulated/floor/outdoors/mask,/area/surface/outside/wilderness/deep)
"ak" = (/obj/effect/zone_divider,/turf/simulated/floor/outdoors/mask,/area/surface/outside/wilderness/deep)
"al" = (/turf/unsimulated/wall/planetary/sif,/area/surface/outside/river/svartan)
"am" = (/turf/simulated/floor/water,/area/surface/outside/river/svartan)
"an" = (/turf/simulated/floor/water/deep,/area/surface/outside/river/svartan)
@@ -17,7 +17,7 @@
"aq" = (/turf/simulated/floor/plating/sif/planetuse,/area/surface/outside/path/wilderness)
"ar" = (/turf/simulated/floor/wood,/area/surface/outside/path/wilderness)
"as" = (/turf/simulated/wall/wood,/area/surface/outside/path/wilderness)
"at" = (/turf/simulated/floor/outdoors/grass/sif/forest/planetuse,/area/surface/outside/wilderness/normal)
"at" = (/turf/simulated/floor/outdoors/mask,/area/surface/outside/wilderness/normal)
"au" = (/obj/effect/step_trigger/teleporter/bridge/west_to_east,/obj/structure/railing{dir = 4},/turf/simulated/floor/water,/area/surface/outside/river/svartan)
"av" = (/obj/effect/step_trigger/teleporter/bridge/east_to_west,/obj/structure/railing{dir = 8},/turf/simulated/floor/water,/area/surface/outside/river/svartan)
"aw" = (/obj/effect/zone_divider,/turf/simulated/floor/water,/area/surface/outside/river/svartan)
@@ -27,11 +27,11 @@
"aA" = (/obj/effect/zone_divider,/turf/simulated/floor/water/deep,/area/surface/outside/river/svartan)
"aB" = (/obj/effect/step_trigger/teleporter/bridge/west_to_east/small,/turf/simulated/floor/water/deep,/area/surface/outside/river/svartan)
"aC" = (/obj/structure/showcase/sign{desc = "This appears to be a sign warning people that the other side is extremely hazardous."; icon_state = "wilderness2"; pixel_y = -5},/turf/simulated/wall/wood,/area/surface/outside/path/wilderness)
"aD" = (/obj/effect/zone_divider,/turf/simulated/floor/outdoors/grass/sif/forest/planetuse,/area/surface/outside/wilderness/normal)
"aD" = (/obj/effect/zone_divider,/turf/simulated/floor/outdoors/mask,/area/surface/outside/wilderness/normal)
"aE" = (/obj/effect/step_trigger/teleporter/bridge/west_to_east,/obj/structure/railing{dir = 4},/turf/simulated/floor/water/deep,/area/surface/outside/river/svartan)
"aF" = (/obj/effect/step_trigger/teleporter/bridge/east_to_west,/obj/structure/railing{dir = 8},/turf/simulated/floor/water/deep,/area/surface/outside/river/svartan)
"aG" = (/turf/simulated/floor/outdoors/grass/sif/planetuse,/area/surface/outside/wilderness/normal)
"aH" = (/obj/effect/zone_divider,/turf/simulated/floor/outdoors/grass/sif/planetuse,/area/surface/outside/wilderness/normal)
"aG" = (/turf/simulated/floor/outdoors/mask,/area/surface/outside/wilderness/normal)
"aH" = (/obj/effect/zone_divider,/turf/simulated/floor/outdoors/mask,/area/surface/outside/wilderness/normal)
"aI" = (/turf/simulated/floor/outdoors/dirt,/area/surface/outside/wilderness/normal)
"aJ" = (/turf/simulated/floor/outdoors/rocks/sif/planetuse,/area/surface/outside/wilderness/deep)
"aK" = (/turf/simulated/floor/water,/area/surface/outside/ocean)
@@ -45,10 +45,10 @@
"aS" = (/turf/simulated/floor/wood{outdoors = 1},/area/surface/outside/path/wilderness)
"aT" = (/turf/simulated/floor/outdoors/dirt/sif/planetuse,/area/shuttle/shuttle2/mining)
"aU" = (/turf/simulated/floor/outdoors/dirt/sif/planetuse,/area/shuttle/shuttle1/mining)
"aV" = (/turf/simulated/floor/outdoors/grass/sif/planetuse{tree_chance = 0},/area/surface/outside/wilderness/normal)
"aV" = (/turf/simulated/floor/outdoors/mask,/area/surface/outside/wilderness/normal)
"aW" = (/turf/simulated/floor/outdoors/dirt/sif/planetuse,/area/surface/outside/path/wilderness)
"aX" = (/turf/simulated/floor/outdoors/grass/sif/planetuse{tree_chance = 0},/area/shuttle/shuttle2/mining)
"aY" = (/turf/simulated/floor/outdoors/grass/sif/planetuse{tree_chance = 0},/area/shuttle/shuttle1/mining)
"aX" = (/turf/simulated/floor/outdoors/mask,/area/shuttle/shuttle2/mining)
"aY" = (/turf/simulated/floor/outdoors/mask,/area/shuttle/shuttle1/mining)
"aZ" = (/obj/structure/grille,/obj/structure/window/reinforced/full,/turf/simulated/floor/plating/external,/area/surface/outpost/shelter)
"ba" = (/turf/simulated/wall/log_sif,/area/surface/outpost/shelter)
"bb" = (/obj/effect/zone_divider,/turf/simulated/floor/outdoors/dirt/sif/planetuse,/area/surface/outside/path/wilderness)
@@ -76,7 +76,7 @@
"bx" = (/obj/item/weapon/banner/virgov,/turf/simulated/floor/plating/external,/area/surface/outpost/shelter)
"by" = (/obj/machinery/space_heater,/turf/simulated/floor/plating/external,/area/surface/outpost/shelter)
"bz" = (/obj/machinery/space_heater,/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "mining_dock_2"; name = "shuttle bay controller"; pixel_x = 0; pixel_y = -26; tag_door = "mining_dock_2_door"},/turf/simulated/floor/plating/external,/area/surface/outpost/shelter)
"bA" = (/obj/effect/shuttle_landmark{docking_controller = "mining_dock_2"; landmark_tag = "shuttle2_mining"; name = "Wilderness Landing Site"},/turf/simulated/floor/outdoors/grass/sif/planetuse{tree_chance = 0},/area/shuttle/shuttle2/mining)
"bA" = (/obj/effect/shuttle_landmark{docking_controller = "mining_dock_2"; landmark_tag = "shuttle2_mining"; name = "Wilderness Landing Site"},/turf/simulated/floor/outdoors/mask,/area/shuttle/shuttle2/mining)
"bB" = (/obj/effect/shuttle_landmark{docking_controller = "mining_dock_1"; landmark_tag = "shuttle1_mining"; name = "Wilderness Landing Site"},/turf/simulated/floor/outdoors/dirt/sif/planetuse,/area/shuttle/shuttle1/mining)
"bC" = (/obj/effect/map_effect/portal/line/side_b{icon_state = "portal_line_side_b"; dir = 1},/turf/simulated/shuttle/floor/voidcraft/external,/area/surface/outpost/wall/checkpoint)
"bD" = (/obj/effect/map_effect/portal/line/side_b{icon_state = "portal_line_side_b"; dir = 1},/turf/simulated/floor/water,/area/surface/outside/ocean)
+1
View File
@@ -23,6 +23,7 @@
#include "loadout/loadout_uniform.dm"
#include "datums/supplypacks/munitions.dm"
#include "datums/random_map.dm"
#include "items/encryptionkey_sc.dm"
#include "items/headset_sc.dm"
#include "items/clothing/sc_suit.dm"
@@ -143,8 +143,13 @@
// Now for the tunnels.
new /datum/random_map/automata/cave_system/no_cracks(null, 1, 1, Z_LEVEL_SURFACE_MINE, world.maxx, world.maxy) // Create the mining Z-level.
new /datum/random_map/noise/sif/underground(null, 1, 1, Z_LEVEL_SURFACE_MINE, world.maxx, world.maxy)
new /datum/random_map/noise/ore(null, 1, 1, Z_LEVEL_SURFACE_MINE, 64, 64) // Create the mining ore distribution map.
// Todo: Forest generation.
// Forest/wilderness generation.
new /datum/random_map/noise/sif( null, 1, 1, Z_LEVEL_SURFACE, world.maxx, world.maxy)
new /datum/random_map/noise/sif/forest(null, 1, 1, Z_LEVEL_SURFACE_WILD, world.maxx, world.maxy)
return 1
// Skybox Settings
+1
View File
@@ -1337,6 +1337,7 @@
#include "code\game\turfs\simulated\dungeon\wall.dm"
#include "code\game\turfs\simulated\outdoors\dirt.dm"
#include "code\game\turfs\simulated\outdoors\grass.dm"
#include "code\game\turfs\simulated\outdoors\grass_random.dm"
#include "code\game\turfs\simulated\outdoors\outdoors.dm"
#include "code\game\turfs\simulated\outdoors\outdoors_attackby.dm"
#include "code\game\turfs\simulated\outdoors\sidewalk.dm"