diff --git a/code/modules/admin/buildmode.dm b/code/modules/admin/buildmode.dm index a5b6b930672..fa900c1634b 100644 --- a/code/modules/admin/buildmode.dm +++ b/code/modules/admin/buildmode.dm @@ -181,7 +181,9 @@ if(AREA_BUILDMODE) var/list/gen_paths = typesof(/datum/mapGenerator) - /datum/mapGenerator - var/type = input(usr,"Select Generator Type","Type") in gen_paths + var/type = input(usr,"Select Generator Type","Type") as null|anything in gen_paths + if(!type) return + master.generator_path = type return 1 diff --git a/code/modules/procedural mapping/mapGeneratorModule.dm b/code/modules/procedural mapping/mapGeneratorModule.dm index da08a540ef3..5fa432c1986 100644 --- a/code/modules/procedural mapping/mapGeneratorModule.dm +++ b/code/modules/procedural mapping/mapGeneratorModule.dm @@ -70,7 +70,6 @@ if(checkPlaceAtom(T)) for(var/atomPath in spawnableAtoms) - //Clustering! if(clusterMax && clusterMin) diff --git a/code/modules/procedural mapping/mapGeneratorModules/helpers.dm b/code/modules/procedural mapping/mapGeneratorModules/helpers.dm new file mode 100644 index 00000000000..78286e416f4 --- /dev/null +++ b/code/modules/procedural mapping/mapGeneratorModules/helpers.dm @@ -0,0 +1,41 @@ +//Helper Modules + + +// Helper to repressurize the area in case it was run in space +/datum/mapGeneratorModule/bottomLayer/repressurize + spawnableAtoms = list() + spawnableTurfs = list() + +/datum/mapGeneratorModule/bottomLayer/repressurize/generate() + if(!mother) + return + var/list/map = mother.map + for(var/turf/simulated/T in map) + air_master.remove_from_active(T) + for(var/turf/simulated/T in map) + if(T.air) + T.air.oxygen = T.oxygen + T.air.nitrogen = T.nitrogen + T.air.carbon_dioxide = T.carbon_dioxide + T.air.toxins = T.toxins + T.air.temperature = T.temperature + air_master.add_to_active(T) + +//Only places atoms/turfs on area borders +/datum/mapGeneratorModule/border + clusterCheckFlags = CLUSTER_CHECK_NONE + +/datum/mapGeneratorModule/border/generate() + if(!mother) + return + var/list/map = mother.map + for(var/turf/T in map) + if(is_border(T)) + place(T) + +/datum/mapGeneratorModule/border/proc/is_border(var/turf/T) + for(var/direction in list(SOUTH,EAST,WEST,NORTH)) + if (get_step(T,direction) in mother.map) + continue + return 1 + return 0 \ No newline at end of file diff --git a/code/modules/procedural mapping/mapGenerators/asteroid.dm b/code/modules/procedural mapping/mapGenerators/asteroid.dm index a80bd791998..6e4dd5dc32f 100644 --- a/code/modules/procedural mapping/mapGenerators/asteroid.dm +++ b/code/modules/procedural mapping/mapGenerators/asteroid.dm @@ -1,22 +1,3 @@ -//Border walls -/datum/mapGeneratorModule/border - clusterCheckFlags = CLUSTER_CHECK_NONE - -/datum/mapGeneratorModule/border/generate() - if(!mother) - return - var/list/map = mother.map - for(var/turf/T in map) - if(is_border(T)) - place(T) - -/datum/mapGeneratorModule/border/proc/is_border(var/turf/T) - for(var/direction in list(SOUTH,EAST,WEST,NORTH)) - if (get_step(T,direction) in mother.map) - continue - return 1 - return 0 - //Asteroid turfs /datum/mapGeneratorModule/bottomLayer/asteroidTurfs spawnableTurfs = list(/turf/simulated/floor/plating/airless/asteroid = 100) diff --git a/code/modules/procedural mapping/mapGenerators/syndicate.dm b/code/modules/procedural mapping/mapGenerators/syndicate.dm index 2873ba0e1e6..4671f6e8063 100644 --- a/code/modules/procedural mapping/mapGenerators/syndicate.dm +++ b/code/modules/procedural mapping/mapGenerators/syndicate.dm @@ -11,25 +11,20 @@ spawnableTurfs = list(/turf/simulated/wall/r_wall = 100) -/datum/mapGeneratorModule/bottomLayer/repressurize - // Helper to repressurize the area in case it was run in space - spawnableAtoms = list() +/datum/mapGeneratorModule/syndieFurniture + clusterCheckFlags = CLUSTER_CHECK_SAME_ATOMS spawnableTurfs = list() + spawnableAtoms = list(/obj/structure/table = 20,/obj/structure/stool/bed/chair = 15,/obj/structure/stool = 10, \ + /obj/structure/computerframe = 15, /obj/item/weapon/storage/toolbox/syndicate = 15 ,\ + /obj/structure/closet/syndicate = 25) -/datum/mapGeneratorModule/bottomLayer/repressurize/generate() - if(!mother) - return - var/list/map = mother.map - for(var/turf/simulated/T in map) - air_master.remove_from_active(T) - for(var/turf/simulated/T in map) - if(T.air) - T.air.oxygen = T.oxygen - T.air.nitrogen = T.nitrogen - T.air.carbon_dioxide = T.carbon_dioxide - T.air.toxins = T.toxins - T.air.temperature = T.temperature - air_master.add_to_active(T) +/datum/mapGeneratorModule/splatterLayer/syndieMobs + clusterCheckFlags = CLUSTER_CHECK_SAME_ATOMS + spawnableAtoms = list(/mob/living/simple_animal/hostile/syndicate = 30, \ + /mob/living/simple_animal/hostile/syndicate/melee = 20, \ + /mob/living/simple_animal/hostile/syndicate/ranged = 20, \ + /mob/living/simple_animal/hostile/viscerator = 30) + spawnableTurfs = list() // Generators @@ -38,7 +33,21 @@ /datum/mapGeneratorModule/border/syndieWalls,\ /datum/mapGeneratorModule/bottomLayer/repressurize) -/* -/datum/mapGenerator/syndicate/syndiesonly //walls/floors + mobs -/datum/mapGenerator/syndicate/full //doors + random equipment -*/ \ No newline at end of file +/datum/mapGenerator/syndicate/mobsonly + modules = list(/datum/mapGeneratorModule/bottomLayer/syndieFloor, \ + /datum/mapGeneratorModule/border/syndieWalls,\ + /datum/mapGeneratorModule/splatterLayer/syndieMobs, \ + /datum/mapGeneratorModule/bottomLayer/repressurize) + +/datum/mapGenerator/syndicate/furniture + modules = list(/datum/mapGeneratorModule/bottomLayer/syndieFloor, \ + /datum/mapGeneratorModule/border/syndieWalls,\ + /datum/mapGeneratorModule/syndieFurniture, \ + /datum/mapGeneratorModule/bottomLayer/repressurize) + +/datum/mapGenerator/syndicate/full + modules = list(/datum/mapGeneratorModule/bottomLayer/syndieFloor, \ + /datum/mapGeneratorModule/border/syndieWalls,\ + /datum/mapGeneratorModule/syndieFurniture, \ + /datum/mapGeneratorModule/splatterLayer/syndieMobs, \ + /datum/mapGeneratorModule/bottomLayer/repressurize) \ No newline at end of file diff --git a/paradise.dme b/paradise.dme index 181d3b2ae6b..f18f1c4dfde 100644 --- a/paradise.dme +++ b/paradise.dme @@ -1524,6 +1524,7 @@ #include "code\modules\procedural mapping\mapGenerator.dm" #include "code\modules\procedural mapping\mapGeneratorModule.dm" #include "code\modules\procedural mapping\mapGeneratorReadme.dm" +#include "code\modules\procedural mapping\mapGeneratorModules\helpers.dm" #include "code\modules\procedural mapping\mapGeneratorModules\nature.dm" #include "code\modules\procedural mapping\mapGenerators\asteroid.dm" #include "code\modules\procedural mapping\mapGenerators\nature.dm"