diff --git a/aurorastation.dme b/aurorastation.dme
index 488a3715f35..489a393a944 100644
--- a/aurorastation.dme
+++ b/aurorastation.dme
@@ -816,7 +816,6 @@
#include "code\game\machinery\spaceheater.dm"
#include "code\game\machinery\stargazer.dm"
#include "code\game\machinery\stasis_bed.dm"
-#include "code\game\machinery\station_holomap.dm"
#include "code\game\machinery\status_display.dm"
#include "code\game\machinery\status_display_ai.dm"
#include "code\game\machinery\status_display_snowflakes.dm"
@@ -2645,7 +2644,11 @@
#include "code\modules\modular_computers\file_system\program_events.dm"
#include "code\modules\modular_computers\file_system\script.dm"
#include "code\modules\modular_computers\file_system\programs\_program.dm"
-#include "code\modules\modular_computers\file_system\programs\app_presets.dm"
+#include "code\modules\modular_computers\file_system\programs\app_presets_.dm"
+#include "code\modules\modular_computers\file_system\programs\app_presets_antag.dm"
+#include "code\modules\modular_computers\file_system\programs\app_presets_crew.dm"
+#include "code\modules\modular_computers\file_system\programs\app_presets_equipment.dm"
+#include "code\modules\modular_computers\file_system\programs\app_presets_third_party.dm"
#include "code\modules\modular_computers\file_system\programs\antagonist\hacked_camera.dm"
#include "code\modules\modular_computers\file_system\programs\civilian\cargo_control.dm"
#include "code\modules\modular_computers\file_system\programs\civilian\cargo_delivery.dm"
@@ -2666,6 +2669,7 @@
#include "code\modules\modular_computers\file_system\programs\games\arcade.dm"
#include "code\modules\modular_computers\file_system\programs\generic\lawmanager.dm"
#include "code\modules\modular_computers\file_system\programs\generic\manifest.dm"
+#include "code\modules\modular_computers\file_system\programs\generic\map.dm"
#include "code\modules\modular_computers\file_system\programs\generic\news_browser.dm"
#include "code\modules\modular_computers\file_system\programs\generic\ntnrc_client.dm"
#include "code\modules\modular_computers\file_system\programs\generic\records.dm"
diff --git a/code/__defines/minimap.dm b/code/__defines/minimap.dm
index 99076da7397..74781d9b0bd 100644
--- a/code/__defines/minimap.dm
+++ b/code/__defines/minimap.dm
@@ -1,41 +1,23 @@
//
-// Constants and standard colors for the holomap
+// Constants and standard colors for the holomap/minimap
//
-#define HOLOMAP_ICON 'icons/480x480.dmi' // Icon file to start with when drawing holomaps (to get a 480x480 canvas).
-#define HOLOMAP_ICON_SIZE 480 // Pixel width & height of the holomap icon. Used for auto-centering etc.
-#define ui_holomap "CENTER-7, CENTER-7" // Screen location of the holomap "hud"
-
// Holomap colors
-#define HOLOMAP_OBSTACLE "#FFFFFFDD" // Color of walls and barriers
-#define HOLOMAP_PATH "#66666699" // Color of floors
+#define HOLOMAP_OBSTACLE "#FFFFFF" // Color of walls and barriers
+#define HOLOMAP_PATH "#666666" // Color of floors
#define HOLOMAP_HOLOFIER "#79FF79" // Whole map is multiplied by this to give it a green holoish look
-#define HOLOMAP_AREACOLOR_COMMAND "#386d8099"
-#define HOLOMAP_AREACOLOR_SECURITY "#ae121299"
-#define HOLOMAP_AREACOLOR_MEDICAL "#6f9e00c2"
-#define HOLOMAP_AREACOLOR_SCIENCE "#A154A699"
-#define HOLOMAP_AREACOLOR_ENGINEERING "#F1C23199"
-#define HOLOMAP_AREACOLOR_OPERATIONS "#E06F0099"
-#define HOLOMAP_AREACOLOR_HALLWAYS "#ffffffa5"
-#define HOLOMAP_AREACOLOR_DOCK "#0000FFCC"
+#define HOLOMAP_AREACOLOR_COMMAND "#386d80"
+#define HOLOMAP_AREACOLOR_SECURITY "#ae1212"
+#define HOLOMAP_AREACOLOR_MEDICAL "#6f9e00"
+#define HOLOMAP_AREACOLOR_SCIENCE "#A154A6"
+#define HOLOMAP_AREACOLOR_ENGINEERING "#F1C231"
+#define HOLOMAP_AREACOLOR_OPERATIONS "#E06F00"
+#define HOLOMAP_AREACOLOR_HALLWAYS "#ffffff"
+#define HOLOMAP_AREACOLOR_DOCK "#0000FF"
#define HOLOMAP_AREACOLOR_HANGAR "#777777"
-#define HOLOMAP_AREACOLOR_CIVILIAN "#5bc1c199"
+#define HOLOMAP_AREACOLOR_CIVILIAN "#5bc1c1"
// If someone can come up with a non-conflicting color for the lifts, please update this.
#define HOLOMAP_AREACOLOR_LIFTS null
-// Handy defines to lookup the pixel offsets for this Z-level. Cache these if you use them in a loop tho.
-// Commenting these out for now. Replace if we ever datumize our maps.
-/*#define HOLOMAP_PIXEL_OFFSET_X(zLevel) ((using_map.holomap_offset_x.len >= zLevel) ? using_map.holomap_offset_x[zLevel] : 0)
-#define HOLOMAP_PIXEL_OFFSET_Y(zLevel) ((using_map.holomap_offset_y.len >= zLevel) ? using_map.holomap_offset_y[zLevel] : 0)
-#define HOLOMAP_LEGEND_X(zLevel) ((using_map.holomap_legend_x.len >= zLevel) ? using_map.holomap_legend_x[zLevel] : 96)
-#define HOLOMAP_LEGEND_Y(zLevel) ((using_map.holomap_legend_y.len >= zLevel) ? using_map.holomap_legend_y[zLevel] : 96)*/
-
-#define HOLOMAP_PIXEL_OFFSET_X(zlevel) ((HOLOMAP_ICON_SIZE - world.maxx) / 2)
-#define HOLOMAP_PIXEL_OFFSET_Y(zlevel) ((HOLOMAP_ICON_SIZE - world.maxx) / 2)
-#define HOLOMAP_LEGEND_X(zlevel) 96
-#define HOLOMAP_LEGEND_Y(zlevel) 96
-#define HOLOMAP_EXTRA_STATIONMAP "stationmapformatted"
-#define HOLOMAP_EXTRA_STATIONMAPAREAS "stationareas"
-#define HOLOMAP_EXTRA_STATIONMAPSMALL "stationmapsmall"
diff --git a/code/__defines/subsystem-priority.dm b/code/__defines/subsystem-priority.dm
index 76f7f784a19..a0a79ea0813 100644
--- a/code/__defines/subsystem-priority.dm
+++ b/code/__defines/subsystem-priority.dm
@@ -5,7 +5,6 @@
#define SS_INIT_JOBS 21
#define SS_INIT_MAPFINALIZE 20 // Asteroid generation.
#define SS_INIT_PARALLAX 19 // Parallax image cache generation. Must run before ghosts are able to join.
-#define SS_INIT_HOLOMAP 18
#define SS_INIT_ATOMS 17 // World initialization. Will trigger lighting updates. Observers can join after this loads.
#define SS_INIT_ASSETS 16 // Assets subsystem setup.
#define SS_INIT_POWER 15 // Initial powernet build.
@@ -26,9 +25,10 @@
#define SS_INIT_LIGHTING 0 // Generation of lighting overlays and pre-bake. May cause openturf updates, should initialize before SSzcopy.
#define SS_INIT_ZCOPY -1 // Z-mimic flush. Should run after SSoverlay & SSicon_smooth so it copies the smoothed sprites.
#define SS_INIT_XENOARCH -2 // Xenoarch is this far below because it can infinite loop if placed in SS_INIT_MISC as it was before, due to some subsystems spawning stuff there.
-#define SS_INIT_LOBBY -3 // Lobby timer starts here. The lobby timer won't actually start going down until the MC starts ticking, so you probably want this last
-#define SS_INIT_PING -4 // Pinger for the clients
-#define SS_INIT_CHAT -5 // To ensure chat remains smooth during init.
+#define SS_INIT_HOLOMAP -3 // Minimap subsystem. Should be initialized after all maps, away sites, ships, planets, etc.
+#define SS_INIT_LOBBY -4 // Lobby timer starts here. The lobby timer won't actually start going down until the MC starts ticking, so you probably want this last
+#define SS_INIT_PING -5 // Pinger for the clients
+#define SS_INIT_CHAT -6 // To ensure chat remains smooth during init.
// Something to remember when setting priorities: SS_TICKER runs before Normal, which runs before SS_BACKGROUND.
// Each group has its own priority bracket.
diff --git a/code/_helpers/unsorted.dm b/code/_helpers/unsorted.dm
index 891d141adae..5ec29e359f2 100644
--- a/code/_helpers/unsorted.dm
+++ b/code/_helpers/unsorted.dm
@@ -1017,7 +1017,6 @@ var/list/wall_items = typecacheof(list(
/obj/structure/mirror,
/obj/structure/fireaxecabinet,
/obj/machinery/computer/security/telescreen/entertainment,
- /obj/machinery/station_map,
/obj/structure/sign
))
diff --git a/code/_onclick/hud/hud.dm b/code/_onclick/hud/hud.dm
index da23341b8dd..e6b00d9b296 100644
--- a/code/_onclick/hud/hud.dm
+++ b/code/_onclick/hud/hud.dm
@@ -20,7 +20,6 @@ var/list/global_huds
var/obj/screen/thermal
var/obj/screen/meson
var/obj/screen/science
- var/obj/screen/holomap
/datum/global_hud/proc/setup_overlay(var/icon_state, var/color)
var/obj/screen/screen = new /obj/screen()
@@ -64,18 +63,6 @@ var/list/global_huds
meson = setup_overlay("scanline", "#9fd800")
science = setup_overlay("scanline", "#d600d6")
- // The holomap screen object is actually totally invisible.
- // Station maps work by setting it as an images location before sending to client, not
- // actually changing the icon or icon state of the screen object itself!
- // Why do they work this way? I don't know really, that is how /vg/ designed them, but since they DO
- // work this way, we can take advantage of their immutability by making them part of
- // the global_hud (something we have and /vg/ doesn't) instead of an instance per mob.
- holomap = new /obj/screen()
- holomap.name = "holomap"
- holomap.icon = null
- holomap.screen_loc = ui_holomap
- holomap.mouse_opacity = MOUSE_OPACITY_TRANSPARENT
-
var/obj/screen/O
var/i
//that nasty looking dither you get when you're short-sighted
diff --git a/code/controllers/subsystems/initialization/holomap.dm b/code/controllers/subsystems/initialization/holomap.dm
index e85617e718e..7e1849e3f5b 100644
--- a/code/controllers/subsystems/initialization/holomap.dm
+++ b/code/controllers/subsystems/initialization/holomap.dm
@@ -6,35 +6,39 @@ SUBSYSTEM_DEF(holomap)
flags = SS_NO_FIRE
init_order = SS_INIT_HOLOMAP
- var/list/holo_minimaps = list()
- var/list/extra_minimaps = list()
- var/list/station_holomaps = list()
+ /// List of images of minimaps, for every z-level, initialized at round start.
+ /// This is the "base" minimap, shows only the physical structure of walls and paths, and respects `HIDE_FROM_HOLOMAP`.
+ /// Key of list is the `z` of the z-level, value is the `/icon/`.
+ /// Every image is 255x255px.
+ var/list/minimaps = list()
-/datum/controller/subsystem/holomap/Initialize()
- holo_minimaps.len = world.maxz
- for (var/z in 1 to world.maxz)
- holo_minimaps[z] = generateHoloMinimap(z)
+ /// Same as `minimaps`, but images are base64 encoded.
+ var/list/minimaps_base64 = list()
- LOG_DEBUG("SSholomap: [holo_minimaps.len] maps.")
-
- for (var/z in current_map.station_levels)
- generateStationMinimap(z)
+ /// Same as `minimaps_base64`, but the map is colored with `holomap_color` of the `/area/`
+ var/list/minimaps_area_colored_base64 = list()
+/datum/controller/subsystem/holomap/Initialize()
+ generate_all_minimaps()
+ LOG_DEBUG("SSholomap: [minimaps.len] maps.")
..()
+/datum/controller/subsystem/holomap/proc/generate_all_minimaps()
+ minimaps.len = world.maxz
+ minimaps_base64.len = world.maxz
+ minimaps_area_colored_base64.len = world.maxz
-// Generates the "base" holomap for one z-level, showing only the physical structure of walls and paths.
-/datum/controller/subsystem/holomap/proc/generateHoloMinimap(zlevel = 1)
- // Save these values now to avoid a bazillion array lookups
- var/offset_x = HOLOMAP_PIXEL_OFFSET_X(zlevel)
- var/offset_y = HOLOMAP_PIXEL_OFFSET_Y(zlevel)
+ for (var/z in 1 to world.maxz)
+ generate_minimap(z)
+ generate_minimap_area_colored(z)
+/datum/controller/subsystem/holomap/proc/generate_minimap(zlevel = 1)
// Sanity checks - Better to generate a helpful error message now than have DrawBox() runtime
- var/icon/canvas = icon(HOLOMAP_ICON, "blank")
- if(world.maxx + offset_x > canvas.Width())
- CRASH("Minimap for z=[zlevel] : world.maxx ([world.maxx]) + holomap_offset_x ([offset_x]) must be <= [canvas.Width()]")
- if(world.maxy + offset_y > canvas.Height())
- CRASH("Minimap for z=[zlevel] : world.maxy ([world.maxy]) + holomap_offset_y ([offset_y]) must be <= [canvas.Height()]")
+ var/icon/canvas = icon('icons/255x255.dmi', "blank")
+ if(world.maxx > canvas.Width())
+ CRASH("Minimap for z=[zlevel] : world.maxx ([world.maxx]) must be <= [canvas.Width()]")
+ if(world.maxy > canvas.Height())
+ CRASH("Minimap for z=[zlevel] : world.maxy ([world.maxy]) must be <= [canvas.Height()]")
var/list/rock_tcache = typecacheof(list(
/turf/simulated/mineral,
@@ -64,25 +68,22 @@ SUBSYSTEM_DEF(holomap)
if (rock_tcache[Ttype])
continue
if (obstacle_tcache[Ttype] || (T.contents.len && locate(/obj/structure/grille, T)))
- canvas.DrawBox(HOLOMAP_OBSTACLE, T.x + offset_x, T.y + offset_y)
+ canvas.DrawBox(HOLOMAP_OBSTACLE + "DD", T.x, T.y)
else if(path_tcache[Ttype] || (T.contents.len && locate(/obj/structure/lattice/catwalk, T)))
- canvas.DrawBox(HOLOMAP_PATH, T.x + offset_x, T.y + offset_y)
+ canvas.DrawBox(HOLOMAP_PATH + "DD", T.x, T.y)
CHECK_TICK
- return canvas
-
-/datum/controller/subsystem/holomap/proc/generateStationMinimap(zlevel)
- // Save these values now to avoid a bazillion array lookups
- var/offset_x = HOLOMAP_PIXEL_OFFSET_X(zlevel)
- var/offset_y = HOLOMAP_PIXEL_OFFSET_Y(zlevel)
+ minimaps[zlevel] = canvas
+ minimaps_base64[zlevel] = icon2base64(canvas)
+/datum/controller/subsystem/holomap/proc/generate_minimap_area_colored(zlevel)
// Sanity checks - Better to generate a helpful error message now than have DrawBox() runtime
- var/icon/canvas = icon(HOLOMAP_ICON, "blank")
- if(world.maxx + offset_x > canvas.Width())
- crash_with("Minimap for z=[zlevel] : world.maxx ([world.maxx]) + holomap_offset_x ([offset_x]) must be <= [canvas.Width()]")
- if(world.maxy + offset_y > canvas.Height())
- crash_with("Minimap for z=[zlevel] : world.maxy ([world.maxy]) + holomap_offset_y ([offset_y]) must be <= [canvas.Height()]")
+ var/icon/canvas = icon('icons/255x255.dmi', "blank")
+ if(world.maxx > canvas.Width())
+ crash_with("Minimap for z=[zlevel] : world.maxx ([world.maxx]) must be <= [canvas.Width()]")
+ if(world.maxy > canvas.Height())
+ crash_with("Minimap for z=[zlevel] : world.maxy ([world.maxy]) must be <= [canvas.Height()]")
var/turf/T
var/area/A
@@ -90,30 +91,13 @@ SUBSYSTEM_DEF(holomap)
T = thing
A = T.loc
if (A.holomap_color)
- canvas.DrawBox(A.holomap_color, T.x + offset_x, T.y + offset_y)
-
- // Save this nice area-colored canvas in case we want to layer it or something I guess
- extra_minimaps["[HOLOMAP_EXTRA_STATIONMAPAREAS]_[zlevel]"] = canvas
+ canvas.DrawBox(A.holomap_color + "99", T.x, T.y)
- var/icon/map_base = icon(holo_minimaps[zlevel])
+ var/icon/map_base = icon(minimaps[zlevel])
map_base.Blend(HOLOMAP_HOLOFIER, ICON_MULTIPLY)
// Generate the full sized map by blending the base and areas onto the backdrop
- var/icon/big_map = icon(HOLOMAP_ICON, "stationmap")
+ var/icon/big_map = icon('icons/255x255.dmi', "blank")
big_map.Blend(map_base, ICON_OVERLAY)
big_map.Blend(canvas, ICON_OVERLAY)
- extra_minimaps["[HOLOMAP_EXTRA_STATIONMAP]_[zlevel]"] = big_map
-
- // Generate the "small" map (I presume for putting on wall map things?)
- var/icon/small_map = icon(HOLOMAP_ICON, "blank")
- small_map.Blend(map_base, ICON_OVERLAY)
- small_map.Blend(canvas, ICON_OVERLAY)
- small_map.Scale(WORLD_ICON_SIZE, WORLD_ICON_SIZE)
-
- // And rotate it in every direction of course!
- var/icon/actual_small_map = icon(small_map)
- actual_small_map.Insert(new_icon = small_map, dir = SOUTH)
- actual_small_map.Insert(new_icon = turn(small_map, 90), dir = WEST)
- actual_small_map.Insert(new_icon = turn(small_map, 180), dir = NORTH)
- actual_small_map.Insert(new_icon = turn(small_map, 270), dir = EAST)
- extra_minimaps["[HOLOMAP_EXTRA_STATIONMAPSMALL]_[zlevel]"] = actual_small_map
+ minimaps_area_colored_base64[zlevel] = icon2base64(big_map)
diff --git a/code/controllers/subsystems/initialization/misc_early.dm b/code/controllers/subsystems/initialization/misc_early.dm
index bc08873202e..e656af280cc 100644
--- a/code/controllers/subsystems/initialization/misc_early.dm
+++ b/code/controllers/subsystems/initialization/misc_early.dm
@@ -18,7 +18,6 @@ SUBSYSTEM_DEF(misc_early)
global_hud.thermal,
global_hud.meson,
global_hud.science,
- global_hud.holomap
)
// Populate global list of tips by category
diff --git a/code/game/machinery/station_holomap.dm b/code/game/machinery/station_holomap.dm
deleted file mode 100644
index e61d99c0e3f..00000000000
--- a/code/game/machinery/station_holomap.dm
+++ /dev/null
@@ -1,245 +0,0 @@
-/obj/machinery/station_map
- name = "holomap"
- desc = "A virtual map of the surrounding area."
- icon = 'icons/obj/machinery/stationmap.dmi'
- icon_state = "station_map"
- anchored = 1
- density = 0
- idle_power_usage = 10
- active_power_usage = 500
-
- light_color = "#64C864"
- light_power = 1
- light_range = 2
- gfi_layer_rotation = GFI_ROTATION_DEFDIR
-
- var/light_power_on = 1
- var/light_range_on = 2
-
- layer = WINDOW_PANE_LAYER + 0.1
-
- var/mob/watching_mob = null
- var/image/small_station_map = null
- var/image/floor_markings = null
- var/image/panel = null
-
- var/original_zLevel = 1 // zLevel on which the station map was initialized.
- var/bogus = TRUE // set to 0 when you initialize the station map on a zLevel that has its own icon formatted for use by station holomaps.
- var/datum/station_holomap/holomap_datum
-
-/obj/machinery/station_map/Destroy()
- SSholomap.station_holomaps -= src
- stopWatching()
- QDEL_NULL(holomap_datum)
- return ..()
-
-/obj/machinery/station_map/Initialize()
- . = ..()
- init_map()
- create_small_map()
- add_floor_decal()
-
-/obj/machinery/station_map/proc/init_map()
- holomap_datum = new()
- original_zLevel = loc.z
- SSholomap.station_holomaps += src
- flags |= ON_BORDER // Why? It doesn't help if its not density
- bogus = FALSE
- var/turf/T = get_turf(src)
- original_zLevel = T.z
- if(!("[HOLOMAP_EXTRA_STATIONMAP]_[original_zLevel]" in SSholomap.extra_minimaps))
- bogus = TRUE
- holomap_datum.initialize_holomap_bogus()
- update_icon()
- return
-
- holomap_datum.initialize_holomap(T, reinit = TRUE)
-
-/obj/machinery/station_map/proc/create_small_map()
- small_station_map = image(SSholomap.extra_minimaps["[HOLOMAP_EXTRA_STATIONMAPSMALL]_[original_zLevel]"], dir = dir)
- small_station_map.layer = EFFECTS_ABOVE_LIGHTING_LAYER
- small_station_map.filters = filter(type = "drop_shadow", color = light_color + "F0", size = 1, offset = 1, x = 0, y = 0)
-
-/obj/machinery/station_map/proc/add_floor_decal()
- floor_markings = image('icons/obj/machinery/stationmap.dmi', "decal_station_map")
- floor_markings.dir = src.dir
- floor_markings.layer = ON_TURF_LAYER
- update_icon()
-
-/obj/machinery/station_map/attack_hand(var/mob/user)
- if(watching_mob && (watching_mob != user))
- to_chat(user, "Someone else is currently watching the holomap.")
- return
- if(user.loc != loc)
- to_chat(user, "You need to stand in front of \the [src].")
- return
- startWatching(user)
-
-// Let people bump up against it to watch
-/obj/machinery/station_map/CollidedWith(var/atom/movable/AM)
- if(!watching_mob && isliving(AM) && AM.loc == loc)
- startWatching(AM)
-
-// In order to actually get CollidedWith() we need to block movement. We're (visually) on a wall, so people
-// couldn't really walk into us anyway. But in reality we are on the turf in front of the wall, so bumping
-// against where we seem is actually trying to *exit* our real loc
-/obj/machinery/station_map/CheckExit(atom/movable/mover as mob|obj, turf/target as turf)
- // LOG_DEBUG("[src] (dir=[dir]) CheckExit([mover], [target]) get_dir() = [get_dir(target, loc)]")
- if(get_dir(target, loc) == dir) // Opposite of "normal" since we are visually in the next turf over
- return FALSE
- else
- return TRUE
-
-/obj/machinery/station_map/proc/startWatching(var/mob/user)
- if(isliving(user) && anchored && !(stat & (NOPOWER|BROKEN)))
- if(user.client)
- holomap_datum.station_map.loc = global_hud.holomap // Put the image on the holomap hud
- holomap_datum.station_map.alpha = 0 // Set to transparent so we can fade in
- animate(holomap_datum.station_map, alpha = 255, time = 5, easing = LINEAR_EASING)
- flick("station_map_activate", src)
- user.client.screen |= global_hud.holomap
- user.client.images |= holomap_datum.station_map
-
- watching_mob = user
- moved_event.register(watching_mob, src, PROC_REF(checkPosition))
- destroyed_event.register(watching_mob, src, PROC_REF(stopWatching))
- update_use_power(POWER_USE_ACTIVE)
-
- if(bogus)
- to_chat(user, "The holomap failed to initialize. This area of space cannot be mapped.")
- else
- to_chat(user, "A hologram of the station appears before your eyes.")
-
-/obj/machinery/station_map/attack_ai(var/mob/living/silicon/robot/user)
- return // TODO - Implement for AI ~Leshana
- // user.station_holomap.toggleHolomap(user, isAI(user))
-
-/obj/machinery/station_map/process()
- if((stat & (NOPOWER|BROKEN)) || !anchored)
- stopWatching()
-
-/obj/machinery/station_map/proc/checkPosition()
- if(!watching_mob || (watching_mob.loc != loc) || (dir != watching_mob.dir))
- stopWatching()
-
-/obj/machinery/station_map/proc/stopWatching()
- if(watching_mob)
- if(watching_mob.client)
- animate(holomap_datum.station_map, alpha = 0, time = 5, easing = LINEAR_EASING)
- var/mob/M = watching_mob
- addtimer(CALLBACK(src, PROC_REF(clear_image), M, holomap_datum.station_map), 5, TIMER_CLIENT_TIME)//we give it time to fade out
- moved_event.unregister(watching_mob, src)
- destroyed_event.unregister(watching_mob, src)
- watching_mob = null
- update_use_power(POWER_USE_IDLE)
-
-/obj/machinery/station_map/proc/clear_image(mob/M, image/I)
- if (M.client)
- M.client.images -= I
-
-/obj/machinery/station_map/power_change()
- . = ..()
- update_icon()
- if(stat & NOPOWER) // Maybe port /vg/'s autolights? Done manually for now.
- set_light(0)
- else
- set_light(light_range_on, light_power_on)
-
-/obj/machinery/station_map/proc/set_broken()
- stat |= BROKEN
- update_icon()
-
-/obj/machinery/station_map/update_icon()
- cut_overlays()
- if(stat & BROKEN)
- icon_state = "station_mapb"
- else if((stat & NOPOWER) || !anchored)
- icon_state = "station_map0"
- else
- icon_state = "station_map"
-
- if(bogus)
- holomap_datum.initialize_holomap_bogus()
- else
- small_station_map.icon = SSholomap.extra_minimaps["[HOLOMAP_EXTRA_STATIONMAPSMALL]_[original_zLevel]"]
- add_overlay(small_station_map)
- holomap_datum.initialize_holomap(get_turf(src))
-
- // Put the little "map" overlay down where it looks nice
- if(floor_markings)
- floor_markings.dir = src.dir
- floor_markings.pixel_x = -src.pixel_x
- floor_markings.pixel_y = -src.pixel_y
- add_overlay(floor_markings)
-
- if(panel_open)
- add_overlay("station_map-panel")
- else
- cut_overlay("station_map-panel")
-
-/obj/machinery/station_map/ex_act(severity)
- switch(severity)
- if(1)
- qdel(src)
- if(2)
- if (prob(50))
- qdel(src)
- else
- set_broken()
- if(3)
- if (prob(25))
- set_broken()
-
-// TODO: Make these constructable.
-
-/obj/machinery/station_map/mobile
- use_power = POWER_USE_OFF
- idle_power_usage = 0
- active_power_usage = 0
-
-/obj/machinery/station_map/mobile/Initialize()
- SHOULD_CALL_PARENT(FALSE)
- init_map()
-
- initialized = TRUE
- return INITIALIZE_HINT_NORMAL
-
-/obj/machinery/station_map/mobile/startWatching(var/mob/user)
- if(!user)
- return
-
- create_small_map()
- if(!watching_mob && isliving(user))
- ..()
-
-// Simple datum to keep track of a running holomap. Each machine capable of displaying the holomap will have one.
-/datum/station_holomap
- var/image/station_map
- var/image/cursor
- var/image/legend
-
-/datum/station_holomap/proc/initialize_holomap(turf/T, isAI = null, mob/user = null, reinit = FALSE)
- if(!station_map || reinit)
- station_map = image(SSholomap.extra_minimaps["[HOLOMAP_EXTRA_STATIONMAP]_[T.z]"])
- if(!cursor || reinit)
- cursor = image('icons/misc/holomap_markers.dmi', "you")
- if(!legend || reinit)
- legend = image('icons/effects/64x64.dmi', "legend")
-
- if(isAI)
- T = get_turf(user.client.eye)
- cursor.pixel_x = (T.x - 6 + HOLOMAP_PIXEL_OFFSET_X(T.z)) * PIXEL_MULTIPLIER
- cursor.pixel_y = (T.y - 6 + HOLOMAP_PIXEL_OFFSET_Y(T.z)) * PIXEL_MULTIPLIER
-
- legend.pixel_x = HOLOMAP_LEGEND_X(T.z)
- legend.pixel_y = HOLOMAP_LEGEND_Y(T.z)
-
- station_map.add_overlay(cursor)
- station_map.add_overlay(legend)
-
-/datum/station_holomap/proc/initialize_holomap_bogus()
- station_map = image('icons/480x480.dmi', "stationmap")
- legend = image('icons/effects/64x64.dmi', "notfound")
- legend.pixel_x = 7 * WORLD_ICON_SIZE
- legend.pixel_y = 7 * WORLD_ICON_SIZE
- station_map.add_overlay(legend)
diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index 634546d1e7e..2151bc8aabe 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -507,22 +507,6 @@
to_chat(src, SPAN_NOTICE("You [C.toggled ? "disable" : "enable"] [C.name]."))
C.toggled = !C.toggled
-/mob/living/silicon/robot/verb/view_holomap()
- set category = "Robot Commands"
- set name = "View Holomap"
- set desc = "View a virtual map of the surrounding area."
-
- var/obj/machinery/station_map/mobile/holo_map_object
- if(src.holo_map)
- holo_map_object = src.holo_map.resolve()
-
- // Not an else because weakref.resolve() can return false. Edge case
- if(!holo_map_object)
- holo_map_object = new(src)
- src.holo_map = WEAKREF(holo_map)
-
- holo_map_object.startWatching(src)
-
/mob/living/silicon/robot/verb/rebuild_overlays()
set category = "Robot Commands"
set name = "Rebuild Overlays"
diff --git a/code/modules/modular_computers/file_system/programs/app_presets.dm b/code/modules/modular_computers/file_system/programs/app_presets.dm
deleted file mode 100644
index 129a07efe87..00000000000
--- a/code/modules/modular_computers/file_system/programs/app_presets.dm
+++ /dev/null
@@ -1,685 +0,0 @@
-/datum/modular_computer_app_presets
- var/name = "default_preset"
- var/display_name = "default preset"
- var/description = "Description of the preset."
- var/available = FALSE
-
-/datum/modular_computer_app_presets/proc/return_install_programs(var/obj/item/modular_computer/comp)
- return list()
-
-/datum/modular_computer_app_presets/all
- name = "all"
- display_name = "All Programs"
- description = "Contains all programs."
- available = FALSE
-
-/datum/modular_computer_app_presets/all/return_install_programs(obj/item/modular_computer/comp)
- var/list/_prg_list = list()
- for(var/F in typesof(/datum/computer_file/program))
- var/datum/computer_file/program/prog = new F(comp)
- _prg_list += prog
- return _prg_list
-
-/datum/modular_computer_app_presets/engineering
- name = "engineering"
- display_name = "Engineering"
- description = "Contains the most common engineering programs."
- available = TRUE
-
-/datum/modular_computer_app_presets/engineering/return_install_programs(obj/item/modular_computer/comp)
- var/list/_prg_list = list(
- new /datum/computer_file/program/ntnetdownload(comp),
- new /datum/computer_file/program/filemanager(comp),
- new /datum/computer_file/program/newsbrowser(comp),
- new /datum/computer_file/program/manifest(comp),
- new /datum/computer_file/program/chat_client(comp),
- new /datum/computer_file/program/civilian/cargoorder(comp),
- new /datum/computer_file/program/power_monitor(comp),
- new /datum/computer_file/program/alarm_monitor/engineering(comp),
- new /datum/computer_file/program/atmos_control(comp),
- new /datum/computer_file/program/rcon_console(comp),
- new /datum/computer_file/program/camera_monitor(comp),
- new /datum/computer_file/program/lighting_control(comp)
- )
- return _prg_list
-
-/datum/modular_computer_app_presets/engineering/atmos
- name = "atmos"
- display_name = "Engineering - Atmospherics"
- description = "Contains the most common engineering programs and atmospheric monitoring software."
- available = TRUE
-
-/datum/modular_computer_app_presets/engineering/return_install_programs(obj/item/modular_computer/comp)
- var/list/_prg_list = list(
- new /datum/computer_file/program/ntnetdownload(comp),
- new /datum/computer_file/program/filemanager(comp),
- new /datum/computer_file/program/newsbrowser(comp),
- new /datum/computer_file/program/manifest(comp),
- new /datum/computer_file/program/chat_client(comp),
- new /datum/computer_file/program/civilian/cargoorder(comp),
- new /datum/computer_file/program/power_monitor(comp),
- new /datum/computer_file/program/alarm_monitor/engineering(comp),
- new /datum/computer_file/program/atmos_control(comp),
- new /datum/computer_file/program/rcon_console(comp),
- new /datum/computer_file/program/camera_monitor(comp),
- new /datum/computer_file/program/lighting_control(comp),
- new /datum/computer_file/program/scanner/gas(comp)
- )
- return _prg_list
-
-/datum/modular_computer_app_presets/engineering/ce
- name = "engineering_head"
- display_name = "Engineering - CE"
- description = "Contains the most common engineering programs and command software."
- available = FALSE
-
-/datum/modular_computer_app_presets/engineering/ce/return_install_programs(obj/item/modular_computer/comp)
- var/list/_prg_list = list(
- new /datum/computer_file/program/ntnetdownload(comp),
- new /datum/computer_file/program/filemanager(comp),
- new /datum/computer_file/program/newsbrowser(comp),
- new /datum/computer_file/program/manifest(comp),
- new /datum/computer_file/program/chat_client(comp),
- new /datum/computer_file/program/civilian/cargoorder(comp),
- new /datum/computer_file/program/comm(comp, FALSE),
- new /datum/computer_file/program/power_monitor(comp),
- new /datum/computer_file/program/alarm_monitor/engineering(comp),
- new /datum/computer_file/program/atmos_control(comp),
- new /datum/computer_file/program/rcon_console(comp),
- new /datum/computer_file/program/camera_monitor(comp),
- new /datum/computer_file/program/lighting_control(comp),
- new /datum/computer_file/program/records/employment(comp),
- new /datum/computer_file/program/scanner/gas(comp)
- )
- return _prg_list
-
-/datum/modular_computer_app_presets/medical
- name = "medical"
- display_name = "Medical"
- description = "Contains the most common medical programs."
- available = TRUE
-
-/datum/modular_computer_app_presets/medical/return_install_programs(obj/item/modular_computer/comp)
- var/list/_prg_list = list(
- new /datum/computer_file/program/ntnetdownload(comp),
- new /datum/computer_file/program/filemanager(comp),
- new /datum/computer_file/program/newsbrowser(comp),
- new /datum/computer_file/program/manifest(comp),
- new /datum/computer_file/program/chat_client(comp),
- new /datum/computer_file/program/civilian/cargoorder(comp),
- new /datum/computer_file/program/suit_sensors(comp),
- new /datum/computer_file/program/records/medical(comp),
- new /datum/computer_file/program/chemistry_codex(comp),
- new /datum/computer_file/program/scanner/medical(comp)
- )
- return _prg_list
-
-/datum/modular_computer_app_presets/medical/cmo
- name = "medical_head"
- display_name = "Medical - CMO"
- description = "Contains the most common medical programs and command software."
- available = FALSE
-
-/datum/modular_computer_app_presets/medical/cmo/return_install_programs(obj/item/modular_computer/comp)
- var/list/_prg_list = list(
- new /datum/computer_file/program/ntnetdownload(comp),
- new /datum/computer_file/program/filemanager(comp),
- new /datum/computer_file/program/newsbrowser(comp),
- new /datum/computer_file/program/manifest(comp),
- new /datum/computer_file/program/chat_client(comp),
- new /datum/computer_file/program/civilian/cargoorder(comp),
- new /datum/computer_file/program/comm(comp, FALSE),
- new /datum/computer_file/program/suit_sensors(comp),
- new /datum/computer_file/program/records/employment(comp),
- new /datum/computer_file/program/records/medical(comp),
- new /datum/computer_file/program/chemistry_codex(comp),
- new /datum/computer_file/program/scanner/medical(comp),
- new /datum/computer_file/program/scanner/science(comp)
- )
- return _prg_list
-
-/datum/modular_computer_app_presets/research
- name = "research"
- display_name = "Research"
- description = "Contains the most common research programs."
- available = TRUE
-
-/datum/modular_computer_app_presets/research/return_install_programs(obj/item/modular_computer/comp)
- var/list/_prg_list = list(
- new /datum/computer_file/program/ntnetdownload(comp),
- new /datum/computer_file/program/newsbrowser(comp),
- new /datum/computer_file/program/manifest(comp),
- new /datum/computer_file/program/filemanager(comp),
- new /datum/computer_file/program/chat_client(comp),
- new /datum/computer_file/program/civilian/cargoorder(comp),
- new /datum/computer_file/program/ntnetmonitor(comp),
- new /datum/computer_file/program/aidiag(comp),
- new /datum/computer_file/program/chemistry_codex(comp),
- new /datum/computer_file/program/scanner/science(comp),
- new /datum/computer_file/program/scanner/gas(comp),
- new /datum/computer_file/program/away_manifest(comp)
- )
- return _prg_list
-
-/datum/modular_computer_app_presets/research/rd
- name = "research_head"
- display_name = "Research - RD"
- description = "Contains the most common research programs and command software."
- available = FALSE
-
-/datum/modular_computer_app_presets/research/rd/return_install_programs(obj/item/modular_computer/comp)
- var/list/_prg_list = list(
- new /datum/computer_file/program/ntnetdownload(comp),
- new /datum/computer_file/program/filemanager(comp),
- new /datum/computer_file/program/newsbrowser(comp),
- new /datum/computer_file/program/manifest(comp),
- new /datum/computer_file/program/chat_client(comp),
- new /datum/computer_file/program/civilian/cargoorder(comp),
- new /datum/computer_file/program/comm(comp, FALSE),
- new /datum/computer_file/program/ntnetmonitor(comp),
- new /datum/computer_file/program/records/employment(comp),
- new /datum/computer_file/program/chemistry_codex(comp),
- new /datum/computer_file/program/scanner/science(comp),
- new /datum/computer_file/program/away_manifest(comp),
- new /datum/computer_file/program/scanner/gas(comp)
- )
- return _prg_list
-
-/datum/modular_computer_app_presets/command
- name = "command"
- display_name = "Command"
- description = "Contains the most common command programs."
- available = TRUE
-
-/datum/modular_computer_app_presets/command/return_install_programs(obj/item/modular_computer/comp)
- var/list/_prg_list = list(
- new /datum/computer_file/program/ntnetdownload(comp),
- new /datum/computer_file/program/filemanager(comp),
- new /datum/computer_file/program/newsbrowser(comp),
- new /datum/computer_file/program/manifest(comp),
- new /datum/computer_file/program/chat_client(comp),
- new /datum/computer_file/program/civilian/cargoorder(comp),
- new /datum/computer_file/program/card_mod(comp),
- new /datum/computer_file/program/comm(comp, TRUE),
- new /datum/computer_file/program/docks(comp),
- new /datum/computer_file/program/away_manifest(comp),
- new /datum/computer_file/program/records/employment(comp)
- )
- return _prg_list
-
-/datum/modular_computer_app_presets/command/teleporter
- name = "command_teleporter"
- display_name = "Command - Teleporter"
- description = "Contains the most common command programs and has a special teleporter control program loaded."
- available = FALSE
-
-/datum/modular_computer_app_presets/command/teleporter/return_install_programs(obj/item/modular_computer/comp)
- var/list/_prg_list = list(
- new /datum/computer_file/program/ntnetdownload(comp),
- new /datum/computer_file/program/filemanager(comp),
- new /datum/computer_file/program/newsbrowser(comp),
- new /datum/computer_file/program/manifest(comp),
- new /datum/computer_file/program/chat_client(comp),
- new /datum/computer_file/program/civilian/cargoorder(comp),
- new /datum/computer_file/program/comm(comp, FALSE),
- new /datum/computer_file/program/records/employment(comp),
- new /datum/computer_file/program/teleporter(comp)
- )
- return _prg_list
-
-/datum/modular_computer_app_presets/command/teleporter/ninja
- name = "ninja_teleporter"
- display_name = "Offsite - Teleporter"
- description = "Contains the most common command programs and has a special teleporter control program loaded."
- available = FALSE
-
-/datum/modular_computer_app_presets/command/teleporter/ninja/return_install_programs(obj/item/modular_computer/comp)
- var/list/_prg_list = list(
- new /datum/computer_file/program/ntnetdownload(comp),
- new /datum/computer_file/program/filemanager(comp),
- new /datum/computer_file/program/newsbrowser(comp),
- new /datum/computer_file/program/manifest(comp),
- new /datum/computer_file/program/chat_client(comp),
- new /datum/computer_file/program/civilian/cargoorder(comp),
- new /datum/computer_file/program/comm(comp, FALSE),
- new /datum/computer_file/program/records/employment(comp),
- new /datum/computer_file/program/teleporter/ninja(comp)
- )
- return _prg_list
-
-/datum/modular_computer_app_presets/command/hop
- name = "command_hop"
- display_name = "Command - HoP"
- description = "Contains the most common command programs."
- available = FALSE
-
-/datum/modular_computer_app_presets/command/hop/return_install_programs(obj/item/modular_computer/comp)
- var/list/_prg_list = list(
- new /datum/computer_file/program/ntnetdownload(comp),
- new /datum/computer_file/program/filemanager(comp),
- new /datum/computer_file/program/newsbrowser(comp),
- new /datum/computer_file/program/manifest(comp),
- new /datum/computer_file/program/chat_client(comp),
- new /datum/computer_file/program/civilian/cargoorder(comp),
- new /datum/computer_file/program/civilian/cargocontrol(comp),
- new /datum/computer_file/program/card_mod(comp),
- new /datum/computer_file/program/comm(comp, FALSE),
- new /datum/computer_file/program/docks(comp),
- new /datum/computer_file/program/away_manifest(comp),
- new /datum/computer_file/program/records/employment(comp),
- new /datum/computer_file/program/records/security(comp)
- )
- return _prg_list
-
-/datum/modular_computer_app_presets/command/captain
- name = "captain"
- display_name = "Captain"
- description = "Contains the most important programs for the Captain."
- available = FALSE
-
-/datum/modular_computer_app_presets/command/captain/return_install_programs(obj/item/modular_computer/comp)
- var/list/_prg_list = list(
- new /datum/computer_file/program/ntnetdownload(comp),
- new /datum/computer_file/program/filemanager(comp),
- new /datum/computer_file/program/newsbrowser(comp),
- new /datum/computer_file/program/manifest(comp),
- new /datum/computer_file/program/chat_client(comp),
- new /datum/computer_file/program/card_mod(comp),
- new /datum/computer_file/program/comm(comp, TRUE),
- new /datum/computer_file/program/docks(comp),
- new /datum/computer_file/program/away_manifest(comp),
- new /datum/computer_file/program/camera_monitor(comp),
- new /datum/computer_file/program/digitalwarrant(comp),
- new /datum/computer_file/program/penal_mechs(comp),
- new /datum/computer_file/program/civilian/cargocontrol(comp),
- new /datum/computer_file/program/civilian/cargoorder(comp),
- new /datum/computer_file/program/alarm_monitor/all(comp),
- new /datum/computer_file/program/records/employment(comp),
- new /datum/computer_file/program/records/medical(comp),
- new /datum/computer_file/program/records/security(comp)
- )
- return _prg_list
-
-/datum/modular_computer_app_presets/command/account
- name = "command_accounting"
- display_name = "Command - Accounting"
- description = "Contains all the programs you would need to become a god-tier accountant."
- available = FALSE
-
-/datum/modular_computer_app_presets/command/account/return_install_programs(obj/item/modular_computer/comp)
- var/list/_prg_list = list(
- new /datum/computer_file/program/ntnetdownload(comp),
- new /datum/computer_file/program/filemanager(comp),
- new /datum/computer_file/program/newsbrowser(comp),
- new /datum/computer_file/program/manifest(comp),
- new /datum/computer_file/program/civilian/cargoorder(comp),
- new /datum/computer_file/program/civilian/cargocontrol(comp),
- new /datum/computer_file/program/records/employment(comp),
- new /datum/computer_file/program/account_db(comp)
- )
- return _prg_list
-
-/datum/modular_computer_app_presets/command/account/centcomm/return_install_programs(obj/item/modular_computer/comp)
- var/list/_prg_list = list(
- new /datum/computer_file/program/ntnetdownload(comp),
- new /datum/computer_file/program/filemanager(comp),
- new /datum/computer_file/program/newsbrowser(comp),
- new /datum/computer_file/program/manifest(comp),
- new /datum/computer_file/program/civilian/cargoorder(comp),
- new /datum/computer_file/program/civilian/cargocontrol(comp),
- new /datum/computer_file/program/records/employment(comp),
- new /datum/computer_file/program/account_db(comp, TRUE)
- )
- return _prg_list
-
-/datum/modular_computer_app_presets/security
- name = "security"
- display_name = "Security"
- description = "Contains the most common security programs."
- available = TRUE
-
-/datum/modular_computer_app_presets/security/return_install_programs(obj/item/modular_computer/comp)
- var/list/_prg_list = list(
- new /datum/computer_file/program/ntnetdownload(comp),
- new /datum/computer_file/program/newsbrowser(comp),
- new /datum/computer_file/program/manifest(comp),
- new /datum/computer_file/program/filemanager(comp),
- new /datum/computer_file/program/chat_client(comp),
- new /datum/computer_file/program/alarm_monitor/security(comp),
- new /datum/computer_file/program/civilian/cargoorder(comp),
- new /datum/computer_file/program/camera_monitor(comp),
- new /datum/computer_file/program/digitalwarrant(comp),
- new /datum/computer_file/program/penal_mechs(comp),
- new /datum/computer_file/program/records/security(comp),
- new /datum/computer_file/program/guntracker(comp)
- )
- return _prg_list
-
-/datum/modular_computer_app_presets/security/armory
- name = "security_arm"
- display_name = "Security - Armory"
- description = "Contains the most common security and armory programs."
- available = FALSE
-
-/datum/modular_computer_app_presets/security/armory/return_install_programs(obj/item/modular_computer/comp)
- var/list/_prg_list = list(
- new /datum/computer_file/program/newsbrowser(comp),
- new /datum/computer_file/program/manifest(comp),
- new /datum/computer_file/program/filemanager(comp),
- new /datum/computer_file/program/chat_client(comp),
- new /datum/computer_file/program/alarm_monitor/security(comp),
- new /datum/computer_file/program/civilian/cargoorder(comp),
- new /datum/computer_file/program/camera_monitor(comp),
- new /datum/computer_file/program/comm(comp),
- new /datum/computer_file/program/digitalwarrant(comp),
- new /datum/computer_file/program/penal_mechs(comp),
- new /datum/computer_file/program/records/security(comp),
- new /datum/computer_file/program/guntracker(comp),
- new /datum/computer_file/program/implant_tracker(comp)
- )
- return _prg_list
-
-/datum/modular_computer_app_presets/security/investigations
- name = "security_inv"
- display_name = "Security - Investigations"
- description = "Contains the most common security and forensics programs."
- available = TRUE
-
-/datum/modular_computer_app_presets/security/investigations/return_install_programs(obj/item/modular_computer/comp)
- var/list/_prg_list = list(
- new /datum/computer_file/program/ntnetdownload(comp),
- new /datum/computer_file/program/newsbrowser(comp),
- new /datum/computer_file/program/manifest(comp),
- new /datum/computer_file/program/filemanager(comp),
- new /datum/computer_file/program/chat_client(comp),
- new /datum/computer_file/program/alarm_monitor/security(comp),
- new /datum/computer_file/program/camera_monitor(comp),
- new /datum/computer_file/program/digitalwarrant(comp),
- new /datum/computer_file/program/records/security(comp),
- new /datum/computer_file/program/records/medical(comp)
- )
- return _prg_list
-
-/datum/modular_computer_app_presets/security/hos
- name = "security_head"
- display_name = "Security - HoS"
- description = "Contains the most common security programs and command software."
- available = FALSE
-
-/datum/modular_computer_app_presets/security/hos/return_install_programs(obj/item/modular_computer/comp)
- var/list/_prg_list = list(
- new /datum/computer_file/program/ntnetdownload(comp),
- new /datum/computer_file/program/newsbrowser(comp),
- new /datum/computer_file/program/manifest(comp),
- new /datum/computer_file/program/filemanager(comp),
- new /datum/computer_file/program/chat_client(comp),
- new /datum/computer_file/program/alarm_monitor/security(comp),
- new /datum/computer_file/program/civilian/cargoorder(comp),
- new /datum/computer_file/program/comm(comp, FALSE),
- new /datum/computer_file/program/camera_monitor(comp),
- new /datum/computer_file/program/digitalwarrant(comp),
- new /datum/computer_file/program/penal_mechs(comp),
- new /datum/computer_file/program/records/security(comp),
- new /datum/computer_file/program/records/employment(comp)
- )
- return _prg_list
-
-/datum/modular_computer_app_presets/civilian
- name = "service"
- display_name = "Service"
- description = "Contains the most common service programs."
- available = TRUE
-
-/datum/modular_computer_app_presets/civilian/return_install_programs(obj/item/modular_computer/comp)
- var/list/_prg_list = list(
- new /datum/computer_file/program/ntnetdownload(comp),
- new /datum/computer_file/program/filemanager(comp),
- new /datum/computer_file/program/newsbrowser(comp),
- new /datum/computer_file/program/manifest(comp),
- new /datum/computer_file/program/chat_client(comp),
- new /datum/computer_file/program/civilian/cargoorder(comp),
- new /datum/computer_file/program/game/arcade(comp)
- )
- return _prg_list
-
-/datum/modular_computer_app_presets/civilian/janitor
- name = "janitor"
- display_name = "Janitor"
- description = "Contains programs for janitorial service."
- available = TRUE
-
-/datum/modular_computer_app_presets/civilian/janitor/return_install_programs(obj/item/modular_computer/comp)
- var/list/_prg_list = list(
- new /datum/computer_file/program/ntnetdownload(comp),
- new /datum/computer_file/program/filemanager(comp),
- new /datum/computer_file/program/newsbrowser(comp),
- new /datum/computer_file/program/manifest(comp),
- new /datum/computer_file/program/chat_client(comp),
- new /datum/computer_file/program/civilian/cargoorder(comp),
- new /datum/computer_file/program/civilian/janitor(comp),
- new /datum/computer_file/program/game/arcade(comp)
- )
- return _prg_list
-
-/datum/modular_computer_app_presets/supply
- name = "supply"
- display_name = "Supply"
- description = "Contains the most common cargo programs."
- available = TRUE
-
-/datum/modular_computer_app_presets/supply/return_install_programs(obj/item/modular_computer/comp)
- var/list/_prg_list = list(
- new /datum/computer_file/program/ntnetdownload(comp),
- new /datum/computer_file/program/filemanager(comp),
- new /datum/computer_file/program/newsbrowser(comp),
- new /datum/computer_file/program/manifest(comp),
- new /datum/computer_file/program/chat_client(comp),
- new /datum/computer_file/program/civilian/cargocontrol(comp),
- new /datum/computer_file/program/civilian/cargoorder(comp),
- new /datum/computer_file/program/civilian/cargodelivery(comp),
- new /datum/computer_file/program/away_manifest(comp)
- )
- return _prg_list
-
-/datum/modular_computer_app_presets/supply/om
- name = "operations manager"
- display_name = "Operations Manager"
- description = "Contains the most common cargo programs as well as the OM's ones."
- available = FALSE
-
-/datum/modular_computer_app_presets/supply/om/return_install_programs(obj/item/modular_computer/comp)
- var/list/_prg_list = list(
- new /datum/computer_file/program/ntnetdownload(comp),
- new /datum/computer_file/program/filemanager(comp),
- new /datum/computer_file/program/newsbrowser(comp),
- new /datum/computer_file/program/manifest(comp),
- new /datum/computer_file/program/chat_client(comp),
- new /datum/computer_file/program/civilian/cargocontrol(comp),
- new /datum/computer_file/program/civilian/cargoorder(comp),
- new /datum/computer_file/program/civilian/cargodelivery(comp),
- new /datum/computer_file/program/comm(comp, FALSE),
- new /datum/computer_file/program/docks(comp),
- new /datum/computer_file/program/away_manifest(comp)
- )
- return _prg_list
-
-/datum/modular_computer_app_presets/cargo_delivery
- name = "cargo_delivery"
- display_name = "Cargo Delivery"
- description = "Contains the Delivery App."
- available = FALSE
-
-/datum/modular_computer_app_presets/cargo_delivery/return_install_programs(obj/item/modular_computer/comp)
- var/list/_prg_list = list(
- new /datum/computer_file/program/ntnetdownload(comp),
- new /datum/computer_file/program/filemanager(comp),
- new /datum/computer_file/program/newsbrowser(comp),
- new /datum/computer_file/program/manifest(comp),
- new /datum/computer_file/program/chat_client(comp),
- new /datum/computer_file/program/civilian/cargodelivery(comp)
- )
- return _prg_list
-
-/datum/modular_computer_app_presets/supply/machinist
- name = "operations_machinist"
- display_name = "Operations - Machinist"
- description = "Contains the most common supply programs and medical record software."
- available = TRUE
-
-/datum/modular_computer_app_presets/supply/machinist/return_install_programs(obj/item/modular_computer/comp)
- var/list/_prg_list = list(
- new /datum/computer_file/program/ntnetdownload(comp),
- new /datum/computer_file/program/newsbrowser(comp),
- new /datum/computer_file/program/manifest(comp),
- new /datum/computer_file/program/filemanager(comp),
- new /datum/computer_file/program/chat_client(comp),
- new /datum/computer_file/program/civilian/cargoorder(comp),
- new /datum/computer_file/program/aidiag(comp),
- new /datum/computer_file/program/records/medical(comp),
- new /datum/computer_file/program/scanner/science(comp),
- new /datum/computer_file/program/scanner/gas(comp)
- )
- return _prg_list
-
-/datum/modular_computer_app_presets/representative
- name = "representative"
- display_name = "Representative"
- description = "Contains software intended for representatives."
- available = FALSE
-
-/datum/modular_computer_app_presets/representative/return_install_programs(obj/item/modular_computer/comp)
- var/list/_prg_list = list(
- new /datum/computer_file/program/ntnetdownload(comp),
- new /datum/computer_file/program/filemanager(comp),
- new /datum/computer_file/program/newsbrowser(comp),
- new /datum/computer_file/program/manifest(comp),
- new /datum/computer_file/program/chat_client(comp),
- new /datum/computer_file/program/civilian/cargoorder(comp),
- new /datum/computer_file/program/records/employment(comp)
- )
- return _prg_list
-
-/datum/modular_computer_app_presets/wall_generic
- name = "wallgeneric"
- display_name = "Wall - Generic"
- description = "A generic preset for the wall console."
- available = FALSE
-
-/datum/modular_computer_app_presets/wall_generic/return_install_programs(obj/item/modular_computer/comp)
- var/list/_prg_list = list(
- new /datum/computer_file/program/filemanager(comp),
- new /datum/computer_file/program/newsbrowser(comp),
- new /datum/computer_file/program/manifest(comp),
- new /datum/computer_file/program/chat_client(comp),
- new /datum/computer_file/program/civilian/cargoorder(comp),
- new /datum/computer_file/program/camera_monitor(comp),
- new /datum/computer_file/program/alarm_monitor/engineering(comp)
- )
- return _prg_list
-
-/datum/modular_computer_app_presets/merc
- name = "merc"
- display_name = "Mercenary"
- description = "Preset for the Merc Console."
- available = FALSE
-
-/datum/modular_computer_app_presets/merc/return_install_programs(obj/item/modular_computer/comp)
- var/list/_prg_list = list(
- new /datum/computer_file/program/ntnetdownload(comp),
- new /datum/computer_file/program/filemanager(comp),
- new /datum/computer_file/program/newsbrowser(comp),
- new /datum/computer_file/program/manifest(comp),
- new /datum/computer_file/program/camera_monitor/hacked(comp)
- )
- return _prg_list
-
-/datum/modular_computer_app_presets/ert
- name = "ert"
- display_name = "EmergencyResposeTeam"
- description = "Preset for the ERT Console."
- available = FALSE
-
-/datum/modular_computer_app_presets/ert/return_install_programs(obj/item/modular_computer/comp)
- var/list/_prg_list = list(
- new /datum/computer_file/program/filemanager(comp),
- new /datum/computer_file/program/ntnetdownload(comp),
- new /datum/computer_file/program/camera_monitor/hacked(comp),
- new /datum/computer_file/program/comm(comp, FALSE),
- new /datum/computer_file/program/suit_sensors(comp),
- new /datum/computer_file/program/alarm_monitor/all(comp),
- new /datum/computer_file/program/lighting_control(comp),
- new /datum/computer_file/program/aidiag(comp),
- new /datum/computer_file/program/records(comp)
- )
- return _prg_list
-
-/datum/modular_computer_app_presets/trashcompactor
- name = "trashcompactor"
- display_name = "Trash Compactor"
- description = "A preset for the Trash Compactor Wall Console."
- available = FALSE
-
-/datum/modular_computer_app_presets/trashcompactor/return_install_programs(obj/item/modular_computer/comp)
- var/list/_prg_list = list(
- new /datum/computer_file/program/crushercontrol(comp)
- )
- return _prg_list
-
-/datum/modular_computer_app_presets/merchant
- name = "merchant"
- display_name = "Merchant"
- description = "A preset for the merchant console."
- available = FALSE
-
-/datum/modular_computer_app_presets/merchant/return_install_programs(obj/item/modular_computer/comp)
- var/list/_prg_list = list(
- new /datum/computer_file/program/filemanager(comp),
- new /datum/computer_file/program/manifest(comp),
- new /datum/computer_file/program/newsbrowser(comp),
- new /datum/computer_file/program/chat_client(comp),
- new /datum/computer_file/program/merchant(comp)
- )
- return _prg_list
-
-/datum/modular_computer_app_presets/merchant/nka/return_install_programs(obj/item/modular_computer/comp)
- var/list/_prg_list = list(
- new /datum/computer_file/program/filemanager(comp),
- new /datum/computer_file/program/manifest(comp),
- new /datum/computer_file/program/newsbrowser(comp),
- new /datum/computer_file/program/chat_client(comp),
- new /datum/computer_file/program/merchant/nka(comp)
- )
- return _prg_list
-
-/datum/modular_computer_app_presets/merchant/guild/return_install_programs(obj/item/modular_computer/comp)
- var/list/_prg_list = list(
- new /datum/computer_file/program/filemanager(comp),
- new /datum/computer_file/program/manifest(comp),
- new /datum/computer_file/program/newsbrowser(comp),
- new /datum/computer_file/program/chat_client(comp),
- new /datum/computer_file/program/merchant/guild(comp)
- )
- return _prg_list
-
-
-/datum/modular_computer_app_presets/merchant/golden_deep/return_install_programs(obj/item/modular_computer/comp)
- var/list/_prg_list = list(
- new /datum/computer_file/program/filemanager(comp),
- new /datum/computer_file/program/manifest(comp),
- new /datum/computer_file/program/newsbrowser(comp),
- new /datum/computer_file/program/chat_client(comp),
- new /datum/computer_file/program/merchant/golden_deep(comp)
- )
- return _prg_list
-
-/datum/modular_computer_app_presets/ai
- name = "ai"
- display_name = "AI"
- description = "A preset for the AI consoles."
- available = FALSE
-
-/datum/modular_computer_app_presets/ai/return_install_programs(obj/item/modular_computer/comp)
- return list(
- new /datum/computer_file/program/filemanager(comp),
- new /datum/computer_file/program/ntnetdownload(comp)
- )
diff --git a/code/modules/modular_computers/file_system/programs/app_presets_.dm b/code/modules/modular_computers/file_system/programs/app_presets_.dm
new file mode 100644
index 00000000000..a05754061d9
--- /dev/null
+++ b/code/modules/modular_computers/file_system/programs/app_presets_.dm
@@ -0,0 +1,68 @@
+/datum/modular_computer_app_presets
+ var/name = "default_preset"
+ var/display_name = "default preset"
+ var/description = "Description of the preset."
+ var/available = FALSE
+
+/datum/modular_computer_app_presets/proc/return_install_programs(var/obj/item/modular_computer/comp)
+ return list()
+
+/datum/modular_computer_app_presets/all
+ name = "all"
+ display_name = "All Programs"
+ description = "Contains all programs."
+ available = FALSE
+
+/datum/modular_computer_app_presets/all/return_install_programs(obj/item/modular_computer/comp)
+ var/list/_prg_list = list()
+ for(var/F in typesof(/datum/computer_file/program))
+ var/datum/computer_file/program/prog = new F(comp)
+ _prg_list += prog
+ return flatten_list(_prg_list)
+
+#define COMPUTER_APP_PRESET_SYSTEM list(\
+ new /datum/computer_file/program/ntnetdownload(comp),\
+ new /datum/computer_file/program/filemanager(comp),\
+)
+
+#define COMPUTER_APP_PRESET_HORIZON_CIVILIAN list(\
+ new /datum/computer_file/program/newsbrowser(comp),\
+ new /datum/computer_file/program/manifest(comp),\
+ new /datum/computer_file/program/chat_client(comp),\
+ new /datum/computer_file/program/civilian/cargoorder(comp),\
+ new /datum/computer_file/program/map(comp),\
+)
+
+#define COMPUTER_APP_PRESET_HORIZON_ENGINEERING list(\
+ new /datum/computer_file/program/power_monitor(comp),\
+ new /datum/computer_file/program/alarm_monitor/engineering(comp),\
+ new /datum/computer_file/program/atmos_control(comp),\
+ new /datum/computer_file/program/rcon_console(comp),\
+ new /datum/computer_file/program/camera_monitor(comp),\
+ new /datum/computer_file/program/lighting_control(comp)\
+)
+
+#define COMPUTER_APP_PRESET_HORIZON_MEDICAL list(\
+ new /datum/computer_file/program/suit_sensors(comp),\
+ new /datum/computer_file/program/records/medical(comp),\
+ new /datum/computer_file/program/chemistry_codex(comp),\
+ new /datum/computer_file/program/scanner/medical(comp),\
+)
+
+#define COMPUTER_APP_PRESET_HORIZON_RESEARCH list(\
+ new /datum/computer_file/program/ntnetmonitor(comp),\
+ new /datum/computer_file/program/aidiag(comp),\
+ new /datum/computer_file/program/chemistry_codex(comp),\
+ new /datum/computer_file/program/scanner/science(comp),\
+ new /datum/computer_file/program/scanner/gas(comp),\
+ new /datum/computer_file/program/away_manifest(comp),\
+)
+
+#define COMPUTER_APP_PRESET_HORIZON_SECURITY list(\
+ new /datum/computer_file/program/alarm_monitor/security(comp),\
+ new /datum/computer_file/program/camera_monitor(comp),\
+ new /datum/computer_file/program/digitalwarrant(comp),\
+ new /datum/computer_file/program/penal_mechs(comp),\
+ new /datum/computer_file/program/records/security(comp),\
+ new /datum/computer_file/program/guntracker(comp),\
+)
diff --git a/code/modules/modular_computers/file_system/programs/app_presets_antag.dm b/code/modules/modular_computers/file_system/programs/app_presets_antag.dm
new file mode 100644
index 00000000000..7e5c2feb5f7
--- /dev/null
+++ b/code/modules/modular_computers/file_system/programs/app_presets_antag.dm
@@ -0,0 +1,50 @@
+
+/datum/modular_computer_app_presets/command/teleporter/ninja
+ name = "ninja_teleporter"
+ display_name = "Offsite - Teleporter"
+ description = "Contains the most common command programs and has a special teleporter control program loaded."
+ available = FALSE
+
+/datum/modular_computer_app_presets/command/teleporter/ninja/return_install_programs(obj/item/modular_computer/comp)
+ var/list/_prg_list = list(
+ COMPUTER_APP_PRESET_SYSTEM,
+ COMPUTER_APP_PRESET_HORIZON_CIVILIAN,
+ new /datum/computer_file/program/comm(comp, FALSE),
+ new /datum/computer_file/program/records/employment(comp),
+ new /datum/computer_file/program/teleporter/ninja(comp)
+ )
+ return flatten_list(_prg_list)
+
+/datum/modular_computer_app_presets/merc
+ name = "merc"
+ display_name = "Mercenary"
+ description = "Preset for the Merc Console."
+ available = FALSE
+
+/datum/modular_computer_app_presets/merc/return_install_programs(obj/item/modular_computer/comp)
+ var/list/_prg_list = list(
+ COMPUTER_APP_PRESET_SYSTEM,
+ new /datum/computer_file/program/newsbrowser(comp),
+ new /datum/computer_file/program/manifest(comp),
+ new /datum/computer_file/program/camera_monitor/hacked(comp)
+ )
+ return flatten_list(_prg_list)
+
+/datum/modular_computer_app_presets/ert
+ name = "ert"
+ display_name = "EmergencyResposeTeam"
+ description = "Preset for the ERT Console."
+ available = FALSE
+
+/datum/modular_computer_app_presets/ert/return_install_programs(obj/item/modular_computer/comp)
+ var/list/_prg_list = list(
+ COMPUTER_APP_PRESET_SYSTEM,
+ new /datum/computer_file/program/camera_monitor/hacked(comp),
+ new /datum/computer_file/program/comm(comp, FALSE),
+ new /datum/computer_file/program/suit_sensors(comp),
+ new /datum/computer_file/program/alarm_monitor/all(comp),
+ new /datum/computer_file/program/lighting_control(comp),
+ new /datum/computer_file/program/aidiag(comp),
+ new /datum/computer_file/program/records(comp)
+ )
+ return flatten_list(_prg_list)
diff --git a/code/modules/modular_computers/file_system/programs/app_presets_crew.dm b/code/modules/modular_computers/file_system/programs/app_presets_crew.dm
new file mode 100644
index 00000000000..d797f06f838
--- /dev/null
+++ b/code/modules/modular_computers/file_system/programs/app_presets_crew.dm
@@ -0,0 +1,328 @@
+
+/datum/modular_computer_app_presets/engineering
+ name = "engineering"
+ display_name = "Engineering"
+ description = "Contains the most common engineering programs."
+ available = TRUE
+
+/datum/modular_computer_app_presets/engineering/return_install_programs(obj/item/modular_computer/comp)
+ var/list/_prg_list = list(
+ COMPUTER_APP_PRESET_SYSTEM,
+ COMPUTER_APP_PRESET_HORIZON_CIVILIAN,
+ COMPUTER_APP_PRESET_HORIZON_ENGINEERING,
+ )
+ return flatten_list(_prg_list)
+
+/datum/modular_computer_app_presets/engineering/atmos
+ name = "atmos"
+ display_name = "Engineering - Atmospherics"
+ description = "Contains the most common engineering programs and atmospheric monitoring software."
+ available = TRUE
+
+/datum/modular_computer_app_presets/engineering/atmos/return_install_programs(obj/item/modular_computer/comp)
+ var/list/_prg_list = list(
+ COMPUTER_APP_PRESET_SYSTEM,
+ COMPUTER_APP_PRESET_HORIZON_CIVILIAN,
+ COMPUTER_APP_PRESET_HORIZON_ENGINEERING,
+ new /datum/computer_file/program/scanner/gas(comp)
+ )
+ return flatten_list(_prg_list)
+
+/datum/modular_computer_app_presets/engineering/ce
+ name = "engineering_head"
+ display_name = "Engineering - CE"
+ description = "Contains the most common engineering programs and command software."
+ available = FALSE
+
+/datum/modular_computer_app_presets/engineering/ce/return_install_programs(obj/item/modular_computer/comp)
+ var/list/_prg_list = list(
+ COMPUTER_APP_PRESET_SYSTEM,
+ COMPUTER_APP_PRESET_HORIZON_CIVILIAN,
+ COMPUTER_APP_PRESET_HORIZON_ENGINEERING,
+ new /datum/computer_file/program/scanner/gas(comp),
+ new /datum/computer_file/program/comm(comp, FALSE),
+ new /datum/computer_file/program/records/employment(comp),
+ )
+ return flatten_list(_prg_list)
+
+/datum/modular_computer_app_presets/medical
+ name = "medical"
+ display_name = "Medical"
+ description = "Contains the most common medical programs."
+ available = TRUE
+
+/datum/modular_computer_app_presets/medical/return_install_programs(obj/item/modular_computer/comp)
+ var/list/_prg_list = list(
+ COMPUTER_APP_PRESET_SYSTEM,
+ COMPUTER_APP_PRESET_HORIZON_CIVILIAN,
+ COMPUTER_APP_PRESET_HORIZON_MEDICAL,
+ )
+ return flatten_list(_prg_list)
+
+/datum/modular_computer_app_presets/medical/cmo
+ name = "medical_head"
+ display_name = "Medical - CMO"
+ description = "Contains the most common medical programs and command software."
+ available = FALSE
+
+/datum/modular_computer_app_presets/medical/cmo/return_install_programs(obj/item/modular_computer/comp)
+ var/list/_prg_list = list(
+ COMPUTER_APP_PRESET_SYSTEM,
+ COMPUTER_APP_PRESET_HORIZON_CIVILIAN,
+ COMPUTER_APP_PRESET_HORIZON_MEDICAL,
+ new /datum/computer_file/program/comm(comp, FALSE),
+ new /datum/computer_file/program/records/employment(comp),
+ new /datum/computer_file/program/scanner/science(comp),
+ )
+ return flatten_list(_prg_list)
+
+/datum/modular_computer_app_presets/research
+ name = "research"
+ display_name = "Research"
+ description = "Contains the most common research programs."
+ available = TRUE
+
+/datum/modular_computer_app_presets/research/return_install_programs(obj/item/modular_computer/comp)
+ var/list/_prg_list = list(
+ COMPUTER_APP_PRESET_SYSTEM,
+ COMPUTER_APP_PRESET_HORIZON_CIVILIAN,
+ COMPUTER_APP_PRESET_HORIZON_RESEARCH,
+ )
+ return flatten_list(_prg_list)
+
+/datum/modular_computer_app_presets/research/rd
+ name = "research_head"
+ display_name = "Research - RD"
+ description = "Contains the most common research programs and command software."
+ available = FALSE
+
+/datum/modular_computer_app_presets/research/rd/return_install_programs(obj/item/modular_computer/comp)
+ var/list/_prg_list = list(
+ COMPUTER_APP_PRESET_SYSTEM,
+ COMPUTER_APP_PRESET_HORIZON_CIVILIAN,
+ COMPUTER_APP_PRESET_HORIZON_RESEARCH,
+ new /datum/computer_file/program/comm(comp, FALSE),
+ new /datum/computer_file/program/records/employment(comp),
+ )
+ return flatten_list(_prg_list)
+
+/datum/modular_computer_app_presets/command
+ name = "command"
+ display_name = "Command"
+ description = "Contains the most common command programs."
+ available = TRUE
+
+/datum/modular_computer_app_presets/command/return_install_programs(obj/item/modular_computer/comp)
+ var/list/_prg_list = list(
+ COMPUTER_APP_PRESET_SYSTEM,
+ COMPUTER_APP_PRESET_HORIZON_CIVILIAN,
+ new /datum/computer_file/program/card_mod(comp),
+ new /datum/computer_file/program/comm(comp, TRUE),
+ new /datum/computer_file/program/docks(comp),
+ new /datum/computer_file/program/away_manifest(comp),
+ new /datum/computer_file/program/records/employment(comp),
+ )
+ return flatten_list(_prg_list)
+
+/datum/modular_computer_app_presets/command/hop
+ name = "command_hop"
+ display_name = "Command - HoP"
+ description = "Contains the most common command programs."
+ available = FALSE
+
+/datum/modular_computer_app_presets/command/hop/return_install_programs(obj/item/modular_computer/comp)
+ var/list/_prg_list = list(
+ COMPUTER_APP_PRESET_SYSTEM,
+ COMPUTER_APP_PRESET_HORIZON_CIVILIAN,
+ new /datum/computer_file/program/civilian/cargocontrol(comp),
+ new /datum/computer_file/program/card_mod(comp),
+ new /datum/computer_file/program/comm(comp, FALSE),
+ new /datum/computer_file/program/docks(comp),
+ new /datum/computer_file/program/away_manifest(comp),
+ new /datum/computer_file/program/records/employment(comp),
+ new /datum/computer_file/program/records/security(comp),
+ )
+ return flatten_list(_prg_list)
+
+/datum/modular_computer_app_presets/command/captain
+ name = "captain"
+ display_name = "Captain"
+ description = "Contains the most important programs for the Captain."
+ available = FALSE
+
+/datum/modular_computer_app_presets/command/captain/return_install_programs(obj/item/modular_computer/comp)
+ var/list/_prg_list = list(
+ COMPUTER_APP_PRESET_SYSTEM,
+ COMPUTER_APP_PRESET_HORIZON_CIVILIAN,
+ new /datum/computer_file/program/card_mod(comp),
+ new /datum/computer_file/program/comm(comp, TRUE),
+ new /datum/computer_file/program/docks(comp),
+ new /datum/computer_file/program/away_manifest(comp),
+ new /datum/computer_file/program/camera_monitor(comp),
+ new /datum/computer_file/program/digitalwarrant(comp),
+ new /datum/computer_file/program/penal_mechs(comp),
+ new /datum/computer_file/program/civilian/cargocontrol(comp),
+ new /datum/computer_file/program/alarm_monitor/all(comp),
+ new /datum/computer_file/program/records/employment(comp),
+ new /datum/computer_file/program/records/medical(comp),
+ new /datum/computer_file/program/records/security(comp),
+ )
+ return flatten_list(_prg_list)
+
+/datum/modular_computer_app_presets/security
+ name = "security"
+ display_name = "Security"
+ description = "Contains the most common security programs."
+ available = TRUE
+
+/datum/modular_computer_app_presets/security/return_install_programs(obj/item/modular_computer/comp)
+ var/list/_prg_list = list(
+ COMPUTER_APP_PRESET_SYSTEM,
+ COMPUTER_APP_PRESET_HORIZON_CIVILIAN,
+ COMPUTER_APP_PRESET_HORIZON_SECURITY,
+ )
+ return flatten_list(_prg_list)
+
+/datum/modular_computer_app_presets/security/armory
+ name = "security_arm"
+ display_name = "Security - Armory"
+ description = "Contains the most common security and armory programs."
+ available = FALSE
+
+/datum/modular_computer_app_presets/security/armory/return_install_programs(obj/item/modular_computer/comp)
+ var/list/_prg_list = list(
+ COMPUTER_APP_PRESET_SYSTEM,
+ COMPUTER_APP_PRESET_HORIZON_CIVILIAN,
+ COMPUTER_APP_PRESET_HORIZON_SECURITY,
+ new /datum/computer_file/program/implant_tracker(comp),
+ new /datum/computer_file/program/comm(comp),
+ )
+ return flatten_list(_prg_list)
+
+/datum/modular_computer_app_presets/security/investigations
+ name = "security_inv"
+ display_name = "Security - Investigations"
+ description = "Contains the most common security and forensics programs."
+ available = TRUE
+
+/datum/modular_computer_app_presets/security/investigations/return_install_programs(obj/item/modular_computer/comp)
+ var/list/_prg_list = list(
+ COMPUTER_APP_PRESET_SYSTEM,
+ COMPUTER_APP_PRESET_HORIZON_CIVILIAN,
+ new /datum/computer_file/program/alarm_monitor/security(comp),
+ new /datum/computer_file/program/camera_monitor(comp),
+ new /datum/computer_file/program/digitalwarrant(comp),
+ new /datum/computer_file/program/records/security(comp),
+ new /datum/computer_file/program/records/medical(comp),
+ )
+ return flatten_list(_prg_list)
+
+/datum/modular_computer_app_presets/security/hos
+ name = "security_head"
+ display_name = "Security - HoS"
+ description = "Contains the most common security programs and command software."
+ available = FALSE
+
+/datum/modular_computer_app_presets/security/hos/return_install_programs(obj/item/modular_computer/comp)
+ var/list/_prg_list = list(
+ COMPUTER_APP_PRESET_SYSTEM,
+ COMPUTER_APP_PRESET_HORIZON_CIVILIAN,
+ COMPUTER_APP_PRESET_HORIZON_SECURITY,
+ new /datum/computer_file/program/comm(comp, FALSE),
+ new /datum/computer_file/program/records/employment(comp),
+ )
+ return flatten_list(_prg_list)
+
+/datum/modular_computer_app_presets/civilian
+ name = "service"
+ display_name = "Service"
+ description = "Contains the most common service programs."
+ available = TRUE
+
+/datum/modular_computer_app_presets/civilian/return_install_programs(obj/item/modular_computer/comp)
+ var/list/_prg_list = list(
+ COMPUTER_APP_PRESET_SYSTEM,
+ COMPUTER_APP_PRESET_HORIZON_CIVILIAN,
+ new /datum/computer_file/program/game/arcade(comp),
+ )
+ return flatten_list(_prg_list)
+
+/datum/modular_computer_app_presets/civilian/janitor
+ name = "janitor"
+ display_name = "Janitor"
+ description = "Contains programs for janitorial service."
+ available = TRUE
+
+/datum/modular_computer_app_presets/civilian/janitor/return_install_programs(obj/item/modular_computer/comp)
+ var/list/_prg_list = list(
+ COMPUTER_APP_PRESET_SYSTEM,
+ COMPUTER_APP_PRESET_HORIZON_CIVILIAN,
+ new /datum/computer_file/program/civilian/janitor(comp),
+ new /datum/computer_file/program/game/arcade(comp),
+ )
+ return flatten_list(_prg_list)
+
+/datum/modular_computer_app_presets/supply
+ name = "supply"
+ display_name = "Supply"
+ description = "Contains the most common cargo programs."
+ available = TRUE
+
+/datum/modular_computer_app_presets/supply/return_install_programs(obj/item/modular_computer/comp)
+ var/list/_prg_list = list(
+ COMPUTER_APP_PRESET_SYSTEM,
+ COMPUTER_APP_PRESET_HORIZON_CIVILIAN,
+ new /datum/computer_file/program/civilian/cargocontrol(comp),
+ new /datum/computer_file/program/civilian/cargodelivery(comp),
+ new /datum/computer_file/program/away_manifest(comp),
+ )
+ return flatten_list(_prg_list)
+
+/datum/modular_computer_app_presets/supply/om
+ name = "operations manager"
+ display_name = "Operations Manager"
+ description = "Contains the most common cargo programs as well as the OM's ones."
+ available = FALSE
+
+/datum/modular_computer_app_presets/supply/om/return_install_programs(obj/item/modular_computer/comp)
+ var/list/_prg_list = list(
+ COMPUTER_APP_PRESET_SYSTEM,
+ COMPUTER_APP_PRESET_HORIZON_CIVILIAN,
+ new /datum/computer_file/program/civilian/cargocontrol(comp),
+ new /datum/computer_file/program/civilian/cargodelivery(comp),
+ new /datum/computer_file/program/away_manifest(comp),
+ new /datum/computer_file/program/comm(comp, FALSE),
+ new /datum/computer_file/program/docks(comp),
+ )
+ return flatten_list(_prg_list)
+
+/datum/modular_computer_app_presets/supply/machinist
+ name = "operations_machinist"
+ display_name = "Operations - Machinist"
+ description = "Contains the most common supply programs and medical record software."
+ available = TRUE
+
+/datum/modular_computer_app_presets/supply/machinist/return_install_programs(obj/item/modular_computer/comp)
+ var/list/_prg_list = list(
+ COMPUTER_APP_PRESET_SYSTEM,
+ COMPUTER_APP_PRESET_HORIZON_CIVILIAN,
+ new /datum/computer_file/program/aidiag(comp),
+ new /datum/computer_file/program/records/medical(comp),
+ new /datum/computer_file/program/scanner/science(comp),
+ new /datum/computer_file/program/scanner/gas(comp),
+ )
+ return flatten_list(_prg_list)
+
+/datum/modular_computer_app_presets/representative
+ name = "representative"
+ display_name = "Representative"
+ description = "Contains software intended for representatives."
+ available = FALSE
+
+/datum/modular_computer_app_presets/representative/return_install_programs(obj/item/modular_computer/comp)
+ var/list/_prg_list = list(
+ COMPUTER_APP_PRESET_SYSTEM,
+ COMPUTER_APP_PRESET_HORIZON_CIVILIAN,
+ new /datum/computer_file/program/records/employment(comp),
+ )
+ return flatten_list(_prg_list)
diff --git a/code/modules/modular_computers/file_system/programs/app_presets_equipment.dm b/code/modules/modular_computers/file_system/programs/app_presets_equipment.dm
new file mode 100644
index 00000000000..18219cd32a1
--- /dev/null
+++ b/code/modules/modular_computers/file_system/programs/app_presets_equipment.dm
@@ -0,0 +1,100 @@
+
+/datum/modular_computer_app_presets/wall_generic
+ name = "wallgeneric"
+ display_name = "Wall - Generic"
+ description = "A generic preset for the wall console."
+ available = FALSE
+
+/datum/modular_computer_app_presets/wall_generic/return_install_programs(obj/item/modular_computer/comp)
+ var/list/_prg_list = list(
+ COMPUTER_APP_PRESET_SYSTEM,
+ new /datum/computer_file/program/manifest(comp),
+ new /datum/computer_file/program/chat_client(comp),
+ new /datum/computer_file/program/civilian/cargoorder(comp),
+ new /datum/computer_file/program/camera_monitor(comp),
+ new /datum/computer_file/program/alarm_monitor/engineering(comp)
+ )
+ return flatten_list(_prg_list)
+
+/datum/modular_computer_app_presets/ai
+ name = "ai"
+ display_name = "AI"
+ description = "A preset for the AI consoles."
+ available = FALSE
+
+/datum/modular_computer_app_presets/ai/return_install_programs(obj/item/modular_computer/comp)
+ return list(
+ COMPUTER_APP_PRESET_SYSTEM,
+ )
+
+/datum/modular_computer_app_presets/command/teleporter
+ name = "command_teleporter"
+ display_name = "Command - Teleporter"
+ description = "Contains the most common command programs and has a special teleporter control program loaded."
+ available = FALSE
+
+/datum/modular_computer_app_presets/command/teleporter/return_install_programs(obj/item/modular_computer/comp)
+ var/list/_prg_list = list(
+ COMPUTER_APP_PRESET_SYSTEM,
+ COMPUTER_APP_PRESET_HORIZON_CIVILIAN,
+ new /datum/computer_file/program/comm(comp, FALSE),
+ new /datum/computer_file/program/records/employment(comp),
+ new /datum/computer_file/program/teleporter(comp)
+ )
+ return flatten_list(_prg_list)
+
+/datum/modular_computer_app_presets/command/account
+ name = "command_accounting"
+ display_name = "Command - Accounting"
+ description = "Contains all the programs you would need to become a god-tier accountant."
+ available = FALSE
+
+/datum/modular_computer_app_presets/command/account/return_install_programs(obj/item/modular_computer/comp)
+ var/list/_prg_list = list(
+ COMPUTER_APP_PRESET_SYSTEM,
+ new /datum/computer_file/program/newsbrowser(comp),
+ new /datum/computer_file/program/manifest(comp),
+ new /datum/computer_file/program/civilian/cargoorder(comp),
+ new /datum/computer_file/program/civilian/cargocontrol(comp),
+ new /datum/computer_file/program/records/employment(comp),
+ new /datum/computer_file/program/account_db(comp)
+ )
+ return flatten_list(_prg_list)
+
+/datum/modular_computer_app_presets/command/account/centcomm/return_install_programs(obj/item/modular_computer/comp)
+ var/list/_prg_list = list(
+ COMPUTER_APP_PRESET_SYSTEM,
+ new /datum/computer_file/program/newsbrowser(comp),
+ new /datum/computer_file/program/manifest(comp),
+ new /datum/computer_file/program/civilian/cargoorder(comp),
+ new /datum/computer_file/program/civilian/cargocontrol(comp),
+ new /datum/computer_file/program/records/employment(comp),
+ new /datum/computer_file/program/account_db(comp, TRUE)
+ )
+ return flatten_list(_prg_list)
+
+/datum/modular_computer_app_presets/trashcompactor
+ name = "trashcompactor"
+ display_name = "Trash Compactor"
+ description = "A preset for the Trash Compactor Wall Console."
+ available = FALSE
+
+/datum/modular_computer_app_presets/trashcompactor/return_install_programs(obj/item/modular_computer/comp)
+ var/list/_prg_list = list(
+ new /datum/computer_file/program/crushercontrol(comp)
+ )
+ return flatten_list(_prg_list)
+
+/datum/modular_computer_app_presets/cargo_delivery
+ name = "cargo_delivery"
+ display_name = "Cargo Delivery"
+ description = "Contains the Delivery App."
+ available = FALSE
+
+/datum/modular_computer_app_presets/cargo_delivery/return_install_programs(obj/item/modular_computer/comp)
+ var/list/_prg_list = list(
+ COMPUTER_APP_PRESET_SYSTEM,
+ COMPUTER_APP_PRESET_HORIZON_CIVILIAN,
+ new /datum/computer_file/program/civilian/cargodelivery(comp)
+ )
+ return flatten_list(_prg_list)
diff --git a/code/modules/modular_computers/file_system/programs/app_presets_third_party.dm b/code/modules/modular_computers/file_system/programs/app_presets_third_party.dm
new file mode 100644
index 00000000000..305183e3f07
--- /dev/null
+++ b/code/modules/modular_computers/file_system/programs/app_presets_third_party.dm
@@ -0,0 +1,47 @@
+
+/datum/modular_computer_app_presets/merchant
+ name = "merchant"
+ display_name = "Merchant"
+ description = "A preset for the merchant console."
+ available = FALSE
+
+/datum/modular_computer_app_presets/merchant/return_install_programs(obj/item/modular_computer/comp)
+ var/list/_prg_list = list(
+ new /datum/computer_file/program/filemanager(comp),
+ new /datum/computer_file/program/manifest(comp),
+ new /datum/computer_file/program/newsbrowser(comp),
+ new /datum/computer_file/program/chat_client(comp),
+ new /datum/computer_file/program/merchant(comp)
+ )
+ return flatten_list(_prg_list)
+
+/datum/modular_computer_app_presets/merchant/nka/return_install_programs(obj/item/modular_computer/comp)
+ var/list/_prg_list = list(
+ new /datum/computer_file/program/filemanager(comp),
+ new /datum/computer_file/program/manifest(comp),
+ new /datum/computer_file/program/newsbrowser(comp),
+ new /datum/computer_file/program/chat_client(comp),
+ new /datum/computer_file/program/merchant/nka(comp)
+ )
+ return flatten_list(_prg_list)
+
+/datum/modular_computer_app_presets/merchant/guild/return_install_programs(obj/item/modular_computer/comp)
+ var/list/_prg_list = list(
+ new /datum/computer_file/program/filemanager(comp),
+ new /datum/computer_file/program/manifest(comp),
+ new /datum/computer_file/program/newsbrowser(comp),
+ new /datum/computer_file/program/chat_client(comp),
+ new /datum/computer_file/program/merchant/guild(comp)
+ )
+ return flatten_list(_prg_list)
+
+
+/datum/modular_computer_app_presets/merchant/golden_deep/return_install_programs(obj/item/modular_computer/comp)
+ var/list/_prg_list = list(
+ new /datum/computer_file/program/filemanager(comp),
+ new /datum/computer_file/program/manifest(comp),
+ new /datum/computer_file/program/newsbrowser(comp),
+ new /datum/computer_file/program/chat_client(comp),
+ new /datum/computer_file/program/merchant/golden_deep(comp)
+ )
+ return flatten_list(_prg_list)
diff --git a/code/modules/modular_computers/file_system/programs/generic/map.dm b/code/modules/modular_computers/file_system/programs/generic/map.dm
new file mode 100644
index 00000000000..1f301858fec
--- /dev/null
+++ b/code/modules/modular_computers/file_system/programs/generic/map.dm
@@ -0,0 +1,55 @@
+/datum/computer_file/program/map
+ filename = "map"
+ filedesc = "Map Program"
+ extended_desc = "This program may be used to see the decks or levels of the vessel, station, or ship."
+ program_icon_state = "map"
+ program_key_icon_state = "lightblue_key"
+ color = LIGHT_COLOR_BLUE
+ size = 4
+ requires_ntnet = TRUE
+ available_on_ntnet = TRUE
+ tgui_id = "Map"
+
+ /// If zero/null, show the z-level of the user, otherwise show `z_override` z-level.
+ var/z_override = 0
+
+/datum/computer_file/program/map/ui_data(mob/user)
+ var/list/data = list()
+
+ // Gather data for computer header
+ var/headerdata = get_header_data(data["_PC"])
+ if(headerdata)
+ data["_PC"] = headerdata
+ . = data
+
+ var/z_level = z_override ? z_override : user.z
+ if(z_level in current_map.station_levels)
+ data["map_image"] = SSholomap.minimaps_area_colored_base64[z_level]
+
+ data["user_x"] = user.x
+ data["user_y"] = user.y
+ data["user_z"] = user.z
+ data["station_levels"] = current_map.station_levels
+ data["z_override"] = z_override
+
+ data["dept_colors_map"] = list(
+ list("d"="Command", "c"=HOLOMAP_AREACOLOR_COMMAND),
+ list("d"="Security", "c"=HOLOMAP_AREACOLOR_SECURITY),
+ list("d"="Medical", "c"=HOLOMAP_AREACOLOR_MEDICAL),
+ list("d"="Science", "c"=HOLOMAP_AREACOLOR_SCIENCE),
+ list("d"="Engineering", "c"=HOLOMAP_AREACOLOR_ENGINEERING),
+ list("d"="Operations", "c"=HOLOMAP_AREACOLOR_OPERATIONS),
+ list("d"="Civilian", "c"=HOLOMAP_AREACOLOR_CIVILIAN),
+ list("d"="Hallways", "c"=HOLOMAP_AREACOLOR_HALLWAYS),
+ list("d"="Dock", "c"=HOLOMAP_AREACOLOR_DOCK),
+ list("d"="Hangar", "c"=HOLOMAP_AREACOLOR_HANGAR),
+ )
+
+ return data
+
+/datum/computer_file/program/map/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state)
+ . = ..()
+ if(.)
+ return
+ if(action == "z_override")
+ z_override = text2num(params["z_override"])
diff --git a/html/changelogs/DreamySkrell-minimap-program.yml b/html/changelogs/DreamySkrell-minimap-program.yml
new file mode 100644
index 00000000000..bdcd6daefea
--- /dev/null
+++ b/html/changelogs/DreamySkrell-minimap-program.yml
@@ -0,0 +1,42 @@
+################################
+# Example Changelog File
+#
+# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
+#
+# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
+# When it is, any changes listed below will disappear.
+#
+# Valid Prefixes:
+# bugfix
+# wip (For works in progress)
+# tweak
+# soundadd
+# sounddel
+# rscadd (general adding of nice things)
+# rscdel (general deleting of nice things)
+# imageadd
+# imagedel
+# maptweak
+# spellcheck (typo fixes)
+# experiment
+# balance
+# admin
+# backend
+# security
+# refactor
+#################################
+
+# Your name.
+author: DreamySkrell
+
+# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
+delete-after: True
+
+# Any changes you've made. See valid prefix list above.
+# INDENT WITH TWO SPACES. NOT TABS. SPACES.
+# SCREW THIS UP AND IT WON'T WORK.
+# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
+# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
+changes:
+ - rscadd: "Adds PDA map program."
+ - rscdel: "Removes holomaps."
diff --git a/icons/255x255.dmi b/icons/255x255.dmi
new file mode 100644
index 00000000000..2e0e7e7a3cf
Binary files /dev/null and b/icons/255x255.dmi differ
diff --git a/maps/aurora/aurora-1_centcomm.dmm b/maps/aurora/aurora-1_centcomm.dmm
index 53b8c870658..5655a8a5633 100644
--- a/maps/aurora/aurora-1_centcomm.dmm
+++ b/maps/aurora/aurora-1_centcomm.dmm
@@ -1668,14 +1668,6 @@
/obj/effect/step_trigger/thrower/shuttle/northwest,
/turf/space/transit/bluespace/west,
/area/template_noop)
-"aeo" = (
-/obj/machinery/door/airlock/centcom{
- name = "Holding Cells";
- req_access = list(150);
- dir = 1
- },
-/turf/unsimulated/floor,
-/area/antag/mercenary)
"aep" = (
/obj/machinery/door/airlock/external{
frequency = 1332;
@@ -1772,19 +1764,6 @@
icon_state = "lino_diamond"
},
/area/centcom/bar)
-"aey" = (
-/obj/machinery/door/airlock/external{
- frequency = 1380;
- icon_state = "door_locked";
- id_tag = "centcom_dock_airlock";
- locked = 1;
- name = "Arrivals Airlock";
- req_access = list(13);
- dir = 4
- },
-/obj/effect/floor_decal/industrial/hatch/yellow,
-/turf/unsimulated/floor,
-/area/centcom/evac)
"aez" = (
/obj/effect/floor_decal/corner/white{
dir = 10
@@ -2018,31 +1997,6 @@
/obj/effect/floor_decal/industrial/hatch/yellow,
/turf/unsimulated/floor,
/area/centcom/evac)
-"afn" = (
-/obj/machinery/door/airlock/external{
- frequency = 1380;
- icon_state = "door_locked";
- id_tag = "centcom_dock_airlock";
- locked = 1;
- name = "Arrivals Airlock";
- req_access = list(13);
- dir = 4
- },
-/obj/effect/floor_decal/industrial/hatch/yellow,
-/turf/unsimulated/floor,
-/area/centcom/evac)
-"afo" = (
-/obj/machinery/door/airlock/external{
- frequency = 1380;
- icon_state = "door_locked";
- id_tag = "centcom_arrivals_airlock";
- locked = 1;
- name = "Arrivals Airlock";
- req_access = list(13);
- dir = 1
- },
-/turf/unsimulated/floor,
-/area/centcom/spawning)
"afp" = (
/obj/machinery/door/airlock/external{
frequency = 1380;
@@ -4777,18 +4731,6 @@
},
/turf/simulated/floor/holofloor/wood,
/area/holodeck/source_battlemonsters)
-"aEW" = (
-/obj/machinery/door/airlock/external{
- frequency = 1380;
- icon_state = "door_locked";
- id_tag = "escape_shuttle_hatch";
- locked = 1;
- name = "Shuttle Hatch";
- req_access = list(13);
- dir = 4
- },
-/turf/simulated/floor/shuttle/dark_blue,
-/area/shuttle/escape)
"aFa" = (
/obj/machinery/light{
icon_state = "tube_empty"
@@ -8746,11 +8688,6 @@
"bLK" = (
/turf/unsimulated/floor,
/area/centcom/holding)
-"bLN" = (
-/turf/unsimulated/floor{
- icon_state = "tiled_preview"
- },
-/area/antag/raider)
"bLO" = (
/turf/simulated/wall/shuttle/dark/corner/underlay{
dir = 9
@@ -9336,12 +9273,6 @@
/obj/item/pickaxe/jackhammer,
/turf/simulated/floor/plating,
/area/shuttle/skipjack)
-"chj" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/unsimulated/floor{
- icon_state = "tiled_preview"
- },
-/area/centcom/legion/hangar5)
"chs" = (
/obj/structure/girder,
/obj/effect/decal/cleanable/dirt,
@@ -9784,12 +9715,6 @@
},
/turf/simulated/floor/holofloor/tiled/dark,
/area/tdome/tdome1)
-"cxn" = (
-/obj/structure/closet/crate/secure/legion,
-/turf/unsimulated/floor{
- icon_state = "tiled_preview"
- },
-/area/centcom/legion/hangar5)
"cyX" = (
/obj/effect/floor_decal/corner/red{
dir = 5
@@ -14604,13 +14529,6 @@
},
/turf/simulated/floor/wood,
/area/merchant_station)
-"fzW" = (
-/obj/effect/floor_decal/industrial/hatch/yellow,
-/obj/effect/large_stock_marker,
-/turf/unsimulated/floor{
- icon_state = "tiled_preview"
- },
-/area/antag/raider)
"fAi" = (
/obj/structure/bed/stool/chair/padded/brown{
dir = 8
@@ -14830,12 +14748,6 @@
},
/turf/unsimulated/floor/plating,
/area/shuttle/distress)
-"fHj" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/unsimulated/floor{
- icon_state = "tiled_preview"
- },
-/area/antag/raider)
"fHv" = (
/obj/effect/floor_decal/industrial/warning/corner{
dir = 8
@@ -20428,13 +20340,6 @@
/obj/machinery/recharge_station,
/turf/unsimulated/floor,
/area/antag/loner)
-"iYt" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/unsimulated/floor{
- dir = 4;
- icon_state = "tiled_preview"
- },
-/area/antag/raider)
"iYu" = (
/obj/machinery/merchant_pad,
/turf/simulated/floor/wood,
@@ -20745,11 +20650,6 @@
},
/turf/unsimulated/floor/plating,
/area/shuttle/administration)
-"jnf" = (
-/turf/unsimulated/floor{
- icon_state = "tiled_preview"
- },
-/area/centcom/legion/hangar5)
"jnA" = (
/turf/simulated/wall/shuttle/unique/mercenary/small,
/area/shuttle/syndicate_elite)
@@ -23216,11 +23116,6 @@
icon_state = "white"
},
/area/tdome/tdomeobserve)
-"kWI" = (
-/turf/unsimulated/floor{
- icon_state = "tiled_preview"
- },
-/area/centcom/legion)
"kWN" = (
/obj/machinery/door/blast/odin/open{
_wifi_id = "merc_droppod_3";
@@ -25584,12 +25479,6 @@
icon_state = "tiled_preview"
},
/area/centcom/legion/hangar5)
-"msJ" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/unsimulated/floor{
- icon_state = "tiled_preview"
- },
-/area/centcom/legion/hangar5)
"mtf" = (
/obj/structure/sign/nosmoking_2{
pixel_x = 1;
@@ -26857,11 +26746,6 @@
density = 1
},
/area/antag/ninja)
-"nkv" = (
-/turf/unsimulated/floor{
- icon_state = "tiled_preview"
- },
-/area/centcom/legion/hangar5)
"nkw" = (
/obj/machinery/vending/engivend,
/obj/effect/floor_decal/industrial/outline/yellow,
@@ -28496,11 +28380,6 @@
/obj/effect/spawner/newbomb/timer/syndicate,
/turf/simulated/floor/reinforced,
/area/shuttle/mercenary)
-"ogE" = (
-/turf/unsimulated/floor{
- icon_state = "tiled_preview"
- },
-/area/centcom/legion/hangar5)
"ogF" = (
/obj/effect/floor_decal/corner/paleblue{
dir = 5
@@ -30027,12 +29906,6 @@
icon_state = "dark_preview"
},
/area/centcom/specops)
-"pqX" = (
-/obj/effect/floor_decal/corner/red{
- dir = 9
- },
-/turf/simulated/floor/tiled/dark,
-/area/shuttle/administration)
"prI" = (
/obj/structure/closet/gimmick{
name = "emergency response team wardrobe"
@@ -31481,12 +31354,6 @@
},
/turf/unsimulated/floor/plating,
/area/shuttle/arrival)
-"qnN" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/unsimulated/floor{
- icon_state = "tiled_preview"
- },
-/area/antag/raider)
"qnP" = (
/turf/simulated/floor/beach/sand{
icon_state = "desert4"
@@ -32626,11 +32493,6 @@
icon_state = "7,0"
},
/area/centcom/specops)
-"rfM" = (
-/turf/unsimulated/floor{
- icon_state = "tiled_preview"
- },
-/area/centcom/legion)
"rgr" = (
/obj/structure/shuttle_part/mercenary{
icon_state = "13,19"
@@ -33044,11 +32906,6 @@
},
/turf/unsimulated/floor,
/area/centcom/holding)
-"rvL" = (
-/turf/unsimulated/floor{
- icon_state = "tiled_preview"
- },
-/area/antag/raider)
"rvN" = (
/obj/effect/map_effect/window_spawner/reinforced/crescent,
/obj/structure/sign/directions/tram{
@@ -33499,11 +33356,6 @@
icon_state = "wood_preview"
},
/area/antag/mercenary)
-"rNa" = (
-/turf/unsimulated/floor{
- icon_state = "tiled_preview"
- },
-/area/antag/raider)
"rNL" = (
/obj/effect/floor_decal/industrial/warning{
dir = 4
@@ -33815,13 +33667,6 @@
},
/turf/space/dynamic,
/area/shuttle/mercenary)
-"rXI" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/table/steel,
-/turf/unsimulated/floor{
- icon_state = "tiled_preview"
- },
-/area/antag/raider)
"rXN" = (
/turf/unsimulated/floor{
icon_state = "wood_preview"
@@ -33859,11 +33704,6 @@
icon_state = "wood_preview"
},
/area/antag/mercenary)
-"sai" = (
-/turf/unsimulated/floor{
- icon_state = "tiled_preview"
- },
-/area/antag/raider)
"saE" = (
/turf/unsimulated/wall/steel,
/area/antag/burglar)
@@ -35699,11 +35539,6 @@
icon_state = "15,2"
},
/area/shuttle/legion)
-"trx" = (
-/turf/unsimulated/floor{
- icon_state = "tiled_preview"
- },
-/area/antag/raider)
"trT" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/flora/pottedplant{
@@ -38569,11 +38404,6 @@
},
/turf/unsimulated/floor,
/area/centcom/spawning)
-"vmF" = (
-/turf/unsimulated/floor{
- icon_state = "tiled_preview"
- },
-/area/centcom/bar)
"vmR" = (
/obj/machinery/computer/shuttle_control/multi/antag/syndicate,
/turf/simulated/floor/shuttle/black,
@@ -39776,11 +39606,6 @@
},
/turf/unsimulated/floor/plating,
/area/shuttle/arrival)
-"wcS" = (
-/turf/unsimulated/floor{
- icon_state = "tiled_preview"
- },
-/area/antag/mercenary)
"wcT" = (
/obj/machinery/light{
dir = 4;
@@ -40697,12 +40522,6 @@
/obj/effect/floor_decal/corner/red/diagonal,
/turf/simulated/floor/tiled/dark,
/area/shuttle/mercenary)
-"wBB" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/unsimulated/floor{
- icon_state = "tiled_preview"
- },
-/area/centcom/legion/hangar5)
"wBG" = (
/obj/effect/floor_decal/corner/grey{
dir = 8
@@ -40822,11 +40641,6 @@
},
/turf/unsimulated/floor/plating,
/area/centcom/specops)
-"wDr" = (
-/turf/unsimulated/floor{
- icon_state = "tiled_preview"
- },
-/area/centcom/legion/hangar5)
"wDV" = (
/turf/simulated/wall/shuttle/unique/mercenary{
icon_state = "1,11"
@@ -55671,7 +55485,7 @@ uaE
uaE
uaE
ybY
-wcS
+quz
dfV
mZj
dfV
@@ -55928,7 +55742,7 @@ uNd
uNd
xyf
ybY
-wcS
+quz
dfV
mZj
dfV
@@ -56182,7 +55996,7 @@ mCu
aNE
uaE
nDL
-wcS
+quz
aNE
ybY
fNO
@@ -56439,7 +56253,7 @@ xVl
nVn
nVn
xVl
-wcS
+quz
aNE
uaE
uaE
@@ -56696,7 +56510,7 @@ gBg
aNE
ybY
xVl
-wcS
+quz
aNE
ybY
oZE
@@ -57724,7 +57538,7 @@ gBg
aNE
eAt
xVl
-wcS
+quz
aNE
ybY
fNO
@@ -57981,7 +57795,7 @@ nOA
aNE
ybY
xVl
-wcS
+quz
aNE
uaE
uaE
@@ -58238,7 +58052,7 @@ uLe
xvz
ybY
xVl
-wcS
+quz
aNE
ybY
oZE
@@ -58498,7 +58312,7 @@ aem
uLe
xvz
ybY
-wcS
+quz
dfV
mZj
dfV
@@ -58751,11 +58565,11 @@ uaE
uaE
uaE
uaE
-aeo
+aem
uNd
uNd
dKL
-wcS
+quz
dfV
mZj
dfV
@@ -59779,8 +59593,8 @@ uaE
neR
aiQ
enB
-fHj
-fHj
+igl
+igl
eaK
slE
aiY
@@ -60036,10 +59850,10 @@ uaE
neR
aiQ
toF
-qnN
-qnN
+igl
+igl
gMF
-fHj
+igl
aiY
aaM
aaM
@@ -60293,8 +60107,8 @@ uaE
neR
aiQ
ipA
-rXI
-qnN
+pQP
+igl
gSK
trT
aiY
@@ -61058,10 +60872,10 @@ jvO
saE
aiQ
uuE
-sai
+ajW
bsZ
ajd
-rNa
+ajW
qrB
wFx
tLX
@@ -61313,14 +61127,14 @@ xSi
xSi
xSi
wqa
-fHj
+igl
lLa
bsZ
bsZ
ajd
bHJ
uUx
-rvL
+ajW
oDl
nvW
tYj
@@ -61471,13 +61285,13 @@ jGi
jGi
jGi
dqO
-pqX
+fWE
iSs
jrN
-pqX
-pqX
-pqX
-pqX
+fWE
+fWE
+fWE
+fWE
odb
rFI
iSG
@@ -61571,13 +61385,13 @@ xSi
oxc
wqa
bqi
-rvL
+ajW
hwW
dbq
lNt
bHJ
mqh
-qnN
+igl
sph
rvl
tYj
@@ -63113,7 +62927,7 @@ ahV
ahV
aiQ
ibf
-fHj
+igl
aiQ
iFM
aiQ
@@ -63369,8 +63183,8 @@ ahV
ahV
ahV
bSa
-fHj
-fHj
+igl
+igl
aiQ
bdu
dDH
@@ -63626,8 +63440,8 @@ ahV
ahV
ahV
sxB
-fHj
-fHj
+igl
+igl
aiY
tsk
stK
@@ -63883,8 +63697,8 @@ ahV
ahV
ahV
sxB
-fHj
-fHj
+igl
+igl
aiY
iEB
stK
@@ -64140,8 +63954,8 @@ ahV
ahV
ahV
aiQ
-fHj
-fHj
+igl
+igl
aiY
wkO
cRd
@@ -64397,8 +64211,8 @@ ahV
ahV
ahV
sxB
-fHj
-fHj
+igl
+igl
aiY
dHW
stK
@@ -64654,8 +64468,8 @@ ahV
ahV
ahV
sxB
-fHj
-fHj
+igl
+igl
aiY
cOf
stK
@@ -64911,8 +64725,8 @@ ahV
ahV
ahV
bSa
-fHj
-fHj
+igl
+igl
aiQ
dmM
stK
@@ -65176,7 +64990,7 @@ aiQ
aiQ
aiQ
chs
-trx
+ajW
aiQ
aiQ
ajd
@@ -65425,16 +65239,16 @@ ahV
ahV
aiQ
hCk
-qnN
+igl
qje
aiQ
-fzW
wsX
-fzW
+wsX
+wsX
fIp
kns
spt
-bLN
+ajW
weG
jpD
jpD
@@ -65682,16 +65496,16 @@ ahV
ahV
aiQ
wbB
-qnN
-qnN
+igl
+igl
pEP
-rvL
-fHj
-qnN
ajW
-qnN
+igl
+igl
+ajW
+igl
ajW
-qnN
+igl
quG
aix
aix
@@ -65939,11 +65753,11 @@ ahV
ahV
aiQ
hCk
-qnN
-qnN
+igl
+igl
djX
-rvL
-fHj
+ajW
+igl
ajW
ajW
ajW
@@ -66196,10 +66010,10 @@ ahV
ahV
aiQ
lxL
-iYt
+slE
sdF
aiQ
-fHj
+igl
ajW
lJD
ajW
@@ -66460,7 +66274,7 @@ cCB
llG
ajW
ajW
-qnN
+igl
ajW
tPw
aiY
@@ -66711,14 +66525,14 @@ ahV
aiQ
huN
exX
-qnN
+igl
aiY
-fHj
+igl
scd
ajW
ajW
scd
-rvL
+ajW
aYm
aiY
aaM
@@ -66967,15 +66781,15 @@ ahV
ahV
bPL
ise
-qnN
-qnN
+igl
+igl
tvo
ajW
aac
ajW
edH
scd
-fHj
+igl
vdU
aiY
aaM
@@ -67232,7 +67046,7 @@ scd
ajW
nIj
scd
-fHj
+igl
xvu
aiY
aaM
@@ -67486,7 +67300,7 @@ ahV
aiQ
rsQ
scd
-rvL
+ajW
kOh
scd
ajW
@@ -75117,9 +74931,9 @@ wzE
wzE
mbM
mbM
-aey
afm
-afn
+afm
+afm
mbM
mbM
wzE
@@ -75367,16 +75181,16 @@ wne
qNZ
cgd
mBc
-aEW
+aec
cYT
rGt
rGt
gmv
nHm
sXN
-aEW
aec
-aEW
+aec
+aec
pdo
jdB
xrK
@@ -76425,7 +76239,7 @@ urj
gdU
aBl
aMW
-afo
+afp
weB
aOa
uPQ
@@ -78185,7 +77999,7 @@ kRu
avR
gqa
bGR
-vmF
+xTG
ntE
eBz
wne
@@ -80559,7 +80373,7 @@ aaM
wmL
jcG
kaz
-kWI
+orV
cLT
mLp
qDS
@@ -80831,7 +80645,7 @@ qDS
kVX
bWj
owo
-rfM
+orV
rQb
sBC
bWj
@@ -81330,7 +81144,7 @@ aaM
wmL
jcG
kaz
-kWI
+orV
cMK
mLp
dML
@@ -82101,7 +81915,7 @@ aaM
wmL
jcG
kaz
-kWI
+orV
mny
dyS
ozQ
@@ -86725,8 +86539,8 @@ aaM
wmL
pUN
bid
-chj
-chj
+clg
+clg
pUN
mrR
ngc
@@ -87497,11 +87311,11 @@ wmL
xkw
iSi
cjF
-msJ
-nkv
-msJ
-nkv
-nkv
+clg
+jpq
+clg
+jpq
+jpq
epk
pUU
qav
@@ -87754,10 +87568,10 @@ wmL
xkw
iVa
clg
-msJ
+clg
lAD
cWU
-msJ
+clg
jpq
epk
pUU
@@ -88010,12 +87824,12 @@ aaM
wmL
xkw
xFQ
-nkv
jpq
-cxn
+jpq
+lAD
cXi
dGq
-msJ
+clg
epk
pUU
qav
@@ -88267,12 +88081,12 @@ aaM
wmL
xkw
bjR
-nkv
-nkv
-msJ
-nkv
-msJ
-nkv
+jpq
+jpq
+clg
+jpq
+clg
+jpq
epk
pUU
qav
@@ -88524,7 +88338,7 @@ aaM
wmL
pUN
bkm
-nkv
+jpq
khS
lBN
mvu
@@ -88781,7 +88595,7 @@ aaM
wmL
xkw
bkr
-nkv
+jpq
pUN
pUN
pUN
@@ -89038,12 +88852,12 @@ aaM
wmL
xkw
blQ
-nkv
+jpq
pUN
lIO
mym
nuL
-ogE
+jpq
oUZ
fpt
qav
@@ -89295,12 +89109,12 @@ aaM
wmL
xkw
bpY
-jnf
+jpq
pUN
pUN
pUN
-ogE
-ogE
+jpq
+jpq
oUZ
von
qav
@@ -89557,7 +89371,7 @@ pUN
lMp
mAd
nuL
-ogE
+jpq
oWu
pTm
qav
@@ -89813,8 +89627,8 @@ jpq
pUN
pUN
pUN
-ogE
-ogE
+jpq
+jpq
pUN
pUN
pUN
@@ -90327,8 +90141,8 @@ wmL
pUN
pUN
pUN
-ogE
-ogE
+jpq
+jpq
pUN
pUU
qav
@@ -90345,7 +90159,7 @@ von
pUU
pUN
vPG
-wBB
+clg
pUN
xCb
pUN
@@ -90585,7 +90399,7 @@ pUN
lVP
dau
nuL
-ogE
+jpq
pkt
pUU
qav
@@ -90602,7 +90416,7 @@ von
pUU
pUN
vPK
-wDr
+jpq
xii
xEl
xkw
diff --git a/maps/aurora/aurora-3_sublevel.dmm b/maps/aurora/aurora-3_sublevel.dmm
index c433b878c2f..9dd7164a4d3 100644
--- a/maps/aurora/aurora-3_sublevel.dmm
+++ b/maps/aurora/aurora-3_sublevel.dmm
@@ -6,20 +6,6 @@
/obj/effect/landmark/dungeon_spawn,
/turf/unsimulated/chasm_mask,
/area/mine/unexplored)
-"aac" = (
-/obj/machinery/door/airlock/external{
- frequency = 1379;
- icon_state = "door_locked";
- id_tag = "eng_sl_eva_outer";
- locked = 1;
- luminosity = 1;
- name = "Engineering Sub-Level EVA";
- req_access = list(10,13);
- dir = 1
- },
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/tiled,
-/area/outpost/engineering/hallway)
"aad" = (
/obj/structure/grille,
/turf/simulated/wall/r_wall,
@@ -3513,21 +3499,6 @@
},
/turf/simulated/floor/tiled,
/area/outpost/engineering/hallway)
-"aip" = (
-/obj/machinery/station_map{
- dir = 1;
- pixel_y = -32
- },
-/obj/structure/cable{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/obj/effect/floor_decal/corner_wide/yellow{
- dir = 10
- },
-/turf/simulated/floor/tiled,
-/area/outpost/engineering/hallway)
"aiq" = (
/obj/machinery/firealarm/south,
/obj/effect/floor_decal/corner_wide/yellow{
@@ -4080,10 +4051,6 @@
},
/turf/simulated/floor/tiled,
/area/outpost/engineering/hallway)
-"ajs" = (
-/obj/effect/floor_decal/corner/white/diagonal,
-/turf/simulated/floor/tiled,
-/area/engineering/break_room)
"ajt" = (
/obj/machinery/light{
dir = 4
@@ -14542,9 +14509,6 @@
/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
dir = 1
},
-/obj/machinery/station_map{
- pixel_y = 32
- },
/obj/structure/disposalpipe/segment{
dir = 4;
icon_state = "pipe-c"
@@ -34401,16 +34365,6 @@
},
/turf/simulated/floor/plating,
/area/outpost/engineering/power)
-"uGE" = (
-/obj/machinery/station_map{
- dir = 4;
- pixel_x = -32
- },
-/obj/effect/floor_decal/corner_wide/mauve{
- dir = 9
- },
-/turf/simulated/floor/tiled/white,
-/area/outpost/research/hallway)
"uGF" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/door/airlock/maintenance_hatch{
@@ -49321,9 +49275,9 @@ jXD
aim
vly
akJ
-ajs
-ajs
-ajs
+wHR
+wHR
+wHR
xNS
ajv
qnn
@@ -49577,7 +49531,7 @@ pmn
ahI
xxd
uqb
-ajs
+wHR
bVc
akn
akn
@@ -49834,7 +49788,7 @@ hZh
eby
ain
dbr
-ajs
+wHR
ajT
rmO
rmO
@@ -50353,7 +50307,7 @@ xrn
rmO
rmO
tbe
-ajs
+wHR
ntd
lYK
aaa
@@ -50863,11 +50817,11 @@ tZw
ain
vly
ajx
-ajs
+wHR
ajw
bTq
uTq
-ajs
+wHR
pOl
lYK
aaa
@@ -51631,7 +51585,7 @@ fvN
jjk
ahi
ahK
-aip
+ain
aiQ
ajA
ajA
@@ -53938,7 +53892,7 @@ sOM
sOM
sOM
sOM
-aac
+fYn
ayP
aiv
dPp
@@ -57608,7 +57562,7 @@ xFr
aLI
aMG
aCf
-uGE
+azn
aPg
aGC
aQt
diff --git a/maps/aurora/aurora-4_mainlevel.dmm b/maps/aurora/aurora-4_mainlevel.dmm
index f922bd20424..417a3335a26 100644
--- a/maps/aurora/aurora-4_mainlevel.dmm
+++ b/maps/aurora/aurora-4_mainlevel.dmm
@@ -155,19 +155,6 @@
/obj/effect/map_effect/window_spawner/reinforced/firedoor,
/turf/simulated/floor/plating,
/area/maintenance/security_starboard)
-"aat" = (
-/obj/machinery/door/firedoor,
-/obj/machinery/door/airlock/medical{
- name = "Cold Storage";
- req_access = list(66);
- dir = 1
- },
-/obj/structure/plasticflaps/airtight,
-/turf/simulated/floor/tiled/freezer{
- name = "cold storage tiles";
- temperature = 278
- },
-/area/medical/surgerywing)
"aau" = (
/obj/effect/map_effect/window_spawner/reinforced/firedoor,
/turf/simulated/floor/plating,
@@ -10257,14 +10244,6 @@
},
/turf/simulated/floor/tiled,
/area/bridge)
-"aty" = (
-/obj/structure/cable/green{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/turf/simulated/floor/tiled,
-/area/bridge)
"atz" = (
/obj/structure/cable/green{
d1 = 1;
@@ -22591,13 +22570,6 @@
/obj/machinery/alarm/south,
/turf/simulated/floor/tiled,
/area/hallway/primary/starboard)
-"aNJ" = (
-/obj/machinery/station_map{
- dir = 1;
- pixel_y = -32
- },
-/turf/simulated/floor/tiled,
-/area/hallway/primary/starboard)
"aNK" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/blast/shutters{
@@ -27780,12 +27752,6 @@
/obj/structure/extinguisher_cabinet/north,
/turf/simulated/floor/tiled,
/area/hallway/primary/central_one)
-"aWM" = (
-/obj/machinery/station_map{
- pixel_y = 32
- },
-/turf/simulated/floor/tiled,
-/area/hallway/primary/central_one)
"aWN" = (
/obj/structure/sign/directions/engineering{
dir = 8;
@@ -29248,13 +29214,6 @@
},
/turf/simulated/floor/tiled,
/area/hallway/primary/port)
-"aZe" = (
-/obj/machinery/station_map{
- dir = 1;
- pixel_y = -32
- },
-/turf/simulated/floor/tiled,
-/area/hallway/primary/port)
"aZf" = (
/obj/machinery/power/apc/south,
/obj/structure/cable/green{
@@ -29584,24 +29543,6 @@
},
/turf/simulated/floor/tiled,
/area/hallway/primary/starboard)
-"aZK" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/station_map{
- dir = 1;
- pixel_y = -32
- },
-/obj/machinery/door/firedoor{
- enable_smart_generation = 0
- },
-/obj/structure/cable/green{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/turf/simulated/floor/tiled,
-/area/hallway/primary/starboard)
"aZL" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -34413,10 +34354,6 @@
c_tag = "Central Corridor - Camera 6";
dir = 8
},
-/obj/machinery/station_map{
- dir = 8;
- pixel_x = 32
- },
/obj/structure/cable/green{
d1 = 1;
d2 = 2;
@@ -41772,10 +41709,6 @@
/turf/simulated/floor/tiled,
/area/hallway/primary/central_one)
"bxq" = (
-/obj/machinery/station_map{
- dir = 4;
- pixel_x = -32
- },
/obj/structure/cable/green{
d1 = 1;
d2 = 2;
@@ -49435,11 +49368,6 @@
/obj/effect/decal/cleanable/dirt,
/turf/simulated/floor/tiled,
/area/maintenance/research_port)
-"bPM" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/tiled,
-/area/maintenance/research_port)
"bPN" = (
/obj/effect/decal/cleanable/dirt,
/obj/random/junk,
@@ -62174,10 +62102,6 @@
},
/turf/simulated/floor/tiled,
/area/maintenance/vault)
-"kAL" = (
-/obj/structure/table/wood,
-/turf/simulated/floor/carpet,
-/area/crew_quarters/bar)
"kAV" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 5
@@ -63284,10 +63208,6 @@
/obj/structure/trash_pile,
/turf/simulated/floor/plating,
/area/maintenance/research_port)
-"mMJ" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/simulated/floor/tiled,
-/area/maintenance/bar)
"mNw" = (
/obj/structure/closet,
/obj/random/loot,
@@ -89881,7 +89801,7 @@ aQq
aVh
ePx
aXX
-aZe
+aWs
aVq
bbq
bcV
@@ -89926,11 +89846,11 @@ bbs
htm
bbs
bbs
-bPM
+uzs
bQj
bQD
bPL
-bPM
+uzs
bSf
bbs
bcY
@@ -99388,7 +99308,7 @@ nLT
aSr
aTT
aIi
-aWM
+aZs
aYn
aZr
baI
@@ -99711,7 +99631,7 @@ sEV
sEV
bYZ
ivR
-kAL
+jnD
bSM
bNO
cbi
@@ -103534,7 +103454,7 @@ bGB
bBP
bIs
pie
-mMJ
+gfU
bGC
bGC
bGC
@@ -106586,7 +106506,7 @@ ahC
ahC
aXa
aYq
-aZK
+aZC
avd
avd
bfh
@@ -107640,7 +107560,7 @@ aap
bCc
bCc
bCc
-aat
+aap
bzk
bzk
bxU
@@ -108120,7 +108040,7 @@ aGL
qSC
cCf
aLQ
-aNJ
+awK
aPu
aRb
aRb
@@ -114533,7 +114453,7 @@ aoq
apF
aqS
asi
-aty
+atx
avj
awN
ayE
diff --git a/maps/aurora/aurora-6_surface.dmm b/maps/aurora/aurora-6_surface.dmm
index e78020f3465..63726f6e1cf 100644
--- a/maps/aurora/aurora-6_surface.dmm
+++ b/maps/aurora/aurora-6_surface.dmm
@@ -14,14 +14,6 @@
},
/turf/simulated/floor/wood,
/area/security/bridge_surface_checkpoint)
-"aac" = (
-/obj/machinery/door/airlock/external{
- icon_state = "door_locked";
- locked = 1;
- dir = 4
- },
-/turf/simulated/floor/plating,
-/area/bridge/levela)
"aaq" = (
/obj/machinery/light{
dir = 8;
@@ -11977,10 +11969,6 @@
/obj/effect/floor_decal/corner/dark_blue{
dir = 8
},
-/obj/machinery/station_map{
- dir = 8;
- pixel_x = 32
- },
/turf/simulated/floor/tiled,
/area/hallway/secondary/entry/central)
"kDq" = (
@@ -12694,15 +12682,6 @@
},
/turf/simulated/floor/plating,
/area/maintenance/solarmaint)
-"lkM" = (
-/obj/effect/floor_decal/corner/lime{
- dir = 5
- },
-/obj/machinery/station_map{
- pixel_y = 32
- },
-/turf/simulated/floor/tiled,
-/area/hallway/secondary/entry/fore)
"lkU" = (
/obj/machinery/door/airlock{
id_tag = "Dormitory 2";
@@ -13440,10 +13419,6 @@
},
/turf/simulated/floor/plating,
/area/hallway/secondary/exit)
-"lMR" = (
-/obj/item/device/radio/intercom/east,
-/turf/simulated/floor/tiled,
-/area/hallway/secondary/entry/central)
"lMS" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/blast/regular{
@@ -16685,12 +16660,6 @@
},
/turf/simulated/floor/tiled,
/area/bridge/levela)
-"oGz" = (
-/obj/machinery/door/airlock/glass{
- dir = 4
- },
-/turf/simulated/floor/tiled,
-/area/hallway/secondary/entry/aft)
"oHb" = (
/obj/structure/grille,
/obj/structure/window/reinforced,
@@ -54017,7 +53986,7 @@ twe
pMI
qmj
twe
-lkM
+vHg
oUS
kqa
cCJ
@@ -54806,7 +54775,7 @@ oVw
hZo
kvz
kvz
-lMR
+wZN
kvz
kvz
aVE
@@ -54828,7 +54797,7 @@ qLs
kvz
kvz
xpj
-lMR
+wZN
kvz
fCy
kvz
@@ -56636,7 +56605,7 @@ kvz
aVE
kvz
wGw
-oGz
+aaa
wGw
kSh
fQm
@@ -81559,7 +81528,7 @@ fdu
fdu
fdu
cta
-aac
+jAf
oHb
fdu
fdu
diff --git a/maps/sccv_horizon/sccv_horizon-1_deck_1.dmm b/maps/sccv_horizon/sccv_horizon-1_deck_1.dmm
index 3cfaa5b997c..b16bd0d66ef 100644
--- a/maps/sccv_horizon/sccv_horizon-1_deck_1.dmm
+++ b/maps/sccv_horizon/sccv_horizon-1_deck_1.dmm
@@ -8042,18 +8042,6 @@
},
/turf/simulated/floor/tiled/dark,
/area/storage/eva)
-"fEu" = (
-/obj/structure/cable{
- icon_state = "4-8"
- },
-/obj/effect/floor_decal/corner/dark_green{
- dir = 5
- },
-/obj/machinery/station_map{
- pixel_y = 32
- },
-/turf/simulated/floor/tiled,
-/area/hangar/auxiliary)
"fEy" = (
/obj/structure/railing/mapped{
dir = 4
@@ -9917,10 +9905,6 @@
/area/hangar/canary)
"gOP" = (
/obj/effect/floor_decal/corner/dark_green/full,
-/obj/machinery/station_map{
- dir = 4;
- pixel_x = -32
- },
/obj/structure/railing/mapped,
/turf/simulated/floor/tiled,
/area/hallway/primary/aft)
@@ -15551,9 +15535,6 @@
/obj/effect/floor_decal/corner/dark_green{
dir = 5
},
-/obj/machinery/station_map{
- pixel_y = 32
- },
/turf/simulated/floor/tiled,
/area/hangar/intrepid)
"kNN" = (
@@ -28963,10 +28944,6 @@
},
/obj/machinery/disposal/small/south,
/obj/structure/disposalpipe/trunk,
-/obj/machinery/station_map{
- dir = 4;
- pixel_x = -32
- },
/turf/simulated/floor/tiled,
/area/hangar/intrepid)
"ueg" = (
@@ -63011,7 +62988,7 @@ hUC
qwT
fZu
lPW
-fEu
+hot
mSq
adX
bJa
diff --git a/maps/sccv_horizon/sccv_horizon-2_deck_2.dmm b/maps/sccv_horizon/sccv_horizon-2_deck_2.dmm
index 28bf30a266f..4774ece4df0 100644
--- a/maps/sccv_horizon/sccv_horizon-2_deck_2.dmm
+++ b/maps/sccv_horizon/sccv_horizon-2_deck_2.dmm
@@ -8086,16 +8086,6 @@
},
/turf/simulated/floor/tiled/dark,
/area/horizon/grauwolf)
-"dMA" = (
-/obj/effect/floor_decal/corner/dark_green{
- dir = 9
- },
-/obj/machinery/station_map{
- dir = 4;
- pixel_x = -32
- },
-/turf/simulated/floor/tiled,
-/area/horizon/hallway/deck_two/fore)
"dMG" = (
/obj/machinery/alarm/east{
alarm_id = 1601;
@@ -10907,10 +10897,6 @@
/obj/effect/floor_decal/corner/brown{
dir = 9
},
-/obj/machinery/station_map{
- dir = 1;
- pixel_y = -32
- },
/turf/simulated/floor/tiled,
/area/hallway/primary/central_two)
"fgd" = (
@@ -23614,16 +23600,6 @@
},
/turf/simulated/floor/tiled,
/area/hallway/primary/central_two)
-"lcG" = (
-/obj/effect/floor_decal/corner/mauve{
- dir = 10
- },
-/obj/machinery/station_map{
- dir = 1;
- pixel_y = -32
- },
-/turf/simulated/floor/tiled,
-/area/rnd/hallway)
"ldk" = (
/obj/structure/cable/green{
icon_state = "4-8"
@@ -25807,10 +25783,6 @@
/obj/machinery/light{
dir = 8
},
-/obj/machinery/station_map{
- dir = 1;
- pixel_y = -32
- },
/turf/simulated/floor/tiled,
/area/horizon/stairwell/central)
"mgJ" = (
@@ -30146,10 +30118,6 @@
/obj/machinery/atmospherics/unary/vent_pump/on{
dir = 8
},
-/obj/machinery/station_map{
- dir = 8;
- pixel_x = 32
- },
/turf/simulated/floor/tiled,
/area/hallway/primary/central_one)
"ohc" = (
@@ -30874,16 +30842,6 @@
/obj/effect/floor_decal/industrial/hatch/yellow,
/turf/simulated/floor/tiled/white,
/area/rnd/xenobiology)
-"oyK" = (
-/obj/effect/floor_decal/corner/dark_green{
- dir = 10
- },
-/obj/machinery/station_map{
- dir = 1;
- pixel_y = -32
- },
-/turf/simulated/floor/tiled,
-/area/engineering/lobby)
"oyP" = (
/obj/structure/lattice/catwalk/indoor/grate,
/obj/machinery/alarm/east,
@@ -42433,9 +42391,6 @@
/obj/effect/floor_decal/corner/dark_green{
dir = 5
},
-/obj/machinery/station_map{
- pixel_y = 32
- },
/turf/simulated/floor/tiled,
/area/operations/lobby)
"ufC" = (
@@ -70618,7 +70573,7 @@ ilT
nge
fKi
xxi
-oyK
+dpG
sYl
oUt
oUt
@@ -71456,7 +71411,7 @@ hGC
tre
qfC
hnf
-dMA
+tre
kgp
piY
bhj
@@ -79713,7 +79668,7 @@ weq
sig
ybp
nnr
-lcG
+rnA
kGX
kGX
kGX
diff --git a/maps/sccv_horizon/sccv_horizon-3_deck_3.dmm b/maps/sccv_horizon/sccv_horizon-3_deck_3.dmm
index 71e2db9b9ae..940975406c9 100644
--- a/maps/sccv_horizon/sccv_horizon-3_deck_3.dmm
+++ b/maps/sccv_horizon/sccv_horizon-3_deck_3.dmm
@@ -20369,9 +20369,6 @@
dir = 5
},
/obj/machinery/atmospherics/unary/vent_pump/on,
-/obj/machinery/station_map{
- pixel_y = 32
- },
/turf/simulated/floor/tiled,
/area/horizon/hallway/deck_three/primary/port/docks)
"pxn" = (
@@ -25402,10 +25399,6 @@
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
},
-/obj/machinery/station_map{
- dir = 1;
- pixel_y = -32
- },
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 5
},
diff --git a/tgui/packages/tgui/interfaces/Map.tsx b/tgui/packages/tgui/interfaces/Map.tsx
new file mode 100644
index 00000000000..68a3ea89ba3
--- /dev/null
+++ b/tgui/packages/tgui/interfaces/Map.tsx
@@ -0,0 +1,146 @@
+import { paginate } from 'common/collections';
+import { useBackend, useLocalState } from '../backend';
+import { Tabs, Slider, Section, NoticeBox, Table } from '../components';
+import { NtosWindow } from '../layouts';
+
+export type MapData = {
+ map_image: any; // base64 icon
+ user_x: number;
+ user_y: number;
+ user_z: number;
+ station_levels: number[];
+ z_override: number;
+ dept_colors_map: { d: string; c: string }[];
+};
+
+export const Map = (props, context) => {
+ const { act, data } = useBackend(context);
+
+ const [minimapZoom, setMinimapZoom] = useLocalState(
+ context,
+ `minimapZoom`,
+ 100
+ );
+
+ const [showLegend, setShowLegend] = useLocalState(
+ context,
+ `showLegend`,
+ false
+ );
+
+ const map_size = 255;
+ const zoom_mod = minimapZoom / 100.0;
+
+ return (
+
+
+
+
+ Levels:
+ {data.station_levels?.map((station_level) => (
+
+ act('z_override', { z_override: station_level })
+ }>
+ {station_level}
+
+ ))}
+ {data.z_override ? (
+ act('z_override', { z_override: 0 })}>
+ Clear Override
+
+ ) : (
+ ''
+ )}
+ setShowLegend(!showLegend)}>
+ {showLegend ? 'Hide Legend' : 'Show Legend'}
+
+
+ {showLegend ? (
+
+
+ {paginate(data.dept_colors_map, 2).map((a) => (
+
+ {a[0].d}
+ {a[1].d}
+
+ ))}
+
+
+ ) : (
+ ''
+ )}
+ setMinimapZoom(value)}>
+ Zoom: {minimapZoom}%
+
+
+
+
+
+ );
+};