Add crate shelves (#21493)

Ports https://github.com/shiptest-ss13/Shiptest/pull/2374
The warehous has been redesigned to incorporate new shelves that can
each carry up to 3 crates. The warehouse now spawns with the crates
already on the shelves and the related code has been updated to account
for this and still spawn things inside of them.
The back room in the warehouse also lost its camera, to give a chance
for antags and other shenanigans to occur back there.

<img width="595" height="971" alt="image"
src="https://github.com/user-attachments/assets/3cf8bd17-e91b-4d32-9ae8-5e461eceee42"
/>
<img width="282" height="556" alt="image"
src="https://github.com/user-attachments/assets/100f02b0-9165-4c35-a24b-f20d9bdda30e"
/>
This commit is contained in:
Casper3667
2025-11-03 08:09:08 +00:00
committed by GitHub
parent 1098d40e4a
commit ca66627f32
9 changed files with 459 additions and 226 deletions
+1
View File
@@ -1485,6 +1485,7 @@
#include "code\game\objects\structures\carts\parcelcart.dm"
#include "code\game\objects\structures\crates_lockers\closets.dm"
#include "code\game\objects\structures\crates_lockers\crates.dm"
#include "code\game\objects\structures\crates_lockers\crateshelf.dm"
#include "code\game\objects\structures\crates_lockers\largecrate.dm"
#include "code\game\objects\structures\crates_lockers\closets\crittercrate.dm"
#include "code\game\objects\structures\crates_lockers\closets\fitness.dm"
+2 -1
View File
@@ -3,7 +3,8 @@ GLOBAL_LIST_INIT_TYPED(rod_recipes, /datum/stack_recipe, list(
new /datum/stack_recipe("floor-mounted catwalk", /obj/structure/lattice/catwalk/indoor, 4, time = 10, one_per_turf = TRUE, on_floor = TRUE),
new /datum/stack_recipe("grate, dark", /obj/structure/lattice/catwalk/indoor/grate, 1, time = 10, one_per_turf = TRUE, on_floor = TRUE),
new /datum/stack_recipe("grate, light", /obj/structure/lattice/catwalk/indoor/grate/light, 1, time = 10, one_per_turf = TRUE, on_floor = TRUE),
new /datum/stack_recipe("table frame", /obj/structure/table, 2, time = 10, one_per_turf = 1, on_floor = 1),
new /datum/stack_recipe("table frame", /obj/structure/table, 2, time = 10, one_per_turf = TRUE, on_floor = TRUE),
new /datum/stack_recipe("crate shelf", /obj/structure/crate_shelf, req_amount = 10, time = 10, one_per_turf = TRUE, on_floor = TRUE),
new /datum/stack_recipe("mine track", /obj/structure/track, 3, time = 10, one_per_turf = TRUE, on_floor = TRUE),
new /datum/stack_recipe("cane", /obj/item/cane, 1, time = 6),
new /datum/stack_recipe("crowbar", /obj/item/crowbar, 1, time = 6),
@@ -168,8 +168,10 @@
/obj/structure/closet/proc/can_open()
if(welded || locked)
return 0
return 1
return FALSE
if(istype(loc, /obj/structure/crate_shelf))
return FALSE
return TRUE
/obj/structure/closet/proc/can_close()
for(var/obj/structure/closet/closet in get_turf(src))
@@ -743,6 +745,10 @@
return 0
/obj/structure/closet/proc/mob_breakout(var/mob/living/escapee)
if(istype(loc, /obj/structure/crate_shelf))
var/obj/structure/crate_shelf/shelf = loc
shelf.relay_container_resist_act(escapee, src)
return
//Improved by nanako
//Now it actually works, also locker breakout time stacks with locking and welding
@@ -134,6 +134,9 @@
if(!opened && tablestatus == UNDER_TABLE)
to_chat(user, SPAN_WARNING("You can't open \the [src] while the lid is obstructed!"))
return FALSE
if(istype(loc, /obj/structure/crate_shelf))
to_chat(user, SPAN_WARNING("You can't open \the [src] while it is on a shelf!"))
return FALSE
else
return ..()
@@ -155,12 +158,30 @@
//For putting on tables
/obj/structure/closet/crate/mouse_drop_dragged(atom/over, mob/user, src_location, over_location, params)
if (istype(over, /obj/structure/table))
if (istype(over, /obj/structure/table) && !istype(loc, /obj/structure/crate_shelf))
put_on_table(over, user)
return TRUE
else if(istype(over, /obj/structure/crate_shelf) && !istype(loc, /obj/structure/crate_shelf))
put_on_shelf(over, user)
return TRUE
if(istype(loc, /obj/structure/crate_shelf) && isturf(over) && !is_blocked_turf(over))
take_off_shelf(loc, user, over)
return TRUE
else
return ..()
/obj/structure/closet/crate/proc/put_on_shelf(var/obj/structure/crate_shelf/shelf, var/mob/user)
shelf.load(src, user)
/obj/structure/closet/crate/proc/take_off_shelf(var/obj/structure/crate_shelf/shelf, var/mob/user, turf/unload_turf)
shelf.unload(src, user, unload_turf)
/obj/structure/closet/crate/Adjacent(atom/neighbor, atom/target, atom/movable/mover)
. = ..()
if(istype(loc, /obj/structure/crate_shelf))
var/obj/structure/crate_shelf/S = loc
return S.Adjacent(neighbor, target, mover)
/obj/structure/closet/crate/proc/put_on_table(var/obj/structure/table/table, var/mob/user)
if (!table || !user || (tablestatus == UNDER_TABLE))
return
@@ -0,0 +1,164 @@
/obj/structure/crate_shelf
name = "crate shelf"
desc = "It's a shelf! For storing crates!"
icon = 'icons/obj/structure/crate_shelf.dmi'
icon_state = "shelf_base"
var/shelf_stack = "shelf_stack"
density = TRUE
anchored = TRUE
layer = BELOW_OBJ_LAYER
var/capacity = 3 // Default capacity of the shelf
var/use_delay = 1 SECONDS // Default interaction delay of the shelf
var/list/shelf_contents
var/vertical_offset = 10 // Vertical pixel offset of shelving-related things. Set to 10 by default due to this leaving more of the crate on-screen to be clicked.
var/manipulating = FALSE
var/obj/item/stack/dismantle_mat = /obj/item/stack/rods
build_amt = 10
// For testing only.
/obj/structure/crate_shelf/tall
capacity = 12
/obj/structure/crate_shelf/mechanics_hints()
. = list()
. += ..()
. += "Drag a crate on to the shelf, to put it on it."
. += "Drag a crate from the shelf to the ground to remove it."
/obj/structure/crate_shelf/Initialize(mapload)
. = ..()
LAZYSETLEN(shelf_contents, capacity)
update_icon()
return mapload ? INITIALIZE_HINT_LATELOAD : INITIALIZE_HINT_NORMAL
/obj/structure/crate_shelf/LateInitialize()
. = ..()
var/next_free
for(var/obj/I in loc)
if (!istype(I, /obj/structure/closet/crate))
continue
next_free = LAZYFIND(shelf_contents, null)
if(!next_free)
continue
put_in(I, next_free)
/obj/structure/crate_shelf/update_icon()
ClearOverlays()
var/stack_layer // This is used to generate the sprite layering of the shelf pieces.
var/stack_offset // This is used to generate the vertical offset of the shelf pieces.
for(var/i in 1 to (capacity - 1))
stack_layer = BELOW_OBJ_LAYER + (0.02 * i) - 0.01 // Make each shelf piece render above the last, but below the crate that should be on it.
stack_offset = vertical_offset * i // Make each shelf piece physically above the last.
var/image/I = image(icon, icon_state = shelf_stack, layer = stack_layer, pixel_y = stack_offset)
AddOverlays(I)
/obj/structure/crate_shelf/Destroy()
LAZYCLEARLIST(shelf_contents)
return ..()
/obj/structure/crate_shelf/attackby(obj/item/attacking_item, mob/user, params)
. = ..()
if(attacking_item.iswrench())
dismantle(attacking_item, user)
/obj/structure/crate_shelf/dismantle(obj/item/W, mob/user)
// if(!LAZYLEN(shelf_contents))
var/empty = TRUE
for(var/c in shelf_contents)
if(c != null)
empty = FALSE
if(!empty)
to_chat(user, SPAN_NOTICE("Remove any crates from \the [src] before dismantling it."))
return
if(manipulating)
return
manipulating = TRUE
user.visible_message("<b>[user]</b> begins dismantling \the [src].",
SPAN_NOTICE("You begin dismantling \the [src]."))
if(!W.use_tool(src, user, 2 SECONDS, volume = 50))
manipulating = FALSE
return
user.visible_message("\The [user] dismantles \the [src].",
SPAN_NOTICE("You dismantle \the [src]."))
new dismantle_mat(src.loc, 10)
qdel(src)
/obj/structure/crate_shelf/proc/relay_container_resist_act(mob/living/user, obj/structure/closet/crate)
to_chat(user, SPAN_NOTICE("You begin attempting to knock [crate] out of [src]."))
visible_message(SPAN_DANGER("\The [crate] begins to shake violently!"), SPAN_DANGER("You hear the sound of metal thrashing around nearby."), intent_message = THUNK_SOUND)
crate.shake_animation()
if(do_after(user, 20 SECONDS, target = crate))
if(!user || user.stat != CONSCIOUS || user.loc != crate || crate.loc != src)
return // If the user is in a strange condition, return early.
crate.shake_animation()
visible_message(SPAN_WARNING("\The [crate] falls off the [src]!"), SPAN_NOTICE("You hear a thud."), intent_message = THUNK_SOUND)
crate.forceMove(loc) // Drop the crate onto the shelf,
step_rand(crate, 1) // Then try to push it somewhere.
crate.layer = initial(crate.layer) // Reset the crate back to having the default layer, otherwise we might get strange interactions.
crate.pixel_y = initial(crate.pixel_y) // Reset the crate back to having no offset, otherwise it will be floating.
shelf_contents[shelf_contents.Find(crate)] = null // Remove the reference to the crate from the list.
handle_visuals()
/obj/structure/crate_shelf/proc/handle_visuals()
vis_contents = contents // It really do be that shrimple.
return
/obj/structure/crate_shelf/proc/load(obj/structure/closet/crate/crate, mob/user)
// Check if the shelf has an empty spot, notify the player if not.
var/next_free = LAZYFIND(shelf_contents, null)
if(!next_free)
to_chat(user, SPAN_NOTICE("The shelf is full."))
balloon_alert(user, "shelf full!")
return FALSE
visible_message("\The [user] starts to put \the [crate] on \the [src].")
if(do_after(user, use_delay, target = crate))
if(shelf_contents[next_free] != null)
// Something has been added to the shelf while we were waiting, abort!
visible_message("\The [user] stops putting \the [crate] on \the [src].")
to_chat(user, SPAN_NOTICE("Something else was added to the shelf first."))
return FALSE
if(crate.opened) // If the crate is open, try to close it.
if(!crate.close())
visible_message("\The [user] stops putting \the [crate] on \the [src].")
to_chat(user, SPAN_NOTICE("The crate couldn't be closed."))
return FALSE // If we fail to close it, don't load it into the shelf.
put_in(crate, next_free)
visible_message("\The [user] puts \the [crate] on \the [src].")
return TRUE
visible_message("\The [user] stops putting \the [crate] on \the [src].")
return FALSE // If the do_after() is interrupted, return FALSE!
/obj/structure/crate_shelf/proc/put_in(obj/structure/closet/crate/crate, var/next_free)
LAZYSET(shelf_contents, next_free, crate)
crate.forceMove(src) // Insert the crate into the shelf.
crate.pixel_y = vertical_offset * (next_free - 1) // Adjust the vertical offset of the crate to look like it's on the shelf.
crate.layer = BELOW_OBJ_LAYER + 0.02 * (next_free - 1) // Adjust the layer of the crate to look like it's in the shelf.
handle_visuals()
/obj/structure/crate_shelf/proc/unload(obj/structure/closet/crate/crate, mob/user, turf/unload_turf)
if(!unload_turf)
unload_turf = get_turf(user) // If a turf somehow isn't passed into the proc, put it at the user's feet.
if(!unload_turf.Enter(crate)) // If moving the crate from the shelf to the desired turf would bump, don't do it! Thanks Kapu1178 for the help here. - Generic DM
to_chat(user, SPAN_NOTICE("There is no room for the crate."))
return FALSE
visible_message("\The [user] starts unloading \the [crate] from \the [src].")
if(do_after(user, use_delay, target = crate))
if(!LAZYFIND(shelf_contents, crate))
visible_message("\The [user] stops unloading \the [crate] from \the [src].")
to_chat(user, SPAN_NOTICE("The crate can't be moved."))
return FALSE // If something has happened to the crate while we were waiting, abort!
crate.layer = initial(crate.layer) // Reset the crate back to having the default layer, otherwise we might get strange interactions.
crate.pixel_y = initial(crate.pixel_y) // Reset the crate back to having no offset, otherwise it will be floating.
crate.forceMove(unload_turf)
shelf_contents[shelf_contents.Find(crate)] = null // We do this instead of removing it from the list to preserve the order of the shelf.
handle_visuals()
visible_message("\The [user] unloads \the [crate] from \the [src].")
return TRUE
visible_message("\The [user] stops unloading \the [crate] from \the [src].")
return FALSE // If the do_after() is interrupted, return FALSE!
+5
View File
@@ -120,6 +120,11 @@ GLOBAL_LIST_EMPTY(random_stock_large)
var/obj/structure/table/B = A
if(!B.no_cargo)
tables |= B
else if(istype(A, /obj/structure/crate_shelf))
var/obj/structure/crate_shelf/shelf = A
for(var/obj/I in shelf.shelf_contents)
if (istype(I, /obj/structure/closet/crate))
containers |= I
/datum/cargospawner/proc/start()
if (!SSatlas.current_map.warehouse_basearea || !length(warehouseturfs))
+7
View File
@@ -0,0 +1,7 @@
author: TheGreyWolf
delete-after: True
changes:
- rscadd: "Added crate shelves."
- rscadd: "Remapped the warehouse to fit the crate shelves."
Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

+250 -222
View File
@@ -8708,9 +8708,6 @@
"biL" = (
/obj/effect/floor_decal/industrial/outline/yellow,
/obj/structure/table/standard,
/obj/machinery/camera/network/supply{
c_tag = "Operations - Lower Warehouse 3"
},
/turf/simulated/floor/tiled,
/area/horizon/operations/warehouse)
"biM" = (
@@ -10146,19 +10143,21 @@
/turf/simulated/floor/wood,
/area/horizon/service/library)
"bsF" = (
/obj/structure/cable/green{
icon_state = "1-4"
},
/obj/structure/cable/green{
icon_state = "2-4"
},
/obj/effect/floor_decal/corner/brown{
dir = 4
},
/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
dir = 8
dir = 1
},
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
},
/obj/structure/cable/green{
icon_state = "4-8"
},
/obj/structure/cable/green{
icon_state = "2-4"
},
/obj/machinery/atmospherics/pipe/manifold/hidden/supply,
/turf/simulated/floor/tiled,
/area/horizon/operations/warehouse)
"bsG" = (
@@ -10704,15 +10703,15 @@
/turf/simulated/floor/tiled,
/area/horizon/engineering/lobby)
"bxr" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4
},
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
},
/obj/machinery/firealarm/north,
/obj/effect/floor_decal/corner/brown{
dir = 5
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 10
},
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 10
},
/obj/effect/floor_decal/corner/brown/full{
dir = 1
},
/turf/simulated/floor/tiled,
/area/horizon/operations/warehouse)
@@ -12112,14 +12111,9 @@
/turf/simulated/floor/tiled,
/area/horizon/engineering/atmos/storage)
"bIs" = (
/obj/machinery/light/small{
dir = 8
},
/obj/structure/closet/crate,
/obj/effect/floor_decal/corner/brown{
dir = 9
},
/obj/effect/floor_decal/industrial/outline/yellow,
/turf/simulated/floor/tiled,
/area/horizon/operations/warehouse)
"bIz" = (
@@ -12297,10 +12291,12 @@
/turf/simulated/floor/plating,
/area/horizon/engineering/bluespace_drive)
"bKg" = (
/obj/effect/floor_decal/corner/brown{
dir = 5
},
/turf/simulated/floor/tiled,
/obj/structure/crate_shelf,
/obj/effect/floor_decal/industrial/outline/yellow,
/obj/structure/closet/crate/weld,
/obj/structure/closet/crate/elec,
/obj/structure/closet/crate/internals,
/turf/simulated/floor/tiled/cargo,
/area/horizon/operations/warehouse)
"bKj" = (
/obj/structure/foamedmetal,
@@ -17247,6 +17243,14 @@
},
/turf/simulated/floor/reinforced/airless,
/area/horizon/engineering/atmos/propulsion/starboard)
"cuZ" = (
/obj/effect/floor_decal/industrial/outline/yellow,
/obj/machinery/light/small{
dir = 1
},
/obj/effect/large_stock_marker,
/turf/simulated/floor/tiled,
/area/horizon/operations/warehouse)
"cvc" = (
/obj/structure/closet/emcloset,
/obj/effect/floor_decal/corner/dark_green/full,
@@ -19912,9 +19916,10 @@
/turf/unsimulated/floor/monotile,
/area/antag/mercenary)
"cOw" = (
/obj/effect/floor_decal/industrial/outline/yellow,
/obj/effect/large_stock_marker,
/obj/machinery/firealarm/south,
/obj/machinery/atmospherics/unary/vent_pump/on{
dir = 4
},
/obj/effect/floor_decal/industrial/outline/operations,
/turf/simulated/floor/tiled,
/area/horizon/operations/warehouse)
"cOz" = (
@@ -20304,15 +20309,17 @@
/turf/simulated/floor/tiled,
/area/horizon/operations/lobby)
"cRz" = (
/obj/effect/floor_decal/industrial/warning{
dir = 4
/obj/effect/floor_decal/corner/brown{
dir = 9
},
/obj/structure/railing/mapped{
dir = 8
/obj/structure/table/standard{
no_cargo = 1
},
/obj/structure/cargo_receptacle/horizon,
/obj/effect/floor_decal/industrial/outline/yellow,
/turf/simulated/floor/plating,
/obj/item/paper_bin,
/obj/item/pen,
/obj/item/device/cratescanner,
/obj/item/device/hand_labeler,
/turf/simulated/floor/tiled,
/area/horizon/operations/warehouse)
"cRC" = (
/obj/effect/floor_decal/spline/fancy/wood{
@@ -22408,13 +22415,10 @@
c_tag = "Operations - Lower Warehouse 1";
dir = 8
},
/obj/effect/floor_decal/corner/brown{
dir = 6
},
/obj/structure/closet/walllocker/medical/firstaid{
pixel_x = 32
},
/turf/simulated/floor/tiled,
/turf/simulated/floor/tiled/cargo,
/area/horizon/operations/warehouse)
"dgo" = (
/obj/effect/floor_decal/corner/dark_green{
@@ -23590,21 +23594,13 @@
/turf/simulated/floor/plating,
/area/horizon/maintenance/deck_1/main/port)
"dno" = (
/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
dir = 4
/obj/effect/floor_decal/industrial/outline/yellow,
/obj/effect/floor_decal/industrial/loading/yellow{
dir = 8
},
/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
dir = 4
},
/obj/machinery/button/remote/blast_door{
/obj/structure/railing/mapped{
dir = 1;
id = "warehouse4";
name = "Warehouse Shutter";
pixel_x = 31;
pixel_y = 32
},
/obj/effect/floor_decal/corner/brown{
dir = 5
pixel_y = 8
},
/turf/simulated/floor/tiled,
/area/horizon/operations/warehouse)
@@ -25923,20 +25919,10 @@
/turf/simulated/wall/shuttle/scc_space_ship/cardinal,
/area/horizon/hangar/auxiliary)
"dCU" = (
/obj/structure/cable/green{
icon_state = "1-2"
/obj/effect/floor_decal/corner/brown/full{
dir = 1
},
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/effect/floor_decal/corner/brown{
dir = 6
},
/obj/structure/table/standard{
no_cargo = 1
},
/obj/item/paper_bin,
/obj/item/pen,
/obj/item/device/cratescanner,
/obj/structure/closet,
/turf/simulated/floor/tiled,
/area/horizon/operations/warehouse)
"dCW" = (
@@ -30750,20 +30736,10 @@
/turf/unsimulated/floor/plating,
/area/shuttle/specops)
"elB" = (
/obj/structure/cable/green{
icon_state = "1-2"
},
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/effect/floor_decal/corner/brown{
dir = 6
},
/obj/structure/table/standard{
no_cargo = 1
},
/obj/item/device/hand_labeler,
/obj/item/device/destTagger,
/obj/item/stack/packageWrap,
/obj/random/pottedplant,
/turf/simulated/floor/tiled,
/area/horizon/operations/warehouse)
"elE" = (
@@ -32908,14 +32884,10 @@
/turf/unsimulated/floor/grass,
/area/antag/actor)
"eDg" = (
/obj/effect/floor_decal/corner/brown/full{
dir = 1
},
/obj/machinery/light/small{
dir = 1
dir = 4
},
/obj/structure/engineer_maintenance/electric/wall,
/turf/simulated/floor/tiled,
/turf/simulated/floor/tiled/cargo,
/area/horizon/operations/warehouse)
"eDj" = (
/obj/structure/cable/green{
@@ -40261,6 +40233,8 @@
name = "Warehouse Shutter"
},
/obj/effect/floor_decal/industrial/hatch/yellow,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/turf/simulated/floor/tiled/full,
/area/horizon/operations/warehouse)
"fHs" = (
@@ -56685,7 +56659,12 @@
},
/area/centcom/holding)
"hUY" = (
/obj/structure/bed/stool/chair/office/dark{
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/obj/structure/cable/green{
icon_state = "1-2"
},
/obj/effect/floor_decal/corner/brown{
dir = 4
},
/turf/simulated/floor/tiled,
@@ -60297,13 +60276,10 @@
/turf/simulated/floor/tiled/white,
/area/horizon/rnd/test_range)
"iwl" = (
/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
/obj/machinery/atmospherics/unary/vent_scrubber/on{
dir = 8
},
/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
dir = 4
},
/turf/simulated/floor/tiled,
/turf/simulated/floor/tiled/cargo,
/area/horizon/operations/warehouse)
"iwo" = (
/obj/effect/step_trigger/teleporter/random{
@@ -61051,11 +61027,14 @@
/turf/simulated/floor/tiled,
/area/horizon/operations/lobby)
"iBi" = (
/obj/structure/closet/crate,
/obj/effect/floor_decal/corner/brown{
dir = 9
},
/obj/effect/floor_decal/industrial/outline/yellow,
/obj/structure/table/standard{
no_cargo = 1
},
/obj/item/device/destTagger,
/obj/item/stack/packageWrap,
/turf/simulated/floor/tiled,
/area/horizon/operations/warehouse)
"iBn" = (
@@ -73588,6 +73567,10 @@
/obj/effect/map_effect/window_spawner/full/reinforced/indestructible,
/turf/unsimulated/floor/dark_monotile,
/area/antag/actor)
"kqv" = (
/obj/structure/bed/stool/chair/office/dark,
/turf/simulated/floor/tiled,
/area/horizon/operations/warehouse)
"kqI" = (
/obj/structure/cable{
icon_state = "2-8"
@@ -76406,6 +76389,13 @@
/obj/structure/cable/green{
icon_state = "1-4"
},
/obj/machinery/button/remote/blast_door{
dir = 8;
id = "warehouse1";
name = "Warehouse Shutter";
pixel_x = -22;
pixel_y = 10
},
/turf/simulated/floor/plating,
/area/horizon/operations/package_conveyors)
"kJo" = (
@@ -81998,10 +81988,15 @@
/turf/simulated/floor/tiled/dark,
/area/horizon/engineering/break_room)
"lya" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
dir = 4
},
/obj/effect/floor_decal/industrial/outline/research,
/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
dir = 8
},
/obj/effect/floor_decal/corner/brown{
dir = 6
},
/turf/simulated/floor/tiled,
/area/horizon/operations/warehouse)
"lyd" = (
@@ -84642,6 +84637,10 @@
},
/turf/simulated/floor/wood/maple,
/area/horizon/holodeck/source_cafe)
"lQy" = (
/obj/structure/cart/storage/parcelcart,
/turf/simulated/floor/tiled,
/area/horizon/operations/warehouse)
"lQF" = (
/obj/machinery/atmospherics/pipe/simple/visible/purple{
dir = 4
@@ -88337,7 +88336,8 @@
/area/horizon/maintenance/deck_1/wing/starboard)
"mvs" = (
/obj/machinery/alarm/east,
/obj/structure/closet/secure_closet/package_courier,
/obj/effect/large_stock_marker,
/obj/effect/floor_decal/industrial/outline/yellow,
/turf/simulated/floor/tiled,
/area/horizon/operations/warehouse)
"mvv" = (
@@ -89337,10 +89337,11 @@
},
/area/horizon/shuttle/mining)
"mEA" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/effect/floor_decal/corner/brown,
/turf/simulated/floor/tiled,
/obj/effect/floor_decal/industrial/outline/yellow,
/obj/structure/crate_shelf,
/obj/structure/closet/crate,
/obj/structure/closet/crate,
/turf/simulated/floor/tiled/cargo,
/area/horizon/operations/warehouse)
"mED" = (
/obj/machinery/atmospherics/pipe/manifold/hidden/supply,
@@ -93208,17 +93209,16 @@
/turf/simulated/floor/tiled,
/area/horizon/hangar/auxiliary)
"nhF" = (
/obj/machinery/conveyor{
dir = 5;
id = "warehouse_package_conveyor";
reversed = 1
},
/obj/effect/floor_decal/industrial/warning{
dir = 4
},
/obj/structure/cable/green{
icon_state = "4-8"
},
/obj/machinery/conveyor{
dir = 4;
id = "warehouse_package_conveyor"
},
/turf/simulated/floor/plating,
/area/horizon/operations/warehouse)
"nhL" = (
@@ -97405,15 +97405,7 @@
/turf/simulated/floor/tiled,
/area/horizon/hallway/primary/deck_2/fore)
"nLY" = (
/obj/machinery/light/small{
dir = 4
},
/obj/structure/closet/crate,
/obj/effect/floor_decal/corner/brown{
dir = 6
},
/obj/effect/floor_decal/industrial/outline/yellow,
/turf/simulated/floor/tiled,
/turf/simulated/floor/tiled/cargo,
/area/horizon/operations/warehouse)
"nLZ" = (
/obj/machinery/atmospherics/pipe/manifold/visible/cyan,
@@ -98007,6 +97999,7 @@
"nQF" = (
/obj/structure/table/standard,
/obj/effect/floor_decal/industrial/outline/yellow,
/obj/structure/engineer_maintenance/pipe/wall,
/turf/simulated/floor/tiled,
/area/horizon/operations/warehouse)
"nQJ" = (
@@ -98310,7 +98303,6 @@
/obj/machinery/light/small{
dir = 1
},
/obj/structure/engineer_maintenance/pipe/wall,
/turf/simulated/floor/tiled,
/area/horizon/operations/warehouse)
"nSR" = (
@@ -98608,6 +98600,12 @@
},
/turf/simulated/floor/wood,
/area/horizon/command/heads/xo)
"nWa" = (
/obj/structure/table/standard{
no_cargo = 1
},
/turf/simulated/floor/tiled,
/area/horizon/operations/warehouse)
"nWb" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 5
@@ -99015,9 +99013,8 @@
/turf/simulated/floor/holofloor/carpet/rubber,
/area/horizon/holodeck/source_basketball)
"nZS" = (
/obj/effect/floor_decal/industrial/outline/yellow,
/obj/machinery/light/small,
/obj/effect/large_stock_marker,
/obj/structure/closet/secure_closet/package_courier,
/turf/simulated/floor/tiled,
/area/horizon/operations/warehouse)
"nZT" = (
@@ -100108,14 +100105,15 @@
/obj/structure/cable/green{
icon_state = "4-8"
},
/obj/effect/floor_decal/industrial/outline_door/yellow{
dir = 8
},
/obj/machinery/conveyor_switch/oneway{
id = "warehouse_package_conveyor";
pixel_x = -13;
pixel_y = -5
},
/obj/effect/floor_decal/industrial/outline/yellow,
/obj/effect/floor_decal/industrial/outline_door/yellow{
dir = 8
},
/turf/simulated/floor/tiled,
/area/horizon/operations/warehouse)
"ogA" = (
@@ -100431,19 +100429,11 @@
/turf/simulated/floor/tiled,
/area/horizon/crew/lounge)
"oiE" = (
/obj/structure/cable/green{
icon_state = "0-2"
},
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/obj/effect/floor_decal/corner/brown{
dir = 6
},
/obj/machinery/power/apc/high/east,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/structure/cable/green{
icon_state = "2-8"
},
/obj/random/pottedplant,
/turf/simulated/floor/tiled,
/area/horizon/operations/warehouse)
"oiF" = (
@@ -106673,11 +106663,9 @@
/turf/simulated/floor/plating,
/area/horizon/hangar/intrepid)
"pcT" = (
/obj/structure/closet/crate,
/obj/effect/floor_decal/corner/brown{
dir = 6
},
/obj/machinery/light/small,
/obj/effect/floor_decal/industrial/outline/yellow,
/obj/effect/large_stock_marker,
/turf/simulated/floor/tiled,
/area/horizon/operations/warehouse)
"pcW" = (
@@ -115184,6 +115172,16 @@
},
/turf/simulated/floor/tiled/white,
/area/merchant_station)
"qrR" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/machinery/firealarm/south{
dir = 4;
pixel_x = 22;
pixel_y = 0
},
/turf/simulated/floor/tiled,
/area/horizon/operations/warehouse)
"qrU" = (
/obj/machinery/door/firedoor,
/obj/effect/map_effect/door_helper/unres{
@@ -117309,12 +117307,10 @@
/turf/unsimulated/floor/plating,
/area/centcom/specops)
"qHF" = (
/obj/structure/closet/crate,
/obj/effect/floor_decal/corner/brown{
dir = 10
},
/obj/effect/floor_decal/industrial/outline/yellow,
/turf/simulated/floor/tiled,
/obj/structure/crate_shelf,
/obj/structure/closet/crate,
/turf/simulated/floor/tiled/cargo,
/area/horizon/operations/warehouse)
"qHI" = (
/turf/simulated/wall,
@@ -125596,6 +125592,17 @@
icon_state = "dark_preview"
},
/area/centcom/checkpoint/aft)
"rQO" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/obj/effect/floor_decal/corner/brown{
dir = 6
},
/obj/structure/railing/mapped{
dir = 4
},
/turf/simulated/floor/tiled,
/area/horizon/operations/warehouse)
"rQT" = (
/obj/effect/map_effect/window_spawner/full/borosilicate/reinforced/firedoor,
/obj/machinery/door/blast/regular/open{
@@ -126359,8 +126366,7 @@
},
/area/antag/ninja)
"rWo" = (
/obj/effect/floor_decal/industrial/outline/yellow,
/obj/structure/closet/crate,
/obj/effect/floor_decal/industrial/outline/research,
/turf/simulated/floor/tiled,
/area/horizon/operations/warehouse)
"rWq" = (
@@ -129913,16 +129919,12 @@
/turf/simulated/floor/plating,
/area/horizon/hallway/primary/deck_3/port/docks)
"swx" = (
/obj/machinery/door/firedoor,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/machinery/door/blast/shutters/open{
dir = 2;
id = "warehouse4";
name = "Warehouse Shutter"
},
/obj/effect/floor_decal/industrial/hatch/yellow,
/turf/simulated/floor/tiled/full,
/obj/structure/crate_shelf,
/obj/effect/floor_decal/industrial/outline/yellow,
/obj/structure/closet/crate/medical,
/obj/structure/closet/crate/medical,
/obj/structure/closet/crate/hydroponics,
/turf/simulated/floor/tiled/cargo,
/area/horizon/operations/warehouse)
"swI" = (
/obj/structure/railing/mapped{
@@ -139580,6 +139582,10 @@
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 6
},
/obj/structure/railing/mapped{
dir = 1;
pixel_y = 8
},
/turf/simulated/floor/tiled,
/area/horizon/operations/warehouse)
"tOc" = (
@@ -145639,10 +145645,8 @@
/obj/machinery/light/small{
dir = 8
},
/obj/machinery/conveyor{
dir = 10;
id = "warehouse_package_conveyor"
},
/obj/structure/cargo_receptacle/horizon,
/obj/effect/floor_decal/industrial/outline/yellow,
/turf/simulated/floor/plating,
/area/horizon/operations/warehouse)
"uHk" = (
@@ -146092,12 +146096,6 @@
/turf/unsimulated/floor/plating,
/area/tdome/tdomeadmin)
"uJM" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4
},
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
},
/obj/machinery/button/remote/blast_door{
dir = 1;
id = "warehouse3";
@@ -146108,6 +146106,8 @@
/obj/effect/floor_decal/corner/brown{
dir = 5
},
/obj/machinery/atmospherics/pipe/manifold/hidden/supply,
/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,
/turf/simulated/floor/tiled,
/area/horizon/operations/warehouse)
"uJN" = (
@@ -146852,9 +146852,17 @@
/turf/simulated/floor/tiled/dark,
/area/horizon/shuttle/intrepid/main_compartment)
"uPP" = (
/obj/effect/floor_decal/industrial/outline/operations,
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/obj/structure/cable/green{
icon_state = "4-8"
icon_state = "2-8"
},
/obj/structure/cable/green{
icon_state = "0-2"
},
/obj/machinery/power/apc/high/east,
/obj/effect/floor_decal/corner/brown{
dir = 6
},
/turf/simulated/floor/tiled,
/area/horizon/operations/warehouse)
@@ -149532,6 +149540,10 @@
dir = 9
},
/obj/effect/floor_decal/industrial/hatch/yellow,
/obj/structure/railing/mapped{
dir = 1;
pixel_y = 8
},
/turf/simulated/floor/tiled,
/area/horizon/operations/warehouse)
"viv" = (
@@ -153901,8 +153913,12 @@
/turf/simulated/floor/tiled/white,
/area/horizon/crew/fitness/showers)
"vOg" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
/obj/machinery/atmospherics/pipe/manifold/hidden/supply,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 5
},
/obj/structure/cable/green{
icon_state = "1-4"
},
/turf/simulated/floor/tiled,
/area/horizon/operations/warehouse)
@@ -160040,7 +160056,6 @@
dir = 4
},
/obj/machinery/light,
/obj/structure/cart/storage/parcelcart,
/turf/simulated/floor/tiled,
/area/horizon/operations/mail_room)
"wDe" = (
@@ -165750,15 +165765,14 @@
},
/area/horizon/holodeck/source_beach)
"xtQ" = (
/obj/machinery/light/small{
dir = 4
},
/obj/structure/closet/crate,
/obj/effect/floor_decal/corner/brown/full{
dir = 4
},
/obj/effect/floor_decal/industrial/outline/yellow,
/turf/simulated/floor/tiled,
/obj/structure/crate_shelf,
/obj/machinery/status_display/supply_display{
pixel_y = 32
},
/obj/structure/closet/crate/tool,
/obj/structure/closet/crate/tool,
/turf/simulated/floor/tiled/cargo,
/area/horizon/operations/warehouse)
"xtS" = (
/obj/machinery/door/airlock/command{
@@ -167322,6 +167336,12 @@
/obj/item/circuitboard/portgen/fusion,
/turf/simulated/floor/tiled/dark/full,
/area/horizon/engineering/storage_hard)
"xFQ" = (
/obj/structure/table/standard,
/obj/effect/floor_decal/industrial/outline/yellow,
/obj/structure/engineer_maintenance/electric/wall,
/turf/simulated/floor/tiled,
/area/horizon/operations/warehouse)
"xFR" = (
/obj/effect/floor_decal/corner/mauve{
dir = 9
@@ -168647,6 +168667,14 @@
},
/turf/simulated/floor/plating,
/area/horizon/command/bridge/controlroom)
"xOy" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/obj/structure/cable/green{
icon_state = "1-2"
},
/turf/simulated/floor/tiled,
/area/horizon/operations/warehouse)
"xOG" = (
/obj/item/modular_computer/console/preset/security{
dir = 1
@@ -192324,8 +192352,8 @@ nbw
aOp
pdb
wlr
rre
wlr
rre
xuk
wlr
wlr
@@ -192581,7 +192609,7 @@ lgy
wlr
wlr
wlr
cRz
wlr
uHj
nhF
wlr
@@ -192829,19 +192857,19 @@ egt
orh
xbo
wlr
kVz
biL
kZb
kZb
kVz
srt
wlr
nSQ
bIs
iBi
bIs
cSY
bIs
nLI
aOp
ogz
iBi
cRz
iBi
vit
uvc
@@ -193092,15 +193120,15 @@ kZb
nZS
wlr
pdP
dte
rWo
rWo
kZb
rzE
kZb
kZb
ffW
rWo
rWo
nLI
kqv
nWa
dno
sqU
quz
wlr
@@ -193344,19 +193372,19 @@ eBV
pDS
wlr
nQF
vOg
kZb
kZb
jWh
nyE
qrR
fHj
uJM
kZb
kZb
kmo
bjN
ikR
cOw
kZb
kZb
ffW
kZb
kZb
lQy
tOb
vyA
woX
@@ -193601,19 +193629,19 @@ eBV
xbo
wlr
biL
vOg
kZb
cOw
qjq
kVz
wlr
wlr
bxr
dte
bjN
oiE
rQO
lya
ikR
rzE
oiE
rQO
uPP
hUY
kZb
xOy
vOg
mde
ajX
@@ -193857,18 +193885,18 @@ egt
dZF
dPY
wlr
nQF
jWh
nyE
nyE
xFQ
kZb
kVz
wlr
swx
dno
nyE
nyE
nLY
nLY
qHF
iwl
nyE
nLY
mEA
oiE
wlr
dCU
elB
bsF
@@ -194114,16 +194142,16 @@ egt
coA
pDS
wlr
krq
qjq
cuZ
kZb
nZS
pcT
wlr
bKg
rWo
rWo
qjq
rWo
xtQ
nLY
nLY
mEA
nLY
nLY
qHF
wlr
qKo
@@ -194373,15 +194401,15 @@ peg
wlr
kVz
mvs
srt
kVz
wlr
bKg
eDg
nLY
pcT
mEA
dgl
pcT
xtQ
eDg
mEA
wlr
qKo
jIN