diff --git a/.github/workflows/autobuild_tgui.yml b/.github/workflows/autobuild_tgui.yml index be682724605..08da0f545d3 100644 --- a/.github/workflows/autobuild_tgui.yml +++ b/.github/workflows/autobuild_tgui.yml @@ -16,7 +16,7 @@ jobs: - name: Checkout uses: actions/checkout@v1 with: - fetch-depth: 1 + fetch-depth: 25 - name: Setup Node uses: actions/setup-node@v1 with: @@ -28,10 +28,8 @@ jobs: run: | git config --local user.email "action@github.com" git config --local user.name "TGUI" - git pull + git pull origin master git commit -m "Automatic TGUI Rebuild [ci skip]" -a || true - git fetch - git rebase - name: Push Artifacts uses: ad-m/github-push-action@master with: diff --git a/_maps/RandomRuins/SpaceRuins/TheDerelict.dmm b/_maps/RandomRuins/SpaceRuins/TheDerelict.dmm index c93160304c0..22d00d84119 100644 --- a/_maps/RandomRuins/SpaceRuins/TheDerelict.dmm +++ b/_maps/RandomRuins/SpaceRuins/TheDerelict.dmm @@ -3812,10 +3812,6 @@ /obj/structure/cable, /turf/open/floor/plasteel, /area/ruin/space/derelict/solar_control) -"PQ" = ( -/obj/machinery/power/apc, -/turf/template_noop, -/area/template_noop) "PR" = ( /obj/machinery/atmospherics/pipe/simple/supply/visible, /turf/open/floor/plasteel/airless, @@ -12723,7 +12719,7 @@ aa aa aa aa -PQ +aa aa aa aa diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index 24d8125068d..be17f8bb020 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -51254,6 +51254,10 @@ /obj/structure/cable, /turf/open/floor/plasteel/white, /area/science/explab) +"pSN" = ( +/obj/machinery/rnd/bepis, +/turf/open/floor/engine, +/area/science/explab) "pUr" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on, /turf/open/floor/wood, @@ -101645,7 +101649,7 @@ bvO gHj kGS bzO -bzO +bAR bzO bqe fGF @@ -101902,7 +101906,7 @@ bvO nbv bqe bzO -bAR +bzO bzO bqe uUy @@ -102416,7 +102420,7 @@ xeP kxC kGS bzO -bzO +pSN bzO bqe btp diff --git a/_maps/map_files/Donutstation/Donutstation.dmm b/_maps/map_files/Donutstation/Donutstation.dmm index 19902c17fae..2c766f93216 100644 --- a/_maps/map_files/Donutstation/Donutstation.dmm +++ b/_maps/map_files/Donutstation/Donutstation.dmm @@ -20466,7 +20466,6 @@ /turf/open/floor/plasteel/white, /area/medical/virology) "bef" = ( -/obj/machinery/rnd/experimentor, /obj/effect/landmark/blobstart, /turf/open/floor/engine, /area/science/explab) @@ -40870,6 +40869,10 @@ /obj/structure/table/wood, /turf/open/floor/plating, /area/library/abandoned) +"coN" = ( +/obj/machinery/rnd/experimentor, +/turf/open/floor/engine, +/area/science/explab) "cpK" = ( /obj/machinery/door/airlock/public/glass, /obj/effect/turf_decal/delivery, @@ -48898,6 +48901,10 @@ /obj/machinery/air_sensor/atmos/toxins_mixing_tank, /turf/open/floor/engine/vacuum, /area/science/mixing) +"uuf" = ( +/obj/machinery/rnd/bepis, +/turf/open/floor/engine, +/area/science/explab) "uva" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/light{ @@ -74698,7 +74705,7 @@ gst cbi cIZ acp -acw +uuf acw adk adG @@ -75469,7 +75476,7 @@ mjC tVl ljF acp -acw +coN acw adk adJ diff --git a/_maps/map_files/KiloStation/KiloStation.dmm b/_maps/map_files/KiloStation/KiloStation.dmm index bc8d3409c30..6f2f34c428c 100644 --- a/_maps/map_files/KiloStation/KiloStation.dmm +++ b/_maps/map_files/KiloStation/KiloStation.dmm @@ -10402,6 +10402,7 @@ dir = 8 }, /obj/item/beacon, +/obj/machinery/rnd/bepis, /turf/open/floor/engine, /area/science/explab) "aqr" = ( @@ -32837,8 +32838,8 @@ /turf/open/floor/plasteel/dark, /area/science/lab) "aXo" = ( -/obj/machinery/rnd/experimentor, /obj/effect/landmark/event_spawn, +/obj/machinery/rnd/experimentor, /turf/open/floor/engine, /area/science/explab) "aXp" = ( diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index f6372343d2c..0e59ebf8bca 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -213,6 +213,7 @@ icon_state = "plant-03" }, /obj/effect/decal/cleanable/dirt, +/obj/structure/cable, /turf/open/floor/plasteel, /area/security/prison) "aaC" = ( @@ -794,6 +795,13 @@ dir = 5 }, /area/crew_quarters/kitchen) +"abU" = ( +/obj/item/beacon, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/engine, +/area/science/explab) "abV" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/light/small{ @@ -917,6 +925,14 @@ /obj/structure/lattice/catwalk, /turf/open/space, /area/space/nearstation) +"acl" = ( +/mob/living/simple_animal/pet/dog/pug{ + desc = "It's Pugley IV, the research department's lovable pug clone. Hopefully nothing happens to this one - fourth time lucky!"; + name = "Pugley IV"; + real_name = "Pugley IV" + }, +/turf/open/floor/engine, +/area/science/explab) "acm" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 4 @@ -966,6 +982,14 @@ icon_state = "panelscorched" }, /area/security/prison) +"acr" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/effect/landmark/xeno_spawn, +/obj/effect/landmark/blobstart, +/turf/open/floor/engine, +/area/science/explab) "acs" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 6 @@ -1624,13 +1648,14 @@ /turf/open/floor/plasteel/white, /area/security/prison) "adD" = ( -/obj/structure/lattice, -/obj/machinery/camera/motion{ - c_tag = "Armory - External"; - dir = 1 +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/preopen{ + id = "hosprivacy"; + name = "privacy shutters" }, -/turf/open/space, -/area/space/nearstation) +/obj/structure/cable, +/turf/open/floor/plating, +/area/security/warden) "adE" = ( /turf/open/floor/plating, /area/crew_quarters/fitness/recreation) @@ -1971,43 +1996,31 @@ /area/ai_monitored/security/armory) "aer" = ( /obj/structure/rack, -/obj/item/gun/energy/ionrifle, -/obj/machinery/light{ - dir = 1 +/obj/item/storage/box/flashes{ + pixel_x = 3 }, -/obj/item/gun/energy/temperature/security, -/obj/item/clothing/suit/hooded/ablative, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 +/obj/item/storage/box/teargas{ + pixel_x = 1; + pixel_y = -2 }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ +/obj/item/gun/grenadelauncher, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ dir = 4 }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, /turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory) "aes" = ( -/obj/structure/closet/secure_closet{ - name = "contraband locker"; - req_access_txt = "3" +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 }, -/obj/effect/spawner/lootdrop/maintenance/three, -/obj/effect/spawner/lootdrop/armory_contraband/metastation, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ +/obj/structure/closet/secure_closet/security/sec, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ dir = 4 }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, /turf/open/floor/plasteel/dark, -/area/ai_monitored/security/armory) +/area/security/warden) "aet" = ( /obj/structure/table/wood, /obj/machinery/newscaster/security_unit{ @@ -2041,19 +2054,21 @@ /turf/open/floor/plasteel/dark, /area/crew_quarters/heads/hos) "aex" = ( -/obj/structure/closet/secure_closet/lethalshots, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 +/obj/structure/closet/secure_closet/security/sec, +/obj/machinery/airalarm{ + pixel_y = 28 }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ +/obj/effect/turf_decal/tile/red{ dir = 8 }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/machinery/light{ + dir = 4 + }, /turf/open/floor/plasteel/dark, -/area/ai_monitored/security/armory) +/area/security/warden) "aey" = ( /turf/closed/wall, /area/security/range) @@ -2394,26 +2409,41 @@ /turf/open/floor/plasteel/dark, /area/crew_quarters/heads/hos) "aff" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on, -/obj/item/storage/secure/safe{ - name = "armory safe A"; - pixel_x = 6; - pixel_y = 28 +/obj/structure/filingcabinet/security{ + pixel_x = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 }, /turf/open/floor/plasteel/dark, -/area/ai_monitored/security/armory) +/area/security/brig) "afg" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel/dark, +/area/security/warden) +"afh" = ( +/obj/structure/cable, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, /turf/open/floor/plasteel/dark, -/area/ai_monitored/security/armory) -"afh" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 6 - }, -/turf/open/floor/plasteel/dark, -/area/ai_monitored/security/armory) +/area/security/warden) "afi" = ( /obj/structure/closet/secure_closet/hos, /obj/machinery/light{ @@ -2804,7 +2834,6 @@ /obj/effect/turf_decal/tile/red{ dir = 1 }, -/obj/structure/cable, /turf/open/floor/plasteel, /area/security/prison) "afS" = ( @@ -2841,64 +2870,95 @@ /turf/open/floor/plasteel, /area/security/prison) "afX" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8 - }, -/obj/item/storage/secure/safe{ - name = "armory safe B"; - pixel_x = 6; - pixel_y = 28 - }, -/obj/structure/extinguisher_cabinet{ - pixel_x = 27 - }, -/turf/open/floor/plasteel/dark, +/turf/closed/wall, /area/ai_monitored/security/armory) "afY" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/power/apc/highcap/five_k{ + areastring = "/area/security/warden"; + dir = 8; + name = "Gear Room APC"; + pixel_x = -25 + }, +/obj/structure/cable, /turf/open/floor/plasteel/dark, -/area/ai_monitored/security/armory) +/area/security/warden) "afZ" = ( -/obj/item/radio/intercom{ - pixel_y = 24 +/obj/structure/table, +/obj/item/storage/box/evidence, +/obj/item/storage/box/evidence, +/obj/item/storage/box/evidence, +/obj/item/hand_labeler, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/security/brig) +"aga" = ( /obj/structure/rack, -/obj/item/grenade/barrier{ - pixel_x = -3; - pixel_y = 1 - }, -/obj/item/grenade/barrier, -/obj/item/grenade/barrier{ +/obj/item/clothing/suit/armor/riot{ pixel_x = 3; - pixel_y = -1 + pixel_y = 2 }, -/obj/item/grenade/barrier{ - pixel_x = 6; +/obj/item/clothing/suit/armor/riot{ + pixel_y = 2 + }, +/obj/item/clothing/suit/armor/riot{ + pixel_x = -3; + pixel_y = 2 + }, +/obj/item/clothing/suit/armor/bulletproof{ + pixel_x = 3; pixel_y = -2 }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 +/obj/item/clothing/suit/armor/bulletproof{ + pixel_y = -2 }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 +/obj/item/clothing/suit/armor/bulletproof{ + pixel_x = -3; + pixel_y = -2 }, -/obj/effect/turf_decal/tile/neutral{ +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ dir = 8 }, +/obj/machinery/requests_console{ + department = "Security"; + departmentType = 5; + pixel_y = 30 + }, /turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory) -"aga" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 +"agb" = ( +/obj/structure/rack, +/obj/item/shield/riot{ + pixel_x = -3; + pixel_y = 3 }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 +/obj/item/shield/riot, +/obj/item/shield/riot{ + pixel_x = 3; + pixel_y = -3 }, -/obj/effect/turf_decal/tile/neutral{ +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ dir = 8 }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory) +"agc" = ( /mob/living/simple_animal/bot/secbot{ arrest_type = 1; health = 45; @@ -2907,54 +2967,22 @@ name = "Sergeant-at-Armsky"; weaponscheck = 1 }, -/turf/open/floor/plasteel/dark, -/area/ai_monitored/security/armory) -"agb" = ( -/obj/structure/rack, -/obj/item/gun/energy/disabler{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/gun/energy/disabler, -/obj/item/gun/energy/disabler{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/ai_monitored/security/armory) -"agc" = ( +/obj/effect/turf_decal/bot, /turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory) "agd" = ( /obj/structure/rack, -/obj/item/gun/energy/laser{ - pixel_x = -3; +/obj/item/gun/ballistic/shotgun/riot, +/obj/item/gun/ballistic/shotgun/riot{ + pixel_y = 6 + }, +/obj/item/gun/ballistic/shotgun/riot{ pixel_y = 3 }, -/obj/item/gun/energy/laser, -/obj/item/gun/energy/laser{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/effect/turf_decal/tile/neutral{ +/obj/effect/turf_decal/tile/red{ dir = 1 }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ +/obj/effect/turf_decal/tile/red{ dir = 8 }, /turf/open/floor/plasteel/dark, @@ -3235,13 +3263,14 @@ req_access_txt = "1" }, /obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/structure/cable, /turf/open/floor/plasteel, /area/security/prison) "agL" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/security/prison) +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/security/brig) "agM" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -3298,13 +3327,10 @@ /turf/open/floor/plasteel/dark, /area/security/prison) "agQ" = ( -/obj/structure/rack, -/obj/item/clothing/suit/armor/bulletproof, -/obj/item/clothing/head/helmet/alt, -/obj/item/clothing/suit/armor/bulletproof, -/obj/item/clothing/head/helmet/alt, -/obj/item/clothing/suit/armor/bulletproof, -/obj/item/clothing/head/helmet/alt, +/obj/structure/table, +/obj/machinery/recharger{ + pixel_y = 4 + }, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, @@ -3316,92 +3342,38 @@ dir = 8 }, /turf/open/floor/plasteel/dark, -/area/ai_monitored/security/armory) +/area/security/brig) "agR" = ( -/obj/machinery/airalarm{ - dir = 4; - pixel_x = -22 +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = 28 }, -/obj/structure/rack, -/obj/item/storage/fancy/donut_box, -/obj/item/gun/energy/e_gun/dragnet, -/obj/item/gun/energy/e_gun/dragnet, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/ai_monitored/security/armory) +/turf/open/floor/plasteel, +/area/security/brig) "agS" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/machinery/holopad/secure, -/turf/open/floor/plasteel/dark, -/area/ai_monitored/security/armory) +/obj/structure/lattice, +/turf/closed/wall/r_wall, +/area/security/warden) "agT" = ( -/obj/structure/rack, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/item/storage/box/rubbershot, -/obj/item/storage/box/rubbershot, -/obj/item/storage/box/rubbershot, -/obj/item/storage/box/rubbershot, -/obj/item/storage/box/rubbershot, -/obj/item/storage/box/rubbershot, -/obj/item/gun/ballistic/shotgun/riot{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/gun/ballistic/shotgun/riot, -/obj/item/gun/ballistic/shotgun/riot, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ +/obj/effect/turf_decal/trimline/red/filled/line{ dir = 8 }, -/turf/open/floor/plasteel/dark, -/area/ai_monitored/security/armory) +/turf/open/floor/plasteel, +/area/security/brig) "agU" = ( -/obj/structure/rack, -/obj/item/gun/energy/e_gun{ - pixel_x = -3; - pixel_y = 3 +/obj/item/radio/intercom{ + pixel_y = 26 }, -/obj/item/gun/energy/e_gun, -/obj/item/gun/energy/e_gun{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 +/obj/machinery/light{ + dir = 1 }, -/turf/open/floor/plasteel/dark, -/area/ai_monitored/security/armory) +/turf/open/floor/plasteel, +/area/security/brig) "agW" = ( /obj/structure/table/wood, /obj/machinery/recharger, @@ -3463,6 +3435,7 @@ pixel_y = 3 }, /obj/structure/cable, +/obj/item/storage/box/deputy, /turf/open/floor/plasteel/dark, /area/crew_quarters/heads/hos) "ahc" = ( @@ -3610,7 +3583,6 @@ name = "Security Blast Door" }, /obj/effect/turf_decal/delivery, -/obj/structure/cable, /turf/open/floor/plasteel, /area/security/brig) "ahz" = ( @@ -3619,6 +3591,7 @@ name = "Security Blast Door" }, /obj/effect/turf_decal/delivery, +/obj/structure/cable, /turf/open/floor/plasteel, /area/security/brig) "ahA" = ( @@ -3634,132 +3607,67 @@ /turf/closed/wall, /area/security/warden) "ahC" = ( -/obj/structure/rack, -/obj/item/clothing/suit/armor/riot, -/obj/item/clothing/suit/armor/riot, -/obj/item/clothing/suit/armor/riot, -/obj/item/clothing/head/helmet/riot, -/obj/item/clothing/head/helmet/riot, -/obj/item/clothing/head/helmet/riot, -/obj/machinery/firealarm{ - dir = 8; - pixel_x = 28 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ +/obj/effect/turf_decal/trimline/red/filled/corner{ dir = 4 }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 }, -/turf/open/floor/plasteel/dark, -/area/ai_monitored/security/armory) +/turf/open/floor/plasteel, +/area/security/brig) "ahE" = ( -/obj/structure/rack, -/obj/item/storage/box/flashes{ - pixel_x = 3 - }, -/obj/item/storage/box/teargas{ - pixel_x = 1; - pixel_y = -2 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ +/obj/structure/closet/l3closet/security, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ dir = 4 }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/ai_monitored/security/armory) +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/security/brig) "ahF" = ( -/obj/machinery/power/apc/highcap/five_k{ - areastring = "/area/ai_monitored/security/armory"; - name = "Armory APC"; - pixel_x = 1; - pixel_y = -23 - }, -/obj/machinery/light, -/obj/machinery/camera/motion{ - c_tag = "Armory - Internal"; - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 +/obj/structure/disposalpipe/segment{ + dir = 6 }, /obj/structure/cable, -/turf/open/floor/plasteel/dark, -/area/ai_monitored/security/armory) +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security/brig) "ahG" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ +/obj/effect/turf_decal/trimline/red/filled/corner, +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, /obj/structure/cable, -/turf/open/floor/plasteel/dark, -/area/ai_monitored/security/armory) +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig) "ahH" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ +/obj/effect/turf_decal/trimline/red/filled/line, +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 }, -/turf/open/floor/plasteel/dark, -/area/ai_monitored/security/armory) +/turf/open/floor/plasteel, +/area/security/brig) "ahI" = ( -/obj/structure/rack, -/obj/item/shield/riot{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/shield/riot, -/obj/item/shield/riot{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/machinery/button/door{ - id = "armory"; - name = "Armory Shutters"; - pixel_x = 28; - req_access_txt = "3" - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ +/obj/effect/turf_decal/trimline/red/filled/line, +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 }, -/turf/open/floor/plasteel/dark, -/area/ai_monitored/security/armory) +/turf/open/floor/plasteel, +/area/security/brig) "ahJ" = ( /obj/machinery/disposal/bin, /obj/machinery/firealarm{ @@ -3833,26 +3741,21 @@ /turf/open/floor/plasteel/dark, /area/crew_quarters/heads/hos) "ahP" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/security{ - name = "Armory"; - req_access_txt = "3" +/obj/structure/rack, +/obj/item/storage/toolbox/mechanical{ + pixel_x = -4; + pixel_y = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 +/obj/item/storage/toolbox/emergency{ + pixel_x = 2; + pixel_y = -3 }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 +/obj/item/wirecutters{ + pixel_y = 2 }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/structure/cable, -/turf/open/floor/plasteel/dark, -/area/ai_monitored/security/armory) +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/security/brig) "ahQ" = ( /obj/item/clothing/head/festive, /obj/effect/decal/cleanable/cobweb/cobweb2, @@ -4117,6 +4020,7 @@ /obj/effect/turf_decal/tile/red{ dir = 4 }, +/obj/structure/cable, /turf/open/floor/plasteel, /area/security/brig) "aiw" = ( @@ -4152,8 +4056,18 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, /turf/open/floor/plasteel/dark, -/area/security/warden) +/area/security/brig) "aiy" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on, /obj/machinery/light/small{ @@ -4179,7 +4093,7 @@ dir = 8 }, /turf/open/floor/plasteel/dark, -/area/security/warden) +/area/security/brig) "aiz" = ( /obj/structure/closet/secure_closet/evidence, /obj/effect/turf_decal/tile/neutral{ @@ -4192,25 +4106,39 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, /turf/open/floor/plasteel/dark, -/area/security/warden) +/area/security/brig) "aiA" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/turf/open/floor/plating, +/obj/item/storage/secure/safe{ + name = "armory safe A"; + pixel_x = 6; + pixel_y = 28 + }, +/turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory) "aiB" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, /obj/structure/cable, -/turf/open/floor/plating, -/area/security/warden) +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/security/brig) "aiC" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/cable, -/turf/open/floor/plating, -/area/ai_monitored/security/armory) +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/security/brig) "aiD" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, @@ -4484,7 +4412,6 @@ /obj/effect/turf_decal/tile/red{ dir = 8 }, -/obj/structure/cable, /turf/open/floor/plasteel, /area/security/brig) "ajo" = ( @@ -4525,8 +4452,12 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red, /turf/open/floor/plasteel/dark, -/area/security/warden) +/area/security/brig) "ajr" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/turf_decal/tile/neutral{ @@ -4539,25 +4470,16 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, -/turf/open/floor/plasteel/dark, -/area/security/warden) -"ajs" = ( -/obj/machinery/door/poddoor/shutters{ - id = "armory"; - name = "armory shutters" - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 8 }, /turf/open/floor/plasteel/dark, -/area/ai_monitored/security/armory) +/area/security/brig) +"ajs" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/obj/structure/cable, +/turf/open/floor/plasteel/dark, +/area/security/warden) "ajt" = ( /obj/structure/closet{ name = "Evidence Closet 5" @@ -4576,8 +4498,14 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, /turf/open/floor/plasteel/dark, -/area/security/warden) +/area/security/brig) "aju" = ( /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 10 @@ -4587,44 +4515,63 @@ /turf/open/floor/plasteel, /area/maintenance/disposal/incinerator) "ajv" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 4 +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/obj/effect/turf_decal/trimline/neutral/filled/corner{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/cable, -/turf/open/floor/plasteel, -/area/security/warden) +/obj/item/radio/intercom{ + pixel_y = 25 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory) "ajw" = ( -/obj/structure/closet/bombcloset/security, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 4 +/obj/structure/closet/secure_closet{ + name = "contraband locker"; + req_access_txt = "3" }, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/security/warden) +/obj/effect/spawner/lootdrop/maintenance/three, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/spawner/lootdrop/armory_contraband/metastation, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory) "ajx" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, /turf/open/floor/plating, /area/security/warden) "ajy" = ( -/obj/structure/extinguisher_cabinet{ - pixel_y = 30 +/obj/structure/table, +/obj/machinery/recharger{ + pixel_y = 4 }, -/obj/structure/closet/secure_closet/security/sec, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) -"ajz" = ( -/turf/open/floor/plasteel/showroomfloor, +/obj/structure/cable, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, /area/security/warden) "ajA" = ( -/obj/structure/closet/secure_closet/security/sec, -/obj/machinery/airalarm{ - pixel_y = 28 +/obj/structure/table, +/obj/machinery/recharger{ + pixel_y = 4 }, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel/showroomfloor, +/obj/structure/cable, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, /area/security/warden) "ajB" = ( /obj/machinery/computer/secure_data, @@ -4830,10 +4777,9 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 8 }, -/obj/effect/turf_decal/tile/red{ +/obj/effect/turf_decal/trimline/red/filled/line{ dir = 4 }, -/obj/structure/cable, /turf/open/floor/plasteel, /area/security/brig) "ajR" = ( @@ -5174,27 +5120,28 @@ /turf/open/floor/plasteel/white, /area/security/brig) "akx" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/effect/turf_decal/tile/red{ +/obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 }, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ +/obj/effect/turf_decal/trimline/blue/filled/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 8 }, -/obj/structure/cable, /turf/open/floor/plasteel, /area/security/brig) "aky" = ( -/obj/effect/turf_decal/tile/red{ +/obj/structure/cable, +/obj/effect/turf_decal/trimline/red/filled/corner{ dir = 1 }, -/obj/effect/turf_decal/tile/red{ +/obj/effect/turf_decal/trimline/red/filled/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/structure/cable, /turf/open/floor/plasteel, /area/security/brig) "akz" = ( @@ -5202,32 +5149,31 @@ /obj/structure/sign/warning/pods{ pixel_x = 32 }, -/obj/effect/turf_decal/tile/red{ +/obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ +/obj/effect/turf_decal/trimline/red/filled/corner, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, /turf/open/floor/plasteel, /area/security/brig) "akA" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, /obj/effect/turf_decal/tile/neutral{ dir = 8 }, -/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, /turf/open/floor/plasteel/dark, -/area/security/warden) +/area/security/brig) "akB" = ( /obj/structure/closet{ name = "Evidence Closet 4" @@ -5242,62 +5188,98 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, /turf/open/floor/plasteel/dark, -/area/security/warden) +/area/security/brig) "akC" = ( -/obj/structure/extinguisher_cabinet{ - pixel_x = -27 +/obj/structure/rack, +/obj/item/grenade/barrier{ + pixel_x = -3; + pixel_y = 1 }, -/obj/machinery/camera{ - c_tag = "Security - Secure Gear Storage"; +/obj/item/grenade/barrier, +/obj/item/grenade/barrier{ + pixel_x = 3; + pixel_y = -1 + }, +/obj/item/grenade/barrier{ + pixel_x = 6; + pixel_y = -2 + }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ dir = 4 }, -/obj/machinery/flasher/portable, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/security/warden) +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory) "akD" = ( -/obj/machinery/flasher/portable, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/security/warden) +/obj/effect/turf_decal/trimline/red/filled/corner, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory) "akE" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/cable, -/turf/open/floor/plasteel, -/area/security/warden) -"akF" = ( -/obj/structure/closet/l3closet/security, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/security/warden) -"akI" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 4 +/obj/effect/turf_decal/trimline/red/filled/corner{ + dir = 1 }, -/turf/open/floor/plasteel/showroomfloor, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory) +"akF" = ( +/obj/structure/rack, +/obj/item/gun/energy/laser{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/gun/energy/laser, +/obj/item/gun/energy/laser{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory) +"akI" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/dark, /area/security/warden) "akJ" = ( /obj/structure/closet/secure_closet/security/sec, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 +/obj/effect/turf_decal/tile/red{ + dir = 8 }, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel/showroomfloor, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, /area/security/warden) "akK" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ dir = 4 }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/security/warden) +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel/dark, +/area/security/brig) "akL" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, /obj/effect/turf_decal/tile/red{ dir = 1 }, @@ -5311,9 +5293,6 @@ /turf/open/floor/plasteel, /area/security/main) "akM" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, /obj/effect/turf_decal/tile/red{ dir = 1 }, @@ -5321,6 +5300,9 @@ dir = 4 }, /obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, /turf/open/floor/plasteel, /area/security/main) "akN" = ( @@ -5891,8 +5873,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/effect/turf_decal/tile/red{ - dir = 1 +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 8 }, /turf/open/floor/plasteel, /area/security/brig) @@ -5905,9 +5887,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, @@ -5918,87 +5897,55 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, -/obj/structure/cable, /turf/open/floor/plasteel/dark, -/area/security/warden) +/area/security/brig) "alS" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8 - }, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel, /area/security/brig) -"alT" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/structure/cable, -/turf/open/floor/plasteel/dark, -/area/security/warden) "alU" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/structure/rack, +/obj/item/gun/energy/disabler{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/gun/energy/disabler, +/obj/item/gun/energy/disabler{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ dir = 4 }, -/obj/structure/cable, -/turf/open/floor/plasteel, -/area/security/warden) -"alV" = ( -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/door/airlock/security{ - name = "Evidence Storage"; - req_access_txt = "3" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/structure/cable, /turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory) +"alV" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, /area/security/warden) "alW" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4 +/obj/effect/turf_decal/trimline/neutral/filled/corner{ + dir = 8 }, -/obj/structure/cable, -/turf/open/floor/plasteel, -/area/security/warden) +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory) "alX" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, +/obj/effect/turf_decal/delivery, +/obj/structure/cable, +/obj/structure/cable, /obj/machinery/door/airlock/security/glass{ name = "Gear Room"; req_one_access_txt = "1;4" }, -/obj/effect/turf_decal/delivery, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/obj/structure/cable, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/dark, /area/security/warden) "alY" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -6014,34 +5961,35 @@ /turf/open/floor/plasteel, /area/security/main) "alZ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 5 +/obj/structure/rack, +/obj/item/gun/energy/ionrifle, +/obj/item/gun/energy/temperature/security, +/obj/effect/turf_decal/tile/red{ + dir = 1 }, -/obj/structure/cable, -/turf/open/floor/plasteel, -/area/security/warden) +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/item/clothing/suit/hooded/ablative, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory) "ama" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/security/glass{ - name = "Secure Gear Storage"; - req_access_txt = "3" +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/delivery, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, -/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel, -/area/security/warden) +/area/security/brig) "amb" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ +/obj/structure/closet/secure_closet/security/sec, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red{ dir = 4 }, -/obj/structure/cable, -/turf/open/floor/plasteel/showroomfloor, +/turf/open/floor/plasteel/dark, /area/security/warden) "amd" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -6057,22 +6005,12 @@ /turf/open/floor/plasteel, /area/security/main) "ame" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on, /obj/structure/cable, -/turf/open/floor/plasteel/showroomfloor, +/turf/open/floor/plasteel/dark, /area/security/warden) "amf" = ( -/obj/machinery/light{ - dir = 8 - }, -/obj/machinery/power/apc/highcap/five_k{ - areastring = "/area/security/warden"; - dir = 8; - name = "Brig Control APC"; - pixel_x = -25 - }, -/obj/structure/cable, -/turf/open/floor/plasteel/showroomfloor, +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel/dark, /area/security/warden) "amg" = ( /obj/effect/turf_decal/tile/red{ @@ -6578,8 +6516,8 @@ /area/security/brig) "anh" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/effect/turf_decal/tile/red{ - dir = 1 +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 8 }, /turf/open/floor/plasteel, /area/security/brig) @@ -6601,122 +6539,116 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 4 }, -/obj/effect/turf_decal/tile/red{ +/obj/effect/turf_decal/trimline/red/filled/corner{ dir = 4 }, /turf/open/floor/plasteel, /area/security/brig) "ank" = ( -/obj/structure/table, -/obj/item/storage/box/evidence, -/obj/item/storage/box/evidence, -/obj/item/storage/box/evidence, -/obj/item/hand_labeler, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ +/obj/structure/lattice, +/obj/machinery/camera/motion{ + c_tag = "E.V.A. Storage"; dir = 8 }, -/turf/open/floor/plasteel/dark, -/area/security/warden) +/turf/open/space/basic, +/area/space/nearstation) "anl" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/security/warden) +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/turf/open/floor/plating, +/area/ai_monitored/security/armory) "anm" = ( -/obj/structure/filingcabinet/security{ - pixel_x = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 +/obj/effect/turf_decal/trimline/red/filled/corner{ + dir = 1 }, -/turf/open/floor/plasteel/dark, -/area/security/warden) +/turf/open/floor/plasteel, +/area/security/brig) "ann" = ( /obj/structure/rack, -/obj/item/storage/box/chemimp{ - pixel_x = 4; - pixel_y = 3 - }, -/obj/item/storage/box/trackimp, -/obj/item/storage/lockbox/loyalty, -/obj/item/reagent_containers/glass/bottle/morphine, -/obj/machinery/light/small, -/obj/machinery/firealarm{ - dir = 4; - pixel_x = -26 - }, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/security/warden) -"ano" = ( -/obj/structure/rack, -/obj/item/storage/box/handcuffs, -/obj/item/storage/box/flashbangs{ - pixel_x = -2; +/obj/item/clothing/glasses/hud/security/sunglasses/gars{ + pixel_x = 3; pixel_y = -2 }, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/security/warden) -"anp" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 1 +/obj/item/clothing/glasses/hud/security/sunglasses/gars{ + pixel_x = 3; + pixel_y = 2 }, -/obj/structure/cable, -/turf/open/floor/plasteel, -/area/security/warden) +/obj/item/clothing/glasses/hud/security/sunglasses{ + pixel_x = -3; + pixel_y = -2 + }, +/obj/item/clothing/glasses/hud/security/sunglasses{ + pixel_x = -3; + pixel_y = 2 + }, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/obj/machinery/camera/motion{ + c_tag = "Armory - Internal"; + dir = 4 + }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory) +"ano" = ( +/obj/effect/turf_decal/trimline/neutral/filled/corner{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory) "anq" = ( /obj/structure/rack, -/obj/item/storage/box/firingpins{ - pixel_x = 3; +/obj/item/gun/energy/e_gun{ + pixel_x = -3; pixel_y = 3 }, -/obj/item/storage/box/firingpins, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/security/warden) -"ans" = ( -/obj/structure/cable, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) -"ant" = ( -/obj/structure/table, -/obj/machinery/recharger{ - pixel_y = 4 +/obj/item/gun/energy/e_gun, +/obj/item/gun/energy/e_gun{ + pixel_x = 3; + pixel_y = -3 }, -/obj/structure/cable, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) +/obj/machinery/firealarm{ + dir = 8; + pixel_x = 28 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory) "anu" = ( /obj/machinery/vending/security, /obj/machinery/firealarm{ dir = 8; pixel_x = 28 }, -/turf/open/floor/plasteel/showroomfloor, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, /area/security/warden) "anv" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -6780,13 +6712,11 @@ /turf/open/floor/plasteel, /area/security/main) "anB" = ( -/obj/structure/table, -/obj/item/paper_bin{ - pixel_x = -3; - pixel_y = 7 +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 }, /turf/open/floor/plasteel, -/area/security/main) +/area/security/brig) "anC" = ( /obj/machinery/power/apc/highcap/five_k{ areastring = "/area/security/main"; @@ -7159,10 +7089,10 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/turf_decal/tile/red{ +/obj/structure/cable, +/obj/effect/turf_decal/trimline/blue/filled/corner{ dir = 1 }, -/obj/structure/cable, /turf/open/floor/plasteel, /area/security/brig) "aos" = ( @@ -7172,28 +7102,40 @@ /obj/structure/cable, /turf/open/floor/plasteel, /area/security/brig) -"aot" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/firealarm{ - dir = 8; - pixel_x = 28 - }, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/security/brig) "aou" = ( -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/door/airlock/security{ - name = "Evidence Storage"; - req_access_txt = "3" +/obj/structure/rack, +/obj/machinery/light{ + dir = 8 + }, +/obj/item/clothing/head/helmet/riot{ + pixel_x = 3; + pixel_y = 2 + }, +/obj/item/clothing/head/helmet/riot{ + pixel_y = 2 + }, +/obj/item/clothing/head/helmet/riot{ + pixel_x = -3; + pixel_y = 2 + }, +/obj/item/clothing/head/helmet/alt{ + pixel_x = 3; + pixel_y = -2 + }, +/obj/item/clothing/head/helmet/alt{ + pixel_y = -2 + }, +/obj/item/clothing/head/helmet/alt{ + pixel_x = -3; + pixel_y = -2 + }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 8 }, -/obj/effect/turf_decal/delivery, /obj/structure/cable, -/turf/open/floor/plasteel, -/area/security/warden) +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory) "aov" = ( /obj/structure/extinguisher_cabinet{ pixel_y = -31 @@ -7205,19 +7147,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel, /area/maintenance/disposal/incinerator) -"aow" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/security/glass{ - name = "Secure Gear Storage"; - req_access_txt = "3" - }, -/obj/effect/turf_decal/delivery, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/plasteel, -/area/security/warden) "aox" = ( /obj/structure/grille, /turf/open/floor/plating{ @@ -7225,19 +7154,25 @@ }, /area/maintenance/port/fore) "aoy" = ( -/obj/machinery/firealarm{ - dir = 8; - pixel_x = 28 +/obj/structure/closet/secure_closet/lethalshots, +/obj/effect/turf_decal/tile/red{ + dir = 1 }, -/obj/structure/closet/secure_closet/warden, -/obj/item/gun/energy/laser, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory) "aoz" = ( /obj/structure/closet/secure_closet/security/sec, -/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, /obj/structure/cable, -/turf/open/floor/plasteel/showroomfloor, +/turf/open/floor/plasteel/dark, /area/security/warden) "aoB" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -7740,8 +7675,8 @@ /obj/structure/extinguisher_cabinet{ pixel_x = -27 }, -/obj/effect/turf_decal/tile/red{ - dir = 1 +/obj/effect/turf_decal/trimline/red/filled/corner{ + dir = 8 }, /turf/open/floor/plasteel, /area/security/brig) @@ -7750,70 +7685,38 @@ /obj/structure/cable, /turf/open/floor/plasteel, /area/security/brig) -"apG" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/security/brig) -"apI" = ( -/obj/machinery/computer/prisoner/management{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) "apJ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/cable, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) -"apK" = ( -/obj/machinery/photocopier{ - pixel_y = 3 - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory) "apL" = ( -/obj/machinery/requests_console{ - department = "Security"; - departmentType = 5; - pixel_y = 30 +/obj/machinery/button/door{ + id = "armory"; + name = "Armory Shutters"; + pixel_y = -28; + req_access_txt = "3" }, -/obj/machinery/light{ - dir = 1 - }, -/obj/machinery/camera{ - c_tag = "Warden's Office" - }, -/obj/structure/rack, -/obj/item/storage/toolbox/mechanical{ - pixel_x = -4; - pixel_y = 4 - }, -/obj/item/storage/toolbox/emergency{ - pixel_x = 2; - pixel_y = -3 - }, -/obj/item/wirecutters{ - pixel_y = 2 - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) +/obj/structure/cable, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory) "apM" = ( -/obj/structure/table, -/obj/machinery/recharger, -/obj/machinery/airalarm{ - pixel_y = 28 +/obj/machinery/power/apc/highcap/five_k{ + areastring = "/area/ai_monitored/security/armory"; + name = "Armory APC"; + pixel_x = 1; + pixel_y = -23 }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) +/obj/structure/cable, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory) "apN" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/effect/turf_decal/trimline/neutral/filled/corner{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory) "apP" = ( /obj/machinery/atmospherics/components/trinary/filter/flipped, /obj/effect/decal/cleanable/dirt, @@ -7828,7 +7731,13 @@ dir = 8 }, /obj/machinery/vending/wardrobe/sec_wardrobe, -/turf/open/floor/plasteel/showroomfloor, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, /area/security/warden) "apR" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -8371,49 +8280,58 @@ /turf/open/floor/plasteel/dark, /area/security/brig) "ara" = ( -/obj/machinery/computer/secure_data{ +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching Prison Wing holding areas."; - name = "Prison Monitor"; - network = list("prison"); - pixel_x = -30 +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) +/obj/machinery/camera{ + c_tag = "Brig - Hallway - Port" + }, +/turf/open/floor/plasteel, +/area/security/brig) "arb" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 8 +/obj/machinery/door/poddoor/shutters{ + id = "armory"; + name = "armory shutters" }, -/obj/structure/cable, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) -"arc" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8 +/obj/effect/turf_decal/tile/neutral{ + dir = 1 }, -/obj/structure/cable, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) -"are" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/cable, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) -"arf" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on, -/obj/structure/cable, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) -"arg" = ( -/obj/structure/chair/office{ +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ dir = 4 }, -/obj/effect/landmark/start/warden, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory) +"arf" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/security{ + name = "Armory"; + req_access_txt = "3" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, /obj/structure/cable, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) +/obj/effect/turf_decal/delivery, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory) "arh" = ( /obj/item/reagent_containers/glass/bottle/toxin{ pixel_x = 4; @@ -8430,15 +8348,23 @@ /turf/open/floor/plating, /area/maintenance/starboard/secondary) "ari" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/delivery, /obj/structure/cable, -/obj/machinery/holopad/secure, -/turf/open/floor/plasteel/showroomfloor, +/obj/structure/cable, +/obj/machinery/door/airlock/security/glass{ + name = "Gear Room"; + req_one_access_txt = "1;4" + }, +/turf/open/floor/plasteel/dark, /area/security/warden) "arj" = ( /obj/structure/closet/secure_closet/security/sec, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel/showroomfloor, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, /area/security/warden) "ark" = ( /obj/machinery/newscaster/security_unit, @@ -8943,102 +8869,89 @@ /turf/open/floor/plasteel/dark, /area/security/brig) "asp" = ( -/obj/machinery/computer/security{ +/obj/structure/closet/bombcloset/security, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ dir = 4 }, -/obj/structure/cable, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) +/turf/open/floor/plasteel, +/area/security/brig) "asq" = ( -/obj/effect/landmark/start/warden, -/obj/structure/chair/office, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/cable, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/security/brig) "asr" = ( -/obj/machinery/computer/crew{ - dir = 8 +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 1 }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig) "ass" = ( -/obj/machinery/newscaster/security_unit{ - pixel_y = -30 +/obj/effect/turf_decal/trimline/red/filled/corner{ + dir = 1 }, -/obj/item/folder/red, -/obj/item/folder/red, -/obj/structure/table, -/obj/item/book/manual/wiki/security_space_law{ - pixel_x = -3; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security/brig) "ast" = ( -/obj/structure/table, -/obj/item/paper_bin{ - pixel_x = -3; - pixel_y = 7 +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 }, -/obj/item/pen, -/obj/structure/reagent_dispensers/peppertank{ - pixel_y = -32 +/obj/machinery/camera{ + c_tag = "Brig - Hallway - Entrance" }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) +/turf/open/floor/plasteel, +/area/security/brig) "asu" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/filingcabinet/chestdrawer{ - pixel_y = 2 +/obj/effect/turf_decal/trimline/red/filled/corner{ + dir = 4 }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel, +/area/security/brig) "asv" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/cable, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) -"asw" = ( -/obj/structure/table, -/obj/machinery/button/door{ - id = "Prison Gate"; - name = "Prison Wing Lockdown"; - pixel_y = 7; - req_access_txt = "2" +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 1 }, -/obj/machinery/button/door{ - id = "Secure Gate"; - name = "Cell Window Control"; - pixel_x = -5; - pixel_y = -3; - specialfunctions = 4 - }, -/obj/machinery/button/door{ - id = "briglockdown"; - name = "Brig Lockdown Control"; - pixel_x = 5; - pixel_y = -3 - }, -/obj/item/radio/intercom{ - dir = 4; - pixel_x = 29; - pixel_y = -28 - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) -"asx" = ( -/obj/structure/table, -/obj/machinery/recharger{ - pixel_y = 4 +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/cable, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) +/turf/open/floor/plasteel, +/area/security/brig) +"asw" = ( +/obj/effect/turf_decal/trimline/red/filled/corner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"asx" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/security/brig) "asy" = ( -/obj/vehicle/ridden/secway, -/obj/item/key/security, /obj/effect/turf_decal/tile/red{ dir = 1 }, @@ -9046,35 +8959,20 @@ /obj/effect/turf_decal/tile/red{ dir = 8 }, +/obj/vehicle/ridden/secway, +/obj/structure/cable, /turf/open/floor/plasteel, /area/security/main) "asz" = ( +/obj/effect/turf_decal/trimline/red/filled/corner{ + dir = 1 + }, /obj/structure/table, -/obj/item/folder/red, -/obj/item/restraints/handcuffs, -/obj/item/clothing/head/cone{ - pixel_x = -4; +/obj/machinery/recharger{ pixel_y = 4 }, -/obj/item/clothing/head/cone{ - pixel_x = -4; - pixel_y = 4 - }, -/obj/item/clothing/head/cone{ - pixel_x = -4; - pixel_y = 4 - }, -/obj/item/clothing/head/cone{ - pixel_x = -4; - pixel_y = 4 - }, -/obj/item/clothing/head/cone{ - pixel_x = -4; - pixel_y = 4 - }, -/obj/structure/cable, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) +/turf/open/floor/plasteel, +/area/security/brig) "asB" = ( /obj/machinery/light/small{ dir = 8 @@ -9089,6 +8987,7 @@ /obj/effect/turf_decal/tile/red{ dir = 8 }, +/obj/structure/cable, /turf/open/floor/plasteel, /area/security/main) "asD" = ( @@ -9645,15 +9544,18 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 4 }, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, /turf/open/floor/plasteel, /area/security/brig) "atO" = ( -/obj/structure/sign/warning/pods, -/turf/closed/wall/r_wall, -/area/security/warden) +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security/brig) "atP" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -9665,31 +9567,38 @@ /turf/open/floor/plating, /area/maintenance/port/fore) "atQ" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/trimline/red/filled/line, /obj/structure/cable, -/turf/open/floor/plating, -/area/security/warden) +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/junction/flip{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/brig) "atR" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/security/glass{ - name = "Brig Control"; - req_access_txt = "3" +/obj/effect/turf_decal/trimline/red/filled/line, +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/delivery, /obj/structure/cable, +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, /turf/open/floor/plasteel, -/area/security/warden) +/area/security/brig) "atS" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/security/glass{ - name = "Gear Room"; - req_one_access_txt = "1;4" +/obj/effect/turf_decal/trimline/red/filled/corner{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 }, -/obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, -/area/security/warden) +/area/security/brig) "atU" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -10027,7 +9936,10 @@ /obj/structure/sign/warning/vacuum/external{ pixel_x = -32 }, -/obj/effect/turf_decal/tile/red{ +/obj/effect/turf_decal/trimline/red/filled/corner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/red/filled/corner{ dir = 8 }, /turf/open/floor/plasteel, @@ -10038,13 +9950,8 @@ /turf/open/floor/plasteel, /area/security/brig) "auW" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/turf/open/floor/plasteel, +/obj/structure/sign/warning/pods, +/turf/closed/wall/r_wall, /area/security/brig) "auX" = ( /obj/machinery/photocopier, @@ -10077,78 +9984,47 @@ /turf/open/floor/plasteel/dark, /area/crew_quarters/heads/hos) "auY" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red{ +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel, /area/security/brig) "auZ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, /obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/red{ +/turf/open/floor/plating, +/area/security/warden) +"ava" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel, /area/security/brig) -"ava" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/window/westleft{ - base_state = "right"; - dir = 2; - icon_state = "right"; - name = "Reception Window" - }, -/obj/machinery/door/window/brigdoor{ - dir = 1; - name = "Brig Control Desk"; - req_access_txt = "3" - }, -/obj/item/paper, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/cable, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) "avb" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/obj/machinery/light{ - dir = 1 - }, -/obj/machinery/camera{ - c_tag = "Brig - Hallway - Entrance" - }, -/obj/effect/turf_decal/tile/red{ - dir = 4 +/obj/structure/disposalpipe/segment{ + dir = 9 }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel, /area/security/brig) "avc" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/effect/turf_decal/tile/red{ - dir = 4 + dir = 5 }, /turf/open/floor/plasteel, /area/security/brig) "avd" = ( -/obj/item/radio/intercom{ - pixel_y = 26 - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, /turf/open/floor/plasteel, /area/security/brig) "ave" = ( @@ -10158,8 +10034,8 @@ /obj/structure/extinguisher_cabinet{ pixel_y = 30 }, -/obj/effect/turf_decal/tile/red{ - dir = 4 +/obj/machinery/light{ + dir = 1 }, /turf/open/floor/plasteel, /area/security/brig) @@ -10167,20 +10043,17 @@ /obj/machinery/firealarm{ pixel_y = 28 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 4 +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 }, /turf/open/floor/plasteel, /area/security/brig) "avg" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, /obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/red{ - dir = 4 +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 1 }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, /turf/open/floor/plasteel, /area/security/brig) "avh" = ( @@ -10188,10 +10061,11 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, /obj/structure/cable, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 1 + }, +/obj/effect/landmark/event_spawn, /turf/open/floor/plasteel, /area/security/brig) "avi" = ( @@ -10202,13 +10076,7 @@ dir = 8; pixel_x = 30 }, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, +/obj/effect/turf_decal/trimline/red/filled/corner, /turf/open/floor/plasteel, /area/security/brig) "avj" = ( @@ -10566,7 +10434,7 @@ "awa" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/red{ +/obj/effect/turf_decal/trimline/red/filled/line{ dir = 8 }, /turf/open/floor/plasteel, @@ -10576,48 +10444,45 @@ dir = 5 }, /obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, /turf/open/floor/plasteel, /area/security/brig) "awc" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/cable, -/turf/open/floor/plasteel, -/area/security/brig) -"awd" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, /obj/structure/cable, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, /turf/open/floor/plasteel, /area/security/brig) "awe" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/disposalpipe/segment{ dir = 4 }, /obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, /turf/open/floor/plasteel, /area/security/brig) "awf" = ( -/obj/structure/disposalpipe/junction/flip{ - dir = 4 - }, /obj/structure/cable, -/turf/open/floor/plasteel, -/area/security/brig) +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) "awg" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on, -/obj/structure/disposalpipe/segment{ +/obj/structure/chair/office{ dir = 4 }, /obj/structure/cable, -/turf/open/floor/plasteel, -/area/security/brig) +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) "awh" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -10625,34 +10490,33 @@ /turf/open/floor/plasteel, /area/security/brig) "awi" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, /mob/living/simple_animal/bot/secbot/beepsky{ desc = "It's Officer Beepsky! Powered by a potato and a shot of whiskey, and with a sturdier reinforced chassis, too."; health = 45; maxHealth = 45; name = "Officer Beepsky" }, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel, /area/security/brig) "awj" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, /turf/open/floor/plasteel, /area/security/brig) "awl" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 1 - }, /obj/structure/disposalpipe/segment{ dir = 4 }, /obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, /turf/open/floor/plasteel, /area/security/brig) "awn" = ( @@ -10688,8 +10552,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 5 }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ +/obj/effect/turf_decal/trimline/red/filled/line{ dir = 4 }, /turf/open/floor/plasteel, @@ -10909,8 +10772,8 @@ /obj/structure/disposalpipe/trunk{ dir = 1 }, -/obj/effect/turf_decal/tile/red{ - dir = 8 +/obj/effect/turf_decal/trimline/red/filled/corner{ + dir = 1 }, /turf/open/floor/plasteel, /area/security/brig) @@ -10919,120 +10782,124 @@ dir = 4 }, /obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel, /area/security/brig) "axc" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/light, -/obj/machinery/camera{ - c_tag = "Brig - Hallway - Port"; +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 1 }, -/obj/machinery/door_timer{ - id = "Cell 1"; - name = "Cell 1"; - pixel_y = -32 - }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, /turf/open/floor/plasteel, /area/security/brig) "axd" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/security/brig) -"axe" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, -/obj/structure/cable, -/turf/open/floor/plasteel, -/area/security/brig) -"axf" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/security/brig) +"axe" = ( /obj/machinery/door_timer{ id = "Cell 2"; name = "Cell 2"; pixel_y = -32 }, /obj/effect/landmark/event_spawn, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 }, +/obj/machinery/light, +/turf/open/floor/plasteel, +/area/security/brig) +"axf" = ( +/obj/machinery/door_timer{ + id = "Cell 3"; + name = "Cell 3"; + pixel_x = 32; + pixel_y = -32 + }, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel, /area/security/brig) "axg" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/tile/red, +/obj/machinery/light, +/obj/machinery/door_timer{ + id = "Cell 1"; + name = "Cell 1"; + pixel_y = -32 + }, /turf/open/floor/plasteel, /area/security/brig) "axh" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, -/obj/machinery/door_timer{ - id = "Cell 3"; - name = "Cell 3"; - pixel_y = -32 - }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/security/brig) +/obj/structure/closet/secure_closet/warden, +/obj/item/gun/energy/laser, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) "axi" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ +/obj/effect/turf_decal/trimline/red/filled/line{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, /obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel, /area/security/brig) "axj" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 8 + }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/security/brig) -"axk" = ( -/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 4 + dir = 5 }, /turf/open/floor/plasteel, /area/security/brig) "axl" = ( +/obj/structure/closet/crate/secure/weapon{ + desc = "A secure clothing crate."; + name = "formal uniform crate"; + req_access_txt = "3" + }, +/obj/item/clothing/under/rank/security/officer/formal, +/obj/item/clothing/under/rank/security/officer/formal, +/obj/item/clothing/under/rank/security/officer/formal, +/obj/item/clothing/under/rank/security/officer/formal, +/obj/item/clothing/under/rank/security/officer/formal, +/obj/item/clothing/under/rank/security/officer/formal, +/obj/item/clothing/suit/security/officer, +/obj/item/clothing/suit/security/officer, +/obj/item/clothing/suit/security/officer, +/obj/item/clothing/suit/security/officer, +/obj/item/clothing/suit/security/officer, +/obj/item/clothing/suit/security/officer, +/obj/item/clothing/under/rank/security/warden/formal, +/obj/item/clothing/suit/security/warden, +/obj/item/clothing/under/rank/security/head_of_security/formal, +/obj/item/clothing/suit/security/hos, +/obj/item/clothing/head/beret/sec/navyofficer, +/obj/item/clothing/head/beret/sec/navyofficer, +/obj/item/clothing/head/beret/sec/navyofficer, +/obj/item/clothing/head/beret/sec/navyofficer, +/obj/item/clothing/head/beret/sec/navyofficer, +/obj/item/clothing/head/beret/sec/navyofficer, +/obj/item/clothing/head/beret/sec/navywarden, +/obj/item/clothing/head/beret/sec/navyhos, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = 27 + }, +/obj/effect/turf_decal/tile/blue, +/obj/structure/cable, +/turf/open/floor/plasteel/dark, +/area/security/warden) +"axm" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -11045,63 +10912,59 @@ /obj/machinery/button/flasher{ id = "secentranceflasher"; name = "Brig Entrance Flasher"; - pixel_x = -3; + pixel_x = -6; pixel_y = -38; req_access_txt = "1" }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 8 +/obj/effect/turf_decal/trimline/red/filled/corner, +/obj/machinery/button/flasher{ + id = "holdingflash"; + name = "Holding Cell Flasher"; + pixel_x = 6; + pixel_y = -38; + req_access_txt = "1" }, /obj/structure/cable, /turf/open/floor/plasteel, /area/security/brig) -"axm" = ( +"axn" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/security/brig) -"axn" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1 - }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/trimline/red/filled/line, /turf/open/floor/plasteel, /area/security/brig) "axo" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/cable, -/turf/open/floor/plasteel, -/area/security/brig) -"axp" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red, -/turf/open/floor/plasteel, -/area/security/brig) -"axq" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, -/obj/effect/turf_decal/tile/red, -/turf/open/floor/plasteel, -/area/security/brig) -"axr" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 +/obj/effect/turf_decal/trimline/red/filled/corner{ + dir = 8 }, /obj/machinery/button/flasher{ id = "holdingflash"; pixel_y = -26; req_access_txt = "1" }, +/turf/open/floor/plasteel, +/area/security/brig) +"axp" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/security/brig) +"axq" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/security/brig) +"axr" = ( /obj/effect/landmark/event_spawn, -/obj/effect/turf_decal/tile/red, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, /turf/open/floor/plasteel, /area/security/brig) "axs" = ( @@ -11117,7 +10980,6 @@ c_tag = "Brig - Hallway - Starboard"; dir = 1 }, -/obj/effect/turf_decal/tile/red, /turf/open/floor/plasteel, /area/security/brig) "axt" = ( @@ -11125,15 +10987,17 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/effect/turf_decal/tile/red, /obj/structure/cable, +/obj/effect/turf_decal/trimline/red/filled/line, /turf/open/floor/plasteel, /area/security/brig) "axu" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 1 }, -/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/trimline/red/filled/corner{ + dir = 8 + }, /turf/open/floor/plasteel, /area/security/brig) "axv" = ( @@ -11143,13 +11007,9 @@ /obj/structure/extinguisher_cabinet{ pixel_x = 27 }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ +/obj/effect/turf_decal/trimline/red/filled/corner{ dir = 4 }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, /turf/open/floor/plasteel, /area/security/brig) "axw" = ( @@ -11318,13 +11178,11 @@ }, /area/maintenance/starboard/fore) "axR" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 }, -/obj/machinery/holopad, -/obj/effect/turf_decal/tile/red{ - dir = 4 +/obj/machinery/photocopier{ + pixel_y = 3 }, /turf/open/floor/plasteel, /area/security/brig) @@ -11547,82 +11405,70 @@ dir = 8 }, /obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel, /area/security/brig) "ayy" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/cable, -/turf/open/floor/plating, -/area/security/brig) -"ayz" = ( -/obj/machinery/door/window/brigdoor/security/cell{ - id = "Cell 2"; - name = "Cell 2" - }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/structure/cable, -/turf/open/floor/plasteel, -/area/security/brig) -"ayA" = ( -/obj/machinery/door/window/brigdoor/security/cell{ - id = "Cell 3"; - name = "Cell 3" - }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/structure/cable, -/turf/open/floor/plasteel, -/area/security/brig) -"ayB" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/machinery/door/airlock/security/glass{ - id_tag = "innerbrig"; - name = "Brig"; - req_access_txt = "63" - }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/structure/cable, -/turf/open/floor/plasteel, -/area/security/brig) -"ayC" = ( -/obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/structure/cable, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) +"ayz" = ( /obj/machinery/door/airlock/security/glass{ - id_tag = "innerbrig"; - name = "Brig"; - req_access_txt = "63" + name = "Brig Control"; + req_access_txt = "3" }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 8 +/obj/structure/cable, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) +"ayA" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 1 }, +/obj/machinery/camera{ + c_tag = "Warden's Office"; + dir = 4 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) +"ayB" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) +"ayC" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plasteel, /area/security/brig) "ayE" = ( -/obj/machinery/door/window/brigdoor/security/holding{ - id = "Holding Cell"; - name = "Holding Cell" +/obj/structure/table/reinforced, +/obj/machinery/door/window/westleft{ + base_state = "right"; + dir = 4; + icon_state = "right"; + name = "Outer Window" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 8 +/obj/machinery/door/window/brigdoor{ + dir = 8; + name = "Brig Control Desk"; + req_access_txt = "3" }, +/obj/item/folder/red, +/obj/item/folder/red, +/obj/item/poster/random_official, /obj/structure/cable, -/turf/open/floor/plasteel, -/area/security/brig) +/obj/item/book/manual/wiki/security_space_law{ + pixel_x = -3; + pixel_y = 5 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) "ayF" = ( /turf/closed/wall/r_wall, /area/security/detectives_office) @@ -11783,13 +11629,17 @@ /turf/open/floor/plasteel/dark, /area/engine/engineering) "azb" = ( -/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, -/obj/effect/turf_decal/tile/red{ - dir = 4 +/obj/machinery/door/airlock/security/glass{ + name = "Brig Control"; + req_access_txt = "3" }, /obj/structure/cable, -/turf/open/floor/plasteel, -/area/security/brig) +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/turf/closed/wall, +/area/security/warden) "azd" = ( /obj/machinery/atmospherics/pipe/heat_exchanging/simple, /obj/machinery/atmospherics/pipe/heat_exchanging/simple{ @@ -12043,9 +11893,12 @@ "azE" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, /turf/open/floor/plasteel, /area/security/brig) -"azF" = ( +"azG" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 1 }, @@ -12053,137 +11906,58 @@ dir = 4 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel, -/area/security/brig) -"azG" = ( -/obj/machinery/flasher{ - id = "Cell 2"; - pixel_x = -28 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel, -/area/security/brig) -"azH" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 1 - }, -/obj/machinery/flasher{ - id = "Cell 3"; - pixel_x = -28 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel, -/area/security/brig) -"azI" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/light/small{ - dir = 8 - }, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, +/obj/effect/landmark/event_spawn, /obj/structure/cable, /turf/open/floor/plasteel, /area/security/brig) -"azJ" = ( -/obj/machinery/holopad, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/security/brig) "azK" = ( -/obj/machinery/light/small{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/effect/turf_decal/tile/red{ +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 4 +/obj/effect/turf_decal/trimline/red/filled/corner{ + dir = 8 }, -/turf/open/floor/plasteel, -/area/security/brig) -"azL" = ( -/obj/structure/chair, -/obj/machinery/flasher{ - id = "holdingflash"; - pixel_x = -25 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel, -/area/security/brig) -"azM" = ( -/obj/structure/chair, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/trimline/red/filled/corner, /turf/open/floor/plasteel, /area/security/brig) "azN" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/machinery/door/airlock/security/glass{ + id_tag = "innerbrig"; + name = "Brig"; + req_access_txt = "63" + }, /obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, /turf/open/floor/plasteel, /area/security/brig) "azO" = ( -/obj/structure/chair, -/obj/effect/landmark/event_spawn, +/obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel, /area/security/brig) "azP" = ( -/obj/structure/rack, -/obj/machinery/flasher{ - id = "holdingflash"; - pixel_x = 25 - }, -/obj/item/clothing/under/rank/prisoner, -/obj/item/clothing/under/rank/prisoner, -/obj/item/clothing/under/rank/prisoner, -/obj/item/clothing/under/rank/prisoner, -/obj/item/clothing/under/rank/prisoner, -/obj/item/clothing/shoes/sneakers/orange, -/obj/item/clothing/shoes/sneakers/orange, -/obj/item/clothing/shoes/sneakers/orange, -/obj/item/clothing/shoes/sneakers/orange, -/obj/item/clothing/shoes/sneakers/orange, -/obj/item/restraints/handcuffs, -/obj/item/restraints/handcuffs, -/obj/item/restraints/handcuffs, -/obj/item/restraints/handcuffs, -/obj/item/restraints/handcuffs, +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel, /area/security/brig) "azQ" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/security/brig) +"azR" = ( /obj/machinery/firealarm{ dir = 4; pixel_x = -24 }, -/obj/structure/filingcabinet, -/obj/machinery/light/small{ - dir = 1 - }, -/obj/machinery/light_switch{ - pixel_y = 25 - }, -/turf/open/floor/plasteel/grimy, -/area/security/detectives_office) -"azR" = ( /turf/open/floor/plasteel/grimy, /area/security/detectives_office) "azS" = ( @@ -12697,129 +12471,93 @@ /turf/open/floor/plasteel/dark, /area/hallway/primary/fore) "aAY" = ( +/obj/effect/decal/cleanable/dirt, /obj/structure/bed, /obj/item/bedsheet, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel, -/area/security/brig) -"aAZ" = ( -/obj/structure/closet/secure_closet/brig{ - id = "Cell 1"; - name = "Cell 1 Locker" - }, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel, /area/security/brig) "aBa" = ( -/obj/structure/closet/secure_closet/brig{ - id = "Cell 2"; - name = "Cell 2 Locker" - }, /obj/effect/decal/cleanable/dirt, +/obj/machinery/flasher{ + id = "Cell 3"; + pixel_x = -23; + pixel_y = -23 + }, +/obj/structure/bed, +/obj/item/bedsheet, /turf/open/floor/plasteel, /area/security/brig) "aBb" = ( -/obj/structure/closet/secure_closet/brig{ - id = "Cell 3"; - name = "Cell 3 Locker" - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel, -/area/security/brig) -"aBc" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/firealarm{ - dir = 4; - pixel_x = -26 - }, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, +/obj/effect/landmark/start/warden, +/obj/structure/chair/office, /obj/structure/cable, -/turf/open/floor/plasteel, -/area/security/brig) +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) +"aBc" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/obj/machinery/door/poddoor/preopen{ + id = "briglockdown"; + name = "brig shutters" + }, +/turf/open/floor/plating, +/area/security/warden) "aBd" = ( -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/trimline/red/filled/end{ dir = 8 }, /turf/open/floor/plasteel, /area/security/brig) "aBe" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/extinguisher_cabinet{ - pixel_x = 27 +/obj/machinery/holopad, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/trimline/red/filled/line, +/obj/effect/turf_decal/trimline/red/filled/corner{ + dir = 1 }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ +/obj/effect/turf_decal/trimline/red/filled/corner{ dir = 4 }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, /turf/open/floor/plasteel, /area/security/brig) "aBf" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 4 - }, -/obj/machinery/light/small{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel, -/area/security/brig) -"aBg" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel, +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, /area/security/brig) "aBh" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8 +/obj/effect/turf_decal/trimline/red/filled/end{ + dir = 4 }, /obj/effect/decal/cleanable/dirt, /obj/structure/cable, /turf/open/floor/plasteel, /area/security/brig) "aBi" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/airalarm{ - dir = 1; - pixel_y = -22 - }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel, /area/security/brig) "aBj" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 8 - }, -/obj/machinery/light/small{ +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 4 }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel, /area/security/brig) "aBk" = ( -/obj/structure/closet/secure_closet/detective, -/obj/effect/landmark/blobstart, -/obj/machinery/camera{ - c_tag = "Detective's Office"; - dir = 4 - }, -/turf/open/floor/plasteel/grimy, -/area/security/detectives_office) +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/security/brig) "aBl" = ( -/obj/machinery/holopad, /turf/open/floor/plasteel/grimy, /area/security/detectives_office) "aBn" = ( @@ -13267,86 +13005,55 @@ /turf/open/floor/plating, /area/security/brig) "aCn" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/obj/machinery/door/airlock/security/glass{ - id_tag = "outerbrig"; - name = "Brig"; - req_access_txt = "63" - }, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red{ +/obj/structure/disposalpipe/segment{ dir = 4 }, /obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel, /area/security/brig) "aCp" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/door/firedoor, -/obj/machinery/flasher{ - id = "secentranceflasher"; - pixel_x = 25 - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/obj/machinery/door/airlock/security/glass{ - id_tag = "outerbrig"; - name = "Brig"; - req_access_txt = "63" - }, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red{ - dir = 4 +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/obj/machinery/door/poddoor/preopen{ + id = "briglockdown"; + name = "brig shutters" }, /turf/open/floor/plasteel, /area/security/brig) "aCq" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/security/glass{ - name = "Security Desk"; - req_access_txt = "63" +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/cable, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel, /area/security/brig) "aCr" = ( -/obj/machinery/door/airlock/security{ - name = "Court Cell"; - req_access_txt = "63" +/obj/structure/chair{ + dir = 1 }, -/turf/open/floor/plasteel/dark, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, /area/security/brig) "aCs" = ( -/obj/structure/table/wood, +/obj/effect/decal/cleanable/dirt, +/obj/structure/chair, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/security/brig) +"aCt" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/structure/cable, /obj/machinery/power/apc{ areastring = "/area/security/detectives_office"; dir = 8; name = "Detective APC"; pixel_x = -25 }, -/obj/item/taperecorder{ - pixel_x = 3 - }, -/obj/item/storage/box/evidence, -/obj/item/flashlight/seclite, -/obj/structure/cable, -/turf/open/floor/plasteel/grimy, -/area/security/detectives_office) -"aCt" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 - }, -/obj/structure/cable, /turf/open/floor/plasteel/grimy, /area/security/detectives_office) "aCu" = ( @@ -13729,37 +13436,37 @@ /turf/open/floor/plasteel, /area/hallway/primary/fore) "aDw" = ( -/obj/effect/turf_decal/tile/red{ +/obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 }, /turf/open/floor/plasteel, /area/hallway/primary/fore) "aDx" = ( -/obj/structure/chair/stool, -/obj/effect/turf_decal/tile/red{ +/obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 }, +/obj/structure/chair/stool, /turf/open/floor/plasteel, /area/hallway/primary/fore) "aDy" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 1 + }, /obj/structure/sign/warning/electricshock{ pixel_y = 32 }, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, /turf/open/floor/plasteel, /area/hallway/primary/fore) "aDz" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 1 + }, /obj/structure/sign/warning/electricshock{ pixel_y = 32 }, /obj/machinery/camera{ c_tag = "Fore Primary Hallway Cells" }, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, /turf/open/floor/plasteel, /area/hallway/primary/fore) "aDA" = ( @@ -13769,17 +13476,22 @@ /obj/machinery/status_display/evac{ pixel_y = 32 }, -/obj/effect/turf_decal/tile/red{ +/obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 }, /turf/open/floor/plasteel, /area/hallway/primary/fore) "aDB" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/tile/red{ +/obj/structure/cable, +/obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 }, -/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/structure/sign/warning/electricshock{ + pixel_y = 32 + }, /turf/open/floor/plasteel, /area/hallway/primary/fore) "aDC" = ( @@ -13787,92 +13499,49 @@ /area/hallway/primary/fore) "aDD" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/effect/turf_decal/tile/red{ - dir = 4 +/obj/structure/cable, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 1 }, /turf/open/floor/plasteel, /area/hallway/primary/fore) "aDE" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/preopen{ - id = "briglockdown"; - name = "brig shutters" +/obj/machinery/computer/prisoner/management{ + dir = 4 }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/security/brig) +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) "aDF" = ( -/obj/machinery/computer/secure_data, -/obj/machinery/button/flasher{ - id = "secentranceflasher"; - name = "Brig Entrance Flash Control"; - pixel_x = -24; - pixel_y = 24; - req_access_txt = "1" - }, -/obj/machinery/button/door{ - id = "Secure Gate"; - name = "Cell Window Control"; - pixel_x = 5; - pixel_y = 27; - specialfunctions = 4 - }, -/obj/machinery/button/door{ - id = "briglockdown"; - name = "Brig Lockdown Control"; - pixel_x = 5; - pixel_y = 37 +/obj/machinery/flasher{ + id = "holdingflash"; + pixel_x = 25 }, /obj/machinery/light/small{ - dir = 1 + dir = 4 }, -/obj/machinery/button/door{ - desc = "A remote control switch for the medbay foyer."; - id = "innerbrig"; - name = "Brig Interior Doors Control"; - normaldoorcontrol = 1; - pixel_x = -5; - pixel_y = 37; - req_access_txt = "63" +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 }, -/obj/machinery/button/door{ - desc = "A remote control switch for the medbay foyer."; - id = "outerbrig"; - name = "Brig Exterior Doors Control"; - normaldoorcontrol = 1; - pixel_x = -5; - pixel_y = 27; - req_access_txt = "63" - }, -/turf/open/floor/plasteel/dark, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, /area/security/brig) "aDG" = ( -/obj/structure/filingcabinet/chestdrawer{ +/obj/structure/rack, +/obj/item/storage/box/firingpins{ + pixel_x = 3; pixel_y = 3 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/item/storage/box/firingpins, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue, /turf/open/floor/plasteel/dark, -/area/security/brig) +/area/security/warden) "aDH" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 1 - }, -/obj/machinery/button/flasher{ - id = "holdingflash"; - name = "holding cell flasher button"; - pixel_x = 23; - pixel_y = 23; - req_access_txt = "1" - }, -/obj/machinery/camera{ - c_tag = "Brig - Desk"; - dir = 8 - }, -/obj/item/radio/intercom{ - pixel_x = 29; - pixel_y = -2 - }, -/obj/structure/cable, +/obj/structure/closet/secure_closet/brig, /turf/open/floor/plasteel/dark, /area/security/brig) "aDI" = ( @@ -13887,6 +13556,13 @@ dir = 4 }, /obj/machinery/disposal/bin, +/obj/machinery/camera{ + c_tag = "Detective's Office"; + dir = 4 + }, +/obj/machinery/light_switch{ + pixel_y = -25 + }, /turf/open/floor/plasteel/grimy, /area/security/detectives_office) "aDJ" = ( @@ -13906,6 +13582,7 @@ dir = 4 }, /obj/structure/cable, +/obj/machinery/holopad, /turf/open/floor/plasteel/grimy, /area/security/detectives_office) "aDL" = ( @@ -14405,65 +14082,36 @@ /turf/open/floor/plasteel, /area/hallway/primary/fore) "aEV" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/window/westleft{ - base_state = "right"; - icon_state = "right"; - name = "Outer Window" - }, -/obj/machinery/door/window/brigdoor{ - dir = 4; - name = "Security Desk"; - req_access_txt = "1" - }, -/obj/item/radio/off, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "briglockdown"; - name = "brig shutters" - }, -/obj/structure/cable, -/turf/open/floor/plasteel/dark, -/area/security/brig) -"aEW" = ( -/obj/structure/chair/office{ - dir = 8 - }, -/obj/structure/cable, -/turf/open/floor/plasteel/dark, -/area/security/brig) -"aEX" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/plasteel/dark, -/area/security/brig) -"aEY" = ( -/obj/machinery/airalarm{ - dir = 8; - pixel_x = 24 - }, -/obj/machinery/light/small{ +/obj/machinery/light{ dir = 4 }, -/obj/structure/cable, +/turf/open/floor/plasteel, +/area/hallway/primary/fore) +"aEW" = ( +/obj/machinery/flasher/portable, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/security/warden) +"aEX" = ( +/obj/effect/landmark/event_spawn, /turf/open/floor/plasteel/dark, /area/security/brig) "aEZ" = ( -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/table, -/obj/item/bodybag, -/obj/item/clothing/gloves/color/latex, -/obj/item/clothing/mask/surgical, -/turf/open/floor/plasteel/dark, -/area/security/detectives_office) -"aFa" = ( /obj/machinery/door/window{ dir = 1 }, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/grimy, +/area/security/detectives_office) +"aFa" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/floor/plasteel/grimy, /area/security/detectives_office) "aFb" = ( /obj/machinery/door/airlock/maintenance{ @@ -14965,9 +14613,6 @@ /turf/open/floor/plasteel, /area/hallway/primary/fore) "aGo" = ( -/obj/machinery/computer/warrant{ - dir = 8 - }, /obj/effect/turf_decal/tile/red, /turf/open/floor/plasteel, /area/hallway/primary/fore) @@ -14983,62 +14628,53 @@ /turf/open/floor/plasteel/white, /area/medical/chemistry) "aGq" = ( -/obj/machinery/computer/security{ +/obj/machinery/door/firedoor, +/obj/machinery/flasher{ + id = "secentranceflasher"; + pixel_x = 25 + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 1 }, -/obj/machinery/newscaster/security_unit{ - pixel_y = -30 +/obj/machinery/door/airlock/security/glass{ + id_tag = "outerbrig"; + name = "Brig"; + req_access_txt = "63" }, -/turf/open/floor/plasteel/dark, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/plasteel, /area/security/brig) "aGr" = ( -/obj/structure/table, -/obj/item/folder/red{ - pixel_x = 3 - }, -/obj/item/folder/white{ - pixel_x = -4; - pixel_y = 2 - }, -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching Prison Wing holding areas."; - dir = 1; - name = "Prison Monitor"; - network = list("prison"); - pixel_y = -30 - }, +/obj/structure/rack, +/obj/item/clothing/under/rank/prisoner, +/obj/item/clothing/under/rank/prisoner, +/obj/item/clothing/under/rank/prisoner, +/obj/item/clothing/under/rank/prisoner, +/obj/item/clothing/under/rank/prisoner, +/obj/item/clothing/shoes/sneakers/orange, +/obj/item/clothing/shoes/sneakers/orange, +/obj/item/clothing/shoes/sneakers/orange, +/obj/item/clothing/shoes/sneakers/orange, +/obj/item/clothing/shoes/sneakers/orange, /obj/item/restraints/handcuffs, -/turf/open/floor/plasteel/dark, -/area/security/brig) -"aGs" = ( -/obj/structure/table, -/obj/item/paper_bin{ - pixel_x = -3; - pixel_y = 7 - }, -/obj/item/pen, -/obj/machinery/firealarm{ - dir = 8; - pixel_x = 24 - }, -/obj/structure/reagent_dispensers/peppertank{ - pixel_y = -30 - }, -/turf/open/floor/plasteel/dark, -/area/security/brig) -"aGt" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, +/obj/item/restraints/handcuffs, +/obj/item/restraints/handcuffs, +/obj/item/restraints/handcuffs, +/obj/item/restraints/handcuffs, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, /area/security/brig) "aGu" = ( -/obj/structure/bodycontainer/morgue, -/turf/open/floor/plasteel/dark, +/obj/structure/filingcabinet, +/turf/open/floor/plasteel/grimy, /area/security/detectives_office) "aGv" = ( /obj/machinery/light/small, -/turf/open/floor/plasteel/dark, +/obj/effect/landmark/blobstart, +/obj/structure/closet/secure_closet/detective, +/turf/open/floor/plasteel/grimy, /area/security/detectives_office) "aGw" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -15557,16 +15193,20 @@ /turf/closed/wall, /area/security/courtroom) "aHE" = ( -/turf/closed/wall/r_wall, -/area/security/courtroom) +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/obj/effect/turf_decal/trimline/red/filled/corner, +/turf/open/floor/plasteel, +/area/security/brig) "aHF" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/security{ - name = "Court Cell"; - req_access_txt = "63" +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 1 }, -/turf/open/floor/plasteel/dark, -/area/security/courtroom) +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/hallway/primary/fore) "aHG" = ( /turf/closed/wall, /area/lawoffice) @@ -18015,8 +17655,12 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red, /turf/open/floor/plasteel/dark, -/area/security/warden) +/area/security/brig) "aNB" = ( /obj/structure/window/reinforced{ dir = 4 @@ -26895,44 +26539,19 @@ /turf/open/floor/plasteel, /area/security/checkpoint/customs) "bgB" = ( -/obj/machinery/light/small{ - dir = 1 - }, /obj/machinery/airalarm{ - pixel_y = 28 + dir = 4; + pixel_x = -22 }, -/obj/structure/closet/crate/secure/weapon{ - desc = "A secure clothing crate."; - name = "formal uniform crate"; - req_access_txt = "3" +/obj/structure/rack, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 4 }, -/obj/item/clothing/under/rank/security/officer/formal, -/obj/item/clothing/under/rank/security/officer/formal, -/obj/item/clothing/under/rank/security/officer/formal, -/obj/item/clothing/under/rank/security/officer/formal, -/obj/item/clothing/under/rank/security/officer/formal, -/obj/item/clothing/under/rank/security/officer/formal, -/obj/item/clothing/suit/security/officer, -/obj/item/clothing/suit/security/officer, -/obj/item/clothing/suit/security/officer, -/obj/item/clothing/suit/security/officer, -/obj/item/clothing/suit/security/officer, -/obj/item/clothing/suit/security/officer, -/obj/item/clothing/under/rank/security/warden/formal, -/obj/item/clothing/suit/security/warden, -/obj/item/clothing/under/rank/security/head_of_security/formal, -/obj/item/clothing/suit/security/hos, -/obj/item/clothing/head/beret/sec/navyofficer, -/obj/item/clothing/head/beret/sec/navyofficer, -/obj/item/clothing/head/beret/sec/navyofficer, -/obj/item/clothing/head/beret/sec/navyofficer, -/obj/item/clothing/head/beret/sec/navyofficer, -/obj/item/clothing/head/beret/sec/navyofficer, -/obj/item/clothing/head/beret/sec/navywarden, -/obj/item/clothing/head/beret/sec/navyhos, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/security/warden) +/obj/item/gun/energy/e_gun/dragnet, +/obj/item/gun/energy/e_gun/dragnet, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory) "bgC" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 5 @@ -32943,7 +32562,7 @@ /area/crew_quarters/bar) "bts" = ( /obj/machinery/door/airlock/maintenance{ - req_access_txt = "12" + req_one_access_txt = "12;46" }, /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -49281,20 +48900,6 @@ /turf/open/floor/plating, /area/maintenance/port/aft) "cfG" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/machinery/computer/med_data, -/turf/open/floor/plasteel/dark, -/area/medical/sleeper) -"cfH" = ( /obj/structure/closet/wardrobe/pjs, /obj/machinery/airalarm{ pixel_y = 24 @@ -49311,6 +48916,20 @@ }, /turf/open/floor/plasteel/dark, /area/medical/sleeper) +"cfH" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/computer/med_data, +/turf/open/floor/plasteel/dark, +/area/medical/sleeper) "cfI" = ( /obj/machinery/light{ dir = 1 @@ -49328,7 +48947,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, -/obj/structure/closet/wardrobe/pjs, +/obj/machinery/computer/crew, /turf/open/floor/plasteel/dark, /area/medical/sleeper) "cfJ" = ( @@ -50901,34 +50520,6 @@ dir = 4 }, /area/science/research) -"ciS" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 4 - }, -/mob/living/simple_animal/pet/dog/pug{ - desc = "It's Pugley IV, the research department's lovable pug clone. Hopefully nothing happens to this one - fourth time lucky!"; - name = "Pugley IV"; - real_name = "Pugley IV" - }, -/turf/open/floor/engine, -/area/science/explab) -"ciT" = ( -/obj/item/beacon, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 - }, -/turf/open/floor/engine, -/area/science/explab) -"ciU" = ( -/obj/machinery/rnd/experimentor, -/turf/open/floor/engine, -/area/science/explab) -"ciV" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 4 - }, -/turf/open/floor/engine, -/area/science/explab) "ciW" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 10 @@ -51919,12 +51510,7 @@ /area/medical/medbay/central) "clp" = ( /obj/structure/table, -/obj/item/storage/firstaid{ - pixel_x = 4; - pixel_y = 4 - }, /obj/machinery/light, -/obj/item/storage/firstaid, /obj/effect/turf_decal/tile/blue{ dir = 1 }, @@ -51935,6 +51521,15 @@ /obj/effect/turf_decal/tile/blue{ dir = 8 }, +/obj/item/storage/firstaid/regular{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/storage/firstaid/regular, +/obj/item/storage/firstaid/regular{ + pixel_x = -4; + pixel_y = -4 + }, /turf/open/floor/plasteel/white, /area/medical/medbay/central) "clq" = ( @@ -64756,8 +64351,7 @@ /turf/open/floor/plasteel/dark, /area/chapel/office) "cLU" = ( -/obj/effect/landmark/blobstart, -/obj/effect/landmark/xeno_spawn, +/obj/machinery/rnd/bepis, /turf/open/floor/engine, /area/science/explab) "cLV" = ( @@ -68245,6 +67839,17 @@ /obj/structure/disposalpipe/segment, /turf/closed/wall/r_wall, /area/science/xenobiology) +"cTY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/flasher{ + id = "Cell 2"; + pixel_x = -23; + pixel_y = -23 + }, +/obj/structure/bed, +/obj/item/bedsheet, +/turf/open/floor/plasteel, +/area/security/brig) "cUH" = ( /obj/structure/table/optable, /turf/open/floor/plasteel/white, @@ -68623,6 +68228,23 @@ }, /turf/open/floor/plasteel, /area/hallway/secondary/entry) +"cZk" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/window/brigdoor{ + dir = 1; + name = "Weapon Distribution"; + req_access_txt = "3" + }, +/obj/item/paper, +/obj/machinery/door/firedoor, +/obj/structure/cable, +/obj/machinery/door/window/southleft{ + name = "Requests Window" + }, +/obj/item/pen, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory) "cZq" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -70855,24 +70477,18 @@ /turf/open/floor/plating, /area/maintenance/port/fore) "dhv" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/window/westleft{ - base_state = "right"; - dir = 4; - icon_state = "right"; - name = "Outer Window" +/obj/machinery/door/window/brigdoor/security/cell{ + id = "Cell 2"; + name = "Cell 2" }, -/obj/machinery/door/window/brigdoor{ - dir = 8; - name = "Brig Control Desk"; - req_access_txt = "3" +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 }, -/obj/item/folder/red, -/obj/item/folder/red, -/obj/item/poster/random_official, /obj/structure/cable, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/security/brig) "dhw" = ( /obj/structure/closet, /obj/item/poster/random_contraband, @@ -71866,6 +71482,12 @@ }, /turf/open/floor/plasteel, /area/quartermaster/sorting) +"dmU" = ( +/obj/machinery/computer/crew{ + dir = 8 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) "dnd" = ( /obj/structure/closet/firecloset, /turf/open/floor/plating, @@ -72435,9 +72057,21 @@ /turf/open/floor/plasteel/white, /area/medical/virology) "dBX" = ( -/obj/effect/landmark/event_spawn, -/turf/open/floor/plasteel/dark, -/area/ai_monitored/security/armory) +/obj/machinery/door/window/brigdoor/security/cell{ + id = "Cell 2"; + name = "Cell 2" + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/trimline/red/filled/corner{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig) "dBY" = ( /obj/effect/landmark/event_spawn, /obj/effect/turf_decal/tile/neutral{ @@ -72459,15 +72093,7 @@ dir = 8 }, /turf/open/floor/plasteel/dark, -/area/security/warden) -"dCa" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/landmark/event_spawn, -/obj/structure/cable, -/turf/open/floor/plasteel, -/area/security/warden) +/area/security/brig) "dCb" = ( /obj/effect/landmark/event_spawn, /obj/effect/turf_decal/tile/red{ @@ -72498,20 +72124,70 @@ /turf/open/floor/plating, /area/maintenance/fore) "dCf" = ( -/obj/effect/landmark/event_spawn, -/turf/open/floor/plasteel/showroomfloor, +/obj/structure/table, +/obj/item/folder/red, +/obj/item/restraints/handcuffs, +/obj/item/clothing/head/cone{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/clothing/head/cone{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/clothing/head/cone{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/clothing/head/cone{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/clothing/head/cone{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/dark, /area/security/warden) "dCg" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/landmark/event_spawn, -/obj/effect/turf_decal/tile/red{ - dir = 1 +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 8 }, /turf/open/floor/plasteel, /area/security/brig) "dCh" = ( -/obj/effect/landmark/event_spawn, -/obj/structure/cable, +/obj/structure/table, +/obj/machinery/button/door{ + id = "Prison Gate"; + name = "Prison Wing Lockdown"; + pixel_y = -3; + req_access_txt = "2" + }, +/obj/machinery/button/door{ + id = "Secure Gate"; + name = "Cell Window Control"; + pixel_x = -5; + pixel_y = 7; + specialfunctions = 4 + }, +/obj/machinery/button/door{ + id = "briglockdown"; + name = "Brig Lockdown Control"; + pixel_x = 5; + pixel_y = 7 + }, +/obj/item/key/security, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = 28 + }, +/obj/machinery/light{ + dir = 4 + }, /turf/open/floor/plasteel/showroomfloor, /area/security/warden) "dCi" = ( @@ -72520,12 +72196,6 @@ icon_state = "platingdmg3" }, /area/maintenance/starboard/fore) -"dCj" = ( -/obj/effect/landmark/event_spawn, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/turf/open/floor/plasteel, -/area/security/brig) "dCk" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -73077,6 +72747,13 @@ dir = 5 }, /area/crew_quarters/kitchen) +"eeh" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/security/brig) "eew" = ( /obj/structure/rack, /obj/item/reagent_containers/food/drinks/bottle/vodka{ @@ -73090,6 +72767,17 @@ /obj/item/reagent_containers/food/drinks/bottle/whiskey, /turf/open/floor/wood, /area/maintenance/port/aft) +"ehi" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/security/glass{ + name = "Secure Gear Storage"; + req_access_txt = "3" + }, +/obj/effect/turf_decal/delivery, +/obj/structure/cable, +/obj/structure/cable, +/turf/open/floor/plasteel/dark, +/area/security/warden) "enV" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/turf_decal/tile/neutral{ @@ -73110,6 +72798,20 @@ /obj/structure/cable, /turf/open/floor/plating, /area/maintenance/starboard) +"eph" = ( +/obj/structure/rack, +/obj/item/storage/box/handcuffs, +/obj/item/storage/box/flashbangs{ + pixel_x = -2; + pixel_y = -2 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue, +/obj/structure/cable, +/turf/open/floor/plasteel/dark, +/area/security/warden) "eqt" = ( /obj/structure/girder, /obj/structure/grille, @@ -73255,6 +72957,15 @@ icon_state = "wood-broken4" }, /area/maintenance/port/aft) +"eYX" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/secure_closet/brig{ + id = "Cell 2"; + name = "Cell 2 Locker" + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/security/brig) "eZe" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 10 @@ -73262,6 +72973,9 @@ /obj/structure/cable, /turf/open/floor/plating, /area/maintenance/starboard/aft) +"eZU" = ( +/turf/closed/wall/r_wall, +/area/security/courtroom) "fcn" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -73361,6 +73075,13 @@ }, /turf/open/floor/plasteel/white, /area/medical/chemistry) +"fCe" = ( +/obj/machinery/door/airlock/security{ + name = "Court Cell"; + req_access_txt = "63" + }, +/turf/open/floor/plasteel, +/area/security/brig) "fDD" = ( /obj/machinery/light_switch{ pixel_y = -25 @@ -73557,7 +73278,9 @@ /area/medical/chemistry) "gHh" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/door/airlock/maintenance, +/obj/machinery/door/airlock/maintenance{ + req_one_access_txt = "12;47" + }, /obj/structure/disposalpipe/segment, /obj/structure/cable, /turf/open/floor/plating, @@ -73588,6 +73311,13 @@ }, /turf/open/floor/plasteel/white, /area/medical/chemistry) +"gPT" = ( +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/hallway/primary/fore) "gUb" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 9 @@ -73600,6 +73330,13 @@ }, /turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) +"hdb" = ( +/obj/structure/bed, +/obj/item/clothing/suit/straight_jacket, +/obj/item/clothing/glasses/blindfold, +/obj/item/clothing/mask/muzzle, +/turf/open/floor/plasteel/dark, +/area/security/brig) "hdh" = ( /obj/structure/closet/crate, /obj/item/storage/box/lights/mixed, @@ -73637,10 +73374,44 @@ }, /turf/open/floor/plasteel/dark, /area/engine/break_room) +"hjl" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/security/brig) "hkq" = ( /obj/structure/cable, /turf/open/floor/plasteel, /area/engine/storage_shared) +"hql" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/window/westleft{ + base_state = "right"; + dir = 2; + icon_state = "right"; + name = "Reception Window" + }, +/obj/machinery/door/window/brigdoor{ + dir = 1; + name = "Brig Control Desk"; + req_access_txt = "3" + }, +/obj/item/paper, +/obj/machinery/door/firedoor, +/obj/structure/cable, +/obj/item/storage/fancy/donut_box, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "briglockdown"; + name = "Warden Desk Shutters" + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) "hvf" = ( /obj/effect/turf_decal/tile/yellow, /obj/effect/turf_decal/tile/yellow{ @@ -73858,6 +73629,17 @@ }, /turf/open/floor/plasteel, /area/science/misc_lab/range) +"ixj" = ( +/obj/machinery/flasher/portable, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/plasteel/dark, +/area/security/warden) "ixo" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/disposalpipe/segment, @@ -74269,6 +74051,16 @@ }, /turf/open/floor/plasteel/white, /area/medical/chemistry) +"kKH" = ( +/obj/structure/table/wood, +/obj/item/taperecorder{ + pixel_x = 3 + }, +/obj/item/storage/box/evidence, +/obj/item/flashlight/seclite, +/obj/structure/cable, +/turf/open/floor/plasteel/grimy, +/area/security/detectives_office) "kMC" = ( /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, @@ -74438,6 +74230,13 @@ /obj/docking_port/stationary/public_mining_dock, /turf/open/floor/plating, /area/construction/mining/aux_base) +"lJY" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/security/brig) "lKu" = ( /obj/effect/landmark/carpspawn, /turf/open/space/basic, @@ -74635,6 +74434,25 @@ /obj/machinery/door/firedoor, /turf/open/floor/plasteel, /area/hydroponics) +"mDQ" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) +"mEn" = ( +/obj/machinery/door/window/brigdoor/security/holding{ + id = "Holding Cell"; + name = "Holding Cell" + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/security/brig) "mGS" = ( /obj/machinery/light/small{ dir = 4 @@ -74775,6 +74593,13 @@ }, /turf/open/floor/plasteel/white, /area/medical/chemistry) +"npx" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) "ntG" = ( /obj/machinery/power/terminal{ dir = 1 @@ -74808,6 +74633,15 @@ /obj/structure/disposalpipe/segment, /turf/closed/wall, /area/medical/chemistry) +"nEv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/secure_closet/brig{ + id = "Cell 3"; + name = "Cell 3 Locker" + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/security/brig) "nHj" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/disposalpipe/segment{ @@ -74946,6 +74780,14 @@ /obj/machinery/vending/modularpc, /turf/open/floor/plasteel/white, /area/science/research) +"ofB" = ( +/obj/machinery/door/airlock/security{ + name = "Court Cell"; + req_access_txt = "63" + }, +/obj/machinery/door/firedoor, +/turf/closed/wall, +/area/security/courtroom) "ogE" = ( /obj/structure/closet/firecloset, /turf/open/floor/plating, @@ -74983,6 +74825,13 @@ }, /turf/open/floor/plasteel, /area/science/mixing) +"ooY" = ( +/obj/machinery/computer/warrant{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red, +/turf/open/floor/plasteel, +/area/hallway/primary/fore) "otq" = ( /obj/structure/closet/emcloset, /obj/structure/sign/warning/vacuum/external{ @@ -75124,6 +74973,25 @@ /obj/machinery/vending/snack/random, /turf/open/floor/plasteel/dark, /area/maintenance/port/aft) +"oVO" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/obj/structure/rack, +/obj/effect/turf_decal/tile/blue, +/obj/item/reagent_containers/glass/bottle/morphine, +/obj/item/storage/box/chemimp{ + pixel_x = 4; + pixel_y = 3 + }, +/obj/item/storage/box/trackimp, +/obj/item/storage/lockbox/loyalty, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/security/warden) "oXP" = ( /obj/structure/closet/crate, /obj/item/crowbar/red, @@ -75248,6 +75116,13 @@ }, /turf/open/floor/plating, /area/maintenance/port/aft) +"pvK" = ( +/obj/machinery/computer/security{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) "pvL" = ( /obj/machinery/atmospherics/pipe/simple/general/visible, /obj/machinery/door/firedoor, @@ -75551,6 +75426,26 @@ dir = 5 }, /area/crew_quarters/kitchen) +"qRr" = ( +/obj/machinery/flasher/portable, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/item/radio/intercom{ + pixel_x = 30 + }, +/obj/machinery/camera{ + c_tag = "Security - Gear Room"; + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/security/warden) "qUR" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -75586,6 +75481,14 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plasteel/white, /area/medical/chemistry) +"qZU" = ( +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/turf/open/floor/plasteel, +/area/security/main) "rbG" = ( /obj/structure/cable, /turf/open/floor/plasteel, @@ -75622,6 +75525,33 @@ }, /turf/open/floor/plasteel/dark, /area/maintenance/port/aft) +"roZ" = ( +/obj/machinery/computer/secure_data{ + dir = 4 + }, +/obj/machinery/computer/security/telescreen{ + desc = "Used for watching Prison Wing holding areas."; + name = "Prison Monitor"; + network = list("prison"); + pixel_x = -30 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) +"rqO" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/obj/machinery/door/airlock/security/glass{ + id_tag = "outerbrig"; + name = "Brig"; + req_access_txt = "63" + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/security/brig) "rrB" = ( /turf/closed/wall, /area/vacant_room/commissary) @@ -75810,6 +75740,11 @@ /obj/structure/sign/warning/biohazard, /turf/closed/wall, /area/medical/chemistry) +"snF" = ( +/obj/structure/chair, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/security/brig) "sof" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ @@ -75921,6 +75856,13 @@ /obj/structure/cable, /turf/closed/wall/r_wall, /area/engine/engineering) +"sRB" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/rnd/experimentor, +/turf/open/floor/engine, +/area/science/explab) "tay" = ( /turf/closed/wall, /area/medical/medbay/central) @@ -76147,6 +76089,15 @@ }, /turf/closed/wall/r_wall, /area/maintenance/starboard/secondary) +"uvH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/secure_closet/brig{ + id = "Cell 1"; + name = "Cell 1 Locker" + }, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/security/brig) "uEH" = ( /obj/machinery/door/airlock/engineering/glass{ name = "Shared Engineering Storage"; @@ -76189,6 +76140,20 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/secondary) +"uNe" = ( +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/machinery/door/airlock/security/glass{ + id_tag = "innerbrig"; + name = "Brig"; + req_access_txt = "63" + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/security/brig) "uOc" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -76691,6 +76656,13 @@ /obj/machinery/light, /turf/open/floor/plasteel/white, /area/medical/pharmacy) +"xjc" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/security/brig) "xop" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{ dir = 4 @@ -76875,6 +76847,15 @@ }, /turf/open/floor/plating, /area/maintenance/port/aft) +"yej" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/preopen{ + id = "briglockdown"; + name = "brig shutters" + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/security/warden) "yfM" = ( /obj/machinery/vending/engivend, /obj/effect/turf_decal/delivery, @@ -100094,7 +100075,7 @@ aaa aaa aaf aaf -agL +aay aaB aaH aaQ @@ -101662,8 +101643,8 @@ anh aor apE dCg -anh -anh +agT +agT auU awa awZ @@ -101671,7 +101652,7 @@ ayw azD aAY aCk -aDw +aDx aDC aGb aHx @@ -101908,11 +101889,11 @@ adz acf hyP aeQ -afG -agL +afL +aay ahz aiv -ajo +aiq aky akg ani @@ -101926,9 +101907,9 @@ awb axa ayx azE -azE +uvH aCk -aDx +aDw aEK aFZ aHx @@ -102173,19 +102154,19 @@ ajp akz ajQ anj -aot -apG -apG -apG +alS +alS +agR +alS atN alS awc axg -ayy -azF -aAZ -aCk -aDw +ahx +aiq +aiq +ajm +aDy aEL aGd aHx @@ -102424,25 +102405,25 @@ adc afa afT agN -ahB -ahB -ahB -ahB +ahx +ahx +ahx +agL alR -ahB -adY -ajx -adY -ajx -atO +afX +afZ +agQ +aeq +aiq +aiq auW -awd +ara axc -ahx -ahx -ahx -ajm -aDy +ayw +xjc +cTY +aCk +aDx aEM aFZ aHx @@ -102681,23 +102662,23 @@ aep aeQ afU agO -ahB +ahx aNA ajq aix akA -ank -ajx -apI -ara +aeq +aeq +anl +aeq asp -ajx -auW -awd +ahE +aiq +atO axd -ayw +dhv azG -aAY +eYX aCk aDw aEN @@ -102938,11 +102919,11 @@ ael afd afV agP -ahB +ahx aiy dBZ ajr -alT +akK anl aou apJ @@ -102952,11 +102933,11 @@ ava axR awe axe -ayz -dCj -azE -aCk -aDx +ahx +aiq +aiq +ajm +aDy dCo aGg aHx @@ -103195,25 +103176,25 @@ aax aay aay aax -adY +ajm aiz ajt akB -akA -anm -ajx -apK -arc +aff +aeq +aga +apJ +arb asr -ajx +ahF auY -awc -axg -ayy -azF +avb +aCq +ayw +xjc aBa aCk -aDw +aDx aEN aGh aHx @@ -103447,30 +103428,30 @@ aaa aaa aaf aaa +aaa aaf +aaa aaf -aaf -aaf -aaf -adY -adY -adY -adY -alV -adY -adY +aav +aeq +aeq +aeq +aeq +aeq +aeq +agb apL -dCh +aeq ass -adY -auW -awd +ahG +aiC +axi axf -ahx -ahx -ahx -ajm -aDz +dBX +hjl +nEv +aCk +aDw aEN aFZ aHy @@ -103704,30 +103685,30 @@ aaf aaf aaf aaf -aaf -aaf -aeq -aeq -aeq -aeq +lMJ +lMJ +lMJ +lMJ +lMJ aeq +aer bgB akC alU ann -adY +agc apM -ans +aeq ast +ahH adY -auW -awd -axd -ayw -azH -aAY -aCk -aDw +ayz +ajx +adY +ajx +ajx +adY +aDz aEN aGg aHx @@ -103961,30 +103942,30 @@ aaa aaa aaf aaa -aaf +aaa +lMJ +aaa +lMJ +aaa aeq -aeq -afZ -agR -ahE aiA akD -akD -dCa ano -ajx +akD +ano +akD apN -are +cZk asu atQ auZ awf -axa +aDE ayA -azE -azE -aCk -aDx +roZ +pvK +aBc +aDw aEQ aGj aHz @@ -104218,29 +104199,29 @@ aaa aaa aaf aaa +aaa +lMJ +aaa +lMJ +aaa aeq aeq -aff -afY -afY -afY -ahP ajv akE alW -anp -aow -ans +akE +alW +akE arf asv atR azb -awc -axg +ayB +ayB ayy -azF +npx aBb -aCk +hql aDw aEN aGk @@ -104475,29 +104456,29 @@ aaa aaa aaf aaa +aaa +ank +aaa +lMJ +aaa +aaa aeq -aes -afh -agb -agT -ahG -aiC ajw akF alZ anq -ajx +agd aoy -arg +anl asw -ajx -auW +ahI +alV awg axh -ahx -ahx -ahx -ajm +dCh +mDQ +dmU +yej aDA aEN aGl @@ -104731,30 +104712,30 @@ aaa aaa aaa aaf -adD -aeq -aer -afg -aga +aaf +lMJ agS -ahF +adD +adD +agS +adY aeq -ajx -ajx -ama +anl +anl +aeq +aeq +aeq +aeq +aeq +agU +ahH +adY +ayE ajx adY -adY -dhv +ajx ajx adY -avb -awh -axi -ayB -azI -aBc -aCn aDB aES aGm @@ -104989,30 +104970,30 @@ aaa aaa aaf aaa -aeq -aex -afg -agd -agU -ahH -aeq +adY +agS +aDG +eph +oVO +adY +aes ajy arj amb -ajz +afY amf dCf -ajz -ajz +alV +asu atS -auW +ama awi axj -aiq -azJ +uNe aBd -aCk -aDC +aBd +rqO +aHF aET aGn aHD @@ -105246,25 +105227,25 @@ aaa aaa aaf aaa -aeq -aeq -afX -agc -dBX -agc -ajs -ajz -akI -amb -ant +adD +axl +ame +ame +ame +ehi +ajs +akI +akI +afg +ame +ame ame -apJ ari asx aiB avc awj -axk +axc ayC azK aBe @@ -105503,33 +105484,33 @@ aaa aaa aaf aaa -aaf -aeq -aeq -agQ -ahC -ahI -aeq +adY +agS +aEW +ixj +qRr +adY +aex ajA akJ -amb +afh anu aoz apQ -arj +ajx asz -ahB -avd -awd -axl -ahx -ahx -ahx -ajm -aDE +ahP +anB +aCn +axa +azN +aBh +aBh +aGq +gPT aEV -aDE -aHE +ooY +aHD aIN aJY aLA @@ -105759,34 +105740,34 @@ aaa aaa aaa aaf -aaf -aaf -aaf -aeq -aeq -aeq -aeq -aeq +aav +lMJ +agS +adD +adD +agS adY -akK +adY +adY +ajx alX ahB ajx ahB ark -ajx -ahB +aiD +ajD ave awl axm -aiq -azL -aBf ajm -aDF -aEW -aGq -aHE +aiq +aiq +ajm +ajm +ajm +ajm +eZU aIO aJZ aIR @@ -106016,13 +105997,13 @@ aaa aaa aaa aaf -aaa -aaa -aaf -aaf +lMJ +lMJ aaf aaf aaf +lMJ +lMJ aiD ajB akL @@ -106034,16 +106015,16 @@ arl asy ajD avf -awd +aCn axn -ayw -azM -aBg -ayw -aDG -aEX +azQ +aBk +lJY aGr -aHE +ajm +aEX +aDH +eZU aIP aKa aLB @@ -106273,7 +106254,7 @@ aaa aaa aaa aaf -aaf +aav aaf adZ adZ @@ -106290,17 +106271,17 @@ rQK arm asC aiD -auY +ahC awh axo -ayE -azN -aBh -aCq +aiq +snF +eeh +aCr +ajm +avk aDH -aEY -aGs -aHE +eZU aIQ aKb dCq @@ -106550,14 +106531,14 @@ atU avg awn axp -aiq +mEn azO aBi -ajm -ajm -ajm -ajm -aHE +aBi +fCe +avk +avk +eZU aIR aKc aLC @@ -106811,10 +106792,10 @@ aiq azP aBj aCr +ajm +hdb avk -avk -avk -aHD +ofB aIS aKd aIR @@ -107061,17 +107042,17 @@ apU iOo asF aiD -auW +anm awp axr -ayF -ayF -ayF +aBf +aCs +aDF ayF ayJ ayJ -aGt -aHF +ayJ +aHD aIT aKe aIR @@ -107318,16 +107299,16 @@ apV arq asG ajD -auW +avd awp axs ayF -azQ -aBk -aCs +ayF +ayF +ayF aDI -ayJ -ayJ +aFa +kKH aHD aHD aHD @@ -107575,9 +107556,9 @@ apW iOo asH aiD -auW +avd awq -axq +aHE ayG azR aBl @@ -107832,7 +107813,7 @@ bni arr asI aiD -auY +anB awr axt ayH @@ -108083,13 +108064,13 @@ adZ ajD akT amm -anB +qZU aoH apY iOo asJ ajD -auW +avd aws axu ayI @@ -111235,7 +111216,7 @@ bST ceZ cgq chx -ciS +sRB chx clS cmR @@ -111492,7 +111473,7 @@ bST csg cgq chx -ciT +abU ckr clT cmS @@ -111749,7 +111730,7 @@ bST ceZ cgq chy -ciU +acl tEg clU cmT @@ -112263,7 +112244,7 @@ bST ceZ cgq chA -ciV +acr cks cgq cmV diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm index 6c1bd775415..e051453c688 100644 --- a/_maps/map_files/PubbyStation/PubbyStation.dmm +++ b/_maps/map_files/PubbyStation/PubbyStation.dmm @@ -24338,6 +24338,10 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 4 }, +/obj/machinery/light{ + dir = 1; + light_color = "#d1dfff" + }, /turf/open/floor/engine, /area/science/explab) "bkB" = ( @@ -24853,27 +24857,21 @@ /area/science/server) "blP" = ( /obj/effect/landmark/event_spawn, -/obj/item/beacon, /obj/machinery/light{ dir = 8 }, -/turf/open/floor/engine, -/area/science/explab) -"blQ" = ( /obj/machinery/rnd/experimentor, /turf/open/floor/engine, /area/science/explab) "blR" = ( /obj/effect/landmark/blobstart, /obj/effect/landmark/xeno_spawn, +/obj/item/beacon, /turf/open/floor/engine, /area/science/explab) "blS" = ( -/obj/machinery/light{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/item/book/manual/wiki/experimentor, +/obj/machinery/rnd/bepis, /turf/open/floor/engine, /area/science/explab) "blX" = ( @@ -26928,7 +26926,7 @@ /obj/machinery/computer/crew, /turf/open/floor/plasteel/white, /area/medical/medbay/central) -"bri" = ( +"brh" = ( /obj/effect/turf_decal/tile/blue{ dir = 1 }, @@ -27873,6 +27871,7 @@ /obj/effect/turf_decal/tile/purple{ dir = 8 }, +/obj/item/book/manual/wiki/experimentor, /turf/open/floor/plasteel/white, /area/science/explab) "bti" = ( @@ -87143,7 +87142,7 @@ boH boH boH bsG -bri +brh gfo cqm bvl @@ -87400,7 +87399,7 @@ bmw bkh boH bpR -bri +brh jWH nYu oSa @@ -97675,7 +97674,7 @@ aEj aTx bjw bkz -blQ +bky bmW bnW bpe diff --git a/code/__DEFINES/atmospherics.dm b/code/__DEFINES/atmospherics.dm index 27a9597ff90..61198aa0ae8 100644 --- a/code/__DEFINES/atmospherics.dm +++ b/code/__DEFINES/atmospherics.dm @@ -39,11 +39,13 @@ #define MOLES_N2STANDARD (MOLES_CELLSTANDARD*N2STANDARD) /// liters in a cell #define CELL_VOLUME 2500 + /// liters in a normal breath #define BREATH_VOLUME 0.5 /// Amount of air to take a from a tile #define BREATH_PERCENTAGE (BREATH_VOLUME/CELL_VOLUME) + //EXCITED GROUPS /// number of FULL air controller ticks before an excited group breaks down (averages gas contents across turfs) #define EXCITED_GROUP_BREAKDOWN_CYCLES 4 @@ -72,7 +74,7 @@ #define WALL_HEAT_TRANSFER_COEFFICIENT 0.0 #define OPEN_HEAT_TRANSFER_COEFFICIENT 0.4 /// a hack for now -#define WINDOW_HEAT_TRANSFER_COEFFICIENT 0.1 +#define WINDOW_HEAT_TRANSFER_COEFFICIENT 0.1 /// a hack to help make vacuums "cold", sacrificing realism for gameplay #define HEAT_CAPACITY_VACUUM 7000 @@ -104,7 +106,7 @@ // Pressure limits. /// This determins at what pressure the ultra-high pressure red icon is displayed. (This one is set as a constant) -#define HAZARD_HIGH_PRESSURE 550 +#define HAZARD_HIGH_PRESSURE 550 /// This determins when the orange pressure icon is displayed (it is 0.7 * HAZARD_HIGH_PRESSURE) #define WARNING_HIGH_PRESSURE 325 /// This is when the gray low pressure icon is displayed. (it is 2.5 * HAZARD_LOW_PRESSURE) diff --git a/code/__DEFINES/components.dm b/code/__DEFINES/components.dm index 6d9cbf639d3..f4060495d61 100644 --- a/code/__DEFINES/components.dm +++ b/code/__DEFINES/components.dm @@ -34,6 +34,8 @@ #define COMPONENT_DUPE_UNIQUE 2 /// old component is given the initialization args of the new #define COMPONENT_DUPE_UNIQUE_PASSARGS 4 +/// each component of the same type is consulted as to whether the duplicate should be allowed +#define COMPONENT_DUPE_SELECTIVE 5 // All signals. Format: // When the signal is called: (signal arguments) diff --git a/code/__DEFINES/spaceman_dmm.dm b/code/__DEFINES/spaceman_dmm.dm index e590a30ff99..b9c0544bc10 100644 --- a/code/__DEFINES/spaceman_dmm.dm +++ b/code/__DEFINES/spaceman_dmm.dm @@ -11,3 +11,8 @@ #define SHOULD_CALL_PARENT(X) #define UNLINT(X) X #endif + +/world/proc/enable_debugger() + var/dll = world.GetConfig("env", "EXTOOLS_DLL") + if (dll) + call(dll, "debug_initialize")() diff --git a/code/__HELPERS/names.dm b/code/__HELPERS/names.dm index e56e5bae113..89f4e395cb2 100644 --- a/code/__HELPERS/names.dm +++ b/code/__HELPERS/names.dm @@ -67,10 +67,11 @@ GLOBAL_VAR(command_name) name = "" // Prefix - for(var/holiday_name in SSevents.holidays) - if(holiday_name == "Friday the 13th") - random = 13 + var/holiday_name = pick(SSevents.holidays) + if(holiday_name) var/datum/holiday/holiday = SSevents.holidays[holiday_name] + if(istype(holiday, /datum/holiday/friday_thirteenth)) + random = 13 name = holiday.getStationPrefix() //get normal name if(!name) diff --git a/code/controllers/subsystem/research.dm b/code/controllers/subsystem/research.dm index 6a181ec5f02..b71daaa0d28 100644 --- a/code/controllers/subsystem/research.dm +++ b/code/controllers/subsystem/research.dm @@ -24,6 +24,7 @@ SUBSYSTEM_DEF(research) var/list/techweb_categories = list() //category name = list(node.id = TRUE) var/list/techweb_boost_items = list() //associative double-layer path = list(id = list(point_type = point_discount)) var/list/techweb_nodes_hidden = list() //Node ids that should be hidden by default. + var/list/techweb_nodes_experimental = list() //Node ids that are exclusive to the BEPIS. var/list/techweb_point_items = list( //path = list(point type = value) /obj/item/assembly/signaler/anomaly = list(TECHWEB_POINT_TYPE_GENERIC = 10000) ) @@ -248,6 +249,8 @@ SUBSYSTEM_DEF(research) D.unlocked_by += node.id if(node.hidden) techweb_nodes_hidden[node.id] = TRUE + if(node.experimental) + techweb_nodes_experimental[node.id] = TRUE CHECK_TICK generate_techweb_unlock_linking() diff --git a/code/datums/components/_component.dm b/code/datums/components/_component.dm index 13c8a733c28..88e13ae5ffe 100644 --- a/code/datums/components/_component.dm +++ b/code/datums/components/_component.dm @@ -233,6 +233,17 @@ /datum/component/proc/InheritComponent(datum/component/C, i_am_original) return + +/** + * Called on a component when a component of the same type was added to the same parent with COMPONENT_DUPE_SELECTIVE + * See `/datum/component/var/dupe_mode` + * `C`'s type will always be the same of the called component + * return TRUE if you are absorbing the component, otherwise FALSE if you are fine having it exist as a duplicate component + */ +/datum/component/proc/CheckDupeComponent(datum/component/C, ...) + return + + /** * Callback Just before this component is transferred * @@ -295,7 +306,7 @@ */ /datum/proc/GetComponent(datum/component/c_type) RETURN_TYPE(c_type) - if(initial(c_type.dupe_mode) == COMPONENT_DUPE_ALLOWED) + if(initial(c_type.dupe_mode) == COMPONENT_DUPE_ALLOWED || initial(c_type.dupe_mode) == COMPONENT_DUPE_SELECTIVE) stack_trace("GetComponent was called to get a component of which multiple copies could be on an object. This can easily break and should be changed. Type: \[[c_type]\]") var/list/dc = datum_components if(!dc) @@ -314,7 +325,7 @@ */ /datum/proc/GetExactComponent(datum/component/c_type) RETURN_TYPE(c_type) - if(initial(c_type.dupe_mode) == COMPONENT_DUPE_ALLOWED) + if(initial(c_type.dupe_mode) == COMPONENT_DUPE_ALLOWED || initial(c_type.dupe_mode) == COMPONENT_DUPE_SELECTIVE) stack_trace("GetComponent was called to get a component of which multiple copies could be on an object. This can easily break and should be changed. Type: \[[c_type]\]") var/list/dc = datum_components if(!dc) @@ -390,6 +401,18 @@ old_comp.InheritComponent(null, TRUE, arguments) else old_comp.InheritComponent(new_comp, TRUE) + if(COMPONENT_DUPE_SELECTIVE) + var/list/arguments = args.Copy() + arguments[1] = new_comp + var/make_new_component = TRUE + for(var/i in GetComponents(new_type)) + var/datum/component/C = i + if(C.CheckDupeComponent(arglist(arguments))) + make_new_component = FALSE + QDEL_NULL(new_comp) + break + if(!new_comp && make_new_component) + new_comp = new nt(arglist(args)) else if(!new_comp) new_comp = new nt(arglist(args)) // There's a valid dupe mode but there's no old component, act like normal else if(!new_comp) diff --git a/code/datums/dna.dm b/code/datums/dna.dm index 9c6954ce46f..6095e70fa14 100644 --- a/code/datums/dna.dm +++ b/code/datums/dna.dm @@ -338,7 +338,7 @@ set_species(newrace, icon_update=0) if(newreal_name) - real_name = newreal_name + dna.real_name = newreal_name dna.generate_unique_enzymes() if(newblood_type) diff --git a/code/datums/keybinding/admin.dm b/code/datums/keybinding/admin.dm index 833a57254f7..5385f8d1765 100644 --- a/code/datums/keybinding/admin.dm +++ b/code/datums/keybinding/admin.dm @@ -72,3 +72,23 @@ /datum/keybinding/admin/deadsay/down(client/user) user.get_dead_say() return TRUE + +/datum/keybinding/admin/deadmin + hotkey_keys = list("Unbound") + name = "deadmin" + full_name = "Deadmin" + description = "Shed your admin powers" + +/datum/keybinding/admin/deadmin/down(client/user) + user.deadmin() + return TRUE + +/datum/keybinding/admin/readmin + hotkey_keys = list("Unbound") + name = "readmin" + full_name = "Readmin" + description = "Regain your admin powers" + +/datum/keybinding/admin/readmin/down(client/user) + user.readmin() + return TRUE diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 670e2efaa8d..3f1ccedf991 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -317,14 +317,6 @@ P = locate() in PDA if (!P) // If we couldn't find a pen in the PDA, or we didn't even have a PDA, do it the old way P = locate() in all_contents - if(!P) // I do not have a pen. - var/obj/item/pen/inowhaveapen - if(istype(traitor_mob.back,/obj/item/storage)) //ok buddy you better have a backpack! - inowhaveapen = new /obj/item/pen(traitor_mob.back) - else - inowhaveapen = new /obj/item/pen(traitor_mob.loc) - traitor_mob.put_in_hands(inowhaveapen) // I hope you don't have arms and your traitor pen gets stolen for all this trouble you've caused. - P = inowhaveapen var/obj/item/uplink_loc @@ -344,10 +336,14 @@ uplink_loc = P if(UPLINK_PEN) uplink_loc = P - if(!uplink_loc) - uplink_loc = PDA - if(!uplink_loc) - uplink_loc = R + + if(!uplink_loc) // We've looked everywhere, let's just give you a pen + if(istype(traitor_mob.back,/obj/item/storage)) //ok buddy you better have a backpack! + P = new /obj/item/pen(traitor_mob.back) + else + P = new /obj/item/pen(traitor_mob.loc) + traitor_mob.put_in_hands(P) // I hope you don't have arms and your traitor pen gets stolen for all this trouble you've caused. + uplink_loc = P if (!uplink_loc) if(!silent) diff --git a/code/datums/mutations/antenna.dm b/code/datums/mutations/antenna.dm index a99d8e0f36d..d16e9b9cbb0 100644 --- a/code/datums/mutations/antenna.dm +++ b/code/datums/mutations/antenna.dm @@ -92,9 +92,8 @@ if(iscarbon(M)) var/mob/living/carbon/human/H = M to_chat(user, "You find that their intent is to [H.a_intent]...") - var/datum/dna/the_dna = H.has_dna() - if(the_dna) - to_chat(user, "You uncover that [H.p_their()] true identity is [the_dna.real_name].") + if(H.mind) + to_chat(user, "You uncover that [H.p_their()] true identity is [H.mind.name].") else to_chat(user, "You can't find a mind to read inside of [M]!") diff --git a/code/datums/traits/good.dm b/code/datums/traits/good.dm index 3fedd6b1508..4498f22f06a 100644 --- a/code/datums/traits/good.dm +++ b/code/datums/traits/good.dm @@ -61,12 +61,12 @@ datum/quirk/fan_clown name = "Clown Fan" - desc = "You enjoy the clown's antics and get a mood boost when you see them." + desc = "You enjoy clown antics and get a mood boost from wearing your clown pin." value = 1 mob_trait = TRAIT_FAN_CLOWN - gain_text = "You are a big fan of the Clown." + gain_text = "You are a big fan of clowns." lose_text = "The clown doesn't seem so great." - medical_record_text = "Patient reports being a big fan of the Clown." + medical_record_text = "Patient reports being a big fan of clowns." /datum/quirk/fan_clown/on_spawn() var/mob/living/carbon/human/H = quirk_holder @@ -79,12 +79,12 @@ datum/quirk/fan_clown datum/quirk/fan_mime name = "Mime Fan" - desc = "You enjoy the Mime's antics and get a mood boost when you see them." + desc = "You enjoy mime antics and get a mood boost from wearing your mime pin." value = 1 mob_trait = TRAIT_FAN_MIME gain_text = "You are a big fan of the Mime." lose_text = "The mime doesn't seem so great." - medical_record_text = "Patient reports being a big fan of the Mime." + medical_record_text = "Patient reports being a big fan of mimes." /datum/quirk/fan_mime/on_spawn() var/mob/living/carbon/human/H = quirk_holder diff --git a/code/game/gamemodes/monkey/monkey.dm b/code/game/gamemodes/monkey/monkey.dm index 45cbe960e0c..1a51137b146 100644 --- a/code/game/gamemodes/monkey/monkey.dm +++ b/code/game/gamemodes/monkey/monkey.dm @@ -103,7 +103,7 @@ return "
The staff managed to contain the monkey infestation!
" /datum/game_mode/monkey/generate_report() - return "Reports of an ancient [pick("retrovirus", "flesh eating bacteria", "disease", "magical curse blamed on viruses", "banana blight")] outbreak that turn humans into monkeys has been reported in your quadrant. Any such infections may be treated with banana juice. If an outbreak occurs, ensure the station is quarantined to prevent a largescale outbreak at CentCom." + return "Reports of an ancient [pick("retrovirus", "flesh eating bacteria", "disease", "magical curse blamed on viruses", "banana blight")] outbreak that turn humans into monkeys has been reported in your quadrant. Due to strain mutation, such infections are no longer curable by any known means. If an outbreak occurs, ensure the station is quarantined to prevent a largescale outbreak at CentCom." /proc/add_monkey_leader(datum/mind/monkey_mind) if(is_monkey_leader(monkey_mind)) diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index 0069f03294a..e07efc18200 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -185,6 +185,10 @@ var/mob/living/carbon/human/H = new /mob/living/carbon/human(src) + if(!clonename) //to prevent null names + clonename = "clone ([rand(1,999)])" + H.real_name = clonename + H.hardset_dna(ui, mutation_index, H.real_name, blood_type, mrace, features) if(!HAS_TRAIT(H, TRAIT_RADIMMUNE))//dont apply mutations if the species is Mutation proof. @@ -201,10 +205,6 @@ H.silent = 20 //Prevents an extreme edge case where clones could speak if they said something at exactly the right moment. occupant = H - if(!clonename) //to prevent null names - clonename = "clone ([rand(1,999)])" - H.real_name = clonename - icon_state = "pod_1" //Get the clone body ready maim_clone(H) diff --git a/code/game/objects/effects/spiders.dm b/code/game/objects/effects/spiders.dm index 4762f724009..828f252f103 100644 --- a/code/game/objects/effects/spiders.dm +++ b/code/game/objects/effects/spiders.dm @@ -144,6 +144,11 @@ "You hear something scampering through the ventilation ducts.") spawn(rand(20,60)) + if(!exit_vent || exit_vent.welded) + forceMove(entry_vent) + entry_vent = null + return + forceMove(exit_vent) var/travel_time = round(get_dist(loc, exit_vent.loc) / 2) spawn(travel_time) diff --git a/code/game/objects/effects/temporary_visuals/miscellaneous.dm b/code/game/objects/effects/temporary_visuals/miscellaneous.dm index 070095aa073..30e347801f9 100644 --- a/code/game/objects/effects/temporary_visuals/miscellaneous.dm +++ b/code/game/objects/effects/temporary_visuals/miscellaneous.dm @@ -466,6 +466,7 @@ icon = 'icons/effects/effects_rcd.dmi' icon_state = "" layer = ABOVE_ALL_MOB_LAYER + anchored = TRUE var/status = 0 var/delay = 0 diff --git a/code/game/objects/items/RCD.dm b/code/game/objects/items/RCD.dm index a4ee3fd5535..39b3ca54da2 100644 --- a/code/game/objects/items/RCD.dm +++ b/code/game/objects/items/RCD.dm @@ -660,6 +660,7 @@ RLD name = "admin RCD" max_matter = INFINITY matter = INFINITY + upgrade = RCD_UPGRADE_FRAMES | RCD_UPGRADE_SIMPLE_CIRCUITS // Ranged RCD @@ -699,6 +700,7 @@ RLD righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' matter = 200 max_matter = 200 + var/matter_divisor = 35 var/mode = LIGHT_MODE slot_flags = ITEM_SLOT_BELT actions_types = list(/datum/action/item_action/pick_color) @@ -722,7 +724,7 @@ RLD ..() /obj/item/construction/rld/update_icon() - icon_state = "rld-[round(matter/35)]" + icon_state = "rld-[round(matter/matter_divisor)]" ..() @@ -758,7 +760,7 @@ RLD if(istype(A, /obj/machinery/light/)) if(checkResource(deconcost, user)) to_chat(user, "You start deconstructing [A]...") - user.Beam(A,icon_state="nzcrentrs_power",time=15) + user.Beam(A,icon_state="light_beam",time=15) playsound(src.loc, 'sound/machines/click.ogg', 50, TRUE) if(do_after(user, decondelay, target = A)) if(!useResource(deconcost, user)) @@ -772,7 +774,7 @@ RLD var/turf/closed/wall/W = A if(checkResource(floorcost, user)) to_chat(user, "You start building a wall light...") - user.Beam(A,icon_state="nzcrentrs_power",time=15) + user.Beam(A,icon_state="light_beam",time=15) playsound(src.loc, 'sound/machines/click.ogg', 50, TRUE) playsound(src.loc, 'sound/effects/light_flicker.ogg', 50, FALSE) if(do_after(user, floordelay, target = A)) @@ -818,7 +820,7 @@ RLD var/turf/open/floor/F = A if(checkResource(floorcost, user)) to_chat(user, "You start building a floor light...") - user.Beam(A,icon_state="nzcrentrs_power",time=15) + user.Beam(A,icon_state="light_beam",time=15) playsound(src.loc, 'sound/machines/click.ogg', 50, TRUE) playsound(src.loc, 'sound/effects/light_flicker.ogg', 50, TRUE) if(do_after(user, floordelay, target = A)) @@ -847,6 +849,17 @@ RLD return TRUE return FALSE +/obj/item/construction/rld/mini + name = "mini-rapid-light-device (MRLD)" + desc = "A device used to rapidly provide lighting sources to an area. Reload with metal, plasteel, glass or compressed matter cartridges." + icon = 'icons/obj/tools.dmi' + icon_state = "rld-5" + lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' + matter = 100 + max_matter = 100 + matter_divisor = 20 + /obj/item/construction/plumbing name = "Plumbing Constructor" desc = "An expertly modified RCD outfitted to construct plumbing machinery." diff --git a/code/game/objects/items/airlock_painter.dm b/code/game/objects/items/airlock_painter.dm index b05e40dd639..b8ba632a82b 100644 --- a/code/game/objects/items/airlock_painter.dm +++ b/code/game/objects/items/airlock_painter.dm @@ -125,3 +125,111 @@ user.put_in_hands(ink) to_chat(user, "You remove [ink] from [src].") ink = null + +/obj/item/airlock_painter/decal + name = "decal painter" + desc = "An airlock painter, reprogramed to use a different style of paint in order to apply decals for floor tiles as well, in addition to repainting doors. Decals break when the floor tiles are removed. Alt-Click to change design." + icon = 'icons/obj/objects.dmi' + icon_state = "decal_sprayer" + item_state = "decalsprayer" + custom_materials = list(/datum/material/iron=2000, /datum/material/glass=500) + var/stored_dir = 2 + var/stored_color = "" + var/stored_decal = "warningline" + var/stored_decal_total = "warningline" + var/color_list = list("","red","white") + var/dir_list = list(1,2,4,8) + var/decal_list = list(list("Warning Line","warningline"), + list("Warning Line Corner","warninglinecorner"), + list("Caution Label","caution"), + list("Directional Arrows","arrows"), + list("Stand Clear Label","stand_clear"), + list("Box","box"), + list("Box Corner","box_corners"), + list("Delivery Marker","delivery"), + list("Warning Box","warn_full")) + +/obj/item/airlock_painter/decal/afterattack(atom/target, mob/user, proximity) + . = ..() + var/turf/open/floor/F = target + if(!proximity) + to_chat(user, "You need to get closer!") + return + if(use_paint(user) && isturf(F)) + F.AddComponent(/datum/component/decal, 'icons/turf/decals.dmi', stored_decal_total, stored_dir, CLEAN_STRONG, color, null, null, alpha) + +/obj/item/airlock_painter/decal/attack_self(mob/user) + if((ink) && (ink.charges >= 1)) + to_chat(user, "[src] beeps to prevent you from removing the toner until out of charges.") + return + . = ..() + +/obj/item/airlock_painter/decal/AltClick(mob/user) + . = ..() + ui_interact(user) + +/obj/item/airlock_painter/decal/Initialize() + . = ..() + ink = new /obj/item/toner/large(src) + +/obj/item/airlock_painter/decal/proc/update_decal_path() + var/yellow_fix = "" //This will have to do until someone refactor's markings.dm + if (stored_color) + yellow_fix = "_" + stored_decal_total = "[stored_decal][yellow_fix][stored_color]" + return + +/obj/item/airlock_painter/decal/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, 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, "decal_painter", name, 500, 400, master_ui, state) + ui.open() + +/obj/item/airlock_painter/decal/ui_data(mob/user) + var/list/data = list() + data["decal_direction"] = stored_dir + data["decal_color"] = stored_color + data["decal_style"] = stored_decal + data["decal_list"] = list() + data["color_list"] = list() + data["dir_list"] = list() + + for(var/i in decal_list) + data["decal_list"] += list(list( + "name" = i[1], + "decal" = i[2] + )) + for(var/j in color_list) + data["color_list"] += list(list( + "colors" = j + )) + for(var/k in dir_list) + data["dir_list"] += list(list( + "dirs" = k + )) + return data + +/obj/item/airlock_painter/decal/ui_act(action,list/params) + if(..()) + return + switch(action) + //Lists of decals and designs + if("select decal") + var/selected_decal = params["decals"] + stored_decal = selected_decal + if("select color") + var/selected_color = params["colors"] + stored_color = selected_color + if("selected direction") + var/selected_direction = text2num(params["dirs"]) + stored_dir = selected_direction + update_decal_path() + . = TRUE + +/obj/item/airlock_painter/decal/debug + name = "extreme decal painter" + icon_state = "decal_sprayer_ex" + +/obj/item/airlock_painter/decal/debug/Initialize() + . = ..() + ink = new /obj/item/toner/extreme(src) diff --git a/code/game/objects/items/circuitboards/machine_circuitboards.dm b/code/game/objects/items/circuitboards/machine_circuitboards.dm index ed928927eb3..6ad6b39435b 100644 --- a/code/game/objects/items/circuitboards/machine_circuitboards.dm +++ b/code/game/objects/items/circuitboards/machine_circuitboards.dm @@ -934,6 +934,17 @@ /obj/item/stack/sheet/glass = 1) def_components = list(/obj/item/stack/ore/bluespace_crystal = /obj/item/stack/ore/bluespace_crystal/artificial) +/obj/item/circuitboard/machine/bepis + name = "BEPIS Chamber (Machine Board)" + icon_state = "science" + build_path = /obj/machinery/rnd/bepis + req_components = list( + /obj/item/stack/cable_coil = 5, + /obj/item/stock_parts/capacitor = 1, + /obj/item/stock_parts/manipulator = 1, + /obj/item/stock_parts/micro_laser = 1, + /obj/item/stock_parts/scanning_module = 1) + //Security /obj/item/circuitboard/machine/protolathe/department/security diff --git a/code/game/objects/items/devices/polycircuit.dm b/code/game/objects/items/devices/polycircuit.dm new file mode 100644 index 00000000000..fb15ce45dc9 --- /dev/null +++ b/code/game/objects/items/devices/polycircuit.dm @@ -0,0 +1,52 @@ +/obj/item/stack/circuit_stack + name = "polycircuit aggregate" + desc = "A dense, overdesigned cluster of electronics which attempted to function as a multipurpose circuit electronic. Circuits can be removed from it... if you don't bleed out in the process." + icon_state = "circuit_mess" + item_state = "rods" + w_class = WEIGHT_CLASS_TINY + max_amount = 8 + var/circuit_type = /obj/item/electronics/airlock + var/chosen_circuit = "airlock" + +/obj/item/stack/circuit_stack/attack_self(mob/user)// Prevents the crafting menu, and tells you how to use it. + to_chat(user, "You can't use [src] by itself, you'll have to try and remove one of these circuits by hand... carefully.") + +/obj/item/stack/circuit_stack/attack_hand(mob/user) + var/mob/living/carbon/human/H = user + if(!user.get_inactive_held_item() == src) + return ..() + else + if(zero_amount()) + return + chosen_circuit = input("What type of circuit would you like to remove?", "Choose a Circuit Type", chosen_circuit) in list("airlock","firelock","fire alarm","air alarm","APC") + if(zero_amount()) + return + switch(chosen_circuit) + if("airlock") + circuit_type = /obj/item/electronics/airlock + if("firelock") + circuit_type = /obj/item/electronics/firelock + if("fire alarm") + circuit_type = /obj/item/electronics/firealarm + if("air alarm") + circuit_type = /obj/item/electronics/airalarm + if("APC") + circuit_type = /obj/item/electronics/apc + to_chat(user, "You spot your circuit, and carefully attempt to remove it from [src], hold still!") + if(do_after(user, 30, target = user)) + if(!src || QDELETED(src))//Sanity Check. + return + var/returned_circuit = new circuit_type(src) + user.put_in_hands(returned_circuit) + use(1) + if(!amount) + to_chat(user, "You navigate the sharp edges of circuitry and remove the last board.") + else + to_chat(user, "You navigate the sharp edges of circuitry and remove a single board from [src]") + else + H.apply_damage(15, BRUTE, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM)) + to_chat(user, "You give yourself a wicked cut on [src]'s many sharp corners and edges!") + ..() + +/obj/item/stack/circuit_stack/full + amount = 8 diff --git a/code/game/objects/items/stacks/cash.dm b/code/game/objects/items/stacks/cash.dm index 5e02437e04b..52c59558184 100644 --- a/code/game/objects/items/stacks/cash.dm +++ b/code/game/objects/items/stacks/cash.dm @@ -72,3 +72,8 @@ icon_state = "spacecash1000" singular_name = "one thousand credit bill" value = 1000 + +/obj/item/stack/spacecash/c10000 + icon_state = "spacecash10000" + singular_name = "ten thousand credit bill" + value = 10000 diff --git a/code/game/objects/structures/flora.dm b/code/game/objects/structures/flora.dm index ef189e01ae8..2cf7c125a2b 100644 --- a/code/game/objects/structures/flora.dm +++ b/code/game/objects/structures/flora.dm @@ -21,14 +21,12 @@ if(do_after(user, 1000/W.force, target = src)) //5 seconds with 20 force, 8 seconds with a hatchet, 20 seconds with a shard. user.visible_message("[user] fells [src] with the [W].","You fell [src] with the [W].", "You hear the sound of a tree falling.") playsound(get_turf(src), 'sound/effects/meteorimpact.ogg', 100 , FALSE, FALSE) + user.log_message("cut down [src] at [AREACOORD(src)]", LOG_ATTACK) for(var/i=1 to log_amount) new /obj/item/grown/log/tree(get_turf(src)) - var/obj/structure/flora/stump/S = new(loc) S.name = "[name] stump" - qdel(src) - else return ..() @@ -58,6 +56,7 @@ desc = "A wondrous decorated Christmas tree." icon_state = "pine_c" icon_states = null + flags_1 = NODECONSTRUCT_1 //protected by the christmas spirit /obj/structure/flora/tree/pine/xmas/presents icon_state = "pinepresents" diff --git a/code/game/world.dm b/code/game/world.dm index 6000b24fc62..8e70b4f7ec2 100644 --- a/code/game/world.dm +++ b/code/game/world.dm @@ -19,6 +19,7 @@ GLOBAL_VAR(restart_counter) * */ /world/New() + enable_debugger() log_world("World loaded at [time_stamp()]!") diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index b82531fbe77..811a21e4951 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -442,7 +442,13 @@ GLOBAL_PROTECT(admin_verbs_hideable) if(isobserver(mob)) mob.invisibility = initial(mob.invisibility) mob.alpha = initial(mob.alpha) - mob.name = initial(mob.name) + if(mob.mind) + if(mob.mind.ghostname) + mob.name = mob.mind.ghostname + else + mob.name = mob.mind.name + else + mob.name = mob.real_name mob.mouse_opacity = initial(mob.mouse_opacity) else var/new_key = ckeyEx(input("Enter your desired display name.", "Fake Key", key) as text|null) diff --git a/code/modules/admin/verbs/SDQL2/SDQL_2.dm b/code/modules/admin/verbs/SDQL2/SDQL_2.dm index 082a5a8f6d3..5e2d4cc51cb 100644 --- a/code/modules/admin/verbs/SDQL2/SDQL_2.dm +++ b/code/modules/admin/verbs/SDQL2/SDQL_2.dm @@ -1001,13 +1001,13 @@ GLOBAL_DATUM_INIT(sdql2_vv_statobj, /obj/effect/statclick/SDQL2_VV_all, new(null //Staying as a world proc as this is called too often for changes to offset the potential IsAdminAdvancedProcCall checking overhead. /world/proc/SDQL_var(object, list/expression, start = 1, source, superuser, datum/SDQL2_query/query) var/v - var/static/list/exclude = list("usr", "src", "marked", "global") + var/static/list/exclude = list("usr", "src", "marked", "global", "MC", "FS", "CFG") var/long = start < expression.len var/datum/D if(is_proper_datum(object)) D = object - if (object == world && (!long || expression[start + 1] == ".") && !(expression[start] in exclude)) + if (object == world && (!long || expression[start + 1] == ".") && !(expression[start] in exclude) && copytext(expression[start], 1, 3) != "SS") to_chat(usr, "World variables are not allowed to be accessed. Use global.") return null @@ -1053,46 +1053,22 @@ GLOBAL_DATUM_INIT(sdql2_vv_statobj, /obj/effect/statclick/SDQL2_VV_all, new(null v = Failsafe if("CFG") v = config - //Subsystem switches - if("SSgarbage") - v = SSgarbage - if("SSmachines") - v = SSmachines - if("SSobj") - v = SSobj - if("SSresearch") - v = SSresearch - if("SSprojectiles") - v = SSprojectiles - if("SSfastprocess") - v = SSfastprocess - if("SSticker") - v = SSticker - if("SStimer") - v = SStimer - if("SSradiation") - v = SSradiation - if("SSnpcpool") - v = SSnpcpool - if("SSmobs") - v = SSmobs - if("SSmood") - v = SSmood - if("SSquirks") - v = SSquirks - if("SSwet_floors") - v = SSwet_floors - if("SSshuttle") - v = SSshuttle - if("SSmapping") - v = SSmapping - if("SSevents") - v = SSevents - if("SSeconomy") - v = SSeconomy - //End else - return null + if(copytext(expression[start], 1, 3) == "SS") //Subsystem + var/SSname = copytext(expression[start], 3) + var/SSlength = length(SSname) + var/datum/controller/subsystem/SS + var/SSmatch + for(var/_SS in Master.subsystems) + SS = _SS + if(copytext("[SS.type]", -SSlength) == SSname) + SSmatch = SS + break + if(!SSmatch) + return null + v = SSmatch + else + return null else if(object == GLOB) // Shitty ass hack kill me. v = expression[start] if(long) diff --git a/code/modules/antagonists/cult/runes.dm b/code/modules/antagonists/cult/runes.dm index 72f191dc9ef..82f0f6e885d 100644 --- a/code/modules/antagonists/cult/runes.dm +++ b/code/modules/antagonists/cult/runes.dm @@ -512,20 +512,19 @@ structure_check() searches for nearby cultist structures required for the invoca message_admins("[ADMIN_LOOKUPFLW(user)] erased a Narsie rune with a null rod") ..() -//Rite of Resurrection: Requires a dead or inactive cultist. When reviving the dead, you can only perform one revival for every sacrifice your cult has carried out. +//Rite of Resurrection: Requires a dead or inactive cultist. When reviving the dead, you can only perform one revival for every three sacrifices your cult has carried out. /obj/effect/rune/raise_dead cultist_name = "Revive" - cultist_desc = "requires a dead, mindless, or inactive cultist placed upon the rune. Provided there have been sufficient sacrifices, they will be given a new life." + cultist_desc = "requires a dead, mindless, or inactive cultist placed upon the rune. For each three bodies sacrificed to the dark patron, one body will be mended and their mind awoken" invocation = "Pasnar val'keriam usinar. Savrae ines amutan. Yam'toth remium il'tarat!" //Depends on the name of the user - see below icon_state = "1" color = RUNE_COLOR_MEDIUMRED - var/static/revives_used = -SOULS_TO_REVIVE // Cultists get one "free" revive - + var/static/sacrifices_used = -SOULS_TO_REVIVE // Cultists get one "free" revive + /obj/effect/rune/raise_dead/examine(mob/user) . = ..() if(iscultist(user) || user.stat == DEAD) - var/revive_number = LAZYLEN(GLOB.sacrificed) - revives_used - . += "Revives Remaining: [revive_number]" + . += "Sacrifices unrewarded: [LAZYLEN(GLOB.sacrificed) - sacrifices_used]" /obj/effect/rune/raise_dead/invoke(var/list/invokers) var/turf/T = get_turf(src) @@ -556,12 +555,12 @@ structure_check() searches for nearby cultist structures required for the invoca invocation = initial(invocation) ..() if(mob_to_revive.stat == DEAD) - var/diff = LAZYLEN(GLOB.sacrificed) - revives_used - SOULS_TO_REVIVE + var/diff = LAZYLEN(GLOB.sacrificed) - SOULS_TO_REVIVE - sacrifices_used if(diff < 0) to_chat(user, "Your cult must carry out [abs(diff)] more sacrifice\s before it can revive another cultist!") fail_invoke() return - revives_used += SOULS_TO_REVIVE + sacrifices_used += SOULS_TO_REVIVE mob_to_revive.revive(full_heal = TRUE, admin_revive = TRUE) //This does remove traits and such, but the rune might actually see some use because of it! mob_to_revive.grab_ghost() if(!mob_to_revive.client || mob_to_revive.client.is_afk()) diff --git a/code/modules/clothing/chameleon.dm b/code/modules/clothing/chameleon.dm index 9b8f7fb0ffb..f63415c25da 100644 --- a/code/modules/clothing/chameleon.dm +++ b/code/modules/clothing/chameleon.dm @@ -380,7 +380,7 @@ chameleon_action.emp_randomise(INFINITY) /obj/item/clothing/gloves/chameleon - desc = "These gloves will protect the wearer from electric shock." + desc = "These gloves provide protection against electric shock." name = "insulated gloves" icon_state = "yellow" item_state = "ygloves" diff --git a/code/modules/clothing/gloves/color.dm b/code/modules/clothing/gloves/color.dm index 8b2d63af046..6910c856b7e 100644 --- a/code/modules/clothing/gloves/color.dm +++ b/code/modules/clothing/gloves/color.dm @@ -2,7 +2,7 @@ dying_key = DYE_REGISTRY_GLOVES /obj/item/clothing/gloves/color/yellow - desc = "These gloves will protect the wearer from electric shock." + desc = "These gloves provide protection against electric shock." name = "insulated gloves" icon_state = "yellow" item_state = "ygloves" @@ -69,7 +69,7 @@ /obj/item/clothing/gloves/color/red/insulated name = "insulated gloves" - desc = "These gloves will protect the wearer from electric shock." + desc = "These gloves provide protection against electric shock." siemens_coefficient = 0 permeability_coefficient = 0.05 resistance_flags = NONE diff --git a/code/modules/clothing/head/hardhat.dm b/code/modules/clothing/head/hardhat.dm index 2ae3cb6d19e..700e421a5c4 100644 --- a/code/modules/clothing/head/hardhat.dm +++ b/code/modules/clothing/head/hardhat.dm @@ -61,6 +61,16 @@ cold_protection = HEAD min_cold_protection_temperature = FIRE_HELM_MIN_TEMP_PROTECT +/obj/item/clothing/head/hardhat/red/upgraded + name = "workplace-ready firefighter helmet" + desc = "By applying state of the art lighting technology to a fire helmet, and using photo-chemical hardening methods, this hardhat will protect you from robust workplace hazards." + icon_state = "hardhat0_purple" + item_state = "hardhat0_purple" + brightness_on = 5 + resistance_flags = FIRE_PROOF | ACID_PROOF + custom_materials = list(/datum/material/iron = 4000, /datum/material/glass = 1000, /datum/material/plastic = 3000, /datum/material/silver = 500) + hat_type = "purple" + /obj/item/clothing/head/hardhat/white icon_state = "hardhat0_white" item_state = "hardhat0_white" diff --git a/code/modules/clothing/under/accessories.dm b/code/modules/clothing/under/accessories.dm index fbd8606129c..bb3b03a7699 100755 --- a/code/modules/clothing/under/accessories.dm +++ b/code/modules/clothing/under/accessories.dm @@ -344,15 +344,15 @@ minimize_when_attached = TRUE attachment_slot = CHEST -/obj/item/clothing/accessory/fan_clown_pin/on_uniform_equip(obj/item/clothing/under/U, user) +/obj/item/clothing/accessory/fan_mime_pin/on_uniform_equip(obj/item/clothing/under/U, user) var/mob/living/L = user if(HAS_TRAIT(L, TRAIT_FAN_MIME)) SEND_SIGNAL(L, COMSIG_ADD_MOOD_EVENT, "fan_mime_pin", /datum/mood_event/fan_mime_pin) -/obj/item/clothing/accessory/fan_clown_pin/on_uniform_dropped(obj/item/clothing/under/U, user) +/obj/item/clothing/accessory/fan_mime_pin/on_uniform_dropped(obj/item/clothing/under/U, user) var/mob/living/L = user if(HAS_TRAIT(L, TRAIT_FAN_MIME)) - SEND_SIGNAL(L, COMSIG_CLEAR_MOOD_EVENT, "fan_clown_pin") + SEND_SIGNAL(L, COMSIG_CLEAR_MOOD_EVENT, "fan_mime_pin") //////////////// //OONGA BOONGA// diff --git a/code/modules/holiday/hebrew_calendar.dm b/code/modules/holiday/hebrew_calendar.dm new file mode 100644 index 00000000000..183d73c86db --- /dev/null +++ b/code/modules/holiday/hebrew_calendar.dm @@ -0,0 +1,109 @@ +#define BYOND_EPOCH 2451544.5 +#define HEBREW_EPOCH 347995.5 + +/* +Source for the method of calcuation +https://www.fourmilab.ch/documents/calendar/ +by John Walker 2015, released under public domain +*/ +/datum/hebrew_calendar + var/dd + var/mm + var/yy + +/datum/hebrew_calendar/New() + var/julian = realtime_to_jd() + set_date(julian) + +/datum/hebrew_calendar/proc/hebrew_leap(year) + switch (year % 19) + if (0, 3, 6, 8, 11, 14, 17) + return TRUE + else + return FALSE + +// Hebrew to Julian +/datum/hebrew_calendar/proc/hebrew_to_jd(year, month, day) + var/months = hebrew_year_months(year) + var/jd = HEBREW_EPOCH + hebrew_delay_1(year) + hebrew_delay_2(year) + day + 1 + if (month < 7) + for (var/mon = 7; mon <= months; mon++) + jd += hebrew_month_days(year, mon) + for (var/mon = 1; mon < month; mon++) + jd += hebrew_month_days(year, mon) + else + for (var/mon = 7; mon < month; mon++) + jd += hebrew_month_days(year, mon) + return jd + + +// Julian to Hebrew +/datum/hebrew_calendar/proc/set_date(jd) + jd = round(jd) + 0.5 + var/count = round(((jd - HEBREW_EPOCH) * 98496) / 35975351) + var/year = count - 1 + for (var/i = count; jd >= hebrew_to_jd(i, 7, 1); i++) + year++ + var/month = (jd < hebrew_to_jd(year, 1, 1)) ? 7 : 1 + for (var/i = month; jd > hebrew_to_jd(year, i, hebrew_month_days(year, i)); i++) + month++ + var/day = (jd - hebrew_to_jd(year, month, 1)) + 1 + yy = year + mm = month + dd = day + +/datum/hebrew_calendar/proc/hebrew_year_months(year) + if (hebrew_leap(year)) + return 13 + else + return 12 + +// Delay based on starting day of the year +/datum/hebrew_calendar/proc/hebrew_delay_1(year) + var/months = round(((235 * year) - 234) / 19) + var/parts = 12084 + (13753 * months) + var/day = (months * 29) + round(parts / 25920) + if (3 * (day + 1) % 7 < 3) + day++ + return day + +// Delay based on length of adjacent years +/datum/hebrew_calendar/proc/hebrew_delay_2(year) + var/last = hebrew_delay_1(year - 1) + var/present = hebrew_delay_1(year) + var/next = hebrew_delay_1(year + 1) + if (next - present == 356) + return 2 + else if (present - last == 382) + return 1 + else + return 0 + +/datum/hebrew_calendar/proc/hebrew_year_days(year) + return hebrew_to_jd(year + 1, 7, 1) - hebrew_to_jd(year, 7, 1) + +/datum/hebrew_calendar/proc/hebrew_month_days(year, month) + switch (month) + // First of all, dispose of fixed-length 29 day months + if (2, 4, 6, 10, 13) + return 29 + // If it's not a leap year, Adar has 29 days + if (12) + if (!hebrew_leap(year)) + return 29 + // If it's Heshvan, days depend on length of year + if (8) + if (hebrew_year_days(year) % 10 != 5) + return 29 + // Similarly, Kislev varies with the length of year + if (9) + if (hebrew_year_days(year) % 10 == 3) + return 29 + // Nope, it's a 30 day month + return 30 + +/datum/hebrew_calendar/proc/realtime_to_jd() + return round(world.realtime / 864000) + BYOND_EPOCH + +#undef BYOND_EPOCH +#undef HEBREW_EPOCH diff --git a/code/modules/holiday/holidays.dm b/code/modules/holiday/holidays.dm index 619be3e14cc..063acedd2cf 100644 --- a/code/modules/holiday/holidays.dm +++ b/code/modules/holiday/holidays.dm @@ -616,3 +616,32 @@ Since Ramadan is an entire month that lasts 29.5 days on average, the start and /datum/holiday/hotdogday/greet() return "Happy National Hot Dog Day!" + +/datum/holiday/hebrew + name = "Jewish Bugsgiving" + +/datum/holiday/hebrew/shouldCelebrate(dd, mm, yy, ww, ddd) + var/datum/hebrew_calendar/cal = new /datum/hebrew_calendar() + return ..(cal.dd, cal.mm, cal.yy, ww, ddd) + +/datum/holiday/hebrew/hanukkah + name = "Hanukkah" + begin_day = 25 + begin_month = 9 + end_day = 2 + end_month = 10 + +/datum/holiday/hebrew/hanukkah/greet() + return "Happy [pick("Hanukkah", "Chanukah")]!" + +/datum/holiday/hebrew/hanukkah/getStationPrefix() + return pick("Dreidel", "Menorah", "Latkes", "Gelt") + +/datum/holiday/hebrew/passover + name = "Passover" + begin_day = 15 + begin_month = 1 + end_day = 22 + +/datum/holiday/hebrew/passover/getStationPrefix() + return pick("Matzah", "Moses", "Red Sea") diff --git a/code/modules/language/buzzwords.dm b/code/modules/language/buzzwords.dm new file mode 100644 index 00000000000..72b5a87aa30 --- /dev/null +++ b/code/modules/language/buzzwords.dm @@ -0,0 +1,13 @@ +/datum/language/buzzwords + name = "Buzzwords" + desc = "A common language to all insects, made by the rhythmic beating of wings." + speech_verb = "buzzes" + ask_verb = "buzzes" + exclaim_verb = "loudly buzzes" + key = "z" + space_chance = 0 + syllables = list( + "bzz","zzz","z","bz","bzzz","zzzz", "bzzzz", "b", "zz", "zzzzz" + ) + icon_state = "buzz" + default_priority = 90 diff --git a/code/modules/language/calcic.dm b/code/modules/language/calcic.dm new file mode 100644 index 00000000000..5ba660055d7 --- /dev/null +++ b/code/modules/language/calcic.dm @@ -0,0 +1,20 @@ +/datum/language/calcic + name = "Calcic" + desc = "The disjointed and staccato language of plasmamen. Also understood by skeletons." + speech_verb = "rattles" + ask_verb = "queries" + exclaim_verb = "screeches" + whisper_verb = "clicks" + key = "b" + space_chance = 10 + syllables = list( + "k", "ck", "ack", "ick", "cl", "tk", "sk", "isk", "tak", + "kl", "hs", "ss", "ks", "lk", "dk", "gk", "ka", "ska", "la", "pk", + "wk", "ak", "ik", "ip", "ski", "bk", "kb", "ta", "is", "it", "li", "di", + "ds", "ya", "sck", "crk", "hs", "ws", "mk", "aaa", "skraa", "skee", "hss", + "raa", "klk", "tk", "stk", "clk" + ) + icon_state = "calcic" + default_priority = 90 + +// Yeah, this goes to skeletons too, since it's basically just skeleton clacking. diff --git a/code/modules/language/language_holder.dm b/code/modules/language/language_holder.dm index 2d4ee2a1bb2..f73fd16359c 100644 --- a/code/modules/language/language_holder.dm +++ b/code/modules/language/language_holder.dm @@ -296,10 +296,74 @@ Key procs /datum/language_holder/synthetic understood_languages = list(/datum/language/common = list(LANGUAGE_ATOM), /datum/language/machine = list(LANGUAGE_ATOM), - /datum/language/draconic = list(LANGUAGE_ATOM)) + /datum/language/draconic = list(LANGUAGE_ATOM), + /datum/language/moffic = list(LANGUAGE_ATOM), + /datum/language/calcic = list(LANGUAGE_ATOM), + /datum/language/voltaic = list(LANGUAGE_ATOM)) spoken_languages = list(/datum/language/common = list(LANGUAGE_ATOM), /datum/language/machine = list(LANGUAGE_ATOM), - /datum/language/draconic = list(LANGUAGE_ATOM)) + /datum/language/draconic = list(LANGUAGE_ATOM), + /datum/language/moffic = list(LANGUAGE_ATOM), + /datum/language/calcic = list(LANGUAGE_ATOM), + /datum/language/voltaic = list(LANGUAGE_ATOM)) + +/datum/language_holder/moth + understood_languages = list(/datum/language/common = list(LANGUAGE_ATOM), + /datum/language/moffic = list(LANGUAGE_ATOM)) + spoken_languages = list(/datum/language/common = list(LANGUAGE_ATOM), + /datum/language/moffic = list(LANGUAGE_ATOM)) + +/datum/language_holder/skeleton + understood_languages = list(/datum/language/common = list(LANGUAGE_ATOM), + /datum/language/calcic = list(LANGUAGE_ATOM)) + spoken_languages = list(/datum/language/common = list(LANGUAGE_ATOM), + /datum/language/calcic = list(LANGUAGE_ATOM)) + +/datum/language_holder/ethereal + understood_languages = list(/datum/language/common = list(LANGUAGE_ATOM), + /datum/language/voltaic = list(LANGUAGE_ATOM)) + spoken_languages = list(/datum/language/common = list(LANGUAGE_ATOM), + /datum/language/voltaic = list(LANGUAGE_ATOM)) + +/datum/language_holder/golem + understood_languages = list(/datum/language/common = list(LANGUAGE_ATOM), + /datum/language/terrum = list(LANGUAGE_ATOM)) + spoken_languages = list(/datum/language/common = list(LANGUAGE_ATOM), + /datum/language/terrum = list(LANGUAGE_ATOM)) + +/datum/language_holder/golem/bone + understood_languages = list(/datum/language/common = list(LANGUAGE_ATOM), + /datum/language/terrum = list(LANGUAGE_ATOM), + /datum/language/calcic = list(LANGUAGE_ATOM)) + spoken_languages = list(/datum/language/common = list(LANGUAGE_ATOM), + /datum/language/terrum = list(LANGUAGE_ATOM), + /datum/language/calcic = list(LANGUAGE_ATOM)) + +/datum/language_holder/golem/runic + understood_languages = list(/datum/language/common = list(LANGUAGE_ATOM), + /datum/language/terrum = list(LANGUAGE_ATOM), + /datum/language/narsie = list(LANGUAGE_ATOM)) + spoken_languages = list(/datum/language/common = list(LANGUAGE_ATOM), + /datum/language/terrum = list(LANGUAGE_ATOM), + /datum/language/narsie = list(LANGUAGE_ATOM)) + +/datum/language_holder/fly + understood_languages = list(/datum/language/common = list(LANGUAGE_ATOM), + /datum/language/buzzwords = list(LANGUAGE_ATOM)) + spoken_languages = list(/datum/language/common = list(LANGUAGE_ATOM), + /datum/language/buzzwords = list(LANGUAGE_ATOM)) + +/datum/language_holder/plant + understood_languages = list(/datum/language/common = list(LANGUAGE_ATOM), + /datum/language/sylvan = list(LANGUAGE_ATOM)) + spoken_languages = list(/datum/language/common = list(LANGUAGE_ATOM), + /datum/language/sylvan = list(LANGUAGE_ATOM)) + +/datum/language_holder/shadowpeople + understood_languages = list(/datum/language/common = list(LANGUAGE_ATOM), + /datum/language/shadowtongue = list(LANGUAGE_ATOM)) + spoken_languages = list(/datum/language/common = list(LANGUAGE_ATOM), + /datum/language/shadowtongue = list(LANGUAGE_ATOM)) /datum/language_holder/empty understood_languages = list() diff --git a/code/modules/language/moffic.dm b/code/modules/language/moffic.dm new file mode 100644 index 00000000000..af0eeeb4c6f --- /dev/null +++ b/code/modules/language/moffic.dm @@ -0,0 +1,19 @@ +/datum/language/moffic + name = "Moffic" + desc = "The language of the Mothpeople borders on complete unintelligibility." + speech_verb = "flutters" + ask_verb = "flits" + exclaim_verb = "flaps" + key = "m" + space_chance = 10 + syllables = list( + "år", "i", "går", "sek", "mo", "ff", "ok", "gj", "ø", "gå", "la", "le", + "lit", "ygg", "van", "dår", "næ", "møt", "idd", "hvo", "ja", "på", "han", + "så", "ån", "det", "att", "nå", "gö", "bra", "int", "tyc", "om", "när", + "två", "må", "dag", "sjä", "vii", "vuo", "eil", "tun", "käyt", "teh", "vä", + "hei", "huo", "suo", "ää", "ten", "ja", "heu", "stu", "uhr", "kön", "we", "hön" + ) + icon_state = "moth" + default_priority = 90 + +// Fuck guest accounts, and fuck language testing. diff --git a/code/modules/language/shadowtongue.dm b/code/modules/language/shadowtongue.dm new file mode 100644 index 00000000000..a858754622a --- /dev/null +++ b/code/modules/language/shadowtongue.dm @@ -0,0 +1,21 @@ +// You n'wah! +// many thanks to https://casualscrolls.fandom.com/wiki/Dunmeri_language, for providing this list of syllables +/datum/language/shadowtongue + name = "Shadowtongue" + desc = "What a grand and intoxicating innocence." + speech_verb = "growls" + ask_verb = "growls" + exclaim_verb = "roars" + key = "x" + space_chance = 50 + syllables = list( + "er", "sint", "en", "et", "nor", "bahr", "sint", "un", "ku'elm", "lakor", "eri", + "noj", "dashilu", "as", "ot", "lih", "morh", "ghinu", "kin", "sha", "marik", "jibu", + "sudas", "fut", "kol", "bivi", "pohim", "devohr", "ru", "huirf", "neiris", "sut", + "devehr", "iru", "gher", "gan", "ujil", "lacor", "bahris", "ghar", "alnef", "wah", + "khurdhar", "bar", "et", "ilu", "dash", "diru", "noj", "de", "damjulan", "luvahr", + "telshahr", "tifur", "enhi", "am", "bahr", "nei", "neibahri", "n'chow", "n'wah", + "s'wit", "b'vehk", "f'lah", "muth", "sera", "sedura", "bal", "dun" + ) + icon_state = "shadow" + default_priority = 90 diff --git a/code/modules/language/sylvan.dm b/code/modules/language/sylvan.dm new file mode 100644 index 00000000000..098e304b002 --- /dev/null +++ b/code/modules/language/sylvan.dm @@ -0,0 +1,18 @@ +// The language of the podpeople. Yes, it's a shameless ripoff of elvish. +/datum/language/sylvan + name = "Sylvan" + desc = "A complicated, ancient language spoken by sentient plants." + speech_verb = "expresses" + ask_verb = "inquires" + exclaim_verb = "declares" + key = "h" + space_chance = 20 + syllables = list( + "fii", "sii", "rii", "rel", "maa", "ala", "san", "tol", "tok", "dia", "eres", + "fal", "tis", "bis", "qel", "aras", "losk", "rasa", "eob", "hil", "tanl", "aere", + "fer", "bal", "pii", "dala", "ban", "foe", "doa", "cii", "uis", "mel", "wex", + "incas", "int", "elc", "ent", "aws", "qip", "nas", "vil", "jens", "dila", "fa", + "la", "re", "do", "ji", "ae", "so", "qe", "ce", "na", "mo", "ha", "yu" + ) + icon_state = "plant" + default_priority = 90 diff --git a/code/modules/language/terrum.dm b/code/modules/language/terrum.dm new file mode 100644 index 00000000000..d26c7f0a3e4 --- /dev/null +++ b/code/modules/language/terrum.dm @@ -0,0 +1,17 @@ +/datum/language/terrum + name = "Terrum" + desc = "The language of the golems. Sounds similar to old-earth Hebrew." + speech_verb = "rumbles" + ask_verb = "questions" + exclaim_verb = "tremors" + key = "g" + space_chance = 40 + syllables = list( + "sha", "vu", "nah", "ha", "yom", "ma", "cha", "ar", "et", "mol", "lua", + "ch", "na", "sh", "ni", "yah", "bes", "ol", "hish", "ev", "la", "ot", "la", + "khe", "tza", "chak", "hak", "hin", "hok", "lir", "tov", "yef", "yfe", + "cho", "ar", "kas", "kal", "ra", "lom", "im", "'", "'", "'", "'", "bok", + "erev", "shlo", "lo", "ta", "im", "yom" + ) + icon_state = "golem" + default_priority = 90 diff --git a/code/modules/language/voltaic.dm b/code/modules/language/voltaic.dm new file mode 100644 index 00000000000..fa0f0080428 --- /dev/null +++ b/code/modules/language/voltaic.dm @@ -0,0 +1,17 @@ +// One of these languages will actually work, I'm certain of it. +/datum/language/voltaic + name = "Voltaic" + desc = "A sparky language made by manipulating electrical discharge." + speech_verb = "crackles" + ask_verb = "pops" + exclaim_verb = "thunders" + key = "v" + space_chance = 20 + syllables = list( + "bzzt", "skrrt", "zzp", "mmm", "hzz", "tk", "shz", "k", "z", + "bzt", "zzt", "skzt", "skzz", "hmmt", "zrrt", "hzzt", "hz", + "vzt", "zt", "vz", "zip", "tzp", "lzzt", "dzzt", "zdt", "kzt", + "zzzz", "mzz" + ) + icon_state = "volt" + default_priority = 90 diff --git a/code/modules/mob/living/carbon/human/species_types/ethereal.dm b/code/modules/mob/living/carbon/human/species_types/ethereal.dm index 3f0c527e42d..51635af5016 100644 --- a/code/modules/mob/living/carbon/human/species_types/ethereal.dm +++ b/code/modules/mob/living/carbon/human/species_types/ethereal.dm @@ -8,6 +8,7 @@ miss_sound = 'sound/weapons/etherealmiss.ogg' meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/ethereal mutantstomach = /obj/item/organ/stomach/ethereal + mutanttongue = /obj/item/organ/tongue/ethereal exotic_blood = /datum/reagent/consumable/liquidelectricity //Liquid Electricity. fuck you think of something better gamer siemens_coeff = 0.5 //They thrive on energy brutemod = 1.25 //They're weak to punches @@ -15,6 +16,7 @@ damage_overlay_type = "" //We are too cool for regular damage overlays species_traits = list(DYNCOLORS, AGENDER, NO_UNDERWEAR) changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_PRIDE | MIRROR_MAGIC | RACE_SWAP | ERT_SPAWN | SLIME_EXTRACT + species_language_holder = /datum/language_holder/ethereal inherent_traits = list(TRAIT_NOHUNGER) sexes = FALSE //no fetish content allowed toxic_food = NONE diff --git a/code/modules/mob/living/carbon/human/species_types/flypeople.dm b/code/modules/mob/living/carbon/human/species_types/flypeople.dm index 281693d17f8..b8a392ef997 100644 --- a/code/modules/mob/living/carbon/human/species_types/flypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/flypeople.dm @@ -11,6 +11,7 @@ disliked_food = null liked_food = GROSS changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_PRIDE | MIRROR_MAGIC | RACE_SWAP | ERT_SPAWN | SLIME_EXTRACT + species_language_holder = /datum/language_holder/fly /datum/species/fly/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H) if(chem.type == /datum/reagent/toxin/pestkiller) diff --git a/code/modules/mob/living/carbon/human/species_types/golems.dm b/code/modules/mob/living/carbon/human/species_types/golems.dm index b1f28a3aa38..22e0bf0d448 100644 --- a/code/modules/mob/living/carbon/human/species_types/golems.dm +++ b/code/modules/mob/living/carbon/human/species_types/golems.dm @@ -18,6 +18,7 @@ sexes = 1 damage_overlay_type = "" meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/golem + species_language_holder = /datum/language_holder/golem // To prevent golem subtypes from overwhelming the odds when random species // changes, only the Random Golem type can be chosen limbs_id = "golem" @@ -587,6 +588,7 @@ prefix = "Runic" special_names = null inherent_factions = list("cult") + species_language_holder = /datum/language_holder/golem/runic var/obj/effect/proc_holder/spell/targeted/ethereal_jaunt/shift/golem/phase_shift var/obj/effect/proc_holder/spell/targeted/abyssal_gaze/abyssal_gaze @@ -918,6 +920,7 @@ sexes = FALSE fixed_mut_color = null inherent_traits = list(TRAIT_NOFLASH,TRAIT_RESISTHEAT,TRAIT_NOBREATH,TRAIT_RESISTCOLD,TRAIT_RESISTHIGHPRESSURE,TRAIT_RESISTLOWPRESSURE,TRAIT_NOFIRE,TRAIT_CHUNKYFINGERS,TRAIT_RADIMMUNE,TRAIT_PIERCEIMMUNE,TRAIT_NODISMEMBER,TRAIT_FAKEDEATH) + species_language_holder = /datum/language_holder/golem/bone info_text = "As a Bone Golem, You have a powerful spell that lets you chill your enemies with fear, and milk heals you! Just make sure to watch our for bone-hurting juice." var/datum/action/innate/bonechill/bonechill diff --git a/code/modules/mob/living/carbon/human/species_types/mothmen.dm b/code/modules/mob/living/carbon/human/species_types/mothmen.dm index 24316adf496..8a4412f4950 100644 --- a/code/modules/mob/living/carbon/human/species_types/mothmen.dm +++ b/code/modules/mob/living/carbon/human/species_types/mothmen.dm @@ -16,6 +16,7 @@ toxic_food = MEAT | RAW mutanteyes = /obj/item/organ/eyes/moth changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | ERT_SPAWN | RACE_SWAP | SLIME_EXTRACT + species_language_holder = /datum/language_holder/moth /datum/species/moth/regenerate_organs(mob/living/carbon/C,datum/species/old_species,replace_current=TRUE) . = ..() diff --git a/code/modules/mob/living/carbon/human/species_types/plasmamen.dm b/code/modules/mob/living/carbon/human/species_types/plasmamen.dm index 7cc4df235a5..821b27e694d 100644 --- a/code/modules/mob/living/carbon/human/species_types/plasmamen.dm +++ b/code/modules/mob/living/carbon/human/species_types/plasmamen.dm @@ -21,6 +21,7 @@ liked_food = VEGETABLES changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_PRIDE | MIRROR_MAGIC outfit_important_for_life = /datum/outfit/plasmaman + species_language_holder = /datum/language_holder/skeleton /datum/species/plasmaman/spec_life(mob/living/carbon/human/H) var/datum/gas_mixture/environment = H.loc.return_air() diff --git a/code/modules/mob/living/carbon/human/species_types/podpeople.dm b/code/modules/mob/living/carbon/human/species_types/podpeople.dm index 337bfe1641e..a79cd7e92c5 100644 --- a/code/modules/mob/living/carbon/human/species_types/podpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/podpeople.dm @@ -15,6 +15,7 @@ disliked_food = MEAT | DAIRY liked_food = VEGETABLES | FRUIT | GRAIN changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | RACE_SWAP | ERT_SPAWN | SLIME_EXTRACT + species_language_holder = /datum/language_holder/plant /datum/species/pod/spec_life(mob/living/carbon/human/H) if(H.stat == DEAD) diff --git a/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm b/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm index ac8ccff9f2e..7eaca3579cf 100644 --- a/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm @@ -12,6 +12,7 @@ inherent_factions = list("faithless") changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_PRIDE | MIRROR_MAGIC mutanteyes = /obj/item/organ/eyes/night_vision + species_language_holder = /datum/language_holder/shadowpeople /datum/species/shadow/spec_life(mob/living/carbon/human/H) diff --git a/code/modules/mob/living/carbon/human/species_types/skeletons.dm b/code/modules/mob/living/carbon/human/species_types/skeletons.dm index e595f5baba3..9df66901779 100644 --- a/code/modules/mob/living/carbon/human/species_types/skeletons.dm +++ b/code/modules/mob/living/carbon/human/species_types/skeletons.dm @@ -15,6 +15,7 @@ liked_food = GROSS | MEAT | RAW //They can technically be in an ERT changesource_flags = MIRROR_BADMIN | WABBAJACK | ERT_SPAWN + species_language_holder = /datum/language_holder/skeleton /datum/species/skeleton/check_roundstart_eligible() if(SSevents.holidays && SSevents.holidays[HALLOWEEN]) diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm index 73b847dc673..1783d370f0a 100644 --- a/code/modules/mob/living/carbon/life.dm +++ b/code/modules/mob/living/carbon/life.dm @@ -285,14 +285,10 @@ else SEND_SIGNAL(src, COMSIG_CLEAR_MOOD_EVENT, "smell") - //Clear all moods if no miasma at all else SEND_SIGNAL(src, COMSIG_CLEAR_MOOD_EVENT, "smell") - - - breath.garbage_collect() //BREATH TEMPERATURE @@ -302,7 +298,8 @@ //Fourth and final link in a breath chain /mob/living/carbon/proc/handle_breath_temperature(datum/gas_mixture/breath) - return + // The air you breathe out should match your body temperature + breath.temperature = bodytemperature /mob/living/carbon/proc/get_breath_from_internal(volume_needed) if(internal) diff --git a/code/modules/mob/living/carbon/monkey/life.dm b/code/modules/mob/living/carbon/monkey/life.dm index faef14f821b..ad54eb08a19 100644 --- a/code/modules/mob/living/carbon/monkey/life.dm +++ b/code/modules/mob/living/carbon/monkey/life.dm @@ -65,6 +65,8 @@ if(1000 to INFINITY) adjustFireLoss(8) + . = ..() // interact with body heat after dealing with the hot air + /mob/living/carbon/monkey/handle_environment(datum/gas_mixture/environment) if(!environment) return diff --git a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm index 7688807d51a..96855f91a78 100644 --- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm +++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm @@ -375,3 +375,34 @@ user.visible_message("[user] milks [src] using \the [O].", "You milk [src] using \the [O].") else to_chat(user, "The udder is dry. Wait a bit longer...") + +/mob/living/simple_animal/deer + name = "doe" + desc = "A gentle, peaceful forest animal. How did this get into space?" + icon_state = "deer-doe" + icon_living = "deer-doe" + icon_dead = "deer-doe-dead" + gender = FEMALE + mob_biotypes = MOB_ORGANIC|MOB_BEAST + speak = list("Weeeeeeee?","Weeee","WEOOOOOOOOOO") + speak_emote = list("grunts","grunts lowly") + emote_hear = list("brays.") + emote_see = list("shakes its head.") + speak_chance = 1 + turns_per_move = 5 + see_in_dark = 6 + butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab = 3) + response_help_continuous = "pets" + response_help_simple = "pet" + response_disarm_continuous = "gently nudges" + response_disarm_simple = "gently nudges aside" + response_harm_continuous = "kicks" + response_harm_simple = "kick" + attack_verb_continuous = "bucks" + attack_verb_simple = "buck" + attack_sound = 'sound/weapons/punch1.ogg' + health = 75 + maxHealth = 75 + blood_volume = BLOOD_VOLUME_NORMAL + food_type = list(/obj/item/reagent_containers/food/snacks/grown/apple) + footstep_type = FOOTSTEP_MOB_SHOE diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm index 7c135cc970c..ebe25962cca 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm @@ -24,8 +24,7 @@ var/list/attack_action_types = list() var/can_talk = FALSE var/obj/loot_drop = null - - + //Gives player-controlled variants the ability to swap attacks /mob/living/simple_animal/hostile/asteroid/elite/Initialize(mapload) . = ..() @@ -54,14 +53,14 @@ if(ismineralturf(target)) var/turf/closed/mineral/M = target M.gets_drilled() - + //Elites can't talk (normally)! /mob/living/simple_animal/hostile/asteroid/elite/say(message, bubble_type, var/list/spans = list(), sanitize = TRUE, datum/language/language = null, ignore_spam = FALSE, forced = null) if(can_talk) . = ..() return TRUE return FALSE - + /*Basic setup for elite attacks, based on Whoneedspace's megafauna attack setup. While using this makes the system rely on OnFire, it still gives options for timers not tied to OnFire, and it makes using attacks consistent accross the board for player-controlled elites.*/ @@ -83,11 +82,11 @@ While using this makes the system rely on OnFire, it still gives options for tim /datum/action/innate/elite_attack/Activate() M.chosen_attack = chosen_attack_num to_chat(M, chosen_message) - + /mob/living/simple_animal/hostile/asteroid/elite/updatehealth() . = ..() update_health_hud() - + /mob/living/simple_animal/hostile/asteroid/elite/update_health_hud() if(hud_used) var/severity = 0 @@ -122,6 +121,13 @@ While using this makes the system rely on OnFire, it still gives options for tim desc = "An odd, pulsing tumor sticking out of the ground. You feel compelled to reach out and touch it..." armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 100, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100) resistance_flags = INDESTRUCTIBLE + icon = 'icons/obj/lavaland/tumor.dmi' + icon_state = "tumor" + pixel_x = -16 + light_color = LIGHT_COLOR_RED + light_range = 3 + anchored = TRUE + density = FALSE var/activity = TUMOR_INACTIVE var/boosted = FALSE var/times_won = 0 @@ -131,14 +137,7 @@ While using this makes the system rely on OnFire, it still gives options for tim /mob/living/simple_animal/hostile/asteroid/elite/pandora, /mob/living/simple_animal/hostile/asteroid/elite/legionnaire, /mob/living/simple_animal/hostile/asteroid/elite/herald) - icon = 'icons/obj/lavaland/tumor.dmi' - icon_state = "tumor" - pixel_x = -16 - light_color = LIGHT_COLOR_RED - light_range = 3 - anchored = TRUE - density = FALSE - + /obj/structure/elite_tumor/attack_hand(mob/user) . = ..() if(ishuman(user)) @@ -173,8 +172,7 @@ While using this makes the system rely on OnFire, it still gives options for tim activity = TUMOR_INACTIVE activator = null - -obj/structure/elite_tumor/proc/spawn_elite(var/mob/dead/observer/elitemind) +/obj/structure/elite_tumor/proc/spawn_elite(mob/dead/observer/elitemind) var/selectedspawn = pick(potentialspawns) mychild = new selectedspawn(loc) visible_message("[mychild] emerges from [src]!") @@ -182,10 +180,11 @@ obj/structure/elite_tumor/proc/spawn_elite(var/mob/dead/observer/elitemind) if(boosted) mychild.key = elitemind.key mychild.sentience_act() + notify_ghosts("\A [mychild] has been awakened in \the [get_area(src)]!", source = mychild, action = NOTIFY_ORBIT, flashwindow = FALSE, header = "Lavaland Elite awakened") icon_state = "tumor_popped" INVOKE_ASYNC(src, .proc/arena_checks) -obj/structure/elite_tumor/proc/return_elite() +/obj/structure/elite_tumor/proc/return_elite() mychild.forceMove(loc) visible_message("[mychild] emerges from [src]!") playsound(loc,'sound/effects/phasein.ogg', 200, 0, 50, TRUE, TRUE) @@ -193,18 +192,19 @@ obj/structure/elite_tumor/proc/return_elite() if(boosted) mychild.maxHealth = mychild.maxHealth * 2 mychild.health = mychild.maxHealth - + notify_ghosts("\A [mychild] has been challenged in \the [get_area(src)]!", source = mychild, action = NOTIFY_ORBIT, flashwindow = FALSE, header = "Lavaland Elite challenged") + /obj/structure/elite_tumor/Initialize(mapload) . = ..() AddComponent(/datum/component/gps, "Menacing Signal") START_PROCESSING(SSobj, src) - + /obj/structure/elite_tumor/Destroy() STOP_PROCESSING(SSobj, src) mychild = null activator = null return ..() - + /obj/structure/elite_tumor/process() if(isturf(loc)) for(var/mob/living/simple_animal/hostile/asteroid/elite/elitehere in loc) @@ -212,7 +212,7 @@ obj/structure/elite_tumor/proc/return_elite() mychild.adjustHealth(-mychild.maxHealth*0.05) var/obj/effect/temp_visual/heal/H = new /obj/effect/temp_visual/heal(get_turf(mychild)) H.color = "#FF0000" - + /obj/structure/elite_tumor/attackby(obj/item/I, mob/user, params) . = ..() if(istype(I, /obj/item/organ/regenerative_core) && activity == TUMOR_INACTIVE && !boosted) @@ -226,7 +226,7 @@ obj/structure/elite_tumor/proc/return_elite() desc = "[desc] This one seems to glow with a strong intensity." qdel(core) return TRUE - + /obj/structure/elite_tumor/proc/arena_checks() if(activity != TUMOR_ACTIVE || QDELETED(src)) return @@ -234,13 +234,13 @@ obj/structure/elite_tumor/proc/return_elite() INVOKE_ASYNC(src, .proc/arena_trap) //Gets another arena trap queued up for when this one runs out. INVOKE_ASYNC(src, .proc/border_check) //Checks to see if our fighters got out of the arena somehow. addtimer(CALLBACK(src, .proc/arena_checks), 50) - + /obj/structure/elite_tumor/proc/fighters_check() if(activator != null && activator.stat == DEAD || activity == TUMOR_ACTIVE && QDELETED(activator)) onEliteWon() if(mychild != null && mychild.stat == DEAD || activity == TUMOR_ACTIVE && QDELETED(mychild)) onEliteLoss() - + /obj/structure/elite_tumor/proc/arena_trap() var/turf/T = get_turf(src) if(loc == null) @@ -251,7 +251,7 @@ obj/structure/elite_tumor/proc/return_elite() newwall = new /obj/effect/temp_visual/elite_tumor_wall(t, src) newwall.activator = src.activator newwall.ourelite = src.mychild - + /obj/structure/elite_tumor/proc/border_check() if(activator != null && get_dist(src, activator) >= 12) activator.forceMove(loc) @@ -261,8 +261,8 @@ obj/structure/elite_tumor/proc/return_elite() mychild.forceMove(loc) visible_message("[mychild] suddenly reappears above [src]!") playsound(loc,'sound/effects/phasein.ogg', 200, 0, 50, TRUE, TRUE) - -obj/structure/elite_tumor/proc/onEliteLoss() + +/obj/structure/elite_tumor/proc/onEliteLoss() playsound(loc,'sound/effects/tendril_destroyed.ogg', 200, 0, 50, TRUE, TRUE) visible_message("[src] begins to convulse violently before beginning to dissipate.") visible_message("As [src] closes, something is forced up from down below.") @@ -280,8 +280,8 @@ obj/structure/elite_tumor/proc/onEliteLoss() mychild = null activator = null qdel(src) - -obj/structure/elite_tumor/proc/onEliteWon() + +/obj/structure/elite_tumor/proc/onEliteWon() activity = TUMOR_PASSIVE activator = null mychild.revive(full_heal = TRUE, admin_revive = TRUE) @@ -294,7 +294,7 @@ obj/structure/elite_tumor/proc/onEliteWon() to_chat(mychild, "As the life in the activator's eyes fade, the forcefield around you dies out and you feel your power subside.\nDespite this inferno being your home, you feel as if you aren't welcome here anymore.\nWithout any guidance, your purpose is now for you to decide.") to_chat(mychild, "Your max health has been halved, but can now heal by standing on your tumor. Note, it's your only way to heal.\nBear in mind, if anyone interacts with your tumor, you'll be resummoned here to carry out another fight. In such a case, you will regain your full max health.\nAlso, be weary of your fellow inhabitants, they likely won't be happy to see you!") to_chat(mychild, "Note that you are a lavaland monster, and thus not allied to the station. You should not cooperate or act friendly with any station crew unless under extreme circumstances!") - + /obj/item/tumor_shard name = "tumor shard" desc = "A strange, sharp, crystal shard from an odd tumor on Lavaland. Stabbing the corpse of a lavaland elite with this will revive them, assuming their soul still lingers. Revived lavaland elites only have half their max health, but are completely loyal to their reviver." @@ -307,7 +307,7 @@ obj/structure/elite_tumor/proc/onEliteWon() w_class = WEIGHT_CLASS_SMALL throw_speed = 3 throw_range = 5 - + /obj/item/tumor_shard/afterattack(atom/target, mob/user, proximity_flag) . = ..() if(istype(target, /mob/living/simple_animal/hostile/asteroid/elite) && proximity_flag) @@ -328,7 +328,7 @@ obj/structure/elite_tumor/proc/onEliteWon() qdel(src) else to_chat(user, "[src] only works on the corpse of a sentient lavaland elite.") - + /obj/effect/temp_visual/elite_tumor_wall name = "magic wall" icon = 'icons/turf/walls/hierophant_wall_temp.dmi' @@ -336,12 +336,12 @@ obj/structure/elite_tumor/proc/onEliteWon() duration = 50 smooth = SMOOTH_TRUE layer = BELOW_MOB_LAYER - var/mob/living/carbon/human/activator = null - var/mob/living/simple_animal/hostile/asteroid/elite/ourelite = null color = rgb(255,0,0) light_range = MINIMUM_USEFUL_LIGHT_RANGE light_color = LIGHT_COLOR_RED - + var/mob/living/carbon/human/activator = null + var/mob/living/simple_animal/hostile/asteroid/elite/ourelite = null + /obj/effect/temp_visual/elite_tumor_wall/Initialize(mapload, new_caster) . = ..() queue_smooth_neighbors(src) diff --git a/code/modules/paperwork/filingcabinet.dm b/code/modules/paperwork/filingcabinet.dm index 83f4a5c0072..c42d9511141 100644 --- a/code/modules/paperwork/filingcabinet.dm +++ b/code/modules/paperwork/filingcabinet.dm @@ -35,7 +35,7 @@ . = ..() if(mapload) for(var/obj/item/I in loc) - if(istype(I, /obj/item/paper) || istype(I, /obj/item/folder) || istype(I, /obj/item/photo)) + if(I.w_class < WEIGHT_CLASS_NORMAL) //there probably shouldn't be anything placed ontop of filing cabinets in a map that isn't meant to go in them I.forceMove(src) /obj/structure/filingcabinet/deconstruct(disassembled = TRUE) @@ -46,7 +46,7 @@ qdel(src) /obj/structure/filingcabinet/attackby(obj/item/P, mob/user, params) - if(istype(P, /obj/item/paper) || istype(P, /obj/item/folder) || istype(P, /obj/item/photo) || istype(P, /obj/item/documents)) + if(P.w_class < WEIGHT_CLASS_NORMAL) if(!user.transferItemToLoc(P, src)) return to_chat(user, "You put [P] in [src].") diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm index f1bbfe97979..f5bd87893f8 100644 --- a/code/modules/paperwork/photocopier.dm +++ b/code/modules/paperwork/photocopier.dm @@ -333,3 +333,15 @@ grind_results = list(/datum/reagent/iodine = 40, /datum/reagent/iron = 10) var/charges = 5 var/max_charges = 5 + +/obj/item/toner/large + name = "large toner cartridge" + grind_results = list(/datum/reagent/iodine = 90, /datum/reagent/iron = 10) + charges = 15 + max_charges = 15 + +/obj/item/toner/extreme + name = "extremely large toner cartridge" + desc = "Why would ANYONE need THIS MUCH TONER?" + charges = 200 + max_charges = 200 diff --git a/code/modules/research/bepis.dm b/code/modules/research/bepis.dm new file mode 100644 index 00000000000..c3deecc958c --- /dev/null +++ b/code/modules/research/bepis.dm @@ -0,0 +1,232 @@ +//This system is designed to act as an in-between for cargo and science, and the first major money sink in the game outside of just buying things from cargo (As of 10/9/19, anyway). + +//economics defined values, subject to change should anything be too high or low in practice. + +#define MACHINE_OPERATION 100000 +#define MACHINE_OVERLOAD 500000 + +/obj/machinery/rnd/bepis + name = "\improper B.E.P.I.S. Chamber" + desc = "A high fidelity testing device which unlocks the secrets of the known universe using the two most powerful substances available to man: excessive amounts of electricity and capital." + icon = 'icons/obj/machines/bepis.dmi' + icon_state = "chamber" + density = TRUE + layer = ABOVE_MOB_LAYER + use_power = IDLE_POWER_USE + active_power_usage = 1500 + circuit = /obj/item/circuitboard/machine/bepis + + var/banking_amount = 100 + var/banked_cash = 0 //stored player cash + var/datum/bank_account/account //payer's account. + var/account_name //name of the payer's account. + var/error_cause = null + //Vars related to probability and chance of success for testing + var/major_threshold = 6000 + var/minor_threshold = 3000 + var/std = 1000 //That's Standard Deviation, what did you think it was? + //Stock part variables + var/power_saver = 1 + var/inaccuracy_percentage = 1.5 + var/positive_cash_offset = 0 + var/negative_cash_offset = 0 + var/static/list/item_list = list() + +/obj/machinery/rnd/bepis/attackby(obj/item/O, mob/user, params) + if(default_deconstruction_screwdriver(user, "chamber_open", "chamber", O)) + update_icon_state() + return + if(default_deconstruction_crowbar(O)) + return + if(!is_operational()) + to_chat(user, "[src] can't accept money when it's not functioning.") + return + if(istype(O, /obj/item/holochip) || istype(O, /obj/item/stack/spacecash)) + var/deposit_value = O.get_item_credit_value() + banked_cash += deposit_value + qdel(O) + say("Deposited [deposit_value] credits into storage.") + update_icon_state() + return + if(istype(O, /obj/item/card/id)) + var/obj/item/card/id/Card = O + if(Card.registered_account) + account = Card.registered_account + account_name = Card.registered_name + say("New account detected. Console Updated.") + else + say("No account detected on card. Aborting.") + return + return ..() + +/obj/machinery/rnd/bepis/RefreshParts() + var/C = 0 + var/M = 0 + var/L = 0 + var/S = 0 + for(var/obj/item/stock_parts/capacitor/Cap in component_parts) + C += ((Cap.rating - 1) * 0.1) + power_saver = 1 - C + for(var/obj/item/stock_parts/manipulator/Manip in component_parts) + M += ((Manip.rating - 1) * 250) + positive_cash_offset = M + for(var/obj/item/stock_parts/micro_laser/Laser in component_parts) + L += ((Laser.rating - 1) * 250) + negative_cash_offset = L + for(var/obj/item/stock_parts/scanning_module/Scan in component_parts) + S += ((Scan.rating - 1) * 0.25) + inaccuracy_percentage = (1.5 - S) + +/obj/machinery/rnd/bepis/proc/depositcash() + var/deposit_value = 0 + deposit_value = banking_amount + if(deposit_value == 0) + update_icon_state() + say("Attempting to deposit 0 credits. Aborting.") + return + deposit_value = CLAMP(round(deposit_value, 1), 1, 15000) + if(!account) + say("Cannot find user account. Please swipe a valid ID.") + return + if(!account.has_money(deposit_value)) + say("You do not possess enough credits.") + return + account.adjust_money(-deposit_value) //The money vanishes, not paid to any accounts. + banked_cash += deposit_value + use_power(1000 * power_saver) + say("Cash deposit successful. There is [banked_cash] in the chamber.") + update_icon_state() + return + +/obj/machinery/rnd/bepis/proc/withdrawcash() + var/withdraw_value = 0 + withdraw_value = banking_amount + if(withdraw_value > banked_cash) + say("Cannot withdraw more than stored funds. Aborting.") + else + banked_cash -= withdraw_value + new /obj/item/holochip(src.loc, withdraw_value) + say("Withdrawing [withdraw_value] credits from the chamber.") + update_icon_state() + return + +/obj/machinery/rnd/bepis/proc/calcsuccess() + var/turf/dropturf = get_turf(pick(view(1,src))) + var/gauss_major = 0 + var/gauss_minor = 0 + var/gauss_real = 0 + if(!dropturf) //Check to verify the turf exists and the reward isn't lost somehow. + dropturf = drop_location() + gauss_major = (gaussian(major_threshold, std) - negative_cash_offset) //This is the randomized profit value that this experiment has to surpass to unlock a tech. + gauss_minor = (gaussian(minor_threshold, std) - negative_cash_offset) //And this is the threshold to instead get a minor prize. + gauss_real = (gaussian(banked_cash, std*inaccuracy_percentage) + positive_cash_offset) //this is the randomized profit value that your experiment expects to give. + say("Real: [gauss_real]. Minor: [gauss_minor]. Major: [gauss_major].") + flick("chamber_flash",src) + update_icon_state() + banked_cash = 0 + if((gauss_real >= gauss_major) && (SSresearch.techweb_nodes_experimental.len > 0)) //Major Success. + say("Experiment concluded with major success. New technology node discovered on technology disc.") + new /obj/item/disk/tech_disk/major(dropturf,1) + if(SSresearch.techweb_nodes_experimental.len == 0) + say("Expended all available experimental technology nodes. Resorting to minor rewards.") + return + if(gauss_real >= gauss_minor) //Minor Success. + var/reward_number = 1 + say("Experiment concluded with partial success. Dispensing compiled research efforts.") + reward_number = rand(1,2) + if(reward_number == 1) + new /obj/item/stack/circuit_stack/full(dropturf) + if(reward_number == 2) + new /obj/item/airlock_painter/decal(dropturf) + return + if(gauss_real <= -1) //Critical Failure + say("ERROR: CRITICAL MACHIME MALFUNCTI- ON. CURRENCY IS NOT CRASH. CANNOT COMPUTE COMMAND: 'make bucks'") //not a typo, for once. + new /mob/living/simple_animal/deer(dropturf, 1) + use_power(MACHINE_OVERLOAD * power_saver) //To prevent gambling at low cost and also prevent spamming for infinite deer. + return + //Minor Failure + error_cause = pick("attempted to sell grey products to American dominated market.","attempted to sell gray products to British dominated market.","placed wild assumption that PDAs would go out of style.","simulated product #76 damaged brand reputation mortally.","simulated business model resembled 'pyramid scheme' by 98.7%.","product accidently granted override access to all station doors.") + say("Experiment concluded with zero product viability. Cause of error: [error_cause]") + return + +/obj/machinery/rnd/bepis/update_icon_state() + if(panel_open == TRUE) + icon_state = "chamber_open" + return + if((use_power == ACTIVE_POWER_USE) && (banked_cash > 0) && (is_operational())) + icon_state = "chamber_active_loaded" + return + if (((use_power == IDLE_POWER_USE) && (banked_cash > 0)) || (banked_cash > 0) && (!is_operational())) + icon_state = "chamber_loaded" + return + if(use_power == ACTIVE_POWER_USE && is_operational()) + icon_state = "chamber_active" + return + if(((use_power == IDLE_POWER_USE) && (banked_cash == 0)) || (!is_operational())) + icon_state = "chamber" + return + +/obj/machinery/rnd/bepis/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, 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, "bepis", name, 500, 480, master_ui, state) + ui.open() + RefreshParts() + +/obj/machinery/rnd/bepis/ui_data(mob/user) + var/list/data = list() + var/powered = FALSE + if(use_power == ACTIVE_POWER_USE) + powered = TRUE + data["account_owner"] = account_name + data["amount"] = banking_amount + data["stored_cash"] = banked_cash + data["mean_value"] = major_threshold + data["error_name"] = error_cause + data["power_saver"] = power_saver + data["accuracy_percentage"] = inaccuracy_percentage * 100 + data["positive_cash_offset"] = positive_cash_offset + data["negative_cash_offset"] = negative_cash_offset + data["manual_power"] = powered ? FALSE : TRUE + data["silicon_check"] = issilicon(user) + return data + +/obj/machinery/rnd/bepis/ui_act(action,params) + if(..()) + return + switch(action) + if("deposit_cash") + if(use_power == IDLE_POWER_USE) + return + depositcash() + if("withdraw_cash") + if(use_power == IDLE_POWER_USE) + return + withdrawcash() + if("begin_experiment") + if(use_power == IDLE_POWER_USE) + return + if(banked_cash == 0) + say("Please deposit funds to begin testing.") + return + calcsuccess() + use_power(MACHINE_OPERATION * power_saver) //This thing should eat your APC battery if you're not careful. + use_power = IDLE_POWER_USE //Machine shuts off after use to prevent spam and look better visually. + update_icon_state() + if("amount") + var/input = text2num(params["amount"]) + if(input) + banking_amount = input + if("toggle_power") + if(use_power == ACTIVE_POWER_USE) + use_power = IDLE_POWER_USE + else + use_power = ACTIVE_POWER_USE + update_icon_state() + if("account_reset") + if(use_power == IDLE_POWER_USE) + return + account_name = "" + account = null + say("Account settings reset.") + . = TRUE diff --git a/code/modules/research/designs/autolathe_designs.dm b/code/modules/research/designs/autolathe_designs.dm index 2b8baae73ee..a0536d60bd7 100644 --- a/code/modules/research/designs/autolathe_designs.dm +++ b/code/modules/research/designs/autolathe_designs.dm @@ -279,6 +279,7 @@ materials = list(/datum/material/iron = 1000) build_path = /obj/item/tank/internals/generic category = list("initial","Misc","Equipment") + departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_CARGO /datum/design/metal name = "Metal" diff --git a/code/modules/research/designs/machine_designs.dm b/code/modules/research/designs/machine_designs.dm index 1e1969eee9b..f8660c76c3d 100644 --- a/code/modules/research/designs/machine_designs.dm +++ b/code/modules/research/designs/machine_designs.dm @@ -234,6 +234,14 @@ category = list("Research Machinery") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE +/datum/design/board/bepis + name = "Machine Design (B.E.P.I.S. Board)" + desc = "The circuit board for a B.E.P.I.S." + id = "bepis" + build_path = /obj/item/circuitboard/machine/bepis + category = list("Research Machinery") + departmental_flags = DEPARTMENTAL_FLAG_SCIENCE + /datum/design/board/protolathe name = "Machine Design (Protolathe Board)" desc = "The circuit board for a protolathe." diff --git a/code/modules/research/designs/misc_designs.dm b/code/modules/research/designs/misc_designs.dm index dead7cc8f00..09fd097d37e 100644 --- a/code/modules/research/designs/misc_designs.dm +++ b/code/modules/research/designs/misc_designs.dm @@ -87,6 +87,16 @@ category = list("Equipment") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING +/datum/design/bright_helmet + name = "Workplace-Ready Firefighter Helmet" + desc = "By applying state of the art lighting technology to a fire helmet with industry standard photo-chemical hardening methods, this hardhat will protect you from robust workplace hazards." + id = "bright_helmet" + build_type = PROTOLATHE + materials = list(/datum/material/iron = 4000, /datum/material/glass = 1000, /datum/material/plastic = 3000, /datum/material/silver = 500) + build_path = /obj/item/clothing/head/hardhat/red/upgraded + category = list("Equipment") + departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_CARGO + /datum/design/portaseeder name = "Portable Seed Extractor" desc = "For the enterprising botanist on the go. Less efficient than the stationary model, it creates one seed per plant." diff --git a/code/modules/research/designs/tool_designs.dm b/code/modules/research/designs/tool_designs.dm index 65ceecdf97f..f1d83a9e766 100644 --- a/code/modules/research/designs/tool_designs.dm +++ b/code/modules/research/designs/tool_designs.dm @@ -75,6 +75,16 @@ category = list("Tool Designs") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING +/datum/design/rld_mini + name = "Mini Rapid Light Device (MRLD)" + desc = "A tool that can portable and standing lighting orbs and glowsticks." + id = "rld_mini" + build_type = PROTOLATHE + materials = list(/datum/material/iron = 20000, /datum/material/glass = 10000, /datum/material/plastic = 8000, /datum/material/gold = 2000) + build_path = /obj/item/construction/rld/mini + category = list("Tool Designs") + departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_CARGO + ///////////////////////////////////////// //////////////Alien Tools//////////////// ///////////////////////////////////////// diff --git a/code/modules/research/research_disk.dm b/code/modules/research/research_disk.dm index 384543dbc99..1f6a8b4ad23 100644 --- a/code/modules/research/research_disk.dm +++ b/code/modules/research/research_disk.dm @@ -21,6 +21,16 @@ . = ..() stored_research = new /datum/techweb/admin +/obj/item/disk/tech_disk/major + name = "Reformatted technology disk" + desc = "A disk containing a new, completed tech from the B.E.P.I.S. Upload the disk to an R&D Console to redeem the tech." + icon_state = "rndmajordisk" + custom_materials = list(/datum/material/iron=300, /datum/material/glass=100) + +/obj/item/disk/tech_disk/major/Initialize() + . = ..() + stored_research = new /datum/techweb/bepis + /obj/item/research_notes name = "research notes" desc = "Valuable scientific data. Use it in a research console to scan it." diff --git a/code/modules/research/techweb/_techweb.dm b/code/modules/research/techweb/_techweb.dm index ef508fed82a..c311bf37ede 100644 --- a/code/modules/research/techweb/_techweb.dm +++ b/code/modules/research/techweb/_techweb.dm @@ -48,6 +48,19 @@ id = "SCIENCE" organization = "Nanotrasen" +/datum/techweb/bepis //Should contain only 1 BEPIS tech selected at random. + id = "EXPERIMENTAL" + organization = "Nanotrasen R&D" + +/datum/techweb/bepis/New() + . = ..() + var/bepis_id = pick(SSresearch.techweb_nodes_experimental) //To add a new tech to the BEPIS, add the ID to this pick list. + var/datum/techweb_node/BN = (SSresearch.techweb_node_by_id(bepis_id)) + hidden_nodes -= BN.id //Has to be removed from hidden nodes + research_node(BN, TRUE, FALSE, FALSE) + update_node_status(BN) + SSresearch.techweb_nodes_experimental -= bepis_id + /datum/techweb/Destroy() researched_nodes = null researched_designs = null @@ -111,17 +124,17 @@ modify_point_list(l) /datum/techweb/proc/copy_research_to(datum/techweb/receiver, unlock_hidden = TRUE) //Adds any missing research to theirs. + if(unlock_hidden) + for(var/i in receiver.hidden_nodes) + CHECK_TICK + if(!hidden_nodes[i]) + receiver.hidden_nodes -= i //We can see it so let them see it too. for(var/i in researched_nodes) CHECK_TICK receiver.research_node_id(i, TRUE, FALSE, FALSE) for(var/i in researched_designs) CHECK_TICK receiver.add_design_by_id(i) - if(unlock_hidden) - for(var/i in receiver.hidden_nodes) - CHECK_TICK - if(!hidden_nodes[i]) - receiver.hidden_nodes -= i //We can see it so let them see it too. receiver.recalculate_nodes() /datum/techweb/proc/copy() diff --git a/code/modules/research/techweb/_techweb_node.dm b/code/modules/research/techweb/_techweb_node.dm index e1282a19b21..f412d0b25a5 100644 --- a/code/modules/research/techweb/_techweb_node.dm +++ b/code/modules/research/techweb/_techweb_node.dm @@ -7,6 +7,7 @@ var/display_name = "Errored Node" var/description = "Why are you seeing this?" var/hidden = FALSE //Whether it starts off hidden. + var/experimental = FALSE //If the tech can be randomly granted by the BEPIS as a reward. Meant to be fully given in tech disks, not researched. var/starting_node = FALSE //Whether it's available without any research. var/list/prereq_ids = list() var/list/design_ids = list() diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm index ae10a3fa59f..83b5fcc6c7a 100644 --- a/code/modules/research/techweb/all_nodes.dm +++ b/code/modules/research/techweb/all_nodes.dm @@ -9,7 +9,7 @@ description = "NT default research technologies." // Default research tech, prevents bricking design_ids = list("basic_matter_bin", "basic_cell", "basic_scanning", "basic_capacitor", "basic_micro_laser", "micro_mani", "desttagger", "handlabel", "packagewrap", - "destructive_analyzer", "circuit_imprinter", "experimentor", "rdconsole", "design_disk", "tech_disk", "rdserver", "rdservercontrol", "mechfab", "paystand", + "destructive_analyzer", "circuit_imprinter", "experimentor", "rdconsole", "bepis", "design_disk", "tech_disk", "rdserver", "rdservercontrol", "mechfab", "paystand", "space_heater", "beaker", "large_beaker", "bucket", "xlarge_beaker", "sec_rshot", "sec_beanbag_slug", "sec_bshot", "sec_slug", "sec_Islug", "sec_dart", "sec_38", "rglass","plasteel","plastitanium","plasmaglass","plasmareinforcedglass","titaniumglass","plastitaniumglass","plumbing_rcd","plastic_knife","plastic_fork","plastic_spoon") @@ -1054,6 +1054,19 @@ continue boost_item_paths |= UI.item //allows deconning to unlock. + +////////////////////////B.E.P.I.S. Locked Techs//////////////////////// +/datum/techweb_node/light_apps + id = "light_apps" + display_name = "Illumination Applications" + description = "Applications of lighting and vision technology not originally thought to be commercially viable." + prereq_ids = list("base") + design_ids = list("bright_helmet", "rld_mini") + research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) + export_price = 2500 + hidden = TRUE + experimental = TRUE + //Helpers for debugging/balancing the techweb in its entirety! /proc/total_techweb_exports() var/list/datum/techweb_node/processing = list() diff --git a/code/modules/surgery/organs/lungs.dm b/code/modules/surgery/organs/lungs.dm index 4f404ee7cc2..8c3807baaab 100644 --- a/code/modules/surgery/organs/lungs.dm +++ b/code/modules/surgery/organs/lungs.dm @@ -388,6 +388,9 @@ if(prob(20)) to_chat(H, "You feel [hot_message] in your [name]!") + // The air you breathe out should match your body temperature + breath.temperature = H.bodytemperature + /obj/item/organ/lungs/on_life() ..() if((!failed) && ((organ_flags & ORGAN_FAILING))) diff --git a/code/modules/surgery/organs/tongue.dm b/code/modules/surgery/organs/tongue.dm index f8e9d5844d9..f97c0b7fcf9 100644 --- a/code/modules/surgery/organs/tongue.dm +++ b/code/modules/surgery/organs/tongue.dm @@ -18,6 +18,10 @@ /datum/language/beachbum, /datum/language/aphasia, /datum/language/piratespeak, + /datum/language/moffic, + /datum/language/sylvan, + /datum/language/shadowtongue, + /datum/language/terrum, )) /obj/item/organ/tongue/Initialize(mapload) @@ -68,6 +72,21 @@ say_mod = "buzzes" taste_sensitivity = 25 // you eat vomit, this is a mercy modifies_speech = TRUE + var/static/list/languages_possible_fly = typecacheof(list( + /datum/language/common, + /datum/language/draconic, + /datum/language/codespeak, + /datum/language/monkey, + /datum/language/narsie, + /datum/language/beachbum, + /datum/language/aphasia, + /datum/language/piratespeak, + /datum/language/moffic, + /datum/language/sylvan, + /datum/language/shadowtongue, + /datum/language/terrum, + /datum/language/buzzwords + )) /obj/item/organ/tongue/fly/handle_speech(datum/source, list/speech_args) var/static/regex/fly_buzz = new("z+", "g") @@ -78,6 +97,10 @@ message = fly_buZZ.Replace(message, "ZZZ") speech_args[SPEECH_MESSAGE] = message +/obj/item/organ/tongue/fly/Initialize(mapload) + . = ..() + languages_possible = languages_possible_fly + /obj/item/organ/tongue/abductor name = "superlingual matrix" desc = "A mysterious structure that allows for instant communication between users. Pretty impressive until you need to eat something." @@ -185,10 +208,26 @@ var/chattering = FALSE var/phomeme_type = "sans" var/list/phomeme_types = list("sans", "papyrus") + var/static/list/languages_possible_skeleton = typecacheof(list( + /datum/language/common, + /datum/language/draconic, + /datum/language/codespeak, + /datum/language/monkey, + /datum/language/narsie, + /datum/language/beachbum, + /datum/language/aphasia, + /datum/language/piratespeak, + /datum/language/moffic, + /datum/language/sylvan, + /datum/language/shadowtongue, + /datum/language/terrum, + /datum/language/calcic + )) /obj/item/organ/tongue/bone/Initialize() . = ..() phomeme_type = pick(phomeme_types) + languages_possible = languages_possible_skeleton /obj/item/organ/tongue/bone/handle_speech(datum/source, list/speech_args) if (chattering) @@ -234,3 +273,30 @@ else new_message += message[i] speech_args[SPEECH_MESSAGE] = new_message + +/obj/item/organ/tongue/ethereal + name = "electric discharger" + desc = "A sophisticated ethereal organ, capable of synthesising speech via electrical discharge." + icon_state = "electrotongue" + say_mod = "crackles" + attack_verb = list("shocked", "jolted", "zapped") + taste_sensitivity = 101 // Not a tongue, they can't taste shit + var/static/list/languages_possible_ethereal = typecacheof(list( + /datum/language/common, + /datum/language/draconic, + /datum/language/codespeak, + /datum/language/monkey, + /datum/language/narsie, + /datum/language/beachbum, + /datum/language/aphasia, + /datum/language/piratespeak, + /datum/language/moffic, + /datum/language/sylvan, + /datum/language/shadowtongue, + /datum/language/terrum, + /datum/language/voltaic + )) + +/obj/item/organ/tongue/ethereal/Initialize(mapload) + . = ..() + languages_possible = languages_possible_ethereal diff --git a/html/changelog.html b/html/changelog.html index 09f49db0664..c170e7611c1 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -51,6 +51,150 @@ -->
+

26 December 2019

+

ArcaneMusic updated:

+ +

CAPTTLasky updated:

+ +

Cyberboss updated:

+ + +

24 December 2019

+

Arkatos updated:

+ +

Bawhoppen updated:

+ +

CRITAWAKETS updated:

+ +

Coconutwarrior97 updated:

+ +

Denton updated:

+ +

EOBGames updated:

+ +

Iatots updated:

+ +

JJRcop updated:

+ +

RaveRadbury updated:

+ +

Skoglol updated:

+ +

That REALLY Good Soda Flavor updated:

+ +

genessee596 updated:

+ +

nightred updated:

+ +

wesoda25 updated:

+ + +

22 December 2019

+

Arkatos updated:

+ +

Buggy123 updated:

+ +

Miningby updated:

+ +

Skoglol updated:

+ +

TetraK1 updated:

+ +

Thebleh updated:

+ +

actioninja updated:

+ +

nightred updated:

+ +

swindly updated:

+ +

wesoda25 updated:

+ +

21 December 2019

Ty the Smonk updated:

- -

24 October 2019

-

Cenrus updated:

- -

Fikou updated:

- -

Skoglol updated:

- -

TheChosenEvilOne updated:

- -

Urumasi updated:

- -

bandit updated:

- -

spookydonut updated:

- -

stylemistake updated:

- -

tralezab updated:

- - -

23 October 2019

-

Indie-ana Jones & Meyhazah updated:

- -

RaveRadbury updated:

- -

Skoglol updated:

- -

Skoglol, TheChosenEvilOne updated:

- -

StonebayKyle updated:

- -

bandit updated:

- -

carlarctg updated:

- -

genessee596 updated:

- -

nemvar updated:

- -

stylemistake updated:

- -

willox updated:

- - -

22 October 2019

-

ATHATH updated:

- -

SerJanko for epic asteroid sprites and qustinnus updated:

- -

Urumasi updated:

- -

XDTM updated:

- -

actioninja updated:

- -

bobbahbrown updated:

- -

carlarctg updated:

- -

nemvar updated:

- - -

21 October 2019

-

carlarctg updated:

- -

stylemistake updated:

- - -

20 October 2019

-

ATHATH updated:

- -

ArcaneMusic updated:

- -

Bumtickley00 updated:

- -

Couls updated:

- -

Denton updated:

- -

Fikou updated:

- -

Firecage updated:

- -

Fox McCloud updated:

- -

JDawg1290 updated:

- -

KetasDotepasto updated:

- -

Krysonism updated:

- -

Mickyan updated:

- -

PepperPrepper updated:

- -

Qustinnus updated:

- -

Skoglol updated:

- -

TheChosenEvilOne updated:

- -

Time-Green updated:

- -

Twaticus updated:

- -

YakiAttaki updated:

- -

actioninja updated:

- -

carlarctg updated:

- -

carshalash updated:

- -

nemvar updated:

- -

nianjiilical updated:

- -

qust updated:

- -

stylemistake updated:

- -

willox updated:

- -

zxaber updated:

-
GoonStation 13 Development Team diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index 0be60abea19..a6f4124d9dc 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -36033,3 +36033,119 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. name' Ty-the-Smonk: - bugfix: '#48281 Bees can now vent crawl' +2019-12-22: + Arkatos: + - rscadd: Bank Machine now uses tgui-next UI. + - tweak: Small UI tweaks for Gravity Generator and Equipment Reclaimer Console. + Buggy123: + - tweak: An intern at Nanotrasen noticed that their shift timer was running about + 3 minutes fast, misleading employees about how long they had been clocked in. + The timer has been fixed, and anyone who clocked out early has had their pay + docked. + Miningby: + - balance: Mining skill only affects tools like pickaxe/drill, and the skill can + only be gained by using such tools + - balance: Mining tools have been returned to their previous speed, and mining skill + boosts this speed further. Previously mining skill lowered the speed and brought + it back to normal after reaching certain levels. + Skoglol: + - bugfix: Santas bag should once again regen gifts. A bit faster than before, too. + TetraK1: + - bugfix: SM radiation no longer kills you in 12 seconds without rad protection. + Thebleh: + - rscadd: Freezers and Heaters can now connect on multiple layers. Use a multitool + on their boards to change layers. + - bugfix: Clown and Mime traitors don't get a pen unless it's their uplink choice + actioninja: + - bugfix: You can rename diseases in the pandemic + nightred: + - bugfix: kitchen counter on meta + - bugfix: replaced donk-pocket boxes in kitchen with new donk-pocket spawner + swindly: + - bugfix: Fixed crafting items using blacklisted subtypes of required items. + - bugfix: Fixed bonfires not returning the logs used to build them when deconstructed + - tweak: Steel-cap logs can not be used to build bonfires + wesoda25: + - tweak: Cargo Item Requisition forms now display what time they were ordered +2019-12-24: + Arkatos: + - tweak: Sentient Lavaland Elites will now give a ghost orbit notification. ARE + YOU NOT ENTERTAINED?! + Bawhoppen: + - tweak: Filing cabinets can now hold any small or below object, rather than just + papers/folders/photos. + CRITAWAKETS: + - imageadd: The action button sprites for implants look better and less placeholder-y + now. + Coconutwarrior97: + - bugfix: Fixed door access requirements on meta, for northern club maint door, + and northern maint door between toxins/toxins launch. + - bugfix: Fixed typo changing jellly_homer to jelly_homer under donuts.dmi . + Denton: + - bugfix: Fixed the command report that pops up when an admin sets the game mode + to monkey/jungle fever - the jungle fever infection hasn't been curable for + the last two years. + - admin: Added deadmin/readmin keybindings + - tweak: Christmas trees can no longer be cut down like regular trees. They can + however still be destroyed with enough effort. + EOBGames: + - rscadd: Following a recent incident involving the Rosetta Stone and an assistant, + a flood of new languages have hit the station! Most roundstart races, as well + as several special races, have been given their own languages to secretly chat + with one another. Beware though, since the AI can understand the roundstart + languages! + - rscadd: Voltaic, a new language for ethereals. + - rscadd: Moffic, a new language for moths. + - rscadd: Calcic, a chattery new language for plasmamen and skeletons. Bone golems + get this one too. + - rscadd: Terrum, a new language for golems. + - rscadd: Shadowtongue, a new language for shadowlings and nightmares. (You n'wah!) + - rscadd: Sylvan, a new language for podpeople. + - rscadd: Buzzwords, a new "language" for flypeople. + - rscadd: the electric discharger, a new tongue for ethereals. + - tweak: made a few changes to tongues for flies and skeletons. + - tweak: Runic golems now get to speak Nar'sien. + - imageadd: added icons for the new languages, and the electric discharger. + Iatots: + - bugfix: cult revive rune now displays how much sacrifice "credit" the cult has + with nar-sie. Remember, each revive costs 3 sacrifices, and the cult starts + with 1 free revive (that is, drawing the revive rune with no sacrifices made + the entire round displays 3 unredeemed sacrifices). + JJRcop: + - admin: SDQL2 now supports all subsystems. + - rscdel: Errant APC in Derelict ruin was removed. + RaveRadbury: + - bugfix: mime fan pins work now, also updated the clown and mime fan description. + Skoglol: + - bugfix: The mind reader mutation should now always tell you the correct true name. + - admin: Stealth mode should reset ghost name correctly. + - admin: Cutting down (xmas) trees is now logged. + That REALLY Good Soda Flavor: + - rscadd: Hanukkah and Passover are now celebrated on the station. + genessee596: + - bugfix: Generic Gas Tanks (the grey ones) can now be built in the Engineering + and Cargo Protolathes like they're supposed to. + nightred: + - bugfix: Fixes an issue with spiders losing exit vent + - tweak: Your breath out now interacts with your body temperature. + wesoda25: + - bugfix: RCD animations are now anchored +2019-12-26: + ArcaneMusic: + - rscadd: The RnD department has been gifted a state-of-the-art new research tool, + the B.E.P.I.S. by Nanotrasen's Venture Capital Labs, after repeatedly wasting + all of their funds. Hopefully you'll find a... wiser use for it. + - rscadd: A new Tech Node can be unlocked through proper investment with the B.E.P.I.S. + - rscadd: In an unrelated piece of news, a deer was recently found to be the culprit + of Nanotrasen Venture Capital Labs's onboard nuclear failsafe device detonating. + Yes, we're sure it wasn't the Syndicate this time. Yes, we wish we were joking + too. + - bugfix: Fixes a small bug with tech disks containing hidden nodes not researching. + CAPTTLasky: + - rscadd: Major renovations to the MetaStation Brig + - rscadd: Donut Station Grenade Launcher added to Armory Equipment + - rscadd: A public-facing desk for the Warden + - tweak: The Secway Key has been moved to the Warden's Office + Cyberboss: + - bugfix: If multiple holidays are active, the station name may be derived from + any of them instead of a single one. diff --git a/html/changelogs/AutoChangeLog-pr-48021.yml b/html/changelogs/AutoChangeLog-pr-48021.yml new file mode 100644 index 00000000000..4ada92210cc --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-48021.yml @@ -0,0 +1,4 @@ +author: "spookydonut" +delete-after: True +changes: + - code_imp: "adds selective duplicate component mode" diff --git a/html/changelogs/AutoChangeLog-pr-48154.yml b/html/changelogs/AutoChangeLog-pr-48154.yml deleted file mode 100644 index 0f105a71048..00000000000 --- a/html/changelogs/AutoChangeLog-pr-48154.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Arkatos" -delete-after: True -changes: - - rscadd: "Bank Machine now uses tgui-next UI." - - tweak: "Small UI tweaks for Gravity Generator and Equipment Reclaimer Console." diff --git a/html/changelogs/AutoChangeLog-pr-48237.yml b/html/changelogs/AutoChangeLog-pr-48237.yml deleted file mode 100644 index 7f0dd20519a..00000000000 --- a/html/changelogs/AutoChangeLog-pr-48237.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Miningby" -delete-after: True -changes: - - balance: "Mining skill only affects tools like pickaxe/drill, and the skill can only be gained by using such tools" - - balance: "Mining tools have been returned to their previous speed, and mining skill boosts this speed further. Previously mining skill lowered the speed and brought it back to normal after reaching certain levels." diff --git a/html/changelogs/AutoChangeLog-pr-48273.yml b/html/changelogs/AutoChangeLog-pr-48273.yml deleted file mode 100644 index 8d007938666..00000000000 --- a/html/changelogs/AutoChangeLog-pr-48273.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Buggy123" -delete-after: True -changes: - - tweak: "An intern at Nanotrasen noticed that their shift timer was running about 3 minutes fast, misleading employees about how long they had been clocked in. The timer has been fixed, and anyone who clocked out early has had their pay docked." diff --git a/html/changelogs/AutoChangeLog-pr-48311.yml b/html/changelogs/AutoChangeLog-pr-48311.yml deleted file mode 100644 index 97d908c9845..00000000000 --- a/html/changelogs/AutoChangeLog-pr-48311.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "swindly" -delete-after: True -changes: - - bugfix: "Fixed crafting items using blacklisted subtypes of required items." diff --git a/html/changelogs/AutoChangeLog-pr-48312.yml b/html/changelogs/AutoChangeLog-pr-48312.yml deleted file mode 100644 index 607726a425a..00000000000 --- a/html/changelogs/AutoChangeLog-pr-48312.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "swindly" -delete-after: True -changes: - - bugfix: "Fixed bonfires not returning the logs used to build them when deconstructed" - - tweak: "Steel-cap logs can not be used to build bonfires" diff --git a/html/changelogs/AutoChangeLog-pr-48317.yml b/html/changelogs/AutoChangeLog-pr-48317.yml deleted file mode 100644 index 5b1056129d6..00000000000 --- a/html/changelogs/AutoChangeLog-pr-48317.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Skoglol" -delete-after: True -changes: - - bugfix: "Santas bag should once again regen gifts. A bit faster than before, too." diff --git a/html/changelogs/AutoChangeLog-pr-48322.yml b/html/changelogs/AutoChangeLog-pr-48322.yml deleted file mode 100644 index 5d22001007c..00000000000 --- a/html/changelogs/AutoChangeLog-pr-48322.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "wesoda25" -delete-after: True -changes: - - tweak: "Cargo Item Requisition forms now display what time they were ordered" diff --git a/html/changelogs/AutoChangeLog-pr-48325.yml b/html/changelogs/AutoChangeLog-pr-48325.yml deleted file mode 100644 index d40a8c0e35f..00000000000 --- a/html/changelogs/AutoChangeLog-pr-48325.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "TetraK1" -delete-after: True -changes: - - bugfix: "SM radiation no longer kills you in 12 seconds without rad protection." diff --git a/html/changelogs/AutoChangeLog-pr-48329.yml b/html/changelogs/AutoChangeLog-pr-48329.yml deleted file mode 100644 index 0c528fd8b2c..00000000000 --- a/html/changelogs/AutoChangeLog-pr-48329.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "actioninja" -delete-after: True -changes: - - bugfix: "You can rename diseases in the pandemic" diff --git a/html/changelogs/AutoChangeLog-pr-48330.yml b/html/changelogs/AutoChangeLog-pr-48330.yml deleted file mode 100644 index 5dda0699d51..00000000000 --- a/html/changelogs/AutoChangeLog-pr-48330.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Thebleh" -delete-after: True -changes: - - rscadd: "Freezers and Heaters can now connect on multiple layers. Use a multitool on their boards to change layers." diff --git a/html/changelogs/AutoChangeLog-pr-48340.yml b/html/changelogs/AutoChangeLog-pr-48340.yml deleted file mode 100644 index 9ad287687d0..00000000000 --- a/html/changelogs/AutoChangeLog-pr-48340.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "nightred" -delete-after: True -changes: - - bugfix: "kitchen counter on meta" - - bugfix: "replaced donk-pocket boxes in kitchen with new donk-pocket spawner" diff --git a/html/changelogs/AutoChangeLog-pr-48358.yml b/html/changelogs/AutoChangeLog-pr-48358.yml new file mode 100644 index 00000000000..5a19c36e73e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-48358.yml @@ -0,0 +1,5 @@ +author: "EdgeLordExe" +delete-after: True +changes: + - rscadd: "CMC back on meta!" + - bugfix: "first aid kits found in medbay clinic actually contain stuff now" diff --git a/html/changelogs/AutoChangeLog-pr-48365.yml b/html/changelogs/AutoChangeLog-pr-48365.yml new file mode 100644 index 00000000000..fcf14d3b88b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-48365.yml @@ -0,0 +1,4 @@ +author: "Tharcoonvagh" +delete-after: True +changes: + - spellcheck: "insuls description" diff --git a/icons/effects/beam.dmi b/icons/effects/beam.dmi index 19d9faed51b..9b2dd9ad819 100644 Binary files a/icons/effects/beam.dmi and b/icons/effects/beam.dmi differ diff --git a/icons/misc/language.dmi b/icons/misc/language.dmi index 78a9622a4be..ac2fbc9ade4 100644 Binary files a/icons/misc/language.dmi and b/icons/misc/language.dmi differ diff --git a/icons/mob/animal.dmi b/icons/mob/animal.dmi index d385ece769c..06a04e3d47f 100644 Binary files a/icons/mob/animal.dmi and b/icons/mob/animal.dmi differ diff --git a/icons/mob/clothing/head.dmi b/icons/mob/clothing/head.dmi index b962872a7d3..2d0cfa5291f 100644 Binary files a/icons/mob/clothing/head.dmi and b/icons/mob/clothing/head.dmi differ diff --git a/icons/mob/inhands/items_lefthand.dmi b/icons/mob/inhands/items_lefthand.dmi index e2ad6f0169b..e0522d1f07e 100644 Binary files a/icons/mob/inhands/items_lefthand.dmi and b/icons/mob/inhands/items_lefthand.dmi differ diff --git a/icons/mob/inhands/items_righthand.dmi b/icons/mob/inhands/items_righthand.dmi index c8ebc4974f0..1c1220e75dc 100644 Binary files a/icons/mob/inhands/items_righthand.dmi and b/icons/mob/inhands/items_righthand.dmi differ diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi index 97774e1d27d..9e0cb54fd2b 100644 Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ diff --git a/icons/obj/economy.dmi b/icons/obj/economy.dmi index caaa9436182..3148e075984 100644 Binary files a/icons/obj/economy.dmi and b/icons/obj/economy.dmi differ diff --git a/icons/obj/food/donuts.dmi b/icons/obj/food/donuts.dmi index 19f94507388..3e8732d461b 100644 Binary files a/icons/obj/food/donuts.dmi and b/icons/obj/food/donuts.dmi differ diff --git a/icons/obj/implants.dmi b/icons/obj/implants.dmi index 8dc2f08fdcb..506dbfe7f49 100644 Binary files a/icons/obj/implants.dmi and b/icons/obj/implants.dmi differ diff --git a/icons/obj/machines/bepis.dmi b/icons/obj/machines/bepis.dmi new file mode 100644 index 00000000000..f348c2e1b05 Binary files /dev/null and b/icons/obj/machines/bepis.dmi differ diff --git a/icons/obj/module.dmi b/icons/obj/module.dmi index c0523d86fe1..ef7206180dc 100644 Binary files a/icons/obj/module.dmi and b/icons/obj/module.dmi differ diff --git a/icons/obj/objects.dmi b/icons/obj/objects.dmi index 613e87cdd83..c4e5bece817 100644 Binary files a/icons/obj/objects.dmi and b/icons/obj/objects.dmi differ diff --git a/icons/obj/stack_objects.dmi b/icons/obj/stack_objects.dmi index b61608b6cbd..130cd35c006 100644 Binary files a/icons/obj/stack_objects.dmi and b/icons/obj/stack_objects.dmi differ diff --git a/icons/obj/surgery.dmi b/icons/obj/surgery.dmi index b406bfa3134..eb32a869da5 100755 Binary files a/icons/obj/surgery.dmi and b/icons/obj/surgery.dmi differ diff --git a/icons/obj/tools.dmi b/icons/obj/tools.dmi index 5e8cdf9c787..7d2b7ce0710 100644 Binary files a/icons/obj/tools.dmi and b/icons/obj/tools.dmi differ diff --git a/tgstation.dme b/tgstation.dme index eec524ddea5..078063651bc 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -975,6 +975,7 @@ #include "code\game\objects\items\devices\multitool.dm" #include "code\game\objects\items\devices\paicard.dm" #include "code\game\objects\items\devices\pipe_painter.dm" +#include "code\game\objects\items\devices\polycircuit.dm" #include "code\game\objects\items\devices\powersink.dm" #include "code\game\objects\items\devices\pressureplates.dm" #include "code\game\objects\items\devices\quantum_keycard.dm" @@ -1831,6 +1832,7 @@ #include "code\modules\games\cas.dm" #include "code\modules\goonchat\browserOutput.dm" #include "code\modules\holiday\easter.dm" +#include "code\modules\holiday\hebrew_calendar.dm" #include "code\modules\holiday\holidays.dm" #include "code\modules\holodeck\area_copy.dm" #include "code\modules\holodeck\computer.dm" @@ -1929,6 +1931,8 @@ #include "code\modules\keybindings\setup.dm" #include "code\modules\language\aphasia.dm" #include "code\modules\language\beachbum.dm" +#include "code\modules\language\buzzwords.dm" +#include "code\modules\language\calcic.dm" #include "code\modules\language\codespeak.dm" #include "code\modules\language\common.dm" #include "code\modules\language\draconic.dm" @@ -1937,12 +1941,17 @@ #include "code\modules\language\language_holder.dm" #include "code\modules\language\language_menu.dm" #include "code\modules\language\machine.dm" +#include "code\modules\language\moffic.dm" #include "code\modules\language\monkey.dm" #include "code\modules\language\mushroom.dm" #include "code\modules\language\narsian.dm" #include "code\modules\language\piratespeak.dm" +#include "code\modules\language\shadowtongue.dm" #include "code\modules\language\slime.dm" #include "code\modules\language\swarmer.dm" +#include "code\modules\language\sylvan.dm" +#include "code\modules\language\terrum.dm" +#include "code\modules\language\voltaic.dm" #include "code\modules\language\xenocommon.dm" #include "code\modules\library\lib_codex_gigas.dm" #include "code\modules\library\lib_items.dm" @@ -2642,6 +2651,7 @@ #include "code\modules\recycling\disposal\outlet.dm" #include "code\modules\recycling\disposal\pipe.dm" #include "code\modules\recycling\disposal\pipe_sorting.dm" +#include "code\modules\research\bepis.dm" #include "code\modules\research\designs.dm" #include "code\modules\research\destructive_analyzer.dm" #include "code\modules\research\experimentor.dm" diff --git a/tgui-next/packages/tgui/interfaces/Bepis.js b/tgui-next/packages/tgui/interfaces/Bepis.js new file mode 100644 index 00000000000..da23cb11aa4 --- /dev/null +++ b/tgui-next/packages/tgui/interfaces/Bepis.js @@ -0,0 +1,109 @@ +import { multiline } from 'common/string'; +import { Fragment } from 'inferno'; +import { act } from '../byond'; +import { Section, LabeledList, Button, NumberInput, Box, Grid } from '../components'; + +export const Bepis = props => { + const { state } = props; + const { config, data } = state; + const { ref } = config; + const { + amount, + } = data; + return ( +
+
act(ref, 'toggle_power')} /> + )}> + All you need to know about the B.E.P.I.S. and you! + The B.E.P.I.S. performs hundreds of tests a second + using electrical and financial resources to invent + new products, or discover new technologies otherwise + overlooked for being too risky or too niche to produce! +
+
act(ref, 'account_reset')} /> + )}> + Console is currently being operated + by {data.account_owner ? data.account_owner : 'no one'}. +
+ + +
+ + + {data.stored_cash} + + + {data.accuracy_percentage}% + + + {data.positive_cash_offset} + + + {data.negative_cash_offset} + + + act(ref, 'amount', { + amount: value, + })} /> + + +
+ +
+ + + + ); +}; diff --git a/tgui-next/packages/tgui/interfaces/DecalPainter.js b/tgui-next/packages/tgui/interfaces/DecalPainter.js new file mode 100644 index 00000000000..7709d41f495 --- /dev/null +++ b/tgui-next/packages/tgui/interfaces/DecalPainter.js @@ -0,0 +1,63 @@ +import { Fragment } from 'inferno'; +import { useBackend } from '../backend'; +import { AnimatedNumber, Box, Button, LabeledList, ProgressBar, Section, Tabs } from '../components'; + +export const DecalPainter = props => { + const { act, data } = useBackend(props); + const decal_list = data.decal_list || []; + const color_list = data.color_list || []; + const dir_list = data.dir_list || []; + return ( + +
+ {decal_list.map(decal => { + return ( +
+
+ {color_list.map(color => { + return ( +
+
+ {dir_list.map(dir => { + return ( +
+
+ ); +}; diff --git a/tgui-next/packages/tgui/routes.js b/tgui-next/packages/tgui/routes.js index d4b86b4551b..57a4d668c46 100644 --- a/tgui-next/packages/tgui/routes.js +++ b/tgui-next/packages/tgui/routes.js @@ -10,6 +10,7 @@ import { AtmosMixer } from './interfaces/AtmosMixer'; import { AtmosPump } from './interfaces/AtmosPump'; import { BankMachine } from './interfaces/BankMachine'; import { BluespaceArtillery } from './interfaces/BluespaceArtillery'; +import { Bepis } from './interfaces/Bepis'; import { BorgPanel } from './interfaces/BorgPanel'; import { BrigTimer } from './interfaces/BrigTimer'; import { Canister } from './interfaces/Canister'; @@ -31,6 +32,7 @@ import { ComputerFabricator } from './interfaces/ComputerFabricator'; import { Crayon } from './interfaces/Crayon'; import { CrewConsole } from './interfaces/CrewConsole'; import { Cryo } from './interfaces/Cryo'; +import { DecalPainter } from './interfaces/DecalPainter'; import { DisposalUnit } from './interfaces/DisposalUnit'; import { DnaVault } from './interfaces/DnaVault'; import { EngravedMessage } from './interfaces/EngravedMessage'; @@ -126,6 +128,10 @@ const ROUTES = { component: () => AtmosPump, scrollable: false, }, + bepis: { + component: () => Bepis, + scrollable: false, + }, bank_machine: { component: () => BankMachine, scrollable: false, @@ -227,6 +233,10 @@ const ROUTES = { component: () => Cryo, scrollable: false, }, + decal_painter: { + component: () => DecalPainter, + scrollable: false, + }, disposal_unit: { component: () => DisposalUnit, scrollable: false,