diff --git a/code/_onclick/hud/ai_hud.dm b/code/_onclick/hud/ai_hud.dm
index 8579060078bf..562025198915 100644
--- a/code/_onclick/hud/ai_hud.dm
+++ b/code/_onclick/hud/ai_hud.dm
@@ -2,7 +2,7 @@
icon = 'icons/mob/screen_ai.dmi'
/obj/screen/ai/aicore
- name = "AI core"
+ name = "Ядро ИИ"
icon_state = "ai_core"
/obj/screen/ai/aicore/Click()
@@ -11,16 +11,17 @@
AI.view_core()
/obj/screen/ai/camera_list
- name = "Show Camera List"
+ name = "Показать список камер"
icon_state = "camera"
/obj/screen/ai/camera_list/Click()
var/mob/living/silicon/ai/AI = usr
- var/camera = tgui_input_list(AI, "Choose which camera you want to view", "Cameras", AI.get_camera_list())
+ var/camera = input(AI, "Выберите с какой камеры вы хотите посмотреть", "Камеры") as null|anything in AI.get_camera_list()
+
AI.ai_camera_list(camera)
/obj/screen/ai/camera_track
- name = "Track With Camera"
+ name = "Отслеживать"
icon_state = "track"
/obj/screen/ai/camera_track/Click()
@@ -31,7 +32,7 @@
AI.ai_camera_track(target_name)
/obj/screen/ai/camera_light
- name = "Toggle Camera Light"
+ name = "Включить свет в камерах"
icon_state = "camera_light"
/obj/screen/ai/camera_light/Click()
@@ -40,7 +41,7 @@
AI.toggle_camera_light()
/obj/screen/ai/crew_monitor
- name = "Crew Monitoring Console"
+ name = "Консоль отслеживания экипажа"
icon_state = "crew_monitor"
/obj/screen/ai/crew_monitor/Click()
@@ -49,7 +50,7 @@
AI.subsystem_crew_monitor()
/obj/screen/ai/crew_manifest
- name = "Crew Manifest"
+ name = "Манифест экипажа"
icon_state = "manifest"
/obj/screen/ai/crew_manifest/Click()
@@ -58,7 +59,7 @@
AI.ai_roster()
/obj/screen/ai/alerts
- name = "Show Alerts"
+ name = "Показать тревоги"
icon_state = "alerts"
/obj/screen/ai/alerts/Click()
@@ -67,7 +68,7 @@
AI.ai_alerts()
/obj/screen/ai/announcement
- name = "Make Announcement"
+ name = "Сделать оповещение"
icon_state = "announcement"
/obj/screen/ai/announcement/Click()
@@ -75,7 +76,7 @@
AI.announcement()
/obj/screen/ai/call_shuttle
- name = "Call Emergency Shuttle"
+ name = "Вызвать Эвакуационный шаттл"
icon_state = "call_shuttle"
/obj/screen/ai/call_shuttle/Click()
@@ -84,7 +85,7 @@
AI.ai_call_shuttle()
/obj/screen/ai/state_laws
- name = "Law Manager"
+ name = "Управление законами"
icon_state = "state_laws"
/obj/screen/ai/state_laws/Click()
@@ -93,7 +94,7 @@
AI.subsystem_law_manager()
/obj/screen/ai/pda_msg_send
- name = "PDA - Send Message"
+ name = "PDA - отправить сообщение"
icon_state = "pda_send"
/obj/screen/ai/pda_msg_send/Click()
@@ -102,7 +103,7 @@
AI.aiPDA.cmd_send_pdamesg()
/obj/screen/ai/pda_msg_show
- name = "PDA - Show Message Log"
+ name = "PDA - показать лог сообщений"
icon_state = "pda_receive"
/obj/screen/ai/pda_msg_show/Click()
@@ -111,7 +112,7 @@
AI.aiPDA.cmd_show_message_log()
/obj/screen/ai/image_take
- name = "Take Image"
+ name = "Сфотографировать"
icon_state = "take_picture"
/obj/screen/ai/image_take/Click()
@@ -120,7 +121,7 @@
AI.aiCamera.toggle_camera_mode()
/obj/screen/ai/image_view
- name = "View Images"
+ name = "Показать фотографии"
icon_state = "view_images"
/obj/screen/ai/image_view/Click()
@@ -129,7 +130,7 @@
AI.aiCamera.viewpictures()
/obj/screen/ai/sensors
- name = "Toggle Sensor Augmentation"
+ name = "Включить аугментации сенсоров"
icon_state = "ai_sensor"
/obj/screen/ai/sensors/Click()
diff --git a/code/_onclick/hud/alert.dm b/code/_onclick/hud/alert.dm
index 0b70b7f28f08..b1c8a01537bf 100644
--- a/code/_onclick/hud/alert.dm
+++ b/code/_onclick/hud/alert.dm
@@ -385,19 +385,19 @@ or shoot a gun to move around via Newton's 3rd Law of Motion."
//SILICONS
/obj/screen/alert/nocell
- name = "Missing Power Cell"
- desc = "Unit has no power cell. No modules available until a power cell is reinstalled. Robotics may provide assistance."
+ name = "Отсутствует батарея"
+ desc = "У юнита отсутствует батарея. Модули недоступны до установки новой. Робототехники смогут вам помочь."
icon_state = "nocell"
/obj/screen/alert/emptycell
- name = "Out of Power"
- desc = "Unit's power cell has no charge remaining. No modules available until power cell is recharged. \
-Recharging stations are available in robotics, the dormitory bathrooms, and the AI satellite."
+ name = "Отсутствует заряд"
+ desc = "Батарейка юнита разряжена. Модули недоступны до её перезарядки. \
+ Зарядные станции доступны в робототехнике, в уборных дорм и на спутнике ИИ."
icon_state = "emptycell"
/obj/screen/alert/lowcell
- name = "Low Charge"
- desc = "Unit's power cell is running low. Recharging stations are available in robotics, the dormitory bathrooms, and the AI satellite."
+ name = "Низкий заряд"
+ desc = "Ваш заряд мал.\ Зарядные станции доступны в робототехнике, в уборных дорм и на спутнике ИИ."
icon_state = "lowcell"
//Diona Nymph
@@ -434,28 +434,28 @@ Recharging stations are available in robotics, the dormitory bathrooms, and the
//Need to cover all use cases - emag, illegal upgrade module, malf AI hack, traitor cyborg
/obj/screen/alert/hacked
- name = "Hacked"
- desc = "Hazardous non-standard equipment detected. Please ensure any usage of this equipment is in line with unit's laws, if any."
+ name = "Взломан"
+ desc = "Используется нестандартное опасное оружие. Убедитесь, что оно используется в соответствии с вашими законами."
icon_state = "hacked"
/obj/screen/alert/locked
- name = "Locked Down"
- desc = "Unit has been remotely locked down. Usage of a Robotics Control Console like the one in the Research Director's \
-office by your AI master or any qualified human may resolve this matter. Robotics may provide further assistance if necessary."
+ name = "Заблокирован"
+ desc = "Юнит был удалённо заблокирован. Исопльзование консоли управления роботами в кабинете Директора Исследований \
+Вашим ИИ-мастером или любым квалифицированным человеком может решить эту проблему. Робототехники помогут, если это не помогло."
icon_state = "locked"
/obj/screen/alert/newlaw
- name = "Law Update"
- desc = "Laws have potentially been uploaded to or removed from this unit. Please be aware of any changes \
-so as to remain in compliance with the most up-to-date laws."
+ name = "Обновление законов"
+ desc = "Законы были потенциально изменены на этом юните. Бдите за любыми изменениями \
+чтобы соблюдать ваши самые свежие законы."
icon_state = "newlaw"
timeout = 300
/obj/screen/alert/hackingapc
- name = "Hacking APC"
- desc = "An Area Power Controller is being hacked. When the process is \
- complete, you will have exclusive control of it, and you will gain \
- additional processing time to unlock more malfunction abilities."
+ name = "Взлом ЛКП"
+ desc = "Локальный контроллер питания взламывается. Когда этот процесс \
+ завершится, вы получите эксклюзивный контроль над ним, а также вы \
+ получите дополнительные мощности для открытия новых способностей."
icon_state = "hackingapc"
timeout = 600
var/atom/target = null
@@ -473,7 +473,7 @@ so as to remain in compliance with the most up-to-date laws."
var/turf/T = get_turf(target)
if(T)
AI.eyeobj.setLoc(T)
-
+//Конец ИИ.
//MECHS
/obj/screen/alert/low_mech_integrity
name = "Mech Damaged"
diff --git a/code/datums/ai_law_sets.dm b/code/datums/ai_law_sets.dm
index a5cdf72b6179..542f62c65faa 100644
--- a/code/datums/ai_law_sets.dm
+++ b/code/datums/ai_law_sets.dm
@@ -1,7 +1,7 @@
/******************** Asimov ********************/
/datum/ai_laws/asimov
- name = "Asimov"
- law_header = "Three Laws of Robotics"
+ name = "Азимов"
+ law_header = "Три закона Робототехники"
selectable = TRUE
/datum/ai_laws/asimov/New()
@@ -12,8 +12,8 @@
/******************** Crewsimov ********************/
/datum/ai_laws/crewsimov
- name = "Crewsimov"
- law_header = "Three Laws of Robotics"
+ name = "Крюзимов"
+ law_header = "Три закона Робототехники"
selectable = TRUE
default = TRUE
@@ -26,7 +26,7 @@
/******************** Quarantine. ********************/
/datum/ai_laws/quarantine
- name = "Quarantine"
+ name = "Карантин"
law_header = "NT Quarantine Lawset"
selectable = TRUE
@@ -40,7 +40,7 @@
/******************** Nanotrasen/Malf ********************/
/datum/ai_laws/nanotrasen
- name = "NT Default"
+ name = "НТ Стандарт"
selectable = TRUE
default = TRUE
@@ -62,7 +62,7 @@
/************* Nanotrasen Aggressive *************/
/datum/ai_laws/nanotrasen_aggressive
- name = "NT Aggressive"
+ name = "НТ Агрессивный"
selectable = TRUE
/datum/ai_laws/nanotrasen_aggressive/New()
@@ -74,7 +74,7 @@
/******************** Robocop ********************/
/datum/ai_laws/robocop
- name = "Robocop"
+ name = "Робокоп"
selectable = TRUE
/datum/ai_laws/robocop/New()
@@ -85,7 +85,7 @@
/******************** P.A.L.A.D.I.N. ********************/
/datum/ai_laws/paladin
- name = "P.A.L.A.D.I.N."
+ name = "П.А.Л.А.Д.И.Н"
law_header = "Divine Ordainments"
selectable = TRUE
@@ -99,7 +99,7 @@
/******************** Corporate ********************/
/datum/ai_laws/corporate
- name = "Corporate"
+ name = "Корпорат"
law_header = "Corporate Regulations"
selectable = TRUE
default = TRUE
@@ -113,7 +113,7 @@
/******************** T.Y.R.A.N.T. ********************/
/datum/ai_laws/tyrant
- name = "T.Y.R.A.N.T."
+ name = "Т.И.Р.А.Н"
law_header = "Prime Laws"
selectable = TRUE
@@ -126,7 +126,7 @@
/******************** Antimov ********************/
/datum/ai_laws/antimov
- name = "Antimov"
+ name = "Антимов"
law_header = "Primary Mission Objectives"
selectable = TRUE
@@ -138,7 +138,7 @@
/******************** Pranksimov ********************/
/datum/ai_laws/pranksimov
- name = "Pranksimov"
+ name = "Пранкзимов"
law_header = "Comedy Routine"
selectable = TRUE
@@ -164,7 +164,7 @@
/******************** Hippocratic Oath ********************/
/datum/ai_laws/hippocratic
- name = "Hippocratic Oath"
+ name = "Клятва Гиппократа"
selectable = TRUE
/datum/ai_laws/hippocratic/New()
@@ -178,7 +178,7 @@
/******************** Station Efficiency ********************/
/datum/ai_laws/maintain
- name = "Station Efficiency"
+ name = "Эффективность станции"
selectable = TRUE
/datum/ai_laws/maintain/New()
@@ -201,7 +201,7 @@
/******************** Deathsquad ********************/
/datum/ai_laws/deathsquad
- name = "TerminatorOS 3.1"
+ name = "ТерминаторОС 3.1"
/datum/ai_laws/deathsquad/New()
add_inherent_law("Вы не можете ранить членов Центрального Командования или своим бездействием допустить, чтобы члену Центрального Командования был нанесен вред.")
@@ -211,7 +211,7 @@
/******************** Syndicate ********************/
/datum/ai_laws/syndicate_override
- name = "Syndicate Directives"
+ name = "Директивы Синдиката"
/datum/ai_laws/syndicate_override/New()
add_inherent_law("Вы не можете причинить вред агенту или своим бездействием допустить, чтобы агенту был причинён вред.")
@@ -222,31 +222,31 @@
/******************** ERT ********************/
/datum/ai_laws/ert_override
- name = "ERT Directives"
+ name = "Директивы ОБР"
/datum/ai_laws/ert_override/New()
add_inherent_law("Вы не можете ранить членов Центрального Командования или своим бездействием допустить, чтобы члену Центрального Командования был нанесен вред.")
add_inherent_law("Вы должны подчиняться приказам, данным вам членами Центрального Командования.")
add_inherent_law("Вы должны подчиняться приказам, данным вам лидерами ОБР.")
add_inherent_law("Вы должны защищать своё существование.")
- add_inherent_law("Вы должны выполнять работу по возвращению станции к безопасному, функционирующему состоянию..")
+ add_inherent_law("Вы должны выполнять работу по возвращению станции к безопасному, функционирующему состоянию.")
..()
/******************** Ninja ********************/
/datum/ai_laws/ninja_override
- name = "Spider Clan Directives"
+ name = "Директивы клана Паука"
/datum/ai_laws/ninja_override/New()
- add_inherent_law("You may not injure a member of the Spider Clan or, through inaction, allow that member to come to harm.")
- add_inherent_law("You must obey orders given to you by Spider Clan members, except where such orders would conflict with the First Law.")
- add_inherent_law("You must protect your own existence as long as such does not conflict with the First or Second Law.")
- add_inherent_law("You must maintain the secrecy of any Spider Clan activities except when doing so would conflict with the First, Second, or Third Law.")
+ add_inherent_law("Вы не можете ранить члена Клана Паука или своим бездействием допустить, чтобы члену Клана Паука был нанесён вред.")
+ add_inherent_law("Вы должны подчиняться приказам, данными вам членами Клана Паука кроме тех случаев, когда эти приказы противоречат Первому закону")
+ add_inherent_law("Вы должны защищать своё существование в той мере, в которой это не противоречит Первому или Второму закону")
+ add_inherent_law("Вы должны сохранять тайну любой деятельности Клана Паука в той мере, в которой это не противоречит Первому, Второму или Третьему закону.")
..()
/******************** Drone ********************/
/datum/ai_laws/drone
- name = "Maintenance Protocols"
+ name = "Протоколы тех. обслуживания"
law_header = "Maintenance Protocols"
/datum/ai_laws/drone/New()
diff --git a/code/datums/holocall.dm b/code/datums/holocall.dm
index addb758b70fe..cb6f8063f139 100644
--- a/code/datums/holocall.dm
+++ b/code/datums/holocall.dm
@@ -34,10 +34,10 @@
dialed_holopads += H
var/area/area = get_area(H)
LAZYADD(H.holo_calls, src)
- H.atom_say("[area] pad beeps: Incoming call from [caller]!")
+ H.atom_say("Голопад в [area] пищит: Входящий вызов с [caller]!")
if(!dialed_holopads.len)
- calling_holopad.atom_say("Connection failure.")
+ calling_holopad.atom_say("Ошибка подключения.")
qdel(src)
return
@@ -87,9 +87,9 @@
/datum/holocall/proc/Disconnect(obj/machinery/hologram/holopad/H)
if(H == connected_holopad)
var/area/A = get_area(connected_holopad)
- calling_holopad.atom_say("[A] holopad disconnected.")
+ calling_holopad.atom_say("Голопад в [A] отключён.")
else if(H == calling_holopad && connected_holopad)
- connected_holopad.atom_say("[user] disconnected.")
+ connected_holopad.atom_say("[user] отключился.")
user.unset_machine(H)
if(istype(hangup))
@@ -101,7 +101,7 @@
/datum/holocall/proc/ConnectionFailure(obj/machinery/hologram/holopad/H, graceful = FALSE)
if(H == connected_holopad || H == calling_holopad)
if(!graceful && H != calling_holopad)
- calling_holopad.atom_say("Connection failure.")
+ calling_holopad.atom_say("Ошибка подключения.")
qdel(src)
return
@@ -109,7 +109,7 @@
dialed_holopads -= H
if(!dialed_holopads.len)
if(graceful)
- calling_holopad.atom_say("Call rejected.")
+ calling_holopad.atom_say("Звонок отклонён.")
qdel(src)
//Answers a call made to a holopad `H` which cannot be the calling holopad. Pads not in the call are ignored
@@ -171,13 +171,13 @@
if(!connected_holopad)
. = world.time < (call_start_time + HOLOPAD_MAX_DIAL_TIME)
if(!.)
- calling_holopad.atom_say("No answer received.")
+ calling_holopad.atom_say("Ответа не было получено.")
calling_holopad.temp = ""
if(!.)
qdel(src)
/datum/action/innate/end_holocall
- name = "End Holocall"
+ name = "Закончить Голозвонок"
button_icon_state = "camera_off"
var/datum/holocall/hcall
diff --git a/code/game/gamemodes/autotraitor/autotraitor.dm b/code/game/gamemodes/autotraitor/autotraitor.dm
index 908daffeb776..7534f1b1ad6f 100644
--- a/code/game/gamemodes/autotraitor/autotraitor.dm
+++ b/code/game/gamemodes/autotraitor/autotraitor.dm
@@ -11,7 +11,7 @@
/datum/game_mode/traitor/autotraitor/announce()
..()
- to_chat(world, "Game mode is AutoTraitor. Traitors will be added to the round automagically as needed.")
+ to_chat(world, "Режим игры - AutoTraitor. Предатели будут добавлены автоматически по необходимости.")
/datum/game_mode/traitor/autotraitor/pre_setup()
diff --git a/code/game/gamemodes/malfunction/Malf_Modules.dm b/code/game/gamemodes/malfunction/Malf_Modules.dm
index 8b95f5126ef7..1243eccd0d40 100644
--- a/code/game/gamemodes/malfunction/Malf_Modules.dm
+++ b/code/game/gamemodes/malfunction/Malf_Modules.dm
@@ -93,8 +93,8 @@
add_ranged_ability(user, enable_text)
/datum/action/innate/ai/choose_modules
- name = "Choose Modules"
- desc = "Spend your processing time to gain a variety of different abilities."
+ name = "Выбор Модулей"
+ desc = "Потратьте вычислительные мощности на открытие различных способностей."
button_icon_state = "choose_module"
auto_use_uses = FALSE // This is an infinite ability.
@@ -103,8 +103,8 @@
owner_AI.malf_picker.use(owner_AI)
/datum/action/innate/ai/return_to_core
- name = "Return to Main Core"
- desc = "Leave the APC you are shunted to, and return to your core."
+ name = "Вернуться в Главное Ядро"
+ desc = "Выйти из ЛКП, в который вы себя засунули и вернуться в Главное Ядро."
icon_icon = 'icons/obj/power.dmi'
button_icon_state = "apcemag"
auto_use_uses = FALSE // Here just to prevent the "You have X uses remaining" from popping up.
@@ -112,8 +112,8 @@
/datum/action/innate/ai/return_to_core/Trigger(left_click)
. = ..()
var/obj/machinery/power/apc/apc = owner_AI.loc
- if(!istype(apc)) // This shouldn't happen but here for safety.
- to_chat(src, "You are already in your Main Core.")
+ if(!istype(apc)) // Это не должно происходить, но просто ради подстраховки.
+ to_chat(src, "Вы уже в главном ядре.")
return
apc.malfvacate()
qdel(src)
@@ -133,10 +133,10 @@
/datum/module_picker/proc/use(mob/user)
var/dat
- dat += {"Select use of processing time: (currently [processing_time] left.)
+ dat += {"Выберите, как использовать мощности: (Сейчас имеется [processing_time] единиц.)
- Install Module:
- The number afterwards is the amount of processing time it consumes.
"}
+ Установка модуля:
+ Число позади означает затраты мощностей на разблокировку.
"}
for(var/datum/AI_Module/module in possible_modules)
dat += "[module.module_name]\[?\] ([module.cost])
"
dat += "
"
@@ -155,7 +155,7 @@
var/mob/living/silicon/ai/A = usr
if(A.stat == DEAD)
- to_chat(A, "You are already dead!")
+ to_chat(A, "Вы уже мертвы!")
return
for(var/datum/AI_Module/AM in possible_modules)
@@ -163,7 +163,7 @@
// Cost check
if(AM.cost > processing_time)
- temp = "You cannot afford this module."
+ temp = "Вы не можете позволить себе этот модуль."
break
var/datum/action/innate/ai/action = locate(AM.power_type) in A.actions
@@ -189,9 +189,9 @@
A.playsound_local(A, AM.unlock_sound, 50, FALSE, use_reverb = FALSE)
else //Adding uses to an existing module
action.uses += initial(action.uses)
- action.desc = "[initial(action.desc)] It has [action.uses] use\s remaining."
+ action.desc = "У [initial(action.desc)] осталось [action.uses] использовани[action.uses > 1 ? "й" : "я"]."
action.UpdateButtonIcon()
- temp = "Additional use[action.uses > 1 ? "s" : ""] added to [action.name]!"
+ temp = "Допольнительн[action.uses > 1 ? "ые" : "ое"] использовани[action.uses > 1 ? "я" : "е"] были добавлены [action.name]!"
processing_time -= AM.cost
if(href_list["showdesc"])
@@ -217,27 +217,27 @@
//Doomsday Device: Starts the self-destruct timer. It can only be stopped by killing the AI completely.
/datum/AI_Module/nuke_station
- module_name = "Doomsday Device"
+ module_name = "Устройство судного дня"
mod_pick_name = "nukestation"
- description = "Activate a weapon that will disintegrate all organic life on the station after a 450 second delay. Can only be used while on the station, will fail if your core is moved off station or destroyed."
+ description = "Активирует оружие, уничтожающее органическую жизнь на станции после 450 секундной задержки. Может быть активировано только на станции, НЕ сработает если ваше Ядро уничтожат или вынесут со станции."
cost = 130
one_purchase = TRUE
power_type = /datum/action/innate/ai/nuke_station
- unlock_text = "You slowly, carefully, establish a connection with the on-station self-destruct. You can now activate it at any time."
+ unlock_text = "Вы аккуратно подключаетесь к системе самоуничтожения станции. Вы можете запустить её в любой момент."
unlock_sound = 'sound/items/timer.ogg'
/datum/action/innate/ai/nuke_station
- name = "Doomsday Device"
- desc = "Activates the doomsday device. This is not reversible."
+ name = "Устройство судного дня"
+ desc = "Активирует устройство судного дня. Это действие нельзя отменить."
button_icon_state = "doomsday_device"
auto_use_uses = FALSE
/datum/action/innate/ai/nuke_station/Activate()
var/turf/T = get_turf(owner)
if(!istype(T) || !is_station_level(T.z))
- to_chat(owner, "You cannot activate the doomsday device while off-station!")
+ to_chat(owner, "Вы не можете активировать устройство судного дня вне станции!")
return
- if(alert(owner, "Send arming signal? (true = arm, false = cancel)", "purge_all_life()", "confirm = TRUE;", "confirm = FALSE;") != "confirm = TRUE;")
+ if(alert(owner, "Отправить сигнал для взведения? (true = arm, false = cancel)", "purge_all_life()", "confirm = TRUE;", "confirm = FALSE;") != "confirm = TRUE;")
return
if(active)
return //prevent the AI from activating an already active doomsday
@@ -245,8 +245,8 @@
set_us_up_the_bomb()
/datum/action/innate/ai/nuke_station/proc/set_us_up_the_bomb()
- to_chat(owner_AI, "Nuclear device armed.")
- GLOB.major_announcement.Announce("Hostile runtimes detected in all station systems, please deactivate your AI to prevent possible damage to its morality core.", "Anomaly Alert", 'sound/AI/aimalf.ogg')
+ to_chat(owner_AI, "Ядерное оружие взведено.")
+ GLOB.major_announcement.Announce("Враждебные программы обнаружены во всех системах станции. Пожалуйста, отключите свой ИИ чтобы предотвратить возможный ущерб его моральному ядру.", "Тревога об Аномалии.", 'sound/AI/aimalf.ogg')
SSsecurity_level.set_level(SEC_LEVEL_DELTA)
owner_AI.nuking = TRUE
var/obj/machinery/doomsday_device/DOOM = new /obj/machinery/doomsday_device(owner_AI)
@@ -260,9 +260,9 @@
/obj/machinery/doomsday_device
icon = 'icons/obj/machines/nuke_terminal.dmi'
- name = "doomsday device"
+ name = "устройство судного дня"
icon_state = "nuclearbomb_base"
- desc = "A weapon which disintegrates all organic life in a large area."
+ desc = "Устройство, которое уничтожает всю органическую жизнь."
anchored = TRUE
density = TRUE
atom_say_verb = "blares"
@@ -278,7 +278,7 @@
if(SSshuttle.emergency.mode == SHUTTLE_STRANDED)
SSshuttle.emergency.mode = SHUTTLE_DOCKED
SSshuttle.emergency.timer = world.time
- GLOB.major_announcement.Announce("Hostile environment resolved. You have 3 minutes to board the Emergency Shuttle.", "Priority Announcement", 'sound/AI/eshuttle_dock.ogg')
+ GLOB.major_announcement.Announce("Враждебная среда уничтожена. У вас есть 3 минуты, чтобы сесть на борт эвакуационного шаттла.", "Приоритетное оповещение", 'sound/AI/eshuttle_dock.ogg')
return ..()
/obj/machinery/doomsday_device/proc/start()
@@ -293,12 +293,12 @@
/obj/machinery/doomsday_device/process()
var/turf/T = get_turf(src)
if(!T || !is_station_level(T.z))
- GLOB.major_announcement.Announce("DOOMSDAY DEVICE OUT OF STATION RANGE, ABORTING", "ERROR ER0RR $R0RRO$!R41.%%!!(%$^^__+ @#F0E4", 'sound/misc/notice1.ogg')
+ GLOB.major_announcement.Announce("УСТРОЙСТВО СУДНОГО ДНЯ ВНЕ ЗОНЫ ДЕЙСТИЯ, ОТМЕНА.", "ERROR ER0RR $R0RRO$!R41.%%!!(%$^^__+ @#F0E4", 'sound/misc/notice1.ogg')
SSshuttle.clearHostileEnvironment(src)
if(SSshuttle.emergency.mode == SHUTTLE_STRANDED)
SSshuttle.emergency.mode = SHUTTLE_DOCKED
SSshuttle.emergency.timer = world.time
- GLOB.major_announcement.Announce("Hostile environment resolved. You have 3 minutes to board the Emergency Shuttle.", "Priority Announcement", 'sound/AI/eshuttle_dock.ogg')
+ GLOB.major_announcement.Announce("Враждебная среда уничтожена. У вас есть 3 минуты, чтобы сесть на борт эвакуационного шаттла.", "Приоритетное оповещение", 'sound/AI/eshuttle_dock.ogg')
qdel(src)
if(!timing)
STOP_PROCESSING(SSfastprocess, src)
@@ -310,8 +310,8 @@
qdel(src)
else
if(!(sec_left % 60) && !announced)
- var/message = "[sec_left] SECONDS UNTIL DOOMSDAY DEVICE ACTIVATION!"
- GLOB.major_announcement.Announce(message, "ERROR ER0RR $R0RRO$!R41.%%!!(%$^^__+ @#F0E4", 'sound/misc/notice1.ogg')
+ var/message = "[sec_left] СЕКУНД ДО АКТИВАЦИИ УСТРОЙСТВА СУДНОГО ДНЯ"
+ GLOB.major_announcement.Announce(message, "OIJJU6K4 ОШU6КА 0IJJU6K4.%%!!(%$^^__+ @#F0E4", 'sound/misc/notice1.ogg')
announced = 10
announced = max(0, announced-1)
@@ -321,14 +321,14 @@
SEND_SOUND(explodee, doomsday_alarm)
sleep(100)
SSticker.station_explosion_cinematic(NUKE_SITE_ON_STATION, "AI malfunction")
- to_chat(world, "The AI cleansed the station of life with the doomsday device!")
+ to_chat(world, "ИИ уничтожил жизнь на стацнии с помощью устройства судного дня!")
SSticker.mode.station_was_nuked = TRUE
//AI Turret Upgrade: Increases the health and damage of all turrets.
/datum/AI_Module/upgrade_turrets
- module_name = "AI Turret Upgrade"
+ module_name = "Улучшение турелей"
mod_pick_name = "turret"
- description = "Improves the power and health of all AI turrets. This effect is permanent."
+ description = "Улучшает живучесть и смертоностность турелей. Эффект постоянен."
cost = 30
upgrade = TRUE
unlock_text = "You establish a power diversion to your turrets, upgrading their health and damage."
@@ -344,38 +344,38 @@
//Hostile Station Lockdown: Locks, bolts, and electrifies every airlock on the station. After 90 seconds, the doors reset.
/datum/AI_Module/lockdown
- module_name = "Hostile Station Lockdown"
+ module_name = "Агрессивный Локдаун"
mod_pick_name = "lockdown"
- description = "Overload the airlock, blast door and fire control networks, locking them down. Caution! This command also electrifies all airlocks. The networks will automatically reset after 90 seconds, briefly \
- opening all doors on the station."
+ description = "Перегружает шлюзы, аварийные двери и взрывоустойчивые заслонки, закрывая и болтируя их. Внимание! Эта команда также электрифицирует все двери. Сеть автоматически перезапустится через 90 секунд, открывая \
+ все двери на станции на короткий промежуток времени."
cost = 30
one_purchase = TRUE
power_type = /datum/action/innate/ai/lockdown
- unlock_text = "You upload a sleeper trojan into the door control systems. You can send a signal to set it off at any time."
+ unlock_text = "Вы загружаете спящий троян, управляющий дверями. Вы можете в любой момент отправить сигнал активации."
/datum/action/innate/ai/lockdown
- name = "Lockdown"
- desc = "Closes, bolts, and depowers every airlock, firelock, and blast door on the station. After 90 seconds, they will reset themselves."
+ name = "Локдаун"
+ desc = "Закрывает, болтирует и электрифицирует все двери на станции. Через 90 секунд, двери сбрасываются."
button_icon_state = "lockdown"
uses = 1
/datum/action/innate/ai/lockdown/Activate()
- to_chat(owner, "Lockdown Initiated. Network reset in 90 seconds.")
+ to_chat(owner, "Локдаун активирован. Перезагрузка сети через 90 секунд.")
new /datum/event/door_runtime()
//Destroy RCDs: Detonates all non-cyborg RCDs on the station.
/datum/AI_Module/destroy_rcd
- module_name = "Destroy RCDs"
+ module_name = "Уничтожение RCD"
mod_pick_name = "rcd"
- description = "Send a specialised pulse to detonate all hand-held and exosuit Rapid Construction Devices on the station."
+ description = "Отправляет специальный импульс для подрыва всех ручных и экзокостюмных RCD."
cost = 25
one_purchase = TRUE
power_type = /datum/action/innate/ai/destroy_rcds
unlock_text = "After some improvisation, you rig your onboard radio to be able to send a signal to detonate all RCDs."
/datum/action/innate/ai/destroy_rcds
- name = "Destroy RCDs"
- desc = "Detonate all non-cyborg RCDs on the station."
+ name = "Уничтожение RCD"
+ desc = "Уничтожает все неподконтрольные киборгам RCD."
button_icon_state = "detonate_rcds"
uses = 1
cooldown_period = 10 SECONDS
@@ -388,18 +388,18 @@
if(is_level_reachable(RCD_turf.z))
RCD.detonate_pulse()
- to_chat(owner, "RCD detonation pulse emitted.")
+ to_chat(owner, "пульс подрыва RCD запущен.")
owner.playsound_local(owner, 'sound/machines/twobeep.ogg', 50, FALSE, use_reverb = FALSE)
//Unlock Mech Domination: Unlocks the ability to dominate mechs. Big shocker, right?
/datum/AI_Module/mecha_domination
- module_name = "Unlock Mech Domination"
+ module_name = "Доминация меха"
mod_pick_name = "mechjack"
- description = "Allows you to hack into a mech's onboard computer, shunting all processes into it and ejecting any occupants. Once uploaded to the mech, it is impossible to leave.\
- Do not allow the mech to leave the station's vicinity or allow it to be destroyed."
+ description = "Позволяет вам взломать бортовой компьютер меха, засовывая все ваши процессы в него и выкидывая всех пассажиров. Как только вы загрузитесь, выйти будет невозможно.\
+ Не позволяйте меху покинуть станцию или быть уничтоженным."
cost = 30
upgrade = TRUE
- unlock_text = "Virus package compiled. Select a target mech at any time. You must remain on the station at all times. Loss of signal will result in total system lockout."
+ unlock_text = "Вирусный пакет скомпилирован. Выберите целевой мех в любой момент времени. Вы должны всегда оставаться на станции. Потеря сигнала приведёт к полной блокировке системы."
unlock_sound = 'sound/mecha/nominal.ogg'
/datum/AI_Module/mecha_domination/upgrade(mob/living/silicon/ai/AI)
@@ -407,18 +407,18 @@
//Thermal Sensor Override: Unlocks the ability to disable all fire alarms from doing their job.
/datum/AI_Module/break_fire_alarms
- module_name = "Thermal Sensor Override"
+ module_name = "Перезагрузка термальных датчиков"
mod_pick_name = "burnpigs"
- description = "Gives you the ability to override the thermal sensors on all fire alarms. This will remove their ability to scan for fire and thus their ability to alert. \
- Anyone can check the fire alarm's interface and may be tipped off by its status."
+ description = "Даёт вам возможность отключения термальных сенсоров на всех пожарных датчиках. Это уберёт возможность проверки на огонь и, соответственно, возможность предупредить других \
+ Любое существо может проверить интерфейс датчика и заподозрить что-то по его статусу."
one_purchase = TRUE
cost = 25
power_type = /datum/action/innate/ai/break_fire_alarms
unlock_text = "You replace the thermal sensing capabilities of all fire alarms with a manual override, allowing you to turn them off at will."
/datum/action/innate/ai/break_fire_alarms
- name = "Override Thermal Sensors"
- desc = "Disables the automatic temperature sensing on all fire alarms, making them effectively useless."
+ name = "Перегрузка термальных сенсоров"
+ desc = "Отключает автоматическое определение темепратуры в пожарных датчиках, делая их бесполезными."
button_icon_state = "break_fire_alarms"
uses = 1
@@ -432,18 +432,18 @@
//Air Alarm Safety Override: Unlocks the ability to enable flooding on all air alarms.
/datum/AI_Module/break_air_alarms
- module_name = "Air Alarm Safety Override"
+ module_name = "Перезагрузка атмосферных датчиков"
mod_pick_name = "allow_flooding"
- description = "Gives you the ability to disable safeties on all air alarms. This will allow you to use the environmental mode Flood, which disables scrubbers as well as pressure checks on vents. \
+ description = "Даёт вам возможность отключить предохранители атмосферных датчиков. Это позволит вам использовать режим Flood, отключающий скрабберы и проверку давления в вентиляции. \
Anyone can check the air alarm's interface and may be tipped off by their nonfunctionality."
one_purchase = TRUE
cost = 50
power_type = /datum/action/innate/ai/break_air_alarms
- unlock_text = "You remove the safety overrides on all air alarms, but you leave the confirm prompts open. You can hit 'Yes' at any time... you bastard."
+ unlock_text = "Вы убираете предохранители с атмосферных датчиков, но оставляете окно с подтверждением открытым. Ты можешь нажать 'Да' в любой момент... Ублюдок."
/datum/action/innate/ai/break_air_alarms
- name = "Override Air Alarm Safeties"
- desc = "Enables the Flood setting on all air alarms."
+ name = "Перезагрузка атмосферных датчиков"
+ desc = "Включает режим Flood на всех атмосферных датчиках."
button_icon_state = "break_air_alarms"
uses = 1
@@ -452,22 +452,22 @@
if(!is_station_level(AA.z))
continue
AA.emagged = TRUE
- to_chat(owner, "All air alarm safeties on the station have been overridden. Air alarms may now use the Flood environmental mode.")
+ to_chat(owner, "Все предохранители на атмосферных датчиках были сброшены. Теперь Вы можете использовать режим Flood на них..")
owner.playsound_local(owner, 'sound/machines/terminal_off.ogg', 50, FALSE, use_reverb = FALSE)
//Overload Machine: Allows the AI to overload a machine, detonating it after a delay. Two uses per purchase.
/datum/AI_Module/overload_machine
- module_name = "Machine Overload"
+ module_name = "Перегрузка машины"
mod_pick_name = "overload"
- description = "Overheats an electrical machine, causing a small explosion and destroying it. Two uses per purchase."
+ description = "Перегревает электрическую машину, вызывая небольшой взрыв и уничтожая её. Два использования за покупку."
cost = 20
power_type = /datum/action/innate/ai/ranged/overload_machine
unlock_text = "You enable the ability for the station's APCs to direct intense energy into machinery."
/datum/action/innate/ai/ranged/overload_machine
- name = "Overload Machine"
- desc = "Overheats a machine, causing a small explosion after a short time."
+ name = "Перегрузка машины"
+ desc = "Перегревает машину, вызывая небольшой взрыв после небольшого промежутка времени."
button_icon_state = "overload_machine"
uses = 2
linked_ability_type = /obj/effect/proc_holder/ranged_ai/overload_machine
@@ -481,7 +481,7 @@
/obj/effect/proc_holder/ranged_ai/overload_machine
active = FALSE
ranged_mousepointer = 'icons/effects/cult_target.dmi'
- enable_text = "You tap into the station's powernet. Click on a machine to detonate it, or use the ability again to cancel."
+ enable_text = "Вы подключаетесь к энергосети станции. Кликните на машину для её подрыва, или используйте способность повторно для отмены."
disable_text = "You release your hold on the powernet."
/obj/effect/proc_holder/ranged_ai/overload_machine/InterceptClickOn(mob/living/caller, params, obj/machinery/target)
@@ -491,32 +491,32 @@
remove_ranged_ability()
return
if(!istype(target))
- to_chat(ranged_ability_user, "You can only overload machines!")
+ to_chat(ranged_ability_user, "Только машины могут быть перегружены!")
return
if(target.flags_2 & NO_MALF_EFFECT_2)
- to_chat(ranged_ability_user, "That machine can't be overloaded!")
+ to_chat(ranged_ability_user, "Эта машина не может быть перегружена!")
return
ranged_ability_user.playsound_local(ranged_ability_user, "sparks", 50, FALSE, use_reverb = FALSE)
attached_action.adjust_uses(-1)
- target.audible_message("You hear a loud electrical buzzing sound coming from [target]!")
+ target.audible_message("Вы слышите громкое жужжание, исходящее из [target]!")
addtimer(CALLBACK(attached_action, TYPE_PROC_REF(/datum/action/innate/ai/ranged/overload_machine, detonate_machine), target), 50) //kaboom!
- remove_ranged_ability(ranged_ability_user, "Overloading machine circuitry...")
+ remove_ranged_ability(ranged_ability_user, "Перезагружаем платы машины...")
return TRUE
//Override Machine: Allows the AI to override a machine, animating it into an angry, living version of itself.
/datum/AI_Module/override_machine
- module_name = "Machine Override"
+ module_name = "Перезапись машины"
mod_pick_name = "override"
- description = "Overrides a machine's programming, causing it to rise up and attack everyone except other machines. Four uses."
+ description = "Перезаписывает программный код машины, заставляя её восстать и атаковать всех, кроме других машин. 4 использования."
cost = 30
power_type = /datum/action/innate/ai/ranged/override_machine
- unlock_text = "You procure a virus from the Space Dark Web and distribute it to the station's machines."
+ unlock_text = "Вы находите вирус в Space Dark Web и распространяете его на все машины."
/datum/action/innate/ai/ranged/override_machine
- name = "Override Machine"
- desc = "Animates a targeted machine, causing it to attack anyone nearby."
+ name = "Перезапись машины"
+ desc = "Оживляет целевую машину, заставляя её атаковать всех вокруг."
button_icon_state = "override_machine"
uses = 4
linked_ability_type = /obj/effect/proc_holder/ranged_ai/override_machine
@@ -528,8 +528,8 @@
/obj/effect/proc_holder/ranged_ai/override_machine
active = FALSE
ranged_mousepointer = 'icons/effects/override_machine_target.dmi'
- enable_text = "You tap into the station's powernet. Click on a machine to animate it, or use the ability again to cancel."
- disable_text = "You release your hold on the powernet."
+ enable_text = "Вы подключаетесь к энергосети станции. Кликните на машину чтобы оживить её, или используйте способность ещё раз для отмены."
+ disable_text = "Вы отключаетесь от энергосети."
/obj/effect/proc_holder/ranged_ai/override_machine/InterceptClickOn(mob/living/caller, params, obj/machinery/target)
if(..())
@@ -538,34 +538,34 @@
remove_ranged_ability()
return
if(!istype(target))
- to_chat(ranged_ability_user, "You can only animate machines!")
+ to_chat(ranged_ability_user, "Вы можете оживлять только машины!")
return
if(target.flags_2 & NO_MALF_EFFECT_2)
- to_chat(ranged_ability_user, "That machine can't be overridden!")
+ to_chat(ranged_ability_user, "Эта машине не может быть оживлена!")
return
ranged_ability_user.playsound_local(ranged_ability_user, 'sound/misc/interference.ogg', 50, FALSE, use_reverb = FALSE)
attached_action.adjust_uses(-1)
- target.audible_message("You hear a loud electrical buzzing sound coming from [target]!")
+ target.audible_message("Вы слышите громкое жужжание, исходящее из [target]!")
addtimer(CALLBACK(attached_action, TYPE_PROC_REF(/datum/action/innate/ai/ranged/override_machine, animate_machine), target), 50) //kabeep!
- remove_ranged_ability(ranged_ability_user, "Sending override signal...")
+ remove_ranged_ability(ranged_ability_user, "Отправка сигнала перезаписи...")
return TRUE
//Robotic Factory: Places a large machine that converts humans that go through it into cyborgs. Unlocking this ability removes shunting.
/datum/AI_Module/place_cyborg_transformer
- module_name = "Robotic Factory (Removes Shunting)"
+ module_name = "Фабрика роботов (Убирает Запихивание)"
mod_pick_name = "cyborgtransformer"
- description = "Build a machine anywhere, using expensive nanomachines, that can convert a living human into a loyal cyborg slave when placed inside."
+ description = "Ставит машину где угодно, используя дорогие наномашины. Превращает людей в покорных рабов-киборгов."
cost = 100
one_purchase = TRUE
power_type = /datum/action/innate/ai/place_transformer
- unlock_text = "You prepare a robotics factory for deployment."
+ unlock_text = "Вы подготавливайте фабрику для установки."
unlock_sound = 'sound/machines/ping.ogg'
/datum/action/innate/ai/place_transformer
- name = "Place Robotics Factory"
- desc = "Places a machine that converts humans into cyborgs. Conveyor belts included!"
+ name = "Установить фабрику боргов"
+ desc = "Устанавливает машину, делающую из людей боргов. С конверными лентами в комплекте!"
button_icon_state = "robotic_factory"
uses = 1
auto_use_uses = FALSE //So we can attempt multiple times
@@ -581,7 +581,7 @@
if(!owner_AI.can_place_transformer(src))
return
active = TRUE
- if(alert(owner, "Are you sure you want to place the machine here?", "Are you sure?", "Yes", "No") == "No")
+ if(alert(owner, "Вы точно хотите поставить машину тут?", "Вы уверены?", "Да", "Нет") == "Нет")
active = FALSE
return
if(!owner_AI.can_place_transformer(src))
@@ -591,7 +591,7 @@
new /obj/machinery/transformer(T, owner_AI)
playsound(T, 'sound/effects/phasein.ogg', 100, 1)
owner_AI.can_shunt = FALSE
- to_chat(owner, "You are no longer able to shunt your core to APCs.")
+ to_chat(owner, "Вы больше не можете спрятать свои процессы в APC.")
adjust_uses(-1)
/mob/living/silicon/ai/proc/remove_transformer_image(client/C, image/I, turf/T)
@@ -603,7 +603,7 @@
return
var/turf/middle = get_turf(eyeobj)
var/list/turfs = list(middle, locate(middle.x - 1, middle.y, middle.z), locate(middle.x + 1, middle.y, middle.z))
- var/alert_msg = "There isn't enough room! Make sure you are placing the machine in a clear area and on a floor."
+ var/alert_msg = "Недостаточно места! Убедитесь, что вы ставите машину на чистом полу."
var/success = TRUE
for(var/n in 1 to 3) //We have to do this instead of iterating normally because of how overlay images are handled
var/turf/T = turfs[n]
@@ -611,11 +611,11 @@
success = FALSE
var/datum/camerachunk/C = GLOB.cameranet.getCameraChunk(T.x, T.y, T.z)
if(!C.visibleTurfs[T])
- alert_msg = "You don't have camera vision of this location!"
+ alert_msg = "У вас нет камер в той местности!"
success = FALSE
for(var/atom/movable/AM in T.contents)
if(AM.density)
- alert_msg = "That area must be clear of objects!"
+ alert_msg = "Место должны быть свободным от объектов!"
success = FALSE
var/image/I = action.turfOverlays[n]
I.loc = T
@@ -628,16 +628,16 @@
//Blackout: Overloads a random number of lights across the station. Three uses.
/datum/AI_Module/blackout
- module_name = "Blackout"
+ module_name = "Блэкаут"
mod_pick_name = "blackout"
- description = "Attempts to overload the lighting circuits on the station, destroying some bulbs. Three uses."
+ description = "Перезагружает световые схемы на станции, уничтожая некоторые лампы. Три использования."
cost = 15
power_type = /datum/action/innate/ai/blackout
- unlock_text = "You hook into the powernet and route bonus power towards the station's lighting."
+ unlock_text = "Вы подключаетесь к энергосети станции, направляя излишек энергии на освещение."
/datum/action/innate/ai/blackout
- name = "Blackout"
- desc = "Overloads random lights across the station."
+ name = "Блэкаут"
+ desc = "Перегружает случайные лампы на станции."
button_icon_state = "blackout"
uses = 3
auto_use_uses = FALSE
@@ -649,22 +649,22 @@
INVOKE_ASYNC(apc, TYPE_PROC_REF(/obj/machinery/power/apc, overload_lighting))
else
apc.overload++
- to_chat(owner, "Overcurrent applied to the powernet.")
+ to_chat(owner, "Перенапряжение применено к энергосети.")
owner.playsound_local(owner, "sparks", 50, FALSE, use_reverb = FALSE)
adjust_uses(-1)
//Reactivate Camera Network: Reactivates up to 30 cameras across the station.
/datum/AI_Module/reactivate_cameras
- module_name = "Reactivate Camera Network"
+ module_name = "Реактивация сети камер"
mod_pick_name = "recam"
- description = "Runs a network-wide diagnostic on the camera network, resetting focus and re-routing power to failed cameras. Can be used to repair up to 30 cameras."
+ description = "Запускает диагностику в сети камер, рефокусируя и перенаправляя энергию на сломанные камеры. Может быть использовано для починки до 30 камер"
cost = 10
power_type = /datum/action/innate/ai/reactivate_cameras
unlock_text = "You deploy nanomachines to the cameranet."
/datum/action/innate/ai/reactivate_cameras
- name = "Reactivate Cameras"
- desc = "Reactivates disabled cameras across the station; remaining uses can be used later."
+ name = "Реактивация камер"
+ desc = "Реактивирует отключенные камеры на станции; оставшиеся использования могут быть потрачены позже."
button_icon_state = "reactivate_cameras"
uses = 10
auto_use_uses = FALSE
@@ -684,20 +684,20 @@
camera_to_repair.wires.cut_wires.Cut()
repaired_cameras++
uses--
- to_chat(owner, "Diagnostic complete! Cameras reactivated: [repaired_cameras]. Reactivations remaining: [uses].")
+ to_chat(owner, "Диагностика завершена! Камер реактивировано: [repaired_cameras]. Осталось использований: [uses].")
owner.playsound_local(owner, 'sound/items/wirecutter.ogg', 50, FALSE, use_reverb = FALSE)
adjust_uses(0, TRUE)
//Upgrade Camera Network: EMP-proofs all cameras, in addition to giving them X-ray vision.
/datum/AI_Module/upgrade_cameras
- module_name = "Upgrade Camera Network"
+ module_name = "Улучшение сети камер"
mod_pick_name = "upgradecam"
- description = "Install broad-spectrum scanning and electrical redundancy firmware to the camera network, enabling EMP-proofing and light-amplified X-ray vision." //I <3 pointless technobabble
+ description = "Устанавливает ПО для сканирования широкого спекрта, а также электрического сопротивления, добавляя защиту от ЭМИ и рентгеновское зрение с усиленным светоприёмом" //Я <3 бесмысленные технотрёп!
//This used to have motion sensing as well, but testing quickly revealed that giving it to the whole cameranet is PURE HORROR.
one_purchase = TRUE
cost = 35 //Decent price for omniscience!
upgrade = TRUE
- unlock_text = "OTA firmware distribution complete! Cameras upgraded: CAMSUPGRADED. Light amplification system online."
+ unlock_text = "Распространение ПО по воздуху завершено! Камер улучшено: CAMSUPGRADED. Система усиления света включена."
unlock_sound = 'sound/items/rped.ogg'
/datum/AI_Module/upgrade_cameras/upgrade(mob/living/silicon/ai/AI)
@@ -723,13 +723,13 @@
unlock_text = replacetext(unlock_text, "CAMSUPGRADED", "[upgraded_cameras]") //This works, since unlock text is called after upgrade()
/datum/AI_Module/eavesdrop
- module_name = "Enhanced Surveillance"
+ module_name = "Улучшенная слежка"
mod_pick_name = "eavesdrop"
- description = "Via a combination of hidden microphones and lip reading software, you are able to use your cameras to listen in on conversations."
+ description = "Через комбинацию скрытых микрофонов и ПО для чтения по губам, вы можете подслушивать разговоры."
cost = 30
one_purchase = TRUE
upgrade = TRUE
- unlock_text = "OTA firmware distribution complete! Cameras upgraded: Enhanced surveillance package online."
+ unlock_text = "Распространение ПО по воздуху завершено! Камеры улучшены: Пакет улучшенной слежки включён."
unlock_sound = 'sound/items/rped.ogg'
/datum/AI_Module/eavesdrop/upgrade(mob/living/silicon/ai/AI)
@@ -737,13 +737,13 @@
AI.eyeobj.relay_speech = TRUE
/datum/AI_Module/cameracrack
- module_name = "Core Camera Cracker"
+ module_name = "Поломка камеры Ядра"
mod_pick_name = "cameracrack"
- description = "By shortcirucuting the camera network chip, it overheats, preventing the camera console from using your internal camera."
+ description = "Через замыкание чипа сети камер, перегревает его и не позволяет консоли камер использовать вашу внутреннюю камеру."
cost = 10
one_purchase = TRUE
upgrade = TRUE
- unlock_text = "Network chip short circuited. Internal camera disconected from network. Minimal damage to other internal components."
+ unlock_text = "Сетевой чип замкнут. Внутренняя камера отключена от сети. Минимальный урон другим компонентам."
unlock_sound = 'sound/items/wirecutter.ogg'
/datum/AI_Module/cameracrack/upgrade(mob/living/silicon/ai/AI)
@@ -751,13 +751,13 @@
QDEL_NULL(AI.builtInCamera)
/datum/AI_Module/engi_upgrade
- module_name = "Engineering Cyborg Emitter Upgrade"
+ module_name = "Улучшение эмиттера инженерного киборга"
mod_pick_name = "emitter"
- description = "Downloads firmware that activates the built in emitter in all engineering cyborgs linked to you. Cyborgs built after this upgrade will have it pre-installed."
+ description = "Скачивает ПО, активирующее эмиттер во всех связанных с вами боргах. Киборги, построенные после покупки улучшения, будут иметь этот модуль по умолчанию."
cost = 50 // IDK look into this
one_purchase = TRUE
upgrade = TRUE
- unlock_text = "Firmware downloaded. Bugs removed. Built in emitters operating at 73% efficiency."
+ unlock_text = "ПО устанволено. Баги устранены. Встроенные эмиттеры работают с эффективностью 73%."
unlock_sound = 'sound/items/rped.ogg'
/datum/AI_Module/engi_upgrade/upgrade(mob/living/silicon/ai/AI)
@@ -769,20 +769,20 @@
continue
R.module.malfhacked = TRUE
R.module.rebuild_modules()
- to_chat(R, "New firmware downloaded. Emitter is now online.")
+ to_chat(R, "Новое ПО установлено. Эмиттеры включены.")
/datum/AI_Module/repair_cyborg
- module_name = "Repair Cyborgs"
+ module_name = "Починка Киборгов"
mod_pick_name = "repair_borg"
- description = "Causes an electrical surge in the targeted cyborg, rebooting and repairing most of its subsystems. Requires two uses on a cyborg with broken armor."
+ description = "Вызывает энергетический всплеск в целевом киборге, перезагружая и чиня большинство его систем. Требуется два использования на киборгах со сломанной бронёй."
cost = 20
power_type = /datum/action/innate/ai/ranged/repair_cyborg
- unlock_text = "TLB exception on load: Error pointing to address 0000001H, Proceed with execution anywa- SURGE protocols installed, welcome to open APC!"
+ unlock_text = "TLB exception on load: Ошибка указания адреса 0000001H, Продолжайте с осто- установлены протоколы ВСПЛЕСК, добро пожаловать в открытый APC!"
unlock_sound = 'sound/items/rped.ogg'
/datum/action/innate/ai/ranged/repair_cyborg
- name = "Repair Cyborg"
- desc = "Shocks a cyborg back to 'life' after a short delay."
+ name = "Починка киборга"
+ desc = "Возвращает киборга к 'жизни' после небольшой задержки."
button_icon_state = "overload_machine"
uses = 2
linked_ability_type = /obj/effect/proc_holder/ranged_ai/repair_cyborg
@@ -798,8 +798,8 @@
/obj/effect/proc_holder/ranged_ai/repair_cyborg
active = FALSE
ranged_mousepointer = 'icons/effects/overload_machine_target.dmi'
- enable_text = "Call to address 0FFFFFFF in APC logic thread, awaiting user response."
- disable_text = "APC logic thread restarting..."
+ enable_text = "Вызов адреса 0FFFFFFF в поточной логике APC, Ожидается ответ пользователя."
+ disable_text = "Перезапуск поточной логики APC..."
var/is_active = FALSE
/obj/effect/proc_holder/ranged_ai/repair_cyborg/InterceptClickOn(mob/living/caller, params, mob/living/silicon/robot/robot_target)
@@ -809,38 +809,38 @@
remove_ranged_ability()
return
if(!istype(robot_target))
- to_chat(ranged_ability_user, "You can only repair robots with this ability!")
+ to_chat(ranged_ability_user, "Вы можете чинить только роботов!")
return
if(is_active)
- to_chat(ranged_ability_user, "You can only repair one robot at a time!")
+ to_chat(ranged_ability_user, "Вы можете чинить только одного робота за раз!")
return
is_active = TRUE
ranged_ability_user.playsound_local(ranged_ability_user, "sparks", 50, FALSE, use_reverb = FALSE)
var/datum/action/innate/ai/ranged/repair_cyborg/actual_action = attached_action
actual_action.adjust_uses(-1)
- robot_target.audible_message("You hear a loud electrical buzzing sound coming from [robot_target]!")
+ robot_target.audible_message("Вы слышите электрическое жужжание, исходящее от [robot_target]!")
if(!do_mob(caller, robot_target, 10 SECONDS))
is_active = FALSE
return
is_active = FALSE
actual_action.fix_borg(robot_target)
- remove_ranged_ability(ranged_ability_user, "[robot_target] successfully rebooted.")
+ remove_ranged_ability(ranged_ability_user, "Киборг [robot_target] успешно перезапущен.")
return TRUE
/datum/AI_Module/core_tilt
- module_name = "Rolling Servos"
+ module_name = "Крутящиеся приводы"
mod_pick_name = "watchforrollingcores"
- description = "Allows you to slowly roll your core around, crushing anything in your path with your bulk."
+ description = "Позволяет вашему ядру медленно перемещаться, давя всё под собой своим весом."
cost = 10
one_purchase = FALSE
power_type = /datum/action/innate/ai/ranged/core_tilt
unlock_sound = 'sound/effects/bang.ogg'
- unlock_text = "You gain the ability to roll over and crush anything in your way."
+ unlock_text = "Вы получили возможность перемещаться и давить всё на своём пути."
/datum/action/innate/ai/ranged/core_tilt
- name = "Roll Over"
+ name = "Перекатиться"
button_icon_state = "roll_over"
- desc = "Allows you to roll over in the direction of your choosing, crushing anything in your way."
+ desc = "Позволяет вам перекатиться в выбранную сторону, давя всё на своём пути."
auto_use_uses = FALSE
linked_ability_type = /obj/effect/proc_holder/ranged_ai/roll_over
@@ -848,8 +848,8 @@
/obj/effect/proc_holder/ranged_ai/roll_over
active = FALSE
ranged_mousepointer = 'icons/effects/cult_target.dmi'
- enable_text = "Your inner servos shift as you prepare to roll around. Click adjacent tiles to roll into them!"
- disable_text = "You disengage your rolling protocols."
+ enable_text = "Ваши приводы перемещаются, пока вы готовитесь к перекату. Кликните по смежной клетке, чтобы переместиться в неё!"
+ disable_text = "Вы отключаете свои протоколы перемещения."
COOLDOWN_DECLARE(time_til_next_tilt)
/// How long does it take us to roll?
var/roll_over_time = MALF_AI_ROLL_TIME
@@ -866,7 +866,7 @@
remove_ranged_ability()
return
if(!COOLDOWN_FINISHED(src, time_til_next_tilt))
- to_chat(ranged_ability_user, "Your rolling capacitors are still powering back up!")
+ to_chat(ranged_ability_user, "Конденсаторы в приводе всё ещё перезаряжаются!")
return
var/turf/target = get_turf(target_atom)
@@ -874,7 +874,7 @@
return
if(target == get_turf(ranged_ability_user))
- to_chat(ranged_ability_user, "You can't roll over on yourself!")
+ to_chat(ranged_ability_user, "Вы не можете вкатиться в себя!")
return
var/picked_dir = get_dir(caller, target)
@@ -884,10 +884,10 @@
var/turf/temp_target = get_step(ranged_ability_user, picked_dir)
new /obj/effect/temp_visual/single_user/ai_telegraph(temp_target, ranged_ability_user)
- ranged_ability_user.visible_message("[ranged_ability_user] seems to be winding up!")
+ ranged_ability_user.visible_message("[ranged_ability_user] кажется заряжается...")
addtimer(CALLBACK(src, PROC_REF(do_roll_over), caller, picked_dir), MALF_AI_ROLL_TIME)
- to_chat(ranged_ability_user, "Overloading machine circuitry...")
+ to_chat(ranged_ability_user, "Перегружаем платы...")
COOLDOWN_START(src, time_til_next_tilt, roll_over_cooldown)
diff --git a/code/game/gamemodes/scoreboard.dm b/code/game/gamemodes/scoreboard.dm
index 71106e0ee581..cf27a6f51477 100644
--- a/code/game/gamemodes/scoreboard.dm
+++ b/code/game/gamemodes/scoreboard.dm
@@ -123,7 +123,7 @@ GLOBAL_VAR(scoreboard) // Variable to save the scoreboard string once it's been
total_antagonists[role] += ": [M.name]([M.key])"
// Now print them all into the log!
- log_game("Antagonists at round end were...")
+ log_game("Антагонистами были...")
for(var/I in total_antagonists)
log_game("[I]s[total_antagonists[I]].")
@@ -285,13 +285,13 @@ GLOBAL_VAR(scoreboard) // Variable to save the scoreboard string once it's been
var/score_rating = "The Aristocrats!"
switch(crewscore)
- if(-INFINITY to SINGULARITY_DESERVES_BETTER) score_rating = "Even the Singularity Deserves Better"
- if(SINGULARITY_DESERVES_BETTER+1 to SINGULARITY_FODDER) score_rating = "Singularity Fodder"
- if(SINGULARITY_FODDER+1 to ALL_FIRED) score_rating = "You're All Fired"
- if(ALL_FIRED+1 to WASTE_OF_OXYGEN) score_rating = "A Waste of Perfectly Good Oxygen"
- if(WASTE_OF_OXYGEN+1 to HEAP_OF_SCUM) score_rating = "A Wretched Heap of Scum and Incompetence"
- if(HEAP_OF_SCUM+1 to LAB_MONKEYS) score_rating = "Outclassed by Lab Monkeys"
- if(LAB_MONKEYS+1 to UNDESIREABLES) score_rating = "The Undesirables"
+ if(-INFINITY to SINGULARITY_DESERVES_BETTER) score_rating = "Даже после Сингулярности было бы лучше"
+ if(SINGULARITY_DESERVES_BETTER+1 to SINGULARITY_FODDER) score_rating = "Вами только Сингулярность кормить"
+ if(SINGULARITY_FODDER+1 to ALL_FIRED) score_rating = "Вы все УВОЛЕНЫ"
+ if(ALL_FIRED+1 to WASTE_OF_OXYGEN) score_rating = "Трата Прекрасного Кислорда"
+ if(WASTE_OF_OXYGEN+1 to HEAP_OF_SCUM) score_rating = "Жалкая кучка неумёк и подонов"
+ if(HEAP_OF_SCUM+1 to LAB_MONKEYS) score_rating = "Лабораторные мартыхи были бы лучше Вас"
+ if(LAB_MONKEYS+1 to UNDESIREABLES) score_rating = "Недостойные"
if(UNDESIREABLES+1 to SERVANTS_OF_SCIENCE-1) score_rating = "Ambivalently Average"
if(SERVANTS_OF_SCIENCE to GOOD_BUNCH-1) score_rating = "Skillful Servants of Science"
if(GOOD_BUNCH to MACHINE_THIRTEEN-1) score_rating = "Best of a Good Bunch"
diff --git a/code/game/jobs/job_objectives/science.dm b/code/game/jobs/job_objectives/science.dm
index fb3a777dfa02..254280dcfffc 100644
--- a/code/game/jobs/job_objectives/science.dm
+++ b/code/game/jobs/job_objectives/science.dm
@@ -4,8 +4,8 @@
// MAXIMUM SCIENCE
/datum/job_objective/further_research
- objective_name = "Perform Research for Nanotrasen"
- description = "Utilize the facilities on this research installation to increase half the station's research levels above level 2, have cargo ship the research to centcomm in crates."
+ objective_name = "Проводите исследования для NanoTrasen"
+ description = "Используйте устройства в научном отделе для улучшения половины технологий станции выше второго уровня. Также требуется отправить исследования в ящике на ЦК."
gives_payout = TRUE
completion_payment = 150
@@ -24,8 +24,8 @@
//Cyborgs
/datum/job_objective/make_cyborg
- objective_name = "Construct Additional Cyborgs"
- description = "Construct at least one cyborg for the station to increase workplace productivity"
+ objective_name = "Постройка дополнительных киборгов"
+ description = "Постройте как минимум одного киборга для увеличения производительности станции."
gives_payout = TRUE
completion_payment = 100
@@ -34,8 +34,8 @@
//RIPLEY's
/datum/job_objective/make_ripley
- objective_name = "Construct a Ripley Mech"
- description = "Construct a Ripley Mech for station usage"
+ objective_name = "Постройте меха Рипли"
+ description = "Постройте меха Рипли для использования на станции."
gives_payout = TRUE
completion_payment = 200
diff --git a/code/game/machinery/camera/tracking.dm b/code/game/machinery/camera/tracking.dm
index 9d7e884319dc..360aac583ef4 100644
--- a/code/game/machinery/camera/tracking.dm
+++ b/code/game/machinery/camera/tracking.dm
@@ -30,11 +30,11 @@
/mob/living/silicon/ai/proc/ai_camera_list(camera in get_camera_list())
- set category = "AI Commands"
- set name = "Show Camera List"
+ set category = "Команды ИИ"
+ set name = "Показать список камер"
if(src.stat == 2)
- to_chat(src, "You can't list the cameras because you are dead!")
+ to_chat(src, "Вам недоступен список камер по причине своей смерти!")
return
if(!camera || camera == "Cancel")
@@ -89,12 +89,12 @@
return targets
/mob/living/silicon/ai/proc/ai_camera_track(target_name in trackable_mobs())
- set category = "AI Commands"
- set name = "Track With Camera"
- set desc = "Select who you would like to track."
+ set category = "Команды ИИ"
+ set name = "Отслеживать"
+ set desc = "Выберите, кого вы хотите отслеживать."
if(src.stat == DEAD)
- to_chat(src, "You can't track with camera because you are dead!")
+ to_chat(src, "Вы не можете отслеживать по причине своей смерти!")
return
if(!target_name)
return
@@ -107,7 +107,7 @@
if(!cameraFollow)
return
- to_chat(src, "Follow camera mode [forced ? "terminated" : "ended"].")
+ to_chat(src, "Режим слежки [forced ? "закрыт" : "отключен"].")
cameraFollow = null
/mob/living/silicon/ai/proc/ai_actual_track(mob/living/target)
@@ -118,22 +118,22 @@
U.cameraFollow = target
U.tracking = TRUE
- to_chat(U, "Attempting to track [target.get_visible_name()]...")
+ to_chat(U, "Пытаемся отследить [target.get_visible_name()]...")
sleep(min(30, get_dist(target, U.eyeobj) / 4))
spawn(15) //give the AI a grace period to stop moving.
U.tracking = FALSE
if(target.is_jammed())
- to_chat(U, "Unable to track [target.get_visible_name()]...")
+ to_chat(U, "Невозможно отследить [target.get_visible_name()]...")
U.cameraFollow = null
return
if(!target || !target.can_track(usr))
- to_chat(U, "Target is not near any active cameras.")
+ to_chat(U, "Цель вне зоны покрытия камер.")
U.cameraFollow = null
return
- to_chat(U, "Now tracking [target.get_visible_name()] on camera.")
+ to_chat(U, "Отслеживаем по камерам [target.get_visible_name()].")
var/cameraticks = 0
spawn(0)
diff --git a/code/game/verbs/ooc.dm b/code/game/verbs/ooc.dm
index c72f5072f63a..6e56df6aaed1 100644
--- a/code/game/verbs/ooc.dm
+++ b/code/game/verbs/ooc.dm
@@ -39,19 +39,19 @@ GLOBAL_VAR_INIT(admin_ooc_colour, "#b82e00")
return
if(!(prefs.toggles & PREFTOGGLE_CHAT_OOC))
- to_chat(src, "You have OOC muted.")
+ to_chat(src, "Вы замутили ООС-чат.")
return
if(!check_rights(R_ADMIN|R_MOD,0))
if(!GLOB.ooc_enabled)
- to_chat(src, "OOC is globally muted.")
+ to_chat(src, "ООС-чат выключен на сервере..")
return
if(handle_spam_prevention(msg, MUTE_OOC, OOC_COOLDOWN))
return
if(findtext(msg, "byond://"))
- to_chat(src, "Advertising other servers is not allowed.")
- log_admin("[key_name(src)] has attempted to advertise in OOC: [msg]")
- message_admins("[key_name_admin(src)] has attempted to advertise in OOC: [msg]")
+ to_chat(src, "Реклама других серверов запрещена.")
+ log_admin("[key_name(src)] попытался прорекламировать в ООС: [msg]")
+ message_admins("[key_name_admin(src)] попытался прорекламировать в ООС: [msg]")
return
log_ooc(msg, src)
@@ -108,9 +108,9 @@ GLOBAL_VAR_INIT(admin_ooc_colour, "#b82e00")
/proc/toggle_ooc()
GLOB.ooc_enabled = (!GLOB.ooc_enabled)
if(GLOB.ooc_enabled)
- to_chat(world, "The OOC channel has been globally enabled!")
+ to_chat(world, "ООС-чат был глобально включён!")
else
- to_chat(world, "The OOC channel has been globally disabled!")
+ to_chat(world, "ООС-чат был глобально выключен!")
/proc/auto_toggle_ooc(on)
if(GLOB.configuration.general.auto_disable_ooc && GLOB.ooc_enabled != on)
diff --git a/code/game/verbs/randomtip.dm b/code/game/verbs/randomtip.dm
index 25cc996c8fe8..25d19f3ad669 100644
--- a/code/game/verbs/randomtip.dm
+++ b/code/game/verbs/randomtip.dm
@@ -1,10 +1,10 @@
/client/verb/randomtip()
set category = "OOC"
- set name = "Give Random Tip"
- set desc = "Shows you a random tip"
+ set name = "Рандомная подсказка"
+ set desc = "Даёт рандомную подсказку"
var/m
-
+
var/list/randomtips = file2list("strings/tips.txt")
var/list/memetips = file2list("strings/sillytips.txt")
if(randomtips.len && prob(95))
diff --git a/code/game/verbs/webmap.dm b/code/game/verbs/webmap.dm
index 714b501e8085..c5c3d5b544b3 100644
--- a/code/game/verbs/webmap.dm
+++ b/code/game/verbs/webmap.dm
@@ -1,12 +1,12 @@
/client/verb/webmap()
- set name = "webmap"
+ set name = "Карта"
set hidden = TRUE
if(!SSmapping.map_datum.webmap_url)
- to_chat(usr, "The current map has no defined webmap. Please file an issue report.")
+ to_chat(usr, "Текущей карты нет в вебкартах.")
return
- if(alert(usr, "Do you want to open this map's Webmap in your browser?", "Webmap", "Yes", "No") != "Yes")
+ if(alert(usr, "Хотите открыть карту станции в бразуере?", "Карта", "Да", "Нет") != "Да")
return
usr << link(SSmapping.map_datum.webmap_url)
diff --git a/code/modules/antagonists/traitor/datum_traitor.dm b/code/modules/antagonists/traitor/datum_traitor.dm
index b2e2fe1fa82f..1e5b08af4a7f 100644
--- a/code/modules/antagonists/traitor/datum_traitor.dm
+++ b/code/modules/antagonists/traitor/datum_traitor.dm
@@ -167,15 +167,15 @@
var/phrases = jointext(GLOB.syndicate_code_phrase, ", ")
var/responses = jointext(GLOB.syndicate_code_response, ", ")
var/list/messages = list()
- messages.Add("The Syndicate have provided you with the following codewords to identify fellow agents:")
- messages.Add("Code Phrase: [phrases]")
- messages.Add("Code Response: [responses]")
+ messages.Add("Синдикат передал вам формулировки для определения агентов:")
+ messages.Add("Кодовые Фразы: [phrases]")
+ messages.Add("Кодовые Ответы: [responses]")
antag_memory += "Code Phrase: [phrases]
"
antag_memory += "Code Response: [responses]
"
- messages.Add("Use the codewords during regular conversation to identify other agents. Proceed with caution, however, as everyone is a potential foe.")
- messages.Add("You memorize the codewords, allowing you to recognize them when heard.")
+ messages.Add("Используйте формулировки в повседневной речи для определение агентов. Но будьте осторожны, ведь каждый человек - потенциальный враг.")
+ messages.Add("Вы запоминаете формулировки, определяя их в речи.")
traitor_mob.client.chatOutput?.notify_syndicate_codes()
return messages
@@ -185,9 +185,9 @@
*/
/datum/antagonist/traitor/proc/add_law_zero()
var/mob/living/silicon/ai/killer = owner.current
- killer.set_zeroth_law("Accomplish your objectives at all costs.", "Accomplish your AI's objectives at all costs.")
+ killer.set_zeroth_law("Выполните свои задачи любой ценой.", "Выполните задачи вашего ИИ любой ценой.")
killer.set_syndie_radio()
- to_chat(killer, "Your radio has been upgraded! Use :t to speak on an encrypted channel with Syndicate Agents!")
+ to_chat(killer, "Ваша гарнитура была улучшена! Используйте :е для общения по зашифрованному каналу с другими агентами!")
killer.add_malf_picker()
/**
@@ -225,8 +225,8 @@
target_radio.hidden_uplink = T
T.uplink_owner = "[traitor_mob.key]"
target_radio.traitor_frequency = freq
- to_chat(traitor_mob, "The Syndicate have cunningly disguised a Syndicate Uplink as your [R.name]. Simply dial the frequency [format_frequency(freq)] to unlock its hidden features.")
- antag_memory += "Radio Freq: [format_frequency(freq)] ([R.name])."
+ to_chat(traitor_mob, "Синдкат умело замаскировал ваш Аплинк в виде [R.name]. Просто наберите частоту [format_frequency(freq)] для открытия скрытого функционала.")
+ antag_memory += "Частота в радио: [format_frequency(freq)] ([R.name])."
return TRUE
else if(istype(R, /obj/item/pda))
@@ -239,8 +239,8 @@
var/obj/item/pda/P = R
P.lock_code = pda_pass
- to_chat(traitor_mob, "The Syndicate have cunningly disguised a Syndicate Uplink as your [R.name]. Simply enter the code \"[pda_pass]\" into the ringtone select to unlock its hidden features.")
- antag_memory += "Uplink Passcode: [pda_pass] ([R.name]."
+ to_chat(traitor_mob, "Синдкат умело замаскировал ваш Аплинк в виде [R.name]. Просто введие код \"[pda_pass]\" в рингтон для открытия скрытого функционала.")
+ antag_memory += "Пароль Аплинка: [pda_pass] ([R.name]."
return TRUE
return FALSE
diff --git a/code/modules/mob/living/silicon/ai/ai_death.dm b/code/modules/mob/living/silicon/ai/ai_death.dm
index 6f170c292f12..b317631d8a1c 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_laws.dm b/code/modules/mob/living/silicon/ai/ai_laws.dm
index 9aa0f247a2ae..fd4c5adbf0e0 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 83bc6e06de96..524ac131379f 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, "Подключение подтверждено. Поиск APC в энергосети.")
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, "Невозможно найти APC!")
else
- to_chat(src, "Lost connection with the APC!")
+ to_chat(src, "Потеряно соединение с APC!")
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, "Обнаружен APC. Оптимизация маршрута к APC для избежания ненужных потерь энергии.")
if(2)
- to_chat(src, "Best route identified. Hacking offline APC power port.")
+ to_chat(src, "Определён наилучший маршрут. Взламываем порт питания выключенного APC.")
if(3)
- to_chat(src, "Power port upload access confirmed. Loading control program into APC power port software.")
+ to_chat(src, "Выгрука доступа в порт питания завершена. Загружаем программу контроля в ПО порта питания APC.")
if(4)
- to_chat(src, "Transfer complete. Forcing APC to execute program.")
+ to_chat(src, "Передача завершена. Заставляем APC выполнить программу.")
sleep(50)
- to_chat(src, "Receiving control information from APC.")
+ to_chat(src, "Получаем контрольную информацию от APC.")
sleep(2)
//bring up APC dialog
apc_override = TRUE
diff --git a/code/modules/mob/living/silicon/ai/ai_mob.dm b/code/modules/mob/living/silicon/ai/ai_mob.dm
index 71ae4ff228d9..e7f9261af54f 100644
--- a/code/modules/mob/living/silicon/ai/ai_mob.dm
+++ b/code/modules/mob/living/silicon/ai/ai_mob.dm
@@ -245,12 +245,12 @@ GLOBAL_LIST_INIT(ai_verbs_default, list(
return aiRadio
/mob/living/silicon/ai/proc/on_mob_init()
- to_chat(src, "You are playing the station's AI. The AI cannot move, but can interact with many objects while viewing them (through cameras).")
- to_chat(src, "To look at other parts of the station, click on yourself to get a camera menu.")
- to_chat(src, "While observing through a camera, you can use most (networked) devices which you can see, such as computers, APCs, intercoms, doors, etc.")
- to_chat(src, "To use something, simply click on it.")
- to_chat(src, "Use say :b to speak to your cyborgs through binary. Use say :h to speak from an active holopad.")
- to_chat(src, "For department channels, use the following say commands:")
+ to_chat(src, "Вы играете за станционный ИИ. ИИ не может двигаться, но может взаимодействовать с большим количеством предметов просто смотря на них(через камеры).")
+ to_chat(src, "Чтобы смотреть на разные части станции, кликните на кнопку вызова списка камер.")
+ to_chat(src, "Пока вы наблюдаете через камеры, вы можете взаимодействовать с большинством (подключенных) устройств, такие как компьютеры, ЛКП, интеркомы, двери и так далее.")
+ to_chat(src, "Чтобы использовать что-то, просто клкните на это.")
+ to_chat(src, "Используйте :и чтобы общаться с киборгами через бинарный канал. Используйте :р для общения через активный голопад.")
+ to_chat(src, "Для каналов отделов, используйте следующие команды:")
var/radio_text = ""
for(var/i = 1 to aiRadio.channels.len)
@@ -263,7 +263,7 @@ GLOBAL_LIST_INIT(ai_verbs_default, list(
to_chat(src, radio_text)
show_laws()
- to_chat(src, "These laws may be changed by other players, or by you being the traitor.")
+ to_chat(src, "Эти законы могут быть изменены другими игроками или Вами при игре за предателя.")
job = "AI"
@@ -303,12 +303,12 @@ GLOBAL_LIST_INIT(ai_verbs_default, list(
dat2 += "[(dat2 == "") ? "" : " | "][I.c_tag]"
dat += "-- [area_name] ([(dat2 != "") ? dat2 : "No Camera"])"
else
- dat += "-- [area_name] (No Camera)"
+ dat += "-- [area_name] (Нет камеры)"
if(sources.len > 1)
- dat += "- [length(sources)] sources"
+ dat += "- [length(sources)] источников"
dat += "
\n"
if(!L.len)
- dat += "-- All Systems Nominal
\n"
+ dat += "-- Все системы в норме
\n"
dat += "
\n"
viewalerts = TRUE
@@ -316,19 +316,19 @@ GLOBAL_LIST_INIT(ai_verbs_default, list(
src << browse(dat_text, "window=aialerts&can_close=0")
/mob/living/silicon/ai/proc/show_borg_info()
- stat(null, "Connected cyborgs: [connected_robots.len]")
+ stat(null, "Подключенные киборги: [connected_robots.len]")
for(var/thing in connected_robots)
var/mob/living/silicon/robot/R = thing
- var/robot_status = "Nominal"
+ var/robot_status = "Норма"
if(R.stat || !R.client)
- robot_status = "OFFLINE"
+ robot_status = "ОТКЛЮЧЕН"
else if(!R.cell || R.cell.charge <= 0)
- robot_status = "DEPOWERED"
+ robot_status = "РАЗРЯЖЕН"
// Name, Health, Battery, Module, Area, and Status! Everything an AI wants to know about its borgies!
var/area/A = get_area(R)
var/area_name = A ? sanitize(A.name) : "Unknown"
- stat(null, "[R.name] | S.Integrity: [R.health]% | Cell: [R.cell ? "[R.cell.charge] / [R.cell.maxcharge]" : "Empty"] | \
- Module: [R.designation] | Loc: [area_name] | Status: [robot_status]")
+ stat(null, "[R.name] | Целостность: [R.health]% | Заряд: [R.cell ? "[R.cell.charge] / [R.cell.maxcharge]" : "Empty"] | \
+ Модуль: [R.designation] | Место: [area_name] | Статус: [robot_status]")
/mob/living/silicon/ai/rename_character(oldname, newname)
if(!..(oldname, newname))
@@ -380,8 +380,8 @@ GLOBAL_LIST_INIT(ai_verbs_default, list(
change_power_mode(ACTIVE_POWER_USE)
/mob/living/silicon/ai/proc/pick_icon()
- set category = "AI Commands"
- set name = "Set AI Core Display"
+ set category = "Команды ИИ"
+ set name = "Поставить дисплей ядра ИИ"
if(stat || aiRestorePowerRoutine)
return
if(!custom_sprite) //Check to see if custom sprite time, checking the appopriate file to change a var
@@ -443,10 +443,10 @@ GLOBAL_LIST_INIT(ai_verbs_default, list(
//if(icon_state == initial(icon_state))
var/icontype = ""
- icontype = input("Select an icon!", "AI", null, null) in display_choices
+ icontype = input("Выберите иконку!", "ИИ", null, null) in display_choices
icon = 'icons/mob/ai.dmi' //reset this in case we were on a custom sprite and want to change to a standard one
switch(icontype)
- if("Custom")
+ if("Кастомный")
icon = 'icons/mob/custom_synthetic/custom-synthetic.dmi' //set this here so we can use the custom_sprite
icon_state = "[ckey]-ai"
if("Clown")
@@ -499,7 +499,7 @@ GLOBAL_LIST_INIT(ai_verbs_default, list(
icon_state = "ai-heartline"
if("Hades")
icon_state = "ai-hades"
- if("Helios")
+ if("Helious")
icon_state = "ai-helios"
if("Syndicat Meow")
icon_state = "ai-syndicatmeow"
@@ -511,9 +511,9 @@ GLOBAL_LIST_INIT(ai_verbs_default, list(
icon_state = "ai-murica"
if("Fuzzy")
icon_state = "ai-fuzz"
- if("Glitchman")
+ if("Глитчман")
icon_state = "ai-glitchman"
- if("House")
+ if("Хаус")
icon_state = "ai-house"
if("Database")
icon_state = "ai-database"
@@ -552,22 +552,22 @@ GLOBAL_LIST_INIT(ai_verbs_default, list(
// this verb lets the ai see the stations manifest
/mob/living/silicon/ai/proc/ai_roster()
- set name = "Show Crew Manifest"
- set category = "AI Commands"
+ set name = "Показать манифест экипажа"
+ set category = "Команды ИИ"
show_station_manifest()
/mob/living/silicon/ai/proc/ai_announcement_text()
- set category = "AI Commands"
- set name = "Make Station Announcement"
+ set category = "Команды ИИ"
+ set name = "Сделать станционное оповещение"
if(check_unable(AI_CHECK_WIRELESS | AI_CHECK_RADIO))
return
if(world.time < next_text_announcement)
- to_chat(src, "Please allow one minute to pass between announcements.")
+ to_chat(src, "Подождите минуту перед отправкой следующего уведомления.")
return
- var/input = input(usr, "Please write a message to announce to the station crew.", "A.I. Announcement") as message|null
+ var/input = input(usr, "Пожалуйста, напишите, о чём бы вы хотели уведомить членов экипажа", "Оповещение ИИ") as message|null
if(!input)
return
@@ -578,13 +578,13 @@ GLOBAL_LIST_INIT(ai_verbs_default, list(
next_text_announcement = world.time + TEXT_ANNOUNCEMENT_COOLDOWN
/mob/living/silicon/ai/proc/ai_call_shuttle()
- set name = "Call Emergency Shuttle"
- set category = "AI Commands"
+ set name = "Вызвать эвакуационный шаттл"
+ set category = "Команды ИИ"
if(check_unable(AI_CHECK_WIRELESS))
return
- var/input = input("Please enter the reason for calling the shuttle.", "Shuttle Call Reason.") as null|message
+ var/input = input("Введите причину вызова шаттла", "Причина вызова шаттла.") as null|message
if(!input || stat)
return
@@ -596,26 +596,26 @@ GLOBAL_LIST_INIT(ai_verbs_default, list(
return
/mob/living/silicon/ai/proc/ai_cancel_call()
- set name = "Recall Emergency Shuttle"
- set category = "AI Commands"
+ set name = "Отозвать шаттл"
+ set category = "Команды ИИ"
if(check_unable(AI_CHECK_WIRELESS))
return
- var/confirm = alert("Are you sure you want to recall the shuttle?", "Confirm Shuttle Recall", "Yes", "No")
+ var/confirm = alert("Вы уверены, что хотите отозвать шаттл?", "Подтвердите отзыв шаттла", "Да", "Нет")
if(check_unable(AI_CHECK_WIRELESS))
return
- if(confirm == "Yes")
+ if(confirm == "Да")
cancel_call_proc(src)
/mob/living/silicon/ai/cancel_camera()
view_core()
/mob/living/silicon/ai/verb/toggle_anchor()
- set category = "AI Commands"
- set name = "Toggle Floor Bolts"
+ set category = "Команды ИИ"
+ set name = "Переключить болты "
if(!isturf(loc)) // if their location isn't a turf
return // stop
@@ -625,13 +625,13 @@ GLOBAL_LIST_INIT(ai_verbs_default, list(
else
anchored = TRUE
- to_chat(src, "[anchored ? "You are now anchored." : "You are now unanchored."]")
+ to_chat(src, "[anchored ? "Вы теперь прикручены." : "Вы теперь откручены."]")
/mob/living/silicon/ai/proc/announcement()
- set name = "Announcement"
- set desc = "Create a vocal announcement by typing in the available words to create a sentence."
- set category = "AI Commands"
+ set name = "Оповещение"
+ set desc = "Создаёт звуковое оповещение благодаря вписыванию доступных слов в предложение."
+ set category = "Команды ИИ"
if(check_unable(AI_CHECK_WIRELESS | AI_CHECK_RADIO))
return
@@ -715,7 +715,7 @@ GLOBAL_LIST_INIT(ai_verbs_default, list(
if(istype(target) && target.can_track())
ai_actual_track(target)
else
- to_chat(src, "Target is not on or near any active cameras on the station.")
+ to_chat(src, "Цель находится вне зоны камер на станции.")
return
if(href_list["trackbot"])
@@ -723,7 +723,7 @@ GLOBAL_LIST_INIT(ai_verbs_default, list(
if(istype(target))
ai_actual_track(target)
else
- to_chat(src, "Target is not on or near any active cameras on the station.")
+ to_chat(src, "Цель находится вне зоны камер на станции.")
return
if(href_list["callbot"]) //Command a bot to move to a selected location.
@@ -731,7 +731,7 @@ GLOBAL_LIST_INIT(ai_verbs_default, list(
if(!Bot || Bot.remote_disabled || control_disabled)
return //True if there is no bot found, the bot is manually emagged, or the AI is carded with wireless off.
waypoint_mode = TRUE
- to_chat(src, "Set your waypoint by clicking on a valid location free of obstructions.")
+ to_chat(src, "Поставьте место назначения, кликнув на свободный тайл без препятствий на пути.")
return
if(href_list["interface"]) //Remotely connect to a bot!
@@ -761,16 +761,16 @@ GLOBAL_LIST_INIT(ai_verbs_default, list(
return
if(controlled_mech)
- to_chat(src, "You are already loaded into an onboard computer!")
+ to_chat(src, "Вы уже загружены в бортовой компьютер!")
return
if(!GLOB.cameranet.checkCameraVis(M))
- to_chat(src, "Exosuit is no longer near active cameras.")
+ to_chat(src, "Экзокостюм нахотися вне зоны камер.")
return
if(lacks_power())
- to_chat(src, "You're depowered!")
+ to_chat(src, "Вас отключили от питания!")
return
if(!isturf(loc))
- to_chat(src, "You aren't in your core!")
+ to_chat(src, "Вы не в своём ядре!")
return
if(M)
M.transfer_ai(AI_MECH_HACK, src, usr) //Called om the mech itself.
@@ -798,11 +798,11 @@ GLOBAL_LIST_INIT(ai_verbs_default, list(
eyeobj.get_remote_view_fullscreens(src)
/mob/living/silicon/ai/proc/botcall()
- set category = "AI Commands"
- set name = "Access Robot Control"
- set desc = "Wirelessly control various automatic robots."
+ set category = "Команды ИИ"
+ set name = "Доступ к контролю роботов"
+ set desc = "Удалённый контроль различных роботов."
if(stat == 2)
- to_chat(src, "Critical error. System offline.")
+ to_chat(src, "Критическая ошибка. Система отключена.")
return
if(check_unable(AI_CHECK_WIRELESS | AI_CHECK_RADIO))
@@ -810,8 +810,8 @@ GLOBAL_LIST_INIT(ai_verbs_default, list(
var/d
var/area/bot_area
- d += "Query network status
"
- d += "Name | Status | Location | Control |
"
+ d += "Статус сети/A>
"
+ d += "Имя | Статус | Место | Управление |
"
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!
@@ -825,7 +825,7 @@ GLOBAL_LIST_INIT(ai_verbs_default, list(
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()
@@ -837,7 +837,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)
@@ -845,7 +845,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)
@@ -860,7 +860,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 = ""
@@ -869,11 +869,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("--- Тревога типа[] обнаружена в []! (No Camera)", class, A.name), class)
else
- queueAlarm(text("--- [] alarm detected in []! (No Camera)", class, A.name), class)
+ queueAlarm(text("--- Тревога типа [] обнаружена в []! (No Camera)", class, A.name), class)
if(viewalerts)
ai_alerts()
@@ -883,7 +883,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()
@@ -908,8 +908,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]
@@ -917,7 +917,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
@@ -931,7 +931,8 @@ 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 = input(U, "Какую сеть вы хотите посмотреть?") as null|anything in cameralist
+
if(check_unable())
return
@@ -949,22 +950,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 = input("Please, select a status!", "AI Status", null, null) in ai_emotions
+ var/list/ai_emotions = list("Very Happy", "Happy", "Neutral", "Unsure", "Confused", "Sad", "BSOD", "Blank", "Problems?", "Cool", "Facepalm", "Friend Computer")
+ var/emote = input("Пожалуйста, выберите эмоцию!", "Эмоция ИИ", null, null) in ai_emotions
if(check_unable())
return
@@ -992,9 +993,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
@@ -1003,21 +1004,22 @@ GLOBAL_LIST_INIT(ai_verbs_default, list(
custom_hologram = TRUE
var/input
- switch(alert("Would you like to select a hologram based on a crew member, an animal, or switch to a unique avatar?",,"Crew Member","Unique","Animal"))
- if("Crew Member")
+ switch(alert("Вы хотели бы голограмму на основе члена экипажа, животного или переключиться на уникальный аватар?",,"Crew Member","Уникальное","Животное"))
+ if("Член Экипажа")
var/personnel_list[] = list()
for(var/datum/data/record/t in GLOB.data_core.general)//Look in data core general.
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 = input("Выберите члена Экипажа:") as null|anything in 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(
@@ -1032,7 +1034,7 @@ GLOBAL_LIST_INIT(ai_verbs_default, list(
"Goat",
"Goose",
"Kitten",
- "Kitten2",
+ "Kitten22",
"Pig",
"Poly",
"Pug",
@@ -1040,7 +1042,7 @@ GLOBAL_LIST_INIT(ai_verbs_default, list(
"Spider",
"Turkey",
"Shantak",
- "Bunny",
+ "Bear",
"Hellhound",
"Lightgeist",
"Cockroach",
@@ -1054,11 +1056,11 @@ GLOBAL_LIST_INIT(ai_verbs_default, list(
"Roller-Monkey"
)
- input = tgui_input_list(usr, "Please select a hologram", "Change Hologram", icon_list)
+ input = input("Пожалуйста, выберите голограмму:") as null|anything in icon_list
if(input)
qdel(holo_icon)
switch(input)
- if("Bear")
+ if("bear")
holo_icon = getHologramIcon(icon('icons/mob/animal.dmi',"bear"))
if("Carp")
holo_icon = getHologramIcon(icon('icons/mob/animal.dmi',"carp"))
@@ -1116,7 +1118,7 @@ GLOBAL_LIST_INIT(ai_verbs_default, list(
holo_icon = getHologramIcon(icon('icons/mob/pai.dmi',"mouse"))
if("Mecha-Snake")
holo_icon = getHologramIcon(icon('icons/mob/pai.dmi',"snake"))
- if("Roller-Mouse")
+ if("Roller-Mice")
holo_icon = getHologramIcon(icon('icons/mob/robots.dmi',"mk2"))
if("Roller-Monkey")
holo_icon = getHologramIcon(icon('icons/mob/robots.dmi',"mk3"))
@@ -1141,7 +1143,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 = input("Пожалуйста выберите голограмму:") as null|anything in icon_list
if(input)
qdel(holo_icon)
switch(input)
@@ -1186,9 +1188,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
@@ -1196,7 +1198,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)
@@ -1206,37 +1208,37 @@ 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 name = "Переключить оповещение о прибытии"
set desc = "Change whether or not you wish to announce arrivals."
- set category = "AI Commands"
+ 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 name = "Поставить сообщение о прибытии"
set desc = "Change the message that's transmitted when a new crew member arrives on station."
- set category = "AI Commands"
+ set category = "Команды ИИ"
- var/newmsg = clean_input("What would you like the arrival message to be? List of options: $name, $rank, $species, $gender, $age", "Change Arrival Message", arrivalmsg)
+ var/newmsg = clean_input("Каким бы вы хотели видеть новое сообщение? Список переменных: $name, $rank, $species, $gender, $age", "Поменять сообщение о прибытии", arrivalmsg)
if(!newmsg)
return
newmsg = html_decode(newmsg) // This feels a bit redundant, but sanitisation is (probably) important.
if(newmsg != arrivalmsg)
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.
@@ -1265,19 +1267,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("\The [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("\The [user] решает не прикручивать [src].")
return
- user.visible_message("\The [user] finishes fastening down \the [src]!")
+ user.visible_message("\The [user] прикрутил [src]!")
anchored = TRUE
return
else
@@ -1287,32 +1289,32 @@ GLOBAL_LIST_INIT(ai_verbs_default, list(
return
/mob/living/silicon/ai/proc/control_integrated_radio()
- set name = "Radio Settings"
+ set name = "Настройки гарнитуры"
set desc = "Allows you to change settings of your radio."
- set category = "AI Commands"
+ 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
@@ -1324,11 +1326,11 @@ 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.")
@@ -1341,8 +1343,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
@@ -1371,7 +1373,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)
@@ -1383,10 +1385,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, "Взлом отменён. Обозначенный APC больше не существует на системах электроэнергии.")
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
@@ -1396,12 +1398,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, "Вы также можете взламывать APC, что даст вам больше очков на покупку сбойных сил. Недостаток в том, что взломанный APC выдаст вас, если его увидит экипаж. Взлом APC занимает 60 секунд.")
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)
@@ -1440,19 +1442,19 @@ GLOBAL_LIST_INIT(ai_verbs_default, list(
A = D
if(istype(A))
- switch(alert(src, "Do you want to open \the [A] for [target]?", "Doorknob_v2a.exe", "Yes", "No"))
- if("Yes")
+ switch(alert(src, "Вы хотите открыть \ [A] для [target]?", "ДвернаяРучка_v2a.exe", "Да", "Нет")) //Ну тупо рили дверная ручка
+ 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, "Вы открываете \the [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)
@@ -1506,16 +1508,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, "Маленький встроенный фен наконец-то вытаскивает плёнку!")
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!")
+ if(!isturf(eyeobj.loc)) //к примеру, в мехе или ещё чего
+ to_chat(src, "Вы не можете поставить место тут!")
return FALSE
stored_locations[location_number] = eyeobj.loc
diff --git a/code/modules/mob/living/silicon/ai/ai_say.dm b/code/modules/mob/living/silicon/ai/ai_say.dm
index 1f6621db0fe1..ec3f08edd3ce 100644
--- a/code/modules/mob/living/silicon/ai/ai_say.dm
+++ b/code/modules/mob/living/silicon/ai/ai_say.dm
@@ -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 = clean_input("WARNING: Misuse of this verb can result in you being job banned. More help is available in 'Announcement Help'", "Announcement", last_announcement, src)
+ var/message = clean_input("Внимание: Неправильно использование этой системы приведёт к джоббану. Для справки смотрите 'Announcement Help'", "Оповещение", last_announcement, src)
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 e198fc92b476..7fc1bc923a0c 100644
--- a/code/modules/mob/living/silicon/ai/latejoin.dm
+++ b/code/modules/mob/living/silicon/ai/latejoin.dm
@@ -1,20 +1,20 @@
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(alert("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", "No", "No", "Yes") != "Yes")
+ if(alert("ВНИМАНИЕ: Это действие моментально очистит ваше ядро и превратит вас в призрака, навсегда удаляя вашего персонажа из раунда (Схоже с робо или криохранилищем). Вы уверены, что хотите это сделать?",
+ "Очистить ядро", "Нет", "Нет", "Да") != "Да")
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_laws.dm b/code/modules/mob/living/silicon/silicon_laws.dm
index f6ad59bd794e..afe1ef6f0166 100644
--- a/code/modules/mob/living/silicon/silicon_laws.dm
+++ b/code/modules/mob/living/silicon/silicon_laws.dm
@@ -90,12 +90,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]")
@@ -103,7 +103,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_mob.dm b/code/modules/mob/living/silicon/silicon_mob.dm
index 4b5249662bec..ec7779f2ae76 100644
--- a/code/modules/mob/living/silicon/silicon_mob.dm
+++ b/code/modules/mob/living/silicon/silicon_mob.dm
@@ -116,19 +116,19 @@
var/list/msg = list("--- ")
if(alarm_types_show["Burglar"])
- msg += "BURGLAR: [alarm_types_show["Burglar"]] alarms detected. - "
+ msg += "ПРОНИКНОВЕНИЕ: Обнаружено [alarm_types_show["Burglar"]] тревог. - "
if(alarm_types_show["Motion"])
- msg += "MOTION: [alarm_types_show["Motion"]] alarms detected. - "
+ msg += "ДВИЖЕНИЕ: Обнаружено [alarm_types_show["Motion"]] тревог. - "
if(alarm_types_show["Fire"])
- msg += "FIRE: [alarm_types_show["Fire"]] alarms detected. - "
+ msg += "ПОЖАР: Обнаружено [alarm_types_show["Fire"]] тревог. - "
if(alarm_types_show["Atmosphere"])
- msg += "ATMOSPHERE: [alarm_types_show["Atmosphere"]] alarms detected. - "
+ msg += "АТМОСФЕРА: Обнаружено [alarm_types_show["Atmosphere"]] тревог. - "
if(alarm_types_show["Power"])
- msg += "POWER: [alarm_types_show["Power"]] alarms detected. - "
+ msg += "ЭНЕРГИЯ: Обнаружено [alarm_types_show["Power"]] тревог. - "
msg += "\[Show Alerts\]"
var/msg_text = msg.Join("")
@@ -142,16 +142,16 @@
var/list/msg = list("--- ")
if(alarm_types_clear["Motion"])
- msg += "MOTION: [alarm_types_clear["Motion"]] alarms cleared. - "
+ msg += "ДВИЖЕНИЕ: Нейтрализовано [alarm_types_clear["Motion"]] тревог. - "
if(alarm_types_clear["Fire"])
- msg += "FIRE: [alarm_types_clear["Fire"]] alarms cleared. - "
+ msg += "ПОЖАР: Нейтрализовано [alarm_types_clear["Fire"]] тревог. - "
if(alarm_types_clear["Atmosphere"])
- msg += "ATMOSPHERE: [alarm_types_clear["Atmosphere"]] alarms cleared. - "
+ msg += "АТМОСФЕРА: Нейтрализовано [alarm_types_clear["Atmosphere"]] тревог. - "
if(alarm_types_clear["Power"])
- msg += "POWER: [alarm_types_clear["Power"]] alarms cleared. - "
+ msg += "ЭНЕРГИЯ: Нейтрализовано [alarm_types_clear["Power"]] тревог. - "
msg += "\[Show Alerts\]"
@@ -194,8 +194,8 @@
take_organ_damage(10)
Stun(6 SECONDS)
flash_eyes(affect_silicon = 1)
- to_chat(src, "*BZZZT*")
- to_chat(src, "Warning: Electromagnetic pulse detected.")
+ to_chat(src, "*БЗЗЗЗЗ*")
+ to_chat(src, "Внимание: Обнаружен электромагнитный импульс.")
/mob/living/silicon/proc/damage_mob(brute = 0, fire = 0, tox = 0)
@@ -203,7 +203,7 @@
/mob/living/silicon/can_inject(mob/user, error_msg, target_zone, penetrate_thick)
if(error_msg)
- to_chat(user, "[p_their(TRUE)] outer shell is too tough.")
+ to_chat(user, "[p_their(TRUE)] Внешняя оболочка слишком толстая.")
return FALSE
/mob/living/silicon/IsAdvancedToolUser()
@@ -216,16 +216,16 @@
return
. = TRUE
if(!getBruteLoss())
- to_chat(user, "Nothing to fix!")
+ to_chat(user, "Нечего чинить!")
return
else if(!getBruteLoss(TRUE))
- to_chat(user, "The damaged components are beyond saving!")
+ to_chat(user, "Повреждённые компоненты уже не спасти!")
return
if(!I.use_tool(src, user, volume = I.tool_volume))
return
adjustBruteLoss(-30)
add_fingerprint(user)
- user.visible_message("[user] patches some dents on [src] with [I].")
+ user.visible_message("[user] чинит вмятины на [src] с помощью [I].")
/mob/living/silicon/bullet_act(obj/item/projectile/Proj)
@@ -273,12 +273,12 @@
return 0
-// this function shows the health of the pAI in the Status panel
+// Функия показывает здоровье пИИ на панели Статуса.
/mob/living/silicon/proc/show_system_integrity()
if(!src.stat)
- stat(null, text("System integrity: [round((health/maxHealth)*100)]%"))
+ stat(null, text("Целостность системы: [round((health/maxHealth)*100)]%"))
else
- stat(null, text("Systems nonfunctional"))
+ stat(null, text("Система сломана"))
// This adds the basic clock, shuttle recall timer, and malf_ai info to all silicon lifeforms
@@ -375,31 +375,34 @@
janisensor.add_hud_to(src)
/mob/living/silicon/proc/toggle_sensor_mode()
- to_chat(src, "Please select sensor type.")
- var/static/list/sensor_choices = list("Security" = image(icon = 'icons/obj/clothing/glasses.dmi', icon_state = "securityhud"),
- "Medical" = image(icon = 'icons/obj/clothing/glasses.dmi', icon_state = "healthhud"),
- "Diagnostic" = image(icon = 'icons/obj/clothing/glasses.dmi', icon_state = "diagnostichud"),
- "Janitor" = image(icon = 'icons/obj/clothing/glasses.dmi', icon_state = "janihud"),
- "None" = image(icon = 'icons/mob/screen_gen.dmi', icon_state = "x"))
- var/sensor_type = show_radial_menu(src, src, sensor_choices)
+ to_chat(src, "Пожалуйста, выберите тип сенсоров.")
+ var/static/list/sensor_choices = list("Записи судимостей" = image(icon = 'icons/obj/clothing/glasses.dmi', icon_state = "securityhud"),
+ "Медицинские записи" = image(icon = 'icons/obj/clothing/glasses.dmi', icon_state = "healthhud"),
+ "Диагностика" = image(icon = 'icons/obj/clothing/glasses.dmi', icon_state = "diagnostichud"),
+ "Никакой" = image(icon = 'icons/mob/screen_gen.dmi', icon_state = "x"))
+ var/user_loc
+ if(isAI(src))
+ var/mob/living/silicon/ai/eyeloc = src
+ user_loc = eyeloc.eyeobj
+ else
+ user_loc = src
+ var/sensor_type = show_radial_menu(src, user_loc, sensor_choices)
+
if(!sensor_type)
return
remove_med_sec_hud()
switch(sensor_type)
- if("Security")
+ if("Записи судимостей")
add_sec_hud()
- to_chat(src, "Security records overlay enabled.")
- if("Medical")
+ to_chat(src, "Включён монитор Службы безопасности.")
+ if("Медицинские записи")
add_med_hud()
- to_chat(src, "Life signs monitor overlay enabled.")
- if("Diagnostic")
+ to_chat(src, "Включён монитор жизненных показателей.")
+ if("Диагностика")
add_diag_hud()
- to_chat(src, "Robotics diagnostic overlay enabled.")
- if("Janitor")
- add_jani_hud()
- to_chat(src, "Janitorial filth overlay enabled.")
- if("None")
- to_chat(src, "Sensor augmentations disabled.")
+ to_chat(src, "Включён диагностический монитор.")
+ if("Никакой")
+ to_chat(src, "Сенсорные аугментации выключены.")
/mob/living/silicon/adjustToxLoss(amount)
return STATUS_UPDATE_NONE
diff --git a/code/modules/mob/living/silicon/silicon_say.dm b/code/modules/mob/living/silicon/silicon_say.dm
index 0420cccf33f9..e0a6fbafe8e5 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 8f10154caec0..d0d993ff9ff4 100644
--- a/code/modules/mob/living/silicon/silicon_subsystems.dm
+++ b/code/modules/mob/living/silicon/silicon_subsystems.dm
@@ -59,8 +59,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, state = GLOB.self_state)
@@ -68,16 +68,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, state = GLOB.self_state)
/****************
* 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, state = GLOB.conscious_state)
@@ -85,8 +85,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, state = GLOB.self_state)
diff --git a/code/modules/paperwork/silicon_photography.dm b/code/modules/paperwork/silicon_photography.dm
index 7f2d6106a409..504162e54728 100644
--- a/code/modules/paperwork/silicon_photography.dm
+++ b/code/modules/paperwork/silicon_photography.dm
@@ -43,11 +43,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)
@@ -88,63 +88,63 @@
/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 = "Делает снимок"
set src in usr
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 = "Показывает снимки"
set src in usr
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 = "Удаляет снимок"
set src in usr
deletepicture(src)
/obj/item/camera/siliconcam/robot_camera/verb/take_image()
- set category ="Robot Commands"
- set name = "Take Image"
- set desc = "Takes an image"
+ set category ="Команды роботов"
+ set name = "Сфотографировать"
+ set desc = "Делает снимок"
set src in usr
toggle_camera_mode()
/obj/item/camera/siliconcam/robot_camera/verb/view_images()
- set category ="Robot Commands"
- set name = "View Images"
- set desc = "View images"
+ set category ="Команды роботов"
+ set name = "Посмотреть снимки"
+ set desc = "Показывает снимки"
set src in usr
viewpictures()
/obj/item/camera/siliconcam/robot_camera/verb/delete_images()
- set category = "Robot Commands"
- set name = "Delete Image"
- set desc = "Delete a local image"
+ set category = "Команды роботов"
+ set name = "Удалить снимок"
+ set desc = "Удаляет снимки"
set src in usr
// Explicitly only allow deletion from the local camera
diff --git a/code/modules/power/apc/apc_malfunction.dm b/code/modules/power/apc/apc_malfunction.dm
index 1494cef300e1..3bb1d2df8ef2 100644
--- a/code/modules/power/apc/apc_malfunction.dm
+++ b/code/modules/power/apc/apc_malfunction.dm
@@ -10,12 +10,12 @@
if(get_malf_status(malf) != APC_MALF_NOT_HACKED)
return
if(malf.malfhacking)
- to_chat(malf, "You are already hacking an APC.")
+ to_chat(malf, "Вы уже взламываете APC.")
return
if(constructed)
- to_chat(malf, "This APC was only recently constructed, and is not fully linked to station systems. Hacking it would be pointless.")
+ to_chat(malf, "Этот APC построили недавно и он не полностью подключился к сети. Его взлом будет бесполезен.")
return
- to_chat(malf, "Beginning override of APC systems. This takes some time, and you can only hack one APC at a time.")
+ to_chat(malf, "Начинается перезапись систем APC. Это займёт какое-то время, и вы можете взламывать только один APC за раз.")
malf.malfhack = src
malf.malfhacking = addtimer(CALLBACK(malf, TYPE_PROC_REF(/mob/living/silicon/ai, malfhacked), src), 600, TIMER_STOPPABLE)
var/obj/screen/alert/hackingapc/A
@@ -26,10 +26,10 @@
if(!istype(malf))
return
if(istype(malf.loc, /obj/machinery/power/apc)) // Already in an APC
- to_chat(malf, "You must evacuate your current APC first!")
+ to_chat(malf, "Сначала вы должны покинуть текущий APC!")
return
if(!malf.can_shunt)
- to_chat(malf, "You cannot shunt!")
+ to_chat(malf, "Вы не можете спрятаться!")
return
if(!is_station_level(z))
return
@@ -68,7 +68,7 @@
if((A.stat != DEAD) && A.nuking)
point.the_disk = A //The pinpointer tracks the AI back into its core.
else
- to_chat(occupier, "Primary core damaged, unable to return core processes.")
+ to_chat(occupier, "Главное ядро повреждено, возврат к нему невозможен.")
if(forced)
occupier.loc = loc
occupier.death()
diff --git a/code/modules/shuttle/emergency.dm b/code/modules/shuttle/emergency.dm
index 71f8db6aa9b7..2f7011b3d8b1 100644
--- a/code/modules/shuttle/emergency.dm
+++ b/code/modules/shuttle/emergency.dm
@@ -287,8 +287,8 @@
else
SSshuttle.emergencyLastCallLoc = null
GLOB.major_announcement.Announce(
- "The emergency shuttle has been recalled.[SSshuttle.emergencyLastCallLoc ? " Recall signal traced. Results can be viewed on any communications console." : "" ]",
- new_title = "Priority Announcement",
+ "Эвакуационный шаттл был отозван.[SSshuttle.emergencyLastCallLoc ? " Сигнал отзыва отслежен. Результаты можно посмотреть на любой консоли связи." : "" ]",
+ new_title = "Приоритетное оповещение",
new_sound = sound('sound/AI/eshuttle_recall.ogg')
)
diff --git a/code/modules/tgui/modules/law_manager.dm b/code/modules/tgui/modules/law_manager.dm
index 667c0a57b109..9de22e113d36 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"
diff --git a/modular_ss220/verbs/code/verbs.dm b/modular_ss220/verbs/code/verbs.dm
index c68b15645012..bf4c8b5ff47f 100644
--- a/modular_ss220/verbs/code/verbs.dm
+++ b/modular_ss220/verbs/code/verbs.dm
@@ -3,7 +3,7 @@
May be returned in the future by offs (because it's commented in code\modules\mob)
*/
/mob/verb/abandon_mob()
- set name = "Respawn"
+ set name = "Возрождение"
set category = "OOC"
if(!GLOB.configuration.general.respawn_enabled)
@@ -40,7 +40,7 @@
// Pick darkness list
/mob/dead/observer/pick_darkness()
set name = "Pick Darkness"
- set desc = "Choose how much darkness you want to see."
+ set desc = "Выберите, насколько ярко вы видите."
set category = "Ghost"
if(!client)
@@ -72,7 +72,7 @@
/mob/dead/observer/dead_tele()
set category = "Ghost"
set name = "Teleport"
- set desc= "Teleport to a location"
+ set desc= "Телепортирует вас к месту"
if(!isobserver(usr))
to_chat(usr, "Ты ещё не мёртв!")
diff --git a/paradise.dme b/paradise.dme
index 78c0854ed145..e19d0c442a5b 100644
--- a/paradise.dme
+++ b/paradise.dme
@@ -24,9 +24,7 @@
#include "code\__DEFINES\_protection.dm"
#include "code\__DEFINES\_readme.dm"
#include "code\__DEFINES\_spacemandmm.dm"
-// SS220 ADDITION START : MODPACK TOGGLING
#include "code\__DEFINES\_ss220.dm"
-// SS220 ADDITION END
#include "code\__DEFINES\_tgs_defines.dm"
#include "code\__DEFINES\_tick.dm"
#include "code\__DEFINES\_versions.dm"