From b655d8a2a68510d27efb4bcaef099049005de22e Mon Sep 17 00:00:00 2001 From: Vuradu Date: Wed, 22 Nov 2023 22:26:58 +1000 Subject: [PATCH] Translate inegrated ciruit and another staff --- mods/_rus/_rus.dme | 6 +- .../code/obj/modules_files/hydroponics.dm | 10 +- .../integrated_elecronics/assembly.dm | 83 ++ .../integrated_circuit.dm | 245 ++++++ .../integrated_elecronics/misc.dm | 706 ++++++++++++++++++ mods/_rus/code/proc/throw.dm | 69 ++ 6 files changed, 1112 insertions(+), 7 deletions(-) create mode 100644 mods/_rus/code/obj/modules_files/integrated_elecronics/assembly.dm create mode 100644 mods/_rus/code/obj/modules_files/integrated_elecronics/integrated_circuit.dm create mode 100644 mods/_rus/code/obj/modules_files/integrated_elecronics/misc.dm create mode 100644 mods/_rus/code/proc/throw.dm diff --git a/mods/_rus/_rus.dme b/mods/_rus/_rus.dme index 4685197ed454c..3c27a82b3a405 100644 --- a/mods/_rus/_rus.dme +++ b/mods/_rus/_rus.dme @@ -73,8 +73,8 @@ #include "code/obj/modules_files/crafting_datum.dm" #include "code/obj/modules_files/hydroponics.dm" #include "code/obj/modules_files/holodeck.dm" - -// Далее просто включай свой код -// #include "code/something.dm" +#include "code/obj/modules_files/integrated_elecronics/assembly.dm" +#include "code/obj/modules_files/integrated_elecronics/misc.dm" +#include "code/obj/modules_files/integrated_elecronics/integrated_circuit.dm" #endif diff --git a/mods/_rus/code/obj/modules_files/hydroponics.dm b/mods/_rus/code/obj/modules_files/hydroponics.dm index 7685e6d265afd..f6efca090ea20 100644 --- a/mods/_rus/code/obj/modules_files/hydroponics.dm +++ b/mods/_rus/code/obj/modules_files/hydroponics.dm @@ -153,20 +153,22 @@ /datum/seed/chili display_name = "растение чили" seed_name = "чили" + /datum/seed/chili/ice seed_name = "ледяной перец чили" display_name = "растение ледяного перца чили" + /datum/seed/berry seed_name = "ягода" display_name = "ягодный куст" /datum/seed/berry/blue - seed_name = "чёрника" - display_name = "куст чёрники" + seed_name = "черника" + display_name = "куст черники" /datum/seed/berry/glow - seed_name = "голубика" - display_name = "куст голубики" + seed_name = "светящаяся ягода" + display_name = "куст светящийся ягоды" /datum/seed/berry/poison seed_name = "ядовитая ягода" diff --git a/mods/_rus/code/obj/modules_files/integrated_elecronics/assembly.dm b/mods/_rus/code/obj/modules_files/integrated_elecronics/assembly.dm new file mode 100644 index 0000000000000..6ebf3b0d62eda --- /dev/null +++ b/mods/_rus/code/obj/modules_files/integrated_elecronics/assembly.dm @@ -0,0 +1,83 @@ +/obj/item/device/electronic_assembly + desc = "Это корпус, используемый для сборки мелкой электроники." + +/obj/item/device/electronic_assembly/calc + desc = "Это корпус, используемый для сборки мелкой электроники. Он напоминает карманный калькулятор." + +/obj/item/device/electronic_assembly/clam + desc = "Это корпус, используемый для сборки мелкой электроники. У него конструкция типа \"раскладушка\"." + +/obj/item/device/electronic_assembly/simple + desc = "Это корпус, используемый для сборки мелкой электроники. У него простая конструкция." + +/obj/item/device/electronic_assembly/hook + desc = "Это корпус, используемый для сборки мелкой электроники. Похоже, что у него есть зажим для ремня." + +/obj/item/device/electronic_assembly/pda + desc = "Это корпус, используемый для сборки мелкой электроники. Он напоминает КПК." + +/obj/item/device/electronic_assembly/augment + desc = "Это корпус, используемый для сборки мелкой электроники. Он предназначен для установки внутри кибернетического импланта." + +/obj/item/device/electronic_assembly/medium + desc = "Это корпус, используемый для сборки электроники." + +/obj/item/device/electronic_assembly/medium/box + desc = "Это корпус, используемый для сборки электроники. У него коробчатая конструкция." + +/obj/item/device/electronic_assembly/medium/clam + desc = "Это корпус, используемый для сборки электроники. У него конструкция ноутбука." + +/obj/item/device/electronic_assembly/medium/medical + desc = "Это корпус, используемый для сборки электроники. Он напоминает какой-то медицинский аппарат." + +/obj/item/device/electronic_assembly/medium/gun + desc = "Это корпус, используемый для сборки электроники. Он напоминает пистолет или какой-нибудь инструмент, если вы настроены оптимистично. Он может стрелять и бросать предметы, пока пользователь держит его в руках." + +/obj/item/device/electronic_assembly/medium/radio + desc = "Это корпус, используемый для сборки электроники. Он напоминает старый радиоприемник." + +/obj/item/device/electronic_assembly/large + desc = "Это корпус, используемый для сборки крупной электроники." + +/obj/item/device/electronic_assembly/large/scope + desc = "Это корпус, используемый для сборки крупной электроники. Он напоминает осциллограф." + +/obj/item/device/electronic_assembly/large/terminal + desc = "Это корпус, используемый для сборки крупной электроники. Он похож на компьютерный терминал." + +/obj/item/device/electronic_assembly/large/arm + desc = "Это корпус, используемый для сборки крупной электроники. Он похож на роботизированную руку." + +/obj/item/device/electronic_assembly/large/tall + desc = "Это корпус, используемый для сборки крупной электроники. Он довольно высокий." + +/obj/item/device/electronic_assembly/large/industrial + desc = "Это корпус, используемый для сборки крупной электроники. Он напоминает какое-то промышленное оборудование." + +/obj/item/device/electronic_assembly/drone + desc = "Это корпус, используемый для сборки мобильной электроники." + +/obj/item/device/electronic_assembly/drone/arms + desc = "Это корпус, используемый для сборки мобильной электроники. Он вооружен и опасен." + +/obj/item/device/electronic_assembly/drone/secbot + desc = "Это корпус, используемый для сборки мобильной электроники. Он напоминает Securitron." + +/obj/item/device/electronic_assembly/drone/medbot + desc = "Это корпус, используемый для сборки мобильной электроники. Он напоминает Медибота." + +/obj/item/device/electronic_assembly/drone/genbot + desc = "Это корпус, используемый для сборки мобильной электроники. У него дизайн универсального бота." + +/obj/item/device/electronic_assembly/drone/android + desc = "Это огромный двуногий корпус, используемый для сборки мобильной электроники и чучел, похожих на гуманоидов." + +/obj/item/device/electronic_assembly/wallmount + desc = "Это корпус, используемый для сборки электроники. У него намагниченная основа, позволяющая прикреплять его к стенам, но для удержания его на стене необходимо закрутить анкерные болты." + +/obj/item/device/electronic_assembly/wallmount/heavy + desc = "Это корпус, используемый для сборки крупной электроники. У него намагниченная основа, позволяющая прикреплять его к стенам, но для удержания его на стене необходимо закрутить анкерные болты." + +/obj/item/device/electronic_assembly/wallmount/light + desc = "Это корпус, используемый для сборки мелкой электроники. У него намагниченная основа, позволяющая прикреплять его к стенам, но для удержания его на стене необходимо закрутить анкерные болты." diff --git a/mods/_rus/code/obj/modules_files/integrated_elecronics/integrated_circuit.dm b/mods/_rus/code/obj/modules_files/integrated_elecronics/integrated_circuit.dm new file mode 100644 index 0000000000000..530adef057cb0 --- /dev/null +++ b/mods/_rus/code/obj/modules_files/integrated_elecronics/integrated_circuit.dm @@ -0,0 +1,245 @@ +/obj/item/integrated_circuit + name = "интегральная микросхема" + desc = "Это крошечная микросхема! Однако, похоже, она мало что умеет." + +/obj/item/integrated_circuit/rename_component() + set name = "Rename Circuit" + set category = "Object" + set desc = "Rename your circuit, useful to stay organized." + + var/mob/M = usr + if(!check_interactivity(M)) + return + + var/input = sanitizeName(input(M, "Как вы хотите переименовать это?", "Переименовать", name) as null|text, allow_numbers = TRUE) + if(check_interactivity(M)) + if(!input) + input = name + to_chat(M, SPAN_NOTICE("Схема '[name]' теперь называется '[input]'.")) + displayed_name = input +/obj/item/integrated_circuit/interact(mob/user) + . = ..() + if(!check_interactivity(user)) + return + + var/window_height = 350 + var/window_width = 655 + + var/table_edge_width = "30%" + var/table_middle_width = "40%" + var/list/HTML = list() + HTML += "[src.displayed_name]" + HTML += "
" + HTML += "" + + if(assembly) + HTML += "\[Вернуться к сборке\]
" + + HTML += "\[Обновить\] | " + HTML += "\[Переименовать\] | " + HTML += "\[Скопировать референс\]" + if(assembly && removable) + HTML += " | \[Вынуть\]" + HTML += "
" + + HTML += "" + HTML += "" + HTML += "" + HTML += "" + HTML += "" + + var/column_width = 3 + var/row_height = max(LAZYLEN(inputs), LAZYLEN(outputs), 1) + + for(var/i = 1 to row_height) + HTML += "" + for(var/j = 1 to column_width) + var/datum/integrated_io/io = null + var/words = list() + var/height = 1 + switch(j) + if(1) + io = get_pin_ref(IC_INPUT, i) + if(io) + words += "[io.display_pin_type()] [io.name] \ + [io.display_data(io.data)]
" + if(length(io.linked)) + for(var/k in 1 to length(io.linked)) + var/datum/integrated_io/linked = io.linked[k] + words += "[linked] \ + @ [linked.holder.displayed_name]
" + + if(LAZYLEN(outputs) > LAZYLEN(inputs)) + height = 1 + if(2) + if(i == 1) + words += "[src.displayed_name]
[src.name != src.displayed_name ? "([src.name])":""]
[src.desc]" + height = row_height + else + continue + if(3) + io = get_pin_ref(IC_OUTPUT, i) + if(io) + words += "[io.display_pin_type()] [io.name] \ + [io.display_data(io.data)]
" + if(length(io.linked)) + for(var/k in 1 to length(io.linked)) + var/datum/integrated_io/linked = io.linked[k] + words += "[linked] \ + @ [linked.holder.displayed_name]
" + + if(LAZYLEN(inputs) > LAZYLEN(outputs)) + height = 1 + HTML += "" + HTML += "" + + for(var/i in 1 to LAZYLEN(activators)) + var/datum/integrated_io/io = activators[i] + var/words = list() + + words += "[SPAN_COLOR("#ff0000", io)] " + words += "[SPAN_COLOR("#ff0000", io.data ? "\" : "\")]
" + if(length(io.linked)) + for(var/k in 1 to length(io.linked)) + var/datum/integrated_io/linked = io.linked[k] + words += "[SPAN_COLOR("#ff0000", linked)] \ + @ [SPAN_COLOR("#ff0000", linked.holder.displayed_name)]
" + + HTML += "" + HTML += "" + HTML += "" + + HTML += "
[jointext(words, null)]
[jointext(words, null)]
" + HTML += "
" + + HTML += "
[SPAN_COLOR("#0000aa", "Нагруженность: [complexity]")]" + HTML += "
[SPAN_COLOR("#0000aa", "Откат активации: [cooldown_per_use/10] сек")]" + if(ext_cooldown) + HTML += "
[SPAN_COLOR("#0000aa", "Откат внешних манипуляций: [ext_cooldown/10] сек")]" + if(power_draw_idle) + HTML += "
[SPAN_COLOR("#0000aa", "Потребление энергии: [power_draw_idle] Вт (В покое)")]" + if(power_draw_per_use) + HTML += "
[SPAN_COLOR("#0000aa", "Потребление энергии: [power_draw_per_use] Вт (В активном состоянии)")]" // Borgcode says that powercells' checked_use() takes joules as input. + HTML += "
[SPAN_COLOR("#0000aa", extended_desc)]" + + HTML += "" + var/HTML_merged = jointext(HTML, null) + if(assembly) + show_browser(user, HTML_merged, "window=assembly-\ref[assembly];size=[window_width]x[window_height];border=1;can_resize=1;can_close=1;can_minimize=1") + else + show_browser(user, HTML_merged, "window=circuit-\ref[src];size=[window_width]x[window_height];border=1;can_resize=1;can_close=1;can_minimize=1") + + onclose(user, "assembly-\ref[src.assembly]") + +/obj/item/device/integrated_circuit_printer/interact(mob/user) + if(!(in_range(src, user) || issilicon(user))) + return + + if(isnull(current_category)) + current_category = SScircuit.circuit_fabricator_recipe_list[1] + + //Preparing the browser + var/datum/browser/popup = new(user, "printernew", "Принтер интегральных цепей", 800, 630) // Set up the popup browser window + + var/list/HTML = list() + HTML += "

Принтер интегральных цепей


" + if(debug) + HTML += "

DEBUG PRINTER -- Infinite materials. Cloning available.

" + else + HTML += "Материалы: " + var/list/dat = list() + for(var/material in materials) + var/material/material_datum = SSmaterials.get_material_by_name(material) + dat += "[materials[material]]/[metal_max] [material_datum.display_name]" + HTML += jointext(dat, "; ") + HTML += ".

" + + if(config.allow_ic_printing || debug) + HTML += "Клонирование сборок: [can_clone ? (fast_clone ? "Мгновенное" : "Доступно") : "Недоступно"].
" + + HTML += "Доступные схемы: [upgraded || debug ? "Улучшенные":"Обычные"]." + if(!upgraded) + HTML += "
Зачеркнутые схемы означают, что принтер недостаточно модернизирован для создания данных схем." + + HTML += "
" + if((can_clone && config.allow_ic_printing) || debug) + HTML += "Здесь вы можете загрузить скрипт для вашей сборки.
" + if(!cloning) + HTML += " {Загрузить программу} " + else + HTML += " {Загрузить программу}" + if(!program) + HTML += " {[fast_clone ? "Печать" : "Начать печать"] сборки}" + else if(cloning) + HTML += " {Отменить печать}" + else + HTML += " {[fast_clone ? "Печать" : "Начать печать"] сборки}" + + HTML += "

" + HTML += "Категории:" + for(var/category in SScircuit.circuit_fabricator_recipe_list) + if(category != current_category) + HTML += " \[[category]\] " + else // Bold the button if it's already selected. + HTML += " \[[category]\] " + HTML += "
" + HTML += "

[current_category]

" + + var/list/current_list = SScircuit.circuit_fabricator_recipe_list[current_category] + for(var/path in current_list) + var/obj/O = path + var/can_build = TRUE + if(ispath(path, /obj/item/integrated_circuit)) + var/obj/item/integrated_circuit/IC = path + if((initial(IC.spawn_flags) & IC_SPAWN_RESEARCH) && (!(initial(IC.spawn_flags) & IC_SPAWN_DEFAULT)) && !upgraded) + can_build = FALSE + if(can_build) + HTML += "\[[initial(O.name)]\]: [initial(O.desc)]
" + else + HTML += "\[[initial(O.name)]\]: [initial(O.desc)]
" + + popup.set_content(JOINTEXT(HTML)) + popup.open() + +/obj/item/device/electronic_assembly/open_interact(mob/user) + var/total_part_size = return_total_size() + var/total_complexity = return_total_complexity() + var/list/HTML = list() + + HTML += "[name]" + + HTML += "\[Обновить\] | \[Переименовать\]
" + HTML += "[total_part_size]/[max_components] занимаемое пространство в сборке.
" + HTML += "[total_complexity]/[max_complexity] нагруженность сборки.
" + if(battery) + HTML += "[round(battery.charge, 0.1)]/[battery.maxcharge] ([round(battery.percent(), 0.1)]%) заряд батареи. \[Вынуть\]" + else + HTML += SPAN_DANGER("Батарея не обнаружена!") + + if(length(assembly_components)) + HTML += "

" + HTML += "Компоненты:
" + + var/start_index = ((components_per_page * interact_page) + 1) + for(var/i = start_index to min(length(assembly_components), start_index + (components_per_page - 1))) + var/obj/item/integrated_circuit/circuit = assembly_components[i] + HTML += "\[ [i] \] | " + HTML += "\[П\] | " + if(circuit.removable) + HTML += "\[-\] | " + else + HTML += "\[-\] | " + HTML += "[circuit.displayed_name]" + HTML += "
" + + if(length(assembly_components) > components_per_page) + HTML += "
\[" + for(var/i = 1 to ceil(length(assembly_components)/components_per_page)) + if((i-1) == interact_page) + HTML += " [i]" + else + HTML += " [i]" + HTML += " \]" + + HTML += "" + show_browser(user, jointext(HTML, null), "window=assembly-\ref[src];size=655x350;border=1;can_resize=1;can_close=1;can_minimize=1") diff --git a/mods/_rus/code/obj/modules_files/integrated_elecronics/misc.dm b/mods/_rus/code/obj/modules_files/integrated_elecronics/misc.dm new file mode 100644 index 0000000000000..fc3cf7938d74f --- /dev/null +++ b/mods/_rus/code/obj/modules_files/integrated_elecronics/misc.dm @@ -0,0 +1,706 @@ +/obj/prefab/hand_teleporter + name = "ручной телепортатор" + +/obj/item/device/integrated_electronics/analyzer + name = "анализатор схем" + desc = "Этот инструмент может сканировать сборку и генерировать код, необходимый для ее воссоздания на принтере схем." + +/obj/item/device/integrated_electronics/debugger + name = "отладчик схем" + desc = "Этот небольшой инструмент позволяет при работе с пользовательской техникой напрямую задавать данные на определенный вывод, что удобно для записи настроек в конкретные микросхемы или для отладки. Он также может подавать импульсы на контакты активации." + +/obj/item/device/integrated_electronics/detailer + name = "детализатор корпусов" + desc = "Комбинированный автокраситель и флеш-анодировщик, предназначенный для придания электронным узлам цветного, износостойкого покрытия." + +/obj/item/device/integrated_circuit_printer + name = "принтер интегральных цепей" + desc = "Портативная машина, предназначенная для печати крошечных модульных схем из металла." + +/obj/item/disk/integrated_circuit/upgrade + name = "диск для модернизации принтера интегральных цепей" + desc = "Установите этот диск в ваш принтер интегральных цепей для его усовершенствования." + +/obj/item/disk/integrated_circuit/upgrade/advanced + name = "диск для модернизации принтера интегральных цепей - расширенные возможности" + desc = "Установите этот диск в принтер интегральных цепей для его усовершенствования. Этот диск добавляет в принтер новые, усовершенствованные конструкции." + +/obj/item/disk/integrated_circuit/upgrade/clone + name = "диск обновления принтера интегральных цепей - мгновенное клонирование" + desc = "Установите этот диск в ваш принтер интегральных цепей для его усовершенствования. Он позволяет принтеру мгновенно дублировать сборки." + +/obj/item/device/integrated_electronics/wirer + name = "электронный паяльник цепей" + desc = "Это небольшой электронный инструмент, включающий в себя моток проводов, электрический паяльник, кусачки и многое другое в одном корпусе. Используемые провода обычно полезны для небольшой электроники, такой как печатные платы и макетные платы, в отличие от более крупных проводов, используемых для питания или передачи данных." + +/obj/item/integrated_circuit/passive/power + desc = "Делает штуки питания." + category_text = "Пассивное питание" + +/obj/item/integrated_circuit/passive/power/solar_cell + desc = "Это очень маленькая солнечная батарея, обычно используемая в калькуляторах." + extended_desc = "При оптимальном освещении этот элемент вырабатывает мощность 1 Вт. При меньшем освещении генерируется меньше энергии." + +/obj/item/integrated_circuit/passive/power/starter + desc = "Эта маленькая схема будет посылать импульс сразу после включения устройства или при восстановлении питания." + +/obj/item/integrated_circuit/passive/power/relay + desc = "Загадочное на первый взгляд устройство, которое подключается к ближайшим APC по беспроводной связи и получает от них энергию." + extended_desc = "Реле потребляет 50 Вт энергии от APC, находящегося в одной комнате с ним, до тех пор, пока у него остается заряд. Он всегда будет потреблять \ + из канала питания \"оборудование\"." + +/obj/item/integrated_circuit/passive/power/relay/large + desc = "Загадочное на первый взгляд устройство, подключающееся к близлежащим APC по беспроводной связи и получающее от них энергию, теперь в промышленных размерах!" + extended_desc = "Реле вытягивает 2 кВт энергии из APC, находящегося в одной комнате с ним, пока у него остается заряд. Он всегда будет отводить \ + из канала питания \"оборудование\"." + +/obj/item/integrated_circuit/passive/power/chemical_cell + desc = "Производит электричество из химических веществ." + extended_desc = "Это фактически внутренний стакан. Он потребляет и производит энергию из форона, сварочного топлива, углерода,\ + этанола, питательных веществ и крови в порядке убывания эффективности. Он будет потреблять топливо только в том случае, если батарея может взять больше энергии." + +/obj/item/integrated_circuit/input/card_reader + desc = "Схема, которая может считывать с ID-карты зарегистрированное имя, назначение и строку passkey." + +/obj/item/integrated_circuit/output/access_displayer + desc = "Транслирует доступ для вашей сборки по passkey." + extended_desc = "Пригодится для перемещения дронов через шлюзы." + +/obj/item/integrated_circuit/arithmetic/addition + desc = "Эта схема может складывать числа." + extended_desc = "Порядок вычислений следующий: результат = ((((A + B) + C) + D) .... ) и так далее, пока не будут суммированы все выходы. Нулевые выводы игнорируются." + +/obj/item/integrated_circuit/arithmetic/subtraction + desc = "Эта схема может вычитать числа." + extended_desc = "Порядок вычислений следующий: результат = ((((A - B) - C) - D) .... ) и так далее, пока не будут вычтены все выходы. Нулевые выводы игнорируются. Вывод A должен быть числом, иначе схема не будет работать." + +/obj/item/integrated_circuit/arithmetic/multiplication + desc = "Эта схема может перемножать числа." + extended_desc = "Порядок вычислений следующий: результат = ((((A * B) * C) * D) ... ) и так далее, пока все выходы не будут перемножены. Нулевые выводы игнорируются. Контакт A должен быть числом, иначе схема не будет работать." + +/obj/item/integrated_circuit/arithmetic/division + desc = "Эта схема может делить числа. Даже не думайте пытаться делить на ноль!" + extended_desc = "Порядок вычислений следующий: результат = ((((A / B) / C) / D) ... ) и так далее, пока не будут разделены все выходы. Нулевые выводы и выводы, содержащие 0, игнорируются. Вывод A должен быть числом, иначе схема не будет работать." + +/obj/item/integrated_circuit/arithmetic/exponent + desc = "Выводит A в мощность B." + +/obj/item/integrated_circuit/arithmetic/sign + desc = "Эта схема позволяет определить, является ли число положительным, отрицательным или нулевым." + extended_desc = "Выдает 1, -1 или 0, в зависимости от того, является ли A положительным числом, отрицательным числом или нулем соответственно." + +/obj/item/integrated_circuit/arithmetic/round + desc = "Округляет A до ближайшего B, кратного A." + extended_desc = "Если B не задано как число, то вместо него будет выведено пол A." + +/obj/item/integrated_circuit/arithmetic/absolute + desc = "Выводит неотрицательную версию введенного числа. Это также можно считать его расстоянием от нуля." + +/obj/item/integrated_circuit/arithmetic/average + desc = "Эта схема имеет среднее качество. Она будет вычислять среднее значение чисел, которые вы ей зададите." + extended_desc = "Обратите внимание, что нулевые выводы игнорируются, в то время как вывод, содержащий 0, включается в расчет среднего значения." + +/obj/item/integrated_circuit/arithmetic/pi + desc = "Не рекомендуется для приготовления пищи. При получении импульса выдает '3.14159'." + +/obj/item/integrated_circuit/arithmetic/random + desc = "Выдается случайное (целое) число между значениями A и B включительно." + extended_desc = "\"Inclusive\" означает, что верхняя граница включена в диапазон чисел, например, L = 1 и H = 3 допускает выход 1, 2 или 3. То, что H является более высоким числом, не является строгим требованием." + +/obj/item/integrated_circuit/arithmetic/square_root + desc = "Здесь выводится квадратный корень из введенного числа." + +/obj/item/integrated_circuit/arithmetic/modulo + desc = "Получает остаток от A / B." + +/obj/item/integrated_circuit/arithmetic/max + desc = "Эта цепь посылает наибольшее число." + extended_desc = "Выдается наибольшее число. Нуль игнорируется." + +/obj/item/integrated_circuit/arithmetic/max/min + desc = "Эта схема выводит наименьшее число." + extended_desc = "Выдается наименьшее число. Нуль игнорируется. Если число не найдено, выдается 0." + +/obj/item/integrated_circuit/converter/num2text + desc = "Эта схема может преобразовывать числовую переменную в строку." + extended_desc = "Из-за ограничений схемы переменные null/false будут выдавать строку '0'." + +/obj/item/integrated_circuit/converter/text2num + desc = "Эта схема может преобразовывать строковую переменную в число." + +/obj/item/integrated_circuit/converter/ref2text + desc = "Эта схема может преобразовать ссылку на что-то другое в строку, в частности, в имя этой ссылки." + +/obj/item/integrated_circuit/converter/refcode + desc = "Эта схема может кодировать ссылку в строку, которая затем может быть считана схемой декодера ссылок." + +/obj/item/integrated_circuit/converter/refdecode + desc = "Эта схема может преобразовывать закодированную ссылку в реальную ссылку." + +/obj/item/integrated_circuit/converter/lowercase + desc = "Эта схема приведет к тому, что строка будет выводиться в нижнем регистре." + +/obj/item/integrated_circuit/converter/uppercase + desc = "ЭТО ПРИВЕДЕТ К ТОМУ, ЧТО СТРОКА БУДЕТ ВЫВОДИТЬСЯ В ВЕРХНЕМ РЕГИСТРЕ." + +/obj/item/integrated_circuit/converter/concatenator + desc = "С его помощью можно соединить до 8 строк вместе, чтобы получить одну большую строку." + +/obj/item/integrated_circuit/converter/concatenator/small + desc = "С его помощью можно соединить до 4 струн, чтобы получить одну большую струну." + +/obj/item/integrated_circuit/converter/concatenator/large + desc = "С его помощью можно соединить до 16 струн, чтобы получить одну очень большую струну." + +/obj/item/integrated_circuit/converter/separator + desc = "Разбивает одну строку на две в относительной точке разбиения." + extended_desc = "Эта схема делит заданную строку на две, основываясь на строке и значении индекса. Индекс разделяет строку после заданного индекса, включая пробелы. Так, \"a person\" с индексом \"3\" будет разделена на \"a p\" и \"erson\"." + +/obj/item/integrated_circuit/converter/indexer + desc = "Эта схема принимает строку и значение индекса, затем возвращает символ, найденный в строке по заданному индексу." + extended_desc = "Убедитесь, что индекс не длиннее и не короче длины строки. В противном случае схема вернет пустое значение." + +/obj/item/integrated_circuit/converter/findstring + desc = "Выводится позиция образца в строке или возвращается 0." + extended_desc = "Первый вывод - это строка, которую нужно проверить. Второй вывод - образец для поиска. Например, если набрать 'my wife has been caught on fire' с 'has' в качестве шаблона, то результатом будет позиция 9. Данная схема нечувствительна к регистру и не игнорирует пробелы." + +/obj/item/integrated_circuit/converter/stringlength + desc = "Эта схема возвращает количество символов в строке." + +/obj/item/integrated_circuit/converter/exploders + desc = "Эта схема разбивает одну строку на список строк." + extended_desc = "Эта схема разбивает заданную строку на список строк на основе строки и заданного разделителя. Например, \"eat this burger\" будет преобразовано в list('eat','this','burger'). Если оставить разделитель нулевым, то список будет состоять из каждого отдельного символа." + +/obj/item/integrated_circuit/converter/radians2degrees + desc = "Преобразует радианы в градусы." + +/obj/item/integrated_circuit/converter/degrees2radians + desc = "Преобразует градусы в радианы." + +/obj/item/integrated_circuit/converter/abs_to_rel_coords + desc = "С его помощью легко преобразовать абсолютные координаты в относительные." + +/obj/item/integrated_circuit/converter/hsv2hex + desc = "Эта схема позволяет преобразовать цвет HSV (Hue, Saturation, and Value) в шестнадцатеричный цвет RGB." + extended_desc = "Первый вывод управляет оттенком (0-359), второй - интенсивностью оттенка (0-255), третий - яркостью оттенка (0 - черный, 127 - обычный, 255 - белый)." + +/obj/item/integrated_circuit/converter/rgb2hex + desc = "Эта схема позволяет преобразовать цвет RGB (Red, Green, Blue) в шестнадцатеричный цвет RGB." + extended_desc = "Первый вывод управляет количеством красного цвета, второй - количеством зеленого, третий - количеством синего. Все они находятся в диапазоне 0-255." + +/obj/item/integrated_circuit/transfer + category_text = "Передача данных" + +/obj/item/integrated_circuit/transfer/multiplexer + desc = "Это то, что в бизнесе принято называть \"mux\", или селектор данных. Он перемещает данные с одного из выбранных входов на выход." + extended_desc = "Первый входной вывод используется для выбора того из других входных выводов, данные с которого будут перемещаться на выход. Если выбор входа выходит за пределы допустимого диапазона, то выход не выдается." + +/obj/item/integrated_circuit/transfer/demultiplexer + desc = "Это то, что в бизнесе принято называть \"демультиплексором\". Он перемещает данные со входа на один из выбранных выходов." + extended_desc = "Первый входной вывод используется для выбора того, на какой из выходных выводов будут поданы данные со второго входного вывода. Если выбор вывода находится вне допустимого диапазона, то вывод не производится." + +/obj/item/integrated_circuit/transfer/pulsedemultiplexer + desc = "Селекторный переключатель для выбора активируемого вывода по номеру." + extended_desc = "Первый входной вывод используется для выбора того, какой из выводов импульсного выхода будет активирован после включения схемы. Если выбор вывода находится вне допустимого диапазона, то вывод не выдается." + +/obj/item/integrated_circuit/transfer/wire_node + desc = "Просто проводной узел для облегчения подключения. Передает импульс с входа на выход." + +/obj/item/integrated_circuit/arithmetic + category_text = "Арифметика" + +/obj/item/integrated_circuit/converter + category_text = "Конвертеры" + +/obj/item/integrated_circuit/filter + category_text = "Фильтр" + +/obj/item/integrated_circuit/filter/ref + extended_desc = "Использует эвристику и сложные алгоритмы для сопоставления поступающих данных с параметрами фильтрации и периодически выдает как ложноположительные, так и отрицательные результаты." + +/obj/item/integrated_circuit/filter/ref/mob + desc = "Пропускать только ссылки, принадлежащие более сложным, ныне или ранее живым, но не обязательно биологическим объектам." + +/obj/item/integrated_circuit/filter/ref/mob/humanoid + desc = "Пропускать только ссылки, принадлежащие гуманоидам (живым или мертвым)." + +/obj/item/integrated_circuit/filter/ref/obj + desc = "Позволяет пропускать большинство видов ссылок, если они не считаются (когда-то) живыми сущностями." + +/obj/item/integrated_circuit/filter/ref/obj/item + desc = "Пропускать только рефссылки, принадлежащие незначительным предметам, обычно ручным." + +/obj/item/integrated_circuit/filter/ref/obj/machinery + desc = "Пропускать только рефссылки, относящиеся к машинам или сложным объектам, таким как компьютеры и консоли." + +/obj/item/integrated_circuit/filter/ref/object/structure + desc = "Пропускать только ссылки, относящиеся к крупным объектам и конструкциям, таким как шкафы и кровати." + +/obj/item/integrated_circuit/filter/ref/custom + desc = "Позволяет выполнять пользовательскую фильтрацию. Она будет сопоставлять тип с хранимой ссылкой." + +/obj/item/integrated_circuit/filter/string + desc = "Позволяет выполнять фильтрацию строк. Он сопоставляет строку с хранимой строкой." + extended_desc = "Сопоставляет поступающие данные со своими параметрами фильтрации и иногда выдает как ложные, так и отрицательные результаты." + +/obj/item/integrated_circuit/input + category_text = "Вход" + +/obj/item/integrated_circuit/input/button + desc = "Эта маленькая кнопка должна что-то делать, верно?" + +/obj/item/integrated_circuit/input/toggle_button + desc = "Она включает, выключает, включает, выключает..." + +/obj/item/integrated_circuit/input/numberpad + desc = "Эта небольшая цифровая панель позволяет ввести число в систему." + +/obj/item/integrated_circuit/input/textpad + desc = "Эта небольшая текстовая панель позволяет ввести строку в систему." + +/obj/item/integrated_circuit/input/colorpad + desc = "Эта небольшая цветовая панель позволяет ввести в систему шестнадцатеричный цвет." + +/obj/item/integrated_circuit/input/med_scanner + desc = "Очень маленькая версия обычного медицинского анализатора. С его помощью машина может отслеживать некоторые жизненно важные показатели." + +/obj/item/integrated_circuit/input/adv_med_scanner + desc = "Очень маленькая версия медицинского анализатора medbot. Позволяет узнать, насколько здоров человек. \ + Этот тип гораздо более точен и позволяет машине узнать о цели гораздо больше, чем обычный анализатор." + extended_desc = "Значения повреждений и боли - от 0 до 5, отмечая тяжесть повреждений." + +/obj/item/integrated_circuit/input/slime_scanner + desc = "Очень маленькая версия ксенобиоанализатора. Позволяет машине знать все необходимые свойства слизи. Выводимый список мутаций неассоциативен." + +/obj/item/integrated_circuit/input/plant_scanner + desc = "Очень маленькая версия анализатора растений. Позволяет машине знать все ценные параметры растений в лотках. \ + Он может сканировать только растения, но не семена или плоды." + +/obj/item/integrated_circuit/input/gene_scanner + desc = "Эта схема сканирует целевое растение на наличие признаков и генов реагентов. Выходные данные неассоциативны." + extended_desc = "Это позволяет машине сканировать растения в лотках на наличие генов реагентов и признаков. \ + Он может сканировать только растения, но не семена или плоды." + +/obj/item/integrated_circuit/input/examiner + desc = "Это маленькая система машинного зрения. Она может возвращать название, описание, расстояние, \ + относительные координаты, общее количество реагентов, максимальное количество реагентов, плотность и непрозрачность объекта." + +/obj/item/integrated_circuit/input/turfpoint + desc = "Эта схема получит тайл ref с указанными абсолютными координатами." + extended_desc = "Если машина не видит цель, она не сможет вычислить правильное направление.\ + Эта схема работает только внутри сборки." + +/obj/item/integrated_circuit/input/turfscan + desc = "Эта схема может анализировать содержимое отсканированного дерна и читать буквы на дерне." + +/obj/item/integrated_circuit/input/local_locator + desc = "Он необходим для некоторых устройств, которые требуют ссылки на цель для действия. Этот тип локализует только то,\ + что удерживает содержащий его аппарат." + +/obj/item/integrated_circuit/input/adjacent_locator + desc = "Это необходимо для некоторых устройств, которым требуется ссылка на цель для действия. Этот тип определяет местоположение только того,\ + находящееся на расстоянии до метра от устройства." + extended_desc = "Первый вывод требует ссылки на объект, который вы хотите, чтобы локатор обнаружил. Это означает, что он будет \ + \ a6 будет выдавать ссылки на близлежащие объекты, которые похожи. Если поблизости будет найдено более одного подходящего объекта,\ он выберет один из них случайным образом." + +/obj/item/integrated_circuit/input/advanced_locator_list + desc = "Это необходимо для некоторых устройств, требующих список имен для действия с целью. Этот тип определяет местонахождение чего-либо \ + стоящее в заданном радиусе до 8 метров. Вывод неассоциативный. На входе будут учитываться только ассоциативные ключи." + extended_desc = "Первый вывод требует списка типов объектов, которые вы хотите, чтобы локатор получил. Он найдет близлежащие объекты по имени и описанию,\ + а затем выдаст список всех найденных объектов, которые похожи на него. \ + Второй вывод - это радиус." + +/obj/item/integrated_circuit/input/advanced_locator + desc = "Это необходимо для некоторых устройств, которым требуется ссылка на цель для действия. Этот тип определяет местоположение чего-либо \ + стоящее в заданном радиусе до 8 метров." + extended_desc = "Первый вывод требует указания типа объекта, который вы хотите, чтобы локатор обнаружил. Это означает, что он будет \ + даст ссылки на близлежащие объекты, которые похожи. Если этот вывод является строкой, то локатор будет искать \ + объект, в названии и описании которого встречается нужный текст. Если поблизости найдено более одного подходящего объекта,\ то он выберет один из них случайным образом. Второй вывод - это радиус." + +/obj/item/integrated_circuit/input/signaler + desc = "С помощью этого устройства можно принимать сигналы от сигнализатора, что позволяет осуществлять дистанционное управление. Он также может посылать сигналы." + extended_desc = "При получении сигнала от другого сигнализатора, на контакте активатора \"получен сигнал\" будет подан импульс. \ + Два входных контакта предназначены для настройки параметров встроенного сигнализатора. Обратите внимание, что частота не должна иметь десятичной дроби, то есть по умолчанию частота выражается как 1457, а не 145,7. Чтобы послать сигнал, подайте импульс на контакт активатора 'send signal'." + +/obj/item/integrated_circuit/input/signaler/advanced + desc = "С его помощью можно принимать сигналы от сигнализатора, что позволяет осуществлять дистанционное управление. Кроме того, он может также посылать сигналы." + extended_desc = "При получении сигнала от другого сигнализатора с нужным id-тегом на контакте активатора 'on signal received' будет подан импульс, и командный выход обновится. \ + Два входных контакта предназначены для настройки параметров встроенного сигнализатора. Обратите внимание, что в частоте не должно быть десятичных дробей. \ + Это означает, что частота по умолчанию выражается как 1457, а не 145.7. Для отправки сигнала подайте импульс на вывод активатора 'send signal'. На выходе команды установите полученное сообщение." + +/obj/item/integrated_circuit/input/teleporter_locator + desc = "Эта схема позволяет определять местоположение и выбирать компьютеры телепортеров." + +/obj/item/integrated_circuit/input/gps + desc = "С ее помощью можно легко узнать положение машины, содержащей это устройство." + extended_desc = "Координаты, которые выдает GPS, являются абсолютными, а не относительными." + +/obj/item/integrated_circuit/input/microphone + desc = "Полезен для слежки за людьми или для машин с голосовым управлением." + extended_desc = "Это автоматически переводит большинство человеческих языков на язык Цюрихского соглашения. \ + Первый контакт активации всегда подается, когда схема слышит чей-то разговор, а второй \ + срабатывает только в случае успешного перевода другого языка." + +/obj/item/integrated_circuit/input/microphone/modem + extended_desc = "Микрофон, совмещенный с переделанной схемой факсимильного аппарата, переводит кодированный аудиоязык, используемый некоторыми синтетиками, в ZAC." + +/obj/item/integrated_circuit/input/microphone/exo + extended_desc = "Микрофон с ксенолингвистической базой данных для облегчения миссий EXO со смешанными видами. Он переводит наиболее распространенные диалекты скреллиан и унатхи на язык ZAC." + +/obj/item/integrated_circuit/input/microphone/fringe + extended_desc = "К этому микрофону не прилагается никакой документации." + +/obj/item/integrated_circuit/input/sensor + desc = "Сканирует и получает информацию о любых объектах или лицах, находящихся рядом с вами. Все, что вам нужно сделать, это поднести аппарат к их лицу." + extended_desc = "Если параметр 'ignore storage' установлен в true, датчик будет игнорировать сканирование различных контейнеров для хранения, например рюкзаков." + +/obj/item/integrated_circuit/input/sensor/ranged + desc = "Сканирует и получает ссылку на любые объекты или людей в радиусе действия. Все, что нужно сделать, это направить аппарат на цель." + extended_desc = "Если пин 'ignore storage' установлен в true, датчик будет игнорировать сканирование различных контейнеров для хранения, например рюкзаков." + +/obj/item/integrated_circuit/input/obj_scanner + desc = "Сканирует и получает ссылку на любые объекты, используемые на сборке." + extended_desc = "Если пин 'put down' установлен в true, сборка возьмет отсканированный объект из ваших рук в свое местоположение. \ + Используется для взаимодействия с граббером. Сканер работает только при использовании намерения помощи." + +/obj/item/integrated_circuit/input/internalbm + desc = "Эта схема контролирует уровень заряда внутренней батареи." + extended_desc = "Эта схема по запросу выдает значения заряда, максимального заряда и текущий процент заряда внутренней батареи." + +/obj/item/integrated_circuit/input/externalbm + desc = "С ее помощью можно считывать состояние батареи любого устройства, находящегося в поле зрения." + extended_desc = "Эта схема позволяет узнать заряд, максимальный заряд и текущее процентное значение для любого устройства или батареи, находящейся в поле зрения." + +/obj/item/integrated_circuit/input/matscan + desc = "Этот специальный модуль предназначен для получения информации о контейнерах с материалами различных станков,\ + таких как ОРМ, токарные станки и т.д." + +/obj/item/integrated_circuit/input/atmospheric_analyzer + desc = "Миниатюрный анализатор, который может сканировать все, что содержит газы. Для сканирования воздуха вокруг сборки оставьте значение NULL." + extended_desc = "n-й элемент количества газа - это количество молей n-го газа в списке газов. Давление - в кПа, температура - в Кельвинах. Из-за программных ограничений при сканировании объекта, не содержащего газ, вместо него будет возвращен воздух вокруг него." + +/obj/item/integrated_circuit/input/data_card_reader + desc = "Микросхема, которая может читать с карт данных и записывать на них данные." + extended_desc = "Установка булевой опции \"режим записи\" в true приведет к тому, что все карты данных, используемые в данной сборке, заменятсуществующие на них строки функций и данных на заданные строки, а если установить значение false, то при использовании карты данных на сборкестроки функций и данных, хранящиеся на карте, будут записываться на выходные контакты." + +/obj/item/integrated_circuit/lists + category_text = "Списки" + +/obj/item/integrated_circuit/lists/pick + desc = "Эта схема выбирает случайный элемент из входного списка и выводит этот элемент." + extended_desc = "Входной список не изменяется." + +/obj/item/integrated_circuit/lists/append + desc = "Эта схема добавляет элемент в список." + extended_desc = "Новый элемент всегда будет находиться в нижней части списка." + +/obj/item/integrated_circuit/lists/search + desc = "Эта схема получит индексное расположение нужного элемента в списке." + extended_desc = "Поиск начнется с позиции 1 и вернет первую совпадающую позицию." + +/obj/item/integrated_circuit/lists/filter + desc = "Эта схема ищет в списке все, что соответствует нужному элементу (элементам), и выдает два списка: \ + один, содержащий только совпадающие элементы, и один, в котором совпадающие элементы отфильтрованы." + extended_desc = "Образец принимает списки. Если совпадения не найдены, исходный список отправляется на выход 1." + +/obj/item/integrated_circuit/lists/listset + desc = "Эта схема удаляет из списка все дублирующиеся записи." + extended_desc = "Если дубликатов нет, то список на выходе будет неизменным." + +/obj/item/integrated_circuit/lists/at + desc = "Эта схема выбирает элемент из списка по входному индексу." + extended_desc = "Если по заданному индексу нет элемента, то результатом будет null." + +/obj/item/integrated_circuit/lists/delete + desc = "Эта схема удалит элемент из списка по индексу." + extended_desc = "Если по данному индексу нет элемента, то список результатов не изменится." + +/obj/item/integrated_circuit/lists/write + desc = "Эта схема записывает элемент в список в заданном месте индекса." + extended_desc = "Если в данном месте индекса нет элемента, то будет выведен тот же список, что и раньше." + +/obj/item/integrated_circuit/lists/len + desc = "Эта схема возвращает длину списка." + +/obj/item/integrated_circuit/lists/jointext + desc = "Эта схема объединит два списка в один и выведет его в виде строки." + extended_desc = "При настройках по умолчанию весь список будет закодирован в строку." + +/obj/item/integrated_circuit/lists/constructor + desc = "Эта схема построит список из шестнадцати входных значений." + +/obj/item/integrated_circuit/lists/constructor/small + desc = "Эта схема построит список из четырех входных значений." + +/obj/item/integrated_circuit/lists/constructor/medium + desc = "Эта схема построит список из восьми входных значений." + +/obj/item/integrated_circuit/lists/deconstructor + desc = "Эта схема запишет первые шестнадцать записей входного списка, начиная с индекса, в выходные значения." + +/obj/item/integrated_circuit/lists/deconstructor/small + desc = "Эта схема запишет в выходные значения первые четыре записи своего входного списка, начиная с индекса." + +/obj/item/integrated_circuit/lists/deconstructor/medium + desc = "Эта схема запишет в выходные значения первые восемь записей своего входного списка, начиная с индекса." + +/obj/item/integrated_circuit/logic + desc = "Эта маленькая микросхема решит за вас!" + extended_desc = "Логические схемы воспринимают нуль, 0 и строковое значение как FALSE, а все остальное - как TRUE." + category_text = "Логика" + +/obj/item/integrated_circuit/logic/binary/equals + desc = "Этот гейт сравнивает два значения и выдает TRUE, если оба значения одинаковы." + +/obj/item/integrated_circuit/logic/binary/jklatch + desc = "Этот гейт представляет собой синхронизированную JK-защелку." + +/obj/item/integrated_circuit/logic/binary/rslatch + desc = "Этот затвор является синхронизированной RS-защелкой. Если оба значения R и S истинны, то его состояние не изменится." + +/obj/item/integrated_circuit/logic/binary/gdlatch + desc = "Этот затвор представляет собой синхронизированную стробируемую D-защелку." + +/obj/item/integrated_circuit/logic/binary/not_equals + desc = "Этот вентиль сравнивает два значения и выдает TRUE, если оба значения различны." + +/obj/item/integrated_circuit/logic/binary/and + desc = "Этот вентиль выдает значение TRUE, если оба входа имеют значение true." + +/obj/item/integrated_circuit/logic/binary/nand + desc = "Этот вентиль будет выдавать FALSE только в том случае, если оба входа имеют значение true." + +/obj/item/integrated_circuit/logic/binary/or + desc = "Этот гейт выдает TRUE, если один из входов имеет значение true." + +/obj/item/integrated_circuit/logic/binary/xor + desc = "Этот вентиль выдает TRUE, если только один из входов имеет значение true." + +/obj/item/integrated_circuit/logic/binary/less_than + desc = "Этот вентиль выдает значение TRUE, если первый вход меньше второго." + +/obj/item/integrated_circuit/logic/binary/less_than_or_equal + desc = "Выводится значение TRUE, если первый вход меньше или равен второму входу." + +/obj/item/integrated_circuit/logic/binary/greater_than + desc = "Будет выведено TRUE, если первый вход больше второго." + +/obj/item/integrated_circuit/logic/binary/greater_than_or_equal + desc = "Выводится TRUE, если первый вход больше или равен второму." + +/obj/item/integrated_circuit/logic/unary/not + desc = "Этот вентиль инвертирует то, что подается на его вход." + +/obj/item/integrated_circuit/manipulation + category_text = "Манипуляции" + +/obj/item/integrated_circuit/manipulation/weapon_firing + desc = "Эта несколько сложная система позволяет вставлять оружие, направлять его на позицию и дистанционно вести огонь." + extended_desc = "В механизм стрельбы можно вставить любое энергетическое оружие. На первом и втором входах должны быть числа, соответствующие координатам, по которым пушка будет стрелять относительно самой машины. Активатор 'fire' заставит механизм попытаться выстрелить из оружия по координатам, если это возможно. Режим будет переключаться между летальным (TRUE) или оглушающим (FALSE) режимами. При этом используется внутренняя батарея самого оружия, а не сборка. Если вы хотите стрелять из оружия, пока схема находится в руках, вам нужно использовать сборку, которая является оружием." + +/obj/item/integrated_circuit/manipulation/locomotion + desc = "Это позволяет машине двигаться в заданном направлении." + extended_desc = "Схема принимает число 'dir' в качестве направления движения. При подаче импульса на контакт активатора 'step towards dir' машина перемещается на один шаг в этом направлении, при условии, что она не удерживается или не закреплена каким-либо образом. Следует отметить, что возможность перемещения зависит от типа узла, в котором находится данная схема; перемещаться могут только беспилотные узлы." + +/obj/item/integrated_circuit/manipulation/grenade + desc = "Этот контур позволяет присоединять большинство типов гранат и заряжать их по своему усмотрению." + extended_desc = "Время между взведением и детонацией ограничено от 1 до 12 секунд, но является необязательным. Если параметр не задан, не задан или задан числом меньше 1, то будет использоваться встроенное в гранату время. Осторожно: После взрыва прервать процесс невозможно!" + +/obj/item/integrated_circuit/manipulation/plant_module + desc = "Используется для выкорчевывания сорняков и сбора урожая/посадки в лотки." + extended_desc = "Схема принимает ссылку на гидропонный лоток или предмет на соседней плитке. Ввод режима (0-уборка урожая, 1-уборка сорняков, 2-уборка растений, 3-посадка семян) определяет действие. При сборе урожая выводится список собранных растений." + +/obj/item/integrated_circuit/manipulation/seed_extractor + desc = "Используется для извлечения семян из выращенной продукции." + extended_desc = "Схема принимает ссылку на растительный объект и извлекает из него семена, выводя результаты в список." + +/obj/item/integrated_circuit/manipulation/grabber + desc = "Схема с собственным инвентарем для предметов. Используется для захвата и хранения предметов." + extended_desc = "Эта цепь принимает ссылку на объект, который нужно захватить, и может хранить до 10 объектов. Режимы: 1 - захват, 0 - выброс первого объекта и -1 - выброс всех объектов. Если бросить что-то из инвентаря захватчика с помощью метателя, то захватчик соответствующим образом обновит свои выходы." + +/obj/item/integrated_circuit/manipulation/claw + desc = "Система когтей и тросов." + extended_desc = "Эта схема принимает ссылку на предмет, который нужно тянуть." + +/obj/item/integrated_circuit/manipulation/thrower + desc = "Компактная пусковая установка для метания предметов изнутри или с близлежащих плиток." + extended_desc = "На первом и втором входах должны быть числа, соответствующие координатам, в которые нужно бросать предметы относительно самой машины. Активатор 'fire' заставит механизм попытаться бросить предметы по этим координатам, если это возможно. Обратите внимание, что снаряд должен находиться внутри машины или на соседней плитке и быть среднего или меньшего размера. Механизм также должен быть оружием, если вы хотите бросить что-нибудь, пока механизм находится в руках." + +/obj/item/integrated_circuit/manipulation/bluespace_rift + desc = "Эта мощная схема может открывать разломы в другое реальное пространство через голубое пространство." + extended_desc = "Если на вход подана действующая консоль телепорта, то в качестве точки назначения будет использоваться выбранный ею телепортационный маяк, если нет - выбирается неопределенная точка назначения. Направление разлома - это кардинальное значение, определяющее, в каком направлении будет открыт разлом, относительно местного севера. При значении направления, равном 0, разлом будет открыт сверху сборки, а при любых других некардинальных значениях разлом будет открыт в текущем направлении сборки." + +/obj/item/integrated_circuit/manipulation/ai + desc = "Похожая по структуре на интеллект-карту, эта схема позволяет ИИ подавать импульсы на четыре различных активатора для управления цепью." + extended_desc = "Загрузить ИИ очень просто, достаточно вставить контейнер в слот устройства. Выгрузка происходит аналогичным образом: достаточно нажать на устройство, и оно должно выскочить (если это возможно)." + +/obj/item/integrated_circuit/manipulation/anchoring + desc = "Выпадающие анкерные болты, с помощью которых можно закрепить сборку на полу." + +/obj/item/integrated_circuit/manipulation/hatchlock + desc = "Замок с электронным управлением для люка технического обслуживания сборки." + extended_desc = "ПРЕДУПРЕЖДЕНИЕ: Если заблокировать люк, не имея схемы его повторного открытия, то открыть его снова будет невозможно!" + +/obj/item/integrated_circuit/memory + desc = "Эта крошечная микросхема может хранить одну порцию данных." + category_text = "Память" + +/obj/item/integrated_circuit/memory/tiny + desc = "Эта микросхема может хранить две порции данных." + +/obj/item/integrated_circuit/memory/medium + desc = "Эта схема может хранить четыре единицы данных." + +/obj/item/integrated_circuit/memory/large + desc = "Эта большая схема может хранить восемь единиц данных." + +/obj/item/integrated_circuit/memory/huge + desc = "Эта карта памяти может хранить до шестнадцати единиц данных." + +/obj/item/integrated_circuit/memory/constant + desc = "Эта крошечная микросхема может хранить один фрагмент данных, который невозможно перезаписать без разборки." + +/obj/item/integrated_circuit/output + category_text = "Выход" + +/obj/item/integrated_circuit/output/screen + extended_desc = "Используйте <br> для начала новой строки" + desc = "Принимает на вход данные любого типа и отображает их пользователю при проверке." + +/obj/item/integrated_circuit/output/screen/medium + desc = "Принимает на вход данные любого типа и отображает их пользователю при осмотре, а также соседним существам при подаче импульса." + +/obj/item/integrated_circuit/output/screen/large + desc = "Принимает на вход данные любого типа и отображает их пользователю при осмотре, а при подаче импульса - всем находящимся рядом существам." + +/obj/item/integrated_circuit/output/light + desc = "Основной светильник, который можно включать/выключать при подаче импульса." + +/obj/item/integrated_circuit/output/light/advanced + desc = "Светильник, который принимает шестнадцатеричное значение цвета и значение яркости и может включаться/выключаться при помощи импульсов." + +/obj/item/integrated_circuit/output/sound + desc = "К этому компоненту подключен миниатюрный динамик." + +/obj/item/integrated_circuit/output/sound/beeper + desc = "Принимает на вход название звука и при подаче импульса воспроизводит его. В этой схеме на выбор предлагаются различные звуковые сигналы, бумпы и жужжания." + +/obj/item/integrated_circuit/output/sound/beepsky + desc = "Принимает на вход название звука и при подаче импульса воспроизводит его. Эта схема похожа на те, что используются в секьюритронах." + +/obj/item/integrated_circuit/output/sound/mechanical + desc = "Принимает на вход название звука и при подаче импульса воспроизводит его. Эта схема имеет различные щелчки и клацанье для обратной связи при нажатии клавиш." + +/obj/item/integrated_circuit/output/sound/electronic + desc = "Принимает на вход название звука и при подаче импульса воспроизводит его. Эта схема воспроизводит различные звуки, похожие на звуки радиоприемников и других электронных устройств." + +/obj/item/integrated_circuit/output/text_to_speech + desc = "Принимает на вход любую строку и при подаче импульсов заставляет устройство произносить эту строку." + extended_desc = "Это устройство является более совершенным, чем обычная схема динамика, и способно преобразовать любой текст в речь." + +/obj/item/integrated_circuit/output/video_camera + desc = "Принимает строку в качестве имени, булево значение для определения того, включена ли она, и строку для привязки видеокамеры к сети." + extended_desc = "Установите строку сети камеры в любую из сетей, перечисленных в программе мониторинга камеры, например: First Deck, Engineering, Research, Thunderdome." + +/obj/item/integrated_circuit/output/led + desc = "RGB-светодиод. Принимает булево значение, и если булево значение равно 'true-equivalent', то при проверке светодиод будет отмечен как горящий." + extended_desc = "TRUE-эквивалентными значениями являются: Непустые строки, ненулевые числа и действительные ссылки." + +/obj/item/integrated_circuit/power + category_text = "Активное питание" + +/obj/item/integrated_circuit/power/transmitter + desc = "Позволяет беспроводным способом передавать электричество от аккумулятора сборки к соседней машине." + extended_desc = "Эта схема передает 5 кДж электроэнергии при каждом импульсе на вывод активатора. На входном выводе должна быть ссылка на машину, которой нужно передать электричество. Это может быть батарея или что-либо, содержащее батарею. Машина может находиться как внутри сборки, так и рядом с ней. Энергия поступает от энергоячейки сборки. Если объект находится за пределами сборки, то часть энергии теряется из-за неэффективности." + +/obj/item/integrated_circuit/power/transmitter/large + desc = "Может передавать по беспроводной связи большое количество электроэнергии от аккумулятора сборки к ближайшей машине. Внимание: Не работайте в легковоспламеняющихся средах." + extended_desc = "Эта схема передает 20 кДж электричества при каждом импульсе на вывод активатора. На входном выводе должна быть указана машина, на которую нужно передать электричество. Это может быть батарея или что-либо, содержащее батарею. Устройство может находиться как внутри сборки, так и рядом с ней. Энергия подается от элемента питания сборки. Если объект находится за пределами сборки, то часть энергии теряется из-за неэффективности. Внимание! Не складывайте более 1 передатчика энергии, так как он становится менее эффективным для каждой другой цепи передачи энергии в своей сборке и других близлежащих сборках." + +/obj/item/integrated_circuit/smart + category_text = "Смарт" + +/obj/item/integrated_circuit/smart/basic_pathfinder + desc = "Эта сложная схема способна определить, в каком направлении находится заданная цель." + extended_desc = "Эта схема использует миниатюрную интегрированную камеру для определения местоположения цели. Если машина не видит цель, она не сможет вычислить правильное направление." + +/obj/item/integrated_circuit/smart/coord_basic_pathfinder + desc = "Эта сложная схема способна определить, в каком направлении находится заданная цель." + extended_desc = "Эта схема использует абсолютные координаты для определения местоположения цели. Если машина не видит цель, она не сможет вычислить правильное направление. Эта схема будет работать только внутри сборки." + +/obj/item/integrated_circuit/smart/advanced_pathfinder + desc = "Эта схема использует сложный процессор для дальнего поиска пути." + extended_desc = "Эта схема использует абсолютные координаты для поиска цели. Будет сгенерирован путь к цели с учетом препятствий, и обход всех препятствий. Для расчета правильного пути через шлюзы используется ключ, выдаваемый считывателем карт." + +/obj/item/integrated_circuit/time + desc = "Теперь вы можете собрать свои собственные часы!" + category_text = "Время" + +/obj/item/integrated_circuit/time/delay + desc = "Эта схема посылает импульсный сигнал после задержки, что очень важно для обеспечения правильного потока управления в сложной машине. Эта схема настроена на посылку импульса после задержки в две секунды." + +/obj/item/integrated_circuit/time/delay/five_sec + desc = "Эта схема посылает импульсный сигнал после задержки, что очень важно для обеспечения правильного потока управления в сложной машине. Эта схема настроена на посылку импульса после задержки в пять секунд." + +/obj/item/integrated_circuit/time/delay/one_sec + desc = "Эта схема посылает импульсный сигнал после задержки, что очень важно для обеспечения правильного потока управления в сложной машине. Эта схема настроена на посылку импульса после задержки в одну секунду." + +/obj/item/integrated_circuit/time/delay/half_sec + desc = "Эта схема посылает импульсный сигнал после задержки, что очень важно для обеспечения правильного потока управления в сложной машине. Эта схема настроена на посылку импульса после задержки в полсекунды." + +/obj/item/integrated_circuit/time/delay/tenth_sec + desc = "Эта схема посылает импульсный сигнал после задержки, что очень важно для обеспечения правильного потока управления в сложной машине. Эта схема настроена на отправку импульса после задержки в 1/10 секунды." + +/obj/item/integrated_circuit/time/delay/custom + desc = "Эта схема посылает импульсный сигнал после задержки, заданной в десятых долях секунды, что очень важно для обеспечения правильного потока управления в сложном механизме. Задержка этой схемы может быть настроена в диапазоне от 1/10 секунды до одного часа. Задержка обновляется при получении импульса." + extended_desc = "Задержка задается в десятых долях секунды. Например, 4 будет означать задержку в 0,4 секунды, а 15 - в 1,5 секунды." + +/obj/item/integrated_circuit/time/ticker + desc = "Эта схема посылает автоматический импульс каждые четыре секунды." + +/obj/item/integrated_circuit/time/ticker/custom + desc = "Эта усовершенствованная схема посылает автоматический импульс через каждый заданный интервал времени, определяемый в десятых долях секунды." + extended_desc = "Эта усовершенствованная схема посылает автоматический импульс через каждый заданный интервал времени, определяемый в десятых долях секунды. Например, если установить временной вывод в положение 4, то импульс будет посылаться каждые 0,4 секунды, или 15 - каждые 1,5 секунды." + +/obj/item/integrated_circuit/time/ticker/fast + desc = "Эта усовершенствованная схема посылает автоматический импульс каждые две секунды." + +/obj/item/integrated_circuit/time/ticker/slow + desc = "Эта простая схема посылает автоматический импульс каждые шесть секунд." + +/obj/item/integrated_circuit/time/clock + desc = "Показывает время в системе общего времени Соль." + +/obj/item/integrated_circuit/time/clock/station + desc = "Указывает время в терминах и с поправкой на местную станцию или планету." + +/obj/item/integrated_circuit/time/clock/bluespace + desc = "Указывает время в абсолютном времени блюспейс, не подверженное местному замедлению времени или другим явлениям." + +/obj/item/integrated_circuit/trig + category_text = "Тригонометрия" + extended_desc = "Вход и выход в градусах." + +/obj/item/integrated_circuit/trig/sine + desc = "Зло только в том случае, если у вас аллергия на математику. Принимает градус и выдает синус этого градуса." + +/obj/item/integrated_circuit/trig/cosine + desc = "Принимает степень и выводит косинус этой степени." + +/obj/item/integrated_circuit/trig/tangent + desc = "Берет степень и выводит тангенс этой степени." + +/obj/item/integrated_circuit/trig/cosecant + desc = "Берет степень и выводит косеканс этой степени." + +/obj/item/integrated_circuit/trig/secant + desc = "Принимает степень и выводит секанс этой степени." + +/obj/item/integrated_circuit/trig/cotangent + desc = "Берется степень и выводится котангенс этой степени." + +/obj/item/card/data/full_color + desc = "Пластиковая карта с магнитной полосой для простого и быстрого хранения и передачи данных. У этой карты окрашена вся поверхность." + +/obj/item/card/data/disk + desc = "Пластиковая карта с магнитной полосой для простого и быстрого хранения и передачи данных. Необъяснимо похожа на дискету." diff --git a/mods/_rus/code/proc/throw.dm b/mods/_rus/code/proc/throw.dm new file mode 100644 index 0000000000000..bcc88cccf46c2 --- /dev/null +++ b/mods/_rus/code/proc/throw.dm @@ -0,0 +1,69 @@ +/mob/throw_item(atom/target) + return + +/mob/living/carbon/throw_item(atom/target) + if (istype(loc, /obj/item/holder)) + var/obj/item/holder/H = loc + if (istype(H.loc, /obj/item/organ/internal/stomach)) + return + + src.throw_mode_off() + if(src.stat || !target) + return + if(target.type == /obj/screen) return + + var/atom/movable/item = src.get_active_hand() + + if(!item) return + + var/throw_range = item.throw_range + var/itemsize + if (istype(item, /obj/item/grab)) + var/obj/item/grab/G = item + item = G.throw_held() //throw the person instead of the grab + if(ismob(item)) + var/mob/M = item + + //limit throw range by relative mob size + throw_range = round(M.throw_range * min(src.mob_size/M.mob_size, 1)) + itemsize = round(M.mob_size/4) + var/turf/start_T = get_turf(loc) //Get the start and target tile for the descriptors + var/turf/end_T = get_turf(target) + if(start_T && end_T && usr == src) + var/start_T_descriptor = SPAN_COLOR("#6b5d00", "[start_T] \[[start_T.x],[start_T.y],[start_T.z]\] ([start_T.loc])") + var/end_T_descriptor = SPAN_COLOR("#6b4400", "[start_T] \[[end_T.x],[end_T.y],[end_T.z]\] ([end_T.loc])") + admin_attack_log(usr, M, "Threw the victim from [start_T_descriptor] to [end_T_descriptor].", "Was from [start_T_descriptor] to [end_T_descriptor].", "threw, from [start_T_descriptor] to [end_T_descriptor], ") + + else if (istype(item, /obj/item)) + var/obj/item/I = item + itemsize = I.w_class + + if(!unEquip(item)) + return + if(!item || !isturf(item.loc)) + return + + var/message = "[item] был брошен [src]." + var/skill_mod = 0.2 + if(!skill_check(SKILL_HAULING, min(round(itemsize - ITEM_SIZE_HUGE) + 2, SKILL_MAX))) + if(prob(30)) + Weaken(2) + message = "[src] barely manages to throw [item], and is knocked off-balance!" + else + skill_mod += 0.2 + + skill_mod += 0.8 * (get_skill_value(SKILL_HAULING) - SKILL_MIN)/(SKILL_MAX - SKILL_MIN) + throw_range *= skill_mod + + //actually throw it! + src.visible_message(SPAN_WARNING("[message]"), range = min(itemsize*2,world.view)) + + if(!src.lastarea) + src.lastarea = get_area(src.loc) + if(!check_space_footing()) + if(prob((itemsize * itemsize * 10) * MOB_MEDIUM/src.mob_size)) + var/direction = get_dir(target, src) + step(src,direction) + space_drift(direction) + + item.throw_at(target, throw_range, item.throw_speed * skill_mod, src)