Имя | Статус | Место | 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 += "[Bot.hacked ? "(!) [Bot.name]" : Bot.name] ([Bot.model]) | "
//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 += "[Bot.on ? "[Bot.mode ? "[ Bot.mode_name[Bot.mode] ]": "Idle"]" : "Inactive"] | "
+ d += "[Bot.on ? "[Bot.mode ? "[ Bot.mode_name[Bot.mode] ]": "Idle"]" : "Неактивен"] | "
d += "[bot_area.name] | "
d += "Interface | "
d += "Call | "
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 += ""
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]\","
+ }
+ ]
+ }
+ ]
+}