diff --git a/aurorastation.dme b/aurorastation.dme index b8e05b63ca00..43f54e4163d1 100644 --- a/aurorastation.dme +++ b/aurorastation.dme @@ -1482,6 +1482,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" diff --git a/code/game/objects/items/stacks/rods.dm b/code/game/objects/items/stacks/rods.dm index f73df6c6fe4d..91888abf864f 100644 --- a/code/game/objects/items/stacks/rods.dm +++ b/code/game/objects/items/stacks/rods.dm @@ -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), diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index 87ffbc1e0cb0..1ce17b4204f5 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -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 diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm index 0e13a4913980..80d05d45d8a3 100644 --- a/code/game/objects/structures/crates_lockers/crates.dm +++ b/code/game/objects/structures/crates_lockers/crates.dm @@ -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 diff --git a/code/game/objects/structures/crates_lockers/crateshelf.dm b/code/game/objects/structures/crates_lockers/crateshelf.dm new file mode 100644 index 000000000000..66161acf51bf --- /dev/null +++ b/code/game/objects/structures/crates_lockers/crateshelf.dm @@ -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("[user] 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! diff --git a/code/modules/cargo/randomstock.dm b/code/modules/cargo/randomstock.dm index bba0269b5b4f..70e094a9e9b1 100644 --- a/code/modules/cargo/randomstock.dm +++ b/code/modules/cargo/randomstock.dm @@ -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)) diff --git a/html/changelogs/TheGreatestOfShelves.yml b/html/changelogs/TheGreatestOfShelves.yml new file mode 100644 index 000000000000..da850e2c64df --- /dev/null +++ b/html/changelogs/TheGreatestOfShelves.yml @@ -0,0 +1,7 @@ +author: TheGreyWolf + +delete-after: True + +changes: + - rscadd: "Added crate shelves." + - rscadd: "Remapped the warehouse to fit the crate shelves." diff --git a/icons/obj/structure/crate_shelf.dmi b/icons/obj/structure/crate_shelf.dmi new file mode 100644 index 000000000000..ff211d21d5c2 Binary files /dev/null and b/icons/obj/structure/crate_shelf.dmi differ diff --git a/maps/sccv_horizon/sccv_horizon.dmm b/maps/sccv_horizon/sccv_horizon.dmm index 508141818e7c..09e4cc69c2d1 100644 --- a/maps/sccv_horizon/sccv_horizon.dmm +++ b/maps/sccv_horizon/sccv_horizon.dmm @@ -8735,9 +8735,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" = ( @@ -10173,19 +10170,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" = ( @@ -10729,15 +10728,15 @@ /turf/simulated/floor/tiled, /area/horizon/engineering/lobby) "bxr" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, +/obj/machinery/firealarm/north, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 + dir = 10 }, -/obj/machinery/firealarm/north, -/obj/effect/floor_decal/corner/brown{ - dir = 5 +/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) @@ -12144,14 +12143,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" = ( @@ -12329,10 +12323,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, @@ -17303,6 +17299,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, @@ -19968,9 +19972,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" = ( @@ -20360,15 +20365,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{ @@ -22473,13 +22480,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{ @@ -23654,21 +23658,13 @@ /turf/simulated/floor/plating, /area/horizon/maintenance/deck_1/main/port) "dno" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 4 +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/effect/floor_decal/industrial/loading/yellow{ + dir = 8 }, -/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) @@ -25962,20 +25958,10 @@ /turf/simulated/wall/shuttle/scc_space_ship/cardinal, /area/horizon/hangar/auxiliary) "dCU" = ( -/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/effect/floor_decal/corner/brown/full{ + dir = 1 }, -/obj/item/paper_bin, -/obj/item/pen, -/obj/item/device/cratescanner, +/obj/structure/closet, /turf/simulated/floor/tiled, /area/horizon/operations/warehouse) "dCW" = ( @@ -30784,20 +30770,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" = ( @@ -32959,14 +32935,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{ @@ -40272,6 +40244,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" = ( @@ -56712,7 +56686,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, @@ -60324,13 +60303,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{ @@ -61059,11 +61035,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" = ( @@ -73567,6 +73546,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" @@ -76390,6 +76373,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" = ( @@ -81985,10 +81975,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" = ( @@ -84616,6 +84611,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 @@ -88299,7 +88298,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" = ( @@ -89287,10 +89287,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, @@ -93149,17 +93150,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" = ( @@ -97345,15 +97345,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, @@ -97947,6 +97939,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" = ( @@ -98250,7 +98243,6 @@ /obj/machinery/light/small{ dir = 1 }, -/obj/structure/engineer_maintenance/pipe/wall, /turf/simulated/floor/tiled, /area/horizon/operations/warehouse) "nSR" = ( @@ -98548,6 +98540,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 @@ -98957,9 +98955,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" = ( @@ -100052,14 +100049,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" = ( @@ -100374,19 +100372,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" = ( @@ -106654,11 +106644,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" = ( @@ -115169,6 +115157,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{ @@ -117312,12 +117310,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, @@ -125602,6 +125598,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{ @@ -126365,8 +126372,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" = ( @@ -129932,16 +129938,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{ @@ -139570,6 +139572,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" = ( @@ -145629,10 +145635,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" = ( @@ -146082,12 +146086,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"; @@ -146098,6 +146096,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" = ( @@ -146842,9 +146842,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) @@ -149508,6 +149516,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" = ( @@ -153863,8 +153875,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) @@ -160000,7 +160016,6 @@ dir = 4 }, /obj/machinery/light, -/obj/structure/cart/storage/parcelcart, /turf/simulated/floor/tiled, /area/horizon/operations/mail_room) "wDe" = ( @@ -165730,15 +165745,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{ @@ -167283,6 +167297,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 @@ -168608,6 +168628,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 @@ -192257,8 +192285,8 @@ nbw aOp pdb wlr -rre wlr +rre xuk wlr wlr @@ -192514,7 +192542,7 @@ lgy wlr wlr wlr -cRz +wlr uHj nhF wlr @@ -192762,19 +192790,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 @@ -193025,15 +193053,15 @@ kZb nZS wlr pdP +dte rWo -rWo -kZb +rzE kZb kZb ffW -rWo -rWo -nLI +kqv +nWa +dno sqU quz wlr @@ -193277,19 +193305,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 @@ -193534,19 +193562,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 @@ -193790,18 +193818,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 @@ -194047,16 +194075,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 @@ -194306,15 +194334,15 @@ peg wlr kVz mvs -srt kVz wlr +bKg eDg nLY -pcT +mEA dgl -pcT -xtQ +eDg +mEA wlr qKo jIN