From d951b65ebae88ed4ef780b158ae312655a285405 Mon Sep 17 00:00:00 2001 From: kevinz000 Date: Fri, 28 Jul 2017 16:43:43 -0700 Subject: [PATCH] Admin "Reload Station" Map Generator - Reloads specified block to roundstart. (#28986) Badmins: Buildmode map generators have names in the list to select them, instead of paths. Also, a new map generator has been added, repair/reload station. Use it VERY sparingly, it deletes the block of the map and reloads it to roundstart. THIS CAN CAUSE ISSUES WITH MACHINES AND ATMOSPHERICS, SO DO NOT USE IT UNLESS YOU ABSOLUTELY HAVE TO! The reload station one tagged DO NOT USE shouldn't be used as it doesn't delete anything before loading, so if you use it you'll have two copies of things. That can result in a LOT of issues, so don't use it unless you're a codermin and know what you're doing/abusing! --- code/game/turfs/turf.dm | 19 +++-- code/modules/admin/verbs/buildmode.dm | 14 +++- code/modules/mapping/reader.dm | 32 +++++--- .../procedural_mapping/mapGenerator.dm | 5 +- .../mapGeneratorModules/helpers.dm | 14 +++- .../mapGenerators/asteroid.dm | 6 +- .../procedural_mapping/mapGenerators/cult.dm | 16 ++-- .../mapGenerators/lava_river.dm | 2 + .../mapGenerators/lavaland.dm | 3 + .../mapGenerators/nature.dm | 2 +- .../mapGenerators/repair.dm | 76 +++++++++++++++++++ .../mapGenerators/shuttle.dm | 4 +- .../mapGenerators/syndicate.dm | 11 ++- 13 files changed, 166 insertions(+), 38 deletions(-) diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index 9f507d37bff..e1e2ef0bea6 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -129,7 +129,7 @@ return FALSE var/list/large_dense = list() - + //Next, check objects to block entry that are on the border for(var/atom/movable/border_obstacle in src) if(border_obstacle.flags & ON_BORDER) @@ -209,14 +209,14 @@ qdel(L) //wrapper for ChangeTurf()s that you want to prevent/affect without overriding ChangeTurf() itself -/turf/proc/TerraformTurf(path, new_baseturf, defer_change = FALSE, ignore_air = FALSE) - return ChangeTurf(path, new_baseturf, defer_change, ignore_air) +/turf/proc/TerraformTurf(path, new_baseturf, defer_change = FALSE, ignore_air = FALSE, forceop = FALSE) + return ChangeTurf(path, new_baseturf, defer_change, ignore_air, forceop) //Creates a new turf -/turf/proc/ChangeTurf(path, new_baseturf, defer_change = FALSE, ignore_air = FALSE) +/turf/proc/ChangeTurf(path, new_baseturf, defer_change = FALSE, ignore_air = FALSE, forceop = FALSE) if(!path) return - if(!GLOB.use_preloader && path == type) // Don't no-op if the map loader requires it to be reconstructed + if(!GLOB.use_preloader && path == type && !forceop) // Don't no-op if the map loader requires it to be reconstructed return src var/old_baseturf = baseturf @@ -419,17 +419,17 @@ if(!SSticker.HasRoundStarted()) add_blueprints(AM) -/turf/proc/empty(turf_type=/turf/open/space, baseturf_type) +/turf/proc/empty(turf_type=/turf/open/space, baseturf_type, delmobs = TRUE, forceop = FALSE) // Remove all atoms except observers, landmarks, docking ports var/static/list/ignored_atoms = typecacheof(list(/mob/dead, /obj/effect/landmark, /obj/docking_port, /atom/movable/lighting_object)) - var/list/allowed_contents = typecache_filter_list_reverse(GetAllContents(),ignored_atoms) + var/list/allowed_contents = typecache_filter_list_reverse(GetAllContents(),delmobs? ignored_atoms : ignored_atoms + typecacheof(list(/mob))) allowed_contents -= src for(var/i in 1 to allowed_contents.len) var/thing = allowed_contents[i] qdel(thing, force=TRUE) - var/turf/newT = ChangeTurf(turf_type, baseturf_type, FALSE, FALSE) - + var/turf/newT = ChangeTurf(turf_type, baseturf_type, FALSE, FALSE, forceop = forceop) + SSair.remove_from_active(newT) newT.CalculateAdjacentTurfs() SSair.add_to_active(newT,1) @@ -437,7 +437,6 @@ /turf/proc/is_transition_turf() return - /turf/acid_act(acidpwr, acid_volume) . = 1 var/acid_type = /obj/effect/acid diff --git a/code/modules/admin/verbs/buildmode.dm b/code/modules/admin/verbs/buildmode.dm index cfccf5fa788..97c5d1504d6 100644 --- a/code/modules/admin/verbs/buildmode.dm +++ b/code/modules/admin/verbs/buildmode.dm @@ -194,11 +194,14 @@ valueholder = input(user,"Enter variable value:" ,"Value") as turf in world if(AREA_BUILDMODE) var/list/gen_paths = subtypesof(/datum/mapGenerator) - - var/type = input(user,"Select Generator Type","Type") as null|anything in gen_paths + var/list/options = list() + for(var/path in gen_paths) + var/datum/mapGenerator/MP = path + options[initial(MP.buildmode_name)] = path + var/type = input(user,"Select Generator Type","Type") as null|anything in options if(!type) return - generator_path = type + generator_path = options[type] cornerA = null cornerB = null @@ -342,7 +345,12 @@ if(cornerA && cornerB) if(!generator_path) to_chat(user, "Select generator type first.") + return var/datum/mapGenerator/G = new generator_path + if(istype(G, /datum/mapGenerator/repair/reload_station_map)) + if(GLOB.reloading_map) + to_chat(user, "You are already reloading an area! Please wait for it to fully finish loading before trying to load another!") + return G.defineRegion(cornerA,cornerB,1) G.generate() cornerA = null diff --git a/code/modules/mapping/reader.dm b/code/modules/mapping/reader.dm index 4f4ff981d16..51e34637820 100644 --- a/code/modules/mapping/reader.dm +++ b/code/modules/mapping/reader.dm @@ -29,21 +29,21 @@ GLOBAL_DATUM_INIT(_preloader, /dmm_suite/preloader, new) * 2) Read the map line by line, parsing the result (using parse_grid) * */ -/dmm_suite/load_map(dmm_file as file, x_offset as num, y_offset as num, z_offset as num, cropMap as num, measureOnly as num, no_changeturf as num) +/dmm_suite/load_map(dmm_file as file, x_offset as num, y_offset as num, z_offset as num, cropMap as num, measureOnly as num, no_changeturf as num, lower_crop_x as num, lower_crop_y as num, upper_crop_x as num, upper_crop_y as num) //How I wish for RAII Master.StartLoadingMap() space_key = null #ifdef TESTING turfsSkipped = 0 #endif - . = load_map_impl(dmm_file, x_offset, y_offset, z_offset, cropMap, measureOnly, no_changeturf) + . = load_map_impl(dmm_file, x_offset, y_offset, z_offset, cropMap, measureOnly, no_changeturf, lower_crop_x, upper_crop_x, lower_crop_y, upper_crop_y) #ifdef TESTING if(turfsSkipped) testing("Skipped loading [turfsSkipped] default turfs") #endif Master.StopLoadingMap() -/dmm_suite/proc/load_map_impl(dmm_file, x_offset, y_offset, z_offset, cropMap, measureOnly, no_changeturf) +/dmm_suite/proc/load_map_impl(dmm_file, x_offset, y_offset, z_offset, cropMap, measureOnly, no_changeturf, x_lower = -INFINITY, x_upper = INFINITY, y_lower = -INFINITY, y_upper = INFINITY) var/tfile = dmm_file//the map file we're creating if(isfile(tfile)) tfile = file2text(tfile) @@ -60,6 +60,7 @@ GLOBAL_DATUM_INIT(_preloader, /dmm_suite/preloader, new) var/key_len = 0 var/stored_index = 1 + while(dmmRegex.Find(tfile, stored_index)) stored_index = dmmRegex.next @@ -81,7 +82,12 @@ GLOBAL_DATUM_INIT(_preloader, /dmm_suite/preloader, new) if(!key_len) throw EXCEPTION("Coords before model definition in DMM") - var/xcrdStart = text2num(dmmRegex.group[3]) + x_offset - 1 + var/curr_x = text2num(dmmRegex.group[3]) + + if(curr_x < x_lower || curr_x > x_upper) + continue + + var/xcrdStart = curr_x + x_offset - 1 //position of the currently processed square var/xcrd var/ycrd = text2num(dmmRegex.group[4]) + y_offset - 1 @@ -96,7 +102,7 @@ GLOBAL_DATUM_INIT(_preloader, /dmm_suite/preloader, new) if(!no_changeturf) WARNING("Z-level expansion occurred without no_changeturf set, this may cause problems when /turf/AfterChange is called") - bounds[MAP_MINX] = min(bounds[MAP_MINX], xcrdStart) + bounds[MAP_MINX] = min(bounds[MAP_MINX], Clamp(xcrdStart, x_lower, x_upper)) bounds[MAP_MINZ] = min(bounds[MAP_MINZ], zcrd) bounds[MAP_MAXZ] = max(bounds[MAP_MAXZ], zcrd) @@ -113,15 +119,15 @@ GLOBAL_DATUM_INIT(_preloader, /dmm_suite/preloader, new) if(gridLines.len && gridLines[gridLines.len] == "") gridLines.Cut(gridLines.len) // Remove only one blank line at the end. - bounds[MAP_MINY] = min(bounds[MAP_MINY], ycrd) + bounds[MAP_MINY] = min(bounds[MAP_MINY], Clamp(ycrd, y_lower, y_upper)) ycrd += gridLines.len - 1 // Start at the top and work down if(!cropMap && ycrd > world.maxy) if(!measureOnly) world.maxy = ycrd // Expand Y here. X is expanded in the loop below - bounds[MAP_MAXY] = max(bounds[MAP_MAXY], ycrd) + bounds[MAP_MAXY] = max(bounds[MAP_MAXY], Clamp(ycrd, y_lower, y_upper)) else - bounds[MAP_MAXY] = max(bounds[MAP_MAXY], min(ycrd, world.maxy)) + bounds[MAP_MAXY] = max(bounds[MAP_MAXY], Clamp(min(ycrd, world.maxy), y_lower, y_upper)) var/maxx = xcrdStart if(measureOnly) @@ -129,9 +135,15 @@ GLOBAL_DATUM_INIT(_preloader, /dmm_suite/preloader, new) maxx = max(maxx, xcrdStart + length(line) / key_len - 1) else for(var/line in gridLines) + if((ycrd - y_offset + 1) < y_lower || (ycrd - y_offset + 1) > y_upper) //Reverse operation and check if it is out of bounds of cropping. + --ycrd + continue if(ycrd <= world.maxy && ycrd >= 1) xcrd = xcrdStart for(var/tpos = 1 to length(line) - key_len + 1 step key_len) + if((xcrd - x_offset + 1) < x_lower || (xcrd - x_offset + 1) > x_upper) //Same as above. + ++xcrd + continue //X cropping. if(xcrd > world.maxx) if(cropMap) break @@ -154,7 +166,7 @@ GLOBAL_DATUM_INIT(_preloader, /dmm_suite/preloader, new) ++xcrd --ycrd - bounds[MAP_MAXX] = max(bounds[MAP_MAXX], cropMap ? min(maxx, world.maxx) : maxx) + bounds[MAP_MAXX] = Clamp(max(bounds[MAP_MAXX], cropMap ? min(maxx, world.maxx) : maxx), x_lower, x_upper) CHECK_TICK @@ -343,7 +355,7 @@ GLOBAL_DATUM_INIT(_preloader, /dmm_suite/preloader, new) /dmm_suite/proc/create_atom(path, crds) set waitfor = FALSE . = new path (crds) - + //text trimming (both directions) helper proc //optionally removes quotes before and after the text (for variable name) /dmm_suite/proc/trim_text(what as text,trim_quotes=0) diff --git a/code/modules/procedural_mapping/mapGenerator.dm b/code/modules/procedural_mapping/mapGenerator.dm index 5653e804224..966ef2f9e2e 100644 --- a/code/modules/procedural_mapping/mapGenerator.dm +++ b/code/modules/procedural_mapping/mapGenerator.dm @@ -17,7 +17,6 @@ //All #define CLUSTER_CHECK_ALL 30 //Don't let anything cluster, like, at all - /datum/mapGenerator //Map information @@ -26,8 +25,12 @@ //mapGeneratorModule information var/list/modules = list() + var/buildmode_name = "Undocumented" + /datum/mapGenerator/New() ..() + if(buildmode_name == "Undocumented") + buildmode_name = copytext("[type]", 20) // / d a t u m / m a p g e n e r a t o r / = 20 characters. initialiseModules() //Defines the region the map represents, sets map diff --git a/code/modules/procedural_mapping/mapGeneratorModules/helpers.dm b/code/modules/procedural_mapping/mapGeneratorModules/helpers.dm index 4d07342051d..6216216cd9a 100644 --- a/code/modules/procedural_mapping/mapGeneratorModules/helpers.dm +++ b/code/modules/procedural_mapping/mapGeneratorModules/helpers.dm @@ -20,13 +20,25 @@ /datum/mapGeneratorModule/bottomLayer/massdelete spawnableAtoms = list() spawnableTurfs = list() + var/deletemobs = TRUE + var/deleteturfs = TRUE /datum/mapGeneratorModule/bottomLayer/massdelete/generate() if(!mother) return for(var/V in mother.map) var/turf/T = V - T.empty() + T.empty(deleteturfs? null : T.type, delmobs = deletemobs, forceop = TRUE) + +/datum/mapGeneratorModule/bottomLayer/massdelete/no_delete_mobs + deletemobs = FALSE + +/datum/mapGeneratorModule/bottomLayer/massdelete/leave_turfs + deleteturfs = FALSE + +/datum/mapGeneratorModule/bottomLayer/massdelete/regeneration_delete + deletemobs = FALSE + deleteturfs = FALSE //Only places atoms/turfs on area borders /datum/mapGeneratorModule/border diff --git a/code/modules/procedural_mapping/mapGenerators/asteroid.dm b/code/modules/procedural_mapping/mapGenerators/asteroid.dm index 1c31bb5697c..35690058c99 100644 --- a/code/modules/procedural_mapping/mapGenerators/asteroid.dm +++ b/code/modules/procedural_mapping/mapGenerators/asteroid.dm @@ -29,17 +29,21 @@ /datum/mapGenerator/asteroid/hollow modules = list(/datum/mapGeneratorModule/bottomLayer/asteroidTurfs, \ /datum/mapGeneratorModule/border/asteroidWalls) + buildmode_name = "Pattern: Asteroid Room \[AIRLESS!\]" /datum/mapGenerator/asteroid/hollow/random modules = list(/datum/mapGeneratorModule/bottomLayer/asteroidTurfs, \ /datum/mapGeneratorModule/border/asteroidWalls, \ /datum/mapGeneratorModule/splatterLayer/asteroidWalls) + buildmode_name = "Pattern: Asteroid Room: Splatter Walls \[AIRLESS!\]" /datum/mapGenerator/asteroid/hollow/random/monsters modules = list(/datum/mapGeneratorModule/bottomLayer/asteroidTurfs, \ /datum/mapGeneratorModule/border/asteroidWalls, \ /datum/mapGeneratorModule/splatterLayer/asteroidWalls, \ /datum/mapGeneratorModule/splatterLayer/asteroidMonsters) + buildmode_name = "Pattern: Asteroid Room: Splatter Walls + Monsters \[AIRLESS!\]" /datum/mapGenerator/asteroid/filled - modules = list(/datum/mapGeneratorModule/bottomLayer/asteroidWalls) \ No newline at end of file + modules = list(/datum/mapGeneratorModule/bottomLayer/asteroidWalls) + buildmode_name = "Block: Asteroid Walls" \ No newline at end of file diff --git a/code/modules/procedural_mapping/mapGenerators/cult.dm b/code/modules/procedural_mapping/mapGenerators/cult.dm index c76a611b7e8..ea9c7da9460 100644 --- a/code/modules/procedural_mapping/mapGenerators/cult.dm +++ b/code/modules/procedural_mapping/mapGenerators/cult.dm @@ -4,28 +4,30 @@ /datum/mapGeneratorModule/border/cultWalls spawnableTurfs = list(/turf/closed/wall/mineral/cult = 100) - /datum/mapGeneratorModule/bottomLayer/clockFloor spawnableTurfs = list(/turf/open/floor/clockwork = 100) /datum/mapGeneratorModule/border/clockWalls spawnableTurfs = list(/turf/closed/wall/clockwork = 100) - /datum/mapGenerator/cult //walls and floor only - modules = list(/datum/mapGeneratorModule/bottomLayer/cultFloor, \ + modules = list(/datum/mapGeneratorModule/bottomLayer/cultFloor, \ /datum/mapGeneratorModule/border/cultWalls, \ /datum/mapGeneratorModule/bottomLayer/repressurize) + buildmode_name = "Pattern: Cult Room" /datum/mapGenerator/clock //walls and floor only - modules = list(/datum/mapGeneratorModule/bottomLayer/clockFloor, \ + modules = list(/datum/mapGeneratorModule/bottomLayer/clockFloor, \ /datum/mapGeneratorModule/border/clockWalls, \ /datum/mapGeneratorModule/bottomLayer/repressurize) + buildmode_name = "Pattern: Clockwork Room" /datum/mapGenerator/cult/floor //floors only - modules = list(/datum/mapGeneratorModule/bottomLayer/cultFloor, \ + modules = list(/datum/mapGeneratorModule/bottomLayer/cultFloor, \ /datum/mapGeneratorModule/bottomLayer/repressurize) + buildmode_name = "Block: Cult Floor" /datum/mapGenerator/clock/floor //floor only - modules = list(/datum/mapGeneratorModule/bottomLayer/clockFloor, \ - /datum/mapGeneratorModule/bottomLayer/repressurize) \ No newline at end of file + modules = list(/datum/mapGeneratorModule/bottomLayer/clockFloor, \ + /datum/mapGeneratorModule/bottomLayer/repressurize) + buildmode_name = "Block: Clockwork Floor" diff --git a/code/modules/procedural_mapping/mapGenerators/lava_river.dm b/code/modules/procedural_mapping/mapGenerators/lava_river.dm index 2dbfc7ecd73..8bdedb4b765 100644 --- a/code/modules/procedural_mapping/mapGenerators/lava_river.dm +++ b/code/modules/procedural_mapping/mapGenerators/lava_river.dm @@ -1,3 +1,4 @@ + /datum/mapGenerator/lavaland var/start_z = 5 var/min_x = 0 @@ -5,6 +6,7 @@ var/max_x = 0 var/max_y = 0 modules = list(/datum/mapGeneratorModule/river) + buildmode_name = "Pattern: Lava Rivers" /datum/mapGenerator/lavaland/defineRegion(turf/Start, turf/End, replace = 0) start_z = Start.z diff --git a/code/modules/procedural_mapping/mapGenerators/lavaland.dm b/code/modules/procedural_mapping/mapGenerators/lavaland.dm index 9c160ee8488..e6d7b00e8d9 100644 --- a/code/modules/procedural_mapping/mapGenerators/lavaland.dm +++ b/code/modules/procedural_mapping/mapGenerators/lavaland.dm @@ -22,9 +22,12 @@ /datum/mapGenerator/lavaland/ground_only modules = list(/datum/mapGeneratorModule/bottomLayer/lavaland_default) + buildmode_name = "Block: Lavaland Floor" /datum/mapGenerator/lavaland/dense_ores modules = list(/datum/mapGeneratorModule/bottomLayer/lavaland_mineral/dense) + buildmode_name = "Block: Lavaland Ores: Dense" /datum/mapGenerator/lavaland/normal_ores modules = list(/datum/mapGeneratorModule/bottomLayer/lavaland_mineral) + buildmode_name = "Block: Lavaland Ores" diff --git a/code/modules/procedural_mapping/mapGenerators/nature.dm b/code/modules/procedural_mapping/mapGenerators/nature.dm index 6ad1dfcf7e1..abb4e7ed105 100644 --- a/code/modules/procedural_mapping/mapGenerators/nature.dm +++ b/code/modules/procedural_mapping/mapGenerators/nature.dm @@ -8,4 +8,4 @@ /datum/mapGeneratorModule/randBushes, \ /datum/mapGeneratorModule/randRocks, \ /datum/mapGeneratorModule/denseLayer/grassTufts) - + buildmode_name = "Pattern: Nature" diff --git a/code/modules/procedural_mapping/mapGenerators/repair.dm b/code/modules/procedural_mapping/mapGenerators/repair.dm index 3a344ac94a5..f9b94bba89d 100644 --- a/code/modules/procedural_mapping/mapGenerators/repair.dm +++ b/code/modules/procedural_mapping/mapGenerators/repair.dm @@ -16,16 +16,92 @@ spawnableTurfs = list(/turf/closed/wall = 100) allowAtomsOnSpace = TRUE +/datum/mapGeneratorModule/reload_station_map/generate() + if(!istype(mother, /datum/mapGenerator/repair/reload_station_map)) + return + var/datum/mapGenerator/repair/reload_station_map/mother1 = mother + if(mother1.z != ZLEVEL_STATION) + return //This is only for reloading station blocks! + GLOB.reloading_map = TRUE + var/static/dmm_suite/reloader = new + var/list/bounds = reloader.load_map(file(SSmapping.config.GetFullMapPath()),measureOnly = FALSE, no_changeturf = FALSE,x_offset = 0, y_offset = 0, z_offset = ZLEVEL_STATION, cropMap=TRUE, lower_crop_x = mother1.x_low, lower_crop_y = mother1.y_low, upper_crop_x = mother1.x_high, upper_crop_y = mother1.y_high) + + var/list/obj/machinery/atmospherics/atmos_machines = list() + var/list/obj/structure/cable/cables = list() + var/list/atom/atoms = list() + + repopulate_sorted_areas() + + for(var/L in block(locate(bounds[MAP_MINX], bounds[MAP_MINY], bounds[MAP_MINZ]), + locate(bounds[MAP_MAXX], bounds[MAP_MAXY], bounds[MAP_MAXZ]))) + set waitfor = FALSE + var/turf/B = L + atoms += B + for(var/A in B) + atoms += A + if(istype(A,/obj/structure/cable)) + cables += A + continue + if(istype(A,/obj/machinery/atmospherics)) + atmos_machines += A + + SSatoms.InitializeAtoms(atoms) + SSmachines.setup_template_powernets(cables) + SSair.setup_template_machinery(atmos_machines) + GLOB.reloading_map = FALSE + /datum/mapGenerator/repair modules = list(/datum/mapGeneratorModule/bottomLayer/repairFloorPlasteel, /datum/mapGeneratorModule/bottomLayer/repressurize) + buildmode_name = "Repair: Floor" /datum/mapGenerator/repair/delete_walls modules = list(/datum/mapGeneratorModule/bottomLayer/repairFloorPlasteel/flatten, /datum/mapGeneratorModule/bottomLayer/repressurize) + buildmode_name = "Repair: Floor: Flatten Walls" /datum/mapGenerator/repair/enclose_room modules = list(/datum/mapGeneratorModule/bottomLayer/repairFloorPlasteel/flatten, /datum/mapGeneratorModule/border/normalWalls, /datum/mapGeneratorModule/bottomLayer/repressurize) + buildmode_name = "Repair: Generate Aired Room" +/datum/mapGenerator/repair/reload_station_map + modules = list(/datum/mapGeneratorModule/bottomLayer/massdelete/no_delete_mobs) + var/x_low = 0 + var/x_high = 0 + var/y_low = 0 + var/y_high = 0 + var/z = 0 + var/cleanload = FALSE + var/datum/mapGeneratorModule/reload_station_map/loader + buildmode_name = "Repair: Reload Block \[DO NOT USE\]" + +/datum/mapGenerator/repair/reload_station_map/clean + buildmode_name = "Repair: Reload Block - Mass Delete" + cleanload = TRUE + +/datum/mapGenerator/repair/reload_station_map/clean/in_place + modules = list(/datum/mapGeneratorModule/bottomLayer/massdelete/regeneration_delete) + buildmode_name = "Repair: Reload Block - Mass Delete - In Place" + +/datum/mapGenerator/repair/reload_station_map/defineRegion(turf/start, turf/end) + . = ..() + if(start.z != ZLEVEL_STATION || end.z != ZLEVEL_STATION) + return + x_low = min(start.x, end.x) + y_low = min(start.y, end.y) + x_high = max(start.x, end.x) + y_high = max(start.y, end.y) + z = ZLEVEL_STATION + +GLOBAL_VAR_INIT(reloading_map, FALSE) + +/datum/mapGenerator/repair/reload_station_map/generate(clean = cleanload) + if(!loader) + loader = new + if(cleanload) + ..() //Trigger mass deletion. + modules |= loader + syncModules() + loader.generate() diff --git a/code/modules/procedural_mapping/mapGenerators/shuttle.dm b/code/modules/procedural_mapping/mapGenerators/shuttle.dm index b155335bdeb..7ce98040bb4 100644 --- a/code/modules/procedural_mapping/mapGenerators/shuttle.dm +++ b/code/modules/procedural_mapping/mapGenerators/shuttle.dm @@ -7,9 +7,11 @@ // Generators /datum/mapGenerator/shuttle/full - modules = list(/datum/mapGeneratorModule/bottomLayer/shuttleFloor, \ + modules = list(/datum/mapGeneratorModule/bottomLayer/shuttleFloor, \ /datum/mapGeneratorModule/border/shuttleWalls,\ /datum/mapGeneratorModule/bottomLayer/repressurize) + buildmode_name = "Pattern: Shuttle Room" /datum/mapGenerator/shuttle/floor modules = list(/datum/mapGeneratorModule/bottomLayer/shuttleFloor) + buildmode_name = "Block: Shuttle Floor" diff --git a/code/modules/procedural_mapping/mapGenerators/syndicate.dm b/code/modules/procedural_mapping/mapGenerators/syndicate.dm index b8a6f33b33a..b5030f566db 100644 --- a/code/modules/procedural_mapping/mapGenerators/syndicate.dm +++ b/code/modules/procedural_mapping/mapGenerators/syndicate.dm @@ -1,3 +1,4 @@ + // Modules /turf/open/floor/plasteel/shuttle/red/syndicate @@ -14,8 +15,8 @@ /datum/mapGeneratorModule/syndieFurniture clusterCheckFlags = CLUSTER_CHECK_ALL spawnableTurfs = list() - spawnableAtoms = list(/obj/structure/table = 20, /obj/structure/chair = 15, /obj/structure/chair/stool = 10, - /obj/structure/frame/computer = 15, /obj/item/weapon/storage/toolbox/syndicate = 15, + spawnableAtoms = list(/obj/structure/table = 20,/obj/structure/chair = 15,/obj/structure/chair/stool = 10, \ + /obj/structure/frame/computer = 15, /obj/item/weapon/storage/toolbox/syndicate = 15 ,\ /obj/structure/closet/syndicate = 25, /obj/machinery/suit_storage_unit/syndicate = 15) /datum/mapGeneratorModule/splatterLayer/syndieMobs @@ -28,21 +29,24 @@ // Generators /datum/mapGenerator/syndicate/empty //walls and floor only - modules = list(/datum/mapGeneratorModule/bottomLayer/syndieFloor, \ + modules = list(/datum/mapGeneratorModule/bottomLayer/syndieFloor, \ /datum/mapGeneratorModule/border/syndieWalls,\ /datum/mapGeneratorModule/bottomLayer/repressurize) + buildmode_name = "Pattern: Shuttle Room: Syndicate" /datum/mapGenerator/syndicate/mobsonly modules = list(/datum/mapGeneratorModule/bottomLayer/syndieFloor, \ /datum/mapGeneratorModule/border/syndieWalls,\ /datum/mapGeneratorModule/splatterLayer/syndieMobs, \ /datum/mapGeneratorModule/bottomLayer/repressurize) + buildmode_name = "Pattern: Shuttle Room: Syndicate: Mobs" /datum/mapGenerator/syndicate/furniture modules = list(/datum/mapGeneratorModule/bottomLayer/syndieFloor, \ /datum/mapGeneratorModule/border/syndieWalls,\ /datum/mapGeneratorModule/syndieFurniture, \ /datum/mapGeneratorModule/bottomLayer/repressurize) + buildmode_name = "Pattern: Shuttle Room: Syndicate: Furniture" /datum/mapGenerator/syndicate/full modules = list(/datum/mapGeneratorModule/bottomLayer/syndieFloor, \ @@ -50,3 +54,4 @@ /datum/mapGeneratorModule/syndieFurniture, \ /datum/mapGeneratorModule/splatterLayer/syndieMobs, \ /datum/mapGeneratorModule/bottomLayer/repressurize) + buildmode_name = "Pattern: Shuttle Room: Syndicate: All"