"
- else
- dat += ""
- dat += "| Current sector: | [linked.current_sector ? linked.current_sector.name : "Deep Space"]"
- dat += " |
| Sector information: | [linked.current_sector ? linked.current_sector.desc : "Not Available"]"
- dat += " |
| Current coordinates: | \[[linked.x], [linked.y]\]"
- dat += " |
| Current destination: | "
- if (dx && dy)
- dat += "\[[dx], "
- dat += "[dy]\]"
- else
- dat += "None"
- dat += " |
"
-
- dat += "
"
-
- dat += "Known locations:
"
- dat += ""
- for (var/lvl in map_sectors)
- var/obj/effect/map/sector/S = map_sectors[lvl]
- if (istype(S))
- dat += "| [S.name]: | \[[S.x], [S.y]\] | Plot course |
"
- dat += "
"
-
- dat += "
"
-
- dat += ""
- user << browse("Helm Control[dat]", "window=helm")
- onclose(user, "helm")
- return
-
-
-/obj/machinery/computer/helm/Topic(href, href_list)
- if(..())
- return
-
- if (!linked)
- return
-
- if (href_list["setx"])
- var/newx = input("Input new destiniation x coordinate", "Coordinate input", dx) as num|null
- if (newx)
- dx = Clamp(newx, 1, world.maxx)
-
- if (href_list["sety"])
- var/newy = input("Input new destiniation y coordinate", "Coordinate input", dy) as num|null
- if (newy)
- dy = Clamp(newy, 1, world.maxy)
-
- if (href_list["x"] && href_list["y"])
- dx = text2num(href_list["x"])
- dy = text2num(href_list["y"])
-
- if (href_list["reset"])
- dx = 0
- dy = 0
-
- if (href_list["apilot"])
- autopilot = !autopilot
-
- if (href_list["manual"])
- manual_control = !manual_control
- autopilot = 0
-
- add_fingerprint(usr)
- updateUsrDialog()
-
-//Shuttle controller computer for shuttles going from ship to sectors
-
-/obj/machinery/computer/shuttle_control/explore
- name = "exploration shuttle console"
- shuttle_tag = "Exploration"
- req_access = list()
- var/landing_type //area for shuttle ship-side
-
-/obj/machinery/computer/shuttle_control/explore/initialize()
- ..()
- shuttle_tag = "[shuttle_tag]-[z]"
- if(!shuttle_controller.shuttles[shuttle_tag])
- var/datum/shuttle/ferry/shuttle = new()
- shuttle.warmup_time = 10
- shuttle.area_station = locate(landing_type)
- shuttle.area_offsite = shuttle.area_station
- shuttle_controller.shuttles[shuttle_tag] = shuttle
- shuttle_controller.process_shuttles += shuttle
- testing("Exploration shuttle '[shuttle_tag]' at zlevel [z] successfully added.")
-
-/obj/machinery/computer/shuttle_control/explore/proc/update_destination()
- if(shuttle_controller.shuttles[shuttle_tag])
- var/obj/effect/map/ship/S = map_sectors["[z]"]
- if (!istype(S))
- return
- var/datum/shuttle/ferry/shuttle = shuttle_controller.shuttles[shuttle_tag]
- if(S && S.current_sector)
- var/obj/effect/map/M = S.current_sector
- shuttle.area_offsite = M.shuttle_landing
- testing("Shuttle controller now sends shuttle to [M]")
- else
- shuttle.area_offsite = shuttle.area_station
- shuttle_controller.shuttles[shuttle_tag] = shuttle
-
-/obj/machinery/computer/shuttle_control/explore/attack_hand(user as mob)
- update_destination()
- ..()
\ No newline at end of file
diff --git a/code/WorkInProgress/Chinsky/overmap/sectors.dm b/code/WorkInProgress/Chinsky/overmap/sectors.dm
index 9c80cfc2ac..9e1635a960 100644
--- a/code/WorkInProgress/Chinsky/overmap/sectors.dm
+++ b/code/WorkInProgress/Chinsky/overmap/sectors.dm
@@ -1,4 +1,4 @@
-#define OVERMAP_ZLEVEL 1
+
//===================================================================================
//Hook for building overmap
//===================================================================================
@@ -29,6 +29,7 @@ var/global/list/map_sectors = list()
var/zlevel
var/mapx //coordinates on the
var/mapy //overmap zlevel
+ var/known = 1
/obj/effect/mapinfo/New()
tag = "sector[z]"
@@ -43,9 +44,6 @@ var/global/list/map_sectors = list()
name = "generic ship"
obj_type = /obj/effect/map/ship
-/obj/effect/mapinfo/ship/relaymove(var/mob/user, direction)
- step(src,direction)
-
//===================================================================================
//Overmap object representing zlevel
@@ -57,17 +55,19 @@ var/global/list/map_sectors = list()
icon_state = "sheet-plasteel"
var/map_z = 0
var/area/shuttle/shuttle_landing
+ var/always_known = 1
/obj/effect/map/New(var/obj/effect/mapinfo/data)
map_z = data.zlevel
name = data.name
+ always_known = data.known
if (data.icon != 'icons/mob/screen1.dmi')
icon = data.icon
icon_state = data.icon_state
if(data.desc)
desc = data.desc
- var/new_x = data.mapx ? data.mapx : rand(2,world.maxx-2)
- var/new_y = data.mapy ? data.mapy : rand(2,world.maxy-2)
+ var/new_x = data.mapx ? data.mapx : rand(OVERMAP_EDGE, world.maxx - OVERMAP_EDGE)
+ var/new_y = data.mapy ? data.mapy : rand(OVERMAP_EDGE, world.maxy - OVERMAP_EDGE)
loc = locate(new_x, new_y, OVERMAP_ZLEVEL)
if(data.landing_area)
@@ -93,13 +93,3 @@ var/global/list/map_sectors = list()
name = "generic sector"
desc = "Sector with some stuff in it."
anchored = 1
-
-/obj/effect/map/ship
- name = "generic ship"
- desc = "Space faring vessel."
- icon_state = "sheet-sandstone"
- density = 1
- var/obj/effect/map/current_sector
-
-/obj/effect/map/ship/relaymove(mob/user, direction)
- step(src,direction)
diff --git a/code/WorkInProgress/Chinsky/overmap/ships/computers/engine_control.dm b/code/WorkInProgress/Chinsky/overmap/ships/computers/engine_control.dm
new file mode 100644
index 0000000000..07d6a4579b
--- /dev/null
+++ b/code/WorkInProgress/Chinsky/overmap/ships/computers/engine_control.dm
@@ -0,0 +1,99 @@
+//Engine control and monitoring console
+
+/obj/machinery/computer/engines
+ name = "engines control console"
+ icon_state = "id"
+ var/state = "status"
+ var/list/engines = list()
+ var/obj/effect/map/ship/linked
+
+/obj/machinery/computer/engines/initialize()
+ linked = map_sectors["[z]"]
+ if (linked)
+ if (!linked.eng_control)
+ linked.eng_control = src
+ testing("Engines console at level [z] found a corresponding overmap object '[linked.name]'.")
+ else
+ testing("Engines console at level [z] was unable to find a corresponding overmap object.")
+
+ for(var/datum/ship_engine/E in engines)
+ if (E.zlevel == z && !(E in engines))
+ engines += E
+
+/obj/machinery/computer/engines/attack_hand(var/mob/user as mob)
+ if(..())
+ user.unset_machine()
+ return
+
+ if(!isAI(user))
+ user.set_machine(src)
+
+ ui_interact(user)
+
+/obj/machinery/computer/engines/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null)
+ if(!linked)
+ return
+
+ var/data[0]
+ data["state"] = state
+
+ var/list/enginfo[0]
+ for(var/datum/ship_engine/E in engines)
+ var/list/rdata[0]
+ rdata["eng_type"] = E.name
+ rdata["eng_on"] = E.is_on()
+ rdata["eng_thrust"] = E.get_thrust()
+ rdata["eng_thrust_limiter"] = round(E.get_thrust_limit()*100)
+ rdata["eng_status"] = E.get_status()
+ rdata["eng_reference"] = "\ref[E]"
+ enginfo.Add(list(rdata))
+
+ data["engines_info"] = enginfo
+
+ ui = nanomanager.try_update_ui(user, src, ui_key, ui, data)
+ if (!ui)
+ ui = new(user, src, ui_key, "engines_control.tmpl", "[linked.name] Engines Control", 380, 530)
+ ui.set_initial_data(data)
+ ui.open()
+ ui.set_auto_update(1)
+
+/obj/machinery/computer/engines/Topic(href, href_list)
+ if(..())
+ return
+
+ if(href_list["state"])
+ state = href_list["state"]
+
+ if(href_list["engine"])
+ if(href_list["set_limit"])
+ var/datum/ship_engine/E = locate(href_list["engine"])
+ var/newlim = input("Input new thrust limit (0..100)", "Thrust limit", E.get_thrust_limit()) as num
+ var/limit = Clamp(newlim/100, 0, 1)
+ if(E)
+ E.set_thrust_limit(limit)
+
+ if(href_list["limit"])
+ var/datum/ship_engine/E = locate(href_list["engine"])
+ var/limit = Clamp(E.get_thrust_limit() + text2num(href_list["limit"]), 0, 1)
+ if(E)
+ E.set_thrust_limit(limit)
+
+ if(href_list["toggle"])
+ var/datum/ship_engine/E = locate(href_list["engine"])
+ if(E)
+ E.toggle()
+
+ add_fingerprint(usr)
+ updateUsrDialog()
+
+/obj/machinery/computer/engines/proc/burn()
+ if(engines.len == 0)
+ return 0
+ var/res = 0
+ for(var/datum/ship_engine/E in engines)
+ res |= E.burn()
+ return res
+
+/obj/machinery/computer/engines/proc/get_total_thrust()
+ for(var/datum/ship_engine/E in engines)
+ . += E.get_thrust()
diff --git a/code/WorkInProgress/Chinsky/overmap/ships/computers/helm.dm b/code/WorkInProgress/Chinsky/overmap/ships/computers/helm.dm
new file mode 100644
index 0000000000..f81e569abc
--- /dev/null
+++ b/code/WorkInProgress/Chinsky/overmap/ships/computers/helm.dm
@@ -0,0 +1,174 @@
+/obj/machinery/computer/helm
+ name = "helm control console"
+ icon_state = "id"
+ var/state = "status"
+ var/obj/effect/map/ship/linked //connected overmap object
+ var/autopilot = 0
+ var/manual_control = 0
+ var/list/known_sectors = list()
+ var/dx //desitnation
+ var/dy //coordinates
+
+/obj/machinery/computer/helm/initialize()
+ linked = map_sectors["[z]"]
+ if (linked)
+ if(!linked.nav_control)
+ linked.nav_control = src
+ testing("Helm console at level [z] found a corresponding overmap object '[linked.name]'.")
+ else
+ testing("Helm console at level [z] was unable to find a corresponding overmap object.")
+
+ for(var/level in map_sectors)
+ var/obj/effect/map/sector/S = map_sectors["[level]"]
+ if (istype(S) && S.always_known)
+ var/datum/data/record/R = new()
+ R.fields["name"] = S.name
+ R.fields["x"] = S.x
+ R.fields["y"] = S.y
+ known_sectors += R
+
+/obj/machinery/computer/helm/process()
+ ..()
+ if (autopilot && dx && dy)
+ var/turf/T = locate(dx,dy,1)
+ if(linked.loc == T)
+ if(linked.is_still())
+ autopilot = 0
+ else
+ linked.decelerate()
+
+ var/brake_path = linked.get_brake_path()
+
+ if(get_dist(linked.loc, T) > brake_path)
+ linked.accelerate(get_dir(linked.loc, T))
+ else
+ linked.decelerate()
+
+ return
+
+/obj/machinery/computer/helm/relaymove(var/mob/user, direction)
+ if(manual_control && linked)
+ linked.relaymove(user,direction)
+ return 1
+
+/obj/machinery/computer/helm/check_eye(var/mob/user as mob)
+ if (!manual_control)
+ return null
+ if (!get_dist(user, src) > 1 || user.blinded || !linked )
+ return null
+ user.reset_view(linked)
+ return 1
+
+/obj/machinery/computer/helm/attack_hand(var/mob/user as mob)
+ if(..())
+ user.unset_machine()
+ manual_control = 0
+ return
+
+ if(!isAI(user))
+ user.set_machine(src)
+
+ ui_interact(user)
+
+/obj/machinery/computer/helm/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null)
+ if(!linked)
+ return
+
+ var/data[0]
+ data["state"] = state
+
+ data["sector"] = linked.current_sector ? linked.current_sector.name : "Deep Space"
+ data["sector_info"] = linked.current_sector ? linked.current_sector.desc : "Not Available"
+ data["s_x"] = linked.x
+ data["s_y"] = linked.y
+ data["dest"] = dy && dx
+ data["d_x"] = dx
+ data["d_y"] = dy
+ data["speed"] = linked.get_speed()
+ data["accel"] = round(linked.get_acceleration())
+ data["heading"] = linked.get_heading() ? dir2angle(linked.get_heading()) : 0
+ data["autopilot"] = autopilot
+ data["manual_control"] = manual_control
+
+ var/list/locations[0]
+ for (var/datum/data/record/R in known_sectors)
+ var/list/rdata[0]
+ rdata["name"] = R.fields["name"]
+ rdata["x"] = R.fields["x"]
+ rdata["y"] = R.fields["y"]
+ rdata["reference"] = "\ref[R]"
+ locations.Add(list(rdata))
+
+ data["locations"] = locations
+
+ ui = nanomanager.try_update_ui(user, src, ui_key, ui, data)
+ if (!ui)
+ ui = new(user, src, ui_key, "helm.tmpl", "[linked.name] Helm Control", 380, 530)
+ ui.set_initial_data(data)
+ ui.open()
+ ui.set_auto_update(1)
+
+/obj/machinery/computer/helm/Topic(href, href_list)
+ if(..())
+ return
+
+ if (!linked)
+ return
+
+ if (href_list["add"])
+ var/datum/data/record/R = new()
+ var/sec_name = input("Input naviation entry name", "New navigation entry", "Sector #[known_sectors.len]") as text
+ if(!sec_name)
+ sec_name = "Sector #[known_sectors.len]"
+ R.fields["name"] = sec_name
+ switch(href_list["add"])
+ if("current")
+ R.fields["x"] = linked.x
+ R.fields["y"] = linked.y
+ if("new")
+ var/newx = input("Input new entry x coordinate", "Coordinate input", linked.x) as num
+ R.fields["x"] = Clamp(newx, 1, world.maxx)
+ var/newy = input("Input new entry y coordinate", "Coordinate input", linked.y) as num
+ R.fields["y"] = Clamp(newy, 1, world.maxy)
+ known_sectors += R
+
+ if (href_list["remove"])
+ var/datum/data/record/R = locate(href_list["remove"])
+ known_sectors.Remove(R)
+
+ if (href_list["setx"])
+ var/newx = input("Input new destiniation x coordinate", "Coordinate input", dx) as num|null
+ if (newx)
+ dx = Clamp(newx, 1, world.maxx)
+
+ if (href_list["sety"])
+ var/newy = input("Input new destiniation y coordinate", "Coordinate input", dy) as num|null
+ if (newy)
+ dy = Clamp(newy, 1, world.maxy)
+
+ if (href_list["x"] && href_list["y"])
+ dx = text2num(href_list["x"])
+ dy = text2num(href_list["y"])
+
+ if (href_list["reset"])
+ dx = 0
+ dy = 0
+
+ if (href_list["move"])
+ var/ndir = text2num(href_list["move"])
+ linked.relaymove(usr, ndir)
+
+ if (href_list["brake"])
+ linked.decelerate()
+
+ if (href_list["apilot"])
+ autopilot = !autopilot
+
+ if (href_list["manual"])
+ manual_control = !manual_control
+
+ if (href_list["state"])
+ state = href_list["state"]
+ add_fingerprint(usr)
+ updateUsrDialog()
+
diff --git a/code/WorkInProgress/Chinsky/overmap/ships/computers/shuttle.dm b/code/WorkInProgress/Chinsky/overmap/ships/computers/shuttle.dm
new file mode 100644
index 0000000000..c63ad2d763
--- /dev/null
+++ b/code/WorkInProgress/Chinsky/overmap/ships/computers/shuttle.dm
@@ -0,0 +1,139 @@
+//Shuttle controller computer for shuttles going between sectors
+/datum/shuttle/ferry/var/range = 0 //how many overmap tiles can shuttle go, for picking destinatiosn and returning.
+/obj/machinery/computer/shuttle_control/explore
+ name = "exploration shuttle console"
+ shuttle_tag = "Exploration"
+ req_access = list()
+ var/landing_type //area for shuttle ship-side
+ var/obj/effect/map/destination //current destination
+ var/obj/effect/map/home //current destination
+
+/obj/machinery/computer/shuttle_control/explore/initialize()
+ ..()
+ home = map_sectors["[z]"]
+ shuttle_tag = "[shuttle_tag]-[z]"
+ if(!shuttle_controller.shuttles[shuttle_tag])
+ var/datum/shuttle/ferry/shuttle = new()
+ shuttle.warmup_time = 10
+ shuttle.area_station = locate(landing_type)
+ shuttle.area_offsite = shuttle.area_station
+ shuttle_controller.shuttles[shuttle_tag] = shuttle
+ shuttle_controller.process_shuttles += shuttle
+ testing("Exploration shuttle '[shuttle_tag]' at zlevel [z] successfully added.")
+
+//Sets destination to new sector. Can be null.
+/obj/machinery/computer/shuttle_control/explore/proc/update_destination(var/obj/effect/map/D)
+ destination = D
+ if(destination && shuttle_controller.shuttles[shuttle_tag])
+ var/datum/shuttle/ferry/shuttle = shuttle_controller.shuttles[shuttle_tag]
+ shuttle.area_offsite = destination.shuttle_landing
+ testing("Shuttle controller [shuttle_tag] now sends shuttle to [destination]")
+ shuttle_controller.shuttles[shuttle_tag] = shuttle
+
+//Gets all sectors with landing zones in shuttle's range
+/obj/machinery/computer/shuttle_control/explore/proc/get_possible_destinations()
+ var/list/res = list()
+ var/datum/shuttle/ferry/shuttle = shuttle_controller.shuttles[shuttle_tag]
+ for (var/obj/effect/map/S in orange(shuttle.range, home))
+ if(S.shuttle_landing)
+ res += S
+ return res
+
+//Checks if current destination is still reachable
+/obj/machinery/computer/shuttle_control/explore/proc/check_destination()
+ var/datum/shuttle/ferry/shuttle = shuttle_controller.shuttles[shuttle_tag]
+ return shuttle && destination && get_dist(home, destination) <= shuttle.range
+
+/obj/machinery/computer/shuttle_control/explore/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null)
+ var/data[0]
+ var/datum/shuttle/ferry/shuttle = shuttle_controller.shuttles[shuttle_tag]
+ if (!istype(shuttle))
+ return
+
+ //If we are already there, or can't reach place anymore, reset destination
+ if(!shuttle.location && !check_destination())
+ destination = null
+
+ //check if shuttle can fly at all
+ var/can_go = !isnull(destination)
+ var/current_destination = destination ? destination.name : "None"
+ //shuttle doesn't need destination set to return home, as long as it's in range.
+ if(shuttle.location)
+ current_destination = "Return"
+ var/area/offsite = shuttle.area_offsite
+ var/obj/effect/map/cur_loc = map_sectors["[offsite.z]"]
+ can_go = (get_dist(home,cur_loc) <= shuttle.range)
+
+ //disable picking locations if there are none, or shuttle is already off-site
+ var/list/possible_d = get_possible_destinations()
+ var/can_pick = !shuttle.location && possible_d.len
+
+ var/shuttle_state
+ switch(shuttle.moving_status)
+ if(SHUTTLE_IDLE) shuttle_state = "idle"
+ if(SHUTTLE_WARMUP) shuttle_state = "warmup"
+ if(SHUTTLE_INTRANSIT) shuttle_state = "in_transit"
+
+ var/shuttle_status
+ switch (shuttle.process_state)
+ if(IDLE_STATE)
+ if (shuttle.in_use)
+ shuttle_status = "Busy."
+ else if (!shuttle.location)
+ shuttle_status = "Standing-by at station."
+ else
+ shuttle_status = "Standing-by at offsite location."
+ if(WAIT_LAUNCH)
+ shuttle_status = "Shuttle has recieved command and will depart shortly."
+ if(WAIT_ARRIVE)
+ shuttle_status = "Proceeding to destination."
+ if(WAIT_FINISH)
+ shuttle_status = "Arriving at destination now."
+
+ data = list(
+ "destination_name" = current_destination,
+ "can_pick" = can_pick,
+ "shuttle_status" = shuttle_status,
+ "shuttle_state" = shuttle_state,
+ "has_docking" = shuttle.docking_controller? 1 : 0,
+ "docking_status" = shuttle.docking_controller? shuttle.docking_controller.get_docking_status() : null,
+ "docking_override" = shuttle.docking_controller? shuttle.docking_controller.override_enabled : null,
+ "can_launch" = can_go && shuttle.can_launch(),
+ "can_cancel" = can_go && shuttle.can_cancel(),
+ "can_force" = can_go && shuttle.can_force(),
+ )
+
+ ui = nanomanager.try_update_ui(user, src, ui_key, ui, data)
+
+ if (!ui)
+ ui = new(user, src, ui_key, "shuttle_control_console_exploration.tmpl", "[shuttle_tag] Shuttle Control", 470, 310)
+ ui.set_initial_data(data)
+ ui.open()
+ ui.set_auto_update(1)
+
+/obj/machinery/computer/shuttle_control/explore/Topic(href, href_list)
+ if(..())
+ return
+
+ usr.set_machine(src)
+ src.add_fingerprint(usr)
+
+ var/datum/shuttle/ferry/shuttle = shuttle_controller.shuttles[shuttle_tag]
+ if (!istype(shuttle))
+ return
+
+ if(href_list["pick"])
+ var/obj/effect/map/self = map_sectors["[z]"]
+ if(self)
+ var/list/possible_d = get_possible_destinations()
+ var/obj/effect/map/D
+ if(possible_d.len)
+ D = input("Choose shuttle destination", "Shuttle Destination") as null|anything in possible_d
+ update_destination(D)
+
+ if(href_list["move"])
+ shuttle.launch(src)
+ if(href_list["force"])
+ shuttle.force_launch(src)
+ else if(href_list["cancel"])
+ shuttle.cancel_launch(src)
\ No newline at end of file
diff --git a/code/WorkInProgress/Chinsky/overmap/ships/engines/engine.dm b/code/WorkInProgress/Chinsky/overmap/ships/engines/engine.dm
new file mode 100644
index 0000000000..80690aa84d
--- /dev/null
+++ b/code/WorkInProgress/Chinsky/overmap/ships/engines/engine.dm
@@ -0,0 +1,60 @@
+//Engine component object
+
+var/list/ship_engines = list()
+/datum/ship_engine
+ var/name = "ship engine"
+ var/obj/machinery/engine //actual engine object
+ var/zlevel = 0
+
+/datum/ship_engine/New(var/obj/machinery/holder)
+ engine = holder
+ zlevel = holder.z
+ for(var/obj/machinery/computer/engines/E in machines)
+ if (E.z == zlevel && !(src in E.engines))
+ E.engines += src
+ break
+
+//Tries to fire the engine. If successfull, returns 1
+/datum/ship_engine/proc/burn()
+ if(!engine)
+ die()
+ return 1
+
+//Returns status string for this engine
+/datum/ship_engine/proc/get_status()
+ if(!engine)
+ die()
+ return "All systems nominal"
+
+/datum/ship_engine/proc/get_thrust()
+ if(!engine)
+ die()
+ return 100
+
+//Sets thrust limiter, a number between 0 and 1
+/datum/ship_engine/proc/set_thrust_limit(var/new_limit)
+ if(!engine)
+ die()
+ return 1
+
+/datum/ship_engine/proc/get_thrust_limit()
+ if(!engine)
+ die()
+ return 1
+
+/datum/ship_engine/proc/is_on()
+ if(!engine)
+ die()
+ return 1
+
+/datum/ship_engine/proc/toggle()
+ if(!engine)
+ die()
+ return 1
+
+/datum/ship_engine/proc/die()
+ for(var/obj/machinery/computer/engines/E in machines)
+ if (E.z == zlevel)
+ E.engines -= src
+ break
+ del(src)
\ No newline at end of file
diff --git a/code/WorkInProgress/Chinsky/overmap/ships/engines/thermal.dm b/code/WorkInProgress/Chinsky/overmap/ships/engines/thermal.dm
new file mode 100644
index 0000000000..b26e721638
--- /dev/null
+++ b/code/WorkInProgress/Chinsky/overmap/ships/engines/thermal.dm
@@ -0,0 +1,99 @@
+//Thermal nozzle engine
+/datum/ship_engine/thermal
+ name = "thermal engine"
+
+/datum/ship_engine/thermal/get_status()
+ ..()
+ var/obj/machinery/atmospherics/unary/engine/E = engine
+ return "Fuel pressure: [E.air_contents.return_pressure()]"
+
+/datum/ship_engine/thermal/get_thrust()
+ ..()
+ var/obj/machinery/atmospherics/unary/engine/E = engine
+ if(!is_on())
+ return 0
+ var/pressurized_coef = E.air_contents.return_pressure()/E.effective_pressure
+ return round(E.thrust_limit * E.nominal_thrust * pressurized_coef)
+
+/datum/ship_engine/thermal/burn()
+ ..()
+ var/obj/machinery/atmospherics/unary/engine/E = engine
+ return E.burn()
+
+/datum/ship_engine/thermal/set_thrust_limit(var/new_limit)
+ ..()
+ var/obj/machinery/atmospherics/unary/engine/E = engine
+ E.thrust_limit = new_limit
+
+/datum/ship_engine/thermal/get_thrust_limit()
+ ..()
+ var/obj/machinery/atmospherics/unary/engine/E = engine
+ return E.thrust_limit
+
+/datum/ship_engine/thermal/is_on()
+ ..()
+ var/obj/machinery/atmospherics/unary/engine/E = engine
+ return E.on
+
+/datum/ship_engine/thermal/toggle()
+ ..()
+ var/obj/machinery/atmospherics/unary/engine/E = engine
+ E.on = !E.on
+
+//Actual thermal nozzle engine object
+
+/obj/machinery/atmospherics/unary/engine
+ name = "engine nozzle"
+ desc = "Simple thermal nozzle, uses heated gast to propell the ship."
+ icon = 'icons/obj/ship_engine.dmi'
+ icon_state = "nozzle"
+ var/on = 1
+ var/thrust_limit = 1 //Value between 1 and 0 to limit the resulting thrust
+ var/nominal_thrust = 3000
+ var/effective_pressure = 3000
+ var/datum/ship_engine/thermal/controller
+
+/obj/machinery/atmospherics/unary/engine/initialize()
+ ..()
+ controller = new(src)
+
+/obj/machinery/atmospherics/unary/engine/Del()
+ ..()
+ controller.die()
+
+/obj/machinery/atmospherics/unary/engine/proc/burn()
+ if (!on)
+ return
+ if(air_contents.temperature > 0)
+ var/transfer_moles = 100 * air_contents.volume/max(air_contents.temperature * R_IDEAL_GAS_EQUATION, 0,01)
+ transfer_moles = round(thrust_limit * transfer_moles, 0.01)
+ if(transfer_moles > air_contents.total_moles)
+ on = !on
+ return 0
+
+ var/datum/gas_mixture/removed = air_contents.remove(transfer_moles)
+
+ loc.assume_air(removed)
+ if(air_contents.temperature > PHORON_MINIMUM_BURN_TEMPERATURE)
+ var/exhaust_dir = reverse_direction(dir)
+ var/turf/T = get_step(src,exhaust_dir)
+ if(T)
+ new/obj/effect/engine_exhaust(T,exhaust_dir,air_contents.temperature)
+ return 1
+
+//Exhaust effect
+/obj/effect/engine_exhaust
+ name = "engine exhaust"
+ icon = 'icons/effects/effects.dmi'
+ icon_state = "exhaust"
+ anchored = 1
+
+ New(var/turf/nloc, var/ndir, var/temp)
+ dir = ndir
+ ..(nloc)
+
+ if(nloc)
+ nloc.hotspot_expose(temp,125)
+
+ spawn(20)
+ loc = null
\ No newline at end of file
diff --git a/code/WorkInProgress/Chinsky/overmap/ships/ship.dm b/code/WorkInProgress/Chinsky/overmap/ships/ship.dm
new file mode 100644
index 0000000000..b080c41b07
--- /dev/null
+++ b/code/WorkInProgress/Chinsky/overmap/ships/ship.dm
@@ -0,0 +1,105 @@
+/obj/effect/map/ship
+ name = "generic ship"
+ desc = "Space faring vessel."
+ icon_state = "sheet-sandstone"
+ var/vessel_mass = 9000 //tonnes, random number
+ var/default_delay = 60
+ var/list/speed = list(0,0)
+ var/last_burn = 0
+ var/list/last_movement = list(0,0)
+ var/fore_dir = NORTH
+
+ var/obj/effect/map/current_sector
+ var/obj/machinery/computer/helm/nav_control
+ var/obj/machinery/computer/engines/eng_control
+
+/obj/effect/map/ship/initialize()
+ for(var/obj/machinery/computer/engines/E in machines)
+ if (E.z == map_z)
+ eng_control = E
+ break
+ for(var/obj/machinery/computer/helm/H in machines)
+ if (H.z == map_z)
+ nav_control = H
+ break
+ processing_objects.Add(src)
+
+/obj/effect/map/ship/relaymove(mob/user, direction)
+ accelerate(direction)
+
+/obj/effect/map/ship/proc/is_still()
+ return !(speed[1] || speed[2])
+
+/obj/effect/map/ship/proc/get_acceleration()
+ return eng_control.get_total_thrust()/vessel_mass
+
+/obj/effect/map/ship/proc/get_speed()
+ return round(sqrt(speed[1]*speed[1] + speed[2]*speed[2]))
+
+/obj/effect/map/ship/proc/get_heading()
+ var/res = 0
+ if(speed[1])
+ if(speed[1] > 0)
+ res |= EAST
+ else
+ res |= WEST
+ if(speed[2])
+ if(speed[2] > 0)
+ res |= NORTH
+ else
+ res |= SOUTH
+ return res
+
+/obj/effect/map/ship/proc/adjust_speed(n_x, n_y)
+ speed[1] = Clamp(speed[1] + n_x, -default_delay, default_delay)
+ speed[2] = Clamp(speed[2] + n_y, -default_delay, default_delay)
+ if(is_still())
+ toggle_move_stars(map_z)
+ else
+ toggle_move_stars(map_z, fore_dir)
+
+/obj/effect/map/ship/proc/can_burn()
+ if (!eng_control)
+ return 0
+ if (world.time < last_burn + 10)
+ return 0
+ if (!eng_control.burn())
+ return 0
+ return 1
+
+/obj/effect/map/ship/proc/get_brake_path()
+ if(!get_acceleration())
+ return INFINITY
+ return max(abs(speed[1]),abs(speed[2]))/get_acceleration()
+
+/obj/effect/map/ship/proc/decelerate()
+ if(!is_still() && can_burn())
+ if (speed[1])
+ adjust_speed(-SIGN(speed[1]) * min(get_acceleration(),speed[1]), 0)
+ if (speed[2])
+ adjust_speed(0, -SIGN(speed[2]) * min(get_acceleration(),speed[2]))
+ last_burn = world.time
+
+/obj/effect/map/ship/proc/accelerate(direction)
+ if(can_burn())
+ last_burn = world.time
+
+ if(direction & EAST)
+ adjust_speed(get_acceleration(), 0)
+ if(direction & WEST)
+ adjust_speed(-get_acceleration(), 0)
+ if(direction & NORTH)
+ adjust_speed(0, get_acceleration())
+ if(direction & SOUTH)
+ adjust_speed(0, -get_acceleration())
+
+/obj/effect/map/ship/process()
+ if(!is_still())
+ var/list/deltas = list(0,0)
+ for(var/i=1, i<=2, i++)
+ if(speed[i] && world.time > last_movement[i] + default_delay - speed[i])
+ deltas[i] = speed[i] > 0 ? 1 : -1
+ last_movement[i] = world.time
+ var/turf/newloc = locate(x + deltas[1], y + deltas[2], z)
+ if(newloc)
+ Move(newloc)
\ No newline at end of file
diff --git a/icons/effects/effects.dmi b/icons/effects/effects.dmi
index 7c86950ba6..67a1c2ce29 100644
Binary files a/icons/effects/effects.dmi and b/icons/effects/effects.dmi differ
diff --git a/icons/obj/ship_engine.dmi b/icons/obj/ship_engine.dmi
new file mode 100644
index 0000000000..76546be416
Binary files /dev/null and b/icons/obj/ship_engine.dmi differ
diff --git a/maps/overmap/bearcat/bearcat.dm b/maps/overmap/bearcat/bearcat.dm
index 87b43bf4ef..801d2c7c18 100644
--- a/maps/overmap/bearcat/bearcat.dm
+++ b/maps/overmap/bearcat/bearcat.dm
@@ -105,6 +105,11 @@
icon_state = "tcomsatcham"
music = list('sound/ambience/signal.ogg')
+/area/ship/scrap/shuttle/
+ requires_power = 0
+ luminosity = 1
+ lighting_use_dynamic = 0
+
/area/ship/scrap/shuttle/ingoing
name = "\improper Docking Bay #1"
icon_state = "tcomsatcham"
diff --git a/maps/overmap/bearcat/bearcat.dmm b/maps/overmap/bearcat/bearcat.dmm
index 2814abb50d..be6541ec91 100644
--- a/maps/overmap/bearcat/bearcat.dmm
+++ b/maps/overmap/bearcat/bearcat.dmm
@@ -9,13 +9,13 @@
"ai" = (/obj/machinery/computer/station_alert,/turf/simulated/floor/bluegrid,/area/ship/scrap/command)
"aj" = (/obj/effect/mapinfo/ship/bearcat,/turf/space,/area)
"ak" = (/obj/structure/table,/obj/machinery/light,/obj/item/device/radio,/obj/item/device/radio/intercom{pixel_y = -32},/turf/simulated/floor{tag = "icon-gcircuit (SOUTHEAST)"; icon_state = "gcircuit"; dir = 6},/area/ship/scrap/command)
-"al" = (/obj/structure/stool/bed/chair/comfy/teal{tag = "icon-comfychair_teal (NORTH)"; icon_state = "comfychair_teal"; dir = 1},/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/effect/landmark/start{name = "Captain"},/turf/simulated/floor{tag = "icon-gcircuitoff"; icon_state = "gcircuitoff"; dir = 2},/area/ship/scrap/command)
+"al" = (/obj/structure/stool/bed/chair/comfy/teal{tag = "icon-comfychair_teal (NORTH)"; icon_state = "comfychair_teal"; dir = 1},/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/effect/landmark/start{name = "Captain"},/turf/simulated/floor{tag = "icon-gcircuitoff"; icon_state = "gcircuitoff"; dir = 2},/area/ship/scrap/command)
"am" = (/obj/structure/table,/obj/machinery/light,/obj/machinery/newscaster{pixel_y = -32},/obj/machinery/door_control{id = "scraplock"; name = "External Lockdown"},/turf/simulated/floor{tag = "icon-gcircuit (SOUTHEAST)"; icon_state = "gcircuit"; dir = 6},/area/ship/scrap/command)
"an" = (/turf/simulated/wall/r_wall,/area/ship/scrap/command)
"ao" = (/obj/machinery/door/airlock/hatch,/obj/machinery/atmospherics/pipe/simple{dir = 2; icon_state = "intact"; level = 1; tag = "icon-intact"},/turf/simulated/floor,/area/ship/scrap/command)
"ap" = (/turf/simulated/wall/r_wall,/area/ship/scrap/comms)
"aq" = (/obj/structure/window/reinforced{dir = 5; health = 1e+007},/obj/structure/grille,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "scraplock"; name = "External Blast Doors"; opacity = 0},/turf/simulated/floor{icon_state = "white"},/area/ship/scrap/comms)
-"ar" = (/obj/machinery/atmospherics/pipe/simple{dir = 2; icon_state = "intact"; level = 1; tag = "icon-intact"},/obj/machinery/light_switch{pixel_x = 28},/turf/simulated/floor{tag = "icon-neutralfull (EAST)"; icon_state = "neutralfull"; dir = 4},/area/ship/scrap/command)
+"ar" = (/obj/machinery/light_switch{pixel_x = 28},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor{tag = "icon-neutralfull (EAST)"; icon_state = "neutralfull"; dir = 4},/area/ship/scrap/command)
"as" = (/turf/simulated/wall/r_wall,/area/ship/scrap/command/captain)
"at" = (/obj/structure/window/reinforced{dir = 5; health = 1e+007},/obj/structure/grille,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "scraplock"; name = "External Blast Doors"; opacity = 0},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/simulated/floor{icon_state = "white"},/area/ship/scrap/command/captain)
"au" = (/obj/machinery/account_database,/turf/simulated/floor/bluegrid,/area/ship/scrap/comms)
@@ -29,7 +29,7 @@
"aC" = (/obj/machinery/telecomms/allinone,/turf/simulated/floor/bluegrid,/area/ship/scrap/comms)
"aD" = (/obj/machinery/door/window/westleft,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; level = 2; on = 1},/turf/simulated/floor{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/ship/scrap/comms)
"aE" = (/obj/machinery/door/airlock/hatch,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple{tag = "icon-intact (WEST)"; icon_state = "intact"; dir = 8; level = 1},/turf/simulated/floor{tag = "icon-neutralfull (EAST)"; icon_state = "neutralfull"; dir = 4},/area/ship/scrap/comms)
-"aF" = (/obj/structure/cable{tag = "icon-2-8"; icon_state = "2-8"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/manifold4w{level = 1},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor{tag = "icon-neutralfull (EAST)"; icon_state = "neutralfull"; dir = 4},/area/ship/scrap/command)
+"aF" = (/obj/structure/cable{tag = "icon-2-8"; icon_state = "2-8"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/atmospherics/pipe/manifold4w/hidden,/turf/simulated/floor{tag = "icon-neutralfull (EAST)"; icon_state = "neutralfull"; dir = 4},/area/ship/scrap/command)
"aG" = (/obj/machinery/door/airlock/hatch,/obj/machinery/atmospherics/pipe/simple{tag = "icon-intact (WEST)"; icon_state = "intact"; dir = 8; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor{tag = "icon-neutralfull (EAST)"; icon_state = "neutralfull"; dir = 4},/area/ship/scrap/command/captain)
"aH" = (/obj/machinery/atmospherics/pipe/simple{tag = "icon-intact (WEST)"; icon_state = "intact"; dir = 8; level = 1},/obj/structure/cable{tag = "icon-6-8"; icon_state = "6-8"},/turf/simulated/floor{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/ship/scrap/command/captain)
"aI" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; level = 1; on = 1},/turf/simulated/floor{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/ship/scrap/command/captain)
@@ -339,7 +339,7 @@
"gA" = (/obj/machinery/atmospherics/pipe/tank/air,/turf/simulated/floor/plating,/area/ship/scrap/maintenance/atmos)
"gB" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/alarm{pixel_y = 25},/turf/simulated/floor/plating,/area/ship/scrap/maintenance/atmos)
"gC" = (/obj/machinery/pipedispenser,/obj/machinery/light/small{dir = 4},/obj/machinery/light_switch{pixel_y = 25},/turf/simulated/floor/plating,/area/ship/scrap/maintenance/atmos)
-"gD" = (/obj/machinery/power/apc{dir = 1; name = "Maintenance APC"},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor{tag = "icon-bot"; icon_state = "bot"; dir = 2},/area/ship/scrap/maintenance)
+"gD" = (/obj/machinery/power/apc{dir = 1; name = "Maintenance APC"},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/disposalpipe/segment,/obj/machinery/computer/engines,/turf/simulated/floor{tag = "icon-bot"; icon_state = "bot"; dir = 2},/area/ship/scrap/maintenance)
"gE" = (/obj/machinery/light/small{tag = "icon-bulb1 (NORTH)"; icon_state = "bulb1"; dir = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/alarm{pixel_y = 32},/obj/structure/closet/secure_closet/engineering_electrical,/turf/simulated/floor{tag = "icon-bot"; icon_state = "bot"; dir = 2},/area/ship/scrap/maintenance)
"gF" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/obj/item/device/radio/intercom{pixel_y = 32},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/closet/toolcloset,/turf/simulated/floor{tag = "icon-bot"; icon_state = "bot"; dir = 2},/area/ship/scrap/maintenance)
"gG" = (/obj/machinery/atmospherics/pipe/simple{tag = "icon-intact"; icon_state = "intact"; dir = 2; level = 2},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{tag = "icon-floorgrime (SOUTHEAST)"; icon_state = "floorgrime"; dir = 6},/area/ship/scrap/maintenance)
@@ -381,17 +381,27 @@
"hq" = (/obj/structure/disposalpipe/segment,/turf/simulated/wall/r_wall,/area/ship/scrap/maintenance/atmos)
"hr" = (/obj/structure/cable{tag = "icon-5-6"; icon_state = "5-6"},/obj/machinery/door/airlock/maintenance_hatch{name = "Hatch"; normalspeed = 0},/turf/simulated/floor{tag = "icon-floorgrime (SOUTHEAST)"; icon_state = "floorgrime"; dir = 6},/area/ship/scrap/maintenance/engine)
"hs" = (/obj/structure/disposaloutlet,/obj/structure/disposalpipe/trunk{tag = "icon-pipe-t (NORTH)"; icon_state = "pipe-t"; dir = 1},/turf/space,/area)
-"ht" = (/turf/simulated/floor{tag = "icon-warnplate (SOUTHWEST)"; icon_state = "warnplate"; dir = 10},/area/ship/scrap/maintenance/engine)
-"hu" = (/obj/structure/cable{tag = "icon-4-9"; icon_state = "4-9"},/turf/simulated/floor{tag = "icon-warnplate"; icon_state = "warnplate"; dir = 2},/area/ship/scrap/maintenance/engine)
-"hv" = (/obj/machinery/power/apc{dir = 1; name = "Engine APC"},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{tag = "icon-warnplate"; icon_state = "warnplate"; dir = 2},/area/ship/scrap/maintenance/engine)
-"hw" = (/obj/machinery/light/small{tag = "icon-bulb1 (NORTH)"; icon_state = "bulb1"; dir = 1},/turf/simulated/floor{tag = "icon-warnplate"; icon_state = "warnplate"; dir = 2},/area/ship/scrap/maintenance/engine)
-"hx" = (/turf/simulated/floor{tag = "icon-warnplate"; icon_state = "warnplate"; dir = 2},/area/ship/scrap/maintenance/engine)
-"hy" = (/obj/effect/decal/cleanable/cobweb2,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{tag = "icon-warnplate (SOUTHEAST)"; icon_state = "warnplate"; dir = 6},/area/ship/scrap/maintenance/engine)
-"hz" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/sign{tag = "icon-radiation"; icon_state = "radiation"},/turf/simulated/wall,/area/ship/scrap/maintenance/engine)
-"hA" = (/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor{tag = "icon-wall_thermite"; icon_state = "wall_thermite"; dir = 2},/area/ship/scrap/maintenance/engine)
-"hB" = (/turf/space,/area/ship/scrap/maintenance/engine)
-"hC" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "scraplock"; name = "External Blast Doors"; opacity = 0},/turf/space,/area/ship/scrap/maintenance/engine)
-"hD" = (/obj/structure/shuttle/engine/propulsion/burst,/turf/space,/area/ship/scrap/maintenance/engine)
+"ht" = (/turf/simulated/floor/plating,/area/ship/scrap/maintenance/engine)
+"hu" = (/obj/structure/cable{tag = "icon-4-9"; icon_state = "4-9"},/turf/simulated/floor/plating,/area/ship/scrap/maintenance/engine)
+"hv" = (/obj/machinery/power/apc{dir = 1; name = "Engine APC"},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/ship/scrap/maintenance/engine)
+"hw" = (/obj/machinery/light/small{tag = "icon-bulb1 (NORTH)"; icon_state = "bulb1"; dir = 1},/obj/machinery/atmospherics/portables_connector,/turf/simulated/floor/plating,/area/ship/scrap/maintenance/engine)
+"hx" = (/obj/machinery/atmospherics/portables_connector,/turf/simulated/floor/plating,/area/ship/scrap/maintenance/engine)
+"hy" = (/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{tag = "icon-intact (SOUTHEAST)"; icon_state = "intact"; dir = 6},/turf/simulated/floor/plating,/area/ship/scrap/maintenance/engine)
+"hz" = (/obj/effect/decal/cleanable/cobweb2,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/atmospherics/pipe/tank/phoron{tag = "icon-intact (WEST)"; icon_state = "intact"; dir = 8},/turf/simulated/floor/plating,/area/ship/scrap/maintenance/engine)
+"hA" = (/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/turf/simulated/floor/plating,/area/ship/scrap/maintenance/engine)
+"hB" = (/obj/machinery/atmospherics/tvalve{tag = "icon-tvalve0 (WEST)"; icon_state = "tvalve0"; dir = 8},/turf/simulated/floor/plating,/area/ship/scrap/maintenance/engine)
+"hC" = (/obj/machinery/atmospherics/pipe/manifold/visible/scrubbers{tag = "icon-manifold (WEST)"; icon_state = "manifold"; dir = 8},/obj/machinery/atmospherics/pipe/manifold4w/visible/scrubbers,/turf/simulated/floor/plating,/area/ship/scrap/maintenance/engine)
+"hD" = (/obj/machinery/atmospherics/pipe/tank/oxygen{tag = "icon-intact (WEST)"; icon_state = "intact"; dir = 8},/turf/simulated/floor/plating,/area/ship/scrap/maintenance/engine)
+"hE" = (/obj/machinery/atmospherics/unary/heat_reservoir/heater{tag = "icon-freezer_0 (EAST)"; icon_state = "freezer_0"; dir = 4},/turf/simulated/floor/plating,/area/ship/scrap/maintenance/engine)
+"hF" = (/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor/plating,/area/ship/scrap/maintenance/engine)
+"hG" = (/obj/machinery/atmospherics/pipe/manifold/visible/scrubbers{tag = "icon-manifold (NORTH)"; icon_state = "manifold"; dir = 1},/turf/simulated/floor/plating,/area/ship/scrap/maintenance/engine)
+"hH" = (/obj/machinery/atmospherics/valve/open{tag = "icon-valve1 (EAST)"; icon_state = "valve1"; dir = 4},/turf/simulated/floor/plating,/area/ship/scrap/maintenance/engine)
+"hI" = (/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/turf/simulated/floor/plating,/area/ship/scrap/maintenance/engine)
+"hJ" = (/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{tag = "icon-intact (SOUTHEAST)"; icon_state = "intact"; dir = 6},/obj/structure/window/reinforced,/turf/simulated/floor{tag = "icon-warnplate"; icon_state = "warnplate"; dir = 2},/area/ship/scrap/maintenance/engine)
+"hK" = (/obj/machinery/atmospherics/pipe/manifold/visible/scrubbers{tag = "icon-manifold (NORTH)"; icon_state = "manifold"; dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor{tag = "icon-warnplate"; icon_state = "warnplate"; dir = 2},/area/ship/scrap/maintenance/engine)
+"hL" = (/obj/machinery/atmospherics/pipe/manifold4w/visible/scrubbers,/obj/structure/window/reinforced,/turf/simulated/floor{tag = "icon-warnplate"; icon_state = "warnplate"; dir = 2},/area/ship/scrap/maintenance/engine)
+"hM" = (/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{tag = "icon-intact (SOUTHWEST)"; icon_state = "intact"; dir = 10},/obj/structure/window/reinforced,/turf/simulated/floor{tag = "icon-warnplate"; icon_state = "warnplate"; dir = 2},/area/ship/scrap/maintenance/engine)
+"hN" = (/obj/machinery/atmospherics/unary/engine{tag = "icon-nozzle (NORTH)"; icon_state = "nozzle"; dir = 1},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"; tag = "icon-warnplate (NORTH)"},/area/ship/scrap/maintenance/engine)
(1,1,1) = {"
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -441,14 +451,14 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafAgsgsgsgsgtgugvgvgwgvgxgvgygzgzgzgz
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagsgAgBgCgtgDgEgFgGgHgIgJgygKgLgMgzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagNgOgPgQgRgSgTgUgVgWgWgXgYgZhahbhcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagshdhdhehfhghhhihjhkhlhmgzhnhohpgzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagsgsgNhqdwhreedwdwdwdwdweFgzhcgzgzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahseFhthuhvhwhxhxhyeFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeFhzevevevevevhAeFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahBdxeGeGeGeGeGdwhBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahBhChDhDhDhDhDhChBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahBhChBhBhBhBhBhChBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagsgsgNhqdwhrdwdwdwdwdwdweFgzhcgzgzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahseFhthuhvhwhxhyhzeFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeFhthththAhBhChDeFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeFeFhEhFhGhHhIeFeFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeFhJhKhLhKhMeFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadxhNhNhNhNhNdwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeXaaaaaaaaaaeXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeXaaaaaaaaaaeXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
diff --git a/maps/overmap/example_sector1.dmm b/maps/overmap/example_sector1.dmm
index 9ee477041e..55e125eaf4 100644
--- a/maps/overmap/example_sector1.dmm
+++ b/maps/overmap/example_sector1.dmm
@@ -260,22 +260,21 @@
"eZ" = (/obj/machinery/atmospherics/pipe/tank/air,/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/tcommsat/entrance)
"fa" = (/obj/item/weapon/cell,/turf/simulated/floor,/area/tcommsat/entrance)
"fb" = (/obj/structure/closet/malf/suits,/turf/simulated/floor,/area/tcommsat/entrance)
-"fc" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1381; master_tag = "telecoms_airlock"; name = "interior access button"; pixel_x = 25; pixel_y = 25; req_access_txt = "13"},/turf/space,/area/shuttle/escape_pod1/centcom)
-"fd" = (/obj/machinery/door/airlock/external{frequency = 1381; icon_state = "door_locked"; id_tag = "telecoms_outer"; locked = 1; name = "External Access"; req_access = null; req_access_txt = "10;13"},/turf/simulated/floor/plating,/area/tcommsat/entrance)
-"fe" = (/obj/machinery/camera/xray{c_tag = "External Airlock"; network = list("Tcomsat")},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1381; id_tag = "telecoms_pump"},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "telecoms_pump"; tag_exterior_door = "telecoms_outer"; frequency = 1381; id_tag = "telecoms_airlock"; tag_interior_door = "telecoms_inner"; pixel_x = 0; pixel_y = -25; req_access_txt = "13"; tag_chamber_sensor = "telecoms_sensor"},/obj/machinery/airlock_sensor{frequency = 1381; id_tag = "telecoms_sensor"; pixel_x = 12; pixel_y = -25},/turf/simulated/floor/plating,/area/tcommsat/entrance)
-"ff" = (/obj/machinery/door/airlock/external{frequency = 1381; icon_state = "door_locked"; id_tag = "telecoms_inner"; locked = 1; name = "External Access"; req_access = null; req_access_txt = "13"},/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/turf/simulated/floor/plating,/area/tcommsat/entrance)
-"fg" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1381; master_tag = "telecoms_airlock"; name = "interior access button"; pixel_x = -25; pixel_y = -25; req_access_txt = "13"},/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/tcommsat/entrance)
-"fh" = (/obj/machinery/bluespace_beacon,/turf/simulated/floor,/area/tcommsat/entrance)
-"fi" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_x = 29; pixel_y = 0},/turf/simulated/floor,/area/tcommsat/entrance)
-"fj" = (/obj/structure/closet/crate,/obj/item/clothing/glasses/night,/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/tcommsat/entrance)
-"fk" = (/turf/simulated/floor{icon_state = "warningcorner"; dir = 1},/area/tcommsat/entrance)
-"fl" = (/obj/structure/closet/crate,/obj/item/device/aicard,/obj/item/device/multitool,/obj/machinery/camera{c_tag = "Entrance South"; dir = 1; network = list("Tcomsat")},/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/tcommsat/entrance)
-"fm" = (/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/tcommsat/entrance)
-"fn" = (/obj/machinery/light{dir = 4},/obj/structure/closet/emcloset,/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/tcommsat/entrance)
-"fo" = (/obj/machinery/computer/teleporter,/turf/simulated/floor/plating,/area/tcommsat/entrance)
-"fp" = (/obj/machinery/teleport/station,/turf/simulated/floor/plating,/area/tcommsat/entrance)
-"fq" = (/obj/machinery/teleport/hub,/turf/simulated/floor/plating,/area/tcommsat/entrance)
-"fr" = (/obj/effect/mapinfo/sector{icon = 'icons/obj/stock_parts.dmi'; icon_state = "treatment_disk"; landing_area = /area/shuttle/escape_pod1/centcom; mapx = 7; mapy = 3; name = "Communications Relay"},/turf/space,/area)
+"fc" = (/obj/machinery/door/airlock/external{frequency = 1381; icon_state = "door_locked"; id_tag = "telecoms_outer"; locked = 1; name = "External Access"; req_access = null; req_access_txt = "10;13"},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1381; master_tag = "telecoms_airlock"; name = "interior access button"; pixel_x = -7; pixel_y = 25; req_access_txt = "13"},/turf/simulated/floor/plating,/area/tcommsat/entrance)
+"fd" = (/obj/machinery/camera/xray{c_tag = "External Airlock"; network = list("Tcomsat")},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1381; id_tag = "telecoms_pump"},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "telecoms_pump"; tag_exterior_door = "telecoms_outer"; frequency = 1381; id_tag = "telecoms_airlock"; tag_interior_door = "telecoms_inner"; pixel_x = 0; pixel_y = -25; req_access_txt = "13"; tag_chamber_sensor = "telecoms_sensor"},/obj/machinery/airlock_sensor{frequency = 1381; id_tag = "telecoms_sensor"; pixel_x = 12; pixel_y = -25},/turf/simulated/floor/plating,/area/tcommsat/entrance)
+"fe" = (/obj/machinery/door/airlock/external{frequency = 1381; icon_state = "door_locked"; id_tag = "telecoms_inner"; locked = 1; name = "External Access"; req_access = null; req_access_txt = "13"},/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/turf/simulated/floor/plating,/area/tcommsat/entrance)
+"ff" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1381; master_tag = "telecoms_airlock"; name = "interior access button"; pixel_x = -25; pixel_y = -25; req_access_txt = "13"},/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/tcommsat/entrance)
+"fg" = (/obj/machinery/bluespace_beacon,/turf/simulated/floor,/area/tcommsat/entrance)
+"fh" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_x = 29; pixel_y = 0},/turf/simulated/floor,/area/tcommsat/entrance)
+"fi" = (/obj/structure/closet/crate,/obj/item/clothing/glasses/night,/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/tcommsat/entrance)
+"fj" = (/turf/simulated/floor{icon_state = "warningcorner"; dir = 1},/area/tcommsat/entrance)
+"fk" = (/obj/structure/closet/crate,/obj/item/device/aicard,/obj/item/device/multitool,/obj/machinery/camera{c_tag = "Entrance South"; dir = 1; network = list("Tcomsat")},/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/tcommsat/entrance)
+"fl" = (/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/tcommsat/entrance)
+"fm" = (/obj/machinery/light{dir = 4},/obj/structure/closet/emcloset,/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/tcommsat/entrance)
+"fn" = (/obj/machinery/computer/teleporter,/turf/simulated/floor/plating,/area/tcommsat/entrance)
+"fo" = (/obj/machinery/teleport/station,/turf/simulated/floor/plating,/area/tcommsat/entrance)
+"fp" = (/obj/machinery/teleport/hub,/turf/simulated/floor/plating,/area/tcommsat/entrance)
+"fq" = (/obj/effect/mapinfo/sector{icon = 'icons/obj/stock_parts.dmi'; icon_state = "treatment_disk"; landing_area = /area/shuttle/escape_pod1/centcom; mapx = 7; mapy = 3; name = "Communications Relay"},/turf/space,/area)
(1,1,1) = {"
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -315,10 +314,10 @@ aaaaaaaaaaaaaaaaababadadadadadadadadadadadeoeNeOePeoadadadadadadadadadadadababaa
aaaaaaaaaaaaaaaaaaabababababababababababeoeoeQeReSeoeoabababababababababababaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaeTeTeTeTababeoeoeUeVeWeHeXeoeoababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaeTeTeTeTeoeoeYeZfaezezezezfbeoabaSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaeTeTeTfcfdfefffgezezfhezezfieoabaSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaeTeTeTeTeMeoeofjfkezezezezfbeoababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaeTeTeTeTababeoeoflfmfmfmfneoeoababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaeTeTeTeTabababeoeofofpfqeoeoabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaeTeTeTeTfcfdfeffezezfgezezfheoabaSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaeTeTeTeTeMeoeofifjezezezezfbeoababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaeTeTeTeTababeoeofkflflflfmeoeoababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaeTeTeTeTabababeoeofnfofpeoeoabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababeoeoeoeoeoababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababaaabababacabababaaababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -326,6 +325,6 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-fraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+fqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
"}
diff --git a/maps/overmap/example_sector2.dmm b/maps/overmap/example_sector2.dmm
index 71b403ff06..48fa14cd97 100644
--- a/maps/overmap/example_sector2.dmm
+++ b/maps/overmap/example_sector2.dmm
@@ -1,171 +1,180 @@
"aa" = (/turf/space,/area)
-"ab" = (/obj/effect/mapinfo/sector{icon = 'icons/obj/mining.dmi'; icon_state = "ore2"; landing_area = /area/shuttle/escape_pod2/centcom; name = "Abandoned Outpost"},/turf/space,/area)
-"ac" = (/turf/space,/area/shuttle/escape_pod2/centcom)
-"ad" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/mine/abandoned)
-"ae" = (/turf/simulated/floor,/area/mine/abandoned)
-"af" = (/obj/structure/lattice,/turf/space,/area)
-"ag" = (/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/shard{icon_state = "small"},/turf/simulated/floor/plating,/area/mine/abandoned)
-"ah" = (/obj/item/stack/rods,/obj/structure/door_assembly/door_assembly_ext{name = "Broken External Airlock"},/turf/simulated/floor,/area/mine/abandoned)
-"ai" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/mine/abandoned)
-"aj" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/mine/abandoned)
-"ak" = (/obj/item/stack/rods,/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned)
-"al" = (/obj/effect/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned)
-"am" = (/turf/simulated/mineral,/area/mine/unexplored)
-"an" = (/obj/item/weapon/shard{icon_state = "medium"},/obj/effect/alien/weeds{icon_state = "weeds"},/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned)
-"ao" = (/turf/simulated/floor/airless{icon_state = "damaged5"},/area/mine/abandoned)
-"ap" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/mine/abandoned)
-"aq" = (/turf/simulated/mineral/random,/area/mine/unexplored)
-"ar" = (/obj/item/weapon/shard,/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned)
-"as" = (/turf/simulated/wall,/area/mine/abandoned)
-"at" = (/obj/item/stack/rods,/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/shard,/turf/simulated/floor/plating,/area/mine/abandoned)
-"au" = (/obj/item/stack/rods,/obj/effect/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned)
-"av" = (/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned)
-"aw" = (/obj/structure/lattice,/obj/item/weapon/shard{icon_state = "medium"},/turf/space,/area)
-"ax" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/mine/abandoned)
-"ay" = (/obj/effect/alien/weeds{icon_state = "weeds2"},/obj/item/clothing/mask/facehugger{icon_state = "facehugger_dead"; stat = 2},/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned)
-"az" = (/obj/effect/alien/weeds,/turf/simulated/floor/airless{icon_state = "damaged5"},/area/mine/abandoned)
-"aA" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/mine/abandoned)
-"aB" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating/airless,/area/mine/abandoned)
-"aC" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/mine/abandoned)
-"aD" = (/obj/effect/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned)
-"aE" = (/obj/effect/decal/remains/xeno,/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned)
-"aF" = (/obj/item/stack/rods,/obj/structure/lattice,/turf/space,/area)
-"aG" = (/obj/item/weapon/shard,/obj/item/stack/rods,/turf/simulated/floor/plating/airless,/area/mine/abandoned)
-"aH" = (/turf/simulated/floor/plating/airless,/area/mine/abandoned)
-"aI" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/mine/abandoned)
-"aJ" = (/obj/structure/table,/turf/simulated/floor/airless{icon_state = "floorscorched2"},/area/mine/abandoned)
-"aK" = (/obj/structure/table,/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned)
-"aL" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/mine/abandoned)
-"aM" = (/obj/effect/alien/weeds{icon_state = "weeds"},/turf/simulated/floor,/area/mine/abandoned)
-"aN" = (/obj/effect/alien/weeds,/turf/simulated/floor/plating,/area/mine/abandoned)
-"aO" = (/obj/effect/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/plating,/area/mine/abandoned)
-"aP" = (/obj/item/stack/rods,/turf/simulated/floor/plating/airless,/area/mine/abandoned)
-"aQ" = (/obj/item/weapon/shard{icon_state = "small"},/obj/item/clothing/suit/space/syndicate,/turf/simulated/floor/plating/airless,/area/mine/abandoned)
-"aR" = (/turf/simulated/floor/airless{icon_state = "damaged3"},/area/mine/abandoned)
-"aS" = (/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned)
-"aT" = (/turf/simulated/floor/airless{icon_state = "floorscorched2"},/area/mine/abandoned)
-"aU" = (/obj/effect/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/airless{icon_state = "floorscorched2"},/area/mine/abandoned)
-"aV" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/mine/abandoned)
-"aW" = (/obj/effect/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/airless{icon_state = "damaged3"},/area/mine/abandoned)
-"aX" = (/obj/effect/alien/weeds{icon_state = "weeds1"},/obj/item/clothing/mask/facehugger{icon_state = "facehugger_dead"; stat = 2},/turf/simulated/floor/plating,/area/mine/abandoned)
-"aY" = (/obj/item/weapon/shard,/obj/structure/lattice,/turf/space,/area)
-"aZ" = (/obj/item/weapon/shard{icon_state = "small"},/turf/simulated/floor/plating/airless,/area/mine/abandoned)
-"ba" = (/obj/effect/gibspawner/robot,/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned)
-"bb" = (/obj/effect/gibspawner/human,/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned)
-"bc" = (/obj/effect/alien/weeds{icon_state = "weeds1"},/obj/effect/decal/remains/xeno,/turf/simulated/floor/plating,/area/mine/abandoned)
-"bd" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/mine/abandoned)
-"be" = (/obj/item/weapon/shard,/turf/simulated/floor/plating/airless,/area/mine/abandoned)
-"bf" = (/obj/structure/lattice,/obj/item/weapon/shard{icon_state = "small"},/obj/item/clothing/mask/facehugger{icon_state = "facehugger_dead"; stat = 2},/turf/space,/area/mine/abandoned)
-"bg" = (/obj/structure/lattice,/turf/space,/area/mine/abandoned)
-"bh" = (/obj/effect/alien/weeds,/turf/simulated/floor/airless{icon_state = "floorscorched2"},/area/mine/abandoned)
-"bi" = (/obj/machinery/door/airlock,/turf/simulated/floor,/area/mine/abandoned)
-"bj" = (/obj/effect/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/airless{icon_state = "damaged5"},/area/mine/abandoned)
-"bk" = (/obj/effect/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/airless{icon_state = "damaged5"},/area/mine/abandoned)
-"bl" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/mine/abandoned)
-"bm" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/mine/abandoned)
-"bn" = (/turf/simulated/floor/airless{icon_state = "damaged4"},/area/mine/abandoned)
-"bo" = (/obj/effect/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/plating/airless,/area/mine/abandoned)
-"bp" = (/obj/effect/decal/remains/xeno,/turf/simulated/floor/airless{icon_state = "floorscorched2"},/area/mine/abandoned)
-"bq" = (/turf/simulated/floor/airless,/area/mine/abandoned)
-"br" = (/obj/effect/alien/weeds,/turf/simulated/floor,/area/mine/abandoned)
-"bs" = (/obj/effect/decal/remains/xeno,/turf/simulated/floor/airless{icon_state = "damaged3"},/area/mine/abandoned)
-"bt" = (/obj/structure/table,/turf/simulated/floor,/area/mine/abandoned)
-"bu" = (/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/abandoned)
-"bv" = (/obj/structure/rack,/turf/simulated/floor,/area/mine/abandoned)
-"bw" = (/obj/effect/alien/weeds,/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned)
-"bx" = (/obj/effect/decal/remains/human,/turf/simulated/floor/airless{icon_state = "damaged5"},/area/mine/abandoned)
-"by" = (/obj/effect/alien/weeds,/turf/simulated/floor/plating/airless,/area/mine/abandoned)
-"bz" = (/obj/effect/alien/weeds,/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned)
-"bA" = (/obj/item/clothing/mask/facehugger{icon_state = "facehugger_dead"; stat = 2},/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned)
-"bB" = (/obj/structure/table,/turf/simulated/floor/airless,/area/mine/abandoned)
-"bC" = (/obj/effect/alien/weeds{icon_state = "weeds"},/turf/simulated/floor/airless{icon_state = "damaged5"},/area/mine/abandoned)
-"bD" = (/obj/item/weapon/shard,/turf/simulated/floor/airless{icon_state = "floorscorched2"},/area/mine/abandoned)
-"bE" = (/obj/item/weapon/shard{icon_state = "small"},/turf/simulated/floor/airless,/area/mine/abandoned)
-"bF" = (/obj/effect/alien/weeds,/turf/simulated/floor/airless{icon_state = "damaged3"},/area/mine/abandoned)
-"bG" = (/obj/machinery/hydroponics,/turf/simulated/floor{icon_state = "dark"},/area/mine/abandoned)
-"bH" = (/obj/structure/table,/obj/item/weapon/paper/crumpled,/turf/simulated/floor/airless{icon_state = "floorscorched2"},/area/mine/abandoned)
-"bI" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/mine/abandoned)
-"bJ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/item/weapon/shard{icon_state = "medium"},/turf/simulated/floor/plating,/area/mine/abandoned)
-"bK" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/mine/abandoned)
-"bL" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/mine/abandoned)
-"bM" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/mine/abandoned)
-"bN" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/mine/abandoned)
-"bO" = (/obj/effect/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor,/area/mine/abandoned)
-"bP" = (/obj/effect/alien/weeds{icon_state = "weeds"},/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned)
-"bQ" = (/obj/item/clothing/mask/facehugger{icon_state = "facehugger_dead"; stat = 2},/turf/simulated/floor/airless{icon_state = "damaged5"},/area/mine/abandoned)
-"bR" = (/obj/effect/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned)
-"bS" = (/obj/effect/decal/remains/xeno,/turf/simulated/floor,/area/mine/abandoned)
-"bT" = (/obj/effect/alien/weeds{icon_state = "weeds"},/turf/simulated/floor/airless{icon_state = "damaged3"},/area/mine/abandoned)
-"bU" = (/turf/simulated/floor{icon_state = "green"; dir = 8},/area/mine/abandoned)
-"bV" = (/obj/effect/gibspawner/human,/turf/simulated/floor/airless{icon_state = "damaged5"},/area/mine/abandoned)
-"bW" = (/obj/item/clothing/mask/facehugger{icon_state = "facehugger_dead"; stat = 2},/turf/simulated/floor,/area/mine/abandoned)
-"bX" = (/obj/effect/alien/weeds{icon_state = "weeds"},/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned)
-"bY" = (/obj/effect/decal/remains/human,/turf/simulated/floor{icon_state = "green"; dir = 8},/area/mine/abandoned)
-"bZ" = (/obj/effect/alien/resin,/turf/simulated/floor/airless{icon_state = "floorgrime"},/area/mine/abandoned)
-"ca" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/mine/abandoned)
-"cb" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/mine/abandoned)
-"cc" = (/obj/effect/alien/weeds{icon_state = "weeds2"},/obj/item/clothing/mask/facehugger{icon_state = "facehugger_dead"; stat = 2},/turf/simulated/floor/airless{icon_state = "damaged5"},/area/mine/abandoned)
-"cd" = (/obj/effect/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/airless{icon_state = "damaged3"},/area/mine/abandoned)
-"ce" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/shard,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/abandoned)
-"cf" = (/obj/machinery/door/airlock/glass{name = "Glass Airlock"; req_access_txt = "0"},/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"},/area/mine/abandoned)
-"cg" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/mine/abandoned)
-"ch" = (/obj/effect/decal/remains/human,/obj/item/clothing/mask/facehugger{icon_state = "facehugger_dead"; stat = 2},/turf/simulated/floor,/area/mine/abandoned)
-"ci" = (/obj/item/weapon/table_parts,/turf/simulated/floor,/area/mine/abandoned)
-"cj" = (/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"},/area/mine/abandoned)
-"ck" = (/obj/structure/rack,/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"},/area/mine/abandoned)
-"cl" = (/turf/simulated/floor/plating/airless/asteroid,/area/mine/unexplored)
-"cm" = (/obj/item/weapon/rack_parts,/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"},/area/mine/abandoned)
-"cn" = (/obj/structure/girder/displaced,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/abandoned)
-"co" = (/obj/structure/girder,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/abandoned)
-"cp" = (/obj/machinery/door/airlock/external{name = "External Airlock"; req_access_txt = "0"},/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"},/area/mine/abandoned)
-"cq" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/grille{density = 0; icon_state = "brokengrille"},/obj/item/weapon/shard{icon_state = "small"},/obj/item/stack/rods,/turf/simulated/floor/plating,/area/mine/abandoned)
-"cr" = (/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/abandoned)
-"cs" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/abandoned)
-"ct" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille{density = 0; icon_state = "brokengrille"},/obj/item/stack/rods,/obj/item/weapon/shard,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/abandoned)
-"cu" = (/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 10},/area/mine/unexplored)
-"cv" = (/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/unexplored)
-"cw" = (/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 6},/area/mine/unexplored)
-"cx" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/unexplored)
+"ab" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s6"; icon_state = "swall_s6"},/area/shuttle/overmap_examples/outpost)
+"ac" = (/obj/structure/shuttle/window{tag = "icon-3"; icon_state = "3"},/turf/simulated/shuttle/floor,/area/shuttle/overmap_examples/outpost)
+"ad" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s10"; icon_state = "swall_s10"},/area/shuttle/overmap_examples/outpost)
+"ae" = (/turf/simulated/shuttle/wall{tag = "icon-swall3"; icon_state = "swall3"},/area/shuttle/overmap_examples/outpost)
+"af" = (/obj/machinery/computer/shuttle_control/explore{landing_type = /area/shuttle/overmap_examples/outpost},/turf/simulated/shuttle/floor,/area/shuttle/overmap_examples/outpost)
+"ag" = (/obj/effect/mapinfo/sector{icon = 'icons/obj/mining.dmi'; icon_state = "ore2"; landing_area = /area/shuttle/escape_pod2/centcom; name = "Abandoned Outpost"},/turf/space,/area)
+"ah" = (/turf/simulated/shuttle/floor,/area/shuttle/overmap_examples/outpost)
+"ai" = (/turf/space,/area/shuttle/escape_pod2/centcom)
+"aj" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s5"; icon_state = "swall_s5"},/area/shuttle/overmap_examples/outpost)
+"ak" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/shuttle/floor,/area/shuttle/overmap_examples/outpost)
+"al" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s9"; icon_state = "swall_s9"},/area/shuttle/overmap_examples/outpost)
+"am" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/mine/abandoned)
+"an" = (/turf/simulated/floor,/area/mine/abandoned)
+"ao" = (/obj/structure/lattice,/turf/space,/area)
+"ap" = (/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/shard{icon_state = "small"},/turf/simulated/floor/plating,/area/mine/abandoned)
+"aq" = (/obj/item/stack/rods,/obj/structure/door_assembly/door_assembly_ext{name = "Broken External Airlock"},/turf/simulated/floor,/area/mine/abandoned)
+"ar" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/mine/abandoned)
+"as" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/mine/abandoned)
+"at" = (/obj/item/stack/rods,/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned)
+"au" = (/obj/effect/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned)
+"av" = (/turf/simulated/mineral,/area/mine/unexplored)
+"aw" = (/obj/item/weapon/shard{icon_state = "medium"},/obj/effect/alien/weeds{icon_state = "weeds"},/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned)
+"ax" = (/turf/simulated/floor/airless{icon_state = "damaged5"},/area/mine/abandoned)
+"ay" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/mine/abandoned)
+"az" = (/turf/simulated/mineral/random,/area/mine/unexplored)
+"aA" = (/obj/item/weapon/shard,/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned)
+"aB" = (/turf/simulated/wall,/area/mine/abandoned)
+"aC" = (/obj/item/stack/rods,/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/shard,/turf/simulated/floor/plating,/area/mine/abandoned)
+"aD" = (/obj/item/stack/rods,/obj/effect/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned)
+"aE" = (/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned)
+"aF" = (/obj/structure/lattice,/obj/item/weapon/shard{icon_state = "medium"},/turf/space,/area)
+"aG" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/mine/abandoned)
+"aH" = (/obj/effect/alien/weeds{icon_state = "weeds2"},/obj/item/clothing/mask/facehugger{icon_state = "facehugger_dead"; stat = 2},/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned)
+"aI" = (/obj/effect/alien/weeds,/turf/simulated/floor/airless{icon_state = "damaged5"},/area/mine/abandoned)
+"aJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/mine/abandoned)
+"aK" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating/airless,/area/mine/abandoned)
+"aL" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/mine/abandoned)
+"aM" = (/obj/effect/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned)
+"aN" = (/obj/effect/decal/remains/xeno,/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned)
+"aO" = (/obj/item/stack/rods,/obj/structure/lattice,/turf/space,/area)
+"aP" = (/obj/item/weapon/shard,/obj/item/stack/rods,/turf/simulated/floor/plating/airless,/area/mine/abandoned)
+"aQ" = (/turf/simulated/floor/plating/airless,/area/mine/abandoned)
+"aR" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/mine/abandoned)
+"aS" = (/obj/structure/table,/turf/simulated/floor/airless{icon_state = "floorscorched2"},/area/mine/abandoned)
+"aT" = (/obj/structure/table,/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned)
+"aU" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/mine/abandoned)
+"aV" = (/obj/effect/alien/weeds{icon_state = "weeds"},/turf/simulated/floor,/area/mine/abandoned)
+"aW" = (/obj/effect/alien/weeds,/turf/simulated/floor/plating,/area/mine/abandoned)
+"aX" = (/obj/effect/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/plating,/area/mine/abandoned)
+"aY" = (/obj/item/stack/rods,/turf/simulated/floor/plating/airless,/area/mine/abandoned)
+"aZ" = (/obj/item/weapon/shard{icon_state = "small"},/obj/item/clothing/suit/space/syndicate,/turf/simulated/floor/plating/airless,/area/mine/abandoned)
+"ba" = (/turf/simulated/floor/airless{icon_state = "damaged3"},/area/mine/abandoned)
+"bb" = (/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned)
+"bc" = (/turf/simulated/floor/airless{icon_state = "floorscorched2"},/area/mine/abandoned)
+"bd" = (/obj/effect/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/airless{icon_state = "floorscorched2"},/area/mine/abandoned)
+"be" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/mine/abandoned)
+"bf" = (/obj/effect/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/airless{icon_state = "damaged3"},/area/mine/abandoned)
+"bg" = (/obj/effect/alien/weeds{icon_state = "weeds1"},/obj/item/clothing/mask/facehugger{icon_state = "facehugger_dead"; stat = 2},/turf/simulated/floor/plating,/area/mine/abandoned)
+"bh" = (/obj/item/weapon/shard,/obj/structure/lattice,/turf/space,/area)
+"bi" = (/obj/item/weapon/shard{icon_state = "small"},/turf/simulated/floor/plating/airless,/area/mine/abandoned)
+"bj" = (/obj/effect/gibspawner/robot,/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned)
+"bk" = (/obj/effect/gibspawner/human,/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned)
+"bl" = (/obj/effect/alien/weeds{icon_state = "weeds1"},/obj/effect/decal/remains/xeno,/turf/simulated/floor/plating,/area/mine/abandoned)
+"bm" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/mine/abandoned)
+"bn" = (/obj/item/weapon/shard,/turf/simulated/floor/plating/airless,/area/mine/abandoned)
+"bo" = (/obj/structure/lattice,/obj/item/weapon/shard{icon_state = "small"},/obj/item/clothing/mask/facehugger{icon_state = "facehugger_dead"; stat = 2},/turf/space,/area/mine/abandoned)
+"bp" = (/obj/structure/lattice,/turf/space,/area/mine/abandoned)
+"bq" = (/obj/effect/alien/weeds,/turf/simulated/floor/airless{icon_state = "floorscorched2"},/area/mine/abandoned)
+"br" = (/obj/machinery/door/airlock,/turf/simulated/floor,/area/mine/abandoned)
+"bs" = (/obj/effect/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/airless{icon_state = "damaged5"},/area/mine/abandoned)
+"bt" = (/obj/effect/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/airless{icon_state = "damaged5"},/area/mine/abandoned)
+"bu" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/mine/abandoned)
+"bv" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/mine/abandoned)
+"bw" = (/turf/simulated/floor/airless{icon_state = "damaged4"},/area/mine/abandoned)
+"bx" = (/obj/effect/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/plating/airless,/area/mine/abandoned)
+"by" = (/obj/effect/decal/remains/xeno,/turf/simulated/floor/airless{icon_state = "floorscorched2"},/area/mine/abandoned)
+"bz" = (/turf/simulated/floor/airless,/area/mine/abandoned)
+"bA" = (/obj/effect/alien/weeds,/turf/simulated/floor,/area/mine/abandoned)
+"bB" = (/obj/effect/decal/remains/xeno,/turf/simulated/floor/airless{icon_state = "damaged3"},/area/mine/abandoned)
+"bC" = (/obj/structure/table,/turf/simulated/floor,/area/mine/abandoned)
+"bD" = (/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/abandoned)
+"bE" = (/obj/structure/rack,/turf/simulated/floor,/area/mine/abandoned)
+"bF" = (/obj/effect/alien/weeds,/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned)
+"bG" = (/obj/effect/decal/remains/human,/turf/simulated/floor/airless{icon_state = "damaged5"},/area/mine/abandoned)
+"bH" = (/obj/effect/alien/weeds,/turf/simulated/floor/plating/airless,/area/mine/abandoned)
+"bI" = (/obj/effect/alien/weeds,/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned)
+"bJ" = (/obj/item/clothing/mask/facehugger{icon_state = "facehugger_dead"; stat = 2},/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned)
+"bK" = (/obj/structure/table,/turf/simulated/floor/airless,/area/mine/abandoned)
+"bL" = (/obj/effect/alien/weeds{icon_state = "weeds"},/turf/simulated/floor/airless{icon_state = "damaged5"},/area/mine/abandoned)
+"bM" = (/obj/item/weapon/shard,/turf/simulated/floor/airless{icon_state = "floorscorched2"},/area/mine/abandoned)
+"bN" = (/obj/item/weapon/shard{icon_state = "small"},/turf/simulated/floor/airless,/area/mine/abandoned)
+"bO" = (/obj/effect/alien/weeds,/turf/simulated/floor/airless{icon_state = "damaged3"},/area/mine/abandoned)
+"bP" = (/obj/machinery/hydroponics,/turf/simulated/floor{icon_state = "dark"},/area/mine/abandoned)
+"bQ" = (/obj/structure/table,/obj/item/weapon/paper/crumpled,/turf/simulated/floor/airless{icon_state = "floorscorched2"},/area/mine/abandoned)
+"bR" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/mine/abandoned)
+"bS" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/item/weapon/shard{icon_state = "medium"},/turf/simulated/floor/plating,/area/mine/abandoned)
+"bT" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/mine/abandoned)
+"bU" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/mine/abandoned)
+"bV" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/mine/abandoned)
+"bW" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/mine/abandoned)
+"bX" = (/obj/effect/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor,/area/mine/abandoned)
+"bY" = (/obj/effect/alien/weeds{icon_state = "weeds"},/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned)
+"bZ" = (/obj/item/clothing/mask/facehugger{icon_state = "facehugger_dead"; stat = 2},/turf/simulated/floor/airless{icon_state = "damaged5"},/area/mine/abandoned)
+"ca" = (/obj/effect/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned)
+"cb" = (/obj/effect/decal/remains/xeno,/turf/simulated/floor,/area/mine/abandoned)
+"cc" = (/obj/effect/alien/weeds{icon_state = "weeds"},/turf/simulated/floor/airless{icon_state = "damaged3"},/area/mine/abandoned)
+"cd" = (/turf/simulated/floor{icon_state = "green"; dir = 8},/area/mine/abandoned)
+"ce" = (/obj/effect/gibspawner/human,/turf/simulated/floor/airless{icon_state = "damaged5"},/area/mine/abandoned)
+"cf" = (/obj/item/clothing/mask/facehugger{icon_state = "facehugger_dead"; stat = 2},/turf/simulated/floor,/area/mine/abandoned)
+"cg" = (/obj/effect/alien/weeds{icon_state = "weeds"},/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned)
+"ch" = (/obj/effect/decal/remains/human,/turf/simulated/floor{icon_state = "green"; dir = 8},/area/mine/abandoned)
+"ci" = (/obj/effect/alien/resin,/turf/simulated/floor/airless{icon_state = "floorgrime"},/area/mine/abandoned)
+"cj" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/mine/abandoned)
+"ck" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/mine/abandoned)
+"cl" = (/obj/effect/alien/weeds{icon_state = "weeds2"},/obj/item/clothing/mask/facehugger{icon_state = "facehugger_dead"; stat = 2},/turf/simulated/floor/airless{icon_state = "damaged5"},/area/mine/abandoned)
+"cm" = (/obj/effect/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/airless{icon_state = "damaged3"},/area/mine/abandoned)
+"cn" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/shard,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/abandoned)
+"co" = (/obj/machinery/door/airlock/glass{name = "Glass Airlock"; req_access_txt = "0"},/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"},/area/mine/abandoned)
+"cp" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/mine/abandoned)
+"cq" = (/obj/effect/decal/remains/human,/obj/item/clothing/mask/facehugger{icon_state = "facehugger_dead"; stat = 2},/turf/simulated/floor,/area/mine/abandoned)
+"cr" = (/obj/item/weapon/table_parts,/turf/simulated/floor,/area/mine/abandoned)
+"cs" = (/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"},/area/mine/abandoned)
+"ct" = (/obj/structure/rack,/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"},/area/mine/abandoned)
+"cu" = (/turf/simulated/floor/plating/airless/asteroid,/area/mine/unexplored)
+"cv" = (/obj/item/weapon/rack_parts,/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"},/area/mine/abandoned)
+"cw" = (/obj/structure/girder/displaced,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/abandoned)
+"cx" = (/obj/structure/girder,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/abandoned)
+"cy" = (/obj/machinery/door/airlock/external{name = "External Airlock"; req_access_txt = "0"},/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"},/area/mine/abandoned)
+"cz" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/grille{density = 0; icon_state = "brokengrille"},/obj/item/weapon/shard{icon_state = "small"},/obj/item/stack/rods,/turf/simulated/floor/plating,/area/mine/abandoned)
+"cA" = (/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/abandoned)
+"cB" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/abandoned)
+"cC" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille{density = 0; icon_state = "brokengrille"},/obj/item/stack/rods,/obj/item/weapon/shard,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/abandoned)
+"cD" = (/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 10},/area/mine/unexplored)
+"cE" = (/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/unexplored)
+"cF" = (/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 6},/area/mine/unexplored)
+"cG" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/unexplored)
(1,1,1) = {"
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacaaaaadaeadafaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacaaaaagahaiajafaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacaaaaaaakaladafaaaaamamamaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacaaaaaaanaoapafafaqaqamamaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacaaaaaaaralasaqaqaqaqaqaqaqaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafatauavasaqaqaqaqaqaqaqaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafawaxayazasaqaqaqaqaqaqaqaqaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafaAaBaCasaDaEasasasasaqaqaqaqaqaqaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaFaGaHaIaJaKaLaoaMasaNaOasaqaqaqaqaqaqaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaafaPaQaGaRaSaTaUaVaMaWaOaXaNasaqaqaqaqaqaqaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaYaPaZaPaHaHaDbaaSasazbbasaObcasaqaqaqaqaqaqaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaafafbdbeaHbfbgaHavbhaTbibjbkasasasasasasaqaqaqaqaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaafafblbmbnaHbgboaRbpaSbqasbrbsasbtaMbubvasaqaqaqaqaaaaaaaaaa
-aaaaaaaaaaaaaaafafafaqaqasaKbwbxbybnbzbAaTbBaLaobCasbtazaMbvasaqaqaqaaaaaaaaaaaa
-aaaaaaaaaaaaafasasasasasasaJaSbDbwaSbhbEbBbBaVaMbrasbtavbFbvasaqaqaaaaaaaaaaaaaa
-aaaaaaaaaaaaafasbGaoaTbHasbIbJbKasbiasbLbMbNasaobOaebPavayaeasaqaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaqasbGavaoaRbibObwbQbwbRaoaobSaMaoavavasaebTavaoasaqaqaaaaaaaaaaaaaa
-aaaaaaaaaaaqaqasbGbUavavbiavbFaDavbVbRbFbCbWavbXazasbwaebOaoasaqaqaqaaaaaaaaaaaa
-aaaaaaaaaqaqaqasbGbYaRaJasbZascacbasaTascacbasaSbOasbSccaebrasaqaqaqaaaaaaaaaaaa
-aaaaaaaqaqaqaqasasasasasasbZascdaMaTbrazaSbzaSbkaRascacecfcgasaqaqaqaqaaaaaaaaaa
-aaaaaaaqaqaqaqaqaqaqaqaqasbZasaMbrchbhalaRaMasaSazascicjcjckasclaqaqaqaaaaaaaaaa
-aaaaaaaqaqaqaqaqaqaqaqaqasbZasbraobkaMaSazbkasbZasasbtaecjcmcnclclaqaqaaaaaaaaaa
-aaaaaqaqaqaqaqaqaqaqaqaqasbZasasasasasasasasasbZasbtaebuaeckcoclclaqaqaaaaaaaaaa
-aaaaaqaqaqaqaqaqaqaqaqaqasbZbZbZbZbZbZbZbZbZbZbZasbtbubububvasclclclaqaaaaaaaaaa
-aaaaaqaqaqaqaqaqaqaqaqaqasasasasasasasasasasasasasascgcpcqasasclclclclaaaaaaaaaa
-aaaaaaaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqclclclascjcjbuasclclclclaaaaaaaaaaaa
-aaaaaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqclclclascrcscrasclclclclclaaaaaaaaaa
-aaaaaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqclclasctcpcgasclclclclaaaaaaaaaaaa
-aaaaaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqclclclcucvcwclclclclaqaaaaaaaaaaaa
-aaaaaaaaaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqclclclclclcxclclclclaqaaaaaaaaaaaa
-aaaaaaaaaaaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqclclclclclclclcxclclaqaqaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaqaqaqaqaqaqaqaqaaaaaaaaaaaaclclclclcxclclclclaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaqaqaqaaaaaaaaaaaaaaaaclclclclclclaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaqaqaaaaaaaaaaaaaaaaaaaaclclclaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabacadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeafaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeahaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaiaiaiaaaaajakalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaiaiaiaaaaamanamaoaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaiaiaiaaaaapaqarasaoaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaiaiaiaaaaaaatauamaoaaaaavavavaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaiaiaiaaaaaaawaxayaoaoazazavavaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaiaiaiaaaaaaaAauaBazazazazazazazaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoaoaCaDaEaBazazazazazazazaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoaoaFaGaHaIaBazazazazazazazazaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoaoaJaKaLaBaMaNaBaBaBaBazazazazazazaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoaOaPaQaRaSaTaUaxaVaBaWaXaBazazazazazazaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaoaYaZaPbabbbcbdbeaVbfaXbgaWaBazazazazazazaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaabhaYbiaYaQaQaMbjbbaBaIbkaBaXblaBazazazazazazaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaoaobmbnaQbobpaQaEbqbcbrbsbtaBaBaBaBaBaBazazazazaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaoaobubvbwaQbpbxbabybbbzaBbAbBaBbCaVbDbEaBazazazazaaaaaaaaaa
+aaaaaaaaaaaaaaaoaoaoazazaBaTbFbGbHbwbIbJbcbKaUaxbLaBbCaIaVbEaBazazazaaaaaaaaaaaa
+aaaaaaaaaaaaaoaBaBaBaBaBaBaSbbbMbFbbbqbNbKbKbeaVbAaBbCaEbObEaBazazaaaaaaaaaaaaaa
+aaaaaaaaaaaaaoaBbPaxbcbQaBbRbSbTaBbraBbUbVbWaBaxbXanbYaEaHanaBazaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaazaBbPaEaxbabrbXbFbZbFcaaxaxcbaVaxaEaEaBanccaEaxaBazazaaaaaaaaaaaaaa
+aaaaaaaaaaazazaBbPcdaEaEbraEbOaMaEcecabObLcfaEcgaIaBbFanbXaxaBazazazaaaaaaaaaaaa
+aaaaaaaaazazazaBbPchbaaSaBciaBcjckaBbcaBcjckaBbbbXaBcbclanbAaBazazazaaaaaaaaaaaa
+aaaaaaazazazazaBaBaBaBaBaBciaBcmaVbcbAaIbbbIbbbtbaaBcjcncocpaBazazazazaaaaaaaaaa
+aaaaaaazazazazazazazazazaBciaBaVbAcqbqaubaaVaBbbaIaBcrcscsctaBcuazazazaaaaaaaaaa
+aaaaaaazazazazazazazazazaBciaBbAaxbtaVbbaIbtaBciaBaBbCancscvcwcucuazazaaaaaaaaaa
+aaaaazazazazazazazazazazaBciaBaBaBaBaBaBaBaBaBciaBbCanbDanctcxcucuazazaaaaaaaaaa
+aaaaazazazazazazazazazazaBciciciciciciciciciciciaBbCbDbDbDbEaBcucucuazaaaaaaaaaa
+aaaaazazazazazazazazazazaBaBaBaBaBaBaBaBaBaBaBaBaBaBcpcyczaBaBcucucucuaaaaaaaaaa
+aaaaaaazazazazazazazazazazazazazazazazazazazcucucuaBcscsbDaBcucucucuaaaaaaaaaaaa
+aaaaazazazazazazazazazazazazazazazazazazazazcucucuaBcAcBcAaBcucucucucuaaaaaaaaaa
+aaaaazazazazazazazazazazazazazazazazazazazazazcucuaBcCcycpaBcucucucuaaaaaaaaaaaa
+aaaaazazazazazazazazazazazazazazazazazazazazazcucucucDcEcFcucucucuazaaaaaaaaaaaa
+aaaaaaaaazazazazazazazazazazazazazazazazazazazcucucucucucGcucucucuazaaaaaaaaaaaa
+aaaaaaaaaaazazazazazazazazazazazazazazazazazcucucucucucucucGcucuazazaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaazazazazazazazazaaaaaaaaaaaacucucucucGcucucucuaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaazazazaaaaaaaaaaaaaaaacucucucucucuaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaazazaaaaaaaaaaaaaaaaaaaacucucuaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
"}
diff --git a/maps/overmap/examples.dm b/maps/overmap/examples.dm
new file mode 100644
index 0000000000..f736bf319c
--- /dev/null
+++ b/maps/overmap/examples.dm
@@ -0,0 +1,3 @@
+/area/shuttle/overmap_examples/outpost
+ name = "abandoned outpost shuttle"
+ icon_state = "shuttle2"
\ No newline at end of file
diff --git a/nano/templates/engines_control.tmpl b/nano/templates/engines_control.tmpl
new file mode 100644
index 0000000000..505150964a
--- /dev/null
+++ b/nano/templates/engines_control.tmpl
@@ -0,0 +1,84 @@
+
+ {{:~link('Overall status', 'note', {'state' :'status'}, null, state == 'status' ? 'selected' : null)}}
+ {{:~link('Details', 'note', {'state' : 'engines'}, null, state == 'engines' ? 'selected' : null)}}
+
+
+{{if state == "engines"}}
+ {{if engines_info}}
+ {{for engines_info}}
+
+
+ Engine #{{:#index + 1}}:
+
+
+ {{:~link(eng_on ? 'Shutdown' : 'Power up', 'power', { 'toggle' : 1, 'engine' : eng_reference }, null, eng_on ? 'selected' : null)}}
+
+
+
+
+
+ Type:
+
+
+ {{:eng_type}}
+
+
+
+
+ Status:
+
+
+ {{:eng_on ? 'Online' : 'Offline'}}
+ {{:eng_status}}
+
+
+
+
+ Current thrust:
+
+
+ {{:eng_thrust}}
+
+
+
+
+ Thrust limit:
+
+
+ {{:~link('', 'circle-plus', { 'limit' : 0.1, 'engine' : eng_reference }, null, null)}}
+ {{:~link(eng_thrust_limiter+'%', null, { 'set_limit' : 1, 'engine' : eng_reference }, null, null)}}
+ {{:~link('', 'circle-minus', { 'limit' : -0.1, 'engine' : eng_reference }, null, null)}}
+
+
+
+ {{/for}}
+ {{/if}}
+{{/if}}
+{{if state == "status"}}
+{{if engines_info}}
+ {{for engines_info}}
+
+
+
+ Engine #{{:#index + 1}}:
+
+
+ {{:~link(eng_on ? 'Shutdown' : 'Power up', 'power', { 'toggle' : 1, 'engine' : eng_reference }, null, eng_on ? 'selected' : null)}}
+
+
+
+
+ Thrust:
+
+ Thrust limit:
+
+
+ {{:eng_thrust}}
+
+ {{:eng_thrust_limiter}}%
+
+
+
+ {{/for}}
+ {{/if}}
+{{/if}}
\ No newline at end of file
diff --git a/nano/templates/helm.tmpl b/nano/templates/helm.tmpl
new file mode 100644
index 0000000000..1457d7a336
--- /dev/null
+++ b/nano/templates/helm.tmpl
@@ -0,0 +1,119 @@
+
+
+
+
+
+
+
Sector information
+
+ {{:sector}}
+
+ Coordinates: {{:s_x}} : {{:s_y}}
+
+ Additional information: {{:s_x}} : {{:s_y}}
+ {{:sector_info}}
+
+
+
+
+
Flight data
+
+
+
+ Speed:
+
+
+ {{:speed}}
+
+
+
+
+ Acceleration:
+
+
+ {{:accel}}
+
+
+
+
+ Heading:
+
+
+ {{:heading}}
+
+
+
+
+
+
+Manual control
+
+
+
+
+ {{:~link('', 'triangle-1-nw', { 'move' : 9 }, null, null)}}
+ {{:~link('', 'triangle-1-n', { 'move' : 1 }, null, null)}}
+ {{:~link('', 'triangle-1-ne', { 'move' : 5 }, null, null)}}
+
+
+ {{:~link('', 'triangle-1-w', { 'move' : 8 }, null, null)}}
+ {{:~link('', 'circle-close', { 'brake' : 1 }, null, null)}}
+ {{:~link('', 'triangle-1-e', { 'move' : 4 }, null, null)}}
+
+
+ {{:~link('', 'triangle-1-sw', { 'move' : 10 }, null, null)}}
+ {{:~link('', 'triangle-1-s', { 'move' : 2 }, null, null)}}
+ {{:~link('', 'triangle-1-se', { 'move' : 6 }, null, null)}}
+
+
+
+
+
+ Direct control
+ {{:~link(manual_control ? 'Engaged' : 'Disengaged', 'shuffle', { 'manual' : 1 }, manual_control ? 'selected' : null, null)}}
+
+
+
+
+
+
+
+
Autopilot
+
+
+ {{:~link(autopilot? 'Engaged' : 'Disengaged', 'gear', { 'apilot' : 1 }, dest ? null : 'disabled' , autopilot ? 'selected' : null)}}
+
+
+
+
+ Target coordinates
+
+
+ {{if dest}}
+ {{:~link(d_x, null, { 'setx' : 1 }, null, null)}} {{:~link(d_y, null, { 'sety' : 1 }, null, null)}}
+ {{else}}
+ {{:~link('None', null, { 'sety' : 1, 'setx' : 1 }, null, null)}}
+ {{/if}}
+
+
+
+Navigation data
+
+ {{:~link('Save current position', 'disk', { 'add' : 'current' }, null)}}
+ {{:~link('Add new entry', 'document', { 'add' : 'new' }, null)}}
+
+
+
+ {{if locations}}
+ {{for locations}}
+
+ {{:name}}:
+ {{:x}} : {{:y}}
+
+
+ {{:~link('Plot course', 'arrowreturnthick-1-e', { 'x' : x, 'y' : y }, null, null)}}
+ {{:~link('Remove entry', 'close', { 'remove' : reference }, null, null)}}
+
+ {{/for}}
+ {{/if}}
+
diff --git a/nano/templates/shuttle_control_console_exploration.tmpl b/nano/templates/shuttle_control_console_exploration.tmpl
new file mode 100644
index 0000000000..443b3190a9
--- /dev/null
+++ b/nano/templates/shuttle_control_console_exploration.tmpl
@@ -0,0 +1,74 @@
+Shuttle Status
+
+
+ {{:shuttle_status}}
+
+
+
+
+
+ Drive:
+
+
+ {{if shuttle_state == "idle"}}
+ IDLE
+ {{else shuttle_state == "warmup"}}
+ SPINNING UP
+ {{else shuttle_state == "in_transit"}}
+ ENGAGED
+ {{else}}
+ ERROR
+ {{/if}}
+
+
+
+{{if has_docking}}
+
+
+
+ Docking Status:
+
+
+ {{if docking_status == "docked"}}
+ DOCKED
+ {{else docking_status == "docking"}}
+ {{if !docking_override}}
+ DOCKING
+ {{else}}
+ DOCKING-MANUAL
+ {{/if}}
+ {{else docking_status == "undocking"}}
+ {{if !docking_override}}
+ UNDOCKING
+ {{else}}
+ UNDOCKING-MANUAL
+ {{/if}}
+ {{else docking_status == "undocked"}}
+ UNDOCKED
+ {{else}}
+ ERROR
+ {{/if}}
+
+
+
+
+{{/if}}
+
+
+ Current Destination:
+
+
{{:destination_name}}
+
+ {{:~link('Choose Destination', 'arrowreturn-1-s', {'pick' : '1'}, can_pick? null : 'disabled' , null)}}
+
+
+Shuttle Control
+
+
+
+ {{:~link('Launch Shuttle', 'arrowthickstop-1-e', {'move' : '1'}, can_launch? null : 'disabled' , null)}}
+ {{:~link('Cancel Launch', 'cancel', {'cancel' : '1'}, can_cancel? null : 'disabled' , null)}}
+ {{:~link('Force Launch', 'alert', {'force' : '1'}, can_force? null : 'disabled' , can_force? 'redBackground' : null)}}
+
+
+
\ No newline at end of file