mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-11 02:01:22 +00:00
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!
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
modules = list(/datum/mapGeneratorModule/bottomLayer/asteroidWalls)
|
||||
buildmode_name = "Block: Asteroid Walls"
|
||||
@@ -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)
|
||||
modules = list(/datum/mapGeneratorModule/bottomLayer/clockFloor, \
|
||||
/datum/mapGeneratorModule/bottomLayer/repressurize)
|
||||
buildmode_name = "Block: Clockwork Floor"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -8,4 +8,4 @@
|
||||
/datum/mapGeneratorModule/randBushes, \
|
||||
/datum/mapGeneratorModule/randRocks, \
|
||||
/datum/mapGeneratorModule/denseLayer/grassTufts)
|
||||
|
||||
buildmode_name = "Pattern: Nature"
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user