diff --git a/_maps/map_files/generic/Lavaland.dmm b/_maps/map_files/generic/Lavaland.dmm index b63271c611d..6a209e43c05 100644 --- a/_maps/map_files/generic/Lavaland.dmm +++ b/_maps/map_files/generic/Lavaland.dmm @@ -74,13 +74,6 @@ "an" = ( /turf/simulated/mineral/random/labormineral/volcanic, /area/lavaland/surface/outdoors) -"ao" = ( -/obj/machinery/computer/shuttle/labor/one_way{ - dir = 4 - }, -/obj/effect/decal/cleanable/cobweb, -/turf/simulated/floor/plasteel, -/area/mine/laborcamp) "ap" = ( /obj/effect/spawner/window/reinforced, /turf/simulated/floor/plating, @@ -94,12 +87,9 @@ dir = 4; network = list("Labor Camp") }, -/obj/machinery/atmospherics/unary/vent_scrubber/on, -/turf/simulated/floor/plasteel/white, -/area/mine/laborcamp) -"as" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, /turf/simulated/floor/plasteel/white, /area/mine/laborcamp) "at" = ( @@ -108,6 +98,9 @@ }, /obj/structure/curtain/open/shower, /obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, /turf/simulated/floor/plasteel/white, /area/mine/laborcamp) "au" = ( @@ -135,14 +128,15 @@ }, /area/mine/laborcamp) "aw" = ( -/turf/simulated/floor/plating/lava/smooth/lava_land_surface, -/area/lavaland/surface/outdoors/explored) +/obj/machinery/computer/shuttle/labor{ + dir = 4 + }, +/turf/simulated/floor/mineral/plastitanium/red, +/area/shuttle/siberia) "ax" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 10 - }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plasteel/white, /area/mine/laborcamp) "ay" = ( @@ -164,7 +158,7 @@ name = "custom placement"; pixel_y = -22 }, -/obj/machinery/atmospherics/unary/vent_pump/on{ +/obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 }, /obj/machinery/camera{ @@ -227,36 +221,28 @@ /turf/simulated/floor/plasteel, /area/mine/eva) "aJ" = ( -/obj/machinery/light/small{ - dir = 1 - }, -/turf/simulated/floor/plasteel, -/area/mine/laborcamp) -"aK" = ( -/obj/machinery/camera{ - c_tag = "Labor Camp Infirmary"; - network = list("Labor Camp") - }, -/obj/effect/decal/cleanable/cobweb, -/obj/machinery/alarm{ - dir = 4; - name = "custom placement"; - pixel_x = -23 - }, -/turf/simulated/floor/plasteel{ - icon_state = "barber" - }, -/area/mine/laborcamp) -"aL" = ( -/obj/machinery/door/airlock/medical/glass{ - name = "Infirmary" - }, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/turf/simulated/floor/plasteel/white, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, /area/mine/laborcamp) +"aK" = ( +/obj/structure/chair/office/dark{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm{ + name = "north bump"; + pixel_y = 24 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/mine/laborcamp/security) "aM" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/loading_area{ @@ -274,27 +260,19 @@ /turf/simulated/floor/plasteel, /area/mine/production) "aP" = ( -/obj/structure/table, -/obj/item/storage/firstaid/ancient, /turf/simulated/floor/plasteel{ - icon_state = "barber" + dir = 4; + icon_state = "darkred" }, -/area/mine/laborcamp) +/area/mine/laborcamp/security) "aQ" = ( /obj/structure/table, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/vending/wallmed{ - pixel_y = -30 - }, -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 4 - }, -/obj/item/stack/medical/bruise_pack/advanced, -/obj/item/stack/medical/bruise_pack/advanced, +/obj/machinery/recharger, /turf/simulated/floor/plasteel{ - icon_state = "barber" + dir = 8; + icon_state = "darkred" }, -/area/mine/laborcamp) +/area/mine/laborcamp/security) "aS" = ( /obj/machinery/mineral/ore_redemption/labor, /turf/simulated/floor/plasteel{ @@ -308,11 +286,12 @@ /area/lavaland/surface/outdoors/explored) "aU" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 10 +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8; + initialize_directions = 11 }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 10 +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 }, /turf/simulated/floor/plasteel, /area/mine/laborcamp) @@ -353,39 +332,56 @@ /turf/simulated/floor/carpet, /area/mine/living_quarters) "aZ" = ( -/obj/machinery/light/small{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 }, -/obj/machinery/door_control{ - id = "Labor"; - name = "Labor Camp Lockdown"; - pixel_y = 25; +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/mine/laborcamp/security) +"ba" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock/security/glass{ + name = "Labor Camp Security"; req_access_txt = "2" }, -/obj/machinery/flasher_button{ - id = "labor"; - pixel_y = 34 - }, -/turf/simulated/floor/plasteel, -/area/mine/laborcamp) -"ba" = ( /obj/machinery/door/poddoor/preopen{ id_tag = "Labor"; name = "labor camp blast door" }, -/obj/machinery/door/airlock/security/glass{ - name = "Labor Camp Shuttle Cockpit"; - req_access_txt = "2" +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 }, -/turf/simulated/floor/plasteel, -/area/mine/laborcamp) +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkfull" + }, +/area/mine/laborcamp/security) "bb" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 8; - initialize_directions = 11 + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "2-8" }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plasteel, /area/mine/laborcamp) "be" = ( @@ -409,16 +405,10 @@ /area/mine/eva) "bh" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/table, -/obj/machinery/recharger, -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 1 - }, /turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "darkred" + icon_state = "barber" }, -/area/mine/laborcamp/security) +/area/mine/laborcamp) "bi" = ( /obj/machinery/light/small{ dir = 4 @@ -435,24 +425,12 @@ }, /turf/simulated/floor/carpet, /area/mine/living_quarters) -"bj" = ( -/obj/machinery/status_display{ - pixel_y = 32 - }, -/turf/simulated/floor/plasteel{ - dir = 9; - icon_state = "brown" - }, -/area/mine/laborcamp) "bk" = ( /turf/simulated/floor/plasteel, /area/mine/laborcamp) "bl" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/arrows, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, /obj/machinery/requests_console{ department = "Labor Camp"; pixel_y = -32 @@ -462,11 +440,10 @@ }, /area/mine/laborcamp) "bm" = ( -/obj/machinery/light/small, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 9 - }, /obj/machinery/cryopod, +/obj/machinery/light/small{ + dir = 4 + }, /turf/simulated/floor/plasteel{ dir = 6; icon_state = "brown" @@ -474,9 +451,6 @@ /area/mine/laborcamp) "bn" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, /turf/simulated/floor/plasteel{ icon_state = "browncorner" }, @@ -564,11 +538,15 @@ /turf/simulated/floor/plasteel, /area/mine/living_quarters) "by" = ( -/obj/structure/cable{ - icon_state = "2-4" +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-4" }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plasteel{ icon_state = "brown" }, @@ -577,6 +555,10 @@ /obj/structure/cable{ icon_state = "4-8" }, +/obj/machinery/light_switch{ + name = "custom placement"; + pixel_y = 25 + }, /turf/simulated/floor/plasteel, /area/mine/laborcamp) "bA" = ( @@ -699,16 +681,12 @@ }, /area/mine/eva) "bL" = ( -/obj/machinery/door/airlock/security/glass{ - name = "Labor Camp Monitoring"; - req_access_txt = "2" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/door/firedoor, +/obj/machinery/door/airlock/medical/glass{ + name = "Infirmary" + }, /turf/simulated/floor/plasteel/dark, /area/mine/laborcamp) "bM" = ( @@ -850,100 +828,62 @@ /turf/simulated/floor/plasteel, /area/mine/eva) "bZ" = ( -/obj/machinery/alarm{ - dir = 4; - name = "custom placement"; - pixel_x = -23 +/obj/machinery/vending/wallmed{ + pixel_y = 32 }, -/obj/effect/decal/cleanable/cobweb, -/obj/machinery/computer/prisoner{ +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "barber" + }, +/area/mine/laborcamp) +"ca" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 8 + }, +/obj/item/radio/intercom/locked/prison{ + pixel_y = 24 + }, +/turf/simulated/floor/plasteel{ + icon_state = "barber" + }, +/area/mine/laborcamp) +"cb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 6 - }, -/turf/simulated/floor/plasteel{ - icon_state = "darkredcorners" - }, -/area/mine/laborcamp/security) -"ca" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/chair{ dir = 8 }, /obj/machinery/light/small{ dir = 1 }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 1 - }, -/obj/machinery/firealarm{ - name = "north bump"; - pixel_y = 24 - }, /turf/simulated/floor/plasteel{ - icon_state = "darkred" + icon_state = "barber" }, -/area/mine/laborcamp/security) -"cb" = ( -/obj/machinery/light_switch{ - name = "custom placement"; - pixel_y = 25 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 6 - }, -/obj/item/cigbutt, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ +/area/mine/laborcamp) +"cc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 4 }, -/turf/simulated/floor/plasteel{ - icon_state = "darkred" - }, -/area/mine/laborcamp/security) -"cc" = ( -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 9 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 9 - }, -/mob/living/simple_animal/bot/secbot/beepsky{ - desc = "Powered by the tears and sweat of laborers."; - name = "Prison Ofitser" - }, /turf/simulated/floor/plasteel{ - icon_state = "darkred" + icon_state = "barber" }, -/area/mine/laborcamp/security) +/area/mine/laborcamp) "cd" = ( -/obj/structure/table, -/obj/item/paper_bin{ - pixel_x = 1; - pixel_y = 9 - }, -/obj/item/pen, -/obj/machinery/power/apc{ - dir = 4; - name = "Labor Camp Security APC"; - pixel_x = 24 - }, -/obj/machinery/camera{ - c_tag = "Labor Camp Monitoring"; - network = list("Labor Camp") - }, -/obj/structure/cable{ - icon_state = "0-8" - }, /turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "darkredcorners" + icon_state = "barber" }, -/area/mine/laborcamp/security) +/area/mine/laborcamp) "ce" = ( /obj/machinery/power/smes{ charge = 5e+006 @@ -966,15 +906,13 @@ /turf/simulated/floor/plating, /area/mine/laborcamp) "ci" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/chair{ - dir = 4 +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 }, /turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "darkred" + icon_state = "barber" }, -/area/mine/laborcamp/security) +/area/mine/laborcamp) "cj" = ( /obj/machinery/door/airlock/external{ frequency = 1379; @@ -1097,6 +1035,9 @@ /area/mine/production) "cy" = ( /obj/effect/baseturf_helper/lava_land/surface, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, /turf/simulated/floor/plasteel, /area/mine/laborcamp) "cz" = ( @@ -1111,16 +1052,16 @@ /area/mine/laborcamp) "cA" = ( /obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - tag = "" + icon_state = "4-8" }, /turf/simulated/floor/plating, /area/mine/laborcamp) "cB" = ( /obj/effect/decal/cleanable/cobweb2, /obj/machinery/atmospherics/portable/canister/air, +/obj/item/radio/intercom/locked/prison{ + pixel_y = 24 + }, /turf/simulated/floor/plating, /area/mine/laborcamp) "cC" = ( @@ -1128,7 +1069,6 @@ anchored = 1 }, /obj/structure/cable{ - d2 = 8; icon_state = "0-8" }, /turf/simulated/floor/plating, @@ -2833,14 +2773,17 @@ }, /area/mine/living_quarters) "gu" = ( -/obj/machinery/door/airlock/external{ - id_tag = "laborcamp_away"; - name = "Labor Camp Airlock"; - req_access_txt = "2" +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 }, -/obj/structure/fans/tiny, -/turf/simulated/floor/plasteel, -/area/mine/laborcamp) +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/mine/laborcamp/security) "gv" = ( /obj/machinery/door/airlock/external{ glass = 1; @@ -3030,10 +2973,6 @@ /turf/simulated/floor/indestructible/boss, /area/lavaland/surface/outdoors) "hj" = ( -/obj/machinery/flasher{ - id = "gulagshuttleflasher"; - pixel_x = 25 - }, /obj/machinery/light{ dir = 4 }, @@ -3050,18 +2989,13 @@ /area/lavaland/surface/outdoors) "hv" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 4 - }, -/obj/machinery/alarm{ - dir = 1; - name = "custom placement"; - pixel_y = -22 - }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 5 }, /obj/machinery/light/small, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "darkred" @@ -3100,18 +3034,16 @@ /turf/simulated/floor/indestructible/boss, /area/lavaland/surface/outdoors) "hQ" = ( -/obj/machinery/door/airlock/external{ - id_tag = "laborcamp_away"; - name = "Labor Camp Airlock"; - req_access_txt = null; - req_one_access_txt = null +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/item/radio/intercom/locked/prison{ + pixel_y = -28 }, -/obj/structure/fans/tiny, /turf/simulated/floor/plasteel, /area/mine/laborcamp) "ic" = ( /obj/effect/decal/cleanable/dirt, -/obj/item/cigbutt, /obj/machinery/atmospherics/unary/vent_scrubber/on, /turf/simulated/floor/plasteel{ dir = 4; @@ -3167,6 +3099,12 @@ /obj/structure/stone_tile/cracked, /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) +"iB" = ( +/obj/machinery/mineral/labor_prisoner_shuttle_console{ + pixel_y = 32 + }, +/turf/simulated/floor/mineral/titanium, +/area/shuttle/siberia) "iC" = ( /obj/structure/stone_tile/block{ dir = 1 @@ -3213,9 +3151,6 @@ "jf" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/arrows, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, /obj/machinery/mineral/labor_points_checker{ pixel_y = -32 }, @@ -3273,6 +3208,16 @@ }, /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) +"jn" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plasteel, +/area/mine/laborcamp) "jp" = ( /obj/machinery/camera{ c_tag = "Labor Camp Breakroom"; @@ -3698,11 +3643,26 @@ }, /turf/simulated/floor/plating/lava/smooth/lava_land_surface, /area/lavaland/surface/outdoors) +"mi" = ( +/obj/machinery/computer/security{ + dir = 4; + network = list("Labor Camp") + }, +/obj/machinery/alarm{ + dir = 4; + name = "custom placement"; + pixel_x = -23 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/mine/laborcamp/security) "mj" = ( /obj/item/clothing/under/color/orange, /obj/effect/decal/cleanable/ash, /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors) +/area/lavaland/surface/outdoors/explored) "mk" = ( /obj/structure/stone_tile/block/cracked{ dir = 8 @@ -4068,13 +4028,6 @@ }, /turf/simulated/floor/indestructible/boss, /area/lavaland/surface/outdoors) -"nT" = ( -/obj/machinery/mineral/stacking_machine/laborstacker{ - input_dir = 2; - output_dir = 1 - }, -/turf/simulated/floor/plasteel/dark, -/area/shuttle/siberia) "on" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -4084,6 +4037,10 @@ }, /turf/simulated/floor/plasteel, /area/mine/living_quarters) +"op" = ( +/obj/structure/closet/secure_closet/brig/gulag, +/turf/simulated/floor/plasteel, +/area/mine/laborcamp) "oA" = ( /obj/effect/decal/cleanable/cobweb2, /obj/machinery/atmospherics/unary/tank/air{ @@ -4110,12 +4067,14 @@ /turf/simulated/floor/mineral/titanium, /area/shuttle/siberia) "pt" = ( -/obj/machinery/mineral/labor_claim_console{ - pixel_x = 30; - pixel_y = 30 +/obj/item/radio/intercom/locked/prison{ + pixel_y = -28 }, -/turf/simulated/floor/mineral/plastitanium/red, -/area/shuttle/siberia) +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkredcorners" + }, +/area/mine/laborcamp/security) "qw" = ( /obj/effect/decal/cleanable/dirt, /obj/item/cigbutt, @@ -4140,16 +4099,15 @@ icon_state = "brown" }, /area/mine/laborcamp) -"qL" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 1 - }, -/turf/simulated/floor/mineral/plastitanium/red, -/area/shuttle/siberia) "qT" = ( /obj/effect/spawner/random_spawners/wall_rusted_always, /turf/simulated/wall, /area/mine/laborcamp) +"rd" = ( +/obj/structure/closet/secure_closet/brig/gulag, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/mine/laborcamp) "rj" = ( /obj/structure/chair{ dir = 8 @@ -4196,6 +4154,13 @@ }, /turf/simulated/floor/plasteel, /area/mine/living_quarters) +"sv" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/closet/secure_closet/brig/gulag, +/turf/simulated/floor/plasteel, +/area/mine/laborcamp) "sF" = ( /obj/machinery/door/airlock, /turf/simulated/floor/plasteel/white, @@ -4208,37 +4173,29 @@ /area/mine/living_quarters) "sO" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/computer/security{ - dir = 4; - network = list("Labor Camp") - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 9 - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "darkredcorners" - }, -/area/mine/laborcamp/security) -"sP" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 4 - }, -/obj/machinery/light/small{ - dir = 1 - }, +/obj/structure/table, +/obj/item/storage/firstaid/ancient, +/obj/item/stack/medical/bruise_pack/advanced, /turf/simulated/floor/plasteel{ icon_state = "barber" }, /area/mine/laborcamp) +"sP" = ( +/obj/machinery/computer/secure_data{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkredcorners" + }, +/area/mine/laborcamp/security) "sR" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 8 + dir = 4 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 10 + dir = 6 }, /turf/simulated/floor/plasteel, /area/mine/laborcamp) @@ -4249,10 +4206,6 @@ "tj" = ( /obj/effect/decal/cleanable/ash, /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors) -"ty" = ( -/obj/structure/lattice/catwalk, -/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors/explored) "tC" = ( /obj/machinery/camera{ @@ -4275,7 +4228,12 @@ /turf/simulated/floor/plasteel/freezer, /area/mine/living_quarters) "tJ" = ( -/obj/machinery/light/small, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, /turf/simulated/floor/plasteel{ icon_state = "brown" }, @@ -4289,6 +4247,9 @@ /obj/machinery/atmospherics/pipe/manifold/visible/cyan{ dir = 1 }, +/obj/item/radio/intercom/locked/prison{ + pixel_y = 24 + }, /turf/simulated/floor/plasteel, /area/mine/laborcamp) "tZ" = ( @@ -4306,24 +4267,51 @@ /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 }, +/obj/item/radio/intercom/locked/prison{ + pixel_y = 24 + }, /turf/simulated/floor/wood{ icon_state = "wood-broken6" }, /area/mine/laborcamp) "ug" = ( /obj/item/cigbutt, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "brown" +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, /area/mine/laborcamp) "uL" = ( +/obj/effect/spawner/window/reinforced, /obj/machinery/flasher{ id = "labor" }, -/obj/effect/spawner/window/reinforced, /turf/simulated/floor/plating, /area/mine/laborcamp) +"vf" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "Labor Camp Security APC"; + pixel_y = -24 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/mine/laborcamp/security) "vk" = ( /obj/machinery/door/airlock/titanium{ name = "Labor Shuttle Airlock"; @@ -4341,6 +4329,9 @@ /obj/item/lighter/random{ pixel_x = 2 }, +/obj/item/radio/intercom/locked/prison{ + pixel_y = 24 + }, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "darkred" @@ -4358,6 +4349,13 @@ icon_state = "darkred" }, /area/mine/laborcamp) +"vK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plasteel, +/area/mine/laborcamp) "vZ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -4382,7 +4380,7 @@ "wD" = ( /obj/effect/decal/remains/human, /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors) +/area/lavaland/surface/outdoors/explored) "wP" = ( /obj/structure/shuttle/engine/heater, /obj/structure/window/reinforced{ @@ -4394,7 +4392,15 @@ "wY" = ( /obj/item/clothing/mask/gas/clown_hat, /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors) +/area/lavaland/surface/outdoors/explored) +"xh" = ( +/obj/machinery/computer/prisoner{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkredcorners" + }, +/area/mine/laborcamp/security) "xo" = ( /obj/structure/shuttle/engine/propulsion/burst, /turf/simulated/floor/plating/airless, @@ -4403,7 +4409,6 @@ /obj/machinery/light/small{ dir = 1 }, -/obj/machinery/atmospherics/unary/vent_pump/on, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "brown" @@ -4418,14 +4423,6 @@ "xC" = ( /turf/simulated/wall/mineral/titanium, /area/shuttle/mining) -"xL" = ( -/obj/machinery/atmospherics/unary/outlet_injector/on{ - dir = 4; - name = "scrubber outlet" - }, -/obj/structure/lattice/catwalk, -/turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, -/area/mine/laborcamp/security) "xM" = ( /obj/structure/ore_box, /obj/machinery/light/small{ @@ -4443,11 +4440,19 @@ "ym" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/item/cigbutt, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "darkred" }, /area/mine/laborcamp) +"yw" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/turf/simulated/floor/plasteel, +/area/mine/laborcamp) "yR" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 8 @@ -4479,6 +4484,33 @@ }, /turf/simulated/floor/plasteel, /area/mine/production) +"zY" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/machinery/camera{ + c_tag = "Labor Camp Lockers"; + network = list("Labor Camp"); + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel, +/area/mine/laborcamp) +"Ab" = ( +/obj/machinery/light_switch{ + name = "custom placement"; + pixel_y = 25 + }, +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = 1; + pixel_y = 9 + }, +/obj/item/pen, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/mine/laborcamp/security) "AB" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -4496,6 +4528,12 @@ }, /turf/simulated/wall, /area/mine/living_quarters) +"BP" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 8 + }, +/turf/simulated/floor/mineral/plastitanium/red, +/area/shuttle/siberia) "BT" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -4508,39 +4546,54 @@ }, /turf/simulated/floor/plasteel, /area/mine/living_quarters) -"BY" = ( -/obj/machinery/computer/shuttle/labor, -/turf/simulated/floor/mineral/plastitanium/red, -/area/shuttle/siberia) +"Ca" = ( +/obj/machinery/vending/cola/free, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/mine/laborcamp) "Cf" = ( /turf/simulated/floor/mineral/titanium, /area/shuttle/mining) "Cy" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 10; - icon_state = "brown" +/obj/machinery/door/airlock{ + name = "Labor Camp Prisoner Lockers" }, +/obj/machinery/door/poddoor/preopen{ + id_tag = "Labor"; + name = "labor camp blast door" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plasteel, /area/mine/laborcamp) "CF" = ( /obj/structure/closet/crate, /turf/simulated/floor/mineral/titanium/blue, /area/shuttle/mining) +"CI" = ( +/obj/effect/decal/cleanable/dirt, +/mob/living/simple_animal/bot/secbot/beepsky{ + desc = "Powered by the tears and sweat of laborers."; + name = "Prison Ofitser" + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkfull" + }, +/area/mine/laborcamp/security) "CK" = ( /obj/structure/closet/crate, /turf/simulated/floor/mineral/titanium, /area/shuttle/siberia) -"CT" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "brown" - }, -/area/mine/laborcamp) "Dd" = ( /obj/structure/toilet, /obj/effect/decal/cleanable/vomit, @@ -4559,14 +4612,29 @@ /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 }, +/obj/item/radio/intercom/locked/prison{ + pixel_y = 24 + }, /turf/simulated/floor/wood{ icon_state = "wood-broken6" }, /area/mine/laborcamp) +"Dm" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/mine/laborcamp/security) +"DT" = ( +/obj/machinery/computer/shuttle/labor/one_way, +/obj/effect/decal/cleanable/cobweb, +/turf/simulated/floor/plasteel, +/area/mine/laborcamp) "DX" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 9 +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 }, /turf/simulated/floor/plasteel, /area/mine/laborcamp) @@ -4585,16 +4653,14 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/wall, /area/mine/living_quarters) -"Eq" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, +"EF" = ( +/obj/effect/baseturf_helper/lava_land/surface, +/obj/item/cigbutt, /turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "brown" + dir = 1; + icon_state = "darkfull" }, -/area/mine/laborcamp) +/area/mine/laborcamp/security) "EG" = ( /obj/structure/cable{ icon_state = "4-8" @@ -4667,47 +4733,44 @@ /obj/item/clothing/shoes/orange, /obj/effect/decal/cleanable/ash, /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors) +/area/lavaland/surface/outdoors/explored) +"Hc" = ( +/obj/machinery/door/airlock/external{ + id_tag = "laborcamp_away"; + name = "Labor Camp Airlock"; + req_access_txt = "2" + }, +/obj/structure/fans/tiny, +/turf/simulated/floor/plating, +/area/mine/laborcamp/security) "Hi" = ( /obj/structure/bedsheetbin, /obj/structure/table, /turf/simulated/floor/plasteel, /area/mine/laborcamp) -"Hj" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 6 - }, -/turf/simulated/floor/plasteel, -/area/mine/laborcamp) "HA" = ( /obj/machinery/atmospherics/binary/pump/on, /turf/simulated/floor/plasteel{ icon_state = "brown" }, /area/mine/laborcamp) -"HJ" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "brown" - }, -/area/mine/laborcamp) "HK" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 5 - }, +/obj/effect/decal/cleanable/dirt, /obj/machinery/light/small{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 5 - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "brown" +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 }, +/turf/simulated/floor/plasteel, /area/mine/laborcamp) +"HN" = ( +/obj/machinery/door/airlock/security/glass{ + name = "Labor Camp Security"; + req_access_txt = "2" + }, +/turf/simulated/floor/plasteel, +/area/mine/laborcamp/security) "Ia" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 4 @@ -4715,7 +4778,10 @@ /turf/simulated/floor/plasteel, /area/mine/laborcamp) "Il" = ( -/obj/machinery/vending/cola/free, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/item/trash/sosjerky, /turf/simulated/floor/plasteel/dark, /area/mine/laborcamp) "Iv" = ( @@ -4725,6 +4791,13 @@ }, /turf/simulated/floor/mineral/titanium/blue, /area/shuttle/mining) +"IF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/plasteel, +/area/mine/laborcamp) "IK" = ( /obj/structure/toilet{ dir = 8 @@ -4779,7 +4852,7 @@ /area/mine/laborcamp) "JV" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/vending/sustenance, +/obj/item/cigbutt, /turf/simulated/floor/plasteel/dark, /area/mine/laborcamp) "JX" = ( @@ -4817,19 +4890,20 @@ /turf/simulated/floor/plasteel/white, /area/mine/laborcamp) "KR" = ( -/obj/machinery/mineral/labor_claim_console{ - machinedir = 1; - pixel_x = 30 +/obj/machinery/flasher{ + id = "gulagshuttleflasher"; + pixel_x = 25 }, /turf/simulated/floor/mineral/titanium, /area/shuttle/siberia) "Lz" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 8 +/obj/machinery/atmospherics/unary/outlet_injector/on{ + dir = 4; + name = "scrubber outlet" }, /obj/structure/lattice/catwalk, /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, -/area/mine/laborcamp/security) +/area/mine/laborcamp) "LO" = ( /obj/effect/spawner/window, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -4854,11 +4928,11 @@ }, /area/mine/laborcamp) "ME" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 }, /turf/simulated/floor/plasteel{ dir = 9; @@ -4869,8 +4943,9 @@ /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "1-2" }, /turf/simulated/floor/plasteel, /area/mine/laborcamp) @@ -4880,7 +4955,7 @@ dir = 8 }, /turf/simulated/floor/plating, -/area/mine/laborcamp/security) +/area/mine/laborcamp) "Nj" = ( /obj/machinery/door/airlock{ name = "Restroom" @@ -4907,9 +4982,6 @@ /obj/structure/mirror{ pixel_x = -28 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 5 - }, /turf/simulated/floor/plasteel/white, /area/mine/laborcamp) "NP" = ( @@ -4933,11 +5005,65 @@ icon_state = "brown" }, /area/mine/laborcamp) +"Ov" = ( +/obj/machinery/camera{ + c_tag = "Labor Camp Monitoring"; + network = list("Labor Camp"); + dir = 6 + }, +/obj/structure/chair/office/dark{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/mine/laborcamp/security) +"OE" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/mine/laborcamp/security) "OF" = ( /obj/item/card/id/prisoner/random, /obj/effect/decal/cleanable/ash, /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors) +/area/lavaland/surface/outdoors/explored) +"OU" = ( +/obj/machinery/door_control{ + id = "Labor"; + name = "Labor Camp Lockdown"; + pixel_y = -25; + req_access_txt = "2" + }, +/obj/machinery/flasher_button{ + id = "labor"; + pixel_y = -34 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkredcorners" + }, +/area/mine/laborcamp/security) +"PK" = ( +/obj/structure/closet/secure_closet/brig/gulag, +/obj/machinery/flasher{ + id = "labor"; + pixel_y = 32 + }, +/turf/simulated/floor/plasteel, +/area/mine/laborcamp) "PQ" = ( /obj/effect/spawner/window, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -4946,13 +5072,16 @@ "PX" = ( /turf/simulated/wall, /area/mine/laborcamp/security) +"Ql" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel, +/area/mine/laborcamp) "QE" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/light/small{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/alarm{ dir = 4; name = "custom placement"; @@ -4963,6 +5092,15 @@ icon_state = "brown" }, /area/mine/laborcamp) +"QR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel, +/area/mine/laborcamp) "Rd" = ( /obj/structure/rack, /obj/item/storage/bag/ore, @@ -4971,13 +5109,13 @@ /obj/item/mining_scanner, /obj/effect/decal/cleanable/dirt, /obj/item/clothing/mask/breath, -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 4 - }, /obj/item/clothing/head/beanie/orange, /obj/item/clothing/gloves/fingerless, /obj/item/clothing/shoes/workboots, /obj/item/clothing/suit/storage/hazardvest, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "brown" @@ -5003,14 +5141,6 @@ icon_state = "brown" }, /area/mine/laborcamp) -"Tj" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/camera{ - c_tag = "Labor Camp Central"; - network = list("Labor Camp") - }, -/turf/simulated/floor/plasteel, -/area/mine/laborcamp) "Tk" = ( /obj/machinery/camera{ c_tag = "Labor Camp Bedroom 1"; @@ -5049,6 +5179,16 @@ }, /turf/simulated/wall/r_wall, /area/mine/maintenance) +"TU" = ( +/obj/machinery/door/airlock/external{ + id_tag = "laborcamp_away"; + name = "Labor Camp Airlock"; + req_access_txt = null; + req_one_access_txt = null + }, +/obj/structure/fans/tiny, +/turf/simulated/floor/plating, +/area/mine/laborcamp) "Uh" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/cable{ @@ -5078,13 +5218,12 @@ /turf/simulated/floor/plasteel, /area/mine/production) "Vt" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ +/obj/machinery/camera{ + c_tag = "Labor Camp Central"; + network = list("Labor Camp"); dir = 4 }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "brown" - }, +/turf/simulated/floor/plasteel, /area/mine/laborcamp) "Vu" = ( /obj/structure/chair/comfy/shuttle{ @@ -5118,14 +5257,18 @@ /turf/simulated/floor/plasteel, /area/mine/production) "VJ" = ( -/obj/machinery/computer/secure_data{ +/obj/structure/table, +/obj/item/stack/medical/bruise_pack/advanced, +/obj/item/storage/firstaid/ancient, +/obj/machinery/camera{ + c_tag = "Labor Camp Infirmary"; + network = list("Labor Camp"); dir = 8 }, /turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "darkredcorners" + icon_state = "barber" }, -/area/mine/laborcamp/security) +/area/mine/laborcamp) "VN" = ( /obj/structure/bed, /obj/effect/decal/cleanable/dirt, @@ -5146,12 +5289,6 @@ }, /turf/simulated/floor/mineral/titanium, /area/shuttle/mining) -"Wt" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 8 - }, -/turf/simulated/floor/plasteel, -/area/mine/laborcamp) "Ww" = ( /obj/machinery/hologram/holopad, /turf/simulated/floor/plasteel, @@ -5181,14 +5318,44 @@ }, /turf/simulated/floor/plating, /area/mine/living_quarters) +"WP" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" + }, +/area/mine/laborcamp/security) "Xd" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "brown" }, /area/mine/laborcamp) +"Xq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/turf/simulated/floor/plasteel/white, +/area/mine/laborcamp) +"Xr" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/plasteel, +/area/mine/laborcamp) +"Yb" = ( +/obj/effect/spawner/random_spawners/wall_rusted_always, +/turf/simulated/wall, +/area/mine/laborcamp/security) +"YI" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/plasteel, +/area/mine/laborcamp) "YJ" = ( /obj/machinery/door/airlock{ name = "Labor Camp Storage" @@ -5198,14 +5365,20 @@ /turf/simulated/floor/plasteel, /area/mine/laborcamp) "YV" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/machinery/atmospherics/unary/vent_scrubber/on{ +/obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 }, /turf/simulated/floor/plasteel{ - dir = 1; + icon_state = "barber" + }, +/area/mine/laborcamp) +"YW" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plasteel{ + dir = 4; icon_state = "darkred" }, /area/mine/laborcamp/security) @@ -5230,18 +5403,25 @@ "Zk" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 4 + dir = 8 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, /turf/simulated/floor/plasteel, /area/mine/laborcamp) -"ZZ" = ( -/obj/effect/spawner/window/reinforced, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 +"Zv" = ( +/obj/machinery/vending/sustenance, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkred" }, -/turf/simulated/floor/plating, /area/mine/laborcamp) +"ZZ" = ( +/obj/effect/decal/cleanable/fungus, +/turf/simulated/wall, +/area/mine/laborcamp/security) (1,1,1) = {" aa @@ -6744,7 +6924,7 @@ aj aj ab ai -aD +ab ab aj aj @@ -6996,10 +7176,10 @@ aj ab aj aj -aw -aw +aj +aj +ab ab -aD ab aj aj @@ -7139,7 +7319,7 @@ ak ak ak ak -ad +ab aj ab ab @@ -7252,8 +7432,8 @@ ab aj aj aj -aw -aw +aj +aj aj aj aj @@ -7509,17 +7689,17 @@ aj aj aj aj -aw -aw aj aj -aw -aw aj aj -aw aj -ab +aj +aj +aj +aj +aj +aj aj aj aj @@ -7765,19 +7945,19 @@ ab aj aj aj -aw -aw -aw -aw -aw -aw -aw -aw -aw -aw -aw -aw -aw +aj +aj +aj +kI +kI +NW +kI +kI +NW +kI +kI +kI +aj aj aj aj @@ -8020,22 +8200,22 @@ aj aj aj aj +aj +aj +ab +aj +aj +NW aw -aw -aD -aw -aw -aw -aw -aw -aw -aw -aw -aw -aw -aw -aw -aw +Bg +vk +pq +Uy +CK +wP +wt +aj +aj ab aj aj @@ -8278,24 +8458,24 @@ aj aj aj aj -aw -aw -aw -aD -aw -aw -aw -aw -aw -aD -aw -aw -aD -aw -aw -aw aj -aw +aj +aj +ab +NW +BP +Bg +kI +iB +pq +pq +wP +wt +aj +aj +aj +aj +aj aj aj aj @@ -8534,21 +8714,21 @@ aj aj tj aj -ab +aD +aj +aj +aj aj -aw -aw -aw -kI -kI NW +Wx +hf kI -kI -NW -kI -kI -kI -aw +KR +hj +pq +wP +wt +aj aj aj aj @@ -8792,21 +8972,21 @@ aj mj tj wY -aw -aw -aw -aw -NW -BY -Bg -vk -pq -Uy -CK -wP -wt -aw -aw +aj +aj +aj +aj +kI +kI +FW +kI +kI +kI +bO +kI +kI +aj +aj ab aj aj @@ -9046,25 +9226,25 @@ aj aj aj aj -ab +aD OF wD -aw -aw -aw -aw -NW -qL -hf -kI -pq -pq -pq -wP -wt -aw -aw -aw +aj +aj +cG +cG +PX +PX +Hc +PX +aq +aq +TU +aq +aj +aj +aj +aj aj aj aj @@ -9304,22 +9484,22 @@ aj aj aj tj -ab +aD GF aj -aw -aw -aw -NW -Wx +aj +cG +xh +mi +YW pt -nT -KR -hj -pq -wP -wt -aw +PX +DT +zY +JZ +aq +aj +aj aj aj aj @@ -9558,26 +9738,26 @@ aj aj aj aj -ab +aD qT ap ap ap qT -aw -aw -aw -kI -kI -FW -kI -kI -kI -bO -kI -kI -xL -ab +qT +Yb +Ov +OE +WP +vf +PX +rd +Xr +yw +aq +aj +aj +aj aj aj aj @@ -9815,26 +9995,26 @@ ab aj aj aj -ab -tZ +aD +aq vw zo Kl -qT -qT -qT -aq -tZ -aq +Zv +Ca +PX +Ab +EF +CI gu -aq -aq -aq +PX +PK +JZ hQ aq -ty Lz -fB +aj +aj aj aj aj @@ -10079,21 +10259,21 @@ wh wh JV Il -tZ +PX aK aP -aq +Dm aZ -aq -ao -aq +HN +JZ +YI aJ aq -PX Ni -PX +aq +aq +aj aj -aD aj ab ai @@ -10330,25 +10510,25 @@ an an aj aj -qT +tZ vI ic ym jp hv -aq +ZZ sP aQ -aq -gu -aq -bk -aq -hQ +OE +OU +PX +op +sv +jn aq bZ sO -cG +ap aj aj aj @@ -10593,19 +10773,19 @@ qT qT qT Vz -qT -aL +PX +PX ZZ -tZ +PX ba +PX +aq aq -bj -HJ Cy aq ca YV -cG +ap aj aj aj @@ -10851,18 +11031,18 @@ NG qT ME QE -CT -Eq +xR +bk HK ug Vt -xR JZ +vK tJ aq cb bh -cG +ap aj aj aj @@ -11103,23 +11283,23 @@ qT qT GD YY -as +Xq ax aB Xd -bk -JZ -bk +Ql +hA +Ql aU bb Zk Ne -hA +QR by bL cc ci -cG +ap aj aj aj @@ -11366,9 +11546,9 @@ aq aE JZ uL -Tj JZ -Wt +IF +bk cy bn Oh @@ -11376,7 +11556,7 @@ rS qT cd VJ -cG +ap aj aj aj @@ -11626,7 +11806,7 @@ JZ JZ JZ JZ -JZ +Vv bl aq bA @@ -11883,7 +12063,7 @@ aM wg JZ bk -JZ +Vv jf aq bz @@ -12140,7 +12320,7 @@ aV aS aW be -Hj +Vv bm aq bB @@ -15486,7 +15666,7 @@ an an an an -aD +aj aj aj cM @@ -15742,8 +15922,8 @@ an an an an -aD -aD +ab +aj aj aj cM @@ -15999,8 +16179,8 @@ an an an an -aD -aD +ab +aj aj aj cM @@ -16256,8 +16436,8 @@ an an an an -aD -aD +ab +aj aj ab cM @@ -16512,8 +16692,8 @@ an an an an -aD -aD +ab +ab aj aj ab @@ -16766,10 +16946,10 @@ an an an an -aD -aD -aD -aw +ab +ab +ab +aj aj aj aj @@ -17021,10 +17201,10 @@ aj aj aj aj -aD -aD -aD -aD +ab +ab +ab +ab aj aj aj @@ -17284,7 +17464,7 @@ aj aj aj aj -ab +aj aj aj aj diff --git a/code/game/machinery/computer/prisoner.dm b/code/game/machinery/computer/prisoner.dm index d9319fb6ebd..866110f9ef5 100644 --- a/code/game/machinery/computer/prisoner.dm +++ b/code/game/machinery/computer/prisoner.dm @@ -5,11 +5,11 @@ icon = 'icons/obj/computer.dmi' icon_keyboard = "security_key" icon_screen = "explosive" - req_access = list(ACCESS_ARMORY) + req_access = list(ACCESS_BRIG) circuit = /obj/item/circuitboard/prisoner var/authenticated = FALSE // FALSE - No Access Denied, TRUE - Access allowed - var/obj/item/card/id/prisoner/inserted_id + var/inserted_id_uid light_color = LIGHT_COLOR_DARKRED @@ -21,13 +21,25 @@ GLOB.prisoncomputer_list -= src return ..() +/obj/machinery/computer/prisoner/attackby(obj/item/O, mob/user, params) + var/datum/ui_login/state = ui_login_get() + if(state.logged_in) + var/obj/item/card/id/prisoner/I = O + if(istype(I) && user.drop_item()) + I.forceMove(src) + inserted_id_uid = I.UID() + return + if(ui_login_attackby(O, user)) + return + return ..() + /obj/machinery/computer/prisoner/attack_ai(mob/user) ui_interact(user) /obj/machinery/computer/prisoner/attack_hand(mob/user) if(..()) return TRUE - + add_fingerprint(user) ui_interact(user) /obj/machinery/computer/prisoner/proc/check_implant(obj/item/implant/I) @@ -41,15 +53,16 @@ /obj/machinery/computer/prisoner/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = TRUE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state) ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) if(!ui) - ui = new(user, src, ui_key, "PrisonerImplantManager", name, 475, 500, master_ui, state) + ui = new(user, src, ui_key, "PrisonerImplantManager", name, 500, 500, master_ui, state) ui.open() /obj/machinery/computer/prisoner/ui_data(mob/user) var/list/data = list() ui_login_data(data, user) + var/obj/item/card/id/prisoner/inserted_id = locateUID(inserted_id_uid) data["prisonerInfo"] = list( "name" = inserted_id?.name, - "points" = inserted_id?.points, + "points" = inserted_id?.mining_points, "goal" = inserted_id?.goal, ) @@ -97,7 +110,7 @@ if(..()) return - add_fingerprint(usr) + add_fingerprint(ui.user) if(ui_act_modal(action, params, ui)) return @@ -105,19 +118,18 @@ return var/mob/living/user = ui.user - - - + var/obj/item/card/id/prisoner/inserted_id = locateUID(inserted_id_uid) switch(action) if("id_card") if(inserted_id) - inserted_id.forceMove(loc) - inserted_id = null + if(!ui.user.put_in_hands(inserted_id)) + inserted_id.forceMove(get_turf(src)) + inserted_id_uid = null return var/obj/item/card/id/prisoner/I = user.get_active_hand() if(istype(I) && user.drop_item()) I.forceMove(src) - inserted_id = I + inserted_id_uid = I.UID() else to_chat(user, "No valid ID.") if("inject") @@ -127,8 +139,7 @@ implant.activate(text2num(params["amount"])) if("reset_points") if(inserted_id) - inserted_id.points = 0 - + inserted_id.mining_points = 0 /obj/machinery/computer/prisoner/proc/ui_act_modal(action, list/params, datum/tgui/ui) if(!ui_login_get().logged_in) @@ -137,6 +148,7 @@ var/id = params["id"] var/mob/living/user = ui.user var/list/arguments = istext(params["arguments"]) ? json_decode(params["arguments"]) : params["arguments"] + switch(ui_modal_act(src, action, params)) if(UI_MODAL_OPEN) switch(id) @@ -146,8 +158,7 @@ )) if("set_points") ui_modal_input(src, id, "Please enter the new point goal:", null, arguments) - else - return FALSE + if(UI_MODAL_ANSWER) var/answer = params["answer"] switch(id) @@ -163,11 +174,11 @@ var/mob/living/carbon/implantee = implant.imp_in var/warning = copytext(sanitize(text2num(answer)), 1, MAX_MESSAGE_LEN) to_chat(implantee, "Your skull vibrates violently as a loud announcement is broadcasted to you: '[warning]'") + if("set_points") if(isnull(text2num(answer))) return - inserted_id.goal = max(text2num(answer), 0) - else - return FALSE - else - return FALSE + var/obj/item/card/id/prisoner/inserted_id = locateUID(inserted_id_uid) + inserted_id?.goal = max(text2num(answer), 0) + + return FALSE diff --git a/code/game/objects/items/weapons/cards_ids.dm b/code/game/objects/items/weapons/cards_ids.dm index 79b4779d9de..62e54e713e8 100644 --- a/code/game/objects/items/weapons/cards_ids.dm +++ b/code/game/objects/items/weapons/cards_ids.dm @@ -657,10 +657,11 @@ assignment = "Prisoner" registered_name = "Scum" var/goal = 0 //How far from freedom? - var/points = 0 -/obj/item/card/id/prisoner/attack_self(mob/user as mob) - to_chat(usr, "You have accumulated [points] out of the [goal] points you need for freedom.") +/obj/item/card/id/prisoner/examine(mob/user) + . = ..() + if(goal) + . += "\nYou have accumulated [mining_points] out of the [goal] points assigned to gain freedom." /obj/item/card/id/prisoner/one name = "Prisoner #13-001" diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm index 5b138de31cb..90d1e0590d8 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -304,6 +304,39 @@ new /obj/item/card/id/prisoner/random(src) new /obj/item/radio/headset(src) +/obj/structure/closet/secure_closet/brig/gulag + name = "labor camp locker" + desc = "A special locker designed to store prisoner belongings, allows access when prisoners meet their point quota." + locked = FALSE + var/registered_ID_UID + +/obj/structure/closet/secure_closet/brig/gulag/allowed(mob/M) + . = ..() + if(.) //we were gonna let them do it anyway + return TRUE + + for(var/obj/item/card/id/prisoner/prisoner_id in M) //they might have a stash of them + if(!prisoner_id.goal) + continue //no goal? no interaction + + if(locked && registered_ID_UID && !(prisoner_id.UID() == registered_ID_UID)) + continue //you don't own this! + + if(!locked) + registered_ID_UID = prisoner_id.UID() + return TRUE //they are trying to lock it, so let them + + if(prisoner_id.mining_points >= prisoner_id.goal) + registered_ID_UID = null + return TRUE //completed goal? do the interaction + + return FALSE //if we didn't match above, no interaction for you + +/obj/structure/closet/secure_closet/brig/gulag/examine(mob/user) + . = ..() + if(registered_ID_UID) + var/obj/item/card/id/prisoner/prisoner_id = locateUID(registered_ID_UID) + . += "\nOwned by [prisoner_id.registered_name]." /obj/structure/closet/secure_closet/courtroom name = "courtroom locker" diff --git a/code/modules/mining/laborcamp/laborshuttle.dm b/code/modules/mining/laborcamp/laborshuttle.dm index 88b0a6601dc..2e0204d82d1 100644 --- a/code/modules/mining/laborcamp/laborshuttle.dm +++ b/code/modules/mining/laborcamp/laborshuttle.dm @@ -6,10 +6,180 @@ possible_destinations = "laborcamp_home;laborcamp_away" req_access = list(ACCESS_BRIG) - /obj/machinery/computer/shuttle/labor/one_way name = "prisoner shuttle console" desc = "A one-way shuttle console, used to summon the shuttle to the labor camp." possible_destinations = "laborcamp_away" circuit = /obj/item/circuitboard/labor_shuttle/one_way - req_access = list( ) + +/obj/machinery/computer/shuttle/labor/one_way/allowed(mob/M) + if(..()) + return TRUE + + for(var/obj/item/card/id/prisoner/prisoner_id in M) + if(!prisoner_id.goal) + continue //no goal? no shuttle + + if(prisoner_id.mining_points >= prisoner_id.goal) + return TRUE //completed goal? call it + + return FALSE //if we didn't match above, no shuttle call + +/**********************Prisoners' Console**************************/ + +/obj/machinery/mineral/labor_prisoner_shuttle_console + name = "prisoner shuttle controller" + desc = "A console used by released prisoners to move the shuttle." + icon = 'icons/obj/machines/mining_machines.dmi' + icon_state = "console" + density = FALSE + var/machinedir = SOUTH + var/inserted_id_uid + var/obj/item/radio/intercom/announcer + +/obj/machinery/mineral/labor_prisoner_shuttle_console/Initialize() + . = ..() + announcer = new /obj/item/radio/intercom(null) + announcer.config(list("Security" = 0)) + +/obj/machinery/mineral/labor_prisoner_shuttle_console/Destroy() + QDEL_NULL(announcer) + return ..() + +/obj/machinery/mineral/labor_prisoner_shuttle_console/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/card/id/prisoner)) + if(inserted_id_uid) + to_chat(user, "There's an ID inserted already.") + return + + if(!user.unEquip(I)) + return + + I.forceMove(src) + inserted_id_uid = I.UID() + to_chat(user, "You insert [I].") + SStgui.update_uis(src) + return + + return ..() + +/obj/machinery/mineral/labor_prisoner_shuttle_console/attack_hand(mob/user) + add_fingerprint(user) + ui_interact(user) + +/obj/machinery/mineral/labor_prisoner_shuttle_console/attack_ghost(mob/user) + attack_hand(user) + +/obj/machinery/mineral/labor_prisoner_shuttle_console/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state) + ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) + if(!ui) + ui = new(user, src, ui_key, "PrisonerShuttleConsole", name, 315, 150, master_ui, state) + ui.open() + +/obj/machinery/mineral/labor_prisoner_shuttle_console/ui_data(mob/user) + var/list/data = list() + var/obj/item/card/id/prisoner/inserted_id = locateUID(inserted_id_uid) + + data["emagged"] = emagged + data["id_inserted"] = !isnull(inserted_id) + if(inserted_id) + data["id_name"] = inserted_id.registered_name + data["id_points"] = inserted_id.mining_points + data["id_goal"] = inserted_id.goal + + data["can_go_home"] = check_auth() + + return data + +/obj/machinery/mineral/labor_prisoner_shuttle_console/ui_act(action, params, datum/tgui/ui) + if(..()) + return + var/obj/item/card/id/prisoner/inserted_id = locateUID(inserted_id_uid) + switch(action) + if("handle_id") + if(inserted_id) + if(!ui.user.put_in_hands(inserted_id)) + inserted_id.forceMove(get_turf(src)) + inserted_id_uid = null + return TRUE + + var/obj/item/I = ui.user.get_active_hand() + if(istype(I, /obj/item/card/id/prisoner)) + if(!ui.user.unEquip(I)) + return + I.forceMove(src) + inserted_id_uid = I.UID() + + if("move_shuttle") + if(!alone_in_area(get_area(src), ui.user)) + to_chat(ui.user, "Prisoners are only allowed to be released while alone.") + return TRUE + + switch(SSshuttle.moveShuttle("laborcamp", "laborcamp_home", TRUE, ui.user)) + if(1) + to_chat(ui.user, "Shuttle not found.") + if(2) + to_chat(ui.user, "Shuttle already at station.") + if(3) + to_chat(ui.user, "No permission to dock could be granted.") + else + if(!emagged) + var/message = "[inserted_id.registered_name] has returned to the station. Minerals and Prisoner ID card ready for retrieval." + announcer.autosay(message, "Labor Camp Controller", "Security") + sec_record_release(ui.user) + to_chat(ui.user, "Shuttle received message and will be sent shortly.") + ui.user.create_log(MISC_LOG, "used [src] to call the laborcamp shuttle") + + return TRUE + +/obj/machinery/mineral/labor_prisoner_shuttle_console/proc/sec_record_release(mob/living/carbon/human/target) + var/target_name = target?.get_visible_name(TRUE) + if(!target_name || target_name == "Unknown") + return //Do you have the slightest idea how little that narrows it down? + var/datum/data/record/R = find_record("name", target_name, GLOB.data_core.security) + if(!(R?.fields["criminal"] in list(SEC_RECORD_STATUS_INCARCERATED))) + return //stops cheese + set_criminal_status(target, R, SEC_RECORD_STATUS_RELEASED, "Automatically released upon reaching labor points quota", "Labor Camp Controller", user_name = "Automated System") + +/obj/machinery/mineral/labor_prisoner_shuttle_console/proc/check_auth() + if(emagged) + return TRUE //Shuttle is emagged, let any ol' person through + var/obj/item/card/id/prisoner/inserted_id = locateUID(inserted_id_uid) + if(!inserted_id?.goal) + return FALSE //ID not properly set up or not present, abort! + return (inserted_id.mining_points >= inserted_id.goal) //Otherwise, only let them out if the prisoner's reached his quota. + +/obj/machinery/mineral/labor_prisoner_shuttle_console/emag_act(mob/user) + if(!emagged) + emagged = TRUE + to_chat(user, "PZZTTPFFFT") + +/**********************Point Lookup Console**************************/ +/obj/machinery/mineral/labor_points_checker + name = "points checking console" + desc = "A console used by prisoners to check the progress on their quotas. Simply swipe a prisoner ID." + icon = 'icons/obj/machines/mining_machines.dmi' + icon_state = "console" + density = FALSE + +/obj/machinery/mineral/labor_points_checker/attack_hand(mob/user) + . = ..() + if(.) + return + user.examinate(src) + +/obj/machinery/mineral/labor_points_checker/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/card/id/prisoner)) + var/obj/item/card/id/prisoner/prisoner_id = I + if(!prisoner_id.goal) + to_chat(user, "Error: No point quota assigned by security, exiting.") + return + to_chat(user, "ID: [prisoner_id.registered_name]") + to_chat(user, "Points Collected:[prisoner_id.mining_points]") + to_chat(user, "Point Quota: [prisoner_id.goal]") + to_chat(user, "Collect points by bringing ore to the labor camp ore redemption machine. Reach your quota to earn your release.") + return + if(istype(I, /obj/item/card/id)) + to_chat(user, "Error: Invalid ID") + return + return ..() diff --git a/code/modules/mining/laborcamp/laborstacker.dm b/code/modules/mining/laborcamp/laborstacker.dm deleted file mode 100644 index f0b0871987f..00000000000 --- a/code/modules/mining/laborcamp/laborstacker.dm +++ /dev/null @@ -1,180 +0,0 @@ -/**********************Prisoners' Console**************************/ - -/obj/machinery/mineral/labor_claim_console - name = "point claim console" - desc = "A stacking console with an electromagnetic writer, used to track ore mined by prisoners." - icon = 'icons/obj/machines/mining_machines.dmi' - icon_state = "console" - density = FALSE - var/obj/machinery/mineral/stacking_machine/laborstacker/stacking_machine = null - var/machinedir = SOUTH - var/obj/item/card/id/prisoner/inserted_id - var/obj/machinery/door/airlock/release_door - var/door_tag = "prisonshuttle" - var/obj/item/radio/intercom/announcer - var/static/list/sheet_values - -/obj/machinery/mineral/labor_claim_console/Initialize() - . = ..() - announcer = new /obj/item/radio/intercom(null) - announcer.config(list("Security" = 0)) - - if(!sheet_values) - for(var/sheet_type in subtypesof(/obj/item/stack/sheet)) - var/obj/item/stack/sheet/sheet = sheet_type - if(!initial(sheet.point_value) || (initial(sheet.merge_type) && initial(sheet.merge_type) != sheet_type)) //ignore no-value sheets and x/fifty subtypes - continue - sheet_values += list(list("ore" = initial(sheet.name), "value" = initial(sheet.point_value))) - sheet_values = sortTim(sheet_values, /proc/cmp_sheet_list) - -/obj/machinery/mineral/labor_claim_console/Destroy() - . = ..() - QDEL_NULL(announcer) - -/proc/cmp_sheet_list(list/a, list/b) - return a["value"] - b["value"] - -/obj/machinery/mineral/labor_claim_console/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/card/id/prisoner)) - if(!inserted_id) - if(!user.unEquip(I)) - return - I.forceMove(src) - inserted_id = I - to_chat(user, "You insert [I].") - SStgui.update_uis(src) - return - else - to_chat(user, "There's an ID inserted already.") - return - return ..() - -/obj/machinery/mineral/labor_claim_console/attack_hand(mob/user) - ui_interact(user) - -/obj/machinery/mineral/labor_claim_console/attack_ghost(mob/user) - attack_hand(user) - -/obj/machinery/mineral/labor_claim_console/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state) - ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) - if(!ui) - ui = new(user, src, ui_key, "LaborClaimConsole", name, 315, 470, master_ui, state) - ui.open() - -/obj/machinery/mineral/labor_claim_console/ui_data(mob/user) - var/list/data = list() - var/can_go_home = FALSE - - data["emagged"] = emagged - data["id_inserted"] = inserted_id != null - if(inserted_id) - data["id_name"] = inserted_id.registered_name - data["id_points"] = inserted_id.mining_points - data["id_goal"] = inserted_id.goal - if(check_auth()) - can_go_home = TRUE - - if(stacking_machine) - data["unclaimed_points"] = stacking_machine.points - - data["ores"] = sheet_values - data["can_go_home"] = can_go_home - - return data - -/obj/machinery/mineral/labor_claim_console/ui_act(action, params) - if(..()) - return - - switch(action) - if("handle_id") - if(inserted_id) - if(!usr.put_in_hands(inserted_id)) - inserted_id.forceMove(get_turf(src)) - inserted_id = null - else - var/obj/item/I = usr.get_active_hand() - if(istype(I, /obj/item/card/id/prisoner)) - if(!usr.unEquip(I)) - return - I.forceMove(src) - inserted_id = I - if("claim_points") - if(!inserted_id) - return - inserted_id.mining_points += stacking_machine.points - stacking_machine.points = 0 - to_chat(usr, "Points transferred.") - if("move_shuttle") - if(!alone_in_area(get_area(src), usr)) - to_chat(usr, "Prisoners are only allowed to be released while alone.") - else - switch(SSshuttle.moveShuttle("laborcamp", "laborcamp_home", TRUE, usr)) - if(1) - to_chat(usr, "Shuttle not found.") - if(2) - to_chat(usr, "Shuttle already at station.") - if(3) - to_chat(usr, "No permission to dock could be granted.") - else - if(!emagged) - var/message = "[inserted_id.registered_name] has returned to the station. Minerals and Prisoner ID card ready for retrieval." - announcer.autosay(message, "Labor Camp Controller", "Security") - to_chat(usr, "Shuttle received message and will be sent shortly.") - usr.create_log(MISC_LOG, "used [src] to call the laborcamp shuttle") - - return TRUE - -/obj/machinery/mineral/labor_claim_console/proc/check_auth() - if(emagged) - return TRUE //Shuttle is emagged, let any ol' person through - return (istype(inserted_id) && inserted_id.mining_points >= inserted_id.goal) //Otherwise, only let them out if the prisoner's reached his quota. - -/obj/machinery/mineral/labor_claim_console/emag_act(mob/user) - if(!(emagged)) - emagged = TRUE - to_chat(user, "PZZTTPFFFT") - - -/**********************Prisoner Collection Unit**************************/ -/obj/machinery/mineral/stacking_machine/laborstacker - damage_deflection = 21 - var/points = 0 //The unclaimed value of ore stacked. - -/obj/machinery/mineral/stacking_machine/laborstacker/process_sheet(obj/item/stack/sheet/inp) - points += inp.point_value * inp.amount - ..() - -/obj/machinery/mineral/stacking_machine/laborstacker/attackby(obj/item/I, mob/living/user) - if(istype(I, /obj/item/stack/sheet) && user.canUnEquip(I)) - var/obj/item/stack/sheet/inp = I - points += inp.point_value * inp.amount - return - return ..() - -/**********************Point Lookup Console**************************/ -/obj/machinery/mineral/labor_points_checker - name = "points checking console" - desc = "A console used by prisoners to check the progress on their quotas. Simply swipe a prisoner ID." - icon = 'icons/obj/machines/mining_machines.dmi' - icon_state = "console" - density = FALSE - -/obj/machinery/mineral/labor_points_checker/attack_hand(mob/user) - . = ..() - if(.) - return - user.examinate(src) - -/obj/machinery/mineral/labor_points_checker/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/card/id)) - if(istype(I, /obj/item/card/id/prisoner)) - var/obj/item/card/id/prisoner/prisoner_id = I - to_chat(user, "ID: [prisoner_id.registered_name]") - to_chat(user, "Points Collected:[prisoner_id.mining_points]") - to_chat(user, "Point Quota: [prisoner_id.goal]") - to_chat(user, "Collect points by bringing smelted minerals to the Labor Shuttle stacking machine. Reach your quota to earn your release.") - else - to_chat(user, "Error: Invalid ID") - return - return ..() diff --git a/code/modules/mining/machine_vending.dm b/code/modules/mining/machine_vending.dm index f5608be41cd..e46c6a1affc 100644 --- a/code/modules/mining/machine_vending.dm +++ b/code/modules/mining/machine_vending.dm @@ -340,7 +340,8 @@ EQUIPMENT("Cards", /obj/item/deck/cards, 150), EQUIPMENT("Guitar", /obj/item/instrument/guitar, 750), EQUIPMENT("Synthesizer", /obj/item/instrument/piano_synth, 1500), - EQUIPMENT("Diamond Pickaxe", /obj/item/pickaxe/diamond, 2000) + EQUIPMENT("Diamond Pickaxe", /obj/item/pickaxe/diamond, 2000), + EQUIPMENT("Analyzer", /obj/item/analyzer, 50) ) /**********************Mining Equipment Datum**************************/ diff --git a/paradise.dme b/paradise.dme index 1e9936fd0af..15bc40d0a0a 100644 --- a/paradise.dme +++ b/paradise.dme @@ -1828,7 +1828,6 @@ #include "code\modules\mining\equipment\vendor_items.dm" #include "code\modules\mining\equipment\wormhole_jaunter.dm" #include "code\modules\mining\laborcamp\laborshuttle.dm" -#include "code\modules\mining\laborcamp\laborstacker.dm" #include "code\modules\mining\lavaland\ash_flora.dm" #include "code\modules\mining\lavaland\necropolis_chests.dm" #include "code\modules\mining\lavaland\loot\ancient_loot.dm" diff --git a/tgui/packages/tgui/interfaces/LaborClaimConsole.js b/tgui/packages/tgui/interfaces/LaborClaimConsole.js deleted file mode 100644 index 628abc1bc02..00000000000 --- a/tgui/packages/tgui/interfaces/LaborClaimConsole.js +++ /dev/null @@ -1,112 +0,0 @@ -import { toTitleCase } from 'common/string'; -import { useBackend } from '../backend'; -import { - Box, - Button, - ProgressBar, - LabeledList, - Section, - Table, -} from '../components'; -import { Window } from '../layouts'; - -export const LaborClaimConsole = (props, context) => { - return ( - - - - - - - ); -}; - -const ShuttleControlSection = (props, context) => { - const { act, data } = useBackend(context); - const { - can_go_home, - emagged, - id_inserted, - id_name, - id_points, - id_goal, - unclaimed_points, - } = data; - const bad_progress = emagged ? 0 : 1; - const completionStatus = emagged - ? 'ERR0R' - : can_go_home - ? 'Completed!' - : 'Insufficient'; - return ( -
- - - {(!!id_inserted && ( - - {id_points + ' / ' + id_goal + ' ' + completionStatus} - - )) || - (!!emagged && 'ERR0R COMPLETED?!@') || - 'No ID inserted'} - - -
- ); -}; - -const MaterialValuesSection = (props, context) => { - const { data } = useBackend(context); - const { ores } = data; - return ( -
- - - Material - - Value - - - {ores.map((ore) => ( - - {toTitleCase(ore.ore)} - - - {ore.value} - - - - ))} -
-
- ); -}; diff --git a/tgui/packages/tgui/interfaces/PrisonerImplantManager.js b/tgui/packages/tgui/interfaces/PrisonerImplantManager.js index e75133e55c5..180b768455c 100644 --- a/tgui/packages/tgui/interfaces/PrisonerImplantManager.js +++ b/tgui/packages/tgui/interfaces/PrisonerImplantManager.js @@ -33,7 +33,7 @@ export const PrisonerImplantManager = (props, context) => { -
+
diff --git a/tgui/packages/tgui/interfaces/PrisonerShuttleConsole.js b/tgui/packages/tgui/interfaces/PrisonerShuttleConsole.js new file mode 100644 index 00000000000..99d8e497aa8 --- /dev/null +++ b/tgui/packages/tgui/interfaces/PrisonerShuttleConsole.js @@ -0,0 +1,66 @@ +import { useBackend } from '../backend'; +import { + Button, + ProgressBar, + LabeledList, + Section, +} from '../components'; +import { Window } from '../layouts'; + +export const PrisonerShuttleConsole = (props, context) => { + const { act, data } = useBackend(context); + const { + can_go_home, + emagged, + id_inserted, + id_name, + id_points, + id_goal, + } = data; + const bad_progress = emagged ? 0 : 1; + let completionStatus = can_go_home ? 'Completed!' : 'Insufficient'; + if (emagged) { + completionStatus = 'ERR0R' + } + let statusBlock = 'No ID inserted' + if (id_inserted) { + statusBlock = ( + + {id_points + ' / ' + id_goal + ' ' + completionStatus} + ) + } + else if (emagged) { + statusBlock = 'ERR0R COMPLETED?!@' + } + return ( + + + + + {statusBlock} + + +