Uploading all files.

This commit is contained in:
Quotefox
2019-09-23 18:26:34 +02:00
commit 7091cdbe8c
7779 changed files with 2601004 additions and 0 deletions
@@ -0,0 +1,49 @@
//Asteroid turfs
/datum/mapGeneratorModule/bottomLayer/asteroidTurfs
spawnableTurfs = list(/turf/open/floor/plating/asteroid = 100)
/datum/mapGeneratorModule/bottomLayer/asteroidWalls
spawnableTurfs = list(/turf/closed/mineral = 100)
//Border walls
/datum/mapGeneratorModule/border/asteroidWalls
spawnableAtoms = list()
spawnableTurfs = list(/turf/closed/mineral = 100)
//Random walls
/datum/mapGeneratorModule/splatterLayer/asteroidWalls
clusterCheckFlags = CLUSTER_CHECK_NONE
spawnableAtoms = list()
spawnableTurfs = list(/turf/closed/mineral = 30)
//Monsters
/datum/mapGeneratorModule/splatterLayer/asteroidMonsters
spawnableTurfs = list()
spawnableAtoms = list(/mob/living/simple_animal/hostile/asteroid/basilisk = 10, \
/mob/living/simple_animal/hostile/asteroid/hivelord = 10, \
/mob/living/simple_animal/hostile/asteroid/goliath = 10)
// GENERATORS
/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)
buildmode_name = "Block: Asteroid Walls"
@@ -0,0 +1,96 @@
// Very Simple Cellular Automata generators
// Mostly for better caves
// Should probably move these up and refactor modules so these can be mixed with other ones
/datum/mapGenerator/ca
var/list/b_rule = list() // 0 -> 1, 1 -> 1
var/list/s_rule = list() // 0 -> 0, 1 -> 1
var/iterations = 1
var/loop_edges = 0
var/edge_value = 1 //if loop_edges = 0
var/list/old_state
var/list/current_state
var/width = 10
var/height = 10
var/list/type_map = list(/turf/open/floor/plating, /turf/closed/wall)
var/turf/start = null
/datum/mapGenerator/ca/defineRegion(turf/Start, turf/End, replace = 0)
. = ..()
var/min_x = min(Start.x,End.x)
var/max_x = max(Start.x,End.x)
var/min_y = min(Start.y,End.y)
var/max_y = max(Start.y,End.y)
width = max_x - min_x
height = max_y - min_y
//We assume 2D everywhere anyway
start = locate(min_x,min_y,Start.z)
/datum/mapGenerator/ca/proc/initialize()
old_state = new/list(width)
for(var/i = 1,i<=width,i++)
old_state[i] = new/list(height)
for(var/j = 1,j<=height,j++)
old_state[i][j] = rand(0,1)
current_state = old_state.Copy()
/datum/mapGenerator/ca/generate()
//Abandon all hope for efficency all who enter here
//Maybe some less basic implemetation later, but this is just simple admin tool
initialize()
for(var/generation = 0,generation<iterations,generation++)
for(var/i = 1,i<=width,i++)
for(var/j = 1,j<=height,j++)
current_state[i][j] = apply_rule(i,j)
//copy state over
old_state = current_state.Copy()
for(var/i=1,i<=width,i++)
for(var/j=1,j<=height,j++)
var/turf/T = locate(start.x+i-1,start.y+j-1,start.z)
if(T)
T.ChangeTurf(type_map[current_state[i][j]+1])
/datum/mapGenerator/ca/proc/apply_rule(i,j)
var/value = 0
for(var/dx=-1,dx<=1,dx++)
for(var/dy=-1,dy<=1,dy++)
var/n_x = i+dx
var/n_y = j+dy
if(n_x < 1 || n_x > width || n_y <1 || n_y > height)
if(loop_edges)
if(n_x < 1)
n_x = width
else if(n_x > width)
n_x = 1
if(n_y < 1)
n_y = height
else if(n_y > height)
n_y = 1
else
value += edge_value
continue
value += old_state[n_x][n_y]
value -= old_state[i][j]
if(value in b_rule)
return 1
if(value in s_rule)
return old_state[i][j]
return 0
/datum/mapGenerator/ca/caves
b_rule = list(5,6,7,8)
s_rule = list(4)
type_map = list(/turf/open/floor/plating/asteroid/basalt, /turf/closed/mineral/volcanic)
iterations = 5
/datum/mapGenerator/ca/maze
b_rule = list(3)
s_rule = list(1,2,3,4,5)
iterations = 20
edge_value = 0
@@ -0,0 +1,33 @@
/datum/mapGeneratorModule/bottomLayer/cultFloor
spawnableTurfs = list(/turf/open/floor/engine/cult = 100)
/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, \
/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, \
/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, \
/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)
buildmode_name = "Block: Clockwork Floor"
@@ -0,0 +1,27 @@
/datum/mapGenerator/lavaland
var/start_z
var/min_x = 0
var/min_y = 0
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
min_x = min(Start.x,End.x)
min_y = min(Start.y,End.y)
max_x = max(Start.x,End.x)
max_y = max(Start.y,End.y)
..()
/datum/mapGeneratorModule/river
var/river_type = /turf/open/lava/smooth
var/river_nodes = 4
/datum/mapGeneratorModule/river/generate()
var/datum/mapGenerator/lavaland/L = mother
if(!istype(L))
return
spawn_rivers(L.start_z, river_nodes, river_type, min_x = L.min_x, min_y = L.min_y, max_x = L.max_x, max_y = L.max_y)
@@ -0,0 +1,33 @@
/datum/mapGeneratorModule/bottomLayer/lavaland_default
spawnableTurfs = list(/turf/open/floor/plating/asteroid/basalt/lava_land_surface = 100)
/datum/mapGeneratorModule/bottomLayer/lavaland_mineral
spawnableTurfs = list(/turf/closed/mineral/random/volcanic = 100)
/datum/mapGeneratorModule/bottomLayer/lavaland_mineral/dense
spawnableTurfs = list(/turf/closed/mineral/random/high_chance/volcanic = 100)
/datum/mapGeneratorModule/splatterLayer/lavalandMonsters
spawnableTurfs = list()
spawnableAtoms = list(/mob/living/simple_animal/hostile/asteroid/goliath/beast = 10,
/mob/living/simple_animal/hostile/asteroid/hivelord/legion = 10,
/mob/living/simple_animal/hostile/asteroid/basilisk/watcher = 10)
/datum/mapGeneratorModule/splatterLayer/lavalandTendrils
spawnableTurfs = list()
spawnableAtoms = list(/mob/living/simple_animal/hostile/spawner/lavaland = 5,
/mob/living/simple_animal/hostile/spawner/lavaland/legion = 5,
/mob/living/simple_animal/hostile/spawner/lavaland/goliath = 5)
/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"
@@ -0,0 +1,11 @@
//Exists primarily as a test type.
/datum/mapGenerator/nature
modules = list(/datum/mapGeneratorModule/bottomLayer/grassTurfs, \
/datum/mapGeneratorModule/pineTrees, \
/datum/mapGeneratorModule/deadTrees, \
/datum/mapGeneratorModule/randBushes, \
/datum/mapGeneratorModule/randRocks, \
/datum/mapGeneratorModule/denseLayer/grassTufts)
buildmode_name = "Pattern: Nature"
@@ -0,0 +1,111 @@
/datum/mapGeneratorModule/bottomLayer/repairFloorPlasteel
spawnableTurfs = list(/turf/open/floor/plasteel = 100)
var/ignore_wall = FALSE
allowAtomsOnSpace = TRUE
/datum/mapGeneratorModule/bottomLayer/repairFloorPlasteel/place(turf/T)
if(isclosedturf(T) && !ignore_wall)
return FALSE
return ..()
/datum/mapGeneratorModule/bottomLayer/repairFloorPlasteel/flatten
ignore_wall = TRUE
/datum/mapGeneratorModule/border/normalWalls
spawnableAtoms = list()
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
GLOB.reloading_map = TRUE
// This is kind of finicky on multi-Z maps but the reader would need to be
// changed to allow Z cropping and that's a mess
var/z_offset = SSmapping.station_start
var/list/bounds
for (var/path in SSmapping.config.GetFullMapPaths())
var/datum/parsed_map/parsed = load_map(file(path), 1, 1, z_offset, measureOnly = FALSE, no_changeturf = FALSE, cropMap=TRUE, x_lower = mother1.x_low, y_lower = mother1.y_low, x_upper = mother1.x_high, y_upper = mother1.y_high)
bounds = parsed?.bounds
z_offset += bounds[MAP_MAXZ] - bounds[MAP_MINZ] + 1
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], SSmapping.station_start),
locate(bounds[MAP_MAXX], bounds[MAP_MAXY], z_offset - 1)))
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(!is_station_level(start.z) || !is_station_level(end.z))
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 = SSmapping.station_start
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()
@@ -0,0 +1,17 @@
/datum/mapGeneratorModule/bottomLayer/shuttleFloor
spawnableTurfs = list(/turf/open/floor/plasteel/shuttle = 100)
/datum/mapGeneratorModule/border/shuttleWalls
spawnableAtoms = list()
spawnableTurfs = list(/turf/closed/wall/mineral/titanium = 100)
// Generators
/datum/mapGenerator/shuttle/full
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"
@@ -0,0 +1,57 @@
// Modules
/turf/open/floor/plasteel/shuttle/red/syndicate
name = "floor" //Not Brig Floor
/datum/mapGeneratorModule/bottomLayer/syndieFloor
spawnableTurfs = list(/turf/open/floor/plasteel/shuttle/red/syndicate = 100)
/datum/mapGeneratorModule/border/syndieWalls
spawnableAtoms = list()
spawnableTurfs = list(/turf/closed/wall/r_wall = 100)
/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/storage/toolbox/syndicate = 15 ,\
/obj/structure/closet/syndicate = 25, /obj/machinery/suit_storage_unit/syndicate = 15)
/datum/mapGeneratorModule/splatterLayer/syndieMobs
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
/datum/mapGenerator/syndicate/empty //walls and floor only
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, \
/datum/mapGeneratorModule/border/syndieWalls,\
/datum/mapGeneratorModule/syndieFurniture, \
/datum/mapGeneratorModule/splatterLayer/syndieMobs, \
/datum/mapGeneratorModule/bottomLayer/repressurize)
buildmode_name = "Pattern: Shuttle Room: Syndicate: All"