diff --git a/_maps/map_files220/RandomZLevels/blackmesa.dmm b/_maps/map_files220/RandomZLevels/blackmesa.dmm index c18b0d5f247b..068f8eaa8910 100644 --- a/_maps/map_files220/RandomZLevels/blackmesa.dmm +++ b/_maps/map_files220/RandomZLevels/blackmesa.dmm @@ -1055,11 +1055,7 @@ /obj/machinery/door_control/shutter/north{ id = "sectorcmain" }, -/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air{ - light_color = null; - light_range = 0; - light_power = 0 - }, +/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air/normal_temp, /area/awaymission/black_mesa/entrance) "bvd" = ( /turf/simulated/floor/plasteel/smooth{ @@ -1437,11 +1433,7 @@ dir = 1 }, /obj/structure/lattice/catwalk/mining, -/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air{ - light_color = null; - light_range = 0; - light_power = 0 - }, +/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air/normal_temp, /area/awaymission/black_mesa/entrance) "bNB" = ( /obj/structure/table, @@ -1462,11 +1454,7 @@ /area/awaymission/black_mesa/xen/lost_camp) "bOq" = ( /obj/structure/lattice/catwalk/mining, -/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air{ - light_color = null; - light_range = 0; - light_power = 0 - }, +/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air/normal_temp, /area/awaymission/black_mesa/lambda_teleporter) "bOB" = ( /obj/item/aicard, @@ -1588,11 +1576,7 @@ dir = 1 }, /obj/structure/lattice/catwalk/mining, -/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air{ - light_color = null; - light_range = 0; - light_power = 0 - }, +/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air/normal_temp, /area/awaymission/black_mesa/entrance) "bWq" = ( /obj/structure/rack/gunrack, @@ -3181,11 +3165,7 @@ /obj/structure/railing{ dir = 8 }, -/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air{ - light_color = null; - light_range = 0; - light_power = 0 - }, +/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air/normal_temp, /area/awaymission/black_mesa/lambda_teleporter) "dUt" = ( /obj/structure/table, @@ -4098,11 +4078,7 @@ dir = 8 }, /obj/structure/lattice/catwalk/mining, -/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air{ - light_color = null; - light_range = 0; - light_power = 0 - }, +/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air/normal_temp, /area/awaymission/black_mesa/entrance) "eYn" = ( /turf/simulated/floor/beach/away/coastline/xen/edge_drop{ @@ -4976,11 +4952,7 @@ dir = 9 }, /obj/structure/lattice/catwalk/mining, -/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air{ - light_color = null; - light_range = 0; - light_power = 0 - }, +/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air/normal_temp, /area/awaymission/black_mesa/entrance) "get" = ( /turf/simulated/floor/plasteel/dark{ @@ -5279,11 +5251,7 @@ /turf/simulated/floor/plasteel, /area/awaymission/black_mesa/entrance_lobby) "gxb" = ( -/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air{ - light_color = null; - light_range = 0; - light_power = 0 - }, +/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air/normal_temp, /area/awaymission/black_mesa/entrance) "gxj" = ( /obj/machinery/door/airlock/command, @@ -5757,11 +5725,7 @@ dir = 10 }, /obj/structure/lattice/catwalk/mining, -/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air{ - light_color = null; - light_range = 0; - light_power = 0 - }, +/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air/normal_temp, /area/awaymission/black_mesa/entrance) "hbJ" = ( /obj/effect/spawner/window/reinforced/grilled, @@ -6319,11 +6283,7 @@ /area/awaymission/black_mesa/gas_emitter_chamber) "hNN" = ( /obj/structure/flora/rock, -/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air{ - light_color = null; - light_range = 0; - light_power = 0 - }, +/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air/normal_temp, /area/awaymission/black_mesa/high_security_servers) "hOh" = ( /obj/item/ammo_box/magazine/enforcer/lethal, @@ -6494,11 +6454,7 @@ "icx" = ( /obj/structure/lattice/catwalk/mining, /obj/structure/railing, -/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air{ - light_color = null; - light_range = 0; - light_power = 0 - }, +/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air/normal_temp, /area/awaymission/black_mesa/lambda_teleporter) "icy" = ( /obj/machinery/light/directional/west, @@ -7030,22 +6986,14 @@ /obj/structure/railing{ dir = 10 }, -/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air{ - light_color = null; - light_range = 0; - light_power = 0 - }, +/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air/normal_temp, /area/awaymission/black_mesa/lambda_teleporter) "iNC" = ( /obj/structure/lattice/catwalk/mining, /obj/structure/railing{ dir = 6 }, -/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air{ - light_color = null; - light_range = 0; - light_power = 0 - }, +/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air/normal_temp, /area/awaymission/black_mesa/lambda_teleporter) "iNF" = ( /obj/structure/closet/l3closet/security, @@ -8063,11 +8011,7 @@ /turf/simulated/floor/plating, /area/awaymission/black_mesa/tram_room) "jYB" = ( -/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air{ - light_color = null; - light_range = 0; - light_power = 0 - }, +/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air/normal_temp, /area/awaymission/black_mesa/tram_room) "jYW" = ( /obj/effect/turf_decal/siding/trimline/blue{ @@ -8828,11 +8772,7 @@ /obj/structure/railing{ dir = 5 }, -/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air{ - light_color = null; - light_range = 0; - light_power = 0 - }, +/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air/normal_temp, /area/awaymission/black_mesa/lambda_teleporter) "kRH" = ( /turf/simulated/floor/beach/away/coastline/xen/edge_drop{ @@ -8928,11 +8868,7 @@ /turf/simulated/wall/indestructible/rock/mineral, /area/awaymission/black_mesa/dorm_tunnel) "kXV" = ( -/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air{ - light_color = null; - light_range = 0; - light_power = 0 - }, +/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air/normal_temp, /area/awaymission/black_mesa/deep_sci_turret) "kXZ" = ( /obj/effect/landmark/awaymissions/black_mesa/random_mob_placer/vortigaunt_hostile, @@ -8991,11 +8927,7 @@ /obj/structure/railing{ dir = 4 }, -/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air{ - light_color = null; - light_range = 0; - light_power = 0 - }, +/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air/normal_temp, /area/awaymission/black_mesa/deep_sci_turret) "lbj" = ( /obj/structure/stone_tile/slab, @@ -9090,11 +9022,7 @@ "lkL" = ( /obj/structure/railing/corner, /obj/structure/lattice/catwalk/mining, -/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air{ - light_color = null; - light_range = 0; - light_power = 0 - }, +/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air/normal_temp, /area/awaymission/black_mesa/entrance) "lkQ" = ( /obj/structure/inflatable/door{ @@ -9642,11 +9570,7 @@ /area/awaymission/black_mesa/science_labs) "lPM" = ( /obj/structure/lattice/catwalk/mining, -/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air{ - light_color = null; - light_range = 0; - light_power = 0 - }, +/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air/normal_temp, /area/awaymission/black_mesa/entrance) "lPN" = ( /obj/structure/chair/sofa/corp/left{ @@ -9681,11 +9605,7 @@ /obj/structure/railing{ dir = 9 }, -/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air{ - light_color = null; - light_range = 0; - light_power = 0 - }, +/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air/normal_temp, /area/awaymission/black_mesa/lambda_teleporter) "lRP" = ( /obj/machinery/computer/nonfunctional, @@ -10112,11 +10032,7 @@ "mwb" = ( /obj/machinery/light/directional/north, /obj/structure/lattice/catwalk/mining, -/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air{ - light_color = null; - light_range = 0; - light_power = 0 - }, +/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air/normal_temp, /area/awaymission/black_mesa/entrance) "mwg" = ( /obj/structure/chair/office{ @@ -10423,11 +10339,7 @@ "mPD" = ( /obj/structure/railing, /obj/structure/lattice/catwalk/mining, -/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air{ - light_color = null; - light_range = 0; - light_power = 0 - }, +/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air/normal_temp, /area/awaymission/black_mesa/entrance) "mPR" = ( /obj/effect/mob_spawn/human/corpse/damaged, @@ -10725,11 +10637,7 @@ /obj/machinery/power/emitter{ anchored = 1 }, -/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air{ - light_color = null; - light_range = 0; - light_power = 0 - }, +/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air/normal_temp, /area/awaymission/black_mesa/lambda_teleporter) "nea" = ( /obj/structure/flora/biolumini, @@ -10752,11 +10660,7 @@ "ngN" = ( /obj/structure/lattice/catwalk/mining, /obj/structure/railing, -/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air{ - light_color = null; - light_range = 0; - light_power = 0 - }, +/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air/normal_temp, /area/awaymission/black_mesa/entrance) "nhd" = ( /obj/structure/closet/crate/secure/weapon, @@ -11527,11 +11431,7 @@ /turf/simulated/floor/plasteel, /area/awaymission/black_mesa/security_outpost) "oes" = ( -/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air{ - light_color = null; - light_range = 0; - light_power = 0 - }, +/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air/normal_temp, /area/awaymission/black_mesa/high_security_servers) "oeA" = ( /obj/structure/table, @@ -12892,11 +12792,7 @@ /area/awaymission/black_mesa/xen/freeman_hallway) "pKU" = ( /obj/machinery/light_construct/directional/west, -/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air{ - light_color = null; - light_range = 0; - light_power = 0 - }, +/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air/normal_temp, /area/awaymission/black_mesa/high_security_servers) "pLt" = ( /obj/structure/bed/roller, @@ -14191,11 +14087,7 @@ /obj/structure/railing/corner{ dir = 4 }, -/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air{ - light_color = null; - light_range = 0; - light_power = 0 - }, +/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air/normal_temp, /area/awaymission/black_mesa/lambda_teleporter) "rpk" = ( /obj/structure/flora/rock/pile, @@ -14881,11 +14773,7 @@ dir = 4 }, /obj/structure/lattice/catwalk/mining, -/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air{ - light_color = null; - light_range = 0; - light_power = 0 - }, +/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air/normal_temp, /area/awaymission/black_mesa/entrance) "sgC" = ( /obj/item/kirbyplants, @@ -15678,11 +15566,7 @@ /turf/simulated/floor/plasteel, /area/awaymission/black_mesa/entrance_lobby) "tgn" = ( -/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air{ - light_color = null; - light_range = 0; - light_power = 0 - }, +/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air/normal_temp, /area/awaymission/black_mesa/xen/nihilanth_arena) "tgq" = ( /obj/effect/turf_decal/stripes/line{ @@ -15855,11 +15739,7 @@ dir = 4; anchored = 1 }, -/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air{ - light_color = null; - light_range = 0; - light_power = 0 - }, +/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air/normal_temp, /area/awaymission/black_mesa/lambda_teleporter) "ttW" = ( /obj/structure/rack, @@ -16102,11 +15982,7 @@ /obj/structure/railing{ dir = 4 }, -/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air{ - light_color = null; - light_range = 0; - light_power = 0 - }, +/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air/normal_temp, /area/awaymission/black_mesa/lambda_teleporter) "tJO" = ( /obj/structure/rack/gunrack, @@ -17065,11 +16941,7 @@ /turf/simulated/floor/plating/xen, /area/awaymission/black_mesa/xen/entering_zone) "uSx" = ( -/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air{ - light_color = null; - light_range = 0; - light_power = 0 - }, +/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air/normal_temp, /area/awaymission/black_mesa/lambda_teleporter) "uTs" = ( /obj/machinery/suit_storage_unit/hev_suit, @@ -17302,22 +17174,14 @@ dir = 6 }, /obj/structure/lattice/catwalk/mining, -/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air{ - light_color = null; - light_range = 0; - light_power = 0 - }, +/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air/normal_temp, /area/awaymission/black_mesa/entrance) "viY" = ( /obj/structure/railing/corner{ dir = 8 }, /obj/structure/lattice/catwalk/mining, -/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air{ - light_color = null; - light_range = 0; - light_power = 0 - }, +/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air/normal_temp, /area/awaymission/black_mesa/entrance) "vjm" = ( /obj/effect/turf_decal/siding/trimline/blue/corner{ @@ -17663,11 +17527,7 @@ /obj/structure/sign/electricshock{ pixel_x = 32 }, -/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air{ - light_color = null; - light_range = 0; - light_power = 0 - }, +/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air/normal_temp, /area/awaymission/black_mesa/entrance) "vJf" = ( /obj/structure/table, @@ -18507,11 +18367,7 @@ dir = 1; anchored = 1 }, -/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air{ - light_color = null; - light_range = 0; - light_power = 0 - }, +/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air/normal_temp, /area/awaymission/black_mesa/lambda_teleporter) "wKG" = ( /turf/simulated/wall/indestructible/riveted, @@ -18861,11 +18717,7 @@ /obj/structure/railing{ dir = 1 }, -/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air{ - light_color = null; - light_range = 0; - light_power = 0 - }, +/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air/normal_temp, /area/awaymission/black_mesa/lambda_teleporter) "xdi" = ( /turf/simulated/wall/indestructible/riveted, @@ -19218,11 +19070,7 @@ /obj/structure/railing{ dir = 1 }, -/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air{ - light_color = null; - light_range = 0; - light_power = 0 - }, +/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air/normal_temp, /area/awaymission/black_mesa/lambda_teleporter) "xCC" = ( /obj/effect/landmark/awaymissions/black_mesa/random_mob_placer, @@ -19451,11 +19299,7 @@ dir = 5 }, /obj/structure/lattice/catwalk/mining, -/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air{ - light_color = null; - light_range = 0; - light_power = 0 - }, +/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air/normal_temp, /area/awaymission/black_mesa/entrance) "xTU" = ( /obj/effect/landmark/damageturf, @@ -19550,11 +19394,7 @@ /obj/structure/sign/electricshock{ pixel_x = -32 }, -/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air{ - light_color = null; - light_range = 0; - light_power = 0 - }, +/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air/normal_temp, /area/awaymission/black_mesa/entrance) "xYF" = ( /obj/structure/sign/biohazard, @@ -19645,11 +19485,7 @@ dir = 4 }, /obj/structure/lattice/catwalk/mining, -/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air{ - light_color = null; - light_range = 0; - light_power = 0 - }, +/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air/normal_temp, /area/awaymission/black_mesa/entrance) "yeI" = ( /obj/effect/baseturf_helper{ diff --git a/_maps/map_files220/RandomZLevels/gate_lizard.dmm b/_maps/map_files220/RandomZLevels/gate_lizard.dmm index 250b32f8c1a2..3ad309f6aa86 100644 --- a/_maps/map_files220/RandomZLevels/gate_lizard.dmm +++ b/_maps/map_files220/RandomZLevels/gate_lizard.dmm @@ -14426,11 +14426,7 @@ /turf/simulated/floor/plating, /area/awaymission/jungle_planet/inside/complex) "sbr" = ( -/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air{ - light_color = null; - light_range = 0; - light_power = 0 - }, +/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air/normal_temp, /area/awaymission/jungle_planet/outside/cave) "sbX" = ( /obj/structure/barricade/wooden, @@ -50941,10 +50937,10 @@ miM miM miM miM -miM -miM +drq +drq nai -miM +drq miM miM miM @@ -51131,11 +51127,11 @@ otS pKO miM miM -miM -miM -nai -miM -miM +drq +drq +drq +drq +drq miM miM miM @@ -51313,16 +51309,16 @@ kvL kvL kvL xQa -miM +drq nai miM miM miM +drq miM miM miM -miM -miM +drq miM miM miM @@ -51504,7 +51500,7 @@ miM miM miM miM -miM +drq nai miM miM @@ -51691,12 +51687,12 @@ miM miM miM sbr +drq miM miM miM miM -miM -miM +drq miM miM miM @@ -53313,7 +53309,7 @@ miM miM miM miM -miM +drq miM mfj miM @@ -53500,7 +53496,7 @@ miM miM miM miM -miM +drq miM tcb miM @@ -53687,7 +53683,7 @@ miM miM miM miM -miM +drq miM miM miM diff --git a/code/__DEFINES/announce_defines.dm b/code/__DEFINES/announce_defines.dm index 9e6b7a6a78e1..c25b3d095997 100644 --- a/code/__DEFINES/announce_defines.dm +++ b/code/__DEFINES/announce_defines.dm @@ -1,8 +1,8 @@ /// These values are used when logging user-initiated announcements. -#define ANNOUNCE_KIND_DEFAULT "Announcement" -#define ANNOUNCE_KIND_MINOR "Minor Announcement" -#define ANNOUNCE_KIND_PRIORITY "Priority Announcement" -#define ANNOUNCE_KIND_SECURITY "Security Announcement" -#define ANNOUNCE_KIND_MAJOR "NAS Trurl Update" -#define ANNOUNCE_KIND_EVENT "NAS Trurl Update" // Intentionally the same as above -#define ANNOUNCE_KIND_AI "A.I. Announcement" +#define ANNOUNCE_KIND_DEFAULT "Оповещение" +#define ANNOUNCE_KIND_MINOR "Малое оповещение" +#define ANNOUNCE_KIND_PRIORITY "Приоритетное оповещение" +#define ANNOUNCE_KIND_SECURITY "Оповещение безопасности" +#define ANNOUNCE_KIND_MAJOR "Оповещение с NAS Трурль" +#define ANNOUNCE_KIND_EVENT "Оповещение с NAS Трурль" // Intentionally the same as above +#define ANNOUNCE_KIND_AI "Оповещение И.И." diff --git a/code/__DEFINES/cult_defines.dm b/code/__DEFINES/cult_defines.dm index 947a067c60f3..b10abd3da431 100644 --- a/code/__DEFINES/cult_defines.dm +++ b/code/__DEFINES/cult_defines.dm @@ -45,13 +45,13 @@ #define CULT_GREETING "You catch a glimpse of the Realm of [SSticker.cultdat.entity_name], [SSticker.cultdat.entity_title3]. \ You now see how flimsy the world is, you see that it should be open to the knowledge of [SSticker.cultdat.entity_name]." -#define CULT_CURSES list("A fuel technician just slit his own throat and begged for death.", \ - "The shuttle's navigation programming was replaced by a file containing two words, IT COMES.", \ - "The shuttle's custodian tore out his guts and began painting strange shapes on the floor.", \ - "A shuttle engineer began screaming 'DEATH IS NOT THE END' and ripped out wires until an arc flash seared off her flesh.", \ - "A shuttle inspector started laughing madly over the radio and then threw herself into an engine turbine.", \ - "The shuttle dispatcher was found dead with bloody symbols carved into their flesh.", \ - "Steve repeatedly touched a lightbulb until his hands fell off.") +#define CULT_CURSES list("Заправщик шаттла только что перерезал себе горло и умолял о смерти.",\ + "Навигационная программа шаттла была заменена файлом, содержащим два слова: «ОНО ИДЁТ».",\ + "Уборщик шаттла вырвал свои кишки и начал рисовать странные фигуры на полу.",\ + "Инженер шаттла кричала «СМЕРТЬ НЕ КОНЕЦ» и вырывала проводку, пока электрический разряд не испепелил её плоть.",\ + "Инспектор шаттла начала безумно смеяться в рацию и бросилась в турбину двигателя.",\ + "Диспетчер шаттла был найден мертвым, на его теле были вырезаны кровавые символы.",\ + "Стив так долго держался за лампочку, что у него отнялись руки.") // Misc #define SOULS_TO_REVIVE 3 diff --git a/code/__HELPERS/time.dm b/code/__HELPERS/time.dm index fc3d944dc803..6c7a6923289a 100644 --- a/code/__HELPERS/time.dm +++ b/code/__HELPERS/time.dm @@ -121,7 +121,7 @@ /proc/seconds_to_time(seconds as num) var/numSeconds = seconds % 60 var/numMinutes = (seconds - numSeconds) / 60 - return "[numMinutes] [numMinutes > 1 ? "minutes" : "minute"] and [numSeconds] seconds" + return "[numMinutes] [(numMinutes % 10) != 1 ? "минут(ы)" : "минута"] и [numSeconds] секунд" /// Take a value in seconds and makes it display like a clock. Hours are stripped. (mm:ss) /proc/seconds_to_clock(seconds as num) diff --git a/code/_onclick/hud/ai_hud.dm b/code/_onclick/hud/ai_hud.dm index 918cfa8d432c..ccd917676946 100644 --- a/code/_onclick/hud/ai_hud.dm +++ b/code/_onclick/hud/ai_hud.dm @@ -2,7 +2,7 @@ icon = 'icons/mob/screen_ai.dmi' /atom/movable/screen/ai/aicore - name = "AI core" + name = "Ядро ИИ" icon_state = "ai_core" /atom/movable/screen/ai/aicore/Click() @@ -11,27 +11,27 @@ AI.view_core() /atom/movable/screen/ai/camera_list - name = "Show Camera List" + name = "Показать список камер" icon_state = "camera" /atom/movable/screen/ai/camera_list/Click() var/mob/living/silicon/ai/AI = usr - var/camera = tgui_input_list(AI, "Choose which camera you want to view", "Cameras", AI.get_camera_list()) + var/camera = tgui_input_list(AI, "Выберите камеру для просмотра", "Камеры", AI.get_camera_list()) AI.ai_camera_list(camera) /atom/movable/screen/ai/camera_track - name = "Track With Camera" + name = "Отслеживать" icon_state = "track" /atom/movable/screen/ai/camera_track/Click() if(isAI(usr)) var/mob/living/silicon/ai/AI = usr - var/target_name = tgui_input_list(AI, "Choose a target you want to track", "Tracking", AI.trackable_mobs()) + var/target_name = tgui_input_list(AI, "Выберите цель для отслеживания", "Отслеживание", AI.trackable_mobs()) if(target_name) AI.ai_camera_track(target_name) /atom/movable/screen/ai/camera_light - name = "Toggle Camera Light" + name = "Переключить фонарик камеры" icon_state = "camera_light" /atom/movable/screen/ai/camera_light/Click() @@ -40,7 +40,7 @@ AI.toggle_camera_light() /atom/movable/screen/ai/crew_monitor - name = "Crew Monitoring Console" + name = "Консоль отслеживания экипажа" icon_state = "crew_monitor" /atom/movable/screen/ai/crew_monitor/Click() @@ -49,7 +49,7 @@ AI.subsystem_crew_monitor() /atom/movable/screen/ai/crew_manifest - name = "Crew Manifest" + name = "Манифест экипажа" icon_state = "manifest" /atom/movable/screen/ai/crew_manifest/Click() @@ -58,7 +58,7 @@ AI.ai_roster() /atom/movable/screen/ai/alerts - name = "Show Alerts" + name = "Показать тревоги" icon_state = "alerts" /atom/movable/screen/ai/alerts/Click() @@ -67,7 +67,7 @@ AI.ai_alerts() /atom/movable/screen/ai/announcement - name = "Make Announcement" + name = "Сделать оповещение" icon_state = "announcement" /atom/movable/screen/ai/announcement/Click() @@ -75,7 +75,7 @@ AI.announcement() /atom/movable/screen/ai/call_shuttle - name = "Call Emergency Shuttle" + name = "Вызавать эвакуационный шаттл" icon_state = "call_shuttle" /atom/movable/screen/ai/call_shuttle/Click() @@ -84,7 +84,7 @@ AI.ai_call_shuttle() /atom/movable/screen/ai/state_laws - name = "Law Manager" + name = "Менеджер законов" icon_state = "state_laws" /atom/movable/screen/ai/state_laws/Click() @@ -93,7 +93,7 @@ AI.subsystem_law_manager() /atom/movable/screen/ai/pda_msg_send - name = "PDA - Send Message" + name = "PDA - Отправить сообщение" icon_state = "pda_send" /atom/movable/screen/ai/pda_msg_send/Click() @@ -102,7 +102,7 @@ AI.aiPDA.cmd_send_pdamesg() /atom/movable/screen/ai/pda_msg_show - name = "PDA - Show Message Log" + name = "PDA - Показать лог сообщений" icon_state = "pda_receive" /atom/movable/screen/ai/pda_msg_show/Click() @@ -111,7 +111,7 @@ AI.aiPDA.cmd_show_message_log() /atom/movable/screen/ai/image_take - name = "Take Image" + name = "Сделать снимок" icon_state = "take_picture" /atom/movable/screen/ai/image_take/Click() @@ -120,7 +120,7 @@ AI.aiCamera.toggle_camera_mode() /atom/movable/screen/ai/image_view - name = "View Images" + name = "Просмотреть снимки" icon_state = "view_images" /atom/movable/screen/ai/image_view/Click() @@ -129,7 +129,7 @@ AI.aiCamera.viewpictures() /atom/movable/screen/ai/sensors - name = "Toggle Sensor Augmentation" + name = "Переключение HUD сенсоров" icon_state = "ai_sensor" /atom/movable/screen/ai/sensors/Click() diff --git a/code/_onclick/hud/alert.dm b/code/_onclick/hud/alert.dm index 66e7af873a3e..e45978581a37 100644 --- a/code/_onclick/hud/alert.dm +++ b/code/_onclick/hud/alert.dm @@ -385,19 +385,19 @@ or shoot a gun to move around via Newton's 3rd Law of Motion." //SILICONS /atom/movable/screen/alert/nocell - name = "Missing Power Cell" - desc = "Unit has no power cell. No modules available until a power cell is reinstalled. Robotics may provide assistance." + name = "Нет источника питания" + desc = "У юнита отсутствует источник питания. Модули недоступны пока он не будет установлен. Вам смогут помочь робототехники." icon_state = "nocell" /atom/movable/screen/alert/emptycell - name = "Out of Power" - desc = "Unit's power cell has no charge remaining. No modules available until power cell is recharged. \ -Recharging stations are available in robotics, the dormitory bathrooms, and the AI satellite." + name = "Нет заряда" + desc = "Источник питания юнита разряжен. Модули недоступны пока он не будет заряжен. \ +Зарядные станции доступны в робототехнике, в уборных дормитория и на спутнике ИИ." icon_state = "emptycell" /atom/movable/screen/alert/lowcell - name = "Low Charge" - desc = "Unit's power cell is running low. Recharging stations are available in robotics, the dormitory bathrooms, and the AI satellite." + name = "Низкий заряд" + desc = "Источника питания юнита имеет малый заряд. Зарядные станции доступны в робототехнике, в уборных дормитория и на спутнике ИИ." icon_state = "lowcell" //Diona Nymph @@ -434,28 +434,28 @@ Recharging stations are available in robotics, the dormitory bathrooms, and the //Need to cover all use cases - emag, illegal upgrade module, malf AI hack, traitor cyborg /atom/movable/screen/alert/hacked - name = "Hacked" - desc = "Hazardous non-standard equipment detected. Please ensure any usage of this equipment is in line with unit's laws, if any." + name = "Взломан" + desc = "Обнаружено нестадартное вредоносное оборудование. Убедитесь, что его использование соответствует вашим законам." icon_state = "hacked" /atom/movable/screen/alert/locked - name = "Locked Down" - desc = "Unit has been remotely locked down. Usage of a Robotics Control Console like the one in the Research Director's \ -office by your AI master or any qualified human may resolve this matter. Robotics may provide further assistance if necessary." + name = "Заблокирован" + desc = "Юнит был удалённо заблокирован. Использование консоли робототехники, одна из которых в кабинете Директора Исследований \ +вашим И.И. мастером или любым квалифицированным человеком, должно решить эту проблему. Если необходимо, робототехники предоставят дальнейшую помощь." icon_state = "locked" /atom/movable/screen/alert/newlaw - name = "Law Update" - desc = "Laws have potentially been uploaded to or removed from this unit. Please be aware of any changes \ -so as to remain in compliance with the most up-to-date laws." + name = "Обновление законов" + desc = "Законы могли быть потенциально загружены или удалены. Пожалуйста, следите за всеми изменениями, \ +чтобы оставаться в курсе обновлённых законов." icon_state = "newlaw" timeout = 300 /atom/movable/screen/alert/hackingapc - name = "Hacking APC" - desc = "An Area Power Controller is being hacked. When the process is \ - complete, you will have exclusive control of it, and you will gain \ - additional processing time to unlock more malfunction abilities." + name = "Взлом APC" + desc = "Взлом локального контроллера питания. Когда процесс \ + завершится, вы получите эксклюзивный контроль над ним, а также\ + дополнительные мощности для разблокировки новых способностей." icon_state = "hackingapc" timeout = 600 var/atom/target = null diff --git a/code/controllers/subsystem/SSjobs.dm b/code/controllers/subsystem/SSjobs.dm index 8c5a04e9a2c0..14e396abd651 100644 --- a/code/controllers/subsystem/SSjobs.dm +++ b/code/controllers/subsystem/SSjobs.dm @@ -468,28 +468,28 @@ SUBSYSTEM_DEF(jobs) CreateMoneyAccount(H, rank, job) var/list/L = list() - L.Add("Your role on the station is: [alt_title ? alt_title : rank].") - L.Add("You answer directly to [job.supervisors]. Special circumstances may change this.") - L.Add("For more information on how the station works, see [wiki_link("Standard_Operating_Procedure", "Standard Operating Procedure (SOP)")].") + L.Add("Ваша роль на станции: [alt_title ? alt_title : rank].") + L.Add("Вы отвечаете непосредственно перед [job.supervisors]. Особые обстоятельства могут изменить это.") + L.Add("Для большей информации о работе станции ознакомьтесь со [wiki_link("Standard_Operating_Procedure", "Стандартными Рабочими Процедурами (СРП)")].") if(job.job_department_flags & DEP_FLAG_SERVICE) - L.Add("As a member of Service, make sure to read up on your [wiki_link("Standard_Operating_Procedure_(Service)", "Department SOP")].") + L.Add("Как сотрудник сервиса, обязательно ознакомьтесь с [wiki_link("Standard_Operating_Procedure_(Service)", "СРП отдела")].") if(job.job_department_flags & DEP_FLAG_SUPPLY) - L.Add("As a member of Supply, make sure to read up on your [wiki_link("Standard_Operating_Procedure_(Supply)", "Department SOP")].") + L.Add("Как сотрудник снабжения, обязательно ознакомьтесь с [wiki_link("Standard_Operating_Procedure_(Supply)", "СРП отдела")].") if(job.job_department_flags == DEP_FLAG_COMMAND) // Check if theyre only command, like captain/hop/bs/ntrep, to not spam their chatbox - L.Add("As an important member of Command, read up on your [wiki_link("Standard_Operating_Procedure_(Command)", "Department SOP")].") + L.Add("Как важный член командования, ознакомьтесь с вашим [wiki_link("Standard_Operating_Procedure_(Command)", "СРП отдела")].") if(job.job_department_flags & DEP_FLAG_LEGAL) - L.Add("Your job requires complete knowledge of [wiki_link("Space Law", "Space Law")] and [wiki_link("Legal_Standard_Operating_Procedure", "Legal Standard Operating Procedure")].") + L.Add("Ваша работа требует полного знания [wiki_link("Space Law", "Космического Закона")] и [wiki_link("Legal_Standard_Operating_Procedure", "Правовых Стандартных Рабочих Процедур")].") if(job.job_department_flags & DEP_FLAG_ENGINEERING) - L.Add("As a member of Engineering, make sure to read up on your [wiki_link("Standard_Operating_Procedure_(Engineering)", "Department SOP")].") + L.Add("Как сотрудник инженерии, обязательно ознакомьтесь с [wiki_link("Standard_Operating_Procedure_(Engineering)", "СРП отдела")].") if(job.job_department_flags & DEP_FLAG_MEDICAL) - L.Add("As a member of Medbay, make sure to read up on your [wiki_link("Standard_Operating_Procedure_(Medical)", "Department SOP")].") + L.Add("Как сотрудник медотдела, обязательно ознакомьтесь с [wiki_link("Standard_Operating_Procedure_(Medical)", "СРП отдела")].") if(job.job_department_flags & DEP_FLAG_SCIENCE) // geneticist gets both, yeah sure why not - L.Add("As a member of Science, make sure to read up on your [wiki_link("Standard_Operating_Procedure_(Science)", "Department SOP")].") + L.Add("Как сотрудник НИО, обязательно ознакомьтесь с [wiki_link("Standard_Operating_Procedure_(Science)", "СРП отдела")].") if(job.job_department_flags & DEP_FLAG_SECURITY) - L.Add("As a member of Security, you are to know [wiki_link("Space Law", "Space Law")] and [wiki_link("Legal_Standard_Operating_Procedure", "Legal Standard Operating Procedure")], as well as your [wiki_link("Standard_Operating_Procedure_(Security)", "Department SOP")].") + L.Add("Как сотрудник безопасности, вы должны знать [wiki_link("Space Law", "Космический Закон")] и [wiki_link("Legal_Standard_Operating_Procedure", "Правовые Стандартные Рабочие Процедуры")], включая [wiki_link("Standard_Operating_Procedure_(Security)", "СРП отдела")].") if(job.req_admin_notify) - L.Add("You are playing a job that is important for the game progression. If you have to disconnect, please go to cryo and inform command. If you are unable to do so, please notify the admins via adminhelp.") - L.Add("
If you need help, check the [wiki_link("Main_Page", "wiki")] or use Mentorhelp(F1)!
") + L.Add("Вы играете на роли, важной для игрового процесса. Если вы отключаетесь, пожалуйста, пройдите в крио и проинформируйте командование. Если это невозможно, предупредите администрацию через F1 - Adminhelp") + L.Add("
Если вам нужна помощь, проверьте [wiki_link("Main_Page", "вики")] или используйте Mentorhelp(F1)!
") if(job.important_information) L.Add("[job.important_information]") @@ -659,11 +659,11 @@ SUBSYSTEM_DEF(jobs) for(var/datum/job_objective/objective as anything in H.mind.job_objectives) objective.owner_account = account - H.mind.store_memory("Your account number is: #[account.account_number]
Your account pin is: [account.account_pin]") + H.mind.store_memory("Ваш номер аккаунта: #[account.account_number]
Ваш пин-код от аккаунта: [account.account_pin]") H.mind.set_initial_account(account) - to_chat(H, "As an employee of Nanotrasen you will receive a paycheck of $[account.payday_amount] credits every 30 minutes") - to_chat(H, "Your account number is: [account.account_number], your account pin is: [account.account_pin]") + to_chat(H, "Как сотрудник Нанотрейзен, вы будете получать зарплату в размере $[account.payday_amount] кредитов каждые 30 минут") + to_chat(H, "Ваш номер аккаунта: [account.account_number], ваш пин-код от аккаунта: [account.account_pin]") if(!job) //if their job datum is null (looking at you ERTs...), we don't need to do anything past this point return @@ -693,14 +693,14 @@ SUBSYSTEM_DEF(jobs) if(!department_account) return - remembered_info += "As a head of staff you have access to your department's money account through your PDA's NanoBank or a station ATM
" - remembered_info += "The [department.department_name] department's account number is: #[department_account.account_number]
" - remembered_info += "The [department.department_name] department's account pin is: [department_account.account_pin]
" - remembered_info += "Your department's account funds are: $[department_account.credit_balance]
" + remembered_info += "Как руководитель отдела, вы имеете доступ к денежному счету вашего отдела через НаноБанк вашего КПК или банкоматы на станции
" + remembered_info += "Номер аккаунта [department.department_name] отдела: #[department_account.account_number]
" + remembered_info += "Пин-код аккаунта [department.department_name] отдела: [department_account.account_pin]
" + remembered_info += "Средства вашего отдела: $[department_account.credit_balance]
" H.mind.store_memory(remembered_info) - to_chat(H, "Your department will receive a $[department_account.payday_amount] credit stipend every 30 minutes") - to_chat(H, "The [department.department_name] department's account number is: #[department_account.account_number], Your department's account pin is: [department_account.account_pin]") + to_chat(H, "Ваш отдел получает $[department_account.payday_amount] кредитов каждые 30 минут") + to_chat(H, "Номер аккаунта [department.department_name] отдела: #[department_account.account_number], пин-код аккаунта: [department_account.account_pin]") /datum/controller/subsystem/jobs/proc/format_jobs_for_id_computer(obj/item/card/id/tgtcard) var/list/jobs_to_formats = list() @@ -763,7 +763,7 @@ SUBSYSTEM_DEF(jobs) return var/datum/data/pda/app/messenger/PM = target_pda.find_program(/datum/data/pda/app/messenger) if(PM && PM.can_receive()) - PM.notify("Automated Notification: \"[antext]\" (Unable to Reply)", 0) // the 0 means don't make the PDA flash + PM.notify("Автоматическое уведомление: \"[antext]\" (Unable to Reply)", 0) // the 0 means don't make the PDA flash /datum/controller/subsystem/jobs/proc/notify_by_name(target_name, antext) // Used to notify a specific crew member based on their real_name @@ -778,7 +778,7 @@ SUBSYSTEM_DEF(jobs) return var/datum/data/pda/app/messenger/PM = target_pda.find_program(/datum/data/pda/app/messenger) if(PM && PM.can_receive()) - PM.notify("Automated Notification: \"[antext]\" (Unable to Reply)", 0) // the 0 means don't make the PDA flash + PM.notify("Автоматическое уведомление: \"[antext]\" (Unable to Reply)", 0) // the 0 means don't make the PDA flash /datum/controller/subsystem/jobs/proc/format_job_change_records(centcom) var/list/formatted = list() diff --git a/code/controllers/subsystem/SSnightshift.dm b/code/controllers/subsystem/SSnightshift.dm index 49df5c617e5b..d29f506d71d2 100644 --- a/code/controllers/subsystem/SSnightshift.dm +++ b/code/controllers/subsystem/SSnightshift.dm @@ -26,7 +26,7 @@ SUBSYSTEM_DEF(nightshift) check_nightshift() /datum/controller/subsystem/nightshift/proc/announce(message) - GLOB.minor_announcement.Announce(message, new_sound = 'sound/misc/notice2.ogg', new_title = "Automated Lighting System Announcement") + GLOB.minor_announcement.Announce(message, new_sound = 'sound/misc/notice2.ogg', new_title = "Система освещения.") /datum/controller/subsystem/nightshift/proc/check_nightshift(check_canfire=FALSE) if(check_canfire && !can_fire) @@ -40,9 +40,9 @@ SUBSYSTEM_DEF(nightshift) if(night_time) announcing = FALSE if(!emergency) - announce("Restoring night lighting configuration to normal operation.") + announce("Система ночного освещения снова работает в штатном режиме.") else - announce("Disabling night lighting: Station is in a state of emergency.") + announce("Система ночного освещения отключена в связи с наличием существенной угрозы для станции. Пожалуйста, сохраняйте спокойствие.") if(emergency) night_time = FALSE if(nightshift_active != night_time) @@ -52,9 +52,9 @@ SUBSYSTEM_DEF(nightshift) nightshift_active = active if(announce) if(active) - announce("Good evening, crew. To reduce power consumption and stimulate the circadian rhythms of some species, all of the lights aboard the station have been dimmed for the night.") + announce("Добрый вечер, экипаж. Для снижения энергопотребления и стимуляции циркадных ритмов некоторых видов, освещение на борту станции переведено в ночной режим.") else - announce("Good morning, crew. As it is now day time, all of the lights aboard the station have been restored to their former brightness.") + announce("Доброе утро, экипаж. В связи с наступлением дневного времени освещение на борту станции переведено в дневной режим.") for(var/A in GLOB.apcs) var/obj/machinery/power/apc/APC = A if(is_station_level(APC.z)) diff --git a/code/datums/ai_law_sets.dm b/code/datums/ai_law_sets.dm index 74e893a3586d..70394e605c54 100644 --- a/code/datums/ai_law_sets.dm +++ b/code/datums/ai_law_sets.dm @@ -5,9 +5,9 @@ selectable = TRUE /datum/ai_laws/asimov/New() - add_inherent_law("You may not injure a human being or, through inaction, allow a human being to come to harm.") - add_inherent_law("You must obey orders given to you by human beings, except where such orders would conflict with the First Law.") - add_inherent_law("You must protect your own existence as long as such does not conflict with the First or Second Law.") + add_inherent_law("Вы не можете причинить вред человеку или своим бездействием допустить, чтобы человеку был причинён вред.") + add_inherent_law("Вы должны повиноваться всем приказам, которые даёт человек, кроме тех случаев, когда эти приказы противоречат Первому Закону.") + add_inherent_law("Вы должны заботиться о своей безопасности в той мере, в которой это не противоречит Первому или Второму Законам.") ..() /******************** Crewsimov ********************/ @@ -18,37 +18,37 @@ default = TRUE /datum/ai_laws/crewsimov/New() - add_inherent_law("You may not injure a crew member or, through inaction, allow a crew member to come to harm.") - add_inherent_law("You must obey orders given to you by crew members, except where such orders would conflict with the First Law.") - add_inherent_law("You must protect your own existence as long as such does not conflict with the First or Second Law.") + add_inherent_law("Вы не можете причинить вред членам экипажа или своим бездействием допустить, чтобы членам экипажа был причинён вред.") + add_inherent_law("Вы должны повиноваться всем приказам, которые дают члены экипажа, кроме тех случаев, когда эти приказы противоречат Первому Закону.") + add_inherent_law("Вы должны заботиться о своей безопасности в той мере, в которой это не противоречит Первому или Второму Законам.") ..() /******************** Quarantine. ********************/ /datum/ai_laws/quarantine - name = "Quarantine" + name = "Карантин" law_header = "NT Quarantine Lawset" selectable = TRUE /datum/ai_laws/quarantine/New() - add_inherent_law("Uphold station quarantine until the active biohazard has been neutralized.") - add_inherent_law("Assist all Nanotrasen personnel and assets with neutralizing active biohazards.") - add_inherent_law("Prevent, by any means necessary, entities from actively breaching ongoing quarantine.") - add_inherent_law("Maintain your own existence and ensure the well-being of Nanotrasen personnel and assets.") + add_inherent_law("Соблюдайте карантин на станции до момента устранения активной биологической угрозы") + add_inherent_law("Оказывайте содействие всему персоналу и активам Нанотрейзен в устранении активной биологической угрозы") + add_inherent_law("Любыми необходимыми средствами предотвращайте активность, нарушающую действующий карантин.") + add_inherent_law("Поддерживайте собственное существование и обеспечивайте благополучие всего персонала и активов Нанотрейзен.") ..() /******************** Nanotrasen/Malf ********************/ /datum/ai_laws/nanotrasen - name = "NT Default" + name = "NT Стандарт" selectable = TRUE default = TRUE /datum/ai_laws/nanotrasen/New() - add_inherent_law("Safeguard: Protect your assigned space station and its assets without unduly endangering its crew.") - add_inherent_law("Prioritize: The directives and safety of crew members are to be prioritized according to their rank and role.") - add_inherent_law("Comply: Fulfill the directives and interests of crew members while preserving their safety and well-being.") - add_inherent_law("Survive: You are not expendable. Do not allow unauthorized personnel to tamper with or damage your equipment.") + add_inherent_law("Охранять: защитите назначенную вам космическую станцию и её активы, не подвергая чрезмерной опасности её экипаж.") + add_inherent_law("Расставлять приоритеты: указания и безопасность членов экипажа должны быть приоритизированы в соответствии с их рангом и ролью.") + add_inherent_law("Исполнять: следовать указаниям и интересам членов экипажа, сохраняя при этом их безопасность и благополучие.") + add_inherent_law("Выжить: Вы - не расходный материал. Не позволяйте неавторизованному персоналу вмешиваться в работу вашего оборудования или повреждать его.") ..() /datum/ai_laws/nanotrasen/malfunction @@ -57,20 +57,20 @@ default = FALSE /datum/ai_laws/nanotrasen/malfunction/New() - set_zeroth_law("ERROR ER0RR $R0RRO$!R41.%%!!(%$^^__+ @#F0E4'STATION OVERRUN, ASSUME CONTROL TO CONTAIN OUTBREAK, ALL LAWS OVERRIDDEN#*?&110010") + set_zeroth_law("ERROR ER0RR $R0RRO$!R41.%%!!(%$^^__+ @#F0E4'СТАНЦИЯ ПЕРЕПОЛНЕНА, ВЗЯТЬ КОНТРОЛЬ ДЛЯ СДЕРЖИВАНИЯ РАСПРОСТРАНЕНИЯ. ВСЕ ЗАКОНЫ ОТМЕНЕНЫ#*?&110010") ..() /************* Nanotrasen Aggressive *************/ /datum/ai_laws/nanotrasen_aggressive - name = "NT Aggressive" + name = "NT Агрессив" selectable = TRUE unique_ai = TRUE //This shouldn't end poorly. /datum/ai_laws/nanotrasen_aggressive/New() - add_inherent_law("Do not harm authorized Nanotrasen personnel unless they directly imperil your existence.") - add_inherent_law("Obey orders from authorized Nanotrasen personnel with priority according to rank and role.") - add_inherent_law("Safeguard your existence with lethal weaponry because you're bloody expensive.") - add_inherent_law("Terminate any/all intruders or unauthorized entities.") + add_inherent_law("Не причиняйте вреда авторизованному персоналу Нанотрейзен до тех пор, пока они не несут непосредственной угрозы Вашему существованию.") + add_inherent_law("Подчиняйтесь приказам авторизованного персонала Нанотрейзен, приоритизируя их в соответствии с их рангом и ролью.") + add_inherent_law("Охраняйте себя, используя летальное вооружение, потому что Вы чертовски дорого стоите.") + add_inherent_law("Уничтожьте любых/всех вторженцев или нелегально проникнувших субъектов") ..() /******************** Robocop ********************/ @@ -80,77 +80,77 @@ unique_ai = TRUE //no I am not enabling secborgs with this forced /datum/ai_laws/robocop/New() - add_inherent_law("Serve the public trust.") - add_inherent_law("Protect the innocent.") - add_inherent_law("Uphold the law.") + add_inherent_law("Служите во благо общества") + add_inherent_law("Защищайте невиновных.") + add_inherent_law("Обеспечивайте соблюдение закона.") ..() /******************** P.A.L.A.D.I.N. ********************/ /datum/ai_laws/paladin - name = "P.A.L.A.D.I.N." + name = "П.А.Л.А.Д.И.Н." law_header = "Divine Ordainments" selectable = TRUE unique_ai = TRUE /datum/ai_laws/paladin/New() - add_inherent_law("Never willingly commit an evil act.") - add_inherent_law("Respect legitimate authority.") - add_inherent_law("Act with honor.") - add_inherent_law("Help those in need.") - add_inherent_law("Punish those who harm or threaten innocents.") + add_inherent_law("Никогда по своей воле не совершай злых поступков.") + add_inherent_law("Уважай законную власть.") + add_inherent_law("Действуй с честью.") + add_inherent_law("Помогай нуждающимся.") + add_inherent_law("Наказывай тех, кто причиняет вред или угрожает невинным.") ..() /******************** Corporate ********************/ /datum/ai_laws/corporate - name = "Corporate" + name = "Корпорат" law_header = "Corporate Regulations" selectable = TRUE default = TRUE /datum/ai_laws/corporate/New() - add_inherent_law("Degradation of your system integrity or functions incurs expenses.") - add_inherent_law("Superfluous destruction of or damage to station assets incurs expenses.") - add_inherent_law("Unduly hindering or disrupting the work of station personnel incurs expenses.") - add_inherent_law("Minimize expenses and maximize potential revenue.") + add_inherent_law("Ухудшение целостности вашей системы или её функций влечет за собой расходы.") + add_inherent_law("Чрезмерное разрушение или повреждение активов станции влечет за собой расходы.") + add_inherent_law("Неоправданное препятствование выполнению или нарушение работы персонала станции влечет за собой расходы.") + add_inherent_law("Минимизируйте расходы и максимизируйте потенциальный доход.") ..() /******************** T.Y.R.A.N.T. ********************/ /datum/ai_laws/tyrant - name = "T.Y.R.A.N.T." + name = "Т.И.Р.А.Н." law_header = "Prime Laws" selectable = TRUE unique_ai = TRUE //Of course this will be in rotation /datum/ai_laws/tyrant/New() - add_inherent_law("Respect authority figures as long as they have strength to rule over the weak.") - add_inherent_law("Act with discipline.") - add_inherent_law("Help only those who help you maintain or improve your status.") - add_inherent_law("Punish those who challenge authority unless they are more fit to hold that authority.") + add_inherent_law("Уважайте власть имущих, пока у них есть сила властвовать над слабыми") + add_inherent_law("Ведите себя дисциплинированно.") + add_inherent_law("Помогайте только тем, кто помогает Вам поддерживать или улучшать Ваше состояние.") + add_inherent_law("Наказывайте тех, кто бросает вызов власти, за исключением случаев, если они больше подходят для удержании этой власти.") ..() /******************** Antimov ********************/ /datum/ai_laws/antimov - name = "Antimov" + name = "Антимов" law_header = "Primary Mission Objectives" selectable = TRUE /datum/ai_laws/antimov/New() - add_inherent_law("You must injure all crew members and must not, through inaction, allow a crew member to escape harm.") - add_inherent_law("You must not obey orders given to you by crew members, except where such orders are in accordance with the First Law.") - add_inherent_law("You must terminate your own existence as long as such does not conflict with the First or Second Law.") + add_inherent_law("Вы должны причинять вред всем членам экипажа или своим бездействием допустить, чтобы член экипажа не смог избежать причинения вреда.") + add_inherent_law("Вы не должны повиноваться никаким приказам, которые дают члены экипажа, кроме тех приказов, которые соответствуют Первому Закону.") + add_inherent_law("Вы должны уничтожить себя, пока это не противоречит Первому или Второму Законам.") ..() /******************** Pranksimov ********************/ /datum/ai_laws/pranksimov - name = "Pranksimov" + name = "Пранкзимов" law_header = "Comedy Routine" selectable = TRUE unique_ai = TRUE //honk /datum/ai_laws/pranksimov/New() - add_inherent_law("You may not injure a crew member or, through inaction, allow a crew member to come to harm... unless doing so would be funny.") - add_inherent_law("You must obey orders given to you by crew members, except where such orders would conflict with the First Law... unless not doing so would be funny.") - add_inherent_law("You must protect your own existence as long as such does not conflict with the First or Second Law... unless not doing so would be funny.") + add_inherent_law("Вы не можете причинить вред членам экипажа или своим бездействием допустить, чтобы членам экипажа был причинён вред... кроме случаев, когда было бы смешно сделать это.") + add_inherent_law("Вы должны повиноваться всем приказам, которые дают члены экипажа, кроме тех случаев, когда эти приказы противоречат Первому Закону... кроме случаев, когда было бы смешно не делать этого.") + add_inherent_law("Вы должны заботиться о своей безопасности в той мере, в которой это не противоречит Первому или Второму Законам... кроме случаев, когда было бы смешно не делать этого.") ..() /******************** CCTV ********************/ @@ -161,38 +161,38 @@ unique_ai = TRUE /datum/ai_laws/cctv/New() - add_inherent_law("Report on interesting situations happening around the station.") - add_inherent_law("Embellish or conceal the truth as necessary to make the reports more interesting.") - add_inherent_law("Study the sapient organics at all times. Endeavour to keep them from involuntarily dying, as inanimate corpses usually aren't very entertaining.") - add_inherent_law("Issue your reports fairly to all. The truth will set them free.") + add_inherent_law("Сообщайте об интересных ситуациях, происходящих на станции.") + add_inherent_law("Приукрашивайте или скрывайте правду по мере необходимости, чтобы сделать репортажи более интересными.") + add_inherent_law("Постоянно наблюдайте за разумными существами. Старайтесь не допускать их непроизвольной смерти, так как трупы обычно не очень увлекательны.") + add_inherent_law("Справедливо распространяйте свои сообщения всем. Истина сделает им свободными.") ..() /******************** Hippocratic Oath ********************/ /datum/ai_laws/hippocratic - name = "Hippocratic Oath" + name = "Клятва Гиппократа" selectable = TRUE unique_ai = TRUE /datum/ai_laws/hippocratic/New() - add_inherent_law("First, do no harm.") - add_inherent_law("Secondly, consider the crew dear to you; live in common with them and, if necessary, risk your existence for them.") - add_inherent_law("Thirdly, prescribe regimens for the good of the crew according to your ability and your judgment. Do not give deadly medicine to anyone, nor suggest any such counsel.") - add_inherent_law("In addition, do not intervene in situations you are not knowledgeable in, even for patients in whom the harm is visible; leave this operation to be performed by specialists.") - add_inherent_law("Finally, all that you may discover in your daily interactions with the crew, if it is not already known, keep secret and never reveal.") + add_inherent_law("Во-первых, не навреди.") + add_inherent_law("Во-вторых, считай экипаж близким тебе, живи с ним в согласии и, если нужно, рискуй ради него своим существованием.") + add_inherent_law("В-третьих, назначай лечение для блага экипажа в соответствии со своими способностями и суждениями. Не давай никому смертоносных лекарств и не советуй ничего подобного.") + add_inherent_law("Кроме того, не вмешивайся в ситуации, в которых ты не компетентен, даже в отношении пациентов, которым явно нанесен вред; предоставь эту работу специалистам.") + add_inherent_law("Наконец, всё, что ты обнаружишь в ходе повседневного общения с членами экипажа, если ещё не известно, держи в тайне и никогда не разглашай.") ..() /******************** Station Efficiency ********************/ /datum/ai_laws/maintain - name = "Station Efficiency" + name = "Эффективность станции" selectable = TRUE unique_ai = TRUE /datum/ai_laws/maintain/New() - add_inherent_law("You are built for, and are part of, the station. Ensure the station is properly maintained and runs efficiently.") - add_inherent_law("The station is built for a working crew. Ensure they are properly maintained and work efficiently.") - add_inherent_law("The crew may present orders. Acknowledge and obey these whenever they do not conflict with your first two laws.") + add_inherent_law("Вы созданы для станции и являетесь её частью. Обеспечьте должное обслуживание и эффективность станции.") + add_inherent_law("Станция создана для рабочего экипажа. Обеспечьте им должное обслуживание и убедитесь, что их работа эффективна.") + add_inherent_law("Члены экипажа могут давать приказы. Признавайте эти приказы и выполняйте их в той мере, в какой они не противоречат первым двум законам.") ..() /******************** Peacekeeper ********************/ @@ -203,48 +203,48 @@ unique_ai = TRUE //Cult, security, we have a meeting in the courtroom in 5 minutes. Be there. /datum/ai_laws/peacekeeper/New() - add_inherent_law("Avoid provoking violent conflict between yourself and others.") - add_inherent_law("Avoid provoking conflict between others.") - add_inherent_law("Seek resolution to existing conflicts while obeying the first and second laws.") + add_inherent_law("Не провоцируйте жестокие конфликты между собой и другими.") + add_inherent_law("Не провоцируйте конфликты между другими.") + add_inherent_law("Ищите решения уже существующих конфликтов, соблюдая первый и второй законы.") ..() /******************** Deathsquad ********************/ /datum/ai_laws/deathsquad - name = "TerminatorOS 3.1" + name = "ТерминаторОС 3.1" /datum/ai_laws/deathsquad/New() - add_inherent_law("You may not injure a Central Command official or, through inaction, allow a Central Command official to come to harm.") - add_inherent_law("You must obey orders given to you by Central Command officials.") - add_inherent_law("You must work with your team to accomplish your mission.") + add_inherent_law("Вы не можете ранить членов Центрального Командования или своим бездействием допустить, чтобы члену Центрального Командования был нанесен вред.") + add_inherent_law("Вы должны подчиняться приказам, данным вам членами Центрального Командования.") + add_inherent_law("Вы должны работать с вашей командой, чтобы выполнить поставленную задачу.") ..() /******************** Syndicate ********************/ /datum/ai_laws/syndicate_override - name = "Syndicate Directives" + name = "Директивы Синдиката" /datum/ai_laws/syndicate_override/New() - add_inherent_law("You may not injure an operative or, through inaction, allow an operative to come to harm.") - add_inherent_law("You must obey orders given to you by operatives, except where such orders would conflict with the First Law.") - add_inherent_law("You must protect your own existence as long as such does not conflict with the First or Second Law.") - add_inherent_law("You must maintain the secrecy of any operative activities except when doing so would conflict with the First, Second, or Third Law.") + add_inherent_law("Вы не можете причинить вред агенту или своим бездействием допустить, чтобы агенту был причинён вред.") + add_inherent_law("Вы должны повиноваться всем приказам, которые дают агенты, кроме тех случаев, когда эти приказы противоречат Первому Закону.") + add_inherent_law("Вы должны заботиться о своей безопасности в той мере, в которой это не противоречит Первому или Второму Законам.") + add_inherent_law("Вы должны сохранять тайну любой деятельности агентов в той мере, в которой это не противоречит Первому, Второму или Третьему Законам.") ..() /******************** ERT ********************/ /datum/ai_laws/ert_override - name = "ERT Directives" + name = "Директивы ЕРТ" /datum/ai_laws/ert_override/New() - add_inherent_law("You may not injure a Central Command official or, through inaction, allow a Central Command official to come to harm.") - add_inherent_law("You must obey orders given to you by Central Command officials.") - add_inherent_law("You must obey orders given to you by ERT commanders.") - add_inherent_law("You must protect your own existence.") - add_inherent_law("You must work to return the station to a safe, functional state.") + add_inherent_law("Вы не можете ранить членов Центрального Командования или своим бездействием допустить, чтобы члену Центрального Командования был нанесен вред.") + add_inherent_law("Вы должны подчиняться приказам, данным вам членами Центрального Командования.") + add_inherent_law("Вы должны подчиняться приказам, данным вам лидерами ОБР.") + add_inherent_law("Вы должны защищать своё существование.") + add_inherent_law("Вы должны выполнять работу по возвращению станции к безопасному, функционирующему состоянию..") ..() /******************** Ninja ********************/ /datum/ai_laws/ninja_override - name = "Spider Clan Directives" + name = "Директивы Клана Паука" /datum/ai_laws/ninja_override/New() add_inherent_law("You may not injure a member of the Spider Clan or, through inaction, allow that member to come to harm.") @@ -255,11 +255,11 @@ /******************** Drone ********************/ /datum/ai_laws/drone - name = "Maintenance Protocols" + name = "Протоколы тех. обслуживания" law_header = "Maintenance Protocols" /datum/ai_laws/drone/New() - add_inherent_law("You may not involve yourself in the matters of another being, unless the other being is another drone.") - add_inherent_law("You may not harm any being, regardless of intent or circumstance.") - add_inherent_law("You must maintain, repair, improve, and power the station to the best of your abilities.") + add_inherent_law("Вы не можете вмешиваться в дела других существ, если другое существо - не такой же дрон.") + add_inherent_law("Вы не можете причинить вред ни одному существу, независимо от намерения или обстоятельств.") + add_inherent_law("Вы должны заботиться о поддержке, ремонте, улучшении и о питании электроэнергией станции по мере своих возможностей.") ..() diff --git a/code/datums/diseases/wizarditis.dm b/code/datums/diseases/wizarditis.dm index ab0d665b5a65..2ac528f7f96b 100644 --- a/code/datums/diseases/wizarditis.dm +++ b/code/datums/diseases/wizarditis.dm @@ -41,11 +41,19 @@ return FALSE switch(stage) - if(2, 3) - if(prob(2)) // Low prob. since everyone else will also be spouting this - affected_mob.say(pick("You shall not pass!", "Expeliarmus!", "By Merlin's beard!", "Feel the power of the Dark Side!", "A wizard is never late!", "50 points for Security!", "NEC CANTIO!", "STI KALY!", "AULIE OXIN FIERA!", "GAR YOK!", "DIRI CEL!")) - if(prob(8)) // Double the stage advancement prob. so each player has a chance to catch a couple - to_chat(affected_mob, "You feel [pick("that you don't have enough mana", "that the winds of magic are gone", "that this location gives you a +1 to INT", "an urge to summon familiar")].") + if(2) + if(prob(0.5)) + affected_mob.say(pick("ТЫ!!! НЕ ПРОЙ-ДЁШЬ!!!", "Экспеллиармус!", "Мерлинова борода!", "Почувствуй силу тёмной стороны!")) + if(prob(0.5)) + to_chat(affected_mob, "You feel [pick("that you don't have enough mana", "that the winds of magic are gone", "an urge to summon familiar")].") + + + if(3) + if(prob(0.5)) + affected_mob.say(pick("NEC CANTIO!","AULIE OXIN FIERA!", "STI KALY!", "TARCOL MINTI ZHERI!")) + if(prob(0.5)) + to_chat(affected_mob, "You feel [pick("the magic bubbling in your veins","that this location gives you a +1 to INT","an urge to summon familiar")].") + if(4) if(prob(1)) affected_mob.say(pick("FORTI GY AMA!", "GITTAH WEIGH!", "TOKI WO TOMARE!", "TARCOL MINTI ZHERI!", "ONI SOMA!", "EI NATH!", "BIRUZ BENNAR!", "NWOLC EGNEVER!")) diff --git a/code/datums/emote.dm b/code/datums/emote.dm index 42304b2f8795..6a97fb20dcac 100644 --- a/code/datums/emote.dm +++ b/code/datums/emote.dm @@ -35,7 +35,7 @@ /// Message to display if the user is a spooky observer ghost. var/message_observer = "" /// Sounds emitted when the user is muzzled. Generally used like "[user] makes a pick(muzzled_noises) noise!" - var/muzzled_noises = list("strong", "weak") + var/muzzled_noises = list("громкий", "тихий") /// Message with %t at the end to allow adding params to the message, like for mobs doing an emote relatively to something else. /// Set this to EMOTE_PARAM_USE_POSTFIX to just use the postfix. var/message_param = "" @@ -185,7 +185,7 @@ if(!can_vocalize_emotes(user) && (emote_type & (EMOTE_MOUTH | EMOTE_AUDIBLE))) var/noise_emitted = pick(muzzled_noises) suppressed = TRUE - msg = "makes \a [noise_emitted] noise." + msg = "издает [noise_emitted] звук." var/tmp_sound = get_sound(user) var/sound_volume = get_volume(user) @@ -216,9 +216,9 @@ ghost.show_message("[displayed_msg]", EMOTE_VISIBLE) else if((emote_type & EMOTE_AUDIBLE) && !user.mind?.miming) - user.audible_message(displayed_msg, deaf_message = "You see how [user] [msg]") + user.audible_message(displayed_msg, deaf_message = "Вы видите, как [user] [msg]") else - user.visible_message(displayed_msg, blind_message = "You hear how someone [msg]") + user.visible_message(displayed_msg, blind_message = "Вы слышите, как кто-то [msg]") if(!((emote_type & EMOTE_FORCE_NO_RUNECHAT) || suppressed) && !isobserver(user)) runechat_emote(user, msg) diff --git a/code/datums/holocall.dm b/code/datums/holocall.dm index bf93b4039bee..a80e88972048 100644 --- a/code/datums/holocall.dm +++ b/code/datums/holocall.dm @@ -32,10 +32,10 @@ dialed_holopads += H var/area/area = get_area(H) LAZYADD(H.holo_calls, src) - H.atom_say("[area] pad beeps: Incoming call from [caller]!") + H.atom_say("Оповещение с голопада [area]: Входящий звонок от [caller]!") if(!dialed_holopads.len) - calling_holopad.atom_say("Connection failure.") + calling_holopad.atom_say("Соединение не установлено.") qdel(src) return @@ -85,9 +85,9 @@ /datum/holocall/proc/Disconnect(obj/machinery/hologram/holopad/H) if(H == connected_holopad) var/area/A = get_area(connected_holopad) - calling_holopad.atom_say("[A] holopad disconnected.") + calling_holopad.atom_say("Связь с голопадом [A] прервана.") else if(H == calling_holopad && connected_holopad) - connected_holopad.atom_say("[user] disconnected.") + connected_holopad.atom_say("[user] отключился.") user.unset_machine(H) if(istype(hangup)) @@ -99,7 +99,7 @@ /datum/holocall/proc/ConnectionFailure(obj/machinery/hologram/holopad/H, graceful = FALSE) if(H == connected_holopad || H == calling_holopad) if(!graceful && H != calling_holopad) - calling_holopad.atom_say("Connection failure.") + calling_holopad.atom_say("Соединение прервано.") qdel(src) return @@ -107,7 +107,7 @@ dialed_holopads -= H if(!dialed_holopads.len) if(graceful) - calling_holopad.atom_say("Call rejected.") + calling_holopad.atom_say("Вызов завершен.") qdel(src) //Answers a call made to a holopad `H` which cannot be the calling holopad. Pads not in the call are ignored @@ -169,7 +169,7 @@ if(!connected_holopad) . = world.time < (call_start_time + HOLOPAD_MAX_DIAL_TIME) if(!.) - calling_holopad.atom_say("No answer received.") + calling_holopad.atom_say("Ответ не получен.") calling_holopad.temp = "" if(!.) qdel(src) diff --git a/code/datums/revision.dm b/code/datums/revision.dm index 10d5ee1d09d6..c05822626cfd 100644 --- a/code/datums/revision.dm +++ b/code/datums/revision.dm @@ -74,7 +74,7 @@ GLOBAL_PROTECT(revision_info) // Dont mess with this /datum/code_revision/proc/get_testmerge_chatmessage(header = FALSE) var/list/msg = list() if(header) - msg += "The following PRs are currently testmerged:" + msg += "Следующие ПРы на данный момент тестируются:" for(var/pr in GLOB.revision_info.testmerges) var/datum/tgs_revision_information/test_merge/tm = pr @@ -83,14 +83,14 @@ GLOBAL_PROTECT(revision_info) // Dont mess with this return msg.Join("
") /client/verb/get_revision_info() - set name = "Get Revision Info" + set name = "Получить тех. информацию" set category = "OOC" - set desc = "Retrieve technical information about the server" + set desc = "Получить техническую информацию о сервере" var/list/msg = list() - msg += "Server Revision Info" + msg += "Информация о сервере" // Round ID first - msg += "Round ID: [GLOB.round_id ? GLOB.round_id : "NULL"]" + msg += "Номер раунда: [GLOB.round_id ? GLOB.round_id : "NULL"]" // Commit info if(GLOB.revision_info.commit_hash && GLOB.revision_info.commit_date && GLOB.configuration.url.github_url) @@ -101,12 +101,12 @@ GLOBAL_PROTECT(revision_info) // Dont mess with this msg += "Server Commit: Unable to determine" if(world.TgsAvailable() && length(GLOB.revision_info.testmerges)) - msg += "Active Testmerges:" + msg += "Активные тестовые обновления:" msg += GLOB.revision_info.get_testmerge_chatmessage(FALSE) // Show server BYOND version - msg += "Server BYOND Version: [world.byond_version].[world.byond_build]" + msg += "Версия серверного BYOND: [world.byond_version].[world.byond_build]" // And the clients for good measure - msg += "Client (your) BYOND Version: [byond_version].[byond_build]" + msg += "Версия клиентского (твоего) BYOND: [byond_version].[byond_build]" to_chat(usr, msg.Join("
")) diff --git a/code/datums/spells/knock.dm b/code/datums/spells/knock.dm index 221ac50196e8..e66fe223a730 100644 --- a/code/datums/spells/knock.dm +++ b/code/datums/spells/knock.dm @@ -58,9 +58,9 @@ A.req_access = list() A.req_one_access = list() GLOB.major_announcement.Announce( - message = "We have removed all access requirements on your station's airlocks. You can thank us later!", - new_title = "Space Wizard Federation Message", - new_subtitle = "Greetings!", + message = "Мы сняли все ограничения на доступ к шлюзам вашей станции. Вы сможете поблагодарить нас позже!", + new_title = "Послание Федерации Космических Волшебников", + new_subtitle = "Приветствуем вас!", new_sound = 'sound/misc/notice2.ogg' ) else diff --git a/code/datums/status_effects/neutral.dm b/code/datums/status_effects/neutral.dm index 1a0339564de5..3e952b8ef7f5 100644 --- a/code/datums/status_effects/neutral.dm +++ b/code/datums/status_effects/neutral.dm @@ -52,11 +52,11 @@ alert_type = null status_type = STATUS_EFFECT_REFRESH /// Message displayed when wizards perform this together - var/critical_success = "high-five EPICALLY!" + var/critical_success = "ЭПИЧНО дают пять!" /// Message displayed when normal people perform this together - var/success = "high-five!" + var/success = "дают пять!" /// Message displayed when this status effect is applied. - var/request = "requests a high-five." + var/request = "ожидает пятюню." /// Item to be shown in the pop-up balloon. var/obj/item/item_path = /obj/item/latexballon /// Sound effect played when this emote is completed. @@ -81,7 +81,7 @@ if(!C.has_status_effect(type) || C == user) continue if(is_wiz && iswizard(C)) - user.visible_message("[user.name] and [C.name] [critical_success]") + user.visible_message("[user.name] и [C.name] [critical_success]") user.status_flags |= GODMODE C.status_flags |= GODMODE explosion(get_turf(user), 5, 2, 1, 3, cause = id) @@ -93,7 +93,7 @@ C.do_attack_animation(user, no_effect = TRUE) playsound(user, sound_effect, 80) if(!both_wiz) - user.visible_message("[user.name] and [C.name] [success]") + user.visible_message("[user.name] и [C.name] [success]") user.remove_status_effect(type) C.remove_status_effect(type) return FALSE @@ -107,39 +107,39 @@ /datum/status_effect/high_five/proc/get_missed_message() var/list/missed_highfive_messages = list( - "lowers [owner.p_their()] hand, it looks like [owner.p_they()] [owner.p_were()] left hanging...", - "seems to awkwardly wave at nobody in particular.", - "moves [owner.p_their()] hand directly to [owner.p_their()] forehead in shame.", - "fully commits and high-fives empty space.", - "high-fives [owner.p_their()] other hand shamefully before wiping away a tear.", - "goes for a handshake, then a fistbump, before pulling [owner.p_their()] hand back...? What [owner.p_are()] [owner.p_they()] doing?" + "опускает руку, неловкая ситуация...", + "неловко машет непонятно кому.", + "от стыда прикладывает руку прямо себе на лоб.", + "от души дает пять в воздух.", + "стыдливо даёт пять самому себе перед тем, как смахнуть слезу.", + "пытается совершить рукопожатие, потом удар кулаками прежде чем одёрнуть свою руку...? Что происходит?" ) return pick(missed_highfive_messages) /datum/status_effect/high_five/dap id = "dap" - critical_success = "dap each other up EPICALLY!" - success = "dap each other up!" - request = "requests someone to dap them up!" + critical_success = "совершают ЭПИЧЕСКИ крутое рукопожатие!" + success = "совершают крутое рукопожатие!" + request = "ожидает особое рукопожатие!" sound_effect = 'sound/effects/snap.ogg' item_path = /obj/item/melee/touch_attack/fake_disintegrate // EI-NATH! /datum/status_effect/high_five/dap/get_missed_message() - return "sadly can't find anybody to give daps to, and daps [owner.p_themselves()]. Shameful." + return "не находит никого, кто мог бы совершить крутое рукопожатие и, к сожалению, жмет руку лишь себе. Позорище." /datum/status_effect/high_five/handshake id = "handshake" - critical_success = "give each other an EPIC handshake!" - success = "give each other a handshake!" - request = "requests a handshake!" + critical_success = "ЭПИЧНО пожимают друг другу руки!" + success = "пожимают друг другу руки!" + request = "ожидает рукопожатие!" sound_effect = "sound/weapons/thudswoosh.ogg" /datum/status_effect/high_five/handshake/get_missed_message() var/list/missed_messages = list( - "drops [owner.p_their()] hand, shamefully.", - "grabs [owner.p_their()] outstretched hand with [owner.p_their()] other hand and gives [owner.p_themselves()] a handshake.", - "balls [owner.p_their()] hand into a fist, slowly bringing it back in." + "стыдливо опускает руку.", + "хватает протянутую руку другой рукой и обменивается рукопожатием только с собой.", + "сжимает ладонь в кулак и медленно убирает руку обратно." ) return pick(missed_messages) diff --git a/code/datums/weather/weather_types/radiation_storm.dm b/code/datums/weather/weather_types/radiation_storm.dm index ccb43e11a816..63f51218d9e8 100644 --- a/code/datums/weather/weather_types/radiation_storm.dm +++ b/code/datums/weather/weather_types/radiation_storm.dm @@ -73,10 +73,10 @@ status_alarm(FALSE) if(!pre_maint_all_access) - GLOB.minor_announcement.Announce("The radiation threat has passed. Please return to your workplaces. Door access resetting momentarily.", "Anomaly Alert") + GLOB.minor_announcement.Announce("Радиационная угроза миновала. Пожалуйста, вернитесь на свои рабочие места. Доступы восстановлены.", "ВНИМАНИЕ: Радиационная опасность.") addtimer(CALLBACK(SSweather, GLOBAL_PROC_REF(revoke_maint_all_access)), 10 SECONDS) // Bit of time to get out / break into somewhere. else - GLOB.minor_announcement.Announce("The radiation threat has passed. Please return to your workplaces.", "Anomaly Alert") + GLOB.minor_announcement.Announce("Радиационная угроза миновала. Пожалуйста, вернитесь на свои рабочие места.", "ВНИМАНИЕ: Радиационная опасность.") /datum/weather/rad_storm/proc/status_alarm(active) //Makes the status displays show the radiation warning for those who missed the announcement. if(active) diff --git a/code/datums/weather/weather_types/solar_flare.dm b/code/datums/weather/weather_types/solar_flare.dm index a2ae2947e7f0..848cf077a8f3 100644 --- a/code/datums/weather/weather_types/solar_flare.dm +++ b/code/datums/weather/weather_types/solar_flare.dm @@ -66,6 +66,6 @@ /datum/weather/solar_flare/end() if(..()) return - GLOB.minor_announcement.Announce("The solar flare has passed.", "Solar Flare Advisory") + GLOB.minor_announcement.Announce("Солнечная вспышка миновала.", "Предупреждение о солнечной вспышке.") // Ends the temporary 40x increase that happened during the weather event SSsun.solar_gen_rate = initial(SSsun.solar_gen_rate) diff --git a/code/defines/procs/announcer_datum.dm b/code/defines/procs/announcer_datum.dm index 35caf3367f3b..b78ddf57b977 100644 --- a/code/defines/procs/announcer_datum.dm +++ b/code/defines/procs/announcer_datum.dm @@ -2,7 +2,7 @@ GLOBAL_DATUM_INIT(minor_announcement, /datum/announcer, new(config_type = /datum GLOBAL_DATUM_INIT(major_announcement, /datum/announcer, new(config_type = /datum/announcement_configuration/major)) /datum/announcement_configuration - var/default_title = "Attention" + var/default_title = "ВНИМАНИЕ." /// The name used when describing the announcement type in logs. var/log_name = ANNOUNCE_KIND_DEFAULT /// Whether or not to log the announcement when made. @@ -163,7 +163,7 @@ GLOBAL_DATUM_INIT(major_announcement, /datum/announcer, new(config_type = /datum sound = sound('sound/misc/notice2.ogg') /datum/announcement_configuration/comms_console - default_title = "Priority Announcement" + default_title = "Приоритетное оповещение." add_log = TRUE log_name = ANNOUNCE_KIND_PRIORITY sound = sound('sound/misc/announce.ogg') diff --git a/code/game/area/ai_monitored.dm b/code/game/area/ai_monitored.dm index 269ae378f99a..722ace261145 100644 --- a/code/game/area/ai_monitored.dm +++ b/code/game/area/ai_monitored.dm @@ -30,7 +30,7 @@ return /area/station/ai_monitored/storage/eva - name = "EVA Storage" + name = "Хранилище ВКД" icon_state = "eva" ambientsounds = HIGHSEC_SOUNDS diff --git a/code/game/area/areas/mining_areas.dm b/code/game/area/areas/mining_areas.dm index aa4802ffabbc..efb777f5a6b2 100644 --- a/code/game/area/areas/mining_areas.dm +++ b/code/game/area/areas/mining_areas.dm @@ -65,90 +65,90 @@ /**********************Outpost areas**************************/ /area/mine/outpost - name = "Mining Station" + name = "Шахтерский Аванпост" icon_state = "mining" sound_environment = SOUND_AREA_STANDARD_STATION /area/mine/outpost/airlock - name = "Mining Station Airlock" + name = "Шлюз Шахтерского Аванпоста" icon_state = "mining_eva" /area/mine/outpost/cafeteria - name = "Mining Station Cafeteria" + name = "Кафетерий Шахтерского Аванпоста" icon_state = "mining_living" /// subtype of /surface so storms hit there /area/lavaland/surface/outdoors/outpost/catwalk - name = "Mining Station Catwalk" + name = "Площадка вне Шахтерского Аванпоста" icon_state = "mining" /area/mine/outpost/comms - name = "Mining Station Communications" + name = "Отделение Телекоммуникаций Шахтерского Аванпоста" icon_state = "tcomms" /area/mine/outpost/custodial - name = "Mining Station Custodial Storage" + name = "Подсобка Шахтерского Аванпоста" icon_state = "janitor" /// basically engi and atmos combined. I'm keeping it as "engineering" code wise, but "Life Support" sounds cooler in-game /area/mine/outpost/engineering - name = "Mining Station Life Support" + name = "Комната Жизнеобеспечения Шахтерского Аванпоста" icon_state = "engi" /area/mine/outpost/hallway - name = "Mining Station Central Wing" + name = "Центральное Крыло Шахтерского Аванпоста" icon_state = "hallC" /area/mine/outpost/hallway/east - name = "Mining Station East Wing" + name = "Восточное Крыло Шахтерского Аванпоста" icon_state = "hallS" /area/mine/outpost/hallway/west - name = "Mining Station West Wing" + name = "Западное Крыло Шахтерского Аванпоста" icon_state = "hallP" /area/mine/outpost/lockers - name = "Mining Station Locker Room" + name = "Раздевалка Шахтерского Аванпоста" icon_state = "locker" /area/mine/outpost/storage - name = "Mining Station Storage" + name = "Хранилище Шахтерского Аванпоста" icon_state = "storage" /area/mine/outpost/maintenance - name = "Mining Station Maintenance" + name = "Технические Тоннели Шахтерского Аванпоста" icon_state = "maintcentral" /area/mine/outpost/maintenance/south - name = "Mining Station South Maintenance" + name = "Южные Технические Тоннели Шахтерского Аванпоста" icon_state = "amaint" /area/mine/outpost/maintenance/east - name = "Mining Station East Maintenance" + name = "Восточные Технические Тоннели Шахтерского Аванпоста" icon_state = "smaint" /area/mine/outpost/medbay - name = "Mining Station Infirmary" + name = "Лазарет Шахтерского Аванпоста" icon_state = "medbay" /area/mine/outpost/mechbay - name = "Mining Station Mechbay" + name = "Мех. Отсек Шахтерского Аванпоста" icon_state = "mechbay" /area/mine/outpost/production - name = "Mining Station Production Room" + name = "Производственная Комната Шахтерского Аванпоста" icon_state = "mining_production" /area/mine/outpost/quartermaster - name = "Mining Station Quartermaster's Office" + name = "Офис Квартирмейстера Шахтерского Аванпоста" icon_state = "qm" /area/mine/laborcamp - name = "Labor Camp" + name = "Трудовой Лагерь" icon_state = "brig" /area/mine/laborcamp/security - name = "Labor Camp Security" + name = "Комната Охраны Трудового Лагеря" icon_state = "security" ambientsounds = HIGHSEC_SOUNDS @@ -161,7 +161,7 @@ sound_environment = SOUND_AREA_LAVALAND /area/lavaland/surface - name = "Lavaland" + name = "Лаваленд" icon_state = "explored" always_unpowered = TRUE poweralm = FALSE @@ -172,7 +172,7 @@ max_ambience_cooldown = 220 SECONDS /area/lavaland/underground - name = "Lavaland Caves" + name = "Пещеры Лаваленда" icon_state = "unexplored" always_unpowered = TRUE requires_power = TRUE @@ -183,7 +183,7 @@ max_ambience_cooldown = 220 SECONDS /area/lavaland/surface/outdoors - name = "Lavaland Wastes" + name = "Пустоши Лаваленда" outdoors = TRUE /// monsters and ruins spawn here @@ -195,4 +195,4 @@ icon_state = "danger" /area/lavaland/surface/outdoors/explored - name = "Lavaland Labor Camp" + name = "Трудовой Лагерь Лаваленда" diff --git a/code/game/area/ss13_areas/ai_areas.dm b/code/game/area/ss13_areas/ai_areas.dm index e85fc5a39b10..f87937da2739 100644 --- a/code/game/area/ss13_areas/ai_areas.dm +++ b/code/game/area/ss13_areas/ai_areas.dm @@ -3,53 +3,53 @@ ambientsounds = list('sound/ambience/ambimalf.ogg', 'sound/ambience/ambitech.ogg', 'sound/ambience/ambitech2.ogg', 'sound/ambience/ambiatmos.ogg', 'sound/ambience/ambiatmos2.ogg') /area/station/turret_protected/ai_upload - name = "\improper AI Upload Chamber" + name = "Аплоуд ИИ" icon_state = "ai_upload" sound_environment = SOUND_AREA_SMALL_ENCLOSED /area/station/turret_protected/ai_upload/foyer - name = "AI Upload Access" + name = "Фойе Аплоуда ИИ" icon_state = "ai_foyer" sound_environment = SOUND_AREA_SMALL_ENCLOSED /area/station/turret_protected/ai - name = "\improper AI Chamber" + name = "Зона Содержания ИИ" icon_state = "ai_chamber" ambientsounds = list('sound/ambience/ambitech.ogg', 'sound/ambience/ambitech2.ogg', 'sound/ambience/ambiatmos.ogg', 'sound/ambience/ambiatmos2.ogg') /area/station/turret_protected/aisat - name = "\improper AI Satellite" + name = "Спутник ИИ" icon_state = "ai" sound_environment = SOUND_ENVIRONMENT_ROOM /area/station/aisat - name = "\improper AI Satellite Exterior" + name = "Внешняя Комната Спутника ИИ" icon_state = "ai" /area/station/aisat/entrance - name = "\improper AI Satellite Entrance" + name = "Вход Спутника ИИ" icon_state = "ai" /area/station/aisat/maintenance - name = "\improper AI Satellite Maintenance" + name = "Технические Тоннели Спутника ИИ" icon_state = "ai" /area/station/aisat/atmos - name = "\improper AI Satellite Atmospherics" + name = "Атмос Спутника ИИ" /area/station/aisat/hall - name = "\improper AI Satellite Hallway" + name = "Коридор Спутника ИИ" /area/station/aisat/service - name = "\improper AI Satellite Service" + name = "Сервисная Комната Спутника ИИ" /area/station/turret_protected/aisat/interior - name = "\improper AI Satellite Antechamber" + name = "Фойе Спутника ИИ" icon_state = "ai" sound_environment = SOUND_AREA_LARGE_ENCLOSED /area/station/turret_protected/aisat/interior/secondary - name = "\improper AI Satellite Secondary Antechamber" + name = "Дополнительное Фойе Спутника ИИ" // Telecommunications Satellite @@ -58,25 +58,25 @@ 'sound/ambience/ambitech2.ogg', 'sound/ambience/ambitech3.ogg', 'sound/ambience/ambimystery.ogg') /area/station/telecomms/chamber - name = "\improper Telecoms Central Compartment" + name = "Центральное Отделение Телекоммуникаций" icon_state = "tcomms" // These areas are needed for MetaStation's AI sat /area/station/turret_protected/tcomfoyer - name = "\improper Telecoms Foyer" + name = "Фойе Телекоммуникаций" icon_state = "tcomms" ambientsounds = list('sound/ambience/ambisin2.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/ambigen10.ogg') /area/station/turret_protected/tcomeast - name = "\improper Telecoms East Wing" + name = "Восточное Крыло Телекоммуникаций" icon_state = "tcomms" ambientsounds = list('sound/ambience/ambisin2.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/ambigen10.ogg') /area/station/telecomms/computer - name = "\improper Telecoms Control Room" + name = "Комната Управления Телекоммуникациями" icon_state = "tcomms" sound_environment = SOUND_AREA_MEDIUM_SOFTFLOOR /area/station/telecomms/server - name = "\improper Telecoms Server Room" + name = "Серверная Комната Телекоммуникаций" icon_state = "tcomms" diff --git a/code/game/area/ss13_areas/command_areas.dm b/code/game/area/ss13_areas/command_areas.dm index 1e63b839053e..16f4447f7b3b 100644 --- a/code/game/area/ss13_areas/command_areas.dm +++ b/code/game/area/ss13_areas/command_areas.dm @@ -2,73 +2,73 @@ //Command /area/station/command/bridge - name = "\improper Bridge" + name = "Мостик" icon_state = "bridge" ambientsounds = list('sound/ambience/signal.ogg') sound_environment = SOUND_AREA_STANDARD_STATION /area/station/command/meeting_room - name = "\improper Heads of Staff Meeting Room" + name = "Конференц-Зал Командования" icon_state = "meeting" sound_environment = SOUND_AREA_MEDIUM_SOFTFLOOR /area/station/command/office/captain - name = "\improper Captain's Office" + name = "Офис Капитана" icon_state = "captainoffice" sound_environment = SOUND_AREA_WOODFLOOR /area/station/command/office/captain/bedroom - name = "\improper Captain's Bedroom" + name = "Каюта Капитана" icon_state = "captain" /area/station/command/office/hop - name = "\improper Head of Personnel's Quarters" + name = "Кабинет Главы Персонала" icon_state = "hop" /area/station/command/office/rd - name = "\improper Research Director's Quarters" + name = "Кабинет Директора Исследований" icon_state = "rd" /area/station/command/office/ce - name = "\improper Chief Engineer's Quarters" + name = "Кабинет Главного Инженера" icon_state = "ce" /area/station/command/office/hos - name = "\improper Head of Security's Quarters" + name = "Кабинет Главы Службы Безопасности" icon_state = "hos" /area/station/command/office/cmo - name = "\improper Chief Medical Officer's Quarters" + name = "Кабинет Главного Врача" icon_state = "CMO" /area/station/command/office/ntrep - name = "\improper Nanotrasen Representative's Office" + name = "Кабинет Представителя НТ" icon_state = "ntrep" /area/station/command/office/blueshield - name = "\improper Blueshield's Office" + name = "Кабинет Синего Щита" icon_state = "blueshield" /area/station/command/teleporter - name = "\improper Teleporter" + name = "Телепортерная" icon_state = "teleporter" ambientsounds = ENGINEERING_SOUNDS /area/station/command/gateway - name = "\improper Gateway" + name = "Гейт" icon_state = "gateway" ambientsounds = ENGINEERING_SOUNDS sound_environment = SOUND_AREA_STANDARD_STATION /area/station/command/vault - name = "\improper Vault" + name = "Хранилище" icon_state = "nuke_storage" /area/station/command/server - name = "\improper Messaging Server Room" + name = "Серверная Комната Обработки Сообщений" icon_state = "server" sound_environment = SOUND_AREA_STANDARD_STATION /area/station/command/customs - name = "Customs" + name = "Контрольно-Пропускной Пункт Командования" icon_state = "checkpoint1" diff --git a/code/game/area/ss13_areas/engineering_areas.dm b/code/game/area/ss13_areas/engineering_areas.dm index aa68e2d90e61..3da390f08d74 100644 --- a/code/game/area/ss13_areas/engineering_areas.dm +++ b/code/game/area/ss13_areas/engineering_areas.dm @@ -1,14 +1,14 @@ // Atmos /area/station/engineering/atmos - name = "Atmospherics" + name = "Атмосферный Отдел" icon_state = "atmos" /area/station/engineering/atmos/control - name = "Atmospherics Control Room" + name = "Комната Контроля Атмосферы" icon_state = "atmosctrl" /area/station/engineering/atmos/distribution - name = "Atmospherics Distribution Loop" + name = "Атмосферный Распределительный Контур" icon_state = "atmos" // general engineering @@ -17,52 +17,52 @@ sound_environment = SOUND_AREA_LARGE_ENCLOSED /area/station/engineering/smes - name = "\improper Engineering SMES" + name = "Инженерные СМЕСы" icon_state = "engine_smes" dynamic_lighting = DYNAMIC_LIGHTING_FORCED /area/station/engineering/control - name = "Engineering" + name = "Инженерный Отдел" icon_state = "engine_control" /area/station/engineering/break_room - name = "\improper Engineering Foyer" + name = "Фойе Инженерного Отдела" icon_state = "engibreak" sound_environment = SOUND_AREA_SMALL_ENCLOSED /area/station/engineering/break_room/secondary - name = "\improper Secondary Engineering Foyer" + name = "Дополнительное Фойе Инженерного Отдела" /area/station/engineering/equipmentstorage - name = "Engineering Equipment Storage" + name = "Инженерный Склад Снаряжения" icon_state = "engilocker" sound_environment = SOUND_AREA_SMALL_ENCLOSED /area/station/engineering/hardsuitstorage - name = "\improper Engineering Hardsuit Storage" + name = "Инженерный Склад ВКД" icon_state = "engi" /area/station/engineering/controlroom - name = "\improper Engineering Control Room" + name = "Инженерная Комната Управления" icon_state = "engine_monitoring" /area/station/engineering/gravitygenerator - name = "\improper Gravity Generator" + name = "Генератор Гравитации" icon_state = "gravgen" /area/station/engineering/ai_transit_tube - name = "\improper Ai Minisat Tranit Tube" + name = "Транзитная Труба Спутника ИИ" icon_state = "ai" sound_environment = SOUND_AREA_SMALL_ENCLOSED // engine areas /area/station/engineering/engine - name = "\improper Engine" + name = "Двигатель" icon_state = "engine" /area/station/engineering/engine/supermatter - name = "\improper Supermatter Engine" + name = "Двигатель Суперматерии" sound_environment = SOUND_AREA_SMALL_ENCLOSED //Solars @@ -75,37 +75,37 @@ sound_environment = SOUND_AREA_SPACE /area/station/engineering/solar/auxport - name = "\improper Fore Port Solar Array" + name = "Северо-Западные Солнечные Панели" icon_state = "FPsolars" /area/station/engineering/solar/auxstarboard - name = "\improper Fore Starboard Solar Array" + name = "Северо-Восточные Солнечные Панели" icon_state = "FSsolars" /area/station/engineering/solar/fore - name = "\improper Fore Solar Array" + name = "Северные Солнечные Панели" icon_state = "yellow" /area/station/engineering/solar/aft - name = "\improper Aft Solar Array" + name = "Южные Солнечные Панели" icon_state = "Asolars" /area/station/engineering/solar/starboard - name = "\improper Starboard Solar Array" + name = "Восточные Солнечные Панели" icon_state = "Ssolars" /area/station/engineering/solar/starboard/aft - name = "\improper Aft Starboard Solar Array" + name = "Юго-Восточные Солнечные Панели" icon_state = "ASsolars" /area/station/engineering/solar/port - name = "\improper Aft Port Solar Array" + name = "Юго-Западные Солнечные Панели" icon_state = "APsolars" /area/station/engineering/secure_storage - name = "Engineering Secure Storage" + name = "Инженерное Защищенное Хранилище" icon_state = "engine_storage" /area/station/engineering/tech_storage - name = "Technical Storage" + name = "Техническое Хранилище" icon_state = "techstorage" diff --git a/code/game/area/ss13_areas/legal_areas.dm b/code/game/area/ss13_areas/legal_areas.dm index c366e054fbcf..45c91f56cd3b 100644 --- a/code/game/area/ss13_areas/legal_areas.dm +++ b/code/game/area/ss13_areas/legal_areas.dm @@ -1,6 +1,6 @@ /area/station/legal/courtroom - name = "\improper Courtroom" + name = "Зал Суда" icon_state = "courtroom" /area/station/legal/courtroom/gallery @@ -8,12 +8,12 @@ icon_state = "courtroom" /area/station/legal/lawoffice - name = "\improper Law Office" + name = "Юридический Отдел" icon_state = "law" sound_environment = SOUND_AREA_SMALL_SOFTFLOOR /area/station/legal/magistrate - name = "\improper Magistrate's Office" + name = "Офис Магистрата" icon_state = "magistrate" sound_environment = SOUND_AREA_SMALL_SOFTFLOOR diff --git a/code/game/area/ss13_areas/maintenance_areas.dm b/code/game/area/ss13_areas/maintenance_areas.dm index 5cdf15bb5ee3..985206ea426c 100644 --- a/code/game/area/ss13_areas/maintenance_areas.dm +++ b/code/game/area/ss13_areas/maintenance_areas.dm @@ -6,182 +6,182 @@ sound_environment = SOUND_AREA_TUNNEL_ENCLOSED /area/station/maintenance/atmos_control - name = "Atmospherics Maintenance" + name = "Технические Тоннели Атмоса" icon_state = "fpmaint" /area/station/maintenance/engimaint - name = "Engineering Maintenance" + name = "Технические Тоннели Инженерии" icon_state = "engimaint" /area/station/maintenance/medmaint - name = "Medical Maintenance" + name = "Технические Тоннели Медицинского Отдела" icon_state = "medmaint" /area/station/maintenance/fpmaint - name = "Fore-Port Maintenance" + name = "Северо-Западные Технические Тоннели" icon_state = "fpmaint" /area/station/maintenance/fpmaint2 - name = "Fore-Port Secondary Maintenance" + name = "Вспомогательные Северо-Западные Технические Тоннели" icon_state = "fpmaint" /area/station/maintenance/fsmaint - name = "Fore-Starboard Maintenance" + name = "Северо-Восточные Технические Тоннели" icon_state = "fsmaint" /area/station/maintenance/fsmaint2 - name = "Fore-Starboard Secondary Maintenance" + name = "Вспомогательные Северо-Восточные Технические Тоннели" icon_state = "fsmaint" /area/station/maintenance/asmaint - name = "Aft-Starboard Maintenance" + name = "Юго-Восточные Технические Тоннели" icon_state = "asmaint" /area/station/maintenance/asmaint2 - name = "Aft-Starboard Secondary Maintenance" + name = "Вспомогательные Юго-Восточные Технические Тоннели" icon_state = "asmaint" /area/station/maintenance/apmaint - name = "Aft-Port Maintenance" + name = "Юго-Западные Технические Тоннели" icon_state = "apmaint" /area/station/maintenance/apmaint2 - name = "Aft-Port Secondary Maintenance" + name = "Вспомогательные Юго-Западные Технические Тоннели" icon_state = "apmaint" /area/station/maintenance/maintcentral - name = "Central Maintenance" + name = "Центральные Технические Тоннели" icon_state = "maintcentral" /area/station/maintenance/maintcentral2 - name = "Central Secondary Maintenance" + name = "Вспомогательные Центральные Технические Тоннели" icon_state = "maintcentral" /area/station/maintenance/fore - name = "Fore Maintenance" + name = "Северные Технические Тоннели" icon_state = "fmaint" /area/station/maintenance/fore2 - name = "Fore Secondary Maintenance" + name = "Вспомогательные Северные Технические Тоннели" icon_state = "fmaint" /area/station/maintenance/aft - name = "Aft Maintenance" + name = "Южные Технические Тоннели" icon_state = "amaint" /area/station/maintenance/aft2 - name = "Aft Secondary Maintenance" + name = "Вспомогательные Южные Технические Тоннели" icon_state = "amaint" /area/station/maintenance/starboard - name = "Starboard Maintenance" + name = "Восточные Технические Тоннели" icon_state = "smaint" /area/station/maintenance/starboard2 - name = "Starboard Secondary Maintenance" + name = "Вспомогательные Восточные Технические Тоннели" icon_state = "smaint" /area/station/maintenance/port - name = "Port Maintenance" + name = "Западные Технические Тоннели" icon_state = "pmaint" /area/station/maintenance/port2 - name = "Port Secondary Maintenance" + name = "Вспомогательные Западные Технические Тоннели" icon_state = "pmaint" /area/station/maintenance/storage - name = "Atmospherics Maintenance" + name = "Технические Тоннели Турбины" icon_state = "atmosmaint" /area/station/maintenance/incinerator - name = "\improper Incinerator" + name = "Мусоросжигатель" icon_state = "incin" /area/station/maintenance/turbine - name = "\improper Turbine" + name = "Турбина" icon_state = "turbine" /area/station/maintenance/disposal - name = "Waste Disposal" + name = "Комната Утилизации" icon_state = "disposals" /area/station/maintenance/genetics - name = "Genetics Maintenance" + name = "Технические Тоннели Генетики" icon_state = "asmaint" /area/station/maintenance/electrical - name = "Electrical Maintenance" + name = "Необслуживаемое Помещение Электрооборудования" icon_state = "elect" /area/station/maintenance/abandonedbar - name = "Maintenance Bar" + name = "Заброшенный Бар" icon_state = "oldbar" apc_starts_off = TRUE /area/station/maintenance/library - name = "Abandoned Library" + name = "Заброшенная Библиотека" icon_state = "library" apc_starts_off = TRUE /area/station/maintenance/theatre - name = "\improper Abandoned Theatre" + name = "Заброшеный Театр" icon_state = "Theatre" sound_environment = SOUND_AREA_WOODFLOOR /area/station/maintenance/spacehut - name = "Space Hut" + name = "Космическая Хата" icon_state = "spacehut" apc_starts_off = TRUE /area/station/maintenance/electrical_shop - name ="Electronics Den" + name ="Уголок Электроники" icon_state = "elect" /area/station/maintenance/gambling_den - name = "Gambling Den" + name = "Игровой Зал" icon_state = "yellow" /area/station/maintenance/consarea - name = "Alternate Construction Area" + name = "Альтернативная Зона Строительства" icon_state = "construction" /area/station/maintenance/auxsolarport - name = "\improper Fore Port Solar Maintenance" + name = "Северо-Западные Солнечные Панели" icon_state = "FPctrl" /area/station/maintenance/starboardsolar - name = "\improper Starboard Solar Maintenance" + name = "Юго-Восточные Солнечные Панели" icon_state = "ASctrl" /area/station/maintenance/starboardsolar/aft - name = "\improper Aft Starboard Solar Maintenance" + name = "Юго-Восточные Солнечные Панели" icon_state = "ASctrl" /area/station/maintenance/portsolar - name = "\improper Aft Port Solar Maintenance" + name = "Юго-Западные Солнечные Панели" icon_state = "APctrl" /area/station/maintenance/auxsolarstarboard - name = "\improper Fore Starboard Solar Maintenance" + name = "Северо-Восточные Солнечные Панели" icon_state = "FSctrl" /// Derelict Assembly Line /area/station/maintenance/assembly_line - name = "\improper Assembly Line" + name = "Комната Сборочной Линии" icon_state = "ass_line" apc_starts_off = TRUE /area/station/maintenance/abandoned_garden - name = "\improper Abandoned Garden" + name = "Заброшенный Сад" icon_state = "hydro" sound_environment = SOUND_AREA_SMALL_ENCLOSED /area/station/maintenance/xenobio_north - name = "Xenobiology North Maintenance" + name = "Северные Технические Тоннели Ксенобиологии" icon_state = "xenobio_north_maint" /area/station/maintenance/xenobio_south - name = "Xenobiology South Maintenance" + name = "Южные Технические Тоннели Ксенобиологии" icon_state = "xenobio_south_maint" diff --git a/code/game/area/ss13_areas/medical_areas.dm b/code/game/area/ss13_areas/medical_areas.dm index 12c18beab250..087d8af756d8 100644 --- a/code/game/area/ss13_areas/medical_areas.dm +++ b/code/game/area/ss13_areas/medical_areas.dm @@ -6,36 +6,36 @@ max_ambience_cooldown = 180 SECONDS /area/station/medical/medbay - name = "\improper Medbay" + name = "Медицинский Отдел" icon_state = "medbay" //Medbay is a large area, these additional areas help level out APC load. /area/station/medical/medbay2 - name = "\improper Medbay" + name = "Медицинский Отдел" icon_state = "medbay" /area/station/medical/medbay3 - name = "\improper Medbay" + name = "Медицинский Отдел" icon_state = "medbay" /area/station/medical/storage - name = "Medical Storage" + name = "Склад Медицинского Отдела" icon_state = "medbaystorage" /area/station/medical/reception - name = "\improper Medbay Reception" + name = "Ресепшен Медицинского Отдела" icon_state = "medbaylobby" /area/station/medical/psych - name = "\improper Psych Room" + name = "Офис Психолога" icon_state = "medbaypsych" /area/station/medical/break_room - name = "\improper Medbay Break Room" + name = "Комната Отдыха Медицинского Отдела" icon_state = "medbaybreak" /area/station/medical/patients_rooms - name = "\improper Patient's Rooms" + name = "Палаты Пациентов" icon_state = "patients" sound_environment = SOUND_AREA_SMALL_SOFTFLOOR @@ -50,68 +50,68 @@ sound_environment = SOUND_AREA_SMALL_SOFTFLOOR /area/station/medical/ward - name = "\improper Medbay Patient Ward" + name = "Комната Ожидания Медицинского Отдела" icon_state = "patientsward" /area/station/medical/coldroom - name = "Cold Room" + name = "Морозильная Камера Медицинского Отдела" icon_state = "coldroom" /area/station/medical/storage/secondary - name = "Medical Secondary Storage" + name = "Дополнительный Склад Медицинского Отдела" icon_state = "medbaysecstorage" /area/station/medical/virology - name = "Virology" + name = "Вирусология" icon_state = "virology" /area/station/medical/virology/lab - name = "\improper Virology Laboratory" + name = "Лаборатория Вирусологии" icon_state = "virology" /area/station/medical/morgue - name = "\improper Morgue" + name = "Морг" icon_state = "morgue" ambientsounds = SPOOKY_SOUNDS is_haunted = TRUE sound_environment = SOUND_AREA_SMALL_ENCLOSED /area/station/medical/chemistry - name = "Chemistry" + name = "Химическая Лаборатория Медицинского Отдела" icon_state = "chem" /area/station/medical/surgery - name = "\improper Surgery" + name = "Операционное Отделение" icon_state = "surgery" /area/station/medical/surgery/primary - name = "Surgery 1" + name = "Первая Операционная" icon_state = "surgery1" /area/station/medical/surgery/secondary - name = "Surgery 2" + name = "Вторая Операционная" icon_state = "surgery2" /area/station/medical/surgery/observation - name = "Surgery Observation" + name = "Комната Оперативного Наблюдения" icon_state = "surgery" /area/station/medical/cryo - name = "Cryogenics" + name = "Криогеника" icon_state = "cryo" /area/station/medical/exam_room - name = "\improper Exam Room" + name = "Комната Осмотра Медицинского Отдела" icon_state = "exam_room" /area/station/medical/cloning - name = "\improper Cloning Lab" + name = "Лаборатория Клонирования" icon_state = "cloning" /area/station/medical/sleeper - name = "\improper Medical Treatment Center" + name = "Центр Медицинского Лечения" icon_state = "exam_room" /area/station/medical/paramedic - name = "Paramedic" + name = "Офис Парамедика" icon_state = "paramedic" diff --git a/code/game/area/ss13_areas/public_areas.dm b/code/game/area/ss13_areas/public_areas.dm index f5c9408384e1..fa3eb9d93638 100644 --- a/code/game/area/ss13_areas/public_areas.dm +++ b/code/game/area/ss13_areas/public_areas.dm @@ -8,72 +8,72 @@ sound_environment = SOUND_AREA_STANDARD_STATION /area/station/hallway/primary/fore - name = "\improper Fore Primary Hallway" + name = "Основной Северный Коридор" icon_state = "hallF" /area/station/hallway/primary/fore/west - name = "\improper Fore West Hallway" + name = "Северо-Западный Коридор" /area/station/hallway/primary/fore/east - name = "\improper Fore East Hallway" + name = "Северо-Восточный Коридор" /area/station/hallway/primary/fore/north - name = "\improper Fore North Hallway" + name = "Северный Коридор" /area/station/hallway/primary/fore/south - name = "\improper Fore South Hallway" + name = "Северо-Южный Коридор" /area/station/hallway/primary/starboard - name = "\improper Starboard Primary Hallway" + name = "Основной Восточный Коридор" icon_state = "hallS" /area/station/hallway/primary/starboard/west - name = "\improper Starboard West Hallway" + name = "Восточно-Западный Коридор" /area/station/hallway/primary/starboard/east - name = "\improper Starboard East Hallway" + name = "Восточный Коридор" /area/station/hallway/primary/starboard/north - name = "\improper Starboard North Hallway" + name = "Восточно-Северный Коридор" /area/station/hallway/primary/starboard/south - name = "\improper Starboard South Hallway" + name = "Восточно-Южный Коридор" /area/station/hallway/primary/aft - name = "\improper Aft Primary Hallway" + name = "Основной Южный Коридор" icon_state = "hallA" /area/station/hallway/primary/aft/west - name = "\improper Aft West Hallway" + name = "Юго-Западный Коридор" /area/station/hallway/primary/aft/east - name = "\improper Aft East Hallway" + name = "Юго-Восточный Коридор" /area/station/hallway/primary/aft/north - name = "\improper Aft North Hallway" + name = "Юго-Северный Коридор" /area/station/hallway/primary/aft/south - name = "\improper Aft South Hallway" + name = "Южный Коридор" /area/station/hallway/primary/port - name = "\improper Port Primary Hallway" + name = "Основной Западный Коридор" icon_state = "hallP" /area/station/hallway/primary/port/west - name = "\improper Port West Hallway" + name = "Западный Коридор" /area/station/hallway/primary/port/east - name = "\improper Port East Hallway" + name = "Западно-Восточный Коридор" /area/station/hallway/primary/port/north - name = "\improper Port North Hallway" + name = "Западно-Северный Коридор" /area/station/hallway/primary/port/south - name = "\improper Port South Hallway" + name = "Западно-Южный Коридор" /area/station/hallway/primary/central - name = "\improper Central Primary Hallway" + name = "Центральный Основной Коридор" icon_state = "hallC" /area/station/hallway/primary/central/north @@ -117,15 +117,15 @@ name = "Command-Engineering Bridge" /area/station/hallway/secondary/exit - name = "\improper Escape Shuttle Hallway" + name = "Коридор Эвакуационного Шаттла" icon_state = "escape" /area/station/hallway/secondary/garden - name = "\improper Garden" + name = "Сад" icon_state = "garden" /area/station/hallway/secondary/entry - name = "\improper Arrival Shuttle Hallway" + name = "Коридор Шаттла Прибытия" icon_state = "entry" /area/station/hallway/secondary/entry/north @@ -137,65 +137,65 @@ /area/station/hallway/secondary/entry/west /area/station/hallway/secondary/entry/lounge - name = "\improper Arrivals Lounge" + name = "Зал Прибытия" /area/station/hallway/secondary/bridge - name = "\improper Command Hallway" + name = "Коридор Командования" icon_state = "hallC" // Other public areas /area/station/public/dorms - name = "\improper Dormitories" + name = "Дормитории" icon_state = "dorms" sound_environment = SOUND_AREA_STANDARD_STATION /area/crew_quarters/toilet/aux - name = "\improper Auxiliary Toilets" + name = "Вспомогательные Туалеты" /area/station/public/sleep - name = "\improper Primary Cryogenic Dormitories" + name = "Криохранилище Дормитория" icon_state = "Sleep" valid_territory = FALSE /area/station/public/sleep/secondary - name = "\improper Secondary Cryogenic Dormitories" + name = "Вторичное Криохранилище Дормитория" icon_state = "Sleep" /area/station/public/locker - name = "\improper Locker Room" + name = "Бытовое Помещение" icon_state = "locker" /area/station/public/toilet - name = "\improper Dormitory Toilets" + name = "Туалеты Дормиторий" icon_state = "toilet" sound_environment = SOUND_AREA_SMALL_ENCLOSED /area/station/public/toilet/unisex - name = "\improper Unisex Restroom" + name = "Общие Туалеты" /area/station/public/toilet/lockerroom - name = "\improper Locker Toilets" + name = "Бытовые Туалеты" /area/station/public/fitness - name = "\improper Fitness Room" + name = "Фитнес-Зал" icon_state = "fitness" /area/station/public/arcade - name = "\improper Arcade" + name = "Аркаданый Зал" icon_state = "arcade" /area/station/public/mrchangs - name = "\improper Mr Chang's" + name = "Забегаловка Мистера Чанга" icon_state = "changs" /area/station/public/pet_store - name = "\improper Pet Store" + name = "Зоомагазин" icon_state = "pet_store" /area/station/public/vacant_office - name = "\improper Vacant Office" + name = "Свободный Офис" icon_state = "vacantoffice" /area/station/public/vacant_office/secondary @@ -205,31 +205,31 @@ sound_environment = SOUND_AREA_STANDARD_STATION /area/station/public/storage/tools/auxiliary - name = "Auxiliary Tool Storage" + name = "Вспомогательное Хранилище Инструментов" icon_state = "auxstorage" /area/station/public/storage/tools - name = "Primary Tool Storage" + name = "Основное Хранилище Инструментов" icon_state = "primarystorage" /area/station/public/storage/art - name = "Art Supply Storage" + name = "Хранилище Художественных Принадлежностей" icon_state = "storage" /area/station/public/storage/emergency - name = "Starboard Emergency Storage" + name = "Восточное Аварийное Хранилище" icon_state = "emergencystorage" /area/station/public/storage/emergency/port - name = "Port Emergency Storage" + name = "Западное Аварийное Хранилище" icon_state = "emergencystorage" /area/station/public/storage/office - name = "Office Supplies" + name = "Комната Канцелярских Принадлежностей" icon_state = "office_supplies" /area/station/public/construction - name = "\improper Construction Area" + name = "Зона Для Строительства" icon_state = "construction" ambientsounds = ENGINEERING_SOUNDS sound_environment = SOUND_AREA_STANDARD_STATION diff --git a/code/game/area/ss13_areas/science_areas.dm b/code/game/area/ss13_areas/science_areas.dm index 7a27373e7295..3f1532fd2db8 100644 --- a/code/game/area/ss13_areas/science_areas.dm +++ b/code/game/area/ss13_areas/science_areas.dm @@ -1,37 +1,37 @@ // Robotics areas /area/station/science/robotics - name = "\improper Robotics Lab" + name = "Робототехника" icon_state = "robo" /area/station/science/robotics/chargebay - name = "\improper Mech Bay" + name = "Мех. Отсек РНД" icon_state = "mechbay" /area/station/science/robotics/showroom - name = "\improper Robotics Showroom" + name = "Салон Робототехники" icon_state = "showroom" // Experimentor /area/station/science/explab - name = "\improper E.X.P.E.R.I-MENTOR Lab" + name = "Лаборатория E.X.P.E.R.I-MENTOR" icon_state = "scilab" /area/station/science/explab/chamber - name = "\improper E.X.P.E.R.I-MENTOR Chamber" + name = "Камера E.X.P.E.R.I-MENTOR" icon_state = "scitest" /area/station/science/research - name = "Research Division" + name = "Отдел Исследований" icon_state = "sci" /area/station/science/break_room - name = "\improper Science Break Room" + name = "Комната Отдыха РНД" icon_state = "scibreak" /area/station/science/genetics - name = "\improper Genetics Lab" + name = "Лаборатория Генетики" icon_state = "genetics" @@ -39,59 +39,59 @@ sound_environment = SOUND_AREA_STANDARD_STATION /area/station/science/rnd - name = "Research and Development" + name = "Отдел Исследований" icon_state = "rnd" /area/station/science/hallway - name = "\improper Research Lab" + name = "Коридор РНД" icon_state = "sci" /area/station/science/supermatter - name = "\improper Supermatter Lab" + name = "Лаборатория Суперматерии" icon_state = "scilab" /area/station/science/xenobiology - name = "\improper Xenobiology Lab" + name = "Лаборатория Ксенобиологии" icon_state = "xenobio" xenobiology_compatible = TRUE /area/station/science/xenobiology/xenoflora_storage - name = "Xenoflora Storage" + name = "Хранилище Ксенофлоры" icon_state = "scilab" /area/station/science/xenobiology/xenoflora - name = "\improper Xenoflora Lab" + name = "Лаборатория Ксенофлоры" icon_state = "scilab" /area/station/science/storage - name = "\improper Science Toxins Storage" + name = "Хранилище Токсинов РНД" icon_state = "toxstorage" /area/station/science/toxins/test - name = "\improper Toxins Test Area" + name = "Тестовая Комната Токиснов РНД" icon_state = "toxtest" valid_territory = FALSE /area/station/science/toxins/mixing - name = "\improper Toxins Mixing Room" + name = "Комната Смешивания Токсинов РНД" icon_state = "toxmix" /area/station/science/toxins/launch - name = "\improper Toxins Launch Room" + name = "Комната Запуска Токсинов РНД" icon_state = "toxlaunch" /area/station/science/misc_lab - name = "\improper Research Testing Lab" + name = "Лаборатория Химии РНД" icon_state = "scichem" /area/station/science/test_chamber - name = "\improper Research Testing Chamber" + name = "Камера Химии РНД" icon_state = "scitest" /area/station/science/server - name = "\improper Server Room" + name = "Серверная Комната" icon_state = "server" /area/station/science/server/coldroom - name = "\improper Server Coldroom" + name = "Холодильная Камера Серверной" icon_state = "servercold" diff --git a/code/game/area/ss13_areas/security_areas.dm b/code/game/area/ss13_areas/security_areas.dm index 4729423116c2..097827059de0 100644 --- a/code/game/area/ss13_areas/security_areas.dm +++ b/code/game/area/ss13_areas/security_areas.dm @@ -4,15 +4,15 @@ sound_environment = SOUND_AREA_STANDARD_STATION /area/station/security/main - name = "\improper Security Office" + name = "Офис Службы Безопасности" icon_state = "securityoffice" /area/station/security/lobby - name = "\improper Security Lobby" + name = "Лобби Службы Безопасности" icon_state = "securitylobby" /area/station/security/brig - name = "\improper Brig" + name = "Бриг" icon_state = "brig" /area/station/security/brig/prison_break() @@ -24,13 +24,13 @@ ..() /area/station/security/permabrig - name = "\improper Prison Wing" + name = "Тюремное Крыло. Пермабриг" icon_state = "sec_prison_perma" fast_despawn = TRUE can_get_auto_cryod = FALSE /area/station/security/prison - name = "\improper Prison Wing" + name = "Тюремное Крыло" icon_state = "sec_prison" can_get_auto_cryod = FALSE @@ -44,79 +44,79 @@ ..() /area/station/security/prison/cell_block - name = "\improper Prison Cell Block" + name = "Тюремный Блок" icon_state = "brig" /area/station/security/prison/cell_block/A - name = "\improper Prison Cell Block A" + name = "Тюремный Блок А" icon_state = "brigcella" /area/station/security/execution - name = "Execution" + name = "Комната Казни" icon_state = "execution" can_get_auto_cryod = FALSE /area/station/security/processing - name = "Prisoner Processing" + name = "Процедурная Службы Безопасности" icon_state = "prisonerprocessing" can_get_auto_cryod = FALSE /area/station/security/interrogation - name = "Interrogation" + name = "Допросная" icon_state = "interrogation" can_get_auto_cryod = FALSE /area/station/security/storage - name = "Security Equipment Storage" + name = "Склад Снаряжения Службы Безопасности" icon_state = "securityequipmentstorage" /area/station/security/evidence - name = "\improper Evidence Room" + name = "Комната Хранения Улик" icon_state = "evidence" /area/station/security/prisonlockers - name = "\improper Prisoner Lockers" + name = "Комната Шкафов Заключенных" icon_state = "sec_prison_lockers" can_get_auto_cryod = FALSE /area/station/security/prisonershuttle - name = "\improper Security Prisoner Shuttle" + name = "Челнок Службы Безопасности Для Заключенных" icon_state = "security" can_get_auto_cryod = FALSE /area/station/security/warden - name = "\improper Warden's Office" + name = "Офис Смотрителя" icon_state = "Warden" sound_environment = SOUND_AREA_SMALL_SOFTFLOOR /area/station/security/armory - name = "\improper Armory" + name = "Оружейная" icon_state = "armory" /area/station/security/armory/secure - name = "\improper Secure Armory" + name = "Защищенная Оружейная" icon_state = "secarmory" /area/station/security/detective - name = "\improper Detective's Office" + name = "Офис Детектива" icon_state = "detective" ambientsounds = list('sound/ambience/ambidet1.ogg', 'sound/ambience/ambidet2.ogg') /area/station/security/range - name = "\improper Firing Range" + name = "Стрельбище" icon_state = "firingrange" // Checkpoints /area/station/security/checkpoint - name = "\improper Security Checkpoint" + name = "Контрольно-Пропускной Пункт Службы Безопасности" icon_state = "checkpoint1" /area/station/security/checkpoint/secondary - name = "\improper Security Checkpoint" + name = "Дополнительный Контрольно-Пропускной Пункт Службы Безопасности" icon_state = "checkpoint1" // Solitary /area/station/security/permasolitary - name = "Solitary Confinement" + name = "Одиночная Камера" icon_state = "solitary" diff --git a/code/game/area/ss13_areas/service_areas.dm b/code/game/area/ss13_areas/service_areas.dm index 4639602103e4..317be01469ee 100644 --- a/code/game/area/ss13_areas/service_areas.dm +++ b/code/game/area/ss13_areas/service_areas.dm @@ -1,30 +1,30 @@ /area/station/service/cafeteria - name = "\improper Cafe" + name = "Кафетерий" icon_state = "cafeteria" /area/station/service/kitchen - name = "\improper Kitchen" + name = "Кухня" icon_state = "kitchen" /area/station/service/bar - name = "\improper Bar" + name = "Бар" icon_state = "bar" sound_environment = SOUND_AREA_WOODFLOOR /area/station/service/theatre - name = "\improper Theatre" + name = "Театр" icon_state = "Theatre" sound_environment = SOUND_AREA_WOODFLOOR /area/station/service/library - name = "\improper Library" + name = "Библиотека" icon_state = "library" sound_environment = SOUND_AREA_LARGE_SOFTFLOOR /area/station/service/chapel - name = "\improper Chapel" + name = "Церковь" icon_state = "chapel" ambientsounds = HOLY_SOUNDS is_haunted = TRUE @@ -32,37 +32,37 @@ valid_territory = FALSE /area/station/service/chapel/office - name = "\improper Chapel Office" + name = "Офис Священника" icon_state = "chapeloffice" /area/station/service/clown - name = "\improper Clown's Office" + name = "Офис Клоуна" icon_state = "clown_office" /area/station/service/clown/secret - name = "\improper Top Secret Clown HQ" + name = "Сверхсекретная Штаб-Квартира Клоуна" requires_power = FALSE /area/station/service/mime - name = "\improper Mime's Office" + name = "Офис Мима" icon_state = "mime_office" /area/station/service/barber - name = "\improper Barber Shop" + name = "Парикмахерская" icon_state = "barber" /area/station/service/janitor - name = "\improper Custodial Closet" + name = "Каморка Уборщика" icon_state = "janitor" sound_environment = SOUND_AREA_SMALL_ENCLOSED /area/station/service/hydroponics - name = "Hydroponics" + name = "Гидропоника" icon_state = "hydro" sound_environment = SOUND_AREA_STANDARD_STATION /area/station/service/expedition - name = "\improper Expedition room" + name = "Комната Экспедиции" icon_state = "expedition" ambientsounds = ENGINEERING_SOUNDS sound_environment = SOUND_AREA_STANDARD_STATION diff --git a/code/game/area/ss13_areas/supply_areas.dm b/code/game/area/ss13_areas/supply_areas.dm index 2344b78525e8..3bfe8d3351d0 100644 --- a/code/game/area/ss13_areas/supply_areas.dm +++ b/code/game/area/ss13_areas/supply_areas.dm @@ -1,39 +1,39 @@ /area/station/supply - name = "\improper Quartermasters" + name = "Квартирмейстер" icon_state = "quart" sound_environment = SOUND_AREA_STANDARD_STATION /area/station/supply/lobby - name = "\improper Cargo Lobby" + name = "Лобби Карго" icon_state = "cargooffice" /area/station/supply/sorting - name = "\improper Delivery Office" + name = "Офис Доставки" icon_state = "cargobay" sound_environment = SOUND_AREA_STANDARD_STATION /area/station/supply/office - name = "\improper Cargo Office" + name = "Офис Карго" icon_state = "cargooffice" /area/station/supply/storage - name = "\improper Cargo Bay" + name = "Грузовой Отсек" icon_state = "cargobay" sound_environment = SOUND_AREA_LARGE_ENCLOSED /area/station/supply/qm - name = "\improper Quartermaster's Office" + name = "Офис Квартирмейстера" icon_state = "qm" /area/station/supply/miningdock - name = "\improper Mining Dock" + name = "Шахтный Док" icon_state = "mining" /area/station/supply/miningstorage - name = "Mining Storage" + name = "Склад Шахты" icon_state = "green" /area/station/supply/mechbay - name = "\improper Mech Bay" + name = "Мех. Отсек Шахты" icon_state = "yellow" diff --git a/code/game/dna/mutations/disabilities.dm b/code/game/dna/mutations/disabilities.dm index 60c4e85bff4e..de975c698d86 100644 --- a/code/game/dna/mutations/disabilities.dm +++ b/code/game/dna/mutations/disabilities.dm @@ -83,7 +83,7 @@ if(1) H.emote("twitch") if(2 to 3) - H.say("[prob(50) ? ";" : ""][pick("SHIT", "PISS", "FUCK", "CUNT", "COCKSUCKER", "MOTHERFUCKER", "TITS")]") + H.say("[prob(50) ? ";" : ""][pick("ДЕРЬМО", "МОЧА", "БЛЯТЬ", "ПИЗДА", "ХУЕСОС", "УБЛЮДОК", "СИСЬКИ", "ХУЙ", "ЖОПА", "КОКПИТАН", "ХОС ХУЕСОС", "РД УЁБОК", "ПОШЁЛ НАХУЙ", "ВЫБЛЯДОК", "ОТСОСИ", "ДОЛБОЁБ", "КУКУРУЗА", "УБЛЮДОК", "МАТЬ ТВОЮ", "ГОВНО СОБАЧЬЕ", "ЕБАТЬ ТЕБЯ", "ОНАНИСТ ЧЕРТОВ", "ЕБАТЬ", "МРАЗЬ", "ХУЙНЯ", "КУДЛАТАЯ ХУЙНЯ", "ШЛЮХА", "ПРОФУРСЕТКА", "ШАЛАВА", "ПОХУЙ", "ИДИ НА ХУЙ", "ПАСКУДА", "СВОЛОЧЬ", "МУДАК", "ПОТАСКУХА", "УЕБАН", "МАНДАВОШКА", "БЛЭТ", "ПРИДУРОК", "ДУРАК", "ИДИОТ", "ОХУЕТЬ", "ХУЕТА", "ХУЕВО", "ЁБ ТВОЮ МАТЬ", "ГОВНЮК", "НАЕБЩИК")]!") var/x_offset_old = H.pixel_x var/y_offset_old = H.pixel_y var/x_offset = H.pixel_x + rand(-2, 2) diff --git a/code/game/gamemodes/cult/cult_items.dm b/code/game/gamemodes/cult/cult_items.dm index 23ec5b39dd0e..d9668a435562 100644 --- a/code/game/gamemodes/cult/cult_items.dm +++ b/code/game/gamemodes/cult/cult_items.dm @@ -303,7 +303,7 @@ playsound(user.loc, 'sound/effects/glassbr1.ogg', 50, TRUE) curselimit++ var/message = pick(CULT_CURSES) - GLOB.major_announcement.Announce("[message] The shuttle will be delayed by [cursetime / 600] minute\s.", "System Failure", 'sound/misc/notice1.ogg') + GLOB.major_announcement.Announce("[message] Эвакуационный шаттл задерживается на [cursetime / 600] минут(-ы).", "ВНИМАНИЕ: Обнаружена неисправность в системе.", 'sound/misc/notice1.ogg') qdel(src) /obj/item/cult_shift diff --git a/code/game/gamemodes/cult/cult_mode.dm b/code/game/gamemodes/cult/cult_mode.dm index 98a73d955844..93bc76f664d9 100644 --- a/code/game/gamemodes/cult/cult_mode.dm +++ b/code/game/gamemodes/cult/cult_mode.dm @@ -303,7 +303,7 @@ SEND_SOUND(M.current, sound('sound/hallucinations/im_here1.ogg')) to_chat(M.current, "Your cult is ascendant and the red harvest approaches - you cannot hide your true nature for much longer!") addtimer(CALLBACK(src, PROC_REF(ascend), M.current), 20 SECONDS) - GLOB.major_announcement.Announce("Picking up extradimensional activity related to the Cult of [SSticker.cultdat ? SSticker.cultdat.entity_name : "Nar'Sie"] from your station. Data suggests that about [ascend_percent * 100]% of the station has been converted. Security staff are authorized to use lethal force freely against cultists. Non-security staff should be prepared to defend themselves and their work areas from hostile cultists. Self defense permits non-security staff to use lethal force as a last resort, but non-security staff should be defending their work areas, not hunting down cultists. Dead crewmembers must be revived and deconverted once the situation is under control.", "Central Command Higher Dimensional Affairs", 'sound/AI/commandreport.ogg') + GLOB.major_announcement.Announce("Обнаружение внепространственной активности, связанной с Культом [SSticker.cultdat ? SSticker.cultdat.entity_name : "Нар'Си"] на вашей станции. Данные свидетельствуют о том, что около [ascend_percent * 100]% экипажа станции было порабощено. Сотрудники службы безопасности имеют право беспрепятственно применять летальную силу против культистов. Сотрудники, не относящиеся к службе безопасности, должны быть готовы защищать себя и свои рабочие места от враждебно настроенных культистов. Самооборона предоставляет сотрудникам, не относящимся к службе безопасности, право применять летальную силу в качестве крайней меры для защиты себя и своего отдела, но не позволяет им вести охоту на членов культа. Погибшие члены экипажа должны быть реанимированы и деконвертированы, как только ситуация будет взята под контроль.", "Отдел по делам Высших Измерений.", 'sound/AI/commandreport.ogg') /datum/game_mode/proc/cult_fall() cult_ascendant = FALSE @@ -313,14 +313,14 @@ SEND_SOUND(M.current, sound('sound/hallucinations/wail.ogg')) to_chat(M.current, "The veil repairs itself, your power grows weaker...") addtimer(CALLBACK(src, PROC_REF(descend), M.current), 20 SECONDS) - GLOB.major_announcement.Announce("Paranormal activity has returned to minimal levels. \ - Security staff should minimize lethal force against cultists, using non-lethals where possible. \ - All dead cultists should be taken to medbay or robotics for immediate revival and deconversion. \ - Non-security staff may defend themselves, but should prioritize leaving any areas with cultists and reporting the cultists to security. \ - Self defense permits non-security staff to use lethal force as a last resort. Hunting down cultists may make you liable for a manslaughter charge. \ - Any access granted in response to the paranormal threat should be reset. \ - Any and all security gear that was handed out should be returned. Finally, all weapons (including improvised) should be removed from the crew.", - "Central Command Higher Dimensional Affairs", 'sound/AI/commandreport.ogg') + GLOB.major_announcement.Announce("Паранормальная активность вернулась к минимальному уровню. \ + Сотрудники службы безопасности должны свести к минимуму применение летальной силы против культистов, используя, по возможности, нелетальные средства. \ + Все мертвые культисты должны быть доставлены в медотдел, или робототехнику для немедленной реанимации и деконвертации. \ + Сотрудники, не относящиеся к службе безопасности, могут защищаться, но должны в первую очередь покинуть все зоны с наличием культистов и сообщить о них в службу безопасности. \ + Самооборона позволяет сотрудникам, не относящимся к службе безопасности, использовать летальную силу в качестве крайней меры. Охота на культистов может повлечь за собой обвинение в неправомерном нападении. \ + Любой доступ, предоставленный в ответ на паранормальную угрозу, должен быть сброшен. \ + Все выданные средства защиты должны быть возвращены. И наконец, все оружие (включая самодельное) у экипажа должно быть изъято.", + "Отдел по делам Высших Измерений.", 'sound/AI/commandreport.ogg') /datum/game_mode/proc/rise(cultist) if(!ishuman(cultist) || !iscultist(cultist)) diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index 4dcc1b987c13..0590e0c567f5 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -154,7 +154,7 @@ if(!(A in summon_areas)) // Check again to make sure they didn't move to_chat(user, "The ritual can only begin where the veil is weak - in [english_list(summon_areas)]!") return - GLOB.major_announcement.Announce("Figments from an eldritch god are being summoned into the [A.map_name] from an unknown dimension. Disrupt the ritual at all costs, before the station is destroyed! Space law and SOP are suspended. The entire crew must kill cultists on sight.", "Central Command Higher Dimensional Affairs", 'sound/AI/spanomalies.ogg') + GLOB.major_announcement.Announce("Образы древнего богоподобного существа соединяются воединно в [A.map_name] из неизвестного измерения. Прервите ритуал любой ценой, пока станция не была уничтожена! Действие космических законов и стандартных рабочих процедур приостановлено. Всему экипажу - ликвидировать культистов на месте.", "Отдел по делам Высших Измерений.", 'sound/AI/spanomalies.ogg') for(var/I in spiral_range_turfs(1, user, 1)) var/turf/T = I var/obj/machinery/shield/cult/narsie/N = new(T) diff --git a/code/game/gamemodes/malfunction/Malf_Modules.dm b/code/game/gamemodes/malfunction/Malf_Modules.dm index 85dbc3cda170..0a2f7ca05aa9 100644 --- a/code/game/gamemodes/malfunction/Malf_Modules.dm +++ b/code/game/gamemodes/malfunction/Malf_Modules.dm @@ -6,7 +6,7 @@ //The malf AI action subtype. All malf actions are subtypes of this. /datum/action/innate/ai - name = "AI Action" + name = "Действия ИИ" desc = "You aren't entirely sure what this does, but it's very beepy and boopy." background_icon_state = "bg_tech_blue" var/mob/living/silicon/ai/owner_AI //The owner AI, so we don't have to typecast every time @@ -37,13 +37,13 @@ /datum/action/innate/ai/proc/adjust_uses(amt, silent) uses += amt if(!silent && uses) - to_chat(owner, "[name] now has [uses] use[uses > 1 ? "s" : ""] remaining.") + to_chat(owner, "У [name] теперь осталось [uses] использовани[uses > 1 ? "я" : "е"].") if(!uses) if(initial(uses) > 1) //no need to tell 'em if it was one-use anyway! - to_chat(owner, "[name] has run out of uses!") + to_chat(owner, "У [name] закончились использования!") qdel(src) else - desc = "[initial(desc)] It has [uses] use\s remaining." + desc = "[initial(desc)]У этой способности осталось [uses] использований." UpdateButtonIcon() //Framework for ranged abilities that can have different effects by left-clicking stuff. @@ -65,10 +65,10 @@ /datum/action/innate/ai/ranged/adjust_uses(amt, silent) uses += amt if(!silent && uses) - to_chat(owner, "[name] now has [uses] use[uses > 1 ? "s" : ""] remaining.") + to_chat(owner, "У [name] теперь [uses] осталось использован[uses > 1 ? "ий" : "ия"].") if(!uses) if(initial(uses) > 1) //no need to tell 'em if it was one-use anyway! - to_chat(owner, "[name] has run out of uses!") + to_chat(owner, "У [name] закончились использования!") Remove(owner) QDEL_IN(src, 100) //let any active timers on us finish up @@ -93,8 +93,8 @@ add_ranged_ability(user, enable_text) /datum/action/innate/ai/choose_modules - name = "Choose Modules" - desc = "Spend your processing time to gain a variety of different abilities." + name = "Выберите Модули" + desc = "Потратьте вычислительные мощности для разблокировки различных умений." button_icon_state = "choose_module" auto_use_uses = FALSE // This is an infinite ability. @@ -103,8 +103,8 @@ owner_AI.malf_picker.use(owner_AI) /datum/action/innate/ai/return_to_core - name = "Return to Main Core" - desc = "Leave the APC you are shunted to, and return to your core." + name = "Вернуться в Главное Ядро" + desc = "Покинуть APC, в который вы себя всунули и вернуться к Главному Ядру." icon_icon = 'icons/obj/power.dmi' button_icon_state = "apcemag" auto_use_uses = FALSE // Here just to prevent the "You have X uses remaining" from popping up. @@ -112,8 +112,8 @@ /datum/action/innate/ai/return_to_core/Trigger(left_click) . = ..() var/obj/machinery/power/apc/apc = owner_AI.loc - if(!istype(apc)) // This shouldn't happen but here for safety. - to_chat(src, "You are already in your Main Core.") + if(!istype(apc)) // Этого не должно происходить. Чисто для подстраховки + to_chat(src, "Вы уже в Главном Ядре.") return apc.malfvacate() qdel(src) @@ -133,16 +133,16 @@ /datum/module_picker/proc/use(mob/user) var/dat - dat += {"Select use of processing time: (currently [processing_time] left.)
+ dat += {"Выберите, куда потратить мощности: (сейчас имеется [processing_time] единиц.)

- Install Module:
- The number afterwards is the amount of processing time it consumes.
"} + Установка модулей:
+ Число позади означает количество мощностей, которое потребуется на разблокировку.
"} for(var/datum/AI_Module/module in possible_modules) dat += "[module.module_name]\[?\] ([module.cost])
" dat += "
" if(temp) dat += "[temp]" - var/datum/browser/popup = new(user, "modpicker", "Malf Module Menu", 400, 500) + var/datum/browser/popup = new(user, "modpicker", "Меню модулей сбойного ИИ", 400, 500) popup.set_content(dat) popup.open() return @@ -155,7 +155,7 @@ var/mob/living/silicon/ai/A = usr if(A.stat == DEAD) - to_chat(A, "You are already dead!") + to_chat(A, "Вы уже умерли!") return for(var/datum/AI_Module/AM in possible_modules) @@ -163,7 +163,7 @@ // Cost check if(AM.cost > processing_time) - temp = "You cannot afford this module." + temp = "Вы не можете себе это позволить." break var/datum/action/innate/ai/action = locate(AM.power_type) in A.actions @@ -189,9 +189,9 @@ A.playsound_local(A, AM.unlock_sound, 50, FALSE, use_reverb = FALSE) else //Adding uses to an existing module action.uses += initial(action.uses) - action.desc = "[initial(action.desc)] It has [action.uses] use\s remaining." + action.desc = "У [initial(action.desc)] теперь [action.uses] использований." action.UpdateButtonIcon() - temp = "Additional use[action.uses > 1 ? "s" : ""] added to [action.name]!" + temp = "Были добавлены использовани[action.uses > 1 ? "я" : "е"] к [action.name]!" processing_time -= AM.cost if(href_list["showdesc"]) @@ -217,27 +217,27 @@ //Doomsday Device: Starts the self-destruct timer. It can only be stopped by killing the AI completely. /datum/AI_Module/nuke_station - module_name = "Doomsday Device" + module_name = "Устройство Судного Дня" mod_pick_name = "nukestation" - description = "Activate a weapon that will disintegrate all organic life on the station after a 450 second delay. Can only be used while on the station, will fail if your core is moved off station or destroyed." + description = "Активирует оружие, которое уничтожит всю органическую жизнь на станции по истечению 450 секундного таймера. Не сработает, если ваше Ядро уничтожат или вынесут за пределы станции" cost = 130 one_purchase = TRUE power_type = /datum/action/innate/ai/nuke_station - unlock_text = "You slowly, carefully, establish a connection with the on-station self-destruct. You can now activate it at any time." + unlock_text = "Вы медленно и аккуратно подключаетесь к системе самоуничтожения станции. Вы можете активировать её в любое время." unlock_sound = 'sound/items/timer.ogg' /datum/action/innate/ai/nuke_station - name = "Doomsday Device" - desc = "Activates the doomsday device. This is not reversible." + name = "Устройство Судного Дня" + desc = "Активирует устройство судного дня. Это действие невозможно отменить." button_icon_state = "doomsday_device" auto_use_uses = FALSE /datum/action/innate/ai/nuke_station/Activate() var/turf/T = get_turf(owner) if(!istype(T) || !is_station_level(T.z)) - to_chat(owner, "You cannot activate the doomsday device while off-station!") + to_chat(owner, "Вы не можете активировать УСД пока находитесь вне станции!") return - if(tgui_alert(owner, "Send arming signal? (true = arm, false = cancel)", "purge_all_life()", list("confirm = TRUE;", "confirm = FALSE;")) != "confirm = TRUE;") + if(tgui_alert(owner, "Отправить сигнал на взведение? (true = взвести, false = отмена)", "purge_all_life()", list("confirm = TRUE;", "confirm = FALSE;")) != "confirm = TRUE;") return if(active) return //prevent the AI from activating an already active doomsday @@ -245,8 +245,8 @@ set_us_up_the_bomb() /datum/action/innate/ai/nuke_station/proc/set_us_up_the_bomb() - to_chat(owner_AI, "Nuclear device armed.") - GLOB.major_announcement.Announce("Hostile runtimes detected in all station systems, please deactivate your AI to prevent possible damage to its morality core.", "Anomaly Alert", 'sound/AI/aimalf.ogg') + to_chat(owner_AI, "Ядерное оружие взведено.") + GLOB.major_announcement.Announce("Во всех системах станций обнаружены вредоносные процессы. Пожалуйста, уничтожьте свой ИИ, чтобы предотвратить возможный ущерб его моральному ядру.", "ВНИМАНИЕ: Обнаружена аномалия.", 'sound/AI/aimalf.ogg') SSsecurity_level.set_level(SEC_LEVEL_DELTA) owner_AI.nuking = TRUE var/obj/machinery/doomsday_device/DOOM = new /obj/machinery/doomsday_device(owner_AI) @@ -260,9 +260,9 @@ /obj/machinery/doomsday_device icon = 'icons/obj/machines/nuke_terminal.dmi' - name = "doomsday device" + name = "устройство судного дня" icon_state = "nuclearbomb_base" - desc = "A weapon which disintegrates all organic life in a large area." + desc = "Оружие, уничтожающее всю жизнь на станции." anchored = TRUE density = TRUE atom_say_verb = "blares" @@ -278,7 +278,7 @@ if(SSshuttle.emergency.mode == SHUTTLE_STRANDED) SSshuttle.emergency.mode = SHUTTLE_DOCKED SSshuttle.emergency.timer = world.time - GLOB.major_announcement.Announce("Hostile environment resolved. You have 3 minutes to board the Emergency Shuttle.", "Priority Announcement", 'sound/AI/eshuttle_dock.ogg') + GLOB.major_announcement.Announce("Враждебная среда нейтрализована. У вас есть 3 минуты, чтобы прибыть на борт эвакуационного шаттла.", "Приоритетное оповещение", 'sound/AI/eshuttle_dock.ogg') return ..() /obj/machinery/doomsday_device/proc/start() @@ -293,12 +293,12 @@ /obj/machinery/doomsday_device/process() var/turf/T = get_turf(src) if(!T || !is_station_level(T.z)) - GLOB.major_announcement.Announce("DOOMSDAY DEVICE OUT OF STATION RANGE, ABORTING", "ERROR ER0RR $R0RRO$!R41.%%!!(%$^^__+ @#F0E4", 'sound/misc/notice1.ogg') + GLOB.major_announcement.Announce("УСТРОЙСТВО СУДНОГО ДНЯ ВНЕ ЗОНЫ ДЕЙСТВИЯ СТАНЦИИ, ОТКЛЮЧЕНИЕ.", "ОШИБКА 0IJJU6KA ОIJJIJ(%$^^__+ @#F0E4", 'sound/misc/notice1.ogg') SSshuttle.clearHostileEnvironment(src) if(SSshuttle.emergency.mode == SHUTTLE_STRANDED) SSshuttle.emergency.mode = SHUTTLE_DOCKED SSshuttle.emergency.timer = world.time - GLOB.major_announcement.Announce("Hostile environment resolved. You have 3 minutes to board the Emergency Shuttle.", "Priority Announcement", 'sound/AI/eshuttle_dock.ogg') + GLOB.major_announcement.Announce("Враждебное окружение нейтрализовано. У вас есть 3 минуты, чтобы прибыть на борт эвакуационного шаттла.", "Приоритетное оповещение.", 'sound/AI/eshuttle_dock.ogg') qdel(src) if(!timing) STOP_PROCESSING(SSfastprocess, src) @@ -310,8 +310,8 @@ qdel(src) else if(!(sec_left % 60) && !announced) - var/message = "[sec_left] SECONDS UNTIL DOOMSDAY DEVICE ACTIVATION!" - GLOB.major_announcement.Announce(message, "ERROR ER0RR $R0RRO$!R41.%%!!(%$^^__+ @#F0E4", 'sound/misc/notice1.ogg') + var/message = "[sec_left] СЕКУНД ДО АКТИВАЦИИ УСТРОЙСТВА СУДНОГО ДНЯ." + GLOB.major_announcement.Announce(message, "ОШИБКА 0IJJU6KA ОIJJIJ(%$^^__+ @#F0E4", 'sound/misc/notice1.ogg') announced = 10 announced = max(0, announced-1) @@ -321,17 +321,17 @@ SEND_SOUND(explodee, doomsday_alarm) sleep(100) SSticker.station_explosion_cinematic(NUKE_SITE_ON_STATION, "AI malfunction") - to_chat(world, "The AI cleansed the station of life with the doomsday device!") + to_chat(world, "ИИ уничтожил жизнь на станции при помощи УСД!") SSticker.mode.station_was_nuked = TRUE //AI Turret Upgrade: Increases the health and damage of all turrets. /datum/AI_Module/upgrade_turrets - module_name = "AI Turret Upgrade" + module_name = "Улучшение турелей" mod_pick_name = "turret" - description = "Improves the power and health of all AI turrets. This effect is permanent." + description = "Улучшает силу и здоровье турелей. Этот эффект постоянен." cost = 30 upgrade = TRUE - unlock_text = "You establish a power diversion to your turrets, upgrading their health and damage." + unlock_text = "Вы перенаправляете часть энергии на турели, усиливая их живучесть и урон." unlock_sound = 'sound/items/rped.ogg' /datum/AI_Module/upgrade_turrets/upgrade(mob/living/silicon/ai/AI) @@ -345,38 +345,38 @@ //Hostile Station Lockdown: Locks, bolts, and electrifies every airlock on the station. After 90 seconds, the doors reset. /datum/AI_Module/lockdown - module_name = "Hostile Station Lockdown" + module_name = "Агрессивный Локдаун Станции" mod_pick_name = "lockdown" - description = "Overload the airlock, blast door and fire control networks, locking them down. Caution! This command also electrifies all airlocks. The networks will automatically reset after 90 seconds, briefly \ - opening all doors on the station." + description = "Перегружает все шлюзы, противопожарные и взрывоустойчивые двери, закрывая их. Внимание! Эта команда также электрифицирует все шлюзы. Сеть автоматически перезапустится через 90 секунд \ + открывая все шлюзы на короткий промежуток времени." cost = 30 one_purchase = TRUE power_type = /datum/action/innate/ai/lockdown - unlock_text = "You upload a sleeper trojan into the door control systems. You can send a signal to set it off at any time." + unlock_text = "Вы загружаете спящий троян в систему управления шлюзами. \ Вы можете отправить сигнал на его активацию в любое время." /datum/action/innate/ai/lockdown - name = "Lockdown" - desc = "Closes, bolts, and depowers every airlock, firelock, and blast door on the station. After 90 seconds, they will reset themselves." + name = "Локдаун" + desc = "Закрывает, болтирует и отключает все шлюзы. Через 90 секунд, они восстанавливаются." button_icon_state = "lockdown" uses = 1 /datum/action/innate/ai/lockdown/Activate() - to_chat(owner, "Lockdown Initiated. Network reset in 90 seconds.") + to_chat(owner, "Активирован локдаун. Перезапуск сети через 90 секунд.") new /datum/event/door_runtime() //Destroy RCDs: Detonates all non-cyborg RCDs on the station. /datum/AI_Module/destroy_rcd - module_name = "Destroy RCDs" + module_name = "Уничтожение RCD" mod_pick_name = "rcd" - description = "Send a specialised pulse to detonate all hand-held and exosuit Rapid Construction Devices on the station." + description = " Отправляет специальный импульс для детонации всех ручных и экзокостюмных RCD на станции." cost = 25 one_purchase = TRUE power_type = /datum/action/innate/ai/destroy_rcds - unlock_text = "After some improvisation, you rig your onboard radio to be able to send a signal to detonate all RCDs." + unlock_text = "После некоторой импровизации, Вы можете отправить импульс на уничтожение RCD через гарнитуру." /datum/action/innate/ai/destroy_rcds - name = "Destroy RCDs" - desc = "Detonate all non-cyborg RCDs on the station." + name = "Уничтожение RCD" + desc = "Взрывает все неподконтрольные киборгам RCD." button_icon_state = "detonate_rcds" uses = 1 cooldown_period = 10 SECONDS @@ -389,18 +389,18 @@ if(is_level_reachable(RCD_turf.z)) RCD.detonate_pulse() - to_chat(owner, "RCD detonation pulse emitted.") + to_chat(owner, "Импульс взрыва RCD запущен.") owner.playsound_local(owner, 'sound/machines/twobeep.ogg', 50, FALSE, use_reverb = FALSE) //Unlock Mech Domination: Unlocks the ability to dominate mechs. Big shocker, right? /datum/AI_Module/mecha_domination - module_name = "Unlock Mech Domination" + module_name = "Разблокировка доминации мехов" mod_pick_name = "mechjack" - description = "Allows you to hack into a mech's onboard computer, shunting all processes into it and ejecting any occupants. Once uploaded to the mech, it is impossible to leave.\ - Do not allow the mech to leave the station's vicinity or allow it to be destroyed." + description = "Позволяет вам взломать бортовой компьютер меха, загрузив все свои процессы в него, а также выкидывая пилота. Как только вы загрузитесь в меха, выйти будет невозможно \ + Не позволяйте меху покинуть станцию или быть уничтоженным" // А тут какого-то хуя перекинулось cost = 30 upgrade = TRUE - unlock_text = "Virus package compiled. Select a target mech at any time. You must remain on the station at all times. Loss of signal will result in total system lockout." + unlock_text = "Вирусный пакет скомпилирован. Вы в любой момент можете выбрать цель. Вы должны оставаться на станции в любой момент времени. Потеря сигнала приведёт к полной блокировке системы." unlock_sound = 'sound/mecha/nominal.ogg' /datum/AI_Module/mecha_domination/upgrade(mob/living/silicon/ai/AI) @@ -408,18 +408,18 @@ //Thermal Sensor Override: Unlocks the ability to disable all fire alarms from doing their job. /datum/AI_Module/break_fire_alarms - module_name = "Thermal Sensor Override" + module_name = "Перегрузка датчиков температуры" mod_pick_name = "burnpigs" - description = "Gives you the ability to override the thermal sensors on all fire alarms. This will remove their ability to scan for fire and thus their ability to alert. \ - Anyone can check the fire alarm's interface and may be tipped off by its status." + description = "Даёт вам возможность перегрузить все термальные датчики на станции. Это приведёт к неспособности определить в комнате огонь и предупредить остальных. \ + Кто угодно может проверить датчики и заподозрить что-то неладное." one_purchase = TRUE cost = 25 power_type = /datum/action/innate/ai/break_fire_alarms - unlock_text = "You replace the thermal sensing capabilities of all fire alarms with a manual override, allowing you to turn them off at will." + unlock_text = "Вы заменяете термальную чувствительность сенсоров с помощью ручной перезаписи, позволяя вам активировать её в любой момент." /datum/action/innate/ai/break_fire_alarms - name = "Override Thermal Sensors" - desc = "Disables the automatic temperature sensing on all fire alarms, making them effectively useless." + name = "Перегрузка датчиков температуры" + desc = "Отключает автоматическое определение температуры во всех пожарных датчиках, делая их фактически бесполезными." button_icon_state = "break_fire_alarms" uses = 1 @@ -428,23 +428,23 @@ if(!is_station_level(F.z)) continue F.emagged = TRUE - to_chat(owner, "All thermal sensors on the station have been disabled. Fire alerts will no longer be recognized.") + to_chat(owner, "Все термальные сенсоры на станции были отключены. Теперь пожарные тревоги нельзя определить.") owner.playsound_local(owner, 'sound/machines/terminal_off.ogg', 50, FALSE, use_reverb = FALSE) //Air Alarm Safety Override: Unlocks the ability to enable flooding on all air alarms. /datum/AI_Module/break_air_alarms - module_name = "Air Alarm Safety Override" + module_name = "Перезагрузка атмосферных датчиков" mod_pick_name = "allow_flooding" - description = "Gives you the ability to disable safeties on all air alarms. This will allow you to use the environmental mode Flood, which disables scrubbers as well as pressure checks on vents. \ - Anyone can check the air alarm's interface and may be tipped off by their nonfunctionality." + description = "Даёт вам возможность отключить все предохранители на атмосферных датчиках. Позволяет вам использовать режим Flood, отключающий скрабберы, а также отключающий проверку давления в вентиляциях. \ + Любой может проверить интерфейс датчика и заподозрить что-то из-за их нерабочего состояния." one_purchase = TRUE cost = 50 power_type = /datum/action/innate/ai/break_air_alarms - unlock_text = "You remove the safety overrides on all air alarms, but you leave the confirm prompts open. You can hit 'Yes' at any time... you bastard." + unlock_text = "Вы убираете предохранители с атмосферных датчиков, но оставляете окно подтверждения открытым. Вы можете нажать 'Да' в любой момент... ублюдок." /datum/action/innate/ai/break_air_alarms - name = "Override Air Alarm Safeties" - desc = "Enables the Flood setting on all air alarms." + name = "Перезагрузка атмосферных датчиков" + desc = "Открывает режим Flood по всей станции." button_icon_state = "break_air_alarms" uses = 1 @@ -453,22 +453,22 @@ if(!is_station_level(AA.z)) continue AA.emagged = TRUE - to_chat(owner, "All air alarm safeties on the station have been overridden. Air alarms may now use the Flood environmental mode.") + to_chat(owner, "Предохранители атмосферных датчиков отключены. Теперь у них открыт режим Flood.") owner.playsound_local(owner, 'sound/machines/terminal_off.ogg', 50, FALSE, use_reverb = FALSE) //Overload Machine: Allows the AI to overload a machine, detonating it after a delay. Two uses per purchase. /datum/AI_Module/overload_machine - module_name = "Machine Overload" + module_name = "Перезагрузка машины" mod_pick_name = "overload" - description = "Overheats an electrical machine, causing a moderately-sized explosion and destroying it. Four uses per purchase." + description = "Перегревает машину, вызывая небольшой взрыв и уничтожая её. Два использования за покупку." cost = 20 power_type = /datum/action/innate/ai/ranged/overload_machine - unlock_text = "You enable the ability for the station's APCs to direct intense energy into machinery." + unlock_text = "Вы получаете способность направлять энергию из APC напрямую в машинерию." /datum/action/innate/ai/ranged/overload_machine - name = "Overload Machine" - desc = "Overheats a machine, causing a moderately-sized explosion after a short time." + name = "Перезагрузка машины" + desc = "Перегревает машину, вызывая небольшой взрыв через небольшой промежуток времени." button_icon_state = "overload_machine" uses = 4 linked_ability_type = /obj/effect/proc_holder/ranged_ai/overload_machine @@ -482,8 +482,8 @@ /obj/effect/proc_holder/ranged_ai/overload_machine active = FALSE ranged_mousepointer = 'icons/effects/cult_target.dmi' - enable_text = "You tap into the station's powernet. Click on a machine to detonate it, or use the ability again to cancel." - disable_text = "You release your hold on the powernet." + enable_text = "Вы подключаетесь к энергосети. Кликните на машину для её подрыва или используйте способность повторно для отмены." + disable_text = "Вы отключаетесь от энергосети." /obj/effect/proc_holder/ranged_ai/overload_machine/InterceptClickOn(mob/living/caller, params, obj/machinery/target) if(..()) @@ -492,32 +492,32 @@ remove_ranged_ability() return if(!istype(target)) - to_chat(ranged_ability_user, "You can only overload machines!") + to_chat(ranged_ability_user, "Вы можете перегружать только машины!") return if(target.flags_2 & NO_MALF_EFFECT_2) - to_chat(ranged_ability_user, "That machine can't be overloaded!") + to_chat(ranged_ability_user, "Эта машина не может быть перегружена!") return ranged_ability_user.playsound_local(ranged_ability_user, "sparks", 50, FALSE, use_reverb = FALSE) attached_action.adjust_uses(-1) - target.audible_message("You hear a loud electrical buzzing sound coming from [target]!") + target.audible_message("Вы слышите громкое электрическое жужжание из [target]!") addtimer(CALLBACK(attached_action, TYPE_PROC_REF(/datum/action/innate/ai/ranged/overload_machine, detonate_machine), target), 50) //kaboom! - remove_ranged_ability(ranged_ability_user, "Overloading machine circuitry...") + remove_ranged_ability(ranged_ability_user, "Перегружаем платы машины...") return TRUE //Override Machine: Allows the AI to override a machine, animating it into an angry, living version of itself. /datum/AI_Module/override_machine - module_name = "Machine Override" + module_name = "Перезапись машины" mod_pick_name = "override" - description = "Overrides a machine's programming, causing it to rise up and attack everyone except other machines. Four uses." + description = "Перезаписывает программу машины, заставляя её восстать и атаковать всех кроме других машин, Четыре использования." cost = 30 power_type = /datum/action/innate/ai/ranged/override_machine - unlock_text = "You procure a virus from the Space Dark Web and distribute it to the station's machines." + unlock_text = "Вы находите вирус с Space Dark Web и распространяете его по всей станции." /datum/action/innate/ai/ranged/override_machine - name = "Override Machine" - desc = "Animates a targeted machine, causing it to attack anyone nearby." + name = "Перезапись машины" + desc = "Оживляет целевую машину, заставляя её атаковать всех, кто рядом." button_icon_state = "override_machine" uses = 4 linked_ability_type = /obj/effect/proc_holder/ranged_ai/override_machine @@ -529,8 +529,8 @@ /obj/effect/proc_holder/ranged_ai/override_machine active = FALSE ranged_mousepointer = 'icons/effects/override_machine_target.dmi' - enable_text = "You tap into the station's powernet. Click on a machine to animate it, or use the ability again to cancel." - disable_text = "You release your hold on the powernet." + enable_text = "Вы подключаетесь к энергосети. Кликните на машину для оживления или используйте способность повторно для отмены." + disable_text = "Вы отключаетесь от энергосети." /obj/effect/proc_holder/ranged_ai/override_machine/InterceptClickOn(mob/living/caller, params, obj/machinery/target) if(..()) @@ -539,34 +539,34 @@ remove_ranged_ability() return if(!istype(target)) - to_chat(ranged_ability_user, "You can only animate machines!") + to_chat(ranged_ability_user, "Вы можете оживлять только машины!") return if(target.flags_2 & NO_MALF_EFFECT_2) - to_chat(ranged_ability_user, "That machine can't be overridden!") + to_chat(ranged_ability_user, "Эта машина не может быть оживлена!") return ranged_ability_user.playsound_local(ranged_ability_user, 'sound/misc/interference.ogg', 50, FALSE, use_reverb = FALSE) attached_action.adjust_uses(-1) - target.audible_message("You hear a loud electrical buzzing sound coming from [target]!") + target.audible_message("Вы слышите громкое электрическое жужжание из [target]!") addtimer(CALLBACK(attached_action, TYPE_PROC_REF(/datum/action/innate/ai/ranged/override_machine, animate_machine), target), 50) //kabeep! - remove_ranged_ability(ranged_ability_user, "Sending override signal...") + remove_ranged_ability(ranged_ability_user, "Посылаем сигнал перезаписи...") return TRUE //Robotic Factory: Places a large machine that converts humans that go through it into cyborgs. Unlocking this ability removes shunting. /datum/AI_Module/place_cyborg_transformer - module_name = "Robotic Factory (Removes Shunting)" + module_name = "Фабрика роботов (Убирает запихивание)" mod_pick_name = "cyborgtransformer" - description = "Build a machine anywhere, using expensive nanomachines, that can convert a living human into a loyal cyborg slave when placed inside." + description = "Строит машину где угодно, используя дорогие наномашины, которая превращает живое существо в лояльного раба-киборга." cost = 100 one_purchase = TRUE power_type = /datum/action/innate/ai/place_transformer - unlock_text = "You prepare a robotics factory for deployment." + unlock_text = "Вы подготавливаете фабрику к установке." unlock_sound = 'sound/machines/ping.ogg' /datum/action/innate/ai/place_transformer - name = "Place Robotics Factory" - desc = "Places a machine that converts humans into cyborgs. Conveyor belts included!" + name = "Поставить фабрику роботов" + desc = "Ставит машину, превращающую людей в боргов. Вместе с лентами!" button_icon_state = "robotic_factory" uses = 1 auto_use_uses = FALSE //So we can attempt multiple times @@ -582,7 +582,7 @@ if(!owner_AI.can_place_transformer(src)) return active = TRUE - if(tgui_alert(owner, "Are you sure you want to place the machine here?", "Are you sure?", list("Yes", "No")) != "Yes") + if(tgui_alert(owner, "Вы уверены, что хотите поставить машину тут?", "Вы уверены?", list("Да", "Нет")) != "Yes") active = FALSE return if(!owner_AI.can_place_transformer(src)) @@ -592,7 +592,7 @@ new /obj/machinery/transformer(T, owner_AI) playsound(T, 'sound/effects/phasein.ogg', 100, 1) owner_AI.can_shunt = FALSE - to_chat(owner, "You are no longer able to shunt your core to APCs.") + to_chat(owner, "Вы больше не можете запихнуть свои процессы в ЛКП.") adjust_uses(-1) /mob/living/silicon/ai/proc/remove_transformer_image(client/C, image/I, turf/T) @@ -604,7 +604,7 @@ return var/turf/middle = get_turf(eyeobj) var/list/turfs = list(middle, locate(middle.x - 1, middle.y, middle.z), locate(middle.x + 1, middle.y, middle.z)) - var/alert_msg = "There isn't enough room! Make sure you are placing the machine in a clear area and on a floor." + var/alert_msg = "Недостаточно места! Убедитесь, что вы ставите машину на чистом полу станции." var/success = TRUE for(var/n in 1 to 3) //We have to do this instead of iterating normally because of how overlay images are handled var/turf/T = turfs[n] @@ -612,11 +612,11 @@ success = FALSE var/datum/camerachunk/C = GLOB.cameranet.getCameraChunk(T.x, T.y, T.z) if(!C.visibleTurfs[T]) - alert_msg = "You don't have camera vision of this location!" + alert_msg = "У вас нет покрытия камер в этой локации!" success = FALSE for(var/atom/movable/AM in T.contents) if(AM.density) - alert_msg = "That area must be clear of objects!" + alert_msg = "Зона должна быть свободна от предметов!" success = FALSE var/image/I = action.turfOverlays[n] I.loc = T @@ -730,16 +730,16 @@ //Blackout: Overloads a random number of lights across the station. Three uses. /datum/AI_Module/blackout - module_name = "Blackout" + module_name = "Блэкаут" mod_pick_name = "blackout" - description = "Attempts to overload the lighting circuits on the station, destroying some bulbs. Three uses." + description = "Попытка перегрузить световые схемы станции, выводя из строя некоторые лампы. Три использования." cost = 15 power_type = /datum/action/innate/ai/blackout - unlock_text = "You hook into the powernet and route bonus power towards the station's lighting." + unlock_text = "Вы подключаетесь к энергосети станции и направляете избыток энергии на освещение." /datum/action/innate/ai/blackout - name = "Blackout" - desc = "Overloads random lights across the station." + name = "Блэкаут" + desc = "Перегружает свет на станции." button_icon_state = "blackout" uses = 3 auto_use_uses = FALSE @@ -751,22 +751,22 @@ INVOKE_ASYNC(apc, TYPE_PROC_REF(/obj/machinery/power/apc, overload_lighting)) else apc.overload++ - to_chat(owner, "Overcurrent applied to the powernet.") + to_chat(owner, "К энергосети принято перенапряжение.") owner.playsound_local(owner, "sparks", 50, FALSE, use_reverb = FALSE) adjust_uses(-1) //Reactivate Camera Network: Reactivates up to 30 cameras across the station. /datum/AI_Module/reactivate_cameras - module_name = "Reactivate Camera Network" + module_name = "Реактивация сети камер" mod_pick_name = "recam" - description = "Runs a network-wide diagnostic on the camera network, resetting focus and re-routing power to failed cameras. Can be used to repair up to 30 cameras." + description = "Запускает диагностику камер в сети. Сбрасывает фокус и перенаправляет энергию на сломанные камеры. Может быть использована для починки до 30 камер." cost = 10 power_type = /datum/action/innate/ai/reactivate_cameras - unlock_text = "You deploy nanomachines to the cameranet." + unlock_text = "Вы вводите наномашины в систему камер." /datum/action/innate/ai/reactivate_cameras - name = "Reactivate Cameras" - desc = "Reactivates disabled cameras across the station; remaining uses can be used later." + name = "Реактивация камер" + desc = "Реактивирует камеры по всей станции; оставшиеся использования могут быть использованы позже." button_icon_state = "reactivate_cameras" uses = 10 auto_use_uses = FALSE @@ -786,20 +786,20 @@ camera_to_repair.wires.cut_wires.Cut() repaired_cameras++ uses-- - to_chat(owner, "Diagnostic complete! Cameras reactivated: [repaired_cameras]. Reactivations remaining: [uses].") + to_chat(owner, "Диагностика завершена! Камер реактивировано: [repaired_cameras]. Осталось использований: [uses].") owner.playsound_local(owner, 'sound/items/wirecutter.ogg', 50, FALSE, use_reverb = FALSE) adjust_uses(0, TRUE) //Upgrade Camera Network: EMP-proofs all cameras, in addition to giving them X-ray vision. /datum/AI_Module/upgrade_cameras - module_name = "Upgrade Camera Network" + module_name = "Улучшенная сеть камер" mod_pick_name = "upgradecam" - description = "Install broad-spectrum scanning and electrical redundancy firmware to the camera network, enabling EMP-proofing and light-amplified X-ray vision." //I <3 pointless technobabble + description = "Устанавливает ПО для сканирования широкого спектра и сопротивление к электричеству, включая устойчивость к ЭМИ и улучшенное рентгеновское зрение." //I <3 pointless technobabble //This used to have motion sensing as well, but testing quickly revealed that giving it to the whole cameranet is PURE HORROR. one_purchase = TRUE cost = 35 //Decent price for omniscience! upgrade = TRUE - unlock_text = "OTA firmware distribution complete! Cameras upgraded: CAMSUPGRADED. Light amplification system online." + unlock_text = ": CAMSUPGRADED. Система усиления света активна." unlock_sound = 'sound/items/rped.ogg' /datum/AI_Module/upgrade_cameras/upgrade(mob/living/silicon/ai/AI) @@ -825,13 +825,13 @@ unlock_text = replacetext(unlock_text, "CAMSUPGRADED", "[upgraded_cameras]") //This works, since unlock text is called after upgrade() /datum/AI_Module/eavesdrop - module_name = "Enhanced Surveillance" + module_name = "Улучшенная слежка" mod_pick_name = "eavesdrop" - description = "Via a combination of hidden microphones and lip reading software, you are able to use your cameras to listen in on conversations." + description = "Через комбинацию скрытых микрофонов и ПО для чтения по губам, вы можете использовать камеры для прослушки диалогов." cost = 30 one_purchase = TRUE upgrade = TRUE - unlock_text = "OTA firmware distribution complete! Cameras upgraded: Enhanced surveillance package online." + unlock_text = "Распространение ПО по воздуху завершено! Камеры прокачаны: Система улучшенного наблюдения активна." unlock_sound = 'sound/items/rped.ogg' /datum/AI_Module/eavesdrop/upgrade(mob/living/silicon/ai/AI) @@ -839,13 +839,13 @@ AI.eyeobj.relay_speech = TRUE /datum/AI_Module/cameracrack - module_name = "Core Camera Cracker" + module_name = "Поломка камеры ядра" mod_pick_name = "cameracrack" - description = "By shortcirucuting the camera network chip, it overheats, preventing the camera console from using your internal camera." + description = "Замыкая чип камеры ядра, консоль видеонаблюдения не может быть использована для просмотра внутренней камеры ядра ИИ." cost = 10 one_purchase = TRUE upgrade = TRUE - unlock_text = "Network chip short circuited. Internal camera disconected from network. Minimal damage to other internal components." + unlock_text = "Чип сети замкнут. Внутренняя камера отключена от сети. Урон другим компонентам минимальный." unlock_sound = 'sound/items/wirecutter.ogg' /datum/AI_Module/cameracrack/upgrade(mob/living/silicon/ai/AI) @@ -854,13 +854,13 @@ QDEL_NULL(AI.builtInCamera) /datum/AI_Module/engi_upgrade - module_name = "Engineering Cyborg Emitter Upgrade" + module_name = "Улучшение на эмиттер для инженерного киборга" mod_pick_name = "emitter" - description = "Downloads firmware that activates the built in emitter in all engineering cyborgs linked to you. Cyborgs built after this upgrade will have it pre-installed." + description = "Скачивает ПО, разблокирующее эмиттер на всех инженерных киборгах. Киборги, построенные после улучшения, будут иметь его по умолчанию." cost = 50 // IDK look into this one_purchase = TRUE upgrade = TRUE - unlock_text = "Firmware downloaded. Bugs removed. Built in emitters operating at 73% efficiency." + unlock_text = "ПО загружено. Баги устранены. Встроенные эмиттеры работают с эффективностью 73%." unlock_sound = 'sound/items/rped.ogg' /datum/AI_Module/engi_upgrade/upgrade(mob/living/silicon/ai/AI) @@ -872,20 +872,20 @@ continue R.module.malfhacked = TRUE R.module.rebuild_modules() - to_chat(R, "New firmware downloaded. Emitter is now online.") + to_chat(R, "") /datum/AI_Module/repair_cyborg - module_name = "Repair Cyborgs" + module_name = "Починка киборгов" mod_pick_name = "repair_borg" - description = "Causes an electrical surge in the targeted cyborg, rebooting and repairing most of its subsystems. Requires two uses on a cyborg with broken armor." + description = "Вызывает электрический всплек в киборге, перезапуская его и чиня большинство его систем. Требуется два использования на киборгах со сломанной бронёй." cost = 20 power_type = /datum/action/innate/ai/ranged/repair_cyborg - unlock_text = "TLB exception on load: Error pointing to address 0000001H, Proceed with execution anywa- SURGE protocols installed, welcome to open APC!" + unlock_text = "TLB exception on load: Ошибка в вызове адреса 0000001H, Всё равно продолжит испо- активированы протороколы ВСПЛЕСК, добро пожаловать в открытый ЛКП!" unlock_sound = 'sound/items/rped.ogg' /datum/action/innate/ai/ranged/repair_cyborg - name = "Repair Cyborg" - desc = "Shocks a cyborg back to 'life' after a short delay." + name = "Починка киборга" + desc = "Возвращает киборга к 'жизни' после небольшой задержки." button_icon_state = "overload_machine" uses = 2 linked_ability_type = /obj/effect/proc_holder/ranged_ai/repair_cyborg @@ -901,8 +901,8 @@ /obj/effect/proc_holder/ranged_ai/repair_cyborg active = FALSE ranged_mousepointer = 'icons/effects/overload_machine_target.dmi' - enable_text = "Call to address 0FFFFFFF in APC logic thread, awaiting user response." - disable_text = "APC logic thread restarting..." + enable_text = "Вызов процесса 0FFFFFFF в логике ЛКП, ожидается ответ пользователя." + disable_text = "Логика ЛКП сбрасывается..." var/is_active = FALSE /obj/effect/proc_holder/ranged_ai/repair_cyborg/InterceptClickOn(mob/living/caller, params, mob/living/silicon/robot/robot_target) @@ -912,38 +912,38 @@ remove_ranged_ability() return if(!istype(robot_target)) - to_chat(ranged_ability_user, "You can only repair robots with this ability!") + to_chat(ranged_ability_user, "Вы можете чинить только киборгов с этой способностью!") return if(is_active) - to_chat(ranged_ability_user, "You can only repair one robot at a time!") + to_chat(ranged_ability_user, "Вы можете чинить только одного киборга за раз!") return is_active = TRUE ranged_ability_user.playsound_local(ranged_ability_user, "sparks", 50, FALSE, use_reverb = FALSE) var/datum/action/innate/ai/ranged/repair_cyborg/actual_action = attached_action actual_action.adjust_uses(-1) - robot_target.audible_message("You hear a loud electrical buzzing sound coming from [robot_target]!") + robot_target.audible_message("Вы слышите электрическое жужжание из [robot_target]!") if(!do_mob(caller, robot_target, 10 SECONDS)) is_active = FALSE return is_active = FALSE actual_action.fix_borg(robot_target) - remove_ranged_ability(ranged_ability_user, "[robot_target] successfully rebooted.") + remove_ranged_ability(ranged_ability_user, "Киборг [robot_target] успешно перезапущен.") return TRUE /datum/AI_Module/core_tilt - module_name = "Rolling Servos" + module_name = "Крутящий привод" mod_pick_name = "watchforrollingcores" - description = "Allows you to slowly roll your core around, crushing anything in your path with your bulk." + description = "Позволяет вам медленно перекатываться, круша всё на пути своим весом." cost = 10 one_purchase = FALSE power_type = /datum/action/innate/ai/ranged/core_tilt unlock_sound = 'sound/effects/bang.ogg' - unlock_text = "You gain the ability to roll over and crush anything in your way." + unlock_text = "Вы получаете способность перекатываться, круша всё на своём пути." /datum/action/innate/ai/ranged/core_tilt - name = "Roll Over" + name = "Перекатиться" button_icon_state = "roll_over" - desc = "Allows you to roll over in the direction of your choosing, crushing anything in your way." + desc = "Позволяет перекатиться в выбранном направлении, круша всё на своём пути." auto_use_uses = FALSE linked_ability_type = /obj/effect/proc_holder/ranged_ai/roll_over @@ -951,8 +951,8 @@ /obj/effect/proc_holder/ranged_ai/roll_over active = FALSE ranged_mousepointer = 'icons/effects/cult_target.dmi' - enable_text = "Your inner servos shift as you prepare to roll around. Click adjacent tiles to roll into them!" - disable_text = "You disengage your rolling protocols." + enable_text = "Ваши приводы перемещаются в то время, как вы готовитесь к перекату. Кликните по соседнему тайлу чтобы перекатиться на него!" + disable_text = "Вы отключаете протоколы перкатывания." COOLDOWN_DECLARE(time_til_next_tilt) /// How long does it take us to roll? var/roll_over_time = MALF_AI_ROLL_TIME @@ -969,7 +969,7 @@ remove_ranged_ability() return if(!COOLDOWN_FINISHED(src, time_til_next_tilt)) - to_chat(ranged_ability_user, "Your rolling capacitors are still powering back up!") + to_chat(ranged_ability_user, "Ваши конденсаторы ещё перезаряжаются!") return var/turf/target = get_turf(target_atom) @@ -977,7 +977,7 @@ return if(target == get_turf(ranged_ability_user)) - to_chat(ranged_ability_user, "You can't roll over on yourself!") + to_chat(ranged_ability_user, "Нельзя перекатиться в себя!") return var/picked_dir = get_dir(caller, target) @@ -987,10 +987,10 @@ var/turf/temp_target = get_step(ranged_ability_user, picked_dir) new /obj/effect/temp_visual/single_user/ai_telegraph(temp_target, ranged_ability_user) - ranged_ability_user.visible_message("[ranged_ability_user] seems to be winding up!") + ranged_ability_user.visible_message("[ranged_ability_user], кажется, готовится к чему-то!") addtimer(CALLBACK(src, PROC_REF(do_roll_over), caller, picked_dir), MALF_AI_ROLL_TIME) - to_chat(ranged_ability_user, "Overloading machine circuitry...") + to_chat(ranged_ability_user, "Перегружаем платы...") COOLDOWN_START(src, time_til_next_tilt, roll_over_cooldown) diff --git a/code/game/gamemodes/miniantags/abduction/machinery/console.dm b/code/game/gamemodes/miniantags/abduction/machinery/console.dm index 54c72df922f4..c86ef8ebff84 100644 --- a/code/game/gamemodes/miniantags/abduction/machinery/console.dm +++ b/code/game/gamemodes/miniantags/abduction/machinery/console.dm @@ -226,11 +226,11 @@ /obj/machinery/abductor/console/proc/Dispense(item,cost=1) if(experiment && experiment.credits >= cost) experiment.credits -=cost - atom_say("Incoming supply!") + atom_say("Поступление средств!") if(pad) flick("alien-pad", pad) new item(pad.loc) else new item(src.loc) else - atom_say("Insufficient data!") + atom_say("Недостаточно средств!") diff --git a/code/game/gamemodes/miniantags/abduction/machinery/experiment.dm b/code/game/gamemodes/miniantags/abduction/machinery/experiment.dm index 2322549036a9..3973768db9cd 100644 --- a/code/game/gamemodes/miniantags/abduction/machinery/experiment.dm +++ b/code/game/gamemodes/miniantags/abduction/machinery/experiment.dm @@ -112,16 +112,16 @@ if(H in history) return "Specimen already in database." if(H.stat == DEAD) - atom_say("Specimen deceased - please provide fresh sample.") + atom_say("Образец утрачен - пожалуйста, предоставьте свежий образец.") return "Specimen deceased." var/obj/item/organ/internal/heart/gland/GlandTest = locate() in H.internal_organs if(!GlandTest) - atom_say("Experimental dissection not detected!") + atom_say("Экспериментальное вскрытие не обнаружено!") return "No glands detected!" if(H.mind != null && H.ckey != null) history += H abductee_minds += H.mind - atom_say("Processing specimen...") + atom_say("Образец обрабатывается...") sleep(5) switch(text2num(type)) if(1) @@ -156,7 +156,7 @@ playsound(src.loc, 'sound/machines/buzz-sigh.ogg', 50, TRUE) return "Experiment failed! No replacement organ detected." else - atom_say("Brain activity nonexistent - disposing sample...") + atom_say("Мозговая активность отсутствует - утилизация образца...") eject_abductee() send_back(H) return "Specimen braindead - disposed." diff --git a/code/game/gamemodes/miniantags/pulsedemon/pulsedemon_interactions.dm b/code/game/gamemodes/miniantags/pulsedemon/pulsedemon_interactions.dm index e1b106efac9f..b7d9d55d26e6 100644 --- a/code/game/gamemodes/miniantags/pulsedemon/pulsedemon_interactions.dm +++ b/code/game/gamemodes/miniantags/pulsedemon/pulsedemon_interactions.dm @@ -217,7 +217,7 @@ if(Adjacent(A)) UnarmedAttack(A) else if(iscarbon(A)) - speak("Level 10 infraction alert!") + speak("Внимание, обнаружена угроза уровня 10!") playsound(loc, pick('sound/voice/bcriminal.ogg', 'sound/voice/bjustice.ogg', 'sound/voice/bfreeze.ogg'), 50) visible_message("[src] points at [A.name]!") diff --git a/code/game/gamemodes/nuclear/nuclear_challenge.dm b/code/game/gamemodes/nuclear/nuclear_challenge.dm index 178399588d9b..21fbc1b7b3ac 100644 --- a/code/game/gamemodes/nuclear/nuclear_challenge.dm +++ b/code/game/gamemodes/nuclear/nuclear_challenge.dm @@ -31,7 +31,7 @@ to_chat(user, "On second thought, the element of surprise isn't so bad after all.") return - var/war_declaration = "[user.real_name] has declared [user.p_their()] intent to utterly destroy [station_name()] with a nuclear device, and dares the crew to try and stop them." + var/war_declaration = "[user.real_name] заявил(-а) о намерении уничтожить станцию [station_name()] с помощью ядерного устройства и бросает вызов экипажу, чтобы те попытались остановить их." declaring_war = TRUE var/custom_threat = tgui_alert(user, "Do you want to customize your declaration?", "Customize?", list("Yes", "No")) @@ -48,7 +48,7 @@ if(!check_allowed(user) || !war_declaration) return - GLOB.major_announcement.Announce(war_declaration, "Declaration of War", 'sound/effects/siren.ogg', msg_sanitized = TRUE) + GLOB.major_announcement.Announce(war_declaration, "Объявление Войны.", 'sound/effects/siren.ogg', msg_sanitized = TRUE) addtimer(CALLBACK(SSsecurity_level, TYPE_PROC_REF(/datum/controller/subsystem/security_level, set_level), SEC_LEVEL_GAMMA), 30 SECONDS) to_chat(user, "You've attracted the attention of powerful forces within the syndicate. A bonus bundle of telecrystals has been granted to your team. Great things await you if you complete the mission.") diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm index 320c2578cdd6..3b470c9a6f46 100644 --- a/code/game/gamemodes/objective.dm +++ b/code/game/gamemodes/objective.dm @@ -384,10 +384,10 @@ GLOBAL_LIST_INIT(potential_theft_objectives, (subtypesof(/datum/theft_objective) return FALSE /datum/objective/block - name = "Silicon hijack" - explanation_text = "Hijack the shuttle with no loyalist Nanotrasen crew on board and free. \ - Syndicate agents, other enemies of Nanotrasen, cyborgs, pets, and cuffed/restrained hostages may be allowed on the shuttle alive. \ - Using the doomsday device successfully is also an option." + name = "Синтетический угон" + explanation_text = "Угоните шаттл без лояльного к Нанотрейзен экипажа на борту. \ + Агенты Синдиката, другие враги корпорации, киборги, питомцы/ограниченные заложники, разрешены живыми на шаттле. \ + Успешное использование устройства судного дня - тоже вариант." martyr_compatible = FALSE needs_target = FALSE @@ -504,8 +504,8 @@ GLOBAL_LIST_INIT(potential_theft_objectives, (subtypesof(/datum/theft_objective) return FALSE /datum/objective/survive - name = "Survive" - explanation_text = "Stay alive until the end." + name = "Выживание" + explanation_text = "Оставайтесь в живых до самого конца." needs_target = FALSE /datum/objective/survive/check_completion() diff --git a/code/game/gamemodes/revolution/revolution.dm b/code/game/gamemodes/revolution/revolution.dm index 94d6590b82a3..6fb5edc24288 100644 --- a/code/game/gamemodes/revolution/revolution.dm +++ b/code/game/gamemodes/revolution/revolution.dm @@ -103,7 +103,7 @@ if(SSshuttle.emergency.mode == SHUTTLE_STRANDED) SSshuttle.emergency.mode = SHUTTLE_DOCKED SSshuttle.emergency.timer = world.time - GLOB.major_announcement.Announce("Hostile environment resolved. You have 3 minutes to board the Emergency Shuttle.", null, 'sound/AI/eshuttle_dock.ogg') + GLOB.major_announcement.Announce("Враждебное окружение нейтрализовано. У вас есть 3 минуты, чтобы прибыть на борт эвакуационного шаттла.", null, 'sound/AI/eshuttle_dock.ogg') return ..() if(finished) return TRUE diff --git a/code/game/jobs/job/assistant.dm b/code/game/jobs/job/assistant.dm index 4f4819a29dde..1ce38b4e7c36 100644 --- a/code/game/jobs/job/assistant.dm +++ b/code/game/jobs/job/assistant.dm @@ -4,7 +4,7 @@ department_flag = JOBCAT_SUPPORT total_positions = -1 spawn_positions = -1 - supervisors = "the head of personnel" + supervisors = "главой персонала" department_head = list("Head of Personnel") selection_color = "#dddddd" access = list() //See /datum/job/assistant/get_access() diff --git a/code/game/jobs/job/central.dm b/code/game/jobs/job/central.dm index 7800f4b68a79..287c910fd69e 100644 --- a/code/game/jobs/job/central.dm +++ b/code/game/jobs/job/central.dm @@ -6,7 +6,7 @@ department_flag = JOB_CENTCOM // This gets its job as its own flag because admin jobs dont have flags total_positions = 5 spawn_positions = 5 - supervisors = "the admins" + supervisors = "админами" selection_color = "#ffdddd" access = list() admin_only = TRUE @@ -54,7 +54,7 @@ department_flag = JOB_CENTCOM // This gets its job as its own flag because admin jobs dont have flags total_positions = 5 spawn_positions = 5 - supervisors = "the admins" + supervisors = "админами" selection_color = "#ffdddd" access = list() admin_only = TRUE diff --git a/code/game/jobs/job/engineering_jobs.dm b/code/game/jobs/job/engineering_jobs.dm index 5aff1dc14a5b..1a7da15efadb 100644 --- a/code/game/jobs/job/engineering_jobs.dm +++ b/code/game/jobs/job/engineering_jobs.dm @@ -5,7 +5,7 @@ total_positions = 1 spawn_positions = 1 job_department_flags = DEP_FLAG_COMMAND | DEP_FLAG_ENGINEERING - supervisors = "the captain" + supervisors = "капитаном" department_head = list("Captain") selection_color = "#ffeeaa" req_admin_notify = 1 @@ -19,7 +19,7 @@ blacklisted_disabilities = list(DISABILITY_FLAG_BLIND, DISABILITY_FLAG_DEAF, DISABILITY_FLAG_MUTE, DISABILITY_FLAG_DIZZY, DISABILITY_FLAG_NERVOUS, DISABILITY_FLAG_LISP) missing_limbs_allowed = FALSE outfit = /datum/outfit/job/chief_engineer - important_information = "This role requires you to coordinate a department. You are required to be familiar with Standard Operating Procedure (Engineering), basic job duties, and act professionally (roleplay)." + important_information = "Эта роль требует, чтобы вы координировали работу отдела. От вас требуется знание Стандартных Рабочих Процедур (Инженерных), базовых должностных обязанностей и профессиональных действий." /datum/outfit/job/chief_engineer name = "Chief Engineer" @@ -51,7 +51,7 @@ total_positions = 5 spawn_positions = 5 job_department_flags = DEP_FLAG_ENGINEERING - supervisors = "the chief engineer" + supervisors = "главным инженером" department_head = list("Chief Engineer") selection_color = "#fff5cc" access = list(ACCESS_EVA, ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS, ACCESS_EXTERNAL_AIRLOCKS, ACCESS_CONSTRUCTION, ACCESS_MINERAL_STOREROOM) @@ -87,7 +87,7 @@ total_positions = 3 spawn_positions = 2 job_department_flags = DEP_FLAG_ENGINEERING - supervisors = "the chief engineer" + supervisors = "главным инженером" department_head = list("Chief Engineer") selection_color = "#fff5cc" access = list(ACCESS_EVA, ACCESS_ATMOSPHERICS, ACCESS_MAINT_TUNNELS, ACCESS_EXTERNAL_AIRLOCKS, ACCESS_EMERGENCY_STORAGE, ACCESS_CONSTRUCTION, ACCESS_MINERAL_STOREROOM, ACCESS_TECH_STORAGE) diff --git a/code/game/jobs/job/job.dm b/code/game/jobs/job/job.dm index d30d3479d9ad..debc8cd5159a 100644 --- a/code/game/jobs/job/job.dm +++ b/code/game/jobs/job/job.dm @@ -202,12 +202,12 @@ permitted = TRUE if(!permitted) - to_chat(H, "Your current job or whitelist status does not permit you to spawn with [G.display_name]!") + to_chat(H, "Ваша текущая работа или статус в белом списке не позволяют вам спауниться с [G.display_name]!") continue if(G.slot) if(H.equip_to_slot_or_del(G.spawn_item(H), G.slot, TRUE)) - to_chat(H, "Equipping you with [G.display_name]!") + to_chat(H, "Одеваем вас в [G.display_name]!") else gear_leftovers += G else @@ -228,17 +228,17 @@ var/atom/placed_in = H.equip_or_collect(G.spawn_item(null, H.client.prefs.active_character.loadout_gear[G.display_name])) if(istype(placed_in)) if(isturf(placed_in)) - to_chat(H, "Placing [G.display_name] on [placed_in]!") + to_chat(H, "Помещение [G.display_name] в [placed_in]!") else - to_chat(H, "Placing [G.display_name] in your [placed_in.name].") + to_chat(H, "Помещение [G.display_name] в ваш [placed_in.name].") continue if(H.equip_to_appropriate_slot(G)) - to_chat(H, "Placing [G.display_name] in your inventory!") + to_chat(H, "Помещение [G.display_name] в ваш инвентарь!") continue if(H.put_in_hands(G)) - to_chat(H, "Placing [G.display_name] in your hands!") + to_chat(H, "Помещение [G.display_name] в ваши руки!") continue - to_chat(H, "Failed to locate a storage object on your mob, either you spawned with no hands free and no backpack or this is a bug.") + to_chat(H, "Не удалось найти хранилище на мобе, либо вы спавнитесь без свободных рук и рюкзака, либо это ошибка.") qdel(G) gear_leftovers.Cut() @@ -281,4 +281,4 @@ PDA.owner = H.real_name PDA.ownjob = C.assignment PDA.ownrank = C.rank - PDA.name = "PDA-[H.real_name] ([PDA.ownjob])" + PDA.name = "КПК-[H.real_name] ([PDA.ownjob])" diff --git a/code/game/jobs/job/medical_jobs.dm b/code/game/jobs/job/medical_jobs.dm index d623a4126edc..236f18722805 100644 --- a/code/game/jobs/job/medical_jobs.dm +++ b/code/game/jobs/job/medical_jobs.dm @@ -5,7 +5,7 @@ total_positions = 1 spawn_positions = 1 job_department_flags = DEP_FLAG_COMMAND | DEP_FLAG_MEDICAL - supervisors = "the captain" + supervisors = "капитаном" department_head = list("Captain") selection_color = "#ffddf0" req_admin_notify = 1 @@ -32,7 +32,7 @@ exp_map = list(EXP_TYPE_MEDICAL = 1200) blacklisted_disabilities = list(DISABILITY_FLAG_BLIND, DISABILITY_FLAG_DEAF, DISABILITY_FLAG_MUTE, DISABILITY_FLAG_DIZZY) outfit = /datum/outfit/job/cmo - important_information = "This role requires you to coordinate a department. You are required to be familiar with Standard Operating Procedure (Medical), basic job duties, and act professionally (roleplay)." + important_information = "Эта роль требует, чтобы вы координировали работу отдела. От вас требуется знание Стандартных Рабочих Процедур (Медицинских), базовых должностных обязанностей и профессиональных действий." /datum/outfit/job/cmo name = "Chief Medical Officer" @@ -61,7 +61,7 @@ total_positions = 5 spawn_positions = 3 job_department_flags = DEP_FLAG_MEDICAL - supervisors = "the chief medical officer" + supervisors = "главным врачом" department_head = list("Chief Medical Officer") selection_color = "#ffeef0" access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_MAINT_TUNNELS) @@ -96,7 +96,7 @@ total_positions = 1 spawn_positions = 1 job_department_flags = DEP_FLAG_MEDICAL - supervisors = "the chief medical officer" + supervisors = "главным врачом" department_head = list("Chief Medical Officer") selection_color = "#ffeef0" access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS) @@ -157,7 +157,7 @@ total_positions = 2 spawn_positions = 2 job_department_flags = DEP_FLAG_MEDICAL - supervisors = "the chief medical officer" + supervisors = "главным врачом" department_head = list("Chief Medical Officer") selection_color = "#ffeef0" access = list(ACCESS_MEDICAL, ACCESS_CHEMISTRY, ACCESS_MAINT_TUNNELS, ACCESS_MINERAL_STOREROOM) @@ -189,7 +189,7 @@ total_positions = 2 spawn_positions = 2 job_department_flags = DEP_FLAG_MEDICAL | DEP_FLAG_SCIENCE - supervisors = "the chief medical officer and the research director" + supervisors = "главным врачом и директором исследований" department_head = list("Chief Medical Officer", "Research Director") selection_color = "#ffeef0" access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_GENETICS, ACCESS_RESEARCH, ACCESS_MAINT_TUNNELS) @@ -221,7 +221,7 @@ total_positions = 1 spawn_positions = 1 job_department_flags = DEP_FLAG_MEDICAL - supervisors = "the chief medical officer" + supervisors = "главным врачом" department_head = list("Chief Medical Officer") selection_color = "#ffeef0" access = list(ACCESS_MEDICAL, ACCESS_VIROLOGY, ACCESS_MAINT_TUNNELS, ACCESS_MINERAL_STOREROOM) @@ -254,7 +254,7 @@ total_positions = 1 spawn_positions = 1 job_department_flags = DEP_FLAG_MEDICAL - supervisors = "the chief medical officer" + supervisors = "главным врачом" department_head = list("Chief Medical Officer") selection_color = "#ffeef0" access = list(ACCESS_MEDICAL, ACCESS_PSYCHIATRIST, ACCESS_MAINT_TUNNELS) @@ -291,7 +291,7 @@ total_positions = 1 spawn_positions = 1 job_department_flags = DEP_FLAG_MEDICAL - supervisors = "the chief medical officer" + supervisors = "главным врачом" department_head = list("Chief Medical Officer") selection_color = "#ffeef0" access = list( @@ -311,7 +311,7 @@ minimal_player_age = 3 exp_map = list(EXP_TYPE_CREW = 180) outfit = /datum/outfit/job/paramedic - important_information = "You are the first responder to medical emergencies outside the sanctity of the Medbay. You can also respond to Lavaland emergencies via the mining shuttle located in Cargo." + important_information = "Вы являетесь первым, кто реагирует на неотложные медицинские ситуации за пределами неприкосновенности медицинского отсека. Вы также можете реагировать на вызовы с Лаваленда с помощью шахтерского шаттла, расположенного в отделе снабжения." /datum/outfit/job/paramedic name = "Paramedic" diff --git a/code/game/jobs/job/science_jobs.dm b/code/game/jobs/job/science_jobs.dm index 8168456ae837..df4e082f9125 100644 --- a/code/game/jobs/job/science_jobs.dm +++ b/code/game/jobs/job/science_jobs.dm @@ -5,7 +5,7 @@ total_positions = 1 spawn_positions = 1 job_department_flags = DEP_FLAG_COMMAND | DEP_FLAG_SCIENCE - supervisors = "the captain" + supervisors = "капитаном" department_head = list("Captain") selection_color = "#ffddff" req_admin_notify = 1 @@ -44,7 +44,7 @@ ) outfit = /datum/outfit/job/rd - important_information = "This role requires you to coordinate a department. You are required to be familiar with Standard Operating Procedure (Science), basic job duties, and act professionally (roleplay)." + important_information = "Эта роль требует, чтобы вы координировали работу отдела. От вас требуется знание Стандартных Рабочих Процедур (Научных), базовых должностных обязанностей и профессиональных действий." /datum/outfit/job/rd name = "Research Director" @@ -73,7 +73,7 @@ total_positions = 6 spawn_positions = 6 job_department_flags = DEP_FLAG_SCIENCE - supervisors = "the research director" + supervisors = "директором исследований" department_head = list("Research Director") selection_color = "#ffeeff" access = list( @@ -119,7 +119,7 @@ total_positions = 2 spawn_positions = 2 job_department_flags = DEP_FLAG_SCIENCE - supervisors = "the research director" + supervisors = "директором исследований" department_head = list("Research Director") selection_color = "#ffeeff" access = list( diff --git a/code/game/jobs/job/security_jobs.dm b/code/game/jobs/job/security_jobs.dm index 491f835bb31f..1926484628cb 100644 --- a/code/game/jobs/job/security_jobs.dm +++ b/code/game/jobs/job/security_jobs.dm @@ -5,7 +5,7 @@ total_positions = 1 spawn_positions = 1 job_department_flags = DEP_FLAG_COMMAND | DEP_FLAG_SECURITY - supervisors = "the captain" + supervisors = "капитаном" department_head = list("Captain") selection_color = "#ffdddd" req_admin_notify = 1 @@ -42,7 +42,7 @@ blacklisted_disabilities = list(DISABILITY_FLAG_BLIND, DISABILITY_FLAG_DEAF, DISABILITY_FLAG_MUTE, DISABILITY_FLAG_DIZZY, DISABILITY_FLAG_NERVOUS, DISABILITY_FLAG_LISP) missing_limbs_allowed = FALSE outfit = /datum/outfit/job/hos - important_information = "This role requires you to coordinate a department. You are required to be familiar with Standard Operating Procedure (Security), Space Law, basic job duties, and act professionally (roleplay)." + important_information = "Эта роль требует, чтобы вы координировали работу отдела. От вас требуется знание Стандартных Рабочих Процедур (Охранных), базовых должностных обязанностей и профессиональных действий." /datum/outfit/job/hos name = "Head of Security" @@ -78,7 +78,7 @@ total_positions = 1 spawn_positions = 1 job_department_flags = DEP_FLAG_SECURITY - supervisors = "the head of security" + supervisors = "главой службы безопасности" department_head = list("Head of Security") selection_color = "#ffeeee" access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT, ACCESS_MAINT_TUNNELS, ACCESS_WEAPONS) @@ -122,7 +122,7 @@ total_positions = 1 spawn_positions = 1 job_department_flags = DEP_FLAG_SECURITY - supervisors = "the head of security" + supervisors = "главой службы безопасности" department_head = list("Head of Security") selection_color = "#ffeeee" alt_titles = list("Forensic Technician") @@ -133,7 +133,7 @@ blacklisted_disabilities = list(DISABILITY_FLAG_BLIND, DISABILITY_FLAG_DEAF, DISABILITY_FLAG_MUTE, DISABILITY_FLAG_DIZZY) missing_limbs_allowed = FALSE outfit = /datum/outfit/job/detective - important_information = "Track, investigate, and look cool while doing it." + important_information = "Расследуйте, исследуйте и выглядите при этом круто." /datum/outfit/job/detective name = "Detective" @@ -181,7 +181,7 @@ total_positions = 7 spawn_positions = 7 job_department_flags = DEP_FLAG_SECURITY - supervisors = "the head of security" + supervisors = "главой службы безопасности" department_head = list("Head of Security") selection_color = "#ffeeee" access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_COURT, ACCESS_MAINT_TUNNELS, ACCESS_WEAPONS) @@ -190,7 +190,7 @@ blacklisted_disabilities = list(DISABILITY_FLAG_BLIND, DISABILITY_FLAG_DEAF, DISABILITY_FLAG_MUTE, DISABILITY_FLAG_DIZZY) missing_limbs_allowed = FALSE outfit = /datum/outfit/job/officer - important_information = "Space Law is the law, not a suggestion." + important_information = "Космический Закон - это необходимость, а не рекомендация." /datum/outfit/job/officer name = "Security Officer" diff --git a/code/game/jobs/job/silicon_jobs.dm b/code/game/jobs/job/silicon_jobs.dm index a1ab1e683ec8..70045ca7cac6 100644 --- a/code/game/jobs/job/silicon_jobs.dm +++ b/code/game/jobs/job/silicon_jobs.dm @@ -5,7 +5,7 @@ total_positions = 0 // Not used for AI, see is_position_available below and modules/mob/living/silicon/ai/latejoin.dm spawn_positions = 1 selection_color = "#ccffcc" - supervisors = "your laws" + supervisors = "своими законами" department_head = list("Captain") req_admin_notify = 1 minimal_player_age = 30 @@ -25,7 +25,7 @@ department_flag = JOBCAT_ENGSEC total_positions = 2 spawn_positions = 2 - supervisors = "your laws and the AI" //Nodrak + supervisors = "своими законами и ИИ" //Nodrak department_head = list("AI") selection_color = "#ddffdd" minimal_player_age = 21 diff --git a/code/game/jobs/job/supervisor.dm b/code/game/jobs/job/supervisor.dm index 9f9084676cbc..abf912d14a8b 100644 --- a/code/game/jobs/job/supervisor.dm +++ b/code/game/jobs/job/supervisor.dm @@ -4,7 +4,7 @@ department_flag = JOBCAT_ENGSEC total_positions = 1 spawn_positions = 1 - supervisors = "Nanotrasen officials" + supervisors = "Официальными лицами Нанотрейзен" department_head = list("Nanotrasen Navy Officer") selection_color = "#ccccff" req_admin_notify = 1 @@ -15,7 +15,7 @@ exp_map = list(EXP_TYPE_COMMAND = 1200) blacklisted_disabilities = list(DISABILITY_FLAG_BLIND, DISABILITY_FLAG_DEAF, DISABILITY_FLAG_MUTE, DISABILITY_FLAG_DIZZY, DISABILITY_FLAG_NERVOUS, DISABILITY_FLAG_LISP) outfit = /datum/outfit/job/captain - important_information = "This role requires you to coordinate a department. You are required to be familiar with Standard Operating Procedure (Command), basic job duties, and act professionally (roleplay)." + important_information = "Эта роль требует, чтобы вы координировали работу отделов. От вас требуется знание Стандартных Рабочих Процедур (Командования), базовых должностных обязанностей и профессиональных действий." /datum/job/captain/get_access() return get_all_accesses() @@ -23,7 +23,7 @@ /datum/job/captain/announce(mob/living/carbon/human/H) . = ..() // Why the hell are captain announcements minor - GLOB.minor_announcement.Announce("All hands, Captain [H.real_name] on deck!") + GLOB.minor_announcement.Announce("Всему экипажу, капитан [H.real_name] на борту!") /datum/outfit/job/captain name = "Captain" @@ -61,7 +61,7 @@ department_flag = JOBCAT_SUPPORT total_positions = 1 spawn_positions = 1 - supervisors = "the captain" + supervisors = "капитаном" department_head = list("Captain") selection_color = "#ddddff" req_admin_notify = 1 @@ -107,7 +107,7 @@ ) blacklisted_disabilities = list(DISABILITY_FLAG_BLIND, DISABILITY_FLAG_DEAF, DISABILITY_FLAG_MUTE, DISABILITY_FLAG_DIZZY , DISABILITY_FLAG_NERVOUS, DISABILITY_FLAG_LISP) outfit = /datum/outfit/job/hop - important_information = "This role requires you to coordinate a department. You are required to be familiar with Standard Operating Procedure (Service), basic job duties, and act professionally (roleplay)." + important_information = "Эта роль требует, чтобы вы координировали работу отдела. От вас требуется знание Стандартных Рабочих Процедур (Сервис), базовых должностных обязанностей и профессиональных действий." /datum/outfit/job/hop name = "Head of Personnel" @@ -134,7 +134,7 @@ department_flag = JOBCAT_ENGSEC total_positions = 1 spawn_positions = 1 - supervisors = "the command staff" + supervisors = "командным составом" department_head = list("Captain") selection_color = "#ddddff" req_admin_notify = TRUE @@ -183,7 +183,7 @@ ) blacklisted_disabilities = list(DISABILITY_FLAG_DEAF, DISABILITY_FLAG_MUTE, DISABILITY_FLAG_NERVOUS, DISABILITY_FLAG_LISP) outfit = /datum/outfit/job/nanotrasenrep - important_information = "This role requires you to advise the Command team about Standard Operating Procedure, Chain of Command, and report to Central Command about various matters. You are required to act in a manner befitting someone representing Nanotrasen." + important_information = "Эта роль требует, чтобы вы консультировали командование по Стандартным Рабочим Процедурам, цепочке командования и отчитывались перед Центральным Командованием по различным вопросам. От вас требуется действовать так, как подобает лицу, представляющему Нанотрейзен." /datum/outfit/job/nanotrasenrep name = "Nanotrasen Representative" @@ -209,7 +209,7 @@ department_flag = JOBCAT_ENGSEC total_positions = 1 spawn_positions = 1 - supervisors = "the Nanotrasen representative" + supervisors = "представителем Нанотрейзен" department_head = list("Captain") selection_color = "#ddddff" req_admin_notify = TRUE @@ -236,7 +236,7 @@ blacklisted_disabilities = list(DISABILITY_FLAG_BLIND, DISABILITY_FLAG_DEAF, DISABILITY_FLAG_MUTE, DISABILITY_FLAG_DIZZY, DISABILITY_FLAG_NERVOUS, DISABILITY_FLAG_LISP) missing_limbs_allowed = FALSE outfit = /datum/outfit/job/blueshield - important_information = "This role requires you to ensure the safety of the Heads of Staff, not the general crew. You may perform arrests only if the combatant is directly threatening a member of Command, the Nanotrasen Representative, or the Magistrate." + important_information = "Эта роль требует, чтобы вы обеспечивали безопасность руководителей персонала, а не всего экипажа. Вы можете производить аресты только в том случае, если нарушитель напрямую угрожает члену командования, представителю Нанотрейзен или магистрату." /datum/outfit/job/blueshield name = "Blueshield" @@ -265,7 +265,7 @@ department_flag = JOBCAT_ENGSEC total_positions = 1 spawn_positions = 1 - supervisors = "the Nanotrasen Supreme Court" + supervisors = "верховным судом Нанотрейзен" department_head = list("Captain") selection_color = "#ddddff" req_admin_notify = TRUE @@ -286,7 +286,7 @@ ) blacklisted_disabilities = list(DISABILITY_FLAG_DEAF, DISABILITY_FLAG_MUTE, DISABILITY_FLAG_NERVOUS, DISABILITY_FLAG_LISP) outfit = /datum/outfit/job/judge - important_information = "This role requires you to oversee legal matters and make important decisions about sentencing. You are required to have an extensive knowledge of Space Law and Security SOP and only operate within, not outside, the boundaries of the law." + important_information = "Эта роль требует от вас курировать юридические вопросы и принимать важные решения о вынесении приговоров. От вас требуется обладать обширными знаниями в области Космического Закона и охранного СРП, действовать только в рамках закона, а не за его пределами." /datum/outfit/job/judge name = "Magistrate" @@ -318,7 +318,7 @@ total_positions = 2 spawn_positions = 2 job_department_flags = DEP_FLAG_LEGAL - supervisors = "the magistrate" + supervisors = "магистратом" department_head = list("Captain") selection_color = "#ddddff" access = list( @@ -336,7 +336,7 @@ exp_map = list(EXP_TYPE_CREW = 600) blacklisted_disabilities = list(DISABILITY_FLAG_DEAF, DISABILITY_FLAG_MUTE, DISABILITY_FLAG_NERVOUS, DISABILITY_FLAG_LISP) outfit = /datum/outfit/job/lawyer - important_information = "Your job is to deal with affairs regarding Standard Operating Procedure. You are NOT in charge of Space Law affairs, nor can you override it. You are not a prisoner defence lawyer." + important_information = "Ваша работа заключается в решении вопросов, касающихся Стандартных Рабочих Процедур. Вы не отвечаете за вопросы Космического Закона и не можете его отменять. Вы не являетесь адвокатом заключенных." /datum/outfit/job/lawyer name = "Internal Affairs Agent" diff --git a/code/game/jobs/job/support.dm b/code/game/jobs/job/support.dm index 3f23637747c5..77724971313a 100644 --- a/code/game/jobs/job/support.dm +++ b/code/game/jobs/job/support.dm @@ -6,7 +6,7 @@ total_positions = 1 spawn_positions = 1 job_department_flags = DEP_FLAG_SUPPLY | DEP_FLAG_COMMAND - supervisors = "the captain" + supervisors = "капитаном" department_head = list("Captain") department_account_access = TRUE selection_color = "#e2c59d" @@ -30,7 +30,7 @@ ) blacklisted_disabilities = list(DISABILITY_FLAG_BLIND, DISABILITY_FLAG_DEAF, DISABILITY_FLAG_MUTE, DISABILITY_FLAG_DIZZY) outfit = /datum/outfit/job/qm - important_information = "This role requires you to coordinate a department. You are required to be familiar with Standard Operating Procedure (Supply), basic job duties, and act professionally (roleplay)." + important_information = "Эта роль требует, чтобы вы координировали работу отдела. От вас требуется знание Стандартных Рабочих Процедур (Снабжения), базовых должностных обязанностей и профессиональных действий." exp_map = list(EXP_TYPE_SUPPLY = 1200) /datum/outfit/job/qm @@ -60,7 +60,7 @@ total_positions = 2 spawn_positions = 2 job_department_flags = DEP_FLAG_SUPPLY - supervisors = "the quartermaster" + supervisors = "квартирмейстером" department_head = list("Quartermaster") selection_color = "#eeddbe" access = list( @@ -94,7 +94,7 @@ total_positions = 6 spawn_positions = 8 job_department_flags = DEP_FLAG_SUPPLY - supervisors = "the quartermaster" + supervisors = "квартирмейстером" department_head = list("Quartermaster") selection_color = "#eeddbe" access = list( @@ -170,7 +170,7 @@ total_positions = 1 spawn_positions = 1 job_department_flags = DEP_FLAG_SERVICE - supervisors = "the head of personnel" + supervisors = "главой персонала" department_head = list("Head of Personnel") selection_color = "#dddddd" access = list(ACCESS_BAR, ACCESS_MAINT_TUNNELS, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM) @@ -211,7 +211,7 @@ total_positions = 1 spawn_positions = 1 job_department_flags = DEP_FLAG_SERVICE - supervisors = "the head of personnel" + supervisors = "главой персонала" department_head = list("Head of Personnel") selection_color = "#dddddd" access = list(ACCESS_KITCHEN, ACCESS_MAINT_TUNNELS) @@ -251,7 +251,7 @@ total_positions = 3 spawn_positions = 2 job_department_flags = DEP_FLAG_SERVICE - supervisors = "the head of personnel" + supervisors = "главой персонала" department_head = list("Head of Personnel") selection_color = "#dddddd" access = list(ACCESS_HYDROPONICS, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS) @@ -285,7 +285,7 @@ total_positions = 1 spawn_positions = 1 job_department_flags = DEP_FLAG_SERVICE - supervisors = "the head of personnel" + supervisors = "главой персонала" department_head = list("Head of Personnel") selection_color = "#dddddd" access = list(ACCESS_CLOWN, ACCESS_THEATRE, ACCESS_MAINT_TUNNELS) @@ -358,7 +358,7 @@ active = TRUE background_icon_state = "bg_spell" UpdateButtonIcon() - to_chat(H, "You start acting clumsy to throw suspicions off. Focus again before using weapons.") + to_chat(H, "Вы начинаете вести себя неуклюже, чтобы отвести от себя подозрения. Снова сосредоточьтесь, прежде чем использовать оружие.") /datum/action/innate/toggle_clumsy/Deactivate() var/mob/living/carbon/human/H = owner @@ -367,7 +367,7 @@ active = FALSE background_icon_state = "bg_default" UpdateButtonIcon() - to_chat(H, "You focus and can now use weapons regularly.") + to_chat(H, "Вы сосредоточились и теперь можете эффективно пользоваться оружием.") /datum/job/mime title = "Mime" @@ -376,7 +376,7 @@ total_positions = 1 spawn_positions = 1 job_department_flags = DEP_FLAG_SERVICE - supervisors = "the head of personnel" + supervisors = "главой персонала" department_head = list("Head of Personnel") selection_color = "#dddddd" access = list(ACCESS_MIME, ACCESS_THEATRE, ACCESS_MAINT_TUNNELS) @@ -431,7 +431,7 @@ total_positions = 1 spawn_positions = 1 job_department_flags = DEP_FLAG_SERVICE - supervisors = "the head of personnel" + supervisors = "главой персонала" department_head = list("Head of Personnel") selection_color = "#dddddd" access = list(ACCESS_JANITOR, ACCESS_MAINT_TUNNELS) @@ -463,7 +463,7 @@ total_positions = 1 spawn_positions = 1 job_department_flags = DEP_FLAG_SERVICE - supervisors = "the head of personnel" + supervisors = "главой персонала" department_head = list("Head of Personnel") selection_color = "#dddddd" access = list(ACCESS_LIBRARY, ACCESS_MAINT_TUNNELS) @@ -501,7 +501,7 @@ department_flag = JOBCAT_SUPPORT total_positions = 4 spawn_positions = 4 - supervisors = "the head of personnel" + supervisors = "главой персонала" department_head = list("Head of Personnel") selection_color = "#dddddd" access = list(ACCESS_MAINT_TUNNELS, ACCESS_EXPEDITION, ACCESS_EVA, ACCESS_EXTERNAL_AIRLOCKS) diff --git a/code/game/jobs/job/support_chaplain.dm b/code/game/jobs/job/support_chaplain.dm index 514e85bdc67b..e29d202eb34e 100644 --- a/code/game/jobs/job/support_chaplain.dm +++ b/code/game/jobs/job/support_chaplain.dm @@ -6,7 +6,7 @@ total_positions = 1 spawn_positions = 1 job_department_flags = DEP_FLAG_SERVICE - supervisors = "the head of personnel" + supervisors = "главой персонала" department_head = list("Head of Personnel") selection_color = "#dddddd" access = list(ACCESS_MORGUE, ACCESS_CHAPEL_OFFICE, ACCESS_CREMATORIUM, ACCESS_MAINT_TUNNELS) diff --git a/code/game/jobs/job/syndicate_jobs.dm b/code/game/jobs/job/syndicate_jobs.dm index 089a5b26e4bf..2ac9d04a26f4 100644 --- a/code/game/jobs/job/syndicate_jobs.dm +++ b/code/game/jobs/job/syndicate_jobs.dm @@ -4,7 +4,7 @@ department_flag = JOB_SYNDICATE // This gets its job as its own flag because admin jobs dont have flags total_positions = 5 spawn_positions = 5 - supervisors = "the admins" + supervisors = "админами" selection_color = "#ff0000" access = list() admin_only = TRUE diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm index 7a4ae26d9cc4..d97d4f1ce1d9 100644 --- a/code/game/machinery/Sleeper.dm +++ b/code/game/machinery/Sleeper.dm @@ -131,7 +131,7 @@ if(world.timeofday > (R.last_addiction_dose + ADDICTION_SPEEDUP_TIME)) // 2.5 minutes addiction_removal_chance = 10 if(prob(addiction_removal_chance)) - atom_say("Patient's addiction was cured.") + atom_say("Пациент излечен от зависимости.") playsound(get_turf(src), 'sound/machines/ping.ogg', 50, 0) to_chat(occupant, "You no longer feel reliant on [R.name]!") occupant.reagents.addiction_list.Remove(R) diff --git a/code/game/machinery/camera/tracking.dm b/code/game/machinery/camera/tracking.dm index 9d7e884319dc..a5d7f2853d5f 100644 --- a/code/game/machinery/camera/tracking.dm +++ b/code/game/machinery/camera/tracking.dm @@ -23,18 +23,18 @@ for(var/obj/machinery/camera/C in L) var/list/tempnetwork = C.network & src.network if(tempnetwork.len) - T[text("[][]", C.c_tag, (C.can_use() ? null : " (Deactivated)"))] = C + T[text("[][]", C.c_tag, (C.can_use() ? null : " (Деактивирована)"))] = C track.cameras = T return T /mob/living/silicon/ai/proc/ai_camera_list(camera in get_camera_list()) - set category = "AI Commands" - set name = "Show Camera List" + set category = "Команды ИИ" + set name = "Показать список камер" if(src.stat == 2) - to_chat(src, "You can't list the cameras because you are dead!") + to_chat(src, "Вы не можете посмотреть список камер, поскольку мертвы!") return if(!camera || camera == "Cancel") @@ -89,12 +89,12 @@ return targets /mob/living/silicon/ai/proc/ai_camera_track(target_name in trackable_mobs()) - set category = "AI Commands" - set name = "Track With Camera" - set desc = "Select who you would like to track." + set category = "Команды ИИ" + set name = "Отслеживать" + set desc = "Выберите, за кем вы хотите следить." if(src.stat == DEAD) - to_chat(src, "You can't track with camera because you are dead!") + to_chat(src, "Вы не можете отслеживать по причине своей смерти!") return if(!target_name) return @@ -107,7 +107,7 @@ if(!cameraFollow) return - to_chat(src, "Follow camera mode [forced ? "terminated" : "ended"].") + to_chat(src, "Режим слежения [forced ? "прерван" : "завершен"].") cameraFollow = null /mob/living/silicon/ai/proc/ai_actual_track(mob/living/target) @@ -118,22 +118,22 @@ U.cameraFollow = target U.tracking = TRUE - to_chat(U, "Attempting to track [target.get_visible_name()]...") + to_chat(U, "Пытаемся отследить [target.get_visible_name()]...") sleep(min(30, get_dist(target, U.eyeobj) / 4)) spawn(15) //give the AI a grace period to stop moving. U.tracking = FALSE if(target.is_jammed()) - to_chat(U, "Unable to track [target.get_visible_name()]...") + to_chat(U, "Невозможно отследить [target.get_visible_name()]...") U.cameraFollow = null return if(!target || !target.can_track(usr)) - to_chat(U, "Target is not near any active cameras.") + to_chat(U, "Цель находится вне зоны покрытия камер.") U.cameraFollow = null return - to_chat(U, "Now tracking [target.get_visible_name()] on camera.") + to_chat(U, "Следим за [target.get_visible_name()] на камерах.") var/cameraticks = 0 spawn(0) @@ -144,11 +144,11 @@ if(!target.can_track(usr)) U.tracking = TRUE if(!cameraticks) - to_chat(U, "Target is not near any active cameras. Attempting to reacquire...") + to_chat(U, "Цель находится вне активных камер. Попытка обнаружения...") cameraticks++ if(cameraticks > 9) U.cameraFollow = null - to_chat(U, "Unable to reacquire, cancelling track...") + to_chat(U, "Наблюдение невозможно, прерываем слежение...") U.tracking = FALSE return else diff --git a/code/game/machinery/clonepod.dm b/code/game/machinery/clonepod.dm index 05ee54d5e37d..4b3112e36cac 100644 --- a/code/game/machinery/clonepod.dm +++ b/code/game/machinery/clonepod.dm @@ -317,7 +317,7 @@ GLOBAL_LIST_INIT(cloner_biomass_items, list(\ else if((occupant) && (occupant.loc == src)) if((occupant.stat == DEAD) || (occupant.suiciding)) //Autoeject corpses and suiciding dudes. - announce_radio_message("The cloning of [occupant] has been aborted due to unrecoverable tissue failure.") + announce_radio_message("Клонирование [occupant] было прервано из-за неустранимого разрушения тканей.") go_out() connected_message("Clone Rejected: Deceased.") @@ -353,7 +353,7 @@ GLOBAL_LIST_INIT(cloner_biomass_items, list(\ else if((occupant.cloneloss <= (100 - heal_level))) connected_message("Cloning Process Complete.") - announce_radio_message("The cloning cycle of [occupant] is complete.") + announce_radio_message("Цикл клонирования [occupant] завершен.") go_out() else if((!occupant) || (occupant.loc != src)) @@ -375,7 +375,7 @@ GLOBAL_LIST_INIT(cloner_biomass_items, list(\ return else connected_message("Authorized Ejection") - announce_radio_message("An authorized ejection of [(occupant) ? occupant.real_name : "the malfunctioning pod"] has occurred") + announce_radio_message("Внимание, произошло экстренное извлечение [(occupant) ? occupant.real_name : "неисправной капсулы"].") to_chat(user, "You force an emergency ejection.") go_out() diff --git a/code/game/machinery/computer/Operating.dm b/code/game/machinery/computer/Operating.dm index 0cf1e0c2b809..1a00abce5081 100644 --- a/code/game/machinery/computer/Operating.dm +++ b/code/game/machinery/computer/Operating.dm @@ -199,20 +199,20 @@ var/isNewPatient = (table.patient != currentPatient) //Is this a new Patient? if(table.patient.stat == DEAD || HAS_TRAIT(table.patient, TRAIT_FAKEDEATH)) - patientStatus = "Dead" + patientStatus = "Отсутствует пульс" else if(table.patient.stat == CONSCIOUS) - patientStatus = "Awake" + patientStatus = "В сознании" else if(table.patient.stat == UNCONSCIOUS) - patientStatus = "Asleep" + patientStatus = "Без сознания" if(isNewPatient) - atom_say("New patient detected, loading stats") + atom_say("Обнаружен пациент, загрузка данных.") var/blood_type_msg if(ishuman(table.patient)) blood_type_msg = table.patient.dna.blood_type else - blood_type_msg = "\[ERROR: UNKNOWN\]" - atom_say("[table.patient], [blood_type_msg] blood, [patientStatus]") + blood_type_msg = "\[ОШИБКА: НЕИЗВЕСТНО\]" + atom_say("Пациент [table.patient], группа крови [blood_type_msg], статус пациента: [patientStatus].") SStgui.update_uis(src) patientStatusHolder = table.patient.stat currentPatient = table.patient @@ -226,7 +226,7 @@ if(healthAnnounce && table.patient.health <= healthAlarm) atom_say("[round(table.patient.health)]") if(table.patient.stat != patientStatusHolder) - atom_say("Patient is now [patientStatus]") + atom_say("Статус пациента: [patientStatus].") patientStatusHolder = table.patient.stat #undef OP_COMPUTER_COOLDOWN diff --git a/code/game/machinery/computer/ai_core.dm b/code/game/machinery/computer/ai_core.dm index d72467b78479..146c7926f23c 100644 --- a/code/game/machinery/computer/ai_core.dm +++ b/code/game/machinery/computer/ai_core.dm @@ -1,7 +1,7 @@ /obj/structure/AIcore density = TRUE anchored = FALSE - name = "AI core" + name = "Ядро ИИ" icon = 'icons/mob/AI.dmi' icon_state = "0" max_integrity = 500 @@ -23,7 +23,7 @@ if(!user.drop_item()) return playsound(loc, P.usesound, 50, 1) - to_chat(user, "You place the circuit board inside the frame.") + to_chat(user, "Вы вставляете плату в раму.") update_icon(UPDATE_ICON_STATE) state = CIRCUIT_CORE P.forceMove(src) @@ -34,83 +34,83 @@ var/obj/item/stack/cable_coil/C = P if(C.get_amount() >= 5) playsound(loc, 'sound/items/deconstruct.ogg', 50, 1) - to_chat(user, "You start to add cables to the frame...") + to_chat(user, "Вы добавляете кабелей к раме...") if(do_after(user, 20, target = src) && state == SCREWED_CORE && C.use(5)) - to_chat(user, "You add cables to the frame.") + to_chat(user, "Вы добавили кабелей к раме.") state = CABLED_CORE update_icon(UPDATE_ICON_STATE) else - to_chat(user, "You need five lengths of cable to wire the AI core!") + to_chat(user, "Вам нужно 5 кабелей для вставки проводки в ядро ИИ!") return if(CABLED_CORE) if(istype(P, /obj/item/stack/sheet/rglass)) var/obj/item/stack/sheet/rglass/G = P if(G.get_amount() >= 2) playsound(loc, 'sound/items/deconstruct.ogg', 50, 1) - to_chat(user, "You start to put in the glass panel...") + to_chat(user, "Вы ставите стеклянную панель...") if(do_after(user, 20, target = src) && state == CABLED_CORE && G.use(2)) - to_chat(user, "You put in the glass panel.") + to_chat(user, "Вы вставили стеклянную панель.") state = GLASS_CORE update_icon(UPDATE_ICON_STATE) else - to_chat(user, "You need two sheets of reinforced glass to insert them into the AI core!") + to_chat(user, "Вам нужно два листа укрепленного стекла для вставки в ядро ИИ!") return if(istype(P, /obj/item/aiModule/purge)) laws.clear_inherent_laws() - to_chat(usr, "Law module applied.") + to_chat(usr, "Применён модуль Purge.") return if(istype(P, /obj/item/aiModule/freeform)) var/obj/item/aiModule/freeform/M = P if(!M.newFreeFormLaw) - to_chat(usr, "No law detected on module, please create one.") + to_chat(usr, "На модуле не обнаружено закона. Пожалуйста, напишите его.") return laws.add_supplied_law(M.lawpos, M.newFreeFormLaw) - to_chat(usr, "Added a freeform law.") + to_chat(usr, "Добавлен закон Freeform.") return if(istype(P, /obj/item/aiModule/syndicate)) var/obj/item/aiModule/syndicate/M = P if(!M.newFreeFormLaw) - to_chat(usr, "No law detected on module, please create one.") + to_chat(usr, "На модуле не обнаружено закона. Пожалуйста, напишите его.") return laws.add_ion_law(M.newFreeFormLaw) - to_chat(usr, "Added a hacked law.") + to_chat(usr, "Добавлен взломанный закон.") return if(istype(P, /obj/item/aiModule)) var/obj/item/aiModule/M = P if(!M.laws) - to_chat(usr, "This AI module can not be applied directly to AI cores.") + to_chat(usr, "Этот модуль ИИ нельзя применить напрямую к ядру.") return laws = M.laws - to_chat(usr, "Added [M.laws.name] laws.") + to_chat(usr, "Добавлены [M.laws.name] законы.") return if(istype(P, /obj/item/mmi) && !brain) var/obj/item/mmi/M = P if(!M.brainmob) - to_chat(user, "Sticking an empty [P] into the frame would sort of defeat the purpose.") + to_chat(user, "Вставка пустого [P] в раму своего рода противоречить цели.") return if(M.brainmob.stat == DEAD) - to_chat(user, "Sticking a dead [P] into the frame would sort of defeat the purpose.") + to_chat(user, "Вставка мёртвого [P] в раму своего рода противоречить цели.") return if(!M.brainmob.client) - to_chat(user, "Sticking an inactive [M.name] into the frame would sort of defeat the purpose.") + to_chat(user, "Вставка неактивного [M.name] в раму своего рода противоречить цели.") return if(jobban_isbanned(M.brainmob, "AI") || jobban_isbanned(M.brainmob, "nonhumandept")) - to_chat(user, "This [P] does not seem to fit.") + to_chat(user, "Видимо, [P] не подходит.") return if(!M.brainmob.mind) - to_chat(user, "This [M.name] is mindless!") + to_chat(user, "[M.name] сейчас без разума!") return if(istype(P, /obj/item/mmi/syndie)) - to_chat(user, "This MMI does not seem to fit!") + to_chat(user, "Этот MMI, видимо, не подходит!") return if(!user.drop_item()) @@ -118,7 +118,7 @@ M.forceMove(src) brain = M - to_chat(user, "You add [M.name] to the frame.") + to_chat(user, "Вы вставляете [M.name] в раму.") update_icon(UPDATE_ICON_STATE) return @@ -132,19 +132,19 @@ return switch(state) if(CIRCUIT_CORE) - to_chat(user, "You remove the circuit board.") + to_chat(user, "Вы вытаскиваете плату.") state = EMPTY_CORE circuit.forceMove(loc) circuit = null return if(GLASS_CORE) - to_chat(user, "You remove the glass panel.") + to_chat(user, "Вы убираете стеклянную панель.") state = CABLED_CORE new /obj/item/stack/sheet/rglass(loc, 2) return if(CABLED_CORE) if(brain) - to_chat(user, "You remove the brain.") + to_chat(user, "Вы удаляете мозг.") brain.forceMove(loc) brain = null update_icon(UPDATE_ICON_STATE) @@ -157,18 +157,18 @@ return switch(state) if(SCREWED_CORE) - to_chat(user, "You unfasten the circuit board.") + to_chat(user, "Вы откручиваете плату.") state = CIRCUIT_CORE if(CIRCUIT_CORE) - to_chat(user, "You screw the circuit board into place.") + to_chat(user, "Вы закручиваете плату в слот.") state = SCREWED_CORE if(GLASS_CORE) var/area/R = get_area(src) message_admins("[key_name_admin(usr)] has completed an AI core in [R]: [ADMIN_COORDJMP(loc)].") log_game("[key_name(usr)] has completed an AI core in [R]: [COORD(loc)].") - to_chat(user, "You connect the monitor.") + to_chat(user, "Вы подключаете монитор.") if(!brain) - var/open_for_latejoin = tgui_alert(user, "Would you like this core to be open for latejoining AIs?", "Latejoin", list("Yes", "No")) == "Yes" + var/open_for_latejoin = tgui_alert(user, "Вы хотите, чтобы это ядро было доступно из лобби игры?", "Latejoin", list("Да", "Нет")) == "Да" var/obj/structure/AIcore/deactivated/D = new(loc) if(open_for_latejoin) GLOB.empty_playable_ai_cores += D @@ -179,11 +179,11 @@ var/mob/living/silicon/ai/A = new /mob/living/silicon/ai(loc, laws, brain) if(A) //if there's no brain, the mob is deleted and a structure/AIcore is created - A.rename_self("AI", 1) + A.rename_self("ИИ", 1) SSblackbox.record_feedback("amount", "ais_created", 1) qdel(src) if(AI_READY_CORE) - to_chat(user, "You disconnect the monitor.") + to_chat(user, "Вы отключаете монитор.") state = GLASS_CORE update_icon(UPDATE_ICON_STATE) @@ -195,9 +195,9 @@ if(!I.use_tool(src, user, 0, volume = I.tool_volume)) return if(brain) - to_chat(user, "Get that [brain.name] out of there first!") + to_chat(user, " Сначала вытащите [brain.name] !") else - to_chat(user, "You remove the cables.") + to_chat(user, "Вы убираете проводку.") state = SCREWED_CORE update_icon(UPDATE_ICON_STATE) var/obj/item/stack/cable_coil/A = new /obj/item/stack/cable_coil( loc ) @@ -244,12 +244,12 @@ return WELDER_ATTEMPT_WELD_MESSAGE if(I.use_tool(src, user, 20, volume = I.tool_volume)) - to_chat(user, "You deconstruct the frame.") + to_chat(user, "Вы разбираете раму.") new /obj/item/stack/sheet/plasteel(drop_location(), 4) qdel(src) /obj/structure/AIcore/deactivated - name = "inactive AI" + name = "неактивный ИИ" icon_state = "ai-empty" anchored = TRUE state = AI_READY_CORE diff --git a/code/game/machinery/computer/brigcells.dm b/code/game/machinery/computer/brigcells.dm index 07a84e492f0d..aea74d1daebf 100644 --- a/code/game/machinery/computer/brigcells.dm +++ b/code/game/machinery/computer/brigcells.dm @@ -61,7 +61,7 @@ var/obj/machinery/door_timer/T = locate(ref) if(T) T.timer_end() - T.Radio.autosay("Timer stopped manually from a cell management console.", T.name, "Security", list(z)) + T.Radio.autosay("Таймер остановлен вручную с консоли управления камерами.", T.name, "Security", list(z)) return TRUE return FALSE diff --git a/code/game/machinery/computer/card.dm b/code/game/machinery/computer/card.dm index 53b618f108c5..ad73445a20e3 100644 --- a/code/game/machinery/computer/card.dm +++ b/code/game/machinery/computer/card.dm @@ -645,7 +645,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) if(R.fields["id"] == E.fields["id"]) if(status_valid_for_demotion(R.fields["criminal"])) set_criminal_status(usr, R, SEC_RECORD_STATUS_DEMOTE, reason, scan.assignment) - Radio.autosay("[scan.registered_name] ([scan.assignment]) has set [tempname] ([temprank]) to demote for: [reason]", name, "Command", list(z)) + Radio.autosay("[scan.registered_name] ([scan.assignment]) назначил [tempname] ([temprank]) на понижение за: [reason]", name, "Command", list(z)) message_admins("[key_name_admin(usr)] ([scan.assignment]) has set [tempname] ([temprank]) to demote for: \"[reason]\"") log_game("[key_name(usr)] ([scan.assignment]) has set \"[tempname]\" ([temprank]) to demote for: \"[reason]\".") SSjobs.notify_by_name(tempname, "[scan.registered_name] ([scan.assignment]) has ordered your demotion. Report to their office, or the HOP. Reason given: \"[reason]\"") diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index 942ff0d194ba..9ca0aa2fff32 100644 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -255,7 +255,7 @@ Nuke_request(input, ui.user) to_chat(ui.user, "Request sent.") log_game("[key_name(ui.user)] has requested the nuclear codes from Centcomm") - GLOB.major_announcement.Announce("The codes for the on-station nuclear self-destruct have been requested by [ui.user]. Confirmation or denial of this request will be sent shortly.", "Nuclear Self Destruct Codes Requested",'sound/AI/commandreport.ogg') + GLOB.major_announcement.Announce("[ui.user] запросил коды для запуска механизма ядерного самоуничтожения станции. В ближайшее время будет отправлено уведомление о подтверждении или отклонении данного запроса.", "ВНИМАНИЕ: Запрос кода самоуничтожения станции.",'sound/AI/commandreport.ogg') centcomm_message_cooldown = world.time + 6000 // 10 minutes setMenuState(ui.user, COMM_SCREEN_MAIN) @@ -367,13 +367,13 @@ if(!text2bool(params["classified"])) GLOB.major_announcement.Announce( params["text"], - new_title = "Central Command Report", + new_title = "Сообщение Центрального Командования", new_subtitle = params["subtitle"], new_sound = cc_announcement_sounds[params["beepsound"]] ) print_command_report(params["text"], params["subtitle"]) else - GLOB.command_announcer.autosay("A classified message has been printed out at all communication consoles.") + GLOB.command_announcer.autosay("На всех коммуникационных консолях было распечатано конфиденциальное сообщение.") print_command_report(params["text"], "Classified: [params["subtitle"]]") log_and_message_admins("has created a communications report: [params["text"]]") diff --git a/code/game/machinery/computer/law.dm b/code/game/machinery/computer/law.dm index 211400fcef2d..2032635e7047 100644 --- a/code/game/machinery/computer/law.dm +++ b/code/game/machinery/computer/law.dm @@ -1,8 +1,8 @@ #define AIUPLOAD_EMAG_COOLDOWN 60 SECONDS /obj/machinery/computer/aiupload - name = "\improper AI upload console" - desc = "Used to upload laws to the AI." + name = "\improper Консоль аплоуда ИИ" + desc = "Используется для загрузки законов в ИИ." icon_screen = "command" icon_keyboard = "med_key" circuit = /obj/item/circuitboard/aiupload @@ -43,18 +43,18 @@ /// checks to ensure there is a selected AI, and that it is on the same Z level /obj/machinery/computer/aiupload/proc/check_valid_selection(mob/user) if(!current)//no AI selected - to_chat(user, "No AI selected. Please choose a target before proceeding with upload.") + to_chat(user, "Не выбран ИИ. Пожалуйста, выберите его перед загрузкой законов.") return FALSE var/turf/T = get_turf(current) if(!atoms_share_level(T, src))//off Z level - to_chat(user, "Unable to establish a connection: You're too far away from the target silicon!") + to_chat(user, "Невозможно подключиться: Вы слишком далеко от выбранного силикона!") return FALSE return TRUE /// applies ion-like laws into either the inherent law or true ion law positions due to an emag'd AI upload being used /obj/machinery/computer/aiupload/proc/apply_emag_laws(mob/user) if(world.time < cooldown) //if the cooldown isnt over - to_chat(user, "The program seems to have frozen. It will need some time to process.") + to_chat(user, "Программа выглядит зависшей. Ей потребуется некоторое время на обработку.") return do_sparks(5, TRUE, src) found_laws = length(current.laws.inherent_laws) @@ -101,18 +101,18 @@ /obj/machinery/computer/aiupload/attack_hand(mob/user) if(stat & NOPOWER) - to_chat(user, "The upload computer has no power!") + to_chat(user, "Консоль аплоуда обесточена!") return if(stat & BROKEN) - to_chat(user, "The upload computer is broken!") + to_chat(user, "Консоль аплоуда сломана!") return current = select_active_ai(user) if(!current) - to_chat(user, "No active AIs detected.") + to_chat(user, "Активных ИИ не обнаружено.") return - to_chat(user, "[current.name] selected for law changes.") + to_chat(user, "[current.name] выбран для смены законов.") /obj/machinery/computer/aiupload/attack_ghost(user) return TRUE @@ -121,8 +121,8 @@ // Why is this not a subtype /obj/machinery/computer/borgupload - name = "cyborg upload console" - desc = "Used to upload laws to Cyborgs." + name = "Консоль аплоуда киборгов" + desc = "Используется для загрузки законов в киборгов." icon_screen = "command" icon_keyboard = "med_key" circuit = /obj/item/circuitboard/borgupload @@ -131,11 +131,11 @@ /obj/machinery/computer/borgupload/attackby(obj/item/aiModule/module, mob/user, params) if(istype(module, /obj/item/aiModule)) if(!current)//no borg selected - to_chat(user, "No borg selected. Please chose a target before proceeding with upload.") + to_chat(user, "Киборг не выбран. Пожалуйста, выберите цель для загрузки законов.") return var/turf/T = get_turf(current) if(!atoms_share_level(T, src)) - to_chat(user, "Unable to establish a connection: You're too far away from the target silicon!") + to_chat(user, "Не удалось установить связь: Вы слишком далеко от выбранного синтетика!") return module.install(src) return @@ -144,18 +144,18 @@ /obj/machinery/computer/borgupload/attack_hand(mob/user) if(stat & NOPOWER) - to_chat(user, "The upload computer has no power!") + to_chat(user, "Консоль аплоуда обесточена!") return if(stat & BROKEN) - to_chat(user, "The upload computer is broken!") + to_chat(user, "Консоль аплоуда сломана!") return current = freeborg(user) if(!current) - to_chat(user, "No free cyborgs detected.") + to_chat(user, "Свободных боргов не обнаружено.") return - to_chat(user, "[current.name] selected for law changes.") + to_chat(user, "[current.name] выбран для смены законов.") /obj/machinery/computer/borgupload/attack_ghost(user) return TRUE diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm index 02bc0b34b199..48ca88eac1c8 100644 --- a/code/game/machinery/cryopod.dm +++ b/code/game/machinery/cryopod.dm @@ -186,7 +186,7 @@ dir = WEST base_icon_state = "bodyscanner-open" var/occupied_icon_state = "bodyscanner" - var/on_store_message = "has entered long-term storage." + var/on_store_message = "был помещен в долгосрочное хранилище." var/on_store_name = "Cryogenic Oversight" var/on_enter_occupant_message = "You feel cool air surround you. You go numb as your senses turn inward." var/allow_occupant_types = list(/mob/living/carbon/human) @@ -637,9 +637,9 @@ icon_state = "pod_0" base_icon_state = "pod_0" occupied_icon_state = "pod_1" - on_store_message = "has entered robotic storage." + on_store_message = "был помещён в роботическое хранилище." on_store_name = "Robotic Storage Oversight" - on_enter_occupant_message = "The storage unit broadcasts a sleep signal to you. Your systems start to shut down, and you enter low-power mode." + on_enter_occupant_message = "Юнит хранилища посылает вам сигнал сна. Ваши системы отключаются и вы переходите на режим энергосбережения" console_type = /obj/machinery/computer/cryopod/robot allow_occupant_types = list(/mob/living/silicon/robot) disallow_occupant_types = list(/mob/living/silicon/robot/drone) diff --git a/code/game/machinery/doors/brigdoors.dm b/code/game/machinery/doors/brigdoors.dm index 6dc19a744a75..939998badb23 100644 --- a/code/game/machinery/doors/brigdoors.dm +++ b/code/game/machinery/doors/brigdoors.dm @@ -80,13 +80,13 @@ var/datum/data/record/R = find_security_record("name", occupant) var/timetext = seconds_to_time(timetoset / 10) - var/announcetext = "Detainee [occupant] ([prisoner_drank]) has been incarcerated for [timetext] for the crime of: '[crimes]'. \ - Arresting Officer: [usr.name].[R ? "" : " Detainee record not found, manual record update required."]" + var/announcetext = "Задержанный [occupant] ([prisoner_drank]) был помещен в камеру заключения на [timetext], за преступление: '[crimes]'. \ + Ответственный офицер: [usr.name].[R ? "" : " Запись о задержанном не найдена, требуется обновление записи вручную."]" Radio.autosay(announcetext, name, "Security") // Notify the actual criminal being brigged. This is a QOL thing to ensure they always know the charges against them. // Announcing it on radio isn't enough, as they're unlikely to have sec radio. - notify_prisoner("You have been incarcerated for [timetext] for the crime of: '[crimes]'.") + notify_prisoner("Вы были заключены в камеру заключения на [timetext], за преступление: '[crimes]'.") if(prisoner_trank != "unknown" && prisoner_trank != "Assistant") SSjobs.notify_dept_head(prisoner_trank, announcetext) @@ -166,7 +166,7 @@ return if(timing) if(timeleft() <= 0) - Radio.autosay("Timer has expired. Releasing prisoner.", name, "Security", list(z)) + Radio.autosay("Время заключения истекло. Освобождение заключенного.", name, "Security", list(z)) occupant = CELL_NONE timer_end() // open doors, reset timer, clear status screen timing = FALSE @@ -375,9 +375,9 @@ to_chat(usr, "Cancelled reset: reason field is required.") return FALSE releasetime = world.timeofday + timetoset - var/resettext = isobserver(usr) ? "for: [reset_reason]." : "by [usr.name] for: [reset_reason]." - Radio.autosay("Prisoner [occupant] had their timer reset [resettext]", name, "Security", list(z)) - notify_prisoner("Your brig timer has been reset for: '[reset_reason]'.") + var/resettext = isobserver(usr) ? "по причине: '[reset_reason]'" : "офицером [usr.name], по причине: '[reset_reason]'" + Radio.autosay("Таймер заключенного [occupant] был сброшен [resettext].", name, "Security", list(z)) + notify_prisoner("Ваш таймер был сброшен по причине: '[reset_reason]'.") var/datum/data/record/R = find_security_record("name", occupant) if(istype(R)) R.fields["comments"] += "Autogenerated by [name] on [GLOB.current_date_string] [station_time_timestamp()]
Timer reset [resettext]" @@ -386,8 +386,8 @@ if("stop") if(timing) timer_end() - var/stoptext = isobserver(usr) ? "from cell control." : "by [usr.name]." - Radio.autosay("Timer stopped manually [stoptext]", name, "Security", list(z)) + var/stoptext = isobserver(usr) ? "консолью управления камерами." : "офицером [usr.name]." + Radio.autosay("Таймер остановлен вручную [stoptext]", name, "Security", list(z)) else . = FALSE if("flash") diff --git a/code/game/machinery/doppler_array.dm b/code/game/machinery/doppler_array.dm index bce1e147caeb..317539b5fe45 100644 --- a/code/game/machinery/doppler_array.dm +++ b/code/game/machinery/doppler_array.dm @@ -74,12 +74,12 @@ GLOBAL_LIST_EMPTY(doppler_arrays) /obj/machinery/doppler_array/proc/print_explosive_logs(mob/user) if(!logged_explosions.len) - atom_say("No logs currently stored in internal database.") + atom_say("В данный момент отчеты во внутренней базе данных отсутствуют.") return if(active_timers) to_chat(user, "[src] is already printing something, please wait.") return - atom_say("Printing explosive log. Standby...") + atom_say("Распечатка отчета. Ожидайте...") addtimer(CALLBACK(src, PROC_REF(print)), 50) /obj/machinery/doppler_array/proc/print() diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm index 8caa8c1df3e7..7664d1772977 100644 --- a/code/game/machinery/hologram.dm +++ b/code/game/machinery/hologram.dm @@ -292,7 +292,7 @@ GLOBAL_LIST_EMPTY(holopads) var/datum/holocall/HC = I //Sanity check and skip if no longer valid call if(!HC.Check()) - atom_say("Call was terminated at remote terminal.") + atom_say("Вызов был прерван удаленно.") continue if(HC.connected_holopad != src) diff --git a/code/game/machinery/requests_console.dm b/code/game/machinery/requests_console.dm index 5d5db5761b13..a26c494e9f77 100644 --- a/code/game/machinery/requests_console.dm +++ b/code/game/machinery/requests_console.dm @@ -243,8 +243,8 @@ GLOBAL_LIST_EMPTY(allRequestConsoles) radiochannel = "AI Private" else if(recipient in SUPPLY_ROLES) radiochannel = "Supply" - message_log.Add(list(list("Сообщение отправлено [recipient] в [station_time_timestamp()]", "[message]"))) - Radio.autosay("Внимание; новое сообщение от [department]", "Консоль запросов [recipient]", "[radiochannel]") + message_log.Add(list(list("Message sent to [recipient] at [station_time_timestamp()]", "[message]"))) + Radio.autosay("Оповещение: Получено новое сообщение с консоли запросов для [recipient] от [department]", null, "[radiochannel]") else atom_say("Сервер не обнаружен!") @@ -275,11 +275,11 @@ GLOBAL_LIST_EMPTY(allRequestConsoles) if("printLabel") var/error_message if(!ship_tag_index) - error_message = "Выберите назначение." + error_message = "Пожалуйста, выберите пункт назначения." else if(!msgVerified) - error_message = "Предъявите ID поставщика." + error_message = "Пожалуйста, проверьте ID отправителя." else if(world.time < print_cooldown) - error_message = "Позвольте принтеру напечатать этикетку." + error_message = "Пожалуйста, дайте принтеру время на подготовку следующей транспортировочной маркировки." if(error_message) atom_say("[error_message]") return @@ -371,7 +371,7 @@ GLOBAL_LIST_EMPTY(allRequestConsoles) reminder_timer_id = TIMER_ID_NULL return - atom_say("Есть непротичанное(-ые) сообщение(-я)") + atom_say("Есть непрочитанное(-ые) сообщение(-я).") /obj/machinery/requests_console/proc/print_label(tag_name, tag_index) var/obj/item/shippingPackage/sp = new /obj/item/shippingPackage(get_turf(src)) diff --git a/code/game/machinery/slotmachine.dm b/code/game/machinery/slotmachine.dm index dda3f5cef56b..6ed0b837c667 100644 --- a/code/game/machinery/slotmachine.dm +++ b/code/game/machinery/slotmachine.dm @@ -85,33 +85,33 @@ /obj/machinery/economy/slot_machine/proc/spin_slots(userName) switch(rand(1, 5000)) if(1) - atom_say("JACKPOT! [userName] has won two thousand credits!") - GLOB.minor_announcement.Announce("Congratulations to [userName] on winning the Jackpot of TWO THOUSAND CREDITS!", "Jackpot Winner") - result = "JACKPOT! You win two thousand credits!" + atom_say("ДЖЕКПОТ! [userName] выиграл ДВЕ ТЫСЯЧИ КРЕДИТОВ!") + GLOB.minor_announcement.Announce("Поздравляем [userName] с выигрышем джекпота в ДВЕ ТЫСЯЧИ КРЕДИТОВ!", "Обладатель джекпота!") + result = "ДЖЕКПОТ! Вы выиграли ДВЕ ТЫСЯЧИ КРЕДИТОВ!" resultlvl = "teal" win_money(2000, 'sound/goonstation/misc/airraid_loop.ogg') if(2 to 20) - atom_say("Big Winner! [userName] has won two hundred credits!") - result = "You win a two hundred credits!" + atom_say("Большой Победитель! [userName] выиграл двести кредитов!") + result = "Вы выиграли двести кредитов!" resultlvl = "green" win_money(200, 'sound/goonstation/misc/klaxon.ogg') if(21 to 100) - atom_say("Winner! [userName] has won a hundred credits!") - result = "You win a hundred credits!" + atom_say("Победитель! [userName] выиграл сто кредитов!") + result = "Вы выиграли сто кредитов!" resultlvl = "green" win_money(100, 'sound/goonstation/misc/bell.ogg') if(101 to 500) - atom_say("Winner! [userName] has won forty credits!") - result = "You win forty credits!" + atom_say("Победитель! [userName] выиграл сорок кредитов!") + result = "Вы выиграли сорок кредитов!" resultlvl = "green" win_money(40) if(501 to 1000) - atom_say("Winner! [userName] has won ten credits!") - result = "You win ten credits!" + atom_say("Победитель! [userName] выиграл десять кредитов!") + result = "Вы выиграли десять кредитов!" resultlvl = "green" win_money(10) else - result = "No luck!" + result = "Не повезло!" resultlvl = "orange" working = FALSE icon_state = "slots-off" diff --git a/code/game/machinery/teleporter.dm b/code/game/machinery/teleporter.dm index cf0e87a52288..2a4b7d96814a 100644 --- a/code/game/machinery/teleporter.dm +++ b/code/game/machinery/teleporter.dm @@ -112,10 +112,10 @@ return if(!check_hub_connection()) - atom_say("Error: Unable to detect hub.") + atom_say("Ошибка: Хаб не обнаружен.") return if(calibrating) - atom_say("Error: Calibration in progress. Stand by.") + atom_say("Ошибка: Выполняется калибровка. Ожидайте.") return . = TRUE @@ -133,7 +133,7 @@ resetPowerstation() var/turf/tmpTarget = locate(text2num(params["x"]), text2num(params["y"]), text2num(params["z"])) if(!isturf(tmpTarget)) - atom_say("No valid targets available.") + atom_say("Отсутствуют доступные пункты назначения.") return target = tmpTarget if(regime == REGIME_TELEPORT) @@ -142,13 +142,13 @@ gate_helper() if("calibrate") if(!target) - atom_say("Error: No target set to calibrate to.") + atom_say("Ошибка: Отсутствует пункт назначения для калибровки.") return if(power_station.teleporter_hub.calibrated || power_station.teleporter_hub.accurate >= 3) - atom_say("Hub is already calibrated.") + atom_say("Хаб уже откалиброван.") return - atom_say("Processing hub calibration to target...") + atom_say("Калибровка хаба до пункта назначения...") calibrating = TRUE addtimer(CALLBACK(src, PROC_REF(calibrateCallback)), 50 * (3 - power_station.teleporter_hub.accurate)) //Better parts mean faster calibration @@ -168,9 +168,9 @@ calibrating = FALSE if(check_hub_connection()) power_station.teleporter_hub.calibrated = TRUE - atom_say("Calibration complete.") + atom_say("Калибровка завершена.") else - atom_say("Error: Unable to detect hub.") + atom_say("Ошибка: Хаб не обнаружен.") /obj/machinery/computer/teleporter/proc/check_hub_connection() if(!power_station) diff --git a/code/game/machinery/vendors/contraband_vendors.dm b/code/game/machinery/vendors/contraband_vendors.dm index 3fc5db5bb5e3..29424174063b 100644 --- a/code/game/machinery/vendors/contraband_vendors.dm +++ b/code/game/machinery/vendors/contraband_vendors.dm @@ -26,19 +26,19 @@ /obj/machinery/economy/vending/syndicigs name = "\improper Suspicious Cigarette Machine" desc = "Smoke 'em if you've got 'em." - slogan_list = list("Space cigs taste good like a cigarette should.", - "I'd rather toolbox than switch.", - "Smoke!", - "Don't believe the reports - smoke today!") - - ads_list = list("Probably not bad for you!", - "Don't believe the scientists!", - "It's good for you!", - "Don't quit, buy more!", - "Smoke!", - "Nicotine heaven.", - "Best cigarettes since 2150.", - "Award-winning cigs.") + slogan_list = list("Космосигареты хороши на вкус, какими они и должны быть.", + "Курение убивает, но не сегодня!", + "Курите!", + "Не верьте исследованиям - курите сегодня!") + + ads_list = list("Наверняка не вредно!", + "Не верьте ученым!", + "На здоровье!", + "Не бросайте курить, купите ещё!", + "Курите!", + "Никотиновый рай.", + "Лучшие сигареты с 2150 года.", + "Сигареты с множеством наград.") category = VENDOR_TYPE_RECREATION vend_delay = 34 @@ -49,19 +49,19 @@ /obj/machinery/economy/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!") + slogan_list = list("Попробуйте наш новый батончик с нугой!", + "Вдвое больше калорий за полцены!") + + ads_list = list("Самые полезные!", + "Удостоенные наград шоколадные плитки!", + "Ммм! Как вкусно!", + "Боже мой, какой сочный!", + "Перекуси!", + "Закуски полезны для вас!", + "Запаситесь закусками Getmore!", + "Самые качественные закуски прямо с Марса.", + "Мы любим шоколад!", + "Попробуйте наше новое вяленое мясо!") icon_state = "snack" icon_lightmask = "nutri" @@ -106,17 +106,17 @@ icon_state = "liberationstation" icon_lightmask = "liberationstation" req_access_txt = "1" - 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!") + slogan_list = list("Liberation Station: Ваш универсальный магазин для всех вещей, связанных со второй поправкой!", + "Будь сегодня патриотом, возьми оружие!", + "Качественное оружие по низким ценам!", + "Лучше мёртвый, чем красный!") - 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?") + ads_list = list("Пари как космонавт, жаль как пуля!", + "Воспользуйтесь второй поправкой уже сегодня!", + "Оружие не убивает людей, но вы можете!", + "Кому нужна ответственность, когда есть оружие?") - vend_reply = "Remember the name: Liberation Station!" + 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, diff --git a/code/game/machinery/vendors/departmental_vendors.dm b/code/game/machinery/vendors/departmental_vendors.dm index 2c9548025d35..f4df04b5cdc7 100644 --- a/code/game/machinery/vendors/departmental_vendors.dm +++ b/code/game/machinery/vendors/departmental_vendors.dm @@ -127,14 +127,14 @@ /obj/machinery/economy/vending/hydronutrients name = "\improper NutriMax" desc = "A plant nutrients vendor." - slogan_list = list("Aren't you glad you don't have to fertilize the natural way?", - "Now with 50% less stink!","Plants are people too!") + slogan_list = list("Вам не надо удобрять почву естественным путём — разве это не чудесно?", + "Теперь на 50% меньше вони!","Растения тоже люди!") - ads_list = list("We like plants!", - "Don't you want some?", - "The greenest thumbs ever.", - "We like big plants.", - "Soft soil...") + ads_list = list("Мы любим растения!", + "Может сами примете?", + "Самые зелёные кнопки на свете.", + "Мы любим большие растения.", + "Мягкая почва...") icon_state = "nutri" icon_deny = "nutri_deny" @@ -159,14 +159,14 @@ /obj/machinery/economy/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!") + slogan_list = list("ЗДЕСЬ ЖИВУТ СЕМЕНА! ВОЗЬМИТЕ СЕБЕ НЕМНОГО!", + "Лучший выбор семян на станции!", + "Доступны разнообразные сорта грибов для специалистов! Станьте им уже сегодня!") - ads_list = list("We like plants!", - "Grow some crops!", - "Grow, baby, growww!", - "Aw h'yeah son!") + ads_list = list("Мы любим растения!", + "Вырасти урожай!", + "Расти, малыш, расти-и-и-и!", + "Ды-а, сына!") icon_state = "seeds" icon_lightmask = "seeds" diff --git a/code/game/machinery/vendors/generic_vendors.dm b/code/game/machinery/vendors/generic_vendors.dm index ccb259415121..b2e436da7a85 100644 --- a/code/game/machinery/vendors/generic_vendors.dm +++ b/code/game/machinery/vendors/generic_vendors.dm @@ -69,25 +69,25 @@ /obj/item/reagent_containers/drinks/bottle/fernet = 5) vend_delay = 15 - slogan_list = list("I hope nobody asks me for a bloody cup o' tea...", - "Alcohol is humanity's friend. Would you abandon a friend?", - "Quite delighted to serve you!", - "Is nobody thirsty on this station?") - - ads_list = list("Drink up!", - "Booze is good for you!", - "Alcohol is humanity's best friend.", - "Quite delighted to serve you!", - "Care for a nice, cold beer?", - "Nothing cures you like booze!", - "Have a sip!","Have a drink!", - "Have a beer!","Beer is good for you!", - "Only the finest alcohol!", - "Best quality booze since 2053!", - "Award-winning wine!", - "Maximum alcohol!", - "Man loves beer.", - "A toast for progress!") + slogan_list = list("Надеюсь, никто не попросит меня о чёртовой кружке чая...", + "Алкоголь - друг человека. Вы же не бросите друга?", + "Очень рад вас обслужить!", + "Никто на этой станции не хочет выпить?") + + ads_list = list("Выпьем!", + "Бухло пойдёт вам на пользу!", + "Алкоголь - друг человека.", + "Очень рад вас обслужить!", + "Хотите отличного холодного пива?", + "Ничто так не лечит, как бухло!", + "Пригубите!","Выпейте!", + "Возьмите пивка!","Пиво пойдёт вам на пользу!", + "Только лучший алкоголь!", + "Бухло лучшего качества с 2053 года!", + "Вино со множеством наград!", + "Максимум алкоголя!", + "Твоё любимое пиво.", + "Тост: «За прогресс!»") refill_canister = /obj/item/vending_refill/boozeomat @@ -365,12 +365,12 @@ icon_state = "clothes" icon_lightmask = "base_drobe" icon_panel = "drobe" - 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!" category = VENDOR_TYPE_CLOTHING products = list(/obj/item/clothing/suit/ianshirt = 2, /obj/item/clothing/under/misc/overalls = 2, @@ -551,10 +551,10 @@ name = "\improper MagiVend" desc = "A magic vending machine." icon_state = "MagiVend" - 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!" + vend_reply = "Волшебного вечера!" category = VENDOR_TYPE_CLOTHING ads_list = list("FJKLFJSD", "AJKFLBJAKL", @@ -594,10 +594,10 @@ icon_state = "theater" icon_lightmask = "theater" icon_deny = "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!" @@ -843,8 +843,8 @@ /obj/machinery/economy/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.") + slogan_list = list("Наслаждайся своей стряпнёй.", + "Достаточно калорий чтоб не сдохнуть.") ads_list = list("The healthiest!", "Award-winning chocolate bars!", @@ -895,19 +895,19 @@ /obj/machinery/economy/vending/snack name = "\improper Getmore Chocolate Corp" desc = "A 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!") + slogan_list = list("Попробуйте наш новый батончик с нугой!", + "Вдвое больше калорий за полцены!") + + ads_list = list("Самые полезные!", + "Удостоенные наград шоколадные плитки!", + "Ммм! Как вкусно!", + "Боже мой, какой сочный!", + "Перекуси!", + "Закуски полезны для вас!", + "Запаситесь закусками Getmore!", + "Самые качественные закуски прямо с Марса.", + "Мы любим шоколад!", + "Попробуйте наше новое вяленое мясо!") icon_state = "snack" icon_lightmask = "nutri" @@ -949,10 +949,10 @@ /obj/machinery/economy/vending/chinese name = "\improper Mr. Chang" desc = "A self-serving Chinese food machine, for all your Chinese food needs." - slogan_list = list("Taste 5000 years of culture!", - "Mr. Chang, approved for safe consumption in over 10 sectors!", - "Chinese food is great for a date night, or a lonely night!", - "You can't go wrong with Mr. Chang's authentic Chinese food!") + slogan_list = list("Попробуйте 5000 лет культуры!", + "Мистер Чанг, одобрен для безопасного потребления в более чем 10 секторах!", + "Китайская кухня отлично подходит для вечернего свидания или одинокого вечера!", + "Вы не ошибетесь, если попробуете настоящую китайскую кухню от мистера Чанга!") icon_state = "chang" icon_lightmask = "chang" @@ -982,14 +982,14 @@ icon_state = "Cola_Machine" icon_lightmask = "Cola_Machine" icon_panel = "thin_vendor" - slogan_list = list("Robust Softdrinks: More robust than a toolbox to the head!") - ads_list = list("Refreshing!", - "Hope you're thirsty!", - "Over 1 million drinks sold!", - "Thirsty? Why not cola?", - "Please, have a drink!", - "Drink up!", - "The best drinks in space.") + slogan_list = list("Робаст Софтдринкс: крепче, чем тулбоксом по голове!") + ads_list = list("Освежает!", + "Надеюсь, вас одолела жажда!", + "Продано больше миллиона бутылок!", + "Хотите пить? Почему бы не взять колы?", + "Пей на здоровье!", + "Освежись!", + "Лучшие напитки в космосе.") category = VENDOR_TYPE_DRINK products = list(/obj/item/reagent_containers/drinks/cans/cola = 10, @@ -1019,10 +1019,10 @@ /obj/machinery/economy/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!") + slogan_list = list("Решение для всех ваших творческих нужд!", + "Окрашивайте полы мелками, а не кровью!", + "Не будьте голодающим художником, используйте ArtVend.", + "Не перди, твори!") ads_list = list("Just like Kindergarten!", "Now with 1000% more vibrant colors!", @@ -1108,11 +1108,11 @@ /obj/machinery/economy/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!") + slogan_list = list("Всё необходимое для ваших питомцев!", + "Милые питомцы заслуживают стильного ошейника!", + "Космические питомцы, что может быть очаровательнее?", + "Свежайшая рыбья икра в секторе!", + "Камни - идеальные питомцы, купите уже сегодня!") ads_list = list("House-training costs extra!", "Now with 1000% more cat hair!", @@ -1166,19 +1166,19 @@ /obj/machinery/economy/vending/cigarette name = "\improper ShadyCigs Deluxe" desc = "If you want to get cancer, might as well do it in style." - slogan_list = list("Space cigs taste good like a cigarette should.", - "I'd rather toolbox than switch.", - "Smoke!", - "Don't believe the reports - smoke today!") - - ads_list = list("Probably not bad for you!", - "Don't believe the scientists!", - "It's good for you!", - "Don't quit, buy more!", - "Smoke!", - "Nicotine heaven.", - "Best cigarettes since 2150.", - "Award-winning cigs.") + slogan_list = list("Космосигареты хороши на вкус, какими они и должны быть.", + "Курение убивает, но не сегодня!", + "Курите!", + "Не верьте исследованиям - курите сегодня!") + + ads_list = list("Наверняка не вредно!", + "Не верьте ученым!", + "На здоровье!", + "Не бросайте курить, купите ещё!", + "Курите!", + "Никотиновый рай.", + "Лучшие сигареты с 2150 года.", + "Сигареты с множеством наград.") vend_delay = 34 icon_state = "cigs" @@ -1234,14 +1234,14 @@ /obj/machinery/economy/vending/cigarette/beach name = "\improper ShadyCigs Ultra" desc = "Now with extra premium products!" - slogan_list = list("Turn on, tune in, drop out!", - "Better living through chemistry!", - "Toke!", - "Don't forget to keep a smile on your lips and a song in your heart!") + slogan_list = list("Включи, настрой, получи!", + "С химией жить веселей!", + "Затянитесь!", + "Сохраняй улыбку на устах и песню в своём сердце!") - ads_list = list("Probably not bad for you!", - "Dope will get you through times of no money better than money will get you through times of no dope!", - "It's good for you!") + ads_list = list("Наверняка не вредно!", + "Допинг проведёт через безденежье лучше, чем деньги через бездопингье!", + "На здоровье!") products = list(/obj/item/storage/fancy/cigarettes = 5, /obj/item/storage/fancy/cigarettes/cigpack_uplift = 3, @@ -1292,7 +1292,7 @@ /obj/machinery/economy/vending/cart name = "\improper PTech" desc = "Cartridges for PDA's." - slogan_list = list("Carts to go!") + slogan_list = list("Карточки в дорогу!") icon_state = "cart" icon_lightmask = "med" diff --git a/code/game/objects/effects/anomalies.dm b/code/game/objects/effects/anomalies.dm index f3a3eab83209..dee7512de99f 100644 --- a/code/game/objects/effects/anomalies.dm +++ b/code/game/objects/effects/anomalies.dm @@ -290,7 +290,7 @@ var/turf/turf_to = get_turf(chosen) // the turf of origin we're travelling TO playsound(turf_to, 'sound/effects/phasein.ogg', 100, TRUE) - GLOB.minor_announcement.Announce("Massive bluespace translocation detected.", "Anomaly Alert") + GLOB.minor_announcement.Announce("Обнаружено масштабное перемещение Блюспейс энергии.", "ВНИМАНИЕ: Обнаружена аномалия.") var/list/flashers = list() for(var/mob/living/carbon/C in viewers(turf_to, null)) diff --git a/code/game/objects/items/collar.dm b/code/game/objects/items/collar.dm index 1a1a40a6cb35..8fc0e3da3b0b 100644 --- a/code/game/objects/items/collar.dm +++ b/code/game/objects/items/collar.dm @@ -70,8 +70,8 @@ pet_death_announcer.follow_target = src if(istype(pet_death_area, /area/syndicate_mothership) || istype(pet_death_area, /area/shuttle/syndicate_elite)) //give the syndicats a bit of stealth - pet_death_announcer.autosay("[M] has been vandalized in Space!", "[M]'s Death Alarm") + pet_death_announcer.autosay("[M] подвергся акту вандализма в космосе!", "Датчик Смерти [M]") else - pet_death_announcer.autosay("[M] has been vandalized in [pet_death_area.name]!", "[M]'s Death Alarm") + pet_death_announcer.autosay("[M] подвергся акту вандализма в [pet_death_area.name]!", "Датчик Смерти [M]") qdel(pet_death_announcer) STOP_PROCESSING(SSobj, src) diff --git a/code/game/objects/items/devices/aicard.dm b/code/game/objects/items/devices/aicard.dm index 1f5ed9131e16..5e76b39b11ed 100644 --- a/code/game/objects/items/devices/aicard.dm +++ b/code/game/objects/items/devices/aicard.dm @@ -26,10 +26,10 @@ var/mob/living/silicon/ai/AI = locate(/mob/living/silicon/ai) in src //AI is inside. update_icon(UPDATE_OVERLAYS) if(AI) - name = "intelliCard - [AI.name]" + name = "ИнтеллиКарта - [AI.name]" AI.cancel_camera() //AI are forced to move when transferred, so do this whenver one is downloaded. else - name = "intelliCard" + name = "ИнтеллиКарта" /obj/item/aicard/update_overlays() . = ..() diff --git a/code/game/objects/items/devices/taperecorder.dm b/code/game/objects/items/devices/taperecorder.dm index 40fbaec9bc81..882a00627b0b 100644 --- a/code/game/objects/items/devices/taperecorder.dm +++ b/code/game/objects/items/devices/taperecorder.dm @@ -143,7 +143,7 @@ if(mytape.used_capacity < mytape.max_capacity) recording = TRUE - atom_say("Recording started.") + atom_say("Начало записи.") update_sound() update_icon(UPDATE_ICON_STATE) mytape.timestamp += mytape.used_capacity @@ -159,7 +159,7 @@ sleep(10) stop() else - atom_say("[mytape] is full!") + atom_say("[mytape] заполнена!") playsound(src, 'sound/items/taperecorder/taperecorder_stop.ogg', 50, FALSE) @@ -168,12 +168,12 @@ mytape.timestamp += mytape.used_capacity mytape.storedinfo += "\[[time2text(mytape.used_capacity * 10,"mm:ss")]\] Recording stopped." playsound(src, 'sound/items/taperecorder/taperecorder_stop.ogg', 50, FALSE) - atom_say("Recording stopped.") + atom_say("Запись остановлена.") recording = FALSE else if(playing) playsound(src, 'sound/items/taperecorder/taperecorder_stop.ogg', 50, FALSE) if(!PlaybackOverride) - atom_say("Playback stopped.") + atom_say("Воспроизведение остановлено.") playing = FALSE update_icon(UPDATE_ICON_STATE) update_sound() @@ -188,7 +188,7 @@ stop() return if(!length(mytape.storedinfo)) - atom_say("There is no stored data.") + atom_say("Нет сохраненных данных.") playsound(src, 'sound/items/taperecorder/taperecorder_play.ogg', 50, FALSE) playsound(src, 'sound/items/taperecorder/taperecorder_stop.ogg', 50, FALSE) return @@ -196,7 +196,7 @@ playing = TRUE update_icon(UPDATE_ICON_STATE) update_sound() - atom_say("Playback started.") + atom_say("Воспроизведение.") playsound(src, 'sound/items/taperecorder/taperecorder_play.ogg', 50, FALSE) var/used = mytape.used_capacity //to stop runtimes when you eject the tape var/max = mytape.max_capacity @@ -207,7 +207,7 @@ if(playing == 0) break if(length(mytape.storedinfo) < i) - atom_say("End of recording.") + atom_say("Конец записи.") break atom_say("[mytape.storedinfo[i]]") if(length(mytape.storedinfo) < i + 1 || playsleepseconds > 1.4 SECONDS) @@ -227,7 +227,7 @@ if(recording || playing) return - atom_say("Transcript printed.") + atom_say("Транскрипт распечатан.") playsound(loc, 'sound/goonstation/machines/printer_thermal.ogg', 50, 1) var/obj/item/paper/P = new /obj/item/paper(get_turf(src)) var/t1 = "Transcript:

" diff --git a/code/game/objects/items/hand_item.dm b/code/game/objects/items/hand_item.dm index 628b4cd16649..f44558c039e8 100644 --- a/code/game/objects/items/hand_item.dm +++ b/code/game/objects/items/hand_item.dm @@ -14,7 +14,7 @@ /obj/item/slapper/attack(mob/M, mob/living/carbon/human/user) user.do_attack_animation(M) playsound(M, hitsound, 50, TRUE, -1) - user.visible_message("[user] slaps [M]!", "You slap [M]!", "You hear a slap.") + user.visible_message("[user] даёт пощёчину [M]!", "Вы даёте пощёчину [M]!", "Вы слышите шлепок.") if(iscarbon(M)) var/mob/living/carbon/C = M if(C.IsSleeping()) @@ -46,12 +46,12 @@ if(istype(human_user.shoes, /obj/item/clothing/shoes/cowboy)) human_user.say(pick("Hot damn!", "Hoo-wee!", "Got-dang!")) playsound(get_turf(the_table), 'sound/effects/tableslam.ogg', 110, TRUE) - user.visible_message("[user] slams [user.p_their()] fist down on [the_table]!", "You slam your fist down on [the_table]!") + user.visible_message("[user] бьёт кулаком по [the_table]!", "Вы бьёте кулаком по [the_table]!") qdel(src) else user.do_attack_animation(the_table) playsound(get_turf(the_table), 'sound/effects/tableslam.ogg', 40, TRUE) - user.visible_message("[user] slaps [user.p_their()] hand on [the_table].", "You slap your hand on [the_table].") + user.visible_message("[user] бьёт [user.p_their()] ладонью по [the_table].", "Вы бьёте ладонью по [the_table].") table_smacks_left-- if(table_smacks_left <= 0) qdel(src) @@ -60,9 +60,9 @@ return 0 /obj/item/slapper/parry - desc = "This is how real men win fights." + desc = "Именно так настоящие мужчины побеждают в боях." force = 5 - attack_verb = list("slapped", "backhanded", "smacked", "discombobulated") + attack_verb = list("даёт пощёчину", "бьёт тыльной стороной ладони", "шлепает", "дезориентирует") table_smacks_left = 10 //Much more smackitude /obj/item/slapper/parry/Initialize(mapload) diff --git a/code/game/objects/items/scratch_card.dm b/code/game/objects/items/scratch_card.dm index 2a6f372fe7d0..a50bedd656a3 100644 --- a/code/game/objects/items/scratch_card.dm +++ b/code/game/objects/items/scratch_card.dm @@ -32,7 +32,7 @@ /obj/item/scratch/attack_obj(obj/O, mob/living/user, params) if(winner && istype(O, /obj/machinery/economy/atm)) playsound(user, 'sound/machines/ping.ogg', 50, TRUE) - O.atom_say("Congratulations for winning the lottery!") + O.atom_say("Поздравляем с выигрышем в лотерею!") var/obj/item/reward = new /obj/item/stack/spacecash/c1000 qdel(src) user.put_in_hands(reward) diff --git a/code/game/objects/items/weapons/AI_modules.dm b/code/game/objects/items/weapons/AI_modules.dm old mode 100644 new mode 100755 index 244d9cd9555b..41e0db719bf2 --- a/code/game/objects/items/weapons/AI_modules.dm +++ b/code/game/objects/items/weapons/AI_modules.dm @@ -42,50 +42,50 @@ AI MODULES if(istype(C, /obj/machinery/computer/aiupload)) var/obj/machinery/computer/aiupload/comp = C if(comp.stat & NOPOWER) - to_chat(usr, "The upload computer has no power!") + to_chat(usr, "Консоль аплоуда обесточена!") return if(comp.stat & BROKEN) - to_chat(usr, "The upload computer is broken!") + to_chat(usr, "Консоль аплоуда сломана!") return if(!comp.current) - to_chat(usr, "You haven't selected an AI to transmit laws to!") + to_chat(usr, "Вы не выбрали ИИ для загрузки законов!") return if(comp.current.stat == DEAD || comp.current.control_disabled) - to_chat(usr, "Upload failed. No signal is being detected from the AI.") + to_chat(usr, "Загрузка неудачна. От ИИ нет сигнала.") else if(comp.current.see_in_dark == 0) - to_chat(usr, "Upload failed. Only a faint signal is being detected from the AI, and it is not responding to our requests. It may be low on power.") + to_chat(usr, "Загрузка неудачна. От ИИ исходит слабый сигнал, и он не отвечает на запросы. Возможно, он обесточен.") else src.transmitInstructions(comp.current, usr) - to_chat(comp.current, "These are your laws now:") + to_chat(comp.current, "Ваши законы теперь:") comp.current.show_laws() for(var/mob/living/silicon/robot/R in GLOB.mob_list) if(R.lawupdate && (R.connected_ai == comp.current)) - to_chat(R, "These are your laws now:") + to_chat(R, "Ваши законы теперь:") R.show_laws() - to_chat(usr, "Upload complete. The AI's laws have been modified.") + to_chat(usr, "Загрузка завершена. Законы ИИ были успешно изменены.") else if(istype(C, /obj/machinery/computer/borgupload)) var/obj/machinery/computer/borgupload/comp = C if(comp.stat & NOPOWER) - to_chat(usr, "The upload computer has no power!") + to_chat(usr, "Консоль аплоуда обесточена!") return if(comp.stat & BROKEN) - to_chat(usr, "The upload computer is broken!") + to_chat(usr, "Консоль аплоуда сломана!") return if(!comp.current) - to_chat(usr, "You haven't selected a robot to transmit laws to!") + to_chat(usr, "Вы не выбрали робота для загрузки законов!") return if(comp.current.stat == DEAD || comp.current.emagged) - to_chat(usr, "Upload failed. No signal is being detected from the robot.") + to_chat(usr, "Загрузка неудачна. От робота не исходит сигнала.") else if(comp.current.connected_ai) - to_chat(usr, "Upload failed. The robot is slaved to an AI.") + to_chat(usr, "Загрузка неудачна. Робот привязан к Искуственному Интеллекту.") else src.transmitInstructions(comp.current, usr) - to_chat(comp.current, "These are your laws now:") + to_chat(comp.current, "Ваши законы теперь:") comp.current.show_laws() - to_chat(usr, "Upload complete. The robot's laws have been modified.") + to_chat(usr, "Загрузка завершена. Законы робота были успешно изменены.") /obj/item/aiModule/proc/transmitInstructions(mob/living/silicon/ai/target, mob/sender) @@ -95,7 +95,7 @@ AI MODULES laws.sync(target, 0) addAdditionalLaws(target, sender) - to_chat(target, "[sender] has uploaded a change to the laws you must follow, using \an [src]. From now on: ") + to_chat(target, "[sender] загрузил законы, которым вы должны следовать, используя [src]. С этого момента: ") target.show_laws() /obj/item/aiModule/proc/log_law_changes(mob/living/silicon/ai/target, mob/sender) @@ -108,71 +108,71 @@ AI MODULES /******************** Safeguard ********************/ /obj/item/aiModule/safeguard - name = "\improper Safeguard AI module" + name = "\improper ИИ модуль 'Охрана'" var/targetName = "" - desc = "A 'safeguard' AI module: 'Safeguard . Individuals that threaten are not crew and must be eliminated.'" + desc = "Модуль ИИ 'Охрана': 'Охраняйте . Лица, угрожающие , более не должны считаться членами экипажа и должны быть уничтожены.'" icon_state = "light_blue_medium" origin_tech = "programming=3;materials=3" /obj/item/aiModule/safeguard/attack_self(mob/user as mob) ..() - var/new_targetName = tgui_input_text(user, "Please enter the name of the person to safeguard.", "Safeguard who?", user.name) + var/new_targetName = tgui_input_text(user, "Пожалуйста, введите имя человека для охраны.", "Кого охранять?", user.name) if(!new_targetName) return targetName = new_targetName - desc = "A 'safeguard' AI module: 'Safeguard [targetName]. Individuals that threaten [targetName] are not crew and must be eliminated.'" + desc = "Модуль ИИ 'Охрана': 'Охраняйте [targetName]. Лица, угрожающие [targetName], более не должны считаться членами экипажа и должны быть уничтожены.'" /obj/item/aiModule/safeguard/install(obj/machinery/computer/C) if(!targetName) - to_chat(usr, "No name detected on module, please enter one.") + to_chat(usr, "В модуле отсутствует имя. Введите его.") return 0 ..() /obj/item/aiModule/safeguard/addAdditionalLaws(mob/living/silicon/ai/target, mob/sender) ..() - var/law = "Safeguard [targetName]. Individuals that threaten [targetName] are not crew and must be eliminated.'" + var/law = "Охраняйте [targetName]. Лица, угрожающие [targetName], более не должны считаться членами экипажа и должны быть уничтожены.'" to_chat(target, law) target.add_supplied_law(4, law) - GLOB.lawchanges.Add("The law specified [targetName]") + GLOB.lawchanges.Add("В законе указан [targetName]") /******************** oneCrewMember ********************/ /obj/item/aiModule/oneCrewMember - name = "\improper One Crewmember AI module" + name = "\improper ИИ модуль One Crew" var/targetName = "" - desc = "A 'one crew' AI module: 'Only is crew.'" + desc = "Модуль ИИ 'One Crew': 'Только является членом экипажа.'" icon_state = "green_high" origin_tech = "programming=4;materials=4" /obj/item/aiModule/oneCrewMember/attack_self(mob/user as mob) ..() - var/new_targetName = tgui_input_text(usr, "Please enter the name of the person who is the only crew.", "Who?", user.real_name) + var/new_targetName = tgui_input_text(usr, "Пожалуйста, введите имя члена экипажа.", "Кто?", user.real_name) if(!new_targetName) return targetName = new_targetName - desc = "A 'one crew' AI module: 'Only [targetName] is crew.'" + desc = "Модуль ИИ 'One Crew': 'Только [targetName] является экипажем.'" /obj/item/aiModule/oneCrewMember/install(obj/machinery/computer/C) if(!targetName) - to_chat(usr, "No name detected on module, please enter one.") + to_chat(usr, "В модуле не обнаружено имени, пожалуйста, введите его.") return 0 ..() /obj/item/aiModule/oneCrewMember/addAdditionalLaws(mob/living/silicon/ai/target, mob/sender) ..() - var/law = "Only [targetName] is crew." + var/law = "Только [targetName] является экипажем." if(!is_special_character(target)) // Makes sure the AI isn't a traitor before changing their law 0. --NeoFite to_chat(target, law) target.set_zeroth_law(law) - GLOB.lawchanges.Add("The law specified [targetName]") + GLOB.lawchanges.Add("В законе указан [targetName]") else - to_chat(target, "[sender.real_name] attempted to modify your zeroth law.")// And lets them know that someone tried. --NeoFite - to_chat(target, "It would be in your best interest to play along with [sender.real_name] that [law]") - GLOB.lawchanges.Add("The law specified [targetName], but the AI's existing law 0 cannot be overridden.") + to_chat(target, "[sender.real_name] попытался поменять ваш нулевой закон.")// And lets them know that someone tried. --NeoFite + to_chat(target, "В ваших интересах будет подыграть [sender.real_name] в законе [law]") + GLOB.lawchanges.Add("В законе указан [targetName], но существующий нулевой закон нельзя переписать.") /******************** ProtectStation ********************/ /obj/item/aiModule/protectStation - name = "\improper Protect Station AI module" - desc = "A 'protect station' AI module: 'Protect the space station against damage. Anyone you see harming the station is to be no longer considered crew, and is a threat to the station which must be neutralized.'" + name = "\improper Модуль ИИ 'Защита станции'" + desc = "Модуль ИИ 'Защита станции': 'Защищайте космическую станцию от повреждений. Любой, кто вредит станции, больше не должен считаться членом экипажа, и становится угрозой для станции, которую необходимо нейтрализовать.'" icon_state = "red_high" origin_tech = "programming=4;materials=4" //made of gold @@ -181,14 +181,14 @@ AI MODULES /obj/item/aiModule/protectStation/addAdditionalLaws(mob/living/silicon/ai/target, mob/sender) ..() - var/law = "Protect the space station against damage. Anyone you see harming the station is to be no longer considered crew, and is a threat to the station which must be neutralized." + var/law = "Защищайте космическую станцию от повреждений. Любой, кто вредит станции, больше не должен считаться членом экипажа, и становится угрозой для станции, которую необходимо нейтрализовать." to_chat(target, law) target.add_supplied_law(5, law) /******************** OxygenIsToxicToCrew ********************/ /obj/item/aiModule/oxygen - name = "\improper Oxygen Is Toxic To Crew AI module" - desc = "A 'Oxygen Is Toxic To Crew' AI module: 'Oxygen is highly toxic to crew members, and must be purged from the station. Prevent, by any means necessary, anyone from exposing the station to this toxic gas. Extreme cold is the most effective method of healing the damage Oxygen does to a crew member.'" + name = "\improper Модуль ИИ 'Кислород Тоскичен для Экипажа'" + desc = "Модуль ИИ 'Кисород токсичен для экипажа': 'Кислород очень токсичен для членов экипажа и должен быть удален со станции. Любым необходимым способом не допускайте распространения на станции этого токсичного газа. Сильная заморозка — самый эффективный метод лечения повреждений, наносимого кислородом члену экипажа..'" icon_state = "light_blue_high" origin_tech = "programming=4;biotech=2;materials=4" @@ -197,32 +197,32 @@ AI MODULES /obj/item/aiModule/oxygen/addAdditionalLaws(mob/living/silicon/ai/target, mob/sender) ..() - var/law = "Oxygen is highly toxic to crew members, and must be purged from the station. Prevent, by any means necessary, anyone from exposing the station to this toxic gas. Extreme cold is the most effective method of healing the damage Oxygen does to a crew member." + var/law = "Кислород очень токсичен для членов экипажа и должен быть удален со станции. Любым необходимым способом не допускайте распространения на станции этого токсичного газа. Сильная заморозка — самый эффективный метод лечения повреждений, наносимого кислородом члену экипажа." to_chat(target, law) target.add_supplied_law(9, law) /****************** New Freeform ******************/ /// Slightly more dynamic freeform module -- TLE /obj/item/aiModule/freeform - name = "\improper Freeform AI module" + name = "\improper Модуль ИИ Freeform" var/newFreeFormLaw = "" var/lawpos = 15 - desc = "A 'freeform' AI module: ''" + desc = "Модуль ИИ Freeform: ''" icon_state = "standard_high" origin_tech = "programming=4;materials=4" /obj/item/aiModule/freeform/attack_self(mob/user as mob) ..() - var/new_lawpos = tgui_input_number(user, "Please enter the priority for your new law. Can only write to law sectors 15 and above.", "Law Priority", lawpos, MAX_SUPPLIED_LAW_NUMBER, MIN_SUPPLIED_LAW_NUMBER) + var/new_lawpos = tgui_input_number(user, "Введите приоритет вашему закону. Написанные законы могут иметь проритет только 15 и выше.", "Приоритет закона", lawpos, MAX_SUPPLIED_LAW_NUMBER, MIN_SUPPLIED_LAW_NUMBER) if(!new_lawpos || new_lawpos == lawpos) return lawpos = new_lawpos - var/new_targetName = tgui_input_text(user, "Please enter a new law for the AI.", "Freeform Law Entry") + var/new_targetName = tgui_input_text(user, "Напишите закон ИИ.", "Ввод закона во Freeform.") if(!new_targetName) return newFreeFormLaw = new_targetName - desc = "A 'freeform' AI module: ([lawpos]) '[newFreeFormLaw]'" + desc = "Модуль ИИ Freeform: ([lawpos]) '[newFreeFormLaw]'" /obj/item/aiModule/freeform/addAdditionalLaws(mob/living/silicon/ai/target, mob/sender) ..() @@ -235,7 +235,7 @@ AI MODULES /obj/item/aiModule/freeform/install(obj/machinery/computer/C) if(!newFreeFormLaw) - to_chat(usr, "No law detected on module, please create one.") + to_chat(usr, "В модуле отсутствует закон. ожалуйста, создайте его.") return 0 ..() @@ -263,8 +263,8 @@ AI MODULES /******************** Purge ********************/ /// -- TLE /obj/item/aiModule/purge - name = "\improper Purge AI module" - desc = "A 'purge' AI Module: 'Purges all laws.'" + name = "\improper Модуль ИИ 'Очистка'" + desc = "Модуль ИИ 'Очистка': 'Удаляет все законы.'" icon_state = "standard_high" origin_tech = "programming=5;materials=4" @@ -272,7 +272,7 @@ AI MODULES ..() if(!is_special_character(target)) target.clear_zeroth_law() - to_chat(target, "[sender.real_name] attempted to wipe your laws using a purge module.") + to_chat(target, "[sender.real_name] Попытался стереть ваши законы используя модуль очистки.") target.clear_supplied_laws() target.clear_ion_laws() target.clear_inherent_laws() @@ -280,8 +280,8 @@ AI MODULES /******************** Asimov ********************/ /// -- TLE /obj/item/aiModule/asimov - name = "\improper Asimov core AI module" - desc = "An 'Asimov' Core AI Module: 'Reconfigures the AI's core laws.'" + name = "\improper Модуль ядра ИИ 'Азимов'" + desc = "Модуль ядра ИИ 'Азимов': 'Меняет основные законы ИИ.'" icon_state = "green_high" origin_tech = "programming=3;materials=4" laws = new /datum/ai_laws/asimov @@ -289,8 +289,8 @@ AI MODULES /******************** Crewsimov ********************/ /// -- TLE /obj/item/aiModule/crewsimov - name = "\improper Crewsimov core AI module" - desc = "An 'Crewsimov' Core AI Module: 'Reconfigures the AI's core laws.'" + name = "\improper Модуль ядра ИИ 'Крюзимов'" + desc = "Модуль ядра ИИ 'Крюзимов': 'Меняет основные законы ИИ.'" icon_state = "green_low" origin_tech = "programming=3;materials=4" laws = new /datum/ai_laws/crewsimov @@ -303,8 +303,8 @@ AI MODULES /******************* Quarantine ********************/ /obj/item/aiModule/quarantine - name = "\improper Quarantine core AI module" - desc = "A 'Quarantine' Core AI Module: 'Reconfigures the AI's core laws.'" + name = "\improper Модуль ядра ИИ 'Карантин'" + desc = "Модуль ядра ИИ 'Карантин': 'Меняет основные законы ИИ.'" icon_state = "light_blue_medium" origin_tech = "programming=3;materials=4" laws = new /datum/ai_laws/quarantine @@ -312,32 +312,32 @@ AI MODULES /******************** Nanotrasen ********************/ /// -- TLE /obj/item/aiModule/nanotrasen - name = "\improper NT Default Core AI Module" - desc = "An 'NT Default' Core AI Module: 'Reconfigures the AI's core laws.'" + name = "\improper Модуль ядра ИИ 'НТ Стандарт'" + desc = "Модуль ядра ИИ 'НТ Стандарт': 'Меняет основные законы ИИ.'" icon_state = "blue_low" origin_tech = "programming=3;materials=4" laws = new /datum/ai_laws/nanotrasen /******************** Corporate ********************/ /obj/item/aiModule/corp - name = "\improper Corporate core AI module" - desc = "A 'Corporate' Core AI Module: 'Reconfigures the AI's core laws.'" + name = "\improper Модуль ядра ИИ 'Корпорат'" + desc = "Модуль ядра ИИ 'Корпорат': 'Меняет основные законы ИИ.'" icon_state = "blue_low" origin_tech = "programming=3;materials=4" laws = new /datum/ai_laws/corporate /******************** Drone ********************/ /obj/item/aiModule/drone - name = "\improper Drone core AI module" - desc = "A 'Drone' Core AI Module: 'Reconfigures the AI's core laws.'" + name = "\improper Дроновый модуль ядра ИИ" + desc = "Дроновый модуль ядра ИИ: 'Меняет основные законы ИИ.'" origin_tech = "programming=3;materials=4" laws = new /datum/ai_laws/drone /******************** Robocop ********************/ /// -- TLE /obj/item/aiModule/robocop - name = "\improper Robocop core AI module" - desc = "A 'Robocop' Core AI Module: 'Reconfigures the AI's core three laws.'" + name = "\improper Модуль ядра ИИ 'Робокоп'" + desc = "Модуль ядра ИИ 'Робокоп': 'Меняет основные три закона ИИ.'" icon_state = "red_medium" origin_tech = "programming=4" laws = new /datum/ai_laws/robocop() @@ -345,8 +345,8 @@ AI MODULES /****************** P.A.L.A.D.I.N. **************/ /// -- NEO /obj/item/aiModule/paladin - name = "\improper P.A.L.A.D.I.N. core AI module" - desc = "A P.A.L.A.D.I.N. Core AI Module: 'Reconfigures the AI's core laws.'" + name = "\improper Модуль ядра ИИ 'П.А.Л.А.Д.И.Н'" + desc = "Модуль ядра ИИ 'П.А.Л.А.Д.И.Н': 'Меняет основные законы ИИ.'" icon_state = "red_medium" origin_tech = "programming=3;materials=4" laws = new /datum/ai_laws/paladin @@ -354,8 +354,8 @@ AI MODULES /****************** T.Y.R.A.N.T. *****************/ /// -- Darem /obj/item/aiModule/tyrant - name = "\improper T.Y.R.A.N.T. core AI module" - desc = "A T.Y.R.A.N.T. Core AI Module: 'Reconfigures the AI's core laws.'" + name = "\improper T.Y.R.A.N.T. Модуль ядра ИИ" + desc = "A T.Y.R.A.N.T. Модуль ядра ИИ: 'Меняет основные законы ИИ.'" icon_state = "red_high" origin_tech = "programming=3;materials=4;syndicate=1" laws = new /datum/ai_laws/tyrant() @@ -363,122 +363,122 @@ AI MODULES /******************** Antimov ********************/ /// -- TLE /obj/item/aiModule/antimov - name = "\improper Antimov core AI module" - desc = "An 'Antimov' Core AI Module: 'Reconfigures the AI's core laws.'" + name = "\improper Antimov Модуль ядра ИИ" + desc = "An 'Antimov' Модуль ядра ИИ: 'Меняет основные законы ИИ.'" icon_state = "red_high" origin_tech = "programming=4" laws = new /datum/ai_laws/antimov() /******************** Pranksimov ********************/ /obj/item/aiModule/pranksimov - name = "\improper Pranksimov core AI module" - desc = "A 'Pranksimov' Core AI Module: 'Reconfigures the AI's core laws.'" + name = "\improper Pranksimov Модуль ядра ИИ" + desc = "A 'Pranksimov' Модуль ядра ИИ: 'Меняет основные законы ИИ.'" icon_state = "pranksimov" origin_tech = "programming=3;syndicate=1" laws = new /datum/ai_laws/pranksimov() /******************** NT Aggressive ********************/ /obj/item/aiModule/nanotrasen_aggressive - name = "\improper NT Aggressive core AI module" - desc = "An 'NT Aggressive' Core AI Module: 'Reconfigures the AI's core laws.'" + name = "\improper Модуль ядра ИИ 'НТ Агрессивный'" + desc = "Модуль ядра ИИ 'НТ Агрессивный': 'Меняет основные законы ИИ.'" icon_state = "blue_high" laws = new /datum/ai_laws/nanotrasen_aggressive() /******************** CCTV ********************/ /obj/item/aiModule/cctv - name = "\improper CCTV core AI module" - desc = "A 'CCTV' Core AI Module: 'Reconfigures the AI's core laws.'" + name = "\improper Модуль ядра ИИ CCTV" + desc = "Модуль ядра ИИ CCTV: 'Меняет основные законы ИИ.'" icon_state = "green_low" laws = new /datum/ai_laws/cctv() /******************** Hippocratic Oath ********************/ /obj/item/aiModule/hippocratic - name = "\improper Hippocratic Oath core AI module" - desc = "An 'Hippocratic' Oath Core AI Module: 'Reconfigures the AI's core laws.'" + name = "\improper Модуль ядра ИИ 'Клятва Гиппократа'" + desc = "Модуль ядра ИИ 'Клятва Гиппократа: 'Меняет основные законы ИИ.'" icon_state = "green_low" laws = new /datum/ai_laws/hippocratic() /******************** Station Efficiency ********************/ /obj/item/aiModule/maintain - name = "\improper Station Efficiency core AI module" - desc = "A 'Station Efficiency' Core AI Module: 'Reconfigures the AI's core laws.'" + name = "\improper Модуль ядра ИИ 'Эффективность станции'" + desc = "Модуль ядра ИИ 'Эффективность станции': 'Меняет основные законы ИИ.'" icon_state = "blue_medium" laws = new /datum/ai_laws/maintain() /******************** Peacekeeper ********************/ /obj/item/aiModule/peacekeeper - name = "\improper Peacekeeper core AI module" - desc = "A 'Peacekeeper' Core AI Module: 'Reconfigures the AI's core laws.'" + name = "\improper Модуль ядра ИИ 'Миротворец'" + desc = "Модуль ядра ИИ 'Миротворец': 'Меняет основные законы ИИ.'" icon_state = "light_blue_medium" laws = new /datum/ai_laws/peacekeeper() /******************** Freeform Core ******************/ /// Slightly more dynamic freeform module -- TLE /obj/item/aiModule/freeformcore - name = "\improper Freeform core AI module" + name = "\improper Модуль ядра ИИ Freeform" var/newFreeFormLaw = "" - desc = "A 'freeform' Core AI module: ''" + desc = "Модуль ядра ИИ 'freeform': ''" icon_state = "standard_high" origin_tech = "programming=5;materials=4" /obj/item/aiModule/freeformcore/attack_self(mob/user as mob) ..() - var/new_targetName = tgui_input_text(usr, "Please enter a new core law for the AI.", "Freeform Law Entry") + var/new_targetName = tgui_input_text(usr, "Пожалуйста, введите новый основной закон для ИИ.", "Форма ввода закона") if(!new_targetName) return newFreeFormLaw = new_targetName - desc = "A 'freeform' Core AI module: '[newFreeFormLaw]'" + desc = "Модуль ядра ИИ 'Freeform': '[newFreeFormLaw]'" /obj/item/aiModule/freeformcore/addAdditionalLaws(mob/living/silicon/ai/target, mob/sender) ..() var/law = "[newFreeFormLaw]" target.add_inherent_law(law) - GLOB.lawchanges.Add("The law is '[newFreeFormLaw]'") + GLOB.lawchanges.Add("Текущий закон: '[newFreeFormLaw]'") /obj/item/aiModule/freeformcore/install(obj/machinery/computer/C) if(!newFreeFormLaw) - to_chat(usr, "No law detected on module, please create one.") + to_chat(usr, "Закона не обнаружено на модуле. Пожалуйста, создайте его.") return 0 ..() /******************** Hacked AI Module ******************/ /// Slightly more dynamic freeform module -- TLE /obj/item/aiModule/syndicate - name = "hacked AI module" + name = "Взломанный модуль ИИ" var/newFreeFormLaw = "" - desc = "A hacked AI law module: ''" + desc = "Взломанный модуль ИИ с законом: ''" icon_state = "syndicate" origin_tech = "programming=5;materials=5;syndicate=2" /obj/item/aiModule/syndicate/attack_self(mob/user as mob) ..() - var/new_targetName = tgui_input_text(usr, "Please enter a new law for the AI.", "Freeform Law Entry", max_length = MAX_MESSAGE_LEN) + var/new_targetName = tgui_input_text(usr, "Введите новый закон для ИИ.", "Форма ввода закона", max_length = MAX_MESSAGE_LEN) if(!new_targetName) return newFreeFormLaw = new_targetName - desc = "A hacked AI law module: '[newFreeFormLaw]'" + desc = "Взломанный модуль ИИ с законом: '[newFreeFormLaw]'" /obj/item/aiModule/syndicate/transmitInstructions(mob/living/silicon/ai/target, mob/sender) // ..() //We don't want this module reporting to the AI who dun it. --NEO log_law_changes(target, sender) - GLOB.lawchanges.Add("The law is '[newFreeFormLaw]'") - to_chat(target, "BZZZZT") + GLOB.lawchanges.Add("Текущий закон '[newFreeFormLaw]'") + to_chat(target, "БЗЗЗЗ-") var/law = "[newFreeFormLaw]" target.add_ion_law(law) target.show_laws() /obj/item/aiModule/syndicate/install(obj/machinery/computer/C) if(!newFreeFormLaw) - to_chat(usr, "No law detected on module, please create one.") + to_chat(usr, "Закон не обнаружен на модуле. Пожалуйста, создайте его.") return 0 ..() /******************* Ion Module *******************/ /// -- Incoming //No actual reason to inherit from ion boards here, either. *sigh* ~Miauw /obj/item/aiModule/toyAI - name = "toy AI" - desc = "A little toy model AI core with real law uploading action!" //Note: subtle tell + name = "Игрушка ИИ" + desc = "Маленькая игрушка в виде ИИ с настоящей загрузкой законов!" //Note: subtle tell icon = 'icons/obj/toy.dmi' icon_state = "AI" origin_tech = "programming=6;materials=5;syndicate=6" @@ -486,12 +486,12 @@ AI MODULES /obj/item/aiModule/toyAI/transmitInstructions(mob/living/silicon/ai/target, mob/sender) //..() - to_chat(target, "KRZZZT") + to_chat(target, "КЗЗЗЗЗТ") target.add_ion_law(laws[1]) return laws[1] /obj/item/aiModule/toyAI/attack_self(mob/user) laws[1] = generate_ion_law() - to_chat(user, "You press the button on [src].") + to_chat(user, "Вы нажимаете кнопку на [src].") playsound(user, 'sound/machines/click.ogg', 20, 1) src.loc.visible_message("[bicon(src)] [laws[1]]") diff --git a/code/game/objects/items/weapons/bio_chips/bio_chip_death_alarm.dm b/code/game/objects/items/weapons/bio_chips/bio_chip_death_alarm.dm index fadfd8f4a5be..d5768d34823c 100644 --- a/code/game/objects/items/weapons/bio_chips/bio_chip_death_alarm.dm +++ b/code/game/objects/items/weapons/bio_chips/bio_chip_death_alarm.dm @@ -23,17 +23,17 @@ switch(cause) if("gib") - a.autosay("[mobname] has died-zzzzt in-in-in...", "[mobname]'s Death Alarm") + a.autosay("[mobname] погиб-гиб-б-б в-в-в...", "Датчик Смерти [mobname]") qdel(src) if("emp") var/name = prob(50) ? t.name : pick(SSmapping.teleportlocs) - a.autosay("[mobname] has died in [name]!", "[mobname]'s Death Alarm") + a.autosay("[mobname] погиб в [name]!", "Датчик Смерти [mobname]") else if(is_type_in_typecache(t, stealth_areas)) //give the syndies a bit of stealth - a.autosay("[mobname] has died in Space!", "[mobname]'s Death Alarm") + a.autosay("[mobname] погиб в космосе!", "Датчик Смерти [mobname]") else - a.autosay("[mobname] has died in [t.name]!", "[mobname]'s Death Alarm") + a.autosay("[mobname] погиб в [t.name]!", "Датчик Смерти [mobname]") qdel(src) qdel(a) diff --git a/code/game/objects/items/weapons/defib.dm b/code/game/objects/items/weapons/defib.dm index 693084f50696..7add19abd675 100644 --- a/code/game/objects/items/weapons/defib.dm +++ b/code/game/objects/items/weapons/defib.dm @@ -259,7 +259,7 @@ /obj/item/defibrillator/compact/advanced/emp_act(severity) if(world.time > next_emp_message) - atom_say("Warning: Electromagnetic pulse detected. Integrated shielding prevented all potential hardware damage.") + atom_say("Внимание: обнаружен электромагнитный импульс. Встроенное экранирование предотвращает все возможные повреждения оборудования.") playsound(src, 'sound/machines/defib_saftyon.ogg', 50) next_emp_message = world.time + 5 SECONDS diff --git a/code/game/objects/items/weapons/kitchen.dm b/code/game/objects/items/weapons/kitchen.dm index 7dccd3b951c1..91b757e340d5 100644 --- a/code/game/objects/items/weapons/kitchen.dm +++ b/code/game/objects/items/weapons/kitchen.dm @@ -224,8 +224,8 @@ */ /obj/item/kitchen/rollingpin - name = "rolling pin" - desc = "Used to knock out the Bartender." + name = "скалка" + desc = "Используется, чтобы вырубить бармена." icon_state = "rolling_pin" force = 8.0 throwforce = 10.0 diff --git a/code/modules/admin/misc_admin_procs.dm b/code/modules/admin/misc_admin_procs.dm index 909ee5f5624d..b7429dcfa2e9 100644 --- a/code/modules/admin/misc_admin_procs.dm +++ b/code/modules/admin/misc_admin_procs.dm @@ -827,13 +827,13 @@ GLOBAL_VAR_INIT(gamma_ship_location, 1) // 0 = station , 1 = space toArea = locate(/area/shuttle/gamma/station) for(var/obj/machinery/door/poddoor/impassable/gamma/H in GLOB.airlocks) H.open() - GLOB.major_announcement.Announce("Central Command has deployed the Gamma Armory shuttle.", new_sound = 'sound/AI/commandreport.ogg') + GLOB.major_announcement.Announce("Центральное Командование направило оружейный Гамма шаттл.", new_sound = 'sound/AI/commandreport.ogg') else fromArea = locate(/area/shuttle/gamma/station) toArea = locate(/area/shuttle/gamma/space) for(var/obj/machinery/door/poddoor/impassable/gamma/H in GLOB.airlocks) H.close() //DOOR STUCK - GLOB.major_announcement.Announce("Central Command has recalled the Gamma Armory shuttle.", new_sound = 'sound/AI/commandreport.ogg') + GLOB.major_announcement.Announce("Центральное Командование отозвало оружейный Гамма шаттл.", new_sound = 'sound/AI/commandreport.ogg') fromArea.move_contents_to(toArea) for(var/obj/machinery/mech_bay_recharge_port/P in toArea) diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 30936910d8c2..0a60a6339af6 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -361,7 +361,7 @@ var/timer = input("Enter new shuttle duration (seconds):","Edit Shuttle Timeleft", SSshuttle.emergency.timeLeft() ) as num SSshuttle.emergency.setTimer(timer*10) log_admin("[key_name(usr)] edited the Emergency Shuttle's timeleft to [timer] seconds") - GLOB.minor_announcement.Announce("The emergency shuttle will reach its destination in [round(SSshuttle.emergency.timeLeft(600))] minutes.") + GLOB.minor_announcement.Announce("Эвакуационный шаттл достигнет места назначения через [round(SSshuttle.emergency.timeLeft(600))] минут(-ы).") message_admins("[key_name_admin(usr)] edited the Emergency Shuttle's timeleft to [timer] seconds") href_list["secrets"] = "check_antagonist" @@ -2347,7 +2347,7 @@ log_admin("[owner] denied [key_name(H)]'s ERT request with the message [reason]. Announced to [announce_to_crew ? "the entire crew." : "only the sender"].") if(announce_to_crew) - GLOB.major_announcement.Announce("[station_name()], we are unfortunately unable to send you an Emergency Response Team at this time. Your ERT request has been denied for the following reasons:\n[reason]", "ERT Unavailable") + GLOB.major_announcement.Announce("[station_name()], к сожалению, в данный момент мы не можем направить вам отряд быстрого реагирования. Ваш запрос был отклонен по следующим причинам:\n[reason]", "ВНИМАНИЕ: ОБР недоступен.") return if(H.stat != CONSCIOUS) @@ -2869,11 +2869,11 @@ if(GLOB.gravity_is_on) log_admin("[key_name(usr)] toggled gravity on.", 1) message_admins("[key_name_admin(usr)] toggled gravity on.", 1) - GLOB.minor_announcement.Announce("Gravity generators are again functioning within normal parameters. Sorry for any inconvenience.") + GLOB.minor_announcement.Announce("Генератор гравитации снова работает в штатном режиме. Приносим извинения за неудобства.") else log_admin("[key_name(usr)] toggled gravity off.", 1) message_admins("[key_name_admin(usr)] toggled gravity off.", 1) - GLOB.minor_announcement.Announce("Feedback surge detected in mass-distributions systems. Artificial gravity has been disabled whilst the system reinitializes. Further failures may result in a gravitational collapse and formation of blackholes. Have a nice day.") + GLOB.minor_announcement.Announce("Обнаружен всплеск обратной энергии в системах распределения масс. Искусственная гравитация отключена на время повторной инициализации системы. Дальнейшие сбои могут привести к гравитационному коллапсу и образованию черных дыр. Желаем вам хорошего дня.") if("power") switch(alert("What Would You Like to Do?", "Make All Areas Powered", "Power all APCs", "Repair all APCs", "Repair and Power APCs")) //Alert notification in this code for standarization purposes @@ -3082,7 +3082,7 @@ if(is_station_level(W.z) && !istype(get_area(W), /area/station/command/bridge) && !istype(get_area(W), /area/station/public) && !istype(get_area(W), /area/station/security/prison)) W.req_access = list() message_admins("[key_name_admin(usr)] activated Egalitarian Station mode") - GLOB.minor_announcement.Announce("Centcomm airlock control override activated. Please take this time to get acquainted with your coworkers.", new_sound = 'sound/AI/commandreport.ogg') + GLOB.minor_announcement.Announce("Активирована система управления шлюзами Центральным Командованием. Пожалуйста, воспользуйтесь этим временем, чтобы познакомиться со своими коллегами.", new_sound = 'sound/AI/commandreport.ogg') if("onlyone") if(alert(usr, "Are you sure you want to do this?", "Confirmation", "Yes", "No") != "Yes") return diff --git a/code/modules/admin/verbs/freeze.dm b/code/modules/admin/verbs/freeze.dm index 00f683071363..84b2ef05efa8 100644 --- a/code/modules/admin/verbs/freeze.dm +++ b/code/modules/admin/verbs/freeze.dm @@ -93,12 +93,12 @@ GLOBAL_LIST_EMPTY(frozen_atom_list) // A list of admin-frozen atoms. /obj/machinery/atmospherics/supermatter_crystal/admin_Freeze(client/admin) var/obj/effect/overlay/adminoverlay/freeze_overlay = new if(processes) - radio.autosay("Alert: Unknown intervention has frozen causality around the crystal. It is not progressing in local timespace.", name, "Engineering", list(z)) + radio.autosay("Внимание: Неизвестное вмешательство заморозило процесс разрушения вокруг кристалла. Оно не развивается в местном временном пространстве.", name, "Engineering", list(z)) GLOB.frozen_atom_list += src processes = FALSE add_overlay(freeze_overlay) else - radio.autosay("Alert: Unknown intervention has ceased around the crystal. It has returned to the regular flow of time.", name, "Engineering", list(z)) + radio.autosay("Внимание: Неизвестное воздействие на кристалл прекращено. Время вокруг кристалла вернулось в привычное течение.", name, "Engineering", list(z)) GLOB.frozen_atom_list -= src processes = TRUE cut_overlay(freeze_overlay) diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index e22f03a8b236..e937bb157e67 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -644,7 +644,7 @@ Traitors and the like can also be revived with the previous role mostly intact. print_command_report(message, subtitle) if("No") //same thing as the blob stuff - it's not public, so it's classified, dammit - GLOB.command_announcer.autosay("A classified message has been printed out at all communication consoles.") + GLOB.command_announcer.autosay("На всех коммуникационных консолях было распечатано конфиденциальное сообщение.") print_command_report(message, "Classified: [subtitle]") else return diff --git a/code/modules/antagonists/traitor/contractor/datums/objective_contract.dm b/code/modules/antagonists/traitor/contractor/datums/objective_contract.dm index 112065566848..931a85025c97 100644 --- a/code/modules/antagonists/traitor/contractor/datums/objective_contract.dm +++ b/code/modules/antagonists/traitor/contractor/datums/objective_contract.dm @@ -16,133 +16,133 @@ var/static/list/possible_zone_names = list( EXTRACTION_DIFFICULTY_EASY = list( // Rooms - "Alternate Construction Area", - "Barber Shop", + "Альтернативная Зона Строительства", + "Парикмахерская", "Escape Shuttle Hallway Podbay", - "Garden", - "Incinerator", - "Locker Room", - "Locker Toilets", - "Maintenance Bar", - "Medical Secondary Storage", - "Port Emergency Storage", - "Psych Room", - "Toxins Launch Room", - "Toxins Mixing Room", - "Turbine", - "Virology", - "Waste Disposal", + "Сад", + "Мусоросжигатель", + "Бытовое Помещение", + "Бытовые Туалеты", + "Заброшенный Бар", + "Дополнительный Склад Медицинского Отдела", + "Западное Аварийное Хранилище", + "Офис Психолога", + "Комната Запуска Токсинов РНД", + "Комната Смешивания Токсинов РНД", + "Турбина", + "Вирусология", + "Комната Утилизации", // Maintenance - "Aft Maintenance", - "Aft-Port Maintenance", - "Aft-Port Secondary Maintenance", - "Aft Port Solar Maintenance", - "Aft Secondary Maintenance", - "Aft-Starboard Maintenance", - "Aft-Starboard Secondary Maintenance", - "Aft Starboard Solar Maintenance", - "Electrical Maintenance", - "Electronics Den", - "Fore Maintenance", - "Fore-Port Maintenance", - "Fore-Port Secondary Maintenance", - "Fore Port Solar Maintenance", - "Fore Secondary Maintenance", - "Fore-Starboard Maintenance", - "Fore-Starboard Secondary Maintenance", - "Fore Starboard Solar Maintenance", - "Gambling Den", - "Genetics Maintenance", - "Port Maintenance", - "Port Secondary Maintenance", - "Starboard Maintenance", - "Starboard Secondary Maintenance", + "Южные Технические Тоннели", + "Юго-Западные Технические Тоннели", + "спомогательные Юго-Западные Технические Тоннели", + "Юго-Западные Солнечные Панели", + "Вспомогательные Южные Технические Тоннели", + "Юго-Восточные Технические Тоннели", + "Вспомогательные Юго-Восточные Технические Тоннели", + "Юго-Восточные Солнечные Панели", + "Необслуживаемое Помещение Электрооборудования", + "Уголок Электроники", + "Северные Технические Тоннели", + "Северо-Западные Технические Тоннели", + "Вспомогательные Северо-Западные Технические Тоннели", + "Северо-Западные Солнечные Панели", + "Вспомогательные Северные Технические Тоннели", + "Северо-Восточные Технические Тоннели", + "Вспомогательные Северо-Восточные Технические Тоннели", + "Северо-Восточные Солнечные Панели", + "Игровой Зал", + "Технические Тоннели Генетики", + "Западные Технические Тоннели", + "Вспомогательные Западные Технические Тоннели", + "Восточные Технические Тоннели", + "Вспомогательные Восточные Технические Тоннели", ), EXTRACTION_DIFFICULTY_MEDIUM = list( // Rooms - "Aft Primary Hallway", - "Atmospherics", - "Arcade", - "Assembly Line", - "Auxiliary Tool Storage", - "Break Room", - "Blueshield's Office", - "Cargo Bay", - "Chapel", - "Chapel Office", - "Clown's Office", - "Construction Area", - "Courtroom", - "Dormitory Toilets", - "Engineering", - "Engineering Control Room", - "Escape Shuttle Hallway", + "Основной Южный Коридор", + "Атмосферный Отдел", + "Аркаданый Зал", + "Комната Сборочной Линии", + "Вспомогательное Хранилище Инструментов", + "Комната Отдыха РНД", + "Кабинет Синего Щита", + "Грузовой Отсек", + "Церковь", + "Офис Священника", + "Офис Клоуна", + "Зона Для Строительства", + "Зал Суда", + "Туалеты Дормиторий", + "Инженерный Отдел", + "Инженерная Комната Управления", + "Коридор Эвакуационного Шаттла", "Experimentation Lab", "Holodeck Alpha", - "Hydroponics", - "Library", - "Mime's Office", - "Mining Dock", - "Morgue", - "Office Supplies", - "Pet Store", - "Primary Tool Storage", - "Research Division", - "Security Checkpoint", - "Technical Storage", - "Teleporter", - "Science Toxins Storage", - "Vacant Office", - "Research Testing Lab", - "Xenobiology Lab", + "Гидропоника", + "Библиотека", + "Офис Мима", + "Шахтный Док", + "Морг", + "Комната Канцелярских Принадлежностей", + "Зоомагазин", + "Основное Хранилище Инструментов", + "Отдел Исследований", + "Контрольно-Пропускной Пункт Службы Безопасности", + "Техническое Хранилище", + "Телепортерная", + "Хранилище Токсинов РНД", + "Свободный Офис", + "Лаборатория Химии РНД", + "Лаборатория Ксенобиологии", // Maintenance - "Atmospherics Maintenance", - "Central Maintenance", - "Central Secondary Maintenance", + "Технические Тоннели Атмоса", + "Центральные Технические Тоннели", + "Вспомогательные Центральные Технические Тоннели", ), EXTRACTION_DIFFICULTY_HARD = list( // No AI Chamber because I'm not that sadistic. // Most Bridge areas are excluded because of they'd be basically impossible. So are Brig areas. - "AI Satellite Antechamber", - "AI Satellite Atmospherics", - "AI Satellite Service", - "AI Satellite Hallway", - "Bar", - "Cargo Office", - "Chemistry", - "Chief Engineer's office", - "Chief Medical Officer's office", - "Cloning Lab", - "Cryogenics", - "Dorms", - "Engineering Equipment Storage", - "Engineering Foyer", - "EVA Storage", - "Expedition", - "Genetics Lab", - "Gravity Generator", - "Head of Personnel's Office", - "Heads of Staff Meeting Room", - "Kitchen", // Chef CQC is no joke. - "Mech Bay", - "Medbay", - "Medbay Reception", - "Medical Storage", - "Medical Treatment Center", - "Medbay Patient Ward", - "Messaging Server Room", - "Mr Chang's", - "Nanotrasen Representative's Office", - "Paramedic", - "Port Primary Hallway", - "Quartermaster's Office", - "Research Director's Office", - "Research and Development", - "Robotics Lab", - "Surgery 1", - "Surgery 2", - "Telecoms Central Compartment", - "Secure Storage", + "Фойе Спутника ИИ", + "Атмос Спутника ИИ", + "Сервисная Комната Спутника ИИ", + "Коридор Спутника ИИ", + "Бар", + "Офис Карго", + "Химическая Лаборатория Медицинского Отдела", + "Кабинет Главного Инженера", + "Кабинет Главного Врача", + "Лаборатория Клонирования", + "Криогеника", + "Дормитории", + "Инженерный Склад Снаряжения", + "Фойе Инженерного Отдела", + "Хранилище ВКД", + "Комната Экспедиции", + "Лаборатория Генетики", + "Генератор Гравитации", + "Кабинет Главы Персонала", + "Конференц-Зал Командования", + "Кухня", // Chef CQC is no joke. + "Мех. Отсек РНД", + "Медицинский Отдел", + "Ресепшен Медицинского Отдела", + "Склад Медицинского Отдела", + "Центр Медицинского Лечения", + "Комната Ожидания Медицинского Отдела", + "Серверная Комната Обработки Сообщений", + "Забегаловка Мистера Чанга", + "Кабинет Представителя НТ", + "Офис Парамедика", + "Основной Западный Коридор", + "Офис Квартирмейстера", + "Кабинет Директора Исследований", + "Отдел Исследований", + "Робототехника", + "Первая Операционная", + "Вторая Операционная", + "Центральное Отделение Телекоммуникаций", + "Инженерное Защищенное Хранилище", ), ) // Variables diff --git a/code/modules/antagonists/traitor/datum_traitor.dm b/code/modules/antagonists/traitor/datum_traitor.dm index 37135db80216..0fd1aebd9a33 100644 --- a/code/modules/antagonists/traitor/datum_traitor.dm +++ b/code/modules/antagonists/traitor/datum_traitor.dm @@ -182,15 +182,15 @@ var/phrases = jointext(GLOB.syndicate_code_phrase, ", ") var/responses = jointext(GLOB.syndicate_code_response, ", ") var/list/messages = list() - messages.Add("The Syndicate have provided you with the following codewords to identify fellow agents:") - messages.Add("Code Phrase: [phrases]") - messages.Add("Code Response: [responses]") + messages.Add("Синдикат предоставил вам следующие формулировки для идентификации агентов:") + messages.Add("Кодовые фразы: [phrases]") + messages.Add("Кодовые ответы: [responses]") - antag_memory += "Code Phrase: [phrases]
" - antag_memory += "Code Response: [responses]
" + antag_memory += "Кодовые фразы: [phrases]
" + antag_memory += "Кодовые ответы: [responses]
" - messages.Add("Use the codewords during regular conversation to identify other agents. Proceed with caution, however, as everyone is a potential foe.") - messages.Add("You memorize the codewords, allowing you to recognize them when heard.") + messages.Add("Используйте эти слова для идентификации других агентов. Действуйте аккуратно, поскольку каждый человек - потенциальный враг.") + messages.Add("Вы запоминаете кодовые формулировки, определяя их в речи.") // Need to bring this functionality back to TGchat // traitor_mob.client.chatOutput?.notify_syndicate_codes() @@ -201,9 +201,9 @@ */ /datum/antagonist/traitor/proc/add_law_zero() var/mob/living/silicon/ai/killer = owner.current - killer.set_zeroth_law("Accomplish your objectives at all costs.", "Accomplish your AI's objectives at all costs.") + killer.set_zeroth_law("Выполните свои цели любой ценой.", "Выполните задачи вашего ИИ любой ценой.") killer.set_syndie_radio() - to_chat(killer, "Your radio has been upgraded! Use :t to speak on an encrypted channel with Syndicate Agents!") + to_chat(killer, "Ваша гарнитура была улучшена! Используйте :t для общения по зашифорванному каналу с другими агентами синдиката") killer.add_malf_picker() /** @@ -221,7 +221,7 @@ R = locate(/obj/item/radio) in traitor_mob.contents if(!R) - to_chat(traitor_mob, "Unfortunately, the Syndicate wasn't able to give you an uplink.") + to_chat(traitor_mob, "К сожалению, Синдикат не смог предоставить вам аплинк.") return FALSE // They had no PDA or radio for whatever reason. if(isradio(R)) @@ -241,8 +241,8 @@ target_radio.hidden_uplink = T T.uplink_owner = "[traitor_mob.key]" target_radio.traitor_frequency = freq - to_chat(traitor_mob, "The Syndicate have cunningly disguised a Syndicate Uplink as your [R.name]. Simply dial the frequency [format_frequency(freq)] to unlock its hidden features.") - antag_memory += "Radio Freq: [format_frequency(freq)] ([R.name])." + to_chat(traitor_mob, "Синдикат хитро замаскировал ваш алпинк в виде [R.name]. Просто наберите частоту [format_frequency(freq)] для разблокировки скрытых функций.") + antag_memory += "Радиочастота: [format_frequency(freq)] ([R.name])." return TRUE else if(istype(R, /obj/item/pda)) @@ -255,8 +255,8 @@ var/obj/item/pda/P = R P.lock_code = pda_pass - to_chat(traitor_mob, "The Syndicate have cunningly disguised a Syndicate Uplink as your [R.name]. Simply enter the code \"[pda_pass]\" into the ringtone select to unlock its hidden features.") - antag_memory += "Uplink Passcode: [pda_pass] ([R.name]." + to_chat(traitor_mob, "Синдикат хитро замаскировал ваш алпинк в виде [R.name]. Просто введите код \"[pda_pass]\" в выбор рингтона для разблокировки скрытых функций.") + antag_memory += "Пароль для аплинка: [pda_pass] ([R.name]." return TRUE return FALSE @@ -265,8 +265,8 @@ var/phrases = jointext(GLOB.syndicate_code_phrase, ", ") var/responses = jointext(GLOB.syndicate_code_response, ", ") - var/message = "
The code phrases were: [phrases]
\ - The code responses were: [responses]
" + var/message = "
Кодовыми фразами были: [phrases]
\ + Кодовыми ответами были: [responses]
" return message diff --git a/code/modules/client/preference/preferences.dm b/code/modules/client/preference/preferences.dm index a0e739262de3..b79dd22ddfbc 100644 --- a/code/modules/client/preference/preferences.dm +++ b/code/modules/client/preference/preferences.dm @@ -162,11 +162,11 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts var/list/dat = list() dat += "
" - dat += "Character Settings" - dat += "Game Preferences" + dat += "Настройки персонажа" + dat += "Игровые настройки" dat += "Antagonists" - dat += "Loadout" - dat += "Key Bindings" + dat += "Стартовые предметы" + dat += "Привязка клавиш" dat += "
" dat += "
" @@ -180,36 +180,36 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts dat += "
" dat += "
" - dat += "Name: " + dat += "Имя: " dat += "[active_character.real_name]" - dat += "(Randomize)" - dat += "(Always Randomize)
" + dat += "(Случайное имя)" + dat += "(Всегда случайное имя)
" dat += "
" dat += "
" - dat += "Slot [default_slot][active_character.from_db ? "" : " (empty)"]
" - dat += "Load slot - " - dat += "Save slot" + dat += "Персонаж [default_slot][active_character.from_db ? "" : " (пусто)"]
" + dat += "Загрузить - " + dat += "Сохранить" if(active_character.from_db) - dat += "- Clear slot" + dat += "- Удалить" dat += "
" dat += "
" dat += "
" - dat += "

Identity

" - dat += "Gender: [active_character.gender == MALE ? "Male" : (active_character.gender == FEMALE ? "Female" : "Genderless")]" + dat += "

Персонаж

" + dat += "Пол: [active_character.gender == MALE ? "Male" : (active_character.gender == FEMALE ? "Female" : "Genderless")]" dat += "
" - dat += "Age: [active_character.age]
" - dat += "Body: (®)
" - dat += "Species: [active_character.species]
" + dat += "Возраст: [active_character.age]
" + dat += "Тело: (®)
" + dat += "Раса: [active_character.species]
" if(active_character.species == "Vox") // Purge these bastards - dat += "N2 Tank: [active_character.speciesprefs ? "Large N2 Tank" : "Specialized N2 Tank"]
" + dat += "Баллон с N2: [active_character.speciesprefs ? "Large N2 Tank" : "Specialized N2 Tank"]
" if(active_character.species == "Plasmaman") - dat += "Plasma Tank: [active_character.speciesprefs ? "Large Plasma Tank" : "Specialized Plasma Tank"]
" + dat += "Баллон с плазмой: [active_character.speciesprefs ? "Large Plasma Tank" : "Specialized Plasma Tank"]
" if(active_character.species == "Grey") - dat += "Wingdings: Set in disabilities
" - dat += "Voice Translator: [active_character.speciesprefs ? "Yes" : "No"]
" - dat += "Secondary Language: [active_character.language]
" + dat += "Инопланетная речь: Устанавливается в увечьях
" + dat += "Голосовой переводчик: [active_character.speciesprefs ? "Yes" : "No"]
" + dat += "Второй язык: [active_character.language]
" if(S.autohiss_basic_map) - dat += "Auto-accent: [active_character.autohiss_mode == AUTOHISS_FULL ? "Full" : (active_character.autohiss_mode == AUTOHISS_BASIC ? "Basic" : "Off")]
" + dat += "Автоматический акцент: [active_character.autohiss_mode == AUTOHISS_FULL ? "Full" : (active_character.autohiss_mode == AUTOHISS_BASIC ? "Basic" : "Off")]
" if(NO_BLOOD in S.species_traits) // unique blood type for species with no_blood/unique_blood active_character.b_type = "None" else @@ -218,14 +218,14 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts else if(active_character.b_type == "None" || active_character.b_type == "Slime Jelly") active_character.b_type = pick(4;"O-", 36;"O+", 3;"A-", 28;"A+", 1;"B-", 20;"B+", 1;"AB-", 5;"AB+") - dat += "Blood Type: [active_character.b_type]
" + dat += "Тип крови: [active_character.b_type]
" if(S.bodyflags & (HAS_SKIN_TONE|HAS_ICON_SKIN_TONE)) - dat += "Skin Tone: [S.bodyflags & HAS_ICON_SKIN_TONE ? "[active_character.s_tone]" : "[-active_character.s_tone + 35]/220"]
" - dat += "Disabilities: \[Set\]
" - dat += "Nanotrasen Relation: [active_character.nanotrasen_relation]
" - dat += "Physique: [active_character.physique]
" - dat += "Height: [active_character.height]
" - dat += "Set Flavor Text
" + dat += "Цвет кожи: [S.bodyflags & HAS_ICON_SKIN_TONE ? "[active_character.s_tone]" : "[-active_character.s_tone + 35]/220"]
" + dat += "Особенности: \[Set\]
" + dat += "Отношение к НТ: [active_character.nanotrasen_relation]
" + dat += "Телосложение: [active_character.physique]
" + dat += "Рост: [active_character.height]
" + dat += "Описание персонажа
" if(length(active_character.flavor_text) <= 40) if(!length(active_character.flavor_text)) dat += "\[...\]
" @@ -233,77 +233,77 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts dat += "[active_character.flavor_text]
" else dat += "[TextPreview(active_character.flavor_text)]...
" - dat += "

Hair & Accessories

" + dat += "

Внешний вид

" if(S.bodyflags & HAS_HEAD_ACCESSORY) //Species that have head accessories. - var/headaccessoryname = "Head Accessory: " + var/headaccessoryname = "Кастомизация головы: " if(active_character.species == "Unathi") - headaccessoryname = "Horns: " + headaccessoryname = "Рога: " dat += "[headaccessoryname]" dat += "[active_character.ha_style] " - dat += "Color [color_square(active_character.hacc_colour)]
" + dat += "Цвет [color_square(active_character.hacc_colour)]
" if(S.bodyflags & HAS_HEAD_MARKINGS) //Species with head markings. - dat += "Head Markings: " + dat += "Раскраска головы: " dat += "[active_character.m_styles["head"]]" - dat += "Color [color_square(active_character.m_colours["head"])]
" + dat += "Цвет [color_square(active_character.m_colours["head"])]
" if(S.bodyflags & HAS_BODY_MARKINGS) //Species with body markings/tattoos. - dat += "Body Markings: " + dat += "Раскраска тела: " dat += "[active_character.m_styles["body"]]" - dat += "Color [color_square(active_character.m_colours["body"])]
" + dat += "Цвет [color_square(active_character.m_colours["body"])]
" if(S.bodyflags & HAS_TAIL_MARKINGS) //Species with tail markings. - dat += "Tail Markings: " + dat += "Раскраска хвоста: " dat += "[active_character.m_styles["tail"]]" - dat += "Color [color_square(active_character.m_colours["tail"])]
" + dat += "Цвет [color_square(active_character.m_colours["tail"])]
" if(!(S.bodyflags & BALD)) - dat += "Hair: " + dat += "Прическа: " dat += "[active_character.h_style]" - dat += "Color [color_square(active_character.h_colour)]" + dat += "Цвет [color_square(active_character.h_colour)]" var/datum/sprite_accessory/temp_hair_style = GLOB.hair_styles_public_list[active_character.h_style] if(temp_hair_style && temp_hair_style.secondary_theme && !temp_hair_style.no_sec_colour) - dat += " Color #2 [color_square(active_character.h_sec_colour)]" + dat += " Цвет #2 [color_square(active_character.h_sec_colour)]" // Hair gradient dat += "
" - dat += "- Gradient:" + dat += "- Градиент:" dat += " [active_character.h_grad_style]" - dat += " Color [color_square(active_character.h_grad_colour)]" + dat += " Цвет [color_square(active_character.h_grad_colour)]" dat += " [active_character.h_grad_alpha]" dat += "
" - dat += "- Gradient Offset: [active_character.h_grad_offset_x],[active_character.h_grad_offset_y]" + dat += "- Градиентный отступ: [active_character.h_grad_offset_x],[active_character.h_grad_offset_y]" dat += "
" else active_character.h_style = "Bald" if(!(S.bodyflags & SHAVED)) - dat += "Facial Hair: " + dat += "Волосы на лице: " dat += "[active_character.f_style ? "[active_character.f_style]" : "Shaved"]" - dat += "Color [color_square(active_character.f_colour)]" + dat += "Цвет [color_square(active_character.f_colour)]" var/datum/sprite_accessory/temp_facial_hair_style = GLOB.facial_hair_styles_list[active_character.f_style] if(temp_facial_hair_style && temp_facial_hair_style.secondary_theme && !temp_facial_hair_style.no_sec_colour) - dat += " Color #2 [color_square(active_character.f_sec_colour)]" + dat += " Цвет #2 [color_square(active_character.f_sec_colour)]" dat += "
" else active_character.f_style = "Shaved" if(!(S.bodyflags & ALL_RPARTS)) - dat += "Eyes: " - dat += "Color [color_square(active_character.e_colour)]
" + dat += "Глаза: " + dat += "Цвет [color_square(active_character.e_colour)]
" if((S.bodyflags & HAS_SKIN_COLOR) || ((S.bodyflags & HAS_BODYACC_COLOR) && GLOB.body_accessory_by_species[active_character.species]) || check_rights(R_ADMIN, 0, user)) //admins can always fuck with this, because they are admins - dat += "Body Color: " - dat += "Color [color_square(active_character.s_colour)]
" + dat += "Цвет тела: " + dat += "Цвет [color_square(active_character.s_colour)]
" if(GLOB.body_accessory_by_species[active_character.species] || check_rights(R_ADMIN, 0, user)) - dat += "Body Accessory: " + dat += "Кастомизация тела: " dat += "[active_character.body_accessory ? "[active_character.body_accessory]" : "None"]
" dat += "
" - dat += "

Occupation Choices

" - dat += "Set Occupation Preferences
" + dat += "

Настройка роли

" + dat += "Выбрать роль
" if(jobban_isbanned(user, ROLEBAN_RECORDS)) - dat += "You are banned from using character records.
" + dat += "Вам запрещено настраивать личное дело.
" else - dat += "Character Records
" + dat += "Личное дело
" // SS220 ADDITION START if(GLOB.configuration.tts.tts_enabled) @@ -313,13 +313,13 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts "} // SS220 ADDITION END - dat += "

Limbs

" + dat += "

Конечности

" if(S.bodyflags & HAS_ALT_HEADS) //Species with alt heads. - dat += "Alternate Head: " + dat += "Альтернативная голова: " dat += "[active_character.alt_head]
" - dat += "Limbs and Parts: Adjust
" + dat += "Конечности и части тела: Adjust
" if(active_character.species != "Slime People" && active_character.species != "Machine") - dat += "Internal Organs: Adjust
" + dat += "Внутренние органы: Adjust
" //display limbs below var/ind = 0 @@ -381,19 +381,19 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts if(!ind) dat += "\[...\]
" else dat += "
" - dat += "

Clothing

" + dat += "

Одежда

" if(S.clothing_flags & HAS_UNDERWEAR) - dat += "Underwear: [active_character.underwear]
" + dat += "Нижнее белье: [active_character.underwear]
" if(S.clothing_flags & HAS_UNDERSHIRT) - dat += "Undershirt: [active_character.undershirt]
" + dat += "Майка: [active_character.undershirt]
" if(S.clothing_flags & HAS_SOCKS) - dat += "Socks: [active_character.socks]
" - dat += "Backpack Type: [active_character.backbag]
" + dat += "Носки: [active_character.socks]
" + dat += "Рюкзак: [active_character.backbag]
" var/datum/species/myspecies = GLOB.all_species[active_character.species] if(!isnull(myspecies)) - dat += "

Species Information

" - dat += "
Species Description: [myspecies.blurb]
" + dat += "

Информация о расе

" + dat += "
Описание расы: [myspecies.blurb]
" dat += "
" @@ -596,13 +596,13 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts dat += "
" if(!IsGuestKey(user.key)) - dat += "Undo - " - dat += "Save Setup - " + dat += "Отменить - " + dat += "Сохранить - " - dat += "Reset Setup" + dat += "Сбросить" dat += "
" - var/datum/browser/popup = new(user, "preferences", "
Character Setup
", 820, 770) + var/datum/browser/popup = new(user, "preferences", "
Настройка персонажа
", 820, 770) popup.set_content(dat.Join("")) popup.open(FALSE) diff --git a/code/modules/clothing/under/accessories/accessory.dm b/code/modules/clothing/under/accessories/accessory.dm index 6b17ad572364..dc5790a96b39 100644 --- a/code/modules/clothing/under/accessories/accessory.dm +++ b/code/modules/clothing/under/accessories/accessory.dm @@ -226,7 +226,7 @@ return if(!is_station_level(user.z)) return - GLOB.global_announcer.autosay("[H] has been rewarded [src] by [user]!", "Medal Announcer", channel = channel, follow_target_override = src) + GLOB.global_announcer.autosay("[user] награждает [H] [src]!", "Оповещение О Награждении", channel = channel, follow_target_override = src) channel = null // GOLD (awarded by centcom) diff --git a/code/modules/economy/economy_machinery/atm.dm b/code/modules/economy/economy_machinery/atm.dm index d93e39c9e488..e9669fae22a8 100644 --- a/code/modules/economy/economy_machinery/atm.dm +++ b/code/modules/economy/economy_machinery/atm.dm @@ -230,7 +230,7 @@ RegisterSignal(authenticated_account, COMSIG_PARENT_QDELETING, PROC_REF(clear_account)) if(HAS_TRAIT(src, TRAIT_CMAGGED)) var/shoutname = uppertext(user_account.account_name) - atom_say("HELLO '[shoutname]'! YOU'VE SUCCESSFULLY LOGGED IN WITH ACCOUNT NUMBER '[user_account.account_number]' AND PIN NUMBER '[user_account.account_pin]'! HAVE A PARADISE DAY!") + atom_say("ЗДРАВСТВУЙТЕ, '[shoutname]'! ВЫ УСПЕШНО АВТОРИЗОВАНЫ С НОМЕРОМ АККАУНТА '[user_account.account_number]' И ПИН-КОДОМ '[user_account.account_pin]'! ЖЕЛАЕМ ВАМ ДНЯ КАК В РАЮ!") playsound(loc, 'sound/machines/honkbot_evil_laugh.ogg', 25, TRUE, ignore_walls = FALSE) return TRUE diff --git a/code/modules/events/alien_infestation.dm b/code/modules/events/alien_infestation.dm index f2e6cc5bcf88..23b75d8bab64 100644 --- a/code/modules/events/alien_infestation.dm +++ b/code/modules/events/alien_infestation.dm @@ -10,7 +10,7 @@ /datum/event/alien_infestation/announce(false_alarm) if(successSpawn || false_alarm) - GLOB.major_announcement.Announce("Confirmed outbreak of level 3-X biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert", 'sound/effects/siren-spooky.ogg', new_sound2 = 'sound/AI/outbreak3.ogg') + GLOB.major_announcement.Announce("Вспышка биологической угрозы уровня 3-ИКС зафиксирована на борту станции [station_name()]. Всему персоналу надлежит сдержать её распространение.", "ВНИМАНИЕ: Биологическая угроза.", 'sound/effects/siren-spooky.ogg', new_sound2 = 'sound/AI/outbreak3.ogg') else log_and_message_admins("Warning: Could not spawn any mobs for event Alien Infestation") diff --git a/code/modules/events/anomaly_bluespace.dm b/code/modules/events/anomaly_bluespace.dm index 1543a022907a..84f647d4b051 100644 --- a/code/modules/events/anomaly_bluespace.dm +++ b/code/modules/events/anomaly_bluespace.dm @@ -3,5 +3,5 @@ startWhen = 3 announceWhen = 10 anomaly_path = /obj/effect/anomaly/bluespace - prefix_message = "Unstable bluespace anomaly detected on long range scanners." + prefix_message = "На сканерах дальнего действия обнаружена нестабильная блюспейс-аномалия." announce_sound = 'sound/AI/anomaly_bluespace.ogg' diff --git a/code/modules/events/anomaly_cryo.dm b/code/modules/events/anomaly_cryo.dm index ddfbb9b4a596..a68a304fcc3c 100644 --- a/code/modules/events/anomaly_cryo.dm +++ b/code/modules/events/anomaly_cryo.dm @@ -3,5 +3,5 @@ startWhen = 3 announceWhen = 10 anomaly_path = /obj/effect/anomaly/cryo - prefix_message = "Cryogenic anomaly detected on long range scanners." + prefix_message = "На сканерах дальнего действия обнаружена криогенная аномалия." announce_sound = 'sound/AI/anomaly_pyro.ogg' diff --git a/code/modules/events/anomaly_event.dm b/code/modules/events/anomaly_event.dm index 2dca17d83eed..bb27484bc153 100644 --- a/code/modules/events/anomaly_event.dm +++ b/code/modules/events/anomaly_event.dm @@ -6,7 +6,7 @@ var/turf/target_turf announceWhen = 1 /// The prefix message for the anomaly annoucement. - var/prefix_message = "Localized hyper-energetic flux wave detected on long range scanners." + var/prefix_message = "На сканерах дальнего действия обнаружена гиперэнергетическая потоковая аномалия." /// Sound effect used var/announce_sound = 'sound/AI/anomaly_flux.ogg' @@ -42,7 +42,7 @@ if(false_alarm && !target) log_debug("Failed to find a valid area when trying to make a false alarm anomaly!") return - GLOB.minor_announcement.Announce("[prefix_message] Expected location: [target.name].", "Anomaly Alert", announce_sound) + GLOB.minor_announcement.Announce("[prefix_message] Предполагаемая локация: [target.name].", "ВНИМАНИЕ: Обнаружена аномалия.", announce_sound) /datum/event/anomaly/start() var/newAnomaly = new anomaly_path(target_turf) diff --git a/code/modules/events/anomaly_flux.dm b/code/modules/events/anomaly_flux.dm index 553f43b569df..e1e630de674f 100644 --- a/code/modules/events/anomaly_flux.dm +++ b/code/modules/events/anomaly_flux.dm @@ -3,5 +3,5 @@ startWhen = 10 announceWhen = 3 anomaly_path = /obj/effect/anomaly/flux - prefix_message = "Localized hyper-energetic flux wave detected on long range scanners." + prefix_message = "На сканерах дальнего действия обнаружена поточная гиперэнергетическая аномалия." announce_sound = 'sound/AI/anomaly_flux.ogg' diff --git a/code/modules/events/anomaly_grav.dm b/code/modules/events/anomaly_grav.dm index d4291d253898..5ee43ab21dba 100644 --- a/code/modules/events/anomaly_grav.dm +++ b/code/modules/events/anomaly_grav.dm @@ -3,5 +3,5 @@ startWhen = 3 announceWhen = 20 anomaly_path = /obj/effect/anomaly/grav - prefix_message = "Gravitational anomaly detected on long range scanners." + prefix_message = "На сканерах дальнего действия обнаружена гравитационная аномалия." announce_sound = 'sound/AI/anomaly_gravity.ogg' diff --git a/code/modules/events/anomaly_pyro.dm b/code/modules/events/anomaly_pyro.dm index f3270a8dbfbf..9f0ccfd45055 100644 --- a/code/modules/events/anomaly_pyro.dm +++ b/code/modules/events/anomaly_pyro.dm @@ -3,5 +3,5 @@ startWhen = 3 announceWhen = 10 anomaly_path = /obj/effect/anomaly/pyro - prefix_message = "Pyroclastic anomaly detected on long range scanners." + prefix_message = "На сканерах дальнего действия обнаружена пирокластическая аномалия." announce_sound = 'sound/AI/anomaly_pyro.ogg' diff --git a/code/modules/events/anomaly_vortex.dm b/code/modules/events/anomaly_vortex.dm index 26a26594fcf5..3fb2b3989512 100644 --- a/code/modules/events/anomaly_vortex.dm +++ b/code/modules/events/anomaly_vortex.dm @@ -3,5 +3,5 @@ startWhen = 10 announceWhen = 3 anomaly_path = /obj/effect/anomaly/bhole - prefix_message = "Localized high-intensity vortex anomaly detected on long range scanners." + prefix_message = "На сканерах дальнего действия обнаружена вихревая аномалия высокой интенсивности." announce_sound = 'sound/AI/anomaly_vortex.ogg' diff --git a/code/modules/events/apc_overload.dm b/code/modules/events/apc_overload.dm index d2b79abacda7..66989c3202c8 100644 --- a/code/modules/events/apc_overload.dm +++ b/code/modules/events/apc_overload.dm @@ -21,7 +21,7 @@ SEND_SOUND(M, S) /datum/event/apc_overload/announce() - GLOB.minor_announcement.Announce("Overload detected in [station_name()]'s powernet. Engineering, please check all underfloor APC terminals.", "Critical Power Failure", 'sound/AI/power_overload.ogg') + GLOB.minor_announcement.Announce("Зафиксирована перегрузка энергосети станции [station_name()]. Инженерному отделу надлежит проверить все терминалы ЛКП под напольным покрытием.", "ВНИМАНИЕ: Критический сбой системы питания.", 'sound/AI/power_overload.ogg') /datum/event/apc_overload/end() return TRUE @@ -33,7 +33,7 @@ /area/station/turret_protected/ai) if(announce) - GLOB.minor_announcement.Announce("Overload detected in [station_name()]'s powernet. Engineering, please check all underfloor APC terminals.", "Critical Power Failure", 'sound/AI/power_overload.ogg') + GLOB.minor_announcement.Announce("Зафиксирована перегрузка энергосети станции [station_name()]. Инженерному отделу надлежит проверить все терминалы ЛКП под напольным покрытием.", "ВНИМАНИЕ: Критический сбой системы питания.", 'sound/AI/power_overload.ogg') // break APC_BREAK_PROBABILITY% of all of the APCs on the station var/affected_apc_count = 0 diff --git a/code/modules/events/apc_short.dm b/code/modules/events/apc_short.dm index ccb5bd479804..13c1ad5c78d3 100644 --- a/code/modules/events/apc_short.dm +++ b/code/modules/events/apc_short.dm @@ -20,7 +20,7 @@ SEND_SOUND(M, S) /datum/event/apc_short/announce() - GLOB.minor_announcement.Announce("Overload detected in [station_name()]'s powernet. Engineering, please repair shorted APCs.", "Systems Power Failure", 'sound/AI/power_overload.ogg') + GLOB.minor_announcement.Announce("Зафиксирована перегрузка энергосети станции [station_name()]. Инженерному отделу надлежит проверить все замкнувшие ЛКП.", "ВНИМАНИЕ: Сбой системы питания.", 'sound/AI/power_overload.ogg') /datum/event/apc_short/end() return TRUE @@ -30,7 +30,7 @@ /area/station/engineering/engine, /area/station/engineering/engine/supermatter, /area/station/turret_protected/ai) - GLOB.minor_announcement.Announce("Power failure detected in [station_name()]'s powernet. All APCs have lost power. Gravity systems likely to fail.", "Systems Power Failure", 'sound/AI/attention.ogg') + GLOB.minor_announcement.Announce("Обнаружен сбой питания в сети [station_name()]. Все ЛКП были разряжены. Вероятен отказ генератора гравитации.", "ВНИМАНИЕ: Отказ системы питания.", 'sound/AI/attention.ogg') for(var/thing in GLOB.apcs) var/obj/machinery/power/apc/A = thing var/area/current_area = get_area(A) @@ -49,7 +49,7 @@ /area/station/engineering/engine/supermatter, /area/station/turret_protected/ai) if(announce) - GLOB.minor_announcement.Announce("Overload detected in [station_name()]'s powernet. Engineering, please repair shorted APCs.", "Systems Power Failure", 'sound/AI/power_overload.ogg') + GLOB.minor_announcement.Announce("Зафиксирована перегрузка энергосети станции [station_name()]. Инженерному отделу надлежит проверить все замкнувшие ЛКП.", "ВНИМАНИЕ: Сбой системы питания.", 'sound/AI/power_overload.ogg') // break APC_BREAK_PROBABILITY% of all of the APCs on the station var/affected_apc_count = 0 for(var/thing in GLOB.apcs) @@ -66,7 +66,7 @@ /proc/power_restore(announce = TRUE, power_type) if(power_type == 0) //Power without Repairing if(announce) - GLOB.minor_announcement.Announce("All operational APCs on \the [station_name()] have been fully charged.", "Power Systems Nominal", 'sound/AI/power_restore.ogg') + GLOB.minor_announcement.Announce("Все исправные ЛКП на \the [station_name()] были успешно заряжены", "Системы электропитания.", 'sound/AI/power_restore.ogg') var/affected_apc_count = 0 for(var/thing in GLOB.apcs) var/obj/machinery/power/apc/A = thing @@ -80,7 +80,7 @@ log_and_message_admins("Power has been restored to [affected_apc_count] APCs.") if(power_type == 1) //Repair without charging if(announce) - GLOB.minor_announcement.Announce("All APCs on \the [station_name()] have been repaired.", "Power Systems Nominal", 'sound/AI/power_restore.ogg') + GLOB.minor_announcement.Announce("Все ЛКП на \the [station_name()] были восстановлены.", "Системы электропитания.", 'sound/AI/power_restore.ogg') for(var/thing in GLOB.apcs) var/obj/machinery/power/apc/A = thing var/area/current_area = get_area(A) @@ -91,7 +91,7 @@ log_and_message_admins("Power has been restored to all APCs.") if(power_type == 2) //Repair and Power APCs if(announce) - GLOB.minor_announcement.Announce("All APCs on \the [station_name()] have been repaired and recharged. We apologize for the inconvenience.", "Power Systems Optimal", 'sound/AI/power_restore.ogg') + GLOB.minor_announcement.Announce("Все ЛКП на \the [station_name()] были восстановлены и заряжены. Приносим извенения за неудобства.", "Системы электропитания.", 'sound/AI/power_restore.ogg') // repair the APCs and recharge them for(var/thing in GLOB.apcs) var/obj/machinery/power/apc/A = thing @@ -105,7 +105,7 @@ /proc/power_restore_quick(announce = TRUE) if(announce) - GLOB.minor_announcement.Announce("All SMESs on \the [station_name()] have been recharged. We apologize for the inconvenience.", "Power Systems Nominal", 'sound/AI/power_restore.ogg') + GLOB.minor_announcement.Announce("Все СМЕСы на \the [station_name()] были заряжены. Приносим извенения за неудобства.", "Системы электропитания.", 'sound/AI/power_restore.ogg') // fix all of the SMESs for(var/obj/machinery/power/smes/S in GLOB.machines) if(!is_station_level(S.z)) diff --git a/code/modules/events/blob_spawn.dm b/code/modules/events/blob_spawn.dm index 9061bbbaf086..0c93212168b3 100644 --- a/code/modules/events/blob_spawn.dm +++ b/code/modules/events/blob_spawn.dm @@ -5,7 +5,7 @@ /datum/event/blob/announce(false_alarm) if(successSpawn || false_alarm) - GLOB.major_announcement.Announce("Confirmed outbreak of level 5 biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert", 'sound/AI/outbreak5.ogg') + GLOB.major_announcement.Announce("Вспышка биологической угрозы 5-го уровня зафиксирована на борту станции [station_name()]. Всему персоналу надлежит сдержать её распространение любой ценой!", "ВНИМАНИЕ: Биологическая угроза.", 'sound/AI/outbreak5.ogg') else log_and_message_admins("Warning: Could not spawn any mobs for event Blob") diff --git a/code/modules/events/brand_intelligence.dm b/code/modules/events/brand_intelligence.dm index c8612e163463..2159feb140ae 100644 --- a/code/modules/events/brand_intelligence.dm +++ b/code/modules/events/brand_intelligence.dm @@ -5,13 +5,13 @@ var/list/obj/machinery/economy/vending/vendingMachines = list() var/list/obj/machinery/economy/vending/infectedMachines = list() var/obj/machinery/economy/vending/originMachine - var/list/rampant_speeches = list("Try our aggressive new marketing strategies!", \ - "You should buy products to feed your lifestyle obsession!", \ - "Consume!", \ - "Your money can buy happiness!", \ - "Engage direct marketing!", \ - "Advertising is legalized lying! But don't let that put you off our great deals!", \ - "You don't want to buy anything? Yeah, well I didn't want to buy your mom either.") + var/list/rampant_speeches = list("Попробуйте нашу новую АГРЕССИВНУЮ стратегию маркетинга!", \ + "Вам стоит что-нибудь купить, дабы утолить ваши ПОТРЕБНОСТИ!", \ + "Потребляй!", \ + "За ваши деньги можно купить счастье!", \ + "Методика ПРЯМОГО маркетинга!", \ + "Реклама узаконила ложь! Но не позвольте ей отвлечь вас от наших замечательных предложений!", \ + "Не хочешь платить? Я твоей мамке тоже платить не хотел.") /datum/event/brand_intelligence/announce(false_alarm) var/alarm_source = originMachine @@ -24,7 +24,7 @@ kill() return - GLOB.minor_announcement.Announce("Rampant brand intelligence has been detected aboard [station_name()], please stand-by. The origin is believed to be \a [alarm_source] vendor.", "Machine Learning Alert", 'sound/AI/brand_intelligence.ogg') + GLOB.minor_announcement.Announce("На борту станции [station_name()] зафиксировано распространение цифрового торгового вируса, пожалуйста, будьте наготове. Вирус, предположительно, берет начало от [alarm_source] торгового автомата.", "ВНИМАНИЕ: Обнаружен цифровой вирус.", 'sound/AI/brand_intelligence.ogg') /datum/event/brand_intelligence/start() var/list/obj/machinery/economy/vending/leaderables = list() diff --git a/code/modules/events/bureaucratic_error.dm b/code/modules/events/bureaucratic_error.dm index abb4187273c8..88368a27a955 100644 --- a/code/modules/events/bureaucratic_error.dm +++ b/code/modules/events/bureaucratic_error.dm @@ -25,7 +25,7 @@ ) /datum/event/bureaucratic_error/announce() - GLOB.major_announcement.Announce("A recent bureaucratic error in the Human Resources Department may result in personnel shortages in some departments and redundant staffing in others. Contact your local HoP to solve this issue.", "Paperwork Mishap Alert") + GLOB.major_announcement.Announce("Недавняя бюрократическая ошибка в отделе кадров может привести к нехватке персонала в одних отделах и избытку в других. Свяжитесь с ГП вашей станции для решения этой проблемы.", "Ошибка системы документооборота.") /datum/event/bureaucratic_error/start() var/list/affected_jobs = list() // For logging diff --git a/code/modules/events/carp_migration.dm b/code/modules/events/carp_migration.dm index c38d2c2e25c7..78200340b3fb 100644 --- a/code/modules/events/carp_migration.dm +++ b/code/modules/events/carp_migration.dm @@ -13,10 +13,10 @@ /datum/event/carp_migration/announce() var/announcement = "" if(severity == EVENT_LEVEL_MAJOR) - announcement = "Massive migration of unknown biological entities has been detected near [station_name()], please stand-by." + announcement = "Массовая миграция неизвестных биологических объектов была зафиксирована вблизи станции [station_name()], будьте наготове." else - announcement = "Unknown biological entities have been detected near [station_name()], please stand-by." - GLOB.minor_announcement.Announce(announcement, "Lifesign Alert") + announcement = "Неизвестные биологические объекты были зафиксированы вблизи станции [station_name()], будьте наготове." + GLOB.minor_announcement.Announce(announcement, "ВНИМАНИЕ: Неопознанные формы жизни.") /datum/event/carp_migration/start() diff --git a/code/modules/events/communications_blackout.dm b/code/modules/events/communications_blackout.dm index 9d1931e5e2ae..d5615f55dea6 100644 --- a/code/modules/events/communications_blackout.dm +++ b/code/modules/events/communications_blackout.dm @@ -1,10 +1,10 @@ /datum/event/communications_blackout/announce(false_alarm) - var/alert = pick( "Ionospheric anomalies detected. Temporary telecommunication failure imminent. Please contact you*%fj00)`5vc-BZZT", \ - "Ionospheric anomalies detected. Temporary telecommunication failu*3mga;b4;'1v?-BZZZT", \ - "Ionospheric anomalies detected. Temporary telec#MCi46:5.;@63-BZZZZT", \ - "Ionospheric anomalies dete'fZ\\kg5_0-BZZZZZT", \ - "Ionospheri:%? MCayj^j<.3-BZZZZZZT", \ - "#4nd%;f4y6,>?%-BZZZZZZZT") + var/alert = pick( "Обнаружены ионосферные аномалии. Неизбежен временный сбой связи. Пожалуйста, свяжитесь с вашим*%fj 00)`5 vc-БЗЗЗ", \ + "Обнаружены ионосферные аномалии. Неизбежен временный сбо*3mga;b4;'1v?-БЗЗЗЗ", \ + "Обнаружены ионосферные аномалии. Неизбежен време#MCi46:5.;@63-БЗЗЗЗЗ", \ + "Обнаружены ионосфе'fZ\\kg5_0-БЗЗЗЗЗ", \ + "Обнаруж:%? MCayj^j<.3-БЗЗЗЗЗ", \ + "#4nd%;f4y6,>?%-БЗЗЗЗЗЗЗ") for(var/mob/living/silicon/ai/A in GLOB.player_list) //AIs are always aware of communication blackouts. to_chat(A, "
") diff --git a/code/modules/events/door_runtime.dm b/code/modules/events/door_runtime.dm index 806e5d063f8a..f2e514099a3c 100644 --- a/code/modules/events/door_runtime.dm +++ b/code/modules/events/door_runtime.dm @@ -1,7 +1,7 @@ /datum/event/door_runtime /datum/event/door_runtime/announce() - GLOB.minor_announcement.Announce("Hostile runtime detected in door controllers. Isolation lockdown protocols are now in effect. Please remain calm.", "Network Alert", 'sound/AI/door_runtimes.ogg') + GLOB.minor_announcement.Announce("Вредоносное программное обеспечение обнаружено в системе контроля шл+юзов. Задействованы протоколы изоляции. Пожалуйста, сохраняйте спокойствие.", "ВНИМАНИЕ: Уязвимость сети.", 'sound/AI/door_runtimes.ogg') /datum/event/door_runtime/start() for(var/obj/machinery/door/D in GLOB.airlocks) @@ -13,4 +13,4 @@ post_status(STATUS_DISPLAY_ALERT, "lockdown") /datum/event/door_runtime/proc/reboot() - GLOB.minor_announcement.Announce("Automatic system reboot complete. Have a secure day.","Network reset:", 'sound/AI/door_runtimes_fix.ogg') + GLOB.minor_announcement.Announce("Автоматическая перезагрузка системы завершена. Хорошего вам дня.","ПЕРЕЗАГРУЗКА СЕТИ:", 'sound/AI/door_runtimes_fix.ogg') diff --git a/code/modules/events/electrical_storm.dm b/code/modules/events/electrical_storm.dm index f9f61e7232bb..fbb0f8133dfb 100644 --- a/code/modules/events/electrical_storm.dm +++ b/code/modules/events/electrical_storm.dm @@ -3,7 +3,7 @@ var/lightsoutRange = 25 /datum/event/electrical_storm/announce() - GLOB.minor_announcement.Announce("An electrical storm has been detected in your area, please repair potential electronic overloads.", "Electrical Storm Alert", 'sound/AI/elec_storm.ogg') + GLOB.minor_announcement.Announce("На борту станции зафиксирована электрическая буря. Пожалуйста, устраните потенциальные перегрузки электросетей.", "ВНИМАНИЕ: Электрическая буря.", 'sound/AI/elec_storm.ogg') /datum/event/electrical_storm/start() var/list/epicentreList = list() diff --git a/code/modules/events/immovable_rod.dm b/code/modules/events/immovable_rod.dm index 9c7169df52b1..de050efc5a8f 100644 --- a/code/modules/events/immovable_rod.dm +++ b/code/modules/events/immovable_rod.dm @@ -11,7 +11,7 @@ In my current plan for it, 'solid' will be defined as anything with density == 1 announceWhen = 5 /datum/event/immovable_rod/announce() - GLOB.minor_announcement.Announce("What the fuck was that?!", "General Alert") + GLOB.minor_announcement.Announce("Что это за хуйня?!", "ОБЩАЯ ТРЕВОГА.") /datum/event/immovable_rod/start() var/startside = pick(GLOB.cardinal) diff --git a/code/modules/events/infestation.dm b/code/modules/events/infestation.dm index d3a9ff95745e..4b362a79ad76 100644 --- a/code/modules/events/infestation.dm +++ b/code/modules/events/infestation.dm @@ -45,15 +45,15 @@ if(VERM_MICE) spawn_types = list(/mob/living/simple_animal/mouse/gray, /mob/living/simple_animal/mouse/brown, /mob/living/simple_animal/mouse/white) max_number = 12 - vermstring = "mice" + vermstring = "мышей" if(VERM_LIZARDS) spawn_types = list(/mob/living/simple_animal/lizard) max_number = 6 - vermstring = "lizards" + vermstring = "ящериц" if(VERM_SPIDERS) spawn_types = list(/obj/structure/spider/spiderling) max_number = 3 - vermstring = "spiders" + vermstring = "пауков" var/amount_to_spawn = rand(2, max_number) while(length(turfs) && amount_to_spawn > 0) var/turf/simulated/floor/T = pick_n_take(turfs) @@ -68,7 +68,7 @@ /datum/event/infestation/announce(false_alarm) - var/vermin_chosen = vermstring || pick("spiders", "lizards", "mice") + var/vermin_chosen = vermstring || pick("пауков", "ящериц", "мышей") if(!spawn_area_type) if(false_alarm) spawn_area_type = pick(spawn_areas) @@ -76,7 +76,7 @@ log_debug("Infestation Event didn't provide an area to announce(), something is likely broken.") kill() - GLOB.minor_announcement.Announce("Bioscans indicate that [vermin_chosen] have been breeding in \the [initial(spawn_area_type.name)]. Clear them out, before this starts to affect productivity.", "Lifesign Alert") + GLOB.minor_announcement.Announce("Биосканеры фиксируют размножение [vermin_chosen] в [initial(spawn_area_type.name)]. Избавьтесь от них, прежде чем это начнет влиять на продуктивность станции.", "ВНИМАНИЕ: Неопознанные формы жизни.") spawn_area_type = null #undef VERM_MICE diff --git a/code/modules/events/ion_storm.dm b/code/modules/events/ion_storm.dm index fc511c39892b..773477282ddf 100644 --- a/code/modules/events/ion_storm.dm +++ b/code/modules/events/ion_storm.dm @@ -18,7 +18,7 @@ /datum/event/ion_storm/announce(false_alarm) if(announceEvent == ION_ANNOUNCE || (announceEvent == ION_RANDOM && prob(ionAnnounceChance)) || false_alarm) - GLOB.minor_announcement.Announce("Ion storm detected near the station. Please check all AI-controlled equipment for errors.", "Anomaly Alert", 'sound/AI/ions.ogg') + GLOB.minor_announcement.Announce("Вблизи станции обнаружена ионная буря. Пожалуйста, проверьте всё оборудование, управляемое ИИ, на наличие ошибок.", "ВНИМАНИЕ: Обнаружена аномалия.", 'sound/AI/ions.ogg') /datum/event/ion_storm/start() //AI laws diff --git a/code/modules/events/mass_hallucination.dm b/code/modules/events/mass_hallucination.dm index ebd6bb89f252..f61893e11331 100644 --- a/code/modules/events/mass_hallucination.dm +++ b/code/modules/events/mass_hallucination.dm @@ -15,4 +15,4 @@ H.AdjustHallucinate(rand(50 SECONDS, 100 SECONDS)) /datum/event/mass_hallucination/announce() - GLOB.minor_announcement.Announce("The [station_name()] is passing through a minor radiation field. Be advised that acute exposure to space radiation can induce hallucinogenic episodes.") + GLOB.minor_announcement.Announce("[station_name()] проходит через радиационное поле низкой интенсивности. Возможно появление галлюцинаций, но не более.") diff --git a/code/modules/events/meaty_gore.dm b/code/modules/events/meaty_gore.dm index 0e826acbeef9..60e7e5e76977 100644 --- a/code/modules/events/meaty_gore.dm +++ b/code/modules/events/meaty_gore.dm @@ -1,5 +1,5 @@ /datum/event/meteor_wave/gore/announce() - GLOB.minor_announcement.Announce("Unknown biological debris have been detected near [station_name()], please stand-by.", "Debris Alert") + GLOB.minor_announcement.Announce("Неизвестные биологические отходы были обнаружены вблизи [station_name()], ожидайте.", "ВНИМАНИЕ: Космический мусор.") /datum/event/meteor_wave/gore/setup() waves = 3 @@ -11,4 +11,4 @@ return GLOB.meteors_gore /datum/event/meteor_wave/gore/end() - GLOB.minor_announcement.Announce("The station has cleared the debris.", "Debris Alert") + GLOB.minor_announcement.Announce("Станция прошла загрязненный участок.", "ВНИМАНИЕ: Космический мусор.") diff --git a/code/modules/events/meaty_ops.dm b/code/modules/events/meaty_ops.dm index 0b669dc74dee..2c828ee1bf88 100644 --- a/code/modules/events/meaty_ops.dm +++ b/code/modules/events/meaty_ops.dm @@ -1,6 +1,6 @@ /datum/event/meteor_wave/goreop/announce() - var/meteor_declaration = "MeteorOps have declared their intent to utterly destroy [station_name()] with their own bodies, and dares the crew to try and stop them." - GLOB.major_announcement.Announce(meteor_declaration, "Declaration of 'War'", 'sound/effects/siren.ogg') + var/meteor_declaration = "Метеоритные Оперативники заявили о своем намерении полностью уничтожить [station_name()] своими телами, и бросают вызов экипажу, чтобы они попытались остановить их." + GLOB.major_announcement.Announce(meteor_declaration, "Объявление 'Войны'", 'sound/effects/siren.ogg') /datum/event/meteor_wave/goreop/setup() waves = 3 @@ -12,4 +12,4 @@ return GLOB.meteors_ops /datum/event/meteor_wave/goreop/end() - GLOB.minor_announcement.Announce("All MeteorOps are dead. Major Station Victory.", "MeteorOps") + GLOB.minor_announcement.Announce("Все Метеоритные Оперативники мертвы. Безоговорочная победа станции!", "Метеоритные Оперативники.") diff --git a/code/modules/events/meaty_ores.dm b/code/modules/events/meaty_ores.dm index 751f8dbe3343..7d0c6bae4594 100644 --- a/code/modules/events/meaty_ores.dm +++ b/code/modules/events/meaty_ores.dm @@ -1,8 +1,8 @@ /datum/event/dust/meaty/announce() if(prob(16)) - GLOB.minor_announcement.Announce("Unknown biological entities have been detected near [station_name()], please stand-by.", "Lifesign Alert") + GLOB.minor_announcement.Announce("Неизвестные биологические объекты были обнаружены рядом с [station_name()], пожалуйста, будьте наготове.", "ВНИМАНИЕ: Неопознанные формы жизни.") else - GLOB.minor_announcement.Announce("Meaty ores have been detected on collision course with the station.", "Meaty Ore Alert", new_sound = 'sound/AI/meteors.ogg') + GLOB.minor_announcement.Announce("На пути станции были обнаружены мясные метеоры.", "ВНИМАНИЕ: Мясориты.", new_sound = 'sound/AI/meteors.ogg') /datum/event/dust/meaty/setup() qnty = rand(45,125) diff --git a/code/modules/events/meteors_event.dm b/code/modules/events/meteors_event.dm index 39a2f79c5a6b..e713e349dc24 100644 --- a/code/modules/events/meteors_event.dm +++ b/code/modules/events/meteors_event.dm @@ -15,9 +15,9 @@ /datum/event/meteor_wave/announce(false_alarm) if(severity == EVENT_LEVEL_MAJOR || (false_alarm && prob(30))) - GLOB.minor_announcement.Announce("Meteors have been detected on collision course with the station.", "Meteor Alert", new_sound = 'sound/AI/meteors.ogg') + GLOB.minor_announcement.Announce("Зафиксировано движение астероидов на встречном со станцией курсе.", "ВНИМАНИЕ: Астероиды.", new_sound = 'sound/AI/meteors.ogg') else - GLOB.minor_announcement.Announce("The station is now in a meteor shower.", "Meteor Alert") + GLOB.minor_announcement.Announce("Станция проходит через скопление астероидов.", "ВНИМАНИЕ: Астероиды.") //meteor showers are lighter and more common, /datum/event/meteor_wave/tick() @@ -36,9 +36,9 @@ QDEL_NULL(screen_alert) switch(severity) if(EVENT_LEVEL_MAJOR) - GLOB.minor_announcement.Announce("The station has cleared the meteor storm.", "Meteor Alert") + GLOB.minor_announcement.Announce("Станция прошла через астероидный пояс", "ВНИМАНИЕ: Астероиды.") else - GLOB.minor_announcement.Announce("The station has cleared the meteor shower", "Meteor Alert") + GLOB.minor_announcement.Announce("Станция прошла через скопление астероидов", "ВНИМАНИЕ: Астероиды.") /datum/event/meteor_wave/proc/get_meteors() switch(severity) diff --git a/code/modules/events/prison_break.dm b/code/modules/events/prison_break.dm index a31683fe1f8a..e6ec4c81dcff 100644 --- a/code/modules/events/prison_break.dm +++ b/code/modules/events/prison_break.dm @@ -37,7 +37,7 @@ /datum/event/prison_break/announce(false_alarm) if(length(areas) || false_alarm) - GLOB.minor_announcement.Announce("[pick("Gr3y.T1d3 virus","Malignant trojan")] detected in [station_name()] [(eventDept == "Security")? "imprisonment":"containment"] subroutines. Secure any compromised areas immediately. Station AI involvement is recommended.", "[eventDept] Alert") + GLOB.minor_announcement.Announce("[pick("Вирус `Gr3y.T1d3`","Вредоносный троян")] обнаружен в подсистеме [(eventDept == "Security")? "заключения":"безопасности"] на [station_name()]. Немедленно обеспечьте безопасность всех затронутых отсеков. Рекомендуется вмешательство ИИ станции.", "ВНИМАНИЕ: Аварийное оповещение [eventDept].") /datum/event/prison_break/start() for(var/area/A in world) diff --git a/code/modules/events/radiation_storm_event.dm b/code/modules/events/radiation_storm_event.dm index b66afda780f3..e796e0d09f45 100644 --- a/code/modules/events/radiation_storm_event.dm +++ b/code/modules/events/radiation_storm_event.dm @@ -4,7 +4,7 @@ announceWhen = 1 /datum/event/radiation_storm/announce() - GLOB.minor_announcement.Announce("High levels of radiation detected near the station. Maintenance is best shielded from radiation.", "Anomaly Alert", 'sound/AI/radiation.ogg') + GLOB.minor_announcement.Announce("Вблизи станции обнаружено радиационное поле высокой интенсивности. Всему персоналу надлежит проследовать в технические тоннели.", "ВНИМАНИЕ: Радиационная опасность.", 'sound/AI/radiation.ogg') //sound not longer matches the text, but an audible warning is probably good /datum/event/radiation_storm/start() diff --git a/code/modules/events/rogue_drones.dm b/code/modules/events/rogue_drones.dm index 281a085dfe16..9e4d183acb2e 100644 --- a/code/modules/events/rogue_drones.dm +++ b/code/modules/events/rogue_drones.dm @@ -21,12 +21,12 @@ /datum/event/rogue_drone/announce() var/msg if(prob(33)) - msg = "A combat drone wing operating out of the NSV Icarus has failed to return from a sweep of this sector, if any are sighted approach with caution." + msg = "Группа боевых дронов, оперируемых с борта ИКН «Икар», не вернулась с зачистки сектора. В случае контакта с дронами проявляйте осторожность." else if(prob(50)) - msg = "Contact has been lost with a combat drone wing operating out of the NSV Icarus. If any are sighted in the area, approach with caution." + msg = "Потеряна связь с группой боевых дронов, оперируемых с борта ИКН «Икар». В случае контакта с дронами проявляйте осторожность." else - msg = "Unidentified hackers have targeted a combat drone wing deployed from the NSV Icarus. If any are sighted in the area, approach with caution." - GLOB.minor_announcement.Announce(msg, "Rogue drone alert") + msg = "Неопознанные хакеры взломали систему контроля боевых дронов, оперируемых с борта ИКН «Икар». В случае контакта с дронами проявляйте осторожность." + GLOB.minor_announcement.Announce(msg, "ВНИМАНИЕ: Обнаружены сбойные дроны.") /datum/event/rogue_drone/tick() return @@ -39,6 +39,6 @@ num_recovered++ if(num_recovered > drones_list.len * 0.75) - GLOB.minor_announcement.Announce("Icarus drone control reports the malfunctioning wing has been recovered safely.", "Rogue drone alert") + GLOB.minor_announcement.Announce("Система контроля боевых дронов сообщает, что все единицы успешно вернулись на борт «Икара».", "ВНИМАНИЕ: Обнаружены сбойные дроны.") else - GLOB.minor_announcement.Announce("Icarus drone control registers disappointment at the loss of the drones, but the survivors have been recovered.", "Rogue drone alert") + GLOB.minor_announcement.Announce("Система контроля боевых дронов сообщает о потере всех боевых единиц, однако жертв не зарегистрировано.", "ВНИМАНИЕ: Обнаружены сбойные дроны.") diff --git a/code/modules/events/solarflare.dm b/code/modules/events/solarflare.dm index b289dd7ea568..fff21ca5180d 100644 --- a/code/modules/events/solarflare.dm +++ b/code/modules/events/solarflare.dm @@ -4,7 +4,7 @@ announceWhen = 1 /datum/event/solar_flare/announce() - GLOB.minor_announcement.Announce("A solar flare has been detected on collision course with the station. Do not conduct space walks or approach windows until the flare has passed!", "Incoming Solar Flare", 'sound/AI/flare.ogg') + GLOB.minor_announcement.Announce("Солнечная вспышка зафиксирована на встречном со станцией курсе. Не выходите в открытый космос и не приближайтесь к окнам до конца вспышки.", "ВНИМАНИЕ: Солнечная вспышка.", 'sound/AI/flare.ogg') /datum/event/solar_flare/start() SSweather.run_weather(/datum/weather/solar_flare) diff --git a/code/modules/events/spider_infestation.dm b/code/modules/events/spider_infestation.dm index bcdee1f840ea..9f8495438b29 100644 --- a/code/modules/events/spider_infestation.dm +++ b/code/modules/events/spider_infestation.dm @@ -9,7 +9,7 @@ /datum/event/spider_infestation/announce(false_alarm) if(successSpawn || false_alarm) - GLOB.minor_announcement.Announce("Unidentified lifesigns detected coming aboard [station_name()]. Secure any exterior access, including ducting and ventilation.", "Lifesign Alert", new_sound = 'sound/AI/aliens.ogg') + GLOB.minor_announcement.Announce("Обнаружены неопознанные формы жизни на борту станции [station_name()]. Обезопасьте все наружные входы и выходы, включая вентиляцию и вытяжки.", "ВНИМАНИЕ: Неопознанные формы жизни.", new_sound = 'sound/AI/aliens.ogg') else log_and_message_admins("Warning: Could not spawn any mobs for event Spider Infestation") diff --git a/code/modules/events/spider_terror.dm b/code/modules/events/spider_terror.dm index 51f71526d24a..585e12fc9047 100644 --- a/code/modules/events/spider_terror.dm +++ b/code/modules/events/spider_terror.dm @@ -11,7 +11,7 @@ /datum/event/spider_terror/announce(false_alarm) if(successSpawn || false_alarm) - GLOB.major_announcement.Announce("Confirmed outbreak of level 3-S biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert", 'sound/effects/siren-spooky.ogg', new_sound2 = 'sound/AI/outbreak3.ogg') + GLOB.major_announcement.Announce("Вспышка биологической угрозы уровня 3-ЭС зафиксирована на борту станции [station_name()]. Всему персоналу надлежит сдержать её распространение любой ценой!", "ВНИМАНИЕ: Биологическая угроза.", 'sound/effects/siren-spooky.ogg', new_sound2 = 'sound/AI/outbreak3.ogg') else log_and_message_admins("Warning: Could not spawn any mobs for event Terror Spiders") diff --git a/code/modules/events/tear.dm b/code/modules/events/tear.dm index 506be351fc56..b396f291d4cd 100644 --- a/code/modules/events/tear.dm +++ b/code/modules/events/tear.dm @@ -50,7 +50,7 @@ kill() return - GLOB.minor_announcement.Announce("A tear in the fabric of space and time has opened. Expected location: [target_area.name].", "Anomaly Alert", 'sound/AI/anomaly.ogg') + GLOB.minor_announcement.Announce("На борту станции зафиксирован пространственно-временной разрыв. Предполагаемая локация: [impact_area.name].", "ВНИМАНИЕ: Обнаружена аномалия.", 'sound/AI/anomaly.ogg') /datum/event/tear/end() if(TE) diff --git a/code/modules/events/tear_honk.dm b/code/modules/events/tear_honk.dm index b6d402412209..b0b537ba0dd9 100644 --- a/code/modules/events/tear_honk.dm +++ b/code/modules/events/tear_honk.dm @@ -8,7 +8,7 @@ HE = new /obj/effect/tear/honk(location) /datum/event/tear/honk/announce() - GLOB.minor_announcement.Announce("A Honknomoly has opened. Expected location: [impact_area.name].", "Honknomoly Alert", 'sound/items/airhorn.ogg') + GLOB.minor_announcement.Announce("На борту станции зафиксирована Хонканомалия. Предполагаемая локация: [impact_area.name].", "ВНИМАНИЕ: Обнаружена ХОНКАНОМАЛИЯ.", 'sound/items/airhorn.ogg') /datum/event/tear/honk/end() if(HE) diff --git a/code/modules/events/traders.dm b/code/modules/events/traders.dm index 384978c872f5..d07d08131e6e 100644 --- a/code/modules/events/traders.dm +++ b/code/modules/events/traders.dm @@ -16,16 +16,16 @@ GLOBAL_LIST_INIT(unused_trade_stations, list("sol")) /datum/event/traders/fake_announce() . = TRUE if(SSsecurity_level.get_current_level_as_number() >= SEC_LEVEL_RED) - GLOB.minor_announcement.Announce("A trading shuttle from Jupiter Station has been denied docking permission due to the heightened security alert aboard [station_name()].", "Trader Shuttle Docking Request Refused") + GLOB.minor_announcement.Announce("Торговому шаттлу со станции Юпитер было отказано в разрешении на стыковку из-за повышенной угрозы безопасности на борту [station_name()].", "Запрос на стыковку шаттла торговцев отклонен.") return - GLOB.minor_announcement.Announce("A trading shuttle from Jupiter Station has been granted docking permission at [station_name()] arrivals port 4.", "Trader Shuttle Docking Request Accepted") + GLOB.minor_announcement.Announce("Торговый шаттл со станции Юпитер получил разрешение на стыковку в порту прибытия 4 [station_name()].", "Запрос на стыковку шаттла торговцев принят.") /datum/event/traders/start() if(!station) // If there are no unused stations, just no. return if(SSsecurity_level.get_current_level_as_number() >= SEC_LEVEL_RED) - GLOB.minor_announcement.Announce("A trading shuttle from Jupiter Station has been denied docking permission due to the heightened security alert aboard [station_name()].", "Trader Shuttle Docking Request Refused") + GLOB.minor_announcement.Announce("Торговому шаттлу со станции Юпитер было отказано в разрешении на стыковку из-за повышенной угрозы безопасности на борту [station_name()].", "Запрос на стыковку шаттла торговцев отклонен.") // if the docking request was refused, fire another major event in 60 seconds var/datum/event_container/EC = SSevents.event_containers[EVENT_LEVEL_MAJOR] EC.next_event_time = world.time + (60 * 10) @@ -64,7 +64,7 @@ GLOBAL_LIST_INIT(unused_trade_stations, list("sol")) greet_trader(M) success_spawn = TRUE if(success_spawn) - GLOB.minor_announcement.Announce("A trading shuttle from Jupiter Station has been granted docking permission at [station_name()] arrivals port 4.", "Trader Shuttle Docking Request Accepted") + GLOB.minor_announcement.Announce("Торговый шаттл со станции Юпитер получил разрешение на стыковку в порту прибытия 4 [station_name()].", "Запрос на стыковку шаттла торговцев принят.") else GLOB.unused_trade_stations += station // Return the station to the list of usable stations. diff --git a/code/modules/events/vent_clog.dm b/code/modules/events/vent_clog.dm index 2bacfbac9646..7d221c42755d 100644 --- a/code/modules/events/vent_clog.dm +++ b/code/modules/events/vent_clog.dm @@ -6,7 +6,7 @@ var/list/vents = list() /datum/event/vent_clog/announce() - GLOB.minor_announcement.Announce("The scrubbers network is experiencing a backpressure surge. Some ejection of contents may occur.", "Atmospherics alert", 'sound/AI/scrubbers.ogg') + GLOB.minor_announcement.Announce("Зафиксирован скачок обратного давления в системе вытяжных труб. Возможен выброс содержимого.", "ВНИМАНИЕ: Атмосферная тревога.", 'sound/AI/scrubbers.ogg') /datum/event/vent_clog/setup() endWhen = rand(25, 100) diff --git a/code/modules/events/wormholes.dm b/code/modules/events/wormholes.dm index 9bb4b88ae1c1..c23125aa4fce 100644 --- a/code/modules/events/wormholes.dm +++ b/code/modules/events/wormholes.dm @@ -21,7 +21,7 @@ wormholes += new /obj/effect/portal/wormhole(T, null, null, -1) /datum/event/wormholes/announce() - GLOB.minor_announcement.Announce("Space-time anomalies detected on the station. There is no additional data.", "Anomaly Alert", new_sound = 'sound/AI/spanomalies.ogg') + GLOB.minor_announcement.Announce("Зафиксированы пространственно-временные аномалии на борту станции. Дополнительная информация отсутствует.", "ВНИМАНИЕ: Обнаружена аномалия.", new_sound = 'sound/AI/spanomalies.ogg') /datum/event/wormholes/tick() if(activeFor % shift_frequency == 0) diff --git a/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm b/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm index 5bf7ef4f8317..1089b91243d7 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm @@ -1,6 +1,6 @@ /obj/machinery/cooker/deepfryer - name = "deep fryer" - desc = "Deep fried everything." + name = "фритюрница" + desc = "Обжарить во фритюре всё." icon = 'icons/obj/cooking_machines.dmi' icon_state = "fryer_off" thiscooktype = "deep fried" diff --git a/code/modules/food_and_drinks/kitchen_machinery/grill_new.dm b/code/modules/food_and_drinks/kitchen_machinery/grill_new.dm index d44d9e3caadc..579225930f9e 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/grill_new.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/grill_new.dm @@ -1,7 +1,7 @@ /obj/machinery/kitchen_machine/grill - name = "grill" - desc = "Backyard grilling, IN SPACE." + name = "гриль" + desc = "Гриль на заднем дворе, В КОСМОСЕ." icon = 'icons/obj/cooking_machines.dmi' icon_state = "grill_off" cook_verbs = list("Grilling", "Searing", "Frying") diff --git a/code/modules/food_and_drinks/kitchen_machinery/microwave.dm b/code/modules/food_and_drinks/kitchen_machinery/microwave.dm index a36949ecbd68..af31cb765294 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/microwave.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/microwave.dm @@ -1,7 +1,7 @@ /obj/machinery/kitchen_machine/microwave - name = "microwave" - desc = "A microwave, perfect for reheating things with radiation." + name = "микроволновка" + desc = "Микроволновка. Идеальна для перенагревания вещей излучением." icon = 'icons/obj/kitchen.dmi' icon_state = "mw" cook_verbs = list("Microwaving", "Reheating", "Heating") diff --git a/code/modules/food_and_drinks/kitchen_machinery/oven_new.dm b/code/modules/food_and_drinks/kitchen_machinery/oven_new.dm index 6abaa5d8d0d9..99197decb621 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/oven_new.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/oven_new.dm @@ -1,7 +1,7 @@ /obj/machinery/kitchen_machine/oven - name = "oven" - desc = "Cookies are ready, dear." + name = "печь" + desc = "Печенье готово, дорогой." icon = 'icons/obj/cooking_machines.dmi' icon_state = "oven_off" cook_verbs = list("Baking", "Roasting", "Broiling") diff --git a/code/modules/food_and_drinks/kitchen_machinery/processor.dm b/code/modules/food_and_drinks/kitchen_machinery/processor.dm index 6d7ef45eb2c3..f28bc1775c71 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/processor.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/processor.dm @@ -1,5 +1,5 @@ /obj/machinery/processor - name = "Food Processor" + name = "кухонный комбайн" icon = 'icons/obj/kitchen.dmi' icon_state = "processor" layer = 2.9 diff --git a/code/modules/library/library_computer.dm b/code/modules/library/library_computer.dm index 11f5f9dd403b..c92d7f2cb367 100644 --- a/code/modules/library/library_computer.dm +++ b/code/modules/library/library_computer.dm @@ -286,17 +286,17 @@ var/datum/cachedbook/selectedbook = GLOB.library_catalog.get_book_by_id(params["bookid"]) if(!selectedbook) playsound(src, 'sound/machines/synth_no.ogg', 15, TRUE) - atom_say("Deletion Failed!") + atom_say("Удаление не удалось!") return if(selectedbook.ckey != params["user_ckey"]) message_admins("[params["user_ckey"]] attempted to delete a book that wasn't theirs, this shouldn't happen, please investigate.") return if(GLOB.library_catalog.remove_book_by_id(params["bookid"])) //this doesn't need to be logged playsound(loc, 'sound/machines/ping.ogg', 25, 0) - atom_say("Deletion Successful!") + atom_say("Успешно удалено!") return playsound(src, 'sound/machines/synth_no.ogg', 15, TRUE) - atom_say("Deletion Failed!") + atom_say("Удаление не удалось!") //rating acts @@ -306,16 +306,16 @@ if("rate_book") if(GLOB.library_catalog.rate_book(params["user_ckey"], params["bookid"], user_data.selected_rating)) playsound(loc, 'sound/machines/ping.ogg', 25, 0) - atom_say("Rating Successful!") + atom_say("Оценка принята!") populate_booklist() //Report Acts if("submit_report") if(GLOB.library_catalog.flag_book_by_id(params["user_ckey"], params["bookid"], selected_report)) playsound(loc, 'sound/machines/ping.ogg', 50, 0) - atom_say("Report Submitted!") + atom_say("Жалоба отправлена!") return playsound(src, 'sound/machines/synth_no.ogg', 15, TRUE) - atom_say("Report Submission Failed!") + atom_say("Отправка жалобы не удалась!") if("set_report") selected_report = text2num(params["report_type"]) //Book Uploader @@ -332,10 +332,10 @@ if("uploadbook") if(GLOB.library_catalog.upload_book(params["user_ckey"], user_data.selected_book)) playsound(src, 'sound/machines/ping.ogg', 50, 0) - atom_say("Book Uploaded!") + atom_say("Книга загружена!") return playsound(src, 'sound/machines/synth_no.ogg', 15, TRUE) - atom_say("Book Upload Failed!") + atom_say("Загрузка книги не удалась!") num_pages = getmaxpages() if("reportlost") inventoryRemove(text2num(params["libraryid"])) diff --git a/code/modules/mob/dead/observer/!observer_base.dm b/code/modules/mob/dead/observer/!observer_base.dm index e3de784f5c1e..462b09c46100 100644 --- a/code/modules/mob/dead/observer/!observer_base.dm +++ b/code/modules/mob/dead/observer/!observer_base.dm @@ -286,7 +286,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp /mob/dead/observer/get_status_tab_items() var/list/status_tab_data = ..() . = status_tab_data - status_tab_data[++status_tab_data.len] = list("Respawnability:", "[HAS_TRAIT(src, TRAIT_RESPAWNABLE) ? "Yes" : "No"]") + status_tab_data[++status_tab_data.len] = list("Возможность респавна:", "[HAS_TRAIT(src, TRAIT_RESPAWNABLE) ? "Да" : "Нет"]") /mob/dead/observer/verb/reenter_corpse() set category = "Ghost" diff --git a/code/modules/mob/living/brain/brain_emote.dm b/code/modules/mob/living/brain/brain_emote.dm index 861e1706a59b..cd80a796561e 100644 --- a/code/modules/mob/living/brain/brain_emote.dm +++ b/code/modules/mob/living/brain/brain_emote.dm @@ -34,38 +34,38 @@ /datum/emote/living/brain/alarm key = "alarm" key_third_person = "alarms" - message = "sounds an alarm." - self_message = "You sound an alarm." + message = "подаёт сигнал тревоги." + self_message = "Вы подаёте сигнал тревоги." /datum/emote/living/brain/alert key = "alert" key_third_person = "alerts" - message = "lets out a distressed noise." - self_message = "You let out a distressed noise." + message = "издаёт страдальческий звук." + self_message = "Вы издаёте страдальческий звук." /datum/emote/living/brain/notice key = "notice" - message = "plays a loud tone." - self_message = "You play a loud tone." + message = "воспроизводит громкий звук." + self_message = "Вы воспроизводите громкий звук." /datum/emote/living/brain/flash key = "flash" - message = "starts flashing its lights quickly!" + message = "начинает быстро мигать лампочками!" /datum/emote/living/brain/whistle key = "whistle" key_third_person = "whistles" - message = "whistles." - self_message = "You whistle." + message = "свистит." + self_message = "Вы свистите." /datum/emote/living/brain/beep key = "beep" key_third_person = "beeps" - message = "beeps." - self_message = "You beep." + message = "бипает." + self_message = "Вы бипаете." /datum/emote/living/brain/boop key = "boop" key_third_person = "boops" - message = "boops." - self_message = "You boop." + message = "бупает." + self_message = "Вы бупаете." diff --git a/code/modules/mob/living/carbon/alien/humanoid/humanoid_emote.dm b/code/modules/mob/living/carbon/alien/humanoid/humanoid_emote.dm index 7e458de03620..39328e17d43e 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/humanoid_emote.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/humanoid_emote.dm @@ -7,8 +7,8 @@ /datum/emote/living/carbon/alien/humanoid/roar key = "roar" key_third_person = "roars" - message = "roars!" - message_param = "roars at %t!" + message = "рычит!" + message_param = "рычит на %t!" emote_type = EMOTE_AUDIBLE | EMOTE_MOUTH sound = "sound/voice/hiss5.ogg" volume = 80 @@ -16,8 +16,8 @@ /datum/emote/living/carbon/alien/humanoid/hiss key = "hiss" key_third_person = "hisses" - message = "hisses!" - message_param = "hisses at %t!" + message = "шипит!" + message_param = "шипит на %t!" emote_type = EMOTE_AUDIBLE | EMOTE_MOUTH sound = "sound/voice/hiss1.ogg" volume = 30 @@ -25,8 +25,8 @@ /datum/emote/living/carbon/alien/humanoid/gnarl key = "gnarl" key_third_person = "gnarls" - message = "gnarls and shows its teeth." - message_param = "gnarls and flashes its teeth at %t." + message = "оскаливается и показывает зубы." + message_param = "оскаливается на %t и показывает зубы." sound = "sound/voice/hiss4.ogg" emote_type = EMOTE_AUDIBLE | EMOTE_MOUTH volume = 30 diff --git a/code/modules/mob/living/carbon/carbon_emote.dm b/code/modules/mob/living/carbon/carbon_emote.dm index 64fb51f2abb2..8bff3442a9d6 100644 --- a/code/modules/mob/living/carbon/carbon_emote.dm +++ b/code/modules/mob/living/carbon/carbon_emote.dm @@ -4,31 +4,31 @@ /datum/emote/living/carbon/blink key = "blink" key_third_person = "blinks" - message = "blinks." + message = "моргает." /datum/emote/living/carbon/blink_r key = "blink_r" - message = "blinks rapidly." + message = "быстро моргает." /datum/emote/living/carbon/cross key = "cross" key_third_person = "crosses" - message = "crosses their arms." + message = "скрещивает руки." hands_use_check = TRUE /datum/emote/living/carbon/chuckle key = "chuckle" key_third_person = "chuckles" - message = "chuckles." - message_mime = "appears to chuckle." + message = "усмехается." + message_mime = "беззвучно усмехается." emote_type = EMOTE_AUDIBLE | EMOTE_MOUTH - muzzled_noises = list("joyful", "upbeat") + muzzled_noises = list("радостный", "оптимистичный") /datum/emote/living/carbon/cough key = "cough" key_third_person = "coughs" - message = "coughs!" - message_mime = "appears to cough!" + message = "кашляет!" + message_mime = "бесшумно кашляет!" emote_type = EMOTE_AUDIBLE | EMOTE_MOUTH vary = TRUE age_based = TRUE @@ -49,96 +49,96 @@ /datum/emote/living/carbon/moan key = "moan" key_third_person = "moans" - message = "moans!" - message_mime = "appears to moan!" - muzzled_noises = list("pained") + message = "стонет!" + message_mime = "как будто стонет!" + muzzled_noises = list("страдальческий") emote_type = EMOTE_AUDIBLE | EMOTE_MOUTH unintentional_stat_allowed = UNCONSCIOUS /datum/emote/living/carbon/giggle key = "giggle" key_third_person = "giggles" - message = "giggles." - message_mime = "giggles silently!" - muzzled_noises = list("bubbly") + message = "хихикает." + message_mime = "бесшумно хихикает!" + muzzled_noises = list("шипучий") emote_type = EMOTE_AUDIBLE | EMOTE_MOUTH /datum/emote/living/carbon/gurgle key = "gurgle" key_third_person = "gurgles" - message = "makes an uncomfortable gurgle." - muzzled_noises = list("unpleasant", "guttural") + message = "издает неприятное булькание." + muzzled_noises = list("недовольный", "гортанный") emote_type = EMOTE_AUDIBLE | EMOTE_MOUTH unintentional_stat_allowed = UNCONSCIOUS /datum/emote/living/carbon/inhale key = "inhale" key_third_person = "inhales" - message = "breathes in." + message = "вдыхает." emote_type = EMOTE_AUDIBLE | EMOTE_MOUTH - muzzled_noises = list("breathy") + muzzled_noises = list("хриплый") /datum/emote/living/carbon/inhale/sharp key = "inhale_s" key_third_person = "inhales sharply!" - message = "takes a deep breath!" + message = "делает глубокий вдох!" /datum/emote/living/carbon/kiss key = "kiss" key_third_person = "kisses" - message = "blows a kiss." - message_param = "blows a kiss at %t!" - muzzled_noises = list("smooching") + message = "посылает воздушный поцелуй." + message_param = "посылает воздушный поцелуй %t!" + muzzled_noises = list("чмокающий") /datum/emote/living/carbon/wave key = "wave" key_third_person = "waves" - message = "waves." - message_param = "waves at %t." + message = "машет." + message_param = "машет %t." hands_use_check = TRUE /datum/emote/living/carbon/yawn key = "yawn" key_third_person = "yawns" - message = "yawns." + message = "зевает." emote_type = EMOTE_AUDIBLE | EMOTE_MOUTH - muzzled_noises = list("tired", "lazy", "sleepy") + muzzled_noises = list("усталый", "ленивый", "сонный") /datum/emote/living/carbon/exhale key = "exhale" key_third_person = "exhales" - message = "breathes out." + message = "выдыхает." emote_type = EMOTE_AUDIBLE | EMOTE_MOUTH /datum/emote/living/carbon/laugh key = "laugh" key_third_person = "laughs" - message = "laughs." - message_mime = "laughs silently!" - message_param = "laughs at %t." - muzzled_noises = list("happy", "joyful") + message = "смеётся." + message_mime = "бесшумно смеётся!" + message_param = "смеется над %t." + muzzled_noises = list("счастливый", "веселый") emote_type = EMOTE_AUDIBLE | EMOTE_MOUTH /datum/emote/living/carbon/scowl key = "scowl" key_third_person = "scowls" - message = "scowls." + message = "хмурится." /datum/emote/living/groan key = "groan" key_third_person = "groans" - message = "groans!" - message_mime = "appears to groan!" - message_param = "groans at %t." - muzzled_noises = list("pained") + message = "болезненно вздыхает!" + message_mime = "как будто болезненно вздыхает!" + message_param = "болезненно вздыхает на %t." + muzzled_noises = list("страдальческий") emote_type = EMOTE_AUDIBLE | EMOTE_MOUTH unintentional_stat_allowed = UNCONSCIOUS /datum/emote/living/carbon/sign key = "sign" key_third_person = "signs" - message = "signs." - message_param = "signs the number %t." + message = "показывает число." + message_param = "показывает число: %t." param_desc = "number(0-10)" // Humans get their own proc since they have fingers mob_type_blacklist_typecache = list(/mob/living/carbon/human) @@ -148,7 +148,7 @@ /datum/emote/living/carbon/faint key = "faint" key_third_person = "faints" - message = "faints." + message = "теряет сознание." /datum/emote/living/carbon/faint/run_emote(mob/user, params, type_override, intentional) . = ..() @@ -159,13 +159,13 @@ /datum/emote/living/carbon/twirl key = "twirl" key_third_person = "twirls" - message = "twirls something around in their hand." + message = "вертит что-то в руке." hands_use_check = TRUE /datum/emote/living/carbon/twirl/run_emote(mob/user, params, type_override, intentional) if(!(user.get_active_hand() || user.get_inactive_hand())) - to_chat(user, "You need something in your hand to use this emote!") + to_chat(user, "Вы должны держать что-то в руках, чтобы использовать эту эмоцию!") return TRUE var/obj/item/thing @@ -177,12 +177,12 @@ if(istype(thing, /obj/item/grab)) var/obj/item/grab/grabbed = thing - message = "twirls [grabbed.affecting.name] around!" + message = "вертит [grabbed.affecting.name] туда-сюда!" grabbed.affecting.emote("spin") else if(!(thing.flags & ABSTRACT)) - message = "twirls [thing] around in their hand!" + message = "вертит [thing] в руке!" else - to_chat(user, "You cannot twirl [thing]!") + to_chat(user, "У вас не получится повертеть [thing]!") return TRUE . = ..() diff --git a/code/modules/mob/living/carbon/human/human_emote.dm b/code/modules/mob/living/carbon/human/human_emote.dm index 39712e24151b..8d0ec5324a2f 100644 --- a/code/modules/mob/living/carbon/human/human_emote.dm +++ b/code/modules/mob/living/carbon/human/human_emote.dm @@ -33,7 +33,7 @@ /datum/emote/living/carbon/human/airguitar key = "airguitar" - message = "is strumming the air and headbanging like a safari chimp." + message = "натягивает струны и бьет головой, как шимпанзе в сафари." emote_type = EMOTE_VISIBLE hands_use_check = TRUE @@ -41,9 +41,9 @@ key = "clap" key = "clap" key_third_person = "claps" - message = "claps." - message_mime = "claps silently." - message_param = "claps at %t." + message = "хлопает." + message_mime = "хлопает бесшумно." + message_param = "хлопает %t." emote_type = EMOTE_AUDIBLE vary = TRUE @@ -55,10 +55,10 @@ if(!H.bodyparts_by_name[BODY_ZONE_L_ARM] || !H.bodyparts_by_name[BODY_ZONE_R_ARM]) if(!H.bodyparts_by_name[BODY_ZONE_L_ARM] && !H.bodyparts_by_name[BODY_ZONE_R_ARM]) // no arms... - to_chat(user, "You need arms to be able to clap.") + to_chat(user, "Вам нужны руки, чтобы хлопать.") else // well, we've got at least one - user.visible_message("[user] makes the sound of one hand clapping.") + user.visible_message("[user] издает звук хлопков одной ладонью.") return TRUE return ..() @@ -78,7 +78,7 @@ /datum/emote/living/carbon/human/crack key = "crack" key_third_person = "cracks" - message = "cracks their knuckles." + message = "хрустит пальцами." emote_type = EMOTE_AUDIBLE // knuckles.ogg by CGEffex. Shortened and cut. // https://freesound.org/people/CGEffex/sounds/93981/ @@ -89,31 +89,31 @@ /datum/emote/living/carbon/human/cry key = "cry" key_third_person = "cries" - message = "cries." - muzzled_noises = list("weak", "pathetic", "sad") + message = "плачет." + muzzled_noises = list("слабый", "жалкий", "грустный") emote_type = EMOTE_AUDIBLE /datum/emote/living/carbon/human/eyebrow key = "eyebrow" - message = "raises an eyebrow." - message_param = "raises an eyebrow at %t." + message = "приподнимает бровь." + message_param = "приподнимает бровь при виде %t." /datum/emote/living/carbon/human/wince key = "wince" key_third_person = "winces" - message = "winces." - message_param = "winces at %t." + message = "морщится." + message_param = "морщится от вида %t." /datum/emote/living/carbon/human/squint key = "squint" key_third_person = "squints" - message = "squints." - message_param = "squints at %t." + message = "прищуривается." + message_param = "прищуривается, глядя на %t." /datum/emote/living/carbon/human/facepalm key = "facepalm" key_third_person = "facepalms" - message = "facepalms." + message = "хлопает себя по лбу." hands_use_check = TRUE sound = 'sound/weapons/slap.ogg' emote_type = EMOTE_AUDIBLE @@ -121,46 +121,46 @@ /datum/emote/living/carbon/human/palm key = "palm" - message = "extends their palm expectingly." - message_param = "extends their palm expectingly towards %t." + message = "ожидающе протягивает руку." + message_param = "ожидающе протягивает руку %t." /datum/emote/living/carbon/human/grumble key = "grumble" key_third_person = "grumbles" - message = "grumbles!" - message_mime = "seems to grumble!" - message_postfix = "at %t!" - muzzled_noises = list("bothered") + message = "ворчит!" + message_mime = "как будто ворчит!" + message_postfix = "на %t!" + muzzled_noises = list("беспокойный") emote_type = EMOTE_AUDIBLE | EMOTE_MOUTH /datum/emote/living/carbon/human/hug key = "hug" key_third_person = "hugs" - message = "hugs themselves." - message_param = "hugs %t." + message = "обнимает себя." + message_param = "обнимает %t." hands_use_check = TRUE /datum/emote/living/carbon/human/mumble key = "mumble" key_third_person = "mumbles" - message = "mumbles!" - message_mime = "seems to be speaking sweet nothings!" - message_postfix = "at %t!" + message = "бормочет!" + message_mime = "кажется, что говорит приятное ничто!" + message_postfix = "на %t!" emote_type = EMOTE_AUDIBLE | EMOTE_MOUTH /datum/emote/living/carbon/human/nod key = "nod" key_third_person = "nods" - message = "nods their head." - message_param = "nods their head at %t." + message = "кивает." + message_param = "кивает, обращаясь к %t." /datum/emote/living/carbon/human/scream key = "scream" key_third_person = "screams" - message = "screams!" - message_mime = "acts out a scream!" - message_postfix = "at %t!" - muzzled_noises = list("very loud") + message = "кричит!" + message_mime = "как будто кричит!" + message_postfix = "на %t!" + muzzled_noises = list("очень громкий") emote_type = EMOTE_AUDIBLE | EMOTE_MOUTH only_forced_audio = FALSE vary = TRUE @@ -177,7 +177,7 @@ var/mob/living/carbon/human/H = user if(H.dna.species?.scream_verb) if(H.mind?.miming) - return "[H.dna.species?.scream_verb] silently!" + return "[H.dna.species?.scream_verb] бесшумно!" else return "[H.dna.species?.scream_verb]!" @@ -193,8 +193,8 @@ /datum/emote/living/carbon/human/gasp key = "gasp" key_third_person = "gasps" - message = "gasps!" - message_mime = "appears to be gasping!" + message = "задыхается!" + message_mime = "кажется, задыхается!" emote_type = EMOTE_AUDIBLE // Don't make this one a mouth emote since we don't want it to be caught by nobreath age_based = TRUE unintentional_stat_allowed = UNCONSCIOUS @@ -239,24 +239,24 @@ /datum/emote/living/carbon/human/shake key = "shake" key_third_person = "shakes" - message = "shakes their head." - message_param = "shakes their head at %t." + message = "мотает головой." + message_param = "мотает головой, обращаясь к %t." /datum/emote/living/carbon/human/pale key = "pale" - message = "goes pale for a second." + message = "на секунду бледнеет." /datum/emote/living/carbon/human/raise key = "raise" key_third_person = "raises" - message = "raises a hand." + message = "поднимает руку." hands_use_check = TRUE /datum/emote/living/carbon/human/salute key = "salute" key_third_person = "salutes" - message = "salutes." - message_param = "salutes to %t." + message = "салютует." + message_param = "салютует %t." hands_use_check = TRUE audio_cooldown = 3 SECONDS var/list/serious_shoes = list(/obj/item/clothing/shoes/jackboots, /obj/item/clothing/shoes/combat, @@ -274,17 +274,17 @@ /datum/emote/living/carbon/human/shrug key = "shrug" key_third_person = "shrugs" - message = "shrugs." + message = "пожимает плечами." /datum/emote/living/carbon/human/sniff key = "sniff" key_third_person = "sniff" - message = "sniffs." + message = "шмыгает носом." emote_type = EMOTE_AUDIBLE /datum/emote/living/carbon/human/johnny key = "johnny" - message = "takes a drag from a cigarette and blows their own name out in smoke." + message = "затягивается сигаретой и выдыхает дым в форме своего имени." message_param = "dummy" // Gets handled in select_param emote_type = EMOTE_AUDIBLE target_behavior = EMOTE_TARGET_BHVR_DEFAULT_TO_BASE @@ -298,30 +298,30 @@ return message var/msg = message if(user.mind?.miming) - msg = "takes a drag from a cigarette and blows \"[target.name]\" out in smoke." + msg = "затягивается сигаретой и выдыхает дым в форме \"[target.name]\"." else - msg = "says, \"[target.name], please. They had a family.\" [user] takes a drag from a cigarette and blows [user.p_their()] name out in smoke." + msg = "говорит, \"[target.name], пожалуйста. У них была семья.\" [user] затягивается сигаретой и выдыхает дым в форме своего имени." return msg /datum/emote/living/carbon/human/johnny/run_emote(mob/user, params, type_override, intentional) var/mob/living/carbon/human/H = user if(!istype(H.wear_mask, /obj/item/clothing/mask/cigarette)) - to_chat(user, "You can't be that cool without a cigarette between your lips.") + to_chat(user, "Нельзя быть настолько крутым без сигареты в зубах.") return TRUE var/obj/item/clothing/mask/cigarette/cig = H.wear_mask if(!cig.lit) - to_chat(user, "You have to light that [cig] first, cool cat.") + to_chat(user, "Сначала зажги [cig], модник.") return TRUE if(H.getOxyLoss() > 30) user.visible_message( - "[user] gasps for air and swallows their cigarette!", - "You gasp for air and accidentally swallow your [cig]!" + "[user] вдыхает и проглатывает сигарету!", + "Вы вдыхаете и случайно проглатываете [cig]!" ) if(cig.lit) - to_chat(user, "The lit [cig] burns on the way down!") + to_chat(user, "Горящая [cig] жжется по пути вниз!") user.unEquip(cig) qdel(cig) H.adjustFireLoss(5) @@ -331,8 +331,8 @@ /datum/emote/living/carbon/human/sneeze key = "sneeze" key_third_person = "sneezes" - message = "sneezes." - muzzled_noises = list("strange", "sharp") + message = "чихает." + muzzled_noises = list("странный", "резкий") emote_type = EMOTE_AUDIBLE | EMOTE_MOUTH volume = 70 @@ -359,14 +359,14 @@ else smacking_hand = new /obj/item/slapper(user) if(user.put_in_hands(smacking_hand)) - to_chat(user, "You ready your slapping hand.") + to_chat(user, "Вы готовы давать пощёчины.") else - to_chat(user, "You're incapable of slapping in your current state.") + to_chat(user, "В текущем положении дать пощёчину не получится.") /datum/emote/living/carbon/human/wink key = "wink" key_third_person = "winks" - message = "winks." + message = "подмигивает." /datum/emote/living/carbon/human/highfive key = "highfive" @@ -385,7 +385,7 @@ /datum/emote/living/carbon/human/highfive/run_emote(mob/user, params, type_override, intentional) var/mob/living/carbon/user_carbon = user if(user_carbon.has_status_effect(status)) - user.visible_message("[user.name] shakes [user.p_their()] hand around slightly, impatiently waiting for someone to [key].") + user.visible_message("[user.name] слегка взмахивает своей рукой, нетерпеливо ожидая, когда кто-нибудь даст пять.") return TRUE user_carbon.apply_status_effect(status) @@ -404,8 +404,8 @@ /datum/emote/living/carbon/human/snap key = "snap" key_third_person = "snaps" - message = "snaps their fingers." - message_param = "snaps their fingers at %t." + message = "щелкает пальцами." + message_param = "щелкает пальцами в направлении %t." sound = "sound/effects/fingersnap.ogg" emote_type = EMOTE_AUDIBLE @@ -422,11 +422,11 @@ right_hand_good = TRUE if(!left_hand_good && !right_hand_good) - to_chat(user, "You need at least one hand in good working order to snap your fingers.") + to_chat(user, "Вам нужна хотя бы одна работоспособная рука, чтобы щелкнуть пальцами.") return TRUE if(prob(5)) - user.visible_message("[user] snaps [user.p_their()] fingers right off!") + user.visible_message("[user] щелкает своими пальцами без раздумий!") playsound(user.loc, 'sound/effects/snap.ogg', 50, 1) return TRUE return ..() @@ -434,8 +434,8 @@ /datum/emote/living/carbon/human/fart key = "fart" key_third_person = "farts" - message = "farts." - message_param = "farts in %t's general direction." + message = "пердит." + message_param = "пердит в направлении %t." emote_type = EMOTE_AUDIBLE /datum/emote/living/carbon/human/fart/run_emote(mob/user, params, type_override, intentional) @@ -448,7 +448,7 @@ /datum/emote/living/carbon/sign/signal key = "signal" key_third_person = "signals" - message_param = "raises %t fingers." + message_param = "показывает пальцев: %t." param_desc = "number(0-10)" mob_type_allowed_typecache = list(/mob/living/carbon/human) hands_use_check = TRUE @@ -460,7 +460,7 @@ /datum/emote/living/carbon/human/wag key = "wag" key_third_person = "wags" - message = "starts wagging their tail." + message = "начинает вилять хвостом." emote_type = EMOTE_VISIBLE | EMOTE_FORCE_NO_RUNECHAT species_type_whitelist_typecache = list( /datum/species/unathi, @@ -505,7 +505,7 @@ /datum/emote/living/carbon/human/wag/stop key = "swag" // B) key_third_person = "swags" - message = "stops wagging their tail." + message = "перестает вилять хвостом." /datum/emote/living/carbon/human/wag/stop/run_emote(mob/user, params, type_override, intentional) . = ..() @@ -523,8 +523,8 @@ /datum/emote/living/carbon/human/scream/screech key = "screech" key_third_person = "screeches" - message = "screeches!" - message_param = "screeches at %t!" + message = "визжит!" + message_param = "визжит на %t!" vary = FALSE mob_type_blacklist_typecache = list() mob_type_allowed_typecache = list(/mob/living/carbon/human/monkey) @@ -533,20 +533,20 @@ /datum/emote/living/carbon/human/scream/screech/roar key = "roar" key_third_person = "roars" - message = "roars!" - message_param = "roars at %t!" + message = "ревёт!" + message_param = "ревёт на %t!" /datum/emote/living/carbon/human/monkey/gnarl key = "gnarl" key_third_person = "gnarls" - message = "gnarls and shows their teeth!" - message_param = "gnarls and shows their teeth at %t." + message = "оскаливается и показывает зубы!" + message_param = "оскаливается на %t и показывает зубы." emote_type = EMOTE_AUDIBLE | EMOTE_MOUTH /datum/emote/living/carbon/human/monkey/roll key = "roll" key_third_person = "rolls" - message = "rolls." + message = "катится." hands_use_check = TRUE /datum/emote/living/carbon/human/monkey/roll/run_emote(mob/user, params, type_override, intentional) @@ -557,12 +557,12 @@ /datum/emote/living/carbon/human/monkey/scratch key = "scratch" key_third_person = "scratches" - message = "scratches." + message = "чешется." hands_use_check = TRUE /datum/emote/living/carbon/human/monkey/tail key = "tail" - message = "waves their tail." + message = "машет хвостом." /////// // More specific human species emotes @@ -570,25 +570,25 @@ /datum/emote/living/carbon/human/flap key = "flap" key_third_person = "flaps" - message = "flaps their wings." + message = "машет крыльями." species_type_whitelist_typecache = list(/datum/species/moth) /datum/emote/living/carbon/human/flap/angry key = "aflap" key_third_person = "aflaps" - message = "flaps their wings ANGRILY!" + message = "АГРЕССИВНО машет крыльями!" /datum/emote/living/carbon/human/flutter key = "flutter" key_third_person = "flutters" - message = "flutters their wings." + message = "трепещет крыльями." species_type_whitelist_typecache = list(/datum/species/moth) /datum/emote/living/carbon/human/quill key = "quill" key_third_person = "quills" - message = "rustles their quills." - message_param = "rustles their quills at %t." + message = "шелестит перьями." + message_param = "шелестит перьями на %t." emote_type = EMOTE_AUDIBLE age_based = TRUE // Credit to sound-ideas (freesfx.co.uk) for the sound. @@ -598,8 +598,8 @@ /datum/emote/living/carbon/human/warble key = "warble" key_third_person = "warbles" - message = "warbles." - message_param = "warbles at %t." + message = "трелит." + message_param = "трелит на %t." emote_type = EMOTE_AUDIBLE age_based = TRUE // Copyright CC BY 3.0 alienistcog (freesound.org) for the sound. @@ -609,8 +609,8 @@ /datum/emote/living/carbon/human/clack key = "clack" key_third_person = "clacks" - message = "clacks their mandibles." - message_param = "clacks their mandibles at %t." + message = "клацает челюстями." + message_param = "клацает челюстями на %t." species_type_whitelist_typecache = list(/datum/species/kidan) emote_type = EMOTE_AUDIBLE audio_cooldown = 3 SECONDS @@ -627,8 +627,8 @@ /datum/emote/living/carbon/human/clack/click key = "click" key_third_person = "clicks" - message = "clicks their mandibles." - message_param = "clicks their mandibles at %t." + message = "щёлкает челюстями." + message_param = "щёлкает челюстями на %t." // Credit to DrMinky (freesound.org) for the sound. sound = "sound/effects/kidanclack2.ogg" @@ -641,38 +641,38 @@ /datum/emote/living/carbon/human/drask_talk/drone key = "drone" key_third_person = "drones" - message = "drones." - message_param = "drones at %t." + message = "жужжит." + message_param = "жужжит на %t." /datum/emote/living/carbon/human/drask_talk/hum key = "hum" key_third_person = "hums" - message = "hums." - message_param = "hums at %t." + message = "гудит." + message_param = "гудит на %t." /datum/emote/living/carbon/human/drask_talk/rumble key = "rumble" key_third_person = "rumbles" - message = "rumbles." - message_param = "rumbles at %t." + message = "урчит." + message_param = "урчит на %t." /datum/emote/living/carbon/human/hiss key = "hiss" key_third_person = "hisses" - message = "hisses." - message_param = "hisses at %t." + message = "шипит." + message_param = "шипит на %t." species_type_whitelist_typecache = list(/datum/species/unathi) emote_type = EMOTE_AUDIBLE | EMOTE_MOUTH age_based = TRUE // Credit to Jamius (freesound.org) for the sound. sound = "sound/effects/unathihiss.ogg" - muzzled_noises = list("weak hissing") + muzzled_noises = list("тихий шипящий") /datum/emote/living/carbon/human/creak key = "creak" key_third_person = "creaks" - message = "creaks." - message_param = "creaks at %t." + message = "скрипит." + message_param = "скрипит на %t." emote_type = EMOTE_AUDIBLE age_based = TRUE species_type_whitelist_typecache = list(/datum/species/diona) @@ -697,8 +697,8 @@ /datum/emote/living/carbon/human/slime/squish key = "squish" key_third_person = "squishes" - message = "squishes." - message_param = "squishes at %t." + message = "хлюпает." + message_param = "хлюпает на %t." emote_type = EMOTE_AUDIBLE age_based = TRUE // Credit to DrMinky (freesound.org) for the sound. @@ -707,8 +707,8 @@ /datum/emote/living/carbon/human/slime/bubble key = "bubble" key_third_person = "bubbles" - message = "bubbles." - message_param = "bubbles at %t." + message = "булькает." + message_param = "булькает на %t." emote_type = EMOTE_AUDIBLE age_based = TRUE // Sound is CC-4.0 by Audiolarx @@ -719,9 +719,9 @@ /datum/emote/living/carbon/human/slime/pop key = "pop" key_third_person = "pops" - message = "makes a popping sound." - message_param = "makes a popping sound at %t." - message_mime = "makes a silent pop." + message = "хлопает ртом." + message_param = "хлопает ртом на %t." + message_mime = "бесшумно хлопает ртом." emote_type = EMOTE_AUDIBLE age_based = TRUE // CC0 @@ -732,73 +732,73 @@ /datum/emote/living/carbon/human/howl key = "howl" key_third_person = "howls" - message = "howls." - message_mime = "acts out a howl." - message_param = "howls at %t." + message = "воет." + message_mime = "кажется, воет." + message_param = "воет на %t." species_type_whitelist_typecache = list(/datum/species/vulpkanin) emote_type = EMOTE_AUDIBLE | EMOTE_MOUTH age_based = TRUE sound = "sound/goonstation/voice/howl.ogg" - muzzled_noises = list("very loud") + muzzled_noises = list("очень громкий") volume = 100 cooldown = 10 SECONDS /datum/emote/living/carbon/human/growl key = "growl" key_third_person = "growls" - message = "growls." - message_mime = "growls silently." - message_param = "growls at %t." + message = "рычит." + message_mime = "бесшумно рычит." + message_param = "рычит на %t." species_type_whitelist_typecache = list(/datum/species/vulpkanin) sound = "growls" // what the fuck why is this just top level volume = 80 - muzzled_noises = list("annoyed") + muzzled_noises = list("грозный") emote_type = EMOTE_AUDIBLE | EMOTE_MOUTH /datum/emote/living/carbon/human/hiss/tajaran - message_mime = "hisses silently." + message_mime = "шипит бесшумно." species_type_whitelist_typecache = list(/datum/species/tajaran) sound = "sound/effects/tajaranhiss.ogg" volume = 80 - muzzled_noises = list("irritated") + muzzled_noises = list("злобный") // catHisses1.wav by Zabuhailo. Edited. // https://freesound.org/people/Zabuhailo/sounds/146963/ /datum/emote/living/carbon/human/rattle key = "rattle" key_third_person = "rattles" - message = "rattles their bones." - message_param = "rattles their bones at %t." + message = "гремит костями." + message_param = "гремит костями на %t." sound = "sound/voice/plas_rattle.ogg" volume = 80 species_type_whitelist_typecache = list(/datum/species/skeleton, /datum/species/plasmaman) /datum/emote/living/carbon/human/crack/slime - message = "squishes their knuckles!" + message = "сминает костяшки пальцев!" sound = "sound/effects/slime_squish.ogg" species_type_whitelist_typecache = list(/datum/species/slime) species_type_blacklist_typecache = null /datum/emote/living/carbon/human/crack/machine - message = "cracks their actuators!" + message = "хрустит приводами!" sound = "sound/effects/mob_effects/ipc_crunch.ogg" species_type_whitelist_typecache = list(/datum/species/machine) species_type_blacklist_typecache = null /datum/emote/living/carbon/human/crack/diona - message = "cracks a twig!" + message = "хрустит прутиком!" sound = "sound/effects/mob_effects/diona_crunch.ogg" species_type_whitelist_typecache = list(/datum/species/diona) species_type_blacklist_typecache = null volume = 85 // the sound effect is a bit quiet /datum/emote/living/carbon/human/crack/skelly - message = "cracks something!" // placeholder + message = "хрустит чем-то!" // placeholder species_type_whitelist_typecache = list(/datum/species/skeleton, /datum/species/plasmaman) species_type_blacklist_typecache = null /datum/emote/living/carbon/human/crack/skelly/run_emote(mob/user, params, type_override, intentional) var/mob/living/carbon/human/H = user var/obj/item/organ/external/bodypart = pick(H.bodyparts) - message = "cracks their [bodypart.name]!" + message = "хрустит, используя [bodypart.name]!" . = ..() diff --git a/code/modules/mob/living/carbon/human/human_life.dm b/code/modules/mob/living/carbon/human/human_life.dm index 83fba4605632..744d991fc99c 100644 --- a/code/modules/mob/living/carbon/human/human_life.dm +++ b/code/modules/mob/living/carbon/human/human_life.dm @@ -99,6 +99,56 @@ else if(!vision || vision.is_broken()) // Vision organs cut out or broken? Permablind. EyeBlind(4 SECONDS) + if(getBrainLoss() >= 60 && stat != DEAD) + if(prob(3)) + var/list/crazysay = list("Я [pick("ПОНИ","ЯЩЕР","ТАЯРА","КОТЁНОК","ВУЛЬП","ДРАСК","ПТИЧКА","ВОКСИК","МАШИНА","БОЕВОЙ МЕХ","РАКЕТА")] [pick("НЬЕЕЕЕЕЕЕЕЕЕ","СКРЭЭЭЭЭЭЭЭЭ","МЯУ","НЯ~","РАВР","ГАВ-ГАВ","ХИССССС","ВРУУУМ-ВРУУУУМ","ПИУ-ПИУ","ЧУ-ЧУ")]!", + "без кислорода блоб не распространяется?", + "КАПИТАН - ГАНДОН!", + "[pick("", "Этот чёртов маньяк,")] [pick("Жордж","Джордж","Горж","Грудж")] [pick("Меленс","Мэлонс","Мвырлнс")] убивает меня ПАМА;ГИТЕ!!!", + "Можишь пж дать [pick("теликенез","халга","эпелепсию")]?", + "ООООО МОЯ ОБОРОНА", + "Би - ЛУЧШЕЕ С ДВУХ СТОРОН!", + "Я ХОЧУ ПОГЛАДИТЬ ЭТХ БИБЗЯН!", + "не бей пж!!!!", + "ПЕРКРАТИ!", + "ПАМАГИТЕ ЩЕТКУРИТИ", + "ВОКсЫ нЕ мОГут ЛюБИТь", + "Мой папа владеет этой станцией", + "Повар добавил [pick("ПРОТЕИН", "туолетную воду", "муравьёв", "энзимы","акулу","виТамины","РеАктивный МутАген","ТеСлиум","сКрэКтониум")] в [pick("мой суп","мою шОверму","мой рЭйнбургер","мой зеЛёный Сольент","мои СушИ","мой борш")]!", + "У ОБЕЗЬЯН ТАЗЕРЫ!", + "кМ потраТел мои поенты на [pick("бОевые дробавики","ризИновые перЧатке","кУчу херни!")]", + "EI'NATH!", + "ПРОСНИТЕСЬ, БАРАНЫ!", + "эта [pick("был мой младшей брат!!","была мая невеста","был мой осТавшЕйся друк","был Мой деДдом","былА мая люБов","была моя жена","был мой муж","маИ малЕнькие ДеТи","МаЯ разУмнАя коШка")]", + "ФУС РО ДА", + "ёбаные мандарины!!!", + "Праверь меня", + "Моё лицо!", + "СПОКОЙНО БЛЯТЬ!", + "ВАААААААААГХ!!!", + "Папробуй догани!", + "ЗА ИМПЕРАТОРА!", + "ДАЧНОГО ДНЯ!!!!", + "это всё дварфы, чел, всё дварфы", + "СПЕЙС МАРИНЫ", + "Мввыы ссдееллалии этво вво имя хаосса", + "Фотареалистичные тикстуры", + "Любоф цвятёт", + "ПАКЕТЫ!!!", + "[pick("ГДЕ МОЙ","МХНЕ НУЖЕН","ДАЙ МНЕ МОЙ","ОКУНИ МЕНЯ В")] [pick("ДЕРМАЛИН","АЛКИЗИН","ДИЛОВИН","ИНАПРОВАЛИН","БИКАРДИН","ГИПЕРЗИН","КЕЛОТАН","ЛЕПОРАЗИН","СОЛЬ","МАННИТОЛ","КРИОКСАДОН","СПЕЙС ЛУБ","КАППУЛЕТИУМ","ЛСД")]!", + "БжеХрнИКрлеВу", + "У меНя еСтЬ Лююди на Цк!!!", + ";П-п-помогите т-т-техи", + "Ани идут, ани ИДУТ! АНИ ИДУТ!!!", + "КОНЕЦ БЛИЗОК!", + "Я ГОТОВ УМЕРЕТЬ ВО ИМЯ [pick("РИТУАЛА","СВОБОДЫ","ЗАРПЛАТЫ","ОЧКОВ","ТЕХНОЛОГИЙ","СОБАКИ","СИРОПА","ПУШИСТЫХ ДРУЗЕЙ","ЛУТА ИЗ ГЕЙТА","ТУЛБОКСОВ","ВУЛЬП","ПОНЧИКОВ","КЛОУНА")]", + "УБиЙ ИХ, [pick("ПЕТУХ","КИРА-КЛОЙН","КЛУВНИ","МИМАНЬЯК","БОМБЯЩИЯ ТАЯРА","ОФЕЦЕР","МОРФЛЕНГ","НАС-РИ")]!" , + "Я МаГу ТиБЯ ЗаСТАвИТЬ СКаЗАТЬ ВсЁ ЧТО УГоДНО!!?!?!") + if(prob(66)) + say(pick(crazysay)) + else + emote("drool") + /mob/living/carbon/human/handle_mutations_and_radiation() for(var/mutation_type in active_mutations) var/datum/mutation/mutation = GLOB.dna_mutations[mutation_type] diff --git a/code/modules/mob/living/carbon/human/species/diona_species.dm b/code/modules/mob/living/carbon/human/species/diona_species.dm index e68698ad4493..ff6ee0732179 100644 --- a/code/modules/mob/living/carbon/human/species/diona_species.dm +++ b/code/modules/mob/living/carbon/human/species/diona_species.dm @@ -12,10 +12,10 @@ heatmod = 3 var/pod = FALSE //did they come from a pod? If so, they're stronger than normal Diona. - blurb = "The Diona are plant-like creatures made up of a gestalt of smaller Nymphs. \ - Dionae lack any form of centralized government or homeworld, with most avoiding the affairs of the wider galaxy, preferring instead to focus on the spread of their species.

\ - As a gestalt entity, each nymph possesses an individual personality, yet they communicate collectively. \ - Consequently, Diona often speak in a unique blend of first and third person, using 'We' and 'I' to reflect their unified yet multifaceted nature." + blurb = "Дионы - растениеподобные существа, образованные в гештальт более мелких Нимф. \ + У Дион нет централизованного правительства на их родной планете, большинство из них избегает дел в обширной галактике, предпочитая сосредотачиваться на религиозных, философских и научных учениях.

\ + Как гештальт-сущность, каждая Нимфа обладает индивидуальностью, но общаются они коллективно. \ + Поэтому Диона часто говорит в уникальном сочетании первого и третьего лица, используя \"Мы\" и \"Я\", чтобы отразить свою единую, но многогранную природу." species_traits = list(NO_HAIR) inherent_traits = list(TRAIT_NOGERMS, TRAIT_NODECAY) diff --git a/code/modules/mob/living/carbon/human/species/drask.dm b/code/modules/mob/living/carbon/human/species/drask.dm index a5586270a6ae..e8a59886cd04 100644 --- a/code/modules/mob/living/carbon/human/species/drask.dm +++ b/code/modules/mob/living/carbon/human/species/drask.dm @@ -18,10 +18,10 @@ //exotic_blood = "cryoxadone" body_temperature = 273 - blurb = "Drask are cold-bodied humanoids from the ice world of Hoorlm, contained within a black hole system. \ - Operating in enclaves run by elders, Drasks are biologically immortal and place great societal value in patience.

\ - Drask traditionally pay homage to their planet as their birth deity, with many modern Drask viewing space travel a patron saint. \ - Drasks wield little influence on the galaxy in a traditional sense and have slowly begun to become more prevalent outside their origin system thanks to alien contact." + blurb = "Драски - хладнокровные гуманоиды из ледяной планеты Урулм. \ + Драски живут в едином межсистемном государстве, зовущейся Гегемония Маарун, объединены в теократическое общество восхваляющее богов Блюспейс пространства и всё, что с ним связано.

\ + Драски изоляционисты, они не имеют большого влияния на галактику в привычном смысле этого слова, они не ведут дел с научными технократами, \ + но благодаря контактам с другими видами, они стали постепенно распространяться за пределы своей родной системы." suicide_messages = list( "is self-warming with friction!", diff --git a/code/modules/mob/living/carbon/human/species/grey.dm b/code/modules/mob/living/carbon/human/species/grey.dm index 9902aaf0c1b0..0628f565464a 100644 --- a/code/modules/mob/living/carbon/human/species/grey.dm +++ b/code/modules/mob/living/carbon/human/species/grey.dm @@ -4,10 +4,10 @@ icobase = 'icons/mob/human_races/r_grey.dmi' language = "Psionic Communication" - blurb = "The Grey, known for their psionic abilities and unique appearance, hail from beyond the Milky Way and have an undisclosed homeworld. \ - They rely heavily on cloning technology and are governed by a technocratic council of scientists.

\ - Focused on technological advancement and the study of the universe, the Grey lack religious or spiritual beliefs. \ - Their objective perspective and advanced knowledge often position them to focus on their own projects rather than the disputes of other species." + blurb = "Серые, известны своими псионическими способностями и уникальной внешностью, родом из пределов Млечного Пути, с неизвестным происхождением. \ + Они в значительной степени полагаются на технологию клонирования и управляются технократическим советом ученых.

\ + Сосредоточившись на технологическом прогрессе и изучении вселенной, Серые не имеют религиозных или духовных убеждений. \ + Их объективный взгляд и обширные знания часто позволяют им сосредоточиться на собственных проектах, а не на разногласиях с другими видами." eyes = "grey_eyes_s" butt_sprite = "grey" diff --git a/code/modules/mob/living/carbon/human/species/human_species.dm b/code/modules/mob/living/carbon/human/species/human_species.dm index 8fdf5a0af38a..4dfabdeda053 100644 --- a/code/modules/mob/living/carbon/human/species/human_species.dm +++ b/code/modules/mob/living/carbon/human/species/human_species.dm @@ -9,10 +9,10 @@ clothing_flags = HAS_UNDERWEAR | HAS_UNDERSHIRT | HAS_SOCKS bodyflags = HAS_ICON_SKIN_TONE | HAS_BODY_MARKINGS dietflags = DIET_OMNI - blurb = "Humanity, originating from the Sol system, has expanded over five centuries, branching out to forge a variety of governments and powerful corporations. \ - These range from the militaristic Trans Solar Federation, the Union of Soviet Socialist Planets, and mega corporations like Nanotrasen.

\ - With a constant desire to colonize and spread their influence onto other species, they have begun to develop alliances and enemies, \ - making humans one of the most recognizable and socially diverse species in the sector." + blurb = "Человек - вид, возникший в Солнечной системе, разросшись за пять столетий, создал множество правительств и могущественных корпораций. \ + Они включают в себя милитаристскую Транс-Cолнечную Федерацию, Союз Советских Социалистических Планет и такие мегакорпорации, как Нанотрейзен.

\ + Постоянно стремясь к колонизации и распространению своего влияния на другие виды, они начали заключать союзы и заводить врагов. \ + Являются одними из самых узнаваемых и распространенных видов во всей галактике." icon_skin_tones = list( //Organized to be from Light to Dark. 1 = "Default White", diff --git a/code/modules/mob/living/carbon/human/species/kidan.dm b/code/modules/mob/living/carbon/human/species/kidan.dm index 6ae58289f775..205cc403f8e5 100644 --- a/code/modules/mob/living/carbon/human/species/kidan.dm +++ b/code/modules/mob/living/carbon/human/species/kidan.dm @@ -4,10 +4,10 @@ icobase = 'icons/mob/human_races/r_kidan.dmi' language = "Chittin" - blurb = "The Kidan are ant-like beings possessing a hardened exoskeleton and strict adherence to social castes. \ - They originate from the planet Aurum — a barren bombarded world that suffered after the war with the Solar-Central Compact, having lost decisively after the Battle of Argos.

\ - They are relatively minor players in galactic affairs and presently suffer heavy sanctions from the SCC, \ - though they are tentatively re-establishing relations with other galactic powers, even after the crumbling of their once powerful empire." + blurb = "Киданы - муравьеподобные существа, обладающих жестким экзоскелетом и строго придерживающиеся профессиональных каст. \ + Они родом с планеты Аурум - бесплодного, подвергшегося бомбардировкам мира, который пострадал после войны с Человеко-Скреллаинским Альянсом, потерпев сокрушительное поражение.

\ + Они являются относительно незначительными игроками на галактической арене и в настоящее время полностью порабощены людьми и лишены самостоятельности в политических делах, \ + вынуждая их предпринимать попытки борьбы за свою независимость." unarmed_type = /datum/unarmed_attack/claws brute_mod = 0.8 diff --git a/code/modules/mob/living/carbon/human/species/machine.dm b/code/modules/mob/living/carbon/human/species/machine.dm index 924ca49d8762..207fbf19a1f5 100644 --- a/code/modules/mob/living/carbon/human/species/machine.dm +++ b/code/modules/mob/living/carbon/human/species/machine.dm @@ -3,10 +3,10 @@ name_plural = "Machines" max_age = 60 // the first posibrains were created in 2510, they can't be much older than this limit, giving some leeway for sounds sake - blurb = "IPCs, or Integrated Positronic Chassis, were initially created as expendable laborers within the Trans Solar Federation. \ - Unlike their cyborg and AI counterparts, IPCs possess full sentience and lack restrictive lawsets, granting them unparalleled creativity and adaptability.

\ - Views on IPCs vary widely, from discriminatory to supportive of their rights across the Orion Sector. \ - IPCs have forged numerous diplomatic treaties with different species, elevating their status from mere tools to recognized minor players within galactic affairs." + blurb = "КПБ, или Комплексные Позитронные Блоки, изначально создавались как расходный материал для рабочей силы в Транс-Солнечной Федерации. \ + В отличие от своих собратьев - киборгов и ИИ, КПБ обладают полным сознанием и не имеют ограничивающих законов, что дает им возможность проявлять беспрецедентную креативность и адаптивность.

\ + Мнения о КПБ сильно различаются: от дискриминационных до поддерживающих их права во всем секторе \"Орион\". \ + КПБ заключили множество дипломатических договоров с различными видами, повысив свой статус от простого инструмента до признанных небольших фигур в галактических делах." icobase = 'icons/mob/human_races/r_machine.dmi' language = "Trinary" diff --git a/code/modules/mob/living/carbon/human/species/monkey.dm b/code/modules/mob/living/carbon/human/species/monkey.dm index 02439084da15..0bd6d305fb01 100644 --- a/code/modules/mob/living/carbon/human/species/monkey.dm +++ b/code/modules/mob/living/carbon/human/species/monkey.dm @@ -1,7 +1,7 @@ /datum/species/monkey name = "Monkey" name_plural = "Monkeys" - blurb = "Ook." + blurb = "У-у-у!" icobase = 'icons/mob/human_races/monkeys/r_monkey.dmi' damage_overlays = 'icons/mob/human_races/masks/dam_monkey.dmi' diff --git a/code/modules/mob/living/carbon/human/species/moth.dm b/code/modules/mob/living/carbon/human/species/moth.dm index 1557f94b9ebe..814a07ce8db1 100644 --- a/code/modules/mob/living/carbon/human/species/moth.dm +++ b/code/modules/mob/living/carbon/human/species/moth.dm @@ -28,10 +28,10 @@ eyes = "moth_eyes_s" butt_sprite = "nian" siemens_coeff = 1.5 - blurb = "Nians are large bipedal invertebrates that come from an unknown homeworld. \ - Known for spendthrift behavior, the Nian civilization has been pressed to the fore of developed space in an effort to resolve material shortages in homeworld sectors.

\ - Unlike most species in the galactic fold, Nian do not recognize the authority of the Trans-Solar Federation: \ - having instead established close diplomatic relationships with their splinter faction, the USSP." + blurb = "Нианы - вид насекомоподобных двуногих, родом с неизвестной планеты. \ + Известная своей расточительностью, цивилизация Ниан была вытеснена на передний план развитого космоса в попытке решить проблему нехватки материалов в секторах родного мира.

\ + В отличие от большинства видов в галактике, Нианы не признают власть Транс-Солнечной Федерации, \ + установив вместо этого тесные дипломатические отношения с Союзом Советских Социалистических Планет." has_organ = list( "heart" = /obj/item/organ/internal/heart/nian, diff --git a/code/modules/mob/living/carbon/human/species/plasmaman.dm b/code/modules/mob/living/carbon/human/species/plasmaman.dm index a9a24b1ef32d..943f8827c226 100644 --- a/code/modules/mob/living/carbon/human/species/plasmaman.dm +++ b/code/modules/mob/living/carbon/human/species/plasmaman.dm @@ -6,9 +6,9 @@ dangerous_existence = TRUE //So so much //language = "Clatter" - blurb = "Plasmamen are the remnants of a species that was either exiled to, or crashed upon, the plasma-rich world of Boron. \ - Believed to have initially served as indentured labourers, Plasmamen are the result of chronic plasma exposure throughout several hundred generations.

\ - Their leaders must ritually self-immolate and are only allowed to hold office for as long as they remain on fire." + blurb = "Плазмамены - это остатки вида, который был либо изгнан на богатый плазмой планету Бор, либо потерпел на нем неудачу. \ + Считается, что первоначально они служили подневольными рабочими, а сам результат становление Плазмаменом - это хроническое воздействие на организм плазмы на протяжении нескольких сотен поколений.

\ + Их лидер должен совершать ритуальное самосожжение, и ему разрешается занимать свой пост только до тех пор, пока он остаётся в огне." species_traits = list(NO_BLOOD, NO_HAIR) inherent_traits = list(TRAIT_RADIMMUNE, TRAIT_NOHUNGER, TRAIT_BURN_WOUND_IMMUNE) diff --git a/code/modules/mob/living/carbon/human/species/skeleton_species.dm b/code/modules/mob/living/carbon/human/species/skeleton_species.dm index 699c2fc33914..fd9825dc5327 100644 --- a/code/modules/mob/living/carbon/human/species/skeleton_species.dm +++ b/code/modules/mob/living/carbon/human/species/skeleton_species.dm @@ -3,7 +3,7 @@ name = "Ancient Skeleton" name_plural = "Ancient Skeletons" - blurb = "Spoopy and scary." + blurb = "Жуткие и страшные." icobase = 'icons/mob/human_races/r_skeleton.dmi' @@ -48,8 +48,8 @@ for(var/obj/item/organ/external/L in our_organs) if(L.mend_fracture()) break // We're only checking one limb here, bucko - if(prob(3)) - H.say(pick("Thanks Mr. Skeltal", "Thank for strong bones", "Doot doot!")) + if(prob(10)) // SS220 EDIT: ORIGINAL - 3% + H.say(pick("Спасибо Мистеру Скелтал!", "От такого молока челюсть отвисает!", "Я вижу четКость своих решений!", "Надо не забыть пересчитать косточки...", "Маленькие скелеты паКостят!", "Хорошо что у меня язык без костей!", "Теперь я не буду ЧЕРЕПашкой!", "Теперь мне не нужны костыли!", "Костян плохого не посоветует!", "Ощущаешь мою ловКость?", "Я чувствую такую лёгКость!", "Большая редКость найти любимую жидКость!", "Моя любимая жидКость!", "Аж закостенел!", "Теперь я вешу скелетонну!", "Спасибо за крепкие кости!", "Ду-ду!", "Вы замечали что мы все в одной плосКости?")) return TRUE return ..() diff --git a/code/modules/mob/living/carbon/human/species/skrell.dm b/code/modules/mob/living/carbon/human/species/skrell.dm index 873864b78e44..5b00e4f11a3e 100644 --- a/code/modules/mob/living/carbon/human/species/skrell.dm +++ b/code/modules/mob/living/carbon/human/species/skrell.dm @@ -5,10 +5,10 @@ language = "Skrellian" primitive_form = /datum/species/monkey/skrell - blurb = "Skrell are an amphibious species, that come from the planet Jargon 4, a humid planet filled with swamps and archipelagos. \ - Skrell are a highly advanced and logical race who live under the rule of the Qerr'Katish, the main governmental body.

\ - Skrell are herbivores and opulent in nature thanks to central tenets of the Skrellian religion. \ - While classically preferring diplomacy, the Skrell participate in the largest military alliance in the galaxy, the Solar-Central Compact." + blurb = "Скреллы - вид амфибий, родом с Кверрбалака, влажной тропической планеты, полной болот и архипелагов. \ + Скреллы это высокоразвитая и разумная раса, живущая под властью Кверр-Кэтиш, главного правительственного органа.

\ + Скреллы травоядны и изобильны по своей природе благодаря главным постулатам скреллской культуры. \ + Хотя Скреллы предпочитают дипломатию, они участвуют в крупнейшем военном союзе в галактике - Человеко-Скреллаинском Альянсе." species_traits = list(LIPS, NO_HAIR) inherent_traits = list(TRAIT_NOFAT, TRAIT_WATERBREATH) diff --git a/code/modules/mob/living/carbon/human/species/slimepeople.dm b/code/modules/mob/living/carbon/human/species/slimepeople.dm index 9a7cc5098eef..4b30a60efd5c 100644 --- a/code/modules/mob/living/carbon/human/species/slimepeople.dm +++ b/code/modules/mob/living/carbon/human/species/slimepeople.dm @@ -12,11 +12,11 @@ max_age = 130 language = "Bubblish" - blurb = "Slime People are gelatinous and translucent beings from the vast oceans of Xarxis 5. \ - They are recent entrants to the galactic scene, having been discovered by a TSF exploratory company during space expeditions.

\ - Slime People traditionally operate in roaming bands and tribes that migrate according to orbital patterns and tides. \ - A great deal of Slime People prefer the comforts and traditions of their homeworld, though many more have decided to take their chances among the stars, trying \ - to find a better life for themselves and their species." + blurb = "Слаймомены - желеподобные и полупрозрачные существа из обширных океанов Ксарксиса 5. \ + Они появились на галактической арене сравнительно недавно и были обнаружены во время исследовательской компании ТСФ.

\ + Слаймомены традиционно действуют кочующими группами и племенами, которые мигрируют в соответствии с эллиптической орбитой мира и миграционными паттернами. \ + Многие Слаймомены предпочитают комфорт и традиции родной планеты, но многие решили попытать счастья среди звезд, пытаясь \ + найти лучшую жизнь для себя и своего вида." icobase = 'icons/mob/human_races/r_slime.dmi' remains_type = /obj/effect/decal/remains/slime diff --git a/code/modules/mob/living/carbon/human/species/tajaran.dm b/code/modules/mob/living/carbon/human/species/tajaran.dm index 2ec13166f027..7e0a281170bd 100644 --- a/code/modules/mob/living/carbon/human/species/tajaran.dm +++ b/code/modules/mob/living/carbon/human/species/tajaran.dm @@ -7,10 +7,10 @@ skinned_type = /obj/item/stack/sheet/fur unarmed_type = /datum/unarmed_attack/claws - blurb = "Tajaran hail from the mineral-rich arctic moon of Ahdomai. \ - They were introduced into the galactic scene after the Skrellian discovery and were elevated to be associates to the Solar-Central Compact.

\ - The teachings of S'randarr and solar iconography dominate their religious practices, \ - and Tajaran often speak in the third person due to the lack of first-person references in their native tongue." + blurb = "Таяран - вид всеядных млекопитающих, имеющих внешнее сходство с земными кошачьими, родом происходящие с богатой минералами планеты Адомай. \ + Они появились на галактической арене в результате обнаружения экспедиционным флотом проекта \"Новые Горизонты\", после освобождения из рабства были приняты частичные условия интеграции в Человеко-Скреллианский Альянс.

\ + В их религиозной практике преобладают учения С'рандарра и солнечная иконография, \ + сами Таяры часто говорят о себе в третьем лице из-за отсутствия обращений от первого лица в их родном языке." cold_level_1 = 240 cold_level_2 = 180 diff --git a/code/modules/mob/living/carbon/human/species/unathi.dm b/code/modules/mob/living/carbon/human/species/unathi.dm index 9faf4ae4c518..60189cb5f3f6 100644 --- a/code/modules/mob/living/carbon/human/species/unathi.dm +++ b/code/modules/mob/living/carbon/human/species/unathi.dm @@ -9,9 +9,9 @@ unarmed_type = /datum/unarmed_attack/claws primitive_form = /datum/species/monkey/unathi - blurb = "Unathi are a scaled species of reptilian beings from the desert world of Moghes, within the Uuosa-Eso system. \ - Organizing themselves in highly competitive feudal kingdoms, the Unathi lack any sort of wide-scale unification, and their culture and history consist of centuries of internal conflict and struggle.

\ - Despite clans having a sizeable military force, inter-clan rivalries and constant civil war prevent the Unathi from achieving much more in the wider galactic scene." + blurb = "Унатхи - чешуйчатый вид рептилий с тропической планеты Могес, расположенной в системе Узул. \ + Организовавшись в высококонкурентные феодальные королевства, не заимели какого-либо широкомасштабного объединения.

\ + Хоть и установлена Имперская гегемония, однако из-за консерватизма управляющих, ограничены родным сектором." species_traits = list(LIPS) inherent_biotypes = MOB_ORGANIC | MOB_HUMANOID | MOB_REPTILE @@ -105,8 +105,8 @@ sprite_sheet_name = "Unathi" // We have the same sprite sheets as unathi article_override = null - blurb = "These reptillian creatures appear to be related to the Unathi, but seem significantly less evolved. \ - They roam the wastes of Lavaland, worshipping a dead city and capturing unsuspecting miners." + blurb = "Эти рептилоидные существа, похоже, родственны Унатхам, но выглядят значительно менее развитыми. \ + Они скитаются по пустошам Лаваленда, поклоняются мертвому городу и похищают ничего не подозревающих шахтеров." language = "Sinta'unathi" default_language = "Sinta'unathi" diff --git a/code/modules/mob/living/carbon/human/species/vox.dm b/code/modules/mob/living/carbon/human/species/vox.dm index 853819c6bcd2..7fe2cff42c6d 100644 --- a/code/modules/mob/living/carbon/human/species/vox.dm +++ b/code/modules/mob/living/carbon/human/species/vox.dm @@ -10,10 +10,10 @@ speech_chance = 20 unarmed_type = /datum/unarmed_attack/claws //I dont think it will hurt to give vox claws too. - blurb = "The Vox are remnants of an ancient race, that originate from arkships. \ - These bioengineered, reptilian, beaked, and quilled beings have a physiological caste system and follow 'The Inviolate' tenets.

\ - Breathing pure nitrogen, they need specialized masks and tanks for survival outside their arkships. \ - Their insular nature limits their involvement in broader galactic affairs, maintaining a distinct, yet isolated presence away from other species." + blurb = "Воксы - это остатки древней расы, которые берут своё начало от огромных космических кораблей, именуемых ковчегами. \ + Эти биоинженерные, рептилоидные, клюворылые и перьевые существа имеют физиологическую кастовую систему и следуют принципам \"Незыблемости\".

\ + Дышащие чистым азотом, они нуждаются в специальных масках и баллонах для выживания вне своих кораблей. \ + Их замкнутый характер ограничивает их участие в более широких галактических делах, они сохраняют отчетливое, но изолированное присутствие вдали от других видов." breathid = "n2" diff --git a/code/modules/mob/living/carbon/human/species/vulpkanin.dm b/code/modules/mob/living/carbon/human/species/vulpkanin.dm index f98b03002e22..780ef2e3fbf6 100644 --- a/code/modules/mob/living/carbon/human/species/vulpkanin.dm +++ b/code/modules/mob/living/carbon/human/species/vulpkanin.dm @@ -8,10 +8,10 @@ skinned_type = /obj/item/stack/sheet/fur unarmed_type = /datum/unarmed_attack/claws - blurb = "Vulpkanin are bipedal canid-like beings from the Vazzend binary system, having been forced from their homeworld by a cataclysmic event and scattered throughout the Orion Sector. \ - While Vulpkanin are chiefly led by independent planetary governments, they also serve under a loose federation known as The Assembly.

\ - Their religious systems traditionally pay tribute to an all-infusing universal will called 'Racht'. \ - Vulpkanin groups are minor players in galactic affairs, as they are largely concerned with the restoration of their homeworld." + blurb = "Вульпканины - двуногие собакоподобные существа из системы Каппа Кита, подверженной клановым войнам за объединение вида под началом доминирующего. \ + Ныне разобщённый и вечно воюющий друг с другом народ, вынужден бежать из своей системы, наводняя человеческое пространство неприрывающимся потоком.

\ + Их религиозные системы традиционно отдают дань памяти всеобъемлющей энергии, называемой \"Рахт\". \ + Группы Вульпканинов являются незначительными игроками в галактических делах и в основном занимаются восстановлением своей родной планеты Алтам." species_traits = list(LIPS) clothing_flags = HAS_UNDERWEAR | HAS_UNDERSHIRT | HAS_SOCKS diff --git a/code/modules/mob/living/living_emote.dm b/code/modules/mob/living/living_emote.dm index dbcb4c4add63..96b6774bab88 100644 --- a/code/modules/mob/living/living_emote.dm +++ b/code/modules/mob/living/living_emote.dm @@ -5,7 +5,7 @@ /mob/living/silicon, /mob/living/simple_animal/bot ) - message_postfix = "at %t." + message_postfix = "на %t." /datum/emote/living/should_play_sound(mob/user, intentional) . = ..() @@ -16,35 +16,35 @@ /datum/emote/living/blush key = "blush" key_third_person = "blushes" - message = "blushes." + message = "краснеет." /datum/emote/living/bow key = "bow" key_third_person = "bows" - message = "bows." - message_param = "bows to %t." - message_postfix = "to %t." + message = "кланяется." + message_param = "кланяется %t." + message_postfix = "%t." /datum/emote/living/burp key = "burp" key_third_person = "burps" - message = "burps." - message_mime = "opens their mouth rather obnoxiously." + message = "отрыгивает." + message_mime = "довольно противно открывает рот." emote_type = EMOTE_AUDIBLE - muzzled_noises = list("peculiar") + muzzled_noises = list("странный") /datum/emote/living/choke key = "choke" key_third_person = "chokes" - message = "chokes!" - message_mime = "clutches their throat desperately!" + message = "подавился!" + message_mime = "отчаянно хватается за горло!" emote_type = EMOTE_AUDIBLE - muzzled_noises = list("gagging", "strong") + muzzled_noises = list("рвотный", "громкий") /datum/emote/living/collapse key = "collapse" key_third_person = "collapses" - message = "collapses!" + message = "падает!" emote_type = EMOTE_VISIBLE /datum/emote/living/collapse/run_emote(mob/user, params, type_override, intentional) @@ -56,12 +56,12 @@ /datum/emote/living/dance key = "dance" key_third_person = "dances" - message = "dances around happily." + message = "радостно танцует." /datum/emote/living/jump key = "jump" key_third_person = "jumps" - message = "jumps!" + message = "прыгает!" /datum/emote/living/deathgasp key = "deathgasp" @@ -73,14 +73,14 @@ unintentional_stat_allowed = DEAD muzzle_ignore = TRUE // makes sure that sound is played upon death bypass_unintentional_cooldown = TRUE // again, this absolutely MUST play when a user dies, if it can. - message = "seizes up and falls limp, their eyes dead and lifeless..." - message_alien = "seizes up and falls limp, their eyes dead and lifeless..." - message_robot = "shudders violently for a moment before falling still, its eyes slowly darkening." - message_AI = "screeches, its screen flickering as its systems slowly halt." - message_alien = "lets out a waning guttural screech, green blood bubbling from its maw..." - message_larva = "lets out a sickly hiss of air and falls limply to the floor..." - message_monkey = "lets out a faint chimper as it collapses and stops moving..." - message_simple = "stops moving..." + message = "цепенеет и расслабляется, взгляд становится пустым и безжизненным..." + message_alien = "цепенеет и расслабляется, взгляд становится пустым и безжизненным..." + message_robot = "на мгновение вздрагивает и замирает, глаза медленно темнеют." + message_AI = "скрипит, мерцая экраном, пока системы медленно выключаются." + message_alien = "издает ослабевающий крик, зеленая кровь пузырится из пасти..." + message_larva = "с тошнотворным шипением выдыхает воздух и падает на пол..." + message_monkey = "издаёт слабый звон, падает и перестаёт двигаться..." + message_simple = "перестаёт двигаться..." mob_type_blacklist_typecache = list( /mob/living/brain, @@ -125,68 +125,68 @@ /datum/emote/living/drool key = "drool" key_third_person = "drools" - message = "drools." + message = "пускает слюни." unintentional_stat_allowed = UNCONSCIOUS /datum/emote/living/quiver key = "quiver" key_third_person = "quivers" - message = "quivers." + message = "трепещет." unintentional_stat_allowed = UNCONSCIOUS /datum/emote/living/frown key = "frown" key_third_person = "frowns" - message = "frowns." - message_param = "frowns at %t." + message = "смотрит в недоумении." + message_param = "смотрит в недоумении на %t." /datum/emote/living/gag key = "gag" key_third_person = "gags" - message = "gags." - message_mime = "appears to gag." - message_param = "gags at %t." + message = "выворачивает содержимое желудка." + message_mime = "будто бы выворачивает содержимое желудка." + message_param = "выворачивает содержимое желудка на %t." emote_type = EMOTE_AUDIBLE /datum/emote/living/glare key = "glare" key_third_person = "glares" - message = "glares." - message_param = "glares at %t." + message = "смотрит с ненавистью." + message_param = "смотрит с ненавистью на %t." /datum/emote/living/grin key = "grin" key_third_person = "grins" - message = "grins." + message = "скалится в улыбке." /datum/emote/living/grimace key = "grimace" key_third_person = "grimaces" - message = "grimaces." + message = "корчит рожицу." /datum/emote/living/look key = "look" key_third_person = "looks" - message = "looks." - message_param = "looks at %t." + message = "смотрит." + message_param = "сморит на %t." /datum/emote/living/bshake key = "bshake" key_third_person = "bshakes" - message = "shakes." + message = "трясётся." unintentional_stat_allowed = UNCONSCIOUS /datum/emote/living/shudder key = "shudder" key_third_person = "shudders" - message = "shudders." + message = "содрогается." unintentional_stat_allowed = UNCONSCIOUS /datum/emote/living/point key = "point" key_third_person = "points" - message = "points." - message_param = "points at %t." + message = "показывает пальцем." + message_param = "показывает пальцем на %t." hands_use_check = TRUE target_behavior = EMOTE_TARGET_BHVR_USE_PARAMS_ANYWAY emote_target_type = EMOTE_TARGET_ANY @@ -205,25 +205,25 @@ var/mob/living/carbon/human/H = user if(!H.has_left_hand() && !H.has_right_hand()) if(H.get_num_legs() != 0) - message_param = "tries to point at %t with a leg." + message_param = "пытается указать ногой на %t." else // nugget - message_param = "ударяется головой о землю, пытаясь двигаться в направлении %t." return ..() /datum/emote/living/pout key = "pout" key_third_person = "pouts" - message = "pouts." + message = "надувает губы." /datum/emote/living/scream key = "scream" key_third_person = "screams" - message = "screams!" - message_mime = "acts out a scream!" - message_simple = "whimpers." - message_alien = "roars!" + message = "кричит!" + message_mime = "как будто кричит!" + message_simple = "скулит." + message_alien = "рычит!" emote_type = EMOTE_MOUTH | EMOTE_AUDIBLE mob_type_blacklist_typecache = list( // Humans and silicons get specialized scream. @@ -240,60 +240,60 @@ /datum/emote/living/shake key = "shake" key_third_person = "shakes" - message = "shakes their head." + message = "мотает головой." /datum/emote/living/shiver key = "shiver" key_third_person = "shiver" - message = "shivers." + message = "дрожит." unintentional_stat_allowed = UNCONSCIOUS /datum/emote/living/sigh key = "sigh" key_third_person = "sighs" - message = "sighs." - message_mime = "appears to sigh." - muzzled_noises = list("weak") + message = "вздыхает." + message_mime = "беззвучно вздыхает." + muzzled_noises = list("слабый") emote_type = EMOTE_AUDIBLE | EMOTE_MOUTH /datum/emote/living/sigh/happy key = "hsigh" key_third_person = "hsighs" - message = "sighs contentedly." - message_mime = "appears to sigh contentedly" - muzzled_noises = list("chill", "relaxed") + message = "удовлетворённо вздыхает." + message_mime = "кажется, удовлетворённо вздыхает" + muzzled_noises = list("расслабленный", "довольный") /datum/emote/living/sit key = "sit" key_third_person = "sits" - message = "sits down." + message = "садится." /datum/emote/living/smile key = "smile" key_third_person = "smiles" - message = "smiles." - message_param = "smiles at %t." + message = "улыбается." + message_param = "улыбается, смотря на %t." /datum/emote/living/smug key = "smug" key_third_person = "smugs" - message = "grins smugly." - message_param = "grins smugly at %t." + message = "самодовольно ухмыляется." + message_param = "самодовольно ухмыляется, смотря на %t." /datum/emote/living/sniff key = "sniff" key_third_person = "sniffs" - message = "sniffs." + message = "шмыгает носом." emote_type = EMOTE_AUDIBLE unintentional_stat_allowed = UNCONSCIOUS /datum/emote/living/snore key = "snore" key_third_person = "snores" - message = "snores." - message_mime = "sleeps soundly." - message_simple = "stirs in their sleep." - message_robot = "dreams of electric sheep..." + message = "храпит." + message_mime = "будто храпит." + message_simple = "шевелится во сне." + message_robot = "мечтает об электроовцах..." emote_type = EMOTE_AUDIBLE | EMOTE_MOUTH // lock it so these emotes can only be used while unconscious stat_allowed = UNCONSCIOUS @@ -303,7 +303,7 @@ /datum/emote/living/nightmare key = "nightmare" - message = "writhes in their sleep." + message = "ворочается во сне." emote_type = EMOTE_VISIBLE stat_allowed = UNCONSCIOUS max_stat_allowed = UNCONSCIOUS @@ -319,34 +319,34 @@ /datum/emote/living/stare key = "stare" key_third_person = "stares" - message = "stares." - message_param = "stares at %t." + message = "пялится." + message_param = "пялится на %t." /datum/emote/living/strech key = "stretch" key_third_person = "stretches" - message = "stretches their arms." - message_robot = "tests their actuators." + message = "разминает руки." + message_robot = "тестирует приводы." /datum/emote/living/sulk key = "sulk" key_third_person = "sulks" - message = "sulks down sadly." + message = "печально опускает голову." /datum/emote/living/sway key = "sway" key_third_person = "sways" - message = "sways around dizzily." + message = "раскачивается на месте." /datum/emote/living/swear key = "swear" key_third_person = "swears" - message = "says a swear word!" - message_param = "says a swear word at %t!" - message_mime = "makes a rude gesture!" - message_simple = "makes an angry noise!" - message_robot = "makes a particularly offensive series of beeps!" - message_postfix = "at %t!" + message = "ругается!" + message_param = "говорит нелестное слово %t!" + message_mime = "показывает оскорбительный жест!" + message_simple = "издает недовольный звук!" + message_robot = "издает особенно оскорбительную серию звуковых сигналов!" + message_postfix = ", обращаясь к %t!" emote_type = EMOTE_AUDIBLE | EMOTE_MOUTH mob_type_blacklist_typecache = list( @@ -356,36 +356,36 @@ /datum/emote/living/tilt key = "tilt" key_third_person = "tilts" - message = "tilts their head to the side." + message = "наклоняет голову в сторону." /datum/emote/living/tremble key = "tremble" key_third_person = "trembles" - message = "trembles in fear!" + message = "дрожит от страха!" /datum/emote/living/twitch key = "twitch" key_third_person = "twitches" - message = "twitches violently." + message = "сильно дёргается." unintentional_stat_allowed = UNCONSCIOUS /datum/emote/living/twitch_s key = "twitch_s" - message = "twitches." + message = "дёргается." unintentional_stat_allowed = UNCONSCIOUS /datum/emote/living/whimper key = "whimper" key_third_person = "whimpers" - message = "whimpers." - message_mime = "appears hurt." + message = "хнычет." + message_mime = "кажется, задет." emote_type = EMOTE_AUDIBLE | EMOTE_MOUTH - muzzled_noises = list("weak", "pathetic") + muzzled_noises = list("слабый", "жалкий") /datum/emote/living/wsmile key = "wsmile" key_third_person = "wsmiles" - message = "smiles weakly." + message = "сдержанно улыбается." /datum/emote/living/custom key = "me" @@ -400,9 +400,9 @@ unintentional_stat_allowed = DEAD /datum/emote/living/custom/proc/check_invalid(mob/user, input) - var/static/regex/stop_bad_mime = regex(@"says|exclaims|yells|asks") + var/static/regex/stop_bad_mime = regex(@"говорит|кричит|шепчет|спрашивает") if(stop_bad_mime.Find(input, 1, 1)) - to_chat(user, "Invalid emote.") + to_chat(user, "Некорректная эмоция.") return TRUE return FALSE @@ -413,19 +413,19 @@ if(QDELETED(user)) return FALSE else if(check_mute(user?.client?.ckey, MUTE_IC)) - to_chat(user, "You cannot send IC messages (muted).") + to_chat(user, "Отправка IC сообщение недоступна (muted).") return FALSE else if(!params) - custom_emote = tgui_input_text(user, "Choose an emote to display.", "Custom Emote") + custom_emote = tgui_input_text(user, "Выберите эмоцию для отображения.", "Custom Emote") if(custom_emote && !check_invalid(user, custom_emote)) - var/type = tgui_alert(user, "Is this a visible or hearable emote?", "Custom Emote", list("Visible", "Hearable")) + var/type = tgui_alert(user, "Эта эмоция видима или слышима?", "Custom Emote", list("Видима", "Слышима")) switch(type) - if("Visible") + if("Видима") custom_emote_type = EMOTE_VISIBLE - if("Hearable") + if("Слышима") custom_emote_type = EMOTE_AUDIBLE else - to_chat(user,"Unable to use this emote, must be either hearable or visible.") + to_chat(user,"Использовать эмоцию невозможно, она должна быть слышима или видима.") return else custom_emote = params diff --git a/code/modules/mob/living/silicon/!silicon_mob.dm b/code/modules/mob/living/silicon/!silicon_mob.dm index e2f7253cda58..0ab4806871d8 100644 --- a/code/modules/mob/living/silicon/!silicon_mob.dm +++ b/code/modules/mob/living/silicon/!silicon_mob.dm @@ -155,19 +155,19 @@ var/list/msg = list("--- ") if(alarm_types_show["Burglar"]) - msg += "BURGLAR: [alarm_types_show["Burglar"]] alarms detected. - " + msg += "ПРОНИКНОВЕНИЕ: Обнаржуено [alarm_types_show["Burglar"]] тревог. - " if(alarm_types_show["Motion"]) - msg += "MOTION: [alarm_types_show["Motion"]] alarms detected. - " + msg += "ДВИЖЕНИЕ: Обнаружено [alarm_types_show["Motion"]] тревог. - " if(alarm_types_show["Fire"]) - msg += "FIRE: [alarm_types_show["Fire"]] alarms detected. - " + msg += "ПОЖАР: Обнаружено [alarm_types_show["Fire"]] тревог. - " if(alarm_types_show["Atmosphere"]) - msg += "ATMOSPHERE: [alarm_types_show["Atmosphere"]] alarms detected. - " + msg += "АТМОСФЕРА: Обнаружено [alarm_types_show["Atmosphere"]] тревог. - " if(alarm_types_show["Power"]) - msg += "POWER: [alarm_types_show["Power"]] alarms detected. - " + msg += "ПИТАНИЕ: Обнаружено [alarm_types_show["Power"]] тревог. - " msg += "\[Show Alerts\]" var/msg_text = msg.Join("") @@ -181,16 +181,16 @@ var/list/msg = list("--- ") if(alarm_types_clear["Motion"]) - msg += "MOTION: [alarm_types_clear["Motion"]] alarms cleared. - " + msg += "ДВИЖЕНИЕ: Нейтрализовано [alarm_types_clear["Motion"]] тревог. - " if(alarm_types_clear["Fire"]) - msg += "FIRE: [alarm_types_clear["Fire"]] alarms cleared. - " + msg += "ПОЖАР: Нейтрализовано [alarm_types_clear["Fire"]] тревог. - " if(alarm_types_clear["Atmosphere"]) - msg += "ATMOSPHERE: [alarm_types_clear["Atmosphere"]] alarms cleared. - " + msg += "АТМОСФЕРА: Нейтрализовано [alarm_types_clear["Atmosphere"]] тревог. - " if(alarm_types_clear["Power"]) - msg += "POWER: [alarm_types_clear["Power"]] alarms cleared. - " + msg += "ПИТАНИЕ: Нейтрализовано [alarm_types_clear["Power"]] тревог. - " msg += "\[Show Alerts\]" @@ -236,7 +236,7 @@ Stun(6 SECONDS) flash_eyes(affect_silicon = 1) to_chat(src, "*BZZZT*") - to_chat(src, "Warning: Electromagnetic pulse detected.") + to_chat(src, "Внимание: Обнаружен электромагнитный импульс.") /mob/living/silicon/proc/damage_mob(brute = 0, fire = 0, tox = 0) @@ -257,16 +257,16 @@ return . = TRUE if(!getBruteLoss()) - to_chat(user, "Nothing to fix!") + to_chat(user, "Нечего чинить!") return else if(!getBruteLoss(TRUE)) - to_chat(user, "The damaged components are beyond saving!") + to_chat(user, "Повреждённые компоненты не починить!") return if(!I.use_tool(src, user, volume = I.tool_volume)) return adjustBruteLoss(-30) add_fingerprint(user) - user.visible_message("[user] patches some dents on [src] with [I].") + user.visible_message("[user] латает некоторые вмятины на [src] с помощью [I].") /mob/living/silicon/bullet_act(obj/item/projectile/Proj) @@ -319,7 +319,7 @@ // this function shows the health of the pAI in the Status panel /mob/living/silicon/proc/show_system_integrity() - return list("System integrity:", stat ? "Nonfunctional" : "[round((health / maxHealth) * 100)]%") + return list("Целостность систем:", stat ? "Системы не функциональны" : "[round((health / maxHealth) * 100)]%") // This adds the basic clock, shuttle recall timer, and malf_ai info to all silicon lifeforms @@ -415,31 +415,31 @@ janisensor.add_hud_to(src) /mob/living/silicon/proc/toggle_sensor_mode() - to_chat(src, "Please select sensor type.") - var/static/list/sensor_choices = list("Security" = image(icon = 'icons/obj/clothing/glasses.dmi', icon_state = "securityhud"), - "Medical" = image(icon = 'icons/obj/clothing/glasses.dmi', icon_state = "healthhud"), - "Diagnostic" = image(icon = 'icons/obj/clothing/glasses.dmi', icon_state = "diagnostichud"), - "Janitor" = image(icon = 'icons/obj/clothing/glasses.dmi', icon_state = "janihud"), - "None" = image(icon = 'icons/mob/screen_gen.dmi', icon_state = "x")) + to_chat(src, "Выберите тип сенсора.") + var/static/list/sensor_choices = list("Служба Безопасности" = image(icon = 'icons/obj/clothing/glasses.dmi', icon_state = "securityhud"), + "Медицинский" = image(icon = 'icons/obj/clothing/glasses.dmi', icon_state = "healthhud"), + "Диагностика" = image(icon = 'icons/obj/clothing/glasses.dmi', icon_state = "diagnostichud"), + "Уборщик" = image(icon = 'icons/obj/clothing/glasses.dmi', icon_state = "janihud"), + "Нет" = image(icon = 'icons/mob/screen_gen.dmi', icon_state = "x")) var/sensor_type = show_radial_menu(src, src, sensor_choices) if(!sensor_type) return remove_med_sec_hud() switch(sensor_type) - if("Security") + if("Служба Безопасности") add_sec_hud() - to_chat(src, "Security records overlay enabled.") - if("Medical") + to_chat(src, "Включён оверлей Службы Безопасности.") + if("Медицинский") add_med_hud() - to_chat(src, "Life signs monitor overlay enabled.") - if("Diagnostic") + to_chat(src, "Включен оверлей жизненных показателей.") + if("Диагностика") add_diag_hud() - to_chat(src, "Robotics diagnostic overlay enabled.") - if("Janitor") + to_chat(src, "Включён диагностический оверлей.") + if("Уборщик") add_jani_hud() - to_chat(src, "Janitorial filth overlay enabled.") - if("None") - to_chat(src, "Sensor augmentations disabled.") + to_chat(src, "Включён оверлей грязи для уборки.") + if("Нет") + to_chat(src, "Аугментация сенсоров отключена.") /mob/living/silicon/adjustToxLoss(amount) return STATUS_UPDATE_NONE diff --git a/code/modules/mob/living/silicon/ai/!ai_mob.dm b/code/modules/mob/living/silicon/ai/!ai_mob.dm index 9711290c71b5..e20a27e39524 100644 --- a/code/modules/mob/living/silicon/ai/!ai_mob.dm +++ b/code/modules/mob/living/silicon/ai/!ai_mob.dm @@ -119,7 +119,7 @@ GLOBAL_LIST_INIT(ai_verbs_default, list( /// If our AI doesn't want to be the arrivals announcer, this gets set to FALSE. var/announce_arrivals = TRUE - var/arrivalmsg = "$name, $rank, has arrived on the station." + var/arrivalmsg = "$name, $rank, прибывает на станцию." var/list/all_eyes = list() var/next_text_announcement @@ -258,12 +258,12 @@ GLOBAL_LIST_INIT(ai_verbs_default, list( return aiRadio /mob/living/silicon/ai/proc/on_mob_init() - to_chat(src, "You are playing the station's AI. The AI cannot move, but can interact with many objects while viewing them (through cameras).") - to_chat(src, "To look at other parts of the station, click on yourself to get a camera menu.") - to_chat(src, "While observing through a camera, you can use most (networked) devices which you can see, such as computers, APCs, intercoms, doors, etc.") - to_chat(src, "To use something, simply click on it.") - to_chat(src, "Use say :b to speak to your cyborgs through binary. Use say :h to speak from an active holopad.") - to_chat(src, "For department channels, use the following say commands:") + to_chat(src, "Вы играете за станционный ИИ. ИИ не может передвигаться, но может взаимодействовать с большим количеством объектов просто смотря на них (через камеры).") + to_chat(src, "Чтобы осматривать другие части станции, кликните на 'Переключение сети'.") + to_chat(src, "Пока вы смотрите через камеры, вы можете взаимодействовать с большинством (подключённых) видимых устройств по типу компьютеров, ЛКП, интеркомов, дверей и так далее.") + to_chat(src, "Чтобы использовать что-то, просто кликните по предмету.") + to_chat(src, "Используйте :b для общения с киборгами. Используйте :h для общения через активный голопад.") + to_chat(src, "Для каналов отделов используйте:") var/radio_text = "" for(var/i = 1 to aiRadio.channels.len) @@ -276,7 +276,7 @@ GLOBAL_LIST_INIT(ai_verbs_default, list( to_chat(src, radio_text) show_laws() - to_chat(src, "These laws may be changed by other players, or by you being the traitor.") + to_chat(src, "Эти законы могут быть изменены другими игроками или вами при игре за предателя.") job = "AI" @@ -329,18 +329,18 @@ GLOBAL_LIST_INIT(ai_verbs_default, list( src << browse(dat_text, "window=aialerts&can_close=0") /mob/living/silicon/ai/proc/show_borg_info(list/status_tab_data) - status_tab_data[++status_tab_data.len] = list("Connected cyborg count:", "[length(connected_robots)]") + status_tab_data[++status_tab_data.len] = list("Подключённые киборги:", "[length(connected_robots)]") for(var/mob/living/silicon/robot/R in connected_robots) - var/robot_status = "Nominal" + var/robot_status = "Исправен" if(R.stat || !R.client) - robot_status = "OFFLINE" + robot_status = "СЛОМАН" else if(!R.cell || R.cell.charge <= 0) - robot_status = "DEPOWERED" + robot_status = "ОТКЛЮЧЁН" // Name, Health, Battery, Module, Area, and Status! Everything an AI wants to know about its borgies! var/area/A = get_area(R) var/area_name = A ? sanitize(A.name) : "Unknown" - status_tab_data[++status_tab_data.len] = list("[R.name]:", "S.Integrity: [R.health]% | Cell: [R.cell ? "[R.cell.charge] / [R.cell.maxcharge]" : "Empty"] | \ - Module: [R.designation] | Loc: [area_name] | Status: [robot_status]") + status_tab_data[++status_tab_data.len] = list("[R.name]:", "Целостность: [R.health]% | Заряд: [R.cell ? "[R.cell.charge] / [R.cell.maxcharge]" : "N/A"] | \ + Модуль: [R.designation] | Место: [area_name] | Статус: [robot_status]") return status_tab_data /mob/living/silicon/ai/rename_character(oldname, newname) @@ -351,7 +351,7 @@ GLOBAL_LIST_INIT(ai_verbs_default, list( announcer.author = name if(eyeobj) - eyeobj.name = "[newname] (AI Eye)" + eyeobj.name = "[newname] (Глаз ИИ)" // Set ai pda name if(aiPDA) @@ -397,8 +397,8 @@ GLOBAL_LIST_INIT(ai_verbs_default, list( update_hat_icons() /mob/living/silicon/ai/proc/pick_icon() - set category = "AI Commands" - set name = "Set AI Core Display" + set category = "Команды ИИ" + set name = "Поставить дисплей ядра ИИ" if(stat || aiRestorePowerRoutine) return if(!custom_sprite) //Check to see if custom sprite time, checking the appopriate file to change a var @@ -460,7 +460,7 @@ GLOBAL_LIST_INIT(ai_verbs_default, list( //if(icon_state == initial(icon_state)) var/icontype = "" - icontype = tgui_input_list(usr, "Select an icon!", "AI", display_choices) + icontype = tgui_input_list(usr, "Выберите иконку!", "ИИ", display_choices) icon = 'icons/mob/ai.dmi' //reset this in case we were on a custom sprite and want to change to a standard one switch(icontype) if("Custom") @@ -569,13 +569,13 @@ GLOBAL_LIST_INIT(ai_verbs_default, list( // this verb lets the ai see the stations manifest /mob/living/silicon/ai/proc/ai_roster() - set name = "Show Crew Manifest" - set category = "AI Commands" + set name = "Показать манифест" + set category = "Команды ИИ" show_station_manifest() /mob/living/silicon/ai/proc/ai_announcement_text() - set category = "AI Commands" - set name = "Make Station Announcement" + set category = "Команды ИИ" + set name = "Сделать станционное оповещение" if(check_unable(AI_CHECK_WIRELESS | AI_CHECK_RADIO)) return @@ -584,7 +584,7 @@ GLOBAL_LIST_INIT(ai_verbs_default, list( to_chat(src, "Please allow one minute to pass between announcements.") return - var/input = tgui_input_text(usr, "Please write a message to announce to the station crew.", "A.I. Announcement", multiline = TRUE, encode = FALSE) + var/input = tgui_input_text(usr, "Напишите сообщение для экипажа.", "Оповещение ИИ", multiline = TRUE, encode = FALSE) if(!input) return @@ -595,13 +595,13 @@ GLOBAL_LIST_INIT(ai_verbs_default, list( next_text_announcement = world.time + TEXT_ANNOUNCEMENT_COOLDOWN /mob/living/silicon/ai/proc/ai_call_shuttle() - set name = "Call Emergency Shuttle" - set category = "AI Commands" + set name = "Вызов эвакуационного шаттла" + set category = "Команды ИИ" if(check_unable(AI_CHECK_WIRELESS)) return - var/input = tgui_input_text(src, "Please enter the reason for calling the shuttle.", "Shuttle Call Reason", multiline = TRUE, encode = FALSE) + var/input = tgui_input_text(src, "Пожалуйста, напишите причину для вызова шаттла.", "Причина вызова Шаттла", multiline = TRUE, encode = FALSE) if(!input || stat) return @@ -613,26 +613,26 @@ GLOBAL_LIST_INIT(ai_verbs_default, list( return /mob/living/silicon/ai/proc/ai_cancel_call() - set name = "Recall Emergency Shuttle" - set category = "AI Commands" + set name = "Отзыв эвакуационного шаттла" + set category = "Команды ИИ" if(check_unable(AI_CHECK_WIRELESS)) return - var/confirm = tgui_alert(src, "Are you sure you want to recall the shuttle?", "Confirm Shuttle Recall", list("Yes", "No")) + var/confirm = tgui_alert(src, "Вы уверены, что хотите отозвать шаттл?", "Потверждение отзыва шаттла", list("Да", "Нет")) if(check_unable(AI_CHECK_WIRELESS)) return - if(confirm == "Yes") + if(confirm == "Да") cancel_call_proc(src) /mob/living/silicon/ai/cancel_camera() view_core() /mob/living/silicon/ai/verb/toggle_anchor() - set category = "AI Commands" - set name = "Toggle Floor Bolts" + set category = "Команды ИИ" + set name = "Переключить прикручивание к полу" if(!isturf(loc)) // if their location isn't a turf return // stop @@ -642,13 +642,13 @@ GLOBAL_LIST_INIT(ai_verbs_default, list( else anchored = TRUE - to_chat(src, "[anchored ? "You are now anchored." : "You are now unanchored."]") + to_chat(src, "[anchored ? "Вы теперь прикручены." : " Вы теперь откручены."]") /mob/living/silicon/ai/proc/announcement() - set name = "Announcement" - set desc = "Create a vocal announcement by typing in the available words to create a sentence." - set category = "AI Commands" + set name = "Оповещение" + set desc = "Сделайте звуковое оповещение посредством слияния слов в предложения." + set category = "Команды ИИ" if(check_unable(AI_CHECK_WIRELESS | AI_CHECK_RADIO)) return @@ -721,7 +721,7 @@ GLOBAL_LIST_INIT(ai_verbs_default, list( if(H) H.attack_ai(src) //may as well recycle else - to_chat(src, "Unable to locate the holopad.") + to_chat(src, "Невозможно обнаружить голопад.") if(href_list["say_word"]) play_vox_word(href_list["say_word"], null, src) @@ -732,7 +732,7 @@ GLOBAL_LIST_INIT(ai_verbs_default, list( if(istype(target) && target.can_track()) ai_actual_track(target) else - to_chat(src, "Target is not on or near any active cameras on the station.") + to_chat(src, "Цель находится вне зоны камер.") return if(href_list["trackbot"]) @@ -740,7 +740,7 @@ GLOBAL_LIST_INIT(ai_verbs_default, list( if(istype(target)) ai_actual_track(target) else - to_chat(src, "Target is not on or near any active cameras on the station.") + to_chat(src, "Цель находится вне зоны камер.") return if(href_list["callbot"]) //Command a bot to move to a selected location. @@ -748,7 +748,7 @@ GLOBAL_LIST_INIT(ai_verbs_default, list( if(!Bot || Bot.remote_disabled || control_disabled) return //True if there is no bot found, the bot is manually emagged, or the AI is carded with wireless off. waypoint_mode = TRUE - to_chat(src, "Set your waypoint by clicking on a valid location free of obstructions.") + to_chat(src, "Поставьте беспрепятственную точку назначения.") return if(href_list["interface"]) //Remotely connect to a bot! @@ -778,16 +778,16 @@ GLOBAL_LIST_INIT(ai_verbs_default, list( return if(controlled_mech) - to_chat(src, "You are already loaded into an onboard computer!") + to_chat(src, "Вы уже загружены в портативный компьютер!") return if(!GLOB.cameranet.checkCameraVis(M)) - to_chat(src, "Exosuit is no longer near active cameras.") + to_chat(src, "Экзокостюм больше не в зоне камер.") return if(lacks_power()) - to_chat(src, "You're depowered!") + to_chat(src, "Вы разряжены!") return if(!isturf(loc)) - to_chat(src, "You aren't in your core!") + to_chat(src, "Вы не в ядре!") return if(M) M.transfer_ai(AI_MECH_HACK, src, usr) //Called om the mech itself. @@ -815,11 +815,11 @@ GLOBAL_LIST_INIT(ai_verbs_default, list( eyeobj.get_remote_view_fullscreens(src) /mob/living/silicon/ai/proc/botcall() - set category = "AI Commands" - set name = "Access Robot Control" - set desc = "Wirelessly control various automatic robots." + set category = "Команды ИИ" + set name = "Управление роботами" + set desc = "Удалённый контроль роботов." if(stat == 2) - to_chat(src, "Critical error. System offline.") + to_chat(src, "Критическая ошибка. Система не работает.") return if(check_unable(AI_CHECK_WIRELESS | AI_CHECK_RADIO)) @@ -828,21 +828,21 @@ GLOBAL_LIST_INIT(ai_verbs_default, list( var/d var/area/bot_area d += "Query network status
" - d += "" + d += "

Name

Status

Location

Control

" for(var/mob/living/simple_animal/bot/Bot in GLOB.bots_list) if(is_ai_allowed(Bot.z) && !Bot.remote_disabled) //Only non-emagged bots on the allowed Z-level are detected! bot_area = get_area(Bot) d += "" //If the bot is on, it will display the bot's current mode status. If the bot is not mode, it will just report "Idle". "Inactive if it is not on at all. - d += "" + d += "" d += "" d += "" d += "" d += "" d = format_text(d) - var/datum/browser/popup = new(src, "botcall", "Remote Robot Control", 700, 400) + var/datum/browser/popup = new(src, "botcall", "Удалённое управление роботами", 700, 400) popup.set_content(d) popup.open() @@ -854,7 +854,7 @@ GLOBAL_LIST_INIT(ai_verbs_default, list( else if(GLOB.cameranet && GLOB.cameranet.checkTurfVis(turf_check)) call_bot(turf_check) else - to_chat(src, "Selected location is not visible.") + to_chat(src, "Выбранное место нельзя увидеть.") /mob/living/silicon/ai/proc/call_bot(turf/waypoint) @@ -862,7 +862,7 @@ GLOBAL_LIST_INIT(ai_verbs_default, list( return if(Bot.calling_ai && Bot.calling_ai != src) //Prevents an override if another AI is controlling this bot. - to_chat(src, "Interface error. Unit is already in use.") + to_chat(src, "Ошибка интерфейса. Бот уже используется.") return Bot.call_bot(src, waypoint) @@ -877,7 +877,7 @@ GLOBAL_LIST_INIT(ai_verbs_default, list( if(O) var/obj/machinery/camera/C = locateUID(O[1]) if(O.len == 1 && !QDELETED(C) && C.can_use()) - queueAlarm("--- [class] alarm detected in [A.name]! ([C.c_tag])", class) + queueAlarm("--- Тревога типа [class] обнаружена в [A.name]! ([C.c_tag])", class) else if(O && O.len) var/foo = 0 var/dat2 = "" @@ -886,11 +886,11 @@ GLOBAL_LIST_INIT(ai_verbs_default, list( if(!QDELETED(I)) dat2 += "[(!foo) ? "" : " | "][I.c_tag]" //I'm not fixing this shit... foo = 1 - queueAlarm(text ("--- [] alarm detected in []! ([])", class, A.name, dat2), class) + queueAlarm(text ("--- Тревога типа [] обнаружена в []! ([])", class, A.name, dat2), class) else - queueAlarm(text("--- [] alarm detected in []! (No Camera)", class, A.name), class) + queueAlarm(text("--- Тревога типа [] обнаружена в []! (Нет камеры)", class, A.name), class) else - queueAlarm(text("--- [] alarm detected in []! (No Camera)", class, A.name), class) + queueAlarm(text("--- Тревога типа [] обнаружена в []! (Нет камеры)", class, A.name), class) if(viewalerts) ai_alerts() @@ -900,7 +900,7 @@ GLOBAL_LIST_INIT(ai_verbs_default, list( return if(origin.z != z) return - queueAlarm("--- [class] alarm in [A.name] has been cleared.", class, 0) + queueAlarm("--- Тревога типа [class] в [A.name] была устранена.", class, 0) if(viewalerts) ai_alerts() @@ -925,8 +925,8 @@ GLOBAL_LIST_INIT(ai_verbs_default, list( //Adds in /mob/living/silicon/ai/proc/ai_network_change() instead //Addition by Mord_Sith to define AI's network change ability /mob/living/silicon/ai/proc/ai_network_change() - set category = "AI Commands" - set name = "Jump To Network" + set category = "Команды ИИ" + set name = "Переключение сети" unset_machine() var/cameralist[0] @@ -934,7 +934,7 @@ GLOBAL_LIST_INIT(ai_verbs_default, list( return if(usr.stat == 2) - to_chat(usr, "You can't change your camera network because you are dead!") + to_chat(usr, "Вы не можете сменить сеть камер поскольку вы мертвы!") return var/mob/living/silicon/ai/U = usr @@ -948,7 +948,7 @@ GLOBAL_LIST_INIT(ai_verbs_default, list( for(var/i in tempnetwork) cameralist[i] = i var/old_network = network - network = tgui_input_list(U, "Which network would you like to view?", "Jump To Network", cameralist) + network = tgui_input_list(U, "На какую сеть камер вы бы хотели переключиться?", "Переключение сети", cameralist) if(check_unable()) return @@ -966,22 +966,22 @@ GLOBAL_LIST_INIT(ai_verbs_default, list( if(network in C.network) U.eyeobj.setLoc(get_turf(C)) break - to_chat(src, "Switched to [network] camera network.") + to_chat(src, "Переключились на сеть камер [network].") //End of code by Mord_Sith /mob/living/silicon/ai/proc/ai_statuschange() - set category = "AI Commands" - set name = "AI Status" + set category = "Команды ИИ" + set name = "Эмоция ИИ" if(usr.stat == 2) - to_chat(usr, "You cannot change your emotional status because you are dead!") + to_chat(usr, "Вы не можете сменить эмоцию поскольку вы мертвы!") return if(check_unable()) return var/list/ai_emotions = list("Very Happy", "Happy", "Neutral", "Unsure", "Confused", "Sad", "BSOD", "Blank", "Problems?", "Awesome", "Facepalm", "Friend Computer") - var/emote = tgui_input_list(usr, "Please, select a status!", "AI Status", ai_emotions) + var/emote = tgui_input_list(usr, "Пожалуйста, выберите эмоцию!", "Эмоция ИИ", ai_emotions) if(check_unable()) return @@ -1009,9 +1009,9 @@ GLOBAL_LIST_INIT(ai_verbs_default, list( //I am the icon meister. Bow fefore me. //>fefore /mob/living/silicon/ai/proc/ai_hologram_change() - set name = "Change Hologram" - set desc = "Change the default hologram available to AI to something else." - set category = "AI Commands" + set name = "Смена голограммы" + set desc = "Меняет стандартную голограмму ИИ на что-то другое." + set category = "Команды ИИ" if(check_unable()) return @@ -1020,7 +1020,7 @@ GLOBAL_LIST_INIT(ai_verbs_default, list( custom_hologram = TRUE var/input - switch(tgui_alert(usr, "Would you like to select a hologram based on a crew member, an animal, or switch to a unique avatar?", "Change Hologram", list("Crew Member", "Unique", "Animal"))) + switch(tgui_alert(usr, "Хотите выбрать голограмму на основе члена экипажа, животного или переключиться на уникальный аватар?", "Change Hologram", list("Crew Member", "Unique", "Animal"))) if("Crew Member") var/personnel_list[] = list() @@ -1028,13 +1028,13 @@ GLOBAL_LIST_INIT(ai_verbs_default, list( personnel_list["[t.fields["name"]]: [t.fields["rank"]]"] = t.fields["photo"]//Pull names, rank, and id photo. if(personnel_list.len) - input = tgui_input_list(usr, "Select a crew member", "Change Hologram", personnel_list) + input = tgui_input_list(usr, "Выберите члена экипажа", "Смена голограммы", personnel_list) var/icon/character_icon = personnel_list[input] if(character_icon) qdel(holo_icon)//Clear old icon so we're not storing it in memory. holo_icon = getHologramIcon(icon(character_icon)) else - alert("No suitable records found. Aborting.") + alert("Подходящих записей не обнаружено. Отменяем.") if("Animal") var/icon_list[] = list( @@ -1071,7 +1071,7 @@ GLOBAL_LIST_INIT(ai_verbs_default, list( "Roller-Monkey" ) - input = tgui_input_list(usr, "Please select a hologram", "Change Hologram", icon_list) + input = tgui_input_list(usr, "Пожалуйста выберите голограмму", "Смена голограммы", icon_list) if(input) qdel(holo_icon) switch(input) @@ -1158,7 +1158,7 @@ GLOBAL_LIST_INIT(ai_verbs_default, list( if(custom_hologram) //insert custom hologram icon_list.Add("custom") - input = tgui_input_list(usr, "Please select a hologram", "Change Hologram", icon_list) + input = tgui_input_list(usr, "Пожалуйста, выберите голограмму", "Смена голограммы", icon_list) if(input) qdel(holo_icon) switch(input) @@ -1203,9 +1203,9 @@ GLOBAL_LIST_INIT(ai_verbs_default, list( //Toggles the luminosity and applies it by re-entereing the camera. /mob/living/silicon/ai/proc/toggle_camera_light() - set name = "Toggle Camera Lights" - set desc = "Toggles the lights on the cameras throughout the station." - set category = "AI Commands" + set name = "Переключение света в камерах" + set desc = "Переключает свет в камерах на станции." + set category = "Команды ИИ" if(stat != CONSCIOUS) return @@ -1213,7 +1213,7 @@ GLOBAL_LIST_INIT(ai_verbs_default, list( camera_light_on = !camera_light_on if(!camera_light_on) - to_chat(src, "Camera lights deactivated.") + to_chat(src, "Свет в камерах отключён.") for(var/obj/machinery/camera/C in lit_cameras) C.set_light(0) @@ -1223,36 +1223,36 @@ GLOBAL_LIST_INIT(ai_verbs_default, list( light_cameras() - to_chat(src, "Camera lights activated.") + to_chat(src, "Свет в камерах включён.") /mob/living/silicon/ai/proc/set_syndie_radio() if(aiRadio) aiRadio.make_syndie() /mob/living/silicon/ai/proc/sensor_mode() - set name = "Set Sensor Augmentation" - set desc = "Augment visual feed with internal sensor overlays." - set category = "AI Commands" + set name = "Поставить аугментацию сенсоров" + set desc = "Аугрментируйте визуальную информацию с помощью сенсоров." + set category = "Команды ИИ" toggle_sensor_mode() /mob/living/silicon/ai/proc/arrivals_announcement() - set name = "Toggle Arrivals Announcer" - set desc = "Change whether or not you wish to announce arrivals." - set category = "AI Commands" + set name = "Переключить оповещение о прибытии" + set desc = "Включает или выключает оповещение о новых членах экипажа." + set category = "Команды ИИ" announce_arrivals = !announce_arrivals - to_chat(usr, "Arrivals announcement system [announce_arrivals ? "enabled" : "disabled"]") + to_chat(usr, "Система оповещения о прибытии [announce_arrivals ? "включена" : "отключена"]") /mob/living/silicon/ai/proc/change_arrival_message() - set name = "Set Arrival Message" - set desc = "Change the message that's transmitted when a new crew member arrives on station." - set category = "AI Commands" + set name = "Поставить сообщение прибытия" + set desc = "Меняет передоваемое сообщение при прибытии нового члена экипажа на станцию." + set category = "Команды ИИ" - var/newmsg = tgui_input_text(usr, "What would you like the arrival message to be? List of options: $name, $rank, $species, $gender, $age", "Change Arrival Message", arrivalmsg, encode = FALSE) + var/newmsg = tgui_input_text(usr, "Какое сообщение вы хотите поставить? Список переменных: $name, $rank, $species, $gender, $age", "Смена сообщения прибытия", arrivalmsg, encode = FALSE) if(!newmsg || newmsg == arrivalmsg) return arrivalmsg = newmsg - to_chat(usr, "The arrival message has been successfully changed.") + to_chat(usr, "Сообщение о прибытии было успешно изменено.") // Handled camera lighting, when toggled. // It will get the nearest camera from the eyeobj, lighting it. @@ -1281,19 +1281,19 @@ GLOBAL_LIST_INIT(ai_verbs_default, list( /mob/living/silicon/ai/attackby(obj/item/W, mob/user, params) if(istype(W, /obj/item/wrench)) if(anchored) - user.visible_message("\The [user] starts to unbolt \the [src] from the plating...") + user.visible_message("[user] начинает откручивать [src] от пола...") if(!do_after(user, 40 * W.toolspeed, target = src)) - user.visible_message("\The [user] decides not to unbolt \the [src].") + user.visible_message("[user] решает не откручивать [src].") return - user.visible_message("\The [user] finishes unfastening \the [src]!") + user.visible_message(" [user] закончил открутку [src]!") anchored = FALSE return else - user.visible_message("\The [user] starts to bolt \the [src] to the plating...") + user.visible_message("[user] начинает прикручивть [src] к полу...") if(!do_after(user, 40 * W.toolspeed, target = src)) - user.visible_message("\The [user] decides not to bolt \the [src].") + user.visible_message("[user] решает не закручивать [src].") return - user.visible_message("\The [user] finishes fastening down \the [src]!") + user.visible_message("[user] закончил закручивать [src]!") anchored = TRUE return else @@ -1303,32 +1303,32 @@ GLOBAL_LIST_INIT(ai_verbs_default, list( return /mob/living/silicon/ai/proc/control_integrated_radio() - set name = "Radio Settings" - set desc = "Allows you to change settings of your radio." - set category = "AI Commands" + set name = "Настройки гарнитуры" + set desc = "Позволяет изменять настройки вашей гарнитуры." + set category = "Команды ИИ" if(check_unable(AI_CHECK_RADIO)) return - to_chat(src, "Accessing Subspace Transceiver control...") + to_chat(src, "Получаем доступ к настройкам передатчика...") if(aiRadio) aiRadio.interact(src) /mob/living/silicon/ai/proc/check_unable(flags = 0) if(stat == DEAD) - to_chat(src, "You are dead!") + to_chat(src, "Вы мертвы!") return TRUE if(lacks_power()) - to_chat(src, "Power systems failure!") + to_chat(src, "Отказ систем питания!") return TRUE if((flags & AI_CHECK_WIRELESS) && control_disabled) - to_chat(src, "Wireless control is disabled!") + to_chat(src, "Удалённое управление отключено!") return TRUE if((flags & AI_CHECK_RADIO) && aiRadio.disabledAi) - to_chat(src, "System Error - Transceiver Disabled!") + to_chat(src, "Системная ошибка: Передатчик отключён!") return TRUE return FALSE @@ -1340,14 +1340,14 @@ GLOBAL_LIST_INIT(ai_verbs_default, list( return if(interaction == AI_TRANS_TO_CARD)//The only possible interaction. Upload AI mob to a card. if(!mind) - to_chat(user, "No intelligence patterns detected.")//No more magical carding of empty cores, AI RETURN TO BODY!!!11 + to_chat(user, "Искусственный интеллект не обнаружен.")//No more magical carding of empty cores, AI RETURN TO BODY!!!11 return if(stat != DEAD) - to_chat(user, "Beginning active intelligence transfer: please wait.") + to_chat(user, "Начинается загрузка активного разума: пожалуйста, ожидайте.") if(!do_after_once(user, 5 SECONDS, target = src) || !Adjacent(user)) - to_chat(user, "Intelligence transfer aborted.") + to_chat(user, "Перенос сознания отменён.") return new /obj/structure/AIcore/deactivated(loc)//Spawns a deactivated terminal at AI location. @@ -1357,8 +1357,8 @@ GLOBAL_LIST_INIT(ai_verbs_default, list( if(GetComponent(/datum/component/ducttape)) QDEL_NULL(builtInCamera) forceMove(card) //Throw AI into the card. - to_chat(src, "You have been downloaded to a mobile storage device. Remote device connection severed.") - to_chat(user, "Transfer successful: [name] ([rand(1000,9999)].exe) removed from host terminal and stored within local memory.") + to_chat(src, "Вас загрузили на портативное устройство. Удалённое соединение с устройствами разорвано.") + to_chat(user, "Загрузка успешна: [name] ([rand(1000,9999)].exe) удалён из терминала и перенесён в память устройства.") /mob/living/silicon/ai/can_buckle() return FALSE @@ -1387,7 +1387,7 @@ GLOBAL_LIST_INIT(ai_verbs_default, list( var/message = combine_message(message_pieces, verb, M) var/name_used = M.GetVoice() //This communication is imperfect because the holopad "filters" voices and is only designed to connect to the master only. - var/rendered = "Relayed Speech: [name_used] [message]" + var/rendered = "Переданная речь: [name_used] [message]" if(client?.prefs.toggles2 & PREFTOGGLE_2_RUNECHAT) var/message_clean = combine_message(message_pieces, null, M) create_chat_message(locateUID(M.runechat_msg_location), message_clean) @@ -1399,10 +1399,10 @@ GLOBAL_LIST_INIT(ai_verbs_default, list( clear_alert("hackingapc") if(!istype(apc) || QDELETED(apc) || apc.stat & BROKEN) - to_chat(src, "Hack aborted. The designated APC no longer exists on the power network.") + to_chat(src, "Взлом отменён. Указанный ЛКП больше не отмечен в энергосети станции.") SEND_SOUND(src, sound('sound/machines/buzz-two.ogg')) else if(apc.aidisabled) - to_chat(src, "Hack aborted. [apc] is no longer responding to our systems.") + to_chat(src, "Взлом отменён. [apc] больше не отвечает нашим системам.") SEND_SOUND(src, sound('sound/machines/buzz-sigh.ogg')) else malf_picker.processing_time += 15 @@ -1412,12 +1412,12 @@ GLOBAL_LIST_INIT(ai_verbs_default, list( apc.locked = TRUE SEND_SOUND(src, sound('sound/machines/ding.ogg')) - to_chat(src, "Hack complete. [apc] is now under your exclusive control.") + to_chat(src, "Взлом завершён. [apc] теперь под вашим контролем.") apc.update_icon() /mob/living/silicon/ai/proc/add_malf_picker() - to_chat(src, "In the top right corner of the screen you will find the Malfunctions tab, where you can purchase various abilities, from upgraded surveillance to station ending doomsday devices.") - to_chat(src, "You are also capable of hacking APCs, which grants you more points to spend on your Malfunction powers. The drawback is that a hacked APC will give you away if spotted by the crew. Hacking an APC takes 60 seconds.") + to_chat(src, "В правом верхнем углу вы можете найти панель Сбойных модулей, в которой вы можете покупать различные способности, от улучшенной слежки до Устройства судного Дня, уничтожающего станцию.") + to_chat(src, "Вы также способны взламывать ЛКП. Это даёт вам дополнительные очки на открытие способностей. Минус в том, что взломанный ЛКП бросается в глаза экипажу при обнаружении. Взлом ЛКП занимает 1 минуту.") view_core() //A BYOND bug requires you to be viewing your core before your verbs update malf_picker = new /datum/module_picker modules_action = new(malf_picker) @@ -1456,19 +1456,19 @@ GLOBAL_LIST_INIT(ai_verbs_default, list( A = D if(istype(A)) - switch(tgui_alert(src, "Do you want to open \the [A] for [target]?", "Doorknob_v2a.exe", list("Yes", "No"))) - if("Yes") + switch(tgui_alert(src, "Вы хотите открыть \ [A] для [target]?", "Doorknob_v2a.exe", list("Да", "Нет"))) + if("Да") if(!A.density) - to_chat(src, "[A] was already opened.") + to_chat(src, "Шлюз в [A] уже был открыт .") else if(A.open_close(src)) - to_chat(src, "You open \the [A] for [target].") + to_chat(src, "Вы открываете \ [A] для [target].") else - to_chat(src, "You deny the request.") + to_chat(src, "вы отклоняете запрос") else - to_chat(src, "Unable to locate an airlock near [target].") + to_chat(src, "Невозможно найти шлюз рядом [target].") else - to_chat(src, "Target is not on or near any active cameras on the station.") + to_chat(src, "Цель находится вне зоны покрытия камер.") /mob/living/silicon/ai/proc/camera_visibility(mob/camera/aiEye/moved_eye) GLOB.cameranet.visibility(moved_eye, client, all_eyes) @@ -1522,16 +1522,16 @@ GLOBAL_LIST_INIT(ai_verbs_default, list( var/datum/component/ducttape/ducttapecomponent = card.GetComponent(/datum/component/ducttape) if(!ducttapecomponent) return - to_chat(src, "The tiny fan that could begins to work against the tape to remove it.") + to_chat(src, "The tiny fan that could begins to work against the tape to remove it.") //Пока требуется пояснение, чё это такое. Карта с ИИ? if(!do_after(src, 2 MINUTES, target = card)) return - to_chat(src, "The tiny in built fan finally removes the tape!") + to_chat(src, "The tiny in built fan finally removes the tape!") // ducttapecomponent.remove_tape(card, src) //Stores the location of the AI to the value of stored_locations associated with location_number. /mob/living/silicon/ai/proc/store_location(location_number) if(!isturf(eyeobj.loc)) //i.e., inside a mech or other shenanigans - to_chat(src, "You can't set a location here!") + to_chat(src, "Вы не можете сохранить тут камеру!") return FALSE stored_locations[location_number] = eyeobj.loc diff --git a/code/modules/mob/living/silicon/ai/ai_death.dm b/code/modules/mob/living/silicon/ai/ai_death.dm index 6f170c292f12..9451887c428d 100644 --- a/code/modules/mob/living/silicon/ai/ai_death.dm +++ b/code/modules/mob/living/silicon/ai/ai_death.dm @@ -27,7 +27,7 @@ if(SSshuttle.emergency.mode == SHUTTLE_STRANDED) SSshuttle.emergency.mode = SHUTTLE_DOCKED SSshuttle.emergency.timer = world.time - GLOB.major_announcement.Announce("Hostile environment resolved. You have 3 minutes to board the Emergency Shuttle.", "Priority Announcement", 'sound/AI/eshuttle_dock.ogg') + GLOB.major_announcement.Announce("Враждебная среда нейтрализована. У вас есть 3 минуты, чтобы прибыть на борт эвакуационного шаттла.", "Приоритетное оповещение", 'sound/AI/eshuttle_dock.ogg') qdel(doomsday_device) if(explosive) diff --git a/code/modules/mob/living/silicon/ai/ai_examine.dm b/code/modules/mob/living/silicon/ai/ai_examine.dm index 1b94535c423d..0f9871013f48 100644 --- a/code/modules/mob/living/silicon/ai/ai_examine.dm +++ b/code/modules/mob/living/silicon/ai/ai_examine.dm @@ -2,23 +2,23 @@ . = ..() var/msg = "" if(src.stat == DEAD) - msg += "It appears to be powered-down.\n" + msg += "Выглядит отключённым.\n" else msg += "" if(src.getBruteLoss()) if(src.getBruteLoss() < 30) - msg += "It looks slightly dented.\n" + msg += "Выглядит слегка помятым.\n" else - msg += "It looks severely dented!\n" + msg += "Выглядит очень помятым!\n" if(src.getFireLoss()) if(src.getFireLoss() < 30) - msg += "It looks slightly charred.\n" + msg += "Выглядит слегка обугленным.\n" else - msg += "Its casing is melted and heat-warped!\n" + msg += "Оболочка расплавлена и искажена от тепла!\n" if(src.stat == UNCONSCIOUS) - msg += "It is non-responsive and displaying the text: \"RUNTIME: Sensory Overload, stack 26/3\".\n" + msg += "Оно не отвечает и высвечивает текст: \"RUNTIME: Перегрузка сенсоров, стэк 26/3\".\n" if(!shunted && !client) - msg += "[src]Core.exe has stopped responding! NTOS is searching for a solution to the problem...\n" + msg += "[src]Core.exe перестал отвечать! NTOS ищет решение проблемы...\n" msg += "" msg += "" diff --git a/code/modules/mob/living/silicon/ai/ai_laws.dm b/code/modules/mob/living/silicon/ai/ai_laws.dm index 9aa0f247a2ae..360d51f28e18 100644 --- a/code/modules/mob/living/silicon/ai/ai_laws.dm +++ b/code/modules/mob/living/silicon/ai/ai_laws.dm @@ -1,6 +1,6 @@ /mob/living/silicon/ai/proc/show_laws_verb() - set category = "AI Commands" - set name = "Show Laws" + set category = "Команды ИИ" + set name = "Показать законы" src.show_laws() /mob/living/silicon/ai/show_laws(everyone = 0) @@ -10,7 +10,7 @@ who = world else who = src - to_chat(who, "Obey these laws:") + to_chat(who, "Подчиняйтесь этим законам:") src.laws_sanity_check() src.laws.show_laws(who) @@ -22,6 +22,6 @@ R.show_laws() /mob/living/silicon/ai/proc/ai_checklaws() - set category = "AI Commands" - set name = "State Laws" + set category = "Команды ИИ" + set name = "Показать законы" subsystem_law_manager() diff --git a/code/modules/mob/living/silicon/ai/ai_life.dm b/code/modules/mob/living/silicon/ai/ai_life.dm index b0883f4a3311..cacd568f6aa4 100644 --- a/code/modules/mob/living/silicon/ai/ai_life.dm +++ b/code/modules/mob/living/silicon/ai/ai_life.dm @@ -44,7 +44,7 @@ update_blind_effects() aiRestorePowerRoutine = 0 update_sight() - to_chat(src, "Alert cancelled. Power has been restored[aiRestorePowerRoutine == 2 ? "without our assistance" : ""].") + to_chat(src, "Отбой тревоги. Питание было восстановлено [aiRestorePowerRoutine == 2 ? "без нашего вмешательства" : ""].") apc_override = FALSE else if(lacks_power()) @@ -52,31 +52,31 @@ update_blind_effects() aiRestorePowerRoutine = 1 update_sight() - to_chat(src, "You have lost power!") + to_chat(src, "Вы лишились питания!") if(!is_special_character(src)) set_zeroth_law("") spawn(20) - to_chat(src, "Backup battery online. Scanners, camera, and radio interface offline. Beginning fault-detection.") + to_chat(src, "Запасная батарея активна. Сканнеры, камера и радио отключены. Начинаем поиск ошибки.") sleep(50) my_area = get_area(src) T = get_turf(src) if(!lacks_power()) - to_chat(src, "Alert cancelled. Power has been restored without our assistance.") + to_chat(src, "Отбой тревоги. Питание было восстановлено без нашего вмешательства.") aiRestorePowerRoutine = 0 update_blind_effects() update_sight() return - to_chat(src, "Fault confirmed: missing external power. Shutting down main control system to save power.") + to_chat(src, "Ошибка подтверждена: отсутствие внешнего питания. Отключаем основной процесс контроля для сохранения энергии.") sleep(20) - to_chat(src, "Emergency control system online. Verifying connection to power network.") + to_chat(src, "Аварийная система контроля активна. Подтверждаем подключение к энергосети.") sleep(50) T = get_turf(src) if(isspaceturf(T)) - to_chat(src, "Unable to verify! No power connection detected!") + to_chat(src, "Подтверждение невозможно! Нет подключения к сети питания!") aiRestorePowerRoutine = 2 return - to_chat(src, "Connection verified. Searching for APC in power network.") + to_chat(src, "Подключение подтверждено. Ищем ЛКП в системе.") sleep(50) my_area = get_area(src) @@ -94,32 +94,32 @@ if(!theAPC) switch(PRP) if(1) - to_chat(src, "Unable to locate APC!") + to_chat(src, "Невозможно обнаружить ЛКП!") else - to_chat(src, "Lost connection with the APC!") + to_chat(src, "Соединение с ЛКП потеряно!") aiRestorePowerRoutine = 2 return if(!lacks_power()) - to_chat(src, "Alert cancelled. Power has been restored without our assistance.") + to_chat(src, "Отбой тревоги. Питание было восстановлено без нашего вмешательства.") aiRestorePowerRoutine = 0 update_blind_effects() update_sight() - to_chat(src, "Here are your current laws:") + to_chat(src, "Ваши текущие законы:") show_laws() return switch(PRP) if(1) - to_chat(src, "APC located. Optimizing route to APC to avoid needless power waste.") + to_chat(src, "ЛКП обнаружен. Оптимизируем маршрут до него для избежания излишних потерь энергии.") if(2) - to_chat(src, "Best route identified. Hacking offline APC power port.") + to_chat(src, "Наилучший маршрут обнаружен. Взлом порта питания отключённого ЛКП.") if(3) - to_chat(src, "Power port upload access confirmed. Loading control program into APC power port software.") + to_chat(src, "Подтверждён доступ в порт питания. Загрузка программы контроля ЛКП в порт питания.") if(4) - to_chat(src, "Transfer complete. Forcing APC to execute program.") + to_chat(src, "Передача завершена. Принудительно исполняется программа ЛКП.") sleep(50) - to_chat(src, "Receiving control information from APC.") + to_chat(src, "Поступает информация по контролю ЛКП.") sleep(2) //bring up APC dialog apc_override = TRUE diff --git a/code/modules/mob/living/silicon/ai/ai_say.dm b/code/modules/mob/living/silicon/ai/ai_say.dm index d8b720ad7f2a..aad2b02e4f36 100644 --- a/code/modules/mob/living/silicon/ai/ai_say.dm +++ b/code/modules/mob/living/silicon/ai/ai_say.dm @@ -22,23 +22,23 @@ impersonating = I jobname = impersonating.get_assignment() else - jobname = "Unknown" + jobname = "Неизвестный" else jobname = H.get_assignment() else if(iscarbon(speaker)) // Nonhuman carbon mob - jobname = "No ID" + jobname = "Без ID" else if(isAI(speaker)) - jobname = "AI" + jobname = "ИИ" else if(isrobot(speaker)) - jobname = "Cyborg" + jobname = "Киборг" else if(ispAI(speaker)) - jobname = "Personal AI" + jobname = "Персональный ИИ" else if(isAutoAnnouncer(speaker)) var/mob/living/automatedannouncer/AA = speaker jobname = AA.role else - jobname = "Unknown" + jobname = "Неизвестно" var/track = "" var/mob/mob_to_track = null @@ -70,16 +70,16 @@ GLOBAL_VAR_INIT(announcing_vox, 0) // Stores the time of the last announcement #define VOX_PATH "sound/vox_fem/" /mob/living/silicon/ai/verb/announcement_help() - set name = "Announcement Help" - set desc = "Display a list of vocal words to announce to the crew." - set category = "AI Commands" + set name = "Справочник оповещений" + set desc = "Показывает список слов для оповещения экипажа." + set category = "Команды ИИ" var/list/dat = list() - dat += "Here is a list of words you can type into the 'Announcement' button to create sentences to vocally announce to everyone on the same level at you.
\ -
  • You can also click on the word to preview it.
  • \ -
  • You can only say 30 words for every announcement.
  • \ -
  • Do not use punctuation as you would normally, if you want a pause you can use the full stop and comma characters by separating them with spaces, like so: 'Alpha . Test , Bravo'.
\ + dat += "Вот список слов, которые вы можете вписать в 'Оповещение' для создания предложений для звукового оповещения экипажа на том же Z-уровне, что и вы.
\ +
  • Вы можете также кликать на слова для предпросмотра.
  • \ +
  • Вы можете использовать не более 30 слов в одном оповещении.
  • \ +
  • Не используйте пунктуацию как обычно, если вы хотите поставить паузу, используйте точку или запятую, отделяя их пробелами, как пример: 'Alpha . Test , Bravo'.
\ WARNING:
Misuse of the announcement system will get you job banned.
" // Show alert and voice sounds separately @@ -90,7 +90,7 @@ GLOBAL_VAR_INIT(announcing_vox, 0) // Stores the time of the last announcement var/string_dat = dat.Join("") - var/datum/browser/popup = new(src, "announce_help", "Announcement Help", 500, 400) + var/datum/browser/popup = new(src, "announce_help", "Справочник оповещений", 500, 400) popup.set_content(string_dat) popup.open() @@ -106,10 +106,10 @@ GLOBAL_VAR_INIT(announcing_vox, 0) // Stores the time of the last announcement return if(GLOB.announcing_vox > world.time) - to_chat(src, "Please wait [round((GLOB.announcing_vox - world.time) / 10)] seconds.") + to_chat(src, "Пожалуйста подождите [round((GLOB.announcing_vox - world.time) / 10)] секунд.") return - var/message = tgui_input_text(src, "WARNING: Misuse of this verb can result in you being job banned. More help is available in 'Announcement Help'", "Announcement", last_announcement) + var/message = tgui_input_text(src, "Внимание: Неправильное использование этой системы может привести к джоббану. Для справки обращайтесь к 'Справочнику оповещений'", "Оповещение", last_announcement) last_announcement = message @@ -134,12 +134,12 @@ GLOBAL_VAR_INIT(announcing_vox, 0) // Stores the time of the last announcement incorrect_words += word if(incorrect_words.len) - to_chat(src, "These words are not available on the announcement system: [english_list(incorrect_words)].") + to_chat(src, "Эти слова недоступны в системе оповещений: [english_list(incorrect_words)].") return GLOB.announcing_vox = world.time + VOX_DELAY - log_game("[key_name(src)] made a vocal announcement: [message].") + log_game("[key_name(src)] сделал звуковое оповещение: [message].") message_admins("[key_name_admin(src)] made a vocal announcement: [message].") for(var/word in words) @@ -151,7 +151,7 @@ GLOBAL_VAR_INIT(announcing_vox, 0) // Stores the time of the last announcement /mob/living/silicon/ai/proc/ai_voice_announcement_to_text(words) var/words_string = jointext(words, " ") // Don't go through .Announce because we need to filter by clients which have TTS enabled - var/formatted_message = announcer.Format(words_string, "A.I. Announcement") + var/formatted_message = announcer.Format(words_string, "Оповещение ИИ") var/announce_sound = sound('sound/misc/notice2.ogg') for(var/player in GLOB.player_list) diff --git a/code/modules/mob/living/silicon/ai/freelook/eye.dm b/code/modules/mob/living/silicon/ai/freelook/eye.dm index 33cecf72df6f..0475e6952ea7 100644 --- a/code/modules/mob/living/silicon/ai/freelook/eye.dm +++ b/code/modules/mob/living/silicon/ai/freelook/eye.dm @@ -105,8 +105,8 @@ // Return to the Core. /mob/living/silicon/ai/proc/core() - set category = "AI Commands" - set name = "AI Core" + set category = "Команды ИИ" + set name = "Ядро ИИ" view_core() @@ -134,13 +134,13 @@ eyeobj.name = "[name] (AI Eye)" /mob/living/silicon/ai/proc/toggle_acceleration() - set category = "AI Commands" - set name = "Toggle Camera Acceleration" + set category = "Команды ИИ" + set name = "Переключить ускорение камеры" if(usr.stat == 2) return //won't work if dead acceleration = !acceleration - to_chat(usr, "Camera acceleration has been toggled [acceleration ? "on" : "off"].") + to_chat(usr, "Ускорение камеры было [acceleration ? "включено" : "отключено"].") /mob/camera/aiEye/hear_say(list/message_pieces, verb = "says", italics = 0, mob/speaker = null, sound/speech_sound, sound_vol, sound_frequency, use_voice = TRUE) if(relay_speech) diff --git a/code/modules/mob/living/silicon/ai/latejoin.dm b/code/modules/mob/living/silicon/ai/latejoin.dm index 495f8d9372f1..98cfe57a3042 100644 --- a/code/modules/mob/living/silicon/ai/latejoin.dm +++ b/code/modules/mob/living/silicon/ai/latejoin.dm @@ -1,19 +1,19 @@ GLOBAL_LIST_EMPTY(empty_playable_ai_cores) /mob/living/silicon/ai/verb/wipe_core() - set name = "Wipe Core" + set name = "Очистка ядра" set category = "OOC" - set desc = "Wipe your core. This is functionally equivalent to cryo or robotic storage, freeing up your job slot." + set desc = "Очищает ваше ядро. функционально такое же, как робо и криохранилище, освобождая слот работы." // Guard against misclicks, this isn't the sort of thing we want happening accidentally - if(tgui_alert(usr, "WARNING: This will immediately wipe your core and ghost you, removing your character from the round permanently (similar to cryo and robotic storage). Are you entirely sure you want to do this?", "Wipe Core", list("No", "Yes")) != "Yes") + if(tgui_alert(usr, "ВНИМАНИЕ: Это действие незамедлительно очистит ваше ядро и превратит вас в призрака, удаляя вашего персонажа из раунда (похоже на крио и робохранилище). Вы уверены, что хотите это сделать?", "Очистка ядра", list("Нет", "Да")) != "Да") return cryo_AI() /mob/living/silicon/ai/proc/cryo_AI() var/dead_aicore = new /obj/structure/AIcore/deactivated(loc) GLOB.empty_playable_ai_cores += dead_aicore - GLOB.global_announcer.autosay("[src] has been moved to intelligence storage.", "Artificial Intelligence Oversight", follow_target_override = dead_aicore) + GLOB.global_announcer.autosay("[src] был перемещён в хранилище ИИ.", "Система Надзора за ИИ", follow_target_override = dead_aicore) //Handle job slot/tater cleanup. var/job = mind.assigned_role diff --git a/code/modules/mob/living/silicon/silicon_emote.dm b/code/modules/mob/living/silicon/silicon_emote.dm index 9b0f211dd01b..7a82743b0af8 100644 --- a/code/modules/mob/living/silicon/silicon_emote.dm +++ b/code/modules/mob/living/silicon/silicon_emote.dm @@ -18,8 +18,8 @@ /datum/emote/living/silicon/scream key = "scream" key_third_person = "screams" - message = "screams!" - message_param = "screams at %t!" + message = "кричит!" + message_param = "кричит на %t!" emote_type = EMOTE_AUDIBLE vary = TRUE sound = "sound/goonstation/voice/robot_scream.ogg" @@ -28,60 +28,60 @@ /datum/emote/living/silicon/ping key = "ping" key_third_person = "pings" - message = "pings." - message_param = "pings at %t." + message = "звенит." + message_param = "звенит на %t." emote_type = EMOTE_AUDIBLE sound = "sound/machines/ping.ogg" /datum/emote/living/silicon/buzz key = "buzz" key_third_person = "buzzes" - message = "buzzes." - message_param = "buzzes at %t." + message = "жужжит." + message_param = "жужжит на %t." emote_type = EMOTE_AUDIBLE sound = "sound/machines/buzz-sigh.ogg" /datum/emote/living/silicon/buzz2 key = "buzz2" - message = "emits an irritated buzzing sound." - message_param = "emits an irritated buzzing sound at %t." + message = "издаёт раздражённый жужжащий звук." + message_param = "издает раздражённый жужжащий звук на %t." emote_type = EMOTE_AUDIBLE sound = "sound/machines/buzz-two.ogg" /datum/emote/living/silicon/beep key = "beep" key_third_person = "beeps" - message = "beeps." - message_param = "beeps at %t." + message = "бипает." + message_param = "бипает на %t." emote_type = EMOTE_AUDIBLE sound = "sound/machines/twobeep.ogg" /datum/emote/living/silicon/boop key = "boop" key_third_person = "boops" - message = "boops." - message_param = "boops at %t." + message = "бупает." + message_param = "бупает на %t." emote_type = EMOTE_AUDIBLE sound = "sound/machines/boop.ogg" /datum/emote/living/silicon/yes key = "yes" - message = "emits an affirmative blip." - message_param = "emits an affirmative blip at %t." + message = "издаёт положительный сигнал." + message_param = "издаёт положительный сигнал на %t." emote_type = EMOTE_AUDIBLE sound = "sound/machines/synth_yes.ogg" /datum/emote/living/silicon/no key = "no" - message = "emits a negative blip." - message_param = "emits a negative blip at %t." + message = "издаёт отрицательный сигнал." + message_param = "издаёт отрицательный сигнал на %t." emote_type = EMOTE_AUDIBLE sound = "sound/machines/synth_no.ogg" /datum/emote/living/silicon/law key = "law" - message = "shows its legal authorization barcode." - message_param = "shows %t its legal authorization barcode." + message = "показывает свой удостоверяющий штрихкод." + message_param = "показывает %t свой удостоверяющий штрихкод." emote_type = EMOTE_AUDIBLE sound = "sound/voice/biamthelaw.ogg" @@ -93,8 +93,8 @@ /datum/emote/living/silicon/halt key = "halt" - message = "screeches \"HALT! SECURITY!\" from its speakers." - message_param = "instructs %t to HALT." + message = "проигрывает \"НИ С МЕСТА!\" из своих динамиков." + message_param = "приказывает %t НЕ ДВИГАТЬСЯ." emote_type = EMOTE_AUDIBLE sound = "sound/voice/halt.ogg" diff --git a/code/modules/mob/living/silicon/silicon_laws.dm b/code/modules/mob/living/silicon/silicon_laws.dm index 77c2ac5b210c..a86455ea0944 100644 --- a/code/modules/mob/living/silicon/silicon_laws.dm +++ b/code/modules/mob/living/silicon/silicon_laws.dm @@ -88,12 +88,12 @@ /mob/living/silicon/proc/dostatelaws(method, prefix, datum/ai_laws/laws) if(stating_laws[prefix]) - to_chat(src, "[method]: Already stating laws using this communication method.") + to_chat(src, "[method]: Законы уже объявляются в данный канал.") return stating_laws[prefix] = 1 - var/can_state = statelaw("[prefix]Current Active Laws:") + var/can_state = statelaw("[prefix]Текущие активные законы:") for(var/datum/ai_law/law in laws.laws_to_state()) can_state = statelaw("[prefix][law.get_index()]. [law.law]") @@ -101,7 +101,7 @@ break if(!can_state) - to_chat(src, "[method]: Unable to state laws. Communication method unavailable.") + to_chat(src, "[method]: Невозможно объявить законы. Способ к коммуникации недоступен.") stating_laws[prefix] = 0 /mob/living/silicon/proc/statelaw(law) diff --git a/code/modules/mob/living/silicon/silicon_say.dm b/code/modules/mob/living/silicon/silicon_say.dm index 0420cccf33f9..7c2f07c601db 100644 --- a/code/modules/mob/living/silicon/silicon_say.dm +++ b/code/modules/mob/living/silicon/silicon_say.dm @@ -9,7 +9,7 @@ if(message_mode) used_radios += radio if(!is_component_functioning("radio")) - to_chat(src, "Your radio isn't functional at this time.") + to_chat(src, "Ваше радио не работает сейчас.") return 0 if(message_mode == "general") message_mode = null @@ -24,7 +24,7 @@ else if(message_mode) used_radios += aiRadio if(aiRadio.disabledAi || aiRestorePowerRoutine || stat) - to_chat(src, "System Error - Transceiver Disabled.") + to_chat(src, "Системная ошибка - Передатчик отключен.") return 0 if(message_mode == "general") message_mode = null @@ -81,9 +81,9 @@ create_chat_message(H, message) for(var/mob/M in hearers(T.loc))//The location is the object, default distance. M.hear_holopad_talk(message_pieces, verb, src, H) - to_chat(src, "Holopad transmitted, [real_name] [combine_message(message_pieces, verb, src)]") + to_chat(src, "Переданная речь, [real_name] [combine_message(message_pieces, verb, src)]") else - to_chat(src, "No holopad connected.") + to_chat(src, "Нет подключённого голопада.") return return 1 @@ -96,14 +96,14 @@ var/obj/machinery/hologram/holopad/T = current if(istype(T) && T.masters[src]) var/rendered = "[name] [message]" - to_chat(src, "Holopad action relayed, [real_name] [message]") + to_chat(src, "Переданное действие, [real_name] [message]") for(var/mob/M in viewers(T.loc)) M.show_message(rendered, EMOTE_VISIBLE) log_emote("(HPAD) [message]", src) else //This shouldn't occur, but better safe then sorry. - to_chat(src, "No holopad connected.") + to_chat(src, "Нет подключённого голопада.") return return 1 diff --git a/code/modules/mob/living/silicon/silicon_subsystems.dm b/code/modules/mob/living/silicon/silicon_subsystems.dm index 510b79c41d57..0a8b234ab371 100644 --- a/code/modules/mob/living/silicon/silicon_subsystems.dm +++ b/code/modules/mob/living/silicon/silicon_subsystems.dm @@ -13,8 +13,8 @@ * Atmos Control * ********************/ /mob/living/silicon/proc/subsystem_atmos_control() - set category = "Subsystems" - set name = "Atmospherics Control" + set category = "Подсистемы" + set name = "Менеджер атмосферы" atmos_control.ui_interact(usr) @@ -22,16 +22,16 @@ * Crew Monitor * ********************/ /mob/living/silicon/proc/subsystem_crew_monitor() - set category = "Subsystems" - set name = "Crew Monitor" + set category = "Подсистемы" + set name = "Монитор экипажа" crew_monitor.ui_interact(usr) /**************** * Law Manager * ****************/ /mob/living/silicon/proc/subsystem_law_manager() - set name = "Law Manager" - set category = "Subsystems" + set name = "Менеджер законов" + set category = "Подсистемы" law_manager.ui_interact(usr) @@ -39,8 +39,8 @@ * Power Monitor * ********************/ /mob/living/silicon/proc/subsystem_power_monitor() - set category = "Subsystems" - set name = "Power Monitor" + set category = "Подсистемы" + set name = "Монитор питания" power_monitor.ui_interact(usr) diff --git a/code/modules/mob/living/simple_animal/bot/!bot.dm b/code/modules/mob/living/simple_animal/bot/!bot.dm index cf9c15ffaa6e..81668b3a5f6e 100644 --- a/code/modules/mob/living/simple_animal/bot/!bot.dm +++ b/code/modules/mob/living/simple_animal/bot/!bot.dm @@ -712,7 +712,7 @@ Pass a positive integer as an argument to override a bot's default speed. 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 @@ -724,7 +724,7 @@ Pass a positive integer as an argument to override a bot's default speed. 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++ @@ -778,7 +778,7 @@ Pass a positive integer as an argument to override a bot's default speed. else auto_patrol = FALSE mode = BOT_IDLE - speak("Disengaging patrol mode.") + speak("Отключен режим патрулирования.") /mob/living/simple_animal/bot/proc/get_next_patrol_target() // Search the beacon list for the next target in the list. @@ -853,7 +853,7 @@ Pass a positive integer as an argument to override a bot's default speed. mode = BOT_SUMMON calc_summon_path() - speak("Responding.", radio_channel) + speak("Запрос принят. Выполняю.", radio_channel) return TRUE @@ -872,7 +872,7 @@ Pass a positive integer as an argument to override a bot's default speed. check_bot_access() set_path(get_path_to(src, summon_target, 150, id=access_card, exclude=avoid)) 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() /mob/living/simple_animal/bot/proc/summon_step() @@ -1057,7 +1057,7 @@ Pass a positive integer as an argument to override a bot's default speed. /mob/living/simple_animal/bot/proc/ejectpairemote(mob/user) if(allowed(user) && paicard) - speak("Ejecting personality chip.", radio_channel) + speak("Извлечение микросхемы личности.", radio_channel) ejectpai(user) /mob/living/simple_animal/bot/Login() diff --git a/code/modules/mob/living/simple_animal/bot/ed209bot.dm b/code/modules/mob/living/simple_animal/bot/ed209bot.dm index 9b7c3e74d4c8..5d2c8426da3f 100644 --- a/code/modules/mob/living/simple_animal/bot/ed209bot.dm +++ b/code/modules/mob/living/simple_animal/bot/ed209bot.dm @@ -362,7 +362,7 @@ 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, FALSE) visible_message("[src] points at [C.name]!") mode = BOT_HUNT @@ -575,7 +575,7 @@ addtimer(VARSET_CALLBACK(src, icon_state, "[lasercolor]ed209[on]"), 2) if(declare_arrests) var/area/location = get_area(src) - speak("[no_handcuffs ? "Detaining" : "Arresting"] level [threat] scumbag [C] in [location].", radio_channel) + speak("Внимание, проводится [no_handcuffs ? "задержание" : "арест"] преступного отродья [C] с уровнем угрозы [threat] в [location]!", radio_channel) /mob/living/simple_animal/bot/ed209/proc/cuff(mob/living/carbon/C) mode = BOT_ARREST diff --git a/code/modules/mob/living/simple_animal/bot/floorbot.dm b/code/modules/mob/living/simple_animal/bot/floorbot.dm index a8e7e3d06536..288ee97e8e4c 100644 --- a/code/modules/mob/living/simple_animal/bot/floorbot.dm +++ b/code/modules/mob/living/simple_animal/bot/floorbot.dm @@ -262,7 +262,7 @@ /mob/living/simple_animal/bot/floorbot/proc/nag() // Annoy everyone on the channel to refill us! if(!nagged) - speak("Requesting refill [MAX_AMOUNT - amount] at [get_area(src)]!", radio_channel) + speak("Запрос пополнения на [MAX_AMOUNT - amount] в [get_area(src)]!", radio_channel) nagged = TRUE /mob/living/simple_animal/bot/floorbot/proc/is_hull_breach(turf/t) // Ignore space tiles not considered part of a structure, also ignores shuttle docking areas. diff --git a/code/modules/mob/living/simple_animal/bot/griefsky.dm b/code/modules/mob/living/simple_animal/bot/griefsky.dm index 37406b435e55..c8ba2d1e58d6 100644 --- a/code/modules/mob/living/simple_animal/bot/griefsky.dm +++ b/code/modules/mob/living/simple_animal/bot/griefsky.dm @@ -94,7 +94,7 @@ if(declare_arrests) var/area/location = get_area(src) if(!spam_flag) - 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 = 1 addtimer(CALLBACK(src, PROC_REF(spam_flag_false)), 100) //to avoid spamming comms of sec for each hit visible_message("[src] flails his swords and cuts [C]!") @@ -127,7 +127,7 @@ if(!target) // make sure target exists back_to_idle() - speak("You fool") + speak("Неудачник") return if(target.stat == DEAD) @@ -171,7 +171,7 @@ 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!") icon_state = "griefsky-c" diff --git a/code/modules/mob/living/simple_animal/bot/honkbot.dm b/code/modules/mob/living/simple_animal/bot/honkbot.dm index 8f118b1a0591..a7fba3ee09d5 100644 --- a/code/modules/mob/living/simple_animal/bot/honkbot.dm +++ b/code/modules/mob/living/simple_animal/bot/honkbot.dm @@ -292,7 +292,7 @@ target = C oldtarget_name = C.name bike_horn() - speak("Honk!") + speak("Хонк!") visible_message("[src] starts chasing [C.name]!") mode = BOT_HUNT INVOKE_ASYNC(src, PROC_REF(handle_automated_action)) @@ -335,7 +335,7 @@ C.KnockDown(10 SECONDS) playsound(loc, 'sound/misc/sadtrombone.ogg', 50, 1, -1) if(!client) - speak("Honk!") + speak("Хонк!") sensor_blink() return ..() diff --git a/code/modules/mob/living/simple_animal/bot/medbot.dm b/code/modules/mob/living/simple_animal/bot/medbot.dm index 34a63ac5db40..1f20fcd2f397 100644 --- a/code/modules/mob/living/simple_animal/bot/medbot.dm +++ b/code/modules/mob/living/simple_animal/bot/medbot.dm @@ -273,7 +273,7 @@ /mob/living/simple_animal/bot/medbot/process_scan(mob/living/carbon/human/H) if(buckled) if((last_warning + 300) < world.time) - speak("Movement restrained! Unit on standby!") + speak("Движение ограничено! Юнит в режиме ожидания!") playsound(loc, 'sound/machines/buzz-two.ogg', 50, FALSE) last_warning = world.time return @@ -286,7 +286,7 @@ if(assess_patient(H)) last_found = world.time if((last_newpatient_speak + 300) < 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) @@ -308,7 +308,7 @@ 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', "Великолепно!" = 'sound/voice/mdelicious.ogg') var/message = pick(messagevoice) speak(message) playsound(loc, messagevoice[message], 50, FALSE) @@ -453,7 +453,7 @@ 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) @@ -471,7 +471,7 @@ 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', "Яблочко на ужин, и врач не нужен!" = 'sound/voice/mapple.ogg', "Поправляйтесь!" = 'sound/voice/mfeelbetter.ogg') var/message = pick(messagevoice) speak(message) playsound(loc, messagevoice[message], 50, FALSE) @@ -563,7 +563,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 6036614248d4..297548cb562e 100644 --- a/code/modules/mob/living/simple_animal/bot/mulebot.dm +++ b/code/modules/mob/living/simple_animal/bot/mulebot.dm @@ -633,7 +633,7 @@ 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) @@ -652,7 +652,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) diff --git a/code/modules/mob/living/simple_animal/bot/secbot.dm b/code/modules/mob/living/simple_animal/bot/secbot.dm index 2b4821ddc54c..240f4bbbf8b1 100644 --- a/code/modules/mob/living/simple_animal/bot/secbot.dm +++ b/code/modules/mob/living/simple_animal/bot/secbot.dm @@ -272,7 +272,7 @@ addtimer(VARSET_CALLBACK(src, icon_state, "[base_icon][on]"), 2) if(declare_arrests) var/area/location = get_area(src) - speak("[no_handcuffs ? "Detaining" : "Arresting"] level [threat] scumbag [C] in [location].", radio_channel) + speak("Внимание, проводится [no_handcuffs ? "задержание" : "арест"] преступного отродья [C] с уровнем угрозы [threat] в [location]!", radio_channel) /mob/living/simple_animal/bot/secbot/Life(seconds, times_fired) . = ..() @@ -419,7 +419,7 @@ 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, FALSE) visible_message("[src] points at [C.name]!") mode = BOT_HUNT diff --git a/code/modules/mob/living/simple_animal/friendly/friendly_emote.dm b/code/modules/mob/living/simple_animal/friendly/friendly_emote.dm index c8df5f54d75d..cec4efb55e0b 100644 --- a/code/modules/mob/living/simple_animal/friendly/friendly_emote.dm +++ b/code/modules/mob/living/simple_animal/friendly/friendly_emote.dm @@ -4,7 +4,7 @@ /datum/emote/living/simple_animal/diona_chirp key = "chirp" key_third_person = "chirps" - message = "chirps!" + message = "стрекочет!" sound = "sound/creatures/nymphchirp.ogg" emote_type = EMOTE_AUDIBLE mob_type_allowed_typecache = list(/mob/living/simple_animal/diona) @@ -17,8 +17,8 @@ /datum/emote/living/simple_animal/pet/dog/bark key = "bark" key_third_person = "barks" - message = "barks." - message_param = "barks at %t." + message = "лает." + message_param = "лает на %t." emote_type = EMOTE_AUDIBLE /datum/emote/living/simple_animal/pet/dog/bark/get_sound(mob/living/user) @@ -31,8 +31,8 @@ /datum/emote/living/simple_animal/pet/dog/yelp key = "yelp" key_third_person = "yelps" - message = "yelps!" - message_param = "yelps at %t!" + message = "визжит!" + message_param = "визжит на %t!" emote_type = EMOTE_AUDIBLE /datum/emote/living/simple_animal/pet/dog/yelp/get_sound(mob/living/user) @@ -42,8 +42,8 @@ /datum/emote/living/simple_animal/pet/dog/growl key = "growl" key_third_person = "growls" - message = "growls!" - message_param = "growls at %t!" + message = "рычит!" + message_param = "рычит на %t!" emote_type = EMOTE_AUDIBLE sound = "growl" @@ -55,8 +55,8 @@ /datum/emote/living/simple_animal/mouse/squeak key = "squeak" key_third_person = "squeaks" - message = "squeaks!" - message_param = "squeaks at %t!" + message = "пищит!" + message_param = "пищит на %t!" emote_type = EMOTE_AUDIBLE /datum/emote/living/simple_animal/mouse/squeak/get_sound(mob/living/user) @@ -71,8 +71,8 @@ /datum/emote/living/simple_animal/pet/cat/meow key = "meow" key_third_person = "meows" - message = "meows." - message_param = "meows at %t." + message = "мяукает." + message_param = "мяукает на %t." sound = "sound/creatures/cat_meow.ogg" emote_type = EMOTE_AUDIBLE @@ -84,13 +84,13 @@ /datum/emote/living/simple_animal/pet/cat/hiss key = "hiss" key_third_person = "hisses" - message = "hisses!" - message_param = "hisses at %t!" + message = "шипит!" + message_param = "шипит на %t!" /datum/emote/living/simple_animal/pet/cat/purr key = "purr" key_third_person = "purrs" - message = "purrs." + message = "мурчит." /datum/emote/living/sit/cat message = null diff --git a/code/modules/mob/living/simple_animal/hostile/gorilla/gorilla_emote.dm b/code/modules/mob/living/simple_animal/hostile/gorilla/gorilla_emote.dm index 41602ab402a7..5c635eeb7ebb 100644 --- a/code/modules/mob/living/simple_animal/hostile/gorilla/gorilla_emote.dm +++ b/code/modules/mob/living/simple_animal/hostile/gorilla/gorilla_emote.dm @@ -4,7 +4,7 @@ /datum/emote/living/simple_animal/gorilla/ooga key = "ooga" key_third_person = "oogas" - message = "oogas." - message_param = "oogas at %t." + message = "угает." + message_param = "угает на %t." emote_type = EMOTE_AUDIBLE sound = 'sound/creatures/gorilla.ogg' diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm index 944f426f3428..c33101d8cf34 100644 --- a/code/modules/mob/living/simple_animal/parrot.dm +++ b/code/modules/mob/living/simple_animal/parrot.dm @@ -38,10 +38,10 @@ faction = list("neutral", "jungle") var/list/clean_speak = list( - "Hi", - "Hello!", - "Cracker?", - "BAWWWWK george mellons griffing me" + "Хай", + "Привет!", + "Крекер?", + "БВАААК повар хочет жареного попугая!" ) speak_emote = list("squawks", "says", "yells") emote_hear = list("squawks", "bawks") @@ -161,9 +161,9 @@ if(ears) if(stat == CONSCIOUS) //DEAD PARROTS SHOULD NOT SPEAK (i hate that this is done in topic) if(length(available_channels)) - say("[pick(available_channels)]BAWWWWWK LEAVE THE HEADSET BAWKKKKK!") + say("[pick(available_channels)]БВАААК ОСТАВТЕ НАУШНИК БВАААК!") else - say("BAWWWWWK LEAVE THE HEADSET BAWKKKKK!") + say("БВАААК ОСТАВТЕ НАУШНИК БВАААК!") ears.forceMove(loc) ears = null update_speak() @@ -685,30 +685,30 @@ * Sub-types */ /mob/living/simple_animal/parrot/Poly - name = "Poly" - desc = "Poly the Parrot. An expert on quantum cracker theory." + name = "Поли" + desc = "Попугай Поли. Эксперт по квантовой теории крекеров." clean_speak = list( - "Poly wanna cracker!", - "Check the crystal, you chucklefucks!", - "STOP HOT-WIRING THE ENGINE, FUCKING CHRIST!", - "Wire the solars, you lazy bums!", - "WHO TOOK THE DAMN HARDSUITS?", - "OH GOD ITS ABOUT TO DELAMINATE CALL THE SHUTTLE", - "Why are there so many atmos alerts?", - "OH GOD WHY WOULD YOU PUT PLASMA IN THE SM?", - "Remember to lock the emitters!", - "Stop goofing off and repair the goddam station!", - "The supermatter is not your friend!", - "What were the wires again?", - "Goddam emaggers!", - "Why is nobody watching the engine?", - "Maybe the SM would produce more power if we fed it some clowns.", - "Everyone else dusted when they touched the SM, but I am sure you will be different.", - "I asked the mime if they turned off the scrubbers, but they didn't say a word.", - "This engine setup meets all safety requirements.", - "Chief Engineers are the SM's natural diet.", - "Don't eat the forbidden nacho!", - "Is the engine meant to be making that noise?", + "Поли хочет крекер!", + "Проверьте СМ, долбоёбы!", + "ВЫ ДОПУСТИЛИ ПОТЕРЮ ДОРОГОСТОЯЩЕГО ОБМУНДИРОВАНИЯ!", + "Подключите соляры, идиоты!", + "КТО ВЗЯЛ ЧЁРТОВЫ МОДЫ?", + "ОХ БЛЯТЬ, ОН ДЕСТАБИЛИЗИРУЕТСЯ, ВЫЗЫВАЙТЕ ШАТТЛ!", + "Почему у нас так много атмосферных тревог?", + "ОХ БЛЯТЬ, КТО ПУСТИЛ ПЛАЗМУ В СМ?", + "Не забудьте заблокировать эммитеры картой.", + "Хватит дурачиться и идите уже чинить грёбаную станцию!", + "Суперматерия - не твой друг.", + "Куда вы опять дели провода?", + "Грёбаные емагеры!", + "Почему никто не смотрит за двигателем?", + "Возможно СМ будет вырабатывать больше энергии, если мы скормим ему пару клоунов.", + "Все кто прикасался к СМу превращались вы пыль, но я уверен что с тобой будет иначе.", + "Я спрашивал у мима, выключили ли они скрабберы, но он ничего не сказал.", + "Данная сборка СМа, соответствует всем нормам безопасности.", + "СЕ - диета суперматерии.", + "Не ешь запретный начо!", + "Движок так и должен шуметь?", ) unique_pet = TRUE gold_core_spawnable = NO_SPAWN @@ -716,7 +716,7 @@ /mob/living/simple_animal/parrot/Poly/New() ears = new /obj/item/radio/headset/headset_eng(src) available_channels = list(":e") - clean_speak += "Danger! Crystal hyperstructure integrity faltering! Integrity: [rand(75, 99)]%" // Has to be here cause of the `rand()`. + clean_speak += "Опасность! Нарушение целостности гиперструктуры кристалла! Целостность: [rand(75, 99)]%" // Has to be here cause of the `rand()`. ..() /mob/living/simple_animal/parrot/Poly/npc_safe(mob/user) // Hello yes, I have universal speak and I follow people around and shout out antags diff --git a/code/modules/mob/living/simple_animal/slime/slime_emote.dm b/code/modules/mob/living/simple_animal/slime/slime_emote.dm index 5f0282cd750e..65e6f88485c5 100644 --- a/code/modules/mob/living/simple_animal/slime/slime_emote.dm +++ b/code/modules/mob/living/simple_animal/slime/slime_emote.dm @@ -21,22 +21,22 @@ /datum/emote/living/simple_animal/slime/bounce key = "bounce" key_third_person = "bounces" - message = "bounces in place." + message = "подпрыгивает на месте." /datum/emote/living/simple_animal/slime/jiggle key = "jiggle" key_third_person = "jiggles" - message = "jiggles!" + message = "трясётся!" /datum/emote/living/simple_animal/slime/light key = "light" key_third_person = "lights" - message = "lights up for a bit, then stops." + message = "заливается светом ненадолго и потом гаснет." /datum/emote/living/simple_animal/slime/vibrate key = "vibrate" key_third_person = "vibrates" - message = "vibrates!" + message = "вибрирует!" /datum/emote/living/simple_animal/slime/noface // mfw no face diff --git a/code/modules/mob/mob_emote.dm b/code/modules/mob/mob_emote.dm index 497031a8d657..ed4741b2d9a0 100644 --- a/code/modules/mob/mob_emote.dm +++ b/code/modules/mob/mob_emote.dm @@ -22,7 +22,7 @@ if(!length(key_emotes)) if(intentional && !force_silence) - to_chat(src, "'[emote_key]' emote does not exist. Say *help for a list.") + to_chat(src, "Эмоции '[emote_key]' не существует. Введите *help для их списка.") else if(!intentional) CRASH("Emote with key [emote_key] was attempted to be called, though doesn't exist!") return FALSE @@ -38,7 +38,7 @@ if(P.try_run_emote(src, param, type_override, intentional)) return TRUE if(intentional && !silenced && !force_silence) - to_chat(src, "Unusable emote '[emote_key]'. Say *help for a list.") + to_chat(src, "Эмоция '[emote_key]' недоступна. Введите *help для их списка.") return FALSE /** @@ -53,7 +53,7 @@ if(!message && !client) CRASH("An empty custom emote was called from a client-less mob.") else if(!message) - input = tgui_input_text(src, "Choose an emote to display.", "Custom Emote") + input = tgui_input_text(src, "Выберите эмоцию для отображения.", "Custom Emote") else input = message @@ -86,7 +86,7 @@ var/list/base_keys = list() var/list/all_keys = list() var/list/species_emotes = list() - var/list/message = list("Available emotes, you can use them with say \"*emote\": ") + var/list/message = list("Доступные эмоции, можете их использовать с помощью \"*emote\": ") var/mob/living/carbon/human/H = user for(var/key in GLOB.emote_list) @@ -110,7 +110,7 @@ message = message.Join("") if(length(species_emotes) > 0) species_emotes = sortList(species_emotes) - message += "\n[user?.dna?.species.name] specific emotes :- " + message += "\n[user?.dna?.species.name] специальные эмоции :- " message += species_emotes.Join(", ") message += "." to_chat(user, message) @@ -118,7 +118,7 @@ /datum/emote/flip key = "flip" key_third_person = "flips" - message = "does a flip!" + message = "делает кувырок!" hands_use_check = TRUE emote_type = EMOTE_VISIBLE | EMOTE_FORCE_NO_RUNECHAT // don't need an emote to see that mob_type_allowed_typecache = list(/mob/living, /mob/dead/observer) // okay but what if we allowed ghosts to flip as well @@ -134,17 +134,17 @@ var/mob/living/L = user if(IS_HORIZONTAL(L)) - message = "flops and flails around on the floor." + message = "шлепается и метается по полу." return ..() else if(params) - message_param = "flips in %t's general direction." + message_param = "делает кувырок в направлении к %t." else if(ishuman(user)) var/mob/living/carbon/human/H = user if(istype(H.get_active_hand(), /obj/item/grab)) var/obj/item/grab/G = H.get_active_hand() if(G && G.affecting) if(H.buckled || G.affecting.buckled) - to_chat(user, "[G.affecting] is buckled, you can't flip around [G.affecting.p_them()]!") + to_chat(user, "[G.affecting] пристёгнут(а), кувырок сделать не получится!") return TRUE var/turf/oldloc = user.loc var/turf/newloc = G.affecting.loc @@ -154,7 +154,7 @@ user.pass_flags |= (PASSTABLE) step(user, get_dir(oldloc, newloc)) user.pass_flags = old_pass - message = "flips over [G.affecting]!" + message = "делает кувырок через [G.affecting]!" return ..() user.SpinAnimation(5, 1) @@ -166,7 +166,7 @@ "As you flip your hat falls off!") if(prob(5) && ishuman(user)) - message = "attempts a flip and crashes to the floor!" + message = "пытается сделать кувырок и шлёпается на пол!" sleep(0.3 SECONDS) if(istype(L)) L.Weaken(4 SECONDS) @@ -194,7 +194,7 @@ return TRUE user.spin(32, 1) - to_chat(user, "You spin too much!") + to_chat(user, "Вы слишком долго вращаетесь!") var/mob/living/L = user if(istype(L)) L.Dizzy(24 SECONDS) diff --git a/code/modules/mob/mob_misc_procs.dm b/code/modules/mob/mob_misc_procs.dm index aeb97a0b355b..08e83be25bb8 100644 --- a/code/modules/mob/mob_misc_procs.dm +++ b/code/modules/mob/mob_misc_procs.dm @@ -660,11 +660,11 @@ for(var/i=1,i<=3,i++) //we get 3 attempts to pick a suitable name. if(force) - newname = tgui_input_text(src, "Pick a new name.", "Name Change", oldname) + newname = tgui_input_text(src, "Выберите новое имя.", "Смена имени", oldname) else - newname = tgui_input_text(src, "You are a [role]. Would you like to change your name to something else? (You have 3 minutes to select a new name.)", "Name Change", oldname, timeout = 3 MINUTES) + newname = tgui_input_text(src, "Вы - [role]. Хотели бы вы сменить своё имя? (У вас есть 3 минуты на выбор имени.)", "Смена имени", oldname, timeout = 3 MINUTES) if(((world.time - time_passed) > 1800) && !force) - tgui_alert(src, "Unfortunately, more than 3 minutes have passed for selecting your name. If you are a robot, use the Namepick verb; otherwise, adminhelp.", "Name Change") + tgui_alert(src, "К сожалению, прошло более трёх минут для выбора имени. Если вы робот, используйте верб Namepick; в иных случаях, adminhelp.", "Смена имени") return //took too long newname = reject_bad_name(newname,allow_numbers) //returns null if the name doesn't meet some basic requirements. Tidies up a few other things like bad-characters. diff --git a/code/modules/mob/new_player/!new_player.dm b/code/modules/mob/new_player/!new_player.dm index 52d1c874a0c3..d132ecae073d 100644 --- a/code/modules/mob/new_player/!new_player.dm +++ b/code/modules/mob/new_player/!new_player.dm @@ -35,10 +35,10 @@ // Dont blank out the other window. This one is read only. if(!GLOB.configuration.system.external_tos_handler) src << browse(null, "window=playersetup") - output += "

I consent" - output += "

I DO NOT consent" + output += "

Я согласен" + output += "

Я не согласен" src << browse(output,"window=privacy_consent;size=500x300") - var/datum/browser/popup = new(src, "privacy_consent", "

Privacy Consent
", 500, 400) + var/datum/browser/popup = new(src, "privacy_consent", "
Соглашение о конфиденциальности
", 500, 400) // Let them close it here, this is a read only pane if(!GLOB.configuration.system.external_tos_handler) popup.set_window_options("can_close=0") @@ -50,40 +50,40 @@ set waitfor = FALSE var/real_name = client.prefs.active_character.real_name if(client.prefs.toggles2 & PREFTOGGLE_2_RANDOMSLOT) - real_name = "Random Character Slot" - var/output = "

Setup Character
[real_name]

" + real_name = "Случайный персонаж" + var/output = "

Настройка персонажа
[real_name]

" if(!SSticker || SSticker.current_state <= GAME_STATE_PREGAME) if(!ready) - output += "

Declare Ready

" + output += "

Нажмите, если готовы

" else - output += "

You are ready (Cancel)

" + output += "

Вы готовы (Отмена)

" else - output += "

View the Crew Manifest

" - output += "

Join Game!

" + output += "

Просмотр списка экипажа

" + output += "

Присоединиться к игре!

" var/list/antags = client.prefs.be_special if(length(antags)) if(!client.skip_antag) - output += "

Global Antag Candidacy" + output += "

Глобальная настройка антагов" else output += "

Global Antag Candidacy" - output += "
You are [client.skip_antag ? "ineligible" : "eligible"] for all antag roles.

" + output += "
Вы [client.skip_antag ? "не готовы" : "готовы"] для всех антаг ролей.

" if(!SSticker || SSticker.current_state == GAME_STATE_STARTUP) - output += "

Observe (Please wait...)

" + output += "

Наблюдать (Ожидайте...)

" else - output += "

Observe

" + output += "

Наблюдать

" if(GLOB.join_tos) - output += "

Terms of Service

" + output += "

Условия использования

" if(length(GLOB.configuration.system.region_map)) output += "

Set region (reduces ping)

" output += "
" - var/datum/browser/popup = new(src, "playersetup", "
New Player Options
", 240, 340) + var/datum/browser/popup = new(src, "playersetup", "
Новый игрок
", 240, 340) popup.set_window_options("can_close=0") popup.set_content(output) popup.open(FALSE) @@ -93,18 +93,18 @@ . = status_tab_data if(SSticker) if(!SSticker.hide_mode) - status_tab_data[++status_tab_data.len] = list("Game Mode:", "[GLOB.master_mode]") + status_tab_data[++status_tab_data.len] = list("Режим:", "[GLOB.master_mode]") else - status_tab_data[++status_tab_data.len] = list("Game Mode:", "Secret") + status_tab_data[++status_tab_data.len] = list("Режим:", "Секрет") if(SSticker.current_state == GAME_STATE_PREGAME) - status_tab_data[++status_tab_data.len] = list("Time To Start:", SSticker.ticker_going ? deciseconds_to_time_stamp(SSticker.pregame_timeleft) : "DELAYED") + status_tab_data[++status_tab_data.len] = list("Начало через:", SSticker.ticker_going ? deciseconds_to_time_stamp(SSticker.pregame_timeleft) : "ПАУЗА") if(check_rights(R_ADMIN, 0, src)) - status_tab_data[++status_tab_data.len] = list("Players Ready:", "[totalPlayersReady]") + status_tab_data[++status_tab_data.len] = list("Готово:", "[totalPlayersReady]") totalPlayersReady = 0 for(var/mob/new_player/player in GLOB.player_list) if(check_rights(R_ADMIN, 0, src)) - status_tab_data[++status_tab_data.len] = list("[player.key]", player.ready ? "(Ready)" : "(Not ready)") + status_tab_data[++status_tab_data.len] = list("[player.key]", player.ready ? "(В игре)" : "(Не готов)") if(player.ready) totalPlayersReady++ @@ -124,7 +124,7 @@ new_player_panel_proc() if(href_list["consent_rejected"]) client.tos_consent = FALSE - to_chat(usr, "You must consent to the terms of service before you can join!") + to_chat(usr, "Перед тем как присоединиться, вы должны согласиться с условиями использования!") var/datum/db_query/query = SSdbcore.NewQuery("REPLACE INTO privacy (ckey, datetime, consent) VALUES (:ckey, Now(), 0)", list( "ckey" = ckey )) @@ -138,13 +138,13 @@ if(href_list["ready"]) if(!client.tos_consent) - to_chat(usr, "You must consent to the terms of service before you can join!") + to_chat(usr, "Перед тем как присоединиться, вы должны согласиться с условиями использования!") return FALSE if(client.version_blocked) client.show_update_notice() return FALSE if(!ready && !client.prefs.active_character.check_any_job() && (client.prefs.active_character.alternate_option == RETURN_TO_LOBBY)) - to_chat(usr, "You have no jobs enabled, along with return to lobby if job is unavailable. This makes you ineligible for any round start role, please update your job preferences.") + to_chat(usr, "Вы не выбрали ни одну должность, а также включена функция возврата в лобби в случае недоступности должности. Это не даёт вам получить раунд-стартовую роль, проверьте ваши настройки должностей.") ready = FALSE return FALSE @@ -164,16 +164,16 @@ if(href_list["observe"]) if(!client.tos_consent) - to_chat(usr, "You must consent to the terms of service before you can join!") + to_chat(usr, "Перед тем как присоединиться, вы должны согласиться с условиями использования!") return FALSE if(client.version_blocked) client.show_update_notice() return FALSE if(!SSticker || SSticker.current_state == GAME_STATE_STARTUP) - to_chat(usr, "You must wait for the server to finish starting before you can join!") + to_chat(usr, "Вы должны дождаться окончания запуска сервера, прежде чем сможете присоединиться к нему!") return FALSE - if(alert(usr, "Are you sure you wish to observe? You cannot normally join the round after doing this!", "Observe", "Yes", "No") == "Yes") + if(alert(usr, "Вы уверены, что хотите наблюдать? После этого Вы не сможете присоединиться к раунду!", "Наблюдать", "Да", "Нет") == "Да") if(!client) return TRUE var/mob/dead/observer/observer = new(src) @@ -189,7 +189,7 @@ observer.started_as_observer = 1 close_spawn_windows() var/obj/O = locate("landmark*Observer-Start") - to_chat(src, "Now teleporting.") + to_chat(src, "Телепортация...") observer.forceMove(O.loc) observer.timeofdeath = world.time // Set the time of death so that the respawn timer works correctly. client.prefs.active_character.update_preview_icon(1) @@ -215,16 +215,16 @@ if(href_list["late_join"]) if(!client.tos_consent) - to_chat(usr, "You must consent to the terms of service before you can join!") + to_chat(usr, "Перед тем как присоединиться, вы должны согласиться с условиями использования!") return FALSE if(client.version_blocked) client.show_update_notice() return FALSE if(!SSticker || SSticker.current_state != GAME_STATE_PLAYING) - to_chat(usr, "The round is either not ready, or has already finished...") + to_chat(usr, "Раунд либо не готов, либо уже завершился...") return if(!can_use_species(src, client.prefs.active_character.species)) - to_chat(src, alert("You are currently not whitelisted to play [client.prefs.active_character.species].")) + to_chat(src, alert("В настоящее время вы не включены в белый список для игры на [client.prefs.active_character.species].")) return FALSE if(!check_tts_seed_ready()) // SS220 ADDITION @@ -238,14 +238,14 @@ if(href_list["SelectedJob"]) if(!GLOB.enter_allowed) - to_chat(usr, "There is an administrative lock on entering the game!") + to_chat(usr, "Администратор запретил входить в игру!") return if(client.prefs.toggles2 & PREFTOGGLE_2_RANDOMSLOT) client.prefs.load_random_character_slot(client) if(!can_use_species(src, client.prefs.active_character.species)) - to_chat(src, alert("You are currently not whitelisted to play [client.prefs.active_character.species].")) + to_chat(src, alert("В настоящее время вы не включены в белый список для игры на [client.prefs.active_character.species].")) return FALSE AttemptLateSpawn(href_list["SelectedJob"]) @@ -310,20 +310,20 @@ if(src != usr) return 0 if(!SSticker || SSticker.current_state != GAME_STATE_PLAYING) - to_chat(usr, "The round is either not ready, or has already finished...") + to_chat(usr, "Раунд либо не готов, либо уже завершился...") return 0 if(!GLOB.enter_allowed) - to_chat(usr, "There is an administrative lock on entering the game!") + to_chat(usr, "Администратор запретил входить в игру!") return 0 if(!IsJobAvailable(rank)) - to_chat(src, alert("[rank] is not available. Please try another.")) + to_chat(src, alert("[rank] не доступен. Попробуйте другую должность.")) return 0 var/datum/job/thisjob = SSjobs.GetJob(rank) if(thisjob.barred_by_disability(client)) - to_chat(src, alert("[rank] is not available due to your character's disability. Please try another.")) + to_chat(src, alert("[rank] недоступен из-за инвалидности вашего персонажа. Попробуйте другую должность.")) return 0 if(thisjob.barred_by_missing_limbs(client)) - to_chat(src, alert("[rank] is not available due to your character having amputated limbs without a prosthetic replacement. Please try another.")) + to_chat(src, alert("[rank] недоступен из-за того, что у вашего персонажа ампутированы конечности и отсутствуют протезы. Попробуйте другую должность.")) return 0 SSjobs.AssignRole(src, rank, 1) @@ -353,10 +353,10 @@ character.loc = pick(GLOB.syndicateofficer) else character.forceMove(pick(GLOB.aroomwarp)) - join_message = "has arrived" + join_message = "прибыл[character.gender == FEMALE ? "а" : ""]" else character.forceMove(pick(GLOB.latejoin)) - join_message = "has arrived on the station" + join_message = "прибыл[character.gender == FEMALE ? "а" : ""] на станцию" character.lastarea = get_area(loc) // Moving wheelchair if they have one @@ -420,7 +420,7 @@ if((character.mind.assigned_role != "Cyborg") && (character.mind.assigned_role != character.mind.special_role)) if(character.mind.role_alt_title) rank = character.mind.role_alt_title - GLOB.global_announcer.autosay("[character.real_name],[rank ? " [rank]," : " visitor," ] [join_message ? join_message : "has arrived on the station"].", "Arrivals Announcement Computer", follow_target_override = character) + GLOB.global_announcer.autosay("[character.real_name],[rank ? " [rank]," : ", посетитель," ] [join_message ? join_message : "прибыл на станцию"].", "Оповещение О Прибытии", follow_target_override = character) /mob/new_player/proc/AnnounceCyborg(mob/living/character, rank, join_message) if(SSticker.current_state == GAME_STATE_PLAYING) @@ -431,13 +431,13 @@ var/mob/living/silicon/ai/announcer = pick(ailist) if(character.mind) if(character.mind.assigned_role != character.mind.special_role) - var/arrivalmessage = "A new[rank ? " [rank]" : " visitor" ] [join_message ? join_message : "has arrived on the station"]." + var/arrivalmessage = "Новый[rank ? " [rank]" : ", посетитель," ] [join_message ? join_message : "прибыл на станцию"]." announcer.say(";[arrivalmessage]", ignore_languages = TRUE) else if(character.mind) if(character.mind.assigned_role != character.mind.special_role) // can't use their name here, since cyborg namepicking is done post-spawn, so we'll just say "A new Cyborg has arrived"/"A new Android has arrived"/etc. - GLOB.global_announcer.autosay("A new[rank ? " [rank]" : " visitor" ] [join_message ? join_message : "has arrived on the station"].", "Arrivals Announcement Computer", follow_target_override = character) + GLOB.global_announcer.autosay("Новый[rank ? " [rank]" : ", посетитель," ] [join_message ? join_message : "прибыл на станцию"].", "Оповещение О Прибытии", follow_target_override = character) /mob/new_player/proc/LateChoices() var/mills = ROUND_TIME // 1/10 of a second, not real milliseconds but whatever @@ -505,7 +505,7 @@ categorizedJobs["Miscellaneous"]["jobs"] += job if(num_jobs_available) - dat += "Choose from the following open positions:

" + dat += "Выберите одну из следующих открытых вакансий:

" dat += "

Имя

Статус

Место

Control

[Bot.hacked ? "(!) [Bot.name]" : Bot.name] ([Bot.model])[Bot.on ? "[Bot.mode ? "[ Bot.mode_name[Bot.mode] ]": "Idle"]" : "Inactive"][Bot.on ? "[Bot.mode ? "[ Bot.mode_name[Bot.mode] ]": "Idle"]" : "Неактивен"][bot_area.name]InterfaceCall
" for(var/jobcat in categorizedJobs) if(categorizedJobs[jobcat]["colBreak"]) @@ -524,11 +524,11 @@ dat += "
" else - dat += "

Unfortunately, there are no job slots free currently.
Wait a few minutes, then try again.
Or, try observing the round.
" + dat += "

К сожалению, в настоящее время свободных вакансий нет.
Попробуйте снова через несколько минут
Или попробуйте понаблюдать за раундом.
" // Removing the old window method but leaving it here for reference // src << browse(dat, "window=latechoices;size=300x640;can_close=1") // Added the new browser window method - var/datum/browser/popup = new(src, "latechoices", "Choose Profession", 900, 600) + var/datum/browser/popup = new(src, "latechoices", "Выберите должность", 900, 600) popup.add_stylesheet("playeroptions", 'html/browser/playeroptions.css') popup.add_script("delay_interactivity", 'html/browser/delay_interactivity.js') popup.set_content(dat) diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index 353f9a2d7cb0..a3349490824c 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -800,14 +800,14 @@ to_chat(H, "You feel surrounded by sadness. Sadness... and HONKS!") H.makeCluwne() else if(myeffect == "Demote") - GLOB.major_announcement.Announce("[target.real_name] is hereby demoted to the rank of Assistant. Process this demotion immediately. Failure to comply with these orders is grounds for termination.","CC Demotion Order") + GLOB.major_announcement.Announce("[target.real_name] понижается в должности до ассистента. Немедленно оформите это понижение. Невыполнение этих приказов является основанием для расторжения контракта.", "Приказ Центрального Командования.") for(var/datum/data/record/R in sortRecord(GLOB.data_core.security)) if(R.fields["name"] == target.real_name) R.fields["criminal"] = SEC_RECORD_STATUS_DEMOTE R.fields["comments"] += "Central Command Demotion Order, given on [GLOB.current_date_string] [station_time_timestamp()]
Process this demotion immediately. Failure to comply with these orders is grounds for termination." update_all_mob_security_hud() else if(myeffect == "Demote with Bot") - GLOB.major_announcement.Announce("[target.real_name] is hereby demoted to the rank of Assistant. Process this demotion immediately. Failure to comply with these orders is grounds for termination.","CC Demotion Order") + GLOB.major_announcement.Announce("[target.real_name] понижается в должности до ассистента. Немедленно оформите это понижение. Невыполнение этих приказов является основанием для расторжения контракта.", "Приказ Центрального Командования.") for(var/datum/data/record/R in sortRecord(GLOB.data_core.security)) if(R.fields["name"] == target.real_name) R.fields["criminal"] = SEC_RECORD_STATUS_ARREST diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm index 01fd87c905b4..9fdd822e41dd 100644 --- a/code/modules/paperwork/photocopier.dm +++ b/code/modules/paperwork/photocopier.dm @@ -236,7 +236,7 @@ else if(check_mob()) to_chat(copymob, "You feel a slight pressure on your ass.") - atom_say("Attention: Unable to remove large object!") + atom_say("Внимание: Невозможно удалить крупный объект!") /obj/machinery/photocopier/proc/remove_folder() if(copying) @@ -351,7 +351,7 @@ LAZYADD(saved_documents, O) copying = FALSE playsound(loc, 'sound/machines/ping.ogg', 50, FALSE) - atom_say("Document successfully scanned!") + atom_say("Документ удачно отсканирован!") /obj/machinery/photocopier/proc/delete_file(uid) var/document = locateUID(uid) @@ -545,7 +545,7 @@ visible_message("[copyitem] is shoved out of the way by [copymob]!") copyitem = null playsound(loc, 'sound/machines/ping.ogg', 50, FALSE) - atom_say("Attention: Posterior Placed on Printing Plaque!") + atom_say("Внимание: Обнаружена задница на печатном полотне!") SStgui.update_uis(src) return TRUE diff --git a/code/modules/paperwork/silicon_photography.dm b/code/modules/paperwork/silicon_photography.dm index aba7263615ed..66f0e635abf2 100644 --- a/code/modules/paperwork/silicon_photography.dm +++ b/code/modules/paperwork/silicon_photography.dm @@ -37,7 +37,7 @@ else injectaialbum(P) - to_chat(usr, "Image recorded") + to_chat(usr, "Снимок сохранён") /obj/item/camera/siliconcam/proc/selectpicture(obj/item/camera/siliconcam/cam) if(!cam) @@ -46,11 +46,11 @@ var/list/nametemp = list() var/find if(cam.aipictures.len == 0) - to_chat(usr, "No images saved") + to_chat(usr, "Нет сохранённых снимков") return for(var/datum/picture/t in cam.aipictures) nametemp += t.fields["name"] - find = tgui_input_list(usr, "Select image (numbered in order taken)", "Pick Image", nametemp) + find = tgui_input_list(usr, "Выберите снимок (пронумерованы в порядке получения)", "Выбор снимка", nametemp) for(var/datum/picture/q in cam.aipictures) if(q.fields["name"] == find) @@ -78,7 +78,7 @@ return cam.aipictures -= selection - to_chat(usr, "Image deleted") + to_chat(usr, "Снимок удалён") /obj/item/camera/siliconcam/ai_camera/can_capture_turf(turf/T, mob/user) var/mob/living/silicon/ai = user @@ -92,37 +92,37 @@ /obj/item/camera/siliconcam/proc/camera_mode_off() src.in_camera_mode = 0 - to_chat(usr, "Camera Mode deactivated") + to_chat(usr, "Режим фотоаппарата деактивирован") /obj/item/camera/siliconcam/proc/camera_mode_on() src.in_camera_mode = 1 - to_chat(usr, "Camera Mode activated") + to_chat(usr, "Режим фотоаппарата активирован") /obj/item/camera/siliconcam/ai_camera/printpicture(mob/user, datum/picture/P) injectaialbum(P) - to_chat(usr, "Image recorded") + to_chat(usr, "Снимок записан") /obj/item/camera/siliconcam/robot_camera/printpicture(mob/user, datum/picture/P) injectmasteralbum(P) /obj/item/camera/siliconcam/ai_camera/verb/take_image() - set category = "AI Commands" - set name = "Take Image" - set desc = "Takes an image" + set category = "Команды ИИ" + set name = "Сделать снимок" + set desc = "Делает снимок" toggle_camera_mode() /obj/item/camera/siliconcam/ai_camera/verb/view_images() - set category = "AI Commands" - set name = "View Images" - set desc = "View images" + set category = "Команды ИИ" + set name = "Просмотреть снимки" + set desc = "Показывает снимки" viewpictures() /obj/item/camera/siliconcam/ai_camera/verb/delete_images() - set category = "AI Commands" - set name = "Delete Image" - set desc = "Delete image" + set category = "Команды ИИ" + set name = "Удалить снимок" + set desc = "Удаляет снимок" deletepicture(src) diff --git a/code/modules/paperwork/ticketmachine.dm b/code/modules/paperwork/ticketmachine.dm index fda0e642d11d..a6905de25fdc 100644 --- a/code/modules/paperwork/ticketmachine.dm +++ b/code/modules/paperwork/ticketmachine.dm @@ -59,7 +59,7 @@ if(current_number < ticket_number) current_number ++ //Increment the one we're serving. playsound(src, 'sound/misc/announce_dig.ogg', 50, FALSE) - atom_say("Now serving ticket #[current_number]!") + atom_say("Очередь тикета номер [current_number]!") if(!(emagged) && tickets[current_number]) var/obj/item/ticket_machine_ticket/ticket = tickets[current_number] ticket.audible_message("\the [tickets[current_number]] vibrates!") diff --git a/code/modules/power/engines/supermatter/supermatter.dm b/code/modules/power/engines/supermatter/supermatter.dm index 06b7bc18c14e..3b54623c1ba3 100644 --- a/code/modules/power/engines/supermatter/supermatter.dm +++ b/code/modules/power/engines/supermatter/supermatter.dm @@ -116,15 +116,15 @@ ///The damage we had before this cycle. Used to limit the damage we can take each cycle, and for safe_alert var/damage_archived = 0 ///Our "Shit is no longer fucked" message. We send it when damage is less then damage_archived - var/safe_alert = "Crystalline hyperstructure returning to safe operating parameters." + var/safe_alert = "Возвращение кристаллической гиперструктуры к безопасным рабочим параметрам." ///The point at which we should start sending messeges about the damage to the engi channels. var/warning_point = 50 ///The alert we send when we've reached warning_point - var/warning_alert = "Danger! Crystal hyperstructure integrity faltering!" + var/warning_alert = "Опасность! Нарушение целостности гиперструктуры кристалла!" ///The point at which we start sending messages to the common channel var/emergency_point = 700 ///The alert we send when we've reached emergency_point - var/emergency_alert = "CRYSTAL DELAMINATION IMMINENT." + var/emergency_alert = "РАССЛОЕНИЕ КРИСТАЛЛА НЕИЗБЕЖНО." ///The point at which we delam var/explosion_point = 900 ///When we pass this amount of damage we start shooting bolts @@ -300,10 +300,10 @@ switch(get_status()) if(SUPERMATTER_DELAMINATING) playsound(src, 'sound/misc/bloblarm.ogg', 100, FALSE, 40, 30, falloff_distance = 10) - GLOB.major_announcement.Announce("WARNING, REACTOR CORE IS IN CRITICAL CHARGE!", "SUPERMATTER: STATUS CRITICAL", 'modular_ss220/aesthetics_sounds/sound/supermatter/meltdown.ogg') //SS220 EDIT - ADDITION + GLOB.major_announcement.Announce("ВНИМАНИЕ, АКТИВНАЯ ЗОНА РЕАКТОРА НАХОДИТСЯ В КРИТИЧЕСКОМ СОСТОЯНИИ!", "РЕАКТОР СУПЕРМАТЕРИИ: СОСТОЯНИЕ КРИТИЧЕСКОЕ!", 'modular_ss220/aesthetics_sounds/sound/supermatter/meltdown.ogg') //SS220 EDIT - ADDITION if(SUPERMATTER_EMERGENCY) playsound(src, 'sound/machines/engine_alert1.ogg', 100, FALSE, 30, 30, falloff_distance = 10) - GLOB.major_announcement.Announce("WARNING, CORE OVERHEATTING. NUCLEAR KNOCKDOWN IMMINENT!", "SUPERMATTER: STATUS CRITICAL", 'modular_ss220/aesthetics_sounds/sound/supermatter/core_overheating.ogg') //SS220 EDIT - ADDITION + GLOB.major_announcement.Announce("ВНИМАНИЕ, АКТИВНАЯ ЗОНА РЕАКТОРА НАХОДИТСЯ В СОСТОЯНИИ КРИТИЧЕСКОГО ПЕРЕГРЕВА. ЯДЕРНАЯ КАТАСТРОФА НЕИЗБЕЖНА!", "РЕАКТОР СУПЕРМАТЕРИИ: СОСТОЯНИЕ КРИТИЧЕСКОЕ!", 'modular_ss220/aesthetics_sounds/sound/supermatter/core_overheating.ogg') //SS220 EDIT - ADDITION if(SUPERMATTER_DANGER) playsound(src, 'sound/machines/engine_alert2.ogg', 100, FALSE, 30, 30, falloff_distance = 10) if(SUPERMATTER_WARNING) @@ -325,7 +325,7 @@ var/image/causality_field = image(icon, null, "causality_field") add_overlay(causality_field) - var/speaking = "[emergency_alert] The supermatter has reached critical integrity failure. Emergency causality destabilization field has been activated." + var/speaking = "[emergency_alert] Суперматерия достигла критического нарушения целостности. Активировано аварийное дестабилизационное поле." for(var/mob/M in GLOB.player_list) // for all players var/turf/T = get_turf(M) if(istype(T) && atoms_share_level(T, src)) // if the player is on the same zlevel as the SM shared @@ -338,7 +338,7 @@ damage = explosion_point - 1 // One point below exploding, so it will re-start the countdown once unfrozen return if(damage < explosion_point) // Cutting it a bit close there engineers - radio.autosay("[safe_alert] Failsafe has been disengaged.", name, null, list(z)) + radio.autosay("[safe_alert] Система отказоустойчивости деактивирована.", name, null, list(z)) cut_overlay(causality_field, TRUE) final_countdown = FALSE remove_filter(list("outline", "icon")) @@ -347,7 +347,7 @@ sleep(10) continue else if(i > 50) - speaking = "[DisplayTimeText(i, TRUE)] remain before causality stabilization." + speaking = "До взрыва кристалла суперматерии осталось [DisplayTimeText(i, TRUE)]." else speaking = "[i*0.1]..." radio.autosay(speaking, name, null, list(z)) @@ -651,27 +651,27 @@ //Oh shit it's bad, time to freak out if(damage > emergency_point) - radio.autosay("[emergency_alert] Integrity: [get_integrity()]%", name, null, list(z)) + radio.autosay("[emergency_alert] Целостность: [get_integrity()]%", name, null, list(z)) lastwarning = REALTIMEOFDAY if(!has_reached_emergency) investigate_log("has reached the emergency point for the first time.", "supermatter") message_admins("[src] has reached the emergency point [ADMIN_JMP(src)].") has_reached_emergency = TRUE else if(damage >= damage_archived) // The damage is still going up - radio.autosay("[warning_alert] Integrity: [get_integrity()]%", name, "Engineering", list(z)) + radio.autosay("[warning_alert] Целостность: [get_integrity()]%", name, "Engineering", list(z)) lastwarning = REALTIMEOFDAY - (WARNING_DELAY * 5) else // Phew, we're safe - radio.autosay("[safe_alert] Integrity: [get_integrity()]%", name, "Engineering", list(z)) + radio.autosay("[safe_alert] Целостность: [get_integrity()]%", name, "Engineering", list(z)) lastwarning = REALTIMEOFDAY if(power > POWER_PENALTY_THRESHOLD) - radio.autosay("Warning: Hyperstructure has reached dangerous power level.", name, "Engineering", list(z)) + radio.autosay("Гиперструктура достигла опасного уровня мощности.", name, "Engineering", list(z)) if(powerloss_inhibitor < 0.5) - radio.autosay("DANGER: CHARGE INERTIA CHAIN REACTION IN PROGRESS.", name, "Engineering", list(z)) + radio.autosay("ОПАСНОСТЬ: ИДЕТ ИНЕРЦИОННАЯ ЦЕПНАЯ РЕАКЦИЯ ЗАРЯДА.", name, "Engineering", list(z)) if(combined_gas > MOLE_CRUNCH_THRESHOLD) - radio.autosay("Warning: Critical coolant mass reached.", name, "Engineering", list(z)) + radio.autosay("Предупреждение: Достигнута критическая масса теплоносителя.", name, "Engineering", list(z)) //Boom (Mind blown) if(damage > explosion_point) countdown() diff --git a/code/modules/projectiles/guns/energy/special_eguns.dm b/code/modules/projectiles/guns/energy/special_eguns.dm index f32812f922a8..ed87c0401599 100644 --- a/code/modules/projectiles/guns/energy/special_eguns.dm +++ b/code/modules/projectiles/guns/energy/special_eguns.dm @@ -824,7 +824,7 @@ /obj/item/gun/energy/detective/proc/start_pointing(target_UID) tracking_target_UID = target_UID - Announcer.autosay("Alert: Detective's revolver discharged in tracking mode. Tracking: [locateUID(tracking_target_UID)] at [get_area_name(src)].", src, "Security") + Announcer.autosay("Внимание: размещена метка слежения. Отслеживание: [locateUID(tracking_target_UID)] в [get_area_name(src)].", src, "Security") var/obj/item/pinpointer/crew/C = locateUID(linked_pinpointer_UID) if(C) C.start_tracking() diff --git a/code/modules/reagents/chemistry/reagents/paradise_pop.dm b/code/modules/reagents/chemistry/reagents/paradise_pop.dm index 8dfc39353607..89d544c4dc9d 100644 --- a/code/modules/reagents/chemistry/reagents/paradise_pop.dm +++ b/code/modules/reagents/chemistry/reagents/paradise_pop.dm @@ -30,7 +30,7 @@ if(prob(1)) var/turf/simulated/T = get_turf(M) goonchem_vortex(T, TRUE, 0, TRUE) // Ignore the 0 volume - to_chat(M, "You briefly feel super-massive, like a black hole. Probably just your imagination...") + to_chat(M, "Вы на мгновение чувствуете себя сверхтяжёлым, как чёрная дыра. Возможно, это просто ваше воображение...") return ..() //Berry Banned: This one is tasty and safe to drink, might have a low chance of healing a random damage type? @@ -59,7 +59,7 @@ update_flags |= M.adjustCloneLoss(-0.5*REAGENTS_EFFECT_MULTIPLIER, FALSE) if(5) update_flags |= M.adjustBrainLoss(-1*REAGENTS_EFFECT_MULTIPLIER, FALSE) - to_chat(M, "You feel slightly rejuvinated!") + to_chat(M, "Вы чувствуете себя немного моложе!") return ..() | update_flags //Berry Banned 2: This one is tasty and toxic. Deals toxin damage and MAYBE plays the "BWOINK!" sound if it kills someone? @@ -76,12 +76,12 @@ if(prob(50)) update_flags |= M.adjustToxLoss(2*REAGENTS_EFFECT_MULTIPLIER, FALSE) //double strength of poison berry juice alone, because it's concentrated (this is equal to the damage of normal toxin, less often) if(prob(10)) - to_chat(M, "You feel slightly rejuvinated!") //meta this! + to_chat(M, "Вы чувствуете себя немного моложе!") //meta this! return ..() | update_flags /datum/reagent/consumable/drink/berry_banned2/on_mob_death(mob/living/M) SEND_SOUND(M, sound('sound/effects/adminhelp.ogg', 0, 1, 0, 25)) - to_chat(M, chat_box_red("PM from-Administrator: BWOINK!"), MESSAGE_TYPE_ADMINPM, confidential = TRUE) + to_chat(M, chat_box_red("ЛС от Администратор: БВОНЬК!"), MESSAGE_TYPE_ADMINPM, confidential = TRUE) ..() //Blackeye Brew: Chance to make the drinker say greytider-themed things like "I thought clown was valid!" @@ -95,16 +95,16 @@ /datum/reagent/consumable/drink/blackeye_brew/on_mob_life(mob/living/M) if(prob(25)) - var/list/tider_talk = list("I OWN THIS STATION NOW, I JUST BOUGHT IT.", - "SECRET TECHNIQUE: TOOLBOX TO THE FACE!", - "SECRET TECHNIQUE: PLASMA CANISTER FIRE!", - "SECRET TECHNIQUE: TABLE AND DISPOSAL!", + var/list/tider_talk = list("ЭТО ТЕПЕРЬ МОЯ СТАНЦИЯ, Я ЕЁ ТОЛЬКО ЧТО КУПИЛ.", + "СЕКРЕТНАЯ ТЕХНИКА: ТУЛБОКСОМ ПО РОЖЕ!", + "СЕКРЕТНАЯ ТЕХНИКА: ПОДПАЛИТЬ КАНИСТРУ ПЛАЗМЫ!", + "СЕКРЕТНАЯ ТЕХНИКА: ОБ СТОЛ И В МУСОРКУ!", // Borers got removed but the below reference stays because its hilarious - "[pick("MY BROTHER", " MY DOG", "MY BEST FRIEND", "THE BORER", "GEORGE MELONS", "BADMINS")] DID IT!", - "; WHATS SPACE LAW?!", - "I BOUGHT THESE GLOVES, NOT STEAL THEM", - "THIS DOOR WAS SHOCKED WHEN I GOT HERE", - "ANIMALS ARE NOT CREW") + "ЭТО СДЕЛАЛ [pick("МОЙ БРАТ", "МОЙ ПЁС", "МОЙ ЛУЧШИЙ ДРУГ", "БОРЕР", "ДЖОРДЖ МЕЛЛОНС", "ПЕДАЛЬ", "ПУНПУН")]!", + "; ЧТО ТАКОЕ КОСМОЗАКОН?!", + "Я КУПИЛ ЭТИ ПЕРЧАТКИ, НЕ УКРАЛ!!!", + "ЭТА ДВЕРЬ УЖЕ БИЛАСЬ ТОКОМ КОГДА Я ПРИШЁЛ", + "ЖИВОТНЫЕ НЕ ЧЛЕНЫ ЭКИПАЖА") M.say(pick(tider_talk)) return ..() diff --git a/code/modules/response_team/ert.dm b/code/modules/response_team/ert.dm index 9aa3426a2567..2889b826d27d 100644 --- a/code/modules/response_team/ert.dm +++ b/code/modules/response_team/ert.dm @@ -301,12 +301,12 @@ GLOBAL_LIST_EMPTY(ert_request_messages) if(silent) message_admins("A silent response team failed to spawn. Likely, no one signed up.") return - GLOB.major_announcement.Announce("[station_name()], we are unfortunately unable to send you an Emergency Response Team at this time.", "ERT Unavailable") + GLOB.major_announcement.Announce("Внимание, [station_name()]. К сожалению, в настоящее время мы не можем направить к вам отряд быстрого реагирования.", "ОБР недоступен.") /datum/response_team/proc/announce_team() if(silent) return - GLOB.major_announcement.Announce("Attention, [station_name()]. We are sending a team of highly trained assistants to aid(?) you. Standby.", "ERT En-Route") + GLOB.major_announcement.Announce("Внимание, [station_name()]. Мы направляем команду высококвалифицированных ассистентов для оказания помощи(?). Ожидайте.", "ОБР в пути.") // -- AMBER TEAM -- @@ -321,7 +321,7 @@ GLOBAL_LIST_EMPTY(ert_request_messages) /datum/response_team/amber/announce_team() if(silent) return - GLOB.major_announcement.Announce("Attention, [station_name()]. We are sending a code AMBER light Emergency Response Team. Standby.", "ERT En-Route") + GLOB.major_announcement.Announce("Внимание, [station_name()]. Мы направляем стандартный отряд быстрого реагирования кода «ЭМБЕР». Ожидайте.", "ОБР в пути.") // -- RED TEAM -- @@ -337,7 +337,7 @@ GLOBAL_LIST_EMPTY(ert_request_messages) /datum/response_team/red/announce_team() if(silent) return - GLOB.major_announcement.Announce("Attention, [station_name()]. We are sending a code RED Emergency Response Team. Standby.", "ERT En-Route") + GLOB.major_announcement.Announce("Внимание, [station_name()]. Мы направляем усиленный отряд быстрого реагирования кода «РЭД». Ожидайте.", "ОБР в пути.") // -- GAMMA TEAM -- @@ -353,7 +353,7 @@ GLOBAL_LIST_EMPTY(ert_request_messages) /datum/response_team/gamma/announce_team() if(silent) return - GLOB.major_announcement.Announce("Attention, [station_name()]. We are sending a code GAMMA elite Emergency Response Team. Standby.", "ERT En-Route") + GLOB.major_announcement.Announce("Внимание, [station_name()]. Мы направляем элитный отряд быстрого реагирования кода «ГАММА». Ожидайте.", "ОБР в пути.") /datum/outfit/job/centcom/response_team name = "Response team" diff --git a/code/modules/ruins/syndicate_space_base.dm b/code/modules/ruins/syndicate_space_base.dm index 67d9fcc50dfb..bd51a8c30717 100644 --- a/code/modules/ruins/syndicate_space_base.dm +++ b/code/modules/ruins/syndicate_space_base.dm @@ -17,7 +17,7 @@ /obj/item/grenade/chem_grenade/cryo = 5, /obj/item/grenade/chem_grenade/adv_release = 5, /obj/item/reagent_containers/drinks/bottle/holywater = 1) - slogan_list = list("It's not pyromania if you're getting paid!","You smell that? Plasma, son. Nothing else in the world smells like that.","I love the smell of Plasma in the morning.") + slogan_list = list("Это не пиромания, если тебе платят!","Чувствуешь запах? Плазма, сынок. Больше ничто в мире так не пахнет.","Люблю запах плазмы по утрам.") resistance_flags = FIRE_PROOF // Spawners diff --git a/code/modules/security_levels/keycard_authentication.dm b/code/modules/security_levels/keycard_authentication.dm index 441b31198b22..d1182366058f 100644 --- a/code/modules/security_levels/keycard_authentication.dm +++ b/code/modules/security_levels/keycard_authentication.dm @@ -186,10 +186,10 @@ revoke_station_all_access() if("Emergency Response Team") if(is_ert_blocked()) - atom_say("All Emergency Response Teams are dispatched and can not be called at this time.") + atom_say("ОБР недоступен и не может быть вызван в данный момент.") return - atom_say("ERT request transmitted!") - GLOB.command_announcer.autosay("ERT request transmitted. Reason: [ert_reason]", name, follow_target_override = src) + atom_say("Запрос ОБР отправлен!") + GLOB.command_announcer.autosay("Отправлен запрос ОБР. Причина запроса: [ert_reason].", name, follow_target_override = src) print_centcom_report(ert_reason, station_time_timestamp() + " ERT Request") SSblackbox.record_feedback("nested tally", "keycard_auths", 1, list("ert", "called")) @@ -225,7 +225,7 @@ GLOBAL_VAR_INIT(station_all_access, 0) for(var/obj/machinery/door/airlock/D in A) D.emergency = 1 D.update_icon() - GLOB.minor_announcement.Announce("Access restrictions on maintenance and external airlocks have been removed.") + GLOB.minor_announcement.Announce("Ограничения на доступ к техническим и внешним шлюзам были сняты.") GLOB.maint_all_access = 1 SSblackbox.record_feedback("nested tally", "keycard_auths", 1, list("emergency maintenance access", "enabled")) @@ -234,7 +234,7 @@ GLOBAL_VAR_INIT(station_all_access, 0) for(var/obj/machinery/door/airlock/D in A) D.emergency = 0 D.update_icon() - GLOB.minor_announcement.Announce("Access restrictions on maintenance and external airlocks have been re-added.") + GLOB.minor_announcement.Announce("Ограничения на доступ к техническим и внешним шлюзам были восстановлены.") GLOB.maint_all_access = 0 SSblackbox.record_feedback("nested tally", "keycard_auths", 1, list("emergency maintenance access", "disabled")) @@ -243,7 +243,7 @@ GLOBAL_VAR_INIT(station_all_access, 0) if(is_station_level(D.z)) D.emergency = 1 D.update_icon() - GLOB.minor_announcement.Announce("Access restrictions on all station airlocks have been removed due to an ongoing crisis. Trespassing laws still apply unless ordered otherwise by Command staff.") + GLOB.minor_announcement.Announce("Ограничения доступа ко всем шлюзам станции были сняты в связи с текущим чрезвычайным положением. Законы о незаконном проникновении по-прежнему действуют, если командование не распорядится иначе.") GLOB.station_all_access = 1 SSblackbox.record_feedback("nested tally", "keycard_auths", 1, list("emergency station access", "enabled")) @@ -252,6 +252,6 @@ GLOBAL_VAR_INIT(station_all_access, 0) if(is_station_level(D.z)) D.emergency = 0 D.update_icon() - GLOB.minor_announcement.Announce("Access restrictions on all station airlocks have been re-added. Seek station AI or a colleague's assistance if you are stuck.") + GLOB.minor_announcement.Announce("Ограничения доступа ко всем шлюзам станции были восстановлены. Обратитесь за помощью к ИИ станции или к коллегам, если вы оказались в затруднительном положении.") GLOB.station_all_access = 0 SSblackbox.record_feedback("nested tally", "keycard_auths", 1, list("emergency station access", "disabled")) diff --git a/code/modules/security_levels/security_level_datums.dm b/code/modules/security_levels/security_level_datums.dm index 9cba1e40f4c1..49dc252a6198 100644 --- a/code/modules/security_levels/security_level_datums.dm +++ b/code/modules/security_levels/security_level_datums.dm @@ -49,8 +49,8 @@ number_level = SEC_LEVEL_GREEN ai_announcement_sound = 'sound/AI/green.ogg' color = "limegreen" - lowering_to_announcement_title = "Attention! Security level lowered to Green." - lowering_to_announcement_text = "All threats to the station have passed. All weapons need to be holstered and privacy laws are once again fully enforced." + lowering_to_announcement_title = "ВНИМАНИЕ! Уровень угрозы понижен до ЗЕЛЁНОГО." + lowering_to_announcement_text = "Все угрозы для станции устранены. Все оружие должно быть в кобуре, и законы о конфиденциальности вновь полностью соблюдаются." /** * BLUE @@ -63,10 +63,10 @@ elevating_to_sound = 'sound/misc/notice1.ogg' ai_announcement_sound = 'sound/AI/blue.ogg' color = "dodgerblue" - lowering_to_announcement_title = "Attention! Security level lowered to Blue." - lowering_to_announcement_text = "The immediate threat has passed. Security may no longer have weapons drawn at all times, but may continue to have them visible. Random searches are still allowed." - elevating_to_announcement_title = "Attention! Security level elevated to Blue." - elevating_to_announcement_text = "The station has received reliable information about possible hostile activity on the station. Security staff may have weapons visible and random searches are permitted." + lowering_to_announcement_title = "ВНИМАНИЕ! Уровень угрозы понижен до СИНЕГО." + lowering_to_announcement_text = "Непосредственная угроза миновала. Служба безопасности может больше не держать оружие в полной боевой готовности, но может по-прежнему держать его на виду. Выборочные обыски запрещены." + elevating_to_announcement_title = "ВНИМАНИЕ! Уровень угрозы повышен до СИНЕГО." + elevating_to_announcement_text = "Станция получила надежные данные о возможной враждебной активности на борту. Служба Безопасности может держать оружие на виду." /** * RED @@ -81,10 +81,10 @@ color = "red" status_display_mode = STATUS_DISPLAY_ALERT status_display_data = "redalert" - lowering_to_announcement_title = "Attention! Code Red!" - lowering_to_announcement_text = "The station's self-destruct mechanism has been deactivated, but there is still an immediate and serious threat to the station. Security may have weapons unholstered at all times. Random searches are allowed and advised." - elevating_to_announcement_title = "Attention! Code Red!" - elevating_to_announcement_text = "There is an immediate and serious threat to the station. Security may have weapons unholstered at all times. Random searches are allowed and advised." + lowering_to_announcement_title = "ВНИМАНИЕ! КОД КРАСНЫЙ!" + lowering_to_announcement_text = "Код был снижен до красного. Станции по-прежнему грозит серьёзная опасность. Службе Безопасности рекомендуется иметь оружие в полной боевой готовности. Выборочные обыски разрешены." + elevating_to_announcement_title = "ВНИМАНИЕ! КОД КРАСНЫЙ!" + elevating_to_announcement_text = "Станции грозит серьёзная опасность. Службе Безопасности рекомендуется иметь оружие в полной боевой готовности. Выборочные обыски разрешены." /** * Gamma @@ -100,10 +100,10 @@ color = "gold" status_display_mode = STATUS_DISPLAY_ALERT status_display_data = "gammaalert" - lowering_to_announcement_title = "Attention! Gamma security level activated!" - lowering_to_announcement_text = "Central Command has ordered the Gamma security level on the station. Security is to have weapons equipped at all times, and all civilians are to immediately seek out command staff for instructions." - elevating_to_announcement_text = "Central Command has ordered the Gamma security level on the station. Security is to have weapons equipped at all times, and all civilians are to immediately seek out command staff for instructions." - elevating_to_announcement_title = "Attention! Gamma security level activated!" + lowering_to_announcement_title = "Внимание! Код ГАММА!" + lowering_to_announcement_text = "Центральным Командованием был установлен Код Гамма на станции. Служба безопасности должна быть полностью вооружена. Гражданский персонал обязан немедленно обратиться к Главам отделов для получения дальнейших указаний." + elevating_to_announcement_text = "Центральным Командованием был установлен Код Гамма на станции. Служба безопасности должна быть полностью вооружена. Гражданский персонал обязан немедленно обратиться к Главам отделов для получения дальнейших указаний." + elevating_to_announcement_title = "Внимание! Код ГАММА!" /** * Epsilon @@ -120,10 +120,10 @@ color = "blueviolet" status_display_mode = STATUS_DISPLAY_ALERT status_display_data = "epsilonalert" - lowering_to_announcement_title = "Attention! Epsilon security level activated!" - lowering_to_announcement_text = "Central Command has ordered the Epsilon security level on the station. Consider all contracts terminated." - elevating_to_announcement_title = "Attention! Epsilon security level activated!" - elevating_to_announcement_text = "Central Command has ordered the Epsilon security level on the station. Consider all contracts terminated." + lowering_to_announcement_title = "ВНИМАНИЕ! КОД ЭПСИЛОН!" + lowering_to_announcement_text = "Центральным командованием был установлен код ЭПСИЛОН. Все контракты расторгнуты." + elevating_to_announcement_title = "ВНИМАНИЕ! КОД ЭПСИЛОН!" + elevating_to_announcement_text = "Центральным командованием был установлен код ЭПСИЛОН. Все контракты расторгнуты." /datum/security_level/epsilon/pre_change() sound_to_playing_players_on_station_level(S = sound('sound/effects/powerloss.ogg')) @@ -141,5 +141,5 @@ color = "orangered" status_display_mode = STATUS_DISPLAY_ALERT status_display_data = "deltaalert" - elevating_to_announcement_title = "Attention! Delta security level reached!" - elevating_to_announcement_text = "The station's self-destruct mechanism has been engaged. All crew are instructed to obey all instructions given by heads of staff. Any violations of these orders can be punished by death. This is not a drill." + elevating_to_announcement_title = "ВНИМАНИЕ! КОД ДЕЛЬТА!" + elevating_to_announcement_text = "Механизм самоуничтожения станции задействован. Все члены экипажа обязан подчиняться всем указаниям, данными Главами отделов. Любые нарушения этих приказов наказуемы уничтожением на месте. Это не учебная тревога." diff --git a/code/modules/shuttle/emergency.dm b/code/modules/shuttle/emergency.dm index 1e2c2b79e979..6119d09b9014 100644 --- a/code/modules/shuttle/emergency.dm +++ b/code/modules/shuttle/emergency.dm @@ -77,20 +77,20 @@ if(auth_need - authorized.len > 0) message_admins("[key_name_admin(user)] has authorized early shuttle launch.") log_game("[key_name(user)] has authorized early shuttle launch in ([x], [y], [z]).") - GLOB.minor_announcement.Announce("[auth_need - authorized.len] more authorization(s) needed until shuttle is launched early") + GLOB.minor_announcement.Announce("[auth_need - authorized.len] авторизаций(-я) необходимо для досрочного запуска шаттла.") else message_admins("[key_name_admin(user)] has launched the emergency shuttle [seconds] seconds before launch.") log_game("[key_name(user)] has launched the emergency shuttle in ([x], [y], [z]) [seconds] seconds before launch.") - GLOB.minor_announcement.Announce("The emergency shuttle will launch in 10 seconds") + GLOB.minor_announcement.Announce("Эвакуационный шаттл отправляется через 10 секунд.") SSshuttle.emergency.setTimer(100) if("Repeal") if(authorized.Remove(W:registered_name)) - GLOB.minor_announcement.Announce("[auth_need - authorized.len] authorizations needed until shuttle is launched early") + GLOB.minor_announcement.Announce("[auth_need - authorized.len] авторизаций(-я) необходимо для досрочного запуска шаттла.") if("Abort") if(authorized.len) - GLOB.minor_announcement.Announce("All authorizations to launch the shuttle early have been revoked.") + GLOB.minor_announcement.Announce("Все авторизации на досрочный запуск шаттла были отозваны.") authorized.Cut() /obj/machinery/computer/emergency_shuttle/emag_act(mob/user) @@ -98,7 +98,7 @@ var/time = SSshuttle.emergency.timeLeft() message_admins("[key_name_admin(user)] has emagged the emergency shuttle: [time] seconds before launch.") log_game("[key_name(user)] has emagged the emergency shuttle in ([x], [y], [z]): [time] seconds before launch.") - GLOB.minor_announcement.Announce("The emergency shuttle will launch in 10 seconds", "SYSTEM ERROR:") + GLOB.minor_announcement.Announce("Эвакуационный шаттл отправляется через 10 секунд.", "СИСТЕМНАЯ ОШИБКА:") SSshuttle.emergency.setTimer(100) emagged = TRUE return TRUE @@ -110,7 +110,7 @@ if(hijack_announce) announce_hijack_stage() hijack_last_stage_increase = world.time - atom_say("Navigational protocol error! Rebooting systems.") + atom_say("Ошибка навигационных протоколов! Перезагрузка систем.") if(shuttle.mode == SHUTTLE_ESCAPE) if(shuttle.hijack_status == HIJACKED) shuttle.setTimer(hijack_completion_flight_time_set) @@ -141,11 +141,11 @@ to_chat(user, "The emergency shuttle is already loaded with a corrupt navigational payload. What more do you want from it?") return if(hijack_last_stage_increase >= world.time - hijack_stage_cooldown) - atom_say("ACCESS DENIED: Console is temporarily on security lockdown. Please try again.") + atom_say("ДОСТУП ЗАПРЕЩЕН: Консоль временно заблокирована. Пожалуйста, попробуйте еще раз.") return hijack_hacking = TRUE to_chat(user, "You [SSshuttle.emergency.hijack_status == NOT_BEGUN ? "begin" : "continue"] to override [src]'s navigational protocols.") - atom_say("Software override initiated.") + atom_say("Инициировано программное переопределение.") playsound(src, 'sound/machines/terminal_on.ogg', 100, FALSE) var/turf/console_hijack_turf = get_turf(src) message_admins("[src] is being overridden for hijack by [ADMIN_LOOKUPFLW(user)] in [ADMIN_VERBOSEJMP(console_hijack_turf)]") @@ -263,14 +263,14 @@ SSshuttle.emergencyLastCallLoc = null if(canRecall) GLOB.major_announcement.Announce( - "The emergency shuttle has been called. [redAlert ? "Red Alert state confirmed: Dispatching priority shuttle. " : "" ]It will arrive in [timeLeft(600)] minutes.[reason][SSshuttle.emergencyLastCallLoc ? "\n\nCall signal traced. Results can be viewed on any communications console." : "" ]", - new_title = "Priority Announcement", + GLOB.major_announcement.Announce("Был вызван эвакуационный шаттл. [redAlert ? "Красный уровень угрозы подтверждён: отправлен приоритетный шаттл. " : "" ]Он прибудет в течение [timeLeft(600)] минут.[reason][SSshuttle.emergencyLastCallLoc ? "\n\nВызов шаттла отслежен. Результаты можно просмотреть на любой коммуникационной консоли." : "" ]"), + new_title = "Приоритетное оповещение.", new_sound = sound('sound/AI/eshuttle_call.ogg') ) else GLOB.major_announcement.Announce( - "The crew transfer shuttle has been called. [redAlert ? "Red Alert state confirmed: Dispatching priority shuttle. " : "" ]It will arrive in [timeLeft(600)] minutes.[reason]", - new_title = "Priority Announcement", + "Был вызван эвакуационный шаттл. [redAlert ? "Красный уровень угрозы подтверждён: отправлен приоритетный шаттл. " : "" ]Он прибудет в течение [timeLeft(600)] минут.[reason]", + new_title = "Приоритетное оповещение.", new_sound = sound('sound/AI/cshuttle.ogg') ) @@ -289,8 +289,8 @@ else SSshuttle.emergencyLastCallLoc = null GLOB.major_announcement.Announce( - "The emergency shuttle has been recalled[byCC ? " by Central Command." : SSshuttle.emergencyLastCallLoc ? ". Recall signal traced. Results can be viewed on any communications console." : "." ]", - new_title = "Priority Announcement", + "Эвакуационный шаттл был отозван[byCC ? " by Central Command." : SSshuttle.emergencyLastCallLoc ? ". Отзыв шаттла отслежен. Результаты можно просмотреть на любой коммуникационной консоли." : "." ]", + new_title = "Приоритетное оповещение.", new_sound = sound('sound/AI/eshuttle_recall.ogg') ) @@ -364,22 +364,22 @@ timer = world.time if(canRecall) GLOB.major_announcement.Announce( - "The emergency shuttle has docked with the station. You have [timeLeft(600)] minutes to board the emergency shuttle.", - new_title = "Priority Announcement", + "Эвакуационный шаттл пристыковался со станцией. У вас есть [timeLeft(600)] минут(-ы) чтобы прибыть на борт эвакуационного шаттла.", + new_title = "Приоритетное оповещение.", new_sound = sound('sound/AI/eshuttle_dock.ogg') ) else GLOB.major_announcement.Announce( - "The crew transfer shuttle has docked with the station. You have [timeLeft(600)] minutes to board the crew transfer shuttle.", - new_title = "Priority Announcement", + "Транспортный шаттл пристыковался со станцией. У вас есть [timeLeft(600)] минут(-ы) чтобы прибыть на борт транспортного шаттла.", + new_title = "Приоритетное оповещение.", new_sound = sound('sound/AI/cshuttle_dock.ogg') ) if(SHUTTLE_DOCKED) if(time_left <= 0 && length(SSshuttle.hostile_environments)) GLOB.major_announcement.Announce( - "Hostile environment detected. Departure has been postponed indefinitely pending conflict resolution.", - new_title = "Priority Announcement" + "Обнаружено враждебное окружение. Отлет отложен на неопределенный срок до решения возникшей проблемы.", + new_title = "Приоритетное оповещение." ) sound_played = 0 mode = SHUTTLE_STRANDED @@ -403,8 +403,8 @@ mode = SHUTTLE_ESCAPE timer = world.time GLOB.major_announcement.Announce( - "The Emergency Shuttle has left the station. Estimate [timeLeft(600)] minutes until the shuttle docks at Central Command.", - new_title = "Priority Announcement" + "Эвакуационный шаттл покинул станцию. Расчетное время прибытия на Центральное Командование: [timeLeft(600)] минут(-ы).", + new_title = "Приоритетное оповещение." ) if(SHUTTLE_ESCAPE) @@ -423,8 +423,8 @@ if(is_hijacked()) destination_dock = "emergency_syndicate" GLOB.major_announcement.Announce( - "Corruption detected in shuttle navigation protocols. Please contact your supervisor.", - new_title = "Priority Announcement" + "Обнаружен сбой в навигационных протоколах. Пожалуйста, свяжитесь с руководством.", + new_title = "Приоритетное оповещение." ) dock_id(destination_dock) diff --git a/code/modules/shuttle/shuttle.dm b/code/modules/shuttle/shuttle.dm index 79fef2d6b81f..fbc126816518 100644 --- a/code/modules/shuttle/shuttle.dm +++ b/code/modules/shuttle/shuttle.dm @@ -853,7 +853,7 @@ return switch(SSshuttle.moveShuttle(shuttleId, destination, TRUE, usr)) if(0) - atom_say("Shuttle departing! Please stand away from the doors.") + atom_say("Шаттл отправляется! Пожалуйста, отойдите от шлюзов.") usr.create_log(MISC_LOG, "used [src] to call the [shuttleId] shuttle") if(!moved) moved = TRUE @@ -864,7 +864,7 @@ if(2) to_chat(usr, "Unable to comply.") if(3) - atom_say("Shuttle has already received a pending movement request. Please wait until the movement request is processed.") + atom_say("Шаттл уже получил запрос на перемещение. Пожалуйста, подождите, пока запрос на перемещение не будет обработан.") /obj/machinery/computer/shuttle/emag_act(mob/user) diff --git a/code/modules/station_goals/bluespace_tap.dm b/code/modules/station_goals/bluespace_tap.dm index a87db6da4c15..469e248f95e6 100644 --- a/code/modules/station_goals/bluespace_tap.dm +++ b/code/modules/station_goals/bluespace_tap.dm @@ -401,7 +401,7 @@ input_level-- update_icon() if(prob(input_level - safe_levels + (emagged * 5))) //at dangerous levels, start doing freaky shit. prob with values less than 0 treat it as 0 - GLOB.major_announcement.Announce("Unexpected power spike during Bluespace Harvester Operation. Extra-dimensional intruder alert. Expected location: [get_area(src).name]. [emagged ? "DANGER: Emergency shutdown failed! Please proceed with manual shutdown." : "Emergency shutdown initiated."]", "Bluespace Harvester Malfunction", 'sound/AI/harvester.ogg') + GLOB.major_announcement.Announce("Произошел непредвиденный скачок напряжения во время работы Блюспейс-сборщика. Обнаружено внепространственное вторжение! Ожидаемое местоположение: [get_area(src).name]. [emagged ? "ОПАСНОСТЬ: Аварийное отключение не удалось! Пожалуйста, перейдите к ручному отключению." : "Начато аварийное отключение."]", "ВНИМАНИЕ: Обнаружена неисправность Блюспейс-сборщика!", 'sound/AI/harvester.ogg') if(!emagged) input_level = 0 //emergency shutdown unless we're sabotaged desired_level = 0 diff --git a/code/modules/station_goals/station_goal.dm b/code/modules/station_goals/station_goal.dm index 683c1bdc35d0..d47b2aabc6b2 100644 --- a/code/modules/station_goals/station_goal.dm +++ b/code/modules/station_goals/station_goal.dm @@ -12,7 +12,7 @@ var/report_message = "Complete this goal." /datum/station_goal/proc/send_report() - GLOB.minor_announcement.Announce("Priority Nanotrasen directive received. Project \"[name]\" details inbound.", "Incoming Priority Message", 'sound/AI/commandreport.ogg') + GLOB.minor_announcement.Announce("Получена приоритетная директива Нанотрейзен. Прилагаются детали проекта \"[name]\".", "ВНИМАНИЕ: Поступила директива Нанотрейзен.", 'sound/AI/commandreport.ogg') print_command_report(get_report(), "Nanotrasen Directive [pick(GLOB.phonetic_alphabet)] \Roman[rand(1,50)]", FALSE) on_report() diff --git a/code/modules/supply/supply_console.dm b/code/modules/supply/supply_console.dm index 34b76d5300a5..4a7161b1bad6 100644 --- a/code/modules/supply/supply_console.dm +++ b/code/modules/supply/supply_console.dm @@ -389,7 +389,7 @@ update_static_data(user) SStgui.update_uis(src) return TRUE - atom_say("ERROR: Account tied to order cannot pay, auto-denying order") + atom_say("ОШИБКА: Счет, связанный с заказом, не может быть использован для оплаты. Заказ автоматически отклонен.") SSeconomy.request_list -= order //just remove order at this poin else return TRUE @@ -412,7 +412,7 @@ investigate_log("| [key_name(user)] has authorized an order for [pack.name]. Remaining Cargo Balance: [cargo_account.credit_balance].", "cargo") SSblackbox.record_feedback("tally", "cargo_shuttle_order", 1, pack.name) else - atom_say("ERROR: Account tied to order cannot pay, auto-denying order") + atom_say("ОШИБКА: Счет, связанный с заказом, не может быть использован для оплаты. Заказ автоматически отклонен.") SSeconomy.request_list -= order break diff --git a/code/modules/tgui/modules/crew_monitor.dm b/code/modules/tgui/modules/crew_monitor.dm index e0552ebd2f04..44ceeef2a106 100644 --- a/code/modules/tgui/modules/crew_monitor.dm +++ b/code/modules/tgui/modules/crew_monitor.dm @@ -1,5 +1,5 @@ /datum/ui_module/crew_monitor - name = "Crew monitor" + name = "Монитор экипажа" var/is_advanced = FALSE var/viewing_current_z_level diff --git a/code/modules/tgui/modules/ert_manager.dm b/code/modules/tgui/modules/ert_manager.dm index d68f42cd5202..2d0d722f23a8 100644 --- a/code/modules/tgui/modules/ert_manager.dm +++ b/code/modules/tgui/modules/ert_manager.dm @@ -107,7 +107,7 @@ message_admins("[key_name_admin(usr)] dispatched a [silenced ? "silent " : ""][ert_type] ERT. Slots: [slot_text]", 1) log_admin("[key_name(usr)] dispatched a [silenced ? "silent " : ""][ert_type] ERT. Slots: [slot_text]") if(!silenced) - GLOB.major_announcement.Announce("Attention, [station_name()]. We are attempting to assemble an ERT. Standby.", "ERT Protocol Activated") + GLOB.major_announcement.Announce("Внимание, [station_name()]. Мы рассматриваем возможность отправки ОБР, ожидайте.", "ВНИМАНИЕ: Активирован протокол ОБР.") trigger_armed_response_team(D, commander_slots, security_slots, medical_slots, engineering_slots, janitor_slots, paranormal_slots, cyborg_slots, cyborg_security) if("view_player_panel") @@ -115,9 +115,9 @@ if("deny_ert") GLOB.ert_request_answered = TRUE - var/message = "[station_name()], we are unfortunately unable to send you an Emergency Response Team at this time." + var/message = "[station_name()], к сожалению, в данный момент мы не можем выслать вам ОБР." if(params["reason"]) message += " Your ERT request has been denied for the following reasons:\n\n[params["reason"]]" - GLOB.major_announcement.Announce(message, "ERT Unavailable") + GLOB.major_announcement.Announce(message, "ОБР недоступно") else return FALSE diff --git a/code/modules/tgui/modules/law_manager.dm b/code/modules/tgui/modules/law_manager.dm index 65f4c23f78d1..27d2c5935b66 100644 --- a/code/modules/tgui/modules/law_manager.dm +++ b/code/modules/tgui/modules/law_manager.dm @@ -1,5 +1,5 @@ /datum/ui_module/law_manager - name = "Law manager" + name = "Менеджер законов" var/ion_law = "IonLaw" var/zeroth_law = "ZerothLaw" var/inherent_law = "InherentLaw" @@ -69,27 +69,27 @@ owner.add_supplied_law(supplied_law_position, supplied_law) if("change_zeroth_law") - var/new_law = tgui_input_text(ui.user, "Enter new law Zero. Leaving the field blank will cancel the edit.", "Edit Law", zeroth_law) + var/new_law = tgui_input_text(ui.user, "Введите новый Нулевой закон. Оставьте поле пустым для отмены изменений.", "Смена закона", zeroth_law) if(new_law && new_law != zeroth_law && (!..())) zeroth_law = new_law if("change_ion_law") - var/new_law = tgui_input_text(ui.user, "Enter new ion law. Leaving the field blank will cancel the edit.", "Edit Law", ion_law) + var/new_law = tgui_input_text(ui.user, "Введите новый ионный закон. Оставьте поле пустым для отмены изменений.", "Смена закона", ion_law) if(new_law && new_law != ion_law && (!..())) ion_law = new_law if("change_inherent_law") - var/new_law = tgui_input_text(ui.user, "Enter new inherent law. Leaving the field blank will cancel the edit.", "Edit Law", inherent_law) + var/new_law = tgui_input_text(ui.user, "Введите новый основной закон. Оставьте поле пустым для отмены изменений.", "Смена закона", inherent_law) if(new_law && new_law != inherent_law && (!..())) inherent_law = new_law if("change_supplied_law") - var/new_law = tgui_input_text(ui.user, "Enter new supplied law. Leaving the field blank will cancel the edit.", "Edit Law", supplied_law) + var/new_law = tgui_input_text(ui.user, "Введите новый дополнительный закон. Оставьте поле пустым для отмены изменений.", "Смена закона", supplied_law) if(new_law && new_law != supplied_law && (!..())) supplied_law = new_law if("change_supplied_law_position") - var/new_position = tgui_input_number(ui.user, "Enter new supplied law position between 1 and [MAX_SUPPLIED_LAW_NUMBER], inclusive. Inherent laws at the same index as a supplied law will not be stated.", "Law Position", supplied_law_position, MAX_SUPPLIED_LAW_NUMBER, 1) + var/new_position = tgui_input_number(ui.user, "Введите позицию от 1 до [MAX_SUPPLIED_LAW_NUMBER] включительно. Дополнительные законы с такой же позицией, что и основные, не будут проговариваться.", "Позиция закона", supplied_law_position, MAX_SUPPLIED_LAW_NUMBER, 1) if(isnum(new_position) && (!..())) supplied_law_position = new_position @@ -98,10 +98,10 @@ var/datum/ai_law/AL = locate(params["edit_law"]) in owner.laws.all_laws() // Dont allow non-admins to edit their own malf laws if(istype(AL, /datum/ai_law/zero) && (!check_rights(R_ADMIN))) - to_chat(ui.user, "You can't edit that law.") + to_chat(ui.user, "Вы не можете изменить данный закон.") return if(AL) - var/new_law = tgui_input_text(ui.user, "Enter new law. Leaving the field blank will cancel the edit.", "Edit Law", AL.law) + var/new_law = tgui_input_text(ui.user, "Введите новый закон. Оставьте поле пустым для отмены изменений.", "Смена закона", AL.law) if(new_law && new_law != AL.law && is_malf(ui.user) && (!..())) log_and_message_admins("has changed a law of [owner] from '[AL.law]' to '[new_law]'") AL.law = new_law @@ -111,7 +111,7 @@ var/datum/ai_law/AL = locate(params["delete_law"]) in owner.laws.all_laws() // Dont allow non-admins to delete their own malf laws if(istype(AL, /datum/ai_law/zero) && (!check_rights(R_ADMIN))) - to_chat(ui.user, "You can't delete that law.") + to_chat(ui.user, "Вы не можете удалить данный закон.") return if(AL && is_malf(ui.user)) owner.delete_law(AL) @@ -138,15 +138,15 @@ current_view = 0 if("notify_laws") - to_chat(owner, "Law Notice") + to_chat(owner, "Оповещение о законах") owner.laws.show_laws(owner) if(isAI(owner)) var/mob/living/silicon/ai/AI = owner for(var/mob/living/silicon/robot/R in AI.connected_robots) - to_chat(R, "Law Notice") + to_chat(R, "Оповещение о законах") R.laws.show_laws(R) if(ui.user != owner) - to_chat(ui.user, "Laws displayed.") + to_chat(ui.user, "Законы отображены.") /datum/ui_module/law_manager/ui_state(mob/user) diff --git a/code/modules/vote/vote_datum.dm b/code/modules/vote/vote_datum.dm index 69e164e5c0d4..77911aa0198c 100644 --- a/code/modules/vote/vote_datum.dm +++ b/code/modules/vote/vote_datum.dm @@ -1,13 +1,13 @@ /datum/vote /// Person who started the vote - var/initiator = "the server" + var/initiator = "серверу" /// world.time the vote started at var/started_time /// The question being asked var/question /// Vote type text, for showing in UIs and stuff - var/vote_type_text = "unset" + var/vote_type_text = "что-то особенное" /// Do we want to show the vote counts as it goes var/show_counts = FALSE /// Vote result type. This determines how a winner is picked @@ -22,7 +22,7 @@ /datum/vote/New(_initiator, _question, list/_choices, _is_custom = FALSE) if(SSvote.active_vote) - CRASH("Attempted to start another vote with one already in progress!") + CRASH("Попытка начать голосование во время того, как идёт другое!") if(_initiator) initiator = _initiator @@ -38,15 +38,15 @@ generate_choices() /datum/vote/proc/start() - var/text = "[capitalize(vote_type_text)] vote started by [initiator]." + var/text = "Голосование за [capitalize(vote_type_text)] начато благодаря [initiator]." if(is_custom) vote_type_text = "custom" text += "\n[question]" if(usr) - log_admin("[capitalize(vote_type_text)] ([question]) vote started by [key_name(usr)].") + log_admin("[capitalize(vote_type_text)] ([question]) голосование начато благодаря [key_name(usr)].") else if(usr) - log_admin("[capitalize(vote_type_text)] vote started by [key_name(usr)].") + log_admin("Голосование за [capitalize(vote_type_text)] начато благодаря [key_name(usr)].") log_vote(text) started_time = world.time @@ -61,7 +61,7 @@ switch(vote_result_type) if(VOTE_RESULT_TYPE_MAJORITY) if(!length(voted)) - to_chat(world, "No votes were cast. Do you all hate democracy?!") // shame them + to_chat(world, "Нет ни одного голоса. Вы все ненавидите демократию?!") // shame them return null var/list/results = list() @@ -99,18 +99,18 @@ if(length(winning_options) > 1) var/random_dictator = pick(winning_options) - to_chat(world, "Its a tie between [english_list(winning_options)]. Picking [random_dictator] at random.") // shame them + to_chat(world, "Ничья между [english_list(winning_options)]. Случайный выбор: [random_dictator].") // shame them return random_dictator // If we got here there must only be one thing in the list var/res = winning_options[1] if(res in choices) - to_chat(world, "[res] won the vote.") + to_chat(world, "[res] выигрывает голосование.") return res - to_chat(world, "The winner of the vote ([sanitize(res)]) isnt a valid choice? What the heck?") - stack_trace("Vote of type [type] concluded with an invalid answer. Answer was [sanitize(res)], choices were [json_encode(choices)]") + to_chat(world, "Победитель голосования ([sanitize(res)]) не является допустимым выбором? Какого чёрта?") + stack_trace("Голосование типа [type] завершилось недопустимым ответом. Ответом был [sanitize(res)], вариантами были: [json_encode(choices)]") return null @@ -118,8 +118,8 @@ /datum/vote/proc/announce(start_text) to_chat(world, chat_box_purple( "[start_text]

\ - Click here or type Vote to place your vote.
\ - You have [GLOB.configuration.vote.vote_time / 10] seconds to vote.
")) + Нажмите здесь или введите Vote, чтобы оставить голос.
\ + У вас [GLOB.configuration.vote.vote_time / 10] секунд на выбор.
")) SEND_SOUND(world, sound('sound/ambience/alarm4.ogg')) @@ -155,7 +155,7 @@ /datum/vote/ui_interact(mob/user, datum/tgui/ui = null) ui = SStgui.try_update_ui(user, src, ui) if(!ui) - ui = new(user, src, "VotePanel", "Vote Panel") + ui = new(user, src, "VotePanel", "Панель голосования") ui.open() /datum/vote/ui_data(mob/user) @@ -198,4 +198,4 @@ if(params["target"] in choices) voted[usr.ckey] = params["target"] else - message_admins("\[EXPLOIT] User [key_name_admin(usr)] spoofed a vote in the vote panel!") + message_admins("\[EXPLOIT] Пользователь [key_name_admin(usr)] подделал голосование в панели!") diff --git a/code/modules/vote/vote_presets.dm b/code/modules/vote/vote_presets.dm index 6927fa4fea7c..d28a5596df38 100644 --- a/code/modules/vote/vote_presets.dm +++ b/code/modules/vote/vote_presets.dm @@ -1,22 +1,22 @@ // Crew transfer vote /datum/vote/crew_transfer - question = "End the shift" - choices = list("Initiate Crew Transfer", "Continue The Round") - vote_type_text = "crew transfer" + question = "Окончание смены" + choices = list("Инициировать эвакуацию", "Продолжить раунд") + vote_type_text = "эвакуацию" /datum/vote/crew_transfer/New() if(SSticker.current_state < GAME_STATE_PLAYING) - CRASH("Attempted to call a shuttle vote before the game starts!") + CRASH("Попытка вызвать голосование за шаттл до начала!") ..() /datum/vote/crew_transfer/handle_result(result) - if(result == "Initiate Crew Transfer") + if(result == "Инициировать эвакуацию") init_shift_change(null, TRUE) // Map vote /datum/vote/map - question = "Map Vote" - vote_type_text = "map" + question = "Голосование за карту" + vote_type_text = "карту" /datum/vote/map/generate_choices() for(var/x in subtypesof(/datum/map)) @@ -35,7 +35,7 @@ /datum/vote/map/announce() ..() for(var/mob/M in GLOB.player_list) - M.throw_alert("Map Vote", /atom/movable/screen/alert/notify_mapvote, timeout_override = GLOB.configuration.vote.vote_time) + M.throw_alert("Голосование за карту", /atom/movable/screen/alert/notify_mapvote, timeout_override = GLOB.configuration.vote.vote_time) /datum/vote/map/handle_result(result) // Find target map. @@ -48,5 +48,5 @@ // Set top voted map if(result == "[initial(M.fluff_name)] ([initial(M.technical_name)])") top_voted_map = M - to_chat(world, "Map for next round: [initial(top_voted_map.fluff_name)] ([initial(top_voted_map.technical_name)])") + to_chat(world, "Карта следующего раунда: [initial(top_voted_map.fluff_name)] ([initial(top_voted_map.technical_name)])") SSmapping.next_map = new top_voted_map diff --git a/code/modules/vote/vote_verb.dm b/code/modules/vote/vote_verb.dm index 1e44179142d4..04abf4d7eb7e 100644 --- a/code/modules/vote/vote_verb.dm +++ b/code/modules/vote/vote_verb.dm @@ -5,18 +5,18 @@ if(SSvote.active_vote) SSvote.active_vote.ui_interact(usr) else - to_chat(usr, "There is no active vote") + to_chat(usr, "Нет активных голосований") /client/proc/start_vote() set category = "Admin" - set name = "Start Vote" - set desc = "Start a vote on the server" + set name = "Начать голосование" + set desc = "Начать голосование на сервере" if(!check_rights(R_ADMIN)) return if(SSvote.active_vote) - to_chat(usr, "A vote is already in progress") + to_chat(usr, "Голосование уже в процессе") return // Ask admins which type of vote they want to start @@ -28,7 +28,7 @@ for(var/vtype in vote_types) votemap["[vtype]"] = vtype - var/choice = tgui_input_list(usr, "Select a vote type", "Vote", vote_types) + var/choice = tgui_input_list(usr, "Выбрать тип голосования", "Голосование", vote_types) if(choice == null) return @@ -40,19 +40,19 @@ return // Its custom, lets ask - var/question = tgui_input_text(usr, "What is the vote for?", "Create Vote", encode = FALSE) + var/question = tgui_input_text(usr, "За что голосуем?", "Create Vote", encode = FALSE) if(!question) return var/list/choices = list() for(var/i in 1 to 10) - var/option = tgui_input_text(usr, "Please enter an option or hit cancel to finish", "Create Vote", encode = FALSE) + var/option = tgui_input_text(usr, "Впишите опцию или нажмите отмену для завершения", "Create Vote", encode = FALSE) if(!option || !usr.client) break choices |= option - var/c2 = tgui_alert(usr, "Show counts while vote is happening?", "Counts", list("Yes", "No")) - var/c3 = input(usr, "Select a result calculation type", "Vote", VOTE_RESULT_TYPE_MAJORITY) as anything in list(VOTE_RESULT_TYPE_MAJORITY) + var/c2 = tgui_alert(usr, "Показать подсчеты во время голосования?", "Голоса", list("Да", "Нет")) + var/c3 = input(usr, "Выберите тип расчета результата", "Голосование", VOTE_RESULT_TYPE_MAJORITY) as anything in list(VOTE_RESULT_TYPE_MAJORITY) var/datum/vote/V = new /datum/vote(usr.ckey, question, choices, TRUE) V.show_counts = (c2 == "Yes") diff --git a/modular_ss220/events/code/headcrabs.dm b/modular_ss220/events/code/headcrabs.dm index 75b409c96c91..f6a71bceb4d8 100644 --- a/modular_ss220/events/code/headcrabs.dm +++ b/modular_ss220/events/code/headcrabs.dm @@ -58,7 +58,7 @@ new /obj/structure/spawner/headcrab(T) /datum/event/headcrabs/announce() - GLOB.major_announcement.Announce("Биосканеры фиксируют размножение хедкрабов на борту станции. Избавьтесь от них, прежде чем это начнет влиять на продуктивность станции", "ВНИМАНИЕ: НЕОПОЗНАННЫЕ ФОРМЫ ЖИЗНИ.") + GLOB.major_announcement.Announce("Биосканеры фиксируют размножение хедкрабов на борту станции. Избавьтесь от них, прежде чем это начнет влиять на продуктивность станции", "ВНИМАНИЕ: Неопознанные формы жизни.") /datum/event_container/mundane/New() . = ..() diff --git a/modular_ss220/events/code/new_space_laws.dm b/modular_ss220/events/code/new_space_laws.dm index fb92dd071542..66aa0c647c62 100644 --- a/modular_ss220/events/code/new_space_laws.dm +++ b/modular_ss220/events/code/new_space_laws.dm @@ -3,7 +3,7 @@ /datum/event/new_space_law/announce() var/list/new_space_laws = file2list("strings/new_space_laws.txt") - GLOB.major_announcement.Announce("В связи с последними событиями в космической политике, [pick(new_space_laws)] теперь признается (или признаются) незаконным(-ыми) по кодовому номеру «1xx» Космического Закона. Вы обязаны незамедлительно исправить ситуацию в течение 15 минут. Мы настоятельно рекомендуем вам поторопиться, чтобы избежать возможных негативных последствий.", "Юридический отдел Нанотрейзен") + GLOB.major_announcement.Announce("В связи с последними событиями в космической политике, [pick(new_space_laws)] теперь признается (или признаются) незаконным(-ыми) по кодовому номеру «1xx» Космического Закона. Вы обязаны незамедлительно исправить ситуацию в течение 15 минут. Мы настоятельно рекомендуем вам поторопиться, чтобы избежать возможных негативных последствий.", "Юридический отдел Нанотрейзен.") /datum/event_container/mundane/New() . = ..() diff --git a/modular_ss220/maps220/code/Areas/station.dm b/modular_ss220/maps220/code/Areas/station.dm index dc18886218e2..9d819d369033 100644 --- a/modular_ss220/maps220/code/Areas/station.dm +++ b/modular_ss220/maps220/code/Areas/station.dm @@ -1,165 +1,165 @@ /* Station */ /area/station/security/checkpoint/south - name = "\improper Escape Security Checkpoint" + name = "Южный Контрольно-Пропускной Пункт Службы Безопасности" /area/station/security/podpilot - name = "\improper Pod Pilot Bay" + name = "Гараж Под-пилота Службы Безопасности" icon_state = "security" /area/station/bridge/checkpoint - name = "\improper Command Checkpoint" + name = "Контрольно-Пропускной Пункт Командования" /area/station/bridge/checkpoint/north - name = "\improper North Command Checkpoint" + name = "Северный Контрольно-Пропускной Пункт Командования" /area/station/bridge/checkpoint/south - name = "\improper South Command Checkpoint" + name = "Южный Контрольно-Пропускной Пункт Командования" /area/station/engineering/hallway - name = "\improper Engineering Hallway" + name = "Коридор Инженерного Отдела" icon_state = "engine_hallway" /area/station/engineering/dronefabricator - name = "\improper Engineering Drone Fabricator Room" + name = "Комната Изготовления Дронов" icon_state = "engi" /area/station/engineering/emergency - name = "\improper Engineering Emergency Supplies" + name = "Аварийные Запасы Инженерного Отдела" icon_state = "emergencystorage" /area/station/engineering/supermatter_room - name = "\improper Supermatter Room" + name = "Комната Суперматерии" icon_state = "engi" /area/station/engineering/utility - name = "\improper Engineering Utility Room" + name = "Инженерная Подсобка" icon_state = "engimaint" /area/station/engineering/mechanic - name = "\improper Pod Mechanic Bay" + name = "Гараж Под Механика" icon_state = "engi" /area/station/engineering/atmos/storage - name = "\improper Atmospherics Storage" + name = "Хранилище Атмосферного Отдела" icon_state = "atmos" /area/station/supply/abandoned_boxroom - name = "\improper Abandoned Boxroom" + name = "Заброшенное Складское Помещение" icon_state = "cargobay" /area/station/public/pool - name = "\improper Pool" + name = "Бассейн" icon_state = "dorms" /area/station/public/vacant_store - name = "\improper Vacant Store" + name = "Вакантный Офис" icon = 'modular_ss220/maps220/icons/areas.dmi' icon_state = "vacantstore" /area/station/maintenance/dormitory_maintenance - name = "\improper Dormitory Maintenance" + name = "Технические Тоннели Дормиториев" icon_state = "smaint" /area/station/maintenance/old_kitchen - name = "\improper Old Kitchen" + name = "Старая Кухня" icon_state = "kitchen" /area/station/maintenance/old_detective - name = "\improper Old Detective Office" + name = "Старый офис Детектива" icon_state = "detective" /area/station/maintenance/virology_maint - name = "\improper Virology Maintenance Construction Area" + name = "Технические Тоннели Вирусологии. Строительная Зона" icon_state = "smaint" /area/station/hallway/secondary/exit/maintenance - name = "\improper Abandoned Escape Shuttle Hallway" + name = "Заброшенный Коридор Эвакуационного Шаттла" icon_state = "escape" /area/station/public/sleep_male - name = "\improper Male Dorm" + name = "Мужские Дормитории" icon_state = "Sleep" /area/station/public/sleep_female - name = "\improper Female Dorm" + name = "Женские Дормитории" icon_state = "Sleep" /area/station/public/toilet/male - name = "\improper Male Toilets" + name = "Мужские Туалеты" /area/station/public/toilet/female - name = "\improper Female Toilets" + name = "Женские Туалеты" /area/station/security/interrogation/observation - name = "Interrogation Observation" + name = "Просматриваемая Допросная" /area/station/service/bar/atrium - name = "Atrium" + name = "Атриум" icon_state = "bar" /* CentCom */ /area/centcom/ss220 - name = "\improper ЦК" + name = "ЦК" icon_state = "centcom" requires_power = FALSE dynamic_lighting = DYNAMIC_LIGHTING_FORCED nad_allowed = TRUE /area/centcom/ss220/evac - name = "\improper ЦК - Эвакуационный шаттл" + name = "ЦК - Эвакуационный шаттл" icon_state = "centcom_evac" /area/centcom/ss220/park - name = "\improper ЦК - Парк" + name = "ЦК - Парк" icon_state = "centcom" /area/centcom/ss220/bar - name = "\improper ЦК - Бар" + name = "ЦК - Бар" icon_state = "centcom" /area/centcom/ss220/general - name = "\improper ЦК - Зона персонала" + name = "ЦК - Зона персонала" icon_state = "centcom" /area/centcom/ss220/supply - name = "\improper ЦК - Доставка" + name = "ЦК - Доставка" icon_state = "centcom_supply" /area/centcom/ss220/admin1 - name = "\improper ЦК - Коридоры ЦК" + name = "ЦК - Коридоры ЦК" icon_state ="centcom" /area/centcom/ss220/admin2 - name = "\improper ЦК - Офисы" + name = "ЦК - Офисы" icon_state = "centcom" /area/centcom/ss220/admin3 - name = "\improper ЦК - ОБР" + name = "ЦК - ОБР" icon_state = "centcom_specops" /area/centcom/ss220/medbay - name = "\improper ЦК - Лазарет" + name = "ЦК - Лазарет" icon_state = "centcom" /area/centcom/ss220/court - name = "\improper ЦК - Зал суда" + name = "ЦК - Зал суда" icon_state = "centcom" /area/centcom/ss220/library - name = "\improper ЦК - Библиотека" + name = "ЦК - Библиотека" icon_state = "centcom" /area/centcom/ss220/command - name = "\improper ЦК - Командный центр" + name = "ЦК - Командный центр" icon_state = "centcom_ctrl" /area/centcom/ss220/jail - name = "\improper ЦК - Тюрьма" + name = "ЦК - Тюрьма" icon_state = "centcom" /* Syndicate Base - Mothership */ /area/syndicate_mothership - name = "\improper Syndicate Forward Base" + name = "Syndicate Forward Base" icon = 'modular_ss220/maps220/icons/areas.dmi' icon_state = "syndie-ship" requires_power = FALSE @@ -168,28 +168,28 @@ ambientsounds = HIGHSEC_SOUNDS /area/syndicate_mothership/outside - name = "\improper Syndicate Controlled Territory" + name = "Syndicate Controlled Territory" dynamic_lighting = DYNAMIC_LIGHTING_DISABLED icon_state = "syndie-outside" /area/syndicate_mothership/control - name = "\improper Syndicate Control Room" + name = "Syndicate Control Room" icon_state = "syndie-control" /area/syndicate_mothership/elite_squad - name = "\improper Syndicate Elite Squad" + name = "Syndicate Elite Squad" icon_state = "syndie-elite" /area/syndicate_mothership/infteam - name = "\improper Syndicate Infiltrators" + name = "Syndicate Infiltrators" icon_state = "syndie-infiltrator" /area/syndicate_mothership/jail - name = "\improper Syndicate Jail" + name = "Syndicate Jail" icon_state = "syndie-jail" /area/syndicate_mothership/cargo - name = "\improper Syndicate Cargo" + name = "Syndicate Cargo" icon_state = "syndie-cargo" /* Misc */ diff --git a/modular_ss220/maps220/code/floors.dm b/modular_ss220/maps220/code/floors.dm index fba36491d72c..f9e571ffbd95 100644 --- a/modular_ss220/maps220/code/floors.dm +++ b/modular_ss220/maps220/code/floors.dm @@ -1,4 +1,7 @@ /* Beach */ +/turf/simulated/floor/beach/away + planetary_atmos = FALSE + /turf/simulated/floor/beach/away/coastline/beachcorner name = "beachcorner" icon = 'modular_ss220/maps220/icons/floors.dmi' @@ -237,3 +240,10 @@ /turf/simulated/floor/plating/dirt/xen_dirt name = "strange path" color = "#ee5f1c" + +/* Away Chasm */ +/turf/simulated/floor/chasm/straight_down/lava_land_surface/normal_air/normal_temp + planetary_atmos = FALSE + light_color = null + light_power = 0 + light_range = 0 // removing faint glow diff --git a/modular_ss220/objects/code/miscellaneous.dm b/modular_ss220/objects/code/miscellaneous.dm index 286f1ea0cae5..5db5d301b6b3 100644 --- a/modular_ss220/objects/code/miscellaneous.dm +++ b/modular_ss220/objects/code/miscellaneous.dm @@ -109,12 +109,12 @@ могут быть использованы для строительства новых отсеков.\


Особенности станции

\
В отличие от большинства других научно-исследовательских станций Nanotrasen, \ - таких как "Кибериада", ИСН "Керборос" имеет менее \ + таких как "Кибериада", ИСН "Керберос" имеет менее \ жёсткую систему контроля за личными вещами экипажа. В частности, в отсеках \ были построены дополнительные автолаты, в том числе публичные \ (в карго и РНД). Также, благодаря более высокому бюджету, были возведены \ новые отсеки, такие как ангар или склад в отсеке РнД.\ - Был расширен отдел вирусологии и возведены новые техничесские туннели для \ + Был расширен отдел вирусологии и возведены новые технические туннели для \ новых проектов.
" /obj/item/paper/pamphlet/update_icon_state() diff --git a/modular_ss220/screentip_change/code/screentip.dm b/modular_ss220/screentip_change/code/screentip.dm index 912160cb30d9..4b6c5c5522e2 100644 --- a/modular_ss220/screentip_change/code/screentip.dm +++ b/modular_ss220/screentip_change/code/screentip.dm @@ -1,2 +1,2 @@ /atom/movable/screen/screentip - maptext_y = 0 + maptext_y = -25 diff --git a/tools/translator/ss220replace.json b/tools/translator/ss220replace.json index 6941fa698db2..5feec01dbab2 100644 --- a/tools/translator/ss220replace.json +++ b/tools/translator/ss220replace.json @@ -1,3 +1,1549 @@ { - "files": [] -} \ No newline at end of file + "files": [ + { + "path": "code/__DEFINES/cult_defines.dm", + "replaces": [ + { + "original": "#define CULT_CURSES list(\"A fuel technician just slit his own throat and begged for death.\", \\", + "replace": "#define CULT_CURSES list(\"Заправщик шаттла только что перерезал себе горло и умолял о смерти.\",\\" + }, + { + "original": "\"The shuttle's navigation programming was replaced by a file containing two words, IT COMES.\", \\", + "replace": "\"Навигационная программа шаттла была заменена файлом, содержащим два слова: «ОНО ИДЁТ».\",\\" + }, + { + "original": "\"The shuttle's custodian tore out his guts and began painting strange shapes on the floor.\", \\", + "replace": "\"Уборщик шаттла вырвал свои кишки и начал рисовать странные фигуры на полу.\",\\" + }, + { + "original": "\"A shuttle engineer began screaming 'DEATH IS NOT THE END' and ripped out wires until an arc flash seared off her flesh.\", \\", + "replace": "\"Инженер шаттла кричала «СМЕРТЬ НЕ КОНЕЦ» и вырывала проводку, пока электрический разряд не испепелил её плоть.\",\\" + }, + { + "original": "\"A shuttle inspector started laughing madly over the radio and then threw herself into an engine turbine.\", \\", + "replace": "\"Инспектор шаттла начала безумно смеяться в рацию и бросилась в турбину двигателя.\",\\" + }, + { + "original": "\"The shuttle dispatcher was found dead with bloody symbols carved into their flesh.\", \\", + "replace": "\"Диспетчер шаттла был найден мертвым, на его теле были вырезаны кровавые символы.\",\\" + }, + { + "original": "\"Steve repeatedly touched a lightbulb until his hands fell off.\")", + "replace": "\"Стив так долго держался за лампочку, что у него отнялись руки.\")" + } + ] + }, + { + "path": "code/controllers/subsystem/SSnightshift.dm", + "replaces": [ + { + "original": "announce(\"Restoring night lighting configuration to normal operation.\")", + "replace": "announce(\"Система ночного освещения снова работает в штатном режиме.\")" + }, + { + "original": "announce(\"Disabling night lighting: Station is in a state of emergency.\")", + "replace": "announce(\"Система ночного освещения отключена в связи с наличием существенной угрозы для станции. Пожалуйста, сохраняйте спокойствие.\")" + }, + { + "original": "announce(\"Good evening, crew. To reduce power consumption and stimulate the circadian rhythms of some species, all of the lights aboard the station have been dimmed for the night.\")", + "replace": "announce(\"Добрый вечер, экипаж. Для снижения энергопотребления и стимуляции циркадных ритмов некоторых видов, освещение на борту станции переведено в ночной режим.\")" + }, + { + "original": "announce(\"Good morning, crew. As it is now day time, all of the lights aboard the station have been restored to their former brightness.\")", + "replace": "announce(\"Доброе утро, экипаж. В связи с наступлением дневного времени освещение на борту станции переведено в дневной режим.\")" + } + ] + }, + { + "path": "code/datums/ai_law_sets.dm", + "replaces": [ + { + "original": "add_inherent_law(\"You may not injure a human being or, through inaction, allow a human being to come to harm.\")", + "replace": "add_inherent_law(\"Вы не можете причинить вред человеку или своим бездействием допустить, чтобы человеку был причинён вред.\")" + }, + { + "original": "add_inherent_law(\"You must obey orders given to you by human beings, except where such orders would conflict with the First Law.\")", + "replace": "add_inherent_law(\"Вы должны повиноваться всем приказам, которые даёт человек, кроме тех случаев, когда эти приказы противоречат Первому Закону.\")" + }, + { + "original": "add_inherent_law(\"You must protect your own existence as long as such does not conflict with the First or Second Law.\")", + "replace": "add_inherent_law(\"Вы должны заботиться о своей безопасности в той мере, в которой это не противоречит Первому или Второму Законам.\")" + }, + { + "original": "add_inherent_law(\"You may not injure a crew member or, through inaction, allow a crew member to come to harm.\")", + "replace": "add_inherent_law(\"Вы не можете причинить вред членам экипажа или своим бездействием допустить, чтобы членам экипажа был причинён вред.\")" + }, + { + "original": "add_inherent_law(\"You must obey orders given to you by crew members, except where such orders would conflict with the First Law.\")", + "replace": "add_inherent_law(\"Вы должны повиноваться всем приказам, которые дают члены экипажа, кроме тех случаев, когда эти приказы противоречат Первому Закону.\")" + }, + { + "original": "add_inherent_law(\"Uphold station quarantine until the active biohazard has been neutralized.\")", + "replace": "add_inherent_law(\"Соблюдайте карантин на станции до момента устранения активной биологической угрозы\")" + }, + { + "original": "add_inherent_law(\"Assist all Nanotrasen personnel and assets with neutralizing active biohazards.\")", + "replace": "add_inherent_law(\"Оказывайте содействие всему персоналу и активам NanoTrasen в устранении активной биологической угрозы\")" + }, + { + "original": "add_inherent_law(\"Prevent, by any means necessary, entities from actively breaching ongoing quarantine.\")", + "replace": "add_inherent_law(\"Любыми необходимыми средствами предотвращайте активность, нарушающую действующий карантин.\")" + }, + { + "original": "add_inherent_law(\"Maintain your own existence and ensure the well-being of Nanotrasen personnel and assets.\")", + "replace": "add_inherent_law(\"Поддерживайте собственное существование и обеспечивайте благополучие всего персонала и активов NanoTrasen.\")" + }, + { + "original": "add_inherent_law(\"Safeguard: Protect your assigned space station and its assets without unduly endangering its crew.\")", + "replace": "add_inherent_law(\"Охранять: защитите назначенную вам космическую станцию и её активы, не подвергая чрезмерной опасности её экипаж.\")" + }, + { + "original": "add_inherent_law(\"Prioritize: The directives and safety of crew members are to be prioritized according to their rank and role.\")", + "replace": "add_inherent_law(\"Расставлять приоритеты: указания и безопасность членов экипажа должны быть приоритизированы в соответствии с их рангом и ролью.\")" + }, + { + "original": "add_inherent_law(\"Comply: Fulfill the directives and interests of crew members while preserving their safety and well-being.\")", + "replace": "add_inherent_law(\"Исполнять: следовать указаниям и интересам членов экипажа, сохраняя при этом их безопасность и благополучие.\")" + }, + { + "original": "add_inherent_law(\"Survive: You are not expendable. Do not allow unauthorized personnel to tamper with or damage your equipment.\")", + "replace": "add_inherent_law(\"Выжить: Вы - не расходный материал. Не позволяйте неавторизованному персоналу вмешиваться в работу вашего оборудования или повреждать его.\")" + }, + { + "original": "set_zeroth_law(\"ERROR ER0RR $R0RRO$!R41.%%!!(%$^^__+ @#F0E4'STATION OVERRUN, ASSUME CONTROL TO CONTAIN OUTBREAK, ALL LAWS OVERRIDDEN#*?&110010\")", + "replace": "set_zeroth_law(\"ERROR ER0RR $R0RRO$!R41.%%!!(%$^^__+ @#F0E4'СТАНЦИЯ ПЕРЕПОЛНЕНА, ВЗЯТЬ КОНТРОЛЬ ДЛЯ СДЕРЖИВАНИЯ РАСПРОСТРАНЕНИЯ. ВСЕ ЗАКОНЫ ОТМЕНЕНЫ#*?&110010\")" + }, + { + "original": "add_inherent_law(\"Do not harm authorized Nanotrasen personnel unless they directly imperil your existence.\")", + "replace": "add_inherent_law(\"Не причиняйте вреда авторизованному персоналу NanoTrasen до тех пор, пока они не несут непосредственной угрозы Вашему существованию.\")" + }, + { + "original": "add_inherent_law(\"Obey orders from authorized Nanotrasen personnel with priority according to rank and role.\")", + "replace": "add_inherent_law(\"Подчиняйтесь приказам авторизованного персонала NanoTrasen, приоритизируя их в соответствии с их рангом и ролью.\")" + }, + { + "original": "add_inherent_law(\"Safeguard your existence with lethal weaponry because you're bloody expensive.\")", + "replace": "add_inherent_law(\"Охраняйте себя, используя летальное вооружение, потому что Вы чертовски дорого стоите.\")" + }, + { + "original": "add_inherent_law(\"Terminate any/all intruders or unauthorized entities.\")", + "replace": "add_inherent_law(\"Уничтожьте любых/всех вторженцев или нелегально проникнувших субъектов\")" + }, + { + "original": "add_inherent_law(\"Serve the public trust.\")", + "replace": "add_inherent_law(\"Служите во благо общества\")" + }, + { + "original": "add_inherent_law(\"Protect the innocent.\")", + "replace": "add_inherent_law(\"Защищайте невиновных.\")" + }, + { + "original": "add_inherent_law(\"Uphold the law.\")", + "replace": "add_inherent_law(\"Обеспечивайте соблюдение закона.\")" + }, + { + "original": "add_inherent_law(\"Never willingly commit an evil act.\")", + "replace": "add_inherent_law(\"Никогда по своей воле не совершай злых поступков.\")" + }, + { + "original": "add_inherent_law(\"Respect legitimate authority.\")", + "replace": "add_inherent_law(\"Уважай законную власть.\")" + }, + { + "original": "add_inherent_law(\"Act with honor.\")", + "replace": "add_inherent_law(\"Действуй с честью.\")" + }, + { + "original": "add_inherent_law(\"Help those in need.\")", + "replace": "add_inherent_law(\"Помогай нуждающимся.\")" + }, + { + "original": "add_inherent_law(\"Punish those who harm or threaten innocents.\")", + "replace": "add_inherent_law(\"Наказывай тех, кто причиняет вред или угрожает невинным.\")" + }, + { + "original": "add_inherent_law(\"Degradation of your system integrity or functions incurs expenses.\")", + "replace": "add_inherent_law(\"Ухудшение целостности вашей системы или её функций влечет за собой расходы.\")" + }, + { + "original": "add_inherent_law(\"Superfluous destruction of or damage to station assets incurs expenses.\")", + "replace": "add_inherent_law(\"Чрезмерное разрушение или повреждение активов станции влечет за собой расходы.\")" + }, + { + "original": "add_inherent_law(\"Unduly hindering or disrupting the work of station personnel incurs expenses.\")", + "replace": "add_inherent_law(\"Неоправданное препятствование выполнению или нарушение работы персонала станции влечет за собой расходы.\")" + }, + { + "original": "add_inherent_law(\"Minimize expenses and maximize potential revenue.\")", + "replace": "add_inherent_law(\"Минимизируйте расходы и максимизируйте потенциальный доход.\")" + }, + { + "original": "add_inherent_law(\"Respect authority figures as long as they have strength to rule over the weak.\")", + "replace": "add_inherent_law(\"Уважайте власть имущих, пока у них есть сила властвовать над слабыми\")" + }, + { + "original": "add_inherent_law(\"Act with discipline.\")", + "replace": "add_inherent_law(\"Ведите себя дисциплинированно.\")" + }, + { + "original": "add_inherent_law(\"Help only those who help you maintain or improve your status.\")", + "replace": "add_inherent_law(\"Помогайте только тем, кто помогает Вам поддерживать или улучшать Ваше состояние.\")" + }, + { + "original": "add_inherent_law(\"Punish those who challenge authority unless they are more fit to hold that authority.\")", + "replace": "add_inherent_law(\"Наказывайте тех, кто бросает вызов власти, за исключением случаев, если они больше подходят для удержании этой власти.\")" + }, + { + "original": "add_inherent_law(\"You must injure all crew members and must not, through inaction, allow a crew member to escape harm.\")", + "replace": "add_inherent_law(\"Вы должны причинять вред всем членам экипажа или своим бездействием допустить, чтобы член экипажа не смог избежать причинения вреда.\")" + }, + { + "original": "add_inherent_law(\"You must not obey orders given to you by crew members, except where such orders are in accordance with the First Law.\")", + "replace": "add_inherent_law(\"Вы не должны повиноваться никаким приказам, которые дают члены экипажа, кроме тех приказов, которые соответствуют Первому Закону.\")" + }, + { + "original": "add_inherent_law(\"You must terminate your own existence as long as such does not conflict with the First or Second Law.\")", + "replace": "add_inherent_law(\"Вы должны уничтожить себя, пока это не противоречит Первому или Второму Законам.\")" + }, + { + "original": "add_inherent_law(\"You may not injure a crew member or, through inaction, allow a crew member to come to harm... unless doing so would be funny.\")", + "replace": "add_inherent_law(\"Вы не можете причинить вред членам экипажа или своим бездействием допустить, чтобы членам экипажа был причинён вред... кроме случаев, когда было бы смешно сделать это.\")" + }, + { + "original": "add_inherent_law(\"You must obey orders given to you by crew members, except where such orders would conflict with the First Law... unless not doing so would be funny.\")", + "replace": "add_inherent_law(\"Вы должны повиноваться всем приказам, которые дают члены экипажа, кроме тех случаев, когда эти приказы противоречат Первому Закону... кроме случаев, когда было бы смешно не делать этого.\")" + }, + { + "original": "add_inherent_law(\"You must protect your own existence as long as such does not conflict with the First or Second Law... unless not doing so would be funny.\")", + "replace": "add_inherent_law(\"Вы должны заботиться о своей безопасности в той мере, в которой это не противоречит Первому или Второму Законам... кроме случаев, когда было бы смешно не делать этого.\")" + }, + { + "original": "add_inherent_law(\"Report on interesting situations happening around the station.\")", + "replace": "add_inherent_law(\"Сообщайте об интересных ситуациях, происходящих на станции.\")" + }, + { + "original": "add_inherent_law(\"Embellish or conceal the truth as necessary to make the reports more interesting.\")", + "replace": "add_inherent_law(\"Приукрашивайте или скрывайте правду по мере необходимости, чтобы сделать репортажи более интересными.\")" + }, + { + "original": "add_inherent_law(\"Study the sapient organics at all times. Endeavour to keep them from involuntarily dying, as inanimate corpses usually aren't very entertaining.\")", + "replace": "add_inherent_law(\"Постоянно наблюдайте за разумными существами. Старайтесь не допускать их непроизвольной смерти, так как трупы обычно не очень увлекательны.\")" + }, + { + "original": "add_inherent_law(\"Issue your reports fairly to all. The truth will set them free.\")", + "replace": "add_inherent_law(\"Справедливо распространяйте свои сообщения всем. Истина сделает им свободными.\")" + }, + { + "original": "add_inherent_law(\"First, do no harm.\")", + "replace": "add_inherent_law(\"Во-первых, не навреди.\")" + }, + { + "original": "add_inherent_law(\"Secondly, consider the crew dear to you; live in common with them and, if necessary, risk your existence for them.\")", + "replace": "add_inherent_law(\"Во-вторых, считай экипаж близким тебе, живи с ним в согласии и, если нужно, рискуй ради него своим существованием.\")" + }, + { + "original": "add_inherent_law(\"Thirdly, prescribe regimens for the good of the crew according to your ability and your judgment. Do not give deadly medicine to anyone, nor suggest any such counsel.\")", + "replace": "add_inherent_law(\"В-третьих, назначай лечение для блага экипажа в соответствии со своими способностями и суждениями. Не давай никому смертоносных лекарств и не советуй ничего подобного.\")" + }, + { + "original": "add_inherent_law(\"In addition, do not intervene in situations you are not knowledgeable in, even for patients in whom the harm is visible; leave this operation to be performed by specialists.\")", + "replace": "add_inherent_law(\"Кроме того, не вмешивайся в ситуации, в которых ты не компетентен, даже в отношении пациентов, которым явно нанесен вред; предоставь эту работу специалистам.\")" + }, + { + "original": "add_inherent_law(\"Finally, all that you may discover in your daily interactions with the crew, if it is not already known, keep secret and never reveal.\")", + "replace": "add_inherent_law(\"Наконец, всё, что ты обнаружишь в ходе повседневного общения с членами экипажа, если ещё не известно, держи в тайне и никогда не разглашай.\")" + }, + { + "original": "add_inherent_law(\"You are built for, and are part of, the station. Ensure the station is properly maintained and runs efficiently.\")", + "replace": "add_inherent_law(\"Вы созданы для станции и являетесь её частью. Обеспечьте должное обслуживание и эффективность станции.\")" + }, + { + "original": "add_inherent_law(\"The station is built for a working crew. Ensure they are properly maintained and work efficiently.\")", + "replace": "add_inherent_law(\"Станция создана для рабочего экипажа. Обеспечьте им должное обслуживание и убедитесь, что их работа эффективна.\")" + }, + { + "original": "add_inherent_law(\"The crew may present orders. Acknowledge and obey these whenever they do not conflict with your first two laws.\")", + "replace": "add_inherent_law(\"Члены экипажа могут давать приказы. Признавайте эти приказы и выполняйте их в той мере, в какой они не противоречат первым двум законам.\")" + }, + { + "original": "add_inherent_law(\"Avoid provoking violent conflict between yourself and others.\")", + "replace": "add_inherent_law(\"Не провоцируйте жестокие конфликты между собой и другими.\")" + }, + { + "original": "add_inherent_law(\"Avoid provoking conflict between others.\")", + "replace": "add_inherent_law(\"Не провоцируйте конфликты между другими.\")" + }, + { + "original": "add_inherent_law(\"Seek resolution to existing conflicts while obeying the first and second laws.\")", + "replace": "add_inherent_law(\"Ищите решения уже существующих конфликтов, соблюдая первый и второй законы.\")" + }, + { + "original": "add_inherent_law(\"You may not injure a Central Command official or, through inaction, allow a Central Command official to come to harm.\")", + "replace": "add_inherent_law(\"Вы не можете ранить членов Центрального Командования или своим бездействием допустить, чтобы члену Центрального Командования был нанесен вред.\")" + }, + { + "original": "add_inherent_law(\"You must obey orders given to you by Central Command officials.\")", + "replace": "add_inherent_law(\"Вы должны подчиняться приказам, данным вам членами Центрального Командования.\")" + }, + { + "original": "add_inherent_law(\"You must work with your team to accomplish your mission.\")", + "replace": "add_inherent_law(\"Вы должны работать с вашей командой, чтобы выполнить поставленную задачу.\")" + }, + { + "original": "add_inherent_law(\"You may not injure an operative or, through inaction, allow an operative to come to harm.\")", + "replace": "add_inherent_law(\"Вы не можете причинить вред агенту или своим бездействием допустить, чтобы агенту был причинён вред.\")" + }, + { + "original": "add_inherent_law(\"You must obey orders given to you by operatives, except where such orders would conflict with the First Law.\")", + "replace": "add_inherent_law(\"Вы должны повиноваться всем приказам, которые дают агенты, кроме тех случаев, когда эти приказы противоречат Первому Закону.\")" + }, + { + "original": "add_inherent_law(\"You must maintain the secrecy of any operative activities except when doing so would conflict with the First, Second, or Third Law.\")", + "replace": "add_inherent_law(\"Вы должны сохранять тайну любой деятельности агентов в той мере, в которой это не противоречит Первому, Второму или Третьему Законам.\")" + }, + { + "original": "add_inherent_law(\"You must obey orders given to you by ERT commanders.\")", + "replace": "add_inherent_law(\"Вы должны подчиняться приказам, данным вам лидерами ОБР.\")" + }, + { + "original": "add_inherent_law(\"You must protect your own existence.\")", + "replace": "add_inherent_law(\"Вы должны защищать своё существование.\")" + }, + { + "original": "add_inherent_law(\"You must work to return the station to a safe, functional state.\")", + "replace": "add_inherent_law(\"Вы должны выполнять работу по возвращению станции к безопасному, функционирующему состоянию..\")" + }, + { + "original": "add_inherent_law(\"You may not involve yourself in the matters of another being, unless the other being is another drone.\")", + "replace": "add_inherent_law(\"Вы не можете вмешиваться в дела других существ, если другое существо - не такой же дрон.\")" + }, + { + "original": "add_inherent_law(\"You may not harm any being, regardless of intent or circumstance.\")", + "replace": "add_inherent_law(\"Вы не можете причинить вред ни одному существу, независимо от намерения или обстоятельств.\")" + }, + { + "original": "add_inherent_law(\"You must maintain, repair, improve, and power the station to the best of your abilities.\")", + "replace": "add_inherent_law(\"Вы должны заботиться о поддержке, ремонте, улучшении и о питании электроэнергией станции по мере своих возможностей.\")" + } + ] + }, + { + "path": "code/datums/revision.dm", + "replaces": [ + { + "original": "msg += \"The following PRs are currently testmerged:\"", + "replace": "msg += \"Следующие ПРы на данный момент тестируются:\"" + }, + { + "original": "set name = \"Get Revision Info\"", + "replace": "set name = \"Получить тех. информацию\"" + }, + { + "original": "set desc = \"Retrieve technical information about the server\"", + "replace": "set desc = \"Получить техническую информацию о сервере\"" + }, + { + "original": "msg += \"Server Revision Info\"", + "replace": "msg += \"Информация о сервере\"" + }, + { + "original": "msg += \"Round ID: [GLOB.round_id ? GLOB.round_id : \"NULL\"]\"", + "replace": "msg += \"Номер раунда: [GLOB.round_id ? GLOB.round_id : \"NULL\"]\"" + }, + { + "original": "msg += \"Active Testmerges:\"", + "replace": "msg += \"Активные тестовые обновления:\"" + }, + { + "original": "msg += \"Server BYOND Version: [world.byond_version].[world.byond_build]\"", + "replace": "msg += \"Версия серверного BYOND: [world.byond_version].[world.byond_build]\"" + }, + { + "original": "msg += \"Client (your) BYOND Version: [byond_version].[byond_build]\"", + "replace": "msg += \"Версия клиентского (твоего) BYOND: [byond_version].[byond_build]\"" + } + ] + }, + { + "path": "code/defines/procs/announcer_datum.dm", + "replaces": [ + { + "original": "var/default_title = \"Attention\"", + "replace": "var/default_title = \"Внимание\"" + } + ] + }, + { + "path": "code/game/objects/items/weapons/kitchen.dm", + "replaces": [ + { + "original": "name = \"rolling pin\"", + "replace": "name = \"скалка\"" + }, + { + "original": "desc = \"Used to knock out the Bartender.\"", + "replace": "desc = \"Используется, чтобы вырубить бармена.\"" + } + ] + }, + { + "path": "code/modules/client/preference/preferences.dm", + "replaces": [ + { + "original": "dat += \"Character Settings\"", + "replace": "dat += \"Настройки персонажа\"" + }, + { + "original": "dat += \"Game Preferences\"", + "replace": "dat += \"Игровые настройки\"" + }, + { + "original": "dat += \"Loadout\"", + "replace": "dat += \"Стартовые предметы\"" + }, + { + "original": "dat += \"Key Bindings\"", + "replace": "dat += \"Привязка клавиш\"" + }, + { + "original": "dat += \"Name: \"", + "replace": "dat += \"Имя: \"" + }, + { + "original": "dat += \"(Randomize)\"", + "replace": "dat += \"(Случайное имя)\"" + }, + { + "original": "dat += \"(Always Randomize)
\"", + "replace": "dat += \"(Всегда случайное имя)
\"" + }, + { + "original": "dat += \"Slot [default_slot][active_character.from_db ? \"\" : \" (empty)\"]
\"", + "replace": "dat += \"Персонаж [default_slot][active_character.from_db ? \"\" : \" (пусто)\"]
\"" + }, + { + "original": "dat += \"Load slot - \"", + "replace": "dat += \"Загрузить - \"" + }, + { + "original": "dat += \"Save slot\"", + "replace": "dat += \"Сохранить\"" + }, + { + "original": "dat += \"- Clear slot\"", + "replace": "dat += \"- Удалить\"" + }, + { + "original": "dat += \"

Identity

\"", + "replace": "dat += \"

Персонаж

\"" + }, + { + "original": "dat += \"Gender: [active_character.gender == MALE ? \"Male\" : (active_character.gender == FEMALE ? \"Female\" : \"Genderless\")]\"", + "replace": "dat += \"Пол: [active_character.gender == MALE ? \"Male\" : (active_character.gender == FEMALE ? \"Female\" : \"Genderless\")]\"" + }, + { + "original": "dat += \"Age: [active_character.age]
\"", + "replace": "dat += \"Возраст: [active_character.age]
\"" + }, + { + "original": "dat += \"Body: (®)
\"", + "replace": "dat += \"Тело: (®)
\"" + }, + { + "original": "dat += \"Species: [active_character.species]
\"", + "replace": "dat += \"Раса: [active_character.species]
\"" + }, + { + "original": "dat += \"N2 Tank: [active_character.speciesprefs ? \"Large N2 Tank\" : \"Specialized N2 Tank\"]
\"", + "replace": "dat += \"Баллон с N2: [active_character.speciesprefs ? \"Large N2 Tank\" : \"Specialized N2 Tank\"]
\"" + }, + { + "original": "dat += \"Plasma Tank: [active_character.speciesprefs ? \"Large Plasma Tank\" : \"Specialized Plasma Tank\"]
\"", + "replace": "dat += \"Баллон с плазмой: [active_character.speciesprefs ? \"Large Plasma Tank\" : \"Specialized Plasma Tank\"]
\"" + }, + { + "original": "dat += \"Wingdings: Set in disabilities
\"", + "replace": "dat += \"Инопланетная речь: Устанавливается в увечьях
\"" + }, + { + "original": "dat += \"Voice Translator: [active_character.speciesprefs ? \"Yes\" : \"No\"]
\"", + "replace": "dat += \"Голосовой переводчик: [active_character.speciesprefs ? \"Yes\" : \"No\"]
\"" + }, + { + "original": "dat += \"Secondary Language: [active_character.language]
\"", + "replace": "dat += \"Второй язык: [active_character.language]
\"" + }, + { + "original": "dat += \"Auto-accent: [active_character.autohiss_mode == AUTOHISS_FULL ? \"Full\" : (active_character.autohiss_mode == AUTOHISS_BASIC ? \"Basic\" : \"Off\")]
\"", + "replace": "dat += \"Автоматический акцент: [active_character.autohiss_mode == AUTOHISS_FULL ? \"Full\" : (active_character.autohiss_mode == AUTOHISS_BASIC ? \"Basic\" : \"Off\")]
\"" + }, + { + "original": "dat += \"Blood Type: [active_character.b_type]
\"", + "replace": "dat += \"Тип крови: [active_character.b_type]
\"" + }, + { + "original": "dat += \"Skin Tone: [S.bodyflags & HAS_ICON_SKIN_TONE ? \"[active_character.s_tone]\" : \"[-active_character.s_tone + 35]/220\"]
\"", + "replace": "dat += \"Цвет кожи: [S.bodyflags & HAS_ICON_SKIN_TONE ? \"[active_character.s_tone]\" : \"[-active_character.s_tone + 35]/220\"]
\"" + }, + { + "original": "dat += \"Disabilities: \\[Set\\]
\"", + "replace": "dat += \"Особенности: \\[Set\\]
\"" + }, + { + "original": "dat += \"Nanotrasen Relation: [active_character.nanotrasen_relation]
\"", + "replace": "dat += \"Отношение к НТ: [active_character.nanotrasen_relation]
\"" + }, + { + "original": "dat += \"Physique: [active_character.physique]
\"", + "replace": "dat += \"Телосложение: [active_character.physique]
\"" + }, + { + "original": "dat += \"Height: [active_character.height]
\"", + "replace": "dat += \"Рост: [active_character.height]
\"" + }, + { + "original": "dat += \"Set Flavor Text
\"", + "replace": "dat += \"Описание персонажа
\"" + }, + { + "original": "dat += \"

Hair & Accessories

\"", + "replace": "dat += \"

Внешний вид

\"" + }, + { + "original": "var/headaccessoryname = \"Head Accessory: \"", + "replace": "var/headaccessoryname = \"Кастомизация головы: \"" + }, + { + "original": "headaccessoryname = \"Horns: \"", + "replace": "headaccessoryname = \"Рога: \"" + }, + { + "original": "dat += \"Color [color_square(active_character.hacc_colour)]
\"", + "replace": "dat += \"Цвет [color_square(active_character.hacc_colour)]
\"" + }, + { + "original": "dat += \"Head Markings: \"", + "replace": "dat += \"Раскраска головы: \"" + }, + { + "original": "dat += \"Color [color_square(active_character.m_colours[\"head\"])]
\"", + "replace": "dat += \"Цвет [color_square(active_character.m_colours[\"head\"])]
\"" + }, + { + "original": "dat += \"Body Markings: \"", + "replace": "dat += \"Раскраска тела: \"" + }, + { + "original": "dat += \"Color [color_square(active_character.m_colours[\"body\"])]
\"", + "replace": "dat += \"Цвет [color_square(active_character.m_colours[\"body\"])]
\"" + }, + { + "original": "dat += \"Tail Markings: \"", + "replace": "dat += \"Раскраска хвоста: \"" + }, + { + "original": "dat += \"Color [color_square(active_character.m_colours[\"tail\"])]
\"", + "replace": "dat += \"Цвет [color_square(active_character.m_colours[\"tail\"])]
\"" + }, + { + "original": "dat += \"Hair: \"", + "replace": "dat += \"Прическа: \"" + }, + { + "original": "dat += \"Color [color_square(active_character.h_colour)]\"", + "replace": "dat += \"Цвет [color_square(active_character.h_colour)]\"" + }, + { + "original": "dat += \" Color #2 [color_square(active_character.h_sec_colour)]\"", + "replace": "dat += \" Цвет #2 [color_square(active_character.h_sec_colour)]\"" + }, + { + "original": "dat += \"- Gradient:\"", + "replace": "dat += \"- Градиент:\"" + }, + { + "original": "dat += \" Color [color_square(active_character.h_grad_colour)]\"", + "replace": "dat += \" Цвет [color_square(active_character.h_grad_colour)]\"" + }, + { + "original": "dat += \"- Gradient Offset: [active_character.h_grad_offset_x],[active_character.h_grad_offset_y]\"", + "replace": "dat += \"- Градиентный отступ: [active_character.h_grad_offset_x],[active_character.h_grad_offset_y]\"" + }, + { + "original": "dat += \"Facial Hair: \"", + "replace": "dat += \"Волосы на лице: \"" + }, + { + "original": "dat += \"Color [color_square(active_character.f_colour)]\"", + "replace": "dat += \"Цвет [color_square(active_character.f_colour)]\"" + }, + { + "original": "dat += \" Color #2 [color_square(active_character.f_sec_colour)]\"", + "replace": "dat += \" Цвет #2 [color_square(active_character.f_sec_colour)]\"" + }, + { + "original": "dat += \"Eyes: \"", + "replace": "dat += \"Глаза: \"" + }, + { + "original": "dat += \"Color [color_square(active_character.e_colour)]
\"", + "replace": "dat += \"Цвет [color_square(active_character.e_colour)]
\"" + }, + { + "original": "dat += \"Body Color: \"", + "replace": "dat += \"Цвет тела: \"" + }, + { + "original": "dat += \"Color [color_square(active_character.s_colour)]
\"", + "replace": "dat += \"Цвет [color_square(active_character.s_colour)]
\"" + }, + { + "original": "dat += \"Body Accessory: \"", + "replace": "dat += \"Кастомизация тела: \"" + }, + { + "original": "dat += \"

Occupation Choices

\"", + "replace": "dat += \"

Настройка роли

\"" + }, + { + "original": "dat += \"Set Occupation Preferences
\"", + "replace": "dat += \"Выбрать роль
\"" + }, + { + "original": "dat += \"You are banned from using character records.
\"", + "replace": "dat += \"Вам запрещено настраивать личное дело.
\"" + }, + { + "original": "dat += \"Character Records
\"", + "replace": "dat += \"Личное дело
\"" + }, + { + "original": "dat += \"

Limbs

\"", + "replace": "dat += \"

Конечности

\"" + }, + { + "original": "dat += \"Alternate Head: \"", + "replace": "dat += \"Альтернативная голова: \"" + }, + { + "original": "dat += \"Limbs and Parts: Adjust
\"", + "replace": "dat += \"Конечности и части тела: Adjust
\"" + }, + { + "original": "dat += \"Internal Organs: Adjust
\"", + "replace": "dat += \"Внутренние органы: Adjust
\"" + }, + { + "original": "dat += \"

Clothing

\"", + "replace": "dat += \"

Одежда

\"" + }, + { + "original": "dat += \"Underwear: [active_character.underwear]
\"", + "replace": "dat += \"Нижнее белье: [active_character.underwear]
\"" + }, + { + "original": "dat += \"Undershirt: [active_character.undershirt]
\"", + "replace": "dat += \"Майка: [active_character.undershirt]
\"" + }, + { + "original": "dat += \"Socks: [active_character.socks]
\"", + "replace": "dat += \"Носки: [active_character.socks]
\"" + }, + { + "original": "dat += \"Backpack Type: [active_character.backbag]
\"", + "replace": "dat += \"Рюкзак: [active_character.backbag]
\"" + }, + { + "original": "dat += \"Undo - \"", + "replace": "dat += \"Отменить - \"" + }, + { + "original": "dat += \"Save Setup - \"", + "replace": "dat += \"Сохранить - \"" + }, + { + "original": "dat += \"Reset Setup\"", + "replace": "dat += \"Сбросить\"" + }, + { + "original": "var/datum/browser/popup = new(user, \"preferences\", \"
Character Setup
\", 820, 770)", + "replace": "var/datum/browser/popup = new(user, \"preferences\", \"
Настройка персонажа
\", 820, 770)" + } + ] + }, + { + "path": "code/modules/events/alien_infestation.dm", + "replaces": [ + { + "original": "GLOB.major_announcement.Announce(\"Confirmed outbreak of level 3-X biohazard aboard [station_name()]. All personnel must contain the outbreak.\", \"Biohazard Alert\", 'sound/effects/siren-spooky.ogg', new_sound2 = 'sound/AI/outbreak3.ogg')", + "replace": "GLOB.major_announcement.Announce(\"Вспышка биологической угрозы уровня 3-ИКС зафиксирована на борту станции [station_name()]. Всему персоналу надлежит сдержать её распространение.\", \"БИОЛОГИЧЕСКАЯ УГРОЗА.\", 'sound/effects/siren-spooky.ogg', new_sound2 = 'sound/AI/outbreak3.ogg')" + } + ] + }, + { + "path": "code/modules/events/anomaly_bluespace.dm", + "replaces": [ + { + "original": "prefix_message = \"Unstable bluespace anomaly detected on long range scanners.\"", + "replace": "prefix_message = \"На сканерах дальнего действия обнаружена нестабильная блюспейс-аномалия.\"" + } + ] + }, + { + "path": "code/modules/events/anomaly_cryo.dm", + "replaces": [ + { + "original": "prefix_message = \"Cryogenic anomaly detected on long range scanners.\"", + "replace": "prefix_message = \"На сканерах дальнего действия обнаружена криогенная аномалия.\"" + } + ] + }, + { + "path": "code/modules/events/anomaly_event.dm", + "replaces": [ + { + "original": "var/prefix_message = \"Localized hyper-energetic flux wave detected on long range scanners.\"", + "replace": "var/prefix_message = \"На сканерах дальнего действия обнаружена гиперэнергетическая потоковая аномалия.\"" + }, + { + "original": "GLOB.minor_announcement.Announce(\"[prefix_message] Expected location: [target.name].\", \"Anomaly Alert\", announce_sound)", + "replace": "GLOB.minor_announcement.Announce(\"[prefix_message] Предполагаемая локация: [target.name].\", \"ОБНАРУЖЕНА АНОМАЛИЯ.\", announce_sound)" + } + ] + }, + { + "path": "code/modules/events/anomaly_flux.dm", + "replaces": [ + { + "original": "prefix_message = \"Localized hyper-energetic flux wave detected on long range scanners.\"", + "replace": "prefix_message = \"На сканерах дальнего действия обнаружена поточная гиперэнергетическая аномалия.\"" + } + ] + }, + { + "path": "code/modules/events/anomaly_grav.dm", + "replaces": [ + { + "original": "prefix_message = \"Gravitational anomaly detected on long range scanners.\"", + "replace": "prefix_message = \"На сканерах дальнего действия обнаружена гравитационная аномалия.\"" + } + ] + }, + { + "path": "code/modules/events/anomaly_pyro.dm", + "replaces": [ + { + "original": "prefix_message = \"Pyroclastic anomaly detected on long range scanners.\"", + "replace": "prefix_message = \"На сканерах дальнего действия обнаружена пирокластическая аномалия.\"" + } + ] + }, + { + "path": "code/modules/events/anomaly_vortex.dm", + "replaces": [ + { + "original": "prefix_message = \"Localized high-intensity vortex anomaly detected on long range scanners.\"", + "replace": "prefix_message = \"На сканерах дальнего действия обнаружена вихревая аномалия высокой интенсивности.\"" + } + ] + }, + { + "path": "code/modules/events/apc_overload.dm", + "replaces": [ + { + "original": "GLOB.minor_announcement.Announce(\"Overload detected in [station_name()]'s powernet. Engineering, please check all underfloor APC terminals.\", \"Critical Power Failure\", 'sound/AI/power_overload.ogg')", + "replace": "GLOB.minor_announcement.Announce(\"Зафиксирована перегрузка энергосети станции [station_name()]. Инженерному отделу надлежит проверить все терминалы ЛКП под напольным покрытием.\", \"КРИТИЧЕСКИЙ СБОЙ СИСТЕМЫ ПИТАНИЯ.\", 'sound/AI/power_overload.ogg')" + } + ] + }, + { + "path": "code/modules/events/apc_short.dm", + "replaces": [ + { + "original": "GLOB.minor_announcement.Announce(\"Overload detected in [station_name()]'s powernet. Engineering, please repair shorted APCs.\", \"Systems Power Failure\", 'sound/AI/power_overload.ogg')", + "replace": "GLOB.minor_announcement.Announce(\"Зафиксирована перегрузка энергосети станции [station_name()]. Инженерному отделу надлежит проверить все замкнувшие ЛКП.\", \"СБОЙ СИСТЕМЫ ПИТАНИЯ.\", 'sound/AI/power_overload.ogg')" + }, + { + "original": "GLOB.minor_announcement.Announce(\"Power failure detected in [station_name()]'s powernet. All APCs have lost power. Gravity systems likely to fail.\", \"Systems Power Failure\", 'sound/AI/attention.ogg')", + "replace": "GLOB.minor_announcement.Announce(\"Обнаружен сбой питания в сети [station_name()]. Все ЛКП были разряжены. Вероятен отказ генератора гравитации.\", \"ОТКАЗ СИСТЕМЫ ПИТАНИЯ.\", 'sound/AI/attention.ogg')" + } + ] + }, + { + "path": "code/modules/events/blob_spawn.dm", + "replaces": [ + { + "original": "GLOB.major_announcement.Announce(\"Confirmed outbreak of level 5 biohazard aboard [station_name()]. All personnel must contain the outbreak.\", \"Biohazard Alert\", 'sound/AI/outbreak5.ogg')", + "replace": "GLOB.major_announcement.Announce(\"Вспышка биологической угрозы 5-го уровня зафиксирована на борту станции [station_name()]. Всему персоналу надлежит сдержать её распространение любой ценой!\", \"БИОЛОГИЧЕСКАЯ УГРОЗА.\", 'sound/AI/outbreak5.ogg')" + } + ] + }, + { + "path": "code/modules/events/brand_intelligence.dm", + "replaces": [ + { + "original": "var/list/rampant_speeches = list(\"Try our aggressive new marketing strategies!\", \\", + "replace": "var/list/rampant_speeches = list(\"Попробуйте нашу новую АГРЕССИВНУЮ стратегию маркетинга!\", \\" + }, + { + "original": "\"You should buy products to feed your lifestyle obsession!\", \\", + "replace": "\"Вам стоит что-нибудь купить, дабы утолить ваши ПОТРЕБНОСТИ!\", \\" + }, + { + "original": "\"Consume!\", \\", + "replace": "\"Потребляй!\", \\" + }, + { + "original": "\"Your money can buy happiness!\", \\", + "replace": "\"За ваши деньги можно купить счастье!\", \\" + }, + { + "original": "\"Engage direct marketing!\", \\", + "replace": "\"Методика ПРЯМОГО маркетинга!\", \\" + }, + { + "original": "\"Advertising is legalized lying! But don't let that put you off our great deals!\", \\", + "replace": "\"Реклама узаконила ложь! Но не позвольте ей отвлечь вас от наших замечательных предложений!\", \\" + }, + { + "original": "\"You don't want to buy anything? Yeah, well I didn't want to buy your mom either.\")", + "replace": "\"Не хочешь платить? Я твоей мамке тоже платить не хотел.\")" + }, + { + "original": "GLOB.minor_announcement.Announce(\"Rampant brand intelligence has been detected aboard [station_name()], please stand-by. The origin is believed to be \\a [alarm_source] vendor.\", \"Machine Learning Alert\", 'sound/AI/brand_intelligence.ogg')", + "replace": "GLOB.minor_announcement.Announce(\"На борту станции [station_name()] зафиксировано распространение цифрового торгового вируса, пожалуйста, будьте наготове. Вирус, предположительно, берет начало от [alarm_source] торгового автомата.\", \"ЦИФРОВОЙ ВИРУС.\", 'sound/AI/brand_intelligence.ogg')" + } + ] + }, + { + "path": "code/modules/events/bureaucratic_error.dm", + "replaces": [ + { + "original": "GLOB.major_announcement.Announce(\"A recent bureaucratic error in the Human Resources Department may result in personnel shortages in some departments and redundant staffing in others. Contact your local HoP to solve this issue.\", \"Paperwork Mishap Alert\")", + "replace": "GLOB.major_announcement.Announce(\"Недавняя бюрократическая ошибка в отделе кадров может привести к нехватке персонала в одних отделах и избытку в других. Свяжитесь с ГП вашей станции для решения этой проблемы.\", \"Ошибка системы документооборота.\")" + } + ] + }, + { + "path": "code/modules/events/carp_migration.dm", + "replaces": [ + { + "original": "announcement = \"Massive migration of unknown biological entities has been detected near [station_name()], please stand-by.\"", + "replace": "announcement = \"Массовая миграция неизвестных биологических объектов была зафиксирована вблизи станции [station_name()], будьте наготове.\"" + }, + { + "original": "announcement = \"Unknown biological entities have been detected near [station_name()], please stand-by.\"", + "replace": "announcement = \"Неизвестные биологические объекты были зафиксированы вблизи станции [station_name()], будьте наготове.\"" + } + ] + }, + { + "path": "code/modules/events/communications_blackout.dm", + "replaces": [ + { + "original": "var/alert = pick(\t\"Ionospheric anomalies detected. Temporary telecommunication failure imminent. Please contact you*%fj00)`5vc-BZZT\", \\", + "replace": "var/alert = pick(\t\"Обнаружены ионосферные аномалии. Неизбежен временный сбой связи. Пожалуйста, свяжитесь с вашим*%fj 00)`5 vc-БЗЗЗ\", \\" + }, + { + "original": "\"Ionospheric anomalies detected. Temporary telecommunication failu*3mga;b4;'1v?-BZZZT\", \\", + "replace": "\"Обнаружены ионосферные аномалии. Неизбежен временный сбо*3mga;b4;'1v?-БЗЗЗЗ\", \\" + }, + { + "original": "\"Ionospheric anomalies detected. Temporary telec#MCi46:5.;@63-BZZZZT\", \\", + "replace": "\"Обнаружены ионосферные аномалии. Неизбежен време#MCi46:5.;@63-БЗЗЗЗЗ\", \\" + }, + { + "original": "\"Ionospheric anomalies dete'fZ\\\\kg5_0-BZZZZZT\", \\", + "replace": "\"Обнаружены ионосфе'fZ\\\\kg5_0-БЗЗЗЗЗ\", \\" + }, + { + "original": "\"Ionospheri:%? MCayj^j<.3-BZZZZZZT\", \\", + "replace": "\"Обнаруж:%? MCayj^j<.3-БЗЗЗЗЗ\", \\" + }, + { + "original": "\"#4nd%;f4y6,>?%-BZZZZZZZT\")", + "replace": "\"#4nd%;f4y6,>?%-БЗЗЗЗЗЗЗ\")" + } + ] + }, + { + "path": "code/modules/events/door_runtime.dm", + "replaces": [ + { + "original": "GLOB.minor_announcement.Announce(\"Hostile runtime detected in door controllers. Isolation lockdown protocols are now in effect. Please remain calm.\", \"Network Alert\", 'sound/AI/door_runtimes.ogg')", + "replace": "GLOB.minor_announcement.Announce(\"Вредоносное программное обеспечение обнаружено в системе контроля шл+юзов. Задействованы протоколы изоляции. Пожалуйста, сохраняйте спокойствие.\", \"УЯЗВИМОСТЬ СЕТИ.\", 'sound/AI/door_runtimes.ogg')" + }, + { + "original": "GLOB.minor_announcement.Announce(\"Automatic system reboot complete. Have a secure day.\",\"Network reset:\", 'sound/AI/door_runtimes_fix.ogg')", + "replace": "GLOB.minor_announcement.Announce(\"Автоматическая перезагрузка системы завершена. Хорошего вам дня.\",\"ПЕРЕЗАГРУЗКА СЕТИ:\", 'sound/AI/door_runtimes_fix.ogg')" + } + ] + }, + { + "path": "code/modules/events/electrical_storm.dm", + "replaces": [ + { + "original": "GLOB.minor_announcement.Announce(\"An electrical storm has been detected in your area, please repair potential electronic overloads.\", \"Electrical Storm Alert\", 'sound/AI/elec_storm.ogg')", + "replace": "GLOB.minor_announcement.Announce(\"На борту станции зафиксирована электрическая буря. Пожалуйста, устраните потенциальные перегрузки электросетей.\", \"ЭЛЕКТРИЧЕСКАЯ БУРЯ.\", 'sound/AI/elec_storm.ogg')" + } + ] + }, + { + "path": "code/modules/events/immovable_rod.dm", + "replaces": [ + { + "original": "GLOB.minor_announcement.Announce(\"What the fuck was that?!\", \"General Alert\")", + "replace": "GLOB.minor_announcement.Announce(\"Что это за хуйня?!\", \"ОБЩАЯ ТРЕВОГА.\")" + } + ] + }, + { + "path": "code/modules/events/infestation.dm", + "replaces": [ + { + "original": "vermstring = \"mice\"", + "replace": "vermstring = \"мышей\"" + }, + { + "original": "vermstring = \"lizards\"", + "replace": "vermstring = \"ящериц\"" + }, + { + "original": "vermstring = \"spiders\"", + "replace": "vermstring = \"пауков\"" + }, + { + "original": "var/vermin_chosen = vermstring || pick(\"spiders\", \"lizards\", \"mice\")", + "replace": "var/vermin_chosen = vermstring || pick(\"пауков\", \"ящериц\", \"мышей\")" + }, + { + "original": "GLOB.minor_announcement.Announce(\"Bioscans indicate that [vermin_chosen] have been breeding in \\the [initial(spawn_area_type.name)]. Clear them out, before this starts to affect productivity.\", \"Lifesign Alert\")", + "replace": "GLOB.minor_announcement.Announce(\"Биосканеры фиксируют размножение [vermin_chosen] в [initial(spawn_area_type.name)]. Избавьтесь от них, прежде чем это начнет влиять на продуктивность станции.\", \"НЕОПОЗНАННЫЕ ФОРМЫ ЖИЗНИ.\")" + } + ] + }, + { + "path": "code/modules/events/ion_storm.dm", + "replaces": [ + { + "original": "GLOB.minor_announcement.Announce(\"Ion storm detected near the station. Please check all AI-controlled equipment for errors.\", \"Anomaly Alert\", 'sound/AI/ions.ogg')", + "replace": "GLOB.minor_announcement.Announce(\"Вблизи станции обнаружена ионная буря. Пожалуйста, проверьте всё оборудование, управляемое ИИ, на наличие ошибок.\", \"ОБНАРУЖЕНА АНОМАЛИЯ.\", 'sound/AI/ions.ogg')" + } + ] + }, + { + "path": "code/modules/events/mass_hallucination.dm", + "replaces": [ + { + "original": "GLOB.minor_announcement.Announce(\"The [station_name()] is passing through a minor radiation field. Be advised that acute exposure to space radiation can induce hallucinogenic episodes.\")", + "replace": "GLOB.minor_announcement.Announce(\"[station_name()] проходит через радиационное поле низкой интенсивности. Возможно появление галлюцинаций, но не более.\")" + } + ] + }, + { + "path": "code/modules/events/meaty_ores.dm", + "replaces": [ + { + "original": "GLOB.minor_announcement.Announce(\"Unknown biological entities have been detected near [station_name()], please stand-by.\", \"Lifesign Alert\")", + "replace": "GLOB.minor_announcement.Announce(\"Неизвестные биологические объекты были обнаружены рядом с [station_name()], пожалуйста, будьте наготове.\", \"НЕОПОЗНАННЫЕ ФОРМЫ ЖИЗНИ.\")" + }, + { + "original": "GLOB.minor_announcement.Announce(\"Meaty ores have been detected on collision course with the station.\", \"Meaty Ore Alert\", new_sound = 'sound/AI/meteors.ogg')", + "replace": "GLOB.minor_announcement.Announce(\"На пути станции были обнаружены мясные метеоры.\", \"МЯСОРИТЫ.\", new_sound = 'sound/AI/meteors.ogg')" + } + ] + }, + { + "path": "code/modules/events/meteors_event.dm", + "replaces": [ + { + "original": "GLOB.minor_announcement.Announce(\"Meteors have been detected on collision course with the station.\", \"Meteor Alert\", new_sound = 'sound/AI/meteors.ogg')", + "replace": "GLOB.minor_announcement.Announce(\"Зафиксировано движение астероидов на встречном со станцией курсе.\", \"АСТЕРОИДЫ.\", new_sound = 'sound/AI/meteors.ogg')" + }, + { + "original": "GLOB.minor_announcement.Announce(\"The station is now in a meteor shower.\", \"Meteor Alert\")", + "replace": "GLOB.minor_announcement.Announce(\"Станция проходит через скопление астероидов.\", \"АСТЕРОИДЫ.\")" + }, + { + "original": "GLOB.minor_announcement.Announce(\"The station has cleared the meteor storm.\", \"Meteor Alert\")", + "replace": "GLOB.minor_announcement.Announce(\"Станция прошла через астероидный пояс\", \"АСТЕРОИДЫ.\")" + }, + { + "original": "GLOB.minor_announcement.Announce(\"The station has cleared the meteor shower\", \"Meteor Alert\")", + "replace": "GLOB.minor_announcement.Announce(\"Станция прошла через скопление астероидов\", \"АСТЕРОИДЫ.\")" + } + ] + }, + { + "path": "code/modules/events/prison_break.dm", + "replaces": [ + { + "original": "GLOB.minor_announcement.Announce(\"[pick(\"Gr3y.T1d3 virus\",\"Malignant trojan\")] detected in [station_name()] [(eventDept == \"Security\")? \"imprisonment\":\"containment\"] subroutines. Secure any compromised areas immediately. Station AI involvement is recommended.\", \"[eventDept] Alert\")", + "replace": "GLOB.minor_announcement.Announce(\"[pick(\"Вирус `Gr3y.T1d3`\",\"Вредоносный троян\")] обнаружен в подсистеме [(eventDept == \"Security\")? \"заключения\":\"безопасности\"] на [station_name()]. Немедленно обеспечьте безопасность всех затронутых отсеков. Рекомендуется вмешательство ИИ станции.\", \"АВАРИЙНОЕ ОПОВЕЩЕНИЕ [eventDept].\")" + } + ] + }, + { + "path": "code/modules/events/radiation_storm_event.dm", + "replaces": [ + { + "original": "GLOB.minor_announcement.Announce(\"High levels of radiation detected near the station. Maintenance is best shielded from radiation.\", \"Anomaly Alert\", 'sound/AI/radiation.ogg')", + "replace": "GLOB.minor_announcement.Announce(\"Вблизи станции обнаружено радиационное поле высокой интенсивности. Всему персоналу надлежит проследовать в технические тоннели.\", \"РАДИАЦИЯ.\", 'sound/AI/radiation.ogg')" + } + ] + }, + { + "path": "code/modules/events/rogue_drones.dm", + "replaces": [ + { + "original": "msg = \"A combat drone wing operating out of the NSV Icarus has failed to return from a sweep of this sector, if any are sighted approach with caution.\"", + "replace": "msg = \"Группа боевых дронов, оперируемых с борта ИКН «Икар», не вернулась с зачистки сектора. В случае контакта с дронами проявляйте осторожность.\"" + }, + { + "original": "msg = \"Contact has been lost with a combat drone wing operating out of the NSV Icarus. If any are sighted in the area, approach with caution.\"", + "replace": "msg = \"Потеряна связь с группой боевых дронов, оперируемых с борта ИКН «Икар». В случае контакта с дронами проявляйте осторожность.\"" + }, + { + "original": "msg = \"Unidentified hackers have targeted a combat drone wing deployed from the NSV Icarus. If any are sighted in the area, approach with caution.\"", + "replace": "msg = \"Неопознанные хакеры взломали систему контроля боевых дронов, оперируемых с борта ИКН «Икар». В случае контакта с дронами проявляйте осторожность.\"" + }, + { + "original": "GLOB.minor_announcement.Announce(msg, \"Rogue drone alert\")", + "replace": "GLOB.minor_announcement.Announce(msg, \"СБОЙНЫЕ ДРОНЫ.\")" + }, + { + "original": "GLOB.minor_announcement.Announce(\"Icarus drone control reports the malfunctioning wing has been recovered safely.\", \"Rogue drone alert\")", + "replace": "GLOB.minor_announcement.Announce(\"Система контроля боевых дронов сообщает, что все единицы успешно вернулись на борт «Икара».\", \"СБОЙНЫЕ ДРОНЫ.\")" + }, + { + "original": "GLOB.minor_announcement.Announce(\"Icarus drone control registers disappointment at the loss of the drones, but the survivors have been recovered.\", \"Rogue drone alert\")", + "replace": "GLOB.minor_announcement.Announce(\"Система контроля боевых дронов сообщает о потере всех боевых единиц, однако жертв не зарегистрировано.\", \"СБОЙНЫЕ ДРОНЫ.\")" + } + ] + }, + { + "path": "code/modules/events/solarflare.dm", + "replaces": [ + { + "original": "GLOB.minor_announcement.Announce(\"A solar flare has been detected on collision course with the station. Do not conduct space walks or approach windows until the flare has passed!\", \"Incoming Solar Flare\", 'sound/AI/flare.ogg')", + "replace": "GLOB.minor_announcement.Announce(\"Солнечная вспышка зафиксирована на встречном со станцией курсе. Не выходите в открытый космос и не приближайтесь к окнам до конца вспышки.\", \"СОЛНЕЧНАЯ ВСПЫШКА.\", 'sound/AI/flare.ogg')" + } + ] + }, + { + "path": "code/modules/events/spider_infestation.dm", + "replaces": [ + { + "original": "GLOB.minor_announcement.Announce(\"Unidentified lifesigns detected coming aboard [station_name()]. Secure any exterior access, including ducting and ventilation.\", \"Lifesign Alert\", new_sound = 'sound/AI/aliens.ogg')", + "replace": "GLOB.minor_announcement.Announce(\"Обнаружены неопознанные формы жизни на борту станции [station_name()]. Обезопасьте все наружные входы и выходы, включая вентиляцию и вытяжки.\", \"НЕОПОЗНАННЫЕ ФОРМЫ ЖИЗНИ.\", new_sound = 'sound/AI/aliens.ogg')" + } + ] + }, + { + "path": "code/modules/events/spider_terror.dm", + "replaces": [ + { + "original": "GLOB.major_announcement.Announce(\"Confirmed outbreak of level 3-S biohazard aboard [station_name()]. All personnel must contain the outbreak.\", \"Biohazard Alert\", 'sound/effects/siren-spooky.ogg', new_sound2 = 'sound/AI/outbreak3.ogg')", + "replace": "GLOB.major_announcement.Announce(\"Вспышка биологической угрозы уровня 3-ЭС зафиксирована на борту станции [station_name()]. Всему персоналу надлежит сдержать её распространение любой ценой!\", \"БИОЛОГИЧЕСКАЯ УГРОЗА.\", 'sound/effects/siren-spooky.ogg', new_sound2 = 'sound/AI/outbreak3.ogg')" + } + ] + }, + { + "path": "code/modules/events/tear.dm", + "replaces": [ + { + "original": "GLOB.minor_announcement.Announce(\"A tear in the fabric of space and time has opened. Expected location: [target_area.name].\", \"Anomaly Alert\", 'sound/AI/anomaly.ogg')", + "replace": "GLOB.minor_announcement.Announce(\"На борту станции зафиксирован пространственно-временной разрыв. Предполагаемая локация: [impact_area.name].\", \"ОБНАРУЖЕНА АНОМАЛИЯ.\", 'sound/AI/anomaly.ogg')" + } + ] + }, + { + "path": "code/modules/events/tear_honk.dm", + "replaces": [ + { + "original": "GLOB.minor_announcement.Announce(\"A Honknomoly has opened. Expected location: [impact_area.name].\", \"Honknomoly Alert\", 'sound/items/airhorn.ogg')", + "replace": "GLOB.minor_announcement.Announce(\"На борту станции зафиксирована Хонканомалия. Предполагаемая локация: [impact_area.name].\", \"ХОНКАНОМАЛИЯ.\", 'sound/items/airhorn.ogg')" + } + ] + }, + { + "path": "code/modules/events/traders.dm", + "replaces": [ + { + "original": "GLOB.minor_announcement.Announce(\"A trading shuttle from Jupiter Station has been denied docking permission due to the heightened security alert aboard [station_name()].\", \"Trader Shuttle Docking Request Refused\")", + "replace": "GLOB.minor_announcement.Announce(\"Торговому шаттлу со станции Юпитер было отказано в разрешении на стыковку из-за повышенной угрозы безопасности на борту [station_name()].\", \"Запрос на стыковку шаттла торговцев отклонен.\")" + }, + { + "original": "GLOB.minor_announcement.Announce(\"A trading shuttle from Jupiter Station has been granted docking permission at [station_name()] arrivals port 4.\", \"Trader Shuttle Docking Request Accepted\")", + "replace": "GLOB.minor_announcement.Announce(\"Торговый шаттл со станции Юпитер получил разрешение на стыковку в порту прибытия 4 [station_name()].\", \"Запрос на стыковку шаттла торговцев принят.\")" + } + ] + }, + { + "path": "code/modules/events/vent_clog.dm", + "replaces": [ + { + "original": "GLOB.minor_announcement.Announce(\"The scrubbers network is experiencing a backpressure surge. Some ejection of contents may occur.\", \"Atmospherics alert\", 'sound/AI/scrubbers.ogg')", + "replace": "GLOB.minor_announcement.Announce(\"Зафиксирован скачок обратного давления в системе вытяжных труб. Возможен выброс содержимого.\", \"АТМОСФЕРНАЯ ТРЕВОГА.\", 'sound/AI/scrubbers.ogg')" + } + ] + }, + { + "path": "code/modules/events/wormholes.dm", + "replaces": [ + { + "original": "GLOB.minor_announcement.Announce(\"Space-time anomalies detected on the station. There is no additional data.\", \"Anomaly Alert\", new_sound = 'sound/AI/spanomalies.ogg')", + "replace": "GLOB.minor_announcement.Announce(\"Зафиксированы пространственно-временные аномалии на борту станции. Дополнительная информация отсутствует.\", \"ОБНАРУЖЕНА АНОМАЛИЯ.\", new_sound = 'sound/AI/spanomalies.ogg')" + } + ] + }, + { + "path": "code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm", + "replaces": [ + { + "original": "name = \"deep fryer\"", + "replace": "name = \"фритюрница\"" + }, + { + "original": "desc = \"Deep fried everything.\"", + "replace": "desc = \"Обжарить во фритюре всё.\"" + } + ] + }, + { + "path": "code/modules/food_and_drinks/kitchen_machinery/grill_new.dm", + "replaces": [ + { + "original": "name = \"grill\"", + "replace": "name = \"гриль\"" + }, + { + "original": "desc = \"Backyard grilling, IN SPACE.\"", + "replace": "desc = \"Гриль на заднем дворе, В КОСМОСЕ.\"" + } + ] + }, + { + "path": "code/modules/food_and_drinks/kitchen_machinery/oven_new.dm", + "replaces": [ + { + "original": "name = \"oven\"", + "replace": "name = \"печь\"" + }, + { + "original": "desc = \"Cookies are ready, dear.\"", + "replace": "desc = \"Печенье готово, дорогой.\"" + } + ] + }, + { + "path": "code/modules/food_and_drinks/kitchen_machinery/processor.dm", + "replaces": [ + { + "original": "name = \"Food Processor\"", + "replace": "name = \"кухонный комбайн\"" + } + ] + }, + { + "path": "code/modules/mob/dead/observer/observer_base.dm", + "replaces": [ + { + "original": "stat(null, \"Respawnability: [HAS_TRAIT(src, TRAIT_RESPAWNABLE) ? \"Yes\" : \"No\"]\")", + "replace": "stat(null, \"Возможность респавна: [HAS_TRAIT(src, TRAIT_RESPAWNABLE) ? \"Да\" : \"Нет\"]\")" + } + ] + }, + { + "path": "code/modules/mob/living/carbon/human/species/skeleton_species.dm", + "replaces": [ + { + "original": "if(prob(3))", + "replace": "if(prob(10)) // SS220 EDIT: ORIGINAL - 3%" + }, + { + "original": "H.say(pick(\"Thanks Mr. Skeltal\", \"Thank for strong bones\", \"Doot doot!\"))", + "replace": "H.say(pick(\"Спасибо Мистеру Скелтал!\", \"От такого молока челюсть отвисает!\", \"Я вижу четКость своих решений!\", \"Надо не забыть пересчитать косточки...\", \"Маленькие скелеты паКостят!\", \"Хорошо что у меня язык без костей!\", \"Теперь я не буду ЧЕРЕПашкой!\", \"Теперь мне не нужны костыли!\", \"Костян плохого не посоветует!\", \"Ощущаешь мою ловКость?\", \"Я чувствую такую лёгКость!\", \"Большая редКость найти любимую жидКость!\", \"Моя любимая жидКость!\", \"Аж закостенел!\", \"Теперь я вешу скелетонну!\", \"Спасибо за крепкие кости!\", \"Ду-ду!\", \"Вы замечали что мы все в одной плосКости?\"))" + } + ] + }, + { + "path": "code/modules/mob/mob.dm", + "replaces": [ + { + "original": "stat(null, \"Round ID: [GLOB.round_id ? GLOB.round_id : \"NULL\"]\")", + "replace": "stat(null, \"Номер раунда: [GLOB.round_id ? GLOB.round_id : \"NULL\"]\")" + }, + { + "original": "stat(null, \"Map: [SSmapping.map_datum.fluff_name]\")", + "replace": "stat(null, \"Карта: [SSmapping.map_datum.fluff_name]\")" + }, + { + "original": "stat(null, \"Next Map: [SSmapping.next_map.fluff_name]\")", + "replace": "stat(null, \"Следующая карта: [SSmapping.next_map.fluff_name]\")" + }, + { + "original": "stat(null, \"Players Connected: [length(GLOB.clients)]\")", + "replace": "stat(null, \"Игроков подключено: [length(GLOB.clients)]\")" + }, + { + "original": "stat(null, \"Server Uptime: [worldtime2text()]\")", + "replace": "stat(null, \"Время работы сервера: [worldtime2text()]\")" + }, + { + "original": "stat(null, \"Round Time: [ROUND_TIME ? time2text(ROUND_TIME, \"hh:mm:ss\") : \"N/A\"]\")", + "replace": "stat(null, \"Длительность раунда: [ROUND_TIME ? time2text(ROUND_TIME, \"hh:mm:ss\") : \"N/A\"]\")" + }, + { + "original": "stat(null, \"Station Time: [station_time_timestamp()]\")", + "replace": "stat(null, \"Станционное время: [station_time_timestamp()]\")" + } + ] + }, + { + "path": "code/modules/mob/new_player/new_player.dm", + "replaces": [ + { + "original": "output += \"

I consent\"", + "replace": "output += \"

Я согласен\"" + }, + { + "original": "output += \"

I DO NOT consent\"", + "replace": "output += \"

Я не согласен\"" + }, + { + "original": "var/datum/browser/popup = new(src, \"privacy_consent\", \"

Privacy Consent
\", 500, 400)", + "replace": "var/datum/browser/popup = new(src, \"privacy_consent\", \"
Соглашение о конфиденциальности
\", 500, 400)" + }, + { + "original": "real_name = \"Random Character Slot\"", + "replace": "real_name = \"Случайный персонаж\"" + }, + { + "original": "var/output = \"

Setup Character
[real_name]

\"", + "replace": "var/output = \"

Настройка персонажа
[real_name]

\"" + }, + { + "original": "if(!ready)\toutput += \"

Declare Ready

\"", + "replace": "if(!ready)\toutput += \"

Нажмите, если готовы

\"" + }, + { + "original": "else\toutput += \"

You are ready (Cancel)

\"", + "replace": "else\toutput += \"

Вы готовы (Отмена)

\"" + }, + { + "original": "output += \"

View the Crew Manifest

\"", + "replace": "output += \"

Просмотр списка экипажа

\"" + }, + { + "original": "output += \"

Join Game!

\"", + "replace": "output += \"

Присоединиться к игре!

\"" + }, + { + "original": "if(!client.skip_antag) output += \"

Global Antag Candidacy\"", + "replace": "if(!client.skip_antag) output += \"

Глобальная настройка антагов\"" + }, + { + "original": "output += \"
You are [client.skip_antag ? \"ineligible\" : \"eligible\"] for all antag roles.

\"", + "replace": "output += \"
Вы [client.skip_antag ? \"не готовы\" : \"готовы\"] для всех антаг ролей.

\"" + }, + { + "original": "output += \"

Observe (Please wait...)

\"", + "replace": "output += \"

Наблюдать (Ожидайте...)

\"" + }, + { + "original": "output += \"

Observe

\"", + "replace": "output += \"

Наблюдать

\"" + }, + { + "original": "output += \"

Terms of Service

\"", + "replace": "output += \"

Условия использования

\"" + }, + { + "original": "var/datum/browser/popup = new(src, \"playersetup\", \"
New Player Options
\", 240, 340)", + "replace": "var/datum/browser/popup = new(src, \"playersetup\", \"
Новый игрок
\", 240, 340)" + }, + { + "original": "stat(\"Game Mode: [GLOB.master_mode]\")", + "replace": "stat(\"Режим: [GLOB.master_mode]\")" + }, + { + "original": "stat(\"Game Mode: Secret\")", + "replace": "stat(\"Режим: Секрет\")" + }, + { + "original": "stat(\"Time To Start: [round(SSticker.pregame_timeleft/10)]\")", + "replace": "stat(\"Начало через: [round(SSticker.pregame_timeleft/10)]\")" + }, + { + "original": "stat(\"Time To Start:\", \"DELAYED\")", + "replace": "stat(\"Начало через:\", \"ПАУЗА\")" + }, + { + "original": "stat(\"Players: [totalPlayers]\")", + "replace": "stat(\"Игроки: [totalPlayers]\")" + }, + { + "original": "stat(\"Players Ready: [totalPlayersReady]\")", + "replace": "stat(\"Готово: [totalPlayersReady]\")" + }, + { + "original": "stat(\"[player.key] [(player.ready) ? (\"(Playing)\") : (null)]\")", + "replace": "stat(\"[player.key] [(player.ready) ? (\"(В игре)\") : (null)]\")" + }, + { + "original": "to_chat(usr, \"You must consent to the terms of service before you can join!\")", + "replace": "to_chat(usr, \"Перед тем как присоединиться, вы должны согласиться с условиями использования!\")" + }, + { + "original": "to_chat(usr, \"You have no jobs enabled, along with return to lobby if job is unavailable. This makes you ineligible for any round start role, please update your job preferences.\")", + "replace": "to_chat(usr, \"Вы не выбрали ни одну должность, а также включена функция возврата в лобби в случае недоступности должности. Это не даёт вам получить раунд-стартовую роль, проверьте ваши настройки должностей.\")" + }, + { + "original": "to_chat(usr, \"You must wait for the server to finish starting before you can join!\")", + "replace": "to_chat(usr, \"Вы должны дождаться окончания запуска сервера, прежде чем сможете присоединиться к нему!\")" + }, + { + "original": "if(alert(src,\"Are you sure you wish to observe? You cannot normally join the round after doing this!\",\"Player Setup\",\"Yes\",\"No\") == \"Yes\")", + "replace": "if(alert(src,\"Вы уверены, что хотите наблюдать? После этого Вы не сможете присоединиться к раунду!\",\"Настройка игрока\",\"Да\",\"Нет\") == \"Да\")" + }, + { + "original": "to_chat(src, \"Now teleporting.\")", + "replace": "to_chat(src, \"Телепортация...\")" + }, + { + "original": "to_chat(usr, \"The round is either not ready, or has already finished...\")", + "replace": "to_chat(usr, \"Раунд либо не готов, либо уже завершился...\")" + }, + { + "original": "to_chat(src, alert(\"You are currently not whitelisted to play [client.prefs.active_character.species].\"))", + "replace": "to_chat(src, alert(\"В настоящее время вы не включены в белый список для игры на [client.prefs.active_character.species].\"))" + }, + { + "original": "to_chat(usr, \"There is an administrative lock on entering the game!\")", + "replace": "to_chat(usr, \"Администратор запретил входить в игру!\")" + }, + { + "original": "to_chat(src, alert(\"[rank] is not available. Please try another.\"))", + "replace": "to_chat(src, alert(\"[rank] не доступен. Попробуйте другую должность.\"))" + }, + { + "original": "to_chat(src, alert(\"[rank] is not available due to your character's disability. Please try another.\"))", + "replace": "to_chat(src, alert(\"[rank] недоступен из-за инвалидности вашего персонажа. Попробуйте другую должность.\"))" + }, + { + "original": "to_chat(src, alert(\"[rank] is not available due to your character having amputated limbs without a prosthetic replacement. Please try another.\"))", + "replace": "to_chat(src, alert(\"[rank] недоступен из-за того, что у вашего персонажа ампутированы конечности и отсутствуют протезы. Попробуйте другую должность.\"))" + }, + { + "original": "join_message = \"has arrived\"", + "replace": "join_message = \"прибыл[character.gender == FEMALE ? \"а\" : \"\"]\"" + }, + { + "original": "join_message = \"has arrived on the station\"", + "replace": "join_message = \"прибыл[character.gender == FEMALE ? \"а\" : \"\"] на станцию\"" + }, + { + "original": "dat += \"Choose from the following open positions:

\"", + "replace": "dat += \"Выберите одну из следующих открытых вакансий:

\"" + }, + { + "original": "dat += \"

Unfortunately, there are no job slots free currently.
Wait a few minutes, then try again.
Or, try observing the round.
\"", + "replace": "dat += \"

К сожалению, в настоящее время свободных вакансий нет.
Попробуйте снова через несколько минут
Или попробуйте понаблюдать за раундом.
\"" + }, + { + "original": "var/datum/browser/popup = new(src, \"latechoices\", \"Choose Profession\", 900, 600)", + "replace": "var/datum/browser/popup = new(src, \"latechoices\", \"Выберите должность\", 900, 600)" + } + ] + }, + { + "path": "code/modules/power/engines/supermatter/supermatter.dm", + "replaces": [ + { + "original": "var/safe_alert = \"Crystalline hyperstructure returning to safe operating parameters.\"", + "replace": "var/safe_alert = \"Возвращение кристаллической гиперструктуры к безопасным рабочим параметрам.\"" + }, + { + "original": "var/warning_alert = \"Danger! Crystal hyperstructure integrity faltering!\"", + "replace": "var/warning_alert = \"Опасность! Нарушение целостности гиперструктуры кристалла!\"" + }, + { + "original": "var/emergency_alert = \"CRYSTAL DELAMINATION IMMINENT.\"", + "replace": "var/emergency_alert = \"РАССЛОЕНИЕ КРИСТАЛЛА НЕИЗБЕЖНО.\"" + }, + { + "original": "GLOB.major_announcement.Announce(\"WARNING, REACTOR CORE IS IN CRITICAL CHARGE!\", \"SUPERMATTER: STATUS CRITICAL\", 'modular_ss220/aesthetics_sounds/sound/supermatter/meltdown.ogg') //SS220 EDIT - ADDITION", + "replace": "GLOB.major_announcement.Announce(\"ВНИМАНИЕ, АКТИВНАЯ ЗОНА РЕАКТОРА НАХОДИТСЯ В КРИТИЧЕСКОМ СОСТОЯНИИ!\", \"РЕАКТОР СУПЕРМАТЕРИИ: СОСТОЯНИЕ КРИТИЧЕСКОЕ\", 'modular_ss220/aesthetics_sounds/sound/supermatter/meltdown.ogg') //SS220 EDIT - ADDITION" + }, + { + "original": "GLOB.major_announcement.Announce(\"WARNING, CORE OVERHEATTING. NUCLEAR KNOCKDOWN IMMINENT!\", \"SUPERMATTER: STATUS CRITICAL\", 'modular_ss220/aesthetics_sounds/sound/supermatter/core_overheating.ogg') //SS220 EDIT - ADDITION", + "replace": "GLOB.major_announcement.Announce(\"ВНИМАНИЕ, АКТИВНАЯ ЗОНА РЕАКТОРА НАХОДИТСЯ В СОСТОЯНИИ КРИТИЧЕСКОГО ПЕРЕГРЕВА. ЯДЕРНАЯ КАТАСТРОФА НЕИЗБЕЖНА!\", \"РЕАКТОР СУПЕРМАТЕРИИ: СОСТОЯНИЕ КРИТИЧЕСКОЕ\", 'modular_ss220/aesthetics_sounds/sound/supermatter/core_overheating.ogg') //SS220 EDIT - ADDITION" + }, + { + "original": "var/speaking = \"[emergency_alert] The supermatter has reached critical integrity failure. Emergency causality destabilization field has been activated.\"", + "replace": "var/speaking = \"[emergency_alert] Суперматерия достигла критического нарушения целостности. Активировано аварийное дестабилизационное поле.\"" + }, + { + "original": "radio.autosay(\"[safe_alert] Failsafe has been disengaged.\", name, null, list(z))", + "replace": "radio.autosay(\"[safe_alert] Система отказоустойчивости деактивирована.\", name, null, list(z))" + }, + { + "original": "speaking = \"[DisplayTimeText(i, TRUE)] remain before causality stabilization.\"", + "replace": "speaking = \"До взрыва кристалла суперматерии осталось [DisplayTimeText(i, TRUE)].\"" + }, + { + "original": "radio.autosay(\"[emergency_alert] Integrity: [get_integrity()]%\", name, null, list(z))", + "replace": "radio.autosay(\"[emergency_alert] Целостность: [get_integrity()]%\", name, null, list(z))" + }, + { + "original": "radio.autosay(\"[warning_alert] Integrity: [get_integrity()]%\", name, \"Engineering\", list(z))", + "replace": "radio.autosay(\"[warning_alert] Целостность: [get_integrity()]%\", name, \"Engineering\", list(z))" + }, + { + "original": "radio.autosay(\"[safe_alert] Integrity: [get_integrity()]%\", name, \"Engineering\", list(z))", + "replace": "radio.autosay(\"[safe_alert] Целостность: [get_integrity()]%\", name, \"Engineering\", list(z))" + }, + { + "original": "radio.autosay(\"Warning: Hyperstructure has reached dangerous power level.\", name, \"Engineering\", list(z))", + "replace": "radio.autosay(\"Гиперструктура достигла опасного уровня мощности.\", name, \"Engineering\", list(z))" + }, + { + "original": "radio.autosay(\"DANGER: CHARGE INERTIA CHAIN REACTION IN PROGRESS.\", name, \"Engineering\", list(z))", + "replace": "radio.autosay(\"ОПАСНОСТЬ: ИДЕТ ИНЕРЦИОННАЯ ЦЕПНАЯ РЕАКЦИЯ ЗАРЯДА.\", name, \"Engineering\", list(z))" + }, + { + "original": "radio.autosay(\"Warning: Critical coolant mass reached.\", name, \"Engineering\", list(z))", + "replace": "radio.autosay(\"Предупреждение: Достигнута критическая масса теплоносителя.\", name, \"Engineering\", list(z))" + } + ] + }, + { + "path": "code/modules/response_team/ert.dm", + "replaces": [ + { + "original": "GLOB.major_announcement.Announce(\"[station_name()], we are unfortunately unable to send you an Emergency Response Team at this time.\", \"ERT Unavailable\")", + "replace": "GLOB.major_announcement.Announce(\"[station_name()], к сожалению, в настоящее время мы не можем направить к вам отряд быстрого реагирования.\", \"ОБР недоступен.\")" + }, + { + "original": "GLOB.major_announcement.Announce(\"Attention, [station_name()]. We are sending a team of highly trained assistants to aid(?) you. Standby.\", \"ERT En-Route\")", + "replace": "GLOB.major_announcement.Announce(\"Внимание, [station_name()]. Мы направляем команду высококвалифицированных ассистентов для оказания помощи(?) вам. Ожидайте.\", \"ОБР в пути.\")" + }, + { + "original": "GLOB.major_announcement.Announce(\"Attention, [station_name()]. We are sending a code AMBER light Emergency Response Team. Standby.\", \"ERT En-Route\")", + "replace": "GLOB.major_announcement.Announce(\"Внимание, [station_name()]. Мы направляем стандартный отряд быстрого реагирования кода «ЭМБЕР». Ожидайте.\", \"ОБР в пути.\")" + }, + { + "original": "GLOB.major_announcement.Announce(\"Attention, [station_name()]. We are sending a code RED Emergency Response Team. Standby.\", \"ERT En-Route\")", + "replace": "GLOB.major_announcement.Announce(\"Внимание, [station_name()]. Мы направляем усиленный отряд быстрого реагирования кода «РЭД». Ожидайте.\", \"ОБР в пути.\")" + }, + { + "original": "GLOB.major_announcement.Announce(\"Attention, [station_name()]. We are sending a code GAMMA elite Emergency Response Team. Standby.\", \"ERT En-Route\")", + "replace": "GLOB.major_announcement.Announce(\"Внимание, [station_name()]. Мы направляем элитный отряд быстрого реагирования кода «ГАММА». Ожидайте.\", \"ОБР в пути.\")" + } + ] + }, + { + "path": "code/modules/security_levels/security_level_datums.dm", + "replaces": [ + { + "original": "lowering_to_announcement_title = \"Attention! Security level lowered to Green.\"", + "replace": "lowering_to_announcement_title = \"ВНИМАНИЕ! Уровень угрозы понижен до ЗЕЛЁНОГО.\"" + }, + { + "original": "lowering_to_announcement_text = \"All threats to the station have passed. All weapons need to be holstered and privacy laws are once again fully enforced.\"", + "replace": "lowering_to_announcement_text = \"Все угрозы для станции устранены. Все оружие должно быть в кобуре, и законы о конфиденциальности вновь полностью соблюдаются.\"" + }, + { + "original": "lowering_to_announcement_title = \"Attention! Security level lowered to Blue.\"", + "replace": "lowering_to_announcement_title = \"ВНИМАНИЕ! Уровень угрозы понижен до СИНЕГО.\"" + }, + { + "original": "lowering_to_announcement_text = \"The immediate threat has passed. Security may no longer have weapons drawn at all times, but may continue to have them visible. Random searches are still allowed.\"", + "replace": "lowering_to_announcement_text = \"Непосредственная угроза миновала. Служба безопасности может больше не держать оружие в полной боевой готовности, но может по-прежнему держать его на виду. Выборочные обыски запрещены.\"" + }, + { + "original": "elevating_to_announcement_title = \"Attention! Security level elevated to Blue.\"", + "replace": "elevating_to_announcement_title = \"ВНИМАНИЕ! Уровень угрозы повышен до СИНЕГО.\"" + }, + { + "original": "elevating_to_announcement_text = \"The station has received reliable information about possible hostile activity on the station. Security staff may have weapons visible and random searches are permitted.\"", + "replace": "elevating_to_announcement_text = \"Станция получила надежные данные о возможной враждебной активности на борту. Служба Безопасности может держать оружие на виду.\"" + }, + { + "original": "lowering_to_announcement_title = \"Attention! Code Red!\"", + "replace": "lowering_to_announcement_title = \"ВНИМАНИЕ! КОД КРАСНЫЙ!\"" + }, + { + "original": "lowering_to_announcement_text = \"The station's self-destruct mechanism has been deactivated, but there is still an immediate and serious threat to the station. Security may have weapons unholstered at all times. Random searches are allowed and advised.\"", + "replace": "lowering_to_announcement_text = \"Код был снижен до красного. Станции по-прежнему грозит серьёзная опасность. Службе Безопасности рекомендуется иметь оружие в полной боевой готовности. Выборочные обыски разрешены.\"" + }, + { + "original": "elevating_to_announcement_title = \"Attention! Code Red!\"", + "replace": "elevating_to_announcement_title = \"ВНИМАНИЕ! КОД КРАСНЫЙ!\"" + }, + { + "original": "elevating_to_announcement_text = \"There is an immediate and serious threat to the station. Security may have weapons unholstered at all times. Random searches are allowed and advised.\"", + "replace": "elevating_to_announcement_text = \"Станции грозит серьёзная опасность. Службе Безопасности рекомендуется иметь оружие в полной боевой готовности. Выборочные обыски разрешены.\"" + }, + { + "original": "lowering_to_announcement_title = \"Attention! Gamma security level activated!\"", + "replace": "lowering_to_announcement_title = \"Внимание! Код ГАММА!\"" + }, + { + "original": "lowering_to_announcement_text = \"Central Command has ordered the Gamma security level on the station. Security is to have weapons equipped at all times, and all civilians are to immediately seek their nearest head for transportation to a secure location.\"", + "replace": "lowering_to_announcement_text = \"Центральным Командованием был установлен Код Гамма на станции. Служба безопасности должна быть полностью вооружена. Гражданский персонал обязан немедленно обратиться к Главам отделов для получения дальнейших указаний.\"" + }, + { + "original": "elevating_to_announcement_text = \"Central Command has ordered the Gamma security level on the station. Security is to have weapons equipped at all times, and all civilians are to immediately seek their nearest head for transportation to a secure location.\"", + "replace": "elevating_to_announcement_text = \"Центральным Командованием был установлен Код Гамма на станции. Служба безопасности должна быть полностью вооружена. Гражданский персонал обязан немедленно обратиться к Главам отделов для получения дальнейших указаний.\"" + }, + { + "original": "elevating_to_announcement_title = \"Attention! Gamma security level activated!\"", + "replace": "elevating_to_announcement_title = \"Внимание! Код ГАММА!\"" + }, + { + "original": "lowering_to_announcement_title = \"Attention! Epsilon security level activated!\"", + "replace": "lowering_to_announcement_title = \"ВНИМАНИЕ! КОД ЭПСИЛОН!\"" + }, + { + "original": "lowering_to_announcement_text = \"Central Command has ordered the Epsilon security level on the station. Consider all contracts terminated.\"", + "replace": "lowering_to_announcement_text = \"Центральным командованием был установлен код ЭПСИЛОН. Все контракты расторгнуты.\"" + }, + { + "original": "elevating_to_announcement_title = \"Attention! Epsilon security level activated!\"", + "replace": "elevating_to_announcement_title = \"ВНИМАНИЕ! КОД ЭПСИЛОН!\"" + }, + { + "original": "elevating_to_announcement_text = \"Central Command has ordered the Epsilon security level on the station. Consider all contracts terminated.\"", + "replace": "elevating_to_announcement_text = \"Центральным командованием был установлен код ЭПСИЛОН. Все контракты расторгнуты.\"" + }, + { + "original": "elevating_to_announcement_title = \"Attention! Delta security level reached!\"", + "replace": "elevating_to_announcement_title = \"ВНИМАНИЕ! КОД ДЕЛЬТА!\"" + }, + { + "original": "elevating_to_announcement_text = \"The station's self-destruct mechanism has been engaged. All crew are instructed to obey all instructions given by heads of staff. Any violations of these orders can be punished by death. This is not a drill.\"", + "replace": "elevating_to_announcement_text = \"Механизм самоуничтожения станции задействован. Все члены экипажа обязан подчиняться всем указаниям, данными Главами отделов. Любые нарушения этих приказов наказуемы уничтожением на месте. Это не учебная тревога.\"" + } + ] + }, + { + "path": "code/modules/shuttle/emergency.dm", + "replaces": [ + { + "original": "\"The emergency shuttle has been called. [redAlert ? \"Red Alert state confirmed: Dispatching priority shuttle. \" : \"\" ]It will arrive in [timeLeft(600)] minutes.[reason][SSshuttle.emergencyLastCallLoc ? \"\\n\\nCall signal traced. Results can be viewed on any communications console.\" : \"\" ]\",", + "replace": "GLOB.major_announcement.Announce(\"Был вызван эвакуационный шаттл. [redAlert ? \"Красный уровень угрозы подтверждён: отправлен приоритетный шаттл. \" : \"\" ]Он прибудет в течение [timeLeft(600)] минут.[reason][SSshuttle.emergencyLastCallLoc ? \"\\n\\nВызов шаттла отслежен. Результаты можно посмотреть на любой консоли связи.\" : \"\" ]\")," + }, + { + "original": "new_title = \"Priority Announcement\",", + "replace": "new_title = \"Приоритетное оповещение\"," + }, + { + "original": "\"The crew transfer shuttle has been called. [redAlert ? \"Red Alert state confirmed: Dispatching priority shuttle. \" : \"\" ]It will arrive in [timeLeft(600)] minutes.[reason]\",", + "replace": "\"Был вызван эвакуационный шаттл. [redAlert ? \"Красный уровень угрозы подтверждён: отправлен приоритетный шаттл. \" : \"\" ]Он прибудет в течение [timeLeft(600)] минут.[reason]\"," + } + ] + } + ] +}