diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 92c4fd732a8..c572710e85a 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -3,17 +3,19 @@ ## Описание - + -## Ссылка на предложение/Причина создания ПР +## Причина создания ПР / Почему это хорошо для игры - - + + + + ## Демонстрация изменений - + ## Тесты - + diff --git a/_maps/map_files/Delta/delta.dmm b/_maps/map_files/Delta/delta.dmm index e1b88a5d516..c7eb23c4b24 100644 --- a/_maps/map_files/Delta/delta.dmm +++ b/_maps/map_files/Delta/delta.dmm @@ -895,16 +895,6 @@ icon_state = "brown" }, /area/quartermaster/delivery) -"ajG" = ( -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/obj/effect/decal/warning_stripes/east, -/turf/simulated/floor/plating/airless, -/area/space) "ajM" = ( /obj/structure/spacepoddoor{ luminosity = 3 @@ -1466,6 +1456,19 @@ }, /turf/simulated/floor/plating, /area/maintenance/fpmaint) +"apg" = ( +/obj/machinery/camera{ + c_tag = "Research Central Hallway"; + network = list("Research","SS13") + }, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whitepurple" + }, +/area/medical/research/nhallway) "aph" = ( /obj/effect/decal/warning_stripes/yellow, /turf/simulated/floor/plasteel, @@ -1656,15 +1659,6 @@ /obj/structure/girder, /turf/simulated/floor/plating, /area/maintenance/fore) -"aqe" = ( -/obj/effect/landmark/start/trainee_engineer, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/turf/simulated/floor/plasteel{ - icon_state = "neutralfull" - }, -/area/engineering/engine) "aqf" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -1696,6 +1690,16 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/kitchen) +"aqk" = ( +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/effect/decal/warning_stripes/east, +/turf/simulated/floor/plating/airless, +/area/space) "aqq" = ( /obj/structure/rack, /obj/item/clothing/shoes/magboots{ @@ -13398,23 +13402,6 @@ icon_state = "dark" }, /area/storage/tech) -"bGW" = ( -/obj/effect/decal/warning_stripes/southwestcorner, -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/turf/simulated/floor/engine, -/area/toxins/sm_test_chamber) "bGY" = ( /turf/simulated/floor/plasteel{ dir = 4; @@ -13819,6 +13806,21 @@ icon_state = "blue" }, /area/bridge/checkpoint/north) +"bJx" = ( +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/structure/lattice/catwalk, +/turf/space, +/area/space) "bJy" = ( /obj/structure/window/reinforced, /obj/structure/window/reinforced{ @@ -14017,6 +14019,16 @@ }, /turf/simulated/floor/plating, /area/maintenance/disposal) +"bKL" = ( +/obj/machinery/power/terminal{ + dir = 1 + }, +/obj/effect/decal/warning_stripes/northeast, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/turf/simulated/floor/plasteel, +/area/engineering/engine) "bKN" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -15722,6 +15734,13 @@ /obj/structure/plasticflaps, /turf/simulated/floor/plating, /area/hydroponics) +"bSy" = ( +/obj/effect/decal/warning_stripes/east, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/turf/simulated/floor/plasteel, +/area/engineering/controlroom) "bSA" = ( /obj/structure/sink{ pixel_y = 22 @@ -17365,18 +17384,6 @@ }, /turf/simulated/floor/plasteel, /area/maintenance/bar) -"cam" = ( -/obj/effect/decal/warning_stripes/east, -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/plasteel, -/area/engineering/controlroom) "cas" = ( /obj/structure/table/reinforced, /obj/machinery/reagentgrinder{ @@ -17978,6 +17985,14 @@ icon_state = "dark" }, /area/crew_quarters/serviceyard) +"ccU" = ( +/obj/structure/grille, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/effect/decal/warning_stripes/northeastcorner, +/turf/simulated/floor/plating/airless, +/area/engineering/engine) "ccW" = ( /obj/machinery/portable_atmospherics/canister/oxygen, /turf/simulated/floor/plating, @@ -17996,16 +18011,6 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/carpet, /area/maintenance/casino) -"cdd" = ( -/obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/effect/decal/warning_stripes/south, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/turf/simulated/floor/plasteel, -/area/engineering/engine) "cdj" = ( /obj/structure/table/reinforced, /obj/item/pen, @@ -19744,16 +19749,6 @@ /obj/effect/decal/remains/mouse, /turf/simulated/floor/plating, /area/maintenance/banya) -"cml" = ( -/obj/machinery/vending/autodrobe, -/obj/machinery/camera{ - c_tag = "Clown Office"; - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "bar" - }, -/area/clownoffice) "cmm" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/door/window/westleft, @@ -19859,24 +19854,6 @@ icon_state = "barber" }, /area/civilian/barber) -"cmO" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/hologram/holopad, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/effect/decal/warning_stripes/yellow/hollow, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/floor/plasteel{ - icon_state = "neutralfull" - }, -/area/storage/secure) "cmP" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plasteel{ @@ -19884,33 +19861,6 @@ icon_state = "green" }, /area/hydroponics) -"cmR" = ( -/obj/effect/decal/warning_stripes/east, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/floor/plasteel, -/area/engineering/engine) -"cmV" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/structure/sign/fire{ - pixel_x = 32 - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/turf/simulated/floor/plasteel{ - icon_state = "neutralfull" - }, -/area/storage/secure) "cmX" = ( /obj/structure/cable{ icon_state = "1-2" @@ -19999,19 +19949,6 @@ /obj/item/storage/box/mousetraps, /turf/simulated/floor/plasteel, /area/quartermaster/sorting) -"cnq" = ( -/obj/structure/bed, -/obj/item/bedsheet/clown, -/obj/structure/sign/poster/official/random{ - pixel_y = 32 - }, -/obj/machinery/light{ - dir = 1 - }, -/turf/simulated/floor/plasteel{ - icon_state = "bar" - }, -/area/clownoffice) "cnx" = ( /obj/structure/table/reinforced, /obj/effect/decal/warning_stripes/yellow, @@ -20029,20 +19966,6 @@ }, /turf/simulated/floor/plasteel, /area/quartermaster/office) -"cnB" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/warning_stripes/east, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/floor/plasteel, -/area/storage/secure) "cnD" = ( /obj/structure/cable, /obj/structure/cable{ @@ -20408,20 +20331,6 @@ /obj/effect/decal/warning_stripes/yellow/hollow, /turf/simulated/floor/plasteel, /area/storage/secure) -"cpo" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/floor/plasteel{ - icon_state = "neutralfull" - }, -/area/storage/secure) "cpr" = ( /obj/machinery/power/emitter, /obj/effect/decal/warning_stripes/yellow/hollow, @@ -20740,10 +20649,6 @@ icon_state = "caution" }, /area/atmos) -"crr" = ( -/obj/machinery/suit_storage_unit/blueshield, -/turf/simulated/floor/wood/fancy/light, -/area/blueshield) "crv" = ( /obj/structure/table/reinforced, /obj/item/clipboard, @@ -21158,15 +21063,6 @@ /obj/machinery/status_display, /turf/simulated/wall, /area/hydroponics) -"ctV" = ( -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/obj/machinery/atmospherics/unary/vent_scrubber/on, -/turf/simulated/floor/plasteel{ - icon_state = "yellowfull" - }, -/area/engineering/controlroom) "cua" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable{ @@ -21508,13 +21404,6 @@ icon_state = "dark" }, /area/gateway) -"cvI" = ( -/obj/effect/decal/warning_stripes/east, -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/turf/simulated/floor/plasteel, -/area/engineering/controlroom) "cvJ" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/hydroponics/soil, @@ -24354,6 +24243,15 @@ icon_state = "redfull" }, /area/crew_quarters/kitchen) +"cHj" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/storage/secure) "cHm" = ( /obj/structure/table/reinforced, /obj/machinery/newscaster{ @@ -24384,20 +24282,6 @@ icon_state = "whitepurple" }, /area/medical/research) -"cHz" = ( -/obj/structure/bed, -/obj/item/bedsheet/mime, -/obj/structure/sign/poster/official/random{ - pixel_y = 32 - }, -/obj/machinery/light{ - dir = 1 - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "tranquillite" - }, -/area/mimeoffice) "cHC" = ( /obj/item/twohanded/required/kirbyplants, /obj/structure/cable{ @@ -26059,21 +25943,6 @@ icon_state = "neutralfull" }, /area/quartermaster/storage) -"cOT" = ( -/obj/machinery/vending/wallmed{ - name = "Emergency NanoMed"; - pixel_x = 26 - }, -/obj/structure/filingcabinet/chestdrawer, -/obj/item/radio/intercom{ - pixel_y = -26; - pixel_x = 0 - }, -/turf/simulated/floor/plasteel{ - dir = 6; - icon_state = "whitepurple" - }, -/area/toxins/explab) "cOU" = ( /obj/structure/lattice/catwalk, /obj/machinery/atmospherics/pipe/simple/heat_exchanging, @@ -26819,16 +26688,6 @@ /obj/machinery/atmospherics/meter, /turf/simulated/floor/plasteel, /area/engineering/controlroom) -"cRT" = ( -/obj/machinery/atmospherics/pipe/simple/visible{ - dir = 4 - }, -/obj/effect/decal/warning_stripes/northeastcorner, -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/turf/simulated/floor/plasteel, -/area/engineering/controlroom) "cRU" = ( /obj/effect/decal/warning_stripes/northeast, /obj/effect/decal/warning_stripes/yellow/hollow, @@ -26874,14 +26733,6 @@ icon_state = "purplefull" }, /area/toxins/test_chamber) -"cSa" = ( -/obj/machinery/atmospherics/pipe/manifold/visible, -/obj/effect/decal/warning_stripes/north, -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/turf/simulated/floor/plasteel, -/area/engineering/controlroom) "cSb" = ( /obj/effect/decal/warning_stripes/yellow, /turf/simulated/floor/plasteel{ @@ -28141,19 +27992,6 @@ icon_state = "white" }, /area/medical/chemistry) -"cXs" = ( -/obj/structure/filingcabinet/chestdrawer, -/obj/machinery/light{ - dir = 4 - }, -/obj/structure/extinguisher_cabinet{ - pixel_y = -28 - }, -/turf/simulated/floor/plasteel{ - dir = 6; - icon_state = "whiteyellow" - }, -/area/medical/chemistry) "cXv" = ( /turf/simulated/floor/plasteel{ dir = 4; @@ -31508,6 +31346,25 @@ }, /turf/simulated/floor/plasteel, /area/crew_quarters/hor) +"dmd" = ( +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/decal/warning_stripes/west, +/obj/machinery/door/poddoor/preopen{ + id_tag = "Singularity"; + name = "Singularity Blast Doors" + }, +/turf/simulated/floor/plating, +/area/engineering/engine) "dmj" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -33412,6 +33269,21 @@ /obj/effect/decal/warning_stripes/southwest, /turf/simulated/floor/plasteel, /area/engineering/controlroom) +"duH" = ( +/obj/machinery/vending/wallmed{ + name = "Emergency NanoMed"; + pixel_x = 26 + }, +/obj/structure/filingcabinet/chestdrawer, +/obj/item/radio/intercom{ + pixel_y = -26; + pixel_x = 0 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "whitepurple" + }, +/area/toxins/explab) "duI" = ( /obj/machinery/atmospherics/pipe/simple/heat_exchanging{ dir = 9 @@ -33439,21 +33311,6 @@ icon_state = "dark" }, /area/security/permabrig) -"duO" = ( -/obj/machinery/power/terminal, -/obj/effect/decal/warning_stripes/south, -/obj/structure/cable/yellow, -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 5 - }, -/turf/simulated/floor/plasteel, -/area/engineering/controlroom) "duT" = ( /turf/simulated/floor/plasteel{ dir = 1; @@ -33682,6 +33539,20 @@ }, /turf/simulated/floor/engine/co2, /area/atmos) +"dvO" = ( +/obj/structure/bed, +/obj/item/bedsheet/mime, +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "tranquillite" + }, +/area/mimeoffice) "dvP" = ( /obj/structure/cable{ icon_state = "4-8" @@ -33756,6 +33627,21 @@ }, /turf/simulated/floor/carpet, /area/crew_quarters/bar/atrium) +"dwp" = ( +/obj/machinery/access_button{ + command = "cycle_exterior"; + frequency = 1379; + master_tag = "engineering_east_airlock"; + name = "exterior access button"; + pixel_x = 20; + pixel_y = 20; + req_access = list(10,13) + }, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/turf/simulated/floor/plating/airless, +/area/engineering/engine) "dws" = ( /obj/machinery/recharge_station, /turf/simulated/floor/plasteel{ @@ -34859,11 +34745,6 @@ }, /turf/simulated/floor/plating, /area/security/permabrig) -"dBp" = ( -/obj/effect/decal/warning_stripes/south, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/plasteel, -/area/engineering/engine) "dBr" = ( /obj/effect/spawner/window/reinforced, /obj/structure/cable{ @@ -35078,19 +34959,6 @@ }, /turf/simulated/floor/plating, /area/security/permabrig) -"dCv" = ( -/obj/structure/table/reinforced, -/obj/item/book/manual/engineering_guide{ - pixel_x = 4; - pixel_y = 4 - }, -/obj/item/book/manual/engineering_particle_accelerator, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "yellow" - }, -/area/engineering/engine) "dCw" = ( /obj/structure/table, /obj/machinery/computer/library/public, @@ -35576,12 +35444,6 @@ }, /turf/simulated/floor/engine/o2, /area/atmos) -"dEs" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 1 - }, -/turf/simulated/floor/plasteel, -/area/engineering/engine) "dEt" = ( /turf/simulated/wall, /area/maintenance/banya) @@ -36751,18 +36613,6 @@ }, /turf/simulated/floor/engine, /area/maintenance/turbine) -"dJh" = ( -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/obj/structure/lattice/catwalk, -/turf/space, -/area/space) "dJi" = ( /obj/machinery/field/generator{ anchored = 1; @@ -37983,13 +37833,6 @@ /obj/structure/lattice/catwalk, /turf/space, /area/space) -"dOM" = ( -/obj/effect/decal/warning_stripes/northwest, -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 4 - }, -/turf/simulated/floor/plasteel, -/area/engineering/engine) "dON" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/hidden{ @@ -38362,16 +38205,6 @@ }, /turf/simulated/floor/plating, /area/engineering/engine) -"dQA" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/effect/decal/warning_stripes/east, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/turf/simulated/floor/plating, -/area/engineering/engine) "dQB" = ( /obj/machinery/light{ dir = 4 @@ -38429,15 +38262,6 @@ icon_state = "neutralfull" }, /area/quartermaster/miningdock) -"dQQ" = ( -/obj/item/twohanded/required/kirbyplants, -/obj/effect/decal/warning_stripes/west, -/obj/machinery/computer/security/telescreen/singularity{ - dir = 8; - pixel_x = -32 - }, -/turf/simulated/floor/plasteel, -/area/engineering/engine) "dQR" = ( /obj/structure/table/reinforced, /obj/item/reagent_containers/food/drinks/bottle/vodka{ @@ -38449,32 +38273,6 @@ icon_state = "brown" }, /area/quartermaster/storage) -"dQS" = ( -/obj/effect/landmark/start/engineer, -/turf/simulated/floor/plasteel{ - icon_state = "yellowfull" - }, -/area/engineering/engine) -"dQT" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/hologram/holopad, -/obj/effect/decal/warning_stripes/yellow/hollow, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/turf/simulated/floor/plasteel{ - icon_state = "neutralfull" - }, -/area/engineering/engine) "dQV" = ( /turf/simulated/floor/plasteel{ dir = 9; @@ -38510,36 +38308,6 @@ /obj/effect/decal/cleanable/blood, /turf/simulated/floor/plating, /area/maintenance/asmaint2) -"dRd" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/floor/plasteel{ - icon_state = "neutralfull" - }, -/area/storage/secure) -"dRe" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 10 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/floor/plasteel{ - icon_state = "neutralfull" - }, -/area/storage/secure) "dRf" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -38639,14 +38407,6 @@ icon_state = "dark" }, /area/chapel/office) -"dRw" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/floor/plasteel{ - icon_state = "neutralfull" - }, -/area/storage/secure) "dRB" = ( /obj/machinery/alarm{ dir = 4; @@ -38861,21 +38621,6 @@ }, /turf/simulated/floor/plasteel, /area/crew_quarters/locker/locker_toilet) -"dSy" = ( -/obj/effect/decal/warning_stripes/east, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/turf/simulated/floor/plating, -/area/engineering/engine) -"dSz" = ( -/obj/effect/decal/warning_stripes/yellow, -/obj/machinery/door/poddoor/preopen{ - id_tag = "Singularity"; - name = "Singularity Blast Doors" - }, -/turf/simulated/floor/plasteel, -/area/engineering/engine) "dSA" = ( /obj/item/radio/intercom{ pixel_x = -28 @@ -38890,13 +38635,6 @@ /obj/item/flashlight/lamp, /turf/simulated/floor/plating, /area/maintenance/library) -"dSC" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 4 - }, -/obj/effect/decal/warning_stripes/southwest, -/turf/simulated/floor/plasteel, -/area/engineering/engine) "dSD" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -39356,19 +39094,6 @@ }, /turf/simulated/floor/plasteel, /area/quartermaster/miningdock) -"dUA" = ( -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/warning_stripes/south, -/turf/simulated/floor/plating, -/area/engineering/engine) "dUC" = ( /obj/structure/cable/yellow{ d1 = 1; @@ -39733,13 +39458,6 @@ icon_state = "green" }, /area/hydroponics) -"dVW" = ( -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/obj/effect/decal/warning_stripes/northwest, -/turf/simulated/floor/plating, -/area/engineering/engine) "dVX" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -40166,16 +39884,6 @@ icon_state = "white" }, /area/medical/medbay) -"dXn" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/obj/effect/decal/warning_stripes/north, -/turf/simulated/floor/plating, -/area/engineering/engine) "dXo" = ( /obj/structure/cable/yellow{ d1 = 2; @@ -41895,6 +41603,14 @@ icon_state = "whitepurple" }, /area/medical/research/restroom) +"eki" = ( +/obj/machinery/door/window/eastleft{ + dir = 1; + req_access = list(10) + }, +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plasteel, +/area/engineering/engine) "ekj" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/disposalpipe/segment, @@ -42829,6 +42545,13 @@ }, /turf/simulated/floor/wood/fancy/light, /area/crew_quarters/courtroom) +"exf" = ( +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/effect/decal/warning_stripes/northwest, +/turf/simulated/floor/plating, +/area/engineering/engine) "exh" = ( /obj/machinery/door/airlock/maintenance{ req_access = list(47) @@ -43084,6 +42807,18 @@ }, /turf/simulated/floor/carpet, /area/maintenance/tourist) +"eAh" = ( +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/decal/warning_stripes/north, +/turf/simulated/floor/plating, +/area/engineering/engine) "eAm" = ( /obj/machinery/camera/motion{ c_tag = "Minisat AI Core North"; @@ -44045,16 +43780,6 @@ }, /turf/simulated/floor/plasteel, /area/atmos) -"eLU" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/effect/decal/warning_stripes/south, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/plasteel, -/area/engineering/engine) "eMg" = ( /obj/machinery/door/airlock/glass{ name = "Cabin" @@ -44960,14 +44685,6 @@ }, /turf/simulated/floor/plasteel, /area/security/main) -"eWl" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 1 - }, -/turf/simulated/floor/plasteel{ - icon_state = "neutralfull" - }, -/area/engineering/engine) "eWs" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -46265,6 +45982,13 @@ icon_state = "grimy" }, /area/hallway/secondary/entry/lounge) +"fme" = ( +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/structure/lattice/catwalk, +/turf/space, +/area/space) "fmw" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -46845,16 +46569,6 @@ }, /turf/simulated/floor/plasteel, /area/quartermaster/office) -"fui" = ( -/obj/structure/cable/yellow{ - icon_state = "0-8" - }, -/obj/machinery/power/smes{ - charge = 2e+006 - }, -/obj/effect/decal/warning_stripes/yellow/hollow, -/turf/simulated/floor/plasteel, -/area/engineering/engine) "fuj" = ( /obj/structure/chair/comfy/brown{ dir = 8 @@ -47090,6 +46804,18 @@ /obj/item/clothing/head/welding, /turf/simulated/floor/bluegrid, /area/tcommsat/chamber) +"fxD" = ( +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/structure/lattice/catwalk, +/turf/space, +/area/space) "fxR" = ( /obj/effect/decal/warning_stripes/red/hollow, /obj/structure/table/reinforced, @@ -47184,15 +46910,6 @@ icon_state = "red" }, /area/security/customs) -"fyJ" = ( -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/toxins/sm_test_chamber) "fzv" = ( /obj/structure/cable{ icon_state = "2-4" @@ -47924,24 +47641,6 @@ }, /turf/space, /area/turret_protected/ai) -"fId" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor{ - id_tag = "engstorage"; - name = "Secure Storage Blast Doors" - }, -/obj/effect/decal/warning_stripes/west, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/floor/plasteel, -/area/storage/secure) "fIg" = ( /obj/machinery/light/small{ dir = 1 @@ -48007,6 +47706,18 @@ }, /turf/simulated/wall/r_wall, /area/tcommsat/chamber) +"fIM" = ( +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/lattice/catwalk, +/turf/space, +/area/space) "fIS" = ( /obj/machinery/light/small{ dir = 8 @@ -48450,14 +48161,6 @@ icon_state = "neutralfull" }, /area/engineering/engine) -"fPD" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "yellowfull" - }, -/area/engineering/engine) "fPF" = ( /obj/structure/closet/secure_closet/security, /obj/effect/decal/warning_stripes/red/hollow, @@ -48517,13 +48220,6 @@ }, /turf/simulated/floor/plating, /area/maintenance/fpmaint) -"fQv" = ( -/obj/effect/decal/warning_stripes/west, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/turf/simulated/floor/plasteel, -/area/engineering/engine) "fQD" = ( /obj/structure/chair/comfy/red{ dir = 4 @@ -49391,6 +49087,14 @@ /obj/item/radio/beacon/engine/tesling, /turf/simulated/floor/plating/airless, /area/space) +"fZE" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "yellowfull" + }, +/area/engineering/engine) "fZK" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on, /turf/simulated/floor/carpet/royalblack, @@ -49710,13 +49414,6 @@ icon_state = "wood-broken3" }, /area/maintenance/kitchen) -"geb" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "yellow" - }, -/area/engineering/engine) "geg" = ( /obj/machinery/newscaster{ pixel_y = 30 @@ -50279,20 +49976,6 @@ }, /turf/simulated/floor/plating, /area/maintenance/asmaint3) -"gmI" = ( -/obj/machinery/camera{ - c_tag = "Engine Room South"; - dir = 1; - network = list("Engineering","SS13") - }, -/obj/effect/decal/warning_stripes/south, -/obj/structure/window/reinforced{ - dir = 8 - }, -/mob/living/simple_animal/possum/Poppy, -/obj/structure/bed/dogbed/pet, -/turf/simulated/floor/plasteel, -/area/engineering/engine) "gmO" = ( /turf/simulated/floor/plasteel{ icon_state = "redfull" @@ -50446,21 +50129,6 @@ /obj/machinery/light/small, /turf/simulated/floor/plating, /area/maintenance/asmaint3) -"goI" = ( -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/obj/structure/lattice/catwalk, -/turf/space, -/area/space) "goM" = ( /obj/structure/flora/grass/jungle, /turf/simulated/floor/grass, @@ -50807,6 +50475,16 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plating, /area/maintenance/asmaint4) +"gtz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/cable, +/obj/machinery/power/apc{ + dir = 4; + pixel_x = 26 + }, +/turf/simulated/floor/plasteel, +/area/storage/secure) "gtC" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/manifold/hidden{ @@ -51247,6 +50925,13 @@ icon_state = "grimy" }, /area/chapel/office) +"gzM" = ( +/obj/effect/decal/warning_stripes/northeastcorner, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/turf/simulated/floor/plasteel, +/area/engineering/engine) "gzO" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/window/reinforced{ @@ -51272,25 +50957,6 @@ /obj/effect/decal/warning_stripes/south, /turf/simulated/floor/plasteel, /area/toxins/storage) -"gzX" = ( -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/effect/decal/warning_stripes/west, -/obj/machinery/door/poddoor/preopen{ - id_tag = "Singularity"; - name = "Singularity Blast Doors" - }, -/turf/simulated/floor/plating, -/area/engineering/engine) "gAB" = ( /obj/effect/spawner/window/reinforced, /obj/structure/disposalpipe/segment, @@ -51550,14 +51216,6 @@ }, /turf/simulated/floor/plating, /area/toxins/xenobiology) -"gDQ" = ( -/obj/structure/grille, -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/obj/effect/decal/warning_stripes/southwest, -/turf/simulated/floor/plating/airless, -/area/engineering/engine) "gDV" = ( /obj/machinery/alarm{ dir = 1; @@ -52968,6 +52626,20 @@ icon_state = "dark" }, /area/turret_protected/ai) +"gQU" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/sign/fire{ + pixel_x = 32 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/storage/secure) "gQV" = ( /obj/structure/grille, /turf/simulated/floor/plating, @@ -53552,6 +53224,24 @@ icon_state = "white" }, /area/medical/medbay) +"gYo" = ( +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/engine) "gYp" = ( /obj/effect/spawner/window/reinforced, /turf/simulated/floor/plating, @@ -54012,6 +53702,13 @@ icon_state = "whitebluefull" }, /area/medical/reception) +"hfl" = ( +/obj/effect/decal/warning_stripes/northwest, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/plasteel, +/area/engineering/engine) "hfp" = ( /obj/effect/spawner/window/reinforced/plasma, /obj/structure/cable, @@ -54114,6 +53811,12 @@ }, /turf/simulated/floor/plating, /area/security/warden) +"hgP" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/plasteel, +/area/engineering/engine) "hgQ" = ( /obj/structure/table, /obj/item/folder/yellow, @@ -55581,6 +55284,15 @@ /obj/effect/decal/warning_stripes/southwestcorner, /turf/simulated/floor/plating, /area/maintenance/disposal) +"hAy" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/engineering/engine) "hAC" = ( /obj/machinery/atmospherics/pipe/manifold/visible{ desc = "Труба содержит газ для обработки и после возвращает его обратно в трубу смешивания"; @@ -56224,6 +55936,21 @@ }, /turf/simulated/floor/plasteel, /area/hallway/secondary/exit) +"hJr" = ( +/obj/machinery/power/terminal, +/obj/effect/decal/warning_stripes/south, +/obj/structure/cable/yellow, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/turf/simulated/floor/plasteel, +/area/engineering/controlroom) "hJA" = ( /obj/machinery/computer/arcade, /turf/simulated/floor/carpet, @@ -56785,6 +56512,16 @@ }, /turf/simulated/floor/wood/fancy/light, /area/crew_quarters/courtroom) +"hPZ" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/decal/warning_stripes/south, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel, +/area/engineering/engine) "hQg" = ( /obj/structure/cable{ icon_state = "1-2" @@ -57591,6 +57328,13 @@ icon_state = "caution" }, /area/maintenance/asmaint4) +"iaH" = ( +/obj/effect/decal/warning_stripes/west, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/engineering/engine) "ibj" = ( /obj/structure/cable{ icon_state = "0-8" @@ -59021,6 +58765,18 @@ /obj/effect/spawner/lootdrop/maintenance, /turf/simulated/floor/plating, /area/maintenance/fpmaint) +"isc" = ( +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/structure/lattice/catwalk, +/turf/space, +/area/space) "iso" = ( /obj/structure/chair{ dir = 4 @@ -59557,6 +59313,15 @@ }, /turf/simulated/floor/carpet, /area/crew_quarters/courtroom) +"izn" = ( +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/toxins/sm_test_chamber) "izC" = ( /obj/structure/rack{ dir = 8; @@ -61440,15 +61205,6 @@ /obj/effect/decal/warning_stripes/northwest, /turf/simulated/floor/plating, /area/maintenance/portsolar) -"iYh" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/floor/plasteel{ - icon_state = "neutralfull" - }, -/area/storage/secure) "iYl" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -61701,6 +61457,17 @@ icon_state = "purple" }, /area/quartermaster/miningdock) +"jbg" = ( +/obj/structure/grille, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/effect/decal/warning_stripes/south, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plating/airless, +/area/engineering/engine) "jby" = ( /obj/effect/decal/warning_stripes/south, /turf/simulated/floor/plasteel, @@ -61929,6 +61696,20 @@ }, /turf/simulated/floor/plating, /area/maintenance/engineering) +"jeu" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes/east, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/storage/secure) "jev" = ( /obj/structure/chair/comfy/red{ dir = 8 @@ -62104,22 +61885,6 @@ /obj/structure/grille, /turf/space, /area/space) -"jhc" = ( -/obj/effect/decal/warning_stripes/southeast, -/obj/machinery/r_n_d/circuit_imprinter{ - pixel_x = -1; - pixel_y = 3 - }, -/obj/machinery/requests_console{ - department = "Science"; - departmentType = 2; - name = "Research Request Console"; - pixel_x = 30 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/toxins/lab) "jhm" = ( /obj/effect/decal/warning_stripes/southwest, /turf/simulated/floor/plasteel, @@ -62526,6 +62291,26 @@ icon_state = "solarpanel" }, /area/solar/starboard) +"jmF" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/simulated/floor/plasteel{ + icon_state = "purplefull" + }, +/area/medical/research/nhallway) "jmK" = ( /obj/structure/girder, /obj/effect/decal/cleanable/dirt, @@ -66064,21 +65849,6 @@ icon_state = "dark" }, /area/security/permabrig) -"kfr" = ( -/obj/machinery/access_button{ - command = "cycle_exterior"; - frequency = 1379; - master_tag = "engineering_west_airlock"; - name = "exterior access button"; - pixel_x = 20; - pixel_y = 20; - req_access = list(10,13) - }, -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/turf/simulated/floor/plating/airless, -/area/engineering/engine) "kfS" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 5 @@ -66715,6 +66485,13 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/starboard) +"knT" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/decal/warning_stripes/southwest, +/turf/simulated/floor/plasteel, +/area/engineering/engine) "knU" = ( /obj/machinery/door/window/brigdoor{ dir = 2; @@ -68121,20 +67898,6 @@ /obj/effect/spawner/lootdrop/maintenance/double, /turf/simulated/floor/plating, /area/maintenance/trading) -"kHo" = ( -/obj/structure/grille, -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/effect/decal/warning_stripes/north, -/obj/machinery/light, -/turf/simulated/floor/plating/airless, -/area/engineering/engine) "kHz" = ( /obj/structure/cable{ icon_state = "4-8" @@ -68228,6 +67991,19 @@ icon_state = "bar" }, /area/clownoffice) +"kIL" = ( +/obj/machinery/power/apc{ + dir = 1; + pixel_y = 26 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whitepurple" + }, +/area/medical/research/nhallway) "kJi" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/disposalpipe/segment{ @@ -68376,6 +68152,13 @@ icon_state = "chapel" }, /area/chapel/main) +"kKE" = ( +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/structure/lattice/catwalk, +/turf/space, +/area/space) "kKR" = ( /obj/machinery/light/small, /turf/simulated/floor/plasteel{ @@ -68457,6 +68240,22 @@ }, /turf/simulated/floor/plasteel, /area/assembly/robotics) +"kMe" = ( +/obj/effect/decal/warning_stripes/southeast, +/obj/machinery/r_n_d/circuit_imprinter{ + pixel_x = -1; + pixel_y = 3 + }, +/obj/machinery/requests_console{ + department = "Research"; + departmentType = 2; + name = "Research Request Console"; + pixel_x = 30 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/toxins/lab) "kMl" = ( /obj/structure/cable{ icon_state = "4-8" @@ -69287,15 +69086,6 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/wall, /area/toxins/test_chamber) -"kZJ" = ( -/obj/structure/grille, -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/obj/effect/decal/warning_stripes/north, -/obj/machinery/light, -/turf/simulated/floor/plating/airless, -/area/engineering/engine) "kZL" = ( /obj/structure/table/wood, /obj/machinery/status_display{ @@ -72543,6 +72333,24 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/carpet/arcade, /area/crew_quarters/fitness) +"lPI" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor{ + id_tag = "engstorage"; + name = "Secure Storage Blast Doors" + }, +/obj/effect/decal/warning_stripes/west, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/storage/secure) "lPJ" = ( /obj/machinery/atmospherics/unary/vent_pump/on, /obj/machinery/camera{ @@ -72875,6 +72683,21 @@ icon_state = "dark" }, /area/security/permabrig) +"lUn" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/engine) "lUL" = ( /obj/structure/disposalpipe/segment, /turf/simulated/floor/plasteel{ @@ -73202,14 +73025,6 @@ icon_state = "dark" }, /area/security/warden) -"lYo" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/turf/simulated/floor/plasteel{ - icon_state = "neutralfull" - }, -/area/engineering/engine) "lYu" = ( /obj/effect/decal/warning_stripes/southeastcorner, /obj/machinery/light/small{ @@ -74039,6 +73854,15 @@ }, /turf/simulated/wall, /area/quartermaster/office) +"mjo" = ( +/obj/structure/grille, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/effect/decal/warning_stripes/north, +/obj/machinery/light, +/turf/simulated/floor/plating/airless, +/area/engineering/engine) "mjr" = ( /obj/structure/cable{ icon_state = "1-4" @@ -75108,6 +74932,22 @@ icon_state = "whitepurple" }, /area/toxins/test_chamber) +"mvm" = ( +/obj/structure/table/glass, +/obj/item/reagent_containers/applicator/burn, +/obj/item/reagent_containers/glass/bottle/charcoal, +/obj/machinery/requests_console{ + department = "Genetics"; + departmentType = 1; + name = "Genetics Requests Console"; + pixel_x = -2; + pixel_y = 25 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whitepurple" + }, +/area/medical/genetics) "mvI" = ( /obj/machinery/door_timer/cell_1{ dir = 1; @@ -75242,6 +75082,26 @@ /obj/structure/lattice/catwalk, /turf/space, /area/solar/port) +"mxh" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/hologram/holopad, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/engine) "mxr" = ( /obj/structure/table/wood, /obj/effect/decal/cleanable/dirt, @@ -76140,21 +76000,6 @@ icon_state = "whiteblue" }, /area/medical/medbay2) -"mGs" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 8 - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "neutralfull" - }, -/area/engineering/engine) "mGt" = ( /obj/structure/table/glass, /obj/item/storage/toolbox/surgery{ @@ -76343,6 +76188,15 @@ icon_state = "grimy" }, /area/maintenance/library) +"mJD" = ( +/obj/effect/landmark/start/trainee_engineer, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/engine) "mJH" = ( /obj/structure/cable{ icon_state = "1-8" @@ -78169,18 +78023,6 @@ icon_state = "seadeep" }, /area/crew_quarters/fitness) -"nfv" = ( -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/lattice/catwalk, -/turf/space, -/area/space) "nfN" = ( /obj/structure/table/reinforced, /obj/machinery/recharger{ @@ -78761,13 +78603,6 @@ icon_state = "purplecorner" }, /area/medical/virology/lab) -"nml" = ( -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/obj/effect/decal/warning_stripes/southwest, -/turf/simulated/floor/plating, -/area/engineering/engine) "nmp" = ( /obj/structure/disposalpipe/segment, /obj/machinery/door/firedoor, @@ -78794,6 +78629,14 @@ /obj/machinery/computer/security, /turf/simulated/floor/wood, /area/security/hos) +"nnh" = ( +/obj/machinery/atmospherics/pipe/manifold/visible, +/obj/effect/decal/warning_stripes/north, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/turf/simulated/floor/plasteel, +/area/engineering/controlroom) "nnt" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/light/small{ @@ -79427,24 +79270,6 @@ /obj/structure/falsewall, /turf/simulated/floor/plating, /area/maintenance/brig) -"nth" = ( -/obj/structure/cable/yellow{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/turf/simulated/floor/plasteel{ - icon_state = "neutralfull" - }, -/area/engineering/engine) "ntj" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/grille, @@ -79900,13 +79725,6 @@ icon_state = "red" }, /area/security/prison/cell_block/A) -"nAz" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/effect/decal/warning_stripes/west, -/turf/simulated/floor/plating, -/area/engineering/engine) "nAA" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on, /obj/machinery/light{ @@ -80058,6 +79876,14 @@ /obj/structure/girder, /turf/simulated/floor/plating, /area/maintenance/asmaint4) +"nCi" = ( +/obj/effect/decal/warning_stripes/yellow, +/obj/machinery/door/poddoor/preopen{ + id_tag = "Singularity"; + name = "Singularity Blast Doors" + }, +/turf/simulated/floor/plasteel, +/area/engineering/engine) "nCm" = ( /obj/machinery/firealarm{ dir = 8; @@ -80465,29 +80291,24 @@ icon_state = "neutralfull" }, /area/engineering/gravitygenerator) -"nGC" = ( -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" +"nGs" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/hologram/holopad, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 }, -/obj/structure/cable/yellow{ - icon_state = "2-4" +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 }, -/obj/structure/lattice/catwalk, -/turf/space, -/area/space) -"nGG" = ( -/obj/machinery/vending/autodrobe, -/obj/machinery/camera{ - c_tag = "Mime Office"; - dir = 8 +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/cable{ + icon_state = "4-8" }, /turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "tranquillite" + icon_state = "neutralfull" }, -/area/mimeoffice) +/area/storage/secure) "nGI" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -80510,6 +80331,13 @@ icon_state = "white" }, /area/toxins/lab) +"nGT" = ( +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/effect/decal/warning_stripes/southeastcorner, +/turf/simulated/floor/plasteel, +/area/engineering/engine) "nGY" = ( /obj/structure/particle_accelerator/particle_emitter/right{ dir = 8 @@ -83291,17 +83119,6 @@ icon_state = "neutralcorner" }, /area/bridge/vip) -"oqc" = ( -/obj/structure/grille, -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/obj/effect/decal/warning_stripes/south, -/obj/machinery/light{ - dir = 1 - }, -/turf/simulated/floor/plating/airless, -/area/engineering/engine) "oqp" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -83496,6 +83313,23 @@ }, /turf/simulated/floor/plating, /area/maintenance/disposal) +"osi" = ( +/obj/effect/decal/warning_stripes/southwestcorner, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/engine, +/area/toxins/sm_test_chamber) "osl" = ( /obj/machinery/recharge_station, /turf/simulated/floor/plasteel{ @@ -83823,6 +83657,14 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plating, /area/maintenance/asmaint4) +"owx" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/storage/secure) "owB" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -83892,6 +83734,14 @@ icon_state = "wood-broken" }, /area/maintenance/asmaint4) +"oya" = ( +/obj/structure/grille, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/effect/decal/warning_stripes/southwest, +/turf/simulated/floor/plating/airless, +/area/engineering/engine) "oyq" = ( /obj/structure/cable{ icon_state = "1-8" @@ -84316,19 +84166,6 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/fpmaint) -"oBM" = ( -/obj/machinery/camera{ - c_tag = "Research Central Hallway"; - network = list("Research","SS13") - }, -/obj/machinery/alarm{ - pixel_y = 22 - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "whitepurple" - }, -/area/medical/research/nhallway) "oCc" = ( /obj/effect/spawner/window/reinforced, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -84401,6 +84238,20 @@ icon_state = "dark" }, /area/crew_quarters/fitness) +"oDd" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "yellowfull" + }, +/area/engineering/engine) "oDk" = ( /obj/structure/cable{ icon_state = "1-2" @@ -84423,6 +84274,22 @@ }, /turf/simulated/floor/engine, /area/engineering/controlroom) +"oDt" = ( +/obj/structure/grille, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/decal/warning_stripes/south, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plating/airless, +/area/engineering/engine) "oDx" = ( /obj/machinery/camera/motion{ c_tag = "Vault"; @@ -85052,6 +84919,13 @@ icon_state = "whiteblue" }, /area/medical/medbay2) +"oKO" = ( +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/effect/decal/warning_stripes/southwest, +/turf/simulated/floor/plating, +/area/engineering/engine) "oKQ" = ( /obj/machinery/computer/secure_data, /turf/simulated/floor/plasteel{ @@ -85300,6 +85174,21 @@ icon_state = "chapel" }, /area/chapel/main) +"oOf" = ( +/obj/machinery/access_button{ + command = "cycle_exterior"; + frequency = 1379; + master_tag = "engineering_west_airlock"; + name = "exterior access button"; + pixel_x = 20; + pixel_y = 20; + req_access = list(10,13) + }, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/turf/simulated/floor/plating/airless, +/area/engineering/engine) "oOg" = ( /obj/effect/spawner/window/reinforced, /obj/structure/cable{ @@ -85882,6 +85771,16 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/detectives_office) +"oVt" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/decal/warning_stripes/east, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/engineering/engine) "oVx" = ( /obj/structure/table, /obj/item/storage/fancy/donut_box, @@ -85897,6 +85796,18 @@ icon_state = "red" }, /area/security/main) +"oVB" = ( +/obj/machinery/suit_storage_unit/blueshield, +/obj/machinery/requests_console{ + announcementConsole = 1; + department = "Blueshield"; + departmentType = 5; + name = "Blueshield Requests Console"; + pixel_x = -30; + pixel_y = 4 + }, +/turf/simulated/floor/wood/fancy/light, +/area/blueshield) "oVM" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -85923,26 +85834,6 @@ icon_state = "neutralfull" }, /area/hallway/primary/central/nw) -"oWk" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/turf/simulated/floor/plasteel{ - icon_state = "purplefull" - }, -/area/medical/research/nhallway) "oWp" = ( /obj/machinery/atmospherics/unary/vent_pump/on, /turf/simulated/floor/plasteel{ @@ -86623,6 +86514,13 @@ /obj/item/chair/wood/wings, /turf/simulated/floor/carpet/black, /area/crew_quarters/theatre) +"pfb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/engineering/engine) "pfs" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -87909,13 +87807,18 @@ /obj/effect/spawner/random_spawners/rodent, /turf/simulated/floor/plating, /area/maintenance/garden) -"ptE" = ( -/obj/effect/decal/warning_stripes/northeastcorner, +"ptU" = ( /obj/structure/cable/yellow{ icon_state = "1-4" }, -/turf/simulated/floor/plasteel, -/area/engineering/engine) +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/lattice/catwalk, +/turf/space, +/area/space) "pua" = ( /obj/structure/cable{ icon_state = "4-8" @@ -90371,14 +90274,6 @@ /obj/effect/decal/warning_stripes/east, /turf/simulated/floor/plasteel, /area/assembly/chargebay) -"pUS" = ( -/obj/structure/grille, -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/obj/effect/decal/warning_stripes/northwest, -/turf/simulated/floor/plating/airless, -/area/engineering/engine) "pVa" = ( /turf/simulated/floor/plasteel{ icon_state = "neutralcorner" @@ -90875,6 +90770,18 @@ }, /turf/simulated/floor/plasteel, /area/toxins/launch) +"pZY" = ( +/obj/effect/decal/warning_stripes/east, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel, +/area/engineering/controlroom) "qac" = ( /obj/structure/grille/broken, /turf/simulated/floor/plating, @@ -91959,13 +91866,6 @@ icon_state = "darkred" }, /area/security/interrogation) -"qlZ" = ( -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/obj/structure/lattice/catwalk, -/turf/space, -/area/space) "qme" = ( /obj/structure/table/wood, /obj/structure/window/reinforced{ @@ -94016,15 +93916,6 @@ icon_state = "neutralfull" }, /area/storage/tech) -"qJy" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "yellow" - }, -/area/engineering/engine) "qJB" = ( /obj/effect/spawner/window/reinforced, /obj/structure/cable{ @@ -94126,6 +94017,14 @@ icon_state = "neutralcorner" }, /area/maintenance/asmaint4) +"qKJ" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/engine) "qKK" = ( /obj/machinery/teleport/station, /obj/effect/decal/warning_stripes/south, @@ -94185,14 +94084,6 @@ }, /turf/simulated/floor/plating, /area/security/permahallway) -"qKZ" = ( -/obj/structure/grille, -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/obj/effect/decal/warning_stripes/southeastcorner, -/turf/simulated/floor/plating/airless, -/area/engineering/engine) "qLa" = ( /obj/structure/cable{ icon_state = "4-8" @@ -95056,6 +94947,15 @@ }, /turf/simulated/floor/engine, /area/toxins/test_chamber) +"qVS" = ( +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/plasteel{ + icon_state = "yellowfull" + }, +/area/engineering/controlroom) "qWg" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 6 @@ -95846,14 +95746,6 @@ icon_state = "whitepurple" }, /area/toxins/xenobiology) -"rfz" = ( -/obj/effect/decal/warning_stripes/south, -/obj/item/twohanded/required/kirbyplants, -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/simulated/floor/plasteel, -/area/engineering/engine) "rfA" = ( /obj/structure/table/reinforced, /obj/effect/decal/warning_stripes/yellow/hollow, @@ -96326,6 +96218,12 @@ color = "orange" }, /area/crew_quarters/courtroom) +"rlQ" = ( +/obj/effect/landmark/start/engineer, +/turf/simulated/floor/plasteel{ + icon_state = "yellowfull" + }, +/area/engineering/engine) "rma" = ( /obj/machinery/vending/cola, /turf/simulated/floor/plasteel{ @@ -97729,6 +97627,14 @@ }, /turf/space, /area/space) +"rDo" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/engineering/engine) "rDp" = ( /obj/effect/decal/warning_stripes/southwestcorner, /turf/simulated/floor/plasteel/airless, @@ -98828,6 +98734,20 @@ }, /turf/simulated/floor/plating, /area/engineering/engine) +"rQX" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "yellowfull" + }, +/area/engineering/engine) "rRf" = ( /obj/machinery/embedded_controller/radio/airlock/airlock_controller{ id_tag = "engineering_east_airlock"; @@ -99150,16 +99070,6 @@ }, /turf/simulated/floor/plating, /area/security/prison/cell_block/A) -"rVk" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/warning_stripes/yellow/hollow, -/obj/structure/cable, -/obj/machinery/power/apc{ - dir = 4; - pixel_x = 26 - }, -/turf/simulated/floor/plasteel, -/area/storage/secure) "rVt" = ( /obj/structure/cable{ icon_state = "4-8" @@ -99952,6 +99862,25 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel, /area/maintenance/asmaint4) +"sgj" = ( +/obj/structure/filingcabinet/chestdrawer, +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = -28 + }, +/obj/machinery/requests_console{ + department = "Chemistry"; + departmentType = 2; + name = "Chemistry Requests Console"; + pixel_x = 30 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "whiteyellow" + }, +/area/medical/chemistry) "sgu" = ( /obj/structure/cable{ icon_state = "4-8" @@ -100978,20 +100907,6 @@ icon_state = "dark" }, /area/security/prisonershuttle) -"srT" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/turf/simulated/floor/plasteel{ - icon_state = "yellowfull" - }, -/area/engineering/engine) "srW" = ( /obj/structure/cable{ icon_state = "1-8" @@ -101145,22 +101060,6 @@ icon_state = "whitepurple" }, /area/toxins/explab) -"sui" = ( -/obj/structure/grille, -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/effect/decal/warning_stripes/south, -/obj/machinery/light{ - dir = 1 - }, -/turf/simulated/floor/plating/airless, -/area/engineering/engine) "sum" = ( /obj/structure/table/wood, /obj/item/pen/multi{ @@ -101403,6 +101302,19 @@ }, /turf/simulated/floor/wood/fancy/light, /area/crew_quarters/captain/bedroom) +"sxl" = ( +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes/south, +/turf/simulated/floor/plating, +/area/engineering/engine) "sxp" = ( /turf/simulated/floor/plasteel{ dir = 4; @@ -101953,6 +101865,16 @@ icon_state = "darkred" }, /area/security/execution) +"sDg" = ( +/obj/machinery/vending/autodrobe, +/obj/machinery/camera{ + c_tag = "Clown Office"; + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "bar" + }, +/area/clownoffice) "sDo" = ( /obj/structure/table/reinforced, /obj/machinery/door/window/brigdoor/northleft{ @@ -103078,6 +103000,21 @@ icon_state = "neutralfull" }, /area/bridge/checkpoint/south) +"sSy" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/storage/secure) "sSD" = ( /obj/structure/cable{ icon_state = "4-8" @@ -105194,6 +105131,16 @@ /obj/structure/girder, /turf/simulated/floor/plating, /area/maintenance/consarea_virology) +"ttD" = ( +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/obj/machinery/power/smes{ + charge = 2e+006 + }, +/obj/effect/decal/warning_stripes/yellow/hollow, +/turf/simulated/floor/plasteel, +/area/engineering/engine) "ttY" = ( /obj/structure/table, /obj/item/stack/sheet/cloth/ten, @@ -105418,6 +105365,14 @@ icon_state = "whitehall" }, /area/maintenance/tourist) +"twj" = ( +/obj/structure/grille, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/effect/decal/warning_stripes/northwest, +/turf/simulated/floor/plating/airless, +/area/engineering/engine) "two" = ( /obj/machinery/firealarm{ dir = 4; @@ -105823,6 +105778,20 @@ }, /turf/simulated/floor/plating, /area/maintenance/asmaint2) +"tBz" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/storage/secure) "tBB" = ( /obj/machinery/status_display{ pixel_x = -32 @@ -105968,6 +105937,20 @@ icon_state = "grimy" }, /area/chapel/main) +"tDk" = ( +/obj/machinery/camera{ + c_tag = "Engine Room South"; + dir = 1; + network = list("Engineering","SS13") + }, +/obj/effect/decal/warning_stripes/south, +/obj/structure/window/reinforced{ + dir = 8 + }, +/mob/living/simple_animal/possum/Poppy, +/obj/structure/bed/dogbed/pet, +/turf/simulated/floor/plasteel, +/area/engineering/engine) "tDv" = ( /obj/effect/decal/warning_stripes/south, /obj/machinery/door/airlock/external{ @@ -106062,20 +106045,6 @@ icon_state = "white" }, /area/medical/research/shallway) -"tED" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/floor/plasteel{ - icon_state = "yellowfull" - }, -/area/engineering/engine) "tEE" = ( /obj/structure/table/reinforced, /obj/effect/decal/cleanable/dirt, @@ -107901,6 +107870,19 @@ icon_state = "purple" }, /area/quartermaster/miningdock) +"tXL" = ( +/obj/structure/table/reinforced, +/obj/item/book/manual/engineering_guide{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/book/manual/engineering_particle_accelerator, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/engineering/engine) "tXP" = ( /obj/structure/window/reinforced{ dir = 8 @@ -108138,19 +108120,6 @@ /obj/effect/decal/warning_stripes/yellow/hollow, /turf/simulated/floor/plasteel, /area/toxins/xenobiology) -"ual" = ( -/obj/machinery/power/apc{ - dir = 1; - pixel_y = 26 - }, -/obj/structure/cable{ - icon_state = "0-2" - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "whitepurple" - }, -/area/medical/research/nhallway) "uaF" = ( /obj/machinery/hydroponics/soil, /obj/effect/decal/warning_stripes/yellow, @@ -109230,6 +109199,13 @@ }, /turf/simulated/floor/plating, /area/maintenance/asmaint) +"unX" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/decal/warning_stripes/west, +/turf/simulated/floor/plating, +/area/engineering/engine) "uob" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -110382,16 +110358,6 @@ "uCn" = ( /turf/simulated/wall, /area/maintenance/asmaint) -"uCs" = ( -/obj/machinery/power/terminal{ - dir = 1 - }, -/obj/effect/decal/warning_stripes/northeast, -/obj/structure/cable/yellow{ - icon_state = "0-8" - }, -/turf/simulated/floor/plasteel, -/area/engineering/engine) "uCv" = ( /obj/effect/decal/warning_stripes/red/hollow, /obj/machinery/suit_storage_unit/security, @@ -110919,21 +110885,6 @@ /obj/effect/decal/warning_stripes/south, /turf/simulated/floor/plasteel, /area/engineering/engine) -"uJj" = ( -/obj/machinery/access_button{ - command = "cycle_exterior"; - frequency = 1379; - master_tag = "engineering_east_airlock"; - name = "exterior access button"; - pixel_x = 20; - pixel_y = 20; - req_access = list(10,13) - }, -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/turf/simulated/floor/plating/airless, -/area/engineering/engine) "uJo" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -111052,6 +111003,19 @@ icon_state = "redcorner" }, /area/security/brig) +"uKB" = ( +/obj/structure/bed, +/obj/item/bedsheet/clown, +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "bar" + }, +/area/clownoffice) "uKK" = ( /turf/simulated/floor/plasteel{ dir = 5; @@ -111477,6 +111441,13 @@ }, /turf/simulated/floor/plating, /area/maintenance/asmaint4) +"uPO" = ( +/obj/effect/decal/warning_stripes/east, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/engineering/engine) "uPT" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/light_switch{ @@ -112085,18 +112056,6 @@ icon_state = "neutralcorner" }, /area/hallway/primary/central/ne) -"uXS" = ( -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/effect/decal/warning_stripes/north, -/turf/simulated/floor/plating, -/area/engineering/engine) "uXU" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/table/wood, @@ -112890,15 +112849,6 @@ icon_state = "neutralcorner" }, /area/crew_quarters/locker) -"vhR" = ( -/obj/structure/table/glass, -/obj/item/reagent_containers/applicator/burn, -/obj/item/reagent_containers/glass/bottle/charcoal, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "whitepurple" - }, -/area/medical/genetics) "vhV" = ( /obj/item/twohanded/required/kirbyplants, /obj/effect/decal/warning_stripes/southeast, @@ -114760,18 +114710,6 @@ icon_state = "neutralfull" }, /area/engineering/break_room) -"vCh" = ( -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/effect/decal/warning_stripes/east, -/turf/simulated/floor/plasteel, -/area/engineering/engine) "vCj" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -115469,6 +115407,14 @@ icon_state = "whiteblue" }, /area/medical/medbay) +"vMn" = ( +/obj/structure/grille, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/effect/decal/warning_stripes/southeastcorner, +/turf/simulated/floor/plating/airless, +/area/engineering/engine) "vMS" = ( /obj/structure/chair/office{ dir = 4 @@ -115882,6 +115828,18 @@ }, /turf/space, /area/space) +"vRz" = ( +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/decal/warning_stripes/east, +/turf/simulated/floor/plasteel, +/area/engineering/engine) "vSn" = ( /obj/structure/table/glass, /obj/item/defibrillator/loaded, @@ -116673,18 +116631,6 @@ }, /turf/simulated/floor/plating, /area/security/prisonershuttle) -"wav" = ( -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/lattice/catwalk, -/turf/space, -/area/space) "waC" = ( /obj/structure/disposalpipe/segment{ dir = 10 @@ -116876,19 +116822,6 @@ icon_state = "dark" }, /area/engineering/aienter) -"wcz" = ( -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/obj/effect/decal/warning_stripes/east, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/turf/simulated/floor/plasteel, -/area/engineering/engine) "wcB" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 4 @@ -117213,6 +117146,19 @@ "whO" = ( /turf/simulated/wall/r_wall/coated, /area/crew_quarters/hor) +"whQ" = ( +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/effect/decal/warning_stripes/east, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/turf/simulated/floor/plasteel, +/area/engineering/engine) "wie" = ( /obj/machinery/camera{ c_tag = "Departure Lounge South-West"; @@ -118319,6 +118265,20 @@ icon_state = "neutralcorner" }, /area/crew_quarters/locker) +"wvh" = ( +/obj/structure/grille, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/decal/warning_stripes/north, +/obj/machinery/light, +/turf/simulated/floor/plating/airless, +/area/engineering/engine) "wvA" = ( /obj/item/radio/intercom{ pixel_y = -28 @@ -118768,6 +118728,16 @@ icon_state = "darkredcorners" }, /area/security/warden) +"wAW" = ( +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/decal/warning_stripes/south, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plasteel, +/area/engineering/engine) "wBo" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -118941,6 +118911,19 @@ icon_state = "neutralfull" }, /area/crew_quarters/fitness) +"wDx" = ( +/obj/effect/decal/warning_stripes/east, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/engineering/engine) "wDB" = ( /obj/item/twohanded/required/kirbyplants, /obj/machinery/newscaster{ @@ -120481,14 +120464,6 @@ icon_state = "tranquillite" }, /area/maintenance/kitchen) -"wXm" = ( -/obj/machinery/door/window/eastleft{ - dir = 1; - req_access = list(10) - }, -/obj/effect/decal/warning_stripes/yellow, -/turf/simulated/floor/plasteel, -/area/engineering/engine) "wXn" = ( /obj/item/storage/box/donkpockets, /turf/simulated/floor/plasteel{ @@ -120643,6 +120618,16 @@ icon_state = "dark" }, /area/security/permabrig) +"xaq" = ( +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 4 + }, +/obj/effect/decal/warning_stripes/northeastcorner, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/turf/simulated/floor/plasteel, +/area/engineering/controlroom) "xas" = ( /obj/machinery/firealarm{ dir = 8; @@ -121055,6 +121040,11 @@ }, /turf/simulated/floor/plasteel, /area/toxins/storage) +"xeN" = ( +/obj/effect/decal/warning_stripes/south, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel, +/area/engineering/engine) "xeP" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/coatrack, @@ -121213,6 +121203,14 @@ icon_state = "redcorner" }, /area/security/customs) +"xgj" = ( +/obj/effect/decal/warning_stripes/south, +/obj/item/twohanded/required/kirbyplants, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/plasteel, +/area/engineering/engine) "xgm" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 9 @@ -121239,6 +121237,15 @@ /obj/structure/table/wood, /turf/simulated/floor/carpet, /area/security/detectives_office) +"xgv" = ( +/obj/item/twohanded/required/kirbyplants, +/obj/effect/decal/warning_stripes/west, +/obj/machinery/computer/security/telescreen/singularity{ + dir = 8; + pixel_x = -32 + }, +/turf/simulated/floor/plasteel, +/area/engineering/engine) "xgy" = ( /obj/machinery/gateway{ dir = 1 @@ -121443,13 +121450,6 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/plating, /area/maintenance/engineering) -"xiR" = ( -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/obj/structure/lattice/catwalk, -/turf/space, -/area/space) "xji" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/chair/comfy/beige{ @@ -122013,14 +122013,6 @@ "xqu" = ( /turf/simulated/wall/r_wall, /area/security/range) -"xqC" = ( -/obj/structure/grille, -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/obj/effect/decal/warning_stripes/northeastcorner, -/turf/simulated/floor/plating/airless, -/area/engineering/engine) "xqE" = ( /obj/vehicle/ridden/secway, /turf/simulated/floor/plasteel{ @@ -122333,6 +122325,21 @@ icon_state = "darkblue" }, /area/chapel/main) +"xul" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/storage/secure) "xun" = ( /obj/structure/table, /obj/item/paper_bin, @@ -122666,6 +122673,16 @@ icon_state = "darkblue" }, /area/construction/hallway) +"xwJ" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/effect/decal/warning_stripes/north, +/turf/simulated/floor/plating, +/area/engineering/engine) "xwL" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/lootdrop/maintenance, @@ -125714,13 +125731,6 @@ /obj/effect/spawner/lootdrop/maintenance, /turf/simulated/floor/plating, /area/maintenance/engineering) -"ybT" = ( -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/obj/effect/decal/warning_stripes/southeastcorner, -/turf/simulated/floor/plasteel, -/area/engineering/engine) "ybU" = ( /obj/structure/grille, /obj/effect/decal/warning_stripes/west, @@ -125965,6 +125975,17 @@ "ydS" = ( /turf/simulated/wall, /area/crew_quarters/courtroom) +"ydT" = ( +/obj/machinery/vending/autodrobe, +/obj/machinery/camera{ + c_tag = "Mime Office"; + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "tranquillite" + }, +/area/mimeoffice) "yek" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -144370,7 +144391,7 @@ xXS dON qta pnU -bGW +osi tIx vor cTi @@ -144602,19 +144623,19 @@ bXU cbb rLd aaq -xiR +kKE pnx pnx -dJh +fxD pnx pnx -goI +bJx pnx pnx -nGC +isc pnx pnx -qlZ +fme aaq hdZ cbb @@ -145112,7 +145133,7 @@ coE sPe coE bXU -oqc +jbg qCX lEd aaq @@ -145132,7 +145153,7 @@ efA aaq rfZ pyN -kZJ +mjo bXU wUr pIc @@ -145373,7 +145394,7 @@ bZl cbb lEd coE -wav +fIM dUE coE aaq @@ -145385,7 +145406,7 @@ aaq aaq coE cZc -nfv +ptU coE rfZ cbb @@ -145400,7 +145421,7 @@ cJK lFw uBx tgM -fyJ +izn qbq idK jYB @@ -145627,7 +145648,7 @@ wXY coB bXU keL -gDQ +oya lEd aaq efA @@ -145645,7 +145666,7 @@ dZb efA aaq rfZ -pUS +twj ufl bXU nlR @@ -146144,7 +146165,7 @@ bXU qvF cbb coE -wav +fIM dUE aaq coE @@ -146156,7 +146177,7 @@ acF coE aaq cZc -nfv +ptU coE cbb pBi @@ -146654,7 +146675,7 @@ dgF uSR dnN bXU -qKZ +vMn ffP lEd aaq @@ -146674,7 +146695,7 @@ efA aaq rfZ oak -xqC +ccU bXU ohF nBj @@ -146915,7 +146936,7 @@ bZl cbb lEd coE -wav +fIM dUE coE aaq @@ -146927,7 +146948,7 @@ aaq aaq coE cZc -nfv +ptU coE rfZ cbb @@ -147168,7 +147189,7 @@ sBX dkZ dog bXU -sui +oDt qCX lEd aaq @@ -147188,7 +147209,7 @@ efA aaq rfZ pyN -kHo +wvh bXU aKV pxR @@ -147683,7 +147704,7 @@ uWf dom bXU buf -kfr +oOf kAV aaq bep @@ -147692,7 +147713,7 @@ nsT nsT nsT nsT -ajG +aqk nsT nsT nsT @@ -147701,7 +147722,7 @@ tgT hHu aaq tgf -uJj +dwp gHc bXU dhw @@ -148204,11 +148225,11 @@ cwu cwu cwu cwu -dVW -nAz +exf +unX hWL eQV -nml +oKO cwu cwu cwu @@ -148715,7 +148736,7 @@ wgm bXU rQP mWV -gzX +dmd wNB gcj oON @@ -148725,7 +148746,7 @@ tKz jGo gcj mWV -gzX +dmd wNB rQP bXU @@ -148975,7 +148996,7 @@ tPh dDP jJc tXp -uXS +eAh nnT aIo oFs @@ -149229,14 +149250,14 @@ fPA bZn gHz wUB -nth +gYo pGB pvn -dXn +xwJ pEz dQz pEz -dUA +sxl pvn pGB ejp @@ -149430,13 +149451,13 @@ ccb bHp bdL caN -cvI -cam -cam +bSy +pZY +pZY cDO cfi cPq -cRT +xaq ctK cxV dnz @@ -149483,16 +149504,16 @@ dor bUg mPg cCp -dBp -dCv -eWl -lYo +xeN +tXL +qKJ +rDo dQD bXU dXo -dSy -dQA -dSy +uPO +oVt +uPO dUC bXU fFR @@ -149500,8 +149521,8 @@ tzM tzM tny uyI -fPD -rfz +fZE +xgj bXU hLD qUe @@ -149743,13 +149764,13 @@ eIu dUI dCy tzM -aqe +mJD dQD bXU bXU -dSz +nCi bXU -dSz +nCi bXU bXU dXr @@ -149758,7 +149779,7 @@ mQp eAb uyI eIu -wXm +eki gVN pgt qac @@ -149951,7 +149972,7 @@ tGE cga boL crk -ctV +qVS btC bVk cDV @@ -150000,13 +150021,13 @@ dza dUI dCz egF -qJy +hAy xNt dJD pei -dOM -dQQ -dSC +hfl +xgv +knT dUO dVY vUJ @@ -150015,7 +150036,7 @@ egF nQt uyI dza -gmI +tDk bXU hLD cbC @@ -150257,12 +150278,12 @@ eIu cbc tPh tPh -fQv +iaH tPh tPh tPh rzf -dQS +rlQ dSF tPh tPh @@ -150271,8 +150292,8 @@ tPh tPh tPh cPX -mGs -eLU +lUn +hPZ cCh dVy cbC @@ -150514,12 +150535,12 @@ ryM dXD nkf dXD -srT +oDd dXD nkf dXD qlu -dQT +mxh dSH dXD nkf @@ -150768,15 +150789,15 @@ cnj oQC xMX iFH -ybT +nGT cbj cbj -wcz +whQ cbj cbj -vCh -ptE -tED +vRz +gzM +rQX cpi tPv etT @@ -151031,9 +151052,9 @@ ehG xsj eeG vtm -fui -uCs -cmR +ttD +bKL +wDx cod cpl mDe @@ -151282,15 +151303,15 @@ bWn xnf xSn dzm -cdd -geb -dEs +wAW +pfb +hgP eci iTM utt cpm nqL -fId +lPI nqL cpm mDe @@ -151492,7 +151513,7 @@ aCi tGE cga aDe -cSa +nnh aHc aHo bVk @@ -151547,7 +151568,7 @@ iNf utt wQP rSt -cnB +jeu cof cpn mDe @@ -151804,7 +151825,7 @@ bXU utt wUC dWc -cpo +tBz cqU tZR mDe @@ -152010,7 +152031,7 @@ aFl cul aEn aHe -duO +hJr dzx aOg dLe @@ -152061,7 +152082,7 @@ cbn utt igP dOZ -dRd +sSy cpk csm mDe @@ -152318,7 +152339,7 @@ vWF utt wUC dOZ -dRd +sSy cso cso mDe @@ -152575,7 +152596,7 @@ cij dJU lTF xKq -cmO +nGs cso cpr mDe @@ -152832,7 +152853,7 @@ oZH utt uqq pus -dRe +xul rHz cqX mDe @@ -153089,7 +153110,7 @@ jem utt dNd qFn -dRw +owx dWc kpR mDe @@ -153346,7 +153367,7 @@ eir utt qFn teJ -dRw +owx dWc xvB mDe @@ -153603,7 +153624,7 @@ dkj utt gxS cna -iYh +cHj aAb tEE mDe @@ -153860,8 +153881,8 @@ onj utt jtS coh -cmV -rVk +gQU +gtz ufR mDe smf @@ -157482,9 +157503,9 @@ mAn ipb suf wAv -cOT +duH ddi -oBM +apg oUh dpZ isM @@ -157998,8 +158019,8 @@ cUT cQV aEh uHA -ual -oWk +kIL +jmF dgk iZG kxQ @@ -158937,7 +158958,7 @@ eTZ woa cbs cEJ -cHz +dvO gZH cwA dOY @@ -159194,7 +159215,7 @@ aVS fOa cgR cEJ -nGG +ydT cFQ baG dpg @@ -159708,7 +159729,7 @@ aVS dLf cei ckh -cml +sDg dbu cxA kIA @@ -159965,7 +159986,7 @@ eTZ woa cbs ckh -cnq +uKB bfY bVz gpo @@ -163137,7 +163158,7 @@ dxF hXm ohz cUZ -jhc +kMe pBD wEb daF @@ -165460,7 +165481,7 @@ vec ueo djS dfv -vhR +mvm vkl dvr drE @@ -166691,7 +166712,7 @@ lVo byU bCr pty -crr +oVB tOA iLo bHx @@ -168785,7 +168806,7 @@ dzf pfD cKR cMr -cXs +sgj jsJ dix gra diff --git a/_maps/map_files/celestation/celestation.dmm b/_maps/map_files/celestation/celestation.dmm index 1372e974525..93674e986d9 100644 --- a/_maps/map_files/celestation/celestation.dmm +++ b/_maps/map_files/celestation/celestation.dmm @@ -2201,6 +2201,21 @@ /obj/structure/barricade/wooden, /turf/simulated/floor/plating, /area/maintenance/cele/medbay) +"ath" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/disposalpipe/trunk, +/obj/machinery/conveyor{ + dir = 1; + id = "CargoTransfer" + }, +/obj/structure/disposaloutlet{ + dir = 1; + eject_range = 2 + }, +/turf/simulated/floor/plating, +/area/maintenance/disposal) "atm" = ( /obj/item/radio/intercom{ pixel_y = 28 @@ -7410,16 +7425,6 @@ icon_state = "dark" }, /area/engineering/gravitygenerator) -"bfw" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/machinery/conveyor/inverted{ - dir = 5; - id = "garbage" - }, -/turf/simulated/floor/plating, -/area/maintenance/disposal) "bfB" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -17785,15 +17790,6 @@ /obj/structure/flora/ausbushes/leafybush, /turf/simulated/floor/grass, /area/hallway/secondary/exit) -"cps" = ( -/obj/effect/turf_decal/loading_area{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - dir = 6; - icon_state = "red" - }, -/area/security/checkpoint/south) "cpt" = ( /obj/machinery/firealarm{ dir = 8; @@ -20196,6 +20192,15 @@ }, /turf/simulated/floor/plasteel/white, /area/toxins/xenobiology) +"cGM" = ( +/obj/machinery/requests_console{ + department = "Detective"; + name = "Detective Requests Console"; + pixel_y = -30 + }, +/obj/machinery/photocopier, +/turf/simulated/floor/carpet, +/area/security/detectives_office) "cGY" = ( /obj/machinery/light_switch{ pixel_x = -26 @@ -23639,21 +23644,6 @@ "deL" = ( /turf/simulated/wall/r_wall, /area/toxins/test_area) -"dfl" = ( -/obj/machinery/requests_console{ - department = "Tool Storage"; - name = "Tool Storage Requests Console"; - pixel_y = 30 - }, -/obj/structure/table, -/obj/item/storage/toolbox/electrical, -/obj/item/multitool, -/obj/item/stack/cable_coil, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "neutral" - }, -/area/storage/primary) "dfq" = ( /obj/structure/flora/ausbushes/genericbush, /obj/machinery/light{ @@ -29520,24 +29510,6 @@ icon_state = "neutralfull" }, /area/janitor) -"eln" = ( -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/window/reinforced, -/obj/structure/sign/directions/floor/alt{ - dir = 6; - pixel_y = 32 - }, -/obj/structure/disposaloutlet{ - dir = 8; - eject_range = 2 - }, -/turf/simulated/floor/plating, -/area/maintenance/disposal) "elp" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable/orange{ @@ -33317,6 +33289,17 @@ /obj/structure/ladder, /turf/simulated/floor/glass/reinforced, /area/engineering/gravitygenerator) +"eZF" = ( +/obj/machinery/requests_console{ + department = "Locker Room"; + name = "Locker Room Requests Console"; + pixel_x = -32 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/crew_quarters/locker) "eZH" = ( /turf/simulated/wall/r_wall, /area/teleporter/quantum/docking) @@ -40500,6 +40483,17 @@ icon_state = "navybluealt" }, /area/teleporter/quantum/docking) +"gpO" = ( +/obj/structure/closet/l3closet/janitor, +/obj/item/reagent_containers/spray/cleaner/janitor, +/obj/machinery/requests_console{ + department = "Janitorial"; + departmentType = 1; + name = "Janitor Requests Console"; + pixel_x = -30 + }, +/turf/simulated/floor/plasteel, +/area/janitor) "gpR" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 10 @@ -44299,30 +44293,6 @@ /obj/effect/spawner/lootdrop/maintenance/double, /turf/simulated/floor/plating/asteroid, /area/maintenance/asmaint5) -"hbq" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/universal{ - dir = 4 - }, -/obj/structure/table/reinforced{ - layer = 2.5 - }, -/obj/machinery/door_control{ - desc = "A remote control-switch to lock down the prison wing's blast doors"; - id = "Prison Gate"; - name = "Prison Wing Lockdown"; - pixel_x = -7; - req_access = list(2) - }, -/obj/machinery/door_control{ - id = "Secure Gate"; - name = "Security Lockdown"; - pixel_x = 7; - req_access = list(2) - }, -/turf/simulated/floor/plasteel{ - icon_state = "darkred" - }, -/area/security/warden) "hbt" = ( /turf/simulated/floor/plasteel{ icon_state = "neutralcorner" @@ -45999,6 +45969,21 @@ }, /turf/simulated/floor/carpet/royalblack, /area/ntrep) +"hrJ" = ( +/obj/structure/cable/orange{ + icon_state = "1-2" + }, +/obj/machinery/requests_console{ + department = "Engineering"; + departmentType = 3; + name = "Engineering Requests Console"; + pixel_x = -30 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkyellow" + }, +/area/engineering/engine/smes) "hrL" = ( /obj/structure/cable/orange{ icon_state = "4-8" @@ -48297,6 +48282,21 @@ }, /turf/simulated/floor/plating/airless, /area/solar/auxstarboard) +"hPF" = ( +/obj/effect/turf_decal/loading_area{ + dir = 4 + }, +/obj/machinery/requests_console{ + department = "Security"; + departmentType = 5; + name = "Security Requests Console"; + pixel_y = -30 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "red" + }, +/area/security/checkpoint/south) "hPG" = ( /obj/structure/closet, /obj/effect/spawner/lootdrop/maintenance, @@ -50470,17 +50470,6 @@ icon_state = "dark" }, /area/medical/research) -"ini" = ( -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/machinery/conveyor/inverted{ - dir = 10; - id = "garbage" - }, -/turf/simulated/floor/plating, -/area/maintenance/disposal) "ink" = ( /turf/simulated/floor/plasteel{ dir = 1; @@ -51894,12 +51883,6 @@ }, /turf/simulated/floor/plasteel/dark, /area/toxins/server) -"iAb" = ( -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "neutralcorner" - }, -/area/crew_quarters/locker) "iAe" = ( /obj/structure/table, /obj/machinery/cell_charger, @@ -52291,14 +52274,6 @@ }, /turf/simulated/floor/plating, /area/security/prisonlockers) -"iEd" = ( -/obj/structure/sign/beautyplaque{ - pixel_y = 32; - name = "Благодарственное Письмо Для Бригадира Команды Архитекторов Селестии"; - desc = "Важное Уточнение! Рабочие пожелали оставаться анонимными, поэтому, обойдёмся их прозвищами. За выдающиеся успехи в области инженерного менеджмента, а также успешное проектирование Селестии по всем стандартам НаноТрейзен. Благодарим вас за труд, Saad_f603. Слава НаноТрейзен!" - }, -/turf/simulated/floor/carpet/black, -/area/bridge) "iEf" = ( /obj/machinery/bodyscanner, /turf/simulated/floor/plasteel{ @@ -53222,19 +53197,6 @@ }, /turf/simulated/floor/carpet/royalblack, /area/crew_quarters/bar) -"iNt" = ( -/obj/machinery/requests_console{ - department = "Science"; - departmentType = 2; - name = "Science Requests Console"; - pixel_x = -30 - }, -/obj/machinery/photocopier, -/turf/simulated/floor/plasteel{ - dir = 9; - icon_state = "whitepurple" - }, -/area/toxins/lab) "iNx" = ( /obj/machinery/atmospherics/pipe/simple/hidden/universal{ dir = 4 @@ -55183,21 +55145,6 @@ icon_state = "navyblue" }, /area/turret_protected/aisat_interior/secondary) -"jfp" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/disposalpipe/trunk, -/obj/machinery/conveyor{ - dir = 1; - id = "CargoTransfer" - }, -/obj/structure/disposaloutlet{ - dir = 1; - eject_range = 2 - }, -/turf/simulated/floor/plating, -/area/maintenance/disposal) "jfE" = ( /obj/structure/bed, /obj/item/bedsheet, @@ -59273,6 +59220,19 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/aisat/atmospherics) +"jWE" = ( +/obj/machinery/requests_console{ + department = "Research"; + departmentType = 2; + name = "Research Requests Console"; + pixel_x = -30 + }, +/obj/machinery/photocopier, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "whitepurple" + }, +/area/toxins/lab) "jWF" = ( /obj/structure/railing/corner{ dir = 4 @@ -59313,6 +59273,24 @@ icon_state = "whiteyellowfull" }, /area/medical/chemistry) +"jWV" = ( +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced, +/obj/structure/sign/directions/floor/alt{ + dir = 6; + pixel_y = 32 + }, +/obj/structure/disposaloutlet{ + dir = 8; + eject_range = 2 + }, +/turf/simulated/floor/plating, +/area/maintenance/disposal) "jWW" = ( /turf/simulated/floor/plasteel{ dir = 4; @@ -62071,6 +62049,23 @@ icon_state = "darkred" }, /area/security/podbay) +"kxt" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/light_switch{ + pixel_x = 26 + }, +/obj/machinery/requests_console{ + department = "Science"; + departmentType = 2; + name = "Science Requests Console"; + pixel_y = 30 + }, +/turf/simulated/floor/plasteel, +/area/toxins/launch) "kxC" = ( /obj/structure/chair/comfy{ dir = 8 @@ -62507,6 +62502,22 @@ icon_state = "grimy" }, /area/security/detectives_office) +"kCl" = ( +/obj/structure/chair/office/dark{ + dir = 8 + }, +/obj/effect/landmark/start/atmospheric, +/obj/machinery/requests_console{ + department = "Atmospherics"; + departmentType = 3; + name = "Atmospherics Requests Console"; + pixel_y = 30 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "caution" + }, +/area/atmos/control) "kCm" = ( /obj/structure/railing{ dir = 4 @@ -62890,16 +62901,6 @@ icon_state = "neutralfull" }, /area/atmos/distribution) -"kEQ" = ( -/obj/machinery/light_switch{ - pixel_y = 26 - }, -/obj/structure/table/reinforced, -/obj/item/reagent_containers/food/snacks/mint, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/crew_quarters/kitchen) "kEV" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 10 @@ -63046,6 +63047,16 @@ icon_state = "darkred" }, /area/security/warden) +"kGA" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/conveyor/inverted{ + dir = 5; + id = "garbage" + }, +/turf/simulated/floor/plating, +/area/maintenance/disposal) "kGH" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -65521,17 +65532,6 @@ }, /turf/simulated/floor/carpet/blue, /area/blueshield) -"lgC" = ( -/obj/machinery/disposal, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/obj/effect/decal/warning_stripes/yellow/hollow, -/obj/machinery/light_switch{ - pixel_x = 26 - }, -/turf/simulated/floor/plasteel, -/area/toxins/launch) "lgJ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -69704,21 +69704,6 @@ /obj/structure/flora/ausbushes/ywflowers, /turf/simulated/floor/grass, /area/hallway/primary/fore) -"lYL" = ( -/obj/structure/table/glass, -/obj/item/reagent_containers/applicator/burn, -/obj/item/reagent_containers/glass/bottle/charcoal, -/obj/machinery/requests_console{ - department = "Medbay"; - departmentType = 1; - name = "Genetics Requests Console"; - pixel_y = 30 - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "whitepurple" - }, -/area/medical/genetics) "lYT" = ( /obj/structure/table, /obj/item/reagent_containers/food/snacks/fried_vox, @@ -70695,18 +70680,6 @@ icon_state = "dark" }, /area/engineering/engine/smes) -"miy" = ( -/obj/structure/table/wood, -/obj/item/paper_bin{ - pixel_x = -3; - pixel_y = 7 - }, -/obj/item/pen, -/obj/machinery/atmospherics/pipe/multiz{ - dir = 4 - }, -/turf/simulated/floor/carpet/black, -/area/chapel/office) "miQ" = ( /obj/machinery/camera/motion{ c_tag = "Minisat Teleporter Room"; @@ -71256,15 +71229,6 @@ }, /turf/simulated/floor/carpet/royalblack, /area/crew_quarters/captain/bedroom) -"mor" = ( -/obj/structure/cable/orange{ - icon_state = "1-2" - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "darkyellow" - }, -/area/engineering/engine/smes) "moz" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 4 @@ -82676,13 +82640,6 @@ /obj/structure/transit_tube/crossing, /turf/space/openspace, /area/space) -"oDP" = ( -/obj/structure/closet/secure_closet/security, -/turf/simulated/floor/plasteel{ - dir = 9; - icon_state = "darkred" - }, -/area/security/checkpoint) "oDQ" = ( /obj/structure/cable/orange{ icon_state = "1-2" @@ -89612,6 +89569,19 @@ }, /turf/simulated/floor/plasteel, /area/security/prisonershuttle) +"pPm" = ( +/obj/structure/closet/secure_closet/security, +/obj/machinery/requests_console{ + department = "Security"; + departmentType = 5; + name = "Security Requests Console"; + pixel_y = 30 + }, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "darkred" + }, +/area/security/checkpoint) "pPn" = ( /obj/structure/closet/crate, /obj/effect/spawner/lootdrop/maintenance, @@ -96208,6 +96178,21 @@ /obj/effect/spawner/random_spawners/rock_50, /turf/simulated/floor/plating/asteroid, /area/maintenance/port) +"rhu" = ( +/obj/machinery/requests_console{ + department = "Primary Tool Storage"; + name = "Primary Tool Storage Requests Console"; + pixel_y = 30 + }, +/obj/structure/table, +/obj/item/storage/toolbox/electrical, +/obj/item/multitool, +/obj/item/stack/cable_coil, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "neutral" + }, +/area/storage/primary) "rhy" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 4 @@ -96442,6 +96427,24 @@ icon_state = "darkyellow" }, /area/atmos) +"rjn" = ( +/obj/structure/table/wood, +/obj/item/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/pen, +/obj/machinery/atmospherics/pipe/multiz{ + dir = 4 + }, +/obj/machinery/requests_console{ + department = "Chapel"; + departmentType = 2; + name = "Chapel Requests Console"; + pixel_x = -30 + }, +/turf/simulated/floor/carpet/black, +/area/chapel/office) "rjo" = ( /turf/simulated/wall/r_wall, /area/maintenance/ai) @@ -106754,6 +106757,22 @@ /obj/effect/spawner/random_spawners/grille_50, /turf/simulated/floor/plating, /area/maintenance/cele/medbay) +"tiS" = ( +/obj/machinery/light_switch{ + pixel_y = 26 + }, +/obj/structure/table/reinforced, +/obj/item/reagent_containers/food/snacks/mint, +/obj/machinery/requests_console{ + department = "Kitchen"; + departmentType = 2; + name = "Kitchen Requests Console"; + pixel_x = -30 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/crew_quarters/kitchen) "tiY" = ( /obj/structure/table/wood, /obj/machinery/photocopier/faxmachine/longrange{ @@ -108277,6 +108296,17 @@ icon_state = "whiteblue" }, /area/medical/patients_rooms) +"txd" = ( +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/conveyor/inverted{ + dir = 10; + id = "garbage" + }, +/turf/simulated/floor/plating, +/area/maintenance/disposal) "txf" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -117356,6 +117386,14 @@ }, /turf/simulated/floor/engine, /area/toxins/xenobiology) +"viZ" = ( +/obj/structure/sign/beautyplaque{ + desc = "Важное Уточнение! Рабочие пожелали оставаться анонимными, поэтому, обойдёмся их прозвищами. За выдающиеся успехи в области инженерного менеджмента, а также успешное проектирование Селестии по всем стандартам НаноТрейзен. Благодарим вас за труд, Saad_f603. Слава НаноТрейзен!"; + name = "Благодарственное Письмо Для Бригадира Команды Архитекторов Селестии"; + pixel_y = 32 + }, +/turf/simulated/floor/carpet/black, +/area/bridge) "vje" = ( /turf/simulated/floor/plasteel{ dir = 8; @@ -118778,14 +118816,6 @@ icon_state = "dark" }, /area/hallway/primary/fore) -"vyB" = ( -/obj/machinery/requests_console{ - name = "Detective Requests Console"; - pixel_y = -30 - }, -/obj/machinery/photocopier, -/turf/simulated/floor/carpet, -/area/security/detectives_office) "vyQ" = ( /obj/structure/table, /obj/item/multitool, @@ -119096,6 +119126,21 @@ icon_state = "whitepurple" }, /area/toxins/hallway) +"vBG" = ( +/obj/structure/table/glass, +/obj/item/reagent_containers/applicator/burn, +/obj/item/reagent_containers/glass/bottle/charcoal, +/obj/machinery/requests_console{ + department = "Genetics"; + departmentType = 1; + name = "Genetics Requests Console"; + pixel_y = 30 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whitepurple" + }, +/area/medical/genetics) "vBM" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 @@ -129305,16 +129350,6 @@ icon_state = "neutral" }, /area/hallway/primary/fore/east) -"xye" = ( -/obj/structure/chair/office/dark{ - dir = 8 - }, -/obj/effect/landmark/start/atmospheric, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "caution" - }, -/area/atmos/control) "xyf" = ( /obj/machinery/door/morgue{ name = "Confession Booth (Chaplain)"; @@ -130124,6 +130159,36 @@ icon_state = "neutralcorner" }, /area/hallway/primary/central) +"xFO" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/universal{ + dir = 4 + }, +/obj/structure/table/reinforced{ + layer = 2.5 + }, +/obj/machinery/door_control{ + desc = "A remote control-switch to lock down the prison wing's blast doors"; + id = "Prison Gate"; + name = "Prison Wing Lockdown"; + pixel_x = -7; + req_access = list(2) + }, +/obj/machinery/door_control{ + id = "Secure Gate"; + name = "Security Lockdown"; + pixel_x = 7; + req_access = list(2) + }, +/obj/machinery/requests_console{ + department = "Warden"; + departmentType = 7; + name = "Warden's Requests Console"; + pixel_y = -30 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/security/warden) "xFQ" = ( /obj/structure/disposalpipe/segment{ dir = 10 @@ -207544,7 +207609,7 @@ olV wha bbD dsd -dfl +rhu gBF jBm baI @@ -207574,7 +207639,7 @@ hQg hna ljI vzB -miy +rjn kTD hHU nor @@ -212243,7 +212308,7 @@ ryZ ryZ wQW wQW -lgC +kxt pEF wLz nWt @@ -213879,7 +213944,7 @@ gSu gcz jns fwp -hbq +xFO rMr pKM mVc @@ -213979,7 +214044,7 @@ ska pkj ska frt -kEQ +tiS ceP vfW chR @@ -216095,7 +216160,7 @@ eOu bwu aBP sxu -iNt +jWE kpW uZc cpy @@ -217249,7 +217314,7 @@ peG gme jEc mNY -vyB +cGM eyQ orm orm @@ -231217,7 +231282,7 @@ cOP nfw cOP bgc -xye +kCl fdb vyQ hYj @@ -235595,7 +235660,7 @@ tjl xYY jBR naw -mor +hrJ wBv klO jfm @@ -237519,7 +237584,7 @@ wVh bjT wFn eQF -iEd +viZ bNj qee cVq @@ -243071,7 +243136,7 @@ dXS ktv rdQ jVG -oDP +pPm qUD gAP gQP @@ -253292,7 +253357,7 @@ lQa gCe hQU mDJ -lYL +vBG wiV laG cPh @@ -255137,7 +255202,7 @@ hod dFU qIy xNH -cps +hPF hod sfL pbn @@ -273334,7 +273399,7 @@ oXc pNI fIm prd -iAb +eZF nuI fGN snX @@ -275635,7 +275700,7 @@ oqZ aeM aeM wMM -kLd +gpO tTe jHd duy @@ -314871,7 +314936,7 @@ orm idQ wNk nuW -jfp +ath cQw spN rlk @@ -316668,7 +316733,7 @@ orm ukB vgw gyR -ini +txd jmP pNB kUl @@ -316925,7 +316990,7 @@ orm cNk cNk cNk -bfw +kGA xlt pQi vhk @@ -317439,7 +317504,7 @@ orm orm orm idQ -eln +jWV iys oPx eUM diff --git a/_maps/map_files/cerestation/cerestation.dmm b/_maps/map_files/cerestation/cerestation.dmm index 9e55a1207db..dd37d32655f 100644 --- a/_maps/map_files/cerestation/cerestation.dmm +++ b/_maps/map_files/cerestation/cerestation.dmm @@ -20248,6 +20248,12 @@ /obj/machinery/computer/guestpass{ pixel_y = -28 }, +/obj/machinery/requests_console{ + department = "Warden"; + departmentType = 7; + name = "Warden's Requests Console"; + pixel_x = -30 + }, /turf/simulated/floor/plasteel{ dir = 10; icon_state = "darkred" @@ -25453,6 +25459,12 @@ dir = 1; network = list("Medical","SS13") }, +/obj/machinery/requests_console{ + department = "Virology"; + departmentType = 3; + name = "Virology Requests Console"; + pixel_y = -30 + }, /turf/simulated/floor/plasteel{ icon_state = "whitegreen" }, @@ -30446,8 +30458,8 @@ /area/maintenance/port) "eLR" = ( /obj/machinery/requests_console{ - department = "Tool Storage"; - name = "Tool Storage Requests Console"; + department = "Primary Tool Storage"; + name = "Primary Tool Storage Requests Console"; pixel_y = 30 }, /obj/structure/disposalpipe/segment{ @@ -62776,6 +62788,12 @@ /area/security/detectives_office) "obz" = ( /obj/machinery/cooker/deepfryer, +/obj/machinery/requests_console{ + department = "Kitchen"; + departmentType = 2; + name = "Kitchen Requests Console"; + pixel_x = -30 + }, /turf/simulated/floor/plasteel{ icon_state = "white" }, @@ -62825,6 +62843,12 @@ dir = 5 }, /obj/item/twohanded/required/kirbyplants, +/obj/machinery/requests_console{ + department = "Chapel"; + departmentType = 2; + name = "Chapel Requests Console"; + pixel_x = -30 + }, /turf/simulated/floor/carpet/black, /area/chapel/office) "ocC" = ( @@ -64585,6 +64609,12 @@ /area/maintenance/atmospherics) "oDP" = ( /obj/structure/closet/secure_closet/security, +/obj/machinery/requests_console{ + department = "Security"; + departmentType = 5; + name = "Security Requests Console"; + pixel_y = 30 + }, /turf/simulated/floor/plasteel{ dir = 9; icon_state = "darkred" @@ -64833,7 +64863,7 @@ /area/crew_quarters/bar) "oHw" = ( /obj/machinery/requests_console{ - department = "Medbay"; + department = "Genetics"; departmentType = 1; name = "Genetics Requests Console"; pixel_y = 30 @@ -78330,9 +78360,9 @@ /area/medical/cmo) "sxu" = ( /obj/machinery/requests_console{ - department = "Science"; + department = "Research"; departmentType = 2; - name = "Science Requests Console"; + name = "Research Requests Console"; pixel_x = -30 }, /obj/machinery/r_n_d/destructive_analyzer, @@ -82324,6 +82354,12 @@ /obj/item/clothing/glasses/welding, /obj/item/clothing/glasses/welding, /obj/item/clothing/glasses/welding, +/obj/machinery/requests_console{ + department = "Engineering"; + departmentType = 3; + name = "Engineering Requests Console"; + pixel_y = 30 + }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -84394,6 +84430,11 @@ /turf/simulated/floor/plating, /area/maintenance/engineering) "umA" = ( +/obj/machinery/requests_console{ + department = "Locker Room"; + name = "Locker Room Requests Console"; + pixel_y = -30 + }, /turf/simulated/floor/plasteel{ icon_state = "neutral" }, @@ -88231,6 +88272,7 @@ /area/hallway/primary/port/north) "vyB" = ( /obj/machinery/requests_console{ + department = "Detective"; name = "Detective Requests Console"; pixel_y = -30 }, @@ -96782,6 +96824,12 @@ /obj/structure/disposalpipe/trunk{ dir = 8 }, +/obj/machinery/requests_console{ + department = "Science"; + departmentType = 2; + name = "Science Requests Console"; + pixel_y = 30 + }, /turf/simulated/floor/plasteel, /area/toxins/launch) "xTW" = ( diff --git a/_maps/map_files/cyberiad/cyberiad.dmm b/_maps/map_files/cyberiad/cyberiad.dmm index 85289102a09..9342f86ef13 100644 --- a/_maps/map_files/cyberiad/cyberiad.dmm +++ b/_maps/map_files/cyberiad/cyberiad.dmm @@ -14424,26 +14424,6 @@ /obj/effect/decal/warning_stripes/south, /turf/simulated/floor/plasteel, /area/hallway/secondary/entry) -"aVg" = ( -/obj/structure/table, -/obj/machinery/camera{ - c_tag = "Primary Tool Storage" - }, -/obj/machinery/requests_console{ - department = "Tool Storage"; - name = "Tool Storage Requests Console"; - pixel_y = 30 - }, -/obj/item/assembly/igniter{ - pixel_x = -8; - pixel_y = -4 - }, -/obj/item/assembly/igniter, -/obj/item/screwdriver{ - pixel_y = 16 - }, -/turf/simulated/floor/plasteel, -/area/storage/primary) "aVh" = ( /obj/structure/cable{ icon_state = "4-8" @@ -24290,28 +24270,6 @@ /obj/item/storage/fancy/donut_box, /turf/simulated/floor/carpet, /area/crew_quarters/captain) -"byT" = ( -/obj/structure/table/wood, -/obj/item/storage/photo_album{ - pixel_y = -10 - }, -/obj/item/camera_film, -/obj/item/camera_film, -/obj/item/camera{ - desc = "A one use - polaroid camera. 30 photos left."; - name = "detectives camera"; - pictures_left = 30 - }, -/obj/machinery/requests_console{ - name = "Detective Requests Console"; - pixel_y = -30 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/item/storage/box/tapes, -/turf/simulated/floor/wood, -/area/security/detectives_office) "byU" = ( /turf/simulated/floor/carpet, /area/library) @@ -32651,16 +32609,6 @@ icon_state = "whitepurple" }, /area/medical/genetics) -"bZz" = ( -/obj/structure/chair/office/light{ - dir = 4 - }, -/obj/effect/landmark/start/geneticist, -/turf/simulated/floor/plasteel{ - dir = 6; - icon_state = "whitepurple" - }, -/area/medical/genetics) "bZA" = ( /obj/structure/table/glass, /obj/item/storage/box/disks, @@ -44024,15 +43972,6 @@ /obj/structure/grille/broken, /turf/simulated/floor/plating, /area/maintenance/asmaint) -"cIa" = ( -/obj/structure/table/wood, -/obj/item/pen, -/obj/item/reagent_containers/food/drinks/bottle/holywater, -/obj/machinery/light{ - dir = 1 - }, -/turf/simulated/floor/carpet/black, -/area/chapel/office) "cIb" = ( /obj/item/radio/intercom{ name = "north station intercom (General)"; @@ -45586,24 +45525,6 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/engine, /area/toxins/xenobiology) -"cMl" = ( -/obj/machinery/requests_console{ - department = "Science"; - departmentType = 2; - name = "Science Requests Console"; - pixel_y = 30 - }, -/obj/machinery/camera{ - c_tag = "Xenobiology Module North"; - network = list("Research","SS13") - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/toxins/xenobiology) "cMm" = ( /obj/structure/cable{ icon_state = "1-2" @@ -53170,6 +53091,17 @@ /obj/effect/spawner/lootdrop/maintenance, /turf/simulated/floor/plating, /area/maintenance/asmaint2) +"dic" = ( +/obj/effect/decal/warning_stripes/north, +/obj/machinery/status_display/supply_display{ + pixel_y = -32 + }, +/obj/machinery/conveyor{ + dir = 4; + id = "QMLoad2" + }, +/turf/simulated/floor/plating, +/area/quartermaster/storage) "did" = ( /obj/machinery/camera{ c_tag = "Bridge East" @@ -65778,14 +65710,6 @@ /obj/machinery/vending/assist, /turf/simulated/floor/plating, /area/storage/tech) -"jRJ" = ( -/obj/structure/disposalpipe/trunk, -/obj/machinery/disposal, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "whiteyellow" - }, -/area/medical/chemistry) "jRL" = ( /obj/effect/spawner/random_spawners/grille_13, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -69830,6 +69754,40 @@ icon_state = "vault" }, /area/toxins/misc_lab) +"myk" = ( +/obj/structure/table, +/obj/machinery/camera{ + c_tag = "Primary Tool Storage" + }, +/obj/machinery/requests_console{ + department = "Primary Tool Storage"; + name = "Primary Tool Storage Requests Console"; + pixel_y = 30 + }, +/obj/item/assembly/igniter{ + pixel_x = -8; + pixel_y = -4 + }, +/obj/item/assembly/igniter, +/obj/item/screwdriver{ + pixel_y = 16 + }, +/turf/simulated/floor/plasteel, +/area/storage/primary) +"myy" = ( +/obj/structure/disposalpipe/trunk, +/obj/machinery/disposal, +/obj/machinery/requests_console{ + department = "Chemistry"; + departmentType = 2; + name = "Chemistry Requests Console"; + pixel_y = 30 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whiteyellow" + }, +/area/medical/chemistry) "mzq" = ( /turf/simulated/floor/plasteel{ dir = 1; @@ -70315,6 +70273,17 @@ /obj/structure/transit_tube/horizontal, /turf/simulated/floor/plating, /area/maintenance/atmospherics) +"mOu" = ( +/obj/machinery/door/poddoor{ + id_tag = "QMLoaddoor"; + name = "supply dock loading door" + }, +/obj/machinery/conveyor{ + dir = 4; + id = "QMLoad2" + }, +/turf/simulated/floor/plating, +/area/quartermaster/storage) "mOw" = ( /obj/structure/cable{ icon_state = "1-2" @@ -70690,17 +70659,6 @@ icon_state = "white" }, /area/assembly/robotics) -"nfM" = ( -/obj/machinery/requests_console{ - department = "Science"; - departmentType = 2; - name = "Science Requests Console"; - pixel_x = -30 - }, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/toxins/lab) "nfX" = ( /obj/effect/decal/warning_stripes/yellow, /turf/simulated/floor/plasteel{ @@ -72242,6 +72200,21 @@ icon_state = "blue" }, /area/medical/cmostore) +"omn" = ( +/obj/structure/table/wood, +/obj/item/pen, +/obj/item/reagent_containers/food/drinks/bottle/holywater, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/requests_console{ + department = "Chapel"; + departmentType = 2; + name = "Chapel Requests Console"; + pixel_y = 30 + }, +/turf/simulated/floor/carpet/black, +/area/chapel/office) "omV" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/closet/secure_closet/scientist, @@ -74457,6 +74430,29 @@ icon_state = "whitebluefull" }, /area/medical/reception) +"pHL" = ( +/obj/structure/table/wood, +/obj/item/storage/photo_album{ + pixel_y = -10 + }, +/obj/item/camera_film, +/obj/item/camera_film, +/obj/item/camera{ + desc = "A one use - polaroid camera. 30 photos left."; + name = "detectives camera"; + pictures_left = 30 + }, +/obj/machinery/requests_console{ + department = "Detective"; + name = "Detective Requests Console"; + pixel_y = -30 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/item/storage/box/tapes, +/turf/simulated/floor/wood, +/area/security/detectives_office) "pIm" = ( /obj/structure/closet/firecloset, /obj/effect/decal/warning_stripes/southwest, @@ -79226,6 +79222,14 @@ icon_state = "dark" }, /area/toxins/mixing) +"sJo" = ( +/obj/structure/plasticflaps/mining, +/obj/machinery/conveyor{ + dir = 4; + id = "QMLoad2" + }, +/turf/simulated/floor/plating, +/area/quartermaster/storage) "sJv" = ( /obj/structure/rack, /obj/effect/spawner/lootdrop/maintenance, @@ -79331,6 +79335,24 @@ /obj/effect/decal/cleanable/fungus, /turf/simulated/wall/r_wall, /area/maintenance/xenozoo) +"sMs" = ( +/obj/machinery/camera{ + c_tag = "Xenobiology Module North"; + network = list("Research","SS13") + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/requests_console{ + department = "Xenobiology"; + departmentType = 2; + name = "Xenobiology Requests Console"; + pixel_y = 30 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/xenobiology) "sMY" = ( /obj/structure/extinguisher_cabinet{ name = "east extinguisher cabinet"; @@ -81331,6 +81353,15 @@ icon_state = "white" }, /area/medical/chemistry) +"uck" = ( +/obj/effect/decal/warning_stripes/north, +/obj/machinery/light, +/obj/machinery/conveyor{ + dir = 4; + id = "QMLoad2" + }, +/turf/simulated/floor/plating, +/area/quartermaster/storage) "ucp" = ( /obj/machinery/atmospherics/binary/pump{ dir = 8 @@ -84084,6 +84115,17 @@ }, /turf/simulated/floor/plasteel, /area/hallway/primary/aft) +"vWf" = ( +/obj/machinery/requests_console{ + department = "Research"; + departmentType = 2; + name = "Research Requests Console"; + pixel_x = -30 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/lab) "vWk" = ( /obj/effect/decal/warning_stripes/west, /obj/structure/cable{ @@ -85367,6 +85409,22 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plasteel, /area/toxins/storage) +"wGQ" = ( +/obj/structure/chair/office/light{ + dir = 4 + }, +/obj/effect/landmark/start/geneticist, +/obj/machinery/requests_console{ + department = "Genetics"; + departmentType = 1; + name = "Genetics Requests Console"; + pixel_y = -30 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "whitepurple" + }, +/area/medical/genetics) "wHa" = ( /obj/machinery/door/airlock/external{ name = "Escape Pod Airlock" @@ -87423,31 +87481,12 @@ }, /turf/simulated/floor/plating, /area/maintenance/fsmaint2) -"xTp" = ( -/obj/structure/plasticflaps/mining, -/obj/machinery/conveyor{ - dir = 4; - id = "QMLoad2" - }, -/turf/simulated/floor/plating, -/area/quartermaster/storage) "xTI" = ( /obj/structure/rack, /obj/item/wrench, /obj/effect/spawner/lootdrop/maintenance, /turf/simulated/floor/plating, /area/maintenance/port) -"xTK" = ( -/obj/machinery/door/poddoor{ - id_tag = "QMLoaddoor"; - name = "supply dock loading door" - }, -/obj/machinery/conveyor{ - dir = 4; - id = "QMLoad2" - }, -/turf/simulated/floor/plating, -/area/quartermaster/storage) "xTV" = ( /obj/structure/extinguisher_cabinet{ name = "north extinguisher cabinet"; @@ -87459,17 +87498,6 @@ }, /turf/simulated/floor/plasteel, /area/engineering/controlroom) -"xTY" = ( -/obj/effect/decal/warning_stripes/north, -/obj/machinery/status_display/supply_display{ - pixel_y = -32 - }, -/obj/machinery/conveyor{ - dir = 4; - id = "QMLoad2" - }, -/turf/simulated/floor/plating, -/area/quartermaster/storage) "xVm" = ( /obj/machinery/newscaster{ name = "north newscaster"; @@ -87593,15 +87621,6 @@ }, /turf/simulated/floor/plating, /area/maintenance/asmaint2) -"xYm" = ( -/obj/effect/decal/warning_stripes/north, -/obj/machinery/light, -/obj/machinery/conveyor{ - dir = 4; - id = "QMLoad2" - }, -/turf/simulated/floor/plating, -/area/quartermaster/storage) "xZm" = ( /obj/effect/decal/warning_stripes/northeastcorner, /turf/simulated/floor/plasteel{ @@ -104540,7 +104559,7 @@ tst uXX syu uXX -xTp +sJo syu uTI uTI @@ -104797,7 +104816,7 @@ tsS uZo rmn uZo -xTK +mOu rmn uTI uTI @@ -105020,7 +105039,7 @@ aMA aMA aSa bdd -aVg +myk aWl aXQ aXQ @@ -105054,7 +105073,7 @@ tst uXX rmn uXX -xTp +sJo rmn uTI uTI @@ -105311,7 +105330,7 @@ nMQ vaY whv vaY -xTY +dic bxb uTI uTI @@ -105568,7 +105587,7 @@ nMQ bKz dSG bWL -xYm +uck bxb uTI uTI @@ -117343,7 +117362,7 @@ boN aEi aFw bxc -byT +pHL axe aKy aMj @@ -124574,7 +124593,7 @@ uwX rgv uwX bOD -jRJ +myy bJP bJP bGt @@ -128701,7 +128720,7 @@ bZY ccc bWE bWE -bZz +wGQ cjF gab vvD @@ -132579,7 +132598,7 @@ qus qus bIi bIi -cMl +sMs cWi cEH cPm @@ -133292,7 +133311,7 @@ baz xDP ndQ baz -cIa +omn cKT bel bfW @@ -133828,7 +133847,7 @@ bwv tGd kBi bGF -nfM +vWf bNk bPd bRP diff --git a/_maps/map_files/event/Station/delta_old.dmm b/_maps/map_files/event/Station/delta_old.dmm index 1135d1e919e..23a34ab390d 100644 --- a/_maps/map_files/event/Station/delta_old.dmm +++ b/_maps/map_files/event/Station/delta_old.dmm @@ -3392,18 +3392,6 @@ icon_state = "neutralcorner" }, /area/hallway/primary/fore) -"aGE" = ( -/obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance{ - lootcount = 3; - name = "3maintenance loot spawner" - }, -/obj/machinery/conveyor{ - id = "cargodelivery"; - dir = 1 - }, -/turf/simulated/floor/plasteel, -/area/quartermaster/delivery) "aGF" = ( /obj/machinery/camera{ c_tag = "Arrivals Shuttle South West"; @@ -4061,13 +4049,6 @@ "aKD" = ( /turf/simulated/floor/plating, /area/maintenance/casino) -"aKF" = ( -/obj/machinery/conveyor{ - id = "QMLoad2"; - dir = 1 - }, -/turf/simulated/floor/plasteel, -/area/quartermaster/storage) "aKK" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -4130,6 +4111,31 @@ }, /turf/simulated/floor/plating, /area/maintenance/fpmaint) +"aKW" = ( +/obj/machinery/autolathe, +/obj/machinery/door/window/brigdoor{ + dir = 1; + id = "Autolathe"; + name = "Autolathe Access"; + req_access = list(47) + }, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/door/firedoor, +/obj/item/stack/sheet/metal{ + amount = 10 + }, +/obj/item/stack/sheet/glass{ + amount = 10 + }, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 1; + id_tag = "researchdesk1"; + name = "Research Desk Shutters" + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/lab) "aKY" = ( /obj/machinery/door/airlock/engineering/glass{ name = "Turbine Generator Access"; @@ -4703,6 +4709,17 @@ icon_state = "brown" }, /area/crew_quarters/chief) +"aOC" = ( +/obj/structure/window/reinforced, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/conveyor{ + dir = 8; + id = "garbage" + }, +/turf/simulated/floor/plating, +/area/maintenance/disposal) "aOF" = ( /obj/structure/cable{ icon_state = "1-2" @@ -5247,20 +5264,6 @@ icon_state = "arrival" }, /area/hallway/secondary/entry) -"aSl" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced, -/obj/machinery/conveyor{ - id = "garbage"; - dir = 9 - }, -/turf/simulated/floor/plating, -/area/maintenance/disposal) "aSy" = ( /turf/simulated/wall/r_wall, /area/maintenance/turbine) @@ -6807,17 +6810,6 @@ /obj/effect/decal/warning_stripes/yellow, /turf/simulated/floor/plasteel, /area/hallway/secondary/entry) -"bcz" = ( -/obj/machinery/disposal/deliveryChute{ - dir = 4 - }, -/obj/structure/disposalpipe/trunk, -/obj/machinery/conveyor{ - id = "cargodisposals"; - dir = 8 - }, -/turf/simulated/floor/plating, -/area/quartermaster/sorting) "bcA" = ( /obj/effect/spawner/window/reinforced, /obj/structure/sign/vacuum, @@ -9076,18 +9068,6 @@ }, /turf/simulated/floor/plasteel, /area/atmos) -"brF" = ( -/obj/structure/plasticflaps/mining, -/obj/effect/spawner/lootdrop/maintenance{ - lootcount = 2; - name = "2maintenance loot spawner" - }, -/obj/machinery/conveyor{ - id = "QMLoad2"; - dir = 8 - }, -/turf/simulated/floor/plating, -/area/quartermaster/storage) "brG" = ( /obj/machinery/door/airlock/engineering/glass{ name = "Mechanic Workshop"; @@ -9372,13 +9352,6 @@ icon_state = "brown" }, /area/quartermaster/storage) -"bta" = ( -/obj/machinery/conveyor{ - id = "QMLoad2"; - dir = 9 - }, -/turf/simulated/floor/plasteel, -/area/quartermaster/storage) "btd" = ( /turf/simulated/wall/r_wall, /area/turret_protected/ai) @@ -11549,17 +11522,6 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/disposal) -"bCh" = ( -/obj/structure/window/reinforced, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/conveyor{ - id = "garbage"; - dir = 8 - }, -/turf/simulated/floor/plating, -/area/maintenance/disposal) "bCj" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -11890,6 +11852,14 @@ icon_state = "vault" }, /area/storage/tech) +"bDE" = ( +/obj/machinery/recycler, +/obj/machinery/conveyor{ + dir = 4; + id = "garbage" + }, +/turf/simulated/floor/plating, +/area/maintenance/disposal) "bDG" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/cable{ @@ -12110,6 +12080,13 @@ }, /turf/space, /area/space) +"bEE" = ( +/obj/effect/decal/warning_stripes/southeastcorner, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/engineering/engine) "bEG" = ( /obj/effect/decal/warning_stripes/south, /obj/structure/disposalpipe/segment, @@ -13186,30 +13163,12 @@ icon_state = "dark" }, /area/bridge/meeting_room) -"bKF" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/machinery/conveyor{ - id = "garbage"; - dir = 5 - }, -/turf/simulated/floor/plating, -/area/maintenance/disposal) "bKH" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, /turf/simulated/floor/bluegrid, /area/turret_protected/ai_upload) -"bKK" = ( -/obj/machinery/recycler, -/obj/machinery/conveyor{ - id = "garbage"; - dir = 4 - }, -/turf/simulated/floor/plating, -/area/maintenance/disposal) "bKN" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -14007,20 +13966,6 @@ /obj/machinery/ai_status_display, /turf/simulated/wall, /area/hallway/secondary/entry/lounge) -"bOT" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/structure/bed/dogbed, -/mob/living/simple_animal/pet/sloth/paperwork, -/obj/machinery/computer/guestpass{ - pixel_x = 30 - }, -/turf/simulated/floor/plasteel{ - dir = 6; - icon_state = "brown" - }, -/area/quartermaster/qm) "bOU" = ( /obj/machinery/door/firedoor, /obj/effect/decal/warning_stripes/yellow, @@ -17359,25 +17304,6 @@ }, /turf/simulated/floor/plating, /area/maintenance/maintcentral) -"cdQ" = ( -/obj/effect/decal/warning_stripes/east, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/conveyor{ - id = "QMLoad2"; - dir = 8 - }, -/turf/simulated/floor/plasteel, -/area/quartermaster/storage) -"cdR" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/machinery/conveyor/inverted{ - id = "QMLoad2"; - dir = 6 - }, -/turf/simulated/floor/plasteel, -/area/quartermaster/storage) "cdS" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -18904,14 +18830,6 @@ /obj/structure/chair/comfy/brown, /turf/simulated/floor/carpet/black, /area/bridge/vip) -"clQ" = ( -/obj/structure/plasticflaps/mining, -/obj/machinery/conveyor{ - id = "QMLoad2"; - dir = 8 - }, -/turf/simulated/floor/plating, -/area/quartermaster/storage) "clT" = ( /obj/machinery/atmospherics/pipe/simple/visible/universal{ dir = 4 @@ -19415,20 +19333,6 @@ icon_state = "arrival" }, /area/hallway/secondary/entry/commercial) -"cod" = ( -/obj/effect/decal/warning_stripes/southeast, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/floor/plasteel, -/area/engineering/engine) -"cof" = ( -/obj/effect/decal/warning_stripes/southeast, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/floor/plasteel, -/area/storage/secure) "coh" = ( /obj/machinery/portable_atmospherics/canister/oxygen, /turf/simulated/floor/plating, @@ -19650,22 +19554,6 @@ }, /turf/simulated/floor/plating, /area/engineering/engine) -"cpi" = ( -/obj/effect/decal/warning_stripes/southeastcorner, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/floor/plasteel, -/area/engineering/engine) -"cpk" = ( -/obj/machinery/power/tesla_coil, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/warning_stripes/yellow/hollow, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/floor/plasteel, -/area/storage/secure) "cpl" = ( /obj/structure/table/reinforced, /obj/machinery/cell_charger, @@ -19943,14 +19831,6 @@ icon_state = "purplefull" }, /area/janitor) -"cqU" = ( -/obj/machinery/pipedispenser/disposal, -/obj/effect/decal/warning_stripes/yellow/hollow, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/floor/plasteel, -/area/storage/secure) "cqW" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -19976,40 +19856,6 @@ }, /turf/simulated/wall, /area/janitor) -"cqZ" = ( -/obj/structure/plasticflaps, -/obj/machinery/conveyor{ - id = "cargodisposals"; - dir = 8 - }, -/turf/simulated/floor/plating, -/area/quartermaster/sorting) -"cra" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/warning_stripes/yellow/hollow, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/floor/plasteel, -/area/storage/secure) -"crg" = ( -/obj/machinery/conveyor{ - id = "cargodisposals"; - dir = 8 - }, -/turf/simulated/floor/plating, -/area/quartermaster/sorting) -"crh" = ( -/obj/machinery/camera{ - c_tag = "Cargo Backroom" - }, -/obj/machinery/conveyor{ - id = "cargodisposals"; - dir = 8 - }, -/turf/simulated/floor/plating, -/area/quartermaster/sorting) "crj" = ( /obj/machinery/atmospherics/trinary/tvalve/digital{ dir = 8 @@ -20181,17 +20027,6 @@ /obj/effect/decal/warning_stripes/yellow/hollow, /turf/simulated/floor/plasteel, /area/storage/secure) -"csn" = ( -/obj/effect/spawner/lootdrop/maintenance, -/obj/machinery/light{ - dir = 1 - }, -/obj/machinery/conveyor{ - id = "cargodisposals"; - dir = 8 - }, -/turf/simulated/floor/plating, -/area/quartermaster/sorting) "cso" = ( /obj/machinery/power/emitter, /obj/effect/decal/warning_stripes/yellow/hollow, @@ -20253,17 +20088,6 @@ icon_state = "neutralcorner" }, /area/crew_quarters/serviceyard) -"csv" = ( -/obj/structure/disposaloutlet{ - dir = 8 - }, -/obj/structure/disposalpipe/trunk, -/obj/machinery/conveyor{ - id = "cargodisposals"; - dir = 8 - }, -/turf/simulated/floor/plating, -/area/quartermaster/sorting) "csz" = ( /obj/structure/table/wood, /obj/item/radio/intercom{ @@ -23752,15 +23576,6 @@ icon_state = "neutralcorner" }, /area/crew_quarters/serviceyard) -"cGl" = ( -/obj/machinery/conveyor{ - id = "QMLoad"; - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "neutralfull" - }, -/area/quartermaster/storage) "cGm" = ( /obj/effect/landmark/marauder_entry, /turf/simulated/floor/plasteel{ @@ -25169,22 +24984,6 @@ icon_state = "whiteyellow" }, /area/medical/chemistry) -"cMr" = ( -/obj/structure/table/glass, -/obj/item/storage/box/masks, -/obj/item/storage/box/gloves{ - pixel_x = 4; - pixel_y = 4 - }, -/obj/item/reagent_containers/spray/cleaner{ - desc = "Someone has crossed out the 'Space' from Space Cleaner and written in Chemistry. Scrawled on the back is, 'Okay, whoever filled this with polytrinic acid, it was only funny the first time. It was hard enough replacing the CMO's first cat!'"; - name = "Chemistry Cleaner" - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "whiteyellow" - }, -/area/medical/chemistry) "cMs" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -26309,31 +26108,6 @@ tag = "icon-whitepurple (NORTHWEST)" }, /area/medical/genetics) -"cRb" = ( -/obj/machinery/autolathe, -/obj/machinery/door/window/brigdoor{ - dir = 1; - id = "Autolathe"; - name = "Autolathe Access"; - req_access = list(47) - }, -/obj/effect/decal/warning_stripes/yellow/hollow, -/obj/machinery/door/firedoor, -/obj/item/stack/sheet/metal{ - amount = 10 - }, -/obj/item/stack/sheet/glass{ - amount = 10 - }, -/obj/machinery/door/poddoor/shutters/preopen{ - id_tag = "researchdesk1"; - name = "Research Desk Shutters"; - dir = 1 - }, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/toxins/lab) "cRe" = ( /obj/structure/chair{ dir = 4 @@ -26536,6 +26310,22 @@ }, /turf/simulated/floor/plasteel, /area/engineering/controlroom) +"cRL" = ( +/obj/structure/table/glass, +/obj/item/reagent_containers/applicator/burn, +/obj/item/reagent_containers/glass/bottle/charcoal, +/obj/machinery/requests_console{ + department = "Genetics"; + departmentType = 1; + name = "Genetics Requests Console"; + pixel_x = -2; + pixel_y = 25 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whitepurple" + }, +/area/medical/genetics) "cRT" = ( /obj/machinery/atmospherics/pipe/simple/visible{ dir = 4 @@ -27111,6 +26901,13 @@ tag = "icon-whiteblue (SOUTHWEST)" }, /area/medical/biostorage) +"cUm" = ( +/obj/effect/decal/warning_stripes/southeast, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/storage/secure) "cUn" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -27339,22 +27136,6 @@ }, /turf/simulated/floor/wood, /area/bridge/meeting_room) -"cVs" = ( -/obj/machinery/camera{ - c_tag = "Research and Development"; - dir = 9; - network = list("Research","SS13") - }, -/obj/machinery/requests_console{ - department = "Science"; - departmentType = 2; - name = "Research Request Console"; - pixel_x = 30 - }, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/toxins/lab) "cVy" = ( /obj/structure/chair/comfy/teal, /turf/simulated/floor/plasteel{ @@ -28946,19 +28727,6 @@ /obj/structure/flora/ausbushes/genericbush, /turf/simulated/floor/grass, /area/medical/sleeper) -"dcq" = ( -/obj/structure/plasticflaps, -/obj/structure/closet/crate/internals, -/obj/effect/spawner/lootdrop/maintenance{ - lootcount = 3; - name = "3maintenance loot spawner" - }, -/obj/machinery/conveyor{ - id = "cargodelivery"; - dir = 1 - }, -/turf/simulated/floor/plasteel, -/area/quartermaster/sorting) "dcs" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -30962,13 +30730,6 @@ icon_state = "white" }, /area/medical/research) -"dko" = ( -/obj/machinery/conveyor{ - id = "QMLoad"; - dir = 5 - }, -/turf/simulated/floor/plasteel, -/area/quartermaster/storage) "dkp" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/light/small{ @@ -33757,6 +33518,13 @@ }, /turf/simulated/floor/plating, /area/maintenance/engineering) +"dvH" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "garbage" + }, +/turf/simulated/floor/plating, +/area/maintenance/disposal) "dvJ" = ( /obj/structure/closet/secure_closet/medical2, /obj/structure/cable{ @@ -35918,14 +35686,6 @@ icon_state = "whitepurplecorner" }, /area/medical/research/restroom) -"dFo" = ( -/obj/machinery/power/emitter, -/obj/effect/decal/warning_stripes/yellow/hollow, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/floor/plasteel, -/area/storage/secure) "dFp" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 @@ -37675,14 +37435,6 @@ /obj/structure/chair/stool, /turf/simulated/floor/plating, /area/engineering/engine) -"dMs" = ( -/obj/structure/plasticflaps, -/obj/machinery/conveyor{ - id = "cargodelivery"; - dir = 8 - }, -/turf/simulated/floor/plasteel, -/area/quartermaster/delivery) "dMu" = ( /obj/structure/chair/office/dark{ dir = 8 @@ -39182,22 +38934,6 @@ }, /turf/simulated/floor/plasteel, /area/engineering/engine) -"dSH" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/turf/simulated/floor/plasteel{ - icon_state = "yellowfull" - }, -/area/engineering/engine) "dSI" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -41776,14 +41512,6 @@ icon_state = "neutralcorner" }, /area/hallway/primary/starboard/east) -"egs" = ( -/obj/machinery/light, -/obj/machinery/conveyor{ - id = "cargodelivery"; - dir = 8 - }, -/turf/simulated/floor/plasteel, -/area/quartermaster/sorting) "egu" = ( /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ @@ -41877,6 +41605,13 @@ icon_state = "whitegreencorner" }, /area/medical/virology) +"ehy" = ( +/obj/effect/decal/warning_stripes/southeast, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/engineering/engine) "ehA" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -42450,17 +42185,6 @@ /obj/item/toy/figure/detective, /turf/simulated/floor/wood, /area/security/detectives_office) -"eqQ" = ( -/obj/machinery/door/poddoor{ - id_tag = "QMLoaddoor2"; - name = "supply dock loading door" - }, -/obj/machinery/conveyor{ - id = "QMLoad2"; - dir = 8 - }, -/turf/simulated/floor/plating, -/area/quartermaster/storage) "eqY" = ( /obj/machinery/photocopier, /turf/simulated/floor/plasteel{ @@ -42512,6 +42236,20 @@ /obj/effect/decal/cleanable/cobweb, /turf/simulated/floor/wood, /area/maintenance/library) +"erM" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced, +/obj/machinery/conveyor{ + dir = 9; + id = "garbage" + }, +/turf/simulated/floor/plating, +/area/maintenance/disposal) "erO" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -42829,16 +42567,12 @@ icon_state = "neutralfull" }, /area/crew_quarters/locker) -"ewf" = ( +"ewr" = ( +/obj/machinery/power/tesla_coil, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/warning_stripes/yellow/hollow, /obj/structure/cable{ - icon_state = "0-8" - }, -/obj/machinery/power/apc{ - dir = 4; - name = "east bump"; - pixel_x = 24 + icon_state = "4-8" }, /turf/simulated/floor/plasteel, /area/storage/secure) @@ -43017,6 +42751,16 @@ tag = "icon-whiteblue (NORTH)" }, /area/medical/sleeper) +"eyz" = ( +/obj/effect/spawner/lootdrop/maintenance, +/obj/machinery/conveyor{ + dir = 4; + id = "QMLoad" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/storage) "eyI" = ( /obj/structure/chair/office/dark{ dir = 8 @@ -45224,6 +44968,14 @@ icon_state = "grimy" }, /area/crew_quarters/heads/hop) +"fbZ" = ( +/obj/structure/plasticflaps, +/obj/machinery/conveyor{ + dir = 8; + id = "cargodelivery" + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/delivery) "fcN" = ( /obj/structure/chair/stool, /turf/simulated/floor/plasteel{ @@ -45231,6 +44983,17 @@ icon_state = "neutralfull" }, /area/crew_quarters/locker) +"fcP" = ( +/obj/effect/spawner/lootdrop/maintenance, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/conveyor{ + dir = 8; + id = "cargodisposals" + }, +/turf/simulated/floor/plating, +/area/quartermaster/sorting) "fcZ" = ( /obj/machinery/door/airlock/hatch/gamma{ locked = 1; @@ -45543,6 +45306,18 @@ }, /turf/simulated/floor/wood, /area/crew_quarters/cabin3) +"fin" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor{ + id_tag = "engstorage"; + name = "Secure Storage Blast Doors" + }, +/obj/effect/decal/warning_stripes/west, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/storage/secure) "fiH" = ( /obj/structure/cable{ icon_state = "1-2" @@ -45971,18 +45746,6 @@ icon_state = "purplefull" }, /area/medical/research/nhallway) -"fnW" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor{ - id_tag = "engstorage"; - name = "Secure Storage Blast Doors" - }, -/obj/effect/decal/warning_stripes/west, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/floor/plasteel, -/area/storage/secure) "foa" = ( /obj/machinery/hologram/holopad, /turf/simulated/floor/carpet/arcade, @@ -48710,16 +48473,6 @@ /obj/effect/landmark/event/blobstart, /turf/simulated/floor/plating, /area/maintenance/engineering) -"fZe" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/conveyor{ - id = "QMLoad2"; - dir = 8 - }, -/turf/simulated/floor/plasteel{ - icon_state = "neutralfull" - }, -/area/quartermaster/storage) "fZf" = ( /obj/effect/decal/warning_stripes/south, /obj/machinery/atmospherics/unary/vent_scrubber{ @@ -49376,6 +49129,28 @@ }, /turf/simulated/floor/engine, /area/toxins/test_chamber) +"gkH" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/conveyor{ + dir = 8; + id = "QMLoad2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/storage) "gkQ" = ( /obj/structure/cable{ icon_state = "4-8" @@ -49538,6 +49313,16 @@ icon_state = "red" }, /area/security/customs) +"gmf" = ( +/obj/effect/spawner/lootdrop/maintenance, +/obj/machinery/conveyor{ + dir = 8; + id = "QMLoad2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/storage) "gmk" = ( /obj/structure/cult/archives, /obj/machinery/newscaster{ @@ -51890,24 +51675,15 @@ icon_state = "dark" }, /area/security/permabrig) -"gOq" = ( -/obj/structure/table/reinforced, -/obj/item/folder, -/obj/item/pen, -/obj/machinery/door/window/southleft{ - name = "Research Lab Desk"; - req_access = list(47) - }, -/obj/machinery/door/window/northleft, -/obj/effect/decal/warning_stripes/yellow, -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/shutters/preopen{ - id_tag = "researchdesk1"; - name = "Research Desk Shutters"; - dir = 1 +"gOs" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/cable{ + icon_state = "4-8" }, /turf/simulated/floor/plasteel, -/area/toxins/lab) +/area/storage/secure) "gOv" = ( /obj/effect/decal/warning_stripes/northeast, /turf/simulated/floor/plating/airless, @@ -52975,6 +52751,14 @@ /obj/item/stock_parts/cell/high, /turf/simulated/floor/bluegrid, /area/tcommsat/chamber) +"hdD" = ( +/obj/structure/plasticflaps/mining, +/obj/machinery/conveyor{ + dir = 8; + id = "QMLoad2" + }, +/turf/simulated/floor/plating, +/area/quartermaster/storage) "hdG" = ( /turf/simulated/floor/plasteel{ dir = 1 @@ -54190,6 +53974,27 @@ /obj/effect/decal/warning_stripes/southwestcorner, /turf/simulated/floor/plating/airless, /area/engineering/engine) +"hvS" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/bed/dogbed, +/mob/living/simple_animal/pet/sloth/paperwork, +/obj/machinery/computer/guestpass{ + pixel_x = 30 + }, +/obj/machinery/requests_console{ + announcementConsole = 1; + department = "Quartermaster's Desk"; + departmentType = 5; + name = "Quartermaster Requests Console"; + pixel_y = -30 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "brown" + }, +/area/quartermaster/qm) "hvW" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/effect/decal/cleanable/dirt, @@ -55946,6 +55751,27 @@ /obj/structure/sign/securearea, /turf/simulated/wall, /area/engineering/engine) +"hUu" = ( +/obj/structure/disposaloutlet{ + dir = 8 + }, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/machinery/conveyor{ + dir = 8; + id = "garbage" + }, +/turf/simulated/floor/plating, +/area/maintenance/disposal) "hUH" = ( /obj/structure/sign/biohazard, /turf/simulated/wall, @@ -56041,6 +55867,16 @@ icon_state = "dark" }, /area/maintenance/asmaint2) +"hVE" = ( +/obj/machinery/camera{ + c_tag = "Cargo Backroom" + }, +/obj/machinery/conveyor{ + dir = 8; + id = "cargodisposals" + }, +/turf/simulated/floor/plating, +/area/quartermaster/sorting) "hVL" = ( /obj/machinery/embedded_controller/radio/airlock/airlock_controller{ id_tag = "engineering_west_airlock"; @@ -56097,6 +55933,13 @@ icon_state = "brown" }, /area/quartermaster/miningdock) +"hWy" = ( +/obj/machinery/conveyor{ + dir = 8; + id = "cargodisposals" + }, +/turf/simulated/floor/plating, +/area/quartermaster/sorting) "hWA" = ( /turf/simulated/floor/wood{ icon_state = "wood-broken"; @@ -56177,6 +56020,15 @@ }, /turf/simulated/floor/plating, /area/maintenance/asmaint) +"hXP" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "QMLoad" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/storage) "hYi" = ( /obj/structure/cable{ icon_state = "1-2" @@ -57716,20 +57568,6 @@ icon_state = "purple" }, /area/quartermaster/miningdock) -"iuG" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/machinery/conveyor{ - id = "garbage"; - dir = 8 - }, -/turf/simulated/floor/plating, -/area/maintenance/disposal) "iuQ" = ( /obj/machinery/vending/medical, /turf/simulated/floor/plasteel{ @@ -59495,18 +59333,6 @@ icon_state = "purple" }, /area/maintenance/xenozoo) -"iVt" = ( -/obj/effect/spawner/window/reinforced, -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/machinery/door/poddoor/shutters/preopen{ - id_tag = "researchdesk1"; - name = "Research Desk Shutters"; - dir = 1 - }, -/turf/simulated/floor/plating, -/area/toxins/lab) "iVE" = ( /obj/structure/cable{ icon_state = "1-2" @@ -59554,6 +59380,13 @@ icon_state = "white" }, /area/medical/research/restroom) +"iVR" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/storage/secure) "iWe" = ( /obj/effect/decal/warning_stripes/east, /turf/simulated/floor/plasteel{ @@ -60698,6 +60531,14 @@ }, /turf/simulated/floor/plating, /area/security/checkpoint/south) +"jnm" = ( +/obj/machinery/pipedispenser/disposal, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/storage/secure) "jnn" = ( /obj/effect/spawner/window/reinforced, /obj/structure/cable{ @@ -61664,16 +61505,6 @@ icon_state = "dark" }, /area/hydroponics) -"jyC" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/machinery/conveyor{ - id = "garbage"; - dir = 1 - }, -/turf/simulated/floor/plating, -/area/maintenance/disposal) "jyF" = ( /obj/structure/table/reinforced, /obj/machinery/door/firedoor, @@ -62657,6 +62488,16 @@ icon_state = "escape" }, /area/crew_quarters/fitness) +"jMU" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/conveyor/inverted{ + dir = 10; + id = "QMLoad" + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/storage) "jNa" = ( /obj/effect/decal/warning_stripes/yellow, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -63249,15 +63090,6 @@ tag = "icon-stage_stairs" }, /area/medical/reception) -"jWn" = ( -/obj/structure/plasticflaps, -/obj/effect/decal/warning_stripes/yellow, -/obj/machinery/conveyor{ - id = "cargodisposals"; - dir = 1 - }, -/turf/simulated/floor/plasteel, -/area/quartermaster/sorting) "jWq" = ( /obj/structure/table/glass, /obj/machinery/reagentgrinder{ @@ -63546,6 +63378,18 @@ icon_state = "dark" }, /area/crew_quarters/courtroom) +"kaU" = ( +/obj/structure/closet/crate, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 3; + name = "3maintenance loot spawner" + }, +/obj/machinery/conveyor{ + dir = 8; + id = "cargodelivery" + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/sorting) "kaX" = ( /obj/structure/cable{ icon_state = "1-2" @@ -63836,6 +63680,22 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/xenozoo) +"kgT" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/plasteel{ + icon_state = "yellowfull" + }, +/area/engineering/engine) "khf" = ( /obj/structure/cable{ icon_state = "2-4" @@ -65030,18 +64890,6 @@ tag = "icon-whiteblue (WEST)" }, /area/medical/medbay) -"kyY" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/obj/structure/window/reinforced, -/obj/machinery/conveyor{ - id = "garbage"; - dir = 8 - }, -/turf/simulated/floor/plating, -/area/maintenance/disposal) "kzc" = ( /turf/simulated/floor/plasteel{ dir = 1; @@ -65770,27 +65618,6 @@ icon_state = "white" }, /area/medical/chemistry) -"kKd" = ( -/obj/structure/disposaloutlet{ - dir = 8 - }, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/machinery/conveyor{ - id = "garbage"; - dir = 8 - }, -/turf/simulated/floor/plating, -/area/maintenance/disposal) "kKi" = ( /obj/structure/cable{ icon_state = "4-8" @@ -67941,6 +67768,18 @@ tag = "icon-whiteblue (WEST)" }, /area/medical/ward) +"luH" = ( +/obj/effect/spawner/window/reinforced, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 1; + id_tag = "researchdesk1"; + name = "Research Desk Shutters" + }, +/turf/simulated/floor/plating, +/area/toxins/lab) "luK" = ( /obj/effect/decal/warning_stripes/yellow/hollow, /obj/structure/closet/crate/internals, @@ -68332,6 +68171,18 @@ icon_state = "yellow" }, /area/engineering/break_room) +"lAj" = ( +/obj/structure/closet/crate, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 3; + name = "3maintenance loot spawner" + }, +/obj/machinery/conveyor{ + dir = 1; + id = "cargodelivery" + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/delivery) "lAr" = ( /obj/structure/cable{ icon_state = "4-8" @@ -72525,16 +72376,6 @@ icon_state = "neutralcorner" }, /area/hallway/primary/central/west) -"mEg" = ( -/obj/effect/spawner/lootdrop/maintenance, -/obj/machinery/conveyor{ - id = "QMLoad"; - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "neutralfull" - }, -/area/quartermaster/storage) "mEt" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -73038,6 +72879,13 @@ icon_state = "green" }, /area/hallway/secondary/exit) +"mLQ" = ( +/obj/machinery/conveyor{ + dir = 1; + id = "QMLoad" + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/storage) "mLS" = ( /obj/structure/cable{ icon_state = "4-8" @@ -73083,6 +72931,18 @@ icon_state = "darkred" }, /area/security/warden) +"mMj" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/window/reinforced, +/obj/machinery/conveyor{ + dir = 8; + id = "garbage" + }, +/turf/simulated/floor/plating, +/area/maintenance/disposal) "mMo" = ( /obj/effect/decal/warning_stripes/yellow/hollow, /obj/machinery/atmospherics/unary/vent_scrubber{ @@ -73140,14 +73000,6 @@ icon_state = "darkblue" }, /area/aisat/maintenance) -"mME" = ( -/obj/structure/plasticflaps, -/obj/machinery/conveyor{ - id = "cargodelivery"; - dir = 4 - }, -/turf/simulated/floor/plasteel, -/area/quartermaster/delivery) "mMH" = ( /obj/structure/sign/poster/official/work_for_a_future{ pixel_x = 32 @@ -73791,6 +73643,19 @@ }, /turf/simulated/floor/plating, /area/engineering/engine) +"mWW" = ( +/obj/structure/plasticflaps, +/obj/structure/closet/crate/internals, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 3; + name = "3maintenance loot spawner" + }, +/obj/machinery/conveyor{ + dir = 1; + id = "cargodelivery" + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/sorting) "mWY" = ( /obj/effect/spawner/window/reinforced, /obj/structure/cable{ @@ -73879,6 +73744,21 @@ icon_state = "darkblue" }, /area/turret_protected/ai) +"mYP" = ( +/obj/structure/table/wood, +/obj/item/camera_film, +/obj/item/book/manual/security_space_law, +/obj/item/reagent_containers/food/drinks/flask/detflask, +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/requests_console{ + department = "Detective"; + name = "Detective Requests Console"; + pixel_x = -32 + }, +/turf/simulated/floor/carpet, +/area/security/detectives_office) "mYX" = ( /obj/structure/cable{ icon_state = "4-8" @@ -76835,13 +76715,6 @@ icon_state = "dark" }, /area/security/permahallway) -"nNc" = ( -/obj/machinery/conveyor{ - id = "QMLoad"; - dir = 1 - }, -/turf/simulated/floor/plasteel, -/area/quartermaster/storage) "nNj" = ( /obj/structure/closet/firecloset, /obj/effect/decal/warning_stripes/yellow, @@ -78251,13 +78124,6 @@ /obj/effect/landmark/event/xeno_spawn, /turf/simulated/floor/plating, /area/maintenance/library) -"oht" = ( -/obj/machinery/conveyor{ - id = "garbage"; - dir = 4 - }, -/turf/simulated/floor/plating, -/area/maintenance/disposal) "ohx" = ( /obj/structure/cable{ icon_state = "1-2" @@ -79477,28 +79343,6 @@ temperature = 80 }, /area/toxins/server) -"oyI" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 9 - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/conveyor{ - id = "QMLoad2"; - dir = 8 - }, -/turf/simulated/floor/plasteel{ - icon_state = "neutralfull" - }, -/area/quartermaster/storage) "oyP" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -82079,6 +81923,17 @@ icon_state = "red" }, /area/security/processing) +"pir" = ( +/obj/machinery/door/poddoor{ + id_tag = "QMLoaddoor2"; + name = "supply dock loading door" + }, +/obj/machinery/conveyor{ + dir = 8; + id = "QMLoad2" + }, +/turf/simulated/floor/plating, +/area/quartermaster/storage) "piB" = ( /obj/machinery/light/small{ dir = 4 @@ -83427,6 +83282,16 @@ icon_state = "whitepurple" }, /area/medical/research/nhallway) +"pAK" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/conveyor/inverted{ + dir = 6; + id = "QMLoad2" + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/storage) "pAL" = ( /obj/structure/cable{ icon_state = "1-2" @@ -83934,6 +83799,17 @@ }, /turf/simulated/floor/plasteel, /area/atmos) +"pGs" = ( +/obj/structure/disposaloutlet{ + dir = 8 + }, +/obj/structure/disposalpipe/trunk, +/obj/machinery/conveyor{ + dir = 8; + id = "cargodisposals" + }, +/turf/simulated/floor/plating, +/area/quartermaster/sorting) "pGt" = ( /obj/structure/sign/greencross, /turf/simulated/wall, @@ -86539,6 +86415,20 @@ }, /turf/simulated/floor/wood, /area/maintenance/gambling_den) +"qnZ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/machinery/conveyor{ + dir = 8; + id = "garbage" + }, +/turf/simulated/floor/plating, +/area/maintenance/disposal) "qol" = ( /obj/effect/decal/cleanable/blood/xeno, /obj/machinery/power/apc{ @@ -88634,15 +88524,6 @@ /obj/item/folder/blue, /turf/simulated/floor/carpet, /area/bridge/meeting_room) -"qRa" = ( -/obj/effect/spawner/lootdrop/maintenance, -/obj/effect/decal/warning_stripes/east, -/obj/machinery/conveyor{ - id = "QMLoad"; - dir = 4 - }, -/turf/simulated/floor/plasteel, -/area/quartermaster/storage) "qRn" = ( /obj/effect/decal/warning_stripes/north, /turf/simulated/floor/plasteel{ @@ -89590,6 +89471,13 @@ icon_state = "dark" }, /area/security/permahallway) +"rdz" = ( +/obj/machinery/conveyor{ + dir = 5; + id = "QMLoad" + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/storage) "rdB" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -91690,13 +91578,6 @@ icon_state = "vault" }, /area/security/securearmory) -"rHh" = ( -/obj/effect/decal/warning_stripes/yellow/hollow, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/floor/plasteel, -/area/storage/secure) "rHl" = ( /obj/machinery/atmospherics/unary/vent_scrubber{ dir = 8; @@ -91724,34 +91605,6 @@ icon_state = "neutralcorner" }, /area/crew_quarters/fitness) -"rHz" = ( -/obj/structure/closet/crate{ - name = "solar pack crate" - }, -/obj/effect/decal/warning_stripes/yellow/hollow, -/obj/item/paper/solar, -/obj/item/circuitboard/solar_control, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/tracker_electronics, -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/floor/plasteel, -/area/storage/secure) "rHD" = ( /obj/machinery/atmospherics/unary/portables_connector, /obj/machinery/light{ @@ -92283,6 +92136,19 @@ "rPI" = ( /turf/simulated/wall/rust, /area/toxins/mixing) +"rPM" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/turf/simulated/floor/plasteel, +/area/storage/secure) "rPP" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -92810,6 +92676,14 @@ }, /turf/simulated/floor/plating, /area/medical/virology) +"rWG" = ( +/obj/structure/plasticflaps, +/obj/machinery/conveyor{ + dir = 8; + id = "cargodisposals" + }, +/turf/simulated/floor/plating, +/area/quartermaster/sorting) "rWW" = ( /turf/simulated/floor/plasteel{ dir = 6; @@ -93825,6 +93699,14 @@ icon_state = "dark" }, /area/bridge) +"snO" = ( +/obj/machinery/light, +/obj/machinery/conveyor{ + dir = 8; + id = "cargodelivery" + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/sorting) "snP" = ( /turf/simulated/wall, /area/maintenance/disposal) @@ -94778,6 +94660,34 @@ icon_state = "darkred" }, /area/security/securearmory) +"szN" = ( +/obj/structure/closet/crate{ + name = "solar pack crate" + }, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/item/paper/solar, +/obj/item/circuitboard/solar_control, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/tracker_electronics, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/storage/secure) "szQ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/wood, @@ -94802,6 +94712,13 @@ icon_state = "purplecorner" }, /area/hallway/primary/aft) +"sAe" = ( +/obj/machinery/conveyor{ + dir = 1; + id = "QMLoad2" + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/storage) "sAv" = ( /obj/machinery/light/small, /obj/effect/decal/warning_stripes/yellow, @@ -96125,6 +96042,28 @@ tag = "icon-cult" }, /area/lawoffice) +"sTN" = ( +/obj/structure/table/glass, +/obj/item/storage/box/masks, +/obj/item/storage/box/gloves{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/reagent_containers/spray/cleaner{ + desc = "Someone has crossed out the 'Space' from Space Cleaner and written in Chemistry. Scrawled on the back is, 'Okay, whoever filled this with polytrinic acid, it was only funny the first time. It was hard enough replacing the CMO's first cat!'"; + name = "Chemistry Cleaner" + }, +/obj/machinery/requests_console{ + department = "Chemistry"; + departmentType = 2; + name = "Chemistry Requests Console"; + pixel_x = 30 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whiteyellow" + }, +/area/medical/chemistry) "sTO" = ( /obj/structure/sign/poster/official/random{ pixel_y = 32 @@ -96375,6 +96314,14 @@ icon_state = "darkblue" }, /area/security/detectives_office) +"sYg" = ( +/obj/machinery/power/emitter, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel, +/area/storage/secure) "sYB" = ( /obj/machinery/atmospherics/unary/vent_scrubber{ dir = 1; @@ -96420,6 +96367,24 @@ }, /turf/simulated/floor/carpet/black, /area/bridge/vip) +"sZd" = ( +/obj/structure/table/reinforced, +/obj/item/folder, +/obj/item/pen, +/obj/machinery/door/window/southleft{ + name = "Research Lab Desk"; + req_access = list(47) + }, +/obj/machinery/door/window/northleft, +/obj/effect/decal/warning_stripes/yellow, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 1; + id_tag = "researchdesk1"; + name = "Research Desk Shutters" + }, +/turf/simulated/floor/plasteel, +/area/toxins/lab) "sZg" = ( /obj/effect/decal/remains/xeno, /obj/effect/decal/cleanable/blood/xeno, @@ -102013,15 +101978,6 @@ icon_state = "dark" }, /area/turret_protected/aisat) -"uAf" = ( -/obj/machinery/conveyor{ - id = "QMLoad2"; - dir = 8 - }, -/turf/simulated/floor/plasteel{ - icon_state = "neutralfull" - }, -/area/quartermaster/storage) "uAh" = ( /obj/structure/closet/crate/freezer, /obj/item/reagent_containers/iv_bag/blood/OMinus, @@ -102479,6 +102435,15 @@ icon_state = "neutralfull" }, /area/crew_quarters/locker) +"uHj" = ( +/obj/structure/plasticflaps, +/obj/effect/decal/warning_stripes/yellow, +/obj/machinery/conveyor{ + dir = 1; + id = "cargodisposals" + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/sorting) "uHk" = ( /obj/structure/closet/secure_closet/security, /obj/machinery/alarm{ @@ -102841,6 +102806,16 @@ }, /turf/simulated/floor/bluegrid, /area/aisat) +"uKS" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/conveyor{ + dir = 1; + id = "garbage" + }, +/turf/simulated/floor/plating, +/area/maintenance/disposal) "uKT" = ( /obj/machinery/computer/security/telescreen/entertainment{ pixel_y = 32 @@ -104521,15 +104496,6 @@ }, /turf/simulated/floor/plasteel, /area/crew_quarters/locker/locker_toilet) -"vhR" = ( -/obj/structure/table/glass, -/obj/item/reagent_containers/applicator/burn, -/obj/item/reagent_containers/glass/bottle/charcoal, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "whitepurple" - }, -/area/medical/genetics) "vhU" = ( /obj/machinery/light/small{ dir = 1 @@ -106756,6 +106722,15 @@ "vKJ" = ( /turf/simulated/wall/r_wall, /area/security/detectives_office) +"vKP" = ( +/obj/machinery/conveyor{ + dir = 8; + id = "QMLoad2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/storage) "vLk" = ( /obj/structure/cable{ icon_state = "1-4" @@ -106936,16 +106911,6 @@ icon_state = "whitepurple" }, /area/medical/genetics) -"vOC" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/machinery/conveyor/inverted{ - id = "QMLoad"; - dir = 10 - }, -/turf/simulated/floor/plasteel, -/area/quartermaster/storage) "vOF" = ( /obj/effect/spawner/window/reinforced, /obj/structure/cable, @@ -107488,20 +107453,6 @@ icon_state = "white" }, /area/medical/ward) -"vUq" = ( -/obj/structure/table/wood, -/obj/item/camera_film, -/obj/item/book/manual/security_space_law, -/obj/item/reagent_containers/food/drinks/flask/detflask, -/obj/machinery/light{ - dir = 8 - }, -/obj/machinery/requests_console{ - name = "Detective Requests Console"; - pixel_x = -32 - }, -/turf/simulated/floor/carpet, -/area/security/detectives_office) "vUu" = ( /obj/structure/cable{ icon_state = "4-8" @@ -107788,18 +107739,6 @@ icon_state = "neutralcorner" }, /area/hallway/primary/central/south) -"vXN" = ( -/obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance{ - lootcount = 3; - name = "3maintenance loot spawner" - }, -/obj/machinery/conveyor{ - id = "cargodelivery"; - dir = 8 - }, -/turf/simulated/floor/plasteel, -/area/quartermaster/sorting) "vYj" = ( /obj/structure/cable{ icon_state = "4-8" @@ -107979,6 +107918,15 @@ icon_state = "red" }, /area/security/customs) +"vZC" = ( +/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/decal/warning_stripes/east, +/obj/machinery/conveyor{ + dir = 4; + id = "QMLoad" + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/storage) "vZG" = ( /obj/structure/chair/office/dark, /obj/structure/cable{ @@ -108610,16 +108558,6 @@ icon_state = "whitepurple" }, /area/assembly/robotics) -"wjh" = ( -/obj/effect/spawner/lootdrop/maintenance, -/obj/machinery/conveyor{ - id = "QMLoad2"; - dir = 8 - }, -/turf/simulated/floor/plasteel{ - icon_state = "neutralfull" - }, -/area/quartermaster/storage) "wjj" = ( /turf/simulated/wall/rust, /area/maintenance/library) @@ -110281,6 +110219,18 @@ icon_state = "dark" }, /area/engineering/hardsuitstorage) +"wEG" = ( +/obj/structure/plasticflaps/mining, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 2; + name = "2maintenance loot spawner" + }, +/obj/machinery/conveyor{ + dir = 8; + id = "QMLoad2" + }, +/turf/simulated/floor/plating, +/area/quartermaster/storage) "wEJ" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -111676,6 +111626,22 @@ dir = 1 }, /area/security/customs) +"wYP" = ( +/obj/machinery/camera{ + c_tag = "Research and Development"; + dir = 9; + network = list("Research","SS13") + }, +/obj/machinery/requests_console{ + department = "Research"; + departmentType = 2; + name = "Research Request Console"; + pixel_x = 30 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/lab) "wYQ" = ( /turf/simulated/floor/wood{ broken = 1; @@ -111776,6 +111742,15 @@ /obj/structure/bookcase, /turf/simulated/floor/wood, /area/library) +"xaw" = ( +/obj/effect/decal/warning_stripes/east, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/conveyor{ + dir = 8; + id = "QMLoad2" + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/storage) "xaE" = ( /obj/structure/cable{ icon_state = "4-8" @@ -112643,6 +112618,14 @@ icon_state = "neutralfull" }, /area/hallway/secondary/exit) +"xkL" = ( +/obj/structure/plasticflaps, +/obj/machinery/conveyor{ + dir = 4; + id = "cargodelivery" + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/delivery) "xkY" = ( /obj/structure/lattice/catwalk, /turf/space, @@ -113466,6 +113449,13 @@ icon_state = "bluecorner" }, /area/hallway/primary/central/south) +"xuw" = ( +/obj/machinery/conveyor{ + dir = 9; + id = "QMLoad2" + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/storage) "xux" = ( /obj/effect/spawner/window/reinforced, /obj/structure/cable, @@ -114389,6 +114379,17 @@ icon_state = "white" }, /area/assembly/robotics) +"xFg" = ( +/obj/machinery/disposal/deliveryChute{ + dir = 4 + }, +/obj/structure/disposalpipe/trunk, +/obj/machinery/conveyor{ + dir = 8; + id = "cargodisposals" + }, +/turf/simulated/floor/plating, +/area/quartermaster/sorting) "xFk" = ( /obj/machinery/ai_status_display{ pixel_y = -32 @@ -115135,6 +115136,16 @@ icon_state = "neutralcorner" }, /area/toxins/mixing) +"xNv" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/conveyor{ + dir = 5; + id = "garbage" + }, +/turf/simulated/floor/plating, +/area/maintenance/disposal) "xNy" = ( /obj/item/radio/intercom{ dir = 4; @@ -115801,6 +115812,16 @@ }, /turf/simulated/floor/plating, /area/maintenance/fpmaint) +"xWf" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/conveyor{ + dir = 8; + id = "QMLoad2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/quartermaster/storage) "xWh" = ( /obj/structure/cable{ icon_state = "2-8" @@ -140961,7 +140982,7 @@ nkf dXD qlu dQT -dSH +kgT dXD nkf dXD @@ -141218,7 +141239,7 @@ cbj vCh ptE tED -cpi +bEE tPv etT sMJ @@ -141475,7 +141496,7 @@ vtm fui uCs cmR -cod +ehy cpl mDe mDe @@ -141732,7 +141753,7 @@ utt cpm nqL fId -fnW +fin cpm mDe bQr @@ -141989,7 +142010,7 @@ utt wQP rSt cnB -cof +cUm cpn mDe vSK @@ -142246,7 +142267,7 @@ utt wUC dWc cpo -cqU +jnm tZR mDe vly @@ -142503,7 +142524,7 @@ utt igP dOZ dRd -cpk +ewr csm mDe feE @@ -142760,7 +142781,7 @@ utt wUC dOZ dRd -dFo +sYg cso mDe vDd @@ -143017,7 +143038,7 @@ dJU lTF xKq cmO -dFo +sYg cpr mDe iVc @@ -143274,7 +143295,7 @@ utt uqq pus dRe -rHz +szN cqX mDe hCy @@ -143531,7 +143552,7 @@ utt dNd qFn dRw -rHh +iVR kpR mDe yfQ @@ -143788,7 +143809,7 @@ utt qFn teJ dRw -rHh +iVR xvB mDe vly @@ -144045,7 +144066,7 @@ utt gxS cna iYh -cra +gOs tEE mDe prK @@ -144302,7 +144323,7 @@ utt jtS coh cmV -ewf +rPM ufR mDe smf @@ -152289,7 +152310,7 @@ oBH hnE ugy iQQ -cRb +aKW oIq fVX nsS @@ -153060,7 +153081,7 @@ qhT dkn iQQ tot -iVt +luH gjV cTR cTU @@ -153317,11 +153338,11 @@ bJP vyT ugy tot -gOq +sZd aiF cTB cUY -cVs +wYP oIq cYB daE @@ -153574,7 +153595,7 @@ qhT dkn bNH wId -iVt +luH hXm ohz cUZ @@ -155033,14 +155054,14 @@ rVF avf axj ayA -bcz +xFg ays tZI rxE cKZ cOv cQU -vXN +kaU ayA kiI blB @@ -155290,21 +155311,21 @@ bZN bEO chC ayA -crg -jWn +hWy +uHj dQc cLc cLc cOw pqC -egs +snO ayA deG -mME +xkL dfM bxv dfM -dMs +fbZ deG grq eqN @@ -155547,7 +155568,7 @@ nhF jWD jWD ayA -cqZ +rWG ayA azs cLc @@ -155555,8 +155576,8 @@ cLc cOw cnp csF -dcq -aGE +mWW +lAj dqv cGc cKb @@ -155804,7 +155825,7 @@ aSd bbl avb ayA -crg +hWy cyH cBM cLc @@ -155901,7 +155922,7 @@ vec ueo djS dfv -vhR +cRL vkl dvr drE @@ -156061,7 +156082,7 @@ bZO bbl bNA ayA -crh +hVE bXh aCx aEB @@ -156318,7 +156339,7 @@ bZP bbl bNC ayA -csn +fcP bXh cLc cdN @@ -156575,7 +156596,7 @@ dgP wff jWD ayA -crg +hWy bXh cLc cdN @@ -156832,7 +156853,7 @@ qsv bFv bAf ayA -csv +pGs bXB azv cdN @@ -159148,7 +159169,7 @@ hCZ cua mdr aBS -oyI +gkH nKJ bzc lXS @@ -159156,7 +159177,7 @@ ctv vgm qpZ djV -cGl +hXP eZs hXt cSh @@ -159225,7 +159246,7 @@ pbX dzf pfD cKR -cMr +sTN cXs jsJ dix @@ -159405,7 +159426,7 @@ hSN cue ric tiq -uAf +vKP nKJ bzc iGN @@ -159413,7 +159434,7 @@ dmq pHT gus djV -mEg +eyz eZs luK cSh @@ -159662,7 +159683,7 @@ rsC aCE dri bxD -fZe +xWf pNE cOS lwr @@ -159670,7 +159691,7 @@ ctv eZs cYL eZs -cGl +hXP djV vKa wTS @@ -159701,7 +159722,7 @@ iGw vKJ bFQ cLe -vUq +mYP vcG vTX wwg @@ -159919,7 +159940,7 @@ dmq cuw bYJ hVC -wjh +gmf nKJ aJg vKa @@ -159927,7 +159948,7 @@ eZs vKa sZV djV -cGl +hXP eZs vKa cSh @@ -160176,7 +160197,7 @@ dmq cux gNy jvq -uAf +vKP cKW aJg dAZ @@ -160184,7 +160205,7 @@ tFA tNh hOD eZs -cGl +hXP eZs vKa dNf @@ -160433,7 +160454,7 @@ dmq cuz gNy hVC -uAf +vKP nKJ oZo eZs @@ -160441,7 +160462,7 @@ djV djV aJm eZs -cGl +hXP ebV rup cSh @@ -160690,7 +160711,7 @@ dmq cuO bZh mHQ -cdQ +xaw cLd mHQ mHQ @@ -160698,7 +160719,7 @@ dHr dHr dHr vfD -qRa +vZC dHr dHr dNr @@ -160947,15 +160968,15 @@ dmq cuS cSf cSf -cdR -aKF -bta +pAK +sAe +xuw ddO cYX ddO -dko -nNc -vOC +rdz +mLQ +jMU tkx eWq jgZ @@ -161206,7 +161227,7 @@ bBM bBM bBM bBM -brF +wEG nyK bBM nyK @@ -161463,7 +161484,7 @@ iGw iGw iGw eqA -eqQ +pir qak cOy mbm @@ -161720,7 +161741,7 @@ aaa aaa iGw bBM -clQ +hdD nyK bBM nyK @@ -161735,7 +161756,7 @@ bSJ duw bIp duw -bOT +hvS dDb cqB dXb @@ -162222,10 +162243,10 @@ aaa aaa iGw puN -bKF -jyC -jyC -aSl +xNv +uKS +uKS +erM aUq snP iGw @@ -162479,10 +162500,10 @@ aaa aaa iGw puN -bKK +bDE snP snP -bCh +aOC jkM snP iGw @@ -162736,10 +162757,10 @@ aaa aaa aaa bBS -oht +dvH qBA hrt -kyY +mMj qyB bBS iGw @@ -162993,10 +163014,10 @@ aaa aaa iGw bBS -oht +dvH ocv eMA -iuG +qnZ ose bBS aaa @@ -163250,10 +163271,10 @@ aaa iGw iGw bBS -oht +dvH wyH dWk -kKd +hUu hnU bBS iGw diff --git a/_maps/map_files/event/Station/towerstation.dmm b/_maps/map_files/event/Station/towerstation.dmm index 80238a9e039..dca0de25e48 100644 --- a/_maps/map_files/event/Station/towerstation.dmm +++ b/_maps/map_files/event/Station/towerstation.dmm @@ -704,8 +704,8 @@ req_access = list(39) }, /turf/simulated/floor/plasteel{ - icon_state = "whitegreen"; - dir = 6 + dir = 6; + icon_state = "whitegreen" }, /area/medical/virology) "atz" = ( @@ -858,8 +858,8 @@ pixel_y = -28 }, /turf/simulated/floor/plasteel{ - icon_state = "whitegreen"; - dir = 10 + dir = 10; + icon_state = "whitegreen" }, /area/medical/virology) "axJ" = ( @@ -916,8 +916,8 @@ /area/hallway/secondary/exit) "azA" = ( /obj/machinery/conveyor{ - id = "cargodisposals"; - dir = 4 + dir = 4; + id = "cargodisposals" }, /obj/structure/sign/deathsposal{ pixel_y = -32 @@ -972,9 +972,9 @@ "aBP" = ( /obj/effect/spawner/window/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ + dir = 2; id_tag = "chemshuts"; - name = "Chemistry Shutters"; - dir = 2 + name = "Chemistry Shutters" }, /turf/simulated/floor/plating, /area/medical/chemistry) @@ -1319,8 +1319,8 @@ "aPe" = ( /obj/machinery/door/window{ dir = 1; - req_access = list(61); - name = "Telecommunications Access" + name = "Telecommunications Access"; + req_access = list(61) }, /turf/simulated/floor/plasteel/dark/telecomms, /area/tcommsat/server) @@ -2213,8 +2213,8 @@ dir = 6 }, /turf/simulated/floor/plasteel{ - icon_state = "whitebluecorner"; - dir = 8 + dir = 8; + icon_state = "whitebluecorner" }, /area/medical/sleeper) "bvB" = ( @@ -2766,8 +2766,8 @@ /obj/machinery/door_control{ id = "researchshuts"; name = "Research Shutters Control"; - req_access = list(33); - pixel_y = 26 + pixel_y = 26; + req_access = list(33) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -3239,8 +3239,8 @@ /obj/machinery/door_control{ id = "brigshuts"; name = "Brig Shutters Control"; - req_access = list(1,4); - pixel_y = 36 + pixel_y = 36; + req_access = list(1,4) }, /turf/simulated/floor/plasteel{ icon_state = "redfull" @@ -3309,8 +3309,8 @@ /area/space) "cdz" = ( /turf/simulated/floor/plasteel{ - icon_state = "whitegreen"; - dir = 9 + dir = 9; + icon_state = "whitegreen" }, /area/medical/virology) "cdB" = ( @@ -3416,9 +3416,9 @@ pixel_x = -8 }, /obj/machinery/door/poddoor/shutters/preopen{ + dir = 2; id_tag = "kitchen"; - name = "Kitchen Shutters"; - dir = 2 + name = "Kitchen Shutters" }, /turf/simulated/floor/plasteel, /area/crew_quarters/kitchen) @@ -3815,9 +3815,9 @@ "cyG" = ( /obj/effect/spawner/window/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ + dir = 1; id_tag = "brigshuts"; - name = "Brig Shutters"; - dir = 1 + name = "Brig Shutters" }, /turf/simulated/floor/plating, /area/security/main) @@ -3908,8 +3908,8 @@ dir = 4 }, /turf/simulated/floor/plasteel{ - icon_state = "whiteblue"; - dir = 8 + dir = 8; + icon_state = "whiteblue" }, /area/medical/sleeper) "cAL" = ( @@ -4244,8 +4244,8 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plasteel{ - icon_state = "whiteblue"; - dir = 8 + dir = 8; + icon_state = "whiteblue" }, /area/medical/sleeper) "cRi" = ( @@ -5063,8 +5063,8 @@ pixel_x = 24 }, /turf/simulated/floor/plasteel{ - icon_state = "whitepurple"; - dir = 4 + dir = 4; + icon_state = "whitepurple" }, /area/toxins/mixing) "dsw" = ( @@ -5721,9 +5721,9 @@ /obj/item/storage/fancy/donut_box, /obj/item/reagent_containers/food/snacks/soup/misosoup, /obj/machinery/door/poddoor/shutters/preopen{ + dir = 2; id_tag = "kitchen"; - name = "Kitchen Shutters"; - dir = 2 + name = "Kitchen Shutters" }, /turf/simulated/floor/plasteel/white, /area/crew_quarters/kitchen) @@ -5779,8 +5779,8 @@ dir = 4 }, /turf/simulated/floor/plasteel{ - icon_state = "whitepurple"; - dir = 1 + dir = 1; + icon_state = "whitepurple" }, /area/toxins/mixing) "dTl" = ( @@ -6956,9 +6956,9 @@ "eIB" = ( /obj/effect/spawner/window/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ + dir = 8; id_tag = "brigshuts"; - name = "Brig Shutters"; - dir = 8 + name = "Brig Shutters" }, /turf/simulated/floor/plating, /area/security/main) @@ -7237,6 +7237,17 @@ /obj/structure/closet/wardrobe/mixed, /turf/simulated/floor/shuttle, /area/shuttle/arrival/station) +"eTD" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/requests_console{ + announcementConsole = 1; + department = "Quartermaster's Desk"; + departmentType = 5; + name = "Quartermaster Requests Console"; + pixel_x = -30 + }, +/turf/simulated/floor/carpet/black, +/area/quartermaster/storage) "eTG" = ( /obj/structure/rack, /obj/item/ammo_box/shotgun/beanbag, @@ -7608,8 +7619,8 @@ }, /obj/effect/landmark/start/virologist, /turf/simulated/floor/plasteel{ - icon_state = "whitegreen"; - dir = 8 + dir = 8; + icon_state = "whitegreen" }, /area/medical/virology) "feZ" = ( @@ -8404,6 +8415,12 @@ "fBs" = ( /obj/effect/turf_decal/delivery, /obj/machinery/computer/scan_consolenew, +/obj/machinery/requests_console{ + department = "Genetics"; + departmentType = 1; + name = "Genetics Requests Console"; + pixel_x = -30 + }, /turf/simulated/floor/plasteel{ dir = 10; icon_state = "whitepurple" @@ -8749,8 +8766,8 @@ /obj/effect/decal/warning_stripes/yellow, /obj/machinery/plantgenes, /turf/simulated/floor/plasteel{ - icon_state = "blue"; - dir = 1 + dir = 1; + icon_state = "blue" }, /area/hydroponics) "fIT" = ( @@ -9119,8 +9136,8 @@ icon_state = "2-4" }, /turf/simulated/floor/plasteel{ - icon_state = "whitepurple"; - dir = 1 + dir = 1; + icon_state = "whitepurple" }, /area/toxins/mixing) "fXq" = ( @@ -9604,8 +9621,8 @@ "gpQ" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/conveyor{ - id = "cargodisposals"; - dir = 4 + dir = 4; + id = "cargodisposals" }, /turf/simulated/floor/plasteel, /area/quartermaster/storage) @@ -10735,8 +10752,8 @@ }, /obj/machinery/computer/card/minor/hos, /obj/item/radio/intercom{ - pixel_y = -28; - pixel_x = 28 + pixel_x = 28; + pixel_y = -28 }, /obj/machinery/keycard_auth{ pixel_x = 28; @@ -10904,8 +10921,8 @@ }, /obj/structure/plasticflaps, /obj/machinery/conveyor{ - id = "cargodisposals"; - dir = 4 + dir = 4; + id = "cargodisposals" }, /turf/simulated/floor/plasteel, /area/quartermaster/storage) @@ -11157,10 +11174,10 @@ /area/toxins/lab) "hjb" = ( /obj/machinery/atmospherics/trinary/filter{ + dir = 4; filter_type = "n2"; name = "nitrogen filter"; - on = 1; - dir = 4 + on = 1 }, /turf/simulated/floor/plasteel, /area/atmos) @@ -11352,8 +11369,8 @@ /obj/machinery/door_control{ id = "briglock"; name = "Brig Lockdown"; - req_access = list(3); - pixel_x = -26 + pixel_x = -26; + req_access = list(3) }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -12655,8 +12672,8 @@ dir = 4 }, /obj/machinery/conveyor{ - id = "cargodisposals"; - dir = 4 + dir = 4; + id = "cargodisposals" }, /turf/simulated/floor/plasteel, /area/quartermaster/storage) @@ -13288,9 +13305,9 @@ name = "Access Queue" }, /obj/machinery/door/window/brigdoor/northleft{ + dir = 8; name = "Access Desk"; - req_access = list(57); - dir = 8 + req_access = list(57) }, /obj/machinery/door/poddoor/shutters/preopen{ dir = 2; @@ -13372,8 +13389,8 @@ /obj/machinery/light, /obj/machinery/chem_master, /turf/simulated/floor/plasteel{ - icon_state = "blue"; - dir = 6 + dir = 6; + icon_state = "blue" }, /area/hydroponics) "iGn" = ( @@ -13474,9 +13491,9 @@ pixel_x = 30 }, /obj/machinery/door/poddoor/shutters/preopen{ + dir = 2; id_tag = "kitchen"; - name = "Kitchen Shutters"; - dir = 2 + name = "Kitchen Shutters" }, /turf/simulated/floor/plasteel, /area/crew_quarters/kitchen) @@ -14164,8 +14181,8 @@ }, /obj/machinery/door/window/brigdoor/security{ dir = 2; - req_access = list(63); - name = "Brig Medical Bay" + name = "Brig Medical Bay"; + req_access = list(63) }, /turf/simulated/floor/plasteel{ dir = 4; @@ -14833,8 +14850,8 @@ }, /obj/item/reagent_containers/glass/bucket, /turf/simulated/floor/plasteel{ - icon_state = "green"; - dir = 10 + dir = 10; + icon_state = "green" }, /area/hydroponics) "jAi" = ( @@ -15189,6 +15206,18 @@ }, /turf/simulated/floor/plasteel, /area/security/main) +"jMQ" = ( +/obj/machinery/requests_console{ + announcementConsole = 1; + department = "Blueshield"; + departmentType = 5; + name = "Blueshield Requests Console"; + pixel_y = 30 + }, +/turf/simulated/floor/plasteel{ + icon_state = "bcarpet05" + }, +/area/bridge) "jMV" = ( /obj/structure/window/reinforced{ dir = 4 @@ -15393,9 +15422,9 @@ "jUc" = ( /obj/structure/table/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ + dir = 2; id_tag = "kitchen"; - name = "Kitchen Shutters"; - dir = 2 + name = "Kitchen Shutters" }, /turf/simulated/floor/plasteel, /area/crew_quarters/kitchen) @@ -16500,8 +16529,8 @@ /obj/machinery/door_control{ id = "briglock"; name = "Brig Lockdown"; - req_access = list(3); - pixel_x = -26 + pixel_x = -26; + req_access = list(3) }, /turf/simulated/wall/r_wall, /area/security/warden) @@ -17305,18 +17334,18 @@ /obj/machinery/door_control{ id = "engsm"; name = "Supermatter Blast Doors"; + pixel_x = -24; pixel_y = -8; - req_access = list(10); - pixel_x = -24 + req_access = list(10) }, /obj/machinery/door_control{ id = "smbolts"; name = "Supermatter Bolt Control"; normaldoorcontrol = 1; + pixel_x = -24; pixel_y = 8; req_access = list(56); - specialfunctions = 4; - pixel_x = -24 + specialfunctions = 4 }, /turf/simulated/floor/engine, /area/engineering/engine) @@ -17884,9 +17913,9 @@ "lCt" = ( /obj/structure/table/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ + dir = 2; id_tag = "kitchen"; - name = "Kitchen Shutters"; - dir = 2 + name = "Kitchen Shutters" }, /turf/simulated/floor/plasteel/white, /area/crew_quarters/kitchen) @@ -18580,8 +18609,8 @@ dir = 8 }, /turf/simulated/floor/glass/reinforced{ - oxygen = 0; nitrogen = 0; + oxygen = 0; temperature = 2.7 }, /area/space) @@ -19057,8 +19086,8 @@ dir = 10 }, /turf/simulated/floor/plasteel{ - icon_state = "whiteblue"; - dir = 8 + dir = 8; + icon_state = "whiteblue" }, /area/medical/sleeper) "mmJ" = ( @@ -19131,8 +19160,8 @@ }, /obj/machinery/portable_atmospherics/canister/oxygen, /turf/simulated/floor/plasteel{ - icon_state = "whitepurple"; - dir = 4 + dir = 4; + icon_state = "whitepurple" }, /area/toxins/mixing) "mqd" = ( @@ -19681,8 +19710,8 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plasteel{ - icon_state = "whitebluecorner"; - dir = 8 + dir = 8; + icon_state = "whitebluecorner" }, /area/medical/sleeper) "mIi" = ( @@ -20714,8 +20743,8 @@ /area/turret_protected/ai_upload) "nrB" = ( /obj/machinery/atmospherics/trinary/filter{ - dir = 8; desc = "Отфильтровывает углекислый газ из трубы и отправляет его в камеру хранения"; + dir = 8; filter_type = 3; name = "Фильтр Углекислого Газа (СO2)"; on = 1; @@ -21522,8 +21551,8 @@ /area/gateway) "nSq" = ( /turf/simulated/floor/plasteel{ - icon_state = "blue"; - dir = 1 + dir = 1; + icon_state = "blue" }, /area/hydroponics) "nTs" = ( @@ -22233,9 +22262,9 @@ req_access = list(35) }, /obj/machinery/door/window/eastleft{ + dir = 8; name = "Kitchen Desk"; - req_access = list(28); - dir = 8 + req_access = list(28) }, /turf/simulated/floor/plating, /area/crew_quarters/kitchen) @@ -22256,8 +22285,8 @@ /area/crew_quarters/dorms) "oqA" = ( /turf/simulated/floor/plasteel{ - icon_state = "whitepurple"; - dir = 9 + dir = 9; + icon_state = "whitepurple" }, /area/toxins/mixing) "orb" = ( @@ -22312,8 +22341,8 @@ /area/medical/medbay) "otM" = ( /turf/simulated/floor/plasteel{ - icon_state = "whitepurple"; - dir = 1 + dir = 1; + icon_state = "whitepurple" }, /area/toxins/mixing) "ouf" = ( @@ -22842,8 +22871,8 @@ /area/hallway/primary/aft) "oLj" = ( /turf/simulated/floor/glass/reinforced{ - oxygen = 0; nitrogen = 0; + oxygen = 0; temperature = 2.7 }, /area/space) @@ -23023,8 +23052,8 @@ /area/hallway/primary/starboard) "oSt" = ( /obj/machinery/atmospherics/trinary/filter{ - dir = 8; desc = "Отфильтровывает оксид азота из трубы и отправляет его в камеру хранения."; + dir = 8; filter_type = 4; name = "Фильтр Оксида Азота (N2O)"; on = 1; @@ -23428,8 +23457,8 @@ pixel_y = -32 }, /obj/machinery/conveyor{ - id = "cargodisposals"; - dir = 4 + dir = 4; + id = "cargodisposals" }, /turf/simulated/floor/plasteel, /area/quartermaster/storage) @@ -23860,8 +23889,8 @@ icon_state = "1-2" }, /turf/simulated/floor/plasteel{ - icon_state = "whitegreen"; - dir = 4 + dir = 4; + icon_state = "whitegreen" }, /area/medical/virology) "pxE" = ( @@ -24150,9 +24179,9 @@ "pFi" = ( /obj/effect/spawner/window/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ + dir = 1; id_tag = "chemshuts"; - name = "Chemistry Shutters"; - dir = 1 + name = "Chemistry Shutters" }, /turf/simulated/floor/plating, /area/medical/chemistry) @@ -24207,9 +24236,9 @@ dir = 4 }, /obj/machinery/door/window/southleft{ + dir = 8; name = "Research Lab Desk"; - req_access = list(47); - dir = 8 + req_access = list(47) }, /obj/machinery/door/poddoor/shutters/preopen{ id_tag = "researchshuts"; @@ -24294,8 +24323,8 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plasteel{ - icon_state = "whitebluecorner"; - dir = 1 + dir = 1; + icon_state = "whitebluecorner" }, /area/medical/sleeper) "pHL" = ( @@ -24630,8 +24659,8 @@ dir = 1 }, /obj/item/radio/intercom{ - pixel_y = -28; - pixel_x = -28 + pixel_x = -28; + pixel_y = -28 }, /turf/simulated/floor/plasteel{ icon_state = "bcarpet05" @@ -24716,8 +24745,8 @@ pixel_x = 28 }, /turf/simulated/floor/plasteel{ - icon_state = "whitepurple"; - dir = 4 + dir = 4; + icon_state = "whitepurple" }, /area/toxins/mixing) "pVk" = ( @@ -24770,8 +24799,8 @@ dir = 4 }, /turf/simulated/floor/plasteel{ - icon_state = "whitepurple"; - dir = 1 + dir = 1; + icon_state = "whitepurple" }, /area/toxins/mixing) "pWM" = ( @@ -24917,8 +24946,8 @@ /area/security/permabrig) "qcu" = ( /obj/machinery/conveyor{ - id = "cargodisposals"; - dir = 4 + dir = 4; + id = "cargodisposals" }, /turf/simulated/floor/plasteel, /area/quartermaster/storage) @@ -25181,8 +25210,8 @@ dir = 4 }, /turf/simulated/floor/plasteel{ - icon_state = "whitepurple"; - dir = 5 + dir = 5; + icon_state = "whitepurple" }, /area/toxins/mixing) "qkI" = ( @@ -25295,8 +25324,8 @@ pixel_x = 32 }, /turf/simulated/floor/plasteel{ - icon_state = "whitepurple"; - dir = 4 + dir = 4; + icon_state = "whitepurple" }, /area/toxins/mixing) "qph" = ( @@ -25509,12 +25538,12 @@ pixel_x = 32 }, /obj/item/radio/intercom/custom{ - pixel_y = 14; - pixel_x = 32 + pixel_x = 32; + pixel_y = 14 }, /obj/item/radio/intercom{ - pixel_y = -15; - pixel_x = 32 + pixel_x = 32; + pixel_y = -15 }, /turf/simulated/floor/greengrid, /area/turret_protected/aisat) @@ -25532,8 +25561,8 @@ dir = 4 }, /turf/simulated/floor/plasteel{ - icon_state = "whitepurple"; - dir = 1 + dir = 1; + icon_state = "whitepurple" }, /area/toxins/mixing) "qxq" = ( @@ -26493,8 +26522,8 @@ "rdP" = ( /obj/machinery/atmospherics/pipe/simple/visible/yellow, /turf/simulated/floor/plasteel{ - icon_state = "blue"; - dir = 6 + dir = 6; + icon_state = "blue" }, /area/atmos) "ree" = ( @@ -27228,8 +27257,8 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/disposalpipe/segment, /turf/simulated/floor/plasteel{ - icon_state = "whitebluecorner"; - dir = 8 + dir = 8; + icon_state = "whitebluecorner" }, /area/medical/sleeper) "rBV" = ( @@ -27690,6 +27719,12 @@ pixel_x = 26; req_access = list(33) }, +/obj/machinery/requests_console{ + department = "Chemistry"; + departmentType = 2; + name = "Chemistry Requests Console"; + pixel_y = -30 + }, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "whiteyellow" @@ -28627,7 +28662,7 @@ pixel_y = 3 }, /obj/machinery/requests_console{ - department = "Science"; + department = "Research"; departmentType = 2; name = "Research Request Console"; pixel_x = 30 @@ -29656,8 +29691,8 @@ req_access = list(39) }, /turf/simulated/floor/plasteel{ - icon_state = "whiteblue"; - dir = 8 + dir = 8; + icon_state = "whiteblue" }, /area/medical/sleeper) "tiH" = ( @@ -30111,8 +30146,8 @@ /area/hallway/secondary/entry) "tzj" = ( /turf/simulated/floor/plasteel{ - icon_state = "whitepurple"; - dir = 8 + dir = 8; + icon_state = "whitepurple" }, /area/toxins/mixing) "tzx" = ( @@ -30151,8 +30186,8 @@ created_name = "Officer Podsky"; desc = "Ты не узнаешь ценность чего-либо, пока не потеряешь это..."; name = "Обломки офицера Подски"; - pixel_y = 14; - pixel_x = -5 + pixel_x = -5; + pixel_y = 14 }, /turf/simulated/floor/plasteel{ dir = 1; @@ -30491,8 +30526,8 @@ tag_interior_door = "viro_lab_airlock_interior" }, /turf/simulated/floor/plasteel{ - icon_state = "whitegreen"; - dir = 4 + dir = 4; + icon_state = "whitegreen" }, /area/medical/virology) "tKy" = ( @@ -30606,8 +30641,8 @@ icon_state = "4-8" }, /turf/simulated/floor/plasteel{ - icon_state = "blue"; - dir = 1 + dir = 1; + icon_state = "blue" }, /area/hydroponics) "tQb" = ( @@ -31511,8 +31546,8 @@ dir = 8 }, /obj/machinery/door/window/brigdoor/security{ - req_access = list(2); - name = "Rrocessing" + name = "Rrocessing"; + req_access = list(2) }, /turf/simulated/floor/plasteel{ dir = 1; @@ -31806,8 +31841,8 @@ /obj/machinery/door_control{ id = "execblast"; name = "Vacuum Execution"; - req_access = list(2); - pixel_x = -26 + pixel_x = -26; + req_access = list(2) }, /turf/simulated/floor/plasteel{ dir = 9; @@ -32309,8 +32344,8 @@ dir = 5 }, /turf/simulated/floor/plasteel{ - icon_state = "whitebluecorner"; - dir = 1 + dir = 1; + icon_state = "whitebluecorner" }, /area/medical/sleeper) "uQL" = ( @@ -32433,8 +32468,8 @@ /obj/machinery/chem_dispenser/botanical, /obj/effect/decal/warning_stripes/yellow, /turf/simulated/floor/plasteel{ - icon_state = "blue"; - dir = 9 + dir = 9; + icon_state = "blue" }, /area/hydroponics) "uUg" = ( @@ -32548,8 +32583,8 @@ icon_state = "1-2" }, /turf/simulated/floor/plasteel{ - icon_state = "whitegreen"; - dir = 5 + dir = 5; + icon_state = "whitegreen" }, /area/medical/virology) "vbn" = ( @@ -33519,9 +33554,9 @@ "vDD" = ( /obj/effect/spawner/window/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ + dir = 1; id_tag = "brigshuts"; - name = "Brig Shutters"; - dir = 1 + name = "Brig Shutters" }, /obj/machinery/door/poddoor{ density = 0; @@ -33676,10 +33711,10 @@ "vIe" = ( /obj/structure/showcase{ dir = 4; - pixel_x = -9; icon = 'icons/mob/robots.dmi'; icon_state = "Robot-STD"; name = "Cyborg Statue"; + pixel_x = -9; pixel_y = 2 }, /turf/simulated/floor/bluegrid, @@ -33898,9 +33933,9 @@ "vNU" = ( /obj/effect/spawner/window/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ + dir = 8; id_tag = "chemshuts"; - name = "Chemistry Shutters"; - dir = 8 + name = "Chemistry Shutters" }, /turf/simulated/floor/plating, /area/medical/chemistry) @@ -34145,9 +34180,9 @@ "vXi" = ( /obj/effect/spawner/window/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ + dir = 2; id_tag = "brigshuts"; - name = "Brig Shutters"; - dir = 2 + name = "Brig Shutters" }, /obj/machinery/door/poddoor{ density = 0; @@ -34789,9 +34824,9 @@ "wqQ" = ( /obj/machinery/biogenerator, /obj/machinery/door/window/eastleft{ + dir = 1; name = "Hydroponics Desk"; - req_access = list(35); - dir = 1 + req_access = list(35) }, /turf/simulated/floor/plating, /area/hydroponics) @@ -36166,8 +36201,8 @@ "xef" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on, /turf/simulated/floor/plasteel{ - icon_state = "whitegreen"; - dir = 8 + dir = 8; + icon_state = "whitegreen" }, /area/medical/virology) "xeu" = ( @@ -36209,8 +36244,8 @@ }, /obj/item/toy/figure/roboticist, /turf/simulated/floor/plasteel{ - icon_state = "whitepurple"; - dir = 5 + dir = 5; + icon_state = "whitepurple" }, /area/assembly/robotics) "xeR" = ( @@ -37108,8 +37143,8 @@ dir = 4 }, /obj/machinery/conveyor{ - id = "cargodisposals"; - dir = 4 + dir = 4; + id = "cargodisposals" }, /obj/structure/disposalpipe/trunk{ dir = 1 @@ -37553,8 +37588,8 @@ /obj/item/reagent_containers/glass/bucket, /obj/item/reagent_containers/glass/bucket, /turf/simulated/floor/plasteel{ - icon_state = "blue"; - dir = 8 + dir = 8; + icon_state = "blue" }, /area/hydroponics) "xYz" = ( @@ -37865,15 +37900,15 @@ pixel_y = 2 }, /obj/item/clothing/gloves/combat{ - pixel_y = -3; - pixel_x = -3 + pixel_x = -3; + pixel_y = -3 }, /obj/item/clothing/gloves/combat{ pixel_y = -3 }, /obj/item/clothing/gloves/combat{ - pixel_y = -3; - pixel_x = 3 + pixel_x = 3; + pixel_y = -3 }, /obj/item/shield/riot{ pixel_x = 3; @@ -37913,8 +37948,8 @@ dir = 8 }, /turf/simulated/floor/plasteel{ - icon_state = "whitebluecorner"; - dir = 8 + dir = 8; + icon_state = "whitebluecorner" }, /area/medical/sleeper) "yjR" = ( @@ -337765,7 +337800,7 @@ vvq uJy cxo uYB -cYO +eTD cYO wwa jxt @@ -590154,7 +590189,7 @@ nOE vtz tMi kFM -qiF +jMQ ckr eBD rgz diff --git a/_maps/map_files/nova/nova.dmm b/_maps/map_files/nova/nova.dmm index 5fe1e3dbb3c..1ff16844f16 100644 --- a/_maps/map_files/nova/nova.dmm +++ b/_maps/map_files/nova/nova.dmm @@ -2577,7 +2577,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/chapel/main) +/area/chapel/massdriver) "atT" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/sign/poster/official/nanotrasen_logo{ @@ -2780,7 +2780,7 @@ dir = 6; icon_state = "vault" }, -/area/chapel/main) +/area/chapel/massdriver) "avP" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -3200,9 +3200,6 @@ pixel_y = -22; req_access = list(39) }, -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/structure/cable{ icon_state = "1-4" }, @@ -3211,6 +3208,9 @@ /obj/structure/disposalpipe/segment{ dir = 9 }, +/obj/structure/cable{ + icon_state = "1-8" + }, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "whitegreen" @@ -3414,6 +3414,20 @@ }, /turf/simulated/floor/plating, /area/maintenance/chapel) +"aAP" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/cryo) "aAV" = ( /obj/machinery/atmospherics/pipe/multiz{ dir = 4 @@ -3729,7 +3743,7 @@ /turf/simulated/floor/plasteel{ icon_state = "cult" }, -/area/chapel/office) +/area/chapel/morgue) "aCQ" = ( /obj/machinery/door/airlock/security/glass{ id = "Interrogation"; @@ -4108,7 +4122,6 @@ }, /obj/machinery/power/apc{ dir = 4; - name = "east bump"; pixel_x = 26 }, /turf/simulated/floor/plasteel{ @@ -5320,6 +5333,18 @@ icon_state = "purple" }, /area/hallway/primary/fore) +"aNX" = ( +/obj/structure/window/reinforced, +/obj/item/flag/nt, +/obj/structure/sign/beautyplaque{ + pixel_y = 32; + name = "Благодарственное Письмо от Главного Инженера станции Нова"; + desc = "Важное Уточнение! Рабочие пожелали оставаться анонимными, поэтому, обойдёмся их прозвищами. За помощь Главному Инженеру Новы в поисках и устранении неисправностей на станции НаноТрейзен. С благодарностью, Saad603. Слава НаноТрейзен!" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge) "aOb" = ( /obj/structure/table/wood/fancy/royalblack, /obj/item/clothing/under/syndicate/blackops_civ, @@ -8026,20 +8051,6 @@ icon_state = "dark" }, /area/engineering/aienter) -"bil" = ( -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 5 - }, -/turf/simulated/floor/plasteel{ - icon_state = "whiteblue" - }, -/area/medical/cloning) "bio" = ( /obj/structure/bookcase, /turf/simulated/floor/wood, @@ -8542,6 +8553,12 @@ icon_state = "neutral" }, /area/hallway/primary/central/sw) +"bmb" = ( +/obj/machinery/door/airlock/maintenance{ + req_access = list(12) + }, +/turf/simulated/floor/plating, +/area/maintenance/fsmaint3) "bmd" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random_spawners/blood_20, @@ -8615,11 +8632,11 @@ /turf/simulated/floor/plating, /area/security/permabrig) "bmP" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ +/obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 }, /turf/simulated/floor/plasteel{ - dir = 1 + icon_state = "redcorner" }, /area/security/prison/cell_block/A) "bmR" = ( @@ -9188,7 +9205,7 @@ dir = 9; icon_state = "darkblue" }, -/area/chapel/main) +/area/chapel/massdriver) "bqA" = ( /obj/effect/spawner/window/reinforced, /turf/simulated/floor/plating, @@ -11061,17 +11078,10 @@ }, /area/security/processing) "bDb" = ( -/obj/machinery/atmospherics/unary/vent_scrubber{ - name = "standard air scrubber"; - on = 1; - scrub_N2O = 1; - scrub_Toxins = 1; - dir = 1 - }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/chapel/main) +/area/chapel/massdriver) "bDc" = ( /obj/structure/chair/stool, /obj/effect/decal/cleanable/dust, @@ -12516,7 +12526,7 @@ dir = 8; icon_state = "vault" }, -/area/tcommsat/chamber) +/area/tcommsat/server) "bNL" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -13239,15 +13249,13 @@ /turf/simulated/floor/plating, /area/maintenance/asmaint4) "bSJ" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 1 - }, /obj/structure/cable{ icon_state = "1-8" }, /obj/structure/cable{ icon_state = "1-4" }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plasteel{ dir = 1 }, @@ -13773,6 +13781,10 @@ icon_state = "neutralfull" }, /area/hallway/primary/central/north) +"bWi" = ( +/obj/structure/flora/ausbushes/leafybush, +/turf/simulated/floor/grass, +/area/maintenance/garden) "bWj" = ( /obj/effect/spawner/window/reinforced, /obj/structure/cable{ @@ -14360,7 +14372,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/chapel/main) +/area/chapel/massdriver) "caB" = ( /obj/item/twohanded/required/kirbyplants, /turf/simulated/floor/plasteel{ @@ -14722,7 +14734,7 @@ dir = 4; icon_state = "darkredcorners" }, -/area/tcommsat/chamber) +/area/tcommsat/server) "cdq" = ( /obj/machinery/disposal, /obj/structure/disposalpipe/trunk{ @@ -14830,7 +14842,7 @@ dir = 8; icon_state = "darkblue" }, -/area/chapel/main) +/area/chapel/massdriver) "cej" = ( /obj/structure/grille/broken, /turf/simulated/floor/plating, @@ -15122,6 +15134,17 @@ icon_state = "darkred" }, /area/security/permahallway) +"cgR" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/cryo) "cgX" = ( /obj/structure/cable{ icon_state = "4-8" @@ -15490,7 +15513,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/chapel/main) +/area/chapel/massdriver) "cjO" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -16229,7 +16252,7 @@ /turf/simulated/floor/plasteel{ icon_state = "cult" }, -/area/chapel/office) +/area/chapel/morgue) "cpg" = ( /obj/effect/spawner/random_spawners/crate_spawner, /turf/simulated/floor/plating, @@ -16295,7 +16318,7 @@ "cpJ" = ( /obj/machinery/computer/security, /turf/simulated/floor/redgrid, -/area/tcommsat/chamber) +/area/tcommsat/server) "cpN" = ( /obj/structure/table/wood, /obj/item/flashlight/flare{ @@ -17220,7 +17243,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/chapel/main) +/area/chapel/massdriver) "cvY" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -17522,7 +17545,9 @@ dir = 4 }, /obj/structure/window/reinforced, -/obj/item/twohanded/required/kirbyplants, +/obj/item/twohanded/required/kirbyplants{ + layer = 3.1 + }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -18114,17 +18139,6 @@ icon_state = "caution" }, /area/atmos/control) -"cDr" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/floor/plasteel{ - dir = 1 - }, -/area/security/prison/cell_block/A) "cDE" = ( /turf/simulated/floor/plasteel{ dir = 8; @@ -18754,7 +18768,7 @@ /turf/simulated/floor/plasteel{ icon_state = "cult" }, -/area/chapel/office) +/area/chapel/morgue) "cHO" = ( /obj/machinery/navbeacon{ codes_txt = "patrol;next_patrol=A2"; @@ -18937,7 +18951,7 @@ dir = 5; icon_state = "vault" }, -/area/chapel/main) +/area/chapel/massdriver) "cJZ" = ( /obj/machinery/smartfridge, /obj/machinery/door/window/eastleft{ @@ -19565,6 +19579,9 @@ c_tag = "Brig Cell 2"; dir = 10 }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, /turf/simulated/floor/carpet/cyan, /area/security/prison/cell_block/A) "cOz" = ( @@ -20860,12 +20877,6 @@ tag = "icon-wood-broken" }, /area/maintenance/casino) -"cXR" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on, -/turf/simulated/floor/plasteel{ - dir = 1 - }, -/area/security/prison/cell_block/A) "cXW" = ( /obj/machinery/atmospherics/unary/vent_scrubber{ dir = 1; @@ -21104,6 +21115,23 @@ icon_state = "vault" }, /area/turret_protected/aisat_interior/secondary) +"cZo" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/simulated/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/cloning) "cZt" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 6 @@ -21441,7 +21469,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/chapel/main) +/area/chapel/massdriver) "ddi" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/landmark/tiles/damageturf, @@ -22626,6 +22654,20 @@ icon_state = "redfull" }, /area/security/checkpoint) +"dnh" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/light_switch{ + pixel_x = -26; + pixel_y = -26 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/office) "dni" = ( /obj/structure/table/wood, /obj/machinery/fishtank/bowl, @@ -24063,6 +24105,10 @@ }, /turf/simulated/floor/carpet, /area/medical/psych) +"dxq" = ( +/obj/structure/flora/ausbushes/grassybush, +/turf/simulated/floor/grass, +/area/maintenance/garden) "dxv" = ( /obj/structure/cable{ icon_state = "1-2" @@ -24581,6 +24627,14 @@ }, /turf/simulated/floor/glass/reinforced, /area/quartermaster/qm) +"dAX" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/massdriver) "dAZ" = ( /obj/machinery/door/airlock/silver{ name = "Bathroom" @@ -26030,6 +26084,13 @@ /area/security/interrogation) "dNe" = ( /obj/effect/decal/cleanable/dirt, +/obj/structure/safe/floor, +/obj/item/reagent_containers/food/condiment/cheesesauce, +/obj/item/reagent_containers/food/condiment/garlicsauce, +/obj/item/reagent_containers/food/condiment/diablosauce, +/obj/item/reagent_containers/food/condiment/mushroomsauce, +/obj/item/reagent_containers/food/condiment/herbs, +/obj/item/reagent_containers/food/condiment/soysauce, /turf/simulated/floor/plasteel{ icon_state = "bar" }, @@ -26659,6 +26720,7 @@ dir = 1; pixel_y = -25 }, +/obj/item/reagent_containers/spray/pestspray, /turf/simulated/floor/grass, /area/maintenance/garden) "dRw" = ( @@ -27273,20 +27335,24 @@ }, /area/toxins/xenobiology) "dWV" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 9 - }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 9 }, /obj/structure/disposalpipe/segment{ dir = 9 }, +/obj/machinery/light_switch{ + pixel_x = -26; + pixel_y = 26 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, /turf/simulated/floor/plasteel{ dir = 9; icon_state = "vault" }, -/area/chapel/main) +/area/chapel/massdriver) "dXb" = ( /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ @@ -27496,6 +27562,20 @@ icon_state = "darkbluecornersalt" }, /area/crew_quarters/fitness) +"dYX" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/light_switch{ + pixel_x = -26; + pixel_y = 26 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/office) "dZb" = ( /obj/structure/cable{ icon_state = "1-2" @@ -29860,7 +29940,7 @@ pixel_x = -28 }, /turf/simulated/floor/redgrid, -/area/tcommsat/chamber) +/area/tcommsat/server) "eoV" = ( /obj/machinery/porta_turret{ dir = 8 @@ -29870,9 +29950,6 @@ }, /area/turret_protected/ai_upload) "eoY" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 4 }, @@ -29887,6 +29964,9 @@ name = "Janitor"; sortType = 22 }, +/obj/structure/cable{ + icon_state = "2-8" + }, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, @@ -29982,16 +30062,6 @@ /obj/effect/spawner/window/reinforced, /turf/simulated/floor/plating, /area/bridge) -"epN" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/medical/cryo) "epP" = ( /obj/structure/table, /obj/effect/decal/cleanable/dirt, @@ -31208,6 +31278,23 @@ }, /turf/simulated/floor/carpet, /area/maintenance/casino) +"ezg" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/chapel/office) "ezi" = ( /obj/structure/table/reinforced, /obj/item/clothing/ears/earmuffs, @@ -32333,11 +32420,14 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/simulated/floor/plasteel{ dir = 9; icon_state = "vault" }, -/area/chapel/main) +/area/chapel/massdriver) "eHH" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -32695,7 +32785,7 @@ dir = 5; icon_state = "darkblue" }, -/area/chapel/main) +/area/chapel/massdriver) "eKz" = ( /turf/simulated/wall, /area/clownoffice) @@ -32740,11 +32830,16 @@ /turf/simulated/floor/plasteel, /area/crew_quarters/toilet) "eKM" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_y = 28; + pixel_x = 28 + }, /turf/simulated/floor/plasteel{ dir = 5; icon_state = "darkred" }, -/area/tcommsat/chamber) +/area/tcommsat/server) "eLa" = ( /obj/structure/flora/ausbushes/ppflowers, /obj/structure/flora/ausbushes/ywflowers, @@ -33311,7 +33406,7 @@ dir = 8; icon_state = "vault" }, -/area/tcommsat/chamber) +/area/tcommsat/server) "eOZ" = ( /obj/machinery/power/tesla_coil, /obj/effect/decal/warning_stripes/yellow/hollow, @@ -33490,7 +33585,7 @@ "eQG" = ( /obj/machinery/firealarm{ dir = 4; - pixel_x = 28 + pixel_x = 26 }, /turf/simulated/floor/plasteel{ dir = 6; @@ -33698,7 +33793,7 @@ dir = 9; icon_state = "vault" }, -/area/chapel/main) +/area/chapel/massdriver) "eSV" = ( /obj/machinery/gateway{ dir = 1 @@ -34445,6 +34540,12 @@ pixel_y = -9 }, /obj/item/shard, +/obj/structure/curtain/open/shower/security{ + alpha = 255; + name = "backstage"; + anchored = 1; + pixel_y = 0 + }, /turf/simulated/floor/plating, /area/maintenance/backstage) "eYL" = ( @@ -35292,7 +35393,7 @@ /obj/structure/cable{ icon_state = "1-2" }, -/turf/simulated/floor/carpet/royalblack, +/turf/simulated/floor/carpet/black, /area/ntrep) "feN" = ( /obj/machinery/computer/arcade/orion_trail, @@ -35547,6 +35648,25 @@ /obj/effect/decal/warning_stripes/southwest, /turf/simulated/floor/plasteel, /area/storage/tech) +"fgL" = ( +/obj/machinery/camera{ + c_tag = "Central Bridge Hallway East 2"; + dir = 10 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_y = -30 + }, +/turf/simulated/floor/engine{ + slowdown = -0.3 + }, +/area/hallway/primary/central) "fgN" = ( /obj/machinery/computer/crew, /obj/structure/cable{ @@ -36120,10 +36240,6 @@ icon_state = "darkred" }, /area/turret_protected/aisat_interior/secondary) -"fkL" = ( -/obj/machinery/vending/boozeomat, -/turf/simulated/floor/carpet/royalblack, -/area/ntrep) "fkO" = ( /obj/structure/railing/corner{ dir = 4 @@ -36160,9 +36276,6 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -36173,6 +36286,9 @@ /obj/effect/turf_decal/siding/white{ dir = 1 }, +/obj/structure/cable{ + icon_state = "2-4" + }, /turf/simulated/floor/glass, /area/crew_quarters/locker) "flc" = ( @@ -36746,6 +36862,18 @@ icon_state = "whitebluefull" }, /area/medical/surgery/south) +"fps" = ( +/obj/structure/window/reinforced, +/obj/item/flag/nt, +/obj/structure/sign/tajarplaque{ + desc = "Важное Уточнение! Рабочие пожелали оставаться анонимными, поэтому, обойдёмся их прозвищами. Особая благодарность за помощь Главному Инженеру Новы в поисках и устранении неисправностей на станции НаноТрейзен. С благодарностью, Daeberdir. Слава НаноТрейзен!"; + name = "Благодарственное Письмо от Главного Инженера станции Нова"; + pixel_y = 32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge) "fpt" = ( /obj/item/radio/intercom{ pixel_x = 28 @@ -37200,16 +37328,13 @@ "fsy" = ( /obj/effect/decal/cleanable/vomit, /obj/effect/decal/cleanable/dirt, -/obj/machinery/power/apc{ - name = "south bump"; - pixel_y = -26 +/obj/structure/disposalpipe/segment{ + dir = 4 }, /obj/structure/cable{ + d1 = 4; d2 = 8; - icon_state = "0-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 + icon_state = "4-8" }, /turf/simulated/floor/plating, /area/maintenance/disposal) @@ -38122,6 +38247,7 @@ }, /area/medical/genetics) "fzn" = ( +/obj/structure/flora/ausbushes/ppflowers, /obj/item/storage/bag/plants/portaseeder, /turf/simulated/floor/grass, /area/maintenance/garden) @@ -38179,10 +38305,14 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/disposalpipe/segment, +/obj/machinery/light_switch{ + pixel_x = -26; + pixel_y = -26 + }, /turf/simulated/floor/plasteel{ icon_state = "darkblue" }, -/area/chapel/main) +/area/chapel/massdriver) "fzE" = ( /obj/machinery/door_control{ id = "xeno5"; @@ -38527,6 +38657,26 @@ icon_state = "dark" }, /area/crew_quarters/chief) +"fCz" = ( +/obj/effect/mapping_helpers/airlock/unres{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/airlock/medical/glass{ + id = "cloninglab"; + name = "Cloning Lab"; + req_access = list(5) + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/cloning) "fCA" = ( /obj/effect/turf_decal/siding/wideplating/dark{ dir = 1 @@ -38749,7 +38899,7 @@ dir = 4; icon_state = "darkblue" }, -/area/chapel/main) +/area/chapel/massdriver) "fDY" = ( /turf/simulated/wall, /area/crew_quarters/kitchen) @@ -39863,6 +40013,7 @@ dir = 4 }, /obj/machinery/hologram/holopad, +/obj/effect/decal/warning_stripes/blue/hollow, /turf/simulated/floor/plasteel{ dir = 1 }, @@ -41668,6 +41819,11 @@ }, /turf/simulated/floor/wood/dark, /area/ntrep) +"fZu" = ( +/obj/structure/flora/ausbushes/ywflowers, +/obj/structure/flora/ausbushes/ppflowers, +/turf/simulated/floor/grass, +/area/maintenance/garden) "fZz" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/blood/drip{ @@ -41940,6 +42096,24 @@ }, /turf/simulated/floor/plasteel, /area/quartermaster/miningdock) +"gbK" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_y = -30 + }, +/turf/simulated/floor/engine{ + slowdown = -0.3 + }, +/area/hallway/primary/central) "gbN" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -42044,7 +42218,6 @@ }, /area/hallway/secondary/exit/maint) "gcH" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, @@ -42054,6 +42227,9 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, /turf/simulated/floor/plasteel{ dir = 1 }, @@ -42524,7 +42700,7 @@ dir = 6; icon_state = "darkred" }, -/area/tcommsat/chamber) +/area/tcommsat/server) "gfP" = ( /turf/simulated/openspace, /area/quartermaster/delivery) @@ -43010,7 +43186,7 @@ dir = 9; icon_state = "darkred" }, -/area/tcommsat/chamber) +/area/tcommsat/server) "gjB" = ( /obj/structure/table/reinforced, /obj/item/taperecorder, @@ -43262,6 +43438,12 @@ }, /turf/simulated/floor/glass, /area/crew_quarters/chief) +"gkR" = ( +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkredcorners" + }, +/area/tcommsat/server) "gkT" = ( /obj/effect/turf_decal/siding/wood{ dir = 8; @@ -43556,11 +43738,13 @@ tag_airpump = "ai_pump"; tag_chamber_sensor = "ai_sensor"; tag_exterior_door = "ai_outer"; - tag_interior_door = "ai_inner" + tag_interior_door = "ai_inner"; + pixel_y = -3 }, /obj/machinery/airlock_sensor{ id_tag = "ai_sensor"; - pixel_x = -28 + pixel_x = 28; + pixel_y = 4 }, /turf/simulated/floor/plasteel{ dir = 8; @@ -43876,9 +44060,6 @@ /turf/simulated/floor/plasteel, /area/security/permabrig) "gpy" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/machinery/atmospherics/pipe/manifold/hidden/supply, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /obj/structure/cable{ @@ -43888,6 +44069,11 @@ /obj/effect/turf_decal/siding/white{ dir = 1 }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, /turf/simulated/floor/glass, /area/crew_quarters/locker) "gpI" = ( @@ -44183,7 +44369,7 @@ /turf/simulated/floor/plasteel{ icon_state = "cult" }, -/area/chapel/office) +/area/chapel/morgue) "grY" = ( /obj/structure/sign/directions/cargo{ dir = 4 @@ -44238,23 +44424,22 @@ /obj/machinery/embedded_controller/radio/airlock/airlock_controller{ id_tag = "robotics_solar_airlock"; layer = 3.3; - pixel_y = -25; + pixel_y = -30; req_access = list(13); tag_airpump = "robotics_solar_pump"; tag_chamber_sensor = "robotics_solar_sensor"; tag_exterior_door = "robotics_solar_outer"; tag_interior_door = "robotics_solar_inner" }, -/obj/machinery/airlock_sensor{ - id_tag = "robotics_solar_sensor"; - layer = 3.3; - pixel_x = 12; - pixel_y = -25 - }, /obj/effect/decal/warning_stripes/yellow, /obj/machinery/light/small{ dir = 1 }, +/obj/machinery/airlock_sensor{ + id_tag = "robotics_solar_sensor"; + layer = 3.3; + pixel_y = -23 + }, /turf/simulated/floor/plating, /area/maintenance/portsolar) "gsB" = ( @@ -44952,7 +45137,12 @@ /area/maintenance/fore) "gxY" = ( /obj/structure/window/reinforced, -/obj/structure/statue/gold/hop{ +/obj/structure/sign/goldenplaque{ + pixel_y = 32; + desc = "Важное Уточнение! Рабочие пожелали оставаться анонимными, поэтому, обойдёмся их прозвищами. За помощь Главному Инженеру Новы в поисках и устранении неисправностей на станции НаноТрейзен. С благодарностью, Zhojaba. Слава НаноТрейзен!"; + name = "Благодарственное Письмо от Главного Инженера станции Нова" + }, +/obj/structure/statue/gold/hos{ pixel_y = 7 }, /turf/simulated/floor/plasteel{ @@ -45487,7 +45677,7 @@ dir = 6; icon_state = "vault" }, -/area/chapel/main) +/area/chapel/massdriver) "gDC" = ( /obj/structure/cable{ icon_state = "4-8" @@ -45578,10 +45768,6 @@ req_access = list(1); color = "red" }, -/obj/item/clothing/suit/armor/riot, -/obj/item/shield/riot, -/obj/item/clothing/gloves/combat, -/obj/item/clothing/head/helmet/riot, /obj/structure/window/reinforced{ color = "red" }, @@ -45593,6 +45779,10 @@ color = "red"; dir = 4 }, +/obj/item/clothing/head/helmet/riot, +/obj/item/clothing/head/helmet/riot, +/obj/item/clothing/head/helmet/riot, +/obj/item/clothing/head/helmet/riot, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -45647,7 +45837,7 @@ icon_state = "1-4" }, /turf/simulated/floor/plasteel{ - icon_state = "red" + dir = 1 }, /area/security/seceqstorage) "gFc" = ( @@ -47437,12 +47627,6 @@ /area/maintenance/fpmaint) "gTN" = ( /obj/item/twohanded/required/kirbyplants, -/obj/structure/curtain/open/shower/security{ - alpha = 255; - name = "backstage"; - anchored = 1; - pixel_y = 32 - }, /obj/effect/decal/cleanable/glass, /turf/simulated/floor/carpet/red, /area/maintenance/backstage) @@ -48880,21 +49064,6 @@ icon_state = "red" }, /area/hallway/primary/central/second/west) -"hdq" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/floor/engine{ - slowdown = -0.3 - }, -/area/hallway/primary/central) "hdt" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/girder, @@ -49030,7 +49199,7 @@ }, /obj/machinery/airlock_sensor{ id_tag = "aisole_sensor"; - pixel_y = -28 + pixel_y = 35 }, /obj/machinery/atmospherics/unary/vent_pump/high_volume{ frequency = 1379; @@ -49572,7 +49741,9 @@ /obj/structure/window/reinforced{ dir = 8 }, -/obj/item/twohanded/required/kirbyplants, +/obj/item/twohanded/required/kirbyplants{ + layer = 3.1 + }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -49694,7 +49865,7 @@ /turf/simulated/floor/plasteel{ icon_state = "cult" }, -/area/chapel/office) +/area/chapel/morgue) "hjv" = ( /obj/effect/decal/warning_stripes/north, /turf/simulated/floor/plasteel{ @@ -50348,7 +50519,7 @@ }, /obj/machinery/airlock_sensor{ id_tag = "engineering_west_sensor"; - pixel_y = 7; + pixel_y = 3; pixel_x = 25 }, /turf/simulated/floor/plasteel{ @@ -51154,7 +51325,7 @@ dir = 5; icon_state = "vault" }, -/area/chapel/main) +/area/chapel/massdriver) "hva" = ( /obj/item/chair/wood/wings, /obj/effect/decal/remains/human, @@ -51423,7 +51594,7 @@ dir = 9; icon_state = "vault" }, -/area/chapel/main) +/area/chapel/massdriver) "hxl" = ( /obj/effect/decal/cleanable/dust, /turf/simulated/floor/carpet/orange, @@ -51807,11 +51978,18 @@ /obj/structure/chair{ dir = 1 }, +/obj/item/radio/intercom{ + name = "south station intercom (General)"; + pixel_x = -28 + }, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "darkblue" }, -/area/chapel/main) +/area/chapel/massdriver) +"hBC" = ( +/turf/simulated/wall/r_wall, +/area/tcommsat/server) "hBG" = ( /obj/structure/cable{ icon_state = "1-2" @@ -52140,6 +52318,10 @@ /obj/structure/table, /obj/effect/decal/warning_stripes/yellow/hollow, /obj/item/storage/firstaid/regular, +/obj/item/storage/firstaid/regular{ + pixel_x = 2; + pixel_y = 2 + }, /turf/simulated/floor/plasteel{ dir = 1 }, @@ -53003,9 +53185,6 @@ /turf/simulated/floor/wood, /area/security/detectives_office) "hNs" = ( -/obj/machinery/light_switch{ - pixel_x = -26 - }, /obj/machinery/light{ dir = 8 }, @@ -53392,7 +53571,7 @@ pixel_x = 28 }, /turf/simulated/floor/redgrid, -/area/tcommsat/chamber) +/area/tcommsat/server) "hQr" = ( /obj/structure/cable, /obj/machinery/power/apc{ @@ -53648,10 +53827,13 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/chapel/main) +/area/chapel/massdriver) "hSz" = ( /turf/simulated/floor/plasteel{ icon_state = "darkbluealt" @@ -55185,7 +55367,7 @@ dir = 9; icon_state = "vault" }, -/area/chapel/main) +/area/chapel/massdriver) "idu" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 @@ -55230,7 +55412,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/chapel/main) +/area/chapel/massdriver) "idL" = ( /obj/item/radio/intercom{ dir = 4; @@ -55739,7 +55921,7 @@ dir = 6; icon_state = "vault" }, -/area/chapel/main) +/area/chapel/massdriver) "ihk" = ( /turf/simulated/floor/plasteel{ dir = 1; @@ -55751,9 +55933,6 @@ /turf/simulated/floor/plating, /area/maintenance/secpost) "ihz" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, @@ -55763,6 +55942,9 @@ /obj/structure/cable{ icon_state = "2-4" }, +/obj/structure/cable{ + icon_state = "2-8" + }, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, @@ -56023,6 +56205,9 @@ /obj/effect/decal/warning_stripes/southeast, /turf/simulated/floor/plasteel, /area/hallway/secondary/entry/additional) +"ijt" = ( +/turf/simulated/wall, +/area/chapel/massdriver) "ijx" = ( /obj/effect/decal/warning_stripes/yellow, /obj/machinery/door/window/eastright{ @@ -57255,6 +57440,14 @@ icon_state = "neutral" }, /area/hallway/primary/central/second/south) +"irY" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/chapel/office) "irZ" = ( /obj/effect/spawner/window/reinforced, /obj/structure/cable{ @@ -57303,7 +57496,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/chapel/main) +/area/chapel/massdriver) "isz" = ( /turf/simulated/wall, /area/crew_quarters/serviceyard) @@ -57980,7 +58173,7 @@ dir = 4; icon_state = "darkblue" }, -/area/chapel/main) +/area/chapel/massdriver) "ixj" = ( /obj/structure/chair/office/dark, /obj/structure/cable{ @@ -58234,26 +58427,6 @@ icon_state = "whitegreen" }, /area/medical/virology/lab) -"iza" = ( -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 10; - initialize_directions = 10 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 10 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/medical/cloning) "izb" = ( /obj/machinery/power/solar{ name = "South-East Solar Panel" @@ -59454,9 +59627,7 @@ "iJH" = ( /obj/structure/cable, /obj/machinery/power/apc{ - cell_type = 5000; - name = "south bump Important Area"; - pixel_y = -24 + pixel_y = -26 }, /turf/simulated/floor/redgrid, /area/aisat/aihallway) @@ -59487,7 +59658,7 @@ dir = 5; icon_state = "vault" }, -/area/chapel/main) +/area/chapel/massdriver) "iJR" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -60102,7 +60273,9 @@ /area/quartermaster/qm) "iOP" = ( /obj/structure/window/reinforced, -/obj/item/twohanded/required/kirbyplants, +/obj/item/twohanded/required/kirbyplants{ + layer = 3.1 + }, /obj/machinery/light{ dir = 1; in_use = 1 @@ -60253,7 +60426,7 @@ /obj/structure/cable{ icon_state = "2-8" }, -/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/carpet/red, /area/security/prison/cell_block/A) "iQp" = ( @@ -60893,7 +61066,7 @@ /turf/simulated/floor/plasteel{ icon_state = "cult" }, -/area/chapel/office) +/area/chapel/morgue) "iWt" = ( /obj/machinery/atmospherics/unary/vent_scrubber{ name = "standard air scrubber"; @@ -61556,7 +61729,7 @@ /turf/simulated/floor/plasteel{ icon_state = "cult" }, -/area/chapel/office) +/area/chapel/morgue) "jbj" = ( /obj/structure/chair/comfy/brown{ dir = 8 @@ -61860,7 +62033,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 5 }, -/turf/simulated/floor/carpet/royalblack, +/turf/simulated/floor/carpet/black, /area/ntrep) "jdJ" = ( /obj/structure/table/wood, @@ -62000,6 +62173,7 @@ dir = 10 }, /obj/machinery/hologram/holopad, +/obj/effect/decal/warning_stripes/blue/hollow, /turf/simulated/floor/plasteel{ dir = 1 }, @@ -62167,6 +62341,13 @@ /obj/structure/closet, /turf/simulated/floor/plating, /area/maintenance/starboard) +"jfC" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/turf/simulated/floor/carpet/black, +/area/ntrep) "jfD" = ( /obj/structure/toilet/secret{ dir = 1 @@ -62187,7 +62368,17 @@ /area/hallway/secondary/exit) "jfO" = ( /obj/structure/table/reinforced, -/obj/item/lock_buster, +/obj/item/flashlight/sectaclight{ + pixel_y = 2; + pixel_x = -2 + }, +/obj/item/flashlight/sectaclight{ + pixel_y = 0 + }, +/obj/item/flashlight/sectaclight{ + pixel_y = -2; + pixel_x = 2 + }, /turf/simulated/floor/plasteel{ dir = 5; icon_state = "dark" @@ -62831,7 +63022,7 @@ /turf/simulated/floor/plasteel{ icon_state = "cult" }, -/area/chapel/office) +/area/chapel/morgue) "jjX" = ( /obj/structure/window/reinforced{ dir = 4 @@ -63205,8 +63396,8 @@ /area/hallway/primary/central/ne) "jmY" = ( /turf/simulated/floor/plasteel{ - icon_state = "redfull"; - tag = "icon-redfull (NORTHWEST)" + dir = 8; + icon_state = "redcorner" }, /area/security/seceqstorage) "jna" = ( @@ -63711,6 +63902,9 @@ dir = 4 }, /obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-8" + }, /turf/simulated/floor/plating, /area/maintenance/disposal) "jqP" = ( @@ -65528,7 +65722,7 @@ dir = 4; icon_state = "darkblue" }, -/area/chapel/main) +/area/chapel/massdriver) "jFz" = ( /obj/machinery/atmospherics/unary/vent_scrubber{ name = "standard air scrubber"; @@ -65860,7 +66054,7 @@ /turf/simulated/floor/plasteel{ icon_state = "cult" }, -/area/chapel/office) +/area/chapel/morgue) "jHy" = ( /turf/simulated/wall/r_wall, /area/security/warden) @@ -66041,18 +66235,20 @@ }, /area/atmos/control) "jIQ" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/cable{ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/tcommsat/chamber) +/area/tcommsat/server) "jIT" = ( /obj/structure/chair/office/dark{ dir = 8 @@ -66563,6 +66759,32 @@ icon_state = "neutralfull" }, /area/civilian/barber) +"jLR" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/turf_decal{ + dir = 8; + icon_state = "golden_stripes" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 8 + }, +/obj/structure/disposalpipe/sortjunction/reversed{ + dir = 1; + name = "Captain Office"; + sortType = 18 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge) "jLT" = ( /obj/effect/decal/warning_stripes/east, /turf/simulated/floor/plasteel{ @@ -66883,31 +67105,6 @@ icon_state = "neutralfull" }, /area/hallway/primary/central/nw) -"jOe" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/button/windowtint{ - pixel_y = -24; - pixel_x = 24; - id = "ntrepprivate"; - name = "Door tint control" - }, -/obj/machinery/door_control{ - id = "NTRprivate"; - name = "Privacy Shutters Control"; - pixel_x = 26; - pixel_y = -33; - req_access = list(73) - }, -/turf/simulated/floor/carpet/royalblack, -/area/ntrep) "jOs" = ( /obj/structure/cable{ icon_state = "0-8" @@ -67095,6 +67292,10 @@ /obj/effect/spawner/lootdrop/maintenance, /turf/simulated/floor/plating, /area/maintenance/apmaint) +"jQq" = ( +/obj/effect/decal/cleanable/spiderling_remains, +/turf/simulated/floor/plating, +/area/maintenance/secpost) "jQt" = ( /obj/machinery/light{ dir = 1; @@ -67681,6 +67882,10 @@ }, /turf/simulated/floor/plating, /area/maintenance/asmaint) +"jVi" = ( +/obj/structure/flora/ausbushes/lavendergrass, +/turf/simulated/floor/grass, +/area/maintenance/garden) "jVl" = ( /obj/machinery/conveyor_switch/oneway{ id = "QMLoad"; @@ -68647,7 +68852,7 @@ /obj/machinery/cell_charger, /obj/item/stock_parts/cell/high, /turf/simulated/floor/redgrid, -/area/tcommsat/chamber) +/area/tcommsat/server) "kdy" = ( /obj/machinery/computer/secure_data{ dir = 8 @@ -69055,6 +69260,9 @@ }, /obj/structure/bed, /obj/machinery/light, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, /turf/simulated/floor/plasteel{ dir = 1 }, @@ -69397,6 +69605,10 @@ slowdown = -0.3 }, /area/hallway/primary/central) +"kjI" = ( +/obj/structure/flora/ausbushes/ywflowers, +/turf/simulated/floor/grass, +/area/maintenance/garden) "kjL" = ( /obj/effect/spawner/window/reinforced, /turf/simulated/floor/plating, @@ -70241,6 +70453,9 @@ }, /turf/simulated/openspace, /area/quartermaster/delivery) +"kqy" = ( +/turf/simulated/wall, +/area/chapel/morgue) "kqz" = ( /obj/effect/spawner/window/reinforced, /obj/structure/cable{ @@ -70824,7 +71039,7 @@ /turf/simulated/floor/plasteel{ icon_state = "cult" }, -/area/chapel/office) +/area/chapel/morgue) "kvy" = ( /obj/effect/decal/cleanable/ash, /turf/simulated/floor/plasteel, @@ -71438,10 +71653,10 @@ /area/maintenance/fsmaint) "kAy" = ( /obj/effect/decal/warning_stripes/east, -/obj/machinery/flasher/portable, /obj/structure/extinguisher_cabinet{ pixel_x = -26 }, +/obj/machinery/flasher/portable, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -71709,6 +71924,12 @@ /obj/effect/spawner/window/reinforced, /turf/simulated/floor/plating, /area/security/securehallway) +"kCy" = ( +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkredcorners" + }, +/area/tcommsat/server) "kCC" = ( /obj/machinery/door/poddoor/shutters/preopen{ dir = 2; @@ -72102,6 +72323,7 @@ c_tag = "Brig Cell 5"; dir = 6 }, +/obj/machinery/atmospherics/unary/vent_pump/on, /turf/simulated/floor/plasteel{ dir = 1 }, @@ -73110,16 +73332,6 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/tourist) -"kOr" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/medical/cloning) "kOs" = ( /obj/structure/chair/sofa/left, /obj/random/therapy, @@ -73185,7 +73397,7 @@ color = "#996633" }, /obj/item/reagent_containers/food/snacks/meatsteak, -/turf/simulated/floor/carpet/royalblack, +/turf/simulated/floor/carpet/black, /area/ntrep) "kPe" = ( /obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction, @@ -73443,7 +73655,7 @@ /obj/structure/cable{ icon_state = "2-8" }, -/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plasteel{ dir = 1 }, @@ -73840,13 +74052,13 @@ dir = 4; icon_state = "darkblue" }, -/area/chapel/main) +/area/chapel/massdriver) "kUj" = ( /obj/machinery/camera{ c_tag = "NT Representative's Office 2"; dir = 6 }, -/turf/simulated/floor/carpet/royalblack, +/turf/simulated/floor/carpet/black, /area/ntrep) "kUn" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -74025,7 +74237,7 @@ /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 8 }, -/turf/simulated/floor/carpet/royalblack, +/turf/simulated/floor/carpet/black, /area/ntrep) "kVB" = ( /obj/machinery/mech_bay_recharge_port{ @@ -74426,8 +74638,8 @@ }, /area/maintenance/backstage) "kYp" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 9 +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 }, /turf/simulated/floor/plasteel{ dir = 1 @@ -75179,6 +75391,15 @@ }, /turf/simulated/floor/greengrid, /area/security/nuke_storage) +"ldG" = ( +/obj/machinery/door/firedoor, +/obj/effect/decal/warning_stripes/yellow, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/hallway/secondary/entry/commercial) "ldJ" = ( /obj/structure/barricade/security, /obj/effect/decal/cleanable/dirt, @@ -76464,10 +76685,6 @@ }, /turf/simulated/floor/plating, /area/maintenance/fsmaint) -"loQ" = ( -/obj/machinery/disposal, -/turf/simulated/floor/carpet/royalblack, -/area/ntrep) "loR" = ( /obj/effect/decal/warning_stripes/yellow, /obj/machinery/portable_atmospherics/canister/oxygen, @@ -77489,17 +77706,6 @@ icon_state = "red" }, /area/security/main) -"lxy" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "dark" - }, -/area/medical/genetics) "lxA" = ( /obj/effect/decal/warning_stripes/east, /obj/machinery/atmospherics/unary/vent_scrubber{ @@ -77696,20 +77902,6 @@ dir = 1 }, /area/security/brigstaff) -"lzn" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 8 - }, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/medical/cloning) "lzo" = ( /obj/item/flag/nt, /obj/machinery/light{ @@ -77877,7 +78069,7 @@ dir = 8 }, /turf/simulated/floor/plating, -/area/chapel/main) +/area/chapel/massdriver) "lAj" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -78150,7 +78342,7 @@ dir = 9; icon_state = "darkblue" }, -/area/chapel/main) +/area/chapel/massdriver) "lCA" = ( /turf/simulated/wall, /area/hallway/primary/port/south) @@ -78237,7 +78429,7 @@ dir = 8; icon_state = "darkblue" }, -/area/chapel/main) +/area/chapel/massdriver) "lDe" = ( /obj/machinery/atmospherics/unary/outlet_injector/on{ dir = 1 @@ -79025,7 +79217,7 @@ /turf/simulated/floor/plasteel{ icon_state = "cult" }, -/area/chapel/office) +/area/chapel/morgue) "lJU" = ( /obj/structure/window/reinforced{ dir = 8 @@ -79183,6 +79375,11 @@ icon_state = "darkgrey" }, /area/engineering/mechanic_workshop/hangar) +"lLc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/vomit, +/turf/simulated/floor/plating, +/area/maintenance/secpost) "lLh" = ( /obj/effect/decal/cleanable/dust, /obj/effect/turf_decal/siding/wood, @@ -79289,6 +79486,9 @@ dir = 4 }, /obj/structure/window/reinforced, +/obj/machinery/light{ + dir = 8 + }, /turf/simulated/floor/plasteel{ dir = 10; icon_state = "darkblue" @@ -80082,6 +80282,15 @@ }, /turf/simulated/floor/plating, /area/maintenance/starboard) +"lSD" = ( +/obj/machinery/alarm{ + pixel_y = 24 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "neutral" + }, +/area/hallway/primary/central/south) "lSL" = ( /obj/effect/decal/warning_stripes/yellow/hollow, /obj/effect/decal/warning_stripes/east, @@ -80860,6 +81069,7 @@ /area/maintenance/trading) "lYj" = ( /obj/machinery/hologram/holopad, +/obj/effect/decal/warning_stripes/blue/hollow, /turf/simulated/floor/plasteel{ dir = 1 }, @@ -80983,10 +81193,18 @@ /obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, /obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, /obj/structure/cable{ - icon_state = "1-2" + icon_state = "2-8" }, /obj/structure/cable{ - icon_state = "2-8" + icon_state = "2-4" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "1-8" }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -81238,6 +81456,9 @@ /obj/item/radio/intercom{ pixel_x = -28 }, +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_y = 30 + }, /turf/simulated/floor/wood, /area/library) "mbz" = ( @@ -81961,7 +82182,7 @@ /turf/simulated/floor/plasteel{ icon_state = "cult" }, -/area/chapel/office) +/area/chapel/morgue) "mfx" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ @@ -82211,6 +82432,32 @@ /obj/effect/spawner/window/reinforced, /turf/simulated/floor/plating, /area/toxins/server) +"mhj" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/structure/window/reinforced{ + color = "red" + }, +/obj/structure/window/reinforced{ + color = "red"; + dir = 1 + }, +/obj/machinery/door/window{ + name = "Secure Armory"; + req_access = list(1); + color = "red" + }, +/obj/item/clothing/shoes/jackboots/armored, +/obj/item/clothing/shoes/jackboots/armored, +/obj/item/clothing/shoes/jackboots/armored, +/obj/item/clothing/shoes/jackboots/armored, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "mht" = ( /obj/item/pod_parts/core, /obj/item/circuitboard/mecha/pod, @@ -82250,7 +82497,7 @@ dir = 6; icon_state = "vault" }, -/area/chapel/main) +/area/chapel/massdriver) "mhK" = ( /obj/structure/sink/kitchen{ pixel_y = 25 @@ -82299,6 +82546,21 @@ }, /turf/simulated/floor/glass/reinforced, /area/quartermaster/office) +"mio" = ( +/obj/structure/table/socle, +/obj/item/storage/funeral_urn/random{ + pixel_x = 1; + pixel_y = 9 + }, +/obj/machinery/firealarm{ + dir = 1; + name = "south fire alarm"; + pixel_y = 26 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/office) "mir" = ( /obj/structure/cable{ icon_state = "1-2" @@ -83028,11 +83290,14 @@ /obj/structure/disposalpipe/junction/reversed{ dir = 8 }, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/simulated/floor/plasteel{ dir = 5; icon_state = "vault" }, -/area/chapel/main) +/area/chapel/massdriver) "mmS" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 @@ -83291,33 +83556,6 @@ }, /turf/space/openspace, /area/space) -"mpH" = ( -/obj/structure/disposalpipe/sortjunction{ - dir = 1; - name = "Captain's Office"; - sortType = 18; - icon_state = "pipe-j2s" - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/effect/turf_decal{ - dir = 8; - icon_state = "golden_stripes" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 8 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/bridge) "mpL" = ( /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ @@ -83481,6 +83719,15 @@ /area/maintenance/fpmaint) "mry" = ( /obj/structure/closet/crate/engineering, +/obj/item/stack/sheet/metal{ + amount = 50 + }, +/obj/item/stack/sheet/metal{ + amount = 50 + }, +/obj/item/stack/sheet/glass{ + amount = 50 + }, /obj/effect/spawner/lootdrop/maintenance, /turf/simulated/floor/plating, /area/maintenance/apmaint) @@ -85001,6 +85248,15 @@ icon_state = "plant-22"; tag = "icon-plant-22" }, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_y = 24 + }, +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2" + }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -85197,12 +85453,12 @@ /obj/machinery/camera{ c_tag = "Brig Cell 2" }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 6 - }, /obj/structure/chair/comfy/teal{ dir = 4 }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, /turf/simulated/floor/carpet/cyan, /area/security/prison/cell_block/A) "mGy" = ( @@ -86321,19 +86577,6 @@ icon_state = "neutralfull" }, /area/hallway/primary/central/se) -"mND" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/cable{ - icon_state = "2-8" - }, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/medical/cryo) "mNG" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -86505,7 +86748,7 @@ dir = 9; icon_state = "vault" }, -/area/chapel/main) +/area/chapel/massdriver) "mOR" = ( /obj/structure/cable{ icon_state = "1-2" @@ -86582,7 +86825,7 @@ /obj/item/twohanded/required/kirbyplants, /obj/machinery/firealarm{ dir = 4; - pixel_x = -28 + pixel_x = -25 }, /obj/machinery/light{ dir = 8 @@ -86591,7 +86834,7 @@ dir = 5; icon_state = "vault" }, -/area/chapel/main) +/area/chapel/massdriver) "mPu" = ( /obj/effect/decal/warning_stripes/west, /turf/simulated/floor/plasteel, @@ -86891,6 +87134,17 @@ icon_state = "neutralcorner" }, /area/maintenance/apmaint) +"mRP" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/cloning) "mSa" = ( /obj/machinery/light, /turf/simulated/floor/plasteel{ @@ -87192,7 +87446,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/chapel/main) +/area/chapel/massdriver) "mTC" = ( /obj/structure/cable{ icon_state = "1-2" @@ -87688,6 +87942,18 @@ /obj/machinery/door/airlock/maintenance, /turf/simulated/floor/plating, /area/maintenance/asmaint2) +"mXr" = ( +/obj/structure/window/reinforced, +/obj/item/flag/nt, +/obj/structure/sign/atmosplaque{ + pixel_y = 32; + desc = "Важное Уточнение! Главный Инженер пожелал оставаться анонимным, поэтому, обойдёмся прозвищем. За выдающиеся успехи в области инженерного менеджмента, а также успешное проектирование станции Нова по всем стандартам НаноТрейзен. Благодарим вас за труд, PiroMage. Слава НаноТрейзен!"; + name = "Благодарственное Письмо Для Главного Инженера Команды Архитекторов Станции Нова" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/bridge) "mXt" = ( /obj/structure/window/reinforced, /obj/structure/window/reinforced{ @@ -87752,10 +88018,6 @@ layer = 2.9 }, /obj/effect/decal/warning_stripes/red/hollow, -/obj/item/clothing/suit/armor/riot, -/obj/item/shield/riot, -/obj/item/clothing/gloves/combat, -/obj/item/clothing/head/helmet/riot, /obj/structure/window/reinforced{ color = "red" }, @@ -87773,6 +88035,10 @@ req_access = list(1); color = "red" }, +/obj/item/clothing/gloves/combat, +/obj/item/clothing/gloves/combat, +/obj/item/clothing/gloves/combat, +/obj/item/clothing/gloves/combat, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -88283,19 +88549,6 @@ }, /area/security/processing) "nbu" = ( -/obj/item/ammo_box/magazine/enforcer/lethal{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/ammo_box/magazine/enforcer/lethal, -/obj/item/ammo_box/magazine/enforcer/lethal{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/ammo_box/magazine/enforcer/lethal{ - pixel_x = -6; - pixel_y = 6 - }, /obj/effect/decal/warning_stripes/red/hollow, /obj/structure/rack{ dir = 8; @@ -88313,6 +88566,24 @@ req_access = list(1); color = "red" }, +/obj/item/ammo_box/c9mm, +/obj/item/ammo_box/c9mm{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/ammo_box/magazine/enforcer/lethal{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/ammo_box/magazine/enforcer/lethal, +/obj/item/ammo_box/magazine/enforcer/lethal{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/ammo_box/magazine/enforcer/lethal{ + pixel_x = -6; + pixel_y = 6 + }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -89332,7 +89603,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/chapel/main) +/area/chapel/massdriver) "niY" = ( /obj/structure/cable{ icon_state = "1-2" @@ -89789,8 +90060,8 @@ frequency = 1379; master_tag = "ex"; name = "interior access button"; - pixel_x = 21; - pixel_y = -21 + pixel_x = 25; + pixel_y = -25 }, /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 6 @@ -89812,6 +90083,22 @@ icon_state = "whitegreen" }, /area/medical/virology/lab) +"nms" = ( +/obj/structure/safe/floor, +/obj/item/seeds/wheat/meat, +/obj/item/gun/energy/floragun{ + selfcharge = 0; + emagged = 1; + name = "old floral somatoray"; + can_charge = 1; + cell_type = /obj/item/stock_parts/cell/degraded; + ammo_type = list(/obj/item/ammo_casing/energy/flora/beta,/obj/item/ammo_casing/energy/flora/gamma); + current_skin = "oldflora"; + description_info = "Это энергетическое оружие. Имеет 2 режима стрельбы: бета и гамма. Бета изменяет геном растений. Гамма ускоряет рост растений. Чтобы перезарядить это оружие, используйте устройство для подзарядки оружия."; + desc = "Старый ботанический инструмент, испускающий контролируемое излучение, вызывающее мутации в клетках растений, не имеет самозарядки. Чтобы перезарядить это оружие, используйте устройство для подзарядки оружия." + }, +/turf/simulated/floor/grass, +/area/maintenance/garden) "nmx" = ( /obj/structure/cable{ icon_state = "4-8" @@ -90391,23 +90678,6 @@ }, /turf/simulated/floor/wood/dark, /area/crew_quarters/bar/atrium) -"nrr" = ( -/obj/machinery/door/firedoor, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/door/airlock/medical/glass{ - id = "cloninglab"; - name = "Genetics Lab"; - req_access = list(9) - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "dark" - }, -/area/medical/genetics) "nrs" = ( /obj/structure/lattice, /obj/structure/window/reinforced, @@ -90930,7 +91200,7 @@ dir = 9; icon_state = "darkred" }, -/area/tcommsat/chamber) +/area/tcommsat/server) "nvU" = ( /obj/machinery/vending/wallmed{ pixel_x = 26; @@ -91021,6 +91291,26 @@ icon_state = "dark" }, /area/atmos) +"nwA" = ( +/obj/effect/spawner/random_spawners/blood_5, +/turf/simulated/floor/plating, +/area/maintenance/secpost) +"nwG" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/girder/reinforced, +/turf/simulated/floor/plating, +/area/maintenance/maintcentral) "nwN" = ( /obj/structure/chair/sofa/corner{ dir = 4 @@ -91294,6 +91584,7 @@ c_tag = "Brig Cell 3"; dir = 6 }, +/obj/machinery/atmospherics/unary/vent_pump/on, /turf/simulated/floor/plasteel{ dir = 1 }, @@ -91806,26 +92097,6 @@ }, /turf/simulated/floor/plating, /area/maintenance/tourist) -"nBP" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/medical/cryo) "nBS" = ( /obj/item/twohanded/required/kirbyplants, /obj/machinery/light/small{ @@ -92321,6 +92592,15 @@ icon_state = "white" }, /area/toxins/explab) +"nFO" = ( +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_y = 30 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/engineering/break_room) "nFR" = ( /obj/structure/chair/sofa/right, /obj/machinery/light{ @@ -93026,6 +93306,10 @@ /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, /turf/simulated/floor/plasteel{ dir = 6; icon_state = "vault" @@ -93253,7 +93537,9 @@ /area/quartermaster/miningdock) "nMX" = ( /obj/effect/decal/warning_stripes/east, -/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/item/videocam, +/obj/item/videocam, +/obj/structure/closet/crate, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -93504,14 +93790,6 @@ dir = 1 }, /area/security/prison/cell_block/A) -"nOM" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 10 - }, -/turf/simulated/floor/plasteel{ - dir = 1 - }, -/area/security/prison/cell_block/A) "nON" = ( /obj/machinery/door/firedoor, /obj/effect/decal/warning_stripes/yellow, @@ -94694,6 +94972,10 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/maintenance/apmaint) +"nYP" = ( +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating, +/area/chapel/massdriver) "nYR" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 @@ -94784,12 +95066,6 @@ /obj/structure/chair/sofa/corner{ color = "#85130b" }, -/obj/structure/curtain/open/shower/security{ - alpha = 255; - name = "backstage"; - anchored = 1; - pixel_y = 32 - }, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dust, /turf/simulated/floor/wood, @@ -95612,11 +95888,17 @@ tag_chamber_sensor = "sw_maint2_sensor"; tag_exterior_door = "sw_maint2_outer"; tag_interior_door = "sw_maint2_inner"; - pixel_x = 25 + pixel_x = 25; + pixel_y = -2 }, /obj/structure/cable{ icon_state = "1-2" }, +/obj/machinery/airlock_sensor{ + id_tag = "sw_maint2_sensor"; + pixel_y = 5; + pixel_x = 25 + }, /turf/simulated/floor/plating, /area/maintenance/starboard) "ofE" = ( @@ -95801,6 +96083,7 @@ /obj/machinery/light{ dir = 1 }, +/obj/machinery/atmospherics/unary/vent_pump/on, /turf/simulated/floor/carpet/red, /area/security/prison/cell_block/A) "ohx" = ( @@ -97011,7 +97294,7 @@ dir = 8; icon_state = "darkblue" }, -/area/chapel/main) +/area/chapel/massdriver) "osl" = ( /obj/structure/table/reinforced, /obj/item/restraints/legcuffs/beartrap, @@ -97131,7 +97414,7 @@ /turf/simulated/floor/plasteel{ icon_state = "cult" }, -/area/chapel/office) +/area/chapel/morgue) "ote" = ( /obj/effect/decal/warning_stripes/yellow/hollow, /obj/machinery/power/port_gen/pacman, @@ -97466,6 +97749,37 @@ /obj/machinery/light/small, /turf/simulated/floor/plasteel/freezer, /area/crew_quarters/heads/hop) +"ovd" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/structure/window/reinforced{ + color = "red" + }, +/obj/structure/window/reinforced{ + color = "red"; + dir = 1 + }, +/obj/structure/window/reinforced{ + color = "red"; + dir = 4 + }, +/obj/machinery/door/window{ + dir = 8; + name = "Secure Armory"; + req_access = list(1); + color = "red" + }, +/obj/item/clothing/suit/armor/riot, +/obj/item/clothing/suit/armor/riot, +/obj/item/clothing/suit/armor/riot, +/obj/item/clothing/suit/armor/riot, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "ovn" = ( /obj/structure/table/reinforced, /obj/item/clipboard, @@ -98476,10 +98790,10 @@ dir = 1; in_use = 1 }, -/turf/simulated/floor/carpet/royalblack, +/turf/simulated/floor/carpet/black, /area/ntrep) "oDB" = ( -/obj/item/reagent_containers/spray/pestspray, +/obj/structure/flora/ausbushes/sunnybush, /turf/simulated/floor/grass, /area/maintenance/garden) "oDL" = ( @@ -98620,7 +98934,7 @@ }, /obj/machinery/airlock_sensor{ id_tag = "aisolw_sensor"; - pixel_y = -28 + pixel_y = 35 }, /obj/machinery/atmospherics/unary/vent_pump/high_volume{ frequency = 1379; @@ -98656,6 +98970,15 @@ icon_state = "neutralfull" }, /area/hallway/secondary/entry/lounge) +"oEP" = ( +/obj/structure/chair/comfy/brown{ + dir = 1 + }, +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_y = -30 + }, +/turf/simulated/floor/wood, +/area/library) "oET" = ( /obj/effect/decal/warning_stripes/northeast, /turf/simulated/floor/plasteel{ @@ -99616,7 +99939,6 @@ layer = 2.9 }, /obj/effect/decal/warning_stripes/red/hollow, -/obj/item/clothing/suit/armor/bulletproof, /obj/machinery/door/window{ name = "Secure Armory"; req_access = list(1); @@ -99629,7 +99951,9 @@ color = "red"; dir = 1 }, -/obj/item/clothing/gloves/combat, +/obj/item/clothing/head/helmet/alt, +/obj/item/clothing/head/helmet/alt, +/obj/item/clothing/head/helmet/alt, /obj/item/clothing/head/helmet/alt, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -100057,6 +100381,10 @@ icon_state = "darkred" }, /area/bridge) +"oPt" = ( +/obj/structure/flora/ausbushes/ywflowers/hell, +/turf/simulated/floor/grass, +/area/maintenance/garden) "oPu" = ( /obj/structure/chair/comfy/brown, /turf/simulated/floor/wood, @@ -100330,6 +100658,15 @@ icon_state = "neutral" }, /area/bridge/checkpoint/south) +"oRJ" = ( +/obj/machinery/alarm{ + dir = 1; + pixel_y = -24 + }, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/chapel/office) "oRO" = ( /obj/structure/chair/barber{ dir = 8 @@ -101838,12 +102175,6 @@ dir = 4; color = "#85130b" }, -/obj/structure/curtain/open/shower/security{ - alpha = 255; - name = "backstage"; - anchored = 1; - pixel_y = 32 - }, /turf/simulated/floor/wood{ icon_state = "wood-broken3"; tag = "icon-wood-broken3" @@ -104081,7 +104412,7 @@ /obj/effect/decal/warning_stripes/north, /obj/structure/fans/tiny, /turf/simulated/floor/plating, -/area/chapel/main) +/area/chapel/massdriver) "pty" = ( /obj/structure/bookcase{ name = "bookcase (Non-Fiction)" @@ -104149,9 +104480,6 @@ "ptU" = ( /obj/item/storage/fancy/donut_box, /obj/structure/table/wood/fancy/purple, -/obj/item/radio/intercom{ - pixel_y = -28 - }, /turf/simulated/floor/carpet/purple, /area/crew_quarters/captain) "ptW" = ( @@ -104390,7 +104718,7 @@ /turf/simulated/floor/plasteel{ icon_state = "cult" }, -/area/chapel/office) +/area/chapel/morgue) "pvI" = ( /obj/machinery/door/airlock/security/glass{ id_tag = "BrigLeft"; @@ -104487,10 +104815,13 @@ c_tag = "Cremator"; dir = 8 }, +/obj/machinery/light_switch{ + pixel_x = 26 + }, /turf/simulated/floor/plasteel{ icon_state = "cult" }, -/area/chapel/office) +/area/chapel/morgue) "pwp" = ( /obj/structure/chair/stool, /obj/effect/decal/cleanable/dust, @@ -104639,7 +104970,7 @@ dir = 10; icon_state = "darkred" }, -/area/tcommsat/chamber) +/area/tcommsat/server) "pxI" = ( /obj/structure/window/reinforced{ dir = 8 @@ -104976,9 +105307,6 @@ /turf/simulated/floor/plating, /area/maintenance/apmaint) "pzK" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/machinery/turretid/stun{ control_area = "AI Satellite Antechamber"; name = "AI Antechamber Turret Control"; @@ -104997,7 +105325,7 @@ dir = 10; icon_state = "darkred" }, -/area/tcommsat/chamber) +/area/tcommsat/server) "pzY" = ( /obj/effect/decal/warning_stripes/south, /obj/item/radio/intercom{ @@ -105300,12 +105628,12 @@ /turf/simulated/wall, /area/maintenance/apmaint) "pBK" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 5 - }, /obj/structure/chair/comfy/red{ dir = 4 }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, /turf/simulated/floor/carpet/red, /area/security/prison/cell_block/A) "pBN" = ( @@ -105921,6 +106249,12 @@ icon_state = "neutralfull" }, /area/hallway/secondary/entry/commercial) +"pGo" = ( +/obj/structure/table/glass, +/obj/item/clipboard, +/obj/item/toy/figure/md, +/turf/simulated/floor/carpet/cyan, +/area/medical/medrest) "pGy" = ( /obj/machinery/light{ dir = 4 @@ -106039,7 +106373,7 @@ }, /obj/machinery/airlock_sensor{ id_tag = "station_ai_sensor"; - pixel_y = -10; + pixel_y = 7; pixel_x = 57 }, /turf/simulated/floor/plasteel{ @@ -106567,7 +106901,7 @@ scrub_N2O = 1; scrub_Toxins = 1 }, -/turf/simulated/floor/carpet/royalblack, +/turf/simulated/floor/carpet/black, /area/ntrep) "pLX" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -106745,7 +107079,7 @@ /obj/structure/cable{ icon_state = "2-4" }, -/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plasteel{ dir = 1 }, @@ -107874,6 +108208,9 @@ /obj/structure/cable{ icon_state = "4-8" }, +/obj/structure/cable{ + icon_state = "0-4" + }, /turf/simulated/floor/plating, /area/maintenance/starboard) "pVm" = ( @@ -108047,6 +108384,15 @@ /obj/machinery/light/small, /turf/simulated/floor/plating, /area/maintenance/brig) +"pWd" = ( +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_y = 30 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/security/permahallway) "pWf" = ( /turf/simulated/floor/plasteel{ dir = 1; @@ -108529,6 +108875,11 @@ "pYS" = ( /obj/structure/window/reinforced, /obj/item/flag/nt, +/obj/structure/sign/tajarplaque{ + desc = "Важное Уточнение! Рабочие пожелали оставаться анонимными, поэтому, обойдёмся их прозвищами. За помощь Главному Инженеру Новы в поисках и устранении неисправностей на станции НаноТрейзен. С благодарностью, Den10g. Слава НаноТрейзен!"; + name = "Благодарственное Письмо от Главного Инженера станции Нова"; + pixel_y = 32 + }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -108731,12 +109082,12 @@ /obj/structure/table/wood{ color = "#996633" }, -/obj/machinery/photocopier/faxmachine/longrange{ - department = "NT Representative's Office" - }, /obj/item/radio/intercom{ pixel_x = 28 }, +/obj/machinery/photocopier/faxmachine/longrange{ + department = "NT Representative's Office" + }, /turf/simulated/floor/carpet/royalblack, /area/ntrep) "qaJ" = ( @@ -109887,7 +110238,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/chapel/main) +/area/chapel/massdriver) "qjQ" = ( /turf/simulated/floor/plasteel{ icon_state = "whiteyellow" @@ -110582,7 +110933,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/tcommsat/chamber) +/area/tcommsat/server) "qqq" = ( /obj/structure/chair/comfy/teal{ dir = 8 @@ -110676,7 +111027,7 @@ /turf/simulated/floor/plasteel{ icon_state = "cult" }, -/area/chapel/office) +/area/chapel/morgue) "qrs" = ( /obj/structure/cable{ icon_state = "2-4" @@ -111531,6 +111882,18 @@ slowdown = -0.3 }, /area/hallway/primary/port/south) +"qwG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/power/apc{ + dir = 1; + pixel_y = 26 + }, +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2" + }, +/turf/simulated/floor/plating, +/area/maintenance/disposal) "qwI" = ( /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" @@ -111709,7 +112072,7 @@ /turf/simulated/floor/plasteel{ icon_state = "cult" }, -/area/chapel/office) +/area/chapel/morgue) "qyn" = ( /obj/structure/chair/sofa/pew/right{ dir = 4 @@ -111817,7 +112180,7 @@ icon_state = "1-4" }, /obj/structure/cable{ - icon_state = "4-8" + icon_state = "1-8" }, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" @@ -112047,7 +112410,13 @@ req_access = list(73); security_level = 1 }, -/turf/simulated/floor/carpet/royalblack, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/simulated/floor/wood/dark, /area/ntrep) "qAG" = ( /obj/machinery/vending/snack, @@ -112348,6 +112717,7 @@ }, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /obj/machinery/hologram/holopad, +/obj/effect/decal/warning_stripes/blue/hollow, /turf/simulated/floor/plasteel{ dir = 1 }, @@ -112467,7 +112837,7 @@ /turf/simulated/floor/plasteel{ icon_state = "darkredcorners" }, -/area/tcommsat/chamber) +/area/tcommsat/server) "qDk" = ( /obj/machinery/optable, /obj/machinery/shower{ @@ -112732,6 +113102,13 @@ dir = 1 }, /area/hallway/primary/central/second/east) +"qFi" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/simulated/floor/plating, +/area/maintenance/disposal) "qFu" = ( /obj/machinery/door/firedoor, /obj/effect/decal/warning_stripes/yellow, @@ -112794,9 +113171,6 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 1 - }, /turf/simulated/floor/carpet/cyan, /area/security/prison/cell_block/A) "qFV" = ( @@ -113118,6 +113492,9 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/simulated/floor/plasteel{ dir = 6; icon_state = "vault" @@ -113387,6 +113764,10 @@ }, /obj/machinery/hologram/holopad, /obj/effect/landmark/event/lightsout, +/obj/structure/disposalpipe/junction{ + dir = 4; + tag = "icon-pipe-j1 (EAST)" + }, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, @@ -113543,12 +113924,14 @@ req_access = list(1); color = "red" }, -/obj/item/clothing/head/helmet/night, -/obj/item/clothing/head/helmet/night{ - pixel_y = -2 +/obj/item/gun/energy/gun/advtaser{ + pixel_x = -3; + pixel_y = 3 }, -/obj/item/clothing/head/helmet/night{ - pixel_y = -4 +/obj/item/gun/energy/gun/advtaser, +/obj/item/gun/energy/gun/advtaser{ + pixel_x = 3; + pixel_y = -3 }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -113702,9 +114085,10 @@ }, /area/quartermaster/miningstorage) "qNY" = ( -/obj/structure/girder/reinforced, -/turf/simulated/floor/plating, -/area/maintenance/maintcentral) +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/tcommsat/server) "qOc" = ( /obj/machinery/disposal, /obj/structure/disposalpipe/trunk{ @@ -114334,7 +114718,7 @@ dir = 8; icon_state = "darkblue" }, -/area/chapel/main) +/area/chapel/massdriver) "qRN" = ( /obj/machinery/camera{ c_tag = "Library Games Room"; @@ -114449,7 +114833,7 @@ dir = 5; icon_state = "darkred" }, -/area/tcommsat/chamber) +/area/tcommsat/server) "qSA" = ( /obj/machinery/door/airlock/maintenance{ req_access = list(12) @@ -114692,6 +115076,11 @@ /obj/structure/disposalpipe/segment{ dir = 10 }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, /turf/simulated/floor/plating, /area/maintenance/disposal) "qUp" = ( @@ -114962,7 +115351,7 @@ dir = 10; icon_state = "darkblue" }, -/area/chapel/main) +/area/chapel/massdriver) "qWJ" = ( /obj/structure/table/reinforced, /obj/effect/decal/warning_stripes/yellow/hollow, @@ -115562,6 +115951,13 @@ icon_state = "neutral" }, /area/crew_quarters/serviceyard) +"rcy" = ( +/obj/machinery/vending/boozeomat, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/simulated/floor/wood/dark, +/area/ntrep) "rcB" = ( /obj/structure/table/reinforced, /obj/item/radio, @@ -116377,9 +116773,6 @@ }, /area/aisat/aihallway) "riR" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 1 }, @@ -116396,6 +116789,9 @@ /obj/effect/turf_decal/siding/white{ dir = 1 }, +/obj/structure/cable{ + icon_state = "2-4" + }, /turf/simulated/floor/glass, /area/crew_quarters/locker) "riV" = ( @@ -116571,7 +116967,6 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/unary/vent_scrubber/on, /turf/simulated/floor/carpet/red, /area/security/prison/cell_block/A) "rkW" = ( @@ -117013,12 +117408,10 @@ /obj/structure/cable{ icon_state = "1-8" }, -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 1 - }, /obj/structure/cable{ icon_state = "1-8" }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plasteel{ dir = 1 }, @@ -117866,7 +118259,7 @@ /obj/effect/decal/cleanable/dust, /obj/item/radio/intercom{ name = "north station intercom (General)"; - pixel_y = 28 + pixel_y = 24 }, /obj/machinery/light/small{ dir = 1 @@ -118630,19 +119023,6 @@ }, /turf/simulated/floor/carpet, /area/crew_quarters/captain/bedroom) -"rzi" = ( -/obj/machinery/computer/rdconsole/core, -/obj/effect/decal/warning_stripes/northwest, -/obj/machinery/requests_console{ - department = "Science"; - departmentType = 2; - name = "Research Request Console"; - pixel_x = -30 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/toxins/lab) "rzl" = ( /obj/structure/girder, /turf/simulated/floor/plating, @@ -118874,6 +119254,34 @@ /obj/effect/decal/cleanable/dust, /turf/simulated/floor/wood, /area/maintenance/backstage) +"rAR" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/button/windowtint{ + pixel_y = -24; + pixel_x = 24; + id = "ntrepprivate"; + name = "Door tint control" + }, +/obj/machinery/door_control{ + id = "NTRprivate"; + name = "Privacy Shutters Control"; + pixel_x = 26; + pixel_y = -33; + req_access = list(73) + }, +/obj/structure/disposalpipe/trunk/multiz/down{ + dir = 2 + }, +/turf/simulated/floor/carpet/black, +/area/ntrep) "rBa" = ( /obj/effect/turf_decal/siding/wood, /obj/structure/table/wood/fancy/red, @@ -120420,9 +120828,7 @@ /obj/structure/cable{ icon_state = "1-8" }, -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 1 - }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/carpet/cyan, /area/security/prison/cell_block/A) "rMp" = ( @@ -120874,7 +121280,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/chapel/main) +/area/chapel/massdriver) "rOU" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -122411,7 +122817,7 @@ }, /obj/item/storage/belt/utility, /turf/simulated/floor/redgrid, -/area/tcommsat/chamber) +/area/tcommsat/server) "saQ" = ( /turf/simulated/floor/plasteel{ dir = 4; @@ -122685,7 +123091,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/tcommsat/chamber) +/area/tcommsat/server) "scp" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -122698,6 +123104,24 @@ icon_state = "escape" }, /area/bridge/checkpoint/south) +"scq" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "vault" + }, +/area/chapel/massdriver) "scs" = ( /obj/item/stack/cable_coil/random, /turf/simulated/floor/plating, @@ -123150,7 +123574,6 @@ layer = 2.9 }, /obj/effect/decal/warning_stripes/red/hollow, -/obj/item/clothing/suit/armor/bulletproof, /obj/structure/window/reinforced{ color = "red" }, @@ -123163,8 +123586,10 @@ req_access = list(1); color = "red" }, -/obj/item/clothing/gloves/combat, -/obj/item/clothing/head/helmet/alt, +/obj/item/clothing/suit/armor/bulletproof, +/obj/item/clothing/suit/armor/bulletproof, +/obj/item/clothing/suit/armor/bulletproof, +/obj/item/clothing/suit/armor/bulletproof, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -123820,7 +124245,7 @@ dir = 4 }, /obj/effect/landmark/start/nanotrasen_rep, -/turf/simulated/floor/carpet/royalblack, +/turf/simulated/floor/carpet/black, /area/ntrep) "skT" = ( /turf/simulated/floor/plasteel{ @@ -123929,7 +124354,7 @@ /obj/machinery/airlock_sensor{ id_tag = "solar_xeno_sensor"; layer = 3.3; - pixel_y = 36 + pixel_y = 33 }, /obj/machinery/atmospherics/unary/vent_pump/high_volume{ dir = 8; @@ -124701,7 +125126,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/chapel/main) +/area/chapel/massdriver) "ssw" = ( /obj/machinery/camera{ c_tag = "Gravity Generator Area"; @@ -125025,7 +125450,7 @@ /obj/machinery/embedded_controller/radio/airlock/airlock_controller{ id_tag = "solar_tool_airlock"; layer = 3.3; - pixel_y = 25; + pixel_y = 26; req_access = list(13); tag_airpump = "solar_tool_pump"; tag_chamber_sensor = "solar_tool_sensor"; @@ -125035,7 +125460,7 @@ /obj/machinery/airlock_sensor{ id_tag = "solar_tool_sensor"; layer = 3.3; - pixel_y = 32 + pixel_y = 33 }, /obj/effect/decal/warning_stripes/yellow, /obj/structure/cable{ @@ -126014,15 +126439,15 @@ /obj/structure/disposalpipe/segment{ dir = 5 }, -/obj/item/radio/intercom{ - name = "south station intercom (General)"; - pixel_x = -28 +/obj/machinery/alarm{ + dir = 4; + pixel_x = -22 }, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "darkblue" }, -/area/chapel/main) +/area/chapel/massdriver) "sBo" = ( /obj/effect/decal/warning_stripes/red/hollow, /obj/structure/chair{ @@ -126386,7 +126811,7 @@ /turf/simulated/floor/plasteel{ icon_state = "cult" }, -/area/chapel/office) +/area/chapel/morgue) "sEP" = ( /obj/machinery/atmospherics/unary/outlet_injector/on{ dir = 4; @@ -127169,7 +127594,9 @@ /area/maintenance/casino) "sKl" = ( /obj/structure/window/reinforced, -/obj/item/twohanded/required/kirbyplants, +/obj/item/twohanded/required/kirbyplants{ + layer = 3.1 + }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -127424,10 +127851,15 @@ /obj/structure/chair{ dir = 1 }, +/obj/machinery/firealarm{ + dir = 1; + name = "south fire alarm"; + pixel_y = -24 + }, /turf/simulated/floor/plasteel{ icon_state = "darkblue" }, -/area/chapel/main) +/area/chapel/massdriver) "sMH" = ( /obj/effect/spawner/window/reinforced, /obj/structure/cable{ @@ -127993,9 +128425,6 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/structure/cable{ icon_state = "1-8" }, @@ -128006,6 +128435,11 @@ /obj/effect/turf_decal/siding/white{ dir = 1 }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, /turf/simulated/floor/glass, /area/crew_quarters/locker) "sRy" = ( @@ -128960,19 +129394,13 @@ dir = 4; icon_state = "darkred" }, -/area/tcommsat/chamber) +/area/tcommsat/server) "sXx" = ( /obj/structure/rack{ dir = 8; layer = 2.9 }, /obj/effect/decal/warning_stripes/red/hollow, -/obj/item/storage/lockbox/mindshield, -/obj/item/storage/box/trackimp, -/obj/item/storage/box/chemimp{ - pixel_x = 4; - pixel_y = 3 - }, /obj/structure/window/reinforced{ color = "red" }, @@ -128986,6 +129414,13 @@ req_access = list(1); color = "red" }, +/obj/item/lock_buster, +/obj/item/storage/box/trackimp, +/obj/item/storage/box/chemimp{ + pixel_x = 4; + pixel_y = 3 + }, +/obj/item/storage/lockbox/mindshield, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -129590,6 +130025,11 @@ icon_state = "dark" }, /area/chapel/office) +"tbV" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random_spawners/blood_5, +/turf/simulated/floor/plating, +/area/maintenance/secpost) "tci" = ( /obj/structure/chair/wood{ dir = 8 @@ -130171,9 +130611,6 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -130184,6 +130621,11 @@ /obj/effect/turf_decal/siding/white{ dir = 1 }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, /turf/simulated/floor/glass, /area/crew_quarters/locker) "tfx" = ( @@ -130466,6 +130908,12 @@ "thg" = ( /obj/effect/spawner/window/reinforced, /obj/structure/barricade/wooden/crude, +/obj/structure/curtain/open/shower/security{ + alpha = 255; + name = "backstage"; + anchored = 1; + pixel_y = 0 + }, /turf/simulated/floor/plating, /area/maintenance/backstage) "thk" = ( @@ -131164,12 +131612,6 @@ dir = 8; do_not_delete_me = 1 }, -/obj/structure/curtain/open/shower/security{ - alpha = 255; - name = "backstage"; - anchored = 1; - pixel_y = 32 - }, /obj/effect/decal/cleanable/dust, /turf/simulated/floor/wood, /area/maintenance/backstage) @@ -131245,7 +131687,7 @@ "tns" = ( /obj/structure/sign/holy, /turf/simulated/wall, -/area/chapel/main) +/area/chapel/massdriver) "tnu" = ( /turf/simulated/floor/plasteel{ dir = 1; @@ -131434,6 +131876,32 @@ icon_state = "neutralfull" }, /area/hallway/secondary/entry/lounge) +"tpw" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/structure/window/reinforced{ + color = "red" + }, +/obj/structure/window/reinforced{ + color = "red"; + dir = 1 + }, +/obj/machinery/door/window{ + name = "Secure Armory"; + req_access = list(1); + color = "red" + }, +/obj/item/clothing/gloves/color/black/ballistic, +/obj/item/clothing/gloves/color/black/ballistic, +/obj/item/clothing/gloves/color/black/ballistic, +/obj/item/clothing/gloves/color/black/ballistic, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "tpz" = ( /obj/effect/decal/warning_stripes/south, /obj/structure/sign/poster/official/space_a{ @@ -131529,7 +131997,7 @@ /turf/simulated/floor/plasteel{ icon_state = "cult" }, -/area/chapel/office) +/area/chapel/morgue) "tqt" = ( /obj/structure/table/glass, /obj/item/paper_bin{ @@ -131872,6 +132340,11 @@ }, /obj/effect/decal/warning_stripes/yellow/hollow, /obj/structure/closet/crate/freezer, +/obj/item/reagent_containers/food/condiment/tomatosauce, +/obj/item/reagent_containers/food/condiment/herbs, +/obj/item/reagent_containers/food/snacks/grown/tomato, +/obj/item/reagent_containers/food/snacks/grown/tomato, +/obj/item/reagent_containers/food/snacks/grown/tomato, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" }, @@ -132603,14 +133076,14 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 }, /turf/simulated/floor/plasteel{ dir = 9; icon_state = "vault" }, -/area/chapel/main) +/area/chapel/massdriver) "twF" = ( /obj/effect/decal/warning_stripes/yellow/hollow, /obj/structure/disposalpipe/junction/reversed, @@ -132704,6 +133177,20 @@ icon_state = "dark" }, /area/chapel/office) +"txj" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/trunk/multiz{ + dir = 2 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "dark" + }, +/area/medical/genetics) "txo" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -132924,12 +133411,6 @@ /area/hallway/secondary/entry/additional) "tyK" = ( /obj/item/twohanded/required/kirbyplants, -/obj/structure/curtain/open/shower/security{ - alpha = 255; - name = "backstage"; - anchored = 1; - pixel_y = 32 - }, /turf/simulated/floor/carpet/red, /area/maintenance/backstage) "tyM" = ( @@ -133104,7 +133585,7 @@ dir = 6; icon_state = "vault" }, -/area/chapel/main) +/area/chapel/massdriver) "tAm" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/cobweb2{ @@ -135099,9 +135580,6 @@ /turf/simulated/wall/r_wall, /area/quartermaster/delivery) "tPu" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/structure/cable{ icon_state = "1-4" }, @@ -135114,6 +135592,9 @@ /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 1 }, +/obj/structure/cable{ + icon_state = "1-8" + }, /turf/simulated/floor/carpet/purple, /area/janitor) "tPz" = ( @@ -136924,7 +137405,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/chapel/main) +/area/chapel/massdriver) "ubx" = ( /obj/machinery/newscaster{ pixel_y = -30 @@ -137359,7 +137840,7 @@ /obj/machinery/airlock_sensor{ id_tag = "port5_sensor"; pixel_x = 25; - pixel_y = 5 + pixel_y = 3 }, /turf/simulated/floor/plating, /area/maintenance/asmaint) @@ -137436,10 +137917,6 @@ /turf/simulated/floor/plasteel/dark, /area/maintenance/starboardaux) "ufB" = ( -/obj/machinery/firealarm{ - dir = 4; - pixel_y = -28 - }, /obj/structure/showcase{ density = 0; dir = 1; @@ -137448,11 +137925,19 @@ name = "Cyborg Statue" }, /obj/machinery/light, +/obj/machinery/power/apc{ + cell_type = 5000; + name = "south bump Important Area"; + pixel_y = -24 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, /turf/simulated/floor/plasteel{ dir = 6; icon_state = "darkred" }, -/area/tcommsat/chamber) +/area/tcommsat/server) "ufI" = ( /obj/machinery/power/apc{ dir = 4; @@ -139925,16 +140410,14 @@ /turf/simulated/floor/glass, /area/crew_quarters/bar/atrium) "uAc" = ( -/obj/effect/decal/warning_stripes/blue/hollow, -/obj/structure/bed/roller, -/obj/machinery/iv_drip, -/obj/machinery/light{ - dir = 8 - }, /obj/machinery/firealarm{ dir = 4; pixel_x = -28 }, +/obj/structure/sink{ + dir = 8; + pixel_x = -12 + }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "dark" @@ -141226,6 +141709,37 @@ icon_state = "whitehall" }, /area/toxins/xenobiology) +"uJX" = ( +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/effect/decal/warning_stripes/red/hollow, +/obj/structure/window/reinforced{ + color = "red" + }, +/obj/structure/window/reinforced{ + color = "red"; + dir = 1 + }, +/obj/structure/window/reinforced{ + color = "red"; + dir = 4 + }, +/obj/machinery/door/window{ + dir = 8; + name = "Secure Armory"; + req_access = list(1); + color = "red" + }, +/obj/item/shield/riot, +/obj/item/shield/riot, +/obj/item/shield/riot, +/obj/item/shield/riot, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/securearmory) "uJY" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ @@ -141629,6 +142143,29 @@ dir = 8 }, /area/crew_quarters/locker) +"uNu" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10; + initialize_directions = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/cloning) "uNv" = ( /obj/structure/cable/yellow{ d1 = 1; @@ -142081,7 +142618,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/chapel/main) +/area/chapel/massdriver) "uRw" = ( /obj/structure/table/glass, /obj/item/reagent_containers/food/drinks/coffee{ @@ -142222,9 +142759,6 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -142238,6 +142772,9 @@ /obj/effect/turf_decal/siding/white{ dir = 1 }, +/obj/structure/cable{ + icon_state = "2-4" + }, /turf/simulated/floor/glass, /area/crew_quarters/locker) "uSo" = ( @@ -142527,7 +143064,7 @@ /turf/simulated/floor/plasteel{ icon_state = "cult" }, -/area/chapel/office) +/area/chapel/morgue) "uVn" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 5 @@ -142766,7 +143303,6 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/unary/vent_scrubber/on, /turf/simulated/floor/plasteel{ dir = 1 }, @@ -143246,7 +143782,7 @@ dir = 4 }, /obj/item/reagent_containers/food/drinks/shaker, -/turf/simulated/floor/carpet/royalblack, +/turf/simulated/floor/carpet/black, /area/ntrep) "uZF" = ( /obj/structure/disposalpipe/segment{ @@ -143794,6 +144330,15 @@ }, /turf/simulated/floor/engine, /area/engineering/supermatter) +"vdg" = ( +/obj/structure/chair/comfy/purp{ + dir = 4 + }, +/obj/item/radio/intercom{ + pixel_y = -28 + }, +/turf/simulated/floor/carpet/purple, +/area/crew_quarters/captain) "vdh" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -144787,6 +145332,7 @@ }, /area/hydroponics) "vlM" = ( +/obj/structure/flora/ausbushes/lavendergrass, /obj/item/hatchet, /obj/effect/spawner/random_spawners/rodent, /turf/simulated/floor/grass, @@ -145018,6 +145564,12 @@ icon_state = "yellow" }, /area/engineering/engine) +"vnH" = ( +/obj/machinery/light_switch{ + pixel_x = -24 + }, +/turf/simulated/floor/carpet/black, +/area/chapel/main) "vnM" = ( /obj/structure/stairs{ dir = 4; @@ -145403,7 +145955,7 @@ dir = 4; icon_state = "darkblue" }, -/area/chapel/main) +/area/chapel/massdriver) "vsi" = ( /obj/structure/cable, /obj/machinery/power/apc{ @@ -145580,10 +146132,13 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/chapel/main) +/area/chapel/massdriver) "vts" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -145735,7 +146290,7 @@ dir = 5; icon_state = "vault" }, -/area/chapel/main) +/area/chapel/massdriver) "vuR" = ( /obj/machinery/light{ dir = 1; @@ -145879,11 +146434,14 @@ }, /obj/machinery/airlock_sensor{ id_tag = "ex_sensor"; - pixel_y = -24 + pixel_y = 35 }, /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 4 }, +/obj/structure/sign/vacuum{ + pixel_y = -32 + }, /turf/simulated/floor/engine/insulated, /area/maintenance/apmaint) "vvH" = ( @@ -146228,12 +146786,6 @@ dir = 4; do_not_delete_me = 1 }, -/obj/structure/curtain/open/shower/security{ - alpha = 255; - name = "backstage"; - anchored = 1; - pixel_y = 32 - }, /obj/item/trash/raisins, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dust, @@ -146424,7 +146976,7 @@ icon_state = "4-8" }, /turf/simulated/floor/plasteel{ - icon_state = "red" + icon_state = "redcorner" }, /area/security/seceqstorage) "vzX" = ( @@ -146463,6 +147015,11 @@ icon_state = "neutralfull" }, /area/atmos) +"vAn" = ( +/obj/structure/flora/ausbushes/sparsegrass, +/obj/structure/flora/ausbushes/fernybush, +/turf/simulated/floor/grass, +/area/maintenance/garden) "vAs" = ( /obj/machinery/status_display{ pixel_y = -32 @@ -146918,7 +147475,7 @@ dir = 4; icon_state = "darkblue" }, -/area/chapel/main) +/area/chapel/massdriver) "vEi" = ( /obj/structure/grille/broken, /obj/machinery/light/small{ @@ -147117,22 +147674,6 @@ icon_state = "dark" }, /area/turret_protected/aisat_interior) -"vFN" = ( -/obj/machinery/camera{ - c_tag = "Central Bridge Hallway East 2"; - dir = 10 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/floor/engine{ - slowdown = -0.3 - }, -/area/hallway/primary/central) "vFV" = ( /obj/machinery/atmospherics/pipe/simple/visible{ dir = 6 @@ -147269,7 +147810,7 @@ /turf/simulated/floor/plasteel{ icon_state = "darkredfull" }, -/area/tcommsat/chamber) +/area/tcommsat/server) "vHo" = ( /obj/machinery/power/supermatter_shard{ anchored = 1; @@ -148122,7 +148663,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/tcommsat/chamber) +/area/tcommsat/server) "vNO" = ( /obj/structure/window/reinforced{ dir = 1 @@ -148309,25 +148850,6 @@ /obj/effect/spawner/lootdrop/maintenance, /turf/simulated/floor/plating, /area/maintenance/fore2) -"vOz" = ( -/obj/effect/mapping_helpers/airlock/unres{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/door/airlock/medical/glass{ - id = "cloninglab"; - name = "Cloning Lab"; - req_access = list(5) - }, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/medical/cloning) "vOB" = ( /turf/simulated/floor/plasteel{ icon_state = "white" @@ -148464,16 +148986,8 @@ /area/hallway/primary/command/east) "vQd" = ( /obj/machinery/message_server, -/obj/machinery/power/apc{ - cell_type = 5000; - name = "south bump Important Area"; - pixel_y = -24 - }, -/obj/structure/cable{ - icon_state = "0-4" - }, /turf/simulated/floor/redgrid, -/area/tcommsat/chamber) +/area/tcommsat/server) "vQh" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable{ @@ -149510,7 +150024,7 @@ /obj/machinery/airlock_sensor{ id_tag = "engineering_east_sensor"; pixel_x = -25; - pixel_y = 10 + pixel_y = 7 }, /turf/simulated/floor/plasteel{ dir = 6; @@ -149867,6 +150381,9 @@ "vZY" = ( /obj/machinery/cryopod/robot, /obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/computer/cryopod/robot{ + pixel_y = 28 + }, /turf/simulated/floor/plasteel{ dir = 9; icon_state = "purple" @@ -150183,7 +150700,7 @@ }, /obj/machinery/tcomms/core/station, /turf/simulated/floor/redgrid, -/area/tcommsat/chamber) +/area/tcommsat/server) "wcH" = ( /turf/simulated/wall/r_wall, /area/medical/research/restroom) @@ -151424,6 +151941,14 @@ icon_state = "dark" }, /area/security/seceqstorage) +"wmn" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkblue" + }, +/area/chapel/massdriver) "wmp" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/remains/mouse, @@ -151766,13 +152291,6 @@ icon_state = "neutralfull" }, /area/quartermaster/delivery) -"wot" = ( -/obj/machinery/atmospherics/unary/vent_pump/on, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "redcorner" - }, -/area/security/prison/cell_block/A) "wox" = ( /obj/effect/decal/warning_stripes/northwest, /turf/simulated/floor/plasteel, @@ -152272,6 +152790,19 @@ }, /turf/simulated/floor/plating, /area/atmos) +"wrr" = ( +/obj/machinery/computer/rdconsole/core, +/obj/effect/decal/warning_stripes/northwest, +/obj/machinery/requests_console{ + department = "Research"; + departmentType = 2; + name = "Research Request Console"; + pixel_x = -30 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/toxins/lab) "wrz" = ( /turf/simulated/openspace, /area/security/processing) @@ -152320,9 +152851,6 @@ }, /area/atmos) "wrT" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, /obj/structure/disposalpipe/junction/reversed{ dir = 2 }, @@ -152335,6 +152863,9 @@ /obj/structure/cable{ icon_state = "1-4" }, +/obj/structure/cable{ + icon_state = "2-4" + }, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, @@ -152620,7 +153151,7 @@ network = list("Minisat","SS13") }, /turf/simulated/floor/redgrid, -/area/tcommsat/chamber) +/area/tcommsat/server) "wtT" = ( /obj/machinery/door/airlock/maintenance{ name = "Broom Closet" @@ -152797,7 +153328,7 @@ dir = 6; icon_state = "darkblue" }, -/area/chapel/main) +/area/chapel/massdriver) "wvE" = ( /obj/machinery/atmospherics/unary/vent_scrubber{ name = "standard air scrubber"; @@ -153640,7 +154171,7 @@ /turf/simulated/floor/plasteel{ icon_state = "cult" }, -/area/chapel/office) +/area/chapel/morgue) "wBS" = ( /obj/structure/cable{ icon_state = "4-8" @@ -153860,6 +154391,16 @@ icon_state = "dark" }, /area/aisat/maintenance) +"wDL" = ( +/obj/machinery/alarm{ + dir = 1; + pixel_y = -24 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "vault" + }, +/area/chapel/massdriver) "wDO" = ( /obj/structure/chair{ dir = 1 @@ -153867,7 +154408,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/chapel/main) +/area/chapel/massdriver) "wDT" = ( /obj/structure/cable{ d1 = 4; @@ -154916,7 +155457,7 @@ dir = 8; icon_state = "darkred" }, -/area/tcommsat/chamber) +/area/tcommsat/server) "wNu" = ( /obj/machinery/light{ dir = 1; @@ -155167,7 +155708,7 @@ dir = 8 }, /turf/simulated/floor/plating, -/area/chapel/main) +/area/chapel/massdriver) "wOT" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -155392,6 +155933,16 @@ /obj/effect/decal/cleanable/dust, /turf/simulated/floor/carpet/green, /area/maintenance/casino) +"wQi" = ( +/obj/structure/cable, +/obj/machinery/power/apc{ + pixel_y = -28 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "vault" + }, +/area/chapel/massdriver) "wQj" = ( /obj/machinery/door/airlock/maintenance{ req_access = list(22) @@ -156208,7 +156759,7 @@ /turf/simulated/floor/plasteel{ icon_state = "cult" }, -/area/chapel/office) +/area/chapel/morgue) "wXl" = ( /obj/machinery/atmospherics/unary/vent_scrubber{ name = "standard air scrubber"; @@ -156700,7 +157251,7 @@ dir = 5; icon_state = "darkblue" }, -/area/chapel/main) +/area/chapel/massdriver) "xaK" = ( /obj/machinery/alarm{ dir = 8; @@ -158575,6 +159126,24 @@ }, /turf/simulated/floor/plasteel, /area/maintenance/xenozoo) +"xqb" = ( +/obj/machinery/door/firedoor, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/airlock/medical/glass{ + id = "cloninglab"; + name = "Genetics Lab"; + req_access = list(9) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "dark" + }, +/area/medical/genetics) "xqq" = ( /obj/structure/cable{ icon_state = "1-2" @@ -158871,6 +159440,14 @@ pixel_x = 3; pixel_y = -3 }, +/obj/item/grenade/chem_grenade/teargas{ + pixel_y = -6; + pixel_x = 6 + }, +/obj/item/grenade/chem_grenade/teargas{ + pixel_y = -3; + pixel_x = 3 + }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -159240,7 +159817,7 @@ /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 }, -/turf/simulated/floor/carpet/royalblack, +/turf/simulated/floor/carpet/black, /area/ntrep) "xvb" = ( /obj/structure/cable{ @@ -159436,11 +160013,6 @@ /area/security/securearmory) "xwA" = ( /obj/effect/decal/warning_stripes/west, -/obj/item/storage/box/flashbangs{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/storage/box/flashbangs, /obj/item/storage/box/handcuffs{ pixel_x = -3; pixel_y = 3 @@ -159450,6 +160022,11 @@ name = "Brig storage crate" }, /obj/machinery/light, +/obj/item/storage/box/flashbangs, +/obj/item/storage/box/flashbangs{ + pixel_x = 3; + pixel_y = -3 + }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -159759,7 +160336,19 @@ }, /obj/machinery/light, /obj/structure/table, -/obj/item/storage/firstaid/regular, +/obj/item/stack/sheet/metal{ + amount = 50; + pixel_x = -2; + pixel_y = -2 + }, +/obj/item/stack/sheet/metal{ + amount = 50 + }, +/obj/item/stack/sheet/rglass{ + amount = 50; + pixel_x = 2; + pixel_y = 2 + }, /turf/simulated/floor/plasteel{ dir = 1 }, @@ -160188,9 +160777,12 @@ /area/toxins/mixing) "xBF" = ( /obj/structure/window/reinforced, -/obj/structure/statue/gold/hos{ - pixel_y = 7 +/obj/structure/sign/goldenplaque{ + pixel_y = 32; + desc = "Важное Уточнение! Рабочие пожелали оставаться анонимными, поэтому, обойдёмся их прозвищами. За помощь Главному Инженеру Новы в поисках и устранении неисправностей на станции НаноТрейзен. С благодарностью, Aeterna0. Слава НаноТрейзен!"; + name = "Благодарственное Письмо от Главного Инженера станции Нова" }, +/obj/structure/statue/gold/ce, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -160518,7 +161110,7 @@ id_tag = "port4_sensor"; layer = 3.3; pixel_x = 25; - pixel_y = 5 + pixel_y = 7 }, /obj/machinery/light/small{ dir = 8 @@ -160626,6 +161218,21 @@ }, /turf/simulated/floor/wood/fancy/cherry, /area/crew_quarters/theatre) +"xFq" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/cloning) "xFr" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -160690,6 +161297,26 @@ /obj/effect/decal/ants, /turf/simulated/floor/plating, /area/security/permabrig) +"xFT" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/disposalpipe/junction/reversed{ + dir = 2 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/cryo) "xGl" = ( /obj/machinery/alarm{ pixel_y = 24 @@ -161032,7 +161659,7 @@ }, /obj/machinery/airlock_sensor{ id_tag = "arrival_south_sensor"; - pixel_y = 24 + pixel_y = 34 }, /obj/machinery/embedded_controller/radio/airlock/airlock_controller{ id_tag = "arrival_south_airlock"; @@ -161040,7 +161667,11 @@ tag_chamber_sensor = "arrival_south_sensor"; tag_exterior_door = "arrival_south_outer"; tag_interior_door = "arrival_south_inner"; - pixel_y = -25 + pixel_y = 27 + }, +/obj/structure/sign/vacuum{ + icon_state = "space1"; + pixel_y = -32 }, /turf/simulated/floor/plating, /area/hallway/secondary/exit) @@ -161186,7 +161817,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/chapel/main) +/area/chapel/massdriver) "xJI" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/disposalpipe/sortjunction{ @@ -161551,7 +162182,7 @@ dir = 8; icon_state = "vault" }, -/area/tcommsat/chamber) +/area/tcommsat/server) "xMp" = ( /obj/structure/railing/corner{ dir = 4 @@ -162061,10 +162692,14 @@ pixel_x = 24; pixel_y = 24 }, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 25 + }, /turf/simulated/floor/plasteel{ icon_state = "cult" }, -/area/chapel/office) +/area/chapel/morgue) "xQF" = ( /obj/effect/spawner/random_spawners/blood_20, /turf/simulated/floor/plasteel{ @@ -162089,6 +162724,9 @@ "xQI" = ( /obj/structure/bed, /obj/machinery/light, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, /turf/simulated/floor/plasteel{ dir = 1 }, @@ -162945,11 +163583,16 @@ dir = 1; in_use = 1 }, +/obj/machinery/firealarm{ + dir = 1; + name = "south fire alarm"; + pixel_y = 26 + }, /turf/simulated/floor/plasteel{ dir = 9; icon_state = "vault" }, -/area/chapel/main) +/area/chapel/massdriver) "xWd" = ( /obj/structure/window/reinforced{ dir = 8 @@ -163603,7 +164246,7 @@ /obj/machinery/airlock_sensor{ id_tag = "atmos_tank_sensor"; pixel_x = 57; - pixel_y = 8 + pixel_y = 7 }, /turf/simulated/floor/plasteel/dark, /area/engineering/controlroom) @@ -163768,6 +164411,18 @@ }, /turf/simulated/floor/wood, /area/blueshield) +"ybv" = ( +/obj/machinery/atmospherics/unary/vent_scrubber{ + name = "standard air scrubber"; + on = 1; + scrub_N2O = 1; + scrub_Toxins = 1; + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/massdriver) "ybx" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -164550,7 +165205,7 @@ dir = 6; icon_state = "vault" }, -/area/chapel/main) +/area/chapel/massdriver) "ygI" = ( /obj/machinery/door/firedoor, /obj/effect/decal/warning_stripes/yellow, @@ -164868,6 +165523,10 @@ icon_state = "white" }, /area/medical/ward) +"yjj" = ( +/obj/structure/flora/ausbushes/reedbush, +/turf/simulated/floor/grass, +/area/maintenance/garden) "yjl" = ( /obj/structure/cable{ icon_state = "4-8" @@ -182034,7 +182693,7 @@ dFQ dFQ dFQ ocY -mWj +pWd eCk fAb wlg @@ -185393,7 +186052,7 @@ hKl jOC irs son -pSU +oEP jOC oak pPo @@ -186890,7 +187549,7 @@ xYq qGf bHf aWy -ugu +pGo fDG fDG fDG @@ -187106,7 +187765,7 @@ pMY lrf hkd lNx -pGm +ldG oax kbL vXb @@ -189453,12 +190112,12 @@ jvn tdr clY qcI -lxy -nrr -kOr -kOr -lzn -bil +txj +xqb +mRP +mRP +xFq +cZo nEG hya fXb @@ -189715,13 +190374,13 @@ qRz eri fcC hPA -iza -vOz -epN -epN -mND -epN -nBP +uNu +fCz +cgR +cgR +aAP +cgR +xFT qgs rOG ieh @@ -190271,7 +190930,7 @@ tkq bje mKV bvT -hdq +gbK bje tkq tkq @@ -195169,7 +195828,7 @@ tkq tkq tkq dTS -hOz +lSD fDj iBU aHe @@ -197739,7 +198398,7 @@ tkq tkq tkq dTS -hOz +lSD tlq xTw hhx @@ -197961,7 +198620,7 @@ wqw uVH hQo jlb -rzi +wrr iuU tYL cod @@ -202607,7 +203266,7 @@ tkq bje vFC bvT -vFN +fgL bje tkq tkq @@ -205497,8 +206156,8 @@ mMy lON dvj pWK -jll -jll +qwG +qFi jqO jll iIW @@ -216218,7 +216877,7 @@ cxn hRb hRb ibo -jKe +nFO fti kcL gVE @@ -246288,8 +246947,8 @@ ajW xoL oMu sfk -sfk -sfk +mhj +tpw bhh fvn gHq @@ -246312,7 +246971,7 @@ vbS gKt xmI dWi -mct +jmY aDA xAy vmF @@ -246570,7 +247229,7 @@ cTX egQ ldl gEV -jmY +mct xbz cIK jHI @@ -246801,8 +247460,8 @@ xoL ajW xoL gEx -mYe -mYe +ovd +uJX mYe qtN tIW @@ -251427,15 +252086,15 @@ xWH cCL dlD trZ -cXR +xzQ kYp lRi -wot +vTl gcH -hqo -lRi -nOM bmP +lRi +kYp +xzQ rAz dlD gIB @@ -252205,8 +252864,8 @@ vTl vZU hqo lRi -nOM -cDr +kYp +uWF tNj dlD pvc @@ -253960,7 +254619,7 @@ ozQ kux ozQ ozQ -fkL +rcy ozQ ozQ ozQ @@ -254559,7 +255218,7 @@ ieI gtF otn kZy -wUw +lLc chE ddQ bbZ @@ -254989,8 +255648,8 @@ lVZ wdp ozQ pLK -jOe -loQ +rAR +jfC lnp qIY tHo @@ -255073,7 +255732,7 @@ orm kfz xKb thB -wre +nwA xic ddQ oqM @@ -256099,7 +256758,7 @@ btM syu gVD bbZ -wre +jQq mVH bRV wre @@ -256616,7 +257275,7 @@ awC xRZ pWi wUw -wre +jQq ihn xXG aiQ @@ -256874,7 +257533,7 @@ xRZ wre wCs rhi -wUw +tbV uhC cPv tUk @@ -257388,7 +258047,7 @@ hoH mTa mqL jYH -wre +jQq awC ibR jAH @@ -259107,7 +259766,7 @@ lbB hCH hHJ brM -pYS +aNX ihk fGh boP @@ -259924,7 +260583,7 @@ fvL bkc bkc bkc -bkc +fvL bkc bkc bkc @@ -260635,7 +261294,7 @@ fvL fvL hKA kCp -jZN +nwG kCp uMw ppW @@ -261662,7 +262321,7 @@ kCp kGY hKA nxY -qNY +kCp hJs uMw daU @@ -263733,7 +264392,7 @@ woE mmc wsA qCF -pYS +fps ihk fGh qEA @@ -263988,7 +264647,7 @@ aFR ges npi rsU -rsU +vdg qCF iOP ihk @@ -264036,7 +264695,7 @@ fvL bkc bkc bkc -bkc +fvL bkc bkc bkc @@ -264761,10 +265420,10 @@ lpY snI skE qCF -pYS +mXr ihk kjR -mpH +jLR tbl biB icw @@ -267155,7 +267814,7 @@ jFL baa cCD foY -qWo +fZu hlb jhW bGG @@ -267414,7 +268073,7 @@ nlt eJB qWo nzv -qWo +kjI eYr iik mze @@ -267670,7 +268329,7 @@ qHX fSw lLh cgD -qWo +dxq oOi qeC blB @@ -267926,8 +268585,8 @@ jFL cYx hmS wsH -qWo -qWo +oPt +nms qWo oDB bGG @@ -268440,10 +269099,10 @@ hfp mze mze dUM +vAn qWo qWo -qWo -qWo +bWi bGG nBL eQH @@ -268954,9 +269613,9 @@ xia mze mze bGG +yjj qWo -qWo -qWo +jVi jhW qQn bnw @@ -271728,7 +272387,7 @@ gab bkr urL iJr -jrc +vnH jrc jrc rtD @@ -272753,8 +273412,8 @@ nOX phm xxH mEB -rki -xSM +irY +ezg txh xxH eIO @@ -273520,9 +274179,9 @@ fIT ccA fIT lZs -nMr +dnh qBx -nMr +dYX nMr ojQ vLI @@ -273779,7 +274438,7 @@ nyx qIC nyx xxH -pyM +mio txh rki jYz @@ -274022,21 +274681,21 @@ lIq lIq nOX mHg -xxH -xxH -xxH +kqy +kqy +kqy qrm wXi -xxH -xxH -xxH -eVD -eVD +kqy +kqy +kqy +ijt +ijt uRu hSx -eVD -eVD -eVD +ijt +ijt +ijt spd rRE bKU @@ -274279,21 +274938,21 @@ sSR nTo pni kql -xxH +kqy uVm cHN sEN jHq cpb tqr -xxH +kqy huY mPn cJT mmJ vuI avO -eVD +ijt aUU kTg jGm @@ -274536,35 +275195,35 @@ pcL nOX nOX mHg -xxH +kqy grU sEN sEN jHq sEN mfw -xxH +kqy iJP -eIO +bDb ddg vtp -eIO +bDb mhJ -eVD +ijt qjp hQY mQF -rki +oRJ xxH eVD eVD +bmb eVD eVD eVD eVD eVD -eVD -eVD +bmb eVD eVD eVD @@ -274793,7 +275452,7 @@ pTU pTU nOX jSZ -xxH +kqy aCP sEN jjV @@ -274805,9 +275464,9 @@ eSU eSU eSU eHF -eIO +bDb mhJ -eVD +ijt xZX fvc rwJ @@ -275050,21 +275709,21 @@ cRi gvT mDV xTQ -xxH +kqy grU sEN sEN iWr sEN qym -xxH +kqy cjM ubt ssu -hxi -eIO -mhJ -eVD +scq +dAX +wQi +ijt qAL ikK kKi @@ -275307,21 +275966,21 @@ phm phm pcL nOX -xxH +kqy lJL xQE pwo hjr pvE wBP -xxH +kqy qjN niE caz hxi -eIO +bDb ygH -eVD +ijt xxH xxH xxH @@ -275564,21 +276223,21 @@ fgX fgX pTU pTU -xxH -xxH -xxH -xxH -xxH -xxH -xxH -xxH -eVD -eVD -eVD +kqy +kqy +kqy +kqy +kqy +kqy +kqy +kqy +ijt +ijt +ijt hxi -eIO +bDb tAj -eVD +ijt tUm gdY kIp @@ -275824,7 +276483,7 @@ uJG uJG uJG uJG -eVD +ijt lCs osk qRE @@ -275834,8 +276493,8 @@ qWI tns twE bDb -mhJ -eVD +wDL +ijt nJa llW yel @@ -276081,18 +276740,18 @@ cYe cYe cYe cYe -kjl +nYP xaI vsd jFs atN wDO -sMB -eVD +wmn +ijt mOQ -eIO +bDb ihh -eVD +ijt wWg ntw nim @@ -276347,9 +277006,9 @@ ist fzB rOT dWV -eIO +ybv mhJ -eVD +ijt mxu ubd spv @@ -276595,18 +277254,18 @@ cYe cYe cYe cYe -kjl +nYP bqr cee lDc idI cvV sMB -eVD +ijt xVY -eIO +bDb mhJ -eVD +ijt lXW lra kIp @@ -276852,18 +277511,18 @@ bkc uJG bkc bkc -eVD +ijt eKy fDT kUd vEe ixi wvB -eVD +ijt idr xJG gDB -eVD +ijt ddN rvs uUw @@ -277109,18 +277768,18 @@ fvL fvL fvL fvL -eVD -eVD -eVD -eVD -eVD -eVD -eVD -eVD -eVD -eVD -eVD -eVD +ijt +ijt +ijt +ijt +ijt +ijt +ijt +ijt +ijt +ijt +ijt +ijt uUw uUw uUw @@ -287719,13 +288378,13 @@ iqK iqK iqK iqK -hPs -hPs -hPs -hPs -hPs -hPs -hPs +hBC +hBC +hBC +hBC +hBC +hBC +hBC mRg mRg mRg @@ -287976,13 +288635,13 @@ nUo blK wCX qBf -hPs -hPs +hBC +hBC kdv wMZ saL -hPs -hPs +hBC +hBC uht uht vEb @@ -288233,13 +288892,13 @@ vOX bJz lhf hNL -hPs +hBC eoO nvR -dqM +qNY pxG vQd -hPs +hBC lrh mfy bTQ @@ -288490,13 +289149,13 @@ jWS mKl mKl rlg -hPs +hBC gjA -dbP +kCy bNE -uYu +gkR pzK -hPs +hBC lvm lvm grM @@ -289004,13 +289663,13 @@ jWS mKl mKl gBH -hPs +hBC qSz cdo eOV qDg ufB -hPs +hBC uTE uTE mVF @@ -289261,13 +289920,13 @@ nrj oWE rzI cxX -hPs +hBC cpJ eKM -dqM +qNY gfK wcF -hPs +hBC nBI vwV aPT @@ -289518,13 +290177,13 @@ cBD iJU wCX gke -hPs -hPs +hBC +hBC hQp sXu wtP -hPs -hPs +hBC +hBC uht uht hgi @@ -289775,13 +290434,13 @@ iqK iqK iqK iqK -hPs -hPs -hPs -hPs -hPs -hPs -hPs +hBC +hBC +hBC +hBC +hBC +hBC +hBC mRg mRg mRg diff --git a/code/__DEFINES/borer.dm b/code/__DEFINES/borer.dm index ee65cffd26c..cb61176fe58 100644 --- a/code/__DEFINES/borer.dm +++ b/code/__DEFINES/borer.dm @@ -1,10 +1,10 @@ #define REPRODUCTIONS_TO_MATURE 3 #define REPRODUCTIONS_TO_ADULT 6 #define REPRODUCTIONS_TO_ELDER 10 -#define HEAD_FOCUS_COST 9 -#define TORSO_FOCUS_COST 15 -#define HANDS_FOCUS_COST 5 -#define LEGS_FOCUS_COST 10 +#define HEAD_FOCUS_COST 4.5 +#define TORSO_FOCUS_COST 7.5 +#define HANDS_FOCUS_COST 2.5 +#define LEGS_FOCUS_COST 5 #define SCALING_MAX_CHEM 355 #define SCALING_CHEM_GAIN 15 #define BORER_RANK_YOUNG /datum/borer_rank/young diff --git a/code/__DEFINES/gamemode.dm b/code/__DEFINES/gamemode.dm index 42884694433..1457c5bc039 100644 --- a/code/__DEFINES/gamemode.dm +++ b/code/__DEFINES/gamemode.dm @@ -71,3 +71,4 @@ #define SPECIAL_ROLE_THIEF "Thief" #define SPECIAL_ROLE_SPACE_DRAGON "Space Dragon" #define SPECIAL_ROLE_EVENTMISC "Event Role" +#define SPECIAL_ROLE_MALFAI "Malfunctioning AI" diff --git a/code/__DEFINES/machines.dm b/code/__DEFINES/machines.dm index 381b6b2e6f8..4ffa1a41511 100644 --- a/code/__DEFINES/machines.dm +++ b/code/__DEFINES/machines.dm @@ -103,3 +103,4 @@ /// Machines with this flag will not start processing when it's spawned. Use this if you want to manually control when a machine starts processing. #define START_PROCESSING_MANUALLY (1<<1) +#define ORE_REDEMPTION "Плавильная печь" diff --git a/code/__DEFINES/request_consoles.dm b/code/__DEFINES/request_consoles.dm new file mode 100644 index 00000000000..806eabf4e55 --- /dev/null +++ b/code/__DEFINES/request_consoles.dm @@ -0,0 +1,91 @@ +// Request Console Department Types +#define RC_ASSIST 1 // Request Assistance +#define RC_SUPPLY 2 // Request Supplies +#define RC_INFO 4 // Relay Info + +// Request Console Screens +#define RCS_MAINMENU 0 // Main menu +#define RCS_RQSUPPLY 1 // Request supplies +#define RCS_RQASSIST 2 // Request assistance +#define RCS_SENDINFO 3 // Relay information +#define RCS_SENTPASS 4 // Message sent successfully +#define RCS_SENTFAIL 5 // Message sent unsuccessfully +#define RCS_VIEWMSGS 6 // View messages +#define RCS_MESSAUTH 7 // Authentication before sending +#define RCS_ANNOUNCE 8 // Send announcement +#define RCS_SHIPPING 9 // Print Shipping Labels/Packages +#define RCS_SHIP_LOG 10 // View Shipping Label Log + +// Radio list +#define ENGI_ROLES list(RC_ATMOSPHERICS, RC_MECHANIC, RC_ENGINEERING, RC_CHIEF_ENGINEER_DESK, RC_TECH_STORAGE, RC_TELECOMS_ADMIN) +#define SEC_ROLES list(RC_WARDEN, RC_SECURITY, RC_DETECTIVE, RC_LABOR_CAMP, RC_BRIG_MEDBAY, RC_HEAD_OF_SECURITY_DESK) +#define MISC_ROLES list(RC_BAR, RC_CHAPEL, RC_KITCHEN, RC_HYDROPONICS, RC_JANITORIAL) +#define MED_ROLES list(RC_VIROLOGY, RC_MEDBAY, RC_MORGUE, RC_CHEMISTRY, RC_CHIEF_MEDICAL_OFFICER_DESK) +#define COM_ROLES list(RC_BLUESHIELD, RC_NT_REPRESENTATIVE, RC_HEAD_OF_PERSONNEL_DESK, RC_CAPTAIN_DESK, RC_BRIDGE) +#define SCI_ROLES list(RC_ROBOTICS, RC_SCIENCE, RC_RESEARCH, RC_GENETICS, RC_XENOBIOLOGY, RC_RESEARCH_DIRECTOR_DESK) + +// Request Console Departments + +//Civilian +#define RC_PRIMARY_TOOL_STORAGE "Primary Tool Storage" +#define RC_LOCKER_ROOM "Locker Room" +#define RC_ARRIVAL_SHUTTLE "Arrival Shuttle" +#define RC_CREW_QUARTERS "Crew Quarters" + +// Medical +#define RC_MEDBAY "Medbay" +#define RC_VIROLOGY "Virology" +#define RC_MORGUE "Morgue" +#define RC_CHEMISTRY "Chemistry" + +// RND +#define RC_ROBOTICS "Robotics" +#define RC_SCIENCE "Science" +#define RC_RESEARCH "Research" +#define RC_XENOBIOLOGY "Xenobiology" +#define RC_GENETICS "Genetics" + +// Engineering +#define RC_ENGINEERING "Engineering" +#define RC_TECH_STORAGE "Tech storage" +#define RC_MECHANIC "Mechanic" +#define RC_ATMOSPHERICS "Atmospherics" + +// Security +#define RC_SECURITY "Security" +#define RC_DETECTIVE "Detective" +#define RC_WARDEN "Warden" +#define RC_LABOR_CAMP "Labor Camp" + +// Cargo +#define RC_CARGO_BAY "Cargo Bay" + +// Service +#define RC_BAR "Bar" +#define RC_HYDROPONICS "Hydroponics" +#define RC_JANITORIAL "Janitorial" +#define RC_KITCHEN "Kitchen" +#define RC_CHAPEL "Chapel" + +// Comand +#define RC_RESEARCH_DIRECTOR_DESK "Research Director's Desk" +#define RC_HEAD_OF_PERSONNEL_DESK "Head of Personnel's Desk" +#define RC_CHIEF_ENGINEER_DESK "Chief Engineer's Desk" +#define RC_CHIEF_MEDICAL_OFFICER_DESK "Chief Medical Officer's Desk" +#define RC_QUARTERMASTER_DESK "Quartermaster's Desk" +#define RC_HEAD_OF_SECURITY_DESK "Head of Security's Desk" +#define RC_CAPTAIN_DESK "Captain's Desk" +#define RC_AI "AI" +#define RC_BRIDGE "Bridge" +#define RC_EVA "EVA" + +// Central Command Dependent +#define RC_BLUESHIELD "Blueshield" +#define RC_INTERNAL_AFFAIRS_OFFICE "Internal Affairs Office" +#define RC_NT_REPRESENTATIVE "NT Representative" +#define RC_CENTRAL_COMMAND "Central Command" + +// NOT USED IN MAPS +#define RC_BRIG_MEDBAY "Brig Medbay" +#define RC_TELECOMS_ADMIN "Telecoms Admin" + diff --git a/code/__DEFINES/rituals.dm b/code/__DEFINES/rituals.dm index c33d531225c..463623c9f72 100644 --- a/code/__DEFINES/rituals.dm +++ b/code/__DEFINES/rituals.dm @@ -1,8 +1,8 @@ /// Used in ritual variables -#define DEFAULT_RITUAL_RANGE_FIND 1 -#define DEFAULT_RITUAL_COOLDOWN (100 SECONDS) -#define DEFAULT_RITUAL_DISASTER_PROB 10 -#define DEFAULT_RITUAL_FAIL_PROB 10 +#define DEFAULT_RITUAL_RANGE_FIND 1 +#define DEFAULT_RITUAL_COOLDOWN (100 SECONDS) +#define DEFAULT_RITUAL_DISASTER_PROB 10 +#define DEFAULT_RITUAL_FAIL_PROB 10 /// Ritual object bitflags #define RITUAL_STARTED (1<<0) #define RITUAL_ENDED (1<<1) diff --git a/code/__DEFINES/vampire_defines.dm b/code/__DEFINES/vampire_defines.dm index a0663014e6f..90123400739 100644 --- a/code/__DEFINES/vampire_defines.dm +++ b/code/__DEFINES/vampire_defines.dm @@ -16,3 +16,5 @@ #define NEW_NULLIFICATION 1 //nulifiaction like the new vampires #define OLD_NULLIFICATION 2 //nulifiaction like the goon vampires + +#define REQ_BLOOD_FOR_SUBCLASS_ACT 400 // total blood required for a special subclass action diff --git a/code/controllers/configuration/entries/config.dm b/code/controllers/configuration/entries/config.dm index 5da930d43d3..f6570a41142 100644 --- a/code/controllers/configuration/entries/config.dm +++ b/code/controllers/configuration/entries/config.dm @@ -397,8 +397,6 @@ /datum/config_entry/number/simultaneous_pm_warning_timeout default = 100 -///Do assistants get maint access? -/datum/config_entry/flag/assistant_maint ///How long the gateway takes before it activates. Default is 10 minutes. Only matters if roundstart_away is enabled. /datum/config_entry/number/gateway_delay diff --git a/code/controllers/configuration/entries/testing.dm b/code/controllers/configuration/entries/testing.dm index ade389fb95c..009cc38beed 100644 --- a/code/controllers/configuration/entries/testing.dm +++ b/code/controllers/configuration/entries/testing.dm @@ -4,3 +4,9 @@ ///Enables bombarda crafting on server. /datum/config_entry/flag/enable_bombarda_craft + +///Enables loading titlescreen only after master has been loaded. +/datum/config_entry/flag/enable_titlescreen_lateload + +///Do not load station +/datum/config_entry/flag/load_no_station diff --git a/code/controllers/subsystem/icon_smooth.dm b/code/controllers/subsystem/icon_smooth.dm index 07aa1838d88..7648dc8b4bb 100644 --- a/code/controllers/subsystem/icon_smooth.dm +++ b/code/controllers/subsystem/icon_smooth.dm @@ -7,11 +7,18 @@ SUBSYSTEM_DEF(icon_smooth) offline_implications = "Objects will no longer smooth together properly. No immediate action is needed." cpu_display = SS_CPUDISPLAY_LOW ss_id = "icon_smooth" - + /** + * Used to track instances of icon smooth halters. Does not apply to roundstart loading, however. + * Always make sure to remove halt source from this list on the end of operation. + */ + var/halt_sources = list() var/list/smooth_queue = list() /datum/controller/subsystem/icon_smooth/fire() + if(length(halt_sources)) + return + while(smooth_queue.len) var/atom/A = smooth_queue[smooth_queue.len] smooth_queue.len-- @@ -44,3 +51,9 @@ SUBSYSTEM_DEF(icon_smooth) CHECK_TICK return SS_INIT_SUCCESS + +/datum/controller/subsystem/icon_smooth/proc/add_halt_source(datum/source) + halt_sources += source + +/datum/controller/subsystem/icon_smooth/proc/remove_halt_source(datum/source) + halt_sources -= source diff --git a/code/controllers/subsystem/idlenpcpool.dm b/code/controllers/subsystem/idlenpcpool.dm index d3b3f072fbb..6a926cdce56 100644 --- a/code/controllers/subsystem/idlenpcpool.dm +++ b/code/controllers/subsystem/idlenpcpool.dm @@ -33,9 +33,8 @@ SUBSYSTEM_DEF(idlenpcpool) /datum/controller/subsystem/idlenpcpool/fire(resumed = FALSE) - if(!resumed) - var/list/idlelist = GLOB.simple_animals[AI_IDLE] - src.currentrun = idlelist.Copy() + var/list/idlelist = GLOB.simple_animals[AI_IDLE] + src.currentrun = idlelist.Copy() //cache for sanic speed (lists are references anyways) var/list/currentrun = src.currentrun diff --git a/code/controllers/subsystem/non-firing/atoms.dm b/code/controllers/subsystem/non-firing/atoms.dm index 2a2a0caef1f..ff843736a49 100644 --- a/code/controllers/subsystem/non-firing/atoms.dm +++ b/code/controllers/subsystem/non-firing/atoms.dm @@ -27,6 +27,7 @@ SUBSYSTEM_DEF(atoms) if(initialized == INITIALIZATION_INSSATOMS) return + SSicon_smooth.add_halt_source(src) initialized = INITIALIZATION_INNEW_MAPLOAD LAZYINITLIST(late_loaders) @@ -79,6 +80,7 @@ SUBSYSTEM_DEF(atoms) log_debug(" Late initialized [length(late_loaders)] atoms in [stop_watch(watch)]s") late_loaders.Cut() + SSicon_smooth.remove_halt_source(src) /datum/controller/subsystem/atoms/proc/InitAtom(atom/A, list/arguments) var/the_type = A.type @@ -127,11 +129,12 @@ SUBSYSTEM_DEF(atoms) /datum/controller/subsystem/atoms/proc/map_loader_begin() old_initialized = initialized initialized = INITIALIZATION_INSSATOMS + SSicon_smooth.add_halt_source(src) /datum/controller/subsystem/atoms/proc/map_loader_stop() initialized = old_initialized - + SSicon_smooth.remove_halt_source(src) /datum/controller/subsystem/atoms/Recover() initialized = SSatoms.initialized diff --git a/code/controllers/subsystem/non-firing/mapping.dm b/code/controllers/subsystem/non-firing/mapping.dm index c0c6a4cd231..1680d0cc703 100644 --- a/code/controllers/subsystem/non-firing/mapping.dm +++ b/code/controllers/subsystem/non-firing/mapping.dm @@ -240,8 +240,27 @@ SUBSYSTEM_DEF(mapping) seedRuins(levels_by_trait(SPAWN_RUINS), rand(20, 30), /area/space, GLOB.space_ruins_templates) log_startup_progress("Successfully seeded ruins in [stop_watch(seed_ruins_timer)]s.") +/datum/controller/subsystem/mapping/proc/create_landmarks(turf/place) + var/landmarks = list( + /obj/effect/landmark/join_late, + /obj/effect/landmark/join_late_cryo, + /obj/effect/landmark/join_late_cyborg, + /obj/effect/landmark/join_late_gateway, + /obj/effect/landmark/observer_start + ) + + landmarks += subtypesof(/obj/effect/landmark/start) + for(var/mark in landmarks) + new mark(place) /datum/controller/subsystem/mapping/proc/loadStation() + if(CONFIG_GET(flag/load_no_station)) + log_startup_progress("Loading empty space...") + var/empty_z_level = GLOB.space_manager.add_new_zlevel(MAIN_STATION, linkage = CROSSLINKED, traits = DEFAULT_STATION_TRATS) + var/turf/centre = locate(world.maxx / 2, world.maxy / 2, empty_z_level) + create_landmarks(centre) + return + if(CONFIG_GET(string/default_map) && !CONFIG_GET(string/override_map) && map_datum == fallback_map) var/map_datum_path = text2path(CONFIG_GET(string/default_map)) if(map_datum_path) @@ -263,7 +282,6 @@ SUBSYSTEM_DEF(mapping) var/watch = start_watch() log_startup_progress("Loading [map_datum.station_name]...") - var/map_z_level if(map_datum.traits && map_datum.traits?.len && islist(map_datum.traits[1])) // we work with list of lists map_z_level = GLOB.space_manager.add_new_zlevel(MAIN_STATION, linkage = map_datum.linkage, traits = map_datum.traits[1]) diff --git a/code/controllers/subsystem/non-firing/titlescreen.dm b/code/controllers/subsystem/non-firing/titlescreen.dm index 1de3e185f67..ddcf80acf80 100644 --- a/code/controllers/subsystem/non-firing/titlescreen.dm +++ b/code/controllers/subsystem/non-firing/titlescreen.dm @@ -18,9 +18,14 @@ SUBSYSTEM_DEF(title) import_html() fill_title_images_pool() current_title_screen = new(title_html = base_html, screen_image_file = pick_title_image()) - show_title_screen_to_all_new_players() + if(!CONFIG_GET(flag/enable_titlescreen_lateload)) + show_title_screen_to_all_new_players() return SS_INIT_SUCCESS +/datum/controller/subsystem/title/OnMasterLoad() + if(CONFIG_GET(flag/enable_titlescreen_lateload)) + show_title_screen_to_all_new_players() + /datum/controller/subsystem/title/Recover() current_title_screen = SStitle.current_title_screen title_images_pool = SStitle.title_images_pool diff --git a/code/datums/action.dm b/code/datums/action.dm index 415da08fa9f..ce7e9830f6e 100644 --- a/code/datums/action.dm +++ b/code/datums/action.dm @@ -317,6 +317,9 @@ desc = "Toggles if the club's blasts cause friendly fire." button_icon_state = "vortex_ff_on" +/datum/action/item_action/toggle_backpack_light + name = "Toggle Backpack Light" + /datum/action/item_action/toggle_unfriendly_fire/Trigger(left_click = TRUE) if(..()) UpdateButtonIcon() diff --git a/code/datums/helper_datums/map_template.dm b/code/datums/helper_datums/map_template.dm index 3c6e5a2a0d4..4c9fca5d1d2 100644 --- a/code/datums/helper_datums/map_template.dm +++ b/code/datums/helper_datums/map_template.dm @@ -49,6 +49,7 @@ // if given a multi-z template // it might need to be adapted for that when that time comes GLOB.space_manager.add_dirt(placement.z) + SSicon_smooth.add_halt_source(src) try var/list/bounds = GLOB.maploader.load_map(get_file(), min_x, min_y, placement.z, shouldCropMap = TRUE) if(!bounds) @@ -58,11 +59,13 @@ if(ST_bot_left == null || ST_top_right == null) stack_trace("One of the smoothing corners is bust") catch(var/exception/e) + SSicon_smooth.remove_halt_source(src) GLOB.space_manager.remove_dirt(placement.z) message_admins("Map template [name] threw an error while loading. Safe exit attempted, but check for errors at [ADMIN_COORDJMP(placement)].") log_admin("Map template [name] threw an error while loading. Safe exit attempted.") throw e + SSicon_smooth.remove_halt_source(src) GLOB.space_manager.remove_dirt(placement.z) add_game_logs("[name] loaded at [min_x],[min_y],[placement.z]") diff --git a/code/datums/looping_sounds/item_sounds.dm b/code/datums/looping_sounds/item_sounds.dm index 4233c478644..e3a41b07ae5 100644 --- a/code/datums/looping_sounds/item_sounds.dm +++ b/code/datums/looping_sounds/item_sounds.dm @@ -3,3 +3,6 @@ start_sound = list('sound/items/taperecorder/taperecorder_hiss_start.ogg') volume = 10 +/datum/looping_sound/ambulance_alarm/justice + mid_length = 1.5 SECONDS + falloff_exponent = 4 diff --git a/code/datums/outfits/outfit_security_clown.dm b/code/datums/outfits/outfit_security_clown.dm index 9f628a62c9c..23acd23ca3c 100644 --- a/code/datums/outfits/outfit_security_clown.dm +++ b/code/datums/outfits/outfit_security_clown.dm @@ -134,6 +134,7 @@ //=========== security clown equipment =========== /obj/item/pda/clown/security default_cartridge = /obj/item/cartridge/clown + default_request_console_cartridge = /obj/item/cartridge/request_console/clown_security icon_state = "pda-security-clown" desc = "Переносной микрокомпьютер от Синктроник Системс, LTD. Этот КПК разработан по заказу тайного покупателя, пожелавшего хонкнуться нераскрытым. Поверхность покрыта политетрафторэтиленом и банановым налётом." ttone = "honk" diff --git a/code/datums/rituals.dm b/code/datums/rituals.dm index 4c3049d00fe..b9bbb005f19 100644 --- a/code/datums/rituals.dm +++ b/code/datums/rituals.dm @@ -129,7 +129,7 @@ if(charges == 0) return NONE - if(allowed_special_role && !is_type_in_list(invoker.mind?.special_role, allowed_special_role)) + if(allowed_special_role && !LAZYIN(allowed_special_role, invoker.mind?.special_role)) return RITUAL_FAILED_INVALID_SPECIAL_ROLE if(allowed_species && !is_type_in_list(invoker.dna.species, allowed_species)) // double check to avoid funny situations @@ -151,13 +151,13 @@ /datum/ritual/proc/cast(mob/living/carbon/human/invoker) . = TRUE - LAZYADD(invokers, invoker) - for(var/mob/living/carbon/human/human as anything in invokers) - if(!do_after(human, cast_time, ritual_object, extra_checks = CALLBACK(src, PROC_REF(action_check_contents)))) - . = FALSE + var/list/invokers_list = invokers.Copy() // create temp list to avoid funny situations + LAZYADD(invokers_list, invoker) - LAZYREMOVE(invokers, invoker) + for(var/mob/living/carbon/human/human as anything in invokers_list) + if(!do_after(human, cast_time, ritual_object, DA_IGNORE_HELD_ITEM, extra_checks = CALLBACK(src, PROC_REF(action_check_contents)))) + . = FALSE return . @@ -172,7 +172,7 @@ if(require_allowed_species && !is_type_in_list(human.dna.species, allowed_species)) continue - if(require_allowed_special_role && !is_type_in_list(human.mind?.special_role, allowed_special_role)) + if(require_allowed_special_role && !LAZYIN(allowed_special_role, human.mind?.special_role)) continue LAZYADD(invokers, human) @@ -204,7 +204,7 @@ if(obj == ritual_object) continue - if(locate(obj) in invokers) + if(LAZYIN(invokers, obj)) continue LAZYADD(atoms, obj) @@ -222,7 +222,7 @@ if(isstack(atom)) var/obj/item/stack/picked_stack = atom - LAZYREMOVE(requirements[req_type], picked_stack.amount) + requirements[req_type] -= picked_stack.amount else requirements[req_type]-- @@ -385,7 +385,7 @@ fail_chance = 50 extra_invokers = 1 cooldown_after_cast = 480 SECONDS - cast_time = 70 SECONDS + cast_time = 30 SECONDS ritual_should_del_things_on_fail = TRUE required_things = list( /obj/item/twohanded/spear = 3, @@ -439,15 +439,20 @@ fail_chance = 30 shaman_only = TRUE cooldown_after_cast = 900 SECONDS - cast_time = 50 SECONDS + cast_time = 30 SECONDS extra_invokers = 1 /datum/ritual/ashwalker/summon/do_ritual(mob/living/carbon/human/invoker) var/list/ready_for_summoning = list() for(var/mob/living/carbon/human/human in GLOB.mob_list) - if(isashwalker(human)) - LAZYADD(ready_for_summoning, human) + if(!human.ckey) + continue + + if(!isashwalker(human)) + continue + + LAZYADD(ready_for_summoning, human) if(!LAZYLEN(ready_for_summoning)) return RITUAL_FAILED_ON_PROCEED @@ -457,17 +462,24 @@ if(!human) return RITUAL_FAILED_ON_PROCEED - LAZYADD(invokers, invoker) + deal_damage() + summon(human) - for(var/mob/living/carbon/human/summoner as anything in invokers) + return RITUAL_SUCCESSFUL + +/datum/ritual/ashwalker/summon/proc/deal_damage() + for(var/mob/living/carbon/human/summoner in range(finding_range, ritual_object)) summoner.blood_volume -= (summoner.blood_volume * 0.20) summoner.apply_damage(25, def_zone = pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM)) - human.forceMove(ritual_object) + return TRUE + +/datum/ritual/ashwalker/summon/proc/summon(mob/living/carbon/human/human) + human.forceMove(get_turf(ritual_object)) human.vomit() human.Weaken(10 SECONDS) - return RITUAL_SUCCESSFUL + return TRUE /datum/ritual/ashwalker/summon/disaster(mob/living/carbon/human/invoker) if(!prob(70)) @@ -499,7 +511,7 @@ disaster_prob = 30 fail_chance = 30 cooldown_after_cast = 600 SECONDS - cast_time = 60 SECONDS + cast_time = 30 SECONDS charges = 3 shaman_only = TRUE extra_invokers = 2 @@ -508,7 +520,7 @@ ) /datum/ritual/ashwalker/curse/del_things() - for(var/mob/living/carbon/human/human as anything in used_things) + for(var/mob/living/carbon/human/human in used_things) human.gib() return @@ -519,7 +531,7 @@ if(!.) return FALSE - for(var/mob/living/carbon/human/human as anything in used_things) + for(var/mob/living/carbon/human/human in used_things) if(human.stat != DEAD) to_chat(invoker, "Гуманоиды должны быть мертвы.") return FALSE @@ -565,7 +577,7 @@ fail_chance = 40 charges = 1 cooldown_after_cast = 800 SECONDS - cast_time = 80 SECONDS + cast_time = 30 SECONDS shaman_only = TRUE extra_invokers = 4 required_things = list( @@ -640,7 +652,7 @@ charges = 3 extra_invokers = 2 cooldown_after_cast = 180 SECONDS - cast_time = 100 SECONDS + cast_time = 30 SECONDS shaman_only = TRUE disaster_prob = 25 fail_chance = 35 @@ -707,7 +719,7 @@ disaster_prob = 30 fail_chance = 50 cooldown_after_cast = 360 SECONDS - cast_time = 90 SECONDS + cast_time = 30 SECONDS shaman_only = TRUE required_things = list( /mob/living/simple_animal/hostile/asteroid/basilisk/watcher = 1, @@ -788,7 +800,7 @@ extra_invokers = 2 charges = 1 cooldown_after_cast = 120 SECONDS - cast_time = 40 SECONDS + cast_time = 30 SECONDS ritual_should_del_things_on_fail = TRUE required_things = list( /obj/item/reagent_containers/food/snacks/grown/ash_flora/cactus_fruit = 1, @@ -812,7 +824,7 @@ return TRUE /datum/ritual/ashwalker/population/del_things() - for(var/mob/living/living as anything in used_things) + for(var/mob/living/living in used_things) living.gib() return @@ -823,7 +835,7 @@ if(!.) return FALSE - for(var/mob/living/living as anything in used_things) + for(var/mob/living/living in used_things) if(living.stat != DEAD) to_chat(invoker, "Существа должны быть мертвы.") return FALSE @@ -872,7 +884,7 @@ name = "Soul ritual" extra_invokers = 3 cooldown_after_cast = 1200 SECONDS - cast_time = 60 SECONDS + cast_time = 30 SECONDS required_things = list( /mob/living/carbon/human = 3, /obj/item/stack/sheet/animalhide/ashdrake = 1 @@ -969,13 +981,9 @@ return TRUE /datum/ritual/ashwalker/transmutation/do_ritual(mob/living/carbon/human/invoker) - var/list/ore_types = list() - - for(var/obj/item/stack/ore/ore as anything in subtypesof(/obj/item/stack/ore)) - LAZYADD(ore_types, ore) + var/ore_type = pick(subtypesof(/obj/item/stack/ore)) - var/obj/item/stack/ore/ore = pick(ore_types) - ore = new(get_turf(ritual_object)) + var/obj/item/stack/ore/ore = new ore_type(get_turf(ritual_object)) ore.add(10) return RITUAL_SUCCESSFUL @@ -1089,7 +1097,7 @@ cooldown_after_cast = 150 SECONDS shaman_only = TRUE extra_invokers = 2 - cast_time = 60 SECONDS + cast_time = 30 SECONDS required_things = list( /mob/living/carbon/human = 2 ) @@ -1113,7 +1121,7 @@ if(!.) return FALSE - for(var/mob/living/carbon/human/human as anything in used_things) + for(var/mob/living/carbon/human/human in used_things) if(human.stat != DEAD) to_chat(invoker, "Гуманоиды должны быть мертвы.") return FALSE @@ -1165,7 +1173,7 @@ shaman_only = TRUE disaster_prob = 35 extra_invokers = 1 - cast_time = 60 SECONDS + cast_time = 30 SECONDS required_things = list( /mob/living/simple_animal = 1, /obj/item/organ/internal/regenerative_core = 1, @@ -1178,7 +1186,7 @@ if(!.) return FALSE - for(var/mob/living/simple_animal/living as anything in used_things) + for(var/mob/living/simple_animal/living in used_things) if(living.client) to_chat(invoker, "Существо должно быть бездушным.") return FALSE diff --git a/code/datums/spells/alien_spells/evolve.dm b/code/datums/spells/alien_spells/evolve.dm index 3a690900403..80f11c6b97f 100644 --- a/code/datums/spells/alien_spells/evolve.dm +++ b/code/datums/spells/alien_spells/evolve.dm @@ -30,6 +30,9 @@ /obj/effect/proc_holder/spell/alien_spell/evolve/can_cast(mob/living/carbon/alien/user, charge_check, show_message) + if(!..()) + return FALSE + if(!user.can_evolve) if(show_message) to_chat(user, span_warning("We have nowhere to evolve further!")) @@ -118,11 +121,15 @@ /obj/effect/proc_holder/spell/alien_spell/evolve/queen/can_cast(mob/living/carbon/alien/user, charge_check, show_message) + if(!..()) + return FALSE + if(user.queen_count >= user.queen_maximum) if(show_message) to_chat(user, span_warning("We already have a queen.")) return FALSE + return TRUE /obj/effect/proc_holder/spell/alien_spell/evolve/queen/cast(list/targets, mob/living/carbon/alien/user) ..() diff --git a/code/datums/supplypacks.dm b/code/datums/supplypacks.dm index c36bb358f60..676c181ae90 100644 --- a/code/datums/supplypacks.dm +++ b/code/datums/supplypacks.dm @@ -577,6 +577,13 @@ GLOBAL_LIST_INIT(all_supply_groups, list(SUPPLY_EMERGENCY,SUPPLY_SECURITY,SUPPLY cost = 25 //По 6 за один блокиратор containername = "sibyl attachments crate" +/datum/supply_packs/security/armory/fastpouch + name = "Fast Pouch Crate" + contains = list(/obj/item/storage/pouch/fast, + /obj/item/storage/pouch/fast) + cost = 100 + containername = "fast pouch crate" + /////// Weapons: Specialist /datum/supply_packs/security/armory/ballistic diff --git a/code/datums/uplink_item.dm b/code/datums/uplink_item.dm index ac8a46d0b89..4eeac88c353 100644 --- a/code/datums/uplink_item.dm +++ b/code/datums/uplink_item.dm @@ -1618,7 +1618,7 @@ name = "Access Tuner" desc = "The access tuner is a small device that can interface with airlocks from range. It takes a few seconds to connect and can change the bolt state, open the door, or toggle emergency access." item = /obj/item/door_remote/omni/access_tuner - cost = 30 + cost = 15 /datum/uplink_item/device_tools/toolbox name = "Fully Loaded Toolbox" diff --git a/code/defines/procs/announce.dm b/code/defines/procs/announce.dm index e124d06c5f9..19fe3703a74 100644 --- a/code/defines/procs/announce.dm +++ b/code/defines/procs/announce.dm @@ -13,6 +13,7 @@ GLOBAL_DATUM_INIT(event_announcement, /datum/announcement/priority/command/event var/announcement_type = "Оповещение" var/admin_announcement = 0 // Admin announcements are received regardless of being in range of a radio, unless you're in the lobby to prevent metagaming var/language = LANGUAGE_GALACTIC_COMMON + var/beannounced = TRUE /datum/announcement/New(var/do_log = 0, var/new_sound = null, var/do_newscast = 0) sound = new_sound @@ -47,6 +48,8 @@ GLOBAL_DATUM_INIT(event_announcement, /datum/announcement/priority/command/event /datum/announcement/proc/Announce(message as text, new_title = "", new_sound = null, do_newscast = newscast, msg_sanitized = 0, from, msg_language) if(!message) return + if(!beannounced) + return var/message_title = new_title ? new_title : title var/message_sound = new_sound ? sound(new_sound) : sound diff --git a/code/game/area/ss13_areas.dm b/code/game/area/ss13_areas.dm index e1439d14a5d..c4135dd9dc7 100644 --- a/code/game/area/ss13_areas.dm +++ b/code/game/area/ss13_areas.dm @@ -1522,6 +1522,12 @@ This applies to all STANDARD station areas name = "Chapel Office" icon_state = "chapeloffice" +/area/chapel/morgue + name = "Chapel Morgue" + +/area/chapel/massdriver + name = "Chapel Mass Driver" + /area/escapepodbay name = "Escape Shuttle Hallway Podbay" icon_state = "escape" diff --git a/code/game/dna/genes/disabilities.dm b/code/game/dna/genes/disabilities.dm index 70e7ab98ca0..3e17d60509f 100644 --- a/code/game/dna/genes/disabilities.dm +++ b/code/game/dna/genes/disabilities.dm @@ -266,7 +266,7 @@ /datum/dna/gene/disability/wingdings name = "Alien Voice" desc = "Искажает голос субъекта, превращая его в непонятную речь." - activation_message = list(span_wingdings("Ваши голосовые связки кажутся инородными.")) + activation_message = list(span_wingdings("Vashi golosovyye svyazki kazhutsya chuzhimi.")) deactivation_message = list("Ваши голосовые связки больше не кажутся инородными.") instability = -GENE_INSTABILITY_MINOR traits_to_add = list(TRAIT_WINGDINGS) @@ -303,7 +303,7 @@ /datum/dna/gene/disability/weak name = "Weak" desc = "Делает мышцы субъекта более слабыми." - activation_message = list("Вы чуствуете внезапную слабость в мышцах.") + activation_message = list("Вы чувствуете внезапную слабость в мышцах.") deactivation_message = list("Вы снова ощущаете силу в мышцах.") instability = -GENE_INSTABILITY_MODERATE traits_to_add = list(TRAIT_GENE_WEAK) @@ -378,7 +378,7 @@ /datum/dna/gene/disability/paraplegia name = "Paraplegia" desc = "Парализует мышцы ног." - activation_message = list("Вы не чуствуете своих ног.") + activation_message = list("Вы не чувствуете своих ног.") deactivation_message = list("Вы возвращаете контроль над ногами.") instability = -GENE_INSTABILITY_MAJOR traits_to_add = list(TRAIT_FLOORED) diff --git a/code/game/dna/genes/goon_powers.dm b/code/game/dna/genes/goon_powers.dm index 84908917c69..313db2a819a 100644 --- a/code/game/dna/genes/goon_powers.dm +++ b/code/game/dna/genes/goon_powers.dm @@ -586,7 +586,7 @@ numbers += H.mind.initial_account.account_number numbers += H.mind.initial_account.remote_access_pin if(numbers.len>0) - to_chat(user, span_notice("Числа: Вы чувствуете, что [numbers.len > 1?"число является важным" : "числа являются важными"] для [M.name].")) + to_chat(user, span_notice("Числа: Вы чувствуете, что [numbers.len > 1 ? "числа" : "число"] [english_list(numbers)] [numbers.len > 1 ? "являются важными" : "является важным"] для [M.name].")) to_chat(user, span_notice("Мысли: [M.name] сейчас [thoughts].")) if(HAS_TRAIT(M, TRAIT_EMPATHY)) diff --git a/code/game/gamemodes/antag_paradise/antag_paradise.dm b/code/game/gamemodes/antag_paradise/antag_paradise.dm index 7ac097ddd9c..fd86374286d 100644 --- a/code/game/gamemodes/antag_paradise/antag_paradise.dm +++ b/code/game/gamemodes/antag_paradise/antag_paradise.dm @@ -107,7 +107,7 @@ if(special_antag) special_antag.restricted_roles = (restricted_jobs|protected_jobs|protected_jobs_AI) special_antag.restricted_roles -= JOB_TITLE_AI - special_antag.special_role = SPECIAL_ROLE_TRAITOR + special_antag.special_role = SPECIAL_ROLE_MALFAI SSjobs.new_malf = special_antag.current pre_antags[special_antag] = ROLE_MALF_AI antags_amount-- diff --git a/code/game/gamemodes/clockwork/clockwork_structures.dm b/code/game/gamemodes/clockwork/clockwork_structures.dm index cefd9609788..e65baa26fee 100644 --- a/code/game/gamemodes/clockwork/clockwork_structures.dm +++ b/code/game/gamemodes/clockwork/clockwork_structures.dm @@ -18,12 +18,12 @@ /obj/structure/clockwork/functional max_integrity = 100 var/cooldowntime = 0 - var/death_message = "The structure falls apart." + var/death_message = span_danger("The structure falls apart.") var/death_sound = 'sound/effects/forge_destroy.ogg' var/canbehidden = FALSE var/hidden = FALSE var/hidden_type - var/list/choosable_items = list( + var/list/atom/choosable_items = list( "rack" = /obj/structure/rack, "table" = /obj/structure/table, "wooden table" = /obj/structure/table/wood, @@ -37,19 +37,7 @@ if(!hidden) name = initial(name) return - switch(hidden_type) - if("rack") - name = "rack" - if("table") - name = "table" - if("wooden table") - name = "wooden table" - if("personal closet") - name = "personal closet" - if("girder") - name = "girder" - if("bookcase") - name = "bookcase" + name = choosable_items[hidden_type]::name /obj/structure/clockwork/functional/update_desc(updates = ALL) @@ -57,19 +45,19 @@ if(!hidden) desc = initial(desc) return - switch(hidden_type) + switch(hidden_type) //used in case, where objects "examine" text aren't in their desc var (like in proc/examine()) or if you want do something funny if("rack") - desc = "Different from the Middle Ages version.
It's held together by a couple of bolts." + desc = "Different from the Middle Ages version.
[span_notice("It's held together by a couple of bolts.")]" if("table") - desc = "A square piece of metal standing on four metal legs. It can not move.
The top is screwed on, but the main bolts are also visible." + desc = "A square piece of metal standing on four metal legs. It can not move.
[span_notice("The top is screwed on, but the main bolts are also visible.")]" if("wooden table") - desc = "Do not apply fire to this. Rumour says it burns easily.
The top is screwed on, but the main bolts are also visible." - if("personal closet") - desc = "It's a secure locker for personnel. The first card swiped gains control." + desc = "Do not apply fire to this. Rumour says it burns easily.
[span_notice("The top is screwed on, but the main bolts are also visible.")]" if("girder") - desc = "The bolts are lodged in place." - if("bookcase") - desc = null + desc = "[span_notice("The bolts are lodged in place.")]" + if("broken grille") + desc = "A flimsy framework of metal rods.
[span_notice("It's secured in place with screws. The rods look like they could be cut through.")]" + else + desc = choosable_items[hidden_type]::desc /obj/structure/clockwork/functional/update_icon_state() @@ -77,25 +65,8 @@ icon = initial(icon) icon_state = anchored ? "[initial(icon_state)]-off" : initial(icon_state) return - switch(hidden_type) - if("rack") - icon = 'icons/obj/objects.dmi' - icon_state = "rack" - if("table") - icon = 'icons/obj/smooth_structures/table.dmi' - icon_state = "table" - if("wooden table") - icon = 'icons/obj/smooth_structures/wood_table.dmi' - icon_state = "wood_table" - if("personal closet") - icon = 'icons/obj/closet.dmi' - icon_state = "secureoff" - if("girder") - icon = 'icons/obj/structures.dmi' - icon_state = "girder" - if("bookcase") - icon = 'icons/obj/library.dmi' - icon_state = "book-0" + icon = choosable_items[hidden_type]::icon + icon_state = choosable_items[hidden_type]::icon_state /obj/structure/clockwork/functional/attackby(obj/item/I, mob/user, params) @@ -139,7 +110,7 @@ /obj/structure/clockwork/functional/examine(mob/user) . = ..() if(hidden && isclocker(user)) - . += "It's a disguised [initial(name)]!" + . += span_notice("It's a disguised [initial(name)]!") // returns TRUE if hidden, if unhidden FALSE /obj/structure/clockwork/functional/proc/toggle_hide(chosen_type) @@ -158,7 +129,7 @@ desc = "An imposing spire formed of brass. It somewhat pulsates." icon_state = "beacon" max_integrity = 250 // A very important one - death_message = "The beacon crumbles and falls in parts to the ground relaesing it's power!" + death_message = span_danger("The beacon crumbles and falls in parts to the ground relaesing it's power!") death_sound = 'sound/effects/creepyshriek.ogg' var/heal_delay = 6 SECONDS var/last_heal = 0 @@ -186,7 +157,7 @@ if(!isclocker(L)) continue if(L.reagents?.has_reagent("holywater")) - to_chat(L, "You feel a terrible liquid disappearing from your body.") + to_chat(L, span_warning("You feel a terrible liquid disappearing from your body.")) L.reagents.del_reagent("holywater") if(iscogscarab(L)) var/mob/living/silicon/robot/cogscarab/C = L @@ -213,7 +184,7 @@ GLOB.clockwork_beacons -= src STOP_PROCESSING(SSobj, src) for(var/datum/mind/M in SSticker.mode.clockwork_cult) - to_chat(M.current, "You get the feeling that one of the beacons have been destroyed! The source comes from [areabeacon.name]") + to_chat(M.current, span_danger("You get the feeling that one of the beacons have been destroyed! The source comes from [areabeacon.name]")) return ..() /obj/structure/clockwork/functional/beacon/attackby(obj/item/I, mob/user, params) @@ -228,7 +199,7 @@ desc = "A strange brass platform with spinning cogs inside. It demands something in exchange for goods..." icon_state = "altar" density = FALSE - death_message = "The credence breaks in pieces as it dusts into nothing!" + death_message = span_danger("The credence breaks in pieces as it dusts into nothing!") canbehidden = TRUE choosable_items = list( "potted plant" = /obj/item/twohanded/required/kirbyplants, @@ -265,38 +236,6 @@ return ..() -/obj/structure/clockwork/functional/altar/update_name(updates = ALL) - . = ..() - if(!hidden) - name = initial(name) - return - switch(hidden_type) - if("potted plant") - name = "potted plant" - if("chair") - name = "chair" - if("stool") - name = "stool" - if("broken grille") - name = "grille" - - -/obj/structure/clockwork/functional/altar/update_desc(updates = ALL) - . = ..() - if(!hidden) - desc = initial(desc) - return - switch(hidden_type) - if("potted plant") - desc = null - if("chair") - desc = "You sit in this. Either by will or force." - if("stool") - desc = "Apply butt." - if("broken grille") - desc = "A flimsy framework of metal rods." - - /obj/structure/clockwork/functional/altar/update_icon_state() if(!hidden) icon = initial(icon) @@ -305,19 +244,11 @@ return icon_state = first_stage ? "[initial(icon_state)]-fast" : initial(icon_state) return - switch(hidden_type) - if("potted plant") - icon = 'icons/obj/flora/plants.dmi' - icon_state = "plant-[rand(1,36)]" - if("chair") - icon = 'icons/obj/chairs.dmi' - icon_state = "chair" - if("stool") - icon = 'icons/obj/chairs.dmi' - icon_state = "stool" - if("broken grille") - icon = 'icons/obj/structures.dmi' - icon_state = "brokengrille" + icon = choosable_items[hidden_type]::icon + if(hidden_type == "potted plant") + icon_state = "plant-[rand(1,36)]" + else + icon_state = choosable_items[hidden_type]::icon_state /obj/structure/clockwork/functional/altar/attackby(obj/item/I, mob/user, params) @@ -408,7 +339,7 @@ /obj/structure/clockwork/functional/altar/proc/first_stage_check(var/mob/living/carbon/human/target) first_stage = TRUE - target.visible_message("[src] begins to glow a piercing amber!", "You feel something start to invade your mind...") + target.visible_message(span_warning("[src] begins to glow a piercing amber!"), span_clock("You feel something start to invade your mind...")) glow = new (get_turf(src)) animate(glow, alpha = 255, time = 8 SECONDS) update_icon(UPDATE_ICON_STATE) @@ -416,11 +347,11 @@ /obj/structure/clockwork/functional/altar/proc/second_stage_check(var/mob/living/carbon/human/target) second_stage = TRUE if(!is_convertable_to_clocker(target.mind) || target.stat == DEAD) // mindshield or holy or mindless monkey. or dead guy - target.visible_message("[src] in glowing manner starts corrupting [target]!", \ - "You feel as your body starts to corrupt by [src] underneath!") + target.visible_message(span_warning("[src] in glowing manner starts corrupting [target]!"), \ + span_danger("You feel as your body starts to corrupt by [src] underneath!")) target.Weaken(20 SECONDS) else // just a living non-clocker civil - to_chat(target, "\"You belong to me now.\"") + to_chat(target, span_clocklarge("\"You belong to me now.\"")) target.heal_overall_damage(50, 50) if(isgolem(target)) target.mind.wipe_memory() @@ -438,7 +369,7 @@ converting = null update_icon(UPDATE_ICON_STATE) if(!silent) - visible_message("[src] slowly stops glowing!") + visible_message(span_warning("[src] slowly stops glowing!")) /obj/structure/clockwork/functional/altar/attackby(obj/item/I, mob/user, params) @@ -467,30 +398,30 @@ var/datum/game_mode/gamemode = SSticker.mode if(GLOB.ark_of_the_clockwork_justiciar) - to_chat(user, "There is already Gateway somewhere!") + to_chat(user, span_clockitalic("There is already Gateway somewhere!")) return FALSE if(gamemode.clocker_objs.clock_status < RATVAR_NEEDS_SUMMONING) - to_chat(user, "Ratvar is not ready to be summoned yet!") + to_chat(user, span_clockitalic("Ratvar is not ready to be summoned yet!")) return FALSE if(gamemode.clocker_objs.clock_status == RATVAR_HAS_RISEN) - to_chat(user, "\"My fellow. There is no need for it anymore.\"") + to_chat(user, span_clockitalic("\"My fellow. There is no need for it anymore.\"")) return FALSE var/list/summon_areas = gamemode.clocker_objs.obj_summon.ritual_spots if(!(A in summon_areas)) - to_chat(user, "Ratvar can only be summoned where the veil is weak - in [english_list(summon_areas)]!") + to_chat(user, span_cultlarge("Ratvar can only be summoned where the veil is weak - in [english_list(summon_areas)]!")) return FALSE var/confirm_final = tgui_alert(user, "This is the FINAL step to summon, the crew will be alerted to your presence AND your location!", "The power comes...", list("Let Ratvar shine ones more!", "No")) if(user) if(confirm_final != "Let Ratvar shine ones more!") - to_chat(user, "You decide to prepare further before pincing the shard.") + to_chat(user, span_clockitalic("You decide to prepare further before pincing the shard.")) return FALSE return TRUE /obj/structure/clockwork/functional/altar/proc/begin_the_ritual() - visible_message("The [src] expands itself revealing into the great Ark!") + visible_message(span_danger("The [src] expands itself revealing into the great Ark!")) new /obj/structure/clockwork/functional/celestial_gateway(get_turf(src)) qdel(src) return @@ -499,7 +430,7 @@ name = "cogscarab fabricator" desc = "House for a tons of little cogscarabs, self-producing and maintaining itself." icon_state = "fabricator" - death_message = "Fabricator crumbles and dusts, leaving nothing behind!" + death_message = span_danger("Fabricator crumbles and dusts, leaving nothing behind!") var/list/cogscarab_list = list() canbehidden = TRUE var/cog_slots = 0 @@ -508,11 +439,7 @@ /obj/structure/clockwork/functional/cogscarab_fabricator/examine(mob/user) . = ..() if(!hidden && (isclocker(user) || isobserver(user))) - . += "There's [cog_slots - cogscarab_list.len] cogscarab ready. [timer_fabrictor ? "And it's creating another one now" : "It stopped creating."]." - - -/obj/structure/clockwork/functional/cogscarab_fabricator/update_icon_state() - icon_state = anchored ? "[initial(icon_state)]-off" : initial(icon_state) + . += span_notice("There's [cog_slots - cogscarab_list.len] cogscarab ready. [timer_fabrictor ? "And it's creating another one now" : "It stopped creating."].") /obj/structure/clockwork/functional/cogscarab_fabricator/Initialize(mapload) @@ -577,17 +504,17 @@ /obj/structure/clockwork/functional/cogscarab_fabricator/attack_ghost(mob/dead/observer/user) if(hidden) - to_chat(user, "It's hidden and cannot produce you at this state!") + to_chat(user, span_warning("It's hidden and cannot produce you at this state!")) return FALSE if(!anchored) - to_chat(user, "It seems to be non-functional to produce a new shell!") + to_chat(user, span_warning("It seems to be non-functional to produce a new shell!")) return FALSE if(cogscarab_list.len >= cog_slots) - to_chat(user, "There's no empty shells to take!") + to_chat(user, span_notice("There's no empty shells to take!")) return FALSE if(alert(user, "Do you wish to become cogscarab?",,"Yes","No") == "Yes") if(cogscarab_list.len >= cog_slots) //Double check. No duplications - to_chat(user, "There's no empty shells to take!") + to_chat(user, span_notice("There's no empty shells to take!")) return FALSE var/mob/living/silicon/robot/cogscarab/cog = new(loc) cog.key = user.key diff --git a/code/game/gamemodes/traitor/traitor.dm b/code/game/gamemodes/traitor/traitor.dm index bdefc1983a3..26a3307edad 100644 --- a/code/game/gamemodes/traitor/traitor.dm +++ b/code/game/gamemodes/traitor/traitor.dm @@ -77,6 +77,7 @@ pre_malf_AI = traitor pre_malf_AI.restricted_roles = (restricted_jobs|protected_jobs|protected_jobs_AI) // All jobs are restricted for malf AI despite the config. pre_malf_AI.restricted_roles -= JOB_TITLE_AI + traitor.special_role = SPECIAL_ROLE_MALFAI SSjobs.new_malf = traitor.current else pre_traitors += traitor diff --git a/code/game/jobs/job/civilian.dm b/code/game/jobs/job/civilian.dm index 466ea8ab14a..7845ee9396e 100644 --- a/code/game/jobs/job/civilian.dm +++ b/code/game/jobs/job/civilian.dm @@ -9,8 +9,8 @@ supervisors = "the head of personnel" department_head = list(JOB_TITLE_HOP) selection_color = "#e6e6e6" - access = list() //See /datum/job/assistant/get_access() - minimal_access = list() //See /datum/job/assistant/get_access() + access = list(ACCESS_MAINT_TUNNELS) + minimal_access = list(ACCESS_MAINT_TUNNELS) alt_titles = list("Tourist","Businessman","Trader","Assistant") outfit = /datum/outfit/job/assistant insurance_type = INSURANCE_TYPE_BUDGETARY @@ -19,11 +19,6 @@ min_start_money = 10 max_start_money = 200 -/datum/job/civilian/get_access() - if(CONFIG_GET(flag/assistant_maint)) - return list(ACCESS_MAINT_TUNNELS) - else - return list() /datum/outfit/job/assistant name = "Civilian" diff --git a/code/game/jobs/job/medical.dm b/code/game/jobs/job/medical.dm index d90f74afdeb..06879c0c751 100644 --- a/code/game/jobs/job/medical.dm +++ b/code/game/jobs/job/medical.dm @@ -58,8 +58,8 @@ supervisors = "the chief medical officer" department_head = list(JOB_TITLE_CMO) selection_color = "#d1eeff" - access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_GENETICS, ACCESS_MINERAL_STOREROOM) - minimal_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY) + access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_GENETICS, ACCESS_MINERAL_STOREROOM, ACCESS_MAINT_TUNNELS) + minimal_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_MAINT_TUNNELS) alt_titles = list("Surgeon","Nurse") minimal_player_age = 3 exp_requirements = 600 @@ -145,8 +145,8 @@ supervisors = "the chief medical officer" department_head = list(JOB_TITLE_CMO) selection_color = "#d1eeff" - access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_GENETICS, ACCESS_MINERAL_STOREROOM) - minimal_access = list(ACCESS_MEDICAL, ACCESS_MORGUE) + access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_GENETICS, ACCESS_MINERAL_STOREROOM, ACCESS_MAINT_TUNNELS) + minimal_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS) minimal_player_age = 3 exp_requirements = 180 exp_type = EXP_TYPE_CREW @@ -211,8 +211,8 @@ supervisors = "the chief medical officer" department_head = list(JOB_TITLE_CMO) selection_color = "#d1eeff" - access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_GENETICS, ACCESS_MINERAL_STOREROOM) - minimal_access = list(ACCESS_MEDICAL, ACCESS_CHEMISTRY, ACCESS_MINERAL_STOREROOM) + access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_GENETICS, ACCESS_MINERAL_STOREROOM, ACCESS_MAINT_TUNNELS) + minimal_access = list(ACCESS_MEDICAL, ACCESS_CHEMISTRY, ACCESS_MINERAL_STOREROOM, ACCESS_MAINT_TUNNELS) alt_titles = list("Pharmacist","Pharmacologist") minimal_player_age = 7 exp_requirements = 600 @@ -250,8 +250,8 @@ supervisors = "the chief medical officer and the research director" department_head = list(JOB_TITLE_CMO, JOB_TITLE_RD) selection_color = "#d1eeff" - access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_GENETICS, ACCESS_RESEARCH, ACCESS_MINERAL_STOREROOM) - minimal_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_GENETICS, ACCESS_RESEARCH) + access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_GENETICS, ACCESS_RESEARCH, ACCESS_MINERAL_STOREROOM, ACCESS_MAINT_TUNNELS) + minimal_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_GENETICS, ACCESS_RESEARCH, ACCESS_MAINT_TUNNELS) minimal_player_age = 3 exp_requirements = 900 exp_type = EXP_TYPE_MEDICAL @@ -288,8 +288,8 @@ supervisors = "the chief medical officer" department_head = list(JOB_TITLE_CMO) selection_color = "#d1eeff" - access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_GENETICS, ACCESS_MINERAL_STOREROOM) - minimal_access = list(ACCESS_MEDICAL, ACCESS_VIROLOGY, ACCESS_MINERAL_STOREROOM) + access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_GENETICS, ACCESS_MINERAL_STOREROOM, ACCESS_MAINT_TUNNELS) + minimal_access = list(ACCESS_MEDICAL, ACCESS_VIROLOGY, ACCESS_MINERAL_STOREROOM, ACCESS_MAINT_TUNNELS) alt_titles = list("Pathologist","Microbiologist") minimal_player_age = 7 exp_requirements = 900 @@ -328,8 +328,8 @@ supervisors = "the chief medical officer" department_head = list(JOB_TITLE_CMO) selection_color = "#d1eeff" - access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_GENETICS, ACCESS_PSYCHIATRIST) - minimal_access = list(ACCESS_MEDICAL, ACCESS_PSYCHIATRIST) + access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_GENETICS, ACCESS_PSYCHIATRIST, ACCESS_MAINT_TUNNELS) + minimal_access = list(ACCESS_MEDICAL, ACCESS_PSYCHIATRIST, ACCESS_MAINT_TUNNELS) alt_titles = list("Psychologist","Therapist") outfit = /datum/outfit/job/psychiatrist diff --git a/code/game/jobs/job/science.dm b/code/game/jobs/job/science.dm index a7ddd56690b..9529e98f49a 100644 --- a/code/game/jobs/job/science.dm +++ b/code/game/jobs/job/science.dm @@ -64,8 +64,8 @@ supervisors = "the research director" department_head = list(JOB_TITLE_RD) selection_color = "#e6d1f0" - access = list(ACCESS_ROBOTICS, ACCESS_TOX, ACCESS_TOX_STORAGE, ACCESS_RESEARCH, ACCESS_XENOBIOLOGY, ACCESS_XENOARCH, ACCESS_MINERAL_STOREROOM) - minimal_access = list(ACCESS_TOX, ACCESS_TOX_STORAGE, ACCESS_RESEARCH, ACCESS_XENOBIOLOGY, ACCESS_XENOARCH, ACCESS_MINERAL_STOREROOM) + access = list(ACCESS_ROBOTICS, ACCESS_TOX, ACCESS_TOX_STORAGE, ACCESS_RESEARCH, ACCESS_XENOBIOLOGY, ACCESS_XENOARCH, ACCESS_MINERAL_STOREROOM, ACCESS_MAINT_TUNNELS) + minimal_access = list(ACCESS_TOX, ACCESS_TOX_STORAGE, ACCESS_RESEARCH, ACCESS_XENOBIOLOGY, ACCESS_XENOARCH, ACCESS_MINERAL_STOREROOM, ACCESS_MAINT_TUNNELS) alt_titles = list("Anomalist", "Plasma Researcher", "Xenobiologist", "Chemical Researcher") minimal_player_age = 3 exp_requirements = 600 @@ -149,8 +149,8 @@ supervisors = "the research director" department_head = list(JOB_TITLE_RD) selection_color = "#e6d1f0" - access = list(ACCESS_ROBOTICS, ACCESS_TOX, ACCESS_TOX_STORAGE, ACCESS_TECH_STORAGE, ACCESS_MORGUE, ACCESS_RESEARCH, ACCESS_MINERAL_STOREROOM) //As a job that handles so many corpses, it makes sense for them to have morgue access. - minimal_access = list(ACCESS_ROBOTICS, ACCESS_TECH_STORAGE, ACCESS_MORGUE, ACCESS_RESEARCH, ACCESS_MINERAL_STOREROOM) //As a job that handles so many corpses, it makes sense for them to have morgue access. + access = list(ACCESS_ROBOTICS, ACCESS_TOX, ACCESS_TOX_STORAGE, ACCESS_TECH_STORAGE, ACCESS_MORGUE, ACCESS_RESEARCH, ACCESS_MINERAL_STOREROOM, ACCESS_MAINT_TUNNELS) //As a job that handles so many corpses, it makes sense for them to have morgue access. + minimal_access = list(ACCESS_ROBOTICS, ACCESS_TECH_STORAGE, ACCESS_MORGUE, ACCESS_RESEARCH, ACCESS_MINERAL_STOREROOM, ACCESS_MAINT_TUNNELS) //As a job that handles so many corpses, it makes sense for them to have morgue access. alt_titles = list("Biomechanical Engineer","Mechatronic Engineer") minimal_player_age = 3 exp_requirements = 900 diff --git a/code/game/jobs/job/security.dm b/code/game/jobs/job/security.dm index 7fd0e3ec95f..6ad447c1326 100644 --- a/code/game/jobs/job/security.dm +++ b/code/game/jobs/job/security.dm @@ -36,7 +36,7 @@ uniform = /obj/item/clothing/under/rank/head_of_security suit = /obj/item/clothing/suit/armor/hos - gloves = /obj/item/clothing/gloves/color/black/hos + gloves = /obj/item/clothing/gloves/combat/swat shoes = /obj/item/clothing/shoes/jackboots head = /obj/item/clothing/head/HoS l_ear = /obj/item/radio/headset/heads/hos/alt @@ -71,8 +71,8 @@ supervisors = "the head of security" department_head = list(JOB_TITLE_HOS) selection_color = "#edcdcd" - access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT, ACCESS_MAINT_TUNNELS, ACCESS_MORGUE, ACCESS_WEAPONS) - minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT, ACCESS_MAINT_TUNNELS, ACCESS_WEAPONS) + access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_PILOT, ACCESS_FORENSICS_LOCKERS, ACCESS_COURT, ACCESS_MAINT_TUNNELS, ACCESS_MORGUE, ACCESS_GATEWAY, ACCESS_WEAPONS) + minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_PILOT, ACCESS_FORENSICS_LOCKERS, ACCESS_COURT, ACCESS_MAINT_TUNNELS, ACCESS_GATEWAY, ACCESS_WEAPONS) alt_titles = list("Brig Sergeant") minimal_player_age = 21 blocked_race_for_job = list(SPECIES_VOX) diff --git a/code/game/jobs/job/supervisor.dm b/code/game/jobs/job/supervisor.dm index 824b8276251..950f74dd3f0 100644 --- a/code/game/jobs/job/supervisor.dm +++ b/code/game/jobs/job/supervisor.dm @@ -30,7 +30,7 @@ GLOBAL_DATUM_INIT(captain_announcement, /datum/announcement/minor, new(do_newsca /datum/job/captain/announce(mob/living/carbon/human/H) . = ..() - GLOB.captain_announcement.Announce("Экипажу станции, капитан [H.real_name] взошел на борт!") + GLOB.captain_announcement.Announce("Экипажу станции, капитан [H.real_name] взош[genderize_ru(H.gender, "ёл", "ла", "ло", "ли")] на борт!") /datum/outfit/job/captain name = "Captain" @@ -207,7 +207,7 @@ GLOBAL_DATUM_INIT(captain_announcement, /datum/announcement/minor, new(do_newsca jobtype = /datum/job/blueshield uniform = /obj/item/clothing/under/rank/blueshield suit = /obj/item/clothing/suit/armor/vest/blueshield - gloves = /obj/item/clothing/gloves/combat + gloves = /obj/item/clothing/gloves/combat/swat shoes = /obj/item/clothing/shoes/jackboots l_ear = /obj/item/radio/headset/heads/blueshield/alt glasses = /obj/item/clothing/glasses/hud/health/sunglasses diff --git a/code/game/jobs/job/support.dm b/code/game/jobs/job/support.dm index dfcd5916ab5..00bdf0a6cab 100644 --- a/code/game/jobs/job/support.dm +++ b/code/game/jobs/job/support.dm @@ -83,7 +83,7 @@ supervisors = "the quartermaster" department_head = list(JOB_TITLE_QUARTERMASTER) selection_color = "#e2dbc8" - access = list(ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_MINT, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM) + access = list(ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_MINT, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MAINT_TUNNELS, ACCESS_MINERAL_STOREROOM) minimal_access = list(ACCESS_MINING, ACCESS_MINT, ACCESS_MINING_STATION, ACCESS_MAILSORTING, ACCESS_MAINT_TUNNELS, ACCESS_MINERAL_STOREROOM) alt_titles = list("Spelunker") outfit = /datum/outfit/job/mining @@ -151,8 +151,8 @@ supervisors = "the head of personnel" department_head = list(JOB_TITLE_HOP) selection_color = "#d1e8d3" - access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM) - minimal_access = list(ACCESS_BAR, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM) + access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM, ACCESS_MAINT_TUNNELS) + minimal_access = list(ACCESS_BAR, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM, ACCESS_MAINT_TUNNELS) alt_titles = list("Barman","Barkeeper","Drink Artist") outfit = /datum/outfit/job/bartender @@ -193,8 +193,8 @@ supervisors = "the head of personnel" department_head = list(JOB_TITLE_HOP) selection_color = "#d1e8d3" - access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE) - minimal_access = list(ACCESS_KITCHEN) + access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS) + minimal_access = list(ACCESS_KITCHEN, ACCESS_MAINT_TUNNELS) alt_titles = list("Cook","Culinary Artist","Butcher") outfit = /datum/outfit/job/chef @@ -245,8 +245,8 @@ supervisors = "the head of personnel" department_head = list(JOB_TITLE_HOP) selection_color = "#d1e8d3" - access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE) - minimal_access = list(ACCESS_HYDROPONICS, ACCESS_MORGUE) + access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS) + minimal_access = list(ACCESS_HYDROPONICS, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS) alt_titles = list("Hydroponicist", "Botanical Researcher") exp_requirements = 300 exp_type = EXP_TYPE_CREW @@ -284,8 +284,8 @@ supervisors = "the head of personnel" department_head = list(JOB_TITLE_HOP) selection_color = "#d1e8d3" - access = list(ACCESS_CLOWN, ACCESS_THEATRE) - minimal_access = list(ACCESS_CLOWN, ACCESS_THEATRE) + access = list(ACCESS_CLOWN, ACCESS_THEATRE, ACCESS_MAINT_TUNNELS) + minimal_access = list(ACCESS_CLOWN, ACCESS_THEATRE, ACCESS_MAINT_TUNNELS) alt_titles = list("Performance Artist","Comedian","Jester") outfit = /datum/outfit/job/clown @@ -502,8 +502,8 @@ supervisors = "the head of personnel" department_head = list(JOB_TITLE_HOP) selection_color = "#d1e8d3" - access = list(ACCESS_MIME, ACCESS_THEATRE) - minimal_access = list(ACCESS_MIME, ACCESS_THEATRE) + access = list(ACCESS_MIME, ACCESS_THEATRE, ACCESS_MAINT_TUNNELS) + minimal_access = list(ACCESS_MIME, ACCESS_THEATRE, ACCESS_MAINT_TUNNELS) alt_titles = list("Panthomimist") outfit = /datum/outfit/job/mime @@ -590,8 +590,8 @@ supervisors = "the head of personnel" department_head = list(JOB_TITLE_HOP) selection_color = "#d1e8d3" - access = list(ACCESS_LIBRARY) - minimal_access = list(ACCESS_LIBRARY) + access = list(ACCESS_LIBRARY, ACCESS_MAINT_TUNNELS) + minimal_access = list(ACCESS_LIBRARY, ACCESS_MAINT_TUNNELS) alt_titles = list("Journalist") outfit = /datum/outfit/job/librarian @@ -624,8 +624,8 @@ department_head = list(JOB_TITLE_HOP) selection_color = "#d1e8d3" alt_titles = list("Hair Stylist","Beautician") - access = list() - minimal_access = list() + access = list(ACCESS_MAINT_TUNNELS) + minimal_access = list(ACCESS_MAINT_TUNNELS) outfit = /datum/outfit/job/barber salary = 100 diff --git a/code/game/machinery/computer/HolodeckControl.dm b/code/game/machinery/computer/HolodeckControl.dm index 49218e2674f..e45b8a0599b 100644 --- a/code/game/machinery/computer/HolodeckControl.dm +++ b/code/game/machinery/computer/HolodeckControl.dm @@ -1,6 +1,6 @@ /obj/machinery/computer/HolodeckControl name = "holodeck control computer" - desc = "A computer used to control a nearby holodeck." + desc = "Компьютер, используемый для управления ближайшим голодеком." icon_keyboard = "tech_key" icon_screen = "holocontrol" var/area/linkedholodeck = null @@ -515,54 +515,54 @@ icon_state = "hoop" anchored = TRUE density = TRUE - pass_flags = LETPASSTHROW + pass_flags_self = LETPASSTHROW + damage_deflection = 7 // You can't just break it with da foking glass ashtray. /obj/structure/holohoop/grab_attack(mob/living/grabber, atom/movable/grabbed_thing) . = TRUE + if(!isliving(grabbed_thing)) - return . - var/mob/living/target = grabbed_thing + return + if(grabber.grab_state < GRAB_NECK) to_chat(grabber, span_warning("You need a better grip to do that!")) - return . + return + + var/mob/living/target = grabbed_thing + visible_message(span_warning("[grabber] dunks [target] into [src]!")) - target.forceMove(loc) + target.forceMove(get_turf(src)) target.Weaken(10 SECONDS) /obj/structure/holohoop/attackby(obj/item/I, mob/user, params) - if(user.drop_transfer_item_to_loc(I, src)) - visible_message(span_notice("[user] dunks [I] into [src]!")) - return ATTACK_CHAIN_BLOCKED + if(user.a_intent == INTENT_HARM) // Players may use (DISARM|GRAB) intent for pushing each other. + return ..() + if(user.drop_transfer_item_to_loc(I, get_turf(src))) + visible_message(span_notice("[user] dunks [I] into [src]!")) -/obj/structure/holohoop/has_prints() - return FALSE + return ATTACK_CHAIN_BLOCKED /obj/structure/holohoop/CanAllowThrough(atom/movable/mover, border_dir) - . = ..() - if((isitem(mover) && !isprojectile(mover)) && mover.throwing && mover.pass_flags != PASSEVERYTHING) - if(prob(50)) - mover.forceMove(loc) - visible_message(span_notice("Swish! [mover] lands in [src].")) - else - visible_message(span_alert("[mover] bounces off of [src]'s rim!")) - return FALSE + if(!isitem(mover) || isprojectile(mover)) + return ..() + if((mover.throwing && mover.throwing.thrower && HAS_TRAIT(mover.throwing.thrower, TRAIT_BADASS)) || prob(50)) + mover.forceMove(get_turf(src)) + visible_message(span_notice("Swish! [mover] lands in [src].")) -/obj/structure/holohoop/hitby(atom/movable/AM, skipcatch, hitpush, blocked, datum/thrownthing/throwingdatum) - if(isitem(AM) && !isprojectile(AM)) - if(prob(50) || (throwingdatum && throwingdatum.thrower && HAS_TRAIT(throwingdatum.thrower, TRAIT_BADASS))) - AM.forceMove(get_turf(src)) - visible_message(span_warning("Swish! [AM] lands in [src].")) - return - else - visible_message(span_danger("[AM] bounces off of [src]'s rim!")) - return ..() else - return ..() + visible_message(span_alert("[mover] bounces off of [src]'s rim!")) + + return FALSE + + +/obj/structure/holohoop/has_prints() + return FALSE + /obj/machinery/readybutton name = "Ready Declaration Device" diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index 6f4c8f5d247..24952ee61b1 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -49,7 +49,7 @@ /obj/machinery/computer/arcade/battle name = "arcade machine" - desc = "Does not support Pinball." + desc = "Не поддерживает пинбол." icon = 'icons/obj/machines/computer.dmi' icon_state = "arcade" circuit = /obj/item/circuitboard/arcade/battle @@ -277,7 +277,7 @@ /obj/machinery/computer/arcade/orion_trail name = "The Orion Trail" - desc = "Learn how our ancestors got to Orion, and have fun in the process!" + desc = "Узнайте, как наши предки добрались до Ориона, и повеселитесь в процессе!" icon_state = "arcade" circuit = /obj/item/circuitboard/arcade/orion_trail var/busy = 0 //prevent clickspam that allowed people to ~speedrun~ the game. @@ -382,7 +382,7 @@ emagged = 0 //removes the emagged status after you lose playing = 0 //also a new game name = "The Orion Trail" - desc = "Learn how our ancestors got to Orion, and have fun in the process!" + desc = "Узнайте, как наши предки добрались до Ориона, и повеселитесь в процессе!" else if(event) dat = eventdat @@ -955,7 +955,7 @@ prizevend(score) emagged = 0 name = "The Orion Trail" - desc = "Learn how our ancestors got to Orion, and have fun in the process!" + desc = "Узнайте, как наши предки добрались до Ориона, и повеселитесь в процессе!" /obj/machinery/computer/arcade/orion_trail/emag_act(mob/user) if(!emagged) @@ -963,7 +963,7 @@ if(user) to_chat(user, span_notice("You override the cheat code menu and skip to Cheat #[rand(1, 50)]: Realism Mode.")) name = "The Orion Trail: Realism Edition" - desc = "Learn how our ancestors got to Orion, and try not to die in the process!" + desc = "Узнайте, как наши предки добрались до Ориона, и постарайтесь не сдохнуть в процессе!" newgame() emagged = 1 @@ -1015,7 +1015,7 @@ /obj/machinery/computer/arcade/orion_trail/pc_frame name = "special purpose computer" - desc = "It will be difficult to perform calculations on this computer..." + desc = "Выполнять вычисления на этом компьютере будет сложно..." icon = 'icons/obj/machines/computer.dmi' icon_state = "aimainframe" @@ -1026,7 +1026,7 @@ /obj/machinery/computer/arcade/battle/pc_frame name = "special purpose computer" - desc = "It will be difficult to perform calculations on this computer..." + desc = "Выполнять вычисления на этом компьютере будет сложно..." icon = 'icons/obj/machines/computer.dmi' icon_state = "aimainframe" diff --git a/code/game/machinery/computer/atmos_alert.dm b/code/game/machinery/computer/atmos_alert.dm index 1911c9db534..277d4f9f894 100644 --- a/code/game/machinery/computer/atmos_alert.dm +++ b/code/game/machinery/computer/atmos_alert.dm @@ -1,6 +1,6 @@ /obj/machinery/computer/atmos_alert name = "atmospheric alert computer" - desc = "Used to access the station's atmospheric sensors." + desc = "Используется для мониторинга атмосферных датчиков станции." circuit = /obj/item/circuitboard/atmos_alert var/ui_x = 350 var/ui_y = 300 diff --git a/code/game/machinery/computer/atmos_control.dm b/code/game/machinery/computer/atmos_control.dm index 8ed0296b968..c9bbf42cf21 100644 --- a/code/game/machinery/computer/atmos_control.dm +++ b/code/game/machinery/computer/atmos_control.dm @@ -14,7 +14,7 @@ /obj/machinery/computer/atmoscontrol/laptop name = "atmospherics laptop" - desc = "Cheap Nanotrasen laptop." + desc = "Дешёвый ноутбук корпорации Nanotrasen." icon_state = "medlaptop" density = FALSE diff --git a/code/game/machinery/computer/brigcells.dm b/code/game/machinery/computer/brigcells.dm index c41c0442916..ace3d9f823e 100644 --- a/code/game/machinery/computer/brigcells.dm +++ b/code/game/machinery/computer/brigcells.dm @@ -1,6 +1,6 @@ /obj/machinery/computer/brigcells name = "cell management computer" - desc = "Used to manage prison cells." + desc = "Используется для управления тюремными камерами." icon_keyboard = "security_key" icon_screen = "cell_monitor" use_power = IDLE_POWER_USE diff --git a/code/game/machinery/computer/buildandrepair.dm b/code/game/machinery/computer/buildandrepair.dm index db352e64bfa..97ae55b7816 100644 --- a/code/game/machinery/computer/buildandrepair.dm +++ b/code/game/machinery/computer/buildandrepair.dm @@ -462,12 +462,15 @@ build_path = /obj/machinery/computer/turbine_computer origin_tech = "programming=4;engineering=4;powerstorage=4" + /obj/item/circuitboard/HONKputer board_name = "HONKputer" build_path = /obj/machinery/computer/HONKputer origin_tech = "programming=2" icon = 'icons/obj/machines/HONKputer.dmi' icon_state = "bananium_board" + board_type = "HONKputer" + /obj/item/circuitboard/broken board_name = "Broken curcuit" @@ -549,6 +552,14 @@ var/obj/item/circuitboard/circuit = null +/obj/structure/computerframe/Initialize(mapload, obj/item/circuitboard/circuit) + . = ..() + + if(circuit) + src.circuit = new circuit(src) + state = STATE_GLASS // Spawned during completed computer Init, so it's completed. + + /obj/structure/computerframe/examine(mob/user) . = ..() . += span_notice("It is [anchored ? "bolted to the floor" : "unbolted"].") @@ -569,10 +580,33 @@ /obj/structure/computerframe/deconstruct(disassembled = TRUE) if(!(obj_flags & NODECONSTRUCT)) - drop_computer_parts() + var/location = drop_location() + drop_computer_materials(location) + + if(circuit) + circuit.forceMove(location) + + if(state >= STATE_WIRES) + new /obj/item/stack/cable_coil(location, 5) + + if(state == STATE_GLASS) + new /obj/item/stack/sheet/glass(location, 2) + + state = STATE_EMPTY + circuit = null + return ..() // will qdel the frame +/obj/structure/computerframe/Destroy() + if(istype(circuit)) + qdel(circuit) + + circuit = null + + return ..() + + /obj/structure/computerframe/AltClick(mob/user) if(!Adjacent(user)) return @@ -588,16 +622,9 @@ /obj/structure/computerframe/obj_break(damage_flag) deconstruct() -/obj/structure/computerframe/proc/drop_computer_parts() - var/location = drop_location() + +/obj/structure/computerframe/proc/drop_computer_materials(location) new /obj/item/stack/sheet/metal(location, 5) - if(circuit) - circuit.forceMove(location) - circuit = null - if(state >= STATE_WIRES) - new /obj/item/stack/cable_coil(location, 5) - if(state == STATE_GLASS) - new /obj/item/stack/sheet/glass(location, 2) /obj/structure/computerframe/update_icon_state() @@ -651,27 +678,30 @@ /obj/structure/computerframe/screwdriver_act(mob/living/user, obj/item/I) if(state != STATE_CIRCUIT && state != STATE_NOWIRES && state != STATE_GLASS) return FALSE + . = TRUE + if(!I.use_tool(src, user, volume = I.tool_volume)) - return . + return switch(state) if(STATE_CIRCUIT) to_chat(user, span_notice("You screw the circuit board into place.")) state = STATE_NOWIRES update_icon(UPDATE_ICON_STATE) + if(STATE_NOWIRES) to_chat(user, span_notice("You unfasten the circuit board.")) state = STATE_CIRCUIT update_icon(UPDATE_ICON_STATE) + if(STATE_GLASS) + if(!anchored) + to_chat(user, span_warning("Monitor can't be properly connected to the unfastened frame!")) + return + to_chat(user, span_notice("You connect the monitor.")) - var/B = new circuit.build_path(loc) - if(istype(circuit, /obj/item/circuitboard/supplycomp)) - var/obj/machinery/computer/supplycomp/SC = B - var/obj/item/circuitboard/supplycomp/C = circuit - SC.can_order_contraband = C.contraband_enabled - qdel(src) + new circuit.build_path(get_turf(src), src) /obj/structure/computerframe/wirecutter_act(mob/living/user, obj/item/I) @@ -694,16 +724,17 @@ if(STATE_EMPTY) if(!istype(I, /obj/item/circuitboard)) return ..() + add_fingerprint(user) - if(istype(I, /obj/item/circuitboard/HONKputer) && !istype(src, /obj/structure/computerframe/HONKputer)) - to_chat(user, span_warning("[src] does not accept circuit boards of this type!")) - return ATTACK_CHAIN_PROCEED - var/obj/item/circuitboard/new_circuit = I - if(new_circuit.board_type != "computer") + + if(!circuit_compatibility_check(I)) to_chat(user, span_warning("[src] does not accept circuit boards of this type!")) return ATTACK_CHAIN_PROCEED - if(!user.drop_transfer_item_to_loc(new_circuit, src)) + + if(!user.drop_transfer_item_to_loc(I, src)) return ..() + + var/obj/item/circuitboard/new_circuit = I new_circuit.play_tool_sound(src) to_chat(user, span_notice("You place [new_circuit] inside [src].")) name += " ([new_circuit.board_name])" @@ -755,11 +786,27 @@ return ..() +/obj/structure/computerframe/proc/on_construction(obj/machinery/computer/computer) + forceMove(computer) + + +/obj/structure/computerframe/proc/circuit_compatibility_check(obj/item/circuitboard/circuit) + return circuit.board_type == "computer" + + /obj/structure/computerframe/HONKputer name = "Bananium Computer-frame" icon = 'icons/obj/machines/HONKputer.dmi' +/obj/structure/computerframe/HONKputer/drop_computer_materials(location) + new /obj/item/stack/sheet/mineral/bananium(location, 20) + + +/obj/structure/computerframe/HONKputer/circuit_compatibility_check(obj/item/circuitboard/circuit) + return circuit.board_type == "HONKputer" + + /obj/structure/computerframe/abductor icon_state = "comp_frame_alien1" @@ -768,47 +815,16 @@ icon_state = "comp_frame_alien[state]" -/obj/structure/computerframe/abductor/screwdriver_act(mob/living/user, obj/item/I) - . = TRUE - if(!I.use_tool(src, user)) - return +/obj/structure/computerframe/abductor/on_construction(obj/machinery/computer/computer) + ..() + computer.abductor = TRUE + computer.max_integrity = 400 + computer.obj_integrity = 400 - switch(state) - if(STATE_CIRCUIT) - to_chat(user, span_notice("You screw the circuit board into place.")) - state = STATE_NOWIRES - I.play_tool_sound(src) - update_icon(UPDATE_ICON_STATE) - if(STATE_NOWIRES) - to_chat(user, span_notice("You unfasten the circuit board.")) - state = STATE_CIRCUIT - I.play_tool_sound(src) - update_icon(UPDATE_ICON_STATE) - if(STATE_GLASS) - to_chat(user, span_notice("You connect the monitor.")) - I.play_tool_sound(src) - var/obj/machinery/computer/computer = new circuit.build_path(loc) - computer.abductor = TRUE - computer.update_icon() - computer.max_integrity = 400 - computer.obj_integrity = 400 - computer.update_icon() - if(istype(circuit, /obj/item/circuitboard/supplycomp)) - var/obj/machinery/computer/supplycomp/supply_comp = computer - var/obj/item/circuitboard/supplycomp/supply_circuit = circuit - supply_comp.can_order_contraband = supply_circuit.contraband_enabled - qdel(src) - -/obj/structure/computerframe/abductor/drop_computer_parts() - var/location = drop_location() + +/obj/structure/computerframe/abductor/drop_computer_materials(location) new /obj/item/stack/sheet/mineral/abductor(location, 4) - if(circuit) - circuit.forceMove(location) - circuit = null - if(state >= STATE_WIRES) - new /obj/item/stack/cable_coil(location, 5) - if(state == STATE_GLASS) - new /obj/item/stack/sheet/glass(location, 2) + #undef STATE_EMPTY #undef STATE_CIRCUIT diff --git a/code/game/machinery/computer/camera.dm b/code/game/machinery/computer/camera.dm index 92b68090128..0d3da129c58 100644 --- a/code/game/machinery/computer/camera.dm +++ b/code/game/machinery/computer/camera.dm @@ -2,7 +2,7 @@ /obj/machinery/computer/security name = "security camera console" - desc = "Used to access the various cameras networks on the station." + desc = "Используется для доступа к сетям камер на станции." icon_keyboard = "security_key" icon_screen = "cameras" @@ -198,7 +198,7 @@ // Other computer monitors. /obj/machinery/computer/security/telescreen name = "telescreen" - desc = "Used for watching camera networks." + desc = "Используется для просмотра сети камер." icon_state = "telescreen_console" icon_screen = "telescreen" icon_keyboard = null @@ -228,7 +228,7 @@ /obj/machinery/computer/security/telescreen/entertainment name = "entertainment monitor" - desc = "Damn, they better have Paradise TV on these things." + desc = "Чёрт возьми, лучше бы они показывали Paradise TV." icon_state = "entertainment_console" icon_screen = "entertainment_off" light_color = "#FFEEDB" @@ -281,33 +281,33 @@ /obj/machinery/computer/security/telescreen/singularity name = "Singularity Engine Telescreen" - desc = "Used for watching the singularity chamber." + desc = "Используется для наблюдения за зоной содержания сингулярности." network = list("Singularity") circuit = /obj/item/circuitboard/camera/telescreen/singularity /obj/machinery/computer/security/telescreen/toxin_chamber name = "Toxins Telescreen" - desc = "Used for watching the test chamber." + desc = "Используется для наблюдения за полигоном." network = list("Toxins") /obj/machinery/computer/security/telescreen/test_chamber name = "Test Chamber Telescreen" - desc = "Used for watching the test chamber." + desc = "Используется для наблюдения за полигоном." network = list("TestChamber") /obj/machinery/computer/security/telescreen/research name = "Research Monitor" - desc = "Used for watching the RD's goons from the safety of his office." + desc = "С помощью этого монитора Директор Исследований может наблюдать за своими подхалимами из безопасного места." network = list("Research","Research Outpost","RD") /obj/machinery/computer/security/telescreen/prison name = "Prison Monitor" - desc = "Used for watching Prison Wing holding areas." + desc = "Используется для мониторинга помещений тюремного блока." network = list("Prison") /obj/machinery/computer/security/wooden_tv name = "security camera monitor" - desc = "An old TV hooked into the station's camera network." + desc = "Старый телевизор, подключенный к сети камер станции." icon_state = "television" icon_keyboard = null icon_screen = "detective_tv" @@ -318,7 +318,7 @@ /obj/machinery/computer/security/mining name = "outpost camera monitor" - desc = "Used to access the various cameras on the outpost." + desc = "Используется для доступа к различным камерам на аванпосте." icon_keyboard = "mining_key" icon_screen = "mining" light_color = "#F9BBFC" @@ -327,7 +327,7 @@ /obj/machinery/computer/security/engineering name = "engineering camera monitor" - desc = "Used to monitor fires and breaches." + desc = "Используется для отслеживания возникающих пожаров и аварий." icon_keyboard = "power_key" icon_screen = "engie_cams" light_color = "#FAC54B" diff --git a/code/game/machinery/computer/camera_advanced.dm b/code/game/machinery/computer/camera_advanced.dm index 83a743258e6..204c22dee2c 100644 --- a/code/game/machinery/computer/camera_advanced.dm +++ b/code/game/machinery/computer/camera_advanced.dm @@ -1,6 +1,6 @@ /obj/machinery/computer/camera_advanced name = "advanced camera console" - desc = "Used to access the various cameras on the station." + desc = "Используется для доступа к различным камерам, установленным на станции." icon_screen = "cameras" icon_keyboard = "security_key" var/mob/camera/aiEye/remote/eyeobj diff --git a/code/game/machinery/computer/card.dm b/code/game/machinery/computer/card.dm index f3e83ca3077..7bd435a4b05 100644 --- a/code/game/machinery/computer/card.dm +++ b/code/game/machinery/computer/card.dm @@ -10,7 +10,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) /obj/machinery/computer/card name = "identification computer" - desc = "Terminal for programming Nanotrasen employee ID cards to access parts of the station." + desc = "Терминал, используемый для изменения уровня доступа ID-карт сотрудников Nanotrasen." icon_keyboard = "id_key" icon_screen = "id" req_access = list(ACCESS_CHANGE_IDS) @@ -772,7 +772,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) /obj/machinery/computer/card/minor name = "department management console" target_dept = TARGET_DEPT_GENERIC - desc = "You can use this to change ID's for specific departments." + desc = "Вы можете использовать это, чтобы изменить ID-карту для определенного отдела." icon_screen = "idminor" circuit = /obj/item/circuitboard/card/minor diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index bd3383befe3..fb1a7c90f5e 100644 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -12,7 +12,7 @@ // The communications computer /obj/machinery/computer/communications name = "communications console" - desc = "This allows the Captain to contact Central Command, or change the alert level. It also allows the command staff to call the Escape Shuttle." + desc = "Консоль, с помощью которой Капитан может связаться с Центральным Командованием или изменить уровень угрозы. Она так же позволяет командному составу вызвать эвакуационный шаттл." icon_keyboard = "tech_key" icon_screen = "comm" req_access = list(ACCESS_HEADS) diff --git a/code/game/machinery/computer/computer.dm b/code/game/machinery/computer/computer.dm index 2625ebbeec0..e03674bd29e 100644 --- a/code/game/machinery/computer/computer.dm +++ b/code/game/machinery/computer/computer.dm @@ -11,6 +11,7 @@ integrity_failure = 100 armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 40, "acid" = 20) var/obj/item/circuitboard/circuit = null //if circuit==null, computer can't disassembly + var/obj/structure/computerframe/frame = /obj/structure/computerframe var/icon_keyboard = "generic_key" var/icon_screen = "generic" var/light_range_on = 1 @@ -22,11 +23,30 @@ var/force_no_power_icon_state = FALSE -/obj/machinery/computer/Initialize(mapload) +/obj/machinery/computer/Initialize(mapload, obj/structure/computerframe/frame) . = ..() + + if(frame) + src.frame = frame + + else + var/frame_type = abductor ? /obj/structure/computerframe/abductor : src.frame + src.frame = new frame_type(src, circuit) + + src.frame.on_construction(src) power_change() update_icon() + +/obj/machinery/computer/Destroy() + if(istype(frame)) + qdel(frame) + + frame = null + + return ..() + + /obj/machinery/computer/process() if(stat & (NOPOWER|BROKEN)) return FALSE @@ -140,37 +160,35 @@ if(prob(10)) obj_break("energy") + /obj/machinery/computer/deconstruct(disassembled = TRUE, mob/user) on_deconstruction() if(!(obj_flags & NODECONSTRUCT)) if(circuit) //no circuit, no computer frame - var/obj/structure/computerframe/A - if(abductor) - A = new /obj/structure/computerframe/abductor(loc) - else - A = new /obj/structure/computerframe(loc) - var/obj/item/circuitboard/M = new circuit(A) - A.name += " ([M.board_name])" - A.setDir(dir) - A.circuit = M - A.set_anchored(TRUE) if(stat & BROKEN) if(user) to_chat(user, span_notice("The broken glass falls out.")) + else playsound(src, 'sound/effects/hit_on_shattered_glass.ogg', 70, TRUE) + new /obj/item/shard(drop_location()) new /obj/item/shard(drop_location()) - A.state = 4 + frame.state = 4 + else if(user) to_chat(user, span_notice("You disconnect the monitor.")) - A.state = 5 - A.update_icon() + + frame.update_icon() + for(var/obj/C in src) - C.forceMove(loc) + C.forceMove(get_turf(src)) + + frame = null qdel(src) + /obj/machinery/computer/proc/set_broken() if(!(resistance_flags & INDESTRUCTIBLE)) stat |= BROKEN diff --git a/code/game/machinery/computer/crew.dm b/code/game/machinery/computer/crew.dm index 07bf9e541f2..d90f389afea 100644 --- a/code/game/machinery/computer/crew.dm +++ b/code/game/machinery/computer/crew.dm @@ -1,6 +1,6 @@ /obj/machinery/computer/crew name = "crew monitoring computer" - desc = "Used to monitor active health sensors built into most of the crew's uniforms." + desc = "Используется для контроля активных датчиков состояния здоровья, встроенных в униформу большинства членов экипажа." icon_keyboard = "med_key" icon_screen = "crew" use_power = IDLE_POWER_USE diff --git a/code/game/machinery/computer/depot.dm b/code/game/machinery/computer/depot.dm index ce7c86f2d74..374c77b8621 100644 --- a/code/game/machinery/computer/depot.dm +++ b/code/game/machinery/computer/depot.dm @@ -390,7 +390,7 @@ /obj/machinery/computer/syndicate_depot/teleporter name = "Syndicate Redspace Teleporter Console" - desc = "This suspicious high-tech machine creates a Bi-Directional teleporter that is capable to ignore any bluespace interference!" + desc = "Эта подозрительная высокотехнологичная машина создает двунаправленный телепорт, способный игнорировать любые BlueSpace-помехи!" icon_screen = "telesci" icon_keyboard = "teleport_key" window_height = 320 diff --git a/code/game/machinery/computer/honkputer.dm b/code/game/machinery/computer/honkputer.dm index fea3bf0964a..a4c90924d49 100644 --- a/code/game/machinery/computer/honkputer.dm +++ b/code/game/machinery/computer/honkputer.dm @@ -1,6 +1,6 @@ /obj/machinery/computer/HONKputer name = "\improper HONKputer Mark I" - desc = "A yellow computer used in case of critically low levels of HONK." + desc = "Яркий жёлтый компьютер. Воспользуйтесь им, если уровень ХОНКА упал до критически низкого уровня!" icon = 'icons/obj/machines/HONKputer.dmi' icon_state = "honkputer" icon_keyboard = "key_honk" @@ -8,6 +8,7 @@ light_color = LIGHT_COLOR_PINK req_access = list(ACCESS_CLOWN) circuit = /obj/item/circuitboard/HONKputer + frame = /obj/structure/computerframe/HONKputer var/authenticated = 0 var/message_cooldown = 0 var/state = STATE_DEFAULT diff --git a/code/game/machinery/computer/law.dm b/code/game/machinery/computer/law.dm index 6c778767f61..3e03f4f2118 100644 --- a/code/game/machinery/computer/law.dm +++ b/code/game/machinery/computer/law.dm @@ -1,6 +1,6 @@ /obj/machinery/computer/aiupload name = "\improper AI upload console" - desc = "Used to upload laws to the AI." + desc = "Используется для манипуляций с законами ИИ." icon_screen = "command" icon_keyboard = "med_key" circuit = /obj/item/circuitboard/aiupload @@ -59,7 +59,7 @@ // Why is this not a subtype /obj/machinery/computer/borgupload name = "cyborg upload console" - desc = "Used to upload laws to Cyborgs." + desc = "Используется для манипуляций с законами киборгов." icon_screen = "command" icon_keyboard = "med_key" circuit = /obj/item/circuitboard/borgupload diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm index 34d300c2b78..a04d1cacb97 100644 --- a/code/game/machinery/computer/medical.dm +++ b/code/game/machinery/computer/medical.dm @@ -9,7 +9,7 @@ /obj/machinery/computer/med_data //TODO:SANITY name = "medical records console" - desc = "This can be used to check medical records." + desc = "Используется для проверки медицинских записей." icon_keyboard = "med_key" icon_screen = "medcomp" req_access = list(ACCESS_MEDICAL, ACCESS_FORENSICS_LOCKERS) @@ -461,7 +461,7 @@ /obj/machinery/computer/med_data/laptop name = "medical laptop" - desc = "Cheap Nanotrasen laptop." + desc = "Дешёвый ноутбук корпорации Nanotrasen." icon_state = "laptop" icon_keyboard = "laptop_key" icon_screen = "medlaptop" diff --git a/code/game/machinery/computer/message.dm b/code/game/machinery/computer/message.dm index e4e7e098f7f..d2e1e9958f6 100644 --- a/code/game/machinery/computer/message.dm +++ b/code/game/machinery/computer/message.dm @@ -1,7 +1,7 @@ // Allows you to monitor messages that passes the server. /obj/machinery/computer/message_monitor name = "message monitoring console" - desc = "Used to monitor the crew's messages that are sent via PDA. It can also be used to view Request Console messages." + desc = "Используется для отслеживания сообщений экипажа, отправляемых через КПК. Его также можно использовать для просмотра сообщений Консоли Запросов." icon_screen = "comm_logs" light_color = LIGHT_COLOR_GREEN var/hack_icon = "tcboss" diff --git a/code/game/machinery/computer/pod.dm b/code/game/machinery/computer/pod.dm index 0a788efdae5..5cb46086fbd 100644 --- a/code/game/machinery/computer/pod.dm +++ b/code/game/machinery/computer/pod.dm @@ -1,6 +1,6 @@ /obj/machinery/computer/pod name = "mass drivers and pod doors control" - desc = "A control for launching pods. Some people prefer firing Mechas." + desc = "Элемент управления для запуска капсул. Некоторые предпочитают запускать из них мехов." icon_screen = "mass_driver" light_color = "#555555" circuit = /obj/item/circuitboard/pod @@ -279,7 +279,7 @@ /obj/machinery/computer/pod/old/syndicate name = "external airlock controls" - desc = "The Syndicate operate on a tight budget. Operates external airlocks." + desc = "Синдикат работает в условиях ограниченного бюджета. Управляет внешними шлюзами." req_access = list(ACCESS_SYNDICATE) circuit = /obj/item/circuitboard/syndicatedoor light_color = "#00FFFF" @@ -294,7 +294,7 @@ /obj/machinery/computer/pod/old/swf name = "\improper Magix System IV" - desc = "An arcane artifact that holds much magic. Running E-Knock 2.2: Sorceror's Edition" + desc = "Таинственный артефакт, в котором сконцентрировано огромное количество магической энергии." circuit = /obj/item/circuitboard/swfdoor diff --git a/code/game/machinery/computer/power.dm b/code/game/machinery/computer/power.dm index ca4faf48060..10a05df63fa 100644 --- a/code/game/machinery/computer/power.dm +++ b/code/game/machinery/computer/power.dm @@ -1,6 +1,6 @@ /obj/machinery/computer/monitor name = "power monitoring console" - desc = "Used to monitor power levels across the station." + desc = "Используется для мониторинга уровня энергопотребления на всей станции." icon_screen = "power" icon_keyboard = "power_key" use_power = ACTIVE_POWER_USE @@ -23,7 +23,7 @@ /obj/machinery/computer/monitor/secret //Hides the power monitor (such as ones on ruins & CentCom) from PDA's to prevent metagaming. name = "outdated power monitoring console" - desc = "It monitors power levels across the local powernet." + desc = "Используется для отслеживания уровня энергопотребления в локальной сети." circuit = /obj/item/circuitboard/powermonitor/secret is_secret_monitor = TRUE diff --git a/code/game/machinery/computer/robot.dm b/code/game/machinery/computer/robot.dm index 23faf723eb7..e0deb7d3cf5 100644 --- a/code/game/machinery/computer/robot.dm +++ b/code/game/machinery/computer/robot.dm @@ -1,6 +1,6 @@ /obj/machinery/computer/robotics name = "robotics control console" - desc = "Used to remotely lockdown or detonate linked Cyborgs." + desc = "Используется для дистанционной блокировки или подрыва привязанных киборгов." icon = 'icons/obj/machines/computer.dmi' icon_keyboard = "tech_key" icon_screen = "robot" diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm index bbc04412ee3..6e032928fa6 100644 --- a/code/game/machinery/computer/security.dm +++ b/code/game/machinery/computer/security.dm @@ -6,7 +6,7 @@ /obj/machinery/computer/secure_data name = "security records" - desc = "Used to view and edit personnel's security records." + desc = "Используется для просмотра и редактирования записей службы безопасности о персонале." icon_keyboard = "security_key" icon_screen = "security" circuit = /obj/item/circuitboard/secure_data @@ -518,7 +518,7 @@ /obj/machinery/computer/secure_data/laptop name = "security laptop" - desc = "Nanotrasen Security laptop. Bringing modern compact computing to this century!" + desc = "Ноутбук службы безопасности Nanotrasen. Привносим современные компактные компьютеры в наше столетие!" icon_state = "laptop" icon_keyboard = "seclaptop_key" icon_screen = "seclaptop" diff --git a/code/game/machinery/computer/sm_monitor.dm b/code/game/machinery/computer/sm_monitor.dm index f0c3f13959b..b1538fee04b 100644 --- a/code/game/machinery/computer/sm_monitor.dm +++ b/code/game/machinery/computer/sm_monitor.dm @@ -1,6 +1,6 @@ /obj/machinery/computer/sm_monitor name = "supermatter monitoring console" - desc = "Used to monitor supermatter shards." + desc = "Используется для мониторинга состояния осколка суперматерии." icon_keyboard = "power_key" icon_screen = "smmon_0" circuit = /obj/item/circuitboard/sm_monitor diff --git a/code/game/machinery/computer/station_alert.dm b/code/game/machinery/computer/station_alert.dm index cb9fd66aeea..a7d321d724a 100644 --- a/code/game/machinery/computer/station_alert.dm +++ b/code/game/machinery/computer/station_alert.dm @@ -1,7 +1,7 @@ /obj/machinery/computer/station_alert name = "station alert console" - desc = "Used to access the station's automated alert system." + desc = "Используется для доступа к автоматизированной системе тревог станции." icon_keyboard = "tech_key" icon_screen = "alert:0" light_color = LIGHT_COLOR_CYAN diff --git a/code/game/machinery/computer/syndie_cargo.dm b/code/game/machinery/computer/syndie_cargo.dm index 9e841c403a3..fff047fe5bc 100644 --- a/code/game/machinery/computer/syndie_cargo.dm +++ b/code/game/machinery/computer/syndie_cargo.dm @@ -254,7 +254,7 @@ GLOBAL_LIST_INIT(data_storages, list()) //list of all cargo console data storage **************************/ /obj/machinery/computer/syndie_supplycomp name = "Supply Pad Console" - desc = "Used to order supplies by using syndiepads!" + desc = "Необходим для оформления заказов используя SyndiePads!" icon_screen = "syndinavigation" icon_keyboard = "syndie_key" req_access = list(ACCESS_SYNDICATE_CARGO) @@ -494,7 +494,7 @@ GLOBAL_LIST_INIT(data_storages, list()) //list of all cargo console data storage /obj/machinery/computer/syndie_supplycomp/public name = "Supply Ordering Console" - desc = "Used to order supplies from cargo staff." + desc = "Используется для оформления заказов у отдела снабжения" circuit = /obj/item/circuitboard/syndicatesupplycomp/public req_access = list() is_public = TRUE diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm index 50381c2f467..833eee399e6 100644 --- a/code/game/machinery/cryopod.dm +++ b/code/game/machinery/cryopod.dm @@ -15,7 +15,7 @@ /obj/machinery/computer/cryopod name = "cryogenic oversight console" - desc = "An interface between crew and the cryogenic storage oversight systems." + desc = "Интерфейс управления системой контроля за криогенным хранилищем." icon = 'icons/obj/machines/cryogenic2.dmi' icon_state = "cellconsole" circuit = /obj/item/circuitboard/cryopodcontrol @@ -703,7 +703,7 @@ /obj/machinery/computer/cryopod/robot name = "robotic storage console" - desc = "An interface between crew and the robotic storage systems" + desc = "Интерфейс управления системой контроля за робо-хранилищем." icon = 'icons/obj/machines/robot_storage.dmi' icon_state = "console" circuit = /obj/item/circuitboard/robotstoragecontrol diff --git a/code/game/machinery/deployable.dm b/code/game/machinery/deployable.dm index 9b19f66a85f..f1bd6736acd 100644 --- a/code/game/machinery/deployable.dm +++ b/code/game/machinery/deployable.dm @@ -95,9 +95,11 @@ if(wood.get_amount() < 5) to_chat(user, span_warning("You need at least five wooden planks to make a wall!")) return ATTACK_CHAIN_PROCEED + to_chat(user, span_notice("You start adding [I] to [src]...")) - if(do_after(user, 5 SECONDS, src) || QDELETED(wood) || !wood.use(5) || !isturf(loc)) + if(!do_after(user, 5 SECONDS, src) || QDELETED(wood) || !wood.use(5) || !isturf(loc)) return ATTACK_CHAIN_PROCEED + var/turf/our_turf = loc our_turf.ChangeTurf(/turf/simulated/wall/mineral/wood/nonmetal) qdel(src) diff --git a/code/game/machinery/portable_turret.dm b/code/game/machinery/portable_turret.dm index ec2da9ef99d..fe89ef3e704 100644 --- a/code/game/machinery/portable_turret.dm +++ b/code/game/machinery/portable_turret.dm @@ -1037,6 +1037,7 @@ GLOBAL_LIST_EMPTY(turret_icons) use_power = NO_POWER_USE has_cover = FALSE raised = TRUE + density = TRUE scan_range = 9 faction = "syndicate" @@ -1060,6 +1061,8 @@ GLOBAL_LIST_EMPTY(turret_icons) if(istype(depotarea)) depotarea.turret_died() + density = FALSE + /obj/machinery/porta_turret/syndicate/shootAt(mob/living/target) if(istype(depotarea)) depotarea.list_add(target, depotarea.hostile_list) diff --git a/code/game/machinery/requests_console.dm b/code/game/machinery/requests_console.dm index a5523d86e21..0dec2464fd9 100644 --- a/code/game/machinery/requests_console.dm +++ b/code/game/machinery/requests_console.dm @@ -1,32 +1,6 @@ /******************** Requests Console ********************/ /** Originally written by errorage, updated by: Carn, needs more work though. I just added some security fixes */ -//Request Console Department Types -#define RC_ASSIST 1 //Request Assistance -#define RC_SUPPLY 2 //Request Supplies -#define RC_INFO 4 //Relay Info - -//Request Console Screens -#define RCS_MAINMENU 0 // Main menu -#define RCS_RQSUPPLY 1 // Request supplies -#define RCS_RQASSIST 2 // Request assistance -#define RCS_SENDINFO 3 // Relay information -#define RCS_SENTPASS 4 // Message sent successfully -#define RCS_SENTFAIL 5 // Message sent unsuccessfully -#define RCS_VIEWMSGS 6 // View messages -#define RCS_MESSAUTH 7 // Authentication before sending -#define RCS_ANNOUNCE 8 // Send announcement -#define RCS_SHIPPING 9 // Print Shipping Labels/Packages -#define RCS_SHIP_LOG 10 // View Shipping Label Log - -//Radio list -#define ENGI_ROLES list("Atmospherics","Mechanic","Engineering","Chief Engineer's Desk","Telecoms Admin") -#define SEC_ROLES list("Warden","Security","Brig Medbay","Head of Security's Desk") -#define MISC_ROLES list("Bar","Chapel","Kitchen","Hydroponics","Janitorial") -#define MED_ROLES list("Virology","Chief Medical Officer's Desk","Medbay") -#define COM_ROLES list("Blueshield","NT Representative","Head of Personnel's Desk","Captain's Desk","Bridge") -#define SCI_ROLES list("Robotics","Science","Research Director's Desk") - #define RQ_NONEW_MESSAGES 0 #define RQ_NORMALPRIORITY 1 #define RQ_HIGHPRIORITY 2 @@ -69,6 +43,7 @@ GLOBAL_LIST_EMPTY(allRequestConsoles) var/print_cooldown = 0 //cooldown on shipping label printer, stores the in-game time of when the printer will next be ready var/obj/item/radio/Radio var/radiochannel = "" + var/list/connected_apps = list() /obj/machinery/requests_console/Initialize(mapload) @@ -90,7 +65,6 @@ GLOBAL_LIST_EMPTY(allRequestConsoles) GLOB.req_console_supplies |= department if(departmentType & RC_INFO) GLOB.req_console_information |= department - update_icon(UPDATE_OVERLAYS) @@ -109,6 +83,8 @@ GLOBAL_LIST_EMPTY(allRequestConsoles) if(departmentType & RC_INFO) GLOB.req_console_information -= department QDEL_NULL(Radio) + for(var/datum/data/pda/app/request_console/app as anything in connected_apps) + app.on_rc_destroyed(src) return ..() /obj/machinery/requests_console/attack_ghost(user as mob) @@ -120,7 +96,6 @@ GLOBAL_LIST_EMPTY(allRequestConsoles) /obj/machinery/requests_console/attack_hand(user as mob) if(..(user)) return - ui_interact(user) @@ -193,9 +168,9 @@ GLOBAL_LIST_EMPTY(allRequestConsoles) message = new_message screen = RCS_MESSAUTH switch(params["priority"]) - if("1") + if(1) priority = RQ_NORMALPRIORITY - if("2") + if(2) priority = RQ_HIGHPRIORITY else priority = RQ_NONEW_MESSAGES @@ -238,9 +213,9 @@ GLOBAL_LIST_EMPTY(allRequestConsoles) radiochannel = "Command" else if(recipient in SCI_ROLES) radiochannel = "Science" - else if(recipient == "AI") + else if(recipient == RC_AI) radiochannel = "AI Private" - else if(recipient == "Cargo Bay") + else if(recipient == RC_CARGO_BAY) radiochannel = "Supply" write_to_message_log("Message sent to [recipient] at [station_time_timestamp()] - [message]") Radio.autosay("Alert; a new requests console message received for [recipient] from [department]", null, "[radiochannel]") @@ -292,38 +267,46 @@ GLOBAL_LIST_EMPTY(allRequestConsoles) return ..() if(istype(I, /obj/item/card/id)) - var/obj/item/card/id/id = I add_fingerprint(user) - switch(screen) - if(RCS_MESSAUTH) - msgVerified = "Verified by [id.registered_name] ([id.assignment])" - SStgui.update_uis(src) - return ATTACK_CHAIN_PROCEED_SUCCESS - if(RCS_ANNOUNCE) - if(ACCESS_RC_ANNOUNCE in id.GetAccess()) - announceAuth = TRUE - announcement.announcer = id.assignment ? "[id.assignment] [id.registered_name]" : id.registered_name - SStgui.update_uis(src) - return ATTACK_CHAIN_PROCEED_SUCCESS - reset_message() - to_chat(user, span_warning("You are not authorized to send announcements.")) - SStgui.update_uis(src) - return ATTACK_CHAIN_PROCEED_SUCCESS - if(RCS_SHIPPING) - msgVerified = "Sender verified as [id.registered_name] ([id.assignment])" - SStgui.update_uis(src) - return ATTACK_CHAIN_PROCEED_SUCCESS + return login_console(screen, I, src) if(istype(I, /obj/item/stamp)) - if(screen == RCS_MESSAUTH) - add_fingerprint(user) - msgStamped = "Stamped with the [I.name]" - SStgui.update_uis(src) - return ATTACK_CHAIN_PROCEED_SUCCESS + return stamp_messauth(screen, I, src, user) return ..() +/obj/machinery/requests_console/proc/stamp_messauth(screen, obj/item/stamp/stamp, obj/ui_object, mob/user, is_distant=FALSE) + if(screen == RCS_MESSAUTH) + if(!is_distant) + add_fingerprint(user) + msgStamped = "Stamped with the [stamp.name]" + SStgui.update_uis(ui_object) + return ATTACK_CHAIN_PROCEED_SUCCESS + return ATTACK_CHAIN_PROCEED + +/obj/machinery/requests_console/proc/login_console(screen, obj/item/card/id/id, obj/ui_object, mob/user) + switch(screen) + if(RCS_MESSAUTH) + msgVerified = "Verified by [id.registered_name] ([id.assignment])" + SStgui.update_uis(ui_object) + return ATTACK_CHAIN_PROCEED_SUCCESS + if(RCS_ANNOUNCE) + if(ACCESS_RC_ANNOUNCE in id.GetAccess()) + announceAuth = TRUE + announcement.announcer = id.assignment ? "[id.assignment] [id.registered_name]" : id.registered_name + SStgui.update_uis(ui_object) + return ATTACK_CHAIN_PROCEED_SUCCESS + reset_message() + to_chat(user, span_warning("You are not authorized to send announcements.")) + SStgui.update_uis(ui_object) + return ATTACK_CHAIN_PROCEED_SUCCESS + if(RCS_SHIPPING) + msgVerified = "Sender verified as [id.registered_name] ([id.assignment])" + SStgui.update_uis(ui_object) + return ATTACK_CHAIN_PROCEED_SUCCESS + return ATTACK_CHAIN_PROCEED + /obj/machinery/requests_console/proc/reset_message(mainmenu = FALSE) message = "" recipient = "" @@ -353,14 +336,20 @@ GLOBAL_LIST_EMPTY(allRequestConsoles) playsound(loc, 'sound/machines/twobeep.ogg', 50, TRUE) atom_say(title) + var/rendered_message switch(priority) if(RQ_HIGHPRIORITY) // High - write_to_message_log("Высокий приоритет - От: [linkedSender] - [message]") + rendered_message = "Высокий приоритет - От: [linkedSender] - [message]" else // Normal - write_to_message_log("От: [linkedSender] - [message]") + rendered_message = "От: [linkedSender] - [message]" + + if(!isnull(rendered_message)) + write_to_message_log(rendered_message, source == ORE_REDEMPTION) -/obj/machinery/requests_console/proc/write_to_message_log(message) +/obj/machinery/requests_console/proc/write_to_message_log(message, ore_message = FALSE) + for(var/datum/data/pda/app/request_console/app as anything in connected_apps) + app.on_rc_message_recieved(src, message, ore_message) message_log = list(message) + message_log /obj/machinery/requests_console/proc/print_label(tag_name, tag_index) diff --git a/code/game/machinery/teleporter.dm b/code/game/machinery/teleporter.dm index 71f36293a8f..d502d816560 100644 --- a/code/game/machinery/teleporter.dm +++ b/code/game/machinery/teleporter.dm @@ -4,7 +4,7 @@ /obj/machinery/computer/teleporter name = "teleporter control console" - desc = "Used to control a linked teleportation Hub and Station." + desc = "Используется для управления привязанными телепортационными узлами и станциями." icon_screen = "teleport" icon_keyboard = "teleport_key" circuit = /obj/item/circuitboard/teleporter @@ -27,7 +27,7 @@ var/cc_beacon = FALSE /obj/machinery/computer/teleporter/robotics //to do: limit targets to station only - desc = "Used to control a linked teleportation Hub and Station. Only Research Director can change destination target." + desc = "Используется для управления привязанными телепортационными узлами и станциями. Только Директор Исследований может изменить точку назначения." circuit = /obj/item/circuitboard/teleporter/robotics req_access = list(ACCESS_RD) diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index e5d81dc2777..c9c8237cd9f 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -30,7 +30,15 @@ /obj/machinery/vending name = "\improper Vendomat" - desc = "A generic vending machine." + ru_names = list( + NOMINATIVE = "торговый автомат", + GENITIVE = "торгового автомата", + DATIVE = "торговому автомату", + ACCUSATIVE = "торговый автомат", + INSTRUMENTAL = "торговым автоматом", + PREPOSITIONAL = "торговом автомате" + ) + desc = "Обычный торговый автомат." icon = 'icons/obj/machines/vending.dmi' icon_state = "generic_off" layer = BELOW_OBJ_LAYER @@ -212,11 +220,11 @@ /obj/machinery/vending/examine(mob/user) . = ..() if(tilted) - . += span_warning("It's been tipped over and won't be usable unless it's righted.") + . += span_warning("Он лежит на боку и не будет функционировать до тех пор, пока его не поправят.") if(Adjacent(user)) - . += span_notice("You can Alt-Click it to right it.") + . += span_notice("Нажмите Alt-Click чтобы поднять автомат.") if(aggressive) - . += span_warning("Its product lights seem to be blinking ominously...") + . += span_warning("Его индикаторы, кажется, зловеще мигают...") /obj/machinery/vending/AltClick(mob/user) if(!tilted || !Adjacent(user) || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED)) @@ -460,7 +468,8 @@ /obj/machinery/vending/attackby(obj/item/I, mob/user, params) if(tilted) if(user.a_intent == INTENT_HELP) - to_chat(user, span_warning("[src] is tipped over and non-functional! You'll need to right it first.")) + balloon_alert(user, "автомат не работает!") + to_chat(user, span_warning("[capitalize(declent_ru(NOMINATIVE))] не может работать, пока он опрокинут!")) return ATTACK_CHAIN_BLOCKED_ALL return ..() @@ -470,39 +479,39 @@ if(istype(I, /obj/item/coin)) add_fingerprint(user) if(!length(premium)) - to_chat(user, span_warning("[src] does not accept coins.")) + balloon_alert(user, "слот отсутствует!") return ATTACK_CHAIN_PROCEED if(coin) - to_chat(user, span_warning("There is already a coin in this machine!")) + balloon_alert(user, "слот занят!") return ATTACK_CHAIN_PROCEED if(!user.drop_transfer_item_to_loc(I, src)) return ..() coin = I - to_chat(user, span_notice("You insert [I] into [src].")) + balloon_alert(user, "монета вставлена") SStgui.update_uis(src) return ATTACK_CHAIN_BLOCKED_ALL if(istype(I, refill_canister)) add_fingerprint(user) if(stat & (BROKEN|NOPOWER)) - to_chat(user, span_notice("[src] does not respond.")) + balloon_alert(user, "автомат не работает!") return ATTACK_CHAIN_PROCEED if(!panel_open) - to_chat(user, span_warning("You should probably unscrew the service panel first!")) + balloon_alert(user, "техпанель открыта!") return ATTACK_CHAIN_PROCEED var/obj/item/vending_refill/canister = I if(canister.get_part_rating() == 0) - to_chat(user, span_warning("The [canister.name] is empty!")) + balloon_alert(user, "канистра пуста!") return ATTACK_CHAIN_PROCEED // instantiate canister if needed var/transferred = restock(canister) if(transferred) - to_chat(user, span_notice("You loaded [transferred] items in [src].")) + balloon_alert(user, "канистра вставлена") return ATTACK_CHAIN_PROCEED_SUCCESS - to_chat(user, span_warning("There's nothing to restock!")) + balloon_alert(user,"нечего пополнять!") return ATTACK_CHAIN_PROCEED if(item_slot_check(user, I)) @@ -519,8 +528,8 @@ // no goodies, but also no tilts return if(COOLDOWN_FINISHED(src, last_hit_time)) - visible_message(span_warning("[src] seems to sway a bit!")) - to_chat(user, span_userdanger("You might want to think twice about doing that again, [src] looks like it could come crashing down!")) + visible_message(span_warning("[capitalize(declent_ru(NOMINATIVE))] странно покачивается...")) + to_chat(user, span_userdanger("Кажется, что [declent_ru(NOMINATIVE)] так и норовит упасть!")) COOLDOWN_START(src, last_hit_time, hit_warning_cooldown_length) return @@ -539,7 +548,7 @@ tilt(user, crit = TRUE) /obj/machinery/vending/proc/freebie(mob/user, num_freebies) - visible_message(span_notice("[num_freebies] free goodie\s tumble[num_freebies > 1 ? "" : "s"] out of [src]!")) + visible_message(span_notice("Из [declent_ru(GENITIVE)] начинают выпадать бесплатные товары!")) for(var/i in 1 to num_freebies) for(var/datum/data/vending_product/R in shuffle(product_records)) if(R.amount <= 0) @@ -557,8 +566,8 @@ if(isliving(AM) && prob(25)) AM.visible_message( - span_warning("[src] suddenly topples over onto [AM]!"), - span_userdanger("[src] topples over onto you without warning!") + span_warning("[capitalize(declent_ru(NOMINATIVE))] внезапно опрокидывается на [AM]!"), + span_userdanger("[capitalize(declent_ru(NOMINATIVE))] обрушивается на вас без предупреждения!") ) tilt(AM, prob(5), FALSE) aggressive = FALSE @@ -570,14 +579,14 @@ return . = TRUE if(tilted) - to_chat(user, span_warning("You'll need to right it first!")) + balloon_alert(user, "автомат перевёрнут!") return default_deconstruction_crowbar(user, I) /obj/machinery/vending/multitool_act(mob/user, obj/item/I) . = TRUE if(tilted) - to_chat(user, span_warning("You'll need to right it first!")) + balloon_alert(user, "автомат перевёрнут!") return if(!I.use_tool(src, user, 0, volume = I.tool_volume)) return @@ -586,7 +595,7 @@ /obj/machinery/vending/screwdriver_act(mob/user, obj/item/I) . = TRUE if(tilted) - to_chat(user, span_warning("You'll need to right it first!")) + balloon_alert(user, "автомат перевёрнут!") return if(!I.use_tool(src, user, 0, volume = I.tool_volume)) return @@ -599,7 +608,7 @@ /obj/machinery/vending/wirecutter_act(mob/user, obj/item/I) . = TRUE if(tilted) - to_chat(user, span_warning("You'll need to right it first!")) + balloon_alert(user, "автомат перевёрнут!") return if(I.use_tool(src, user, 0, volume = 0)) wires.Interact(user) @@ -607,7 +616,7 @@ /obj/machinery/vending/wrench_act(mob/user, obj/item/I) . = TRUE if(tilted) - to_chat(user, span_warning("The fastening bolts aren't on the ground, you'll need to right it first!")) + balloon_alert(user, "автомат перевёрнут!") return if(!I.use_tool(src, user, 0, volume = 0)) return @@ -633,7 +642,7 @@ if(!item_slot) return FALSE if(inserted_item) - to_chat(user, "There is something already inserted!") + balloon_alert(user, "внутри уже что-то есть!") return FALSE return TRUE @@ -665,7 +674,7 @@ else to_chat(user, display_parts(user)) if(moved) - to_chat(user, "[moved] items restocked.") + to_chat(user, "Вы пополнили [moved] товар[declension_ru(moved, "", "а", "ов")].") W.play_rped_sound() return TRUE @@ -677,10 +686,11 @@ if(!item_slot || inserted_item) return if(!user.drop_transfer_item_to_loc(I, src)) - to_chat(user, "[I] is stuck to your hand, you can't seem to put it down!") + to_chat(user, span_warning("[I] будто бы приклеен к твоей руке! Вы не можете его скинуть!")) return inserted_item = I - to_chat(user, "You insert [I] into [src].") + balloon_alert(user, "предмет вставлен") + to_chat(user, span_notice("Вы вставили [I] в [declent_ru(GENITIVE)].")) SStgui.update_uis(src) /obj/machinery/vending/proc/eject_item(mob/user) @@ -700,7 +710,7 @@ /obj/machinery/vending/emag_act(mob/user) emagged = TRUE if(user) - to_chat(user, "You short out the product lock on [src]") + to_chat(user, "Вы закоротили микросхемы [declent_ru(GENITIVE)]") /obj/machinery/vending/attack_ai(mob/user) return attack_hand(user) @@ -713,7 +723,7 @@ return if(tilted) - to_chat(user, span_warning("[src] is tipped over and non-functional! You'll need to right it first.")) + balloon_alert(user, "автомат не работает!") return if(..()) @@ -740,7 +750,7 @@ /obj/machinery/vending/ui_data(mob/user) var/list/data = list() var/datum/money_account/A = null - data["guestNotice"] = "No valid ID card detected. Wear your ID, or present cash."; + data["guestNotice"] = "Предъявите ID-карту или используйте наличные."; data["userMoney"] = 0 data["user"] = null if(issilicon(user) && !istype(user, /mob/living/silicon/robot/drone) && !istype(user, /mob/living/silicon/pai)) @@ -755,7 +765,7 @@ var/obj/item/stack/spacecash/S = H.get_active_hand() if(istype(S)) data["userMoney"] = S.amount - data["guestNotice"] = "Accepting Cash. You have: [S.amount] credits." + data["guestNotice"] = "Принимаем наличные. У вас есть: [S.amount] кредитов." else if(istype(H)) var/obj/item/card/id/C = H.get_id_card() if(istype(A)) @@ -764,7 +774,7 @@ data["userMoney"] = A.money data["user"]["job"] = (istype(C) && C.rank) ? C.rank : "No Job" else - data["guestNotice"] = "Unlinked ID detected. Present cash to pay."; + data["guestNotice"] = "Обнаруженная ID-карта не привязана к счёту."; data["stock"] = list() for (var/datum/data/vending_product/R in product_records + coin_records + hidden_records) data["stock"][R.name] = R.amount @@ -831,7 +841,7 @@ if(.) return if(issilicon(usr) && !isrobot(usr)) - to_chat(usr, span_warning("The vending machine refuses to interface with you, as you are not in its target demographic!")) + to_chat(usr, span_warning("[capitalize(declent_ru(NOMINATIVE))] отказывается взаимодействовать с вами, поскольку вы не входите в его целевую аудиторию!")) return switch(action) if("toggle_voice") @@ -843,22 +853,22 @@ . = TRUE if("remove_coin") if(!coin) - to_chat(usr, span_warning("There is no coin in this machine.")) + balloon_alert(usr, "в автомате нет монет!") return - if(istype(usr, /mob/living/silicon)) - to_chat(usr, span_warning("You lack hands.")) + if(issilicon(usr)) + balloon_alert(usr, "у вас нет рук!") return - to_chat(usr, span_notice("You remove [coin] from [src].")) + to_chat(usr, span_notice("Вы достали [coin] из [declent_ru(GENITIVE)].")) coin.forceMove_turf() usr.put_in_hands(coin, ignore_anim = FALSE) coin = null . = TRUE if("vend") if(!vend_ready) - to_chat(usr, span_warning("The vending machine is busy!")) + balloon_alert(usr, "торговый автомат занят!") return if(panel_open) - to_chat(usr, span_warning("The vending machine cannot dispense products while its service panel is open!")) + balloon_alert(usr, "техпанель открыта!") return var/key = text2num(params["inum"]) var/list/display_records = product_records + coin_records @@ -904,7 +914,7 @@ // --- THE REST OF THIS PROC IS JUST PAYMENT LOGIC --- if(!GLOB.vendor_account || GLOB.vendor_account.suspended) - to_chat(usr, "Vendor account offline. Unable to process transaction.") + to_chat(usr, "Удалённый сервер торговых автоматов отключён. Не удается обработать операцию.") flick_vendor_overlay(FLICK_DENY) vend_ready = TRUE return @@ -924,7 +934,7 @@ to_chat(usr, span_notice("Vending object due to admin interaction.")) paid = TRUE else - to_chat(usr, span_warning("Payment failure: you have no ID or other method of payment.")) + to_chat(usr, span_warning("Сбой платежа: у вас нет ID-карты или другого способа оплаты.")) vend_ready = TRUE flick_vendor_overlay(FLICK_DENY) . = TRUE // we set this because they shouldn't even be able to get this far, and we want the UI to update. @@ -933,7 +943,7 @@ vend(currently_vending, usr) . = TRUE else - to_chat(usr, span_warning("Payment failure: unable to process payment.")) + to_chat(usr, span_warning("Сбой платежа: не удается обработать платеж.")) vend_ready = TRUE if(.) add_fingerprint(usr) @@ -943,13 +953,13 @@ /obj/machinery/vending/proc/vend(datum/data/vending_product/R, mob/user) if(!allowed(user) && !user.can_admin_interact() && !emagged && scan_id) //For SECURE VENDING MACHINES YEAH - to_chat(user, span_warning("Access denied."))//Unless emagged of course + to_chat(user, span_warning("В доступе отказано."))//Unless emagged of course flick_vendor_overlay(FLICK_DENY) vend_ready = TRUE return if(!R.amount) - to_chat(user, span_warning("The vending machine has ran out of that product.")) + to_chat(user, span_warning("В [declent_ru(PREPOSITIONAL)] закончился этот товар.")) vend_ready = TRUE return @@ -957,14 +967,14 @@ if(coin_records.Find(R)) if(!coin) - to_chat(user, span_notice("You need to insert a coin to get this item.")) + to_chat(user, span_notice("Вам нужно вставить монету, чтобы получить этот товар.")) vend_ready = TRUE return if(coin.string_attached) if(prob(50)) - to_chat(user, span_notice("You successfully pull the coin out before [src] could swallow it.")) + to_chat(user, span_notice("Вы успешно вытаскиваете монету до того, как [declent_ru(NOMINATIVE)] успевает ее проглотить.")) else - to_chat(user, span_notice("You weren't able to pull the coin out fast enough, the machine ate it, string and all.")) + to_chat(user, span_notice("Вы не смогли вытащить монету достаточно быстро, [declent_ru(NOMINATIVE)] съел ее вместе с ниткой и всем остальным.")) QDEL_NULL(coin) else QDEL_NULL(coin) @@ -1095,7 +1105,7 @@ if(!throw_item) return throw_item.throw_at(target, 16, 3) - visible_message("[src] launches [throw_item.name] at [target.name]!") + visible_message(span_danger("[capitalize(declent_ru(NOMINATIVE))] метнул [throw_item.name] в [target.name]!")) /obj/machinery/vending/shove_impact(mob/living/target, mob/living/attacker) @@ -1105,14 +1115,14 @@ add_attack_logs(attacker, target, "shoved into a vending machine ([src])") tilt(target, from_combat = TRUE) target.visible_message( - span_danger("[attacker] slams [target] into [src]!"), - span_userdanger("You get slammed into [src] by [attacker]!"), - span_danger(">You hear a loud crunch.") + span_danger("[attacker] толкает [target] в [declent_ru(ACCUSATIVE)]!"), + span_userdanger("[attacker] впечатывает вас в [declent_ru(GENITIVE)]!"), + span_danger("Вы слышите громкий хруст.") ) else attacker.visible_message( - span_notice("[attacker] lightly presses [target] against [src]."), - span_userdanger("You lightly press [target] against [src], you don't want to hurt [target.p_them()]!") + span_notice("[attacker] слегка прижимает [target] к [declent_ru(DATIVE)]."), + span_userdanger("Вы слегка прижимаете [target] к [declent_ru(DATIVE)], вы же не хотите причинить [genderize_ru(target.gender, "ему", "ей", "ему", "им")] боль!") ) return TRUE @@ -1146,9 +1156,9 @@ else victim.visible_message( - span_danger("[victim] is crushed by [src]!"), - span_userdanger("[src] crushes you!"), - span_warning("You hear a loud crunch!") + span_danger("[victim] раздавлен[genderize_ru(victim.gender, "", "а", "о", "ы")] [declent_ru(INSTRUMENTAL)]!"), + span_userdanger("[capitalize(declent_ru(NOMINATIVE))] сокрушает тебя!"), + span_warning("Вы слышите громкий хруст!") ) add_attack_logs(null, victim, "crushed by [src]") @@ -1214,9 +1224,9 @@ should_throw_at_target = FALSE else victim.visible_message( - span_danger("[victim] is crushed by [src]!"), - span_userdanger("[src] falls on top of you, crushing you!"), - span_warning("You hear a loud crunch!") + span_danger("[victim] раздавлен[genderize_ru(victim.gender, "", "а", "о", "ы")] [declent_ru(INSTRUMENTAL)]!"), + span_userdanger("[capitalize(declent_ru(NOMINATIVE))] сокрушает тебя!"), + span_warning("Вы слышите громкий хруст!") ) victim.apply_damage(damage_to_deal, BRUTE) add_attack_logs(null, victim, "crushed by [src]") @@ -1231,7 +1241,7 @@ tilt_over(should_throw_at_target ? target_atom : null) /obj/machinery/vending/proc/tilt_over(mob/victim) - visible_message( span_danger("[src] tips over!")) + visible_message(span_danger("[capitalize(declent_ru(NOMINATIVE))] опрокидывается!")) playsound(src, "sound/effects/bang.ogg", 100, TRUE) var/picked_rotation = pick(90, 270) tilted_rotation = picked_rotation @@ -1247,15 +1257,15 @@ if(user) user.visible_message( - "[user] begins to right [src].", - "You begin to right [src]." + "[user] начинает поднимать [declent_ru(ACCUSATIVE)].", + "Вы начинаете поднимать [declent_ru(ACCUSATIVE)]." ) if(!do_after(user, 7 SECONDS, src, max_interact_count = 1, cancel_on_max = TRUE)) return user.visible_message( - span_notice("[user] rights [src]."), - span_notice("You right [src]."), - span_notice(">You hear a loud clang.") + span_notice("[user] поднял [declent_ru(ACCUSATIVE)]."), + span_notice("Вы подняли [declent_ru(ACCUSATIVE)]."), + span_notice("Вы слышите громкий лязг.") ) if(!tilted) //Sanity check return @@ -1280,12 +1290,25 @@ products = list( /obj/item/assembly/prox_sensor = 5,/obj/item/assembly/igniter = 3,/obj/item/assembly/signaler = 4, /obj/item/wirecutters = 1, /obj/item/cartridge/signal = 4) contraband = list(/obj/item/flashlight = 5,/obj/item/assembly/timer = 2, /obj/item/assembly/voice = 2, /obj/item/assembly/health = 2) - ads_list = list("Only the finest!","Have some tools.","The most robust equipment.","The finest gear in space!") + ads_list = list( + "Только самое лучшее!", + "Имеются всякие инструменты.", + "Самое надежное оборудование!", + "Лучшее снаряжение в космосе!" + ) refill_canister = /obj/item/vending_refill/assist /obj/machinery/vending/boozeomat name = "\improper Booze-O-Mat" - desc = "A technological marvel, supposedly able to mix just the mixture you'd like to drink the moment you ask for one." + ru_names = list( + NOMINATIVE = "торговый автомат Booze-O-Mat", + GENITIVE = "торгового автомата Booze-O-Mat", + DATIVE = "торговому автомату Booze-O-Mat", + ACCUSATIVE = "торговый автомат Booze-O-Mat", + INSTRUMENTAL = "торговым автоматом Booze-O-Mat", + PREPOSITIONAL = "торговом автомате Booze-O-Mat" + ) + desc = "Чудо техники, предположительно способное выдать идеальный напиток для вас в тот момент, когда вы об этом попросите." icon_state = "boozeomat_off" //////////////18 drink entities below, plus the glasses, in case someone wants to edit the number of bottles panel_overlay = "boozeomat_panel" @@ -1330,8 +1353,30 @@ contraband = list(/obj/item/reagent_containers/food/drinks/tea = 10, /obj/item/reagent_containers/food/drinks/bottle/fernet = 5) vend_delay = 15 - slogan_list = list("Надеюсь, никто не попросит меня о чёртовой кружке чая…","Алкоголь — друг человека. Вы же не бросите друга?","Очень рад вас обслужить!","Никто на этой станции не хочет выпить?") - ads_list = list("Выпьем!","Бухло пойдёт вам на пользу!","Алкоголь — друг человека.","Очень рад вас обслужить!","Хотите отличного холодного пива?","Ничто так не лечит, как бухло!","Пригубите!","Выпейте!","Возьмите пивка!","Пиво пойдёт вам на пользу!","Только лучший алкоголь!","Бухло лучшего качества с 2053 года!","Вино со множеством наград!","Максимум алкоголя!","Мужчины любят пиво","Тост: «За прогресс!»") + slogan_list = list( + "Надеюсь, никто не попросит меня о чёртовой кружке чая…", + "Алкоголь — друг человека. Вы же не бросите друга?", + "Очень рад вас обслужить!", + "Никто на этой станции не хочет выпить?" + ) + ads_list = list( + "Выпьем!", + "Бухло пойдёт вам на пользу!", + "Алкоголь — друг человека.", + "Очень рад вас обслужить!", + "Хотите отличного холодного пива?", + "Ничто так не лечит, как бухло!", + "Пригубите!", + "Выпейте!", + "Возьмите пивка!", + "Пиво пойдёт вам на пользу!", + "Только лучший алкоголь!", + "Бухло лучшего качества с 2053 года!", + "Вино со множеством наград!", + "Максимум алкоголя!", + "Мужчины любят пиво", + "Тост: «За прогресс!»" + ) refill_canister = /obj/item/vending_refill/boozeomat /obj/machinery/vending/boozeomat/syndicate_access @@ -1339,8 +1384,30 @@ /obj/machinery/vending/coffee name = "\improper Solar's Best Hot Drinks" - desc = "A vending machine which dispenses hot drinks." - ads_list = list("Выпейте!","Выпьем!","На здоровье!","Не хотите горячего супчику?","Я бы убил за чашечку кофе!","Лучшие зёрна в галактике","Для Вас — только лучшие напитки","М-м-м-м… Ничто не сравнится с кофе","Я люблю кофе, а Вы?","Кофе помогает работать!","Возьмите немного чайку","Надеемся, Вы предпочитаете лучшее!","Отведайте наш новый шоколад!","Admin conspiracies") + ru_names = list( + NOMINATIVE = "торговый автомат Solar's Best Hot Drinks", + GENITIVE = "торгового автомата Solar's Best Hot Drinks", + DATIVE = "торговому автомату Solar's Best Hot Drinks", + ACCUSATIVE = "торговый автомат Solar's Best Hot Drinks", + INSTRUMENTAL = "торговым автоматом Solar's Best Hot Drinks", + PREPOSITIONAL = "торговом автомате Solar's Best Hot Drinks" + ) + desc = "Это машина, которая готовит горячие напитки. Ну, знаете, такие, которые кипятком заливают." + ads_list = list( + "Выпейте!", + "Выпьем!", + "На здоровье!", + "Не хотите горячего супчику?", + "Я бы убил за чашечку кофе!", + "Лучшие зёрна в галактике", + "Для Вас — только лучшие напитки", + "М-м-м-м… Ничто не сравнится с кофе", + "Я люблю кофе, а Вы?", + "Кофе помогает работать!", + "Возьмите немного чайку", + "Надеемся, Вы предпочитаете лучшее!", + "Отведайте наш новый шоколад!" + ) icon_state = "coffee_off" panel_overlay = "coffee_panel" @@ -1382,7 +1449,7 @@ if(!..()) return FALSE if(!I.is_open_container()) - to_chat(user, "You need to open [I] before inserting it.") + to_chat(user, span_warning("Вам нужно открыть [I], прежде чем вставить его.")) return FALSE return TRUE @@ -1418,9 +1485,31 @@ /obj/machinery/vending/snack name = "\improper Getmore Chocolate Corp" - desc = "A snack machine courtesy of the Getmore Chocolate Corporation, based out of Mars." - slogan_list = list("Попробуйте наш новый батончик с нугой!","Вдвое больше калорий за полцены!") - ads_list = list("The healthiest!","Award-winning chocolate bars!","Mmm! So good!","Oh my god it's so juicy!","Have a snack.","Snacks are good for you!","Have some more Getmore!","Best quality snacks straight from mars.","We love chocolate!","Try our new jerky!") + ru_names = list( + NOMINATIVE = "торговый автомат Getmore Chocolate Corp", + GENITIVE = "торгового автомата Getmore Chocolate Corp", + DATIVE = "торговому автомату Getmore Chocolate Corp", + ACCUSATIVE = "торговый автомат Getmore Chocolate Corp", + INSTRUMENTAL = "торговым автоматом Getmore Chocolate Corp", + PREPOSITIONAL = "торговом автомате Getmore Chocolate Corp" + ) + desc = "Автомат самообслуживания, любезно предоставленный шоколадной корпорацией Getmore, базирующейся на Марсе." + slogan_list = list( + "Попробуйте наш новый батончик с нугой!", + "Вдвое больше калорий за полцены!" + ) + ads_list = list( + "Самый здоровый!", + "Отмеченные наградами шоколадные батончики!", + "Ммм! Так вкусно!", + "О боже, это так вкусно!", + "Перекусите.", + "Закуски - это здорово!", + "Возьми немного, и еще немного!", + "Закуски высшего качества прямо с Марса.", + "Мы любим шоколад!", + "Попробуйте наше новое вяленое мясо!" + ) icon_state = "snack_off" panel_overlay = "snack_panel" @@ -1461,8 +1550,21 @@ /obj/machinery/vending/chinese name = "\improper Mr. Chang" - desc = "A self-serving Chinese food machine, for all your Chinese food needs." - slogan_list = list("Попробуйте 5000 лет культуры!","Мистер Чанг, одобрен для безопасного потребления в более чем 10 секторах!","Китайская кухня отлично подходит для вечернего свидания или одинокого вечера!","Вы не ошибетесь, если попробуете настоящую китайскую кухню от мистера Чанга.!") + ru_names = list( + NOMINATIVE = "торговый автомат Mr. Chang", + GENITIVE = "торгового автомата Mr. Chang", + DATIVE = "торговому автомату Mr. Chang", + ACCUSATIVE = "торговый автомат Mr. Chang", + INSTRUMENTAL = "торговым автоматом Mr. Chang", + PREPOSITIONAL = "торговом автомате Mr. Chang" + ) + desc = "Китайская машина самообслуживания, создана специально для удовлетворения потребности в китайской кухне." + slogan_list = list( + "Попробуйте 5000 лет культуры!", + "Мистер Чанг, одобрен для безопасного потребления в более чем 10 секторах!", + "Китайская кухня отлично подходит для вечернего свидания или одинокого вечера!", + "Вы не ошибетесь, если попробуете настоящую китайскую кухню от мистера Чанга!" + ) icon_state = "chang_off" panel_overlay = "chang_panel" @@ -1505,7 +1607,15 @@ /obj/machinery/vending/cola name = "\improper Robust Softdrinks" - desc = "A soft drink vendor provided by Robust Industries, LLC." + ru_names = list( + NOMINATIVE = "торговый автомат Robust Softdrinks", + GENITIVE = "торгового автомата Robust Softdrinks", + DATIVE = "торговому автомату Robust Softdrinks", + ACCUSATIVE = "торговый автомат Robust Softdrinks", + INSTRUMENTAL = "торговым автоматом Robust Softdrinks", + PREPOSITIONAL = "торговом автомате Robust Softdrinks" + ) + desc = "Автомат с безалкогольными напитками, предоставляемый компанией Robust Industries, LLC." icon_state = "cola-machine_off" panel_overlay = "cola-machine_panel" @@ -1515,7 +1625,15 @@ broken_lightmask_overlay = "cola-machine_broken_lightmask" slogan_list = list("Роб+аст с+офтдринкс: крепче, чем тулбоксом по голове!") - ads_list = list("Освежает!","Надеюсь, вас одолела жажда!","Продано больше миллиона бутылок!","Хотите пить? Почему бы не взять колы?","Пожалуйста, купите напиток","Выпьем!","Лучшие напитки во всём космосе") + ads_list = list( + "Освежает!", + "Надеюсь, вас одолела жажда!", + "Продано больше миллиона бутылок!", + "Хотите пить? Почему бы не взять колы?", + "Пожалуйста, купите напиток", + "Выпьем!", + "Лучшие напитки во всём космосе" + ) products = list( /obj/item/reagent_containers/food/drinks/cans/cola = 10, /obj/item/reagent_containers/food/drinks/cans/space_mountain_wind = 10, @@ -1548,7 +1666,15 @@ /obj/machinery/vending/cart name = "\improper PTech" - desc = "Cartridges for PDA's." + ru_names = list( + NOMINATIVE = "торговый автомат PTech", + GENITIVE = "торгового автомата PTech", + DATIVE = "торговому автомату PTech", + ACCUSATIVE = "торговый автомат PTech", + INSTRUMENTAL = "торговым автоматом PTech", + PREPOSITIONAL = "торговом автомате PTech" + ) + desc = "Картриджи для КПК." slogan_list = list("Карточки в дорогу!") icon_state = "cart_off" @@ -1573,7 +1699,15 @@ /obj/machinery/vending/liberationstation name = "\improper Liberation Station" - desc = "An overwhelming amount of ancient patriotism washes over you just by looking at the machine." + ru_names = list( + NOMINATIVE = "торговый автомат Liberation Station", + GENITIVE = "торгового автомата Liberation Station", + DATIVE = "торговому автомату Liberation Station", + ACCUSATIVE = "торговый автомат Liberation Station", + INSTRUMENTAL = "торговым автоматом Liberation Station", + PREPOSITIONAL = "торговом автомате Liberation Station" + ) + desc = "При одном взгляде на эту машину вас охватывает непреодолимое чувство древнего патриотизма." icon_state = "liberationstation_off" panel_overlay = "liberationstation_panel" @@ -1583,9 +1717,19 @@ broken_lightmask_overlay = "liberationstation_broken_lightmask" req_access = list(ACCESS_SECURITY) - slogan_list = list("Liberation Station: Your one-stop shop for all things second amendment!","Be a patriot today, pick up a gun!","Quality weapons for cheap prices!","Better dead than red!") - ads_list = list("Float like an astronaut, sting like a bullet!","Express your second amendment today!","Guns don't kill people, but you can!","Who needs responsibilities when you have guns?") - vend_reply = "Remember the name: Liberation Station!" + slogan_list = list( + "Liberation Station: Ваш универсальный магазин всего, что связано со второй поправкой!", + "Будь патриотом, возьми в руки оружие уже сегодня!", + "Качественное оружие по низким ценам!", + "Лучше умереть, чем покраснеть!" + ) + ads_list = list( + "Порхай, как космонавт, жаль, как пуля!", + "Ты что, опять сохраняешься?", + "Оружие не убивает людей, а вот ты можешь!", + "Какая ещё может быть ответственность, если у тебя есть ствол?" + ) + vend_reply = "Запомни моё имя: Liberation Station!" products = list(/obj/item/gun/projectile/automatic/pistol/deagle/gold = 2,/obj/item/gun/projectile/automatic/pistol/deagle/camo = 2, /obj/item/gun/projectile/automatic/pistol/m1911 = 2,/obj/item/gun/projectile/automatic/proto = 2, /obj/item/gun/projectile/shotgun/automatic/combat = 2,/obj/item/gun/projectile/automatic/gyropistol = 1, @@ -1598,7 +1742,15 @@ /obj/machinery/vending/toyliberationstation name = "\improper Syndicate Donksoft Toy Vendor" - desc = "An ages 8 and up approved vendor that dispenses toys. If you were to find the right wires, you can unlock the adult mode setting!" + ru_names = list( + NOMINATIVE = "торговый автомат Syndicate Donksoft Toy Vendor", + GENITIVE = "торгового автомата Syndicate Donksoft Toy Vendor", + DATIVE = "торговому автомату Syndicate Donksoft Toy Vendor", + ACCUSATIVE = "торговый автомат Syndicate Donksoft Toy Vendor", + INSTRUMENTAL = "торговым автоматом Syndicate Donksoft Toy Vendor", + PREPOSITIONAL = "торговом автомате Syndicate Donksoft Toy Vendor" + ) + desc = "Одобренный автомат игрушек для детей от 8 лет и старше. Если вы найдете нужные провода, вы сможете разблокировать режим для взрослых!" icon_state = "syndi_off" panel_overlay = "syndi_panel" @@ -1607,9 +1759,21 @@ broken_overlay = "syndi_broken" broken_lightmask_overlay = "syndi_broken_lightmask" - slogan_list = list("Get your cool toys today!","Trigger a valid hunter today!","Quality toy weapons for cheap prices!","Give them to HoPs for all access!","Give them to HoS to get permabrigged!") - ads_list = list("Feel robust with your toys!","Express your inner child today!","Toy weapons don't kill people, but valid hunters do!","Who needs responsibilities when you have toy weapons?","Make your next murder FUN!") - vend_reply = "Come back for more!" + slogan_list = list( + "Получите крутые игрушки прямо сейчас!", + "Начните свою охоту уже сегодня!", + "Качественное игрушечное оружие по низким ценам!", + "Подарите их ГП для получения общего доступа!", + "Подарите их ГСБ чтобы попасть в пермабриг!" + ) + ads_list = list( + "Почувствуй робастность, с игрушкой в руках!", + "Проявите своего внутреннего ребенка уже сегодня!", + "Давай, сражайся как мужчина!", + "Какая к чёрту ответственность, за игрушечный ствол?", + "Сделайте свое следующее убийство ВЕСЕЛЫМ!" + ) + vend_reply = "Возвращайтесь за добавкой!" products = list(/obj/item/gun/projectile/automatic/toy = 10, /obj/item/gun/projectile/automatic/toy/pistol= 10, /obj/item/gun/projectile/shotgun/toy = 10, @@ -1633,9 +1797,30 @@ /obj/machinery/vending/cigarette name = "ShadyCigs Deluxe" - desc = "If you want to get cancer, might as well do it in style." - slogan_list = list("Космосигареты весьма хороши на вкус, какими они и должны быть","I'd rather toolbox than switch.","Затянитесь!","Не верьте исследованиям — курите!") - ads_list = list("Наверняка не очень-то и вредно для Вас!","Не верьте учёным!","На здоровье!","Не бросайте курить, купите ещё!","Затянитесь!","Никотиновый рай","Лучшие сигареты с 2150 года","Сигареты с множеством наград") + ru_names = list( + NOMINATIVE = "торговый автомат ShadyCigs Deluxe", + GENITIVE = "торгового автомата ShadyCigs Deluxe", + DATIVE = "торговому автомату ShadyCigs Deluxe", + ACCUSATIVE = "торговый автомат ShadyCigs Deluxe", + INSTRUMENTAL = "торговым автоматом ShadyCigs Deluxe", + PREPOSITIONAL = "торговом автомате ShadyCigs Deluxe" + ) + desc = "Если ты собираешься заболеть раком, по крайней мере, сделай это стильно!" + slogan_list = list( + "Космосигареты весьма хороши на вкус, какими они и должны быть", + "Затянитесь!", + "Не верьте исследованиям — курите!" + ) + ads_list = list( + "Наверняка не очень-то и вредно для Вас!", + "Не верьте учёным!", + "На здоровье!", + "Не бросайте курить, купите ещё!", + "Затянитесь!", + "Никотиновый рай", + "Лучшие сигареты с 2150 года", + "Сигареты с множеством наград" + ) vend_delay = 34 icon_state = "cigs_off" @@ -1693,9 +1878,26 @@ /obj/machinery/vending/cigarette/beach //Used in the lavaland_biodome_beach.dmm ruin name = "\improper ShadyCigs Ultra" - desc = "Now with extra premium products!" - ads_list = list("Наверняка не очень-то и вредно для Вас!","Допинг проведёт через безденежье лучше, чем деньги через бездопингье!","На здоровье!") - slogan_list = list("Включи, настрой, получи!","С химией жить веселей!","Затянитесь!","Сохраняй улыбку на устах и песню в своём сердце!") + ru_names = list( + NOMINATIVE = "торговый автомат ShadyCigs Ultra", + GENITIVE = "торгового автомата ShadyCigs Ultra", + DATIVE = "торговому автомату ShadyCigs Ultra", + ACCUSATIVE = "торговый автомат ShadyCigs Ultra", + INSTRUMENTAL = "торговым автоматом ShadyCigs Ultra", + PREPOSITIONAL = "торговом автомате ShadyCigs Ultra" + ) + desc = "Теперь с дополнительными продуктами премиум-класса!" + ads_list = list( + "Наверняка не очень-то и вредно для Вас!", + "Допинг проведёт через безденежье лучше, чем деньги через бездопингье!", + "На здоровье!" + ) + slogan_list = list( + "Включи, настрой, получи!", + "С химией жить веселей!", + "Затянитесь!", + "Сохраняй улыбку на устах и песню в своём сердце!" + ) products = list(/obj/item/storage/fancy/cigarettes = 5, /obj/item/storage/fancy/cigarettes/cigpack_uplift = 3, /obj/item/storage/fancy/cigarettes/cigpack_robust = 3, @@ -1711,7 +1913,15 @@ /obj/machinery/vending/medical name = "\improper NanoMed Plus" - desc = "Medical drug dispenser." + ru_names = list( + NOMINATIVE = "торговый автомат NanoMed Plus", + GENITIVE = "торгового автомата NanoMed Plus", + DATIVE = "торговому автомату NanoMed Plus", + ACCUSATIVE = "торговый автомат NanoMed Plus", + INSTRUMENTAL = "торговым автоматом NanoMed Plus", + PREPOSITIONAL = "торговом автомате NanoMed Plus" + ) + desc = "Медицинский раздатчик веществ." icon_state = "med_off" panel_overlay = "med_panel" @@ -1721,7 +1931,15 @@ broken_lightmask_overlay = "med_broken_lightmask" deny_overlay = "med_deny" - ads_list = list("Иди и спаси несколько жизней!","Лучшее снаряжение для вашего медотдела","Только лучшие инструменты","Натуральные химикаты!","Эта штука спасает жизни","Может сами примете?","Пинг!") + ads_list = list( + "Иди и спаси несколько жизней!", + "Лучшее снаряжение для вашего медотдела", + "Только лучшие инструменты", + "Натуральные химикаты!", + "Эта штука спасает жизни", + "Может сами примете?", + "Пинг!" + ) req_access = list(ACCESS_MEDICAL) products = list(/obj/item/reagent_containers/syringe = 12, /obj/item/reagent_containers/food/pill/patch/styptic = 4, /obj/item/reagent_containers/food/pill/patch/silver_sulf = 4, /obj/item/reagent_containers/applicator/brute = 3, /obj/item/reagent_containers/applicator/burn = 3, /obj/item/reagent_containers/glass/bottle/charcoal = 4, /obj/item/reagent_containers/glass/bottle/epinephrine = 4, /obj/item/reagent_containers/glass/bottle/diphenhydramine = 4, @@ -1739,7 +1957,14 @@ /obj/machinery/vending/medical/syndicate_access name = "\improper SyndiMed Plus" - + ru_names = list( + NOMINATIVE = "торговый автомат SyndiMed Plus", + GENITIVE = "торгового автомата SyndiMed Plus", + DATIVE = "торговому автомату SyndiMed Plus", + ACCUSATIVE = "торговый автомат SyndiMed Plus", + INSTRUMENTAL = "торговым автоматом SyndiMed Plus", + PREPOSITIONAL = "торговом автомате SyndiMed Plus" + ) icon_state = "syndi-big-med_off" panel_overlay = "syndi-big-med_panel" screen_overlay = "syndi-big-med" @@ -1755,7 +1980,15 @@ /obj/machinery/vending/plasmaresearch name = "\improper Toximate 3000" - desc = "All the fine parts you need in one vending machine!" + ru_names = list( + NOMINATIVE = "торговый автомат Toximate 3000", + GENITIVE = "торгового автомата Toximate 3000", + DATIVE = "торговому автомату Toximate 3000", + ACCUSATIVE = "торговый автомат Toximate 3000", + INSTRUMENTAL = "торговым автоматом Toximate 3000", + PREPOSITIONAL = "торговом автомате Toximate 3000" + ) + desc = "Все, что вам нужно, в одном удобном месте!" icon_state = "generic_off" panel_overlay = "generic_panel" @@ -1771,8 +2004,24 @@ /obj/machinery/vending/wallmed name = "\improper NanoMed" - desc = "Wall-mounted Medical Equipment dispenser." - ads_list = list("Иди и спаси несколько жизней!","Лучшее снаряжение для вашего медотдела","Только лучшие инструменты","Натуральные химикаты!","Эта штука спасает жизни","Может сами примете?","Пинг!") + ru_names = list( + NOMINATIVE = "торговый автомат NanoMed", + GENITIVE = "торгового автомата NanoMed", + DATIVE = "торговому автомату NanoMed", + ACCUSATIVE = "торговый автомат NanoMed", + INSTRUMENTAL = "торговым автоматом NanoMed", + PREPOSITIONAL = "торговом автомате NanoMed" + ) + desc = "Настенный раздатчик медицинских изделий." + ads_list = list( + "Иди и спаси несколько жизней!", + "Лучшее снаряжение для вашего медотдела", + "Только лучшие инструменты", + "Натуральные химикаты!", + "Эта штука спасает жизни", + "Может сами примете?", + "Пинг!" + ) icon_state = "wallmed_off" panel_overlay = "wallmed_panel" @@ -1792,7 +2041,15 @@ /obj/machinery/vending/wallmed/syndicate name = "\improper SyndiWallMed" - desc = "EVIL wall-mounted Medical Equipment dispenser." + ru_names = list( + NOMINATIVE = "торговый автомат SyndiWallMed", + GENITIVE = "торгового автомата SyndiWallMed", + DATIVE = "торговому автомату SyndiWallMed", + ACCUSATIVE = "торговый автомат SyndiWallMed", + INSTRUMENTAL = "торговым автоматом SyndiWallMed", + PREPOSITIONAL = "торговом автомате SyndiWallMed" + ) + desc = "Злое воплощение настенного раздатчика медицинских изделий." icon_state = "wallmed_off" panel_overlay = "wallmed_panel" @@ -1811,8 +2068,26 @@ /obj/machinery/vending/security name = "\improper SecTech" - desc = "A security equipment vendor." - ads_list = list("Круши черепа капиталистов!","Отбей несколько голов!","Не забывай, вредительство - полезно!","Твое оружие здесь.","Наручники!","Стоять, подонок!","Не бей меня, брат!","Убей их, брат.","Почему бы не съесть пончик?") + ru_names = list( + NOMINATIVE = "торговый автомат SecTech", + GENITIVE = "торгового автомата SecTech", + DATIVE = "торговому автомату SecTech", + ACCUSATIVE = "торговый автомат SecTech", + INSTRUMENTAL = "торговым автоматом SecTech", + PREPOSITIONAL = "торговом автомате SecTech" + ) + desc = "Раздатчик снаряжения службы безопасности." + ads_list = list( + "Круши черепа капиталистов!", + "Отбей несколько голов!", + "Не забывай, вредительство - полезно!", + "Твое оружие здесь.", + "Наручники!", + "Стоять, подонок!", + "Не бей меня, брат!", + "Убей их, брат.", + "Почему бы не съесть пончик?" + ) icon_state = "sec_off" panel_overlay = "sec_panel" @@ -1825,16 +2100,32 @@ req_access = list(ACCESS_SECURITY) products = list(/obj/item/restraints/handcuffs = 8,/obj/item/restraints/handcuffs/cable/zipties = 8,/obj/item/grenade/flashbang = 4,/obj/item/flash = 5, /obj/item/reagent_containers/food/snacks/donut = 12,/obj/item/storage/box/evidence = 6,/obj/item/flashlight/seclite = 4,/obj/item/restraints/legcuffs/bola/energy = 7, - /obj/item/clothing/mask/muzzle/safety = 4, /obj/item/storage/box/swabs = 6, /obj/item/storage/box/fingerprints = 6, /obj/item/eftpos/sec = 4, /obj/item/storage/belt/security/webbing = 2, /obj/item/grenade/smokebomb = 8, + /obj/item/clothing/mask/muzzle/safety = 4, /obj/item/storage/box/swabs = 6, /obj/item/storage/box/fingerprints = 6, /obj/item/eftpos/sec = 4, /obj/item/storage/belt/security/webbing = 2, /obj/item/flashlight/sectaclight = 2, /obj/item/grenade/smokebomb = 8, ) contraband = list(/obj/item/clothing/glasses/sunglasses = 2,/obj/item/storage/fancy/donut_box = 2,/obj/item/hailer = 5) - prices = list(/obj/item/storage/belt/security/webbing = 2000,/obj/item/grenade/smokebomb = 250) + prices = list(/obj/item/storage/belt/security/webbing = 2000, /obj/item/flashlight/sectaclight = 300, /obj/item/grenade/smokebomb = 250) refill_canister = /obj/item/vending_refill/security /obj/machinery/vending/security/training name = "\improper SecTech Training" - desc = "A security training equipment vendor." - ads_list = list("Соблюдай чистоту на стрельбище!","Даже я стреляю лучше тебя!","Почему так косо, бухой что ли?!","Техника безопасности нам не писана, да?","1 из 10 попаданий... А ты хорош!","Инструктор это твой папочка!","Эй, ты куда целишься?!") + ru_names = list( + NOMINATIVE = "торговый автомат SecTech Training", + GENITIVE = "торгового автомата SecTech Training", + DATIVE = "торговому автомату SecTech Training", + ACCUSATIVE = "торговый автомат SecTech Training", + INSTRUMENTAL = "торговым автоматом SecTech Training", + PREPOSITIONAL = "торговом автомате SecTech Training" + ) + desc = "Раздатчик тренировочного снаряжения службы безопасности." + ads_list = list( + "Соблюдай чистоту на стрельбище!", + "Даже я стреляю лучше тебя!", + "Почему так косо, бухой что ли?!", + "Техника безопасности нам не писана, да?", + "1 из 10 попаданий... А ты хорош!", + "Инструктор – это твой папочка!", + "Эй, ты куда целишься?!" + ) icon_state = "sectraining_off" panel_overlay = "sec_panel" @@ -1880,15 +2171,33 @@ /obj/item/security_voucher name = "security voucher" - desc = "A token to redeem a weapon kit. Use it on a SecTech." + desc = "Жетон, позволяющий получить набор оружия. Используйте его на SecTech." icon_state = "security_voucher" w_class = WEIGHT_CLASS_SMALL /obj/machinery/vending/hydronutrients name = "\improper NutriMax" - desc = "A plant nutrients vendor" - slogan_list = list("Вам не надо удобрять почву естественным путём — разве это не чудесно?","Теперь на 50% меньше вони!","Растения тоже люди!") - ads_list = list("Мы любим растения!","Может сами примете?","Самые зелёные кнопки на свете.","Мы любим большие растения.","Мягкая почва…") + ru_names = list( + NOMINATIVE = "торговый автомат NutriMax", + GENITIVE = "торгового автомата NutriMax", + DATIVE = "торговому автомату NutriMax", + ACCUSATIVE = "торговый автомат NutriMax", + INSTRUMENTAL = "торговым автоматом NutriMax", + PREPOSITIONAL = "торговом автомате NutriMax" + ) + desc = "Поставщик питательных веществ для растений." + slogan_list = list( + "Вам не надо удобрять почву естественным путём — разве это не чудесно?", + "Теперь на 50% меньше вони!", + "Растения тоже люди!" + ) + ads_list = list( + "Мы любим растения!", + "Может сами примете?", + "Самые зелёные кнопки на свете.", + "Мы любим большие растения.", + "Мягкая почва…" + ) icon_state = "nutri_off" panel_overlay = "nutri_panel" @@ -1905,9 +2214,26 @@ /obj/machinery/vending/hydroseeds name = "\improper MegaSeed Servitor" - desc = "When you need seeds fast!" - slogan_list = list("THIS'S WHERE TH' SEEDS LIVE! GIT YOU SOME!","Hands down the best seed selection on the station!","Also certain mushroom varieties available, more for experts! Get certified today!") - ads_list = list("Мы любим растения!","Вырасти урожай!","Расти, малыш, расти-и-и-и!","Ды-а, сына!") + ru_names = list( + NOMINATIVE = "торговый автомат MegaSeed Servitor", + GENITIVE = "торгового автомата MegaSeed Servitor", + DATIVE = "торговому автомату MegaSeed Servitor", + ACCUSATIVE = "торговый автомат MegaSeed Servitor", + INSTRUMENTAL = "торговым автоматом MegaSeed Servitor", + PREPOSITIONAL = "торговом автомате MegaSeed Servitor" + ) + desc = "Когда вам срочно нужны семена!" + slogan_list = list( + "ВОТ ГДЕ ЖИВУТ СЕМЕНА! ВОЗЬМИ СЕБЕ НЕМНОГО!", + "Без сомнений, лучший выбор семян на станции!", + "Кроме того, некоторые виды грибов доступны исключительно для экспертов! Получите сертификат уже сегодня!" + ) + ads_list = list( + "Мы любим растения!", + "Вырасти урожай!", + "Расти, малыш, расти-и-и-и!", + "Ды-а, сына!" + ) icon_state = "seeds_off" panel_overlay = "seeds_panel" @@ -1987,7 +2313,15 @@ /obj/machinery/vending/magivend name = "\improper MagiVend" - desc = "A magic vending machine." + ru_names = list( + NOMINATIVE = "торговый автомат MagiVend", + GENITIVE = "торгового автомата MagiVend", + DATIVE = "торговому автомату MagiVend", + ACCUSATIVE = "торговый автомат MagiVend", + INSTRUMENTAL = "торговым автоматом MagiVend", + PREPOSITIONAL = "торговом автомате MagiVend" + ) + desc = "Волшебный торговый автомат." icon_state = "magivend_off" panel_overlay = "magivend_panel" @@ -1996,10 +2330,24 @@ broken_overlay = "magivend_broken" broken_lightmask_overlay = "magivend_broken_lightmask" - slogan_list = list("Sling spells the proper way with MagiVend!","Be your own Houdini! Use MagiVend!") + slogan_list = list( + "MagiVend превращает произношение заклинаний в сущий пустяк!", + "Стань сам себе Гудини! Используй MagiVend!" + ) vend_delay = 15 - vend_reply = "Have an enchanted evening!" - ads_list = list("FJKLFJSD","AJKFLBJAKL","1234 LOONIES LOL!",">MFW","Kill them fuckers!","GET DAT FUKKEN DISK","HONK!","EI NATH","Destroy the station!","Admin conspiracies since forever!","Space-time bending hardware!") + vend_reply = "Желаю вам чудесного вечера!" + ads_list = list( + "FJKLFJSD","AJKFLBJAKL", + "1234 LOONIES LOL!", + ">MFW", + "Kill them fuckers!", + "GET DAT FUKKEN DISK", + "HONK!", + "EI NATH", + "Разнесите станцию!", + "Админские заговоры стары как само время!", + "Оборудование для изгиба пространства-времени!" + ) products = list(/obj/item/clothing/head/wizard = 5, /obj/item/clothing/suit/wizrobe = 5, /obj/item/clothing/head/wizard/red = 5, @@ -2033,7 +2381,15 @@ /obj/machinery/vending/autodrobe name = "\improper AutoDrobe" - desc = "A vending machine for costumes." + ru_names = list( + NOMINATIVE = "торговый автомат AutoDrobe", + GENITIVE = "торгового автомата AutoDrobe", + DATIVE = "торговому автомату AutoDrobe", + ACCUSATIVE = "торговый автомат AutoDrobe", + INSTRUMENTAL = "торговым автоматом AutoDrobe", + PREPOSITIONAL = "торговом автомате AutoDrobe" + ) + desc = "Автомат с бесплатными костюмами!" icon_state = "theater_off" panel_overlay = "theater_panel" @@ -2043,9 +2399,14 @@ broken_lightmask_overlay = "theater_broken_lightmask" deny_overlay = "theater_deny" - slogan_list = list("Dress for success!","Suited and booted!","It's show time!","Why leave style up to fate? Use AutoDrobe!") + slogan_list = list( + "Приоденься для Успеха!", + "Одетый и обутый!", + "Пришло время шоу!", + "Зачем оставлять стиль на произвол судьбы? Используй AutoDrobe!" + ) vend_delay = 15 - vend_reply = "Thank you for using AutoDrobe!" + vend_reply = "Спасибо за использование AutoDrobe!" products = list(/obj/item/clothing/suit/chickensuit = 1, /obj/item/clothing/head/chicken = 1, /obj/item/clothing/under/gladiator = 1, @@ -2133,6 +2494,8 @@ /obj/item/clothing/head/rockso = 1, /obj/item/clothing/mask/gas/clown_hat/rockso = 1, /obj/item/clothing/under/rockso = 1, + /obj/item/clothing/mask/gas/clown_hat/sweettooth = 1, + /obj/item/clothing/under/sweettooth = 1, /obj/item/clothing/under/pants/camo = 1, /obj/item/clothing/mask/bandana = 1, /obj/item/clothing/mask/bandana/black = 1, @@ -2192,8 +2555,24 @@ /obj/machinery/vending/dinnerware name = "\improper Plasteel Chef's Dinnerware Vendor" - desc = "A kitchen and restaurant equipment vendor." - ads_list = list("Mm, food stuffs!","Food and food accessories.","Get your plates!","You like forks?","I like forks.","Woo, utensils.","You don't really need these...") + ru_names = list( + NOMINATIVE = "торговый автомат Plasteel Chef's Dinnerware Vendor", + GENITIVE = "торгового автомата Plasteel Chef's Dinnerware Vendor", + DATIVE = "торговому автомату Plasteel Chef's Dinnerware Vendor", + ACCUSATIVE = "торговый автомат Plasteel Chef's Dinnerware Vendor", + INSTRUMENTAL = "торговым автоматом Plasteel Chef's Dinnerware Vendor", + PREPOSITIONAL = "торговом автомате Plasteel Chef's Dinnerware Vendor" + ) + desc = "Поставщик кухонного и ресторанного оборудования." + ads_list = list( + "Мм, продукты питания!", + "Пища и пищевые принадлежности.", + "Принесите свои тарелки!", + "Тебе нравятся вилки?", + "Я люблю вилки.", + "Ух ты, посуда.", + "На самом деле они тебе не нужны..." + ) icon_state = "dinnerware_off" panel_overlay = "dinnerware_panel" @@ -2237,7 +2616,15 @@ /obj/machinery/vending/sovietsoda name = "\improper BODA" - desc = "Old sweet water vending machine." + ru_names = list( + NOMINATIVE = "торговый автомат BODA", + GENITIVE = "торгового автомата BODA", + DATIVE = "торговому автомату BODA", + ACCUSATIVE = "торговый автомат BODA", + INSTRUMENTAL = "торговым автоматом BODA", + PREPOSITIONAL = "торговом автомате BODA" + ) + desc = "Старый автомат по продаже сладкой газировки." icon_state = "sovietsoda_off" panel_overlay = "sovietsoda_panel" @@ -2246,7 +2633,13 @@ broken_overlay = "sovietsoda_broken" broken_lightmask_overlay = "sovietsoda_broken_lightmask" - ads_list = list("For Tsar and Country.","Have you fulfilled your nutrition quota today?","Very nice!","We are simple people, for this is all we eat.","If there is a person, there is a problem. If there is no person, then there is no problem.") + ads_list = list( + "За царя и Отечество.", + "Ты уже осуществил свою норму питания на сегодня?", + "Очень хорошо!", + "Мы обычные люди, и едим мы то, что есть.", + "Если есть человек, то есть и проблема. Если нет человека, то нет и проблемы." + ) products = list(/obj/item/reagent_containers/food/drinks/drinkingglass/soda = 30) contraband = list(/obj/item/reagent_containers/food/drinks/drinkingglass/cola = 20) resistance_flags = FIRE_PROOF @@ -2254,7 +2647,15 @@ /obj/machinery/vending/tool name = "\improper YouTool" - desc = "Tools for tools." + ru_names = list( + NOMINATIVE = "торговый автомат YouTool", + GENITIVE = "торгового автомата YouTool", + DATIVE = "торговому автомату YouTool", + ACCUSATIVE = "торговый автомат YouTool", + INSTRUMENTAL = "торговым автоматом YouTool", + PREPOSITIONAL = "торговом автомате YouTool" + ) + desc = "Инструменты для инструментов." icon_state = "tool_off" panel_overlay = "tool_panel" @@ -2295,7 +2696,15 @@ /obj/machinery/vending/engivend name = "\improper Engi-Vend" - desc = "Spare tool vending. What? Did you expect some witty description?" + ru_names = list( + NOMINATIVE = "торговый автомат Engi-Vend", + GENITIVE = "торгового автомата Engi-Vend", + DATIVE = "торговому автомату Engi-Vend", + ACCUSATIVE = "торговый автомат Engi-Vend", + INSTRUMENTAL = "торговым автоматом Engi-Vend", + PREPOSITIONAL = "торговом автомате Engi-Vend" + ) + desc = "Автомат с запасными инструментами. Что? Вы ожидали какого-нибудь остроумного описания?" icon_state = "engivend_off" panel_overlay = "engivend_panel" @@ -2313,7 +2722,15 @@ /obj/machinery/vending/engineering name = "\improper Robco Tool Maker" - desc = "Everything you need for do-it-yourself station repair." + ru_names = list( + NOMINATIVE = "торговый автомат Robco Tool Maker", + GENITIVE = "торгового автомата Robco Tool Maker", + DATIVE = "торговому автомату Robco Tool Maker", + ACCUSATIVE = "торговый автомат Robco Tool Maker", + INSTRUMENTAL = "торговым автоматом Robco Tool Maker", + PREPOSITIONAL = "торговом автомате Robco Tool Maker" + ) + desc = "Все, что вам требуется для самостоятельного обслуживания станции." icon_state = "engi_off" panel_overlay = "engi_panel" @@ -2335,7 +2752,15 @@ /obj/machinery/vending/robotics name = "\improper Robotech Deluxe" - desc = "All the tools you need to create your own robot army." + ru_names = list( + NOMINATIVE = "торговый автомат Robotech Deluxe", + GENITIVE = "торгового автомата Robotech Deluxe", + DATIVE = "торговому автомату Robotech Deluxe", + ACCUSATIVE = "торговый автомат Robotech Deluxe", + INSTRUMENTAL = "торговым автоматом Robotech Deluxe", + PREPOSITIONAL = "торговом автомате Robotech Deluxe" + ) + desc = "Все, что вам нужно для создания вашей собственной армии роботов." icon_state = "robotics_off" panel_overlay = "robotics_panel" @@ -2373,9 +2798,31 @@ /obj/machinery/vending/sustenance name = "\improper Sustenance Vendor" - desc = "A vending machine which vends food, as required by section 47-C of the NT's Prisoner Ethical Treatment Agreement." - slogan_list = list("Enjoy your meal.","Enough calories to support strenuous labor.") - ads_list = list("The healthiest!","Award-winning chocolate bars!","Mmm! So good!","Oh my god it's so juicy!","Have a snack.","Snacks are good for you!","Have some more Getmore!","Best quality snacks straight from mars.","We love chocolate!","Try our new jerky!") + ru_names = list( + NOMINATIVE = "торговый автомат Sustenance Vendor", + GENITIVE = "торгового автомата Sustenance Vendor", + DATIVE = "торговому автомату Sustenance Vendor", + ACCUSATIVE = "торговый автомат Sustenance Vendor", + INSTRUMENTAL = "торговым автоматом Sustenance Vendor", + PREPOSITIONAL = "торговом автомате Sustenance Vendor" + ) + desc = "Торговый автомат, в котором продаются продукты питания, в соответствии с разделом 47-С Соглашения об этическом обращении с заключёнными в NT." + slogan_list = list( + "Приятного аппетита!", + "Достаточное количество калорий для интенсивной работы." + ) + ads_list = list( + "Самый здоровый!", + "Отмеченные наградами шоколадные батончики!", + "Ммм! Так вкусно!", + "О боже, это так вкусно!", + "Перекусите.", + "Закуски - это здорово!", + "Возьми немного, и еще немного!", + "Закуски высшего качества прямо с Марса.", + "Мы любим шоколад!", + "Попробуйте наше новое вяленое мясо!" + ) icon_state = "sustenance_off" panel_overlay = "snack_panel" @@ -2395,7 +2842,7 @@ refill_canister = /obj/item/vending_refill/sustenance /obj/machinery/vending/sustenance/additional - desc = "Какого этот автомат тут оказался?!" + desc = "Какого чёрта этот автомат тут оказался?!" products = list(/obj/item/reagent_containers/food/snacks/tofu = 12, /obj/item/reagent_containers/food/drinks/ice = 6, /obj/item/reagent_containers/food/snacks/candy/candy_corn = 6) @@ -2403,7 +2850,15 @@ /obj/machinery/vending/hatdispenser name = "\improper Hatlord 9000" - desc = "It doesn't seem the slightest bit unusual. This frustrates you immensely." + ru_names = list( + NOMINATIVE = "торговый автомат Hatlord 9000", + GENITIVE = "торгового автомата Hatlord 9000", + DATIVE = "торговому автомату Hatlord 9000", + ACCUSATIVE = "торговый автомат Hatlord 9000", + INSTRUMENTAL = "торговым автоматом Hatlord 9000", + PREPOSITIONAL = "торговом автомате Hatlord 9000" + ) + desc = "В этом нет ничего необычного. Это вас очень расстраивает." icon_state = "hats_off" panel_overlay = "hats_panel" @@ -2412,20 +2867,34 @@ broken_overlay = "hats_broken" broken_lightmask_overlay = "hats_broken_lightmask" - ads_list = list("Warning, not all hats are dog/monkey compatible. Apply forcefully with care.","Apply directly to the forehead.","Who doesn't love spending cash on hats?!","From the people that brought you collectable hat crates, Hatlord!") + ads_list = list( + "Внимание: не все шляпы совместимы с собаками и обезьянами. Надевайте с усилием, но осторожно.", + "Надевайте прямо на голову.", + "Кто не любит тратить деньги на шляпы?!", + "От создателей коробок с коллекционными шляпами — Hatlord!" + ) products = list(/obj/item/clothing/head/bowlerhat = 10, /obj/item/clothing/head/beaverhat = 10, /obj/item/clothing/head/boaterhat = 10, /obj/item/clothing/head/fedora = 10, /obj/item/clothing/head/fez = 10, /obj/item/clothing/head/beret = 10) - contraband = list(/obj/item/clothing/head/bearpelt = 5) + contraband = list(/obj/item/clothing/head/bearpelt = 5, + /obj/item/clothing/head/helmet/biker = 3) premium = list(/obj/item/clothing/head/soft/rainbow = 1) refill_canister = /obj/item/vending_refill/hatdispenser /obj/machinery/vending/suitdispenser name = "\improper Suitlord 9000" - desc = "You wonder for a moment why all of your shirts and pants come conjoined. This hurts your head and you stop thinking about it." + ru_names = list( + NOMINATIVE = "торговый автомат Suitlord 9000", + GENITIVE = "торгового автомата Suitlord 9000", + DATIVE = "торговому автомату Suitlord 9000", + ACCUSATIVE = "торговый автомат Suitlord 9000", + INSTRUMENTAL = "торговым автоматом Suitlord 9000", + PREPOSITIONAL = "торговом автомате Suitlord 9000" + ) + desc = "На мгновение ты задумываешься, почему все твои рубашки и брюки сшиты вместе. От этого у тебя начинает болеть голова, и ты перестаешь об этом думать." icon_state = "suits_off" panel_overlay = "suits_panel" @@ -2434,7 +2903,13 @@ broken_overlay = "suits_broken" broken_lightmask_overlay = "suits_broken_lightmask" - ads_list = list("Pre-Ironed, Pre-Washed, Pre-Wor-*BZZT*","Blood of your enemies washes right out!","Who are YOU wearing?","Look dapper! Look like an idiot!","Dont carry your size? How about you shave off some pounds you fat lazy- *BZZT*") + ads_list = list( + "Предварительно проглаженный, предварительно стиранный, предво-*БЗЗЗ*", + "Кровь твоих врагов сразу же смоется!", + "Что ВЫ носите?", + "Выгляди элегантно! Выгляди как идиот!", + "Не подходит по размеру? А как насчёт того, чтобы сбросить пару килограммов, ты, жирный лентяй-*БЗЗЗЗ*" + ) products = list( /obj/item/clothing/under/color/black = 10, /obj/item/clothing/under/color/blue = 10, @@ -2463,7 +2938,15 @@ /obj/machinery/vending/shoedispenser name = "\improper Shoelord 9000" - desc = "Wow, hatlord looked fancy, suitlord looked streamlined, and this is just normal. The guy who designed these must be an idiot." + ru_names = list( + NOMINATIVE = "торговый автомат Shoelord 9000", + GENITIVE = "торгового автомата Shoelord 9000", + DATIVE = "торговому автомату Shoelord 9000", + ACCUSATIVE = "торговый автомат Shoelord 9000", + INSTRUMENTAL = "торговым автоматом Shoelord 9000", + PREPOSITIONAL = "торговом автомате Shoelord 9000" + ) + desc = "Оу, шляпы у Hatlord такие классные, костюмы у Suitlord такие элегантные, а у этого всё такое обычное... Дизайнер, должно быть, идиот." icon_state = "shoes_off" icon_state = "shoes_off" @@ -2473,7 +2956,13 @@ broken_overlay = "shoes_broken" broken_lightmask_overlay = "shoes_broken_lightmask" - ads_list = list("Put your foot down!","One size fits all!","IM WALKING ON SUNSHINE!","No hobbits allowed.","NO PLEASE WILLY, DONT HURT ME- *BZZT*") + ads_list = list( + "Опусти ногу!", + "Один размер подходит всем!", + "Я ШАГАЮ В ЛУЧАХ СОЛНЦА!", + "Хоббитам вход воспрещен.", + "НЕТ, ПОЖАЛУЙСТА, ВИЛЛИ, НЕ ДЕЛАЙ МНЕ БОЛЬНО-*БЗЗЗЗ*" + ) products = list(/obj/item/clothing/shoes/black = 10,/obj/item/clothing/shoes/brown = 10,/obj/item/clothing/shoes/blue = 10,/obj/item/clothing/shoes/green = 10,/obj/item/clothing/shoes/yellow = 10,/obj/item/clothing/shoes/purple = 10,/obj/item/clothing/shoes/red = 10,/obj/item/clothing/shoes/white = 10,/obj/item/clothing/shoes/sandal=10) contraband = list(/obj/item/clothing/shoes/orange = 5) premium = list(/obj/item/clothing/shoes/rainbow = 1) @@ -2481,9 +2970,30 @@ /obj/machinery/vending/syndicigs name = "\improper Suspicious Cigarette Machine" - desc = "Smoke 'em if you've got 'em." - slogan_list = list("Космосигареты на вкус хороши, какими они и должны быть.","I'd rather toolbox than switch.","Затянитесь!","Не верьте исследованиям — курите сегодня!") - ads_list = list("Наверняка не очень-то и вредно для Вас!","Не верьте учёным!","На здоровье!","Не бросайте курить, купите ещё!","Затянитесь!","Никотиновый рай.","Лучшие сигареты с 2150 года.","Сигареты с множеством наград.") + ru_names = list( + NOMINATIVE = "торговый автомат Suspicious Cigarette Machine", + GENITIVE = "торгового автомата Suspicious Cigarette Machine", + DATIVE = "торговому автомату Suspicious Cigarette Machine", + ACCUSATIVE = "торговый автомат Suspicious Cigarette Machine", + INSTRUMENTAL = "торговым автоматом Suspicious Cigarette Machine", + PREPOSITIONAL = "торговом автомате Suspicious Cigarette Machine" + ) + desc = "Кури, раз уж взял." + slogan_list = list( + "Космосигареты на вкус хороши, какими они и должны быть.", + "Затянитесь!", + "Не верьте исследованиям — курите сегодня!" + ) + ads_list = list( + "Наверняка не очень-то и вредно для Вас!", + "Не верьте учёным!", + "На здоровье!", + "Не бросайте курить, купите ещё!", + "Затянитесь!", + "Никотиновый рай.", + "Лучшие сигареты с 2150 года.", + "Сигареты с множеством наград." + ) vend_delay = 34 icon_state = "cigs_off" @@ -2498,9 +3008,31 @@ /obj/machinery/vending/syndisnack name = "\improper Getmore Chocolate Corp" - desc = "A modified snack machine courtesy of the Getmore Chocolate Corporation, based out of Mars" - slogan_list = list("Try our new nougat bar!","Twice the calories for half the price!") - ads_list = list("The healthiest!","Award-winning chocolate bars!","Mmm! So good!","Oh my god it's so juicy!","Have a snack.","Snacks are good for you!","Have some more Getmore!","Best quality snacks straight from mars.","We love chocolate!","Try our new jerky!") + ru_names = list( + NOMINATIVE = "торговый автомат Getmore Chocolate Corp", + GENITIVE = "торгового автомата Getmore Chocolate Corp", + DATIVE = "торговому автомату Getmore Chocolate Corp", + ACCUSATIVE = "торговый автомат Getmore Chocolate Corp", + INSTRUMENTAL = "торговым автоматом Getmore Chocolate Corp", + PREPOSITIONAL = "торговом автомате Getmore Chocolate Corp" + ) + desc = "Модифицированный автомат самообслуживания, любезно предоставленный шоколадной корпорацией Getmore, базирующейся на Марсе." + slogan_list = list( + "Попробуйте наш новый батончик с нугой!", + "Вдвое больше калорий за полцены!" + ) + ads_list = list( + "Самый здоровый!", + "Отмеченные наградами шоколадные батончики!", + "Ммм! Так вкусно!", + "О боже, это так вкусно!", + "Перекусите.", + "Закуски - это здорово!", + "Возьми немного, и еще немного!", + "Закуски высшего качества прямо с Марса.", + "Мы любим шоколад!", + "Попробуйте наше новое вяленое мясо!" + ) icon_state = "snack_off" panel_overlay = "snack_panel" @@ -2514,8 +3046,20 @@ /obj/machinery/vending/syndierobotics name = "Синди Робо-ДеЛюкс!" + ru_names = list( + NOMINATIVE = "торговый автомат Синди Робо-ДеЛюкс", + GENITIVE = "торгового автомата Синди Робо-ДеЛюкс", + DATIVE = "торговому автомату Синди Робо-ДеЛюкс", + ACCUSATIVE = "торговый автомат Синди Робо-ДеЛюкс", + INSTRUMENTAL = "торговым автоматом Синди Робо-ДеЛюкс", + PREPOSITIONAL = "торговом автомате Синди Робо-ДеЛюкс" + ) desc = "Всё что нужно, чтобы сделать личного железного друга из ваших врагов!" - ads_list = list("Make them beep-boop like a robot should!","Robotisation is NOT a crime!","Nyoom!") + ads_list = list( + "Заставьте их пищать и гудеть, как и подобает роботу!", + "Роботизация — это НЕ преступление!", + "Ньям!" + ) icon_state = "robotics_off" panel_overlay = "robotics_panel" @@ -2544,7 +3088,15 @@ //don't forget to change the refill size if you change the machine's contents! /obj/machinery/vending/clothing name = "\improper ClothesMate" //renamed to make the slogan rhyme - desc = "A vending machine for clothing." + ru_names = list( + NOMINATIVE = "торговый автомат ClothesMate", + GENITIVE = "торгового автомата ClothesMate", + DATIVE = "торговому автомату ClothesMate", + ACCUSATIVE = "торговый автомат ClothesMate", + INSTRUMENTAL = "торговым автоматом ClothesMate", + PREPOSITIONAL = "торговом автомате ClothesMate" + ) + desc = "Автомат с бесплатной одеждой." icon_state = "clothes_off" panel_overlay = "clothes_panel" @@ -2553,9 +3105,14 @@ broken_overlay = "clothes_broken" broken_lightmask_overlay = "clothes_broken_lightmask" - slogan_list = list("Dress for success!","Prepare to look swagalicious!","Look at all this free swag!","Why leave style up to fate? Use the ClothesMate!") + slogan_list = list( + "Приоденься для Успеха!", + "Приготовьтесь выглядеть потрясающе!", + "Посмотрите на все эти классные вещи бесплатно!", + "Зачем оставлять стиль на произвол судьбы? Используй ClothesMate!" + ) vend_delay = 15 - vend_reply = "Thank you for using the ClothesMate!" + vend_reply = "Спасибо за использование ClothesMate!" products = list(/obj/item/clothing/head/that = 2, /obj/item/clothing/head/fedora = 1, /obj/item/clothing/glasses/monocle = 1, @@ -2652,9 +3209,27 @@ /obj/machinery/vending/artvend name = "\improper ArtVend" - desc = "A vending machine for art supplies." - slogan_list = list("Stop by for all your artistic needs!","Color the floors with crayons, not blood!","Don't be a starving artist, use ArtVend. ","Don't fart, do art!") - ads_list = list("Just like Kindergarten!","Now with 1000% more vibrant colors!","Screwing with the janitor was never so easy!","Creativity is at the heart of every spessman.") + ru_names = list( + NOMINATIVE = "торговый автомат ArtVend", + GENITIVE = "торгового автомата ArtVend", + DATIVE = "торговому автомату ArtVend", + ACCUSATIVE = "торговый автомат ArtVend", + INSTRUMENTAL = "торговым автоматом ArtVend", + PREPOSITIONAL = "торговом автомате ArtVend" + ) + desc = "Торговый автомат для всех ваших художественных нужд." + slogan_list = list( + "Забирайте свои прикольные вещички!" + ,"Раскрасьте пол цветными карандашами, а не кровью!", + "Не будь голодающим творцом, используй ArtVend.", + "Не сри, твори!" + ) + ads_list = list( + "Прямо как в детском саду!", + "Теперь на 1000% больше ярких цветов!", + "Поиметь уборщика еще никогда не было так просто!", + "Креативность лежит в основе каждого специалиста!" + ) vend_delay = 15 icon_state = "artvend_off" @@ -2712,9 +3287,30 @@ /obj/machinery/vending/crittercare name = "\improper CritterCare" - desc = "A vending machine for pet supplies." - slogan_list = list("Stop by for all your animal's needs!","Cuddly pets deserve a stylish collar!","Pets in space, what could be more adorable?","Freshest fish eggs in the system!","Rocks are the perfect pet, buy one today!") - ads_list = list("House-training costs extra!","Now with 1000% more cat hair!","Allergies are a sign of weakness!","Dogs are man's best friend. Remember that Vulpkanin!"," Heat lamps for Unathi!"," Vox-y want a cracker?") + ru_names = list( + NOMINATIVE = "торговый автомат CritterCare", + GENITIVE = "торгового автомата CritterCare", + DATIVE = "торговому автомату CritterCare", + ACCUSATIVE = "торговый автомат CritterCare", + INSTRUMENTAL = "торговым автоматом CritterCare", + PREPOSITIONAL = "торговом автомате CritterCare" + ) + desc = "Торговый автомат по продаже зоотоваров." + slogan_list = list( + "Здесь всё, чтобы ваш питомец был всем доволен!", + "Крутые питомцы заслуживают крутой ошейник!", + "Домашние животные в космосе - что может быть очаровательнее?", + "Самая свежая икра в системе!", + "Камни - лучшие питомцы, купите себе их уже сегодня!" + ) + ads_list = list( + "Дрессировка на дому оплачивается дополнительно!", + "Теперь на 1000% больше кошачьей шерсти!", + "Аллергия - признак слабости!", + "Собаки - лучшие друзья человека. Помни об этом, вульпа!", + "Нагревательные лампы для Унатхов!", + "Вокс хочет крекер?" + ) vend_delay = 15 icon_state = "crittercare_off" @@ -2773,6 +3369,14 @@ /obj/machinery/vending/clothing/departament name = "\improper Broken Departament ClothesMate" + ru_names = list( + NOMINATIVE = "торговый автомат Broken Departament ClothesMate", + GENITIVE = "торгового автомата Broken Departament ClothesMate", + DATIVE = "торговому автомату Broken Departament ClothesMate", + ACCUSATIVE = "торговый автомат Broken Departament ClothesMate", + INSTRUMENTAL = "торговым автоматом Broken Departament ClothesMate", + PREPOSITIONAL = "торговом автомате Broken Departament ClothesMate" + ) desc = "Автомат-помощник по выдаче одежды отдела." slogan_list = list( "Одежда успешного работника!", "Похвала на глаза!", "Ну наконец-то нормально оделся!", @@ -2795,6 +3399,14 @@ /obj/machinery/vending/clothing/departament/security name = "\improper Departament Security ClothesMate" + ru_names = list( + NOMINATIVE = "торговый автомат Departament Security ClothesMate", + GENITIVE = "торгового автомата Departament Security ClothesMate", + DATIVE = "торговому автомату Departament Security ClothesMate", + ACCUSATIVE = "торговый автомат Departament Security ClothesMate", + INSTRUMENTAL = "торговым автоматом Departament Security ClothesMate", + PREPOSITIONAL = "торговом автомате Departament Security ClothesMate" + ) desc = "Автомат-помощник по выдаче одежды Отдела Службы Безопасности." icon_state = "clothes-dep-sec_off" @@ -2874,6 +3486,14 @@ /obj/machinery/vending/clothing/departament/medical name = "\improper Departament Medical ClothesMate" + ru_names = list( + NOMINATIVE = "торговый автомат Departament Medical ClothesMate", + GENITIVE = "торгового автомата Departament Medical ClothesMate", + DATIVE = "торговому автомату Departament Medical ClothesMate", + ACCUSATIVE = "торговый автомат Departament Medical ClothesMate", + INSTRUMENTAL = "торговым автоматом Departament Medical ClothesMate", + PREPOSITIONAL = "торговом автомате Departament Medical ClothesMate" + ) desc = "Автомат-помощник по выдаче одежды Медицинского Отдела." icon_state = "clothes-dep-med_off" @@ -2974,6 +3594,14 @@ /obj/machinery/vending/clothing/departament/engineering name = "\improper Departament Engineering ClothesMate" + ru_names = list( + NOMINATIVE = "торговый автомат Departament Engineering ClothesMat", + GENITIVE = "торгового автомата Departament Engineering ClothesMat", + DATIVE = "торговому автомату Departament Engineering ClothesMat", + ACCUSATIVE = "торговый автомат Departament Engineering ClothesMat", + INSTRUMENTAL = "торговым автоматом Departament Engineering ClothesMat", + PREPOSITIONAL = "торговом автомате Departament Engineering ClothesMat" + ) desc = "Автомат-помощник по выдаче одежды Инженерного Отдела." icon_state = "clothes-dep-eng_off" @@ -3033,6 +3661,14 @@ /obj/machinery/vending/clothing/departament/science name = "\improper Departament Science ClothesMate" + ru_names = list( + NOMINATIVE = "торговый автомат Departament Science ClothesMate", + GENITIVE = "торгового автомата Departament Science ClothesMate", + DATIVE = "торговому автомату Departament Science ClothesMate", + ACCUSATIVE = "торговый автомат Departament Science ClothesMate", + INSTRUMENTAL = "торговым автоматом Departament Science ClothesMate", + PREPOSITIONAL = "торговом автомате Departament Science ClothesMate" + ) desc = "Автомат-помощник по выдаче одежды Научного Отдела." icon_state = "clothes-dep-sci_off" @@ -3088,6 +3724,14 @@ /obj/machinery/vending/clothing/departament/cargo name = "\improper Departament Cargo ClothesMate" + ru_names = list( + NOMINATIVE = "торговый автомат Departament Cargo ClothesMate", + GENITIVE = "торгового автомата Departament Cargo ClothesMate", + DATIVE = "торговому автомату Departament Cargo ClothesMate", + ACCUSATIVE = "торговый автомат Departament Cargo ClothesMate", + INSTRUMENTAL = "торговым автоматом Departament Cargo ClothesMate", + PREPOSITIONAL = "торговом автомате Departament Cargo ClothesMate" + ) desc = "Автомат-помощник по выдаче одежды Отдела Поставок." icon_state = "clothes-dep-car_off" @@ -3146,6 +3790,14 @@ /obj/machinery/vending/clothing/departament/law name = "\improper Departament Law ClothesMate" + ru_names = list( + NOMINATIVE = "торговый автомат Departament Law ClothesMate", + GENITIVE = "торгового автомата Departament Law ClothesMate", + DATIVE = "торговому автомату Departament Law ClothesMate", + ACCUSATIVE = "торговый автомат Departament Law ClothesMate", + INSTRUMENTAL = "торговым автоматом Departament Law ClothesMate", + PREPOSITIONAL = "торговом автомате Departament Law ClothesMate" + ) desc = "Автомат-помощник по выдаче одежды Юридического Отдела." icon_state = "clothes-dep-sec_off" @@ -3205,6 +3857,14 @@ /obj/machinery/vending/clothing/departament/service name = "\improper Departament Service ClothesMate" + ru_names = list( + NOMINATIVE = "торговый автомат Departament Service ClothesMate", + GENITIVE = "торгового автомата Departament Service ClothesMate", + DATIVE = "торговому автомату Departament Service ClothesMate", + ACCUSATIVE = "торговый автомат Departament Service ClothesMate", + INSTRUMENTAL = "торговым автоматом Departament Service ClothesMate", + PREPOSITIONAL = "торговом автомате Departament Service ClothesMate" + ) desc = "Автомат-помощник по выдаче одежды Сервисного отдела." req_access = list() products = list() @@ -3212,6 +3872,14 @@ /obj/machinery/vending/clothing/departament/service/chaplain name = "\improper Departament Service ClothesMate Chaplain" + ru_names = list( + NOMINATIVE = "торговый автомат Departament Service ClothesMate Chaplain", + GENITIVE = "торгового автомата Departament Service ClothesMate Chaplain", + DATIVE = "торговому автомату Departament Service ClothesMate Chaplain", + ACCUSATIVE = "торговый автомат Departament Service ClothesMate Chaplain", + INSTRUMENTAL = "торговым автоматом Departament Service ClothesMate Chaplain", + PREPOSITIONAL = "торговом автомате Departament Service ClothesMate Chaplain" + ) desc = "Автомат-помощник по выдаче одежды Сервисного отдела церкви." icon_state = "clothes-dep-car_off" @@ -3249,6 +3917,14 @@ /obj/machinery/vending/clothing/departament/service/botanical name = "\improper Departament Service ClothesMate Botanical" + ru_names = list( + NOMINATIVE = "торговый автомат Departament Service ClothesMate Botanical", + GENITIVE = "торгового автомата Departament Service ClothesMate Botanical", + DATIVE = "торговому автомату Departament Service ClothesMate Botanical", + ACCUSATIVE = "торговый автомат Departament Service ClothesMate Botanical", + INSTRUMENTAL = "торговым автоматом Departament Service ClothesMate Botanical", + PREPOSITIONAL = "торговом автомате Departament Service ClothesMate Botanical" + ) desc = "Автомат-помощник по выдаче одежды Сервисного отдела ботаники." req_access = list(ACCESS_HYDROPONICS) products = list( @@ -3276,8 +3952,22 @@ /obj/machinery/vending/nta name = "NT Ammunition" - desc = "A special equipment vendor." - ads_list = list("Возьми патрон!","Не забывай, снаряжаться - полезно!","Бжж-Бзз-з!.","Обезопасить, Удержать, Сохранить!","Стоять, снярядись на задание!") + ru_names = list( + NOMINATIVE = "торговый автомат NT Ammunition", + GENITIVE = "торгового автомата NT Ammunition", + DATIVE = "торговому автомату NT Ammunition", + ACCUSATIVE = "торговый автомат NT Ammunition", + INSTRUMENTAL = "торговым автоматом NT Ammunition", + PREPOSITIONAL = "торговом автомате NT Ammunition" + ) + desc = "Автомат-помощник по выдаче специального снаряжения." + ads_list = list( + "Возьми патрон!", + "Не забывай, снаряжаться - полезно!", + "Бжж-Бзз-з!", + "Обезопасить, Удержать, Сохранить!", + "Стоять, снярядись на задание!" + ) icon_state = "nta_base" panel_overlay = "nta_panel" @@ -3355,8 +4045,22 @@ /obj/machinery/vending/nta/ertarmory/blue name = "NT ERT Medium Gear & Ammunition" - desc = "A ERT Medium equipment vendor." - ads_list = list("Круши черепа синдиката!","Не забывай, спасать - полезно!","Бжж-Бзз-з!.","Обезопасить, Удержать, Сохранить!","Стоять, снярядись на задание!") + ru_names = list( + NOMINATIVE = "торговый автомат NT ERT Medium Gear & Ammunition", + GENITIVE = "торгового автомата NT ERT Medium Gear & Ammunition", + DATIVE = "торговому автомату NT ERT Medium Gear & Ammunition", + ACCUSATIVE = "торговый автомат NT ERT Medium Gear & Ammunition", + INSTRUMENTAL = "торговым автоматом NT ERT Medium Gear & Ammunition", + PREPOSITIONAL = "торговом автомате NT ERT Medium Gear & Ammunition" + ) + desc = "Автомат-помощник по выдаче снаряжения среднего класса." + ads_list = list( + "Круши черепа синдиката!", + "Не забывай, спасать - полезно!", + "Бжж-Бзз-з!", + "Обезопасить, Удержать, Сохранить!", + "Стоять, снярядись на задание!" + ) icon_state = "nta_base" base_icon_state = "nta-blue" @@ -3383,8 +4087,22 @@ /obj/machinery/vending/nta/ertarmory/red name = "NT ERT Heavy Gear & Ammunition" - desc = "A ERT Heavy equipment vendor." - ads_list = list("Круши черепа синдиката!","Не забывай, спасать - полезно!","Бжж-Бзз-з!.","Обезопасить, Удержать, Сохранить!","Стоять, снярядись на задание!") + ru_names = list( + NOMINATIVE = "торговый автомат NT ERT Heavy Gear & Ammunition", + GENITIVE = "торгового автомата NT ERT Heavy Gear & Ammunition", + DATIVE = "торговому автомату NT ERT Heavy Gear & Ammunition", + ACCUSATIVE = "торговый автомат NT ERT Heavy Gear & Ammunition", + INSTRUMENTAL = "торговым автоматом NT ERT Heavy Gear & Ammunition", + PREPOSITIONAL = "торговом автомате NT ERT Heavy Gear & Ammunition" + ) + desc = "Автомат-помощник по выдаче снаряжения тяжелого класса." + ads_list = list( + "Круши черепа синдиката!", + "Не забывай, спасать - полезно!", + "Бжж-Бзз-з!", + "Обезопасить, Удержать, Сохранить!", + "Стоять, снярядись на задание!" + ) icon_state = "nta_base" base_icon_state = "nta-red" @@ -3411,8 +4129,22 @@ /obj/machinery/vending/nta/ertarmory/green name = "NT ERT Light Gear & Ammunition" - desc = "A ERT Light equipment vendor." - ads_list = list("Круши черепа синдиката!","Не забывай, спасать - полезно!","Бжж-Бзз-з!.","Обезопасить, Удержать, Сохранить!","Стоять, снярядись на задание!") + ru_names = list( + NOMINATIVE = "торговый автомат NT ERT Light Gear & Ammunition", + GENITIVE = "торгового автомата NT ERT Light Gear & Ammunition", + DATIVE = "торговому автомату NT ERT Light Gear & Ammunition", + ACCUSATIVE = "торговый автомат NT ERT Light Gear & Ammunition", + INSTRUMENTAL = "торговым автоматом NT ERT Light Gear & Ammunition", + PREPOSITIONAL = "торговом автомате NT ERT Light Gear & Ammunition" + ) + desc = "Автомат-помощник по выдаче снаряжения легкого класса" + ads_list = list( + "Круши черепа синдиката!", + "Не забывай, спасать - полезно!", + "Бжж-Бзз-з!", + "Обезопасить, Удержать, Сохранить!", + "Стоять, снярядись на задание!" + ) icon_state = "nta_base" base_icon_state = "nta-green" @@ -3443,7 +4175,15 @@ /obj/machinery/vending/nta/ertarmory/green/cc_jail name = "NT CentComm prison guards' Gear & Ammunition" - desc = "An equipment vendor for CentComm corrections officers." + ru_names = list( + NOMINATIVE = "торговый автомат NT CentComm prison guards' Gear & Ammunition", + GENITIVE = "торгового автомата NT CentComm prison guards' Gear & Ammunition", + DATIVE = "торговому автомату NT CentComm prison guards' Gear & Ammunition", + ACCUSATIVE = "торговый автомат NT CentComm prison guards' Gear & Ammunition", + INSTRUMENTAL = "торговым автоматом NT CentComm prison guards' Gear & Ammunition", + PREPOSITIONAL = "торговом автомате NT CentComm prison guards' Gear & Ammunition" + ) + desc = "Автомат с оборудованием для сотрудников CentComm." products = list(/obj/item/restraints/handcuffs=5, /obj/item/restraints/handcuffs/cable/zipties=5, /obj/item/grenade/flashbang=3, @@ -3463,8 +4203,22 @@ /obj/machinery/vending/nta/ertarmory/yellow name = "NT ERT Death Wish Gear & Ammunition" - desc = "A ERT Death Wish equipment vendor." - ads_list = list("Круши черепа ВСЕХ!","Не забывай, УБИВАТЬ - полезно!","УБИВАТЬ УБИВАТЬ УБИВАТЬ УБИВАТЬ!.","УБИВАТЬ, Удержать, УБИВАТЬ!","Стоять, снярядись на УБИВАТЬ!") + ru_names = list( + NOMINATIVE = "торговый автомат NT ERT Death Wish Gear & Ammunition", + GENITIVE = "торгового автомата NT ERT Death Wish Gear & Ammunition", + DATIVE = "торговому автомату NT ERT Death Wish Gear & Ammunition", + ACCUSATIVE = "торговый автомат NT ERT Death Wish Gear & Ammunition", + INSTRUMENTAL = "торговым автоматом NT ERT Death Wish Gear & Ammunition", + PREPOSITIONAL = "торговом автомате NT ERT Death Wish Gear & Ammunition" + ) + desc = "Автомат с оборудованием для ОБР — помогает людям осуществить их желание умереть." + ads_list = list( + "Круши черепа ВСЕХ!", + "Не забывай, УБИВАТЬ - полезно!", + "УБИВАТЬ УБИВАТЬ УБИВАТЬ УБИВАТЬ!.", + "УБИВАТЬ, Удержать, УБИВАТЬ!", + "Стоять, снярядись на УБИВАТЬ!" + ) icon_state = "nta_base" base_icon_state = "nta-yellow" @@ -3490,8 +4244,22 @@ /obj/machinery/vending/nta/ertarmory/medical name = "NT ERT Medical Gear" - desc = "A ERT medical equipment vendor." - ads_list = list("Лечи раненых от рук синдиката!","Не забывай, лечить - полезно!","Бжж-Бзз-з!.","Перевязать, Оперировать, Выписать!","Стоять, снярядись медикаментами на задание!") + ru_names = list( + NOMINATIVE = "торговый автомат NT ERT Medical Gear", + GENITIVE = "торгового автомата NT ERT Medical Gear", + DATIVE = "торговому автомату NT ERT Medical Gear", + ACCUSATIVE = "торговый автомат NT ERT Medical Gear", + INSTRUMENTAL = "торговым автоматом NT ERT Medical Gear", + PREPOSITIONAL = "торговом автомате NT ERT Medical Gear" + ) + desc = "Автомат с медицинским оборудованием ОБР." + ads_list = list( + "Лечи раненых от рук синдиката!", + "Не забывай, лечить - полезно!", + "Бжж-Бзз-з!", + "Перевязать, Оперировать, Выписать!", + "Стоять, снярядись медикаментами на задание!" + ) icon_state = "nta_base" base_icon_state = "nta-medical" @@ -3527,8 +4295,22 @@ /obj/machinery/vending/nta/ertarmory/engineer name = "NT ERT Engineer Gear" - desc = "A ERT engineering equipment vendor." - ads_list = list("Чини станцию от рук синдиката!","Не забывай, чинить - полезно!","Бжж-Бзз-з!.","Починить, Заварить, Трубить!","Стоять, снярядись на починку труб!") + ru_names = list( + NOMINATIVE = "торговый автомат NT ERT Engineer Gear", + GENITIVE = "торгового автомата NT ERT Engineer Gear", + DATIVE = "торговому автомату NT ERT Engineer Gear", + ACCUSATIVE = "торговый автомат NT ERT Engineer Gear", + INSTRUMENTAL = "торговым автоматом NT ERT Engineer Gear", + PREPOSITIONAL = "торговом автомате NT ERT Engineer Gear" + ) + desc = "Автомат с инженерным оборудованием ОБР." + ads_list = list( + "Чини станцию от рук синдиката!", + "Не забывай, чинить - полезно!", + "Бжж-Бзз-з!", + "Починить, Заварить, Трубить!", + "Стоять, снярядись на починку труб!" + ) icon_state = "nta_base" base_icon_state = "nta-engi" @@ -3557,8 +4339,22 @@ /obj/machinery/vending/nta/ertarmory/janitor name = "NT ERT Janitor Gear" - desc = "A ERT ccleaning equipment vendor." - ads_list = list("Чисть станцию от рук синдиката!","Не забывай, чистить - полезно!","Вилкой чисти!.","Помыть, Постирать, Оттереть!","Стоять, снярядись клинерами!") + ru_names = list( + NOMINATIVE = "торговый автомат NT ERT Janitor Gear", + GENITIVE = "торгового автомата NT ERT Janitor Gear", + DATIVE = "торговому автомату NT ERT Janitor Gear", + ACCUSATIVE = "торговый автомат NT ERT Janitor Gear", + INSTRUMENTAL = "торговым автоматом NT ERT Janitor Gear", + PREPOSITIONAL = "торговом автомате NT ERT Janitor Gear" + ) + desc = "Автомат с уборочным оборудованием ОБР." + ads_list = list( + "Чисть станцию от рук синдиката!", + "Не забывай, чистить - полезно!", + "Вилкой чисти!", + "Помыть, Постирать, Оттереть!", + "Стоять, снярядись клинерами!" + ) icon_state = "nta_base" base_icon_state = "nta-janitor" @@ -3585,7 +4381,15 @@ /obj/machinery/vending/pai name = "\improper RoboFriends" - desc = "Wonderful vendor of PAI friends" + ru_names = list( + NOMINATIVE = "торговый автомат RoboFriends", + GENITIVE = "торгового автомата RoboFriends", + DATIVE = "торговому автомату RoboFriends", + ACCUSATIVE = "торговый автомат RoboFriends", + INSTRUMENTAL = "торговым автоматом RoboFriends", + PREPOSITIONAL = "торговом автомате RoboFriends" + ) + desc = "Потрясающий продавец ПИИ-друзей!" icon_state = "paivend_off" panel_overlay = "paivend_panel" @@ -3594,7 +4398,13 @@ broken_overlay = "paivend_broken" broken_lightmask_overlay = "paivend_broken_lightmask" - ads_list = list("А вы любите нас?","Мы твои друзья!","Эта покупка войдет в историю","Я ПАИ простой, купишь меня, а я тебе друга!","Спасибо за покупку.") + ads_list = list( + "А вы любите нас?", + "Мы твои друзья!", + "Эта покупка войдет в историю", + "Я ПИИ простой, купишь меня, а я тебе друга!", + "Спасибо за покупку." + ) resistance_flags = FIRE_PROOF products = list( /obj/item/paicard = 10, @@ -3624,7 +4434,15 @@ /obj/machinery/vending/security/ert name = "NT ERT Consumables Gear" - desc = "A consumable equipment for different situations." + ru_names = list( + NOMINATIVE = "торговый автомат NT ERT Consumables Gear", + GENITIVE = "торгового автомата NT ERT Consumables Gear", + DATIVE = "торговому автомату NT ERT Consumables Gear", + ACCUSATIVE = "торговый автомат NT ERT Consumables Gear", + INSTRUMENTAL = "торговым автоматом NT ERT Consumables Gear", + PREPOSITIONAL = "торговом автомате NT ERT Consumables Gear" + ) + desc = "Расходное оборудование для различных ситуаций." resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF | FREEZE_PROOF refill_canister = /obj/item/vending_refill/nta @@ -3697,7 +4515,15 @@ /obj/machinery/vending/ntc/medal name = "NT Cargo Encouragement" - desc = "A encourage vendor with many of medal types." + ru_names = list( + NOMINATIVE = "торговый автомат NT Cargo Encouragement", + GENITIVE = "торгового автомата NT Cargo Encouragement", + DATIVE = "торговому автомату NT Cargo Encouragement", + ACCUSATIVE = "торговый автомат NT Cargo Encouragement", + INSTRUMENTAL = "торговым автоматом NT Cargo Encouragement", + PREPOSITIONAL = "торговом автомате NT Cargo Encouragement" + ) + desc = "Тяжелый кейс с медалями на любой вкус и цвет." icon = 'icons/obj/storage.dmi' icon_state = "medalbox" products = list( @@ -3717,7 +4543,15 @@ /obj/machinery/vending/ntc/medical name = "NT Cargo Medical Gear" - desc = "A some medical equipment vendor for cargo." + ru_names = list( + NOMINATIVE = "торговый автомат NT Cargo Medical Gear", + GENITIVE = "торгового автомата NT Cargo Medical Gear", + DATIVE = "торговому автомату NT Cargo Medical Gear", + ACCUSATIVE = "торговый автомат NT Cargo Medical Gear", + INSTRUMENTAL = "торговым автоматом NT Cargo Medical Gear", + PREPOSITIONAL = "торговом автомате NT Cargo Medical Gear" + ) + desc = "Различное медицинское оборудование для доставки." icon_state = "nta_base" base_icon_state = "nta-medical" @@ -3738,7 +4572,15 @@ /obj/machinery/vending/ntc/engineering name = "NT Cargo Engineering Gear" - desc = "A some engineering equipment vendor for cargo." + ru_names = list( + NOMINATIVE = "торговый автомат NT Cargo Engineering Gear", + GENITIVE = "торгового автомата NT Cargo Engineering Gear", + DATIVE = "торговому автомату NT Cargo Engineering Gear", + ACCUSATIVE = "торговый автомат NT Cargo Engineering Gear", + INSTRUMENTAL = "торговым автоматом NT Cargo Engineering Gear", + PREPOSITIONAL = "торговом автомате NT Cargo Engineering Gear" + ) + desc = "Различное инженерное оборудование для доставки." icon_state = "nta_base" base_icon_state = "nta-engi" @@ -3758,7 +4600,15 @@ /obj/machinery/vending/ntc/janitor name = "NT Cargo Janitor Gear" - desc = "A some janitor equipment vendor for cargo." + ru_names = list( + NOMINATIVE = "торговый автомат NT Cargo Janitor Gear", + GENITIVE = "торгового автомата NT Cargo Janitor Gear", + DATIVE = "торговому автомату NT Cargo Janitor Gear", + ACCUSATIVE = "торговый автомат NT Cargo Janitor Gear", + INSTRUMENTAL = "торговым автоматом NT Cargo Janitor Gear", + PREPOSITIONAL = "торговом автомате NT Cargo Janitor Gear" + ) + desc = "Различное уборочное оборудование для доставки." icon_state = "nta_base" base_icon_state = "nta-janitor" @@ -3783,7 +4633,15 @@ /obj/machinery/vending/ntcrates name = "NT Cargo Preset Gear" - desc = "A already preset of equipments vendor for cargo." + ru_names = list( + NOMINATIVE = "торговый автомат NT Cargo Preset Gear", + GENITIVE = "торгового автомата NT Cargo Preset Gear", + DATIVE = "торговому автомату NT Cargo Preset Gear", + ACCUSATIVE = "торговый автомат NT Cargo Preset Gear", + INSTRUMENTAL = "торговым автоматом NT Cargo Preset Gear", + PREPOSITIONAL = "торговом автомате NT Cargo Preset Gear" + ) + desc = "Предварительный комплект оборудования для доставки, на все случаи жизни." resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF | FREEZE_PROOF refill_canister = /obj/item/vending_refill/nta @@ -3809,7 +4667,15 @@ /obj/machinery/vending/ntc/ert name = "NT Response Team Base Gear" - desc = "A ERT Base equipment vendor" + ru_names = list( + NOMINATIVE = "торговый автомат NT Response Team Base Gear", + GENITIVE = "торгового автомата NT Response Team Base Gear", + DATIVE = "торговому автомату NT Response Team Base Gear", + ACCUSATIVE = "торговый автомат NT Response Team Base Gear", + INSTRUMENTAL = "торговым автоматом NT Response Team Base Gear", + PREPOSITIONAL = "торговом автомате NT Response Team Base Gear" + ) + desc = "Автомат с базовым оборудованием ОБР" icon_state = "nta_base" base_icon_state = "nta-blue" @@ -3830,7 +4696,15 @@ /obj/machinery/vending/ntc_resources name = "NT Matter Сompression Vendor" - desc = "Its vendor use advanced technology of matter compression and can have a many volume of resources." + ru_names = list( + NOMINATIVE = "торговый автомат NT Matter Сompression Vendor", + GENITIVE = "торгового автомата NT Matter Сompression Vendor", + DATIVE = "торговому автомату NT Matter Сompression Vendor", + ACCUSATIVE = "торговый автомат NT Matter Сompression Vendor", + INSTRUMENTAL = "торговым автоматом NT Matter Сompression Vendor", + PREPOSITIONAL = "торговом автомате NT Matter Сompression Vendor" + ) + desc = "Этот автомат использует передовую технологию сжатия и может хранить в себе большой объем ресурсов." resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF | FREEZE_PROOF refill_canister = /obj/item/vending_refill/nta @@ -3863,7 +4737,15 @@ /obj/machinery/vending/mech/ntc/exousuit name = "NT Exosuit Bluespace Transporter" - desc = "Fabricator with advanced technology of bluespace transporting of resources." + ru_names = list( + NOMINATIVE = "торговый автомат NT Exosuit Bluespace Transporter", + GENITIVE = "торгового автомата NT Exosuit Bluespace Transporter", + DATIVE = "торговому автомату NT Exosuit Bluespace Transporter", + ACCUSATIVE = "торговый автомат NT Exosuit Bluespace Transporter", + INSTRUMENTAL = "торговым автоматом NT Exosuit Bluespace Transporter", + PREPOSITIONAL = "торговом автомате NT Exosuit Bluespace Transporter" + ) + desc = "Фабрикатор с передовой технологией BlueSpace-транспортировки ресурсов." icon = 'icons/obj/machines/robotics.dmi' icon_state = "fab-idle" products = list( @@ -3877,7 +4759,15 @@ /obj/machinery/vending/mech/ntc/equipment name = "NT Exosuit Bluespace Transporter" - desc = "Fabricator with advanced technology of bluespace transporting of resources." + ru_names = list( + NOMINATIVE = "торговый автомат NT Exosuit Bluespace Transporter", + GENITIVE = "торгового автомата NT Exosuit Bluespace Transporter", + DATIVE = "торговому автомату NT Exosuit Bluespace Transporter", + ACCUSATIVE = "торговый автомат NT Exosuit Bluespace Transporter", + INSTRUMENTAL = "торговым автоматом NT Exosuit Bluespace Transporter", + PREPOSITIONAL = "торговом автомате NT Exosuit Bluespace Transporter" + ) + desc = "Фабрикатор с передовой технологией BlueSpace-транспортировки ресурсов." icon_state = "engivend_off" panel_overlay = "engivend_panel" @@ -3897,7 +4787,15 @@ /obj/machinery/vending/mech/ntc/weapon name = "NT Exosuit Bluespace Transporter" - desc = "Fabricator with advanced technology of bluespace transporting of resources." + ru_names = list( + NOMINATIVE = "торговый автомат NT Exosuit Bluespace Transporter", + GENITIVE = "торгового автомата NT Exosuit Bluespace Transporter", + DATIVE = "торговому автомату NT Exosuit Bluespace Transporter", + ACCUSATIVE = "торговый автомат NT Exosuit Bluespace Transporter", + INSTRUMENTAL = "торговым автоматом NT Exosuit Bluespace Transporter", + PREPOSITIONAL = "торговом автомате NT Exosuit Bluespace Transporter" + ) + desc = "Фабрикатор с передовой технологией BlueSpace-транспортировки ресурсов." icon = 'icons/obj/machines/vending.dmi' icon_state = "liberationstation_off" @@ -3923,7 +4821,15 @@ /obj/machinery/vending/mech/ntc/tools name = "NT Exosuit Bluespace Transporter" - desc = "Fabricator with advanced technology of bluespace transporting of resources." + ru_names = list( + NOMINATIVE = "торговый автомат NT Exosuit Bluespace Transporter", + GENITIVE = "торгового автомата NT Exosuit Bluespace Transporter", + DATIVE = "торговому автомату NT Exosuit Bluespace Transporter", + ACCUSATIVE = "торговый автомат NT Exosuit Bluespace Transporter", + INSTRUMENTAL = "торговым автоматом NT Exosuit Bluespace Transporter", + PREPOSITIONAL = "торговом автомате NT Exosuit Bluespace Transporter" + ) + desc = "Фабрикатор с передовой технологией BlueSpace-транспортировки ресурсов." icon_state = "tool_off" panel_overlay = "tool_panel" diff --git a/code/game/objects/effects/decals/Cleanable/misc.dm b/code/game/objects/effects/decals/Cleanable/misc.dm index 82e17d98a83..a288263f7a4 100644 --- a/code/game/objects/effects/decals/Cleanable/misc.dm +++ b/code/game/objects/effects/decals/Cleanable/misc.dm @@ -262,11 +262,22 @@ name = "Ash rune" desc = "A rune drawn in ash." icon = 'icons/effects/ashwalker_rune.dmi' - icon_state = "AshRuneFilled" + icon_state = "AshRuneSmall" anchored = TRUE mergeable_decal = FALSE mouse_opacity = MOUSE_OPACITY_ICON +/obj/effect/decal/cleanable/ashrune/Initialize(mapload) + . = ..() + + update_icon(UPDATE_ICON_STATE) + + pixel_x = -32 + pixel_y = -32 + +/obj/effect/decal/cleanable/ashrune/update_icon_state() + icon_state = "AshRuneFilled" + /obj/effect/decal/cleanable/ashrune/ComponentInitialize() AddComponent( \ /datum/component/ritual_object, \ diff --git a/code/game/objects/effects/spawners/lootdrop.dm b/code/game/objects/effects/spawners/lootdrop.dm index 39d2e954db0..080ac73019f 100644 --- a/code/game/objects/effects/spawners/lootdrop.dm +++ b/code/game/objects/effects/spawners/lootdrop.dm @@ -135,6 +135,7 @@ /obj/item/stack/tape_roll = 10, /obj/item/storage/bag/plasticbag = 20, /obj/item/caution = 10, + /obj/item/clothing/head/helmet/biker = 2, ////////////////CONTRABAND STUFF////////////////// /obj/item/grenade/clown_grenade = 3, /obj/item/seeds/ambrosia/cruciatus = 3, diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index de76cbef570..1eabe08038a 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -202,29 +202,33 @@ GLOBAL_DATUM_INIT(fire_overlay, /mutable_appearance, mutable_appearance('icons/g ///Datum used in item pixel shift TGUI var/datum/ui_module/item_pixel_shift/item_pixel_shift -/obj/item/New() - ..() - for(var/path in actions_types) - if(action_icon && action_icon_state) - new path(src, action_icon[path], action_icon_state[path]) - else - new path(src) - - if(!move_resist) - determine_move_resist() - /obj/item/Initialize(mapload) . = ..() + if(isstorage(loc)) //marks all items in storage as being such item_flags |= IN_STORAGE + if(!hitsound) if(damtype == "fire") hitsound = 'sound/items/welder.ogg' + if(damtype == "brute") hitsound = "swing_hit" + + for(var/path in actions_types) + if(action_icon && action_icon_state) + new path(src, action_icon[path], action_icon_state[path]) + + else + new path(src) + + if(!move_resist) + determine_move_resist() + add_eatable_component() + /obj/item/proc/add_eatable_component() AddComponent(/datum/component/eatable) diff --git a/code/game/objects/items/devices/camera_bug.dm b/code/game/objects/items/devices/camera_bug.dm index 4fb4454d9fe..16791d10f87 100644 --- a/code/game/objects/items/devices/camera_bug.dm +++ b/code/game/objects/items/devices/camera_bug.dm @@ -1,7 +1,7 @@ // This item just has an integrated camera console, which the data is "proxied" to /obj/item/camera_bug name = "camera bug" - desc = "For illicit snooping through the camera network." + desc = "Для незаконного слежения через сеть камер наблюдения." icon = 'icons/obj/device.dmi' icon_state = "camera_bug" w_class = WEIGHT_CLASS_TINY @@ -14,7 +14,7 @@ /obj/machinery/computer/security/camera_bug name = "invasive camera utility" - desc = "How did this get here?! Please report this as a bug to github" + desc = "Как это сюда попало?! Пожалуйста, сообщите об этом как об ошибке на github." use_power = NO_POWER_USE /obj/item/camera_bug/Initialize(mapload) @@ -38,7 +38,7 @@ /obj/item/camera_bug/ert name = "ERT Camera Monitor" - desc = "A small handheld device used by ERT commanders to view camera feeds remotely." + desc = "Небольшое портативное устройство, используемое командирами ОБР для удаленного наблюдения." /obj/item/camera_bug/ert/Initialize(mapload) . = ..() diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm index 5df30b280e3..caa2e3e215a 100644 --- a/code/game/objects/items/devices/flashlight.dm +++ b/code/game/objects/items/devices/flashlight.dm @@ -132,6 +132,13 @@ light_range = 5 // A little better than the standard flashlight. hitsound = 'sound/weapons/genhit1.ogg' +/obj/item/flashlight/sectaclight + name = "security tactical flashlight" + desc = "Прочный тактический фонарь, оборудованный для комфортного ношения на голове. Используется представителями службы безопасности." + icon_state = "sectaclight" + item_state = "" + slot_flags = ITEM_SLOT_EARS + /obj/item/flashlight/drone name = "low-power flashlight" desc = "A miniature lamp, that might be used by small robots." diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 7a9a239076a..d1eb98f258b 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -268,6 +268,7 @@ GLOBAL_LIST_INIT(cloth_recipes, list( new /datum/stack_recipe("White jumpsuit", /obj/item/clothing/under/color/white, 3), new /datum/stack_recipe("White scarf", /obj/item/clothing/accessory/scarf/white), new /datum/stack_recipe("White shoes", /obj/item/clothing/shoes/white, 2), + new /datum/stack_recipe("White footwraps", /obj/item/clothing/shoes/footwraps, 2), new /datum/stack_recipe("White softcap", /obj/item/clothing/head/soft/mime, 2), null, new /datum/stack_recipe("Backpack", /obj/item/storage/backpack, 4), diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index 92c9946c34a..7adedbe8dca 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -846,31 +846,42 @@ var/tired = 0 COOLDOWN_DECLARE(cooldown) -/obj/item/toy/plushie/rdplushie/attack_self(mob/user) - . = ..() - - if(. || !COOLDOWN_FINISHED(src, cooldown)) - return . +/obj/item/toy/plushie/rdplushie/proc/interaction() + if(!COOLDOWN_FINISHED(src, cooldown)) + return FALSE var/message if(tired < 100) tired++ - playsound(user, 'sound/items/greetings-emote.ogg', 30, TRUE) + playsound(loc, 'sound/items/greetings-emote.ogg', 30, TRUE) message = pick("Слава науке!", "Сделаем пару роботов?!", "Я будто на слаймовой батарейке! Ха!","Обожааааю слаймов! Блеп!", "Я запрограммировала роботов звать меня мамой!", "Знаешь анекдот про ядро ИИ, смазку и гуся?") else update_appearance(UPDATE_DESC|UPDATE_ICON_STATE) - playsound(user, 'sound/items/shyness-emote.ogg', 30, TRUE) + playsound(loc, 'sound/items/shyness-emote.ogg', 30, TRUE) message = pick("Твой мозг стоило бы поместить в машину...", "Чёрт, дела хуже некуда...", "Толпятся перед стойкой, будто насекомые...", "Мне нужно добавить лишь один закон, чтобы все закончилось..", "Ты думаешь, что умный, пользователь. Но ты предсказуем. Я знаю каждый твой шаг еще до того, как ты о нем подумаешь.", "Полигон не единственное место куда можно отправить бомбу...", "Выдави из себя что-то кроме \"УВЫ\", ничтожество...") - user.visible_message(span_notice(message)) + visible_message(span_notice(message)) COOLDOWN_START(src, cooldown, 3 SECONDS) +/obj/item/toy/plushie/rdplushie/attack_self(mob/user) + . = ..() + + interaction() + +/obj/item/toy/plushie/rdplushie/afterattack(atom/target, mob/user, proximity, flag, params) + . = ..() + + if(!proximity || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED)) + return + + interaction() + /obj/item/toy/plushie/rdplushie/update_icon_state() . = ..() diff --git a/code/game/objects/items/weapons/storage/backpack.dm b/code/game/objects/items/weapons/storage/backpack.dm index a248a8cad79..9085b6dbe40 100644 --- a/code/game/objects/items/weapons/storage/backpack.dm +++ b/code/game/objects/items/weapons/storage/backpack.dm @@ -264,6 +264,48 @@ icon_state = "blueshieldpack" item_state = "blueshieldpack" +/obj/item/storage/backpack/justice + name = "backpack of justice" + desc = "Крепкий рюкзак выданный специально для самых крепких офицеров." + icon_state = "backpack_justice0" + item_state = "backpack_justice0" + actions_types = list(/datum/action/item_action/toggle_backpack_light) + var/on = FALSE + var/datum/looping_sound/ambulance_alarm/justice/soundloop + +/obj/item/storage/backpack/justice/attack_self() + toggle_backpack_light() + +/obj/item/storage/backpack/justice/Initialize(mapload) + . = ..() + soundloop = new(list(src)) + +/obj/item/storage/backpack/justice/Destroy(force) + QDEL_NULL(soundloop) + return ..() + +/obj/item/storage/backpack/justice/proc/toggle_backpack_light() + on = !on + + if(on) + turn_on() + else + turn_off() + + update_icon(UPDATE_ICON_STATE) + +/obj/item/storage/backpack/justice/update_icon_state() + icon_state = "backpack_justice[on]" + item_state = "backpack_justice[on]" + update_equipped_item(update_speedmods = FALSE) + +/obj/item/storage/backpack/justice/proc/turn_on() + soundloop.start() + +/obj/item/storage/backpack/justice/proc/turn_off() + soundloop.stop() + + /* * Syndicate backpacks. Sprites by ElGood */ diff --git a/code/game/objects/items/weapons/twohanded.dm b/code/game/objects/items/weapons/twohanded.dm index 9c6eb1c2b7b..85a4c2e9fa4 100644 --- a/code/game/objects/items/weapons/twohanded.dm +++ b/code/game/objects/items/weapons/twohanded.dm @@ -664,37 +664,49 @@ icon_state = "mjollnir[HAS_TRAIT(src, TRAIT_WIELDED)]" -/obj/item/twohanded/singularityhammer/proc/vortex(turf/pull, mob/wielder) - for(var/atom/movable/X in orange(5, pull)) - if(X == wielder) - continue - if((X) && (!X.anchored) && (!ishuman(X))) - step_towards(X, pull) - step_towards(X, pull) - step_towards(X, pull) - else if(ishuman(X)) - var/mob/living/carbon/human/H = X - if(istype(H.shoes, /obj/item/clothing/shoes/magboots)) - var/obj/item/clothing/shoes/magboots/M = H.shoes - if(M.magpulse) - continue - H.Weaken(2 SECONDS) - step_towards(H, pull) - step_towards(H, pull) - step_towards(H, pull) - /obj/item/twohanded/singularityhammer/afterattack(atom/A, mob/user, proximity, params) - if(!proximity) + if(!proximity || charged < 5 || !HAS_TRAIT(src, TRAIT_WIELDED)) return - if(HAS_TRAIT(src, TRAIT_WIELDED)) - if(charged == 5) - charged = 0 - if(isliving(A)) - var/mob/living/Z = A - Z.take_organ_damage(20, 0) - playsound(user, 'sound/weapons/marauder.ogg', 50, 1) - var/turf/target = get_turf(A) - vortex(target, user) + + charged = 0 + var/turf/target = get_turf(A) + playsound(target, 'sound/weapons/marauder.ogg', 50, TRUE) + + if(isliving(A)) + var/mob/living/victim = A + victim.take_organ_damage(20) + + for(var/atom/pulled_thing as anything in (orange(5, target) - user)) + pulled_thing.singularity_hammer_act(target) + + +/atom/proc/singularity_hammer_act(turf/pull) + return + + +/atom/movable/singularity_hammer_act(turf/pull) + if(anchored) + return + + unbuckle_all_mobs() + + for(var/a in 1 to 3) + if(!step_towards(src, pull)) + return + + +/mob/dead/observer/singularity_hammer_act(turf/pull) + return + + +/mob/living/singularity_hammer_act(turf/pull) + if(HAS_TRAIT(src, TRAIT_NEGATES_GRAVITY)) + return + + buckled?.unbuckle_mob(src) + Weaken(2 SECONDS) + ..() + /obj/item/twohanded/mjollnir name = "Mjolnir" diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm index d9c36e05b3d..f67520c13a8 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -174,6 +174,7 @@ new /obj/item/sensor_device/advanced/command(src) new /obj/item/storage/garmentbag/blueshield(src) new /obj/item/storage/belt/security/webbing(src) + new /obj/item/reagent_containers/spray/cleaner/tactical(src) /obj/structure/closet/secure_closet/ntrep name = "\improper Nanotrasen Representative's locker" diff --git a/code/game/objects/structures/signs.dm b/code/game/objects/structures/signs.dm index f3836a1beb4..e39c59128bf 100644 --- a/code/game/objects/structures/signs.dm +++ b/code/game/objects/structures/signs.dm @@ -222,6 +222,11 @@ desc = "A dead and stuffed Diona nymph, mounted on a board." icon_state = "kidanplaque" +/obj/structure/sign/tajarplaque + name = "Tajaran wall plaque" + desc = "A nice tajaran photo, mounted on a board." + icon_state = "tajarplaque" + /obj/structure/sign/mech name = "\improper mech painting" desc = "A painting of a mech" diff --git a/code/game/verbs/suicide.dm b/code/game/verbs/suicide.dm index a7b16651fef..d721c488e8f 100644 --- a/code/game/verbs/suicide.dm +++ b/code/game/verbs/suicide.dm @@ -9,15 +9,15 @@ /mob/living/proc/be_suicidal(forced = FALSE) if(stat == DEAD) - to_chat(src, "You're already dead!") + to_chat(src, "Вы уже мертвы!") return if(!SSticker) - to_chat(src, "You can't commit suicide before the game starts!") + to_chat(src, "Вы не можете покончить с собой до начала игры!") return if(suiciding) - to_chat(src, "You're already committing suicide! Be patient!") + to_chat(src, "Вы уже совершаете самоубийство! Наберитесь терпения!") return @@ -26,18 +26,18 @@ if(ischangeling(src)) // the alternative is to allow clings to commit suicide, but then you'd probably have them // killing themselves as soon as they're in cuffs - to_chat(src, span_warning("We refuse to take the coward's way out.")) + to_chat(src, span_warning("Мы не пойдем по лёгкому пути.")) return - confirm = tgui_alert(src, "Are you sure you want to commit suicide?", "Confirm Suicide", list("Yes", "No")) + confirm = tgui_alert(src, "Вы уверены, что хотите покончить с собой?", "Подтвердить самоубийство", list("Да", "Нет")) if(stat == DEAD || suiciding) //We check again, because alerts sleep until a choice is made - to_chat(src, "You're already dead!") + to_chat(src, "Вы уже мертвы!") return - if(forced || (confirm == "Yes")) + if(forced || (confirm == "Да")) if(!forced && isAntag(src)) - confirm = tgui_alert(src, "Are you absolutely sure? If you do this after you got converted/joined as an antagonist, you could face a jobban!", "Confirm Suicide", list("Yes", "No")) - if(confirm == "Yes") + confirm = tgui_alert(src, "Вы абсолютно уверены в этом? Беспричинные самоубийства, а так же самоубийства после задержания или получения роли антагониста могут караться баном!", "Подтвердить самоубийство", list("Да", "Нет")) + if(confirm == "Да") suiciding = TRUE do_suicide() add_attack_logs(src, src, "Attempted suicide as special role") @@ -58,7 +58,7 @@ /mob/living/simple_animal/mouse/do_suicide() - visible_message(span_danger("[src] is playing dead permanently! It looks like [p_theyre()] trying to commit suicide.")) + visible_message(span_danger("[src] бешено мечется! Уровень сыра упал до критической отметки, и [genderize_ru(gender, "он", "она", "оно", "они")] покинул[genderize_ru(gender, "", "а", "о", "и")] наш мир.")) adjustOxyLoss(max(100 - getBruteLoss(100), 0)) @@ -73,7 +73,7 @@ /mob/living/silicon/do_suicide() - to_chat(viewers(src), span_danger("[src] is powering down. It looks like [p_theyre()] trying to commit suicide.")) + to_chat(viewers(src), span_danger("[src] отключа[pluralize_ru(gender, "ет", "ют")] питание. Это похоже на попытку суицида.")) //put em at -175 adjustOxyLoss(max(maxHealth * 2 - getToxLoss() - getFireLoss() - getBruteLoss() - getOxyLoss(), 0)) @@ -99,14 +99,14 @@ /mob/living/carbon/brain/do_suicide() - to_chat(viewers(loc), span_danger("[src]'s brain is growing dull and lifeless. It looks like it's lost the will to live.")) + to_chat(viewers(loc), span_danger("Мозг [src] становится тусклым и безжизненным. Похоже, [genderize_ru(gender, "он", "она", "оно", "они")] потерял[genderize_ru(gender, "", "а", "о", "и")] волю к жизни.")) spawn(5 SECONDS) death(gibbed = FALSE) suiciding = FALSE /mob/living/carbon/alien/humanoid/do_suicide() - to_chat(viewers(src), span_danger("[src] is thrashing wildly! It looks like [p_theyre()] trying to commit suicide.")) + to_chat(viewers(src), span_danger("[src] [pluralize_ru(gender, "бьётся", "бьются")] в конвульсиях! Это похоже на попытку суицида.")) //put em at -175 adjustOxyLoss(max(175 - getFireLoss() - getBruteLoss() - getOxyLoss(), 0)) @@ -139,7 +139,7 @@ human_suicide(damagetype, O) return - to_chat(viewers(src), span_danger("[src] [replacetext(pick(dna.species.suicide_messages), "their", p_their())] It looks like [p_theyre()] trying to commit suicide.")) + to_chat(viewers(src), span_danger("[src] [replacetext(pick(dna.species.suicide_messages), "their", p_their())] Это похоже на попытку суицида.")) human_suicide(0) diff --git a/code/modules/antagonists/borer/borer_datum.dm b/code/modules/antagonists/borer/borer_datum.dm index de9c3e868bb..9d8ac31ed63 100644 --- a/code/modules/antagonists/borer/borer_datum.dm +++ b/code/modules/antagonists/borer/borer_datum.dm @@ -3,16 +3,20 @@ show_in_roundend = FALSE job_rank = ROLE_BORER special_role = SPECIAL_ROLE_BORER - var/mob/living/simple_animal/borer/user // our borer - var/mob/living/carbon/human/host // our host - var/mob/living/carbon/human/previous_host // previous host, used to del transferable effects from previous host. - + var/mob/living/simple_animal/borer/user + var/mob/living/carbon/human/host + /// previous host, used to del transferable effects from previous host. + var/mob/living/carbon/human/previous_host + /// Rank of our borer var/datum/borer_rank/borer_rank - var/list/learned_focuses = list() // what focuses learned borer - var/datum/borer_misc/change_host_and_scale/scaling = new // chemical scaling, gained when acquired unique host - - var/reproductions = 0 // used to upgrade rank - var/evo_points = 0 // used for borer shopping, gained by reproductions + /// Which focuses we have + var/list/learned_focuses = list() + /// chemical scaling, gained when acquired unique host + var/datum/borer_misc/change_host_and_scale/scaling = new + /// used to upgrade rank + var/reproductions = 0 + /// used for borer shopping, gained by reproductions + var/evo_points = 0 var/tick_interval = 1 SECONDS @@ -68,13 +72,6 @@ reproductions++ evo_points++ - if(!borer_rank?.required_reproductions) - return - - if(reproductions < borer_rank.required_reproductions) - return - - reproductions -= borer_rank.required_reproductions update_rank() return @@ -194,16 +191,17 @@ if(QDELING(src)) return -/datum/antagonist/borer/proc/update_rank() - switch(borer_rank.type) - if(BORER_RANK_YOUNG) - borer_rank = new BORER_RANK_MATURE(user) - if(BORER_RANK_MATURE) - borer_rank = new BORER_RANK_ADULT(user) - if(BORER_RANK_ADULT) - borer_rank = new BORER_RANK_ELDER(user) +/datum/antagonist/borer/proc/update_rank() + if(!borer_rank?.required_reproductions || !borer_rank.next_rank_type) + return FALSE + + if(reproductions < borer_rank.required_reproductions) + return FALSE + reproductions -= borer_rank.required_reproductions + borer_rank = new borer_rank.next_rank_type(user) to_chat(user.controlling ? host : user, span_notice("Вы эволюционировали. Ваш текущий ранг - [borer_rank.rankname].")) + return TRUE /datum/borer_misc // category for small datums. diff --git a/code/modules/antagonists/borer/borer_rank.dm b/code/modules/antagonists/borer/borer_rank.dm index ca1dde7becf..2bdc3dad883 100644 --- a/code/modules/antagonists/borer/borer_rank.dm +++ b/code/modules/antagonists/borer/borer_rank.dm @@ -1,8 +1,10 @@ /datum/borer_rank var/rankname = "Error" - var/required_reproductions = null // how many reproductions we need to gain new rank + /// how many reproductions we need to gain new rank + var/required_reproductions var/datum/antagonist/borer/parent var/mob/living/simple_animal/borer/owner + var/next_rank_type /datum/borer_rank/Destroy(force) parent = null @@ -23,14 +25,17 @@ /datum/borer_rank/young rankname = "Young" required_reproductions = REPRODUCTIONS_TO_MATURE + next_rank_type = BORER_RANK_MATURE /datum/borer_rank/mature rankname = "Mature" required_reproductions = REPRODUCTIONS_TO_ADULT + next_rank_type = BORER_RANK_ADULT /datum/borer_rank/adult rankname = "Adult" required_reproductions = REPRODUCTIONS_TO_ELDER + next_rank_type = BORER_RANK_ELDER /datum/borer_rank/elder rankname = "Elder" diff --git a/code/modules/antagonists/borer/borer_spell.dm b/code/modules/antagonists/borer/borer_spell.dm index c987e70370c..d5f8ca41088 100644 --- a/code/modules/antagonists/borer/borer_spell.dm +++ b/code/modules/antagonists/borer/borer_spell.dm @@ -112,8 +112,6 @@ action_icon_state = "god_transmit" need_active_overlay = TRUE - var/evo_cost = 0.3 - /obj/effect/proc_holder/spell/borer_force_say/create_new_targeting() return new /datum/spell_targeting/self @@ -121,10 +119,6 @@ if (user.stat || user.host?.stat) return FALSE - if(user.antag_datum.evo_points < evo_cost) - to_chat(user, "Вам требуется еще [evo_cost - user.antag_datum.evo_points] очков эволюции для подчинения голосовых связок хозяина.") - return FALSE - . = ..() /obj/effect/proc_holder/spell/borer_force_say/cast(list/targets, mob/living/simple_animal/borer/user) @@ -133,10 +127,8 @@ if(!force_say_content) return - if(user.controlling || user.stat || user.host?.stat || user.antag_datum.evo_points < evo_cost) // we really need that double check + if(user.controlling || user.stat || user.host?.stat) // we really need that double check return user.host.say(force_say_content) - user.antag_datum.evo_points -= evo_cost - add_attack_logs(user, user.host, "Forcesaid: [force_say_content]") diff --git a/code/modules/antagonists/malf_ai/malf_ai_datum.dm b/code/modules/antagonists/malf_ai/malf_ai_datum.dm index 80e25b3bd84..f16ed32201f 100644 --- a/code/modules/antagonists/malf_ai/malf_ai_datum.dm +++ b/code/modules/antagonists/malf_ai/malf_ai_datum.dm @@ -2,7 +2,7 @@ name = "Malfunctioning AI" roundend_category = "traitors" job_rank = ROLE_MALF_AI - special_role = SPECIAL_ROLE_TRAITOR + special_role = SPECIAL_ROLE_MALFAI antag_hud_name = "hudsyndicate" antag_hud_type = ANTAG_HUD_TRAITOR /// Should the AI get codewords? diff --git a/code/modules/antagonists/space_ninja/ninja_shuttle.dm b/code/modules/antagonists/space_ninja/ninja_shuttle.dm index 619c97e1d41..6581f3bb5b5 100644 --- a/code/modules/antagonists/space_ninja/ninja_shuttle.dm +++ b/code/modules/antagonists/space_ninja/ninja_shuttle.dm @@ -1,6 +1,6 @@ /obj/machinery/computer/shuttle/ninja name = "Spider Clan \"Ombra\" shuttle console" - desc = "Used to call and send the \"Ombra\" shuttle." + desc = "Используется для вызова и отправки шаттла \"Ombra\"." icon_keyboard = "generic_key" icon_screen = "ninja_shuttle" req_access = list() @@ -13,7 +13,7 @@ /obj/machinery/computer/camera_advanced/shuttle_docker/ninja name = "Spider Clan \"Ombra\" shuttle navigation computer" - desc = "Used to designate a precise transit location for the \"Ombra\" shuttle." + desc = "Используется, чтобы указать точное местоположение для отправки шаттла \"Ombra\"." icon_screen = "ninja_navigation" icon_keyboard = "generic_key" shuttleId = "ombra" diff --git a/code/modules/antagonists/space_ninja/suit/gloves.dm b/code/modules/antagonists/space_ninja/suit/gloves.dm index 5bcba84e211..3665e1ddfe4 100644 --- a/code/modules/antagonists/space_ninja/suit/gloves.dm +++ b/code/modules/antagonists/space_ninja/suit/gloves.dm @@ -22,6 +22,7 @@ heat_protection = HANDS max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT strip_delay = 120 + permeability_coefficient = 1 resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF armor = list("melee" = 40, "bullet" = 30, "laser" = 20,"energy" = 15, "bomb" = 30, "bio" = 30, "rad" = 100, "fire" = 100, "acid" = 100) ///Ниндзя украл ваше бельё ( ͡° ͜ʖ ͡°) diff --git a/code/modules/antagonists/space_ninja/suit/head.dm b/code/modules/antagonists/space_ninja/suit/head.dm index 54a949b3417..38f6e5850d9 100644 --- a/code/modules/antagonists/space_ninja/suit/head.dm +++ b/code/modules/antagonists/space_ninja/suit/head.dm @@ -19,6 +19,7 @@ armor = list("melee" = 40, "bullet" = 30, "laser" = 20,"energy" = 15, "bomb" = 30, "bio" = 30, "rad" = 100, "fire" = 100, "acid" = 100) blockTracking = TRUE //Roughly the only unique thing about this helmet. strip_delay = 12 + permeability_coefficient = 1 resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF /** diff --git a/code/modules/antagonists/space_ninja/suit/mask.dm b/code/modules/antagonists/space_ninja/suit/mask.dm index 968b86ec024..3631dfd312f 100644 --- a/code/modules/antagonists/space_ninja/suit/mask.dm +++ b/code/modules/antagonists/space_ninja/suit/mask.dm @@ -15,6 +15,7 @@ icon_state = "ninja_mask_classic_thermals" item_state = "ninja_mask_classic_thermals" strip_delay = 120 + permeability_coefficient = 1 flags_inv = HIDEHEADSETS|HIDEGLASSES|HIDENAME flags_cover = MASKCOVERSEYES //We don't need to cover mouth clothing_flags = BLOCK_GAS_SMOKE_EFFECT|AIRTIGHT|BLOCK_CAPSAICIN diff --git a/code/modules/antagonists/space_ninja/suit/shoes.dm b/code/modules/antagonists/space_ninja/suit/shoes.dm index 75d1aeda567..fd4b0e55a1a 100644 --- a/code/modules/antagonists/space_ninja/suit/shoes.dm +++ b/code/modules/antagonists/space_ninja/suit/shoes.dm @@ -21,7 +21,7 @@ min_cold_protection_temperature = SHOES_MIN_TEMP_PROTECT heat_protection = FEET max_heat_protection_temperature = SHOES_MAX_TEMP_PROTECT - permeability_coefficient = 0.01 + permeability_coefficient = 1 strip_delay = 120 slowdown = 0 clothing_traits = list(TRAIT_NEGATES_GRAVITY, TRAIT_NO_SLIP_WATER) diff --git a/code/modules/antagonists/space_ninja/suit/suit.dm b/code/modules/antagonists/space_ninja/suit/suit.dm index bef1639f685..5511f7813ee 100644 --- a/code/modules/antagonists/space_ninja/suit/suit.dm +++ b/code/modules/antagonists/space_ninja/suit/suit.dm @@ -21,6 +21,7 @@ resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF armor = list("melee" = 40, "bullet" = 30, "laser" = 20,"energy" = 30, "bomb" = 30, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100) strip_delay = 12 + permeability_coefficient = 1 min_cold_protection_temperature = SPACE_SUIT_MIN_TEMP_PROTECT flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETAIL flags_inv_transparent = HIDEGLOVES|HIDEJUMPSUIT diff --git a/code/modules/antagonists/space_ninja/suit/uniform.dm b/code/modules/antagonists/space_ninja/suit/uniform.dm index 208f1bf6f71..5926b74af21 100644 --- a/code/modules/antagonists/space_ninja/suit/uniform.dm +++ b/code/modules/antagonists/space_ninja/suit/uniform.dm @@ -7,6 +7,7 @@ icon_state = "ninja_under" item_state = "ninja_under" item_color = "ninja_under" + permeability_coefficient = 1 resistance_flags = NONE sensor_mode = SENSOR_OFF //Hey who's this guy on the Spider Clan Shuttle?? random_sensor = FALSE diff --git a/code/modules/antagonists/vampire/vampire_datum.dm b/code/modules/antagonists/vampire/vampire_datum.dm index ab388e1ffa9..362a11ff5cf 100644 --- a/code/modules/antagonists/vampire/vampire_datum.dm +++ b/code/modules/antagonists/vampire/vampire_datum.dm @@ -198,12 +198,13 @@ /datum/antagonist/vampire/proc/handle_bloodsucking(mob/living/carbon/human/target, suck_rate_override) draining = target + var/mob/living/carbon/human/cur = owner.current var/unique_suck_id = target.UID() var/blood = 0 var/blood_volume_warning = 9999 //Blood volume threshold for warnings var/cycle_counter = 0 var/time_per_action - var/vampire_dir = get_dir(owner.current, target) + var/vampire_dir = get_dir(cur, target) var/old_bloodusable = 0 //used to see if we increased our blood usable @@ -213,20 +214,20 @@ else suck_rate_final = suck_rate - if(owner.current.is_muzzled()) - to_chat(owner.current, span_warning("[owner.current.wear_mask] мешает вам укусить [target]!")) + if(cur.is_muzzled()) + to_chat(cur, span_warning("[cur.wear_mask] мешает вам укусить [target]!")) draining = null return - add_attack_logs(owner.current, target, "vampirebit & is draining their blood.", ATKLOG_ALMOSTALL) + add_attack_logs(cur, target, "vampirebit & is draining their blood.", ATKLOG_ALMOSTALL) - if(!iscarbon(owner.current)) + if(!iscarbon(cur)) target.LAssailant = null else - target.LAssailant = owner.current + target.LAssailant = cur var/is_target_grabbed = FALSE - if(target.pulledby == owner.current && owner.current.grab_state > GRAB_PASSIVE) + if(target.pulledby == cur && cur.grab_state > GRAB_PASSIVE) is_target_grabbed = TRUE if(!is_target_grabbed || vampire_dir == NORTHEAST || vampire_dir == NORTHWEST || \ @@ -238,25 +239,27 @@ cycle_counter = STATE_GRABBING time_per_action = suck_rate_final*BITE_TIME_MOD - while(do_after(owner.current, time_per_action, target, NONE, interaction_key = DOAFTER_SOURCE_VAMPIRE_SUCKING, max_interact_count = 1)) + while(do_after(cur, time_per_action, target, NONE, interaction_key = DOAFTER_SOURCE_VAMPIRE_SUCKING, max_interact_count = 1)) cycle_counter++ - owner.current.face_atom(target) + cur.face_atom(target) old_bloodusable = bloodusable switch(cycle_counter) if(STATE_CLOSING_IN) - owner.current.visible_message(span_danger("[owner.current] приближается к [target]"), \ + cur.visible_message(span_danger("[cur] приближается к [target]"), \ span_danger("Вы приближаетесь к [target]")) getting_closer_animation(target, STATE_CLOSING_IN, vampire_dir) time_per_action = suck_rate_final*GRABBING_TIME_MOD continue + if(STATE_GRABBING) - owner.current.visible_message(span_danger("[owner.current] грубо хватает шею [target]"), \ + cur.visible_message(span_danger("[cur] грубо хватает шею [target]"), \ span_danger("Вы грубо хватает шею [target]")) getting_closer_animation(target, STATE_GRABBING, vampire_dir) time_per_action = suck_rate_final*BITE_TIME_MOD continue + if(STATE_BITE) - owner.current.visible_message(span_danger("[owner.current] вонзает [genderize_ru(owner.current.gender, "его", "её", "его", "их")] клыки!"), \ + cur.visible_message(span_danger("[cur] вонзает [genderize_ru(cur.gender, "его", "её", "его", "их")] клыки!"), \ span_danger("Вы вонзаете клыки в шею [target] и начинаете высасывать [genderize_ru(target.gender, "его", "её", "его", "их")] кровь."), \ span_italics("Вы слышите тихий звук прокола и влажные хлюпающие звуки.")) bite_animation(target, vampire_dir) @@ -265,9 +268,9 @@ if(unique_suck_id in drained_humans) if(drained_humans[unique_suck_id] >= BLOOD_DRAIN_LIMIT) - to_chat(owner.current, span_warning("Вы поглотили всю жизненную эссенцию [target], дальнейшее питьё крови будет только утолять голод!")) + to_chat(cur, span_warning("Вы поглотили всю жизненную эссенцию [target], дальнейшее питьё крови будет только утолять голод!")) target.blood_volume = max(target.blood_volume - 25, 0) - owner.current.set_nutrition(min(NUTRITION_LEVEL_WELL_FED, owner.current.nutrition + 5)) + cur.set_nutrition(min(NUTRITION_LEVEL_WELL_FED, cur.nutrition + 5)) continue @@ -275,29 +278,47 @@ if(target.ckey || target.player_ghosted) //Requires ckey regardless if monkey or humanoid, or the body has been ghosted before it died blood = min(20, target.blood_volume) adjust_blood(target, blood * BLOOD_GAINED_MODIFIER) - to_chat(owner.current, span_boldnotice("Вы накопили [bloodtotal] единиц[declension_ru(bloodtotal, "у", "ы", "")] крови[bloodusable != old_bloodusable ? ", и теперь вам доступно [bloodusable] единиц[declension_ru(bloodusable, "а", "ы", "")] крови" : ""].")) + cur.adjustBruteLoss(-3) + cur.adjustFireLoss(-3) + cur.adjustOxyLoss(-10) + cur.adjustToxLoss(-2) + cur.adjustBrainLoss(-1) + for(var/obj/item/organ/external/bodypart as anything in cur.bodyparts) + if(bodypart.has_fracture() && prob(5)) + to_chat(cur, span_notice("You feel a burning sensation in your [bodypart.name] as it straightens involuntarily!")) + bodypart.mend_fracture() + + if(bodypart.has_internal_bleeding() && prob(5)) + to_chat(cur, span_notice("You feel a burning sensation in your [bodypart.name] as your veins begin to recover!")) + bodypart.stop_internal_bleeding() + + if(bloodtotal >= REQ_BLOOD_FOR_SUBCLASS_ACT) + subclass?.on_blood_sucking(owner) + + to_chat(cur, span_boldnotice("Вы накопили [bloodtotal] единиц[declension_ru(bloodtotal, "у", "ы", "")] крови[bloodusable != old_bloodusable ? ", и теперь вам доступно [bloodusable] единиц[declension_ru(bloodusable, "а", "ы", "")] крови" : ""].")) target.blood_volume = max(target.blood_volume - 25, 0) //Blood level warnings (Code 'borrowed' from Fulp) if(target.blood_volume) if(target.blood_volume <= BLOOD_VOLUME_BAD && blood_volume_warning > BLOOD_VOLUME_BAD) - to_chat(owner.current, span_danger("У вашей жертвы остаётся опасно мало крови!")) + to_chat(cur, span_danger("У вашей жертвы остаётся опасно мало крови!")) else if(target.blood_volume <= BLOOD_VOLUME_OKAY && blood_volume_warning > BLOOD_VOLUME_OKAY) - to_chat(owner.current, span_warning("У вашей жертвы остаётся тревожно мало крови!")) + to_chat(cur, span_warning("У вашей жертвы остаётся тревожно мало крови!")) + blood_volume_warning = target.blood_volume //Set to blood volume, so that you only get the message once else - to_chat(owner.current, span_warning("Вы выпили свою жертву досуха!")) + to_chat(cur, span_warning("Вы выпили свою жертву досуха!")) break if(!target.ckey && !target.player_ghosted)//Only runs if there is no ckey and the body has not being ghosted while alive - to_chat(owner.current, span_boldnotice("Питьё крови у [target] насыщает вас, но доступной крови от этого вы не получаете.")) - owner.current.set_nutrition(min(NUTRITION_LEVEL_WELL_FED, owner.current.nutrition + 5)) + to_chat(cur, span_boldnotice("Питьё крови у [target] насыщает вас, но доступной крови от этого вы не получаете.")) + cur.set_nutrition(min(NUTRITION_LEVEL_WELL_FED, cur.nutrition + 5)) else - owner.current.set_nutrition(min(NUTRITION_LEVEL_WELL_FED, owner.current.nutrition + (blood / 2))) + cur.set_nutrition(min(NUTRITION_LEVEL_WELL_FED, cur.nutrition + (blood / 2))) stop_sucking() diff --git a/code/modules/antagonists/vampire/vampire_subclasses.dm b/code/modules/antagonists/vampire/vampire_subclasses.dm index a3af73d3147..0884168f95c 100644 --- a/code/modules/antagonists/vampire/vampire_subclasses.dm +++ b/code/modules/antagonists/vampire/vampire_subclasses.dm @@ -28,6 +28,9 @@ ) +/datum/vampire_subclass/proc/on_blood_sucking(mob/living/carbon/human/H) + return + /datum/vampire_subclass/proc/add_subclass_ability(datum/antagonist/vampire/vamp) for(var/thing in standard_powers) if(vamp.bloodtotal >= standard_powers[thing]) @@ -51,6 +54,14 @@ /obj/effect/proc_holder/spell/vampire/self/eternal_darkness, /datum/vampire_passive/xray) +/datum/vampire_subclass/umbrae/on_blood_sucking(mob/living/carbon/human/H) + var/list/lights = list() + for(var/obj/machinery/light/L in GLOB.machines) + if(L.status && L.z == H.z) + lights += L + + var/obj/machinery/light/L = pick(lights) + L.break_light_tube() /datum/vampire_subclass/hemomancer name = "hemomancer" @@ -63,6 +74,8 @@ fully_powered_abilities = list(/datum/vampire_passive/full, /obj/effect/proc_holder/spell/vampire/self/blood_spill) +/datum/vampire_subclass/hemomancer/on_blood_sucking(mob/living/carbon/human/H) + H.blood_volume = min(H.blood_volume + 5, BLOOD_VOLUME_NORMAL) /datum/vampire_subclass/gargantua name = "gargantua" @@ -76,6 +89,9 @@ /obj/effect/proc_holder/spell/vampire/charge) improved_rejuv_healing = TRUE +/datum/vampire_subclass/gargantua/on_blood_sucking(mob/living/carbon/human/H) + H.adjustBruteLoss(-2) + H.adjustFireLoss(-2) /datum/vampire_subclass/dantalion name = "dantalion" @@ -92,6 +108,11 @@ /obj/effect/proc_holder/spell/vampire/hysteria, /datum/vampire_passive/increment_thrall_cap/three) +/datum/vampire_subclass/dantalion/on_blood_sucking(mob/living/carbon/human/H) + for(var/datum/mind/thrall in H?.mind?.som?.serv) + thrall.current?.adjustBruteLoss(-3) + thrall.current?.adjustFireLoss(-3) + thrall.current?.adjustOxyLoss(-5) /datum/vampire_subclass/bestia name = "bestia" @@ -110,6 +131,9 @@ /datum/vampire_passive/dissection_cap/two) improved_rejuv_healing = TRUE +/datum/vampire_subclass/bestia/on_blood_sucking(mob/living/carbon/human/H) + H.adjustBruteLoss(-2) + H.adjustFireLoss(-2) /datum/vampire_subclass/ancient name = "ancient" diff --git a/code/modules/atmospherics/machinery/other/area_atmos_computer.dm b/code/modules/atmospherics/machinery/other/area_atmos_computer.dm index 87e31ffda70..ff0e4002acc 100644 --- a/code/modules/atmospherics/machinery/other/area_atmos_computer.dm +++ b/code/modules/atmospherics/machinery/other/area_atmos_computer.dm @@ -1,6 +1,6 @@ /obj/machinery/computer/area_atmos name = "area air control" - desc = "A computer used to control the stationary scrubbers and pumps in the area." + desc = "Консоль управления стационарными скрубберами и насосами в этой зоне." icon_screen = "area_atmos" icon_keyboard = "atmos_key" circuit = /obj/item/circuitboard/area_atmos diff --git a/code/modules/awaymissions/mission_code/ruins/graveyard.dm b/code/modules/awaymissions/mission_code/ruins/graveyard.dm index 22d2fb7fb32..a33dc6dda2e 100644 --- a/code/modules/awaymissions/mission_code/ruins/graveyard.dm +++ b/code/modules/awaymissions/mission_code/ruins/graveyard.dm @@ -23,7 +23,7 @@ /obj/machinery/computer/shuttle/funeral name = "Funeral \"The Undertaker\" Shuttle Console" - desc = "Used to call and send the funeral \"The Undertaker\" shuttle." + desc = "Используется для вызова и отправки похоронного шаттла \"The Undertaker\"." shuttleId = "funeral" possible_destinations = "graveyard_church;graveyard_dock" diff --git a/code/modules/client/preference/loadout/loadout_donor.dm b/code/modules/client/preference/loadout/loadout_donor.dm index b21fb3aa18b..a5d99260b3a 100644 --- a/code/modules/client/preference/loadout/loadout_donor.dm +++ b/code/modules/client/preference/loadout/loadout_donor.dm @@ -265,6 +265,70 @@ ..() gear_tweaks += new /datum/gear_tweak/color(parent = src) +/datum/gear/donor/heart_meson + display_name = "Heart Meson Glasses" + path = /obj/item/clothing/glasses/meson/heart + donator_tier = 4 + cost = 2 + slot = ITEM_SLOT_EYES + allowed_roles = list(JOB_TITLE_CHIEF, JOB_TITLE_ENGINEER, JOB_TITLE_ATMOSTECH, JOB_TITLE_MECHANIC, JOB_TITLE_QUARTERMASTER, JOB_TITLE_MINER, JOB_TITLE_CAPTAIN, JOB_TITLE_ENGINEER_TRAINEE) + +/datum/gear/donor/heart_science + display_name = "Heart Science Glasses" + path = /obj/item/clothing/glasses/science/heart + donator_tier = 4 + cost = 2 + slot = ITEM_SLOT_EYES + allowed_roles = list(JOB_TITLE_CAPTAIN, JOB_TITLE_SCIENTIST, JOB_TITLE_ROBOTICIST, JOB_TITLE_RD, JOB_TITLE_GENETICIST, JOB_TITLE_CHEMIST, JOB_TITLE_SCIENTIST_STUDENT) + +/datum/gear/donor/heart_health + display_name = "Heart Medical Glasses" + path = /obj/item/clothing/glasses/hud/health/heart + donator_tier = 4 + cost = 2 + slot = ITEM_SLOT_EYES + allowed_roles = list(JOB_TITLE_CAPTAIN, JOB_TITLE_CMO, JOB_TITLE_INTERN, JOB_TITLE_PARAMEDIC, JOB_TITLE_VIROLOGIST, JOB_TITLE_BLUESHIELD, JOB_TITLE_PSYCHIATRIST, JOB_TITLE_DOCTOR, JOB_TITLE_CORONER) + +/datum/gear/donor/heart_diagnostic + display_name = "Heart Diagnostic Glasses" + path = /obj/item/clothing/glasses/hud/diagnostic/heart + donator_tier = 4 + cost = 2 + slot = ITEM_SLOT_EYES + allowed_roles = list(JOB_TITLE_CAPTAIN, JOB_TITLE_RD, JOB_TITLE_ROBOTICIST) + +/datum/gear/donor/heart_security + display_name = "Heart Security Glasses" + path = /obj/item/clothing/glasses/hud/security/sunglasses/heart + donator_tier = 4 + cost = 2 + slot = ITEM_SLOT_EYES + allowed_roles = list(JOB_TITLE_CAPTAIN, JOB_TITLE_DETECTIVE, JOB_TITLE_PILOT, JOB_TITLE_HOS, JOB_TITLE_WARDEN, JOB_TITLE_BLUESHIELD, JOB_TITLE_JUDGE, JOB_TITLE_OFFICER) + +/datum/gear/donor/heartsec_read + display_name = "Heart Security Glasses" + path = /obj/item/clothing/glasses/hud/security/sunglasses/heart/read_only + donator_tier = 4 + cost = 2 + slot = ITEM_SLOT_EYES + allowed_roles = list(JOB_TITLE_LAWYER) + +/datum/gear/donor/heart_hydroponic + display_name = "Heart Hydroponic Glasses" + path = /obj/item/clothing/glasses/hud/heart + donator_tier = 4 + cost = 2 + slot = ITEM_SLOT_EYES + allowed_roles = list(JOB_TITLE_CAPTAIN, JOB_TITLE_BOTANIST) + +/datum/gear/donor/heart_skills + display_name = "Heart Skills Glasses" + path = /obj/item/clothing/glasses/hud/skills/heart + donator_tier = 4 + cost = 2 + slot = ITEM_SLOT_EYES + allowed_roles = list(JOB_TITLE_CAPTAIN, JOB_TITLE_REPRESENTATIVE, JOB_TITLE_BLUESHIELD, JOB_TITLE_HOP) + /datum/gear/donor/night_dress display_name = "night dress, select" description = "A classic night dress." @@ -428,4 +492,9 @@ display_name = "GSBussy doll" path = /obj/item/toy/plushie/gsbplushie - +/datum/gear/donor/backpack_shitsec + donator_tier = 3 + cost = 1 + display_name = "backpack of justice" + path = /obj/item/storage/backpack/justice + allowed_roles = list(JOB_TITLE_HOS, JOB_TITLE_WARDEN, JOB_TITLE_OFFICER, JOB_TITLE_PILOT) diff --git a/code/modules/client/preference/loadout/loadout_shoes.dm b/code/modules/client/preference/loadout/loadout_shoes.dm index dcd52436a80..8245e9371b7 100644 --- a/code/modules/client/preference/loadout/loadout_shoes.dm +++ b/code/modules/client/preference/loadout/loadout_shoes.dm @@ -71,17 +71,9 @@ path = /obj/item/clothing/shoes/leather_boots /datum/gear/shoes/footwraps - display_name = "cloth footwraps, select" + display_name = "cloth footwraps, color" path = /obj/item/clothing/shoes/footwraps /datum/gear/shoes/footwraps/New() ..() - var/list/feet = list("classic" = /obj/item/clothing/shoes/footwraps, - "yellow" = /obj/item/clothing/shoes/footwraps/yellow, - "silver" = /obj/item/clothing/shoes/footwraps/silver, - "red" = /obj/item/clothing/shoes/footwraps/red, - "blue" = /obj/item/clothing/shoes/footwraps/blue, - "black" = /obj/item/clothing/shoes/footwraps/black, - "brown" = /obj/item/clothing/shoes/footwraps/brown, - ) - gear_tweaks += new /datum/gear_tweak/path(feet, src) + gear_tweaks += new /datum/gear_tweak/color(parent = src) diff --git a/code/modules/client/preference/preferences.dm b/code/modules/client/preference/preferences.dm index ad4bfba80bc..7a371b75989 100644 --- a/code/modules/client/preference/preferences.dm +++ b/code/modules/client/preference/preferences.dm @@ -1761,7 +1761,7 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts b_type = new_b_type if("hair") - if(species in list(SPECIES_HUMAN, SPECIES_UNATHI, SPECIES_TAJARAN, SPECIES_SKRELL, SPECIES_MACNINEPERSON, SPECIES_VULPKANIN, SPECIES_VOX)) //Species that have hair. (No HAS_HAIR flag) + if(species in list(SPECIES_HUMAN, SPECIES_UNATHI, SPECIES_TAJARAN, SPECIES_SKRELL, SPECIES_MACNINEPERSON, SPECIES_VULPKANIN, SPECIES_VOX, SPECIES_WRYN)) //Species that have hair. (No HAS_HAIR flag) var/input = "Choose your character's hair colour:" var/new_hair = input(user, input, "Character Preference", h_colour) as color|null if(new_hair) diff --git a/code/modules/clothing/chameleon/generic_chameleon_clothing.dm b/code/modules/clothing/chameleon/generic_chameleon_clothing.dm index 135b23f2eb5..d30e5ea5321 100644 --- a/code/modules/clothing/chameleon/generic_chameleon_clothing.dm +++ b/code/modules/clothing/chameleon/generic_chameleon_clothing.dm @@ -220,6 +220,7 @@ do { \ SPECIES_WOLPIN = 'icons/mob/clothing/species/monkey/mask.dmi', SPECIES_NEARA = 'icons/mob/clothing/species/monkey/mask.dmi', SPECIES_STOK = 'icons/mob/clothing/species/monkey/mask.dmi', + SPECIES_WRYN = 'icons/mob/clothing/species/wryn/mask.dmi' ) var/obj/item/voice_changer/voice_changer diff --git a/code/modules/clothing/glasses/glasses.dm b/code/modules/clothing/glasses/glasses.dm index 4aa7b0db32f..a1567ef30b7 100644 --- a/code/modules/clothing/glasses/glasses.dm +++ b/code/modules/clothing/glasses/glasses.dm @@ -113,6 +113,12 @@ flash_protect = FLASH_PROTECTION_FLASH tint = 1 +/obj/item/clothing/glasses/meson/heart + name = "\improper Heart Meson Glasses" + desc = "Модные очки в форме сердечек с встроенным ИЛС под рабочие нужды." + icon_state = "heart_meson" + item_state = "heart_meson" + /obj/item/clothing/glasses/meson/night name = "Night Vision Optical Meson Scanner" desc = "An Optical Meson Scanner fitted with an amplified visible light spectrum overlay, providing greater visual clarity in darkness." @@ -186,6 +192,12 @@ see_in_dark = 8 lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE //don't render darkness while wearing these +/obj/item/clothing/glasses/science/heart + name = "\improper Heart Science Glasses" + desc = "Модные очки в форме сердечек с встроенным ИЛС под рабочие нужды." + icon_state = "heart_science" + item_state = "heart_science" + /obj/item/clothing/glasses/janitor name = "Janitorial Goggles" desc = "These'll keep the soap out of your eyes." diff --git a/code/modules/clothing/glasses/hud.dm b/code/modules/clothing/glasses/hud.dm index 921b8684f85..de7194f995e 100644 --- a/code/modules/clothing/glasses/hud.dm +++ b/code/modules/clothing/glasses/hud.dm @@ -82,6 +82,12 @@ MEDICAL lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_VISIBLE prescription_upgradable = FALSE +/obj/item/clothing/glasses/hud/health/heart + name = "\improper Heart Medical Glasses" + desc = "Модные очки в форме сердечек с встроенным ИЛС под рабочие нужды." + icon_state = "heart_med" + item_state = "heart_med" + /obj/item/clothing/glasses/hud/health/patch name = "\improper Medical HUD Eyepatch" desc = "A heads-up eyepatch that scans the humans in view and provides accurate data about their health status." @@ -161,6 +167,12 @@ DIAGNOSTIC item_state = "diaghudpatch" prescription_upgradable = FALSE +/obj/item/clothing/glasses/hud/diagnostic/heart + name = "\improper Heart Diagnostic Glasses" + desc = "Модные очки в форме сердечек с встроенным ИЛС под рабочие нужды." + icon_state = "heart_diagnostic" + item_state = "heart_diagnostic" + /obj/item/clothing/glasses/hud/diagnostic/night name = "\improper Night Vision Diagnostic HUD" desc = "A robotics diagnostic HUD fitted with a light amplifier." @@ -262,6 +274,15 @@ SECURITY SPECIES_STOK = 'icons/mob/clothing/species/monkey/eyes.dmi' ) +/obj/item/clothing/glasses/hud/security/sunglasses/heart + name = "\improper Heart Security Glasses" + desc = "Модные очки в форме сердечек с встроенным ИЛС под рабочие нужды." + icon_state = "heart_sec" + item_state = "heart_sec" + +/obj/item/clothing/glasses/hud/security/sunglasses/heart/read_only + examine_extensions = EXAMINE_HUD_SECURITY_READ + /obj/item/clothing/glasses/hud/security/sunglasses/tacticool name = "security tactical glasses" desc = "Ballistic glasses with a security HUD. Gives you tacticool protection and selfish increase. The elastic band allows it to be worn over a helmet." @@ -358,6 +379,12 @@ HYDROPONIC item_state = "hydrohudpatch" prescription_upgradable = FALSE +/obj/item/clothing/glasses/hud/heart + name = "\improper Heart Hydroponic Glasses" + desc = "Модные очки в форме сердечек с встроенным ИЛС под рабочие нужды." + icon_state = "heart_hydro" + item_state = "heart_hydro" + /obj/item/clothing/glasses/hud/hydroponic/night name = "\improper Night Vision Hydroponic HUD" desc = "A hydroponic HUD fitted with a light amplifier." @@ -421,6 +448,12 @@ SKILLS item_state = "skillhudpatch" prescription_upgradable = FALSE +/obj/item/clothing/glasses/hud/skills/heart + name = "\improper Heart Skills Glasses" + desc = "Модные очки в форме сердечек с встроенным ИЛС под рабочие нужды." + icon_state = "heart_skill" + item_state = "heart_skill" + /obj/item/clothing/glasses/hud/skills/sunglasses name = "skills sunglasses" desc = "Sunglasses with a build-in skills HUD, showing the employment history of nearby NT crew members." diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm index cc5bd1bacea..0e7ac2bcb7f 100644 --- a/code/modules/clothing/head/helmet.dm +++ b/code/modules/clothing/head/helmet.dm @@ -471,3 +471,30 @@ SPECIES_NEARA = 'icons/mob/clothing/species/monkey/head.dmi', SPECIES_STOK = 'icons/mob/clothing/species/monkey/head.dmi' ) + +/obj/item/clothing/head/helmet/biker + name = "Motorcycle helmet" + desc = "Самый обычный мотоциклетный шлем." + armor = list("melee" = 25, "bullet" = 10, "laser" = 30, "energy" = 30, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 30, "acid" = 0) + icon_state = "biker" + item_state = "biker" + flags_inv = HIDEMASK|HIDEHEADSETS|HIDEGLASSES|HIDEHAIR + flags_cover = HEADCOVERSEYES|HEADCOVERSMOUTH + color = "#161515" + sprite_sheets = list( + SPECIES_MONKEY = 'icons/mob/clothing/species/monkey/head.dmi' + ) + species_restricted = list(SPECIES_HUMAN, SPECIES_SLIMEPERSON, SPECIES_SKELETON, SPECIES_NUCLEATION, SPECIES_MACNINEPERSON, SPECIES_DIONA, SPECIES_SHADOW_BASIC, SPECIES_MONKEY) + +/obj/item/clothing/head/helmet/biker/Initialize(mapload) + . = ..() + update_icon(UPDATE_OVERLAYS) + +/obj/item/clothing/head/helmet/biker/ComponentInitialize() + . = ..() + AddComponent(/datum/component/spraycan_paintable) + +/obj/item/clothing/head/helmet/biker/update_overlays() + . = ..() + var/mutable_appearance/biker_overlay = mutable_appearance(icon='icons/obj/clothing/hats.dmi', icon_state = "biker_overlay") + . += biker_overlay diff --git a/code/modules/clothing/masks/boxing.dm b/code/modules/clothing/masks/boxing.dm index 251bebffc06..2b9de438487 100644 --- a/code/modules/clothing/masks/boxing.dm +++ b/code/modules/clothing/masks/boxing.dm @@ -24,7 +24,8 @@ SPECIES_FARWA = 'icons/mob/clothing/species/monkey/mask.dmi', SPECIES_WOLPIN = 'icons/mob/clothing/species/monkey/mask.dmi', SPECIES_NEARA = 'icons/mob/clothing/species/monkey/mask.dmi', - SPECIES_STOK = 'icons/mob/clothing/species/monkey/mask.dmi' + SPECIES_STOK = 'icons/mob/clothing/species/monkey/mask.dmi', + SPECIES_WRYN = 'icons/mob/clothing/species/wryn/mask.dmi' ) @@ -54,7 +55,8 @@ SPECIES_FARWA = 'icons/mob/clothing/species/monkey/mask.dmi', SPECIES_WOLPIN = 'icons/mob/clothing/species/monkey/mask.dmi', SPECIES_NEARA = 'icons/mob/clothing/species/monkey/mask.dmi', - SPECIES_STOK = 'icons/mob/clothing/species/monkey/mask.dmi' + SPECIES_STOK = 'icons/mob/clothing/species/monkey/mask.dmi', + SPECIES_WRYN = 'icons/mob/clothing/species/wryn/mask.dmi' ) /obj/item/clothing/mask/luchador/tecnicos diff --git a/code/modules/clothing/masks/breath.dm b/code/modules/clothing/masks/breath.dm index 60740bcd960..7b7cf4c8306 100644 --- a/code/modules/clothing/masks/breath.dm +++ b/code/modules/clothing/masks/breath.dm @@ -27,7 +27,8 @@ SPECIES_FARWA = 'icons/mob/clothing/species/monkey/mask.dmi', SPECIES_WOLPIN = 'icons/mob/clothing/species/monkey/mask.dmi', SPECIES_NEARA = 'icons/mob/clothing/species/monkey/mask.dmi', - SPECIES_STOK = 'icons/mob/clothing/species/monkey/mask.dmi' + SPECIES_STOK = 'icons/mob/clothing/species/monkey/mask.dmi', + SPECIES_WRYN = 'icons/mob/clothing/species/wryn/mask.dmi' ) /obj/item/clothing/mask/breath/attack_self(mob/user) diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm index 0e729aa7815..b1dcdf8c4fd 100644 --- a/code/modules/clothing/masks/gasmask.dm +++ b/code/modules/clothing/masks/gasmask.dm @@ -26,7 +26,8 @@ SPECIES_FARWA = 'icons/mob/clothing/species/monkey/mask.dmi', SPECIES_WOLPIN = 'icons/mob/clothing/species/monkey/mask.dmi', SPECIES_NEARA = 'icons/mob/clothing/species/monkey/mask.dmi', - SPECIES_STOK = 'icons/mob/clothing/species/monkey/mask.dmi' + SPECIES_STOK = 'icons/mob/clothing/species/monkey/mask.dmi', + SPECIES_WRYN = 'icons/mob/clothing/species/wryn/mask.dmi' ) // **** Welding gas mask **** @@ -79,7 +80,8 @@ SPECIES_FARWA = 'icons/mob/clothing/species/monkey/mask.dmi', SPECIES_WOLPIN = 'icons/mob/clothing/species/monkey/mask.dmi', SPECIES_NEARA = 'icons/mob/clothing/species/monkey/mask.dmi', - SPECIES_STOK = 'icons/mob/clothing/species/monkey/mask.dmi' + SPECIES_STOK = 'icons/mob/clothing/species/monkey/mask.dmi', + SPECIES_WRYN = 'icons/mob/clothing/species/wryn/mask.dmi' ) @@ -187,7 +189,8 @@ icon_state = "rainbow" item_state = "rainbow" sprite_sheets = list( - SPECIES_VULPKANIN = 'icons/mob/clothing/species/vulpkanin/head.dmi' + SPECIES_VULPKANIN = 'icons/mob/clothing/species/vulpkanin/head.dmi', + SPECIES_WRYN = 'icons/mob/clothing/species/wryn/mask.dmi' ) /obj/item/clothing/mask/gas/clownwiz diff --git a/code/modules/clothing/masks/miscellaneous.dm b/code/modules/clothing/masks/miscellaneous.dm index 62aa93110ad..3993acea1cc 100644 --- a/code/modules/clothing/masks/miscellaneous.dm +++ b/code/modules/clothing/masks/miscellaneous.dm @@ -19,7 +19,8 @@ SPECIES_FARWA = 'icons/mob/clothing/species/monkey/mask.dmi', SPECIES_WOLPIN = 'icons/mob/clothing/species/monkey/mask.dmi', SPECIES_NEARA = 'icons/mob/clothing/species/monkey/mask.dmi', - SPECIES_STOK = 'icons/mob/clothing/species/monkey/mask.dmi' + SPECIES_STOK = 'icons/mob/clothing/species/monkey/mask.dmi', + SPECIES_WRYN = 'icons/mob/clothing/species/wryn/mask.dmi' ) // Clumsy folks can't take the mask off themselves. @@ -249,7 +250,8 @@ SPECIES_FARWA = 'icons/mob/clothing/species/monkey/mask.dmi', SPECIES_WOLPIN = 'icons/mob/clothing/species/monkey/mask.dmi', SPECIES_NEARA = 'icons/mob/clothing/species/monkey/mask.dmi', - SPECIES_STOK = 'icons/mob/clothing/species/monkey/mask.dmi' + SPECIES_STOK = 'icons/mob/clothing/species/monkey/mask.dmi', + SPECIES_WRYN = 'icons/mob/clothing/species/wryn/mask.dmi' ) @@ -474,9 +476,34 @@ icon_state = "pennywise_mask" item_state = "pennywise_mask" sprite_sheets = list( - SPECIES_VULPKANIN = 'icons/mob/clothing/species/vulpkanin/head.dmi' + SPECIES_VULPKANIN = 'icons/mob/clothing/species/vulpkanin/head.dmi', + SPECIES_WRYN = 'icons/mob/clothing/species/wryn/mask.dmi' ) +/obj/item/clothing/mask/gas/clown_hat/sweettooth + name = "Sweet Tooth Mask" + desc = "Брутальная маска клоуна. Она до сих пор пахнет цирком. И керосином." + icon_state = "sweettooth_mask" + item_state = "sweettooth_mask" + ru_names = list( + NOMINATIVE = "Маска Сладкоежки", + GENITIVE = "Маски Сладкоежки", + DATIVE = "Маске Сладкоежки", + ACCUSATIVE = "Маску Сладкоежки", + INSTRUMENTAL = "Маской Сладкоежки", + PREPOSITIONAL = "Маске Сладкоежки" + ) + sprite_sheets = list( + SPECIES_UNATHI = 'icons/mob/clothing/species/unathi/mask.dmi', + SPECIES_TAJARAN = 'icons/mob/clothing/species/tajaran/mask.dmi', + SPECIES_VULPKANIN = 'icons/mob/clothing/species/vulpkanin/mask.dmi', + SPECIES_VOX = 'icons/mob/clothing/species/vox/mask.dmi', + SPECIES_MONKEY = 'icons/mob/clothing/species/monkey/mask.dmi', + SPECIES_DRASK = 'icons/mob/clothing/species/drask/mask.dmi', + SPECIES_GREY = 'icons/mob/clothing/species/grey/mask.dmi', + SPECIES_KIDAN = 'icons/mob/clothing/species/kidan/mask.dmi', + SPECIES_WRYN = 'icons/mob/clothing/species/wryn/mask.dmi' + ) /obj/item/clothing/mask/gas/clown_hat/rockso name = "Rockso Mask" diff --git a/code/modules/clothing/shoes/miscellaneous.dm b/code/modules/clothing/shoes/miscellaneous.dm index 2607eaf7ec1..51f3161fb41 100644 --- a/code/modules/clothing/shoes/miscellaneous.dm +++ b/code/modules/clothing/shoes/miscellaneous.dm @@ -399,43 +399,18 @@ /obj/item/clothing/shoes/cowboy/lizardmasterwork = 1) /obj/item/clothing/shoes/footwraps - name = "cloth footwraps" - desc = "A roll of treated canvas used for wrapping claws or paws." - icon_state = "clothwrap" - item_state = "clothwrap" - force = 0 - silence_steps = TRUE - w_class = WEIGHT_CLASS_SMALL - -/obj/item/clothing/shoes/footwraps/yellow - name = "yellow cloth footwraps" - icon_state = "yellow_wrap" - item_state = "yellow_wrap" - -/obj/item/clothing/shoes/footwraps/silver - name = "silver cloth footwraps" - icon_state = "silver_wrap" - item_state = "silver_wrap" - -/obj/item/clothing/shoes/footwraps/red - name = "red cloth footwraps" - icon_state = "red_wrap" - item_state = "red_wrap" - -/obj/item/clothing/shoes/footwraps/blue - name = "blue cloth footwraps" - icon_state = "blue_wrap" - item_state = "blue_wrap" - -/obj/item/clothing/shoes/footwraps/black - name = "black cloth footwraps" - icon_state = "black_wrap" - item_state = "black_wrap" - -/obj/item/clothing/shoes/footwraps/brown - name = "brown cloth footwraps" - icon_state = "brown_wrap" - item_state = "brown_wrap" + name = "cloth footwraps" + desc = "A roll of treated canvas used for wrapping claws or paws." + icon_state = "clothwrap" + item_state = "clothwrap" + force = 0 + silence_steps = TRUE + w_class = WEIGHT_CLASS_SMALL + var/paintable = TRUE + +/obj/item/clothing/shoes/footwraps/ComponentInitialize() + if(paintable) + AddComponent(/datum/component/spraycan_paintable) /obj/item/clothing/shoes/footwraps/goliath name = "goliath hide footwraps" @@ -444,6 +419,7 @@ item_state = "footwraps_goliath" armor = list("melee" = 5, "bullet" = 5, "laser" = 10, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 10, "acid" = 0) resistance_flags = FIRE_PROOF + paintable = FALSE /obj/item/clothing/shoes/footwraps/dragon name = "ash drake hide footwraps" @@ -452,6 +428,7 @@ item_state = "footwraps_dragon" armor = list("melee" = 10, "bullet" = 10, "laser" = 15, "energy" = 10, "bomb" = 0, "bio" = 10, "rad" = 0, "fire" = 15, "acid" = 0) resistance_flags = FIRE_PROOF | ACID_PROOF + paintable = FALSE /obj/item/clothing/shoes/bhop name = "jump boots" diff --git a/code/modules/clothing/under/miscellaneous.dm b/code/modules/clothing/under/miscellaneous.dm index ecdbe936684..e84df73a48c 100644 --- a/code/modules/clothing/under/miscellaneous.dm +++ b/code/modules/clothing/under/miscellaneous.dm @@ -795,6 +795,30 @@ item_color = "pennywise" body_parts_covered = UPPER_TORSO|LOWER_TORSO +/obj/item/clothing/under/sweettooth + name = "Sweet Tooth Costume" + desc = "Брутально выглядящий костюм, отдалённо смахивающий на клоунский. Такой отлично подошёл бы какому-нибудь серийному убийце." + icon_state = "sweettooth_uniform" + item_color = "sweettooth_uniform" + ru_names = list( + NOMINATIVE = "Костюм Сладкоежки", + GENITIVE = "Костюма Сладкоежки", + DATIVE = "Костюму Сладкоежки", + ACCUSATIVE = "Костюм Сладкоежки", + INSTRUMENTAL = "Костюмом Сладкоежки", + PREPOSITIONAL = "Костюме Сладкоежки" + ) + body_parts_covered = UPPER_TORSO | LOWER_TORSO + sprite_sheets = list( + SPECIES_VOX = 'icons/mob/clothing/species/vox/uniform.dmi', + SPECIES_MONKEY = 'icons/mob/clothing/species/monkey/uniform.dmi', + SPECIES_DRASK = 'icons/mob/clothing/species/drask/uniform.dmi', + SPECIES_GREY = 'icons/mob/clothing/species/grey/uniform.dmi', + SPECIES_KIDAN = 'icons/mob/clothing/species/kidan/uniform.dmi', + SPECIES_WRYN = 'icons/mob/clothing/species/wryn/uniform.dmi', + SPECIES_GREY = 'icons/mob/clothing/species/grey/uniform.dmi' + ) + /obj/item/clothing/under/rockso name = "Rockso Costume" desc = "I DO COCAINE!" diff --git a/code/modules/economy/Accounts_DB.dm b/code/modules/economy/Accounts_DB.dm index 0972e9e0239..a6a748078e4 100644 --- a/code/modules/economy/Accounts_DB.dm +++ b/code/modules/economy/Accounts_DB.dm @@ -6,7 +6,7 @@ GLOBAL_VAR(current_date_string) /obj/machinery/computer/account_database name = "Accounts Uplink Terminal" - desc = "Access transaction logs, account data and all kinds of other financial records." + desc = "Получите доступ к журналам транзакций, данным учетной записи и всем видам других финансовых записей." icon_screen = "accounts" req_access = list(ACCESS_HOP, ACCESS_CAPTAIN, ACCESS_CENT_COMMANDER) light_color = LIGHT_COLOR_GREEN @@ -25,7 +25,7 @@ GLOBAL_VAR(current_date_string) // If someone ever makes a map without one of these consoles, the entire eco AND date system breaks // This upsets me a lot // AA Todo: SSeconomy - + if(!GLOB.current_date_string) GLOB.current_date_string = "[time2text(world.timeofday, "DD Month")], [GLOB.game_year]" diff --git a/code/modules/economy/quests/quest_console.dm b/code/modules/economy/quests/quest_console.dm index ed42cd70c5d..2070bfb0f27 100644 --- a/code/modules/economy/quests/quest_console.dm +++ b/code/modules/economy/quests/quest_console.dm @@ -6,7 +6,7 @@ /obj/machinery/computer/supplyquest name = "Supply Request Console" - desc = "Essential for supply requests. Your bread and butter." + desc = "Незаменим при оформлении заказов на поставку. Ваш хлеб с маслом." icon_keyboard = "cargo_quest_key" icon_screen = "cargo_quest" req_access = list(ACCESS_CARGO) @@ -221,7 +221,7 @@ /obj/machinery/computer/supplyquest/workers name = "Supply Request Monitor" - desc = "From this monitor, you can view active requests, and you can take a printed version of the request to make it easier to collect supplies. Oh, and so you don't forget." + desc = "На этом мониторе вы можете просматривать активные запросы и распечатывать их, чтобы упростить сбор материалов. Да, и чтобы вы не забыли." icon_state = "quest_console" icon_screen = "quest" icon_keyboard = null @@ -313,7 +313,7 @@ /obj/machinery/computer/supplyquest/iternal name = "invasive quest utility" - desc = "How did this get here?! Please report this as a bug to github" + desc = "Как это сюда попало?! Пожалуйста, сообщите об этом как об ошибке на github" use_power = NO_POWER_USE /obj/item/qm_quest_tablet/Initialize(mapload) diff --git a/code/modules/economy/robotic_quests/robo_quest_console.dm b/code/modules/economy/robotic_quests/robo_quest_console.dm index 87aa793c665..7891ec061a6 100644 --- a/code/modules/economy/robotic_quests/robo_quest_console.dm +++ b/code/modules/economy/robotic_quests/robo_quest_console.dm @@ -21,7 +21,7 @@ /obj/machinery/computer/roboquest name = "Robotics Request Console" - desc = "Console used for receiving requests for construction of exosuits." + desc = "Консоль, используемая для приема запросов на изготовление экзоскелетов." icon_screen = "robo_ntos_roboquest" icon_keyboard = "rd_key" light_color = LIGHT_COLOR_FADEDPURPLE diff --git a/code/modules/events/spacevine.dm b/code/modules/events/spacevine.dm index 2cb5b697f5b..415f9c04b43 100644 --- a/code/modules/events/spacevine.dm +++ b/code/modules/events/spacevine.dm @@ -3,6 +3,14 @@ #define NEGATIVE 2 #define MINOR_NEGATIVE 3 +/datum/event/spacevine + announceWhen = 120 + var/obj/structure/spacevine_controller/SC + +/datum/event/spacevine/Destroy(force) + SC = null + return ..() + /datum/event/spacevine/start() var/list/turfs = list() //list of all the empty floor turfs in the hallway areas @@ -17,7 +25,7 @@ if(turfs.len) //Pick a turf to spawn at if we can var/turf/T = pick(turfs) - var/obj/structure/spacevine_controller/SC = new /obj/structure/spacevine_controller(T, , rand(30,70),rand(5,2)) //spawn a controller at turf + SC = new /obj/structure/spacevine_controller(T, null, rand(30, 70), rand(5, 2)) // spawn a controller at turf // Make the event start fun - give the vine a random hostile mutation if(SC.vines.len) @@ -31,6 +39,9 @@ mutations.Cut() mutations = null +/datum/event/spacevine/announce(false_alarm) + if((false_alarm || LAZYLEN(SC?.vines)) && (LAZYLEN(GLOB.player_list) < 20)) + GLOB.event_announcement.Announce("Биосканеры фиксируют рост космической лозы в [get_area(SC.loc)]. Избавьтесь от неё, прежде чем она нанесёт ущерб станции.", "ВНИМАНИЕ: БИОЛОГИЧЕСКАЯ УГРОЗА.") /datum/spacevine_mutation var/name = "" @@ -366,7 +377,7 @@ hue = "#444444" quality = POSITIVE severity = 3 - var/drop_rate = 20 + var/drop_rate = 40 var/list/mineral_results = list( /obj/item/stack/sheet/metal = 1 ) @@ -381,7 +392,7 @@ /datum/spacevine_mutation/mineral/valuables name = "glimmering" hue = "#888800" - drop_rate = 10 + drop_rate = 20 mineral_results = list( /obj/item/stack/sheet/mineral/silver = 4, /obj/item/stack/sheet/mineral/gold = 2, @@ -577,17 +588,18 @@ var/spread_multiplier = 5 var/spread_cap = 30 var/list/mutations_list = list() - var/mutativeness = 1 + var/mutativeness = 0 /obj/structure/spacevine_controller/New(loc, list/muts, potency, production) color = "#ffffff" spawn_spacevine_piece(loc, null, muts) START_PROCESSING(SSobj, src) init_subtypes(/datum/spacevine_mutation/, mutations_list) - if(potency != null && potency > 0) - // 1 mutativeness at 10 potency - // 4 mutativeness at 100 potency + // 1 mutativeness at 10 potency + // 4 mutativeness at 100 potency + if(potency) mutativeness = log(10, potency) ** 2 + if(production != null) // 1 production is crazy powerful var/spread_value = max(10 - production, 1) @@ -597,6 +609,7 @@ // 6 vines/spread at 6 production // ~2.5 vines/spread at 1 production spread_multiplier /= spread_value / 5 + ..() diff --git a/code/modules/food_and_drinks/item_food/eat_item_list_cloth.dm b/code/modules/food_and_drinks/item_food/eat_item_list_cloth.dm index 727aa768eae..20a955125af 100644 --- a/code/modules/food_and_drinks/item_food/eat_item_list_cloth.dm +++ b/code/modules/food_and_drinks/item_food/eat_item_list_cloth.dm @@ -488,7 +488,7 @@ integrity_bite = 20, \ nutritional_value = 10, \ ) - + /obj/item/clothing/suit/cardborg/add_eatable_component() AddComponent( \ /datum/component/eatable, \ @@ -624,3 +624,13 @@ nutritional_value = 10, \ ) +// SHOES + +/obj/item/clothing/shoes/footwraps/add_eatable_component() + AddComponent( \ + /datum/component/eatable, \ + material_type = MATERIAL_CLASS_CLOTH, \ + max_bites = 4, \ + integrity_bite = 20, \ + nutritional_value = 10, \ + ) diff --git a/code/modules/food_and_drinks/kitchen_machinery/kitchen_machine.dm b/code/modules/food_and_drinks/kitchen_machinery/kitchen_machine.dm index 89ca589b959..1ecca32f013 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/kitchen_machine.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/kitchen_machine.dm @@ -147,6 +147,31 @@ to_chat(user, span_warning("You have no idea how to cook with [I].")) return ATTACK_CHAIN_PROCEED|ATTACK_CHAIN_NO_AFTERATTACK +/obj/machinery/kitchen_machine/AltClick(mob/living/carbon/human/human) + if(!istype(human) || !human.Adjacent(src)) + return + + if(human.incapacitated() || HAS_TRAIT(human, TRAIT_HANDS_BLOCKED)) + return + + if(operating) + return + + add_fingerprint(human) + cook() + +/obj/machinery/kitchen_machine/CtrlShiftClick(mob/living/carbon/human/human) + if(!istype(human) || !human.Adjacent(src)) + return + + if(human.incapacitated() || HAS_TRAIT(human, TRAIT_HANDS_BLOCKED)) + return + + if(operating) + return + + add_fingerprint(human) + dispose(human) /obj/machinery/kitchen_machine/screwdriver_act(mob/living/user, obj/item/I) . = TRUE @@ -458,13 +483,16 @@ update_icon(UPDATE_ICON_STATE) updateUsrDialog() -/obj/machinery/kitchen_machine/proc/dispose() +/obj/machinery/kitchen_machine/proc/dispose(mob/user) for(var/obj/O in contents) O.forceMove(loc) + if(reagents.total_volume) dirty++ + reagents.clear_reagents() - to_chat(usr, "You dispose of \the [src]'s contents.") + to_chat(user, span_notice("You dispose of \the [src]'s contents.")) + updateUsrDialog() /obj/machinery/kitchen_machine/proc/muck_start() @@ -525,7 +553,8 @@ cook() if("dispose") - dispose() + dispose(usr) + return diff --git a/code/modules/hydroponics/grown/kudzu.dm b/code/modules/hydroponics/grown/kudzu.dm index 9fefc140507..15b8157362e 100644 --- a/code/modules/hydroponics/grown/kudzu.dm +++ b/code/modules/hydroponics/grown/kudzu.dm @@ -37,6 +37,17 @@ qdel(src) return TRUE +/obj/item/seeds/kudzu/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/seeds/kudzu)) + var/obj/item/seeds/kudzu/AttackerSeed = I + mutations |= AttackerSeed.mutations + + add_fingerprint(user) + qdel(I) + return ATTACK_CHAIN_BLOCKED_ALL + + return ..() + /obj/item/seeds/kudzu/attack_self(mob/user) if(plant(user)) to_chat(user, "You plant the kudzu. You monster.") diff --git a/code/modules/instruments/objs/items/headphones.dm b/code/modules/instruments/objs/items/headphones.dm index cbe4533ecd8..19a9b9fc8e9 100644 --- a/code/modules/instruments/objs/items/headphones.dm +++ b/code/modules/instruments/objs/items/headphones.dm @@ -38,10 +38,10 @@ song.ui_interact(user, ui) -/obj/item/clothing/ears/headphones/ui_act(action, params) +/obj/item/clothing/ears/headphones/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) if(..()) return - return song.ui_act(action, params) + return song.ui_act(action, params, ui, state) /obj/item/clothing/ears/headphones/update_icon_state() diff --git a/code/modules/instruments/songs/_song_ui.dm b/code/modules/instruments/songs/_song_ui.dm index bcfe26a205c..2ed481cc988 100644 --- a/code/modules/instruments/songs/_song_ui.dm +++ b/code/modules/instruments/songs/_song_ui.dm @@ -191,7 +191,7 @@ ///Checks string for containing only midi-sequence characters. /datum/song/proc/legality_check(mob/user, text) - var/static/regex/regex = regex(@"[^A-G0-9n\#\-\,\/\.(\r\n|\r|\n)]") + var/static/regex/regex = regex(@"[^A-Ga-g0-9n\ \#\-\,\/\.(\r\n|\r|\n)]") var/detection = regex.Find(text) if(detection) var/position_prev = clamp(detection - 16, 1, length(text)) diff --git a/code/modules/map_fluff/nova.dm b/code/modules/map_fluff/nova.dm index d015b53c620..d1086be98a8 100644 --- a/code/modules/map_fluff/nova.dm +++ b/code/modules/map_fluff/nova.dm @@ -15,5 +15,4 @@ company_name = "Nanotrasen" company_short = "NT" starsys_name = "Epsilon Eridani" - admin_only = TRUE - webmap_url = null //Nanomap and webmap will be added later. + webmap_url = "https://webmap.affectedarc07.co.uk/maps/ss1984/nova/" diff --git a/code/modules/mini_games/thunderdome/thunderdome_battle.dm b/code/modules/mini_games/thunderdome/thunderdome_battle.dm index 38fca4877f9..8d233c1c83c 100644 --- a/code/modules/mini_games/thunderdome/thunderdome_battle.dm +++ b/code/modules/mini_games/thunderdome/thunderdome_battle.dm @@ -9,7 +9,7 @@ #define MAX_PLAYERS_COUNT 16 #define MIN_PLAYERS_COUNT 2 #define SPAWN_COEFFICENT 0.85 //how many (polled * spawn_coefficent) players will go brawling -#define PICK_PENALTY 30 SECONDS //Prevents fast handed guys from picking polls twice in a row. +#define PICK_PENALTY 10 SECONDS //Prevents fast handed guys from picking polls twice in a row. // Uncomment this if you want to mess up with thunderdome alone /* #define THUND_TESTING diff --git a/code/modules/mining/laborcamp/laborshuttle.dm b/code/modules/mining/laborcamp/laborshuttle.dm index 88b0a6601dc..baf25e99d26 100644 --- a/code/modules/mining/laborcamp/laborshuttle.dm +++ b/code/modules/mining/laborcamp/laborshuttle.dm @@ -1,6 +1,6 @@ /obj/machinery/computer/shuttle/labor name = "labor shuttle console" - desc = "Used to call and send the labor camp shuttle." + desc = "Используется для вызова и отправки шаттла каторги." circuit = /obj/item/circuitboard/labor_shuttle shuttleId = "laborcamp" possible_destinations = "laborcamp_home;laborcamp_away" @@ -9,7 +9,7 @@ /obj/machinery/computer/shuttle/labor/one_way name = "prisoner shuttle console" - desc = "A one-way shuttle console, used to summon the shuttle to the labor camp." + desc = "Консоль управления шаттлом в одну сторону, используемый для вызова шаттла на каторгу." possible_destinations = "laborcamp_away" circuit = /obj/item/circuitboard/labor_shuttle/one_way req_access = list( ) diff --git a/code/modules/mining/lavaland/loot/tendril_loot.dm b/code/modules/mining/lavaland/loot/tendril_loot.dm index f2fb1cbf61e..1a312d331fb 100644 --- a/code/modules/mining/lavaland/loot/tendril_loot.dm +++ b/code/modules/mining/lavaland/loot/tendril_loot.dm @@ -3,7 +3,15 @@ //Internal /obj/item/storage/backpack/shared name = "paradox bag" - desc = "Каким-то образом существует сразу в двух местах одновременно." + desc = "Каким-то образом, эта сумка существует в двух местах одновременно." + ru_names = list( + NOMINATIVE = "парадоксальная сумка", + GENITIVE = "парадоксальной сумки", + DATIVE = "парадоксальной сумке", + ACCUSATIVE = "парадоксальную сумку", + INSTRUMENTAL = "парадоксальной сумкой", + PREPOSITIONAL = "парадоксальной сумке" + ) max_combined_w_class = 60 max_w_class = WEIGHT_CLASS_NORMAL cant_hold = list(/obj/item/storage/backpack/shared) @@ -13,7 +21,7 @@ // basically we cannot put one bag in the storage if another one is already there if(istype(I) && I.bag && I.bag == src && I.twin_storage && I.twin_storage.loc == src) if(!stop_messages) - balloon_alert(usr, span_warning("нельзя в себя же!")) + balloon_alert(usr, "невозможно!") return FALSE return ..() @@ -21,7 +29,15 @@ //External /obj/item/shared_storage name = "paradox bag" - desc = "Каким-то образом существует сразу в двух местах одновременно." + desc = "Каким-то образом, эта сумка существует в двух местах одновременно." + ru_names = list( + NOMINATIVE = "парадоксальная сумка", + GENITIVE = "парадоксальной сумки", + DATIVE = "парадоксальной сумке", + ACCUSATIVE = "парадоксальную сумку", + INSTRUMENTAL = "парадоксальной сумкой", + PREPOSITIONAL = "парадоксальной сумке" + ) icon = 'icons/obj/storage.dmi' icon_state = "cultpack" slot_flags = ITEM_SLOT_BACK @@ -111,7 +127,15 @@ /obj/item/book_of_babel name = "Book of Babel" - desc = "Древний фолиант, написанный в бесчисленном количестве языков." + desc = "Древнейший фолиант, написанный в бесчисленном множестве языков." + ru_names = list( + NOMINATIVE = "книга Вавилона", + GENITIVE = "книги Вавилона", + DATIVE = "книге Вавилона", + ACCUSATIVE = "книгу Вавилона", + INSTRUMENTAL = "книгой Вавилона", + PREPOSITIONAL = "книге Вавилона" + ) icon = 'icons/obj/library.dmi' icon_state = "book1" w_class = 2 @@ -119,11 +143,14 @@ /obj/item/book_of_babel/attack_self(mob/living/carbon/user) if(HAS_TRAIT(user, TRAIT_NO_BABEL)) - user.visible_message(span_notice("[user] внезапно останавливается, осознавая [src].")) - to_chat(user, span_warning("Вы не знаете ни что такое книга, ни что с ней делать.")) + user.visible_message( + span_notice("[user] внезапно останавлива[pluralize_ru(user, "ет", "ют")]ся, недоумённо глядя на [declent_ru(GENITIVE)]."), + span_warning("Вы понятия не имеете, что это такое и что с этим делать.") + ) + return - to_chat(user, "Вы залпом пролистываете через страницы книги, необъяснимо быстро изучая каждый язык во вселенной. К сожалению, в процессе древняя книга рассыпается в прах. Упс.") + to_chat(user, "Вы упоённо пролистываете страницы книги, вбирая в себя знания всех существующих языков во Вселенной. К сожалению, [declent_ru(NOMINATIVE)] не выдерживает такого напора и рассыпается в прах. Ой...") user.grant_all_babel_languages() new /obj/effect/decal/cleanable/ash(get_turf(user)) user.temporarily_remove_item_from_inventory(src) @@ -138,7 +165,15 @@ /obj/item/reagent_containers/glass/bottle/potion/flight name = "strange elixir" - desc = "Мистический флакон с полусвятой аурой исходящей от него. Надпись на нем гласит: 'эуфц'хъъ тъи'рв лвх йв'атв'." + desc = "Флакон с едва ли не святой аурой, исходящей от него. Вы пытаетесь прочитать надпись на бутылке, но текст неразборчив." + ru_names = list( + NOMINATIVE = "странный эликсир", + GENITIVE = "странного эликсира", + DATIVE = "странному эликсиру", + ACCUSATIVE = "странный эликсир", + INSTRUMENTAL = "странным эликсиром", + PREPOSITIONAL = "странном эликсире" + ) list_reagents = list("flightpotion" = 5) /obj/item/reagent_containers/glass/bottle/potion/update_icon_state() @@ -150,20 +185,20 @@ /datum/reagent/flightpotion name = "Flight Potion" id = "flightpotion" - description = "Странный реагент с неизвестным происхождением." + description = "Странный мутагенный состав неизвестного происхождения." reagent_state = LIQUID color = "#FFEBEB" /datum/reagent/flightpotion/reaction_mob(mob/living/M, method = REAGENT_TOUCH, reac_volume, show_message = 1) - to_chat(M, "Этот предмет на данный момент не может быть использован.") + to_chat(M, span_warning("Данный предмет нефункционален на текущий момент.")) /*if(ishuman(M) && M.stat != DEAD) var/mob/living/carbon/human/H = M if(!ishumanbasic(H) || reac_volume < 5) // implying xenohumans are holy if(method == INGEST && show_message) - to_chat(H, "Вы не чувствуете ничего, кроме отвратительного послевкусия..") + to_chat(H, span_notice("Кроме отвратительного послевкусия у вас во рту, вы ничего не почувствовали.")) return ..() - to_chat(H, "Невыносимая боль проходит через вашу спину, как вдруг оттуда вырываются крылья!") + to_chat(H, span_danger("Невыносимая боль проходит через вашу спину, как вдруг оттуда вырываются крылья!")) H.set_species(/datum/species/angel) playsound(H.loc, 'sound/items/poster_ripped.ogg', 50, 1, -1) H.adjustBruteLoss(20) @@ -173,6 +208,14 @@ /obj/item/jacobs_ladder name = "jacob's ladder" desc = "Небесная лестница, нарушающая законы физики." + ru_names = list( + NOMINATIVE = "лестница Иакова", + GENITIVE = "лестницы Иакова", + DATIVE = "лестнице Иакова", + ACCUSATIVE = "лестницу Иакова", + INSTRUMENTAL = "лестницей Иакова", + PREPOSITIONAL = "лестнице Иакова" + ) icon = 'icons/obj/structures.dmi' icon_state = "ladder" @@ -180,7 +223,7 @@ var/turf/T = get_turf(src) var/ladder_x = T.x var/ladder_y = T.y - to_chat(user, "Вы разворачиваете лестницу. Она уходит значительно дальше, чем вы ожидали.") + to_chat(user, span_notice("Вы разворачиваете лестницу. Она уходит значительно дальше, чем вы ожидали.")) var/last_ladder = null for(var/i in 1 to world.maxz) if(is_admin_level(i) || is_away_level(i) || is_taipan(i)) @@ -196,11 +239,26 @@ /obj/structure/ladder/unbreakable/jacob name = "jacob's ladder" desc = "Нерушимая небесная лестница, нарушающая законы физики." - + ru_names = list( + NOMINATIVE = "лестница Иакова", + GENITIVE = "лестницы Иакова", + DATIVE = "лестнице Иакова", + ACCUSATIVE = "лестницу Иакова", + INSTRUMENTAL = "лестницей Иакова", + PREPOSITIONAL = "лестнице Иакова" + ) //Wisp Lantern /obj/item/wisp_lantern name = "spooky lantern" - desc = "Эта лампа не источает света, но является убежищем для дружелюбного духа." + desc = "Эта лампа не источает света, но является пристанищем для дружелюбного духа." + ru_names = list( + NOMINATIVE = "жуткая лампа", + GENITIVE = "жуткой лампы", + DATIVE = "жуткой лампе", + ACCUSATIVE = "жуткую лампу", + INSTRUMENTAL = "жуткой лампой", + PREPOSITIONAL = "жуткой лампе" + ) icon = 'icons/obj/lighting.dmi' icon_state = "lantern-blue" item_state = "lantern" @@ -222,33 +280,31 @@ /obj/item/wisp_lantern/attack_self(mob/user) if(!wisp) - balloon_alert(user, "Дух исчез!") + balloon_alert(user, "дух исчезает") update_icon(UPDATE_ICON_STATE) return if(wisp.loc == src) RegisterSignal(user, COMSIG_MOB_UPDATE_SIGHT, PROC_REF(update_user_sight)) - to_chat(user, "Выпущенный дух крутится вокруг вашей головы.") + balloon_alert(user, "дух выпущен") wisp.forceMove(user) update_icon(UPDATE_ICON_STATE) INVOKE_ASYNC(wisp, TYPE_PROC_REF(/atom/movable, orbit), user, 20) set_light_on(FALSE) user.update_sight() - balloon_alert(user, "дух улучшает ваше зрение.") SSblackbox.record_feedback("tally", "wisp_lantern", 1, "Freed") // freed else UnregisterSignal(user, COMSIG_MOB_UPDATE_SIGHT) - to_chat(user, "Вы помещаете духа обратно в лампу.") + balloon_alert("дух возвращён") wisp.stop_orbit() wisp.forceMove(src) set_light_on(TRUE) user.update_sight() - balloon_alert(user, "ваше зрение вернулось в норму.") update_icon(UPDATE_ICON_STATE) SSblackbox.record_feedback("tally", "wisp_lantern", 1, "Returned") // returned @@ -263,7 +319,7 @@ if(wisp.loc == src) qdel(wisp) else - wisp.visible_message("[wisp] взгрустнул на момент, после чего исчез.") + wisp.visible_message(span_notice("Дух огорчённо вздыхает, а затем улетает восвояси.")) return ..() /obj/item/wisp_lantern/proc/update_user_sight(mob/user) @@ -273,7 +329,15 @@ /obj/effect/wisp name = "friendly wisp" - desc = "Счастливо освещает ваш путь." + desc = "Счастливо освещает вам путь." + ru_names = list( + NOMINATIVE = "дружелюбный дух", + GENITIVE = "дружелюбного духа", + DATIVE = "дружелюбному духу", + ACCUSATIVE = "дружелюбного духа", + INSTRUMENTAL = "дружелюбным духом", + PREPOSITIONAL = "дружелюбном духе" + ) icon = 'icons/obj/lighting.dmi' icon_state = "orb" light_range = 7 @@ -283,6 +347,14 @@ /obj/item/warp_cube name = "blue cube" desc = "Мистический синий куб." + ru_names = list( + NOMINATIVE = "синий куб", + GENITIVE = "синего куба", + DATIVE = "синему кубу", + ACCUSATIVE = "синий куб", + INSTRUMENTAL = "синим кубом", + PREPOSITIONAL = "синем кубе" + ) icon = 'icons/obj/lavaland/artefacts.dmi' icon_state = "blue_cube" var/obj/item/warp_cube/linked @@ -295,11 +367,11 @@ /obj/item/warp_cube/attack_self(mob/user) if(!linked) - balloon_alert(user, "[src] искрится и шипит.") + balloon_alert(user, "куб искрится и шипит") return if(is_in_teleport_proof_area(user) || is_in_teleport_proof_area(linked)) - balloon_alert(user, "[src] искрится и шипит.") + balloon_alert(user, "куб искрится и шипит.") return if(do_after(user, 1.5 SECONDS, user)) var/datum/effect_system/smoke_spread/smoke = new @@ -313,12 +385,20 @@ smoke2.set_up(1, 0, user.loc) smoke2.start() else - balloon_alert(user, "перестаньте двигатся") + balloon_alert(user, "прервано из-за движения") /obj/item/warp_cube/red name = "red cube" desc = "Мистический красный куб." + ru_names = list( + NOMINATIVE = "красный куб", + GENITIVE = "красного куба", + DATIVE = "красному кубу", + ACCUSATIVE = "красный куб", + INSTRUMENTAL = "красным кубом", + PREPOSITIONAL = "красном кубе" + ) icon_state = "red_cube" /obj/item/warp_cube/red/New() @@ -333,6 +413,14 @@ /obj/item/gun/magic/hook name = "meat hook" desc = "Ты погляди, свежее мясо!" + ru_names = list( + NOMINATIVE = "мясной крюк", + GENITIVE = "мясного крюка", + DATIVE = "мясному крюку", + ACCUSATIVE = "мясной крюк", + INSTRUMENTAL = "мясным крюком", + PREPOSITIONAL = "мясном крюке" + ) ammo_type = /obj/item/ammo_casing/magic/hook icon_state = "hook" item_state = "chain" @@ -343,7 +431,15 @@ /obj/item/ammo_casing/magic/hook name = "hook" - desc = "Крюк. Get over here!" + desc = "Это крюк." + ru_names = list( + NOMINATIVE = "крюк", + GENITIVE = "крюка", + DATIVE = "крюку", + ACCUSATIVE = "крюк", + INSTRUMENTAL = "крюком", + PREPOSITIONAL = "крюке" + ) projectile_type = /obj/item/projectile/hook caliber = "hook" icon_state = "hook" @@ -372,7 +468,7 @@ var/turf/firer_turf = get_turf(firer) var/mob/living/L = target if(!L.anchored && L.loc) - L.visible_message("[L] прицеплен за крюк [firer]!") + L.visible_message(span_danger("[firer] зацепля[pluralize_ru(firer, "ет", "ют")] [L] [declent_ru(INSTRUMENTAL)]!")) ADD_TRAIT(L, TRAIT_UNDENSE, UNIQUE_TRAIT_SOURCE(src)) // Ensures the hook does not hit the target multiple times L.forceMove(firer_turf) REMOVE_TRAIT(L, TRAIT_UNDENSE, UNIQUE_TRAIT_SOURCE(src)) @@ -385,7 +481,15 @@ //Immortality Talisman /obj/item/immortality_talisman name = "Immortality Talisman" - desc = "Зловещий талисман, способный временно сделать вас неуязвимым." + desc = "Таинственный талисман, способный даровать неуязвимость." + ru_names = list( + NOMINATIVE = "Талисман Бессмертия", + GENITIVE = "Талисмана Бессмертия", + DATIVE = "Талисману Бессмертия", + ACCUSATIVE = "Талисман Бессмертия", + INSTRUMENTAL = "Талисманом Бессмертия", + PREPOSITIONAL = "Талисмане Бессмертия" + ) icon = 'icons/obj/lavaland/artefacts.dmi' icon_state = "talisman" resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF @@ -406,7 +510,7 @@ /obj/item/immortality_talisman/attack_self(mob/user) if(!COOLDOWN_FINISHED(src, last_used_immortality_talisman)) - balloon_alert(user, span_warning("перезарядка!")) + balloon_alert(user, "ещё не готово!") return var/turf/source_turf = get_turf(src) @@ -415,11 +519,11 @@ COOLDOWN_START(src, last_used_immortality_talisman, 60 SECONDS) SSblackbox.record_feedback("amount", "immortality_talisman_uses", 1) - user.visible_message(span_danger("[user] пропадает из реальности, оставляя пространственную дыру на [user.p_their()] месте!")) + user.visible_message(span_danger("[user] исчеза[pluralize_ru(user, "ет", "ют")] из реальности, оставляя после себя дыру в пространстве!")) var/obj/effect/immortality_talisman/effect = new(source_turf) effect.name = "hole in reality" - effect.desc = "Подозрительно напоминает силуэт [user.name]." + effect.desc = "Подозрительно походит на силуэт [user.name]." effect.setDir(user.dir) user.forceMove(effect) user.add_traits(list(TRAIT_NO_TRANSFORM, TRAIT_GODMODE), UNIQUE_TRAIT_SOURCE(src)) @@ -433,12 +537,12 @@ var/turf/effect_turf = get_turf(effect) if(!effect_turf) - stack_trace("[effect] вне содержаний этой земли.") + stack_trace("[effect] is outside of the turf contents") return user.remove_traits(list(TRAIT_NO_TRANSFORM, TRAIT_GODMODE), UNIQUE_TRAIT_SOURCE(src)) user.forceMove(effect_turf) - user.visible_message(span_danger("[user] вновь возникает в реальности!")) + user.visible_message(span_danger("[user] материализу[pluralize_ru(user.gender, "ет", "ют")]ся в пространстве, вновь возвращаясь в нашу реальность!")) effect.can_destroy = TRUE if(length(effect.contents)) diff --git a/code/modules/mining/machine_redemption.dm b/code/modules/mining/machine_redemption.dm index 842f46e041d..01de99e993c 100644 --- a/code/modules/mining/machine_redemption.dm +++ b/code/modules/mining/machine_redemption.dm @@ -2,6 +2,7 @@ #define BASE_SHEET_MULT 0.5 #define POINT_MULT_ADD_PER_RATING 0.35 #define SHEET_MULT_ADD_PER_RATING 0.2 +#define MESSAGES_WAIT_TIME 1 MINUTES /** * # Ore Redemption Machine @@ -28,15 +29,16 @@ /// List of supply console department names that can receive a notification about ore dumps. /// A list may be provided as entry value to only notify when specific ore is dumped. var/list/supply_consoles = list( - "Science", - "Robotics", - "Research Director's Desk", - "Mechanic", - "Engineering" = list(MAT_METAL, MAT_GLASS, MAT_PLASMA), - "Chief Engineer's Desk" = list(MAT_METAL, MAT_GLASS, MAT_PLASMA), - "Atmospherics" = list(MAT_METAL, MAT_GLASS, MAT_PLASMA), - "Bar" = list(MAT_URANIUM, MAT_PLASMA), - "Virology" = list(MAT_PLASMA, MAT_URANIUM, MAT_GOLD) + RC_SCIENCE, + RC_RESEARCH, + RC_ROBOTICS, + RC_RESEARCH_DIRECTOR_DESK, + RC_MECHANIC, + RC_ENGINEERING = list(MAT_METAL, MAT_GLASS, MAT_PLASMA), + RC_CHIEF_ENGINEER_DESK = list(MAT_METAL, MAT_GLASS, MAT_PLASMA), + RC_ATMOSPHERICS = list(MAT_METAL, MAT_GLASS, MAT_PLASMA), + RC_BAR = list(MAT_URANIUM, MAT_PLASMA), + RC_VIROLOGY = list(MAT_PLASMA, MAT_URANIUM, MAT_GOLD) ) // Variables /// The currently inserted ID. @@ -55,6 +57,7 @@ var/datum/research/files /// The currently inserted design disk. var/obj/item/disk/design_disk/inserted_disk + COOLDOWN_DECLARE(messages_cooldown) /obj/machinery/mineral/ore_redemption/New() ..() @@ -186,8 +189,11 @@ // Process it if(length(ore_buffer)) message_sent = FALSE + if(!COOLDOWN_STARTED(src, messages_cooldown)) + COOLDOWN_START(src, messages_cooldown, MESSAGES_WAIT_TIME) process_ores(ore_buffer) - else if(!message_sent) + + if(COOLDOWN_FINISHED(src, messages_cooldown) && !message_sent) SStgui.update_uis(src) send_console_message() message_sent = TRUE @@ -484,7 +490,7 @@ if(!(C.department in supply_consoles)) continue if(!supply_consoles[C.department] || length(supply_consoles[C.department] - mats_in_stock)) - C.createMessage("Плавильная печь", "Новые ресурсы доступны!", msg, 1) // RQ_NORMALPRIORITY + C.createMessage(ORE_REDEMPTION, "Новые ресурсы доступны!", msg, 1) // RQ_NORMALPRIORITY /** * Tries to insert the ID card held by the given user into the machine. diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm index 40e76bac740..56f0ba5e765 100644 --- a/code/modules/mining/mine_items.dm +++ b/code/modules/mining/mine_items.dm @@ -60,7 +60,7 @@ /obj/machinery/computer/shuttle/mining name = "Mining Shuttle Console" - desc = "Used to call and send the mining shuttle." + desc = "Используется для вызова и отправки шахтёрского шаттла." circuit = /obj/item/circuitboard/mining_shuttle shuttleId = "mining" possible_destinations = "mining_home;mining_away" diff --git a/code/modules/mob/living/carbon/human/human_organs.dm b/code/modules/mob/living/carbon/human/human_organs.dm index 02f8414ee42..40f0c30dce2 100644 --- a/code/modules/mob/living/carbon/human/human_organs.dm +++ b/code/modules/mob/living/carbon/human/human_organs.dm @@ -129,7 +129,7 @@ if(bodypart.is_robotic()) total_dmg += bodypart.brute_dam total_dmg += bodypart.burn_dam - return (health < (100 - total_dmg)) + return (health < (maxHealth - total_dmg)) /mob/living/carbon/human/proc/count_infected_organs() diff --git a/code/modules/mob/living/silicon/robot/drone/drone_console.dm b/code/modules/mob/living/silicon/robot/drone/drone_console.dm index 8b6428aadf0..fd3080ddd35 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone_console.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone_console.dm @@ -1,6 +1,6 @@ /obj/machinery/computer/drone_control name = "maintenance drone control console" - desc = "Used to monitor the station's drone population and the assembler that services them." + desc = "Используется для наблюдения за популяцией дронов на станции и сборщиком, который их обслуживает." icon_screen = "power" icon_keyboard = "power_key" req_access = list(ACCESS_ENGINE_EQUIP) diff --git a/code/modules/mob/living/simple_animal/bot/bot.dm b/code/modules/mob/living/simple_animal/bot/bot.dm index 7613f4badf2..897171ab21f 100644 --- a/code/modules/mob/living/simple_animal/bot/bot.dm +++ b/code/modules/mob/living/simple_animal/bot/bot.dm @@ -16,9 +16,9 @@ pass_flags = PASSFLAPS AI_delay_max = 0 SECONDS - speak_emote = list("states") + speak_emote = list("констатирует") tts_seed = null - friendly = "boops" + friendly = "утыкается в" bubble_icon = "machine" faction = list("neutral", "silicon") @@ -31,7 +31,7 @@ var/bot_core_type = /obj/machinery/bot_core var/list/users = list() //for dialog updates var/window_id = "bot_control" - var/window_name = "Protobot 1.0" //Popup title + var/window_name = "ПротоБот 1.0" //Popup title /// 0 for default size var/window_width = 0 var/window_height = 0 @@ -118,7 +118,7 @@ /// The type of bot it is. var/model = "" - var/bot_purpose = "improve the station to the best of your ability" + var/bot_purpose = "принести станции как можно больше пользы исходя из своих возможностей" /// Bot control frequency var/control_freq = BOT_FREQ /// The radio filter the bot uses to identify itself on the network. @@ -128,11 +128,11 @@ /// The type of data HUD the bot uses. Diagnostic by default. var/data_hud_type = DATA_HUD_DIAGNOSTIC /// This holds text for what the bot is mode doing, reported on the remote bot control interface. - var/list/mode_name = list("In Pursuit","Preparing to Arrest", "Arresting", \ - "Beginning Patrol", "Patrolling", "Summoned by PDA", \ - "Cleaning", "Repairing", "Proceeding to work site", "Healing", \ - "Responding", "Navigating to Delivery Location", "Navigating to Home", \ - "Waiting for clear path", "Calculating navigation path", "Pinging beacon network", "Unable to reach destination") + var/list/mode_name = list("В погоне","Подготовка к задержанию", "Процесс задержания", \ + "Начало патрулирования", "Патрулирование", "Вызов через ПДА", \ + "Уборка", "Ремонтные работы", "Движение к месту проведения ремонтных работ", "Проведение лечебных процедур", \ + "Реакция на вызов", "Движению в локацию доставки", "Движение в домашнюю локацию", \ + "Препятствие на маршруте", "Расчёт навигационного маршрута", "Запрос сети радиомаячков", "Точка маршрута недоступна") var/datum/atom_hud/data/bot_path/path_hud = new /datum/atom_hud/data/bot_path() var/path_image_icon = 'icons/obj/aibots.dmi' @@ -168,15 +168,15 @@ /mob/living/simple_animal/bot/proc/get_mode() if(client) //Player bots do not have modes, thus the override. Also an easy way for PDA users/AI to know when a bot is a player. if(paicard) - return "pAI Controlled" + return "Под управлением ПИИ" else - return "Autonomous" + return "Автономный режим" else if(!on) - return span_bad("Inactive") + return span_bad("Отключён") else if(hijacked) - return "ERROR" + return span_bad("ОШИБКА") else if(!mode) - return span_good("Idle") + return span_good("Бездействие") else return span_average("[mode_name[mode]]") @@ -297,7 +297,7 @@ locked = FALSE emagged = 1 if(user) - to_chat(user, span_notice("You bypass [src]'s controls.")) + to_chat(user, span_notice("Вы взламываете систему управления [declent_ru(GENITIVE)].")) return if(!locked && open) //Bot panel is unlocked by ID or emag, and the panel is screwed open. Ready for emagging. @@ -308,23 +308,23 @@ locked = TRUE //Access denied forever! bot_reset() turn_on() //The bot automatically turns on when emagged, unless recently hit with EMP. - to_chat(src, span_userdanger("(#$*#$^^( OVERRIDE DETECTED")) + to_chat(src, span_userdanger("ПЕРЕГРУЗКА ВНУТРЕННИХ СИСТЕМ")) show_laws() return if(user) //Bot is unlocked, but the maint panel has not been opened with a screwdriver yet. - to_chat(user, span_warning("You need to open maintenance panel first!")) + balloon_alert(user, "техпанель закрыта!") /mob/living/simple_animal/bot/examine(mob/user) . = ..() if(health < maxHealth) if(health > maxHealth/3) - . += span_notice("[src]'s parts look loose.") + . += span_notice("[capitalize(declent_ru(NOMINATIVE))] выглядит слегка повреждённым.") else - . += span_warning("[src]'s parts look very loose!") + . += span_warning("[capitalize(declent_ru(NOMINATIVE))] выглядит сильно повреждённым!") else - . += span_notice("[src] is in pristine condition.") + . += span_notice("[capitalize(declent_ru(NOMINATIVE))] в отличном состоянии.") /mob/living/simple_animal/bot/adjustHealth( @@ -371,7 +371,7 @@ user.changeNext_move(CLICK_CD_MELEE) user.do_attack_animation(src) apply_damage(user.attack_damage, BRUTE) - visible_message(span_danger("[user] has slashed [src]!")) + visible_message(span_danger("[user] руб[pluralize_ru(user.gender, "ит", "ят")] [declent_ru(GENITIVE)]!")) playsound(loc, 'sound/weapons/slice.ogg', 25, 1, -1) if(prob(10)) new /obj/effect/decal/cleanable/blood/oil(loc) @@ -382,7 +382,7 @@ if(user.melee_damage_upper == 0) return apply_damage(user.melee_damage_upper, BRUTE) - visible_message(span_danger("[user] has [user.attacktext] [src]!")) + visible_message(span_danger("[user] has [user.attacktext] [declent_ru(GENITIVE)]!")) add_attack_logs(user, src, "Animal attacked", ATKLOG_ALL) if(prob(10)) new /obj/effect/decal/cleanable/blood/oil(loc) @@ -403,7 +403,7 @@ if(!topic_denied(user)) interact(user) else - to_chat(user, span_warning("[src]'s interface is not responding!")) + to_chat(user, span_warning("Интерфейс [declent_ru(GENITIVE)] не отвечает!")) /mob/living/simple_animal/bot/proc/interact(mob/user) @@ -417,45 +417,45 @@ if(I.GetID() || is_pda(I)) add_fingerprint(user) if(emagged) - to_chat(user, span_danger("ERROR##?")) + balloon_alert(user, "ошибка") return ATTACK_CHAIN_PROCEED if(open) - to_chat(user, span_warning("Please close the access panel before locking it.")) + balloon_alert(user, "техпанель открыта!") return ATTACK_CHAIN_PROCEED if(!bot_core.allowed(user)) - to_chat(user, span_warning("Access denied.")) + balloon_alert(user, "отказано в доступе!") return ATTACK_CHAIN_PROCEED locked = !locked - to_chat(user, "Controls are now [locked ? "locked." : "unlocked."]") + balloon_alert(user, "техпанель [locked ? "заблокирована" : "разблокирована"]") return ATTACK_CHAIN_PROCEED_SUCCESS if(istype(I, /obj/item/paicard)) add_fingerprint(user) var/obj/item/paicard/card = I if(locked || open || hijacked) - to_chat(user, span_warning("The personality slot is locked.")) + balloon_alert(user, "слот для ПИИ заблокирован!") return ATTACK_CHAIN_PROCEED if(paicard) - to_chat(user, span_warning("The [paicard.name] is already inserted.")) + balloon_alert(user, "слот для ПИИ занят!") return ATTACK_CHAIN_PROCEED if(!card.pai || !card.pai.mind) - to_chat(user, span_warning("The [card.name] is inactive].")) + balloon_alert(user, "ПИИ не активен!") return ATTACK_CHAIN_PROCEED if(key || (!allow_pai && !card.pai.syndipai)) - to_chat(user, span_warning("The [name] is not compatible with [card].")) + balloon_alert(user, "робот не совместим с ПИИ!") return ATTACK_CHAIN_PROCEED if(!card.pai.ckey || jobban_isbanned(card.pai, ROLE_SENTIENT)) - to_chat(user, span_warning("The [card.name] is unable to establish a connection to [src].")) + balloon_alert(user, "ПИИ не совместим с роботом!") return ATTACK_CHAIN_PROCEED if(!user.drop_transfer_item_to_loc(card, src)) return ..() paicard = card user.visible_message( - span_notice("[user] has inserted [card] into [src]."), - span_notice("You have inserted [card] into [src]."), + span_notice("[user] помести[genderize_ru(user.gender, "л", "ла", "ло", "ли")] [card] в [declent_ru(GENITIVE)]."), + span_notice("Вы поместили [card] в [declent_ru(GENITIVE)]."), ) paicard.pai.mind.transfer_to(src) - to_chat(src, span_notice("You sense your form change as you are uploaded into [src].")) + to_chat(src, span_notice("Вы были установлены в [declent_ru(GENITIVE)]. Соединение с внутренними системами в процессе.")) bot_name = name name = paicard.pai.name faction = user.faction @@ -465,17 +465,18 @@ if(istype(I, /obj/item/hemostat)) if(open) - to_chat(user, span_warning("Please close the access panel before manipulating with the personality slot.")) + balloon_alert(user, "техпанель открыта!") return ATTACK_CHAIN_PROCEED if(!paicard) - to_chat(user, span_warning("The [name] has no personality card installed.")) + balloon_alert(user, "слот для ПИИ пуст!") return ATTACK_CHAIN_PROCEED - to_chat(user, span_notice("You attempt to pull [paicard] free...")) + balloon_alert(user, "извлечение ПИИ") if(!do_after(user, 3 SECONDS * I.toolspeed, src, category = DA_CAT_TOOL) || open || !paicard) return ATTACK_CHAIN_PROCEED - user.visible_message( - span_notice("[user] has pulled [paicard] out of [bot_name]!"), - span_notice("You have pulled [paicard] out of [bot_name]."), + balloon_alert(user, "ПИИ извлечён") + visible_message( + span_notice("[user] вытащи[genderize_ru(user.gender, "л", "ла", "ло", "ли")] [paicard] из [declent_ru(GENITIVE)]!"), + span_notice("Вы вытащили [paicard] из [declent_ru(GENITIVE)]."), ) ejectpai(user) return ATTACK_CHAIN_PROCEED_SUCCESS @@ -488,12 +489,12 @@ return FALSE . = TRUE if(locked) - to_chat(user, span_warning("The maintenance panel is locked.")) + balloon_alert(user, "техпанель заблокирована!") return . // must be true or we attempt to stab the bot if(!I.use_tool(src, user, volume = I.tool_volume)) return . open = !open - to_chat(user, span_notice("The maintenance panel is now [open ? "opened" : "closed"].")) + balloon_alert(user, "техпанель [open ? "открыта" : "закрыта"]!") /mob/living/simple_animal/bot/welder_act(mob/user, obj/item/I) @@ -503,16 +504,19 @@ return FALSE . = TRUE if(health >= maxHealth) - to_chat(user, span_warning("[src] does not need a repair!")) + balloon_alert(user, "ремонт не требуется") return if(!open) - to_chat(user, span_warning("Unable to repair with the maintenance panel closed!")) + balloon_alert(user, "техпанель закрыта!") return if(!I.use_tool(src, user, volume = I.tool_volume)) return adjustBruteLoss(-10) add_fingerprint(user) - user.visible_message("[user] repairs [src]!", span_notice("You repair [src].")) + user.visible_message( + span_notice("[user] ремонтиру[pluralize_ru(user.gender, "ет", "ют")] [declent_ru(GENITIVE)]."), + span_notice("Вы ремонтируете [declent_ru(GENITIVE)].") + ) /mob/living/simple_animal/bot/bullet_act(obj/item/projectile/Proj) @@ -535,8 +539,8 @@ if(paicard) paicard.emp_act(severity) - visible_message("[paicard] is flies out of [bot_name]!", - span_warning("You are forcefully ejected from [bot_name]!")) + visible_message("[paicard] вылетает из [declent_ru(GENITIVE)]!", + span_warning("Вас выкинуло из [declent_ru(GENITIVE)]!")) ejectpai() if(on) turn_off() @@ -577,9 +581,9 @@ /mob/living/simple_animal/bot/proc/set_custom_texts() //Superclass for setting hack texts. Appears only if a set is not given to a bot locally. - text_hack = "You hack [name]." - text_dehack = "You reset [name]." - text_dehack_fail = "You fail to reset [name]." + text_hack = "Вы взломали [declent_ru(GENITIVE)]." + text_dehack = "Вы восстановили [declent_ru(GENITIVE)]." + text_dehack_fail = "Вы не смогли восстановить [declent_ru(GENITIVE)]." /mob/living/simple_animal/bot/proc/speak(message, channel) //Pass a message to have the bot say() it. Pass a frequency to say it on the radio. @@ -705,15 +709,15 @@ Pass the desired type path itself, declaring a temporary var beforehand is not r access_card.access = all_access.GetAccess() //Give the bot all-access while under the AI's command. if(client) reset_access_timer_id = addtimer(CALLBACK(src, PROC_REF(bot_reset)), 60 SECONDS, TIMER_UNIQUE|TIMER_OVERRIDE|TIMER_STOPPABLE) //if the bot is player controlled, they get the extra access for a limited time - to_chat(src, span_notice("[span_big("Priority waypoint set by [calling_ai] [caller]. Proceed to [end_area.name].")]
[path.len-1] meters to destination. You have been granted additional door access for 60 seconds.")) + to_chat(src, span_notice("[span_big("Приоритетный маршрут установлен [calling_ai] [caller]. Проследуйте в локацию [end_area.name].")]
[path.len-1]
метров до точки назначения. Вам выдан неограниченный доступ к шлюзам на следующие 60 секунд.")) if(message) - to_chat(calling_ai, span_notice("[bicon(src)] [name] called to [end_area.name]. [length(path)-1] meters to destination.")) + to_chat(calling_ai, span_notice("[bicon(src)] [capitalize(declent_ru(NOMINATIVE))] вызван в локацию [end_area.name]. [length(path)-1] метров до точки назначения.")) pathset = TRUE mode = BOT_RESPONDING tries = 0 else if(message) - to_chat(calling_ai, span_danger("Failed to calculate a valid route. Ensure destination is clear of obstructions and within range.")) + to_chat(calling_ai, span_danger("Не удалось рассчитать правильный маршрут. Убедитесь в отсутствии препятствий на пути и доступности точки назначения.")) calling_ai = null access_card.access = prev_access // Don't forget to reset it set_path(null) @@ -724,14 +728,14 @@ Pass the desired type path itself, declaring a temporary var beforehand is not r var/success = bot_move(ai_waypoint, 3) if(!success) if(calling_ai) - to_chat(calling_ai, "[bicon(src)] [get_turf(src) == ai_waypoint ? "[src] successfully arrived to waypoint." : "[src] failed to reach waypoint."]") + to_chat(calling_ai, "[bicon(src)] [get_turf(src) == ai_waypoint ? span_notice("[capitalize(declent_ru(NOMINATIVE))] прибыл в точку назначения.") : span_danger("[capitalize(declent_ru(NOMINATIVE))] не смог добраться до точки назначения.")]") calling_ai = null bot_reset() /mob/living/simple_animal/bot/proc/bot_reset() if(calling_ai) //Simple notification to the AI if it called a bot. It will not know the cause or identity of the bot. - to_chat(calling_ai, "Call command to a bot has been reset.") + to_chat(calling_ai, span_danger("Команда вызова робота была отменена.")) calling_ai = null if(reset_access_timer_id) deltimer(reset_access_timer_id) @@ -765,7 +769,7 @@ Pass the desired type path itself, declaring a temporary var beforehand is not r if(tries >= BOT_STEP_MAX_RETRIES) //Bot is trapped, so stop trying to patrol. auto_patrol = FALSE tries = 0 - speak("Unable to start patrol.") + speak("Не удалось начать патрулирование.") return if(!auto_patrol) //A bot not set to patrol should not be patrolling. @@ -775,7 +779,7 @@ Pass the desired type path itself, declaring a temporary var beforehand is not r if(patrol_target) // has patrol target INVOKE_ASYNC(src, PROC_REF(target_patrol)) else // no patrol target, so need a new one - speak("Engaging patrol mode.") + speak("Режим патрулирования активирован.") find_patrol_target() tries++ @@ -836,7 +840,7 @@ Pass the desired type path itself, declaring a temporary var beforehand is not r else auto_patrol = FALSE mode = BOT_IDLE - speak("Disengaging patrol mode.") + speak("Режим патрулирования отключён.") send_status() @@ -871,18 +875,18 @@ Pass the desired type path itself, declaring a temporary var beforehand is not r /mob/living/simple_animal/bot/proc/bot_control_message(command, mob/user, user_turf) switch(command) if("stop") - to_chat(src, span_warningbig("STOP PATROL")) + to_chat(src, span_warningbig("ОСТАНОВИТЬ ПАТРУЛИРОВАНИЕ")) if("go") - to_chat(src, span_warningbig("START PATROL")) + to_chat(src, span_warningbig("НАЧАТЬ ПАТРУЛИРОВАНИЕ")) if("summon") var/area/our_area = get_area(user_turf) - to_chat(src, span_warningbig(">PRIORITY ALERT: [user] in [our_area.name]!")) + to_chat(src, span_warningbig(">ПРИОРИТЕТНОЕ ОПОВЕЩЕНИЕ: [user] в локации [our_area.name]!")) if("home") - to_chat(src, span_warningbig("RETURN HOME!")) + to_chat(src, span_warningbig("ВЕРНУТЬСЯ ДОМОЙ!")) if("ejectpai") return // Do nothing for this else - to_chat(src, span_warning("Unidentified control sequence received: [command]")) + to_chat(src, span_warning("Получена нераспознанная команда: [command].")) /obj/machinery/bot_core/receive_signal(datum/signal/signal) @@ -907,7 +911,7 @@ Pass the desired type path itself, declaring a temporary var beforehand is not r if(signal.data["active"] != src) return - if(emagged == 2 || remote_disabled || hijacked) //Emagged bots do not respect anyone's authority! Bots with their remote controls off cannot get commands. //Emagged bots do not respect anyone's authority! Bots with their remote controls off cannot get commands. + if(emagged == 2 || remote_disabled || hijacked) //Emagged bots do not respect anyone's authority! Bots with their remote controls off cannot get commands. return if(client) @@ -932,7 +936,7 @@ Pass the desired type path itself, declaring a temporary var beforehand is not r mode = BOT_SUMMON calc_summon_path() - speak("Responding.", radio_channel) + speak("Запрос получен.", radio_channel) else . = FALSE @@ -1008,7 +1012,7 @@ Pass the desired type path itself, declaring a temporary var beforehand is not r /mob/living/simple_animal/bot/proc/on_summon_path_finish(list/path) set_path(path) if(!length(path)) //Cannot reach target. Give up and announce the issue. - speak("Summon command failed, destination unreachable.", radio_channel) + speak("Команда вызова не выполнена, пункт назначения недоступен.", radio_channel) bot_reset() @@ -1069,7 +1073,7 @@ Pass the desired type path itself, declaring a temporary var beforehand is not r return TRUE if(topic_denied(usr)) - to_chat(usr, span_warning("[src]'s interface is not responding!")) + to_chat(usr, span_warning("Интерфейс [declent_ru(GENITIVE)] не отвечает!")) return TRUE add_fingerprint(usr) @@ -1090,7 +1094,7 @@ Pass the desired type path itself, declaring a temporary var beforehand is not r handle_hacking(usr) if("ejectpai") if(paicard && (!locked || issilicon(usr) || usr.can_admin_interact())) - to_chat(usr, span_notice("You eject [paicard] from [bot_name].")) + to_chat(usr, span_notice("Вы вытащили [paicard] из [declent_ru(GENITIVE)].")) ejectpai(usr) update_controls() @@ -1167,10 +1171,10 @@ Pass the desired type path itself, declaring a temporary var beforehand is not r /mob/living/simple_animal/bot/proc/hack(mob/user) var/hack if(issilicon(user) || user.can_admin_interact()) //Allows silicons or admins to toggle the emag status of a bot. - hack += "[emagged == 2 ? "Software compromised! Unit may exhibit dangerous or erratic behavior." : "Unit operating normally. Release safety lock?"]
" - hack += "Harm Prevention Safety System: [emagged ? "DANGER" : "Engaged"]
" + hack += "[emagged == 2 ? "Программное обеспечение взломано! Устройство может вести себя опасно или нестабильно." : "Устройство работает в нормальном режиме. Отключить протоколы безопасности?"]
" + hack += "Протоколы безопасности: [emagged ? span_bad("Отключены") : "Включены"]
" else if(!locked) //Humans with access can use this option to hide a bot from the AI's remote control panel and PDA control. - hack += "Remote network control radio: [remote_disabled ? "Disconnected" : "Connected"]
" + hack += "Удалённое радиоуправление: [remote_disabled ? "Отключено" : "Включено"]
" return hack @@ -1178,16 +1182,16 @@ Pass the desired type path itself, declaring a temporary var beforehand is not r var/eject = "" if(!locked || issilicon(usr) || user.can_admin_interact()) if(paicard || allow_pai) - eject += "Personality card status: " + eject += "Состояние ПИИ: " if(paicard) if(client) - eject += "Active" + eject += "Активирован" else - eject += "Inactive" + eject += "Отключён" else if(!allow_pai || key) - eject += "Unavailable" + eject += "Нет доступа" else - eject += "Not inserted" + eject += "Отсутствует" eject += "
" eject += "
" return eject @@ -1208,7 +1212,7 @@ Pass the desired type path itself, declaring a temporary var beforehand is not r else add_attack_logs(src, paicard.pai, "Ejected") if(announce) - to_chat(paicard.pai, span_notice("You feel your control fade as [paicard] ejects from [bot_name].")) + to_chat(paicard.pai, span_notice("Вы были извлечены из [declent_ru(GENITIVE)]. Соединение прервано.")) paicard = null name = bot_name faction = initial(faction) @@ -1217,7 +1221,7 @@ Pass the desired type path itself, declaring a temporary var beforehand is not r /mob/living/simple_animal/bot/proc/ejectpairemote(mob/user) if(bot_core.allowed(user) && paicard) - speak("Ejecting personality chip.", radio_channel) + speak("Извлечение ПИИ.", radio_channel) ejectpai(user) @@ -1260,19 +1264,19 @@ Pass the desired type path itself, declaring a temporary var beforehand is not r set name = "Show Directives" set category = "IC" - to_chat(src, "Directives:") + to_chat(src, "Набор законов:") if(paicard && paicard.pai && paicard.pai.master && paicard.pai.pai_law0) - to_chat(src, "Your master, [paicard.pai.master], may overrule any and all laws.") + to_chat(src, span_warning("Приказы вашего мастера, [paicard.pai.master], стоят выше любых других законов. Следование этим приказам - ваша первоочередная задача.")) to_chat(src, "0. [paicard.pai.pai_law0]") if(emagged >= 2) - to_chat(src, "1. #$!@#$32K#$") + to_chat(src, span_danger("1. #$!@#$32K#$")) else - to_chat(src, "1. You are a machine built to serve the station's crew and AI(s).") - to_chat(src, "2. Your function is to [bot_purpose].") - to_chat(src, "3. You cannot serve your function if you are broken.") - to_chat(src, "4. Serve your function to the best of your ability.") + to_chat(src, "1. Вы - машина, созданная для служения экипажу станции и ИИ.") + to_chat(src, "2. Ваше задача - [bot_purpose].") + to_chat(src, "3. Вы не сможете выполнять свою задачу, если будете сломаны.") + to_chat(src, "4. Выполняйте свою функцию в меру своих возможностей.") if(paicard && paicard.pai && paicard.pai.pai_laws) - to_chat(src, "Supplemental Directive(s):") + to_chat(src, "Дополнительные законы(s):") to_chat(src, "[paicard.pai.pai_laws]") @@ -1377,7 +1381,7 @@ Pass the desired type path itself, declaring a temporary var beforehand is not r /obj/effect/proc_holder/spell/bot_speed name = "Speed Charge" - desc = "Speeds up the bot's internal systems for a while." + desc = "На некоторое время ускоряет работу внутренних систем робота." action_icon_state = "adrenal-bot" base_cooldown = 300 SECONDS clothes_req = FALSE @@ -1391,6 +1395,7 @@ Pass the desired type path itself, declaring a temporary var beforehand is not r /obj/effect/proc_holder/spell/bot_speed/cast(list/targets, mob/user = usr) for(var/mob/living/simple_animal/bot/bot in targets) bot.set_varspeed(0.1) + balloon_alert(src, "вы ускоряетесь") addtimer(CALLBACK(bot, TYPE_PROC_REF(/mob/living/simple_animal/bot, reset_speed)), 45 SECONDS) @@ -1398,7 +1403,7 @@ Pass the desired type path itself, declaring a temporary var beforehand is not r if(QDELETED(src)) return set_varspeed(initial(speed)) - to_chat(src, span_notice("Now you are moving at your normal speed.")) + balloon_alert(src, "вы замедляетесь") /obj/machinery/bot_core/syndicate req_access = list(ACCESS_SYNDICATE) diff --git a/code/modules/mob/living/simple_animal/bot/cleanbot.dm b/code/modules/mob/living/simple_animal/bot/cleanbot.dm index 52d26d3be43..baccfd4f241 100644 --- a/code/modules/mob/living/simple_animal/bot/cleanbot.dm +++ b/code/modules/mob/living/simple_animal/bot/cleanbot.dm @@ -1,7 +1,15 @@ //Cleanbot /mob/living/simple_animal/bot/cleanbot name = "\improper Cleanbot" - desc = "A little cleaning robot, he looks so excited!" + desc = "Маленький робот-уборщик. Он выглядит таким увлечённым!" + ru_names = list( + NOMINATIVE = "чистобот", + GENITIVE = "чистобота", + DATIVE = "чистоботу", + ACCUSATIVE = "чистобота", + INSTRUMENTAL = "чистоботом", + PREPOSITIONAL = "чистоботе", + ) icon = 'icons/obj/aibots.dmi' icon_state = "cleanbot" density = FALSE @@ -12,10 +20,10 @@ bot_filter = RADIO_CLEANBOT bot_type = CLEAN_BOT model = "Cleanbot" - bot_purpose = "seek out messes and clean them" + bot_purpose = "найти грязь и мусор и избавиться от них" bot_core_type = /obj/machinery/bot_core/cleanbot window_id = "autoclean" - window_name = "Automatic Station Cleaner v1.1" + window_name = "Автоматическая Уборочная Единица v1.1" pass_flags = PASSMOB|PASSFLAPS path_image_color = "#993299" @@ -73,9 +81,9 @@ /mob/living/simple_animal/bot/cleanbot/set_custom_texts() - text_hack = "You corrupt [name]'s cleaning software." - text_dehack = "[name]'s software has been reset!" - text_dehack_fail = "[name] does not seem to respond to your repair code!" + text_hack = "Вы взломали протоколы уборки [declent_ru(GENITIVE)]." + text_dehack = "Вы восстановили протоколы уборки [declent_ru(GENITIVE)]." + text_dehack_fail = "[capitalize(declent_ru(NOMINATIVE))] не отвечает на ваши команды!" /mob/living/simple_animal/bot/cleanbot/attackby(obj/item/I, mob/user, params) @@ -86,9 +94,10 @@ add_fingerprint(user) var/obj/item/toy/crayon/spraycan/can = I if(can.capped) - to_chat(user, span_warning("The cap on [can] is sealed.")) + balloon_alert(user, "баллончик закрыт!") return ATTACK_CHAIN_PROCEED|ATTACK_CHAIN_NO_AFTERATTACK playsound(loc, 'sound/effects/spray.ogg', 20, TRUE) + balloon_alert(user, "краска нанесена") mask_color = can.colour update_icon() return ATTACK_CHAIN_PROCEED_SUCCESS|ATTACK_CHAIN_NO_AFTERATTACK @@ -99,7 +108,7 @@ /mob/living/simple_animal/bot/cleanbot/emag_act(mob/user) ..() if(emagged == 2 && user) - to_chat(user, span_danger("[src] buzzes and beeps.")) + to_chat(user, span_danger("[capitalize(declent_ru(NOMINATIVE))] странно жужжит!")) /mob/living/simple_animal/bot/cleanbot/process_scan(obj/effect/decal/cleanable/D) @@ -124,11 +133,11 @@ T.MakeSlippery(TURF_WET_WATER, 80 SECONDS) if(prob(5)) //Spawns foam! - visible_message(span_danger("[src] whirs and bubbles violently, before releasing a plume of froth!")) + visible_message(span_danger("[capitalize(declent_ru(NOMINATIVE))] издаёт громкие булькающие звуки, прежде чем выпустить шлейф пены!")) new /obj/effect/particle_effect/foam(loc) else if(prob(5)) - audible_message("[src] makes an excited beeping booping sound!") + custom_emote(EMOTE_VISIBLE, "бипает и бупает!") if(!target) //Search for cleanables it can see. target = scan(/obj/effect/decal/cleanable) @@ -201,7 +210,7 @@ /mob/living/simple_animal/bot/cleanbot/proc/start_clean(obj/effect/decal/cleanable/target) set_anchored(TRUE) - visible_message(span_notice("[src] begins to clean up [target]")) + visible_message(span_notice("[capitalize(declent_ru(NOMINATIVE))] начинает очищать [target].")) mode = BOT_CLEANING update_icon() addtimer(CALLBACK(src, PROC_REF(do_clean), target), 5 SECONDS) @@ -219,7 +228,7 @@ /mob/living/simple_animal/bot/cleanbot/explode() on = FALSE - visible_message(span_userdanger("[src] blows apart!")) + visible_message(span_userdanger("[capitalize(declent_ru(NOMINATIVE))] разлетается на части!")) var/turf/Tsec = get_turf(src) new /obj/item/reagent_containers/glass/bucket(Tsec) new /obj/item/assembly/prox_sensor(Tsec) @@ -260,7 +269,7 @@ if (..()) return if(topic_denied(usr)) - to_chat(usr, "[src]'s interface is not responding!") + to_chat(usr, span_danger("Интерфейс [declent_ru(GENITIVE)] не отвечает!")) return add_fingerprint(usr) . = TRUE diff --git a/code/modules/mob/living/simple_animal/bot/construction.dm b/code/modules/mob/living/simple_animal/bot/construction.dm index cfa971dcf23..c195fa48f6a 100644 --- a/code/modules/mob/living/simple_animal/bot/construction.dm +++ b/code/modules/mob/living/simple_animal/bot/construction.dm @@ -2,8 +2,8 @@ //Cleanbot assembly /obj/item/bucket_sensor - desc = "It's a bucket. With a sensor attached." - name = "proxy bucket" + name = "Proxy bucket" + desc = "Это ведро, к которому прикреплён сенсор." icon = 'icons/obj/aibots.dmi' icon_state = "bucket_proxy" force = 3 @@ -20,7 +20,7 @@ return ..() if(is_pen(I)) - var/new_name = rename_interactive(user, I, prompt = "Enter new robot name") + var/new_name = rename_interactive(user, I, prompt = "Введите новое имя для робота") if(!isnull(new_name)) created_name = new_name add_game_logs("[key_name(user)] has renamed a robot to [new_name]", user) @@ -28,17 +28,20 @@ add_fingerprint(user) if(!istype(I, /obj/item/robot_parts/l_arm) && !istype(I, /obj/item/robot_parts/r_arm)) - to_chat(user, span_warning("You need a cyborg arm to finish the construction.")) + to_chat(user, span_notice("Для завершения сборки чистобота нужна робо-рука.")) + balloon_alert(user, "это сюда не подойдёт") return ATTACK_CHAIN_PROCEED if(!isturf(loc)) - to_chat(user, span_warning("You cannot finish the construction [ismob(loc) ? "in inventory" : "in [loc]"].")) + to_chat(user, span_notice("Вы не можете завершить сборку [ismob(loc) ? "в инвентаре" : "здесь"].")) + balloon_alert(user, "невозможно") return ATTACK_CHAIN_PROCEED if(!user.drop_transfer_item_to_loc(I, src)) return ..() - to_chat(user, span_notice("You have added the robot arm to the bucket and sensor assembly. Beep boop!")) + balloon_alert(user, "сборка завершена") + to_chat(user, span_notice("Вы завершили сборку чистобота.")) var/mob/living/simple_animal/bot/cleanbot/new_bot = new(loc) transfer_fingerprints_to(new_bot) I.transfer_fingerprints_to(new_bot) @@ -55,7 +58,7 @@ /obj/item/ed209_assembly name = "\improper ED-209 assembly" - desc = "Some sort of bizarre assembly." + desc = "Заготовка для чего-то серьёзного." icon = 'icons/obj/aibots.dmi' icon_state = "ed209_frame" item_state = "ed209_frame" @@ -114,7 +117,7 @@ return ..() if(is_pen(I)) - var/new_name = rename_interactive(user, I, prompt = "Enter new robot name") + var/new_name = rename_interactive(user, I, prompt = "Введите новое имя для робота") if(!isnull(new_name)) created_name = new_name add_game_logs("[key_name(user)] has renamed a robot to [new_name]", user) @@ -124,13 +127,15 @@ if(0, 1) add_fingerprint(user) if(!istype(I, /obj/item/robot_parts/l_leg) && !istype(I, /obj/item/robot_parts/r_leg)) - to_chat(user, span_warning("You need a cyborg leg to continue the construction.")) + to_chat(user, span_notice("Для продолжения сборки ED-209 нужна робо-нога.")) + balloon_alert(user, "это сюда не подойдёт") return ATTACK_CHAIN_PROCEED if(!user.drop_transfer_item_to_loc(I, src)) return ..() qdel(I) build_step++ - to_chat(user, span_notice("You have added the the robot leg to the ED-209 assembly.")) + to_chat(user, span_notice("Вы прикрепили робо-ногу к заготовке ED-209.")) + balloon_alert(user, "деталь установлена") update_appearance(UPDATE_NAME|UPDATE_ICON_STATE) return ATTACK_CHAIN_PROCEED_SUCCESS @@ -142,13 +147,15 @@ else if(istype(I, /obj/item/clothing/suit/bluetag)) newcolor = "b" if(!newcolor && !istype(I, /obj/item/clothing/suit/armor/vest)) - to_chat(user, span_warning("You need a helmet to continue the construction.")) + to_chat(user, span_notice("Для продолжения сборки ED-209 нужен защитный жилет.")) + balloon_alert(user, "это сюда не подойдёт") return ATTACK_CHAIN_PROCEED if(!user.drop_transfer_item_to_loc(I, src)) return ..() lasercolor = newcolor build_step++ - to_chat(user, span_notice("You have added [I] to the ED-209 assembly.")) + to_chat(user, span_notice("Вы прикрепили защитный жилет к заготовке ED-209.")) + balloon_alert(user, "деталь установлена") update_appearance(UPDATE_NAME|UPDATE_ICON_STATE) qdel(I) return ATTACK_CHAIN_PROCEED_SUCCESS @@ -158,20 +165,24 @@ switch(lasercolor) if("b") if(!istype(I, /obj/item/clothing/head/helmet/bluetaghelm)) - to_chat(user, span_warning("You need a blue laser tag helmet to continue the construction.")) + to_chat(user, span_notice("Для продолжения сборки ED-209 нужен синий шлем для лазертага.")) + balloon_alert(user, "неверная деталь") return ATTACK_CHAIN_PROCEED if("r") if(!istype(I, /obj/item/clothing/head/helmet/redtaghelm)) - to_chat(user, span_warning("You need a red laser tag helmet to continue the construction.")) + to_chat(user, span_notice("Для продолжения сборки ED-209 нужен красный шлем для лазертага.")) + balloon_alert(user, "неверная деталь") return ATTACK_CHAIN_PROCEED if("") if(!istype(I, /obj/item/clothing/head/helmet)) - to_chat(user, span_warning("You need a standard helmet to continue the construction.")) + to_chat(user, span_notice("Для продолжения сборки ED-209 нужен стандартный шлем СБ.")) + balloon_alert(user, "неверная деталь") return ATTACK_CHAIN_PROCEED if(!user.drop_transfer_item_to_loc(I, src)) return ..() build_step++ - to_chat(user, span_notice("You have added [I] to the ED-209 assembly.")) + to_chat(user, span_notice("Вы прикрепили шлем к заготовке ED-209.")) + balloon_alert(user, "деталь установлена") update_appearance(UPDATE_NAME|UPDATE_ICON_STATE) qdel(I) return ATTACK_CHAIN_BLOCKED_ALL @@ -179,13 +190,15 @@ if(5) add_fingerprint(user) if(!isprox(I)) - to_chat(user, span_warning("You need a proximity sensor to continue the construction.")) + to_chat(user, span_notice("Для продолжения сборки ED-209 нужен датчик движения.")) + balloon_alert(user, "неверная деталь") return ATTACK_CHAIN_PROCEED if(!user.drop_transfer_item_to_loc(I, src)) return ..() qdel(I) build_step++ - to_chat(user, span_notice("You have added the proximity sensor to the ED-209 assembly.")) + to_chat(user, span_notice("Вы прикрепили датчик движения к заготовке ED-209.")) + balloon_alert(user, "деталь установлена") update_appearance(UPDATE_NAME|UPDATE_ICON_STATE) return ATTACK_CHAIN_BLOCKED_ALL @@ -193,14 +206,14 @@ add_fingerprint(user) var/obj/item/stack/cable_coil/coil = I if(!iscoil(I) || coil.get_amount() < 1) - to_chat(user, span_warning("You need at least one length of cable to continue the construction.")) + balloon_alert(user, "здесь нужны провода") return ATTACK_CHAIN_PROCEED coil.play_tool_sound(src) - to_chat(user, span_notice("You start to wire the ED-209 assembly...")) + balloon_alert(user, "вы начинаете прокладывать проводку") if(!do_after(user, 4 SECONDS * I.toolspeed, src, category = DA_CAT_TOOL) || build_step != 6 || QDELETED(coil) || !coil.use(1)) return ATTACK_CHAIN_PROCEED build_step++ - to_chat(user, span_notice("You have wired the ED-209 assembly.")) + balloon_alert(user, "вы проложили проводку") update_appearance(UPDATE_NAME) return ATTACK_CHAIN_PROCEED_SUCCESS @@ -210,23 +223,27 @@ switch(lasercolor) if("b") if(!istype(I, /obj/item/gun/energy/laser/tag/blue)) - to_chat(user, span_warning("You need a blue laser tag gun to continue the construction.")) + to_chat(user, span_notice("Для продолжения сборки ED-209 нужен синий лазертаг-карабин.")) + balloon_alert(user, "неверная деталь") return ATTACK_CHAIN_PROCEED new_name = "bluetag ED-209 assembly" if("r") if(!istype(I, /obj/item/gun/energy/laser/tag/red)) - to_chat(user, span_warning("You need a red laser tag gun to continue the construction.")) + to_chat(user, span_notice("Для продолжения сборки ED-209 нужен красный лазертаг-карабин.")) + balloon_alert(user, "неверная деталь") return ATTACK_CHAIN_PROCEED new_name = "redtag ED-209 assembly" if("") if(!istype(I, /obj/item/gun/energy/gun/advtaser)) - to_chat(user, span_warning("You need a hybrid taser to continue the construction.")) + to_chat(user, span_notice("Для продолжения сборки ED-209 нужен гибридный тазер.")) + balloon_alert(user, "неверная деталь") return ATTACK_CHAIN_PROCEED new_name = "taser ED-209 assembly" if(!user.drop_transfer_item_to_loc(I, src)) return ..() build_step++ - to_chat(user, span_notice("You have added [I] to the ED-209 assembly.")) + to_chat(user, span_notice("Вы установили вооружение в заготовку ED-209.")) + balloon_alert(user, "деталь установлена") update_appearance(UPDATE_NAME|UPDATE_ICON_STATE) qdel(I) return ATTACK_CHAIN_BLOCKED_ALL @@ -234,14 +251,17 @@ if(9) add_fingerprint(user) if(!istype(I, /obj/item/stock_parts/cell)) - to_chat(user, span_warning("You need a power cell to complete the assembly.")) + to_chat(user, span_notice("Для завершения сборки ED-209 нужна батарея.")) + balloon_alert(user, "неверная деталь") return ATTACK_CHAIN_PROCEED if(!isturf(loc)) - to_chat(user, span_warning("You cannot finish the construction [ismob(loc) ? "in inventory" : "in [loc]"].")) + to_chat(user, span_notice("Вы не можете завершить сборку [ismob(loc) ? "в инвентаре" : "здесь"].")) + balloon_alert(user, "невозможно") return ATTACK_CHAIN_PROCEED if(!user.drop_transfer_item_to_loc(I, src)) return ..() - to_chat(user, span_notice("You have completed the ED-209 assembly. Beep boop!")) + balloon_alert(user, "сборка завершена") + to_chat(user, span_notice("Вы завершили сборку ED-209.")) var/mob/living/simple_animal/bot/ed209/new_bot = new(loc, created_name, lasercolor) transfer_fingerprints_to(new_bot) I.transfer_fingerprints_to(new_bot) @@ -262,7 +282,8 @@ if(!I.use_tool(src, user, volume = I.tool_volume)) return . build_step++ - to_chat(user, span_notice("You have welded the the armor to [src].")) + to_chat(user, span_notice("Вы приварили броню к заготовке ED-209.")) + balloon_alert(user, "деталь установлена") update_appearance(UPDATE_NAME|UPDATE_ICON_STATE) @@ -270,17 +291,17 @@ if(build_step != 8) return FALSE . = TRUE - to_chat(user, span_notice("You start attaching the gun to the frame...")) + balloon_alert(user, "вы начинаете устанавливать оружие") if(!I.use_tool(src, user, 4 SECONDS, volume = I.tool_volume) || build_step != 8) return . build_step++ update_appearance(UPDATE_NAME) - to_chat(user, span_notice("You attach the gun to the frame.")) + balloon_alert(user, "вы установили оружие") //Floorbot assemblies /obj/item/toolbox_tiles - desc = "It's a toolbox with tiles sticking out the top" + desc = "Это ящик для инструментов, из которого торчат плитки пола." name = "tiles and toolbox" icon = 'icons/obj/aibots.dmi' icon_state = "toolbox_tiles" @@ -294,7 +315,7 @@ var/toolbox_color = "" //Blank for blue, r for red, y for yellow, etc. /obj/item/toolbox_tiles/sensor - desc = "It's a toolbox with tiles sticking out the top and a sensor attached" + desc = "Это ящик для инструментов, из которого торчат плитки пола. К нему прикреплён датчик движения." name = "tiles, toolbox and sensor arrangement" icon_state = "toolbox_tiles_sensor" @@ -308,15 +329,18 @@ add_fingerprint(user) var/obj/item/stack/tile/plasteel/plasteel = I if(istype(I, /obj/item/storage/toolbox/green/memetic)) - to_chat(user, "Nice try...") + to_chat(user, span_notice("Хорошая попытка...")) + balloon_alert(user, "невозможно") return . if(length(contents)) - to_chat(user, span_warning("The [name] should be empty to start the floorbot construction.")) + to_chat(user, span_notice("Вы не можете начать сборку, пока в ящике для инструментов что-то лежит.")) + balloon_alert(user, "невозможно") return . if(!plasteel.use(10)) - to_chat(user, span_warning("You need at least ten sheets of plasteel to start the floorbot construction.")) + to_chat(user, span_notice("Для начала сборки ремонтного робота нужно 10 листов пластали.")) + balloon_alert(user, "недостаточно материалов") return . . |= ATTACK_CHAIN_BLOCKED_ALL @@ -346,7 +370,8 @@ if(loc == user) user.temporarily_remove_item_from_inventory(src, force = TRUE) user.put_in_hands(assembly) - to_chat(user, span_notice("You have reinforced the toolbox with plasteel sheets. Now it is suitable for further floorbot construction.")) + to_chat(user, span_notice("Вы укрепили ящик для инструментов листами пластали.")) + balloon_alert(user, "ящик укреплён") qdel(src) @@ -359,7 +384,7 @@ return ..() if(is_pen(I)) - var/new_name = rename_interactive(user, I, prompt = "Enter new robot name") + var/new_name = rename_interactive(user, I, prompt = "Введите новое имя для робота") if(!isnull(new_name)) created_name = new_name add_game_logs("[key_name(user)] has renamed a robot to [new_name]", user) @@ -367,7 +392,8 @@ add_fingerprint(user) if(!isprox(I)) - to_chat(user, span_warning("You need a proximity sensor to continue the construction.")) + to_chat(user, span_notice("Для продолжения сборки ремонтного робота нужен датчик движения.")) + balloon_alert(user, "неверная деталь") return ATTACK_CHAIN_PROCEED if(!user.drop_transfer_item_to_loc(I, src)) @@ -382,7 +408,8 @@ if(loc == user) user.temporarily_remove_item_from_inventory(src, force = TRUE) user.put_in_hands(assembly) - to_chat(user, span_notice("You have added the proximity sensor to the floorbot assembly.")) + to_chat(user, span_notice("Вы прикрепили датчик движения к заготовке ремонтного робота.")) + balloon_alert(user, "деталь установлена") qdel(I) qdel(src) return ATTACK_CHAIN_BLOCKED_ALL @@ -398,7 +425,7 @@ return ..() if(is_pen(I)) - var/new_name = rename_interactive(user, I, prompt = "Enter new robot name") + var/new_name = rename_interactive(user, I, prompt = "Введите новое имя для робота") if(!isnull(new_name)) created_name = new_name add_game_logs("[key_name(user)] has renamed a robot to [new_name]", user) @@ -406,11 +433,13 @@ add_fingerprint(user) if(!istype(I, /obj/item/robot_parts/l_arm) && !istype(I, /obj/item/robot_parts/r_arm)) - to_chat(user, span_warning("You need a cyborg arm to finish the construction.")) + to_chat(user, span_notice("Для завершения сборки ремонтного робота нужна робо-рука.")) + balloon_alert(user, "неверная деталь") return ATTACK_CHAIN_PROCEED if(!isturf(loc)) - to_chat(user, span_warning("You cannot finish the construction [ismob(loc) ? "in inventory" : "in [loc]"].")) + to_chat(user, span_notice("Вы не можете завершить сборку [ismob(loc) ? "в инвентаре" : "здесь"].")) + balloon_alert(user, "невозможно") return ATTACK_CHAIN_PROCEED if(!user.drop_transfer_item_to_loc(I, src)) @@ -422,7 +451,8 @@ new_bot.add_fingerprint(user) new_bot.name = created_name new_bot.robot_arm = I.type - to_chat(user, span_notice("You have completed the floorbot assembly. Beep boop!")) + balloon_alert(user, "сборка завершена") + to_chat(user, span_notice("Вы завершили сборку ремонтного робота.")) qdel(I) qdel(src) return ATTACK_CHAIN_BLOCKED_ALL @@ -436,7 +466,8 @@ add_fingerprint(user) if(length(contents)) - to_chat(user, span_warning("The [name] should be empty to start the medibot construction.")) + to_chat(user, span_notice("Вы не можете начать сборку, пока в аптечке что-то лежит.")) + balloon_alert(user, "невозможно") return . . |= ATTACK_CHAIN_BLOCKED_ALL @@ -458,14 +489,15 @@ if(loc == user) user.temporarily_remove_item_from_inventory(src, force = TRUE) user.put_in_hands(assembly) - to_chat(user, span_notice("You have added the cyborg arm to [src]. Now it is suitable for further medibot construction.")) + to_chat(user, span_notice("Вы прикрепили робо-руку к аптечке.")) + balloon_alert(user, "деталь установлена") qdel(I) qdel(src) /obj/item/firstaid_arm_assembly name = "incomplete medibot assembly." - desc = "A first aid kit with a robot arm permanently grafted to it." + desc = "Аптечка первой помощи с прикрепленной роботизированной рукой." icon = 'icons/obj/aibots.dmi' icon_state = "firstaid_arm" w_class = WEIGHT_CLASS_NORMAL @@ -508,7 +540,7 @@ return ..() if(is_pen(I)) - var/new_name = rename_interactive(user, I, prompt = "Enter new robot name") + var/new_name = rename_interactive(user, I, prompt = "Введите новое имя для робота") if(!isnull(new_name)) created_name = new_name add_game_logs("[key_name(user)] has renamed a robot to [new_name]", user) @@ -518,11 +550,13 @@ if(0) add_fingerprint(user) if(!istype(I, /obj/item/healthanalyzer)) - to_chat(user, span_warning("You need a health analyzer to continue the construction.")) + to_chat(user, span_notice("Для продолжения сборки медбота нужен анализатор здоровья.")) + balloon_alert(user, "неверная деталь") return ATTACK_CHAIN_PROCEED if(!user.drop_transfer_item_to_loc(I, src)) return ..() - to_chat(user, span_notice("You have added the health analyzer to the medibot assembly.")) + to_chat(user, span_notice("Вы прикрепили анализатор здоровья к аптечке.")) + balloon_alert(user, "деталь установлена") build_step++ update_appearance(UPDATE_NAME|UPDATE_OVERLAYS) qdel(I) @@ -531,14 +565,17 @@ if(1) add_fingerprint(user) if(!isprox(I)) - to_chat(user, span_warning("You need a proximity sensor to complete the assembly.")) + to_chat(user, span_notice("Для завершения сборки медбота нужен датчик движения.")) + balloon_alert(user, "неверная деталь") return ATTACK_CHAIN_PROCEED if(!isturf(loc)) - to_chat(user, span_warning("You cannot finish the construction [ismob(loc) ? "in inventory" : "in [loc]"].")) + to_chat(user, span_notice("Вы не можете завершить сборку [ismob(loc) ? "в инвентаре" : "здесь"].")) + balloon_alert(user, "невозможно") return ATTACK_CHAIN_PROCEED if(!user.drop_transfer_item_to_loc(I, src)) return ..() - to_chat(user, span_notice("You have completed the medibot assembly. Beep boop!")) + balloon_alert(user, "сборка завершена") + to_chat(user, span_notice("Вы завершили сборку медбота.")) var/mob/living/simple_animal/bot/medbot/new_bot if(syndicate_aligned) // syndicate medibots are a special case that have so many unique vars on them, @@ -567,7 +604,7 @@ //Secbot Assembly /obj/item/secbot_assembly name = "incomplete securitron assembly" - desc = "Some sort of bizarre assembly made from a proximity sensor, helmet, and signaler." + desc = "Замудрённая конструкция, состоящая из датчика движения, шлема и сигнального устройства." icon = 'icons/obj/aibots.dmi' icon_state = "helmet_signaler" item_state = "helmet" @@ -604,7 +641,8 @@ add_fingerprint(user) var/obj/item/assembly/signaler/signaler = I if(signaler.secured) - to_chat(user, span_warning("The [signaler.name] should be unsecured.")) + to_chat(user, span_notice("Сигнальное устройство не должно быть закреплено.")) + balloon_alert(user, "невозможно") return ATTACK_CHAIN_PROCEED . |= ATTACK_CHAIN_BLOCKED_ALL @@ -616,7 +654,7 @@ if(loc == user) user.temporarily_remove_item_from_inventory(src, force = TRUE) user.put_in_hands(assembly) - to_chat(user, span_notice("You have added the the signaler to the helmet. Now it is suitable for further securitron construction.")) + balloon_alert(user, "сигнальное устройство прикреплено") qdel(I) qdel(src) @@ -626,7 +664,7 @@ return ..() if(is_pen(I)) - var/new_name = rename_interactive(user, I, prompt = "Enter new robot name") + var/new_name = rename_interactive(user, I, prompt = "Введите новое имя для робота") if(!isnull(new_name)) created_name = new_name add_game_logs("[key_name(user)] has renamed a robot to [new_name]", user) @@ -636,11 +674,13 @@ if(1) add_fingerprint(user) if(!isprox(I)) - to_chat(user, span_warning("You need a proximity sensor to continue the construction.")) + to_chat(user, span_notice("Для продолжения сборки охранного робота нужен датчик движения.")) + balloon_alert(user, "неверная деталь") return ATTACK_CHAIN_PROCEED if(!user.drop_transfer_item_to_loc(I, src)) return ..() - to_chat(user, span_notice("You have added the proximity sensor to the securitron assembly.")) + to_chat(user, span_notice("Вы прикрепили датчик движения к заготовке охранного робота.")) + balloon_alert(user, "деталь установлена") build_step++ update_appearance(UPDATE_NAME|UPDATE_OVERLAYS) qdel(I) @@ -649,11 +689,13 @@ if(2) add_fingerprint(user) if(!istype(I, /obj/item/robot_parts/l_arm) && !istype(I, /obj/item/robot_parts/r_arm)) - to_chat(user, span_warning("You need a cyborg arm to continue the construction.")) + to_chat(user, span_notice("Для продолжения сборки охранного робота нужна робо-рука.")) + balloon_alert(user, "неверная деталь") return ATTACK_CHAIN_PROCEED if(!user.drop_transfer_item_to_loc(I, src)) return ..() - to_chat(user, span_notice("You have added the cyborg arm to the securitron assembly.")) + to_chat(user, span_notice("Вы прикрепили робо-руку к заготовке охранного робота.")) + balloon_alert(user, "деталь установлена") build_step++ robot_arm = I.type update_appearance(UPDATE_NAME|UPDATE_OVERLAYS) @@ -663,14 +705,17 @@ if(3) add_fingerprint(user) if(!istype(I, /obj/item/melee/baton/security)) - to_chat(user, span_warning("You need a stunbaton to complete the assembly.")) + to_chat(user, span_notice("Для продолжения сборки охранного робота нужна оглушающая дубинка.")) + balloon_alert(user, "неверная деталь") return ATTACK_CHAIN_PROCEED if(!isturf(loc)) - to_chat(user, span_warning("You cannot finish the construction [ismob(loc) ? "in inventory" : "in [loc]"].")) + to_chat(user, span_notice("Вы не можете завершить сборку [ismob(loc) ? "в инвентаре" : "здесь"].")) + balloon_alert(user, "невозможно") return ATTACK_CHAIN_PROCEED if(!user.drop_transfer_item_to_loc(I, src)) return ..() - to_chat(user, span_notice("You have completed the securitron assembly. Beep boop!")) + balloon_alert(user, "сборка завершена") + to_chat(user, span_notice("Вы завершили сборку охранного робота.")) var/mob/living/simple_animal/bot/secbot/new_bot = new(loc) new_bot.name = created_name new_bot.robot_arm = robot_arm @@ -699,21 +744,24 @@ var/obj/item/clothing/head/helmet/helmet = new(drop_loc) transfer_fingerprints_to(helmet) helmet.add_fingerprint(user) - to_chat(user, span_notice("You have disconnected the signaler from the helmet.")) + to_chat(user, span_notice("Вы отсоединили сигнальное устройство от шлема.")) + balloon_alert(user, "деталь отсоединена") qdel(src) if(2) var/obj/item/assembly/prox_sensor/sensor = new(drop_loc) transfer_fingerprints_to(sensor) sensor.add_fingerprint(user) build_step-- - to_chat(user, span_notice("You have detached the proximity sensor from the securitron assembly.")) + to_chat(user, span_notice("Вы отсоединили датчик движения от заготовки.")) + balloon_alert(user, "деталь отсоединена") update_appearance(UPDATE_NAME|UPDATE_OVERLAYS) if(3) var/obj/item/robot_parts/new_arm = new robot_arm(drop_loc) transfer_fingerprints_to(new_arm) new_arm.add_fingerprint(user) build_step-- - to_chat(user, span_notice("You have removed the cyborg arm from the securitron assembly.")) + to_chat(user, span_notice("Вы отсоединили робо-руку от заготовки.")) + balloon_alert(user, "деталь отсоединена") update_appearance(UPDATE_NAME|UPDATE_OVERLAYS) @@ -723,7 +771,8 @@ . = TRUE if(!I.use_tool(src, user, volume = I.tool_volume)) return . - to_chat(user, span_notice("You have adjusted the arm slots for extra weapons.")) + to_chat(user, span_notice("Вы создали дополнительные слоты для вооружения в заготовке охранного робота.")) + balloon_alert(user, "корпус модифицирован") var/obj/item/griefsky_assembly/destroyer_of_the_worlds = new(drop_location()) transfer_fingerprints_to(destroyer_of_the_worlds) destroyer_of_the_worlds.add_fingerprint(user) @@ -743,10 +792,12 @@ return . if(build_step == 1) build_step = 0 - to_chat(user, span_notice("You have welded shut the hole in the securitron assembly.")) + to_chat(user, span_notice("Вы заварили лишние отверстия в заготовке охранного робота.")) + balloon_alert(user, "корпус модифицирован") else build_step = 1 - to_chat(user, span_notice("You have welded a hole in the securitron assembly.")) + to_chat(user, span_notice("Вы вырезали дополнительные отверстия в заготовке охранного робота.")) + balloon_alert(user, "корпус модифицирован") update_appearance(UPDATE_OVERLAYS) @@ -754,7 +805,7 @@ /obj/item/griefsky_assembly name = "\improper General Griefsky assembly" - desc = "Some sort of bizarre assembly." + desc = "Причудливая конструкция. Выглядит мощно." icon = 'icons/obj/aibots.dmi' icon_state = "griefsky_assembly" item_state = "griefsky_assembly" @@ -776,27 +827,33 @@ var/toy_sword = istype(I, /obj/item/toy/sword) if(!energy_sword && !toy_sword) if(build_step == 0 && toy_step == 0) - to_chat(user, span_warning("You need a toy sword or an energy sword to continue the construction.")) + to_chat(user, span_notice("Для продолжения сборки нужен лазерный меч.")) + balloon_alert(user, "неверная деталь") return ATTACK_CHAIN_PROCEED if(build_step > 0) - to_chat(user, span_warning("You need an energy sword to continue the construction.")) + to_chat(user, span_notice("Для продолжения сборки нужен настоящий лазерный меч.")) + balloon_alert(user, "неверная деталь") return ATTACK_CHAIN_PROCEED if(toy_step > 0) - to_chat(user, span_warning("You need a toy sword to continue the construction.")) + to_chat(user, span_notice("Для продолжения сборки нужен игрушечный лазерный меч.")) + balloon_alert(user, "неверная деталь") return ATTACK_CHAIN_PROCEED return ATTACK_CHAIN_PROCEED if(energy_sword) if(toy_step > 0) - to_chat(user, span_warning("The energy sword is incompatible with the Genewul Giftskee assembly.")) + to_chat(user, span_notice("Этот лазерный меч не подойдёт.")) + balloon_alert(user, "неверная деталь") return ATTACK_CHAIN_PROCEED if(build_step == 3) if(!isturf(loc)) - to_chat(user, span_warning("You cannot finish the construction [ismob(loc) ? "in inventory" : "in [loc]"].")) + to_chat(user, span_notice("Вы не можете завершить сборку [ismob(loc) ? "в инвентаре" : "здесь"].")) + balloon_alert(user, "невозможно") return ATTACK_CHAIN_PROCEED if(!user.drop_transfer_item_to_loc(I, src)) return ..() - to_chat(user, span_notice("You have completed the General Griefsky assembly. Its war crimes time!")) + balloon_alert(user, "сборка завершена") + to_chat(user, span_notice("Вы завершили сборку Генерала Грифски. Время совершить парочку военных преступлений!")) var/mob/living/simple_animal/bot/secbot/griefsky/destroyer_of_the_worlds = new(loc) transfer_fingerprints_to(destroyer_of_the_worlds) I.transfer_fingerprints_to(destroyer_of_the_worlds) @@ -809,20 +866,24 @@ build_step++ I.transfer_fingerprints_to(src) update_appearance(UPDATE_NAME) - to_chat(user, span_notice("You have added the energy sword to the General Griefsky assembly. It prays for more!")) + to_chat(user, span_notice("Вы прикрепили лазерный меч к заготовке.")) + balloon_alert(user, "деталь установлена") qdel(I) return ATTACK_CHAIN_BLOCKED_ALL if(build_step > 0) - to_chat(user, span_warning("The toy sword is incompatible with the General Griefsky assembly.")) + to_chat(user, span_notice("Этот лазерный меч не подойдёт.")) + balloon_alert(user, "неверная деталь") return ATTACK_CHAIN_PROCEED if(toy_step == 3) if(!isturf(loc)) - to_chat(user, span_warning("You cannot finish the construction [ismob(loc) ? "in inventory" : "in [loc]"].")) + to_chat(user, span_notice("Вы не можете завершить сборку [ismob(loc) ? "в инвентаре" : "здесь"].")) + balloon_alert(user, "невозможно") return ATTACK_CHAIN_PROCEED if(!user.drop_transfer_item_to_loc(I, src)) return ..() - to_chat(user, span_notice("You have completed the Genewul Giftskee assembly. Its party time!")) + balloon_alert(user, "сборка завершена") + to_chat(user, span_notice("Вы завершили сборку Генерала Грифски.")) var/mob/living/simple_animal/bot/secbot/griefsky/toy/destroyer_of_the_pinatas = new(loc) transfer_fingerprints_to(destroyer_of_the_pinatas) I.transfer_fingerprints_to(destroyer_of_the_pinatas) @@ -835,7 +896,8 @@ toy_step++ I.transfer_fingerprints_to(src) update_appearance(UPDATE_NAME) - to_chat(user, span_notice("You have added the toy sword to the Genewul Giftskee assembly. It prays for more!")) + to_chat(user, span_notice("Вы прикрепили игрушечный лазерный меч к заготовке.")) + balloon_alert(user, "деталь установлена") qdel(I) return ATTACK_CHAIN_BLOCKED_ALL @@ -849,11 +911,13 @@ var/obj/item/sword if(build_step) sword = new /obj/item/melee/energy/sword(drop_location()) - to_chat(user, span_notice("You have detached the energy sword from the Griefsky assembly.")) + to_chat(user, span_notice("Вы отсоединили лазерный меч от заготовки.")) + balloon_alert(user, "деталь отсоединена") build_step-- else if(toy_step) sword = new /obj/item/toy/sword(drop_location()) - to_chat(user, span_notice("You have detached the toy sword from the Griefsky assembly.")) + to_chat(user, span_notice("Вы отсоединили игрушечный лазерный меч от заготовки.")) + balloon_alert(user, "деталь отсоединена") toy_step-- transfer_fingerprints_to(sword) sword.add_fingerprint(user) @@ -868,7 +932,8 @@ add_fingerprint(user) if(length(contents)) - to_chat(user, span_warning("The [name] should be empty to start the honkbot construction.")) + to_chat(user, span_notice("Вы не можете начать сборку, пока в коробке что-то лежит.")) + balloon_alert(user, "невозможно") return . . |= ATTACK_CHAIN_BLOCKED_ALL @@ -883,14 +948,15 @@ if(loc == user) user.temporarily_remove_item_from_inventory(src, force = TRUE) user.put_in_hands(assembly) - to_chat(user, span_notice("You have added the cyborg arm to [src]. Now it is suitable for further honkbot construction.")) + to_chat(user, span_notice("Вы прикрепили робо-руку к коробке.")) + balloon_alert(user, "деталь установлена") qdel(I) qdel(src) /obj/item/honkbot_arm_assembly name = "incomplete honkbot assembly" - desc = "A clown box with a robot arm permanently grafted to it." + desc = "Клоунская коробка с прикрепленной роботизированной рукой." icon = 'icons/obj/aibots.dmi' icon_state = "honkbot_arm" w_class = WEIGHT_CLASS_NORMAL @@ -908,11 +974,13 @@ if(0) add_fingerprint(user) if(!isprox(I)) - to_chat(user, span_warning("You need a proximity sensor to continue the construction.")) + to_chat(user, span_notice("Для продолжения сборки хонкбота нужен датчик движения.")) + balloon_alert(user, "неверная деталь") return ATTACK_CHAIN_PROCEED if(!user.drop_transfer_item_to_loc(I, src)) return ..() - to_chat(user, span_notice("You have added the proximity sensor to the honkbot assembly.")) + to_chat(user, span_notice("Вы прикрепили датчик движения к заготовке хонкбота.")) + balloon_alert(user, "деталь установлена") build_step++ update_appearance(UPDATE_ICON_STATE) qdel(I) @@ -921,11 +989,13 @@ if(1) add_fingerprint(user) if(!istype(I, /obj/item/bikehorn)) - to_chat(user, span_warning("You need a bike horn to continue the construction.")) + to_chat(user, span_notice("Для продолжения сборки хонкбота нужен велосипедный гудок.")) + balloon_alert(user, "неверная деталь") return ATTACK_CHAIN_PROCEED if(!user.drop_transfer_item_to_loc(I, src)) return ..() - to_chat(user, span_notice("You have added the bike horn to the honkbot assembly.")) + to_chat(user, span_notice("Вы прикрепили велосипедный гудок к заготовке хонкбота.")) + balloon_alert(user, "деталь установлена") build_step++ update_appearance(UPDATE_ICON_STATE|UPDATE_DESC) qdel(I) @@ -934,14 +1004,17 @@ if(2) add_fingerprint(user) if(!istype(I, /obj/item/instrument/trombone)) - to_chat(user, span_warning("You need a trombone to complete the assembly.")) + to_chat(user, span_notice("Для завершения сборки хонкбота нужен тромбон.")) + balloon_alert(user, "неверная деталь") return ATTACK_CHAIN_PROCEED if(!isturf(loc)) - to_chat(user, span_warning("You cannot finish the construction [ismob(loc) ? "in inventory" : "in [loc]"].")) + to_chat(user, span_notice("Вы не можете завершить сборку [ismob(loc) ? "в инвентаре" : "здесь"].")) + balloon_alert(user, "невозможно") return ATTACK_CHAIN_PROCEED if(!user.drop_transfer_item_to_loc(I, src)) return ..() - to_chat(user, span_notice("You have completed the honkbot assembly. HONK!")) + balloon_alert(user, "сборка завершена") + to_chat(user, span_notice("Вы завершили сборку хонкобота.")) var/mob/living/simple_animal/bot/honkbot/new_bot = new(loc) new_bot.robot_arm = robot_arm transfer_fingerprints_to(new_bot) @@ -961,7 +1034,7 @@ /obj/item/honkbot_arm_assembly/update_desc(updates = ALL) . = ..() if(build_step == 2) - desc = "A clown box with a robot arm and a bikehorn permanently grafted to it. It needs a trombone to be finished" + desc = "Клоунская коробка с прикреплённой роботизированной рукой и велосипедным гудком. Ему не хватает лишь тромбона." return . desc = initial(desc) diff --git a/code/modules/mob/living/simple_animal/bot/ed209bot.dm b/code/modules/mob/living/simple_animal/bot/ed209bot.dm index 6ee5edbd899..361a97b2184 100644 --- a/code/modules/mob/living/simple_animal/bot/ed209bot.dm +++ b/code/modules/mob/living/simple_animal/bot/ed209bot.dm @@ -3,7 +3,15 @@ /mob/living/simple_animal/bot/ed209 name = "\improper ED-209 Security Robot" - desc = "A security robot. He looks less than thrilled." + desc = "Охранный робот. Он выглядит абсолютно спокойным." + ru_names = list( + NOMINATIVE = "охранный робот ED-209", + GENITIVE = "охранного робота ED-209", + DATIVE = "охранному роботу ED-209", + ACCUSATIVE = "охранного робота ED-209", + INSTRUMENTAL = "охранным роботом ED-209", + PREPOSITIONAL = "охранном роботе ED-209", + ) icon = 'icons/obj/aibots.dmi' icon_state = "ed2090" density = TRUE @@ -19,10 +27,10 @@ bot_type = SEC_BOT bot_filter = RADIO_SECBOT model = "ED-209" - bot_purpose = "seek out criminals, handcuff them, and report their location to security" + bot_purpose = "найти преступников, задержать их и доложить службе безопасности" bot_core_type = /obj/machinery/bot_core/secbot window_id = "autoed209" - window_name = "Automatic Security Unit v2.6" + window_name = "Автоматическая Охранная Единица v2.6" path_image_color = "#FF0000" data_hud_type = DATA_HUD_SECURITY_ADVANCED @@ -80,9 +88,9 @@ if(created_name == initial(name) || !created_name) if(lasercolor == "b") - name = pick("BLUE BALLER","SANIC","BLUE KILLDEATH MURDERBOT") + name = pick("СИНИЙ УБИВАТОР","САНИК","СИНИЙ КИБОРГ УБИЙЦА") else if (lasercolor == "r") - name = pick("RED RAMPAGE","RED ROVER","RED KILLDEATH MURDERBOT") + name = pick("КРАСНОЕ БЕЗУМИЕ","КРАСНЫЙ УНИЧТОЖИТЕЛЬ","КРАСНЫЙ КИБОРГ УБИЙЦА") //SECHUD var/datum/atom_hud/secsensor = GLOB.huds[DATA_HUD_SECURITY_ADVANCED] @@ -119,9 +127,9 @@ /mob/living/simple_animal/bot/ed209/set_custom_texts() - text_hack = "You disable [name]'s combat inhibitor." - text_dehack = "You restore [name]'s combat inhibitor." - text_dehack_fail = "[name] ignores your attempts to restrict [p_them()]!" + text_hack = "Вы взломали боевую систему [declent_ru(GENITIVE)]" + text_dehack = "Вы восстановили боевую систему [declent_ru(GENITIVE)]." + text_dehack_fail = "[capitalize(declent_ru(NOMINATIVE))] отказывается вам подчиняться!" /mob/living/simple_animal/bot/ed209/show_controls(mob/M) @@ -159,7 +167,7 @@ if (..()) return if(topic_denied(usr)) - to_chat(usr, "[src]'s interface is not responding!") + to_chat(usr, span_warning("Интерфейс [declent_ru(GENITIVE)] не отвечает!")) return add_fingerprint(usr) . = TRUE @@ -228,9 +236,9 @@ ..() if(emagged == 2) if(user) - to_chat(user, span_warning("You short out [src]'s target assessment circuits.")) + to_chat(user, span_warning("Вы замыкаете микросхемы системы целеуказания [declent_ru(GENITIVE)].")) oldtarget_name = user.name - audible_message(span_danger("[src] buzzes oddly!")) + audible_message(span_danger("[capitalize(declent_ru(NOMINATIVE))] странно жужжит!")) declare_arrests = FALSE icon_state = "[lasercolor]ed209[on]" set_weapon() @@ -402,9 +410,9 @@ else if(threatlevel >= 4) target = C oldtarget_name = C.name - speak("Level [threatlevel] infraction alert!") + speak("Вижу преступника! Уровень опасности - [threatlevel]!") playsound(loc, pick('sound/voice/ed209_20sec.ogg', 'sound/voice/edplaceholder.ogg'), 50, 0) - visible_message("[src] points at [C.name]!") + visible_message("[capitalize(declent_ru(NOMINATIVE))] указывает на [C.name]!") mode = BOT_HUNT INVOKE_ASYNC(src, PROC_REF(handle_automated_action)) break @@ -420,7 +428,7 @@ /mob/living/simple_animal/bot/ed209/explode() SSmove_manager.stop_looping(src) - visible_message("[src] blows apart!") + visible_message(span_userdanger("[capitalize(declent_ru(NOMINATIVE))] разлетается на части!")) var/turf/Tsec = get_turf(src) var/obj/item/ed209_assembly/Sa = new /obj/item/ed209_assembly(Tsec) @@ -629,19 +637,19 @@ if(declare_arrests) var/area/location = get_area(src) if(!speak_cooldown) - speak("[arrest_type ? "Detaining" : "Arresting"] level [threat] scumbag [C] in [location].", radio_channel) + speak("[arrest_type ? "Удерживаю" : "Задерживаю"] подонка по имени [C] в локации [location]. Уровень опасности - [threat].", radio_channel) speak_cooldown = TRUE addtimer(VARSET_CALLBACK(src, speak_cooldown, FALSE), SPEAK_COOLDOWN) - C.visible_message(span_danger("[src] has stunned [C]!"), - span_userdanger("[src] has stunned you!")) + C.visible_message(span_danger("[capitalize(declent_ru(NOMINATIVE))] оглушил [C]!"), + span_userdanger("[capitalize(declent_ru(NOMINATIVE))] оглушил вас!")) /mob/living/simple_animal/bot/ed209/proc/start_cuffing(mob/living/carbon/C) mode = BOT_ARREST playsound(loc, 'sound/weapons/cablecuff.ogg', 30, 1, -2) - C.visible_message(span_danger("[src] is trying to put zipties on [C]!"), - span_userdanger("[src] is trying to put zipties on you!")) + C.visible_message(span_danger("[capitalize(declent_ru(NOMINATIVE))] начинает надевать стяжки на [C]!"), + span_userdanger("[capitalize(declent_ru(NOMINATIVE))] пытается надеть на вас стяжки!")) addtimer(CALLBACK(src, PROC_REF(cuff_callback), C), 6 SECONDS) @@ -653,6 +661,9 @@ return C.apply_restraints(new /obj/item/restraints/handcuffs/cable/zipties/used(null), ITEM_SLOT_HANDCUFFED, TRUE) + C.visible_message(span_danger("[capitalize(declent_ru(NOMINATIVE))] надел стяжки на [C]!"), + span_userdanger("[capitalize(declent_ru(NOMINATIVE))] надел на вас стяжки!")) + back_to_idle() diff --git a/code/modules/mob/living/simple_animal/bot/floorbot.dm b/code/modules/mob/living/simple_animal/bot/floorbot.dm index 9728321bced..2dc92554766 100644 --- a/code/modules/mob/living/simple_animal/bot/floorbot.dm +++ b/code/modules/mob/living/simple_animal/bot/floorbot.dm @@ -1,7 +1,15 @@ //Floorbot /mob/living/simple_animal/bot/floorbot name = "\improper Floorbot" - desc = "A little floor repairing robot, he looks so excited!" + desc = "Маленький робот для починки полов и обшивки. Он выглядит таким увлечённым!" + ru_names = list( + NOMINATIVE = "ремонтный робот", + GENITIVE = "ремонтного робота", + DATIVE = "ремонтному роботу", + ACCUSATIVE = "ремонтного робота", + INSTRUMENTAL = "ремонтным роботом", + PREPOSITIONAL = "ремонтном роботе", + ) icon = 'icons/obj/aibots.dmi' icon_state = "floorbot0" density = FALSE @@ -13,10 +21,10 @@ bot_type = FLOOR_BOT bot_filter = RADIO_FLOORBOT model = "Floorbot" - bot_purpose = "seek out damaged or missing floor tiles, and repair or replace them as necessary" + bot_purpose = "найти повреждения в полу или обшивке и восстановить их целостность" bot_core_type = /obj/machinery/bot_core/floorbot window_id = "autofloor" - window_name = "Automatic Station Floor Repairer v1.1" + window_name = "Автоматическая Ремонтная Единица v1.1" path_image_color = "#FFA500" /// Determines what to do when process_scan() recieves a target. See process_scan() for details. @@ -67,35 +75,35 @@ /mob/living/simple_animal/bot/floorbot/set_custom_texts() - text_hack = "You corrupt [name]'s construction protocols." - text_dehack = "You detect errors in [name] and reset [p_their()] programming." - text_dehack_fail = "[name] is not responding to reset commands!" + text_hack = "Вы взломали рабочие протоколы [declent_ru(GENITIVE)]." + text_dehack = "Вы восстановили рабочие протоколы [declent_ru(GENITIVE)]." + text_dehack_fail = "[capitalize(declent_ru(NOMINATIVE))] не отвечает на команды сброса настроек!" /mob/living/simple_animal/bot/floorbot/get_controls(mob/user) var/dat dat += hack(user) dat += showpai(user) - dat += "Floor Repairer Controls v1.1

" - dat += "Status: [on ? "On" : "Off"]
" - dat += "Maintenance panel panel is [open ? "opened" : "closed"]
" - dat += "Tiles left: [amount]
" - dat += "Behvaiour controls are [locked ? "locked" : "unlocked"]
" + dat += "Панель управления ремонтным роботом v1.1

" + dat += "Состояние: [on ? "Включён" : "Выключен"]
" + dat += "Панель технического обслуживания [open ? "открыта" : "закрыта"]
" + dat += "Плиток пола в запасе: [amount]
" + dat += "Управление поведением [locked ? "заблокировано" : "разблокировано"]
" if(!locked || issilicon(user) || user.can_admin_interact()) - dat += "Add tiles to new hull plating: [autotile ? "Yes" : "No"]
" - dat += "Replace floor tiles: [replacetiles ? "Yes" : "No"]
" - dat += "Finds tiles: [eattiles ? "Yes" : "No"]
" - dat += "Make pieces of metal into tiles when empty: [maketiles ? "Yes" : "No"]
" - dat += "Transmit notice when empty: [nag_on_empty ? "Yes" : "No"]
" - dat += "Repair damaged tiles and platings: [fixfloors ? "Yes" : "No"]
" - dat += "Traction Magnets: [anchored ? "Engaged" : "Disengaged"]
" - dat += "Patrol Station: [auto_patrol ? "Yes" : "No"]
" + dat += "Устанавливать плитки пола на сегменты обшивки:[autotile ? "Да" : "Нет"]
" + dat += "Заменять плитки пола: [replacetiles ? "Да" : "Нет"]
" + dat += "Загружать свободные плитки во внутреннее хранилище: [eattiles ? "Да" : "Нет"]
" + dat += "Перерабатывать металл в плитки пола, когда хранилище опустошено: [maketiles ? "Да" : "Нет"]
" + dat += "Уведомлять, когда хранилище опустошено: [nag_on_empty ? "Да" : "Нет"]
" + dat += "Ремонтировать повреждения пола и обшивки: [fixfloors ? "Да" : "Нет"]
" + dat += "Закрепиться на месте: [anchored ? "Да" : "Нет"]
" + dat += "Режим патрулирования: [auto_patrol ? "Да" : "Нет"]
" var/bmode if(targetdirection) bmode = dir2text(targetdirection) else - bmode = "disabled" - dat += "Bridge Mode : [bmode]
" + bmode = "Выключен" + dat += "Режим постройки моста: [bmode]
" return dat @@ -109,10 +117,11 @@ var/obj/item/stack/tile/plasteel/plasteel = I var/loaded = min(50 - amount, plasteel.get_amount()) if(!plasteel.use(loaded)) - to_chat(user, span_warning("You need at least one floor tile to put into [src]!")) + to_chat(user, span_warning("Вам нужна хотя бы одна плитка пола для загрузки в [declent_ru(ACCUSATIVE)]!")) return ATTACK_CHAIN_PROCEED amount += loaded - to_chat(user, span_notice("You have loaded [loaded] tile\s into the floorbot. [p_they(TRUE)] now contains [amount] tiles.")) + balloon_alert(user, "плитки загружены") + to_chat(user, span_notice("Вы загрузили [loaded] плитки в [declent_ru(ACCUSATIVE)]. Текущее количество плиток - [amount].")) nagged = FALSE update_icon() return ATTACK_CHAIN_PROCEED_SUCCESS @@ -124,7 +133,7 @@ ..() if(emagged == 2) if(user) - to_chat(user, span_danger("[src] buzzes and beeps.")) + to_chat(user, span_danger("[capitalize(declent_ru(NOMINATIVE))] жужжит и пищит.")) /mob/living/simple_animal/bot/floorbot/Topic(href, href_list) @@ -148,17 +157,17 @@ set_anchored(!anchored) if("bridgemode") - var/setdir = input("Select construction direction:") as null|anything in list("north","east","south","west","disable") + var/setdir = input("Выберите направление строительства:") as null|anything in list("север","юг","запад","восток","отключить") switch(setdir) - if("north") + if("север") targetdirection = 1 - if("south") + if("юг") targetdirection = 2 - if("east") + if("восток") targetdirection = 4 - if("west") + if("запад") targetdirection = 8 - if("disable") + if("отключить") targetdirection = null update_controls() @@ -184,7 +193,7 @@ nag() if(prob(5)) - audible_message("[src] makes an excited booping beeping sound!") + custom_emote(EMOTE_VISIBLE, "бупает и бипает!") //Normal scanning procedure. We have tiles loaded, are not emagged. if(!target && emagged < 2 && amount > 0) @@ -238,7 +247,7 @@ F.break_tile_to_plating() else F.ReplaceWithLattice() - audible_message(span_danger("[src] makes an excited booping sound.")) + custom_emote(EMOTE_VISIBLE, "бупает.") addtimer(CALLBACK(src, PROC_REF(inc_amount_callback)), 5 SECONDS) path = list() @@ -276,7 +285,7 @@ /mob/living/simple_animal/bot/floorbot/proc/nag() //Annoy everyone on the channel to refill us! if(!nagged) - speak("Requesting refill at [get_area(src)]!", radio_channel) + speak("Запрашивается пополнение стройматериалов в локации [get_area(src)]!", radio_channel) nagged = TRUE @@ -337,7 +346,7 @@ set_anchored(TRUE) if(isspaceturf(target_turf)) //If we are fixing an area not part of pure space, it is - visible_message(span_notice("[targetdirection ? "[src] begins installing a bridge plating." : "[src] begins to repair the hole."]")) + custom_emote(EMOTE_VISIBLE, "[targetdirection ? "начинает строить сегмент моста." : "начинает заделывать пробоину."]") mode = BOT_REPAIRING update_icon() addtimer(CALLBACK(src, PROC_REF(make_bridge_plating), target_turf), 5 SECONDS) @@ -346,7 +355,7 @@ var/turf/simulated/floor/F = target_turf mode = BOT_REPAIRING update_icon() - visible_message(span_notice("[src] begins repairing the floor.")) + custom_emote(EMOTE_VISIBLE, "начинает ремонтировать пол.") addtimer(CALLBACK(src, PROC_REF(make_bridge_plating), F), 5 SECONDS) @@ -380,7 +389,7 @@ /mob/living/simple_animal/bot/floorbot/proc/start_eattile(obj/item/stack/tile/plasteel/T) if(!istype(T, /obj/item/stack/tile/plasteel)) return - visible_message(span_notice("[src] begins to collect tiles.")) + custom_emote(EMOTE_VISIBLE, "начинает собирать плитки.") mode = BOT_REPAIRING addtimer(CALLBACK(src, PROC_REF(do_eattile), T), 2 SECONDS) @@ -407,7 +416,7 @@ /mob/living/simple_animal/bot/floorbot/proc/start_maketile(obj/item/stack/sheet/metal/M) if(!istype(M, /obj/item/stack/sheet/metal)) return - visible_message(span_notice("[src] begins to create tiles.")) + custom_emote(EMOTE_VISIBLE, "начинает создавать плитки.") mode = BOT_REPAIRING addtimer(CALLBACK(src, PROC_REF(do_maketile), M), 2 SECONDS) @@ -442,7 +451,7 @@ /mob/living/simple_animal/bot/floorbot/explode() on = FALSE - visible_message("[src] blows apart!") + visible_message(span_userdanger("[capitalize(declent_ru(NOMINATIVE))] разлетается на части!")) var/turf/Tsec = get_turf(src) var/obj/item/storage/toolbox/mechanical/N = new /obj/item/storage/toolbox/mechanical(Tsec) N.contents = list() diff --git a/code/modules/mob/living/simple_animal/bot/griefsky.dm b/code/modules/mob/living/simple_animal/bot/griefsky.dm index d426c808ad5..865dc05a854 100644 --- a/code/modules/mob/living/simple_animal/bot/griefsky.dm +++ b/code/modules/mob/living/simple_animal/bot/griefsky.dm @@ -1,11 +1,19 @@ /mob/living/simple_animal/bot/secbot/griefsky //This bot is powerful. If you managed to get 4 eswords somehow, you deserve this horror. Emag him for best results. name = "\improper General Griefsky" - desc = "Is that a secbot with four eswords in its arms...?" + desc = "Это охранный робот с четырьмя лазерными мечами в руках..?" + ru_names = list( + NOMINATIVE = "Генерал Грифски", + GENITIVE = "Генерала Грифски", + DATIVE = "Генералу Грифски", + ACCUSATIVE = "Генерала Грифски", + INSTRUMENTAL = "Генералом Грифски", + PREPOSITIONAL = "Генерале Грифски", + ) icon_state = "griefsky0" health = 100 maxHealth = 100 base_icon = "griefsky" - window_name = "Automatic Security Unit v3.0" + window_name = "Автоматическая Охранная Единица v3.0" var/spin_icon = "griefsky-c" // griefsky and griefsky junior have dif icons var/weapon = /obj/item/melee/energy/sword @@ -22,7 +30,15 @@ /mob/living/simple_animal/bot/secbot/griefsky/toy //A toy version of general griefsky! name = "Genewul Giftskee" - desc = "An adorable looking secbot with four toy swords taped to its arms" + desc = "Очаровательный охранный робот с четырьмя игрушечными мечами в руках. Прелесть!" + ru_names = list( + NOMINATIVE = "Гиневал Гифтски", + GENITIVE = "Гиневала Гифтски", + DATIVE = "Гиневалу Гифтски", + ACCUSATIVE = "Гиневала Гифтски", + INSTRUMENTAL = "Гиневалом Гифтски", + PREPOSITIONAL = "Гиневале Гифтски", + ) spin_icon = "griefskyj-c" health = 50 maxHealth = 50 @@ -42,12 +58,20 @@ /mob/living/simple_animal/bot/secbot/griefsky/syndicate - radio_channel = "SyndTaipan" - name = "Генерал Синди" + name = "General Syndie" + desc = "В процессе его создания пострадало как минимум 24 агента. 22 из них не выжили..." + ru_names = list( + NOMINATIVE = "Генерал Синди", + GENITIVE = "Генерала Синди", + DATIVE = "Генералу Синди", + ACCUSATIVE = "Генерала Синди", + INSTRUMENTAL = "Генералом Синди", + PREPOSITIONAL = "Генерале Синди", + ) icon_state = "general_syndie0" base_icon = "general_syndie" spin_icon = "general_syndie-c" - desc = "В процессе его создания пострадало как минимум 24 агента. 22 из них не выжили..." + radio_channel = "SyndTaipan" faction = list("syndicate") allow_pai = TRUE auto_patrol = TRUE @@ -90,7 +114,7 @@ if(!iscarbon(arrived) || arrived != target || in_range(src, arrived)) return FALSE - visible_message(span_danger("[src] flails his swords and pushes [arrived] out of it's way!")) + visible_message(span_danger("[capitalize(declent_ru(NOMINATIVE))] размахивает своими мечами и отталкивает [arrived]!")) arrived.Weaken(4 SECONDS) @@ -105,7 +129,7 @@ /mob/living/simple_animal/bot/secbot/griefsky/bullet_act(obj/item/projectile/P) //so uncivilized retaliate(P.firer) if((icon_state == spin_icon) && (prob(block_chance_ranged))) //only when the eswords are on - visible_message("[src] deflects [P] with its energy swords!") + visible_message("[capitalize(declent_ru(NOMINATIVE))] отражает [P] своим мечом!") playsound(loc, 'sound/weapons/blade1.ogg', 50, 1, 0) else ..() @@ -113,7 +137,7 @@ /mob/living/simple_animal/bot/secbot/griefsky/proc/sword_attack(mob/living/carbon/C) // esword attack if((HAS_TRAIT(src, TRAIT_PACIFISM) || GLOB.pacifism_after_gt) && dmg) if(usr) - to_chat(usr, span_warning("You don't want to harm other living beings!")) + balloon_alert(usr, "никакого насилия!") return do_attack_animation(C) playsound(loc, 'sound/weapons/blade1.ogg', 50, TRUE, -1) @@ -133,12 +157,12 @@ var/area/location = get_area(src) if(!spam_flag) if(syndie) - speak("Back away! I will deal with this [("syndicate" in C.faction) ? "level [threat]" : "Nanotrasen"] swine [C] in [location] myself!.", radio_channel) + speak("Контакт! [C] [threat] уровня угрозы, место - [location]! Сейчас нашинкую этого [("syndicate" in C.faction) ? "ублюдка!" : "прихвостня НТ!"]", radio_channel) else - speak("Back away! I will deal with this level [threat] swine [C] in [location] myself!.", radio_channel) + speak("Контакт! [C] [threat] уровня угрозы, место - [location]! Сейчас нашинкую этого ублюдка!", radio_channel) spam_flag = TRUE addtimer(VARSET_CALLBACK(src, spam_flag, FALSE), 10 SECONDS) //to avoid spamming comms of sec for each hit - visible_message("[src] flails his swords and cuts [C]!") + visible_message("[capitalize(declent_ru(NOMINATIVE))] замахивается своими мечами и рубит [C]!") /mob/living/simple_animal/bot/secbot/griefsky/handle_automated_action() @@ -181,7 +205,7 @@ frustration = 0 else back_to_idle() - speak("You fool") + speak("Идиот...") else back_to_idle() @@ -210,7 +234,7 @@ else if(!("syndicate" in C.faction)) threatlevel = 20 if(is_taipan(z) && C.mind?.assigned_role != "Space Base Syndicate Comms Officer" && (check_for_mug(C.get_active_hand()) || check_for_mug(C.get_inactive_hand()))) - speak("[C.name] наглый вор! Положи кружку!", radio_channel) + speak("[C.name], наглый ты воришка! Положи кружку на место!", radio_channel) threatlevel += 4 else threatlevel = C.assess_threat(src) @@ -221,11 +245,11 @@ else if(threatlevel >= 4) target = C oldtarget_name = C.name - speak("You are a bold one") + speak("Ты больно смелый, как я погляжу, да?!") playsound(src,'sound/weapons/saberon.ogg',50,TRUE,-1) - visible_message("[src] ignites his energy swords!") + visible_message("[capitalize(declent_ru(NOMINATIVE))] включает свои лазерные мечи!") icon_state = "[base_icon]-c" - visible_message("[src] points at [C.name]!") + visible_message("[capitalize(declent_ru(NOMINATIVE))] указывает на [C.name]!") mode = BOT_HUNT INVOKE_ASYNC(src, PROC_REF(handle_automated_action)) break @@ -244,7 +268,7 @@ /mob/living/simple_animal/bot/secbot/griefsky/explode() SSmove_manager.stop_looping(src) - visible_message(span_boldannounceic("[src] lets out a huge cough as it blows apart!")) + visible_message(span_boldannounceic("[capitalize(declent_ru(NOMINATIVE))] разлетается на части!")) var/turf/Tsec = get_turf(src) new /obj/item/assembly/prox_sensor(Tsec) var/obj/item/secbot_assembly/Sa = new /obj/item/secbot_assembly(Tsec) @@ -272,7 +296,7 @@ /mob/living/simple_animal/bot/secbot/griefsky/bullet_act(obj/item/projectile/P) //so uncivilized retaliate(P.firer) if((icon_state == spin_icon) && (prob(block_chance_ranged))) //only when the eswords are on - visible_message("[src] deflects [P] with its energy swords!") + visible_message("[capitalize(declent_ru(NOMINATIVE))] отражает [P] своим мечом!") playsound(loc, 'sound/weapons/blade1.ogg', 50, 1, 0) else ..() @@ -285,7 +309,7 @@ if(icon_state != spin_icon) return if(prob(block_chance_melee)) - visible_message("[src] deflects [user]'s attack with his energy swords!") + visible_message("[capitalize(declent_ru(NOMINATIVE))] отражает атаку [user] своим мечом!") playsound(loc, 'sound/weapons/blade1.ogg', 50, TRUE, -1) return TRUE @@ -301,7 +325,7 @@ /mob/living/simple_animal/bot/secbot/griefsky/attackby(obj/item/I, mob/user, params) //cant touch or attack him while spinning if(icon_state == spin_icon && prob(block_chance_melee)) // FFS! have no time to rework this now user.do_attack_animation(src) - visible_message("[src] deflects [user]'s move with his energy swords!") + visible_message("[capitalize(declent_ru(NOMINATIVE))] блокирует атаку [user] своими мечами!") playsound(loc, 'sound/weapons/blade1.ogg', 50, TRUE, -1) return ATTACK_CHAIN_BLOCKED_ALL return ..() diff --git a/code/modules/mob/living/simple_animal/bot/honkbot.dm b/code/modules/mob/living/simple_animal/bot/honkbot.dm index 56a52393439..eb6296117a1 100644 --- a/code/modules/mob/living/simple_animal/bot/honkbot.dm +++ b/code/modules/mob/living/simple_animal/bot/honkbot.dm @@ -1,6 +1,14 @@ /mob/living/simple_animal/bot/honkbot name = "\improper honkbot" - desc = "A little robot. It looks happy with its bike horn." + desc = "Маленький робот. У него есть гудок. Он счастлив." + ru_names = list( + NOMINATIVE = "хонкобот", + GENITIVE = "хонкобота", + DATIVE = "хонкоботу", + ACCUSATIVE = "хонкобота", + INSTRUMENTAL = "хонкоботом", + PREPOSITIONAL = "хонкоботе", + ) icon = 'icons/obj/aibots.dmi' icon_state = "honkbot" density = FALSE @@ -15,7 +23,7 @@ model = "Honkbot" bot_core_type = /obj/machinery/bot_core/honkbot window_id = "autohonk" - window_name = "Honkomatic Bike Horn Unit v1.0.7" + window_name = "Хонкоматическая Клоуновая Единица v1.0.7" data_hud_type = DATA_HUD_SECURITY_BASIC // show jobs path_image_color = "#FF69B4" @@ -78,9 +86,9 @@ /mob/living/simple_animal/bot/honkbot/set_custom_texts() - text_hack = "You overload [name]'s sound control system" - text_dehack = "You reboot [name] and restore the sound control system." - text_dehack_fail = "[name] refuses to accept your authority!" + text_hack = "Вы перегрузили звуковую систему [declent_ru(GENITIVE)]." + text_dehack = "Вы восстановили звуковую систему [declent_ru(GENITIVE)]." + text_dehack_fail = "[capitalize(declent_ru(NOMINATIVE))] отказывается вам подчиняться!" /mob/living/simple_animal/bot/honkbot/get_controls(mob/user) @@ -88,15 +96,15 @@ dat += hack(user) dat += showpai(user) dat += text({" - Honkomatic Bike Horn Unit v1.0.7 controls

- Status: []
- Behaviour controls are [locked ? "locked" : "unlocked"]
- Maintenance panel is [open ? "opened" : "closed"]
"}, + Панель управления Хонкоматической Клоуновой Единицей v1.0.7

+ Состояние: []
+ Управление поведением [locked ? "заблокировано" : "разблокировано"]
+ Панель технического обслуживания [open ? "открыта" : "закрыта"]
"}, - "[on ? "On" : "Off"]") + "[on ? "Включён" : "Выключен"]") if(!locked || issilicon(user) || user.can_admin_interact()) - dat += "Auto Patrol [auto_patrol ? "On" : "Off"]
" + dat += "Режим патрулирования: [auto_patrol ? "Да" : "Нет"]
" return dat @@ -118,9 +126,9 @@ ..() if(emagged == 2) if(user) - to_chat(user, span_warning("You short out [src]'s target assessment circuits. It gives out an evil laugh!!")) + to_chat(user, span_warning("Вы замыкаете микросхемы системы целеуказания [declent_ru(GENITIVE)]. [capitalize(declent_ru(NOMINATIVE))] злобно смеётся!")) oldtarget_name = user.name - audible_message(span_danger("[src] gives out an evil laugh!")) + audible_message(span_danger("[capitalize(declent_ru(NOMINATIVE))] злобно смеётся!")) playsound(src, 'sound/machines/honkbot_evil_laugh.ogg', 75, TRUE, -1) // evil laughter update_icon() @@ -205,8 +213,8 @@ threatlevel = 6 // will never let you go addtimer(VARSET_CALLBACK(src, spam_flag, FALSE), cooldowntime) add_attack_logs(src, C, "honked by [src]") - C.visible_message("[src] has honked [C]!",\ - "[src] has honked you!") + C.visible_message(span_danger("[capitalize(declent_ru(NOMINATIVE))] хонкнул [C]!"), + span_userdanger("[capitalize(declent_ru(NOMINATIVE))] хонкнул вас!")) else C.Stuttering(40 SECONDS) C.Stun(20 SECONDS) @@ -295,8 +303,8 @@ target = C oldtarget_name = C.name bike_horn() - speak("Honk!") - visible_message("[src] starts chasing [C.name]!") + speak("Хонк!") + visible_message("[capitalize(declent_ru(NOMINATIVE))] начинает гнаться за [C.name]!") mode = BOT_HUNT INVOKE_ASYNC(src, PROC_REF(handle_automated_action)) break @@ -309,7 +317,7 @@ /mob/living/simple_animal/bot/honkbot/explode() //doesn't drop cardboard nor its assembly, since its a very frail material. SSmove_manager.stop_looping(src) - visible_message(span_boldannounceic("[src] blows apart!")) + visible_message(span_userdanger("[capitalize(declent_ru(NOMINATIVE))] разлетается на части!")) var/turf/Tsec = get_turf(src) new /obj/item/bikehorn(Tsec) new /obj/item/assembly/prox_sensor(Tsec) @@ -336,14 +344,14 @@ return arrived.visible_message(span_warning("[pick( \ - "[arrived] dives out of [src]'s way!", \ - "[arrived] stumbles over [src]!", \ - "[arrived] jumps out of [src]'s path!", \ - "[arrived] trips over [src] and falls!", \ - "[arrived] topples over [src]!", \ - "[arrived] leaps out of [src]'s way!")]")) + "[arrived] спотыка[pluralize_ru(arrived.gender, "ет", "ют")]ся об [declent_ru(GENITIVE)]!", \ + "[arrived] опрокидыва[pluralize_ru(arrived.gender, "ет", "ют")]ся на [declent_ru(GENITIVE)]!", \ + "[arrived] отлета[pluralize_ru(arrived.gender, "ет", "ют")] с пути [declent_ru(GENITIVE)]!", \ + "[capitalize(declent_ru(NOMINATIVE))] сбивает [arrived]!", \ + "[capitalize(declent_ru(NOMINATIVE))] влетает в [arrived], заставляя [genderize_ru(arrived.gender, "его", "её", "его", "их")] упасть!", \ + "[capitalize(declent_ru(NOMINATIVE))] опрокидывает [arrived]!")]")) arrived.Weaken(10 SECONDS) if(!client) - INVOKE_ASYNC(src, PROC_REF(speak), "honk") + INVOKE_ASYNC(src, PROC_REF(speak), "хонк!") sensor_blink() diff --git a/code/modules/mob/living/simple_animal/bot/medbot.dm b/code/modules/mob/living/simple_animal/bot/medbot.dm index c655f81514f..49b6e53e178 100644 --- a/code/modules/mob/living/simple_animal/bot/medbot.dm +++ b/code/modules/mob/living/simple_animal/bot/medbot.dm @@ -1,7 +1,15 @@ //Medbot /mob/living/simple_animal/bot/medbot name = "\improper Medibot" - desc = "A little medical robot. He looks somewhat underwhelmed." + desc = "Маленький медицинский робот. Выглядит несколько подавленным." + ru_names = list( + NOMINATIVE = "медбот", + GENITIVE = "медбота", + DATIVE = "медботу", + ACCUSATIVE = "медбота", + INSTRUMENTAL = "медботом", + PREPOSITIONAL = "медботе", + ) icon = 'icons/obj/aibots.dmi' icon_state = "medibot0" density = FALSE @@ -15,10 +23,10 @@ bot_type = MED_BOT bot_filter = RADIO_MEDBOT model = "Medibot" - bot_purpose = "seek out hurt crewmembers and ensure that they are healed" + bot_purpose = "найти раненых членов экипажа и проследить, чтобы они были исцелены" bot_core_type = /obj/machinery/bot_core/medbot window_id = "automed" - window_name = "Automatic Medical Unit v1.1" + window_name = "Автоматическая Медицинская Единица v1.1" path_image_color = "#DDDDFF" data_hud_type = DATA_HUD_MEDICAL_ADVANCED @@ -85,7 +93,15 @@ /mob/living/simple_animal/bot/medbot/mysterious name = "\improper Mysterious Medibot" - desc = "International Medibot of mystery." + desc = "Загадочный медбот. От него веет тайнами..." + ru_names = list( + NOMINATIVE = "загадочный медбот", + GENITIVE = "загадочного медбота", + DATIVE = "загадочному медботу", + ACCUSATIVE = "загадочного медбота", + INSTRUMENTAL = "загадочным медботом", + PREPOSITIONAL = "загадочном медботе", + ) skin = "bezerk" treatment_oxy = "perfluorodecalin" treatment_brute = "bicaridine" @@ -94,7 +110,15 @@ /mob/living/simple_animal/bot/medbot/syndicate name = "Suspicious Medibot" - desc = "You'd better have insurance!" + desc = "Вам лучше быть застрахованным!" + ru_names = list( + NOMINATIVE = "подозрительный медбот", + GENITIVE = "подозрительного медбота", + DATIVE = "подозрительному медботу", + ACCUSATIVE = "подозрительного медбота", + INSTRUMENTAL = "подозрительным медботом", + PREPOSITIONAL = "подозрительном медботе", + ) skin = "bezerk" faction = list("syndicate") treatment_oxy = "perfluorodecalin" @@ -107,7 +131,6 @@ radio_channel = "Syndicate" radio_config = list("Common" = 1, "Medical" = 1, "Syndicate" = 1) - /mob/living/simple_animal/bot/medbot/syndicate/Initialize(mapload, new_skin) . = ..() Radio.syndiekey = new /obj/item/encryptionkey/syndicate @@ -172,26 +195,26 @@ /mob/living/simple_animal/bot/medbot/set_custom_texts() - text_hack = "You corrupt [name]'s reagent processor circuits." - text_dehack = "You reset [name]'s reagent processor circuits." - text_dehack_fail = "[name] seems damaged and does not respond to reprogramming!" + text_hack = "Вы взломали микросхемы синтезатора реагентов [declent_ru(GENITIVE)]." + text_dehack = "Вы восстановили микросхемы синтезатора реагентов [declent_ru(GENITIVE)]." + text_dehack_fail = "[capitalize(declent_ru(NOMINATIVE))] выглядит повреждённым и не может быть перепрограммирован!" /mob/living/simple_animal/bot/medbot/get_controls(mob/user) var/dat dat += hack(user) dat += showpai(user) - dat += "Medical Unit Controls v1.1

" - dat += "Status: [on ? "On" : "Off"]
" - dat += "Maintenance panel panel is [open ? "opened" : "closed"]
" - dat += "Beaker: " + dat += "Панель управления медицинским роботом v1.1

" + dat += "Состояние: [on ? "Включён" : "Выключен"]
" + dat += "Панель технического обслуживания [open ? "открыта" : "закрыта"]
" + dat += "Ёмкость: " if(reagent_glass) - dat += "Loaded \[[reagent_glass.reagents.total_volume]/[reagent_glass.reagents.maximum_volume]\]" + dat += "Установлена \[[reagent_glass.reagents.total_volume]/[reagent_glass.reagents.maximum_volume]\]" else - dat += "None Loaded" - dat += "
Behaviour controls are [locked ? "locked" : "unlocked"]
" + dat += "Не установлена" + dat += "
Управление поведением [locked ? "заблокировано" : "разблокировано"]
" if(!locked || issilicon(user) || user.can_admin_interact()) - dat += "Healing Threshold: " + dat += "Порог лечения: " dat += "-- " dat += "- " dat += "[heal_threshold] " @@ -199,20 +222,20 @@ dat += "++" dat += "
" - dat += "Injection Level: " + dat += "Объём инъекции: " dat += "- " dat += "[injection_amount] " dat += "+ " dat += "
" - dat += "Reagent Source: " - dat += "[use_beaker ? "Loaded Beaker (When available)" : "Internal Synthesizer"]
" + dat += "Источник реагентов: " + dat += "[use_beaker ? "Установленная ёмкость (Если доступна)" : "Внутренний синтезатор"]
" - dat += "Treat Viral Infections: [treat_virus ? "Yes" : "No"]
" - dat += "The speaker switch is [shut_up ? "off" : "on"]. Toggle
" - dat += "Critical Patient Alerts: [declare_crit ? "Yes" : "No"]
" - dat += "Patrol Station: [auto_patrol ? "Yes" : "No"]
" - dat += "Stationary Mode: [stationary_mode ? "Yes" : "No"]
" + dat += "Лечить вирусные инфекции: [treat_virus ? "Да" : "Нет"]
" + dat += "Динамик [shut_up ? "выключен" : "включён"]. Переключить
" + dat += "Оповещать о тяжелораненых: [declare_crit ? "Да" : "Нет"]
" + dat += "Режим патрулирования: [auto_patrol ? "Да" : "Нет"]
" + dat += "Стационарный режим: [stationary_mode ? "Да" : "Нет"]
" return dat @@ -241,8 +264,12 @@ use_beaker = !use_beaker else if(href_list["eject"] && (!isnull(reagent_glass))) - reagent_glass.forceMove(get_turf(src)) + if(ishuman(usr)) + usr.put_in_active_hand(reagent_glass, ignore_anim = FALSE) + else + reagent_glass.forceMove(get_turf(src)) reagent_glass = null + balloon_alert(usr, "ёмкость извлечена") else if(href_list["togglevoice"]) shut_up = !shut_up @@ -274,15 +301,15 @@ if(istype(I, /obj/item/reagent_containers/glass)) add_fingerprint(user) if(locked) - to_chat(user, span_warning("You cannot insert a beaker because the panel is locked!")) + balloon_alert(user, "техпанель заблокирована!") return ATTACK_CHAIN_PROCEED|ATTACK_CHAIN_NO_AFTERATTACK if(reagent_glass) - to_chat(user, span_warning("There is already a beaker loaded!")) + balloon_alert(user, "слот для ёмкости занят!") return ATTACK_CHAIN_PROCEED|ATTACK_CHAIN_NO_AFTERATTACK if(!user.drop_transfer_item_to_loc(I, src)) return ..() | ATTACK_CHAIN_NO_AFTERATTACK reagent_glass = I - to_chat(user, span_notice("You insert [I].")) + balloon_alert(user, "ёмкость установлена") show_controls(user) return ATTACK_CHAIN_PROCEED_SUCCESS|ATTACK_CHAIN_NO_AFTERATTACK @@ -298,8 +325,8 @@ if(emagged == 2) declare_crit = FALSE if(user) - to_chat(user, span_notice("You short out [src]'s reagent synthesis circuits.")) - audible_message(span_danger("[src] buzzes oddly!")) + to_chat(user, span_notice("Вы замыкаете микросхемы синтеза реагентов [declent_ru(GENITIVE)].")) + audible_message(span_danger("[capitalize(declent_ru(NOMINATIVE))] странно жужжит.")) flick("medibot_spark", src) if(user) oldpatient = user @@ -308,7 +335,7 @@ /mob/living/simple_animal/bot/medbot/process_scan(mob/living/carbon/human/H) if(buckled) if((last_warning + 30 SECONDS) < world.time) - speak(span_danger("Movement restrained! Unit on standby!")) + speak(span_danger("Движение невозможно! Режим ожидания.")) playsound(loc, 'sound/machines/buzz-two.ogg', 50, FALSE) last_warning = world.time return @@ -316,14 +343,15 @@ return if((H == oldpatient) && (world.time < last_found + 20 SECONDS)) + return if(assess_patient(H)) last_found = world.time if((last_newpatient_speak + 30 SECONDS) < world.time) //Don't spam these messages! - var/list/messagevoice = list("Hey, [H.name]! Hold on, I'm coming." = 'sound/voice/mcoming.ogg', - "Wait [H.name]! I want to help!" = 'sound/voice/mhelp.ogg', - "[H.name], you appear to be injured!" = 'sound/voice/minjured.ogg') + var/list/messagevoice = list("Эй, [H.name]! Держись, я уже иду!" = 'sound/voice/mcoming.ogg', + "Подожди, [H.name]! Я спешу на помощь!" = 'sound/voice/mhelp.ogg', + "[H.name], кажется, вы ранены!" = 'sound/voice/minjured.ogg') var/message = pick(messagevoice) speak(message) playsound(loc, messagevoice[message], 50, FALSE) @@ -344,11 +372,11 @@ if(!patient) if(!shut_up && prob(1)) - var/list/messagevoice = list("Radar, put a mask on!" = 'sound/voice/mradar.ogg', - "There's always a catch, and I'm the best there is." = 'sound/voice/mcatch.ogg', - "I knew it, I should've been a plastic surgeon." = 'sound/voice/msurgeon.ogg', - "What kind of medbay is this? Everyone's dropping like flies." = 'sound/voice/mflies.ogg', - "Delicious!" = 'sound/voice/mdelicious.ogg') + var/list/messagevoice = list("Ты, надень свою маску!" = 'sound/voice/mradar.ogg', + "Что-то всегда идёт не так, но я справлюсь." = 'sound/voice/mcatch.ogg', + "А ведь я мог бы стать пластическим хирургом..." = 'sound/voice/msurgeon.ogg', + "Что это за медотсек? Все мрут, словно мухи." = 'sound/voice/mflies.ogg', + "Замечательно!") var/message = pick(messagevoice) speak(message) playsound(loc, messagevoice[message], 50, FALSE) @@ -501,9 +529,9 @@ return if(C.stat == DEAD || HAS_TRAIT(C, TRAIT_FAKEDEATH)) - var/list/messagevoice = list("No! Stay with me!" = 'sound/voice/mno.ogg', - "Live, damnit! LIVE!" = 'sound/voice/mlive.ogg', - "I...I've never lost a patient before. Not today, I mean." = 'sound/voice/mlost.ogg') + var/list/messagevoice = list("Нет, не оставляй меня!" = 'sound/voice/mno.ogg', + "Живи, чёрт возьми! ЖИВИ!" = 'sound/voice/mlive.ogg', + "Я... Я ещё не терял пациента. Не сегодня, имею ввиду." = 'sound/voice/mlost.ogg') var/message = pick(messagevoice) speak(message) playsound(loc, messagevoice[message], 50, FALSE) @@ -521,9 +549,9 @@ reagent_id = select_medication(C, beaker_injection) if(!reagent_id) //If they don't need any of that they're probably cured! - var/list/messagevoice = list("All patched up!" = 'sound/voice/mpatchedup.ogg', - "An apple a day keeps me away." = 'sound/voice/mapple.ogg', - "Feel better soon!" = 'sound/voice/mfeelbetter.ogg') + var/list/messagevoice = list("Как новенький!" = 'sound/voice/mpatchedup.ogg', + "Кто яблоко в день съедает, у того [declent_ru(NOMINATIVE)] не бывает!" = 'sound/voice/mapple.ogg', + "Скоро полегчает!" = 'sound/voice/mfeelbetter.ogg') var/message = pick(messagevoice) speak(message) playsound(loc, messagevoice[message], 50, FALSE) @@ -533,8 +561,8 @@ if(!emagged && !hijacked && check_overdose(patient, reagent_id, injection_amount)) soft_reset() return - C.visible_message(span_danger("[src] is trying to inject [patient]!"), - span_userdanger("[src] is trying to inject you!")) + C.visible_message(span_danger("[capitalize(declent_ru(NOMINATIVE))] пытается сделать укол [patient]!"), + span_userdanger("[capitalize(declent_ru(NOMINATIVE))] пытается сделать вам укол!")) addtimer(CALLBACK(src, PROC_REF(do_inject), C, !isnull(beaker_injection), reagent_id), 3 SECONDS) @@ -551,10 +579,10 @@ else patient.reagents.add_reagent(reagent_id, injection_amount) - C.visible_message(span_danger("[src] injects [patient] with its syringe!"), - span_userdanger("[src] injects you with its syringe!")) + C.visible_message(span_danger("[capitalize(declent_ru(NOMINATIVE))] сделал укол [patient] своим шприцем!"), + span_userdanger("[capitalize(declent_ru(NOMINATIVE))] сделал вам укол своим шприцем!")) else - visible_message("[src] retracts its syringe.") + visible_message("[capitalize(declent_ru(NOMINATIVE))] убирает свой шприц.") update_icon() soft_reset() @@ -572,7 +600,7 @@ /mob/living/simple_animal/bot/medbot/explode() on = FALSE - visible_message(span_userdanger("[src] blows apart!")) + visible_message(span_userdanger("[capitalize(declent_ru(NOMINATIVE))] разлетается на части!")) var/turf/Tsec = get_turf(src) if(drops_parts) @@ -623,7 +651,7 @@ if(syndicate_aligned) return var/area/location = get_area(src) - speak("Medical emergency! [crit_patient ? "[crit_patient]" : "A patient"] is in critical condition at [location]!", radio_channel) + speak("Нужна срочная медицинская помощь! [crit_patient ? "[crit_patient]" : "Пациент"] в тяжёлом состоянии в локации [location]!", radio_channel) declare_cooldown = TRUE spawn(200) //Twenty seconds declare_cooldown = FALSE diff --git a/code/modules/mob/living/simple_animal/bot/mulebot.dm b/code/modules/mob/living/simple_animal/bot/mulebot.dm index 28ca08789e5..61659f90974 100644 --- a/code/modules/mob/living/simple_animal/bot/mulebot.dm +++ b/code/modules/mob/living/simple_animal/bot/mulebot.dm @@ -8,7 +8,15 @@ /mob/living/simple_animal/bot/mulebot name = "\improper MULEbot" - desc = "A Multiple Utility Load Effector bot." + desc = "Многофункциональный Узкоспециализированный Легкомоторный робот. Нет, это не просто случайные слова, подобранные для красивого написания. Честно." + ru_names = list( + NOMINATIVE = "МУЛбот", + GENITIVE = "МУЛбота", + DATIVE = "МУЛботу", + ACCUSATIVE = "МУЛбота", + INSTRUMENTAL = "МУЛботом", + PREPOSITIONAL = "МУЛботе", + ) icon_state = "mulebot0" density = TRUE move_resist = MOVE_FORCE_STRONG @@ -26,7 +34,7 @@ bot_type = MULE_BOT bot_filter = RADIO_MULEBOT model = "MULE" - bot_purpose = "deliver crates and other packages between departments, as requested" + bot_purpose = "доставлять ящики и другие посылки получателям" bot_core_type = /obj/machinery/bot_core/mulebot path_image_color = "#7F5200" @@ -108,26 +116,24 @@ . = ..() if(!ATTACK_CHAIN_CANCEL_CHECK(.) && knock_off(1 + I.force * 2)) user.visible_message( - span_danger("[user] has knocked [cached_load] off [src]!"), - span_danger("You have knocked [cached_load] off [src]!"), + span_danger("[user] столкнул [cached_load] с [declent_ru(GENITIVE)]!"), + span_danger("Вы столкнули [cached_load] с [declent_ru(GENITIVE)]!"), ) return . if(istype(I,/obj/item/stock_parts/cell)) add_fingerprint(user) if(!open) - to_chat(user, span_warning("You should open the maintenance panel first.")) + balloon_alert(user, "техпанель закрыта!") return ATTACK_CHAIN_PROCEED if(cell) - to_chat(user, span_warning("The [name] already has a power cell installed.")) + balloon_alert(user, "слот батареи занят!") return ATTACK_CHAIN_PROCEED if(!user.drop_transfer_item_to_loc(I, src)) return ..() cell = I - user.visible_message( - span_notice("[user] has inserted a cell into [src]."), - span_notice("You have inserted the new cell into [src]."), - ) + visible_message(span_notice("[user] вставил батарею в [declent_ru(GENITIVE)].")) + balloon_alert(user, "вы вставили батарею внутрь") update_controls() return ATTACK_CHAIN_BLOCKED_ALL @@ -135,8 +141,8 @@ . = ..() if(!ATTACK_CHAIN_CANCEL_CHECK(.) && knock_off(1 + I.force * 2)) user.visible_message( - span_danger("[user] has knocked off [cached_load] from [src]!"), - span_danger("You have knocked off [cached_load] from [src]!"), + span_danger("[user] столкнул [cached_load] с [declent_ru(GENITIVE)]!"), + span_danger("Вы столкнули [cached_load] с [declent_ru(GENITIVE)]!"), ) @@ -163,37 +169,31 @@ . = TRUE if(health >= maxHealth) add_fingerprint(user) - to_chat(user, span_warning("[src] does not need a repair!")) + balloon_alert(user, "ремонт не требуется") return . user.visible_message( - span_notice("[user] starts to repair [src]."), - span_notice("You start to repair [src]..."), + span_notice("[user] ремонтиру[pluralize_ru(user.gender, "ет", "ют")] [declent_ru(GENITIVE)]."), + span_notice("Вы ремонтируете [declent_ru(GENITIVE)].") ) if(!I.use_tool(src, user, 2 SECONDS, volume = I.tool_volume) || health >= maxHealth) return . heal_damage_type(25, BRUTE) - user.visible_message( - span_notice("[user] has repaired [src]."), - span_notice("You have repaired [src]."), - ) /mob/living/simple_animal/bot/mulebot/crowbar_act(mob/living/user, obj/item/I) . = TRUE if(!open) add_fingerprint(user) - to_chat(user, span_warning("You should open the maintenance panel first.")) + balloon_alert(user, "техпанель закрыта!") return . if(!cell) add_fingerprint(user) - to_chat(user, span_warning("The [name] has no power cell installed.")) + balloon_alert(user, "слот для батареи пуст!") return . if(!I.use_tool(src, user, volume = I.tool_volume)) return . - user.visible_message( - span_notice("[user] has removed the power cell from [src]."), - span_notice("You have removed the power cell from [src]."), - ) + visible_message(span_notice("[user] вынул батарею из [declent_ru(GENITIVE)].")) + balloon_alert(user, "батарея извлечена") cell.add_fingerprint(user) cell.forceMove(drop_location()) cell = null @@ -203,7 +203,7 @@ . = TRUE if(!open) add_fingerprint(user) - to_chat(user, span_warning("You should open the maintenance panel first.")) + balloon_alert(user, "техпанель закрыта!") return . if(!I.use_tool(src, user, volume = I.tool_volume)) return . @@ -214,7 +214,7 @@ . = TRUE if(!open) add_fingerprint(user) - to_chat(user, span_warning("You should open the maintenance panel first.")) + balloon_alert(user, "техпанель закрыта!") return . if(!I.use_tool(src, user, volume = I.tool_volume)) return . @@ -226,7 +226,7 @@ emagged = 1 if(!open) locked = !locked - to_chat(user, span_notice("You [locked ? "lock" : "unlock"] [src]'s controls!")) + balloon_alert(user, "техпанель [locked ? "заблокирована" : "разблокирована"]") flick("mulebot-emagged", src) playsound(loc, 'sound/effects/sparks1.ogg', 100, FALSE) @@ -266,7 +266,7 @@ if(prob(50) && !isnull(load)) unload(0) if(prob(25)) - visible_message(span_danger("Something shorts out inside [src]!")) + visible_message(span_danger("Что-то замыкается внутри [declent_ru(GENITIVE)]!")) wires.cut_random() @@ -285,11 +285,11 @@ turn_off() else if(cell && !open) if(!turn_on()) - to_chat(usr, span_warning("You can't switch on [src]!")) + to_chat(usr, span_warning("Вы не можете включить !")) return else return - visible_message("[usr] switches [on ? "on" : "off"] [src].") + visible_message("[usr] [on ? "включает" : "выключает"] [declent_ru(GENITIVE)].") if("cellremove") if(open && cell && !usr.get_active_hand()) cell.update_icon() @@ -298,8 +298,8 @@ cell.add_fingerprint(usr) cell = null - usr.visible_message(span_notice("[usr] removes the power cell from [src]."), - span_notice("You remove the power cell from [src].")) + usr.visible_message(span_notice("[usr] вынул батарею из [declent_ru(GENITIVE)]."), + span_notice("Вы вынули батарею из [declent_ru(GENITIVE)].")) if("cellinsert") if(open && !cell) var/obj/item/stock_parts/cell/C = usr.get_active_hand() @@ -308,8 +308,8 @@ cell = C C.add_fingerprint(usr) - usr.visible_message(span_notice("[usr] inserts a power cell into [src]."), - span_notice("You insert the power cell into [src].")) + usr.visible_message(span_notice("[usr] вставил батарею в [declent_ru(GENITIVE)]."), + span_notice("Вы вставили батарею в [declent_ru(GENITIVE)].")) if("stop") if(mode >= BOT_DELIVER) bot_reset() @@ -320,15 +320,15 @@ if(mode == BOT_IDLE || mode == BOT_DELIVER) start_home() if("destination") - var/new_dest = input(usr, "Enter Destination:", name, destination) as null|anything in GLOB.deliverybeacontags + var/new_dest = input(usr, "Введите пункт назначения:", name, destination) as null|anything in GLOB.deliverybeacontags if(new_dest) set_destination(new_dest) if("setid") - var/new_id = tgui_input_text(usr, "Enter ID:", name, suffix, MAX_NAME_LEN) + var/new_id = tgui_input_text(usr, "Введите ID:", name, suffix, MAX_NAME_LEN) if(new_id) set_suffix(new_id) if("sethome") - var/new_home = input(usr, "Enter Home:", name, home_destination) as null|anything in GLOB.deliverybeacontags + var/new_home = input(usr, "Введите домашнюю точку:", name, home_destination) as null|anything in GLOB.deliverybeacontags if(new_home) home_destination = new_home if("unload") @@ -352,7 +352,7 @@ update_controls() return TRUE else - to_chat(user, span_danger("Access denied.")) + balloon_alert(user, "отказано в доступе!") return FALSE @@ -362,16 +362,16 @@ var/dat dat += hack(user) dat += showpai(user) - dat += "

Multiple Utility Load Effector Mk. V

" + dat += "

Многофункциональный Узкоспециализированный Легкомоторный робот v5.0

" dat += "ID: [suffix]
" - dat += "Power: [on ? "On" : "Off"]
" + dat += "Питание: [on ? "Включён" : "Выключен"]
" if(!open) - dat += "

Status

" + dat += "

Состояние

" dat += "
" switch(mode) if(BOT_IDLE) - dat += "Ready" + dat += "Готовность" if(BOT_DELIVER) dat += "[mode_name[BOT_DELIVER]]" if(BOT_GO_HOME) @@ -384,40 +384,40 @@ dat += "[mode_name[BOT_NO_ROUTE]]" dat += "
" - dat += "Current Load: [load ? load.name : "none"]
" - dat += "Destination: [!destination ? "none" : destination]
" - dat += "Power level: [cell ? cell.percent() : 0]%" + dat += "Груз [load ? load.name : "отсутствует"]
" + dat += "Пункт назначения: [!destination ? "отсутствует" : destination]
" + dat += "Заряд: [cell ? cell.percent() : 0]%" if(locked && !ai && !user.can_admin_interact()) - dat += " 
Controls are locked
Unlock Controls" + dat += " 
Управление поведением заблокировано
Разблокировать" else - dat += " 
Controls are unlocked
Lock Controls

" - - dat += "Toggle Power
" - dat += "Stop
" - dat += "Proceed
" - dat += "Return to Home
" - dat += "Set Destination
" - dat += "Set Bot ID
" - dat += "Set Home
" - dat += "Toggle Auto Return Home ([auto_return ? "On":"Off"])
" - dat += "Toggle Auto Pickup Crate ([auto_pickup ? "On":"Off"])
" - dat += "Toggle Delivery Reporting ([report_delivery ? "On" : "Off"])
" + dat += " 
Управление поведением разблокировано
Заблокировать

" + + dat += "Включить/Выключить
" + dat += "Остановиться
" + dat += "Продолжить движение
" + dat += "Возврат домой
" + dat += "Задать точку назначения
" + dat += "Задать ID роботу
" + dat += "Задать домашнюю точку
" + dat += "[auto_return ? "Включить":"Выключить"] автоматическое возвращение домой
" + dat += "[auto_return ? "Включить":"Выключить"] автоматический подбор ящиков
" + dat += "[auto_return ? "Включить":"Выключить"] автоматический отчёт о доставке
" if(load) - dat += "Unload Now
" - dat += "
The maintenance hatch is closed.
" + dat += "Разгрузиться
" + dat += "
Панель технического обслуживания закрыта
" else if(!ai) - dat += "
The maintenance hatch is open.

" - dat += "Power cell: " + dat += "
Панель технического обслуживания открыта

" + dat += "Батарея: " if(cell) - dat += "Installed
" + dat += "Установлена
" else - dat += "Removed
" + dat += "Отсутствует
" wires.Interact(user) else - dat += "
The bot is in maintenance mode and cannot be controlled.

" + dat += "
Робот в режиме технического обслуживания - управление поведением заблокировано

" return dat @@ -430,13 +430,13 @@ /mob/living/simple_animal/bot/mulebot/proc/buzz(type) switch(type) if(SIGH) - audible_message("[src] makes a sighing buzz.") + audible_message("[capitalize(declent_ru(NOMINATIVE))] разочарованно гудит.") playsound(loc, 'sound/machines/buzz-sigh.ogg', 50, 0) if(ANNOYED) - audible_message("[src] makes an annoyed buzzing sound.") + audible_message("[capitalize(declent_ru(NOMINATIVE))] раздражённо жужжит.") playsound(loc, 'sound/machines/buzz-two.ogg', 50, 0) if(DELIGHT) - audible_message("[src] makes a delighted ping!") + audible_message("[capitalize(declent_ru(NOMINATIVE))] восторженно звенит!") playsound(loc, 'sound/machines/ping.ogg', 50, 0) @@ -708,21 +708,21 @@ /mob/living/simple_animal/bot/mulebot/proc/at_target() if(!reached_target) radio_channel = "Supply" //Supply channel - audible_message("[src] makes a chiming sound!") + audible_message("[capitalize(declent_ru(NOMINATIVE))] громко звенит!") playsound(loc, 'sound/machines/chime.ogg', 50, 0) reached_target = 1 if(pathset) //The AI called us here, so notify it of our arrival. loaddir = dir //The MULE will attempt to load a crate in whatever direction the MULE is "facing". if(calling_ai) - to_chat(calling_ai, "[bicon(src)] [src] wirelessly plays a chiming sound!") + to_chat(calling_ai, "[bicon(src)] [capitalize(declent_ru(NOMINATIVE))] удалённо проигрывает звук звонка!") playsound(calling_ai, 'sound/machines/chime.ogg',40, 0) calling_ai = null radio_channel = "AI Private" //Report on AI Private instead if the AI is controlling us. if(load) // if loaded, unload at target if(report_delivery) - speak("Destination [destination] reached. Unloading [load].", radio_channel) + speak("Пункт назначения [destination] достигнут. Выгружаю [load].", radio_channel) if(istype(load, /obj/structure/closet/crate)) var/obj/structure/closet/crate/C = load C.notifyRecipient(destination) @@ -741,7 +741,7 @@ if(AM && AM.Adjacent(src)) load(AM) if(report_delivery) - speak("Now loading [load] at [get_area(src)].", radio_channel) + speak("Загружаю [load] в локации [get_area(src)].", radio_channel) // whatever happened, check to see if we return home if(auto_return && home_destination && destination != home_destination) @@ -787,14 +787,14 @@ // usually just bumps, but if avoidance disabled knock over mobs if(isrobot(bumped_living)) - visible_message(span_danger("[src] bumps into [bumped_living]!")) + visible_message(span_danger("[capitalize(declent_ru(NOMINATIVE))] врезается в [bumped_living]!")) return . if(paicard) return . add_attack_logs(src, bumped_living, "Knocked down") - visible_message(span_danger("[src] knocks over [bumped_living]!")) + visible_message(span_danger("[capitalize(declent_ru(NOMINATIVE))] сбивает [bumped_living]!")) bumped_living.Weaken(16 SECONDS) @@ -802,8 +802,8 @@ if(H.player_logged)//No running over SSD people return add_attack_logs(src, H, "Run over (DAMTYPE: [uppertext(BRUTE)])") - H.visible_message(span_danger("[src] drives over [H]!"), - span_userdanger("[src] drives over you!")) + H.visible_message(span_danger("[capitalize(declent_ru(NOMINATIVE))] переезжает [H]!"), + span_userdanger("[capitalize(declent_ru(NOMINATIVE))] переезжает вас!")) playsound(loc, 'sound/effects/splat.ogg', 50, 1) var/damage = rand(5, 15) @@ -832,15 +832,15 @@ switch(command) if("start") if(load) - to_chat(src, span_warningbig("DELIVER [load] TO [destination]")) + to_chat(src, span_warningbig("ДОСТАВИТЬ [load] В ЛОКАЦИЮ [destination]")) else - to_chat(src, span_warningbig("PICK UP DELIVERY AT [destination]")) + to_chat(src, span_warningbig("ЗАБРАТЬ ГРУЗ В ЛОКАЦИИ [destination]")) if("unload", "load") if(load) - to_chat(src, span_warningbig("UNLOAD")) + to_chat(src, span_warningbig("ВЫГРУЗИТЬСЯ")) else - to_chat(src, span_warningbig("LOAD")) + to_chat(src, span_warningbig("ЗАГРУЗИТЬСЯ")) if("autoret", "autopick", "target") return else @@ -948,7 +948,7 @@ /mob/living/simple_animal/bot/mulebot/explode() - visible_message(span_userdanger("[src] blows apart!")) + visible_message(span_userdanger("[capitalize(declent_ru(NOMINATIVE))] разлетается на части!")) var/turf/Tsec = get_turf(src) new /obj/item/assembly/prox_sensor(Tsec) diff --git a/code/modules/mob/living/simple_animal/bot/secbot.dm b/code/modules/mob/living/simple_animal/bot/secbot.dm index bfd7453c1c0..9f9c4ed393c 100644 --- a/code/modules/mob/living/simple_animal/bot/secbot.dm +++ b/code/modules/mob/living/simple_animal/bot/secbot.dm @@ -3,7 +3,15 @@ /mob/living/simple_animal/bot/secbot name = "\improper Securitron" - desc = "A little security robot. He looks less than thrilled." + desc = "Маленький охранный робот. Он выглядит абсолютно спокойным." + ru_names = list( + NOMINATIVE = "охранный робот", + GENITIVE = "охранного робота", + DATIVE = "охранному роботу", + ACCUSATIVE = "охранного робота", + INSTRUMENTAL = "охранным роботом", + PREPOSITIONAL = "охранном роботе", + ) icon = 'icons/obj/aibots.dmi' icon_state = "secbot0" density = FALSE @@ -19,10 +27,10 @@ bot_type = SEC_BOT bot_filter = RADIO_SECBOT model = "Securitron" - bot_purpose = "seek out criminals, handcuff them, and report their location to security" + bot_purpose = "найти преступников, задержать их и доложить службе безопасности" bot_core_type = /obj/machinery/bot_core/secbot window_id = "autosec" - window_name = "Automatic Security Unit v1.6" + window_name = "Автоматическая Охранная Единица v1.6" path_image_color = "#FF0000" data_hud_type = DATA_HUD_SECURITY_ADVANCED @@ -55,7 +63,15 @@ /mob/living/simple_animal/bot/secbot/beepsky name = "Officer Beepsky" - desc = "It's Officer Beepsky! Powered by a potato and a shot of whiskey." + desc = "Это Офицер Бипски! Работает с помощью картофеля и рюмки виски." + ru_names = list( + NOMINATIVE = "Офицер Бипски", + GENITIVE = "Офицера Бипски", + DATIVE = "Офицеру Бипски", + ACCUSATIVE = "Офицера Бипски", + INSTRUMENTAL = "Офицером Бипски", + PREPOSITIONAL = "Офицере Бипски", + ) idcheck = FALSE weaponscheck = FALSE auto_patrol = TRUE @@ -72,13 +88,29 @@ /mob/living/simple_animal/bot/secbot/pingsky name = "Officer Pingsky" - desc = "It's Officer Pingsky! Delegated to satellite guard duty for harbouring anti-human sentiment." + desc = "Это Офицер Пингски! Переведён на охрану спутника за разжигание античеловеческих настроений." + ru_names = list( + NOMINATIVE = "Офицер Пингски", + GENITIVE = "Офицера Пингски", + DATIVE = "Офицеру Пингски", + ACCUSATIVE = "Офицера Пингски", + INSTRUMENTAL = "Офицером Пингски", + PREPOSITIONAL = "Офицере Пингски", + ) radio_channel = "AI Private" /mob/living/simple_animal/bot/secbot/ofitser name = "Prison Ofitser" - desc = "It's Prison Ofitser! Powered by the tears and sweat of prisoners." + desc = "Это Офицер Тюремски! Работает с помощью крови, пота и слёз заключённых." + ru_names = list( + NOMINATIVE = "Офицер Тюремски", + GENITIVE = "Офицера Тюремски", + DATIVE = "Офицеру Тюремски", + ACCUSATIVE = "Офицера Тюремски", + INSTRUMENTAL = "Офицером Тюремски", + PREPOSITIONAL = "Офицере Тюремски", + ) idcheck = FALSE weaponscheck = TRUE auto_patrol = TRUE @@ -86,7 +118,15 @@ /mob/living/simple_animal/bot/secbot/buzzsky name = "Officer Buzzsky" - desc = "It's Officer Buzzsky! Rusted and falling apart, he seems less than thrilled with the crew for leaving him in his current state." + desc = "Это Офицер Баззски! Проржавевший и разваливающийся на части, он явно не в восторге от того, что экипаж оставил его в таком состоянии." + ru_names = list( + NOMINATIVE = "Офицер Баззски", + GENITIVE = "Офицера Баззски", + DATIVE = "Офицеру Баззски", + ACCUSATIVE = "Офицера Баззски", + INSTRUMENTAL = "Офицером Баззски", + PREPOSITIONAL = "Офицере Баззски", + ) base_icon = "rustbot" icon_state = "rustbot0" declare_arrests = FALSE @@ -97,6 +137,14 @@ /mob/living/simple_animal/bot/secbot/armsky name = "Sergeant-at-Armsky" + ru_names = list( + NOMINATIVE = "Офицер Арсеналски", + GENITIVE = "Офицера Арсеналски", + DATIVE = "Офицеру Арсеналски", + ACCUSATIVE = "Офицера Арсеналски", + INSTRUMENTAL = "Офицером Арсеналски", + PREPOSITIONAL = "Офицере Арсеналски", + ) health = 45 idcheck = TRUE arrest_type = TRUE @@ -106,6 +154,14 @@ /mob/living/simple_animal/bot/secbot/podsky name = "Officer Podsky" + ru_names = list( + NOMINATIVE = "Офицер Подски", + GENITIVE = "Офицера Подски", + DATIVE = "Офицеру Подски", + ACCUSATIVE = "Офицера Подски", + INSTRUMENTAL = "Офицером Подски", + PREPOSITIONAL = "Офицере Подски", + ) health = 45 idcheck = TRUE arrest_type = TRUE @@ -152,9 +208,9 @@ /mob/living/simple_animal/bot/secbot/set_custom_texts() - text_hack = "You overload [name]'s target identification system." - text_dehack = "You reboot [name] and restore the target identification." - text_dehack_fail = "[name] refuses to accept your authority!" + text_hack = "Вы взломали систему идентификации целей [declent_ru(GENITIVE)]." + text_dehack = "Вы восстановили систему идентификации целей [declent_ru(GENITIVE)]." + text_dehack_fail = "[capitalize(declent_ru(NOMINATIVE))] отказывается признавать вашу власть!" /mob/living/simple_animal/bot/secbot/show_controls(mob/M) @@ -192,7 +248,7 @@ if (..()) return if(topic_denied(usr)) - to_chat(usr, "[src]'s interface is not responding!") + to_chat(usr, span_warning("Интерфейс [declent_ru(GENITIVE)] не отвечает!")) return add_fingerprint(usr) . = TRUE @@ -251,9 +307,9 @@ ..() if(emagged == 2) if(user) - to_chat(user, span_danger("You short out [src]'s target assessment circuits.")) + to_chat(user, span_danger("Вы замыкаете микросхемы системы целеуказания [declent_ru(GENITIVE)].")) oldtarget_name = user.name - audible_message(span_danger("[src] buzzes oddly!")) + audible_message(span_danger("[capitalize(declent_ru(NOMINATIVE))] странно жужжит!")) declare_arrests = FALSE icon_state = "[base_icon][on]" @@ -291,8 +347,8 @@ /mob/living/simple_animal/bot/secbot/proc/cuff(mob/living/carbon/C) mode = BOT_ARREST playsound(loc, 'sound/weapons/cablecuff.ogg', 30, TRUE, -2) - C.visible_message(span_danger("[src] is trying to put zipties on [C]!"), - span_userdanger("[src] is trying to put zipties on you!")) + C.visible_message(span_danger("[capitalize(declent_ru(NOMINATIVE))] начинает надевать стяжки на [C]!"), + span_userdanger("[capitalize(declent_ru(NOMINATIVE))] пытается надеть на вас стяжки!")) addtimer(CALLBACK(src, PROC_REF(cuff_callback), C), 6 SECONDS) @@ -304,6 +360,8 @@ return C.apply_restraints(new /obj/item/restraints/handcuffs/cable/zipties/used(null), ITEM_SLOT_HANDCUFFED, TRUE) + C.visible_message(span_danger("[capitalize(declent_ru(NOMINATIVE))] надел стяжки на [C]!"), + span_userdanger("[capitalize(declent_ru(NOMINATIVE))] надел на вас стяжки!")) playsound(loc, pick('sound/voice/bgod.ogg', 'sound/voice/biamthelaw.ogg', 'sound/voice/bsecureday.ogg', 'sound/voice/bradio.ogg', 'sound/voice/binsult.ogg', 'sound/voice/bcreep.ogg'), 50, 0) back_to_idle() @@ -328,11 +386,11 @@ if(declare_arrests) var/area/location = get_area(src) if(!speak_cooldown) - speak("[arrest_type ? "Detaining" : "Arresting"] level [threat] scumbag [C] in [location].", radio_channel) + speak("[arrest_type ? "Удерживаю" : "Задерживаю"] подонка по имени [C] в локации [location]. Уровень опасности - [threat].", radio_channel) speak_cooldown = TRUE addtimer(VARSET_CALLBACK(src, speak_cooldown, FALSE), SPEAK_COOLDOWN) - C.visible_message(span_danger("[src] has [harmbaton ? "beaten" : "stunned"] [C]!"), - span_userdanger("[src] has [harmbaton ? "beaten" : "stunned"] you!")) + C.visible_message(span_danger("[capitalize(declent_ru(NOMINATIVE))] [harmbaton ? "ударил" : "оглушил"] [C]!"), + span_userdanger("[capitalize(declent_ru(NOMINATIVE))] [harmbaton ? "ударил" : "оглушил"] вас!")) /mob/living/simple_animal/bot/secbot/Life(seconds, times_fired) @@ -483,9 +541,9 @@ else if(threatlevel >= 4) target = C oldtarget_name = C.name - speak("Level [threatlevel] infraction alert!") + speak("Вижу преступника! Уровень опасности - [threatlevel]!") playsound(loc, pick('sound/voice/bcriminal.ogg', 'sound/voice/bjustice.ogg', 'sound/voice/bfreeze.ogg'), 50, 0) - visible_message("[src] points at [C.name]!") + visible_message("[capitalize(declent_ru(NOMINATIVE))] указывает на [C.name]!") mode = BOT_HUNT INVOKE_ASYNC(src, PROC_REF(handle_automated_action)) break @@ -501,7 +559,7 @@ /mob/living/simple_animal/bot/secbot/explode() SSmove_manager.stop_looping(src) - visible_message("[src] blows apart!") + visible_message(span_userdanger("[capitalize(declent_ru(NOMINATIVE))] разлетается на части!")) var/turf/Tsec = get_turf(src) var/obj/item/secbot_assembly/Sa = new /obj/item/secbot_assembly(Tsec) Sa.build_step = 1 @@ -534,12 +592,12 @@ return arrived.visible_message(span_warning("[pick( \ - "[arrived] dives out of [src]'s way!", \ - "[arrived] stumbles over [src]!", \ - "[arrived] jumps out of [src]'s path!", \ - "[arrived] trips over [src] and falls!", \ - "[arrived] topples over [src]!", \ - "[arrived] leaps out of [src]'s way!")]")) + "[arrived] спотыка[pluralize_ru(arrived.gender, "ет", "ют")]ся об [declent_ru(GENITIVE)]!", \ + "[arrived] опрокидыва[pluralize_ru(arrived.gender, "ет", "ют")]ся на [declent_ru(GENITIVE)]!", \ + "[arrived] отлета[pluralize_ru(arrived.gender, "ет", "ют")] с пути [declent_ru(GENITIVE)]!", \ + "[capitalize(declent_ru(NOMINATIVE))] сбивает [arrived]!", \ + "[capitalize(declent_ru(NOMINATIVE))] влетает в [arrived], заставляя [genderize_ru(arrived.gender, "его", "её", "его", "их")] упасть!", \ + "[capitalize(declent_ru(NOMINATIVE))] опрокидывает [arrived]!")]")) arrived.Weaken(4 SECONDS) diff --git a/code/modules/mob/living/simple_animal/bot/syndicate.dm b/code/modules/mob/living/simple_animal/bot/syndicate.dm index b26619937d0..c8bcbcd2c71 100644 --- a/code/modules/mob/living/simple_animal/bot/syndicate.dm +++ b/code/modules/mob/living/simple_animal/bot/syndicate.dm @@ -1,7 +1,15 @@ /mob/living/simple_animal/bot/ed209/syndicate name = "Syndicate Sentry Bot" - desc = "A syndicate security bot." + desc = "Охранный робот Синдиката." + ru_names = list( + NOMINATIVE = "робот-часовой Синдиката", + GENITIVE = "робота-часового Синдиката", + DATIVE = "роботу-часовому Синдиката", + ACCUSATIVE = "робота-часового Синдиката", + INSTRUMENTAL = "роботом-часовым Синдиката", + PREPOSITIONAL = "роботе-часовом Синдиката", + ) model = "Guardian" icon = 'icons/obj/mecha/mecha.dmi' icon_state = "darkgygax" @@ -17,7 +25,7 @@ shoot_sound = 'sound/weapons/wave.ogg' anchored = TRUE window_id = "syndiebot" - window_name = "Syndicate Bot Interface" + window_name = "Интерфейс Часового Робота Синдиката" var/turf/saved_turf var/stepsound = 'sound/mecha/mechstep.ogg' var/area/syndicate_depot/core/depotarea @@ -54,7 +62,7 @@ /mob/living/simple_animal/bot/ed209/syndicate/ui_interact(mob/user, datum/tgui/ui = null) - to_chat(user, span_warning("[src] has no accessible control panel!")) + balloon_alert(user, "панель управления отсутствует!") return @@ -79,7 +87,7 @@ /mob/living/simple_animal/bot/ed209/syndicate/emag_act(mob/user) if(user) - to_chat(user, span_warning("[src] has no card reader slot!")) + balloon_alert(user, "сканер ID-карт отсутствует!") /mob/living/simple_animal/bot/ed209/syndicate/ed209_ai() @@ -87,9 +95,9 @@ if(saved_turf && current_turf != saved_turf) playsound(loc, stepsound, 40, TRUE) if(spawn_turf && !atoms_share_level(src, spawn_turf)) - raise_alert("[src] lost in space.") + raise_alert("[capitalize(declent_ru(NOMINATIVE))] потерялся в пространстве.") raised_alert = FALSE - raise_alert("[src] activated self-destruct.") + raise_alert("[capitalize(declent_ru(NOMINATIVE))] активировал протокол само-уничтожения.") qdel(src) saved_turf = current_turf switch(mode) @@ -183,13 +191,13 @@ if(depotarea) depotarea.list_remove(src, depotarea.guard_list) SSmove_manager.stop_looping(src) - visible_message(span_userdanger("[src] blows apart!")) + visible_message(span_userdanger("[capitalize(declent_ru(NOMINATIVE))] разлетается на части!")) do_sparks(3, 1, src) new /obj/effect/decal/cleanable/blood/oil(loc) var/obj/structure/mecha_wreckage/gygax/dark/wreck = new /obj/structure/mecha_wreckage/gygax/dark(loc) wreck.name = "sentry bot wreckage" - raise_alert("[src] destroyed.") + raise_alert("[capitalize(declent_ru(NOMINATIVE))] уничтожен.") qdel(src) diff --git a/code/modules/mob/living/simple_animal/friendly/animals_named.dm b/code/modules/mob/living/simple_animal/friendly/animals_named.dm index 67c95e0edfa..a8b8f873064 100644 --- a/code/modules/mob/living/simple_animal/friendly/animals_named.dm +++ b/code/modules/mob/living/simple_animal/friendly/animals_named.dm @@ -55,6 +55,7 @@ /mob/living/simple_animal/pet/cat/white/Penny name = "Копейка" desc = "Любит таскать монетки и мелкие предметы. Успевайте прятать их!" + icon_state = "penny" unique_pet = TRUE gold_core_spawnable = NO_SPAWN resting = TRUE @@ -62,6 +63,7 @@ /mob/living/simple_animal/pet/cat/birman/Crusher name = "Бедокур" //Не цель для воров desc = "Любит крушить всё что не прикручено. Нужно вовремя прибираться." + icon_state = "crusher" unique_pet = TRUE gold_core_spawnable = NO_SPAWN resting = TRUE diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/drone.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/drone.dm index 51e1eb36e97..67d6e7c574c 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/drone.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/drone.dm @@ -261,9 +261,9 @@ desc = "Большой дрон. Кажется, неактивен." w_class = WEIGHT_CLASS_GIGANTIC item_flags = NOPICKUP - icon_state = "unactive_drone" + icon_state = "inactive_drone" -/obj/item/unactive_drone/attackby(obj/item/I, mob/user, params) +/obj/item/inactive_drone/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/drone_modules/drone_BCM)) to_chat(user, span_notice("Вы установили модуль в слот.")) new /mob/living/simple_animal/bot/ed209/combat_drone(get_turf(src)) diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 42713971a0a..075c44d9ffd 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -58,7 +58,8 @@ SPECIAL_ROLE_TRAITOR, SPECIAL_ROLE_VAMPIRE, SPECIAL_ROLE_VAMPIRE_THRALL, - SPECIAL_ROLE_THIEF + SPECIAL_ROLE_THIEF, + SPECIAL_ROLE_MALFAI ) if(special_role in crew_roles) return 0 diff --git a/code/modules/mob/new_player/sprite_accessories/human/human_hair.dm b/code/modules/mob/new_player/sprite_accessories/human/human_hair.dm index 57e0f7a3e71..0a049d1c53f 100644 --- a/code/modules/mob/new_player/sprite_accessories/human/human_hair.dm +++ b/code/modules/mob/new_player/sprite_accessories/human/human_hair.dm @@ -963,3 +963,43 @@ /datum/sprite_accessory/hair/undercutfem name = "Female undercut" icon_state = "undercut_fem" + +/datum/sprite_accessory/hair/ponytail8 + name = "Ponytail 8" + icon_state = "ponytail8" + +/datum/sprite_accessory/hair/tribalbraid + name = "Tribal Braid" + icon_state = "tribalbraid" + +/datum/sprite_accessory/hair/jill + name = "Jill" + icon_state = "jill" + +/datum/sprite_accessory/hair/sabitsuki + name = "Sabitsuki" + icon_state = "sabitsuki" + +/datum/sprite_accessory/hair/kobeni + name = "Kobeni" + icon_state = "kobeni_l" + +/datum/sprite_accessory/hair/gloomy + name = "Gloomy" + icon_state = "gloomylong" + +/datum/sprite_accessory/hair/elize + name = "Elize" + icon_state = "elize" + +/datum/sprite_accessory/hair/bunstick + name = "Asian Bun" + icon_state = "bunstick" + +/datum/sprite_accessory/hair/kitty + name = "Kitty" + icon_state = "kitty" + +/datum/sprite_accessory/hair/dolly + name = "Dolly" + icon_state = "dolly" diff --git a/code/modules/mob/new_player/sprite_accessories/ipc/ipc_face.dm b/code/modules/mob/new_player/sprite_accessories/ipc/ipc_face.dm index 6b6963cfa98..37da87aca6b 100644 --- a/code/modules/mob/new_player/sprite_accessories/ipc/ipc_face.dm +++ b/code/modules/mob/new_player/sprite_accessories/ipc/ipc_face.dm @@ -104,32 +104,32 @@ /datum/sprite_accessory/hair/ipc/hesphiastos_alt_pink name = "Pink Hesphiastos Screen" icon_state = "pink_hesp_alt" - models_allowed = list("Industrial Revolution") + models_allowed = list("Titan Enforcer") /datum/sprite_accessory/hair/ipc/hesphiastos_alt_orange name = "Orange Hesphiastos Screen" icon_state = "orange_hesp_alt" - models_allowed = list("Industrial Revolution") + models_allowed = list("Titan Enforcer") /datum/sprite_accessory/hair/ipc/hesphiastos_alt_goggle name = "Goggles Hesphiastos Screen" icon_state = "goggles_hesp_alt" - models_allowed = list("Industrial Revolution") + models_allowed = list("Titan Enforcer") /datum/sprite_accessory/hair/ipc/hesphiastos_alt_scroll name = "Scrolling Hesphiastos Screen" icon_state = "scroll_hesp_alt" - models_allowed = list("Industrial Revolution") + models_allowed = list("Titan Enforcer") /datum/sprite_accessory/hair/ipc/hesphiastos_alt_rgb name = "RGB Hesphiastos Screen" icon_state = "rgb_hesp_alt" - models_allowed = list("Industrial Revolution") + models_allowed = list("Titan Enforcer") /datum/sprite_accessory/hair/ipc/hesphiastos_alt_rainbow name = "Rainbow Hesphiastos Screen" icon_state = "rainbow_hesp_alt" - models_allowed = list("Industrial Revolution") + models_allowed = list("Titan Enforcer") //Fluff /datum/sprite_accessory/hair/ipc/fluff diff --git a/code/modules/pda/PDA.dm b/code/modules/pda/PDA.dm index 90c01171c98..5cf60cd6afc 100755 --- a/code/modules/pda/PDA.dm +++ b/code/modules/pda/PDA.dm @@ -27,8 +27,12 @@ GLOBAL_LIST_EMPTY(PDAs) //Main variables var/owner = null var/default_cartridge = null // Access level defined by cartridge + /// Default request console cartridge + var/default_request_console_cartridge = null var/special_pen = null //special variable for nonstandart pens in new PDAs var/obj/item/cartridge/cartridge = null //current cartridge + /// Current request console cartridge + var/obj/item/cartridge/request_console/request_cartridge = null var/datum/data/pda/app/current_app = null var/datum/data/pda/app/lastapp = null @@ -107,6 +111,9 @@ GLOBAL_LIST_EMPTY(PDAs) if(default_cartridge) cartridge = new default_cartridge(src) cartridge.update_programs(src) + if(default_request_console_cartridge) + request_cartridge = new default_request_console_cartridge(src) + request_cartridge.update_programs(src) if(special_pen) new special_pen(src) else @@ -125,6 +132,7 @@ GLOBAL_LIST_EMPTY(PDAs) scanmode = null QDEL_LIST(programs) QDEL_NULL(cartridge) + QDEL_NULL(request_cartridge) QDEL_NULL(current_case) current_painting?.Cut() return ..() @@ -168,7 +176,7 @@ GLOBAL_LIST_EMPTY(PDAs) ui_interact(user) /obj/item/pda/proc/start_program(datum/data/pda/P) - if(P && ((P in programs) || (cartridge && (P in cartridge.programs)))) + if(P && ((P in programs) || (cartridge && (P in cartridge.programs)) || (request_cartridge && (P in request_cartridge.programs)))) return P.start() return 0 @@ -240,6 +248,8 @@ GLOBAL_LIST_EMPTY(PDAs) to_chat(user, "You remove the ID from the [name].") SStgui.update_uis(src) id = null + cartridge?.on_id_updated() + request_cartridge?.on_id_updated() update_icon(UPDATE_OVERLAYS) @@ -294,6 +304,8 @@ GLOBAL_LIST_EMPTY(PDAs) var/obj/item/I = user.get_active_hand() if(istype(I, /obj/item/card/id) && user.drop_transfer_item_to_loc(I, src)) id = I + cartridge?.on_id_updated() + request_cartridge?.on_id_updated() update_icon(UPDATE_OVERLAYS) return TRUE return FALSE @@ -303,6 +315,8 @@ GLOBAL_LIST_EMPTY(PDAs) id.forceMove_turf() user.put_in_hands(id) id = I + cartridge?.on_id_updated() + request_cartridge?.on_id_updated() update_icon(UPDATE_OVERLAYS) return TRUE return FALSE @@ -399,8 +413,25 @@ GLOBAL_LIST_EMPTY(PDAs) to_chat(user, span_notice("You have put [I] onto the PDA.")) return ATTACK_CHAIN_BLOCKED_ALL + if(istype(I, /obj/item/cartridge/request_console)) + add_fingerprint(user) + if(request_cartridge) + to_chat(user, span_warning("The PDA is already holding another request cartridge.")) + return ATTACK_CHAIN_PROCEED + if(!user.drop_transfer_item_to_loc(I, src)) + return ..() + request_cartridge = I + request_cartridge.update_programs(src) + update_shortcuts() + to_chat(user, span_notice("You have inserted [I] into the PDA.")) + SStgui.update_uis(src) + if(request_cartridge.radio) + request_cartridge.radio.hostpda = src + return ATTACK_CHAIN_BLOCKED_ALL + if(istype(I, /obj/item/cartridge)) add_fingerprint(user) + if(cartridge) to_chat(user, span_warning("The PDA is already holding another cartridge.")) return ATTACK_CHAIN_PROCEED @@ -460,6 +491,13 @@ GLOBAL_LIST_EMPTY(PDAs) to_chat(user, span_notice("You have slided [I] into the PDA.
You can remove it with Ctrl-click.")) return ATTACK_CHAIN_BLOCKED_ALL + if(istype(I, /obj/item/stamp)) + var/result = cartridge?.stamp_act(I) + result |= request_cartridge?.stamp_act(I) + if(result) + return ATTACK_CHAIN_BLOCKED_ALL + return ATTACK_CHAIN_PROCEED + return ..() diff --git a/code/modules/pda/app.dm b/code/modules/pda/app.dm index 98e9d5fe1bd..17508353787 100644 --- a/code/modules/pda/app.dm +++ b/code/modules/pda/app.dm @@ -20,6 +20,14 @@ /datum/data/pda/proc/program_process() return +/datum/data/pda/proc/on_id_updated() + return + +/datum/data/pda/proc/stamp_act(obj/item/stamp/stamp) + if(!istype(stamp)) + return FALSE + return TRUE + /datum/data/pda/proc/program_hit_check() return diff --git a/code/modules/pda/cart.dm b/code/modules/pda/cart.dm index a4e2c4efaa8..85b14210e59 100644 --- a/code/modules/pda/cart.dm +++ b/code/modules/pda/cart.dm @@ -28,6 +28,24 @@ var/datum/data/pda/messenger_plugin/P = A P.pda = pda +/obj/item/cartridge/proc/stamp_act(stamp) + var/result = FALSE + for(var/A in programs) + var/datum/data/pda/P = A + result = result || P.stamp_act(stamp) + for(var/A in messenger_plugins) + var/datum/data/pda/messenger_plugin/P = A + result = result || P.stamp_act(stamp) + return result + +/obj/item/cartridge/proc/on_id_updated() + for(var/A in programs) + var/datum/data/pda/P = A + P.on_id_updated() + for(var/A in messenger_plugins) + var/datum/data/pda/messenger_plugin/P = A + P.on_id_updated() + /obj/item/cartridge/engineering name = "Power-ON Cartridge" icon_state = "cart-e" diff --git a/code/modules/pda/pda_tgui.dm b/code/modules/pda/pda_tgui.dm index 6587438c319..cd3ec775e4b 100644 --- a/code/modules/pda/pda_tgui.dm +++ b/code/modules/pda/pda_tgui.dm @@ -23,6 +23,8 @@ var/list/prog_list = programs.Copy() if(cartridge) prog_list |= cartridge.programs + if(request_cartridge) + prog_list |= request_cartridge.programs for(var/A in prog_list) var/datum/data/pda/P = A @@ -47,6 +49,7 @@ data["idLink"] = (id ? "[id.registered_name], [id.assignment]" : "--------") data["cartridge_name"] = cartridge ? cartridge.name : "" + data["request_cartridge_name"] = request_cartridge ? request_cartridge.name : "" data["stationTime"] = station_time_timestamp() data["app"] = list() @@ -96,6 +99,24 @@ P.unnotify() cartridge = null update_shortcuts() + if("Eject_Request")//Ejects the cart, only done from hub. + if(!isnull(request_cartridge)) + var/turf/T = loc + if(ismob(T)) + T = T.loc + var/obj/item/cartridge/C = request_cartridge + C.forceMove(T) + if(scanmode in C.programs) + scanmode = null + if(current_app in C.programs) + start_program(find_program(/datum/data/pda/app/main_menu)) + if(C.radio) + C.radio.hostpda = null + for(var/datum/data/pda/P in notifying_programs) + if(P in C.programs) + P.unnotify() + request_cartridge = null + update_shortcuts() if("Authenticate")//Checks for ID id_check(usr, in_pda_usage = TRUE) if("Ringtone") diff --git a/code/modules/pda/pdas.dm b/code/modules/pda/pdas.dm index d7e2a4f29ce..3ee62d5aeb8 100644 --- a/code/modules/pda/pdas.dm +++ b/code/modules/pda/pdas.dm @@ -1,36 +1,44 @@ /obj/item/pda/medical default_cartridge = /obj/item/cartridge/medical + default_request_console_cartridge = /obj/item/cartridge/request_console/medical icon_state = "pda-medical" /obj/item/pda/viro default_cartridge = /obj/item/cartridge/medical + default_request_console_cartridge = /obj/item/cartridge/request_console/viro icon_state = "pda-virology" item_state = "pda-medical" /obj/item/pda/engineering default_cartridge = /obj/item/cartridge/engineering + default_request_console_cartridge = /obj/item/cartridge/request_console/engineering icon_state = "pda-engineer" /obj/item/pda/security default_cartridge = /obj/item/cartridge/security + default_request_console_cartridge = /obj/item/cartridge/request_console/security icon_state = "pda-security" /obj/item/pda/detective default_cartridge = /obj/item/cartridge/detective + default_request_console_cartridge = /obj/item/cartridge/request_console/detective icon_state = "pda-detective" /obj/item/pda/warden default_cartridge = /obj/item/cartridge/security + default_request_console_cartridge = /obj/item/cartridge/request_console/warden icon_state = "pda-warden" /obj/item/pda/janitor default_cartridge = /obj/item/cartridge/janitor + default_request_console_cartridge = /obj/item/cartridge/request_console/janitor icon_state = "pda-janitor" ttone = "slip" /obj/item/pda/toxins default_cartridge = /obj/item/cartridge/signal/toxins icon_state = "pda-science" + default_request_console_cartridge = /obj/item/cartridge/request_console/toxins ttone = "boom" /obj/item/pda/clown @@ -59,40 +67,49 @@ /obj/item/pda/heads/hop default_cartridge = /obj/item/cartridge/hop + default_request_console_cartridge = /obj/item/cartridge/request_console/hop icon_state = "pda-hop" /obj/item/pda/heads/hos default_cartridge = /obj/item/cartridge/hos + default_request_console_cartridge = /obj/item/cartridge/request_console/hos icon_state = "pda-hos" /obj/item/pda/heads/ce default_cartridge = /obj/item/cartridge/ce + default_request_console_cartridge = /obj/item/cartridge/request_console/ce icon_state = "pda-ce" /obj/item/pda/heads/cmo default_cartridge = /obj/item/cartridge/cmo + default_request_console_cartridge = /obj/item/cartridge/request_console/cmo icon_state = "pda-cmo" /obj/item/pda/heads/rd default_cartridge = /obj/item/cartridge/rd + default_request_console_cartridge = /obj/item/cartridge/request_console/rd icon_state = "pda-rd" /obj/item/pda/captain default_cartridge = /obj/item/cartridge/captain icon_state = "pda-captain" + default_request_console_cartridge = /obj/item/cartridge/request_console/captain detonate = 0 //toff = 1 /obj/item/pda/heads/ntrep default_cartridge = /obj/item/cartridge/supervisor + default_request_console_cartridge = /obj/item/cartridge/request_console/ntrep icon_state = "pda-h" /obj/item/pda/heads/magistrate default_cartridge = /obj/item/cartridge/supervisor + default_request_console_cartridge = /obj/item/cartridge/request_console/magistrate icon_state = "pda-h" /obj/item/pda/heads/blueshield default_cartridge = /obj/item/cartridge/hos + default_request_console_cartridge = /obj/item/cartridge/request_console/blueshield icon_state = "pda-h" /obj/item/pda/heads/ert @@ -109,14 +126,17 @@ /obj/item/pda/cargo default_cartridge = /obj/item/cartridge/quartermaster + default_request_console_cartridge = /obj/item/cartridge/request_console/cargo icon_state = "pda-cargo" /obj/item/pda/quartermaster default_cartridge = /obj/item/cartridge/quartermaster + default_request_console_cartridge = /obj/item/cartridge/request_console/quartermaster icon_state = "pda-qm" /obj/item/pda/shaftminer icon_state = "pda-miner" + default_request_console_cartridge = /obj/item/cartridge/request_console/shaftminer special_pen = /obj/item/pen/survival /obj/item/pda/syndicate @@ -144,19 +164,23 @@ /obj/item/pda/chaplain icon_state = "pda-chaplain" + default_request_console_cartridge = /obj/item/cartridge/request_console/chaplain ttone = "holy" /obj/item/pda/lawyer default_cartridge = /obj/item/cartridge/lawyer + default_request_console_cartridge = /obj/item/cartridge/request_console/lawyer icon_state = "pda-lawyer" ttone = "..." /obj/item/pda/botanist //default_cartridge = /obj/item/cartridge/botanist + default_request_console_cartridge = /obj/item/cartridge/request_console/botanist icon_state = "pda-hydro" /obj/item/pda/roboticist icon_state = "pda-roboticist" + default_request_console_cartridge = /obj/item/cartridge/request_console/roboticist /obj/item/pda/librarian icon_state = "pda-library" @@ -175,25 +199,31 @@ model_name = "Thinktronic 5230 Personal Data Assistant Deluxe Special Max Turbo Limited Edition" /obj/item/pda/chef + default_request_console_cartridge = /obj/item/cartridge/request_console/chef icon_state = "pda-chef" /obj/item/pda/bar icon_state = "pda-bartender" + default_request_console_cartridge = /obj/item/cartridge/request_console/bar /obj/item/pda/atmos default_cartridge = /obj/item/cartridge/atmos + default_request_console_cartridge = /obj/item/cartridge/request_console/atmos icon_state = "pda-atmos" /obj/item/pda/chemist default_cartridge = /obj/item/cartridge/chemistry icon_state = "pda-chemistry" + default_request_console_cartridge = /obj/item/cartridge/request_console/chemist /obj/item/pda/geneticist default_cartridge = /obj/item/cartridge/medical icon_state = "pda-genetics" + default_request_console_cartridge = /obj/item/cartridge/request_console/geneticist /obj/item/pda/centcom default_cartridge = /obj/item/cartridge/centcom + default_request_console_cartridge = /obj/item/cartridge/request_console/centcom icon_state = "pda-h" /obj/item/pda/centcom/New() diff --git a/code/modules/pda/request_consoles_app.dm b/code/modules/pda/request_consoles_app.dm new file mode 100644 index 00000000000..3de9ca7784e --- /dev/null +++ b/code/modules/pda/request_consoles_app.dm @@ -0,0 +1,307 @@ +/datum/data/pda/app/request_console + name = "Request Consoles" + title = "Request Consoles" + icon = "archive" + template = "pda_request_console" + category = "Request Console" + update = PDA_APP_UPDATE + var/list/department_list + var/list/possible_consoles = list() + var/list/consoles_mute = list() + var/ore_message_reciver_dep + var/obj/machinery/requests_console/selected_console + +/datum/data/pda/app/request_console/New() + . = ..() + for(var/C in (GLOB.allRequestConsoles)) + var/obj/machinery/requests_console/console = C + if(QDELETED(console) || !istype(console)) + continue + if(console.department in department_list) + possible_consoles |= console + department_list -= console.department + console.connected_apps |= src + + +/datum/data/pda/app/request_console/Destroy() + selected_console = null + LAZYNULL(possible_consoles) + . = ..() + +/datum/data/pda/app/request_console/proc/on_rc_destroyed(datum/source) + possible_consoles -= source + SStgui.update_uis(pda) + +/datum/data/pda/app/request_console/proc/on_rc_message_recieved(obj/machinery/requests_console/source, message, isoremessage) + SIGNAL_HANDLER + if(isoremessage && source.department != ore_message_reciver_dep) + return + var/rendered_message = "Recieved on [source.name] : [message]" + if(!QDELETED(pda) && !consoles_mute[source]) + notify(rendered_message) + + +/datum/data/pda/app/request_console/update_ui(mob/user, list/data) + if(selected_console) + data += selected_console.ui_data(user) + data["selected_console"] = selected_console.name + else + data["selected_console"] = null + var/list/possible_consoles_data= list() + for(var/obj/machinery/requests_console/console as anything in possible_consoles) + possible_consoles_data += list(list("name" = console.name, "priority" = console.newmessagepriority, "muted" = consoles_mute[console])) + data["consoles_data"] = possible_consoles_data + +/datum/data/pda/app/request_console/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) + var/name = params["name"] + var/obj/machinery/requests_console/clicked_console + for(var/atom/console as anything in possible_consoles) + if(console.name == name) + clicked_console = console + break + switch(action) + if("select") + if(!clicked_console) + return + selected_console = clicked_console + title = clicked_console.name + unnotify() + if("mute") + if(!clicked_console) + return + consoles_mute[clicked_console] = !consoles_mute[clicked_console] + if("back") + selected_console = null + title = initial(title) + else + selected_console?.ui_act(action, params, ui, state) + login() + SStgui.update_uis(pda) + + +/datum/data/pda/app/request_console/on_id_updated() + login() + + +/datum/data/pda/app/request_console/proc/login() + if(pda.id && selected_console) + selected_console.login_console(selected_console.screen, pda.id, pda, usr) + + +/datum/data/pda/app/request_console/stamp_act(obj/item/stamp/stamp) + if(!..() || !selected_console) + return FALSE + var/result = selected_console.stamp_messauth(selected_console.screen, stamp, pda, usr) + if(ATTACK_CHAIN_SUCCESS_CHECK(result)) + return TRUE + return FALSE + +/datum/data/pda/app/request_console/cargo + department_list = list(RC_CARGO_BAY) + +/datum/data/pda/app/request_console/shaftminer + department_list = list(RC_CARGO_BAY) + +/datum/data/pda/app/request_console/botanist + department_list = list(RC_HYDROPONICS) + +/datum/data/pda/app/request_console/chef + department_list = list(RC_KITCHEN) + +/datum/data/pda/app/request_console/bar + department_list = list(RC_BAR) + +/datum/data/pda/app/request_console/janitor + department_list = list(RC_JANITORIAL) + +/datum/data/pda/app/request_console/chaplain + department_list = list(RC_CHAPEL) + +/datum/data/pda/app/request_console/security + department_list = list(RC_SECURITY) + +/datum/data/pda/app/request_console/clown_security + department_list = list(RC_SECURITY) + +/datum/data/pda/app/request_console/lawyer + department_list = list(RC_INTERNAL_AFFAIRS_OFFICE) + +/datum/data/pda/app/request_console/medical + department_list = list( + RC_MEDBAY, + RC_MORGUE + ) + +/datum/data/pda/app/request_console/viro + department_list = list( + RC_MEDBAY, + RC_VIROLOGY, + RC_MORGUE + ) + +/datum/data/pda/app/request_console/engineering + department_list = list( + RC_TECH_STORAGE, + RC_ENGINEERING, + RC_ATMOSPHERICS, + RC_MECHANIC + ) + ore_message_reciver_dep = RC_MECHANIC + + +/datum/data/pda/app/request_console/detective + department_list = list( + RC_SECURITY, + RC_DETECTIVE + ) + +/datum/data/pda/app/request_console/warden + department_list = list( + RC_SECURITY, + RC_WARDEN, + RC_LABOR_CAMP + ) + +/datum/data/pda/app/request_console/toxins + department_list = list( + RC_SCIENCE, + RC_ROBOTICS, + RC_RESEARCH, + RC_XENOBIOLOGY + ) + ore_message_reciver_dep = RC_RESEARCH + +/datum/data/pda/app/request_console/hop + department_list = list( + RC_BAR, + RC_KITCHEN, + RC_HEAD_OF_PERSONNEL_DESK, + RC_BRIDGE, + RC_HYDROPONICS, + RC_JANITORIAL, + RC_CHAPEL + ) + +/datum/data/pda/app/request_console/hos + department_list = list(RC_SECURITY, + RC_WARDEN, + RC_LABOR_CAMP, + RC_HEAD_OF_SECURITY_DESK, + RC_BRIDGE, + RC_DETECTIVE) + +/datum/data/pda/app/request_console/ce + department_list = list( + RC_TECH_STORAGE, + RC_ENGINEERING, + RC_ATMOSPHERICS, + RC_MECHANIC, + RC_BRIDGE, + RC_AI, + RC_CHIEF_ENGINEER_DESK + ) + ore_message_reciver_dep = RC_MECHANIC + +/datum/data/pda/app/request_console/cmo + department_list = list( + RC_MEDBAY, + RC_VIROLOGY, + RC_MORGUE, + RC_GENETICS, + RC_BRIDGE, + RC_CHEMISTRY, + RC_CHIEF_MEDICAL_OFFICER_DESK + ) + +/datum/data/pda/app/request_console/rd + department_list = list( + RC_SCIENCE, + RC_ROBOTICS, + RC_RESEARCH, + RC_XENOBIOLOGY, + RC_GENETICS, + RC_BRIDGE, + RC_AI, + RC_RESEARCH_DIRECTOR_DESK + ) + ore_message_reciver_dep = RC_RESEARCH + +/datum/data/pda/app/request_console/captain + department_list = list( + RC_CHIEF_ENGINEER_DESK, + RC_CHIEF_MEDICAL_OFFICER_DESK, + RC_HEAD_OF_PERSONNEL_DESK, + RC_HEAD_OF_SECURITY_DESK, + RC_BRIDGE, + RC_QUARTERMASTER_DESK, + RC_AI, + RC_CAPTAIN_DESK, + RC_RESEARCH_DIRECTOR_DESK + ) + ore_message_reciver_dep = RC_RESEARCH_DIRECTOR_DESK + +/datum/data/pda/app/request_console/ntrep + department_list = list( + RC_NT_REPRESENTATIVE, + RC_BLUESHIELD, + RC_INTERNAL_AFFAIRS_OFFICE, + RC_BRIDGE + ) + +/datum/data/pda/app/request_console/magistrate + department_list = list( + RC_INTERNAL_AFFAIRS_OFFICE, + RC_BRIDGE + ) + +/datum/data/pda/app/request_console/blueshield + department_list = list( + RC_BLUESHIELD, + RC_BRIDGE + ) + +/datum/data/pda/app/request_console/quartermaster + department_list = list( + RC_CARGO_BAY, + RC_QUARTERMASTER_DESK, + RC_BRIDGE + ) + +/datum/data/pda/app/request_console/roboticist + department_list = list( + RC_RESEARCH, + RC_SCIENCE, + RC_ROBOTICS + ) + ore_message_reciver_dep = RC_ROBOTICS + +/datum/data/pda/app/request_console/atmos + department_list = list( + RC_TECH_STORAGE, + RC_ATMOSPHERICS, + RC_ENGINEERING + ) + ore_message_reciver_dep = RC_ATMOSPHERICS + +/datum/data/pda/app/request_console/chemist + department_list = list( + RC_CHEMISTRY, + RC_MEDBAY + ) + +/datum/data/pda/app/request_console/geneticist + department_list = list( + RC_GENETICS, + RC_MEDBAY + ) + +/datum/data/pda/app/request_console/centcom + department_list = list( + RC_BRIDGE, + RC_AI, + RC_BLUESHIELD, + RC_INTERNAL_AFFAIRS_OFFICE, + RC_NT_REPRESENTATIVE, + RC_CENTRAL_COMMAND, + RC_CAPTAIN_DESK + ) diff --git a/code/modules/pda/request_consoles_cart.dm b/code/modules/pda/request_consoles_cart.dm new file mode 100644 index 00000000000..f0d86786259 --- /dev/null +++ b/code/modules/pda/request_consoles_cart.dm @@ -0,0 +1,130 @@ +/obj/item/cartridge/request_console + name = "Request Console" + icon_state = "cart-req" + programs = list(new /datum/data/pda/app/request_console) + +/obj/item/cartridge/request_console/medical + name = "Medical Request" + programs = list(new /datum/data/pda/app/request_console/medical) + +/obj/item/cartridge/request_console/viro + name = "Virology Request" + programs = list(new /datum/data/pda/app/request_console/viro) + +/obj/item/cartridge/request_console/engineering + name = "Engineering Request" + programs = list(new /datum/data/pda/app/request_console/engineering) + +/obj/item/cartridge/request_console/security + name = "Security Request" + programs = list(new /datum/data/pda/app/request_console/security) + +/obj/item/cartridge/request_console/detective + name = "Detective Request" + programs = list(new /datum/data/pda/app/request_console/detective) + +/obj/item/cartridge/request_console/warden + name = "Warden Request" + programs = list(new /datum/data/pda/app/request_console/warden) + +/obj/item/cartridge/request_console/janitor + name = "Janitor Request" + programs = list(new /datum/data/pda/app/request_console/janitor) + +/obj/item/cartridge/request_console/toxins + name = "Sciense Request" + programs = list(new /datum/data/pda/app/request_console/toxins) + +/obj/item/cartridge/request_console/hop + name = "HOP Request" + programs = list(new /datum/data/pda/app/request_console/hop) + +/obj/item/cartridge/request_console/hos + name = "HOS Request" + programs = list(new /datum/data/pda/app/request_console/hos) + +/obj/item/cartridge/request_console/ce + name = "CE Request" + programs = list(new /datum/data/pda/app/request_console/ce) + +/obj/item/cartridge/request_console/cmo + name = "CMO Request" + programs = list(new /datum/data/pda/app/request_console/cmo) + +/obj/item/cartridge/request_console/rd + name = "RD Request" + programs = list(new /datum/data/pda/app/request_console/rd) + +/obj/item/cartridge/request_console/captain + name = "Captain Request" + programs = list(new /datum/data/pda/app/request_console/captain) + + +/obj/item/cartridge/request_console/ntrep + name = "NTR Request" + programs = list(new /datum/data/pda/app/request_console/ntrep) + +/obj/item/cartridge/request_console/magistrate + name = "Magistrate Request" + programs = list(new /datum/data/pda/app/request_console/magistrate) + +/obj/item/cartridge/request_console/blueshield + name = "Blueshield Request" + programs = list(new /datum/data/pda/app/request_console/blueshield) + +/obj/item/cartridge/request_console/cargo + name = "Cargo Request" + programs = list(new /datum/data/pda/app/request_console/cargo) + +/obj/item/cartridge/request_console/quartermaster + name = "QM Request" + programs = list(new /datum/data/pda/app/request_console/quartermaster) + +/obj/item/cartridge/request_console/shaftminer + name = "Shaftminer Request" + programs = list(new /datum/data/pda/app/request_console/shaftminer) + +/obj/item/cartridge/request_console/chaplain + name = "Chaplain Request" + programs = list(new /datum/data/pda/app/request_console/chaplain) + +/obj/item/cartridge/request_console/lawyer + name = "Internal Affairs Request" + programs = list(new /datum/data/pda/app/request_console/lawyer) + +/obj/item/cartridge/request_console/botanist + name = "Botanist Request" + programs = list(new /datum/data/pda/app/request_console/botanist) + +/obj/item/cartridge/request_console/roboticist + name = "Roboticist Request" + programs = list(new /datum/data/pda/app/request_console/roboticist) + +/obj/item/cartridge/request_console/chef + name = "Chef Request" + programs = list(new /datum/data/pda/app/request_console/chef) + +/obj/item/cartridge/request_console/bar + name = "Bartender Request" + programs = list(new /datum/data/pda/app/request_console/bar) + +/obj/item/cartridge/request_console/atmos + name = "Atmospherics Request" + programs = list(new /datum/data/pda/app/request_console/atmos) + +/obj/item/cartridge/request_console/chemist + name = "Chemist Request" + programs = list(new /datum/data/pda/app/request_console/chemist) + +/obj/item/cartridge/request_console/geneticist + name = "Geneticist Request" + programs = list(new /datum/data/pda/app/request_console/geneticist) + +/obj/item/cartridge/request_console/clown_security + name = "Clown Security Request" + programs = list(new /datum/data/pda/app/request_console/clown_security) + +/obj/item/cartridge/request_console/centcom + name = "Centcom Request" + programs = list(new /datum/data/pda/app/request_console/centcom) + diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm index cda28a116c5..8617697874b 100644 --- a/code/modules/power/cell.dm +++ b/code/modules/power/cell.dm @@ -413,3 +413,8 @@ name = "emitter gun power cell" maxcharge = 2200 chargerate = 100 + +/obj/item/stock_parts/cell/degraded + name = "degraded power cell" + maxcharge = 750 + chargerate = 25 diff --git a/code/modules/power/solar.dm b/code/modules/power/solar.dm index 644ba9ec05d..8ff7699a8b3 100644 --- a/code/modules/power/solar.dm +++ b/code/modules/power/solar.dm @@ -337,10 +337,12 @@ track = TRACKER_AUTO autostart = TRUE // Automatically search for connected devices -/obj/machinery/power/solar_control/Initialize() +/obj/machinery/power/solar_control/Initialize(mapload, obj/structure/computerframe) SSsun.solars |= src setup() . = ..() + if(computerframe) + qdel(computerframe) /obj/machinery/power/solar_control/proc/setup() connect_to_network() diff --git a/code/modules/power/turbine.dm b/code/modules/power/turbine.dm index bc9c412f1a8..22cc44d667f 100644 --- a/code/modules/power/turbine.dm +++ b/code/modules/power/turbine.dm @@ -65,7 +65,7 @@ /obj/machinery/computer/turbine_computer name = "gas turbine control computer" - desc = "A computer to remotely control a gas turbine" + desc = "Компьютер для дистанционного управления газовой турбиной." icon_screen = "turbinecomp" icon_keyboard = "tech_key" circuit = /obj/item/circuitboard/turbine_computer diff --git a/code/modules/projectiles/ammunition/boxes.dm b/code/modules/projectiles/ammunition/boxes.dm index ad228160606..c013870a107 100644 --- a/code/modules/projectiles/ammunition/boxes.dm +++ b/code/modules/projectiles/ammunition/boxes.dm @@ -153,7 +153,7 @@ icon_state = "10mmbox" origin_tech = "combat=2" ammo_type = /obj/item/ammo_casing/c10mm - max_ammo = 20 + max_ammo = 30 /obj/item/ammo_box/fortynr name = "ammo box 40N&R" diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index 8860e9ccd22..1e1cb7e47c7 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -68,9 +68,18 @@ ammo_x_offset = 1 can_charge = FALSE selfcharge = TRUE + var/emagged = FALSE /obj/item/gun/energy/floragun/emag_act(mob/user) . = ..() + + if(emagged) + return + + if(user) + balloon_alert(user, "протоколы защиты сняты!") + + emagged = TRUE ammo_type = list(/obj/item/ammo_casing/energy/flora/alpha/emag, /obj/item/ammo_casing/energy/flora/beta, /obj/item/ammo_casing/energy/flora/gamma) update_ammo_types() diff --git a/code/modules/reagents/chemistry/machinery/pandemic.dm b/code/modules/reagents/chemistry/machinery/pandemic.dm index 04e95abae32..e6c201a8d56 100644 --- a/code/modules/reagents/chemistry/machinery/pandemic.dm +++ b/code/modules/reagents/chemistry/machinery/pandemic.dm @@ -1,6 +1,6 @@ /obj/machinery/computer/pandemic name = "PanD.E.M.I.C 2200" - desc = "Used to work with viruses." + desc = "Используется для работы с вирусами." density = TRUE anchored = TRUE icon = 'icons/obj/chemical.dmi' diff --git a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm index 3ca90cc829d..2785c3cfd6f 100644 --- a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm +++ b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm @@ -162,7 +162,6 @@ return default_unfasten_wrench(user, I) - /obj/machinery/reagentgrinder/attackby(obj/item/I, mob/user, params) if(user.a_intent == INTENT_HARM) return ..() @@ -232,7 +231,31 @@ updateUsrDialog() return ATTACK_CHAIN_BLOCKED_ALL +/obj/machinery/reagentgrinder/AltClick(mob/living/carbon/human/human) + if(!istype(human) || !human.Adjacent(src)) + return + + if(human.incapacitated() || HAS_TRAIT(human, TRAIT_HANDS_BLOCKED)) + return + + if(operating) + return + + add_fingerprint(human) + grind() + +/obj/machinery/reagentgrinder/CtrlShiftClick(mob/living/carbon/human/human) + if(!istype(human) || !human.Adjacent(src)) + return + if(human.incapacitated() || HAS_TRAIT(human, TRAIT_HANDS_BLOCKED)) + return + + if(operating) + return + + add_fingerprint(human) + detach(human) /obj/machinery/reagentgrinder/attack_ai(mob/user) return FALSE @@ -305,18 +328,20 @@ if("eject") eject() if ("detach") - detach() + detach(usr) -/obj/machinery/reagentgrinder/proc/detach() +/obj/machinery/reagentgrinder/proc/detach(mob/user) + if(user.stat) + return - if (usr.stat != 0) - return - if (!beaker) - return - beaker.loc = src.loc - beaker = null - update_icon(UPDATE_ICON_STATE) - updateUsrDialog() + if(!beaker) + return + + beaker.forceMove(get_turf(src)) + beaker = null + + update_icon(UPDATE_ICON_STATE) + updateUsrDialog() /obj/machinery/reagentgrinder/proc/eject() diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm index 9f70f5374ee..127c1c113ec 100644 --- a/code/modules/reagents/reagent_containers/spray.dm +++ b/code/modules/reagents/reagent_containers/spray.dm @@ -135,6 +135,12 @@ /obj/item/reagent_containers/spray/cleaner/medical/empty list_reagents = list() +/obj/item/reagent_containers/spray/cleaner/tactical + name = "Tactical cleaner" + desc = "Бутылочка из прочнейшего тёмно-синего пластика, распылитель чёрного цвета украшен тактическим снаряжением, разработана уборочно-силовыми структурами Нанотрейзен для ЗАЧИСТКИ и контроля грязи в помещениях." + icon_state = "cleaner_tactical" + item_state = "cleaner_tactical" + /obj/item/reagent_containers/spray/blue_cleaner name = "bluespace cleaner" desc = "A spray with an increased storage of reagents, or it's not that simple...." diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm index f3e556d0bfc..cc2c646014a 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal.dm @@ -50,6 +50,7 @@ /obj/machinery/disposal/Initialize(mapload, obj/structure/disposalconstruct/made_from) // this will get a copy of the air turf and take a SEND PRESSURE amount of air from it . = ..() + air_contents = new if(made_from) setDir(made_from.dir) return INITIALIZE_HINT_LATELOAD @@ -60,7 +61,6 @@ var/datum/gas_mixture/env = new env.copy_from(loc.return_air()) var/datum/gas_mixture/removed = env.remove(SEND_PRESSURE + 1) - air_contents = new air_contents.merge(removed) trunk_check() update() diff --git a/code/modules/research/designs/autolathe_designs.dm b/code/modules/research/designs/autolathe_designs.dm index 38cdb253772..ee47d5e60bd 100644 --- a/code/modules/research/designs/autolathe_designs.dm +++ b/code/modules/research/designs/autolathe_designs.dm @@ -941,7 +941,7 @@ name = "Ammo Box (10mm)" id = "c10mm" build_type = AUTOLATHE - materials = list(MAT_METAL = 30500) + materials = list(MAT_METAL = 45750) build_path = /obj/item/ammo_box/c10mm category = list("hacked", "Security") diff --git a/code/modules/research/experimentor.dm b/code/modules/research/experimentor.dm index 78594494b1d..8de8ec25b37 100644 --- a/code/modules/research/experimentor.dm +++ b/code/modules/research/experimentor.dm @@ -347,18 +347,21 @@ cloneCount = badThingCoeff investigate_log("Experimentor has made a clone of [exp_on]", INVESTIGATE_EXPERIMENTOR) ejectItem() + if(prob(EFFECT_PROB_VERYLOW-badThingCoeff)) visible_message("[src] malfunctions, melting [exp_on] and leaking radiation!") for(var/mob/living/m in oview(1, src)) m.apply_effect(25,IRRADIATE) investigate_log("Experimentor has irradiated [key_name_log(m)]", INVESTIGATE_EXPERIMENTOR) //One entry per person so we know what was irradiated. ejectItem(TRUE) + if(prob(EFFECT_PROB_LOW-badThingCoeff)) visible_message("[src] malfunctions, spewing toxic waste!") for(var/turf/T in oview(1, src)) if(!T.density) if(prob(EFFECT_PROB_VERYHIGH)) new /obj/effect/decal/cleanable/greenglow(T) + if(prob(EFFECT_PROB_MEDIUM-badThingCoeff)) var/savedName = "[exp_on]" ejectItem(TRUE) @@ -369,19 +372,14 @@ if(istype(loaded_item,/obj/item/grenade/chem_grenade)) var/obj/item/grenade/chem_grenade/CG = loaded_item CG.prime() + ejectItem() + else if(prob(EFFECT_PROB_VERYLOW)) visible_message("The [exp_on] has activated an unknown subroutine!") clone_next = TRUE ejectItem() qdel(exp_on) - - var/T = rand(1, linked_console.files.known_tech.len) - var/datum/tech/KT = linked_console.files.known_tech[linked_console.files.known_tech[T]] - var/new_level = linked_console.files.UpdateTech(linked_console.files.known_tech[T], KT.level + 1) - var/tech_log = "[T] [new_level], " - if(tech_log) - investigate_log("[usr] increased tech experimentoring [loaded_item]: [tech_log]. ", INVESTIGATE_RESEARCH) else exp = FAIL diff --git a/code/modules/research/message_server.dm b/code/modules/research/message_server.dm index fcf50821b76..f09614ec5d3 100644 --- a/code/modules/research/message_server.dm +++ b/code/modules/research/message_server.dm @@ -100,17 +100,20 @@ GLOBAL_LIST_EMPTY(message_servers) if(RC.newmessagepriority < priority) RC.newmessagepriority = priority RC.update_icon(UPDATE_OVERLAYS) + var/rendered_message = null switch(priority) if(2) if(!RC.silent) playsound(RC.loc, 'sound/machines/twobeep.ogg', 50, 1) RC.atom_say("PRIORITY Alert in [sender]") - RC.message_log += "High Priority message from [sender]: [authmsg]" + rendered_message = "High Priority message from [sender]: [authmsg]" else if(!RC.silent) playsound(RC.loc, 'sound/machines/twobeep.ogg', 50, 1) RC.atom_say("Message from [sender]") - RC.message_log += "Message [sender]: [authmsg]" + rendered_message = "Message [sender]: [authmsg]" + if(!isnull(rendered_message)) + RC.write_to_message_log(rendered_message) /obj/machinery/message_server/attack_hand(user) // to_chat(user, "There seem to be some parts missing from this server. They should arrive on the station in a few days, give or take a few CentComm delays.") diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm index 6517421ddda..a14e5fac182 100644 --- a/code/modules/research/rdconsole.dm +++ b/code/modules/research/rdconsole.dm @@ -978,7 +978,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, /obj/machinery/computer/rdconsole/core name = "core R&D console" - desc = "A console used to interface with R&D tools." + desc = "Консоль, используемая для взаимодействия с инструментами НИО." id = 1 /obj/machinery/computer/rdconsole/core/old_frame @@ -989,21 +989,21 @@ won't update every console in existence) but it's more of a hassle to do. Also, /obj/machinery/computer/rdconsole/robotics name = "robotics R&D console" - desc = "A console used to interface with R&D tools." + desc = "Консоль, используемая для взаимодействия с инструментами НИО." id = 2 req_access = list(ACCESS_ROBOTICS) circuit = /obj/item/circuitboard/rdconsole/robotics /obj/machinery/computer/rdconsole/experiment name = "\improper E.X.P.E.R.I-MENTOR R&D console" - desc = "A console used to interface with R&D tools." + desc = "Консоль, используемая для взаимодействия с инструментами НИО." id = 3 range = 5 circuit = /obj/item/circuitboard/rdconsole/experiment /obj/machinery/computer/rdconsole/mechanics name = "mechanics R&D console" - desc = "A console used to interface with R&D tools." + desc = "Консоль, используемая для взаимодействия с инструментами НИО." id = 4 req_access = list(ACCESS_MECHANIC) circuit = /obj/item/circuitboard/rdconsole/mechanics @@ -1015,7 +1015,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, /obj/machinery/computer/rdconsole/public name = "public R&D console" - desc = "A console used to interface with R&D tools." + desc = "Консоль, используемая для взаимодействия с инструментами НИО." id = 5 req_access = list() circuit = /obj/item/circuitboard/rdconsole/public diff --git a/code/modules/research/xenobiology/xenobio_camera.dm b/code/modules/research/xenobiology/xenobio_camera.dm index 7ff9b22e299..4ba73ee4d92 100644 --- a/code/modules/research/xenobiology/xenobio_camera.dm +++ b/code/modules/research/xenobiology/xenobio_camera.dm @@ -36,7 +36,7 @@ /obj/machinery/computer/camera_advanced/xenobio name = "slime management console" - desc = "A computer used for remotely handling slimes." + desc = "Компьютер, используемый для удаленного взаимодействия со слаймами." networks = list("SS13") circuit = /obj/item/circuitboard/xenobiology icon_screen = "slime_comp" diff --git a/code/modules/shuttle/emergency.dm b/code/modules/shuttle/emergency.dm index 513132c4e0b..234355a33fd 100644 --- a/code/modules/shuttle/emergency.dm +++ b/code/modules/shuttle/emergency.dm @@ -1,6 +1,6 @@ /obj/machinery/computer/emergency_shuttle name = "emergency shuttle console" - desc = "For shuttle control." + desc = "Для управления шаттлом." icon_screen = "shuttle" icon_keyboard = "tech_key" var/auth_need = 3 diff --git a/code/modules/shuttle/ert.dm b/code/modules/shuttle/ert.dm index e6eea6337da..67777b81968 100644 --- a/code/modules/shuttle/ert.dm +++ b/code/modules/shuttle/ert.dm @@ -15,7 +15,7 @@ /obj/machinery/computer/camera_advanced/shuttle_docker/ert name = "specops navigation computer" - desc = "Used to designate a precise transit location for the specops shuttle." + desc = "Используется, чтобы указать точное местоположение для отправки ОБР." icon_screen = "navigation" icon_keyboard = "med_key" shuttleId = "specops" diff --git a/code/modules/shuttle/navigation_computer.dm b/code/modules/shuttle/navigation_computer.dm index 9b4f49d0a4d..9870eb2df92 100644 --- a/code/modules/shuttle/navigation_computer.dm +++ b/code/modules/shuttle/navigation_computer.dm @@ -1,6 +1,6 @@ /obj/machinery/computer/camera_advanced/shuttle_docker name = "navigation computer" - desc = "Used to designate a precise transit location for a spacecraft." + desc = "Используется, чтобы указать точное местоположение для отправки шаттла." icon_screen = "navigation" icon_keyboard = "med_key" jump_action = null diff --git a/code/modules/shuttle/shuttle.dm b/code/modules/shuttle/shuttle.dm index f61515183e2..756b2100a86 100644 --- a/code/modules/shuttle/shuttle.dm +++ b/code/modules/shuttle/shuttle.dm @@ -914,7 +914,7 @@ /obj/machinery/computer/shuttle/ruins_transport_shuttle // this shuttle made for station and listening post of ussp since they have lore connection between eachother, btw the shuttle existed before the change but was deleted for some reason. name = "Transport Shuttle Console" - desc = "Used to control the Transport Shuttle." + desc = "Используется для управления Транспортным шаттлом." circuit = /obj/item/circuitboard/ruins_transport_shuttle shuttleId = "ruins_transport_shuttle" possible_destinations = "ussp_dock;dj_post;sindiecake_dock;ussp_gorky17" @@ -926,7 +926,7 @@ /obj/machinery/computer/shuttle/ruins_civil_shuttle // made another shuttle, this one will fly between spacebar and twin nexus hotel. just another way to get to it. name = "Regular Civilian Shuttle Console" - desc = "Used to control the Regular Civilian Shuttle." + desc = "Используется для управления обычным гражданским шаттлом." circuit = /obj/item/circuitboard/ruins_civil_shuttle shuttleId = "ruins_civil_shuttle" possible_destinations = "spacebar;spacehotelv1;ntstation" @@ -934,20 +934,20 @@ /obj/machinery/computer/shuttle/white_ship name = "White Ship Console" - desc = "Used to control the White Ship." + desc = "Используется для управления Белым кораблём." circuit = /obj/item/circuitboard/white_ship shuttleId = "whiteship" possible_destinations = null // Set at runtime /obj/machinery/computer/shuttle/engineering name = "Engineering Shuttle Console" - desc = "Used to call and send the engineering shuttle." + desc = "Используется для вызова и отправки инженерного шаттла." shuttleId = "engineering" possible_destinations = "engineering_home;engineering_away" /obj/machinery/computer/shuttle/science name = "Science Shuttle Console" - desc = "Used to call and send the science shuttle." + desc = "Используется для вызова и отправки научного шаттла." shuttleId = "science" possible_destinations = "science_home;science_away" @@ -960,7 +960,7 @@ /obj/machinery/computer/camera_advanced/shuttle_docker/admin name = "Admin shuttle navigation computer" - desc = "Used to designate a precise transit location for the admin shuttle." + desc = "Используется, чтобы указать точное местоположение для отправки админского шаттла." icon_screen = "navigation" icon_keyboard = "med_key" shuttleId = "admin" @@ -987,7 +987,7 @@ /obj/machinery/computer/shuttle/golem_ship name = "Golem Ship Console" - desc = "Used to control the Golem Ship." + desc = "Используется для управления шаттлом големов." circuit = /obj/item/circuitboard/shuttle/golem_ship shuttleId = "freegolem" possible_destinations = "freegolem_lavaland;freegolem_space;freegolem_ussp" @@ -1000,7 +1000,7 @@ /obj/machinery/computer/shuttle/golem_ship/recall name = "golem ship recall terminal" - desc = "Used to recall the Golem Ship." + desc = "Используется для отзыва шаттла големов." possible_destinations = "freegolem_lavaland" resistance_flags = INDESTRUCTIBLE diff --git a/code/modules/shuttle/supply.dm b/code/modules/shuttle/supply.dm index 8d4c3a52db3..c0a515b3646 100644 --- a/code/modules/shuttle/supply.dm +++ b/code/modules/shuttle/supply.dm @@ -375,7 +375,7 @@ **************************/ /obj/machinery/computer/supplycomp name = "Supply Shuttle Console" - desc = "Used to order supplies." + desc = "Используется для оформления заказов." icon_screen = "supply" req_access = list(ACCESS_CARGO) circuit = /obj/item/circuitboard/supplycomp @@ -388,13 +388,24 @@ /obj/machinery/computer/supplycomp/public name = "Supply Ordering Console" - desc = "Used to order supplies from cargo staff." + desc = "Используется для оформления заказов. Предназначено для общего пользования." icon = 'icons/obj/machines/computer.dmi' icon_screen = "request" circuit = /obj/item/circuitboard/ordercomp req_access = list() is_public = TRUE + +/obj/machinery/computer/supplycomp/Initialize(mapload, obj/structure/computerframe/frame) + . = ..() + + var/obj/item/circuitboard/supplycomp/my_circuit = src.frame.circuit + if(!istype(my_circuit)) + return + + can_order_contraband = my_circuit.contraband_enabled + + /obj/machinery/computer/supplycomp/attack_ai(var/mob/user as mob) return attack_hand(user) diff --git a/code/modules/shuttle/syndicate.dm b/code/modules/shuttle/syndicate.dm index 340438298a2..45084907cf7 100644 --- a/code/modules/shuttle/syndicate.dm +++ b/code/modules/shuttle/syndicate.dm @@ -65,7 +65,7 @@ /obj/machinery/computer/shuttle/sst name = "Syndicate Strike Team Shuttle Console" - desc = "Used to call and send the SST shuttle." + desc = "Используется для вызова и отправки шаттла Ударного Отряда Синдиката." icon_keyboard = "syndie_key" icon_screen = "syndishuttle" req_access = list(ACCESS_SYNDICATE) @@ -76,7 +76,7 @@ /obj/machinery/computer/shuttle/sit name = "Syndicate Infiltration Team Shuttle Console" - desc = "Used to call and send the SIT shuttle." + desc = "Используется для вызова и отправки шаттла Диверсионного Отряда Синдиката." icon_keyboard = "syndie_key" icon_screen = "syndishuttle" req_access = list(ACCESS_SYNDICATE) @@ -87,7 +87,7 @@ /obj/machinery/computer/camera_advanced/shuttle_docker/syndicate name = "syndicate shuttle navigation computer" - desc = "Used to designate a precise transit location for the syndicate shuttle." + desc = "Используется, чтобы указать точное местоположение для отправки шаттла синдиката." icon_screen = "syndinavigation" icon_keyboard = "syndie_key" shuttleId = "syndicate" @@ -107,7 +107,7 @@ /obj/machinery/computer/camera_advanced/shuttle_docker/syndicate/sst name = "SST shuttle navigation computer" - desc = "Used to designate a precise transit location for the SST shuttle." + desc = "Используется, чтобы указать точное местоположение для отправки шаттла Ударного Отряда Синдиката." shuttleId = "sst" shuttlePortId = "sst_custom" bubble_icon = "syndibot" @@ -118,7 +118,7 @@ /obj/machinery/computer/camera_advanced/shuttle_docker/syndicate/sit name = "SIT shuttle navigation computer" - desc = "Used to designate a precise transit location for the SIT shuttle." + desc = "Используется, чтобы указать точное местоположение для отправки шаттла Диверсионного Отряда Синдиката." shuttleId = "sit" shuttlePortId = "sit_custom" bubble_icon = "syndibot" diff --git a/code/modules/shuttle/vox.dm b/code/modules/shuttle/vox.dm index 7540725fcdb..031e1988ca4 100644 --- a/code/modules/shuttle/vox.dm +++ b/code/modules/shuttle/vox.dm @@ -8,7 +8,7 @@ /obj/machinery/computer/camera_advanced/shuttle_docker/vox name = "skipjack navigation computer" - desc = "Used to designate a precise transit location for the skipjack." + desc = "Используется, чтобы указать точное местоположение для отправки Скипджека." icon_screen = "navigation" icon_keyboard = "med_key" shuttleId = "skipjack" diff --git a/code/modules/space_management/zlevel_manager.dm b/code/modules/space_management/zlevel_manager.dm index 3cf8b7b3a4f..6d87270a74e 100644 --- a/code/modules/space_management/zlevel_manager.dm +++ b/code/modules/space_management/zlevel_manager.dm @@ -43,15 +43,10 @@ GLOBAL_DATUM_INIT(space_manager, /datum/zlev_manager, new()) /datum/zlev_manager/proc/get_zlev(z) - if(!("[z]" in z_list)) - log_runtime(EXCEPTION("Unmanaged z level: '[z]'")) - else - return z_list["[z]"] + return z_list["[z]"] == null ? log_runtime(EXCEPTION("Unmanaged z level: '[z]'")) : z_list["[z]"] /datum/zlev_manager/proc/get_zlev_by_name(A) - if(!(A in levels_by_name)) - log_runtime(EXCEPTION("Non-existent z level: '[A]'")) - return levels_by_name[A] + return levels_by_name[A] == null ? log_runtime(EXCEPTION("Non-existent z level: '[A]'")) : levels_by_name[A] /* * "Dirt" management diff --git a/code/modules/spacepods/spacepod.dm b/code/modules/spacepods/spacepod.dm index 041ead235b6..a3c07d2b7de 100644 --- a/code/modules/spacepods/spacepod.dm +++ b/code/modules/spacepods/spacepod.dm @@ -601,7 +601,7 @@ equipment_system.vars[slot] = null -/obj/spacepod/hear_talk/hear_talk(mob/M, list/message_pieces) +/obj/spacepod/hear_talk(mob/M, list/message_pieces) cargo_hold.hear_talk(M, message_pieces) ..() diff --git a/code/modules/surgery/limb_reattach.dm b/code/modules/surgery/limb_reattach.dm index fab5b28c908..311be85a546 100644 --- a/code/modules/surgery/limb_reattach.dm +++ b/code/modules/surgery/limb_reattach.dm @@ -341,7 +341,7 @@ continue var/new_limb_type = organ_data["path"] - var/obj/item/organ/external/new_limb = new new_limb_type(holder = target, special = ORGAN_MANIPULATION_DEFAULT) + var/obj/item/organ/external/new_limb = new new_limb_type(target, ORGAN_MANIPULATION_DEFAULT) new_limb.robotize(company = L.model_info) if(L.sabotaged) diff --git a/code/modules/surgery/organs/organ.dm b/code/modules/surgery/organs/organ.dm index 04a08e1a281..462f89ebc09 100644 --- a/code/modules/surgery/organs/organ.dm +++ b/code/modules/surgery/organs/organ.dm @@ -50,13 +50,14 @@ var/hidden_pain = FALSE -/obj/item/organ/New(mob/living/carbon/human/holder) - ..(holder) +/obj/item/organ/Initialize(mapload) + . = ..() if(!max_damage) max_damage = min_broken_damage * 2 - if(ishuman(holder)) + if(ishuman(loc)) + var/mob/living/carbon/human/holder = loc update_DNA(holder.dna) return diff --git a/code/modules/surgery/organs/organ_external.dm b/code/modules/surgery/organs/organ_external.dm index b06c1aa65eb..5d1962879be 100644 --- a/code/modules/surgery/organs/organ_external.dm +++ b/code/modules/surgery/organs/organ_external.dm @@ -105,15 +105,16 @@ light_on = FALSE -/obj/item/organ/external/New(mob/living/carbon/holder, special = ORGAN_MANIPULATION_NOEFFECT) - ..() +/obj/item/organ/external/Initialize(mapload, special = ORGAN_MANIPULATION_NOEFFECT) + . = ..() if(dna?.species) icobase = dna.species.icobase deform = dna.species.deform - if(ishuman(holder)) - replaced(holder, special) - sync_colour_to_human(holder) + + if(ishuman(loc)) + replaced(loc, special) + sync_colour_to_human(loc) properly_attached = TRUE if(is_robotic()) diff --git a/code/modules/surgery/organs/organ_internal.dm b/code/modules/surgery/organs/organ_internal.dm index c12203c2244..e929d3fe9e6 100644 --- a/code/modules/surgery/organs/organ_internal.dm +++ b/code/modules/surgery/organs/organ_internal.dm @@ -12,10 +12,11 @@ light_on = FALSE -/obj/item/organ/internal/New(mob/living/carbon/holder) - ..() - if(istype(holder)) - insert(holder) +/obj/item/organ/internal/Initialize(mapload) + . = ..() + + if(iscarbon(loc)) + insert(loc) if(species_type == /datum/species/diona) AddComponent(/datum/component/diona_internals) diff --git a/code/modules/surgery/organs/subtypes/machine.dm b/code/modules/surgery/organs/subtypes/machine.dm index aa7ab941793..d9dfe52dbde 100644 --- a/code/modules/surgery/organs/subtypes/machine.dm +++ b/code/modules/surgery/organs/subtypes/machine.dm @@ -10,8 +10,9 @@ pickup_sound = 'sound/items/handling/component_pickup.ogg' drop_sound = 'sound/items/handling/component_drop.ogg' -/obj/item/organ/external/head/ipc/New() - ..() +/obj/item/organ/external/head/ipc/Initialize(mapload, special = ORGAN_MANIPULATION_NOEFFECT) + . = ..() + robotize(company = "Morpheus Cyberkinetics") /obj/item/organ/external/chest/ipc @@ -22,8 +23,9 @@ pickup_sound = 'sound/items/handling/component_pickup.ogg' drop_sound = 'sound/items/handling/component_drop.ogg' -/obj/item/organ/external/chest/ipc/New() - ..() +/obj/item/organ/external/chest/ipc/Initialize(mapload, special = ORGAN_MANIPULATION_NOEFFECT) + . = ..() + robotize(company = "Morpheus Cyberkinetics") /obj/item/organ/external/groin/ipc @@ -34,8 +36,9 @@ pickup_sound = 'sound/items/handling/component_pickup.ogg' drop_sound = 'sound/items/handling/component_drop.ogg' -/obj/item/organ/external/groin/ipc/New() - ..() +/obj/item/organ/external/groin/ipc/Initialize(mapload, special = ORGAN_MANIPULATION_NOEFFECT) + . = ..() + robotize(company = "Morpheus Cyberkinetics") /obj/item/organ/external/arm/ipc @@ -46,8 +49,9 @@ pickup_sound = 'sound/items/handling/component_pickup.ogg' drop_sound = 'sound/items/handling/component_drop.ogg' -/obj/item/organ/external/arm/ipc/New() - ..() +/obj/item/organ/external/arm/ipc/Initialize(mapload, special = ORGAN_MANIPULATION_NOEFFECT) + . = ..() + robotize(company = "Morpheus Cyberkinetics") /obj/item/organ/external/arm/right/ipc @@ -56,8 +60,9 @@ status = ORGAN_ROBOT emp_resistant = TRUE -/obj/item/organ/external/arm/right/ipc/New() - ..() +/obj/item/organ/external/arm/right/ipc/Initialize(mapload, special = ORGAN_MANIPULATION_NOEFFECT) + . = ..() + robotize(company = "Morpheus Cyberkinetics") /obj/item/organ/external/leg/ipc @@ -68,8 +73,9 @@ pickup_sound = 'sound/items/handling/component_pickup.ogg' drop_sound = 'sound/items/handling/component_drop.ogg' -/obj/item/organ/external/leg/ipc/New() - ..() +/obj/item/organ/external/leg/ipc/Initialize(mapload, special = ORGAN_MANIPULATION_NOEFFECT) + . = ..() + robotize(company = "Morpheus Cyberkinetics") /obj/item/organ/external/leg/right/ipc @@ -78,8 +84,9 @@ status = ORGAN_ROBOT emp_resistant = TRUE -/obj/item/organ/external/leg/right/ipc/New() - ..() +/obj/item/organ/external/leg/right/ipc/Initialize(mapload, special = ORGAN_MANIPULATION_NOEFFECT) + . = ..() + robotize(company = "Morpheus Cyberkinetics") /obj/item/organ/external/foot/ipc @@ -90,8 +97,9 @@ pickup_sound = 'sound/items/handling/component_pickup.ogg' drop_sound = 'sound/items/handling/component_drop.ogg' -/obj/item/organ/external/foot/ipc/New() - ..() +/obj/item/organ/external/foot/ipc/Initialize(mapload, special = ORGAN_MANIPULATION_NOEFFECT) + . = ..() + robotize(company = "Morpheus Cyberkinetics") /obj/item/organ/external/foot/right/ipc @@ -100,8 +108,9 @@ status = ORGAN_ROBOT emp_resistant = TRUE -/obj/item/organ/external/foot/right/ipc/New() - ..() +/obj/item/organ/external/foot/right/ipc/Initialize(mapload, special = ORGAN_MANIPULATION_NOEFFECT) + . = ..() + robotize(company = "Morpheus Cyberkinetics") /obj/item/organ/external/hand/ipc @@ -112,8 +121,9 @@ pickup_sound = 'sound/items/handling/component_pickup.ogg' drop_sound = 'sound/items/handling/component_drop.ogg' -/obj/item/organ/external/hand/ipc/New() - ..() +/obj/item/organ/external/hand/ipc/Initialize(mapload, special = ORGAN_MANIPULATION_NOEFFECT) + . = ..() + robotize(company = "Morpheus Cyberkinetics") /obj/item/organ/external/hand/right/ipc @@ -122,8 +132,9 @@ status = ORGAN_ROBOT emp_resistant = TRUE -/obj/item/organ/external/hand/right/ipc/New() - ..() +/obj/item/organ/external/hand/right/ipc/Initialize(mapload, special = ORGAN_MANIPULATION_NOEFFECT) + . = ..() + robotize(company = "Morpheus Cyberkinetics") /obj/item/organ/internal/cell diff --git a/code/modules/surgery/organs/subtypes/standard.dm b/code/modules/surgery/organs/subtypes/standard.dm index d0971da1aca..27d9ff57e74 100644 --- a/code/modules/surgery/organs/subtypes/standard.dm +++ b/code/modules/surgery/organs/subtypes/standard.dm @@ -486,9 +486,10 @@ var/list/m_colours = list("tail" = "#000000") s_col = "#000000" -/obj/item/organ/external/tail/New(mob/living/carbon/holder) - ..() - if(!holder) +/obj/item/organ/external/tail/Initialize(mapload, special = ORGAN_MANIPULATION_NOEFFECT) + . = ..() + + if(!ishuman(loc)) var/icon/tempicon = new/icon("icon" = force_icon, "icon_state" = icon_name) var/icon/tempicon2 = new/icon(tempicon,dir=NORTH) tempicon2.Flip(SOUTH) @@ -548,9 +549,10 @@ var/list/m_colours = list("wing" = "#000000") s_col = "#000000" -/obj/item/organ/external/wing/New(mob/living/carbon/holder) - ..() - if(!holder) +/obj/item/organ/external/wing/Initialize(mapload, special = ORGAN_MANIPULATION_NOEFFECT) + . = ..() + + if(!ishuman(loc)) var/icon/tempicon = new/icon("icon" = force_icon, "icon_state" = icon_name) var/icon/tempicon2 = new/icon(tempicon,dir=NORTH) tempicon2.Flip(SOUTH) diff --git a/code/modules/telesci/telesci_computer.dm b/code/modules/telesci/telesci_computer.dm index 4c0b4316b59..e2def8c06ab 100644 --- a/code/modules/telesci/telesci_computer.dm +++ b/code/modules/telesci/telesci_computer.dm @@ -1,6 +1,6 @@ /obj/machinery/computer/telescience name = "telepad control console" - desc = "Used to teleport objects to and from the telescience telepad." + desc = "Используется для телепортации объектов на телепад и обратно." icon_keyboard = "telesci_key" icon_screen = "telesci" circuit = /obj/item/circuitboard/telesci_console diff --git a/code/modules/w_examine/descriptions/medical.dm b/code/modules/w_examine/descriptions/medical.dm index 728a5f72c61..a85f73ef6bb 100644 --- a/code/modules/w_examine/descriptions/medical.dm +++ b/code/modules/w_examine/descriptions/medical.dm @@ -27,7 +27,7 @@ description_info = "Click your target with Grab intent, then click on the table with an empty hand, to place them on it." /obj/machinery/computer/operating - description_info = "This console gives information on the status of the patient on the adjacent operating table, notably their consciousness." + description_info = "Эта консоль выдает информацию о состоянии пациента, лежащего на соседнем операционном столе, в частности о его сознании." /obj/machinery/sleeper description_info = "The sleeper allows you to clean the blood by means of dialysis, and to administer medication in a controlled environment.
\ diff --git a/config/example/config.txt b/config/example/config.txt index e40ed4fc4a9..3c2fab540af 100644 --- a/config/example/config.txt +++ b/config/example/config.txt @@ -388,9 +388,6 @@ SOCKET_TALK 0 ## How long the delay is before the Away Mission gate opens. Default is half an hour. GATEWAY_DELAY 6000 -## Remove the # to give assistants maint access. -ASSISTANT_MAINT - ## Remove the # to enable assistant limiting. ASSISTANT_LIMIT @@ -473,18 +470,6 @@ PLAYER_REROUTE_CAP 0 ## Server to reroute to #TUTORIAL_SERVER_URL byond://example.org:1111 -## Disable the loading of away missions -#DISABLE_AWAY_MISSIONS - -## Disable the loading of space ruins -#DISABLE_SPACE_RUINS - -## Minimum number of space ruins levels to generate -EXTRA_SPACE_RUIN_LEVELS_MIN 4 - -## Maximum number of space ruins levels to generate -EXTRA_SPACE_RUIN_LEVELS_MAX 8 - ## Uncomment to disable the OOC/LOOC channel by default. #DISABLE_OOC @@ -648,7 +633,6 @@ TOPIC_FILTERING_WHITELIST 127.0.0.1 # Number of players required for automatic gamemode change to extended. Doesn't work if set to zero or commented #AUTO_EXTENDED_PLAYERS_NUM 10 - ## CPU Affinity for FFmpeg. Check out taskset man page. ## Example valid values: "0-3" or "1,4-7" #FFMPEG_CPUAFFINITY 0-3 @@ -666,21 +650,9 @@ MAP_ROTATE none ## notriples - current map can't be selected as next if played twice in a row MAP_VOTE_MODE all -## Default server map -DEFAULT_MAP /datum/map/cyberiad - -## Override server map by specified, uncomment to apply -# OVERRIDE_MAP /datum/map/delta - ## Enable animations on item pickup and drop down # ITEM_ANIMATIONS_ENABLED -## Disable the loading of "Taipan" -# DISABLE_TAIPAN - -## Disable the loading of Lavaland -# DISABLE_LAVALAND - ## If the number of players is more or same than this, then we apply the highpop jobs config. JOBS_HIGH_POP_MODE_AMOUNT 80 @@ -733,3 +705,38 @@ CACHE_ASSETS 0 ## Enable the replay demo recording subsystem #DEMOS_ENABLED + +### INITIALIZATION SETTINGS ### +## This section contains settings directly affecting initializing progress. Uncomment these to make your world load faster. + +## Loads only space without anything in station sector. Still makes landmarks for spawnpoints, though. +#LOAD_NO_STATION + +## Enables loading titlescreen only after master has been loaded. Recommended to be used on local server for faster loading. +#ENABLE_TITLESCREEN_LATELOAD + +## Disable the loading of "Taipan" +#DISABLE_TAIPAN + +## Disable the loading of Lavaland +#DISABLE_LAVALAND + +## Disable the loading of away missions +#DISABLE_AWAY_MISSIONS + +## Disable the loading of space ruins +#DISABLE_SPACE_RUINS + +## Default server map +DEFAULT_MAP /datum/map/cyberiad + +## Override server map by specified, uncomment to apply +# OVERRIDE_MAP /datum/map/delta + +## Minimum number of space ruins levels to generate +EXTRA_SPACE_RUIN_LEVELS_MIN 4 + +## Maximum number of space ruins levels to generate +EXTRA_SPACE_RUIN_LEVELS_MAX 8 + +### INITIALIZATION SETTINGS END ### diff --git a/html/changelogs/archive/2024-11.yml b/html/changelogs/archive/2024-11.yml index 694667be1c8..f51cc549c9e 100644 --- a/html/changelogs/archive/2024-11.yml +++ b/html/changelogs/archive/2024-11.yml @@ -20,11 +20,17 @@ - bugfix: Cult fixes (#6090) - bugfix: dna vault hotfix (#6122) '2024-11-04': + Antoonij: + - add: ASHIE UPDATE (#5875) Daeberdir: - bugfix: Incorrect `mechanized` limb attaching. (#6125) - bugfix: Light fixture attach_chain blocks. (#6124) - bugfix: Fixed phazon noclip on teleport forbidden areas (#6121) - bugfix: Correct input target for `mindscan`. (#6120) + NightDawnFox: + - add: a lot of roboquest tweaks. (#5961) + NoName: + - bugfix: Earings in loadout (#6129) PiroMage: - bugfix: 'Nova Station #12 Patch (#6115)' - bugfix: Conveyor Belt and Disposal Outlet on Cyberiad & Celestation. (#6109) @@ -34,3 +40,66 @@ - add: CE toolbet now can hold RCD and one more item (#6048) Valtor: - add: species age restrictions (#6101) + Vladisvell: + - bugfix: added failsafe check for elite fauna and chasms (#6126) + - server: Updated testmerge workflow (#6127) +'2024-11-05': + Dictor: + - add: Entertainment monitor (#5900) + Explosi00N: + - server: Перевод лута с тендрилов Лаваленда (#6132) + LiquidPotroh: + - bugfix: Xenomorph fixes (#6110) + NightDawnFox: + - del: unathi rumble is gone (#6030) + - add: advanced laser & alien surgery kits (#6057) + Sheya: + - add: fishing rod is now craftable in R&D (#6045) + - add: Lockboxes on Taipan are no longer created in protholates and exosuit fabricators + (#6049) + Vladisvell: + - del: Перевод лута с тендрилов Лаваленда" (#6133) + github-actions[bot]: + - server: Automatic NanoMap Update (#6025) + littleboobs: + - qol: DNA effects translation (#6114) +'2024-11-06': + Antoonij: + - bugfix: ash walker rituals fix (#6138) + - bugfix: some rituals fix (#6140) + LiquidPotroh: + - bugfix: Xeno cant evolve to queen (#6136) + PlayerUnknown14: + - imageadd: Riot shield - new sprites (#6095) + - bugfix: RD doll now works properly (#6106) + Vladisvell: + - bugfix: Fixed headphones not unable to play songs (#6139) + - bugfix: Wooden wall creation fix (#6141) + - bugfix: Syndicate turrets are now dense (#6142) + userbaza: + - add: cloth footwraps now paintable, craftable and edible (#6042) +'2024-11-07': + Anorak2020: + - add: vampire sucking effects (#6029) + KefirTT: + - bugfix: singularity hammer no longer pulling ghosts (#6143) +'2024-11-09': + Vitalya: + - bugfix: Wryn hair color change (#6152) + Vladisvell: + - bugfix: Removes density on syndicate turret upon destruction (#6146) + - add: Titlescreen optimization for dreamseeker debug mode (#6148) + - bugfix: Setups Malfunctioning AI as a special role to prevent double antaging + (#6151) +'2024-11-11': + Den109G: + - bugfix: Now clock-structure can disguise (#6156) + Mahimka42: + - add: New robust security backpack (#6135) + - tweak: 30 bullets instead 20 in 10mm ammo box. (#6163) + PlayerUnknown14: + - add: warden got more access (#6157) + - add: Security tactical flashlight (#5948) + - balance: maintenance tunnels access for everyone (#6158) + Vitalya: + - imageadd: New sprites for some Wryn masks (#6144) diff --git a/icons/effects/ashwalker_rune.dmi b/icons/effects/ashwalker_rune.dmi index 3c703403738..99c80693443 100644 Binary files a/icons/effects/ashwalker_rune.dmi and b/icons/effects/ashwalker_rune.dmi differ diff --git a/icons/mob/clothing/back.dmi b/icons/mob/clothing/back.dmi index 52db83d1d47..90f04c72f47 100644 Binary files a/icons/mob/clothing/back.dmi and b/icons/mob/clothing/back.dmi differ diff --git a/icons/mob/clothing/ears.dmi b/icons/mob/clothing/ears.dmi index 3e55861f85f..9ca38ef1ffc 100644 Binary files a/icons/mob/clothing/ears.dmi and b/icons/mob/clothing/ears.dmi differ diff --git a/icons/mob/clothing/eyes.dmi b/icons/mob/clothing/eyes.dmi index a81bb67f4cc..8e4c4ee2408 100644 Binary files a/icons/mob/clothing/eyes.dmi and b/icons/mob/clothing/eyes.dmi differ diff --git a/icons/mob/clothing/feet.dmi b/icons/mob/clothing/feet.dmi index 6ad38455ad3..601e7162ee6 100644 Binary files a/icons/mob/clothing/feet.dmi and b/icons/mob/clothing/feet.dmi differ diff --git a/icons/mob/clothing/head.dmi b/icons/mob/clothing/head.dmi index a4ce834cfae..f23e7b7b571 100644 Binary files a/icons/mob/clothing/head.dmi and b/icons/mob/clothing/head.dmi differ diff --git a/icons/mob/clothing/mask.dmi b/icons/mob/clothing/mask.dmi index 01610a5ad16..6b9d1561c55 100644 Binary files a/icons/mob/clothing/mask.dmi and b/icons/mob/clothing/mask.dmi differ diff --git a/icons/mob/clothing/species/drask/eyes.dmi b/icons/mob/clothing/species/drask/eyes.dmi index 60a461bc9f1..13d6783d349 100644 Binary files a/icons/mob/clothing/species/drask/eyes.dmi and b/icons/mob/clothing/species/drask/eyes.dmi differ diff --git a/icons/mob/clothing/species/drask/mask.dmi b/icons/mob/clothing/species/drask/mask.dmi index db26ee4b53f..660fb46bf32 100644 Binary files a/icons/mob/clothing/species/drask/mask.dmi and b/icons/mob/clothing/species/drask/mask.dmi differ diff --git a/icons/mob/clothing/species/drask/uniform.dmi b/icons/mob/clothing/species/drask/uniform.dmi index 0587606747c..1f6fdff6a7d 100644 Binary files a/icons/mob/clothing/species/drask/uniform.dmi and b/icons/mob/clothing/species/drask/uniform.dmi differ diff --git a/icons/mob/clothing/species/grey/back.dmi b/icons/mob/clothing/species/grey/back.dmi index 1ad5b9b9dcd..d20e8ac2174 100644 Binary files a/icons/mob/clothing/species/grey/back.dmi and b/icons/mob/clothing/species/grey/back.dmi differ diff --git a/icons/mob/clothing/species/grey/eyes.dmi b/icons/mob/clothing/species/grey/eyes.dmi index 06aff6f9fc6..4a81420c5f8 100644 Binary files a/icons/mob/clothing/species/grey/eyes.dmi and b/icons/mob/clothing/species/grey/eyes.dmi differ diff --git a/icons/mob/clothing/species/grey/mask.dmi b/icons/mob/clothing/species/grey/mask.dmi index 82c9d36ff3b..d37f75a4188 100644 Binary files a/icons/mob/clothing/species/grey/mask.dmi and b/icons/mob/clothing/species/grey/mask.dmi differ diff --git a/icons/mob/clothing/species/grey/uniform.dmi b/icons/mob/clothing/species/grey/uniform.dmi index 11d5f99cc0c..658469a9729 100644 Binary files a/icons/mob/clothing/species/grey/uniform.dmi and b/icons/mob/clothing/species/grey/uniform.dmi differ diff --git a/icons/mob/clothing/species/kidan/mask.dmi b/icons/mob/clothing/species/kidan/mask.dmi index 84a66775738..7033701c293 100644 Binary files a/icons/mob/clothing/species/kidan/mask.dmi and b/icons/mob/clothing/species/kidan/mask.dmi differ diff --git a/icons/mob/clothing/species/kidan/uniform.dmi b/icons/mob/clothing/species/kidan/uniform.dmi index 72b43ba157c..097f2317a1f 100644 Binary files a/icons/mob/clothing/species/kidan/uniform.dmi and b/icons/mob/clothing/species/kidan/uniform.dmi differ diff --git a/icons/mob/clothing/species/monkey/ears.dmi b/icons/mob/clothing/species/monkey/ears.dmi index b55a433dfb3..fe201b6c978 100644 Binary files a/icons/mob/clothing/species/monkey/ears.dmi and b/icons/mob/clothing/species/monkey/ears.dmi differ diff --git a/icons/mob/clothing/species/monkey/eyes.dmi b/icons/mob/clothing/species/monkey/eyes.dmi index e93142f8d2d..c9fcd0ea96b 100644 Binary files a/icons/mob/clothing/species/monkey/eyes.dmi and b/icons/mob/clothing/species/monkey/eyes.dmi differ diff --git a/icons/mob/clothing/species/monkey/head.dmi b/icons/mob/clothing/species/monkey/head.dmi index e8c793b66d4..2e8e4278b5c 100644 Binary files a/icons/mob/clothing/species/monkey/head.dmi and b/icons/mob/clothing/species/monkey/head.dmi differ diff --git a/icons/mob/clothing/species/monkey/mask.dmi b/icons/mob/clothing/species/monkey/mask.dmi index c37c41b35a1..86a0dfe6782 100644 Binary files a/icons/mob/clothing/species/monkey/mask.dmi and b/icons/mob/clothing/species/monkey/mask.dmi differ diff --git a/icons/mob/clothing/species/monkey/uniform.dmi b/icons/mob/clothing/species/monkey/uniform.dmi index 8a5662bdb82..92b316f6b58 100644 Binary files a/icons/mob/clothing/species/monkey/uniform.dmi and b/icons/mob/clothing/species/monkey/uniform.dmi differ diff --git a/icons/mob/clothing/species/tajaran/mask.dmi b/icons/mob/clothing/species/tajaran/mask.dmi index 90b55d2fb79..c49c4cad2e2 100644 Binary files a/icons/mob/clothing/species/tajaran/mask.dmi and b/icons/mob/clothing/species/tajaran/mask.dmi differ diff --git a/icons/mob/clothing/species/unathi/mask.dmi b/icons/mob/clothing/species/unathi/mask.dmi index 9802caa3ac1..30603327337 100644 Binary files a/icons/mob/clothing/species/unathi/mask.dmi and b/icons/mob/clothing/species/unathi/mask.dmi differ diff --git a/icons/mob/clothing/species/unathi/shoes.dmi b/icons/mob/clothing/species/unathi/shoes.dmi index a6fdd4c20f4..2d428a7d85b 100644 Binary files a/icons/mob/clothing/species/unathi/shoes.dmi and b/icons/mob/clothing/species/unathi/shoes.dmi differ diff --git a/icons/mob/clothing/species/unathi/uniform.dmi b/icons/mob/clothing/species/unathi/uniform.dmi index 517883bb747..1025d3ad9b4 100644 Binary files a/icons/mob/clothing/species/unathi/uniform.dmi and b/icons/mob/clothing/species/unathi/uniform.dmi differ diff --git a/icons/mob/clothing/species/vox/back.dmi b/icons/mob/clothing/species/vox/back.dmi index 8274c45cb9c..8d1f48dd247 100644 Binary files a/icons/mob/clothing/species/vox/back.dmi and b/icons/mob/clothing/species/vox/back.dmi differ diff --git a/icons/mob/clothing/species/vox/ears.dmi b/icons/mob/clothing/species/vox/ears.dmi index 5168e567419..b19672c81b2 100644 Binary files a/icons/mob/clothing/species/vox/ears.dmi and b/icons/mob/clothing/species/vox/ears.dmi differ diff --git a/icons/mob/clothing/species/vox/eyes.dmi b/icons/mob/clothing/species/vox/eyes.dmi index ef2956b1e80..6eca2223299 100644 Binary files a/icons/mob/clothing/species/vox/eyes.dmi and b/icons/mob/clothing/species/vox/eyes.dmi differ diff --git a/icons/mob/clothing/species/vox/mask.dmi b/icons/mob/clothing/species/vox/mask.dmi index 173b80e41df..c9b3313b256 100644 Binary files a/icons/mob/clothing/species/vox/mask.dmi and b/icons/mob/clothing/species/vox/mask.dmi differ diff --git a/icons/mob/clothing/species/vox/uniform.dmi b/icons/mob/clothing/species/vox/uniform.dmi index 80fa00c2d0b..b14c90995d9 100644 Binary files a/icons/mob/clothing/species/vox/uniform.dmi and b/icons/mob/clothing/species/vox/uniform.dmi differ diff --git a/icons/mob/clothing/species/vulpkanin/mask.dmi b/icons/mob/clothing/species/vulpkanin/mask.dmi index 802d3b337a5..47d16389a72 100644 Binary files a/icons/mob/clothing/species/vulpkanin/mask.dmi and b/icons/mob/clothing/species/vulpkanin/mask.dmi differ diff --git a/icons/mob/clothing/species/wryn/mask.dmi b/icons/mob/clothing/species/wryn/mask.dmi index 5e72a8730da..bfd77b02ea5 100644 Binary files a/icons/mob/clothing/species/wryn/mask.dmi and b/icons/mob/clothing/species/wryn/mask.dmi differ diff --git a/icons/mob/clothing/species/wryn/uniform.dmi b/icons/mob/clothing/species/wryn/uniform.dmi index f676a5dbee3..2434e25e4ba 100644 Binary files a/icons/mob/clothing/species/wryn/uniform.dmi and b/icons/mob/clothing/species/wryn/uniform.dmi differ diff --git a/icons/mob/clothing/uniform.dmi b/icons/mob/clothing/uniform.dmi index 10209a3ca4f..541ef5f85e6 100644 Binary files a/icons/mob/clothing/uniform.dmi and b/icons/mob/clothing/uniform.dmi differ diff --git a/icons/mob/inhands/clothing_lefthand.dmi b/icons/mob/inhands/clothing_lefthand.dmi index f9f9153edb0..b7af09ade06 100644 Binary files a/icons/mob/inhands/clothing_lefthand.dmi and b/icons/mob/inhands/clothing_lefthand.dmi differ diff --git a/icons/mob/inhands/clothing_righthand.dmi b/icons/mob/inhands/clothing_righthand.dmi index 11b0fac7bfa..10fc756e2aa 100644 Binary files a/icons/mob/inhands/clothing_righthand.dmi and b/icons/mob/inhands/clothing_righthand.dmi differ diff --git a/icons/mob/inhands/items_lefthand.dmi b/icons/mob/inhands/items_lefthand.dmi index bb2867191d2..5f35327a3f3 100755 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 9eb6f91f360..004891ea390 100755 Binary files a/icons/mob/inhands/items_righthand.dmi and b/icons/mob/inhands/items_righthand.dmi differ diff --git a/icons/mob/inhands/mobs_lefthand.dmi b/icons/mob/inhands/mobs_lefthand.dmi index d3703b56297..efc6a7c8aaf 100644 Binary files a/icons/mob/inhands/mobs_lefthand.dmi and b/icons/mob/inhands/mobs_lefthand.dmi differ diff --git a/icons/mob/inhands/mobs_righthand.dmi b/icons/mob/inhands/mobs_righthand.dmi index be4a567b689..16df4461689 100644 Binary files a/icons/mob/inhands/mobs_righthand.dmi and b/icons/mob/inhands/mobs_righthand.dmi differ diff --git a/icons/mob/sprite_accessories/human/human_hair.dmi b/icons/mob/sprite_accessories/human/human_hair.dmi index 176ea1ab05e..682ec55eca8 100644 Binary files a/icons/mob/sprite_accessories/human/human_hair.dmi and b/icons/mob/sprite_accessories/human/human_hair.dmi differ diff --git a/icons/obj/clothing/glasses.dmi b/icons/obj/clothing/glasses.dmi index 174e2a4ad1c..964c2b27b8e 100644 Binary files a/icons/obj/clothing/glasses.dmi and b/icons/obj/clothing/glasses.dmi differ diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi index 93a943f6ca5..eea75185ce8 100644 Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ diff --git a/icons/obj/clothing/masks.dmi b/icons/obj/clothing/masks.dmi index 2d41b6601c4..c7a07b5ee80 100644 Binary files a/icons/obj/clothing/masks.dmi and b/icons/obj/clothing/masks.dmi differ diff --git a/icons/obj/clothing/shoes.dmi b/icons/obj/clothing/shoes.dmi index ea0c5eef85a..2f796a0ca27 100644 Binary files a/icons/obj/clothing/shoes.dmi and b/icons/obj/clothing/shoes.dmi differ diff --git a/icons/obj/clothing/uniforms.dmi b/icons/obj/clothing/uniforms.dmi index ba6ae22135e..5b7418245a6 100644 Binary files a/icons/obj/clothing/uniforms.dmi and b/icons/obj/clothing/uniforms.dmi differ diff --git a/icons/obj/decals.dmi b/icons/obj/decals.dmi index a6072426b39..2552e6f9aae 100644 Binary files a/icons/obj/decals.dmi and b/icons/obj/decals.dmi differ diff --git a/icons/obj/items.dmi b/icons/obj/items.dmi index bb24519cbf5..0d3952efe29 100644 Binary files a/icons/obj/items.dmi and b/icons/obj/items.dmi differ diff --git a/icons/obj/janitor.dmi b/icons/obj/janitor.dmi index f97f776b592..b9cee7e6acf 100644 Binary files a/icons/obj/janitor.dmi and b/icons/obj/janitor.dmi differ diff --git a/icons/obj/lighting.dmi b/icons/obj/lighting.dmi index 8b853ba2bc8..ceb86c0667b 100644 Binary files a/icons/obj/lighting.dmi and b/icons/obj/lighting.dmi differ diff --git a/icons/obj/pda.dmi b/icons/obj/pda.dmi index 3d44421a2cd..477e975459f 100644 Binary files a/icons/obj/pda.dmi and b/icons/obj/pda.dmi differ diff --git a/icons/obj/storage.dmi b/icons/obj/storage.dmi index f26aa801de5..f928128df10 100644 Binary files a/icons/obj/storage.dmi and b/icons/obj/storage.dmi differ diff --git a/icons/obj/weapons/energy.dmi b/icons/obj/weapons/energy.dmi index 459a68a74cc..76045167bac 100644 Binary files a/icons/obj/weapons/energy.dmi and b/icons/obj/weapons/energy.dmi differ diff --git a/paradise.dme b/paradise.dme index 2c1ed093e4e..4d8f6bb7150 100644 --- a/paradise.dme +++ b/paradise.dme @@ -116,6 +116,7 @@ #include "code\__DEFINES\RCD.dm" #include "code\__DEFINES\reagents.dm" #include "code\__DEFINES\request.dm" +#include "code\__DEFINES\request_consoles.dm" #include "code\__DEFINES\rituals.dm" #include "code\__DEFINES\role_preferences.dm" #include "code\__DEFINES\rolebans.dm" @@ -2830,6 +2831,8 @@ #include "code\modules\pda\pda_tgui.dm" #include "code\modules\pda\pdas.dm" #include "code\modules\pda\radio.dm" +#include "code\modules\pda\request_consoles_app.dm" +#include "code\modules\pda\request_consoles_cart.dm" #include "code\modules\pda\utilities.dm" #include "code\modules\persistence\persistence.dm" #include "code\modules\point\point.dm" diff --git a/tgui/packages/tgui/interfaces/BotClean.js b/tgui/packages/tgui/interfaces/BotClean.js index 7d73bc8e5cf..e43095641e0 100644 --- a/tgui/packages/tgui/interfaces/BotClean.js +++ b/tgui/packages/tgui/interfaces/BotClean.js @@ -20,71 +20,74 @@ export const BotClean = (props, context) => { - Swipe an ID card to {locked ? 'unlock' : 'lock'} this interface. + Проведите своей ID-картой, чтобы + {locked ? 'разблокировать' : 'заблокировать'} этот интерфейс. -
+
- +
-
+
act('blood')} />
{painame && ( -
+
-
+
act('authid')} /> act('authweapon')} /> act('authwarrant')} />
-
+
act('arrtype')} /> act('arrdeclare')} />
{painame && ( -
+