From 06834f769363a4f97c07a06f51922a1b5be1e6ff Mon Sep 17 00:00:00 2001 From: KorolCharodey <153752869+KorolCharodey@users.noreply.github.com> Date: Wed, 25 Sep 2024 19:19:52 +0300 Subject: [PATCH] Document printer for auto complite documents fields. (#521) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Описание PR Был усовершенствован принтер документов. Время, имя и должность подставляются автоматически на соответствующие "якоря" внутри текста на бумаге(НУЖНО МЕНЯТЬ ЛОКАЛИЗАЦИЮ!!!!!!!!!! - а конкретно - раскидать там где нужно "якоря" под поля) в файле Server.LatheSystem - два вмешательства в двух местах которые никак не отразятся на работе протолатов(две проверки на наличие компонента принтера), вся логика происходит в DocumentPrinterSystem P.S. For another devs - -$time$,$name$,$job$- - "якоря" внутри формы документа(которые хранятся в .ftl) для обозначения позиции где должна находиться соответствующая информация. (Грамота - тестовый документ, на нём наглядно можно посмотреть результат работы скрипта) ![image](https://github.com/user-attachments/assets/e9379db0-43a7-4441-85a1-cf119e303bd7) **Чейнджлог** :cl: - add: Автозаполнение формы документов для принтера документов, на основе данных пользователя который запустил на печать документ, а конкретно полей: фио, должность, дата. --------- Co-authored-by: Korol_Charodey --- .../DocumentPrinter/DocumentPrinterSystem.cs | 113 ++++++ Content.Server/Lathe/LatheSystem.cs | 21 +- .../DocumentPrinterComponent.cs | 25 ++ .../Locale/ru-RU/corvax/paper/doc-printer.ftl | 358 +++++++++--------- .../Entities/Structures/Machines/printer.yml | 1 + 5 files changed, 337 insertions(+), 181 deletions(-) create mode 100644 Content.Server/ADT/DocumentPrinter/DocumentPrinterSystem.cs create mode 100644 Content.Shared/ADT/DocumentPrinter/DocumentPrinterComponent.cs diff --git a/Content.Server/ADT/DocumentPrinter/DocumentPrinterSystem.cs b/Content.Server/ADT/DocumentPrinter/DocumentPrinterSystem.cs new file mode 100644 index 00000000000..c27515a2514 --- /dev/null +++ b/Content.Server/ADT/DocumentPrinter/DocumentPrinterSystem.cs @@ -0,0 +1,113 @@ +using Content.Server.GameTicking; +using Content.Shared.Containers.ItemSlots; +using Content.Shared.Inventory; +using Content.Shared.Paper; +using Content.Shared.PDA; +using Content.Shared.Verbs; +using Robust.Shared.Audio.Systems; +using Robust.Shared.Timing; + +namespace Content.Shared.DocumentPrinter; +public sealed class DocumentPrinterSystem : EntitySystem +{ + const int TIME_YEAR_SPACE_STATION_ADT = 544; + + [Dependency] private readonly GameTicker _ticker = default!; + [Dependency] private readonly IGameTiming _gameTiming = default!; + [Dependency] private readonly SharedAudioSystem _audioSystem = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnPrinting); + SubscribeLocalEvent>(AddVerbOnOff); + } + + public void AddVerbOnOff(EntityUid uid, DocumentPrinterComponent component, GetVerbsEvent args) + { + AlternativeVerb verb = new(); + if (component.IsOnAutocomplite) + { + verb.Text = "Выкл."; + verb.Act = () => + { + component.IsOnAutocomplite = false; + _audioSystem.PlayPvs(component.SwitchSound, uid); + }; + } + else + { + verb.Text = "Вкл."; + verb.Act = () => + { + component.IsOnAutocomplite = true; + _audioSystem.PlayPvs(component.SwitchSound, uid); + }; + } + args.Verbs.Add(verb); + } + + public void OnPrinting(EntityUid uid, DocumentPrinterComponent component, PrintingDocumentEvent args) + { + //coef for YEAR 544 + if (!TryComp(args.Paper, out var paperComponent)) return; + if (!TryComp(args.Actor, out var inventoryComponent)) return; + + string text = paperComponent.Content; + + if (component.IsOnAutocomplite) + { + MetaDataComponent? meta_id = null; + PdaComponent? pda = null; + foreach (var slot in inventoryComponent.Containers) + { + if (slot.ID == "id")//for checking only PDA + { + TryComp(slot.ContainedEntity, out pda); + TryComp(slot.ContainedEntity, out var itemslots); + if (itemslots is not null) + TryComp(itemslots.Slots["PDA-id"].Item, out meta_id); + break; + } + } + DateTime time = DateTime.UtcNow.AddYears(TIME_YEAR_SPACE_STATION_ADT).AddHours(3); + text = text.Replace("$time$", $"{_gameTiming.CurTime.Subtract(_ticker.RoundStartTimeSpan).ToString("hh\\:mm\\:ss")} | {(time.Day < 10 ? $"0{time.Day}" : time.Day)}.{(time.Month < 10 ? $"0{time.Month}" : time.Month)}.{time.Year}"); + if (pda?.StationName is not null) + { + text = text.Replace("Station XX-000", pda.StationName); + } + if (meta_id is null) + { + text = text.Replace("$name$", ""); + text = text.Replace("$job$", ""); + } + else + { + int startIndex = meta_id.EntityName.IndexOf("("); int endIndex = meta_id.EntityName.IndexOf(")"); + if (startIndex.Equals(-1) || startIndex.Equals(-1)) + { + text = text.Replace("$name$", ""); + text = text.Replace("$job$", ""); + } + else + { + string id_card_word = "ID карта "; + text = text.Replace("$name$", meta_id.EntityName.Replace(id_card_word, "").Substring(0, startIndex - id_card_word.Length - 2)); + text = text.Replace("$job$", meta_id.EntityName.Substring(startIndex + 1, endIndex - startIndex - 1)); + } + } + paperComponent.Content = text; + // if (!TryComp(args.Actor, out var comp)) return; // was for test, STFU JUST LEAVE IT HERE + } + else + { + text = text.Replace("$time$", ""); + text = text.Replace("$name$", ""); + text = text.Replace("$job$", ""); + paperComponent.Content = text; + } + } +} + +//(C) Korol_Charodey diff --git a/Content.Server/Lathe/LatheSystem.cs b/Content.Server/Lathe/LatheSystem.cs index 18f246dcef4..c7a5c2917e7 100644 --- a/Content.Server/Lathe/LatheSystem.cs +++ b/Content.Server/Lathe/LatheSystem.cs @@ -29,6 +29,8 @@ using Robust.Shared.Audio.Systems; using Robust.Shared.Prototypes; using Robust.Shared.Timing; +using Content.Shared.DocumentPrinter; +using Microsoft.CodeAnalysis.CSharp.Syntax; namespace Content.Server.Lathe { @@ -178,7 +180,7 @@ public bool TryAddToQueue(EntityUid uid, LatheRecipePrototype recipe, LatheCompo foreach (var (mat, amount) in recipe.Materials) { var adjustedAmount = recipe.ApplyMaterialDiscount - ? (int) (-amount * component.MaterialUseMultiplier) + ? (int)(-amount * component.MaterialUseMultiplier) : -amount; _materialStorage.TryChangeMaterialAmount(uid, mat, adjustedAmount); @@ -223,12 +225,20 @@ public void FinishProducing(EntityUid uid, LatheComponent? comp = null, LathePro { if (!Resolve(uid, ref comp, ref prodComp, false)) return; - if (comp.CurrentRecipe != null) { if (comp.CurrentRecipe.Result is { } resultProto) { var result = Spawn(resultProto, Transform(uid).Coordinates); + //ADT tweak start + if (TryComp(uid, out var printerComponent)) + { + var tuple = printerComponent.Queue.First(); + if (tuple.Item2.Result.Equals(resultProto)) + RaiseLocalEvent(uid, new PrintingDocumentEvent(result, tuple.Item1)); + printerComponent.Queue.Remove(tuple); + } + //ADT tweak end _stack.TryMergeToContacts(result); } @@ -388,6 +398,13 @@ private void OnLatheQueueRecipeMessage(EntityUid uid, LatheComponent component, } } TryStartProducing(uid, component); + //ADT Tweak start + if (TryComp(uid, out var comp)) + { + if (recipe is not null) + comp.Queue.Add((args.Actor, recipe)); + } + //ADT tweak end UpdateUserInterfaceState(uid, component); } diff --git a/Content.Shared/ADT/DocumentPrinter/DocumentPrinterComponent.cs b/Content.Shared/ADT/DocumentPrinter/DocumentPrinterComponent.cs new file mode 100644 index 00000000000..dfbc4c0ff40 --- /dev/null +++ b/Content.Shared/ADT/DocumentPrinter/DocumentPrinterComponent.cs @@ -0,0 +1,25 @@ +using Content.Shared.Research.Prototypes; +using Robust.Shared.Audio; +using Robust.Shared.GameStates; + +namespace Content.Shared.DocumentPrinter; + +[RegisterComponent, NetworkedComponent] +public sealed partial class DocumentPrinterComponent : Component +{ + public List<(EntityUid, LatheRecipePrototype)> Queue { get; set; } = new(); + public SoundSpecifier SwitchSound = new SoundPathSpecifier("/Audio/Machines/machine_switch.ogg"); + public bool IsOnAutocomplite = true; +} + +public sealed class PrintingDocumentEvent : EntityEventArgs +{ + public EntityUid Paper { get; private set; } + public EntityUid Actor { get; private set; } + public PrintingDocumentEvent(EntityUid paper, EntityUid actor) + { + Paper = paper; + Actor = actor; + } +} +//(C) Korol_Charodey diff --git a/Resources/Locale/ru-RU/corvax/paper/doc-printer.ftl b/Resources/Locale/ru-RU/corvax/paper/doc-printer.ftl index 4fcabb64ec7..1a9438cef58 100644 --- a/Resources/Locale/ru-RU/corvax/paper/doc-printer.ftl +++ b/Resources/Locale/ru-RU/corvax/paper/doc-printer.ftl @@ -7,9 +7,9 @@ doc-text-printer-report-station = ============================================= ОТЧЁТ О СИТУАЦИИ ============================================= - Время от начала смены и дата: - Составитель документа: - Должность составителя: + Время от начала смены и дата: $time$ + Составитель документа: $name$ + Должность составителя: $job$ Цель: Статус выполнения цели: @@ -30,9 +30,9 @@ doc-text-printer-report-on-elimination-of-violations = ============================================= ОТЧЁТ ОБ УСТРАНЕНИИ НАРУШЕНИЙ ============================================= - Время от начала смены и дата: - Составитель документа: - Должность составителя: + Время от начала смены и дата: $time$ + Составитель документа: $name$ + Должность составителя: $job$ Я, (ФИО), в должности (полное наименование должности), отчитываюсь об устранении нарушений в работе, выявленных (ФИО), в должности (полное наименование должности). Предъявленные нарушения: @@ -52,9 +52,9 @@ doc-text-printer-report-department = ============================================= ОТЧЁТ О РАБОТЕ ОТДЕЛА ============================================= - Время от начала смены и дата: - Составитель документа: - Должность составителя: + Время от начала смены и дата: $time$ + Составитель документа: $name$ + Должность составителя: $job$ Количество сотрудников в отделе: Количество стажёров: @@ -74,9 +74,9 @@ doc-text-printer-report-employee-performance = ============================================= ОТЧЁТ О РАБОТЕ СОТРУДНИКА ============================================= - Время от начала смены и дата: - Составитель документа: - Должность составителя: + Время от начала смены и дата: $time$ + Составитель документа: $name$ + Должность составителя: $job$ Я, (ФИО), в должности (полное наименования должности), в ходе исполнения своих обязанностей выполнил положенный объём работ. Прошу принять результат работ Главой отдела (наименование отдела). Произведённые работы: @@ -92,9 +92,9 @@ doc-text-printer-report-on-the-chapters-meeting = ============================================= ОТЧЁТ О СОБРАНИИ ГЛАВ ============================================= - Время от начала смены и дата: - Составитель документа: - Должность составителя: + Время от начала смены и дата: $time$ + Составитель документа: $name$ + Должность составителя: $job$ Причина созыва Собрания Глав: Формулировка поставленного перед Главами вопроса: @@ -119,9 +119,9 @@ doc-text-printer-internal-affairs-agents-report = ============================================= ОТЧЁТ О ВНУТРЕННЕМ РАСЛЕДОВАНИИ ============================================= - Время от начала смены и дата: - Составитель документа: - Должность составителя: + Время от начала смены и дата: $time$ + Составитель документа: $name$ + Должность составителя: $job$ Я, (ФИО), в должности Агента Внутренних Дел, в ходе внутренней проверки, запрошенной (ФИО), в должности (полное наименование должности) по причине (причина проверки) выявил следующие нарушения: @@ -138,9 +138,9 @@ doc-text-printer-condition-report = ============================================= ОТЧЁТ О ТЕХНИЧЕСКОМ СОСТОЯНИИ ============================================= - Время от начала смены и дата: - Составитель документа: - Должность составителя: + Время от начала смены и дата: $time$ + Составитель документа: $name$ + Должность составителя: $job$ Была произведена проверка (название системы или объекта), результаты проверки были проанализированы, был проведён анализ причин возникновения нестабильной работы объекта. Причина поломки объекта: @@ -160,9 +160,9 @@ doc-text-printer-Report-study-object = ============================================= ОТЧЁТ ОБ ИЗУЧЕНИИ ОБЪЕКТА ============================================= - Время от начала смены и дата: - Составитель документа: - Должность составителя: + Время от начала смены и дата: $time$ + Составитель документа: $name$ + Должность составителя: $job$ Для проведения экспертизы было представлено (кто или какой отдел передал объект) приспособление с неизученными свойствами. В ходе экспертизы объект был изучен, были установлены свойства объекта и его видовая принадлежность. Внешнее описание объекта: @@ -180,9 +180,9 @@ doc-text-printer-experiment-report = ============================================= ОТЧЁТ ОБ ЭКСПЕРИМЕНТЕ ============================================= - Время от начала смены и дата: - Составитель документа: - Должность составителя: + Время от начала смены и дата: $time$ + Составитель документа: $name$ + Должность составителя: $job$ Внешнее описание объекта эксперимента: @@ -208,9 +208,9 @@ doc-text-printer-disposal-report = ============================================= ОТЧЁТ ОБ УТИЛИЗАЦИИ ============================================= - Время от начала смены и дата: - Составитель документа: - Должность составителя: + Время от начала смены и дата: $time$ + Составитель документа: $name$ + Должность составителя: $job$ Отделом Снабжения была произведена утилизация объектов при (метод утилизации). В ходе утилизации были обнаружены ценные предметы и вещи, ценные предметы были переданы в соответствующие отделы для их использования. Перечень найденных вещей: @@ -226,9 +226,9 @@ doc-text-printer-application-appointment-interim = ============================================= ЗАЯВЛЕНИЕ О НАЗНАЧЕНИИ НА ВРИО ============================================= - Время от начала смены и дата: - Составитель документа: - Должность составителя: + Время от начала смены и дата: $time$ + Составитель документа: $name$ + Должность составителя: $job$ Я, (ФИО), в должности (полное наименование должности), прошу согласовать моё назначение на должность временно исполняющего обязанности Главы (полное наименование отдела)/Капитана. При вступлении в должность обязуюсь следовать Стандартным Рабочим Процедурам и до появления Главы (полное наименование отдела)/Капитана с Центрального Командования обеспечивать порядок и управление отделом, обеспечивать сохранность вверяемых мне особо ценных предметов и снаряжения. @@ -245,9 +245,9 @@ doc-text-printer-application-employment = ============================================= ЗАЯВЛЕНИЕ О ТРУДОУСТРОЙСТВЕ ============================================= - Время от начала смены и дата: - Составитель документа: - Должность составителя: + Время от начала смены и дата: $time$ + Составитель документа: $name$ + Должность составителя: $job$ Я, (ФИО), в текущей должности (полное наименование должности), прошу назначить меня сотрудником (название отдела трудоустройства) в должности (полное наименование должности). Обязуюсь следовать Стандартным Рабочим Процедурам отдела. Обязуюсь сдать рабочее снаряжение и экипировку отдела при переводе. @@ -262,9 +262,9 @@ doc-text-printer-letter-resignation = ============================================= ЗАЯВЛЕНИЕ ОБ УВОЛЬНЕНИИ ============================================= - Время от начала смены и дата: - Составитель документа: - Должность составителя: + Время от начала смены и дата: $time$ + Составитель документа: $name$ + Должность составителя: $job$ Я, (ФИО), в текущей должности (полное наименование должности), хочу уволится с отдела (название отдела) по причине (причина). Обязуюсь заплатить штраф, установленный условиями расторжения срочного/бессрочного контракта, на станции Центрального Командования. @@ -279,9 +279,9 @@ doc-text-printer-application-access = ============================================= ЗАЯВЛЕНИЕ НА ПОЛУЧЕНИЕ ДОСТУПА ============================================= - Время от начала смены и дата: - Составитель документа: - Должность составителя: + Время от начала смены и дата: $time$ + Составитель документа: $name$ + Должность составителя: $job$ Я, (ФИО), в должности (полное наименование должности), прошу предоставить мне следующие доступы: @@ -298,9 +298,9 @@ doc-text-printer-application-equipment = ============================================= ЗАЯВЛЕНИЕ НА ПОЛУЧЕНИЕ СНАРЯЖЕНИЯ ============================================= - Время от начала смены и дата: - Составитель документа: - Должность составителя: + Время от начала смены и дата: $time$ + Составитель документа: $name$ + Должность составителя: $job$ Я, (ФИО), в должности (полное название должности), прошу выдать мне следующее снаряжение отдела (наименование отдела)/личное снаряжение: @@ -317,9 +317,9 @@ doc-text-printer-appeal = ============================================= ОБРАЩЕНИЕ ============================================= - Время от начала смены и дата: - Составитель документа: - Должность составителя: + Время от начала смены и дата: $time$ + Составитель документа: $name$ + Должность составителя: $job$ Я, (ФИО), в должности (полное наименование должности), прошу рассмотреть (ФИО), в должности (полное наименование должности) моё обращение. Содержание обращения: @@ -337,9 +337,9 @@ doc-text-printer-evacuation-shuttle-request = ============================================= ЗАПРОС ЭВАКУАЦИОННОГО ШАТТЛА ============================================= - Время от начала смены и дата: - Составитель документа: - Должность составителя: + Время от начала смены и дата: $time$ + Составитель документа: $name$ + Должность составителя: $job$ Уважаемое Центральное Командование! Я, (ФИО), в должности (полное наименование должности), прошу запустить протоколы эвакуации и прислать эвакуационный шаттл, приняв решение об окончании смены. Причина окончания смены: @@ -355,9 +355,9 @@ doc-text-printer-shuttle-registration-request = ============================================= ЗАПРОС РЕГИСТРАЦИИ ШАТТЛА ============================================= - Время от начала смены и дата: - Составитель документа: - Должность составителя: + Время от начала смены и дата: $time$ + Составитель документа: $name$ + Должность составителя: $job$ Я, (ФИО), в должности (полное наименование должности), прошу провести регистрацию шаттла в системе NanoTrasen для идентификации. Размеры шаттла: @@ -379,9 +379,9 @@ doc-text-printer-request-call-members-central-committee-dso = ============================================= ЗАПРОС НА ВЫЗОВ ЧЛЕНОВ ЦК, ДСО ============================================= - Время от начала смены и дата: - Составитель документа: - Должность составителя: + Время от начала смены и дата: $time$ + Составитель документа: $name$ + Должность составителя: $job$ Я, (ФИО), в должности (полное наименование должности), прошу рассмотреть возможность вызова на станцию: @@ -398,9 +398,9 @@ doc-text-printer-request-to-establish-threat-level = ============================================= ЗАПРОС УСТАНОВЛЕНИЯ УРОВНЯ УГРОЗЫ ============================================= - Время от начала смены и дата: - Составитель документа: - Должность составителя: + Время от начала смены и дата: $time$ + Составитель документа: $name$ + Должность составителя: $job$ Я, (ФИО), в должности (полное наименование должности), прошу рассмотреть возможность установления на станции уровня угрозы: @@ -417,9 +417,9 @@ doc-text-printer-request-change-salary = ============================================= ЗАПРОС НА ИЗМЕНЕНИЕ ЗАРАБОТНОЙ ПЛАТЫ ============================================= - Время от начала смены и дата: - Составитель документа: - Должность составителя: + Время от начала смены и дата: $time$ + Составитель документа: $name$ + Должность составителя: $job$ Я, (ФИО), в должности (полное наименование должности), прошу рассмотреть возможность повышения/понижения заработной платы на (сумма или количество процентов) сотруднику (ФИО) в должности (полное название должности)/отделу (наименование отдела)/текущей смене. Причина повышения/понижения заработной платы: @@ -435,9 +435,9 @@ doc-text-printer-request-for-non-listed-employment = ============================================= ЗАПРОС ВНЕПЕРЕЧНЕВОГО ТРУДОУСТРОЙСТВА ============================================= - Время от начала смены и дата: - Составитель документа: - Должность составителя: + Время от начала смены и дата: $time$ + Составитель документа: $name$ + Должность составителя: $job$ Я, (ФИО), в должности (полное наименование должности), прошу рассмотреть возможность принятия в рабочий штат текущей смены (ФИО) на внеперечневую должность. Полное наименование должности: @@ -461,9 +461,9 @@ doc-text-printer-request-for-promotion = ============================================= ЗАПРОС ПОВЫШЕНИЯ ============================================= - Время от начала смены и дата: - Составитель документа: - Должность составителя: + Время от начала смены и дата: $time$ + Составитель документа: $name$ + Должность составителя: $job$ Я, (ФИО), в должности (полное наименование должности), прошу рассмотреть возможность повышения (ФИО), в должности (полное наименование должности), согласно иерархии командования. Сотрудник получил необходимую для данной работы квалификацию. Запрашиваемая должность: @@ -483,9 +483,9 @@ doc-text-printer-request-documents = ============================================= ЗАПРОС ПРЕДОСТАВЛЕНИЯ ДОКУМЕНТОВ ============================================= - Время от начала смены и дата: - Составитель документа: - Должность составителя: + Время от начала смены и дата: $time$ + Составитель документа: $name$ + Должность составителя: $job$ Я, (ФИО), в должности Агента Внутренних Дел, прошу предоставить для проверки соответствия Корпоративному Закону копию/оригинал документов: @@ -500,9 +500,9 @@ doc-text-printer-request-euthanasia = ============================================= ЗАПРОС НА ПРОВЕДЕНИЕ ЭВТАНАЗИИ ============================================= - Время от начала смены и дата: - Составитель документа: - Должность составителя: + Время от начала смены и дата: $time$ + Составитель документа: $name$ + Должность составителя: $job$ Я, (ФИО), в должности (полное наименование должности), прошу содействие медицинского отдела в проведении эвтаназии в качестве врачебного лечения по причине (указать причину запроса). С последствиями данного решения ознакомлен, медицинским персоналом была установлена рациональность и гуманность данного решения. Претензий к к медицинскому отделу при соблюдении ими протоколов эвтаназии не имею. По окончании процедуры прошу утилизировать тело путём (способ утилизации) при наличии на это возможности. @@ -517,9 +517,9 @@ doc-text-printer-request-construction-work = ============================================= ЗАПРОС НА ПРОВЕДЕНИЕ СТРОИТЕЛЬНЫХ РАБОТ ============================================= - Время от начала смены и дата: - Составитель документа: - Должность составителя: + Время от начала смены и дата: $time$ + Составитель документа: $name$ + Должность составителя: $job$ Я, (ФИО), в должности (полное наименование должности), прошу провести строительные работы в (название отдела или объекта) по причине (причина запроса). Перечень строительных работ: @@ -535,9 +535,9 @@ doc-text-printer-request-modernization = ============================================= ЗАПРОС НА ПРОВЕДЕНИЕ МОДЕРНИЗАЦИИ ============================================= - Время от начала смены и дата: - Составитель документа: - Должность составителя: + Время от начала смены и дата: $time$ + Составитель документа: $name$ + Должность составителя: $job$ Я, (ФИО), в должности (полное наименование должности), прошу модернизировать приборы в (название отдела или объекта) по причине (причина запроса). Перечень модернизации: @@ -553,9 +553,9 @@ doc-text-printer-complaint-violation-labor-rules = ============================================= ЖАЛОБА НА НАРУШЕНИЕ ТРУДОВОГО ПОРЯДКА ============================================= - Время от начала смены и дата: - Составитель документа: - Должность составителя: + Время от начала смены и дата: $time$ + Составитель документа: $name$ + Должность составителя: $job$ Я, (ФИО), в должности (полное наименование должности), считаю, что в ходе работы отдела (наименование отдела) были допущены следующие нарушения: @@ -571,9 +571,9 @@ doc-text-printer-complaint-offense = ============================================= ЖАЛОБА НА ПРАВОНАРУШЕНИЕ ============================================= - Время от начала смены и дата: - Составитель документа: - Должность составителя: + Время от начала смены и дата: $time$ + Составитель документа: $name$ + Должность составителя: $job$ Я, (ФИО), в должности (полное наименование должности), считаю, что (ФИО), в должности (полное наименование должности), нарушил Корпоративный Закон, потому что (причина). Произошедшее с моей точки зрения: @@ -589,9 +589,9 @@ doc-text-printer-permission-equipment = ============================================= РАЗРЕШЕНИЕ НА ИСПОЛЬЗОВАНИЕ СНАРЯЖЕНИЯ ============================================= - Время от начала смены и дата: - Составитель документа: - Должность составителя: + Время от начала смены и дата: $time$ + Составитель документа: $name$ + Должность составителя: $job$ Я, (ФИО), в должности главы отдела (полное наименование отдела), разрешаю использовать (ФИО) в должности (полное наименование должности) следующее рабочее снаряжение отдела: @@ -606,9 +606,9 @@ doc-text-printer-permission-to-travel-in-case-of-threat= ============================================= РАЗРЕШЕНИЕ НА ПЕРЕДВИЖЕНИЕ ПРИ УГРОЗЕ ============================================= - Время от начала смены и дата: - Составитель документа: - Должность составителя: + Время от начала смены и дата: $time$ + Составитель документа: $name$ + Должность составителя: $job$ Я, (ФИО), в должности (полное наименование должности), разрешаю сотруднику (ФИО) в должности (полное наименование должности) передвижение по станции с целью выполнения им рабочих обязанностей. Уровни кодов угроз, при которых даётся данное разрешение: @@ -626,9 +626,9 @@ doc-text-printer-search-permission = ============================================= РАЗРЕШЕНИЕ НА ОБЫСК ============================================= - Время от начала смены и дата: - Составитель документа: - Должность составителя: + Время от начала смены и дата: $time$ + Составитель документа: $name$ + Должность составителя: $job$ Я, (ФИО), в должности (полное наименование должности), разрешаю произвести обыск (ФИО)/(полное наименование отдела), в должности (полное наименование должности). Причина обыска: @@ -644,9 +644,9 @@ doc-text-printer-permission-to-carry-weapons = ============================================= РАЗРЕШЕНИЕ НА НОШЕНИЕ ОРУЖИЯ ============================================= - Время от начала смены и дата: - Составитель документа: - Должность составителя: + Время от начала смены и дата: $time$ + Составитель документа: $name$ + Должность составителя: $job$ Я, (ФИО), в должности (полное наименование должности), разрешаю ношение оружия (ФИО), в должности (полное наименование должности), до тех пор, пока оно используется по назначению. В случае нарушения разрешение аннулируется, оружие изымается Службой Безопасности. Оружие и тип патронов к нему: @@ -666,9 +666,9 @@ doc-text-printer-prescription-drug-authorization = ============================================= РАЗРЕШЕНИЕ НА РЕЦЕПТУРНЫЙ ПРЕПАРАТ ============================================= - Время от начала смены и дата: - Составитель документа: - Должность составителя: + Время от начала смены и дата: $time$ + Составитель документа: $name$ + Должность составителя: $job$ Я, (ФИО), в должности (полное наименование должности), разрешаю хранение и использование рецептурного препарата или наркотического препарата "(полное наименование вещества)" пациенту (ФИО), в должности (полное наименование должности). Поставленный диагноз: @@ -686,9 +686,9 @@ doc-text-printer-permission-dispose-body = ============================================= РАЗРЕШЕНИЕ НА УТИЛИЗАЦИЮ ТЕЛА ============================================= - Время от начала смены и дата: - Составитель документа: - Должность составителя: + Время от начала смены и дата: $time$ + Составитель документа: $name$ + Должность составителя: $job$ Я, (ФИО), в должности (полное наименование должности), разрешаю утилизировать тело (ФИО), в должности (полное наименование должности) в связи с невозможностью его реанимации и клонирования. Способ утилизации: @@ -704,9 +704,9 @@ doc-text-printer-construction-permit = ============================================= РАЗРЕШЕНИЕ НА СТРОИТЕЛЬСТВО ============================================= - Время от начала смены и дата: - Составитель документа: - Должность составителя: + Время от начала смены и дата: $time$ + Составитель документа: $name$ + Должность составителя: $job$ Я, (ФИО), в должности (полное наименование должности), разрешаю произвести (ФИО), в должности (полное наименование должности), перепланировку части станции (указание места перепланировки) по причине (причина перепланировки). Согласованный объём перепланировки: @@ -722,9 +722,9 @@ doc-text-printer-permission-to-extend-marriage = ============================================= РАЗРЕШЕНИЕ НА РАСШИРЕНИЕ БРАКА ============================================= - Время от начала смены и дата: - Составитель документа: - Должность составителя: + Время от начала смены и дата: $time$ + Составитель документа: $name$ + Должность составителя: $job$ Я, (ФИО), в должности (полное наименование должности), даю своё разрешение на расширение брака, заключённого между: (ФИО), в должности (полное наименование должности) @@ -745,9 +745,9 @@ doc-text-printer-order-dismissal = ============================================= ПРИКАЗ ОБ УВОЛЬНЕНИИ ============================================= - Время от начала смены и дата: - Составитель документа: - Должность составителя: + Время от начала смены и дата: $time$ + Составитель документа: $name$ + Должность составителя: $job$ Я, (ФИО), в должности (полное наименование должности), приказываю уволить сотрудника (ФИО) отдела (наименование отдела) в должности (полное наименование должности увольняемого) по причине: @@ -762,9 +762,9 @@ doc-text-printer-order-deprivation-access = ============================================= ПРИКАЗ О ЛИШЕНИИ ДОСТУПА ============================================= - Время от начала смены и дата: - Составитель документа: - Должность составителя: + Время от начала смены и дата: $time$ + Составитель документа: $name$ + Должность составителя: $job$ Я, (ФИО), в должности (полное наименование должности), приказываю лишить сотрудника (ФИО) в должности (полное наименование должности) следующего доступа(-ов): @@ -779,9 +779,9 @@ doc-text-printer-order-encouragement = ============================================= ПРИКАЗ О ПООЩРЕНИИ ============================================= - Время от начала смены и дата: - Составитель документа: - Должность составителя: + Время от начала смены и дата: $time$ + Составитель документа: $name$ + Должность составителя: $job$ Я, (ФИО), в должности (полное наименование должности) награждаю (ФИО) в должности (полное наименование должности награждаемого) медалью/грамотой/памятной вещью/премией в размере (размер премии) за следующие заслуги: @@ -796,9 +796,9 @@ doc-text-printer-order-parole-prisoner = ============================================= ПРИКАЗ ОБ УДО ЗАКЛЮЧЕННОГО ============================================= - Время от начала смены и дата: - Составитель документа: - Должность составителя: + Время от начала смены и дата: $time$ + Составитель документа: $name$ + Должность составителя: $job$ Я, (ФИО), в должности (полное наименование должности), разрешаю освободить заключённого под стражу (ФИО) в бриг/пермабриг. После выдачи условно-досрочного заключения заключённому под стражу будет выдана гражданская профессия с обязательной работой до конца смены. Выдаваемая профессия: @@ -813,9 +813,9 @@ doc-text-printer-order-recognizing-rentience-creature = ============================================= ПРИКАЗ О ПРИЗНАНИИ РАЗУМНОСТИ СУЩЕСТВА ============================================= - Время от начала смены и дата: - Составитель документа: - Должность составителя: + Время от начала смены и дата: $time$ + Составитель документа: $name$ + Должность составителя: $job$ В ходе тестирования существа были выявлены признаки высшей мозговой деятельности и разумности данного существа, его способность мыслить, обучаться, понимание морали, наличие здравого смысла в поступках. Таким образом я, (ФИО), в должности (полное наименование должности), исходя из принципов равенства прав всех разумных существ, установленного ОПРС, признаю данное существо разумным. Внешний вид существа: @@ -834,9 +834,9 @@ doc-text-printer-order-medical-intervention = ============================================= РАСПОРЯЖЕНИЕ О МЕДИЦИНСКОМ ВМЕШАТЕЛЬСТВЕ ============================================= - Время от начала смены и дата: - Составитель документа: - Должность составителя: + Время от начала смены и дата: $time$ + Составитель документа: $name$ + Должность составителя: $job$ Я, (ФИО), в должности (полное наименование должности), распоряжаюсь провести медицинское вмешательство с целью (описание цели медицинского вмешательства), в отношении (ФИО) в должности (полное наименование должности). Основание для проведения операции: @@ -852,9 +852,9 @@ doc-text-printer-product-manufacturing-order = ============================================= ЗАКАЗ НА ПРОИЗВОДСТВО ПРОДУКТА ============================================= - Время от начала смены и дата: - Составитель документа: - Должность составителя: + Время от начала смены и дата: $time$ + Составитель документа: $name$ + Должность составителя: $job$ Я, (ФИО), в должности (полное наименование должности), прошу произвести продукцию отделом (наименование отдела). Перечень необходимых продуктов: @@ -872,9 +872,9 @@ doc-text-printer-order-purchase-resources-equipment = ============================================= ЗАКАЗ НА ЗАКУПКУ РЕСУРСОВ, СНАРЯЖЕНИЯ ============================================= - Время от начала смены и дата: - Составитель документа: - Должность составителя: + Время от начала смены и дата: $time$ + Составитель документа: $name$ + Должность составителя: $job$ Перечень товаров для заказа: @@ -893,9 +893,9 @@ doc-text-printer-ordering-special-equipment = ============================================= ЗАКАЗ СПЕЦИАЛЬНОГО СНАРЯЖЕНИЯ ============================================= - Время от начала смены и дата: - Составитель документа: - Должность составителя: + Время от начала смены и дата: $time$ + Составитель документа: $name$ + Должность составителя: $job$ Я, (ФИО), в должности (полное наименование должности), прошу предоставить специальное снаряжение станции от Центрального Командования. Перечень запрашиваемого снаряжения: @@ -913,9 +913,9 @@ doc-text-printer-order-purchase-weapons = ============================================= ЗАКАЗ НА ЗАКУПКУ ВООРУЖЕНИЯ ============================================= - Время от начала смены и дата: - Составитель документа: - Должность составителя: + Время от начала смены и дата: $time$ + Составитель документа: $name$ + Должность составителя: $job$ Я, (ФИО), в должности (полное наименование должности), произвожу заказ боевого оружия и (или) боевых приспособлений через отдел Снабжения. Причина заказа: @@ -931,9 +931,9 @@ doc-text-printer-certificate = ============================================= ГРАМОТА ============================================= - Время от начала смены и дата: - Составитель документа: - Должность составителя: + Время от начала смены и дата: $time$ + Составитель документа: $name$ + Должность составителя: $job$ (ФИО), в должности (полное наименование должности) награждается грамотой за следующие заслуги: @@ -948,9 +948,9 @@ doc-text-printer-certificate-advanced-training = ============================================= СВИДЕТЕЛЬСТВО О ПОВЫШЕНИИ КВАЛИФИКАЦИИ ============================================= - Время от начала смены и дата: - Составитель документа: - Должность составителя: + Время от начала смены и дата: $time$ + Составитель документа: $name$ + Должность составителя: $job$ Я, (ФИО), в должности главы отдела (полное наименование отдела), свидетельствую, что сотрудник (ФИО) в должности (должность сотрудника), успешно завершил образовательный курс "(название курса)" и был аттестован. ============================================= @@ -964,9 +964,9 @@ doc-text-printer-certificate-offense = ============================================= СВИДЕТЕЛЬСТВО О ПРАВОНАРУШЕНИИ ============================================= - Время от начала смены и дата: - Составитель документа: - Должность составителя: + Время от начала смены и дата: $time$ + Составитель документа: $name$ + Должность составителя: $job$ Я, (ФИО), в должности (полное наименование должности), свидетельствую о правонарушениях/самолично признаюсь в совершении правонарушений, предусмотренных статьями: (перечисление статей) @@ -989,9 +989,9 @@ doc-text-printer-death-certificate = ============================================= СВИДЕТЕЛЬСТВО О СМЕРТИ ============================================= - Время от начала смены и дата: - Составитель документа: - Должность составителя: + Время от начала смены и дата: $time$ + Составитель документа: $name$ + Должность составителя: $job$ ФИО умершего: Должность умершего: @@ -1011,9 +1011,9 @@ doc-text-printer-marriage-certificate = ============================================= СВИДЕТЕЛЬСТВО О ЗАКЛЮЧЕНИИ БРАКА ============================================= - Время от начала смены и дата: - Составитель документа: - Должность составителя: + Время от начала смены и дата: $time$ + Составитель документа: $name$ + Должность составителя: $job$ Я, (ФИО), в должности (полное наименование должности), заключаю брак между: ⠀(ФИО), в должности (полное наименование должности) @@ -1032,9 +1032,9 @@ doc-text-printer-divorce-certificate = ============================================= СВИДЕТЕЛЬСТВО О РАСТОРЖЕНИИ БРАКА ============================================= - Время от начала смены и дата: - Составитель документа: - Должность составителя: + Время от начала смены и дата: $time$ + Составитель документа: $name$ + Должность составителя: $job$ Я, (ФИО), в должности (полное наименование должности), расторгаю брак между: (ФИО), в должности (полное наименование должности) @@ -1055,9 +1055,9 @@ doc-text-printer-closing-indictment = ============================================= ОБВИНИТЕЛЬНОЕ ЗАКЛЮЧЕНИЕ ============================================= - Время от начала смены и дата: - Составитель документа: - Должность составителя: + Время от начала смены и дата: $time$ + Составитель документа: $name$ + Должность составителя: $job$ Я, (ФИО), в должности (полное наименование должности), разрешаю произвести арест (ФИО), в должности (полное наименование должности) в связи с подозрением в совершении данным лицом следующих правонарушений: @@ -1077,9 +1077,9 @@ doc-text-printer-sentence = ============================================= ПРИГОВОР ============================================= - Время от начала смены и дата: - Составитель документа: - Должность составителя: + Время от начала смены и дата: $time$ + Составитель документа: $name$ + Должность составителя: $job$ Я, (ФИО), в должности (полное название должности), выношу приговор согласно данным мне полномочиям в отношении (ФИО), в должности (полное название должности). Данное лицо нарушило следующие статьи Корпоративного Закона: @@ -1100,9 +1100,9 @@ doc-text-printer-judgment = ============================================= СУДЕБНОЕ РЕШЕНИЕ ============================================= - Время от начала смены и дата: - Составитель документа: - Должность составителя: + Время от начала смены и дата: $time$ + Составитель документа: $name$ + Должность составителя: $job$ Я, (ФИО), в должности (полное наименование должности), выношу решение по судебному разбирательству в отношении (ФИО), в должности (полное наименование должности). Предъявляемые правонарушения: @@ -1132,9 +1132,9 @@ doc-text-printer-statement-health = ============================================= ЗАКЛЮЧЕНИЕ О СОСТОЯНИИ ЗДОРОВЬЯ ============================================= - Время от начала смены и дата: - Составитель документа: - Должность составителя: + Время от начала смены и дата: $time$ + Составитель документа: $name$ + Должность составителя: $job$ Пациент (ФИО), в должности (полное наименование должности), был направлен на медицинское обследование в связи с (причина прохождения обследования). Был произведён полный осмотр пациента, проведены необходимые исследования и анализы. Состав врачебной комиссии: @@ -1158,9 +1158,9 @@ doc-text-printer-decision-to-start-trial = ============================================= РЕШЕНИЕ О НАЧАЛЕ СУДЕБНОГО ПРОЦЕССА ============================================= - Время от начала смены и дата: - Составитель документа: - Должность составителя: + Время от начала смены и дата: $time$ + Составитель документа: $name$ + Должность составителя: $job$ Я, (ФИО), в должности (полное наименование должности), сообщаю о начале судебного разбирательства по делу (ФИО) в связи со сложностью и неоднозначностью дела. Предъявляемые правонарушения: @@ -1176,7 +1176,7 @@ doc-text-printer-error-loading-form-header = ============================================= НАИМЕНОВАНИЕ ДОКУМЕНТА ============================================= - Время от начала смены и дата: + Время от начала смены и дата: $time$ Позывной Агента: Полное содержание документа со всей необходимой информацией и описанием @@ -1191,7 +1191,7 @@ doc-text-printer-notice-of-liquidation = ============================================= УВЕДОМЛЕНИЕ О ЛИКВИДАЦИИ ============================================= - Время от начала смены и дата: + Время от начала смены и дата: $time$ Позывной агента: Уважаемый (ФИО), в должности (полное наименование должности)! Руководством Синдиката принято решение о вашей немедленной ликвидации в ходе данной смены. Просим заранее подготовить завещание и направить его Медицинскому отделу станции. Уничтожение вашего тела будет произведено силами Синдиката. @@ -1208,7 +1208,7 @@ doc-text-printer-business-deal = ============================================= ДЕЛОВАЯ СДЕЛКА ============================================= - Время от начала смены и дата: + Время от начала смены и дата: $time$ Позывной агента: Синдикат любезно предлагает заключить сделку между станцией и агентом (позывной агента). Со стороны станции необходимо: @@ -1226,7 +1226,7 @@ doc-text-printer-note-beginning-military-actions = ============================================= НОТА О НАЧАЛЕ ВОЕННЫХ ДЕЙСТВИЙ ============================================= - Время от начала смены и дата: + Время от начала смены и дата: $time$ Позывной агента: Неуважаемые корпоративные крысы NanoTrasen! Синдикат официально объявляет о начале военных действий с вами, а также о начале операции по вашему истреблению. @@ -1243,7 +1243,7 @@ doc-text-printer-report-accomplishment-goals = ============================================= ОТЧЁТ О ВЫПОЛНЕНИИ ЦЕЛЕЙ ============================================= - Время от начала смены и дата: + Время от начала смены и дата: $time$ Позывной агента: Я, (позывной агента), успешно выполнил поставленные передо мной руководством Синдиката цели. Прошу принять отчёт о выполнении. diff --git a/Resources/Prototypes/Corvax/Entities/Structures/Machines/printer.yml b/Resources/Prototypes/Corvax/Entities/Structures/Machines/printer.yml index aa7fb4cc763..980a7aa09dd 100644 --- a/Resources/Prototypes/Corvax/Entities/Structures/Machines/printer.yml +++ b/Resources/Prototypes/Corvax/Entities/Structures/Machines/printer.yml @@ -108,3 +108,4 @@ - Document storage: SheetPrinter: 0 + - type: DocumentPrinter #DocumentPrinterComponent (ADT)