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/RandomZLevels/wildwest.dmm b/_maps/map_files/RandomZLevels/wildwest.dmm index f1e41c891cd..6beccf0f394 100644 --- a/_maps/map_files/RandomZLevels/wildwest.dmm +++ b/_maps/map_files/RandomZLevels/wildwest.dmm @@ -187,17 +187,6 @@ "aG" = ( /turf/simulated/mineral, /area/space/nearstation) -"aH" = ( -/obj/machinery/door/airlock/vault{ - locked = 1; - use_power = 0 - }, -/obj/machinery/door/airlock/vault{ - locked = 1; - use_power = 0 - }, -/turf/simulated/floor/engine/cult, -/area/awaymission/wwvault) "aK" = ( /obj/effect/mob_spawn/human/miner, /turf/simulated/floor/engine/cult, @@ -24237,7 +24226,7 @@ ac ac ab aF -aH +aF ab ab ab 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 a05ad5b52fd..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 @@ -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"; @@ -8037,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, @@ -8553,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, @@ -8626,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" = ( @@ -9199,7 +9205,7 @@ dir = 9; icon_state = "darkblue" }, -/area/chapel/main) +/area/chapel/massdriver) "bqA" = ( /obj/effect/spawner/window/reinforced, /turf/simulated/floor/plating, @@ -11072,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, @@ -13250,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 }, @@ -14375,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{ @@ -14845,7 +14842,7 @@ dir = 8; icon_state = "darkblue" }, -/area/chapel/main) +/area/chapel/massdriver) "cej" = ( /obj/structure/grille/broken, /turf/simulated/floor/plating, @@ -15137,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" @@ -15505,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 @@ -16244,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, @@ -17235,7 +17243,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/chapel/main) +/area/chapel/massdriver) "cvY" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -18131,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; @@ -18771,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"; @@ -18954,7 +18951,7 @@ dir = 5; icon_state = "vault" }, -/area/chapel/main) +/area/chapel/massdriver) "cJZ" = ( /obj/machinery/smartfridge, /obj/machinery/door/window/eastleft{ @@ -19582,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" = ( @@ -20877,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; @@ -21121,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 @@ -21458,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, @@ -22643,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, @@ -24602,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" @@ -27302,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{ @@ -27525,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" @@ -30011,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, @@ -31237,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, @@ -32362,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 @@ -32724,7 +32785,7 @@ dir = 5; icon_state = "darkblue" }, -/area/chapel/main) +/area/chapel/massdriver) "eKz" = ( /turf/simulated/wall, /area/clownoffice) @@ -33524,7 +33585,7 @@ "eQG" = ( /obj/machinery/firealarm{ dir = 4; - pixel_x = 28 + pixel_x = 26 }, /turf/simulated/floor/plasteel{ dir = 6; @@ -33732,7 +33793,7 @@ dir = 9; icon_state = "vault" }, -/area/chapel/main) +/area/chapel/massdriver) "eSV" = ( /obj/machinery/gateway{ dir = 1 @@ -34479,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" = ( @@ -35326,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, @@ -35581,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{ @@ -36154,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 @@ -38223,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"; @@ -38571,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 @@ -38793,7 +38899,7 @@ dir = 4; icon_state = "darkblue" }, -/area/chapel/main) +/area/chapel/massdriver) "fDY" = ( /turf/simulated/wall, /area/crew_quarters/kitchen) @@ -41990,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 @@ -42094,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 }, @@ -42104,6 +42227,9 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, /turf/simulated/floor/plasteel{ dir = 1 }, @@ -44243,7 +44369,7 @@ /turf/simulated/floor/plasteel{ icon_state = "cult" }, -/area/chapel/office) +/area/chapel/morgue) "grY" = ( /obj/structure/sign/directions/cargo{ dir = 4 @@ -45551,7 +45677,7 @@ dir = 6; icon_state = "vault" }, -/area/chapel/main) +/area/chapel/massdriver) "gDC" = ( /obj/structure/cable{ icon_state = "4-8" @@ -47501,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) @@ -48944,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, @@ -49760,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{ @@ -51220,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, @@ -51489,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, @@ -51873,11 +51978,15 @@ /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) @@ -53076,9 +53185,6 @@ /turf/simulated/floor/wood, /area/security/detectives_office) "hNs" = ( -/obj/machinery/light_switch{ - pixel_x = -26 - }, /obj/machinery/light{ dir = 8 }, @@ -53721,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" @@ -55258,7 +55367,7 @@ dir = 9; icon_state = "vault" }, -/area/chapel/main) +/area/chapel/massdriver) "idu" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 @@ -55303,7 +55412,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/chapel/main) +/area/chapel/massdriver) "idL" = ( /obj/item/radio/intercom{ dir = 4; @@ -55812,7 +55921,7 @@ dir = 6; icon_state = "vault" }, -/area/chapel/main) +/area/chapel/massdriver) "ihk" = ( /turf/simulated/floor/plasteel{ dir = 1; @@ -56096,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{ @@ -57328,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{ @@ -57376,7 +57496,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/chapel/main) +/area/chapel/massdriver) "isz" = ( /turf/simulated/wall, /area/crew_quarters/serviceyard) @@ -58053,7 +58173,7 @@ dir = 4; icon_state = "darkblue" }, -/area/chapel/main) +/area/chapel/massdriver) "ixj" = ( /obj/structure/chair/office/dark, /obj/structure/cable{ @@ -58307,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" @@ -59558,7 +59658,7 @@ dir = 5; icon_state = "vault" }, -/area/chapel/main) +/area/chapel/massdriver) "iJR" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -60326,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" = ( @@ -60966,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"; @@ -61629,7 +61729,7 @@ /turf/simulated/floor/plasteel{ icon_state = "cult" }, -/area/chapel/office) +/area/chapel/morgue) "jbj" = ( /obj/structure/chair/comfy/brown{ dir = 8 @@ -61933,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, @@ -62241,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 @@ -62261,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" @@ -62905,7 +63022,7 @@ /turf/simulated/floor/plasteel{ icon_state = "cult" }, -/area/chapel/office) +/area/chapel/morgue) "jjX" = ( /obj/structure/window/reinforced{ dir = 4 @@ -65605,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"; @@ -65937,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) @@ -66642,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{ @@ -66962,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" @@ -67174,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; @@ -69138,6 +69260,9 @@ }, /obj/structure/bed, /obj/machinery/light, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, /turf/simulated/floor/plasteel{ dir = 1 }, @@ -70328,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{ @@ -70911,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, @@ -72195,6 +72323,7 @@ c_tag = "Brig Cell 5"; dir = 6 }, +/obj/machinery/atmospherics/unary/vent_pump/on, /turf/simulated/floor/plasteel{ dir = 1 }, @@ -73203,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, @@ -73278,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, @@ -73536,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 }, @@ -73933,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, @@ -74118,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{ @@ -74519,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 @@ -76566,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, @@ -77591,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{ @@ -77798,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{ @@ -77979,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{ @@ -78252,7 +78342,7 @@ dir = 9; icon_state = "darkblue" }, -/area/chapel/main) +/area/chapel/massdriver) "lCA" = ( /turf/simulated/wall, /area/hallway/primary/port/south) @@ -78339,7 +78429,7 @@ dir = 8; icon_state = "darkblue" }, -/area/chapel/main) +/area/chapel/massdriver) "lDe" = ( /obj/machinery/atmospherics/unary/outlet_injector/on{ dir = 1 @@ -79127,7 +79217,7 @@ /turf/simulated/floor/plasteel{ icon_state = "cult" }, -/area/chapel/office) +/area/chapel/morgue) "lJU" = ( /obj/structure/window/reinforced{ dir = 8 @@ -79285,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, @@ -79391,6 +79486,9 @@ dir = 4 }, /obj/structure/window/reinforced, +/obj/machinery/light{ + dir = 8 + }, /turf/simulated/floor/plasteel{ dir = 10; icon_state = "darkblue" @@ -80184,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, @@ -81086,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" @@ -82067,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{ @@ -82382,7 +82497,7 @@ dir = 6; icon_state = "vault" }, -/area/chapel/main) +/area/chapel/massdriver) "mhK" = ( /obj/structure/sink/kitchen{ pixel_y = 25 @@ -82431,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" @@ -83160,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 @@ -83423,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{ @@ -85142,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" }, @@ -85338,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" = ( @@ -86462,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, @@ -86646,7 +86748,7 @@ dir = 9; icon_state = "vault" }, -/area/chapel/main) +/area/chapel/massdriver) "mOR" = ( /obj/structure/cable{ icon_state = "1-2" @@ -86723,7 +86825,7 @@ /obj/item/twohanded/required/kirbyplants, /obj/machinery/firealarm{ dir = 4; - pixel_x = -28 + pixel_x = -25 }, /obj/machinery/light{ dir = 8 @@ -86732,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, @@ -87032,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{ @@ -87333,7 +87446,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/chapel/main) +/area/chapel/massdriver) "mTC" = ( /obj/structure/cable{ icon_state = "1-2" @@ -89490,7 +89603,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/chapel/main) +/area/chapel/massdriver) "niY" = ( /obj/structure/cable{ icon_state = "1-2" @@ -90565,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, @@ -91195,6 +91291,10 @@ 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; @@ -91484,6 +91584,7 @@ c_tag = "Brig Cell 3"; dir = 6 }, +/obj/machinery/atmospherics/unary/vent_pump/on, /turf/simulated/floor/plasteel{ dir = 1 }, @@ -91996,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{ @@ -93225,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" @@ -93705,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, @@ -94895,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 @@ -94985,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, @@ -96008,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" = ( @@ -97218,7 +97294,7 @@ dir = 8; icon_state = "darkblue" }, -/area/chapel/main) +/area/chapel/massdriver) "osl" = ( /obj/structure/table/reinforced, /obj/item/restraints/legcuffs/beartrap, @@ -97338,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, @@ -98714,7 +98790,7 @@ dir = 1; in_use = 1 }, -/turf/simulated/floor/carpet/royalblack, +/turf/simulated/floor/carpet/black, /area/ntrep) "oDB" = ( /obj/structure/flora/ausbushes/sunnybush, @@ -100582,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 @@ -102090,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" @@ -104333,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)" @@ -104639,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"; @@ -104736,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, @@ -105546,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" = ( @@ -106167,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 @@ -106813,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, @@ -106991,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 }, @@ -108994,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" = ( @@ -110150,7 +110238,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/chapel/main) +/area/chapel/massdriver) "qjQ" = ( /turf/simulated/floor/plasteel{ icon_state = "whiteyellow" @@ -110939,7 +111027,7 @@ /turf/simulated/floor/plasteel{ icon_state = "cult" }, -/area/chapel/office) +/area/chapel/morgue) "qrs" = ( /obj/structure/cable{ icon_state = "2-4" @@ -111984,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 @@ -112322,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, @@ -113077,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" = ( @@ -113401,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" @@ -113670,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" }, @@ -113826,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" @@ -114618,7 +114718,7 @@ dir = 8; icon_state = "darkblue" }, -/area/chapel/main) +/area/chapel/massdriver) "qRN" = ( /obj/machinery/camera{ c_tag = "Library Games Room"; @@ -115251,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, @@ -115851,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, @@ -116860,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" = ( @@ -117302,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 }, @@ -118919,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, @@ -119163,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, @@ -120709,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" = ( @@ -121163,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, @@ -122987,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, @@ -124110,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{ @@ -124991,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"; @@ -126304,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{ @@ -126676,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; @@ -127716,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{ @@ -129261,12 +129401,6 @@ 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" }, @@ -129280,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" }, @@ -129884,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 @@ -130762,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" = ( @@ -131460,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) @@ -131541,7 +131687,7 @@ "tns" = ( /obj/structure/sign/holy, /turf/simulated/wall, -/area/chapel/main) +/area/chapel/massdriver) "tnu" = ( /turf/simulated/floor/plasteel{ dir = 1; @@ -131851,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{ @@ -132930,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, @@ -133031,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, @@ -133251,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" = ( @@ -133431,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{ @@ -137251,7 +137405,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/chapel/main) +/area/chapel/massdriver) "ubx" = ( /obj/machinery/newscaster{ pixel_y = -30 @@ -140256,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" @@ -141991,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; @@ -142443,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{ @@ -142889,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 @@ -143128,7 +143303,6 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/unary/vent_scrubber/on, /turf/simulated/floor/plasteel{ dir = 1 }, @@ -143608,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{ @@ -145390,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; @@ -145775,7 +145955,7 @@ dir = 4; icon_state = "darkblue" }, -/area/chapel/main) +/area/chapel/massdriver) "vsi" = ( /obj/structure/cable, /obj/machinery/power/apc{ @@ -145952,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 @@ -146107,7 +146290,7 @@ dir = 5; icon_state = "vault" }, -/area/chapel/main) +/area/chapel/massdriver) "vuR" = ( /obj/machinery/light{ dir = 1; @@ -146603,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, @@ -147298,7 +147475,7 @@ dir = 4; icon_state = "darkblue" }, -/area/chapel/main) +/area/chapel/massdriver) "vEi" = ( /obj/structure/grille/broken, /obj/machinery/light/small{ @@ -147497,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 @@ -148689,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" @@ -150239,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" @@ -151796,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, @@ -152138,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, @@ -152644,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) @@ -153169,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"; @@ -154012,7 +154171,7 @@ /turf/simulated/floor/plasteel{ icon_state = "cult" }, -/area/chapel/office) +/area/chapel/morgue) "wBS" = ( /obj/structure/cable{ icon_state = "4-8" @@ -154232,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 @@ -154239,7 +154408,7 @@ /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/chapel/main) +/area/chapel/massdriver) "wDT" = ( /obj/structure/cable{ d1 = 4; @@ -155539,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, @@ -155764,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) @@ -156580,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"; @@ -157072,7 +157251,7 @@ dir = 5; icon_state = "darkblue" }, -/area/chapel/main) +/area/chapel/massdriver) "xaK" = ( /obj/machinery/alarm{ dir = 8; @@ -158947,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" @@ -159620,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{ @@ -161021,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 @@ -161085,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 @@ -161585,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{ @@ -162460,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{ @@ -162488,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 }, @@ -163344,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 @@ -164167,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 @@ -164949,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, @@ -187293,7 +187549,7 @@ xYq qGf bHf aWy -ugu +pGo fDG fDG fDG @@ -189856,12 +190112,12 @@ jvn tdr clY qcI -lxy -nrr -kOr -kOr -lzn -bil +txj +xqb +mRP +mRP +xFq +cZo nEG hya fXb @@ -190118,13 +190374,13 @@ qRz eri fcC hPA -iza -vOz -epN -epN -mND -epN -nBP +uNu +fCz +cgR +cgR +aAP +cgR +xFT qgs rOG ieh @@ -190674,7 +190930,7 @@ tkq bje mKV bvT -hdq +gbK bje tkq tkq @@ -195572,7 +195828,7 @@ tkq tkq tkq dTS -hOz +lSD fDj iBU aHe @@ -198142,7 +198398,7 @@ tkq tkq tkq dTS -hOz +lSD tlq xTw hhx @@ -198364,7 +198620,7 @@ wqw uVH hQo jlb -rzi +wrr iuU tYL cod @@ -203010,7 +203266,7 @@ tkq bje vFC bvT -vFN +fgL bje tkq tkq @@ -251830,15 +252086,15 @@ xWH cCL dlD trZ -cXR +xzQ kYp lRi -wot +vTl gcH -hqo -lRi -nOM bmP +lRi +kYp +xzQ rAz dlD gIB @@ -252608,8 +252864,8 @@ vTl vZU hqo lRi -nOM -cDr +kYp +uWF tNj dlD pvc @@ -254363,7 +254619,7 @@ ozQ kux ozQ ozQ -fkL +rcy ozQ ozQ ozQ @@ -254962,7 +255218,7 @@ ieI gtF otn kZy -wUw +lLc chE ddQ bbZ @@ -255392,8 +255648,8 @@ lVZ wdp ozQ pLK -jOe -loQ +rAR +jfC lnp qIY tHo @@ -255476,7 +255732,7 @@ orm kfz xKb thB -wre +nwA xic ddQ oqM @@ -256502,7 +256758,7 @@ btM syu gVD bbZ -wre +jQq mVH bRV wre @@ -257019,7 +257275,7 @@ awC xRZ pWi wUw -wre +jQq ihn xXG aiQ @@ -257277,7 +257533,7 @@ xRZ wre wCs rhi -wUw +tbV uhC cPv tUk @@ -257791,7 +258047,7 @@ hoH mTa mqL jYH -wre +jQq awC ibR jAH @@ -265167,7 +265423,7 @@ qCF mXr ihk kjR -mpH +jLR tbl biB icw @@ -272131,7 +272387,7 @@ gab bkr urL iJr -jrc +vnH jrc jrc rtD @@ -273156,8 +273412,8 @@ nOX phm xxH mEB -rki -xSM +irY +ezg txh xxH eIO @@ -273923,9 +274179,9 @@ fIT ccA fIT lZs -nMr +dnh qBx -nMr +dYX nMr ojQ vLI @@ -274182,7 +274438,7 @@ nyx qIC nyx xxH -pyM +mio txh rki jYz @@ -274425,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 @@ -274682,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 @@ -274939,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 @@ -275196,7 +275452,7 @@ pTU pTU nOX jSZ -xxH +kqy aCP sEN jjV @@ -275208,9 +275464,9 @@ eSU eSU eSU eHF -eIO +bDb mhJ -eVD +ijt xZX fvc rwJ @@ -275453,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 @@ -275710,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 @@ -275967,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 @@ -276227,7 +276483,7 @@ uJG uJG uJG uJG -eVD +ijt lCs osk qRE @@ -276237,8 +276493,8 @@ qWI tns twE bDb -mhJ -eVD +wDL +ijt nJa llW yel @@ -276484,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 @@ -276750,9 +277006,9 @@ ist fzB rOT dWV -eIO +ybv mhJ -eVD +ijt mxu ubd spv @@ -276998,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 @@ -277255,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 @@ -277512,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 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/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/controllers/configuration/entries/config.dm b/code/controllers/configuration/entries/config.dm index f6570a41142..f8e12a2cabe 100644 --- a/code/controllers/configuration/entries/config.dm +++ b/code/controllers/configuration/entries/config.dm @@ -832,3 +832,6 @@ protection = CONFIG_ENTRY_LOCKED | CONFIG_ENTRY_HIDDEN /datum/config_entry/str_list/lobby_music + +/datum/config_entry/string/override_away_mission + default = null 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/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 ddc50d1f680..b9bbb005f19 100644 --- a/code/datums/rituals.dm +++ b/code/datums/rituals.dm @@ -156,7 +156,7 @@ LAZYADD(invokers_list, invoker) for(var/mob/living/carbon/human/human as anything in invokers_list) - if(!do_after(human, cast_time, ritual_object, extra_checks = CALLBACK(src, PROC_REF(action_check_contents)))) + if(!do_after(human, cast_time, ritual_object, DA_IGNORE_HELD_ITEM, extra_checks = CALLBACK(src, PROC_REF(action_check_contents)))) . = FALSE return . @@ -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 @@ -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, @@ -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 @@ -1085,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 ) @@ -1161,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, 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/game/area/ss13_areas.dm b/code/game/area/ss13_areas.dm index bd59b00b0e7..2b86eaa3fed 100644 --- a/code/game/area/ss13_areas.dm +++ b/code/game/area/ss13_areas.dm @@ -1491,6 +1491,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/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/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 e430616467b..a7af66b69be 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,25 +1931,51 @@ 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, - /obj/item/reagent_containers/glass/bottle/salicylic = 4, /obj/item/reagent_containers/glass/bottle/potassium_iodide = 3, /obj/item/reagent_containers/glass/bottle/saline = 5, - /obj/item/reagent_containers/glass/bottle/morphine = 4, /obj/item/reagent_containers/glass/bottle/ether = 4, /obj/item/reagent_containers/glass/bottle/atropine = 3, - /obj/item/reagent_containers/glass/bottle/oculine = 2, /obj/item/reagent_containers/glass/bottle/toxin = 4, /obj/item/reagent_containers/syringe/antiviral = 6, - /obj/item/reagent_containers/syringe/insulin = 6, /obj/item/reagent_containers/syringe/calomel = 10, /obj/item/reagent_containers/syringe/heparin = 4, /obj/item/reagent_containers/hypospray/autoinjector = 5, /obj/item/reagent_containers/food/pill/salbutamol = 10, - /obj/item/reagent_containers/food/pill/mannitol = 10, /obj/item/reagent_containers/food/pill/mutadone = 5, /obj/item/stack/medical/bruise_pack/advanced = 4, /obj/item/stack/medical/ointment/advanced = 4, /obj/item/stack/medical/bruise_pack = 4, - /obj/item/stack/medical/ointment = 4, /obj/item/stack/medical/splint = 4, /obj/item/reagent_containers/glass/beaker = 4, /obj/item/reagent_containers/dropper = 4, /obj/item/healthanalyzer = 4, - /obj/item/healthupgrade = 4, /obj/item/reagent_containers/hypospray/safety = 2, /obj/item/sensor_device = 2, /obj/item/pinpointer/crew = 2, /obj/item/reagent_containers/iv_bag/slime = 1) + products = list(/obj/item/reagent_containers/hypospray/autoinjector = 5, + /obj/item/stack/medical/bruise_pack = 4, /obj/item/stack/medical/ointment = 4, + /obj/item/stack/medical/bruise_pack/advanced = 4, /obj/item/stack/medical/ointment/advanced = 4, + /obj/item/stack/medical/bruise_pack/extended = 2, /obj/item/stack/medical/ointment/extended = 2, + /obj/item/stack/medical/splint = 4, + /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/healthanalyzer = 4,/obj/item/healthupgrade = 4, + /obj/item/reagent_containers/hypospray/safety = 2, /obj/item/sensor_device = 2, /obj/item/pinpointer/crew = 2, + /obj/item/reagent_containers/food/pill/mannitol = 10, /obj/item/reagent_containers/food/pill/salbutamol = 10, /obj/item/reagent_containers/food/pill/mutadone = 5, + /obj/item/reagent_containers/syringe/antiviral = 6, /obj/item/reagent_containers/syringe/calomel = 10, + /obj/item/reagent_containers/syringe/insulin = 6, /obj/item/reagent_containers/syringe/heparin = 4, + /obj/item/reagent_containers/glass/bottle/oculine = 2, /obj/item/reagent_containers/glass/bottle/epinephrine = 4, + /obj/item/reagent_containers/glass/bottle/saline = 5, /obj/item/reagent_containers/glass/bottle/charcoal = 4, + /obj/item/reagent_containers/glass/bottle/salicylic = 4, /obj/item/reagent_containers/glass/bottle/morphine = 4, /obj/item/reagent_containers/glass/bottle/ether = 4, + /obj/item/reagent_containers/glass/bottle/potassium_iodide = 3, /obj/item/reagent_containers/glass/bottle/atropine = 3, + /obj/item/reagent_containers/glass/bottle/diphenhydramine = 4, /obj/item/reagent_containers/glass/bottle/toxin = 4, + /obj/item/reagent_containers/syringe = 12, /obj/item/reagent_containers/dropper = 4, /obj/item/reagent_containers/glass/beaker = 4, + /obj/item/reagent_containers/iv_bag/slime = 1) contraband = list(/obj/item/reagent_containers/glass/bottle/sulfonal = 1, /obj/item/reagent_containers/glass/bottle/pancuronium = 1) + prices = list(/obj/item/stack/medical/bruise_pack/extended = 200, /obj/item/stack/medical/ointment/extended = 200) armor = list(melee = 50, bullet = 20, laser = 20, energy = 20, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 70) resistance_flags = FIRE_PROOF refill_canister = /obj/item/vending_refill/medical /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 +1991,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 +2015,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 +2052,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 +2079,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" @@ -1833,8 +2119,24 @@ /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 +2182,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 +2225,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 +2324,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 +2341,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 +2392,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 +2410,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 +2505,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 +2566,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 +2627,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 +2644,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 +2658,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 +2707,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 +2733,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 +2763,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 +2809,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 +2853,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 +2861,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 +2878,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 +2914,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 +2949,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 +2967,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 +2981,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 +3019,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 +3057,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 +3099,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 +3116,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 +3220,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 +3298,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 +3380,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 +3410,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 +3497,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 +3605,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 +3672,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 +3735,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 +3801,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 +3868,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 +3883,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 +3928,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 +3963,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 +4056,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 +4098,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 +4140,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 +4186,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 +4214,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 +4255,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 +4306,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 +4350,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 +4392,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 +4409,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 +4445,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 +4526,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 +4554,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 +4583,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 +4611,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 +4644,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 +4678,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 +4707,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 +4748,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 +4770,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 +4798,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 +4832,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/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 48929851b08..3d125e09060 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/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm index 4dacf7fdb14..7f6a7410bc6 100644 --- a/code/game/objects/items/stacks/medical.dm +++ b/code/game/objects/items/stacks/medical.dm @@ -238,6 +238,17 @@ return ATTACK_CHAIN_PROCEED return ..() +/obj/item/stack/medical/bruise_pack/extended + name = "extended trauma kit" + singular_name = "extended trauma kit" + desc = "An extended trauma kit for severe injuries." + icon_state = "extended_trauma_kit" + item_state = "extended_trauma_kit" + belt_icon = "advanced_trauma_kit" + heal_brute = 30 + stop_bleeding = 0 + amount = 12 + max_amount = 12 //Ointment// @@ -292,6 +303,16 @@ return ATTACK_CHAIN_PROCEED return ..() +/obj/item/stack/medical/ointment/extended + name = "extended burn kit" + singular_name = "extended burn kit" + desc = "An extended treatment kit for severe burns." + icon_state = "extended_burn_kit" + item_state = "extended_burn_kit" + belt_icon = "advanced_burn_kit" + heal_burn = 30 + amount = 12 + max_amount = 12 //Medical Herbs// /obj/item/stack/medical/bruise_pack/comfrey diff --git a/code/game/turfs/simulated/walls_indestructible.dm b/code/game/turfs/simulated/walls_indestructible.dm index f7ada6c4534..70ccfcd56a2 100644 --- a/code/game/turfs/simulated/walls_indestructible.dm +++ b/code/game/turfs/simulated/walls_indestructible.dm @@ -247,9 +247,9 @@ desc = "A cold metal wall engraved with indecipherable symbols. Studying them causes your head to pound." icon = 'icons/turf/walls/cult_wall.dmi' icon_state = "cult" - smooth = SMOOTH_BITMASK + smooth = NONE canSmoothWith = null - smoothing_groups = NONE + smoothing_groups = null /turf/simulated/wall/indestructible/mineral_rock diff --git a/code/game/turfs/simulated/walls_misc.dm b/code/game/turfs/simulated/walls_misc.dm index 65deec2e08f..6b58a40ad1c 100644 --- a/code/game/turfs/simulated/walls_misc.dm +++ b/code/game/turfs/simulated/walls_misc.dm @@ -4,6 +4,7 @@ icon = 'icons/turf/walls/cult_wall.dmi' icon_state = "cult" canSmoothWith = null + smoothing_groups = null smooth = NONE sheet_type = /obj/item/stack/sheet/runed_metal sheet_amount = 1 @@ -16,6 +17,7 @@ icon = 'icons/turf/walls/cult_wall.dmi' icon_state = "cult" canSmoothWith = null + smoothing_groups = null smooth = NONE sheet_type = /obj/item/stack/sheet/runed_metal_fake sheet_amount = 1 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/space_ninja/ninja_shuttle.dm b/code/modules/antagonists/space_ninja/ninja_shuttle.dm index 32a38a7411b..a50e3e763cf 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/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/awaymissions/zlevel.dm b/code/modules/awaymissions/zlevel.dm index aa48e50a3a6..1c70e2cda52 100644 --- a/code/modules/awaymissions/zlevel.dm +++ b/code/modules/awaymissions/zlevel.dm @@ -14,12 +14,15 @@ GLOBAL_LIST_INIT(potentialRandomZlevels, generateMapList(filename = "config/away T.ChangeTurf(T.baseturf) /proc/loadAwayLevel() - if(!GLOB.potentialRandomZlevels || !GLOB.potentialRandomZlevels.len) + if((!GLOB.potentialRandomZlevels || !GLOB.potentialRandomZlevels.len) && !CONFIG_GET(string/override_away_mission)) log_startup_progress_global("Mapping", "No away missions found.") return var/watch = start_watch() log_startup_progress_global("Mapping", "Loading away mission...") - var/map = pick(GLOB.potentialRandomZlevels) + var/map = !CONFIG_GET(string/override_away_mission) ? pick(GLOB.potentialRandomZlevels) : CONFIG_GET(string/override_away_mission) + if(CONFIG_GET(string/override_away_mission)) + log_startup_progress_global("Mapping", "Away mission overridden by configuration to [CONFIG_GET(string/override_away_mission)].") + var/file = wrap_file(map) var/bounds = GLOB.maploader.load_map(file, 1, 1, 1, shouldCropMap = FALSE, measureOnly = TRUE) var/total_z = bounds[MAP_MAXZ] - bounds[MAP_MINZ] + 1 diff --git a/code/modules/clothing/gloves/miscellaneous.dm b/code/modules/clothing/gloves/miscellaneous.dm index 1c051689a33..ac3749345c2 100644 --- a/code/modules/clothing/gloves/miscellaneous.dm +++ b/code/modules/clothing/gloves/miscellaneous.dm @@ -62,7 +62,7 @@ min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT resistance_flags = NONE - armor = list("melee" = 15, "bullet" = 25, "laser" = 15, "energy" = 15, "bomb" = 20, "bio" = 10, "rad" = 0, "fire" = 0, "acid" = 0) + armor = list("melee" = 25, "bullet" = 30, "laser" = 20, "energy" = 25, "bomb" = 35, "bio" = 10, "rad" = 0, "fire" = 0, "acid" = 0) /obj/item/clothing/gloves/botanic_leather desc = "These leather gloves protect against thorns, barbs, prickles, spikes and other harmful objects of floral origin." diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm index cc5bd1bacea..56db1c4aadf 100644 --- a/code/modules/clothing/head/helmet.dm +++ b/code/modules/clothing/head/helmet.dm @@ -317,7 +317,7 @@ desc = "An intimidating tribal helmet, it doesn't look very comfortable." flags_inv = parent_type::flags_inv|HIDEMASK|HIDENAME flags_cover = HEADCOVERSEYES - armor = list("melee" = 35, "bullet" = 25, "laser" = 25, "energy" = 10, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50) + armor = list("melee" = 45, "bullet" = 30, "laser" = 30, "energy" = 20, "bomb" = 40, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50) icon_state = "skull" item_state = "skull" strip_delay = 100 @@ -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/miscellaneous.dm b/code/modules/clothing/masks/miscellaneous.dm index 809fb5ff783..3993acea1cc 100644 --- a/code/modules/clothing/masks/miscellaneous.dm +++ b/code/modules/clothing/masks/miscellaneous.dm @@ -480,6 +480,30 @@ 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 51f3161fb41..e17f94aa6a6 100644 --- a/code/modules/clothing/shoes/miscellaneous.dm +++ b/code/modules/clothing/shoes/miscellaneous.dm @@ -417,7 +417,7 @@ desc = "These wraps, made from goliath hide, make your feet feel snug and secure, while still being breathable and light." icon_state = "footwraps_goliath" item_state = "footwraps_goliath" - armor = list("melee" = 5, "bullet" = 5, "laser" = 10, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 10, "acid" = 0) + armor = list("melee" = 10, "bullet" = 10, "laser" = 15, "energy" = 5, "bomb" = 10, "bio" = 0, "rad" = 0, "fire" = 10, "acid" = 0) resistance_flags = FIRE_PROOF paintable = FALSE diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index 90ba49e6345..32abf1fb95c 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -639,7 +639,7 @@ item_state = "goliath_cloak" desc = "A staunch, practical cape made out of numerous monster materials, it is coveted amongst exiles & hermits." allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/pickaxe, /obj/item/twohanded/spear, /obj/item/organ/internal/regenerative_core/legion, /obj/item/kitchen/knife/combat/survival, /obj/item/twohanded/kinetic_crusher, /obj/item/hierophant_club, /obj/item/twohanded/fireaxe/boneaxe) - armor = list("melee" = 35, "bullet" = 10, "laser" = 25, "energy" = 10, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 60, "acid" = 60) //a fair alternative to bone armor, requiring alternative materials and gaining a suit slot + armor = list("melee" = 40, "bullet" = 15, "laser" = 30, "energy" = 15, "bomb" = 35, "bio" = 0, "rad" = 0, "fire" = 60, "acid" = 60) //a fair alternative to bone armor, requiring alternative materials and gaining a suit slot hoodtype = /obj/item/clothing/head/hooded/goliath body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS @@ -648,7 +648,7 @@ icon_state = "golhood" item_state = "golhood" desc = "A protective & concealing hood." - armor = list("melee" = 35, "bullet" = 10, "laser" = 25, "energy" = 10, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 60, "acid" = 60) + armor = list("melee" = 40, "bullet" = 15, "laser" = 30, "energy" = 15, "bomb" = 35, "bio" = 0, "rad" = 0, "fire" = 60, "acid" = 60) flags_inv = HIDEHAIR flags_cover = HEADCOVERSEYES @@ -682,7 +682,7 @@ icon_state = "bonearmor" item_state = "bonearmor" blood_overlay_type = "armor" - armor = list("melee" = 35, "bullet" = 25, "laser" = 25, "energy" = 10, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50) + armor = list("melee" = 45, "bullet" = 30, "laser" = 30, "energy" = 20, "bomb" = 40, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50) allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/pickaxe, /obj/item/twohanded/spear, /obj/item/organ/internal/regenerative_core/legion, /obj/item/kitchen/knife/combat/survival, /obj/item/twohanded/kinetic_crusher, /obj/item/hierophant_club, /obj/item/twohanded/fireaxe/boneaxe) body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS sprite_sheets = list( 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/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/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/equipment/explorer_gear.dm b/code/modules/mining/equipment/explorer_gear.dm index 82abf5c9b97..3650601de72 100644 --- a/code/modules/mining/equipment/explorer_gear.dm +++ b/code/modules/mining/equipment/explorer_gear.dm @@ -223,7 +223,7 @@ allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/pickaxe, /obj/item/twohanded/spear, /obj/item/organ/internal/regenerative_core/legion, /obj/item/kitchen/knife/combat/survival, /obj/item/twohanded/kinetic_crusher, /obj/item/hierophant_club, /obj/item/twohanded/fireaxe/boneaxe) icon_state = "pathcloak" item_state = "pathcloak" - armor = list("melee" = 35, "bullet" = 35, "laser" = 35, "energy" = 35, "bomb" = 50, "bio" = 100, "rad" = 50, "fire" = 50, "acid" = 50) + armor = list("melee" = 40, "bullet" = 40, "laser" = 40, "energy" = 40, "bomb" = 60, "bio" = 100, "rad" = 50, "fire" = 50, "acid" = 50) resistance_flags = FIRE_PROOF body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT @@ -253,7 +253,7 @@ body_parts_covered = HEAD flags_inv = HIDEHAIR flags_cover = HEADCOVERSEYES - armor = list("melee" = 35, "bullet" = 35, "laser" = 35, "energy" = 35, "bomb" = 50, "bio" = 100, "rad" = 50, "fire" = 50, "acid" = 50) + armor = list("melee" = 40, "bullet" = 40, "laser" = 40, "energy" = 40, "bomb" = 60, "bio" = 100, "rad" = 50, "fire" = 50, "acid" = 50) resistance_flags = FIRE_PROOF min_cold_protection_temperature = FIRE_HELM_MIN_TEMP_PROTECT max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT 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/colossus_loot.dm b/code/modules/mining/lavaland/loot/colossus_loot.dm index 88e8c24624b..2fe4ec95358 100644 --- a/code/modules/mining/lavaland/loot/colossus_loot.dm +++ b/code/modules/mining/lavaland/loot/colossus_loot.dm @@ -322,7 +322,7 @@ activation_sound = 'sound/magic/timeparadox2.ogg' var/list/banned_items_typecache = list(/obj/item/storage, /obj/item/implant, /obj/item/implanter, /obj/item/disk/nuclear, /obj/item/projectile, /obj/item/spellbook, /obj/item/clothing/mask/facehugger, /obj/item/contractor_uplink, - /obj/item/dice/d20/fate, /obj/item/gem, /obj/item/guardiancreator) + /obj/item/dice/d20/fate, /obj/item/gem, /obj/item/guardiancreator, /obj/item/dna_upgrader) /obj/machinery/anomalous_crystal/refresher/New() ..() diff --git a/code/modules/mining/lavaland/loot/tendril_loot.dm b/code/modules/mining/lavaland/loot/tendril_loot.dm index 21d4e613711..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 = "Somehow, it's in two places at once." + 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) - to_chat(usr, span_warning("Yo dawg, and how are you going to do it?")) + balloon_alert(usr, "невозможно!") return FALSE return ..() @@ -21,7 +29,15 @@ //External /obj/item/shared_storage name = "paradox bag" - desc = "Somehow, it's in two places at once." + 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 = "An ancient tome written in countless tongues." + 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] suddenly stops, releasing [src].")) - to_chat(user, span_warning("You don't know what a book is or what to do with it.")) + user.visible_message( + span_notice("[user] внезапно останавлива[pluralize_ru(user, "ет", "ют")]ся, недоумённо глядя на [declent_ru(GENITIVE)]."), + span_warning("Вы понятия не имеете, что это такое и что с этим делать.") + ) + return - to_chat(user, "You flip through the pages of the book, quickly and conveniently learning every language in existence. Somewhat less conveniently, the aging book crumbles to dust in the process. Whoops.") + 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 = "A flask with an almost-holy aura emitting from it. The label on the bottle says: 'erqo'hyy tvi'rf lbh jv'atf'." + 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 = "Strange mutagenic compound of unknown origins." + 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, "This item is currently non-functional.") + 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, "You feel nothing but a terrible aftertaste.") + to_chat(H, span_notice("Кроме отвратительного послевкусия у вас во рту, вы ничего не почувствовали.")) return ..() - to_chat(H, "A terrible pain travels down your back as wings burst out!") + 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) @@ -172,7 +207,15 @@ /obj/item/jacobs_ladder name = "jacob's ladder" - desc = "A celestial ladder that violates the laws of physics." + 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, "You unfold the ladder. It extends much farther than you were expecting.") + 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)) @@ -195,12 +238,27 @@ // Inherit from unbreakable but don't set ID, to suppress the default Z linkage /obj/structure/ladder/unbreakable/jacob name = "jacob's ladder" - desc = "An indestructible celestial ladder that violates the laws of physics." - + desc = "Нерушимая небесная лестница, нарушающая законы физики." + ru_names = list( + NOMINATIVE = "лестница Иакова", + GENITIVE = "лестницы Иакова", + DATIVE = "лестнице Иакова", + ACCUSATIVE = "лестницу Иакова", + INSTRUMENTAL = "лестницей Иакова", + PREPOSITIONAL = "лестнице Иакова" + ) //Wisp Lantern /obj/item/wisp_lantern name = "spooky lantern" - desc = "This lantern gives off no light, but is home to a friendly wisp." + 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) - to_chat(user, "The wisp has gone missing!") + 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, "You release the wisp. It begins to bob around your head.") + 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() - to_chat(user, "The wisp enhances your vision.") SSblackbox.record_feedback("tally", "wisp_lantern", 1, "Freed") // freed else UnregisterSignal(user, COMSIG_MOB_UPDATE_SIGHT) - to_chat(user, "You return the wisp to the lantern.") + balloon_alert("дух возвращён") wisp.stop_orbit() wisp.forceMove(src) set_light_on(TRUE) user.update_sight() - to_chat(user, "Your vision returns to normal.") 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] has a sad feeling for a moment, then it passes.") + 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 = "Happy to light your way." + desc = "Счастливо освещает вам путь." + ru_names = list( + NOMINATIVE = "дружелюбный дух", + GENITIVE = "дружелюбного духа", + DATIVE = "дружелюбному духу", + ACCUSATIVE = "дружелюбного духа", + INSTRUMENTAL = "дружелюбным духом", + PREPOSITIONAL = "дружелюбном духе" + ) icon = 'icons/obj/lighting.dmi' icon_state = "orb" light_range = 7 @@ -282,7 +346,15 @@ //Red/Blue Cubes /obj/item/warp_cube name = "blue cube" - desc = "A mysterious 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) - to_chat(user, "[src] fizzles uselessly.") + balloon_alert(user, "куб искрится и шипит") return if(is_in_teleport_proof_area(user) || is_in_teleport_proof_area(linked)) - to_chat(user, "[src] sparks and fizzles.") + 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 - to_chat(user, "You need to hold still to use [src].") + balloon_alert(user, "прервано из-за движения") /obj/item/warp_cube/red name = "red cube" - desc = "A mysterious red cube." + desc = "Мистический красный куб." + ru_names = list( + NOMINATIVE = "красный куб", + GENITIVE = "красного куба", + DATIVE = "красному кубу", + ACCUSATIVE = "красный куб", + INSTRUMENTAL = "красным кубом", + PREPOSITIONAL = "красном кубе" + ) icon_state = "red_cube" /obj/item/warp_cube/red/New() @@ -332,7 +412,15 @@ /obj/item/gun/magic/hook name = "meat hook" - desc = "Mid or feed." + 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 = "a hook." + 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] is snagged by [firer]'s hook!") + 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 = "A dread talisman that can render you completely invulnerable." + 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)) - to_chat(user, span_warning("[src] is still recharging.")) + 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] vanishes from reality, leaving a a hole in [user.p_their()] place!")) + 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 = "It's shaped an awful lot like [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)) @@ -438,7 +542,7 @@ user.remove_traits(list(TRAIT_NO_TRANSFORM, TRAIT_GODMODE), UNIQUE_TRAIT_SOURCE(src)) user.forceMove(effect_turf) - user.visible_message(span_danger("[user] pops back into reality!")) + 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..12a1ec2fb79 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,9 +189,13 @@ // 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) + COOLDOWN_RESET(src, messages_cooldown) send_console_message() message_sent = TRUE @@ -484,7 +491,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 d5f7031309d..e1d9a031e38 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") @@ -28,7 +28,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 @@ -115,7 +115,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. @@ -125,11 +125,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' @@ -165,15 +165,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]]") @@ -292,7 +292,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. @@ -303,23 +303,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( @@ -366,7 +366,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) @@ -377,7 +377,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) @@ -398,7 +398,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) @@ -412,45 +412,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 @@ -460,17 +460,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 @@ -483,12 +484,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) @@ -498,16 +499,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) @@ -530,8 +534,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() @@ -572,9 +576,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. @@ -700,15 +704,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) @@ -719,14 +723,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) @@ -760,7 +764,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. @@ -770,7 +774,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++ @@ -831,7 +835,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() @@ -866,18 +870,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) @@ -902,7 +906,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) @@ -927,7 +931,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 @@ -1003,7 +1007,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() @@ -1064,7 +1068,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) @@ -1085,7 +1089,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() @@ -1162,10 +1166,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 @@ -1173,16 +1177,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 @@ -1203,7 +1207,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) @@ -1212,7 +1216,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) @@ -1255,19 +1259,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]") @@ -1372,7 +1376,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 @@ -1386,6 +1390,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) @@ -1393,7 +1398,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/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/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/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm index a851ee2abfc..7cdcd84ac49 100644 --- a/code/modules/paperwork/photocopier.dm +++ b/code/modules/paperwork/photocopier.dm @@ -623,7 +623,7 @@ toner = 0 /obj/machinery/photocopier/MouseDrop_T(mob/target, mob/living/user) - if(!istype(target) || target.buckled || get_dist(user, src) > 1 || get_dist(user, target) > 1 || user.incapacitated() || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED) || isAI(user) || target == copymob) + if(!istype(target) || target.buckled || get_dist(user, src) > 1 || get_dist(user, target) > 1 || user.incapacitated() || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED) || isAI(user)) return if(check_mob()) //is target mob or another mob on this photocopier already? return 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..34ce99b0a15 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,25 @@ 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.update_programs(null) + 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/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/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/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm index 690204ef1ca..0e4e967da1a 100755 --- a/code/modules/recycling/sortingmachinery.dm +++ b/code/modules/recycling/sortingmachinery.dm @@ -21,6 +21,8 @@ var/turf/our_turf = get_turf(src) for(var/atom/movable/thing as anything in contents) thing.forceMove(our_turf) + qdel(thing) + wrapped = null return ..() 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 2419f889047..9e5855e8de9 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 4eacc7768a4..acb5ccfd3d3 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 13df1f46e27..9ca4a6711bd 100644 --- a/code/modules/surgery/organs/organ_internal.dm +++ b/code/modules/surgery/organs/organ_internal.dm @@ -14,10 +14,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 3c2fab540af..bca18167b59 100644 --- a/config/example/config.txt +++ b/config/example/config.txt @@ -733,6 +733,9 @@ DEFAULT_MAP /datum/map/cyberiad ## Override server map by specified, uncomment to apply # OVERRIDE_MAP /datum/map/delta +## Override away mission map. Spawns it even if it is not mentioned in away_mission_config.txt +# OVERRIDE_AWAY_MISSION _maps/map_files/RandomZLevels/academy.dmm + ## Minimum number of space ruins levels to generate EXTRA_SPACE_RUIN_LEVELS_MIN 4 diff --git a/icons/mob/clothing/eyes.dmi b/icons/mob/clothing/eyes.dmi index 51663306455..8e4c4ee2408 100644 Binary files a/icons/mob/clothing/eyes.dmi and b/icons/mob/clothing/eyes.dmi differ diff --git a/icons/mob/clothing/head.dmi b/icons/mob/clothing/head.dmi index 88b6f5bd058..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 be1c5fb2feb..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/eyes.dmi b/icons/mob/clothing/species/grey/eyes.dmi index f11289d5700..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/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/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/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 05d6662faea..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 4e4ab983ae0..5ec191fa64b 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 c5c8947b7e7..847c72ff7c1 100755 Binary files a/icons/mob/inhands/items_righthand.dmi and b/icons/mob/inhands/items_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 8c295e91da4..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/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/items.dmi b/icons/obj/items.dmi index c0a9462559a..f5191611985 100644 Binary files a/icons/obj/items.dmi and b/icons/obj/items.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/turf/walls/cult_wall.dmi b/icons/turf/walls/cult_wall.dmi index 5a6eb8618a4..3022f705153 100644 Binary files a/icons/turf/walls/cult_wall.dmi and b/icons/turf/walls/cult_wall.dmi differ diff --git a/paradise.dme b/paradise.dme index 0eb2f3b8c43..9c7f7e63ae0 100644 --- a/paradise.dme +++ b/paradise.dme @@ -39,7 +39,6 @@ #include "code\__DEFINES\blob.dm" #include "code\__DEFINES\borer.dm" #include "code\__DEFINES\bots.dm" -#include "code\__DEFINES\rituals.dm" #include "code\__DEFINES\byond_tracy.dm" #include "code\__DEFINES\callbacks.dm" #include "code\__DEFINES\cargo_quests.dm" @@ -115,6 +114,8 @@ #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" #include "code\__DEFINES\rust_g.dm" @@ -368,7 +369,6 @@ #include "code\controllers\subsystem\tickets\mentor_tickets.dm" #include "code\controllers\subsystem\tickets\tickets.dm" #include "code\datums\action.dm" -#include "code\datums\rituals.dm" #include "code\datums\ai_law_sets.dm" #include "code\datums\ai_laws.dm" #include "code\datums\armor.dm" @@ -404,6 +404,7 @@ #include "code\datums\radio.dm" #include "code\datums\recipe.dm" #include "code\datums\revision.dm" +#include "code\datums\rituals.dm" #include "code\datums\ruins.dm" #include "code\datums\shuttles.dm" #include "code\datums\snake_fashion.dm" @@ -446,7 +447,6 @@ #include "code\datums\components\conveyor_movement.dm" #include "code\datums\components\cross_shock.dm" #include "code\datums\components\decal.dm" -#include "code\datums\components\ritual_object.dm" #include "code\datums\components\defibrillator.dm" #include "code\datums\components\drift.dm" #include "code\datums\components\ducttape.dm" @@ -465,6 +465,7 @@ #include "code\datums\components\persistent_overlay.dm" #include "code\datums\components\proximity_monitor.dm" #include "code\datums\components\radioactivity.dm" +#include "code\datums\components\ritual_object.dm" #include "code\datums\components\shielded.dm" #include "code\datums\components\slippery.dm" #include "code\datums\components\spawner.dm" @@ -2784,6 +2785,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" @@ -3141,7 +3144,6 @@ #include "code\modules\tgui\plugins\modal.dm" #include "code\modules\tgui\states\admin.dm" #include "code\modules\tgui\states\always.dm" -#include "code\modules\tgui\states\range.dm" #include "code\modules\tgui\states\conscious.dm" #include "code\modules\tgui\states\contained.dm" #include "code\modules\tgui\states\deep_inventory.dm" @@ -3153,6 +3155,7 @@ #include "code\modules\tgui\states\notcontained.dm" #include "code\modules\tgui\states\observer.dm" #include "code\modules\tgui\states\physical.dm" +#include "code\modules\tgui\states\range.dm" #include "code\modules\tgui\states\self.dm" #include "code\modules\tgui\states\strippable_state.dm" #include "code\modules\tgui\states\zlevel.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 && ( -
+