diff --git a/Content.Client/White/Items/Tricorder/TricorderSystem.cs b/Content.Client/White/Items/Tricorder/TricorderSystem.cs new file mode 100644 index 0000000000..3fe0137fbf --- /dev/null +++ b/Content.Client/White/Items/Tricorder/TricorderSystem.cs @@ -0,0 +1,73 @@ +using Content.Client.Items; +using Content.Client.Message; +using Content.Client.Stylesheets; +using Content.Shared.White.Item.Tricorder; +using Robust.Client.UserInterface; +using Robust.Client.UserInterface.Controls; +using Robust.Shared.GameStates; +using Robust.Shared.Timing; + +namespace Content.Client.White.Items.Tricorder; + +/// +public sealed class TricorderSystem : SharedTricorderSystem +{ + /// + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnCollectItemStatus); + SubscribeLocalEvent(HandleTricorderState); + } + + private static void OnCollectItemStatus(EntityUid uid, TricorderComponent component, ItemStatusCollectMessage args) + { + if (component.CurrentMode != TricorderMode.Multitool) + { + args.Controls.Clear(); + } + + args.Controls.Add(new StatusControl(component)); + } + + private static void HandleTricorderState(EntityUid uid, TricorderComponent component, ref ComponentHandleState args) + { + if (args.Current is not TricorderComponentState state) + { + return; + } + + component.CurrentMode = state.CurrentMode; + } + + private sealed class StatusControl : Control + { + private readonly RichTextLabel _label; + private readonly TricorderComponent _tricorder; + + private TricorderMode? _linkModeActive; + + public StatusControl(TricorderComponent tricorder) + { + _tricorder = tricorder; + _label = new RichTextLabel { StyleClasses = { StyleNano.StyleClassItemStatus } }; + AddChild(_label); + } + + protected override void FrameUpdate(FrameEventArgs args) + { + base.FrameUpdate(args); + + if (_linkModeActive != null && _linkModeActive == _tricorder.CurrentMode) + return; + + _linkModeActive = _tricorder.CurrentMode; + + var modeLocString = GetNameByMode(_tricorder.CurrentMode); + + _label.SetMarkup(Robust.Shared.Localization.Loc.GetString("tricorder-item-status-label", + ("mode", Robust.Shared.Localization.Loc.GetString(modeLocString)))); + } + } +} \ No newline at end of file diff --git a/Content.Server/Speech/Components/VocalComponent.cs b/Content.Server/Speech/Components/VocalComponent.cs index 029d638a66..e06dd60ee1 100644 --- a/Content.Server/Speech/Components/VocalComponent.cs +++ b/Content.Server/Speech/Components/VocalComponent.cs @@ -1,4 +1,5 @@ using Content.Server.Speech.EntitySystems; +using Content.Server.White.AspectsSystem.Aspects; using Content.Shared.Chat.Prototypes; using Content.Shared.Humanoid; using Robust.Shared.Audio; @@ -12,7 +13,7 @@ namespace Content.Server.Speech.Components; /// Component required for entities to be able to do vocal emotions. /// [RegisterComponent] -[Access(typeof(VocalSystem))] +[Access(typeof(VocalSystem), typeof(CatEarsAspect))] public sealed partial class VocalComponent : Component { /// @@ -41,6 +42,6 @@ public sealed partial class VocalComponent : Component /// Currently loaded emote sounds prototype, based on entity sex. /// Null if no valid prototype for entity sex was found. /// - [ViewVariables] + [ViewVariables(VVAccess.ReadWrite)] public EmoteSoundsPrototype? EmoteSounds = null; } diff --git a/Content.Server/White/AspectsSystem/Aspects/CatEarsAspect.cs b/Content.Server/White/AspectsSystem/Aspects/CatEarsAspect.cs index 2d70763cf2..665a055e18 100644 --- a/Content.Server/White/AspectsSystem/Aspects/CatEarsAspect.cs +++ b/Content.Server/White/AspectsSystem/Aspects/CatEarsAspect.cs @@ -1,12 +1,14 @@ using Content.Server.Chat.Systems; using Content.Server.GameTicking; using Content.Server.GameTicking.Rules.Components; +using Content.Server.Speech.Components; using Content.Server.White.AspectsSystem.Aspects.Components; using Content.Server.White.AspectsSystem.Base; using Content.Shared.GameTicking; using Content.Shared.Humanoid; using Content.Shared.Humanoid.Markings; using Content.Shared.Speech; +using Robust.Shared.Enums; using Robust.Shared.Prototypes; using Robust.Shared.Random; @@ -21,6 +23,9 @@ public sealed class CatEarsAspect : AspectSystem private MarkingPrototype _ears = default!; private MarkingPrototype _tail = default!; + private const string FemaleFelinidVoices = "FemaleFelinid"; + private const string MaleFelinidVoices = "MaleFelinid"; + public override void Initialize() { base.Initialize(); @@ -42,13 +47,16 @@ public sealed class CatEarsAspect : AspectSystem var entQuery = EntityQueryEnumerator(); while (entQuery.MoveNext(out var ent, out _, out _)) { - _chat.TrySendInGameICMessage(ent, _random.Pick(new[] {"Мяу", "Мур", "Ня"}), InGameICChatType.Speak, + _chat.TrySendInGameICMessage(ent, _random.Pick(new[] { "Мяу", "Мур", "Ня" }), InGameICChatType.Speak, ChatTransmitRange.Normal); } } } - protected override void Started(EntityUid uid, CatEarsAspectComponent component, GameRuleComponent gameRule, + protected override void Started( + EntityUid uid, + CatEarsAspectComponent component, + GameRuleComponent gameRule, GameRuleStartedEvent args) { base.Started(uid, component, gameRule, args); @@ -93,12 +101,14 @@ public sealed class CatEarsAspect : AspectSystem AddTail(appearance); Dirty(uid, appearance); + ChangeEmotesVoice(uid, appearance); return; } default: AddEars(appearance); AddTail(appearance); Dirty(uid, appearance); + ChangeEmotesVoice(uid, appearance); break; } } @@ -114,7 +124,7 @@ public sealed class CatEarsAspect : AspectSystem if (!appearance.MarkingSet.TryGetMarking(MarkingCategories.Tail, _tail.ID, out _)) { appearance.MarkingSet.AddFront(MarkingCategories.Tail, - new Marking(_tail.ID, GetColors(appearance, _tail)) {Forced = true}); + new Marking(_tail.ID, GetColors(appearance, _tail)) { Forced = true }); } } @@ -123,7 +133,25 @@ public sealed class CatEarsAspect : AspectSystem if (!appearance.MarkingSet.TryGetMarking(MarkingCategories.HeadTop, _tail.ID, out _)) { appearance.MarkingSet.AddFront(MarkingCategories.HeadTop, - new Marking(_ears.ID, GetColors(appearance, _ears)) {Forced = true}); + new Marking(_ears.ID, GetColors(appearance, _ears)) { Forced = true }); } } -} + + private void ChangeEmotesVoice(EntityUid user, HumanoidAppearanceComponent appearanceComponent) + { + if (!TryComp(user, out VocalComponent? vocals)) + { + return; + } + + switch (appearanceComponent.Gender) + { + case Gender.Female: + _protoMan.TryIndex(FemaleFelinidVoices, out vocals.EmoteSounds); + break; + case Gender.Male: + _protoMan.TryIndex(MaleFelinidVoices, out vocals.EmoteSounds); + break; + } + } +} \ No newline at end of file diff --git a/Content.Server/White/Items/Tricorder/TricorderSystem.cs b/Content.Server/White/Items/Tricorder/TricorderSystem.cs new file mode 100644 index 0000000000..62d0f13689 --- /dev/null +++ b/Content.Server/White/Items/Tricorder/TricorderSystem.cs @@ -0,0 +1,161 @@ +using Content.Server.Medical.Components; +using Content.Server.UserInterface; +using Content.Shared.Atmos.Components; +using Content.Shared.Database; +using Content.Shared.DeviceNetwork; +using Content.Shared.DeviceNetwork.Components; +using Content.Shared.Examine; +using Content.Shared.MedicalScanner; +using Content.Shared.Verbs; +using Content.Shared.White.Item.Tricorder; +using Robust.Server.GameObjects; +using Robust.Shared.Audio; +using Robust.Shared.GameStates; +using Robust.Shared.Utility; + +namespace Content.Server.White.Items.Tricorder; + +public sealed class TricorderSystem : SharedTricorderSystem +{ + [Dependency] private readonly IComponentFactory _componentFactory = default!; + [Dependency] private readonly AudioSystem _audioSystem = default!; + [Dependency] private readonly IEntityManager _entityManager = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnExamined); + + SubscribeLocalEvent>(OnAddSwitchModeVerbs); + } + + private void OnExamined(EntityUid uid, TricorderComponent component, ExaminedEvent args) + { + var mode = GetNameByMode(component.CurrentMode); + args.PushMarkup(Loc.GetString("network-configurator-examine-current-mode", ("mode", Loc.GetString(mode)))); + } + + private void OnAddSwitchModeVerbs(EntityUid uid, TricorderComponent component, GetVerbsEvent args) + { + if (!args.CanAccess || !args.CanInteract || !args.Using.HasValue || + !HasComp(args.Target)) + { + return; + } + + var icon = new SpriteSpecifier.Texture(new ResPath("/Textures/Interface/VerbIcons/settings.svg.192dpi.png")); + + AlternativeVerb switchToMultitoolVerb = new() + { + Text = "Переключить на мультитул", + Icon = icon, + Act = () => SwitchToMode(args.User, uid, component, TricorderMode.Multitool), + Impact = LogImpact.Low + }; + + AlternativeVerb switchToGasAnalyzerlVerb = new() + { + Text = "Переключить на газоанализатор", + Icon = icon, + Act = () => SwitchToMode(args.User, uid, component, TricorderMode.GasAnalyzer), + Impact = LogImpact.Low + }; + + AlternativeVerb switchToHealthAnalyzerVerb = new() + { + Text = "Переключить на анализатор здоровья", + Icon = icon, + Act = () => SwitchToMode(args.User, uid, component, TricorderMode.HealthAnalyzer), + Impact = LogImpact.Low + }; + + args.Verbs.Add(switchToHealthAnalyzerVerb); + args.Verbs.Add(switchToGasAnalyzerlVerb); + args.Verbs.Add(switchToMultitoolVerb); + } + + public void SwitchToMode(EntityUid? user, EntityUid tricoderUid, TricorderComponent tricorder, TricorderMode mode) + { + if (tricorder.CurrentMode == mode) + { + return; + } + + tricorder.CurrentMode = mode; + + switch (mode) + { + case TricorderMode.Multitool: + SetToMultitool(tricoderUid); + break; + case TricorderMode.GasAnalyzer: + SetToGasAnalyzer(tricoderUid); + break; + case TricorderMode.HealthAnalyzer: + SetToHealthAnalyzer(tricoderUid); + break; + } + + if (!user.HasValue) + return; + + UpdateModeAppearance(user.Value, tricorder); + } + + private void UpdateModeAppearance( + EntityUid userUid, + TricorderComponent tricorder) + { + Dirty(tricorder); + _audioSystem.PlayPvs(tricorder.SoundSwitchMode, userUid, AudioParams.Default.WithVolume(1.5f)); + } + + private void SetToMultitool(EntityUid uid) + { + var comp = AddComp(uid); + RemComp(uid); + RemComp(uid); + Dirty(comp); + + if (!TryComp(uid, out ActivatableUIComponent? ui)) + { + return; + } + + ui.Key = NetworkConfiguratorUiKey.Configure; + } + + private void SetToGasAnalyzer(EntityUid uid) + { + RemComp(uid); + AddComp(uid); + RemComp(uid); + + if (!TryComp(uid, out ActivatableUIComponent? ui)) + { + return; + } + + ui.Key = GasAnalyzerComponent.GasAnalyzerUiKey.Key; + } + + private void SetToHealthAnalyzer(EntityUid uid) + { + RemComp(uid); + RemComp(uid); + + var healthAnalyzerComponent = _componentFactory.GetComponent(); + healthAnalyzerComponent.ScanningEndSound = new SoundPathSpecifier("/Audio/Items/Medical/healthscanner.ogg"); + + healthAnalyzerComponent.Owner = uid; + _entityManager.AddComponent(uid, healthAnalyzerComponent); + + if (!TryComp(uid, out ActivatableUIComponent? ui)) + { + return; + } + + ui.Key = HealthAnalyzerUiKey.Key; + } +} \ No newline at end of file diff --git a/Content.Shared/White/Item/Tricorder/SharedTricorderSystem.cs b/Content.Shared/White/Item/Tricorder/SharedTricorderSystem.cs new file mode 100644 index 0000000000..c0f356ea6d --- /dev/null +++ b/Content.Shared/White/Item/Tricorder/SharedTricorderSystem.cs @@ -0,0 +1,30 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared.White.Item.Tricorder; + +public abstract class SharedTricorderSystem : EntitySystem +{ + /// + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(GetTricorderState); + } + + private static void GetTricorderState(EntityUid uid, TricorderComponent component, ref ComponentGetState args) + { + args.State = new TricorderComponentState(component.CurrentMode); + } + + public static string GetNameByMode(TricorderMode mode) + { + return mode switch + { + TricorderMode.Multitool => "[color=yellow]мультитул[/color]", + TricorderMode.GasAnalyzer => "[color=cyan]газоанализатор[/color]", + TricorderMode.HealthAnalyzer => "[color=green]анализатор здоровья[/color]", + _ => "[color=yellow]мультитул[/color]" + }; + } +} \ No newline at end of file diff --git a/Content.Shared/White/Item/Tricorder/TricorderComponent.cs b/Content.Shared/White/Item/Tricorder/TricorderComponent.cs new file mode 100644 index 0000000000..7f391c8b2a --- /dev/null +++ b/Content.Shared/White/Item/Tricorder/TricorderComponent.cs @@ -0,0 +1,38 @@ +using Robust.Shared.Audio; +using Robust.Shared.GameStates; +using Robust.Shared.Serialization; + +namespace Content.Shared.White.Item.Tricorder; + +[RegisterComponent] +[NetworkedComponent] +[Access(typeof(SharedTricorderSystem))] +public sealed class TricorderComponent : Component +{ + [DataField("currentState"), ViewVariables(VVAccess.ReadWrite)] + public TricorderMode CurrentMode = TricorderMode.Multitool; + + [DataField("soundSwitchMode")] + public SoundSpecifier SoundSwitchMode = new SoundPathSpecifier("/Audio/Machines/quickbeep.ogg"); +} + +/// +/// Contains network state for TricorderComponent. +/// +[Serializable, NetSerializable] +public sealed class TricorderComponentState : ComponentState +{ + public TricorderMode CurrentMode; + + public TricorderComponentState(TricorderMode currentMode) + { + CurrentMode = currentMode; + } +} + +public enum TricorderMode +{ + Multitool, + GasAnalyzer, + HealthAnalyzer +} \ No newline at end of file diff --git a/Resources/Locale/ru-RU/materials/materials.ftl b/Resources/Locale/ru-RU/materials/materials.ftl index 8404304f04..a149ddd7a7 100644 --- a/Resources/Locale/ru-RU/materials/materials.ftl +++ b/Resources/Locale/ru-RU/materials/materials.ftl @@ -8,6 +8,7 @@ materials-steel = сталь materials-gold = золото materials-silver = серебро materials-plasteel = пласталь +materials-paper = бумага # Other materials-biomass = биомасса materials-cloth = ткань diff --git a/Resources/Locale/ru-RU/white/items/tricorder.ftl b/Resources/Locale/ru-RU/white/items/tricorder.ftl new file mode 100644 index 0000000000..3b73829b81 --- /dev/null +++ b/Resources/Locale/ru-RU/white/items/tricorder.ftl @@ -0,0 +1 @@ +tricorder-item-status-label = Текущий режим: { $mode } \ No newline at end of file diff --git a/Resources/Locale/ru-RU/white/species/felinid/felinid.ftl b/Resources/Locale/ru-RU/white/species/felinid/felinid.ftl index 33be7d6643..99d8c0a523 100644 --- a/Resources/Locale/ru-RU/white/species/felinid/felinid.ftl +++ b/Resources/Locale/ru-RU/white/species/felinid/felinid.ftl @@ -1,7 +1,7 @@ hairball-action = Откашлять комок шерсти. hairball-action-desc = Люди это не любят. hairball-mask = Сначала сними { $mask }. -hairball-cough = { CAPITALIZE(THE($name)) } пытается выкашлять комок шесрти! +hairball-cough = { CAPITALIZE(THE($name)) } пытается выкашлять комок шерсти! action-name-eat-mouse = Съесть мышь. action-description-eat-mouse = Съешьте мышь в своей руке, получая питательные вещества и заряд комка шерсти. diff --git a/Resources/Locale/ru-RU/white/structures/doc-printer/paper-text.ftl b/Resources/Locale/ru-RU/white/structures/doc-printer/paper-text.ftl new file mode 100644 index 0000000000..65684621c1 --- /dev/null +++ b/Resources/Locale/ru-RU/white/structures/doc-printer/paper-text.ftl @@ -0,0 +1,610 @@ +paper-text-request = Запрос Центральному Командованию + --------------------------------------------------------------------- + Я, "имя капитана", в должности Капитана, запрашиваю цель для станции "номер станции" + --------------------------------------------------------------------- + Для выполнения задачи Центрального Командования будут задействованы все доступные ресурсы станции с минимальным ущербом самой станции, если не было приказано иначе. + --------------------------------------------------------------------- + Подпись: "подпись заявителя" + Дата: "день"."месяц".2562 + Печать: + +paper-text-report = Заявление в штаб Центрального Командования + --------------------------------------------------------------------- + Я, "имя заявителя" "должность" станции "номер станции", отправляю рапорт о ходе выполнения цели станции и ее продвижении. + Цель: "цель смены". + Ситуация: "как проходит цель". + --------------------------------------------------------------------- + Рапорт был составлен мною в пребывании адекватного состояния. Все расписанное, готов подтвердить повторно, при необходимости. + --------------------------------------------------------------------- + Подпись: "подпись заявителя" + Дата: "день"."месяц".2562 + Печать: + +paper-text-completed = Заявление в штаб Центрального Командования + --------------------------------------------------------------------- + Я, Капитан "имя заявителя" станции "номер станции", с гордостью сообщаю об успешном выполнении экипажем назначенной цели текущей смены. + + Цель: "цель смены". + + Оценка личного состава и состояния станции: "кратко опишите ситуацию на станции". + --------------------------------------------------------------------- + Запрашиваю начало процедуры смены экипажа и ожидаю дальнейших указаний. + --------------------------------------------------------------------- + Подпись: "подпись заявителя" + Дата: "день"."месяц".2562 + Печать: + +paper-text-failed = Заявление в штаб Центрального Командования + --------------------------------------------------------------------- + Я, Капитан "имя заявителя" станции "номер станции", с прискорбием сообщаю о невозможности выполнения экипажем назначенной цели текущей смены. + + Цель: "цель смены". + + Причина: "почему ее нельзя выполнить". + --------------------------------------------------------------------- + Вследствие провала задания, запрашиваю начало "процедуры смены экипажа / эвакуации" и ожидаю дальнейших указаний. + --------------------------------------------------------------------- + Подпись: "подпись заявителя" + Дата: "день"."месяц".2562 + Печать: + +paper-text-request-CentComm = Рапорт Офицерскому составу Центрального Командования + --------------------------------------------------------------------- + Номер станции: "укажите номер станции из ПДА" + Я, "имя заявителя", в должности "должность заявителя", представляю доклад о "происшествии/несоответствии" Офицерскому составу Центрального Командования. + + Причина:"описание происшествия/несоответствия". + + Данная ситуация требует вмешательства "сотрудника ЦК", так как не может быть решена силами экипажа и командования станции. + --------------------------------------------------------------------- + Рапорт был составлен мною в пребывании адекватного состояния. Все расписанное, готов подтвердить повторно, при необходимости. + + Отправляя этот запрос, возлагаю на себя полную ответственность и, в случае сокрытия информации для собственной выгоды, готов понести высшую меру наказания. + --------------------------------------------------------------------- + Подпись: "подпись заявителя" + Дата: "день"."месяц".2562 + Печать: + +paper-text-request-ERT = Запрос в отдел Аварийно-Восстановительных Формирований NanoTrasen + --------------------------------------------------------------------- + Я, "имя заявителя", в должности "должность заявителя", отправляю запрос в отдел Аварийно-Восстановительного Формирования для вызова на станцию "номер станции из ПДА" Отряда Быстрого Реагирования. + + Причина: "описание происшествия". + + Данная ситуация требует вмешательства "название типа ОБР" ОБР, так как не может быть решена силами экипажа и командования станции и ставит под угрозу существование самой станции. + --------------------------------------------------------------------- + Запрос был составлен мною в пребывании адекватного состояния. Все расписанное, готов подтвердить повторно, при необходимости. + + Отправляя этот запрос, возлагаю на себя полную ответственность и, в случае сокрытия информации для собственной выгоды, готов понести высшую меру наказания. + --------------------------------------------------------------------- + Подпись: "подпись заявителя" + Дата: "день"."месяц".2562 + Печать: + +paper-text-request-RXBZZ = Запрос в отдел Аварийно-Восстановительных Формирований NanoTrasen + --------------------------------------------------------------------- + Я, "имя заявителя", в должности "должность заявителя", отправляю запрос в отдел Аварийно-Восстановительного Формирования для вызова на станцию "номер станции из ПДА" Отряда Быстрого Реагирования. + + Причина: "описание происшествия". + + Данная ситуация требует вмешательства "название типа ОБР" ОБР, так как не может быть решена силами экипажа и командования станции и ставит под угрозу существование самой станции. + --------------------------------------------------------------------- + Запрос был составлен мною в пребывании адекватного состояния. Все расписанное, готов подтвердить повторно, при необходимости. + + Отправляя этот запрос, возлагаю на себя полную ответственность и, в случае сокрытия информации для собственной выгоды, готов понести высшую меру наказания. + --------------------------------------------------------------------- + Подпись: "подпись заявителя" + Дата: "день"."месяц".2562 + Печать: + +paper-text-request-high-order-compaint = Заявление в бюро доносов NanoTrasen + --------------------------------------------------------------------- + Номер станции: "укажите номер станции из ПДА" + Заявитель: "имя заявителя" + Должность: "должность заявителя" + + Субъект правонарушения: "имя нарушителя" + Должность: "должность нарушителя" + + Нарушенные пункты КЗ: "нарушенные статьи/отсутствует" + Нарушенные пункты СОП: "нарушенные пункты/отсутствует" + Нарушенные пункты ОПЧК: "нарушенные пункты/отсутствует" + + Свидетели нарушений: "имена свидетелей/отсутствуют" + --------------------------------------------------------------------- + Описание: "подробное, но лаконичное описание правонарушения". + + Жалоба была составлена мною в пребывании адекватного состояния. Все, расписанное в данной жалобе, готов подтвердить повторно, при необходимости. + + Запрос: "ожидаемый заявителем исход/принять соответствующие меры по пресечению будущих нарушений". + --------------------------------------------------------------------- + Подпись: "подпись заявителя" + Дата: "день"."месяц".2562 + Печать: + +paper-text-request-magistrat = Запрос в Верховный суд Nanotrasen + --------------------------------------------------------------------- + Я, "имя заявителя", в должности "должность заявителя", отправляю запрос в Верховный суд для вызова на станцию "номер станции из ПДА" Магистрата. + + Заявление об инициации судебного процесса: прилагается. + + Данная ситуация требует вмешательства сотрудника Верховного суда, так как не может быть решена компетенцией экипажа и командования станции и ставит под угрозу справедливость вынесенного приговора. + --------------------------------------------------------------------- + Запрос был составлен мною в пребывании адекватного состояния. Все расписанное, готов подтвердить повторно, при необходимости. + + Отправляя этот запрос, возлагаю на себя полную ответственность и, в случае сокрытия информации для собственной выгоды, готов понести высшую меру наказания. + --------------------------------------------------------------------- + Подпись: "подпись заявителя" + Дата: "день"."месяц".2562 + Печать: + +paper-comm-text-crew-mem-domotion = Постановление в архив командования станции + --------------------------------------------------------------------- + Главе персонала станции "номер станции из ПДА". + + Я, "имя заявителя", в должности главы отдела "ваш отдел" приказываю понизить сотрудника "должность сотрудника" "имя сотрудника" до должности "должность после понижения". + + Причина: "кратко опишите причину понижения". + --------------------------------------------------------------------- + Обязуюсь восполнить отсутствие персонала и поддерживать эффективность отдела на высшем уровне. + + Приказ ввести в исполнение немедленно во избежание необратимого ущерба. + --------------------------------------------------------------------- + Подпись: "подпись заявителя" + Дата: "день"."месяц".2562 + Печать: + +paper-comm-text-crew-mem-dismissal = Постановление в архив командования станции + --------------------------------------------------------------------- + Главе персонала станции "номер станции из ПДА". + + Я, "имя заявителя", в должности главы отдела "ваш отдел" приказываю немедленно уволить сотрудника "имя сотрудника" с должности "должность сотрудника". + + Причина: "кратко опишите причину увольнения". + + Сотрудник обязан(-а) немедленно покинуть рабочее место и сдать все выданное снаряжение и имущество отдела. В случае нарушения данного приказа, будут приняты дополнительные меры в соответствии с настоящим законодательством. + --------------------------------------------------------------------- + Обязуюсь восполнить отсутствие персонала и поддерживать эффективность отдела на высшем уровне. + + Приказ ввести в исполнение немедленно во избежание необратимого ущерба. + --------------------------------------------------------------------- + Подпись: "подпись заявителя" + Дата: "день"."месяц".2562 + Печать: + +paper-comm-text-request-council = Запрос командному составу станции + --------------------------------------------------------------------- + Я, "имя заявителя", в должности "ваша должность" запрашиваю провести голосование среди командного состава станции "номер станции". + + Причина: "причина голосования". + + Цель: "ожидаемый итог голосования". + --------------------------------------------------------------------- + Подпись: "подпись заявителя" + Дата: "день"."месяц".2562 + Печать: + +paper-comm-text-council-end = Отчет по голосованию + --------------------------------------------------------------------- + Голосованием глав станции "номер станции", по вопросу "причина голосования", было принято решение "Поддержать / Отклонить" инициативу. + + Количество голосов "За": "кол-во" + + Количество голосов "Против": "кол-во" + --------------------------------------------------------------------- + Подпись: "подпись" + Дата: "день"."месяц".2562 + Печать: + +paper-sec-text-order = Ордер на обыск + --------------------------------------------------------------------- + Выдан: "имя заявителя" "Юрист/Капитан". + Подозреваемый: "имя подозреваемого" "должность". + Характер обыска: "обыск отдела/обыск сотрудника". + + Причина обыска: "причина подозрения" + --------------------------------------------------------------------- + Подпись: "подпись заявителя" + Дата: "день"."месяц".2562 + Печать: + +paper-sec-text-complaint = Жалоба + --------------------------------------------------------------------- + Заявитель: "имя заявителя" + Должность: "должность заявителя" + + Субъект правонарушения: "имя нарушителя" + Должность: "должность нарушителя" + + Свидетели нарушений: "имена свидетелей/отсутствуют" + --------------------------------------------------------------------- + Описание: "нарушение". + --------------------------------------------------------------------- + Жалоба была составлена мною в пребывании адекватного состояния. Все, расписанное в данной жалобе, готов подтвердить повторно, при необходимости. + --------------------------------------------------------------------- + Подпись: "подпись заявителя" + Дата: "день"."месяц".2562 + Печать: + +paper-sec-text-lic = Разрешение на ношение оружия + --------------------------------------------------------------------- + Заявитель: "имя заявителя" + Должность: "должность заявителя" + Разрешение на ношение: "название оружия" + --------------------------------------------------------------------- + Причина: "причина на запрос оружия". + --------------------------------------------------------------------- + Обязуюсь, что орудоваемое мною оружие будет использовано в целях описаных выше или в целях вынужденной самообороны. + --------------------------------------------------------------------- + Подпись: "подпись заявителя" + Дата: "день"."месяц".2562 + Печать: + +paper-sec-text-request-weapon = Временный запрос оружия + --------------------------------------------------------------------- + Заявитель: "имя заявителя" + Должность: "должность заявителя" + Запрос оружия: "название оружия" + --------------------------------------------------------------------- + Причина: "причина на запрос оружия". + На период: "через сколько обязан вернуть оружие" + --------------------------------------------------------------------- + Обязуюсь использовать исключительно в целях указанных выше или при вынужденной самообороне и сдать оружие в арсенал в указанное время или по первому требованию службы безопасности. + --------------------------------------------------------------------- + Подпись: "подпись заявителя" + Дата: "день"."месяц".2562 + Печать: + +paper-sec-text-request-execution = Запрос на казнь сотрудника + --------------------------------------------------------------------- + Заявитель: "имя заявителя" + Должность: "должность заявителя" + + Нарушитель: "имя и фамилия" + --------------------------------------------------------------------- + Причина: "что нарушил". + --------------------------------------------------------------------- + Отправляя этот запрос, возлагаю на себя полную ответственность и, в случае сокрытия информации для собственной выгоды, готов понести высшую меру наказания. + + Данный документ приобретает юридическую силу, если имеет печать Капитана или Центрального Командования. + --------------------------------------------------------------------- + Подпись: "подпись заявителя" + Дата: "день"."месяц".2562 + Печать: + +paper-sec-text-request-cargo-weapon = Разрешение на заказ оружие отделом Снабжения + --------------------------------------------------------------------- + Заявитель: "имя заявителя" + Должность: "должность заявителя" + + Причина: "по какой причине нужно оружие". + --------------------------------------------------------------------- + Отправляя этот запрос, возлагаю на себя полную ответственность за заказанное оружие. + --------------------------------------------------------------------- + Подпись: "подпись заявителя" + Дата: "день"."месяц".2562 + Печать: + +paper-sec-text-request-guard = Заявление под программу защиты свидетелей + --------------------------------------------------------------------- + Заявитель: "имя заявителя" + Должность: "должность заявителя" + --------------------------------------------------------------------- + Причина: "что угрожает вашей жизни". + Запрос: "убежища в бриге / предоставить вам защиту" + --------------------------------------------------------------------- + Служба безопасности берет ответственность за жизнь данного сотрудника и обязана предоставить ему защиту. + --------------------------------------------------------------------- + Подпись: "подпись заявителя" + Дата: "день"."месяц".2562 + Печать: + +paper-eng-text-request-build = Заявление о проведении строительных работ + --------------------------------------------------------------------- + Заявитель: "имя заявителя" + Должность: "должность заявителя" + --------------------------------------------------------------------- + Строительные работы будут проведены в отделе "название отдела". + + Объект: "что будет сделано". + --------------------------------------------------------------------- + Исполнитель несёт полную ответственность за качество выполненных работ. + + Во время строительства обязаны быть соблюдены все нормы безопасности. + --------------------------------------------------------------------- + Подпись: "подпись заявителя" + Дата: "день"."месяц".2562 + Печать: + +paper-eng-text-request-material = Запрос материалов + --------------------------------------------------------------------- + Заявитель: "имя заявителя" + Должность: "должность заявителя" + --------------------------------------------------------------------- + Список: "что вам нужно". + + Причина: "зачем вам материалы". + --------------------------------------------------------------------- + Подпись: "подпись заявителя" + Дата: "день"."месяц".2562 + Печать: + +paper-eng-text-report-elect = Отчет об электроснабжении + --------------------------------------------------------------------- + Заявитель: "имя заявителя" + Должность: "должность заявителя" + --------------------------------------------------------------------- + Производитель электроэнергии: "ДАМ / Сингулярность / альтернативный источник" + Коэффициент потраченной / производимой электроэнергии: "указать коэффициент, к примеру: 2/9" + Стабильность электропитания: "указать уровень стабильности" + --------------------------------------------------------------------- + Я - подотчетное лицо, несу полную ответственность своих действий и не пытаюсь скрыть какую-либо информацию. + В случае сокрытия информации подотчетное лицо будет подвержено наказанию высшей степени. + --------------------------------------------------------------------- + Подпись: "подпись заявителя" + Дата: "день"."месяц".2562 + Печать: + +paper-eng-text-report-atmos = Отчет об атмосфере + --------------------------------------------------------------------- + Заявитель: "имя заявителя" + Должность: "должность заявителя" + --------------------------------------------------------------------- + Производимые газы:"указать производимые газы" + Коэффициент газов в атмосфере станции:"указать коэффициент газов, к примеру кислород - 22%, азот - 77%, углерод - 1%" + Дополнительно производимые газы:"указать дополнительно производимые газы, к примеру - тритий, фрезон и т.п." + --------------------------------------------------------------------- + Я - подотчетное лицо, несу полную ответственность своих действий и не пытаюсь скрыть какую-либо информацию. + В случае сокрытия информации подотчетное лицо будет подвержено наказанию высшей степени. + --------------------------------------------------------------------- + Подпись: "подпись заявителя" + Дата: "день"."месяц".2562 + Печать: + +paper-med-text-request-perm-narc = Лекарственный рецепт + --------------------------------------------------------------------- + Я, "имя и фамилия", в должности "психолога/СМО", выписываю для лечения пациента "имя пациента" следующие препараты: "названия препаратов". + + Причина: "заболевание". + --------------------------------------------------------------------- + Этот документ подтверждает право пациента на хранение и употребление вышеперечисленных препаратов. + --------------------------------------------------------------------- + Подпись: "подпись заявителя" + Дата: "день"."месяц".2562 + Печать: + +paper-med-text-request-execution = Запрос на проведение эвтаназии + --------------------------------------------------------------------- + Я, "имя и фамилия", в должности "должность" в связи "указать причину", прошу провести для себя процедуру эвтаназии. + --------------------------------------------------------------------- + Претензий к медицинскому отделу, при соблюдении ими протоколов, не имею. + + Данный документ приобретает юридическую силу, если имеет печать Юриста. + --------------------------------------------------------------------- + Подпись: "подпись заявителя" + Дата: "день"."месяц".2562 + Печать: + +paper-med-text-waiver-claims = Отказ от претензий + --------------------------------------------------------------------- + Я, "имя и фамилия", в должности "должность" даю разрешение провести на мне ряд научных исследований во благо науки. + + Эксперимент: "что на вас будут проверять". + --------------------------------------------------------------------- + Претензий к "медицинскому/научному" отделу, при соблюдении ими протоколов, не имею. + + Я полностью осведомлен(а) и информирован(а) об эксперименте и возможных угрозах. + + Настоящая расписка составлена и подписана добровольно, без какого-либо давления, обещаний или угроз. + + Данный документ приобретает юридическую силу, если имеет печать Юриста. + --------------------------------------------------------------------- + Подпись: "подпись заявителя" + Дата: "день"."месяц".2562 + Печать: + +paper-med-text-durka = Заключение о невменяемости + --------------------------------------------------------------------- + Я, "имя и фамилия", в должности "СМО/Психолога" признаю сотрудника "имя пациента" невменяемым. В связи с тем, что психические расстройства несут опасность как для самого пациента, так и для остального экипажа, пациент должен быть помещен в перманентную тюрьму. + --------------------------------------------------------------------- + Служба безопасности обязана соблюдать все права в отношении пациента, защищать и проводить его для эвакуации до Центрального Командования. + + Подписывая данный документ, возлагаю на себя полную ответственность и, в случае неправильного диагноза, понесу высшую меру наказания. + + Данный документ приобретает юридическую силу, если имеет печать ГСБ или Капитана. + --------------------------------------------------------------------- + Подпись: "подпись заявителя" + Дата: "день"."месяц".2562 + Печать: + +paper-sci-text-reasonable = Признание разумности существа + --------------------------------------------------------------------- + Я, "имя и фамилия", в должности "Ученого/Научного руководителя", подтверждаю разумность существа. + + Существо: "название" + --------------------------------------------------------------------- + В процессе проведения экспериментов было подтверждено, что данное существо обладает характеристиками, необходимыми для признания его разумным, такими как: способность к мышлению, обучаемость, понимание моральных норм и способность осознавать последствия своих действий. + + Существо имеет потенциал для работы на корпорацию NanoTrasen, в связи с чем должно пройти процедуру найма. + --------------------------------------------------------------------- + После того, как глава персонала сделает ПДА данному существу, оно официально войдёт под юрисдикцию ОПЧК на равных основах с остальными членами корпорации. + + Заявитель несет ответственность за правильное признание существа разумным. + --------------------------------------------------------------------- + Подпись: "подпись заявителя" + Дата: "день"."месяц".2562 + Печать: + +paper-sci-text-request-law = Постановление о изменении законов боргов + --------------------------------------------------------------------- + Данный документ информирует о изменении законов "всех/название борга" борга/ов. + + Вносимые изменения: "перечень внесённых изменений". + --------------------------------------------------------------------- + Данный документ приобретает юридическую силу, если имеет печати и подписи двух или более глав. + + Подписи глав: "подписи через запятую" + + Новые законы не нарушают ОПЧК и Космический Закон, направлены на принесение пользы корпорации NanoTrasen. + --------------------------------------------------------------------- + Подпись: "подпись заявителя" + Дата: "день"."месяц".2562 + Печать: + +paper-sci-text-brain = Постановление о пересадке мозга + --------------------------------------------------------------------- + Данный документ информирует о пересадке мозга человека в борга по причине невозможности реанимировать прошлого владельца. + + Я, "имя и фамилия", в должности "должность" проведу операцию по пересадки мозга "должность" "имя и фамилия пациента" в тело борга. + --------------------------------------------------------------------- + Данный документ приобретает юридическую силу, если имеет печать СМО. + --------------------------------------------------------------------- + Подпись: "подпись заявителя" + Дата: "день"."месяц".2562 + Печать: + +paper-car-text-order = Заказ товара + --------------------------------------------------------------------- + Заявитель: "имя заявителя" + Должность: "должность заявителя" + --------------------------------------------------------------------- + Товар: "кол-во - название товара" + + Причина: "зачем вам это". + --------------------------------------------------------------------- + Подпись: "подпись заявителя" + Дата: "день"."месяц".2562 + Печать: + +paper-ser-text-up-IDcard = Повышение доступа + --------------------------------------------------------------------- + Я, "имя заявителя" "должность", прошу предоставить мне дополнительно следующие доступы: "название мест". + + Причина: "причина повышения доступов" + --------------------------------------------------------------------- + Доступ будет использован исключительно в интересах станции и экипажа. Я обязуюсь не заимствовать вещи из других отделов без разрешения главы отдела, а также покину отдел в случае приказа главы. + --------------------------------------------------------------------- + Подпись: "подпись заявителя" + Дата: "день"."месяц".2562 + Печать: + +paper-ser-text-work = Ускоренный найм + --------------------------------------------------------------------- + Главе персонала станции "номер станции из ПДА". + + Я, "имя заявителя", желаю пройти процедуру ускоренного найма на космической станции NanoTrasen. Ознакомившись с условиями и положениями ускоренного трудоустройства. + + Желаемая должность: "название должности" + Отдел: "название отдела" + + "По желанию - опыт в профессии, причина трудоустройства" + --------------------------------------------------------------------- + Со стандартными рабочими процедурами, правилами и политикой NanoTrasen ознакомлен. Ответственность, возлагаемую на себя, осознаю. + --------------------------------------------------------------------- + Подпись: "подпись заявителя" + Дата: "день"."месяц".2562 + Печать: + +paper-ser-text-trash = Свидетельство о заключении брака + --------------------------------------------------------------------- + Я, "имя и фамилия", в должности священника, заключаю брак между "имя и фамилия" и "имя и фамилия" с согласия обоих сторон. + --------------------------------------------------------------------- + После заключения брака присвоены фамилии: Мужу "фамилия" Жене "фамилия" + Подпись жениха: "имя и фамилия" + Подпись невесты: "имя и фамилия" + --------------------------------------------------------------------- + Подпись: "подпись заявителя" + Дата: "день"."месяц".2562 + Печать: + +paper-ser-text-trash-end = Свидетельство о расторжении брака + --------------------------------------------------------------------- + Я, "имя и фамилия", в должности священника, расторгаю брак между "имя и фамилия" и "имя и фамилия" с согласия обоих сторон. + --------------------------------------------------------------------- + После расторжения брака присвоены фамилии: Мужу "фамилия" Жене "фамилия" + Подпись мужа: "имя и фамилия" + Подпись жены: "имя и фамилия" + --------------------------------------------------------------------- + Подпись: "подпись заявителя" + Дата: "день"."месяц".2562 + Печать: + +paper-ser-text-court = Инициация судебного процесса + --------------------------------------------------------------------- + Я, "имя и фамилия", в должности "должность", настаиваю на немедленной инициации судебного процесса в отношении "имя обвиняемого" в должности "должность обвиняемого". + + Безотлагательный судебный процесс необходим, поскольку: "почему приговор несправедливый со стороны охранной службы". + + Дополнительная документация: "прилагается / отсутствует". + + Свидетели: "список свидетелей / отсутствуют". + + Исходя из данных, представленных выше, должен пройти публичный судейский процесс, подающий пример остальным сотрудникам станции. + --------------------------------------------------------------------- + Запрос был составлен мною в пребывании адекватного состояния. Все расписанное, готов подтвердить повторно, при необходимости. + + Данный документ приобретает юридическую силу, если имеет печать Юриста. + --------------------------------------------------------------------- + Подпись: "подпись заявителя" + Дата: "день"."месяц".2562 + Печать: + +paper-ser-text-dismissal = Увольнение + --------------------------------------------------------------------- + Я, "имя заявителя", прошу уволить меня с должности "ваша должность" по собственному желанию. + + Причина: "кратко опишите причину увольнения". + --------------------------------------------------------------------- + Документ составлен в адекватном состоянии, со всеми последствиями ознакомлен. + --------------------------------------------------------------------- + Подпись: "подпись заявителя" + Дата: "день"."месяц".2562 + Печать: + +paper-ser-text-promotion = Повышение + --------------------------------------------------------------------- + Я, "имя заявителя", в должности "ваша должность" прошу повысить меня до "желаемая должность" в отделе "название отдела". + + Причина: "кратко опишите свои заслуги". + --------------------------------------------------------------------- + Я убежден, что повышение позволит мне сделать значительный вклад в работу отдела и обязуюсь с особой старательностью выполнять свои обязанности. Со стандартными рабочими процедурами, правилами и политикой NanoTrasen ознакомлен. Ответственность, возлагаемую на себя, осознаю. + --------------------------------------------------------------------- + Подпись: "подпись заявителя" + Дата: "день"."месяц".2562 + Печать: + +paper-ser-text-request-botan = Запрос растений + --------------------------------------------------------------------- + Я, "имя заявителя", в должности "должность" запрашиваю растения в ботанике. + + Растения: "название растения" + + Причина: "причина". + --------------------------------------------------------------------- + Данное растения будет использовано исключительно в выше описанных целях. + --------------------------------------------------------------------- + Подпись: "подпись заявителя" + Дата: "день"."месяц".2562 + Печать: + +paper-syn-text-ha-ha = . + ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ + ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ + ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣤⣤⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ + ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣷⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⣾⣿⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ + ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣷⣦⣀⡄⠀⠀⣠⣤⣾⡿⢿⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ + ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⣿⣷⣜⣋⣸⣿⣿⣷⣤⣾⣿⣷⣤⣴⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ + ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⠏⠉⠻⣿⣿⣿⣿⣿⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ + ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢻⣿⣿⡿⠟⠉⠀⠀⠀⠨⠛⠿⠿⠿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ + ⠀⠀⠀⠀⠀⠀⢰⣦⡀⠀⠀⠀⠀⠀⠉⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⡆⠀⠀⠀⠀⠀⠀ + ⠀⠀⠀⢰⣶⣤⠀⠙⣿⣦⡀⠀⠀⠀⠀⠀⠀⠀⣠⡄⠀⣄⡀⠀⠀⠀⠀⠀⠀⠀⣠⣼⡟⠁⠀⢠⠄⠀⠀⠀ + ⠀⠀⠀⠈⢿⣯⡀⠀⠈⠛⢿⣷⣦⣤⣤⣤⣶⣿⣿⠃⠀⢻⣿⣶⣤⣤⣤⣤⣴⣿⠟⠉⠀⠀⢰⠃⠀⠀⠀⠀ + ⠀⠀⠀⠀⠘⠿⡀⠀⢀⠀⠀⠈⠙⠛⠛⠛⠋⠉⠀⠀⠀⠀⠈⠛⠛⠛⠛⠋⠁⠀⢀⣤⣴⣶⠃⠀⠀⠀⠀⠀ + ⠀⠀⠀⠀⠀⠀⠳⢶⣏⡀⣠⣤⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣀⣀⣠⣴⣾⡿⠿⠛⠁⠀⠀⠀⠀⠀⠀ + ⠀⠀⠀⠀⠀⠀⠀⠈⠻⠿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠛⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ + ⣷⣦⣀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠙⠛⠛⠿⠿⠿⠿⠿⠿⠿⠟⠛⠛⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣴ + ⣿⣿⣿⣿⣶⣤⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣤⣶⣿⣿⣿ + ⣿⣿⣿⣿⣿⣿⣿⣿⣶⣤⣀⠀⠀⢠⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⡄⠀⠀⣀⣤⣶⣿⣿⣿⣿⣿⣿⣿ + ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣦⡘⢿⡿⣿⠛⠉⠉⠉⠉⠙⠻⡿⢿⡿⢁⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ + ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⣴⣿⣦⠀⠀⠀⠀⢀⣼⣿⣦⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ + ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣟⠓⠀⠀⠀⠛⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ diff --git a/Resources/Prototypes/Catalog/Fills/Items/belt.yml b/Resources/Prototypes/Catalog/Fills/Items/belt.yml index 8a27e36f08..74ea42f5ae 100644 --- a/Resources/Prototypes/Catalog/Fills/Items/belt.yml +++ b/Resources/Prototypes/Catalog/Fills/Items/belt.yml @@ -26,6 +26,7 @@ - id: Welder - id: Multitool +# WD EDIT START - type: entity id: ClothingBeltChiefEngineerFilled parent: ClothingBeltChiefEngineer @@ -36,10 +37,11 @@ - id: PowerDrill - id: JawsOfLife - id: WelderExperimental - - id: Multitool + - id: Tricorder - id: HolofanProjector - - id: GasAnalyzer - - id: trayScanner + amount: 2 + - id: CableApcStack +# WD EDIT END - type: entity id: ClothingBeltSecurityFilled diff --git a/Resources/Prototypes/White/Catalog/uplink.yml b/Resources/Prototypes/White/Catalog/uplink.yml index 9e1dc62a02..b3ce4624c5 100644 --- a/Resources/Prototypes/White/Catalog/uplink.yml +++ b/Resources/Prototypes/White/Catalog/uplink.yml @@ -84,3 +84,15 @@ Telecrystal: 15 categories: - UplinkImplants + +# Night Vision +- type: listing + id: UplinkNightGoggles + name: ПНВ [Хамелеон] + description: Теперь ты видишь во тьме! + productEntity: ClothingEyesNightVisionGogglesSyndie + icon: { sprite: White/Clothing/Head/nightvision.rsi, state: icon } + cost: + Telecrystal: 3 + categories: + - UplinkArmor diff --git a/Resources/Prototypes/White/Entities/Clothing/Head/night_vision_goggle.yml b/Resources/Prototypes/White/Entities/Clothing/Head/night_vision_goggle.yml new file mode 100644 index 0000000000..a484c97e96 --- /dev/null +++ b/Resources/Prototypes/White/Entities/Clothing/Head/night_vision_goggle.yml @@ -0,0 +1,27 @@ +# Night Vision Goggles +- type: entity + parent: ClothingEyesBase + id: ClothingEyesNightVisionGoggles + name: ПНВ + description: Теперь ты видишь во тьме! + components: + - type: Sprite + sprite: White/Clothing/Head/nightvision.rsi + - type: Clothing + sprite: White/Clothing/Head/nightvision.rsi + - type: ClothingGrantComponent + component: + - type: NightVision + +# Night Vision Goggles (Chameleon) +- type: entity + parent: ClothingEyesNightVisionGoggles + id: ClothingEyesNightVisionGogglesSyndie + components: + - type: ChameleonClothing + slot: [ eyes ] + default: ClothingEyesGlassesSunglasses + - type: UserInterface + interfaces: + - key: enum.ChameleonUiKey.Key + type: ChameleonBoundUserInterface diff --git a/Resources/Prototypes/White/Entities/Objects/Tools/tricorder.yml b/Resources/Prototypes/White/Entities/Objects/Tools/tricorder.yml new file mode 100644 index 0000000000..9a6db54c9f --- /dev/null +++ b/Resources/Prototypes/White/Entities/Objects/Tools/tricorder.yml @@ -0,0 +1,53 @@ +- type: entity + parent: BaseItem + id: Tricorder + name: трикодер + description: Многофункциональное устройство, которое может выполнять огромный спектр задач. + components: + - type: Sprite + sprite: White/Items/Tools/tricorder.rsi + layers: + - state: icon + - state: on + map: [ "tricorder_power" ] + - type: Tricorder + - type: StaticPrice + price: 300 + - type: Tool + qualities: + - Pulsing + - type: ActivatableUI + key: enum.NetworkConfiguratorUiKey.List + inHandsOnly: true + - type: UserInterface + interfaces: + - key: enum.NetworkConfiguratorUiKey.List + type: NetworkConfiguratorBoundUserInterface + - key: enum.NetworkConfiguratorUiKey.Configure + type: NetworkConfiguratorBoundUserInterface + - key: enum.NetworkConfiguratorUiKey.Link + type: NetworkConfiguratorBoundUserInterface + - key: enum.GasAnalyzerUiKey.Key + type: GasAnalyzerBoundUserInterface + - key: enum.HealthAnalyzerUiKey.Key + type: HealthAnalyzerBoundUserInterface + - type: NetworkConfigurator + - type: Tag + tags: + - DroneUsable + - Multitool + - DiscreteHealthAnalyzer + - type: Clothing + sprite: Objects/Tools/multitool.rsi + quickEquip: false + slots: + - Belt + - type: EmitSoundOnPickup + sound: + path: /Audio/White/Items/handling/multitool_pickup.ogg + - type: EmitSoundOnDrop + sound: + path: /Audio/Items/multitool_drop.ogg + - type: EmitSoundOnLand + sound: + path: /Audio/Items/multitool_drop.ogg diff --git a/Resources/Prototypes/White/Entities/Structures/Machines/doc_printer.yml b/Resources/Prototypes/White/Entities/Structures/Machines/doc_printer.yml new file mode 100644 index 0000000000..8d813d12e0 --- /dev/null +++ b/Resources/Prototypes/White/Entities/Structures/Machines/doc_printer.yml @@ -0,0 +1,985 @@ +# Base Document Printer +- type: entity + id: BaseDocPrinter + parent: BaseMachinePowered + abstract: true + name: принтер + components: + - type: Appearance + - type: Physics + bodyType: Static + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeAabb + bounds: "-0.25,-0.25,0.25,0.25" + density: 25 + mask: + - TabletopMachineMask + layer: + - TabletopMachineLayer + - type: Lathe + - type: MaterialStorage + - type: ActivatableUI + key: enum.LatheUiKey.Key + - type: ActivatableUIRequiresPower + - type: UserInterface + interfaces: + - key: enum.LatheUiKey.Key + type: LatheBoundUserInterface + - key: enum.ResearchClientUiKey.Key + type: ResearchClientBoundUserInterface + - type: Transform + anchored: true + - type: Pullable + - type: StaticPrice + price: 800 + - type: ResearchClient + - type: TechnologyDatabase + +# Document Printer +- type: entity + parent: BaseDocPrinter + id: DocPrinter + name: принтер форм документов + description: Принтер для распечатки разных форм документов. Блюспейс-технологии на службе бюрократии! + components: + - type: Physics + bodyType: Static + - type: Sprite + sprite: White/Structures/Machines/doc_printer.rsi + drawdepth: SmallObjects + layers: + - state: icon + map: ["enum.LatheVisualLayers.IsRunning"] + - state: unlit + shader: unshaded + map: ["enum.PowerDeviceVisualLayers.Powered"] + - state: inserting + map: ["enum.MaterialStorageVisualLayers.Inserting"] + - type: Lathe + producingSound: /Audio/Machines/scanning.ogg + idleState: icon + runningState: printing + staticRecipes: + - BoxFolderGreenBAN + - PaperRequestTargetStation + - PaperReportCC + - PaperCompletedStation + - PaperFailedStation + - PaperRequestCentComm + - PaperRequestERT + - PaperRequestRXBZZ + - PaperRequestExecution + - PaperRequestMagistrat + - BoxFolderBlueBAN + - PaperDomotionComm + - PaperDismissalReq + - PaperRequestHeadCouncil + - PaperHeadCouncilEnd + - BoxFolderRedBAN + - PaperOrderSec + - PaperDonos + - PaperLic + - PaperTimeRequestWeapon + - PaperRequestExecutionSec + - PaperOrderWeapon + - PaperRequestGuard + - BoxFolderRYellowBAN + - PaperRequestBuild + - PaperRequestMaterial + - PaperReportElect + - PaperReportAtmos + - BoxFolderWhiteBAN + - PaperRequestNarco + - PaperRequestExecutionMed + - PaperWaiverOfClaims + - PaperDurka + - BoxFolderPurpleBAN + - PaperRequestReasonable + - PaperRequestLaw + - PaperBrain + - BoxFolderYellowBAN + - PaperCargoOrder + - BoxFolderGreyBAN + - PaperRequestUpID + - PaperRequestWork + - PaperRequestTrash + - PaperEndTrash + - PaperRequestCourt + - PaperDismissalSer + - PaperPromotion + - PaperRequestBotan + - type: EmagLatheRecipes + emagStaticRecipes: + - BoxFolderBlackBAN + - PaperSyndicat + - type: MaterialStorage + +# Recipe Paper +# Station->CentComm +- type: latheRecipe + id: PaperRequestTargetStation # Tide + result: PaperRequestTargetStation + completetime: 1 + materials: + Paper: 0 + +- type: latheRecipe + id: PaperReportCC # Tide + result: PaperReportCC + completetime: 1 + materials: + Paper: 0 + +- type: latheRecipe + id: PaperCompletedStation # Tide + result: PaperCompletedStation + completetime: 1 + materials: + Paper: 0 + +- type: latheRecipe + id: PaperFailedStation # Tide + result: PaperFailedStation + completetime: 1 + materials: + Paper: 0 + +- type: latheRecipe + id: PaperRequestCentComm # Tide + result: PaperRequestCentComm + completetime: 1 + materials: + Paper: 0 + +- type: latheRecipe + id: PaperRequestERT # Tide + result: PaperRequestERT + completetime: 1 + materials: + Paper: 0 + +- type: latheRecipe + id: PaperRequestRXBZZ # Tide + result: PaperRequestRXBZZ + completetime: 1 + materials: + Paper: 0 + +- type: latheRecipe + id: PaperRequestExecution # Tide + result: PaperRequestExecution + completetime: 1 + materials: + Paper: 0 + +- type: latheRecipe + id: PaperRequestMagistrat # Tide + result: PaperRequestMagistrat + completetime: 1 + materials: + Paper: 0 + +# PaperCommand +- type: latheRecipe + id: PaperDomotionComm # Tide + result: PaperDomotionComm + completetime: 1 + materials: + Paper: 0 + +- type: latheRecipe + id: PaperDismissalReq # Tide + result: PaperDismissalReq + completetime: 1 + materials: + Paper: 0 + +- type: latheRecipe + id: PaperRequestHeadCouncil # Tide + result: PaperRequestHeadCouncil + completetime: 1 + materials: + Paper: 0 + +- type: latheRecipe + id: PaperHeadCouncilEnd # Tide + result: PaperHeadCouncilEnd + completetime: 1 + materials: + Paper: 0 + +# PaperSecurity +- type: latheRecipe + id: PaperOrderSec # Tide + result: PaperOrderSec + completetime: 1 + materials: + Paper: 0 + +- type: latheRecipe + id: PaperRequestExecutionSec # Tide + result: PaperRequestExecutionSec + completetime: 1 + materials: + Paper: 0 + +- type: latheRecipe + id: PaperDonos # Tide + result: PaperDonos + completetime: 1 + materials: + Paper: 0 + +- type: latheRecipe + id: PaperLic # Tide + result: PaperLic + completetime: 1 + materials: + Paper: 0 + +- type: latheRecipe + id: PaperTimeRequestWeapon # Tide + result: PaperTimeRequestWeapon + completetime: 1 + materials: + Paper: 0 + +- type: latheRecipe + id: PaperOrderWeapon # Tide + result: PaperOrderWeapon + completetime: 1 + materials: + Paper: 0 + +- type: latheRecipe + id: PaperRequestGuard # Tide + result: PaperRequestGuard + completetime: 1 + materials: + Paper: 0 + +# PaperEng +- type: latheRecipe + id: PaperRequestBuild # Tide + result: PaperRequestBuild + completetime: 1 + materials: + Paper: 0 + +- type: latheRecipe + id: PaperRequestMaterial # Tide + result: PaperRequestMaterial + completetime: 1 + materials: + Paper: 0 + +- type: latheRecipe + id: PaperReportElect # Tide + result: PaperReportElect + completetime: 1 + materials: + Paper: 0 + +- type: latheRecipe + id: PaperReportAtmos # Tide + result: PaperReportAtmos + completetime: 1 + materials: + Paper: 0 + +# PaperMed +- type: latheRecipe + id: PaperRequestNarco # Tide + result: PaperRequestNarco + completetime: 1 + materials: + Paper: 0 + +- type: latheRecipe + id: PaperRequestExecutionMed # Tide + result: PaperRequestExecutionMed + completetime: 1 + materials: + Paper: 0 + +- type: latheRecipe + id: PaperWaiverOfClaims # Tide + result: PaperWaiverOfClaims + completetime: 1 + materials: + Paper: 0 + +- type: latheRecipe + id: PaperDurka # Tide + result: PaperDurka + completetime: 1 + materials: + Paper: 0 + +# PaperSci +- type: latheRecipe + id: PaperRequestReasonable # Tide + result: PaperRequestReasonable + completetime: 1 + materials: + Paper: 0 + +- type: latheRecipe + id: PaperRequestLaw # Tide + result: PaperRequestLaw + completetime: 1 + materials: + Paper: 0 + +- type: latheRecipe + id: PaperBrain # Tide + result: PaperBrain + completetime: 1 + materials: + Paper: 0 + +# PaperCargo +- type: latheRecipe + id: PaperCargoOrder # Tide + result: PaperCargoOrder + completetime: 1 + materials: + Paper: 0 + +# PaperService +- type: latheRecipe + id: PaperRequestUpID # Tide + result: PaperRequestUpID + completetime: 1 + materials: + Paper: 0 + +- type: latheRecipe + id: PaperRequestWork # Tide + result: PaperRequestWork + completetime: 1 + materials: + Paper: 0 + +- type: latheRecipe + id: PaperRequestTrash # Tide + result: PaperRequestTrash + completetime: 1 + materials: + Paper: 0 + +- type: latheRecipe + id: PaperEndTrash # Tide + result: PaperEndTrash + completetime: 1 + materials: + Paper: 0 + +- type: latheRecipe + id: PaperRequestCourt # Tide + result: PaperRequestCourt + completetime: 1 + materials: + Paper: 0 + +- type: latheRecipe + id: PaperDismissalSer # Tide + result: PaperDismissalSer + completetime: 1 + materials: + Paper: 0 + +- type: latheRecipe + id: PaperPromotion # Tide + result: PaperPromotion + completetime: 1 + materials: + Paper: 0 + +- type: latheRecipe + id: PaperRequestBotan # Tide + result: PaperRequestBotan + completetime: 1 + materials: + Paper: 0 + +# PaperSyndicat +- type: latheRecipe + id: PaperSyndicat # Tide + result: PaperSyndicat + completetime: 1 + materials: + Paper: 0 + +# PapersAll +# Station->CentComm +- type: entity + parent: Paper + id: PaperRequestTargetStation + noSpawn: true + name: запрос цели + components: + - type: Paper + content: paper-text-request + +- type: entity + parent: Paper + id: PaperReportCC + noSpawn: true + name: отчет о цели + components: + - type: Paper + content: paper-text-report + +- type: entity + parent: Paper + id: PaperCompletedStation + noSpawn: true + name: цель выполнена + components: + - type: Paper + content: paper-text-completed + +- type: entity + parent: Paper + id: PaperFailedStation + noSpawn: true + name: цель провалена + components: + - type: Paper + content: paper-text-failed + +- type: entity + parent: Paper + id: PaperRequestCentComm + noSpawn: true + name: запрос ПЦК + components: + - type: Paper + content: paper-text-request-CentComm + +- type: entity + parent: Paper + id: PaperRequestERT + noSpawn: true + name: запрос ОБР + components: + - type: Paper + content: paper-text-request-ERT + +- type: entity + parent: Paper + id: PaperRequestRXBZZ + noSpawn: true + name: запрос РХБЗЗ + components: + - type: Paper + content: paper-text-request-RXBZZ + +- type: entity + parent: Paper + id: PaperRequestExecution + noSpawn: true + name: жалоба высшей степени + components: + - type: Paper + content: paper-text-request-high-order-compaint + +- type: entity + parent: Paper + id: PaperRequestMagistrat + noSpawn: true + name: запрос в магистрат + components: + - type: Paper + content: paper-text-request-magistrat + +# PaperCommand +- type: entity + parent: Paper + id: PaperDomotionComm + noSpawn: true + name: запрос на понижение + components: + - type: Paper + content: paper-comm-text-crew-mem-domotion + +- type: entity + parent: Paper + id: PaperDismissalReq + noSpawn: true + name: запрос на увольнение + components: + - type: Paper + content: paper-comm-text-crew-mem-dismissal + +- type: entity + parent: Paper + id: PaperRequestHeadCouncil + noSpawn: true + name: запрос на голосование глав + components: + - type: Paper + content: paper-comm-text-request-council + +- type: entity + parent: Paper + id: PaperHeadCouncilEnd + noSpawn: true + name: отчет по голосованию глав + components: + - type: Paper + content: paper-comm-text-council-end + +# PaperSecurity +- type: entity + parent: Paper + id: PaperOrderSec + noSpawn: true + name: ордер на арест + components: + - type: Paper + content: paper-sec-text-order + +- type: entity + parent: Paper + id: PaperDonos + noSpawn: true + name: жалоба + components: + - type: Paper + content: paper-sec-text-complaint + +- type: entity + parent: Paper + id: PaperLic + noSpawn: true + name: разрешение на ношение оружия + components: + - type: Paper + content: paper-sec-text-lic + +- type: entity + parent: Paper + id: PaperTimeRequestWeapon + noSpawn: true + name: временный запрос на оружие + components: + - type: Paper + content: paper-sec-text-request-weapon + +- type: entity + parent: Paper + id: PaperRequestExecutionSec + noSpawn: true + name: запрос на казнь + components: + - type: Paper + content: paper-sec-text-request-execution + +- type: entity + parent: Paper + id: PaperOrderWeapon + noSpawn: true + name: разрешение на заказ оружия + components: + - type: Paper + content: paper-sec-text-request-cargo-weapon + +- type: entity + parent: Paper + id: PaperRequestGuard + noSpawn: true + name: программа защиты свидетелей + components: + - type: Paper + content: paper-sec-text-request-guard + +# PaperEng +- type: entity + parent: Paper + id: PaperRequestBuild + noSpawn: true + name: разрешение о проведении строительных работ + components: + - type: Paper + content: paper-eng-text-request-build + +- type: entity + parent: Paper + id: PaperRequestMaterial + noSpawn: true + name: запрос материалов + components: + - type: Paper + content: paper-eng-text-request-material + +- type: entity + parent: Paper + id: PaperReportElect + noSpawn: true + name: отчет об электроснабжении + components: + - type: Paper + content: paper-eng-text-report-elect + +- type: entity + parent: Paper + id: PaperReportAtmos + noSpawn: true + name: отчет об атмосфере + components: + - type: Paper + content: paper-eng-text-report-atmos + +# PaperMed +- type: entity + parent: Paper + id: PaperRequestNarco + noSpawn: true + name: лекарственный рецепт + components: + - type: Paper + content: paper-med-text-request-perm-narc + +- type: entity + parent: Paper + id: PaperRequestExecutionMed + noSpawn: true + name: запрос на проведение эвтаназии + components: + - type: Paper + content: paper-med-text-request-execution + +- type: entity + parent: Paper + id: PaperWaiverOfClaims + noSpawn: true + name: отказ от претензий + components: + - type: Paper + content: paper-med-text-waiver-claims + +- type: entity + parent: Paper + id: PaperDurka + noSpawn: true + name: заключение о невменяемости + components: + - type: Paper + content: paper-med-text-durka + +# PaperSci +- type: entity + parent: Paper + id: PaperRequestReasonable + noSpawn: true + name: признание разумности существа + components: + - type: Paper + content: paper-sci-text-reasonable + +- type: entity + parent: Paper + id: PaperRequestLaw + noSpawn: true + name: постановление о изменении законов боргов + components: + - type: Paper + content: paper-sci-text-request-law + +- type: entity + parent: Paper + id: PaperBrain + noSpawn: true + name: постановление о пересадке мозга + components: + - type: Paper + content: paper-sci-text-brain + +# PaperCargo +- type: entity + parent: Paper + id: PaperCargoOrder + noSpawn: true + name: заказ товара + components: + - type: Paper + content: paper-car-text-order + +# PaperService +- type: entity + parent: Paper + id: PaperRequestUpID + noSpawn: true + name: повышение доступа + components: + - type: Paper + content: paper-ser-text-up-IDcard + +- type: entity + parent: Paper + id: PaperRequestWork + noSpawn: true + name: ускоренный найм + components: + - type: Paper + content: paper-ser-text-work + +- type: entity + parent: Paper + id: PaperRequestTrash + noSpawn: true + name: свидетельство о заключении брака + components: + - type: Paper + content: paper-ser-text-trash + +- type: entity + parent: Paper + id: PaperEndTrash + noSpawn: true + name: свидетельство о расторжении брака + components: + - type: Paper + content: paper-ser-text-trash-end + +- type: entity + parent: Paper + id: PaperRequestCourt + noSpawn: true + name: инициация судебного процесса + components: + - type: Paper + content: paper-ser-text-court + +- type: entity + parent: Paper + id: PaperDismissalSer + noSpawn: true + name: увольнение + components: + - type: Paper + content: paper-ser-text-dismissal + +- type: entity + parent: Paper + id: PaperPromotion + noSpawn: true + name: повышение + components: + - type: Paper + content: paper-ser-text-promotion + +- type: entity + parent: Paper + id: PaperRequestBotan + noSpawn: true + name: запрос растений + components: + - type: Paper + content: paper-ser-text-request-botan + +# PaperSyndicat +- type: entity + parent: Paper + id: PaperSyndicat + noSpawn: true + name: секретные документы + components: + - type: Paper + content: paper-syn-text-ha-ha + +# BoxFolder +- type: entity + id: BoxFolderRedBAN + parent: BoxFolderBase + noSpawn: true + name: формы службы безопасноти + suffix: Red + components: + - type: Sprite + sprite: White/Structures/Machines/doc_printer.rsi + layers: + - state: folder-sec + - type: TimedDespawn + lifetime: 0,1 + +- type: entity + id: BoxFolderBlueBAN + parent: BoxFolderBase + noSpawn: true + name: формы командования + suffix: Blue + components: + - type: Sprite + sprite: White/Structures/Machines/doc_printer.rsi + layers: + - state: folder-com + - type: TimedDespawn + lifetime: 0,1 + +- type: entity + id: BoxFolderYellowBAN + parent: BoxFolderBase + noSpawn: true + name: формы карго + suffix: Yellow + components: + - type: Sprite + sprite: White/Structures/Machines/doc_printer.rsi + layers: + - state: folder-car + - type: TimedDespawn + lifetime: 0,1 + +- type: entity + id: BoxFolderWhiteBAN + parent: BoxFolderBase + noSpawn: true + name: формы медиков + suffix: White + components: + - type: Sprite + sprite: White/Structures/Machines/doc_printer.rsi + layers: + - state: folder-med + - type: TimedDespawn + lifetime: 0,1 + +- type: entity + id: BoxFolderGreyBAN + parent: BoxFolderBase + noSpawn: true + name: формы сервиса + suffix: Grey + components: + - type: Sprite + sprite: White/Structures/Machines/doc_printer.rsi + layers: + - state: folder-ser + - type: TimedDespawn + lifetime: 0,1 + +- type: entity + id: BoxFolderGreenBAN + parent: BoxFolderBase + noSpawn: true + name: формы для ЦентКома + suffix: Green + components: + - type: Sprite + sprite: White/Structures/Machines/doc_printer.rsi + layers: + - state: folder-CC + - type: TimedDespawn + lifetime: 0,1 + +- type: entity + id: BoxFolderRYellowBAN + parent: BoxFolderBase + noSpawn: true + name: формы инженеров + suffix: RYellow + components: + - type: Sprite + sprite: White/Structures/Machines/doc_printer.rsi + layers: + - state: folder-eng + - type: TimedDespawn + lifetime: 0,1 + +- type: entity + id: BoxFolderPurpleBAN + parent: BoxFolderBase + noSpawn: true + name: формы учёных + suffix: Purple + components: + - type: Sprite + sprite: White/Structures/Machines/doc_printer.rsi + layers: + - state: folder-sci + - type: TimedDespawn + lifetime: 0,1 + +- type: entity + id: BoxFolderBlackBAN + parent: BoxFolderBase + noSpawn: true + name: формы J@4D*S + suffix: Black + components: + - type: Sprite + sprite: White/Structures/Machines/doc_printer.rsi + layers: + - state: folder-syn + - type: TimedDespawn + lifetime: 0,1 + +# RecipeBoxFolder +- type: latheRecipe + id: BoxFolderGreenBAN # Tide + result: BoxFolderGreenBAN + completetime: 1 + materials: + Paper: 1 + +- type: latheRecipe + id: BoxFolderGreyBAN # Tide + result: BoxFolderGreyBAN + completetime: 1 + materials: + Paper: 1 + +- type: latheRecipe + id: BoxFolderWhiteBAN # Tide + result: BoxFolderWhiteBAN + completetime: 1 + materials: + Paper: 1 + +- type: latheRecipe + id: BoxFolderYellowBAN # Tide + result: BoxFolderYellowBAN + completetime: 1 + materials: + Paper: 1 + +- type: latheRecipe + id: BoxFolderBlueBAN # Tide + result: BoxFolderBlueBAN + completetime: 1 + materials: + Paper: 1 + +- type: latheRecipe + id: BoxFolderRedBAN # Tide + result: BoxFolderRedBAN + completetime: 1 + materials: + Paper: 1 + +- type: latheRecipe + id: BoxFolderRYellowBAN # Tide + result: BoxFolderRYellowBAN + completetime: 1 + materials: + Paper: 1 + +- type: latheRecipe + id: BoxFolderPurpleBAN # Tide + result: BoxFolderPurpleBAN + completetime: 1 + materials: + Paper: 1 + +- type: latheRecipe + id: BoxFolderBlackBAN # Tide + result: BoxFolderBlackBAN + completetime: 1 + materials: + Paper: 1 diff --git a/Resources/Prototypes/White/Recipes/lathe_recipes.yml b/Resources/Prototypes/White/Recipes/lathe_recipes.yml index 85f5284bf7..1680f0e9fe 100644 --- a/Resources/Prototypes/White/Recipes/lathe_recipes.yml +++ b/Resources/Prototypes/White/Recipes/lathe_recipes.yml @@ -11,3 +11,13 @@ completetime: 5 materials: Steel: 1500 +- type: latheRecipe + id: ClothingEyesNightVisionGoggles + result: ClothingEyesNightVisionGoggles + completetime: 2 + materials: + Steel: 200 + Glass: 100 + Silver: 100 + Gold: 100 + diff --git a/Resources/Prototypes/White/Research/experimental.yml b/Resources/Prototypes/White/Research/experimental.yml new file mode 100644 index 0000000000..5df1e504e2 --- /dev/null +++ b/Resources/Prototypes/White/Research/experimental.yml @@ -0,0 +1,43 @@ +- type: technology + id: AdvancedRobotics + name: research-technology-advanced-robotics + icon: + sprite: White/Mobs/Player/Borgs/cyborg.rsi + state: icon + discipline: Experimental + tier: 1 + cost: 5000 + recipeUnlocks: + - CyborgMonitoringComputerCircuitboard + - BorgChargerMachineCircuitboard + - CyborgMonitoringServerMachineCircuitboard + - PositronicBrain + +- type: technology + id: UpgradeBorgModule + name: research-technology-upgrade-borg + icon: + sprite: White/Objects/Devices/cyborgradiomodule.rsi + state: icon + discipline: Experimental + tier: 2 + cost: 15000 + recipeUnlocks: + - CyborgHUDModuleSec + - CyborgHUDModuleMed + - CyborgSpeedModule + - CyborgInstrumentModuleFilled + - CyborgJetpackModule + +# Night Vision Tech +- type: technology + id: NightVisionTech + name: night vision technology + icon: + sprite: White/Clothing/Head/nightvision.rsi + state: icon + discipline: Experimental + tier: 2 + cost: 10000 + recipeUnlocks: + - ClothingEyesNightVisionGoggles diff --git a/Resources/Textures/White/Clothing/Head/nightvision.rsi/equipped-EYES.png b/Resources/Textures/White/Clothing/Head/nightvision.rsi/equipped-EYES.png new file mode 100644 index 0000000000..7d15515f7a Binary files /dev/null and b/Resources/Textures/White/Clothing/Head/nightvision.rsi/equipped-EYES.png differ diff --git a/Resources/Textures/White/Clothing/Head/nightvision.rsi/icon.png b/Resources/Textures/White/Clothing/Head/nightvision.rsi/icon.png new file mode 100644 index 0000000000..bf770f70f8 Binary files /dev/null and b/Resources/Textures/White/Clothing/Head/nightvision.rsi/icon.png differ diff --git a/Resources/Textures/White/Clothing/Head/nightvision.rsi/inhand-left.png b/Resources/Textures/White/Clothing/Head/nightvision.rsi/inhand-left.png new file mode 100644 index 0000000000..995b37471b Binary files /dev/null and b/Resources/Textures/White/Clothing/Head/nightvision.rsi/inhand-left.png differ diff --git a/Resources/Textures/White/Clothing/Head/nightvision.rsi/inhand-right.png b/Resources/Textures/White/Clothing/Head/nightvision.rsi/inhand-right.png new file mode 100644 index 0000000000..c3efa67f83 Binary files /dev/null and b/Resources/Textures/White/Clothing/Head/nightvision.rsi/inhand-right.png differ diff --git a/Resources/Textures/White/Clothing/Head/nightvision.rsi/meta.json b/Resources/Textures/White/Clothing/Head/nightvision.rsi/meta.json new file mode 100644 index 0000000000..541bdfbedc --- /dev/null +++ b/Resources/Textures/White/Clothing/Head/nightvision.rsi/meta.json @@ -0,0 +1,26 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/5a73e8f825ff279e82949b9329783a9e3070e2da", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-EYES", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/White/Items/Tools/tricorder.rsi/icon.png b/Resources/Textures/White/Items/Tools/tricorder.rsi/icon.png new file mode 100644 index 0000000000..3517223cba Binary files /dev/null and b/Resources/Textures/White/Items/Tools/tricorder.rsi/icon.png differ diff --git a/Resources/Textures/White/Items/Tools/tricorder.rsi/meta.json b/Resources/Textures/White/Items/Tools/tricorder.rsi/meta.json new file mode 100644 index 0000000000..9013f6b457 --- /dev/null +++ b/Resources/Textures/White/Items/Tools/tricorder.rsi/meta.json @@ -0,0 +1,20 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "on" + }, + { + "name": "off" + } + ] +} diff --git a/Resources/Textures/White/Items/Tools/tricorder.rsi/off.png b/Resources/Textures/White/Items/Tools/tricorder.rsi/off.png new file mode 100644 index 0000000000..3e0f93f2c3 Binary files /dev/null and b/Resources/Textures/White/Items/Tools/tricorder.rsi/off.png differ diff --git a/Resources/Textures/White/Items/Tools/tricorder.rsi/on.png b/Resources/Textures/White/Items/Tools/tricorder.rsi/on.png new file mode 100644 index 0000000000..0c86a50d2e Binary files /dev/null and b/Resources/Textures/White/Items/Tools/tricorder.rsi/on.png differ diff --git a/Resources/Textures/White/Structures/Machines/doc_printer.rsi/folder-CC.png b/Resources/Textures/White/Structures/Machines/doc_printer.rsi/folder-CC.png new file mode 100644 index 0000000000..f740aa3c9b Binary files /dev/null and b/Resources/Textures/White/Structures/Machines/doc_printer.rsi/folder-CC.png differ diff --git a/Resources/Textures/White/Structures/Machines/doc_printer.rsi/folder-base.png b/Resources/Textures/White/Structures/Machines/doc_printer.rsi/folder-base.png new file mode 100644 index 0000000000..5fbb47268f Binary files /dev/null and b/Resources/Textures/White/Structures/Machines/doc_printer.rsi/folder-base.png differ diff --git a/Resources/Textures/White/Structures/Machines/doc_printer.rsi/folder-car.png b/Resources/Textures/White/Structures/Machines/doc_printer.rsi/folder-car.png new file mode 100644 index 0000000000..068d11192e Binary files /dev/null and b/Resources/Textures/White/Structures/Machines/doc_printer.rsi/folder-car.png differ diff --git a/Resources/Textures/White/Structures/Machines/doc_printer.rsi/folder-com.png b/Resources/Textures/White/Structures/Machines/doc_printer.rsi/folder-com.png new file mode 100644 index 0000000000..3c679a983c Binary files /dev/null and b/Resources/Textures/White/Structures/Machines/doc_printer.rsi/folder-com.png differ diff --git a/Resources/Textures/White/Structures/Machines/doc_printer.rsi/folder-eng.png b/Resources/Textures/White/Structures/Machines/doc_printer.rsi/folder-eng.png new file mode 100644 index 0000000000..d99478b036 Binary files /dev/null and b/Resources/Textures/White/Structures/Machines/doc_printer.rsi/folder-eng.png differ diff --git a/Resources/Textures/White/Structures/Machines/doc_printer.rsi/folder-med.png b/Resources/Textures/White/Structures/Machines/doc_printer.rsi/folder-med.png new file mode 100644 index 0000000000..e91ba0f29a Binary files /dev/null and b/Resources/Textures/White/Structures/Machines/doc_printer.rsi/folder-med.png differ diff --git a/Resources/Textures/White/Structures/Machines/doc_printer.rsi/folder-overlay-paper.png b/Resources/Textures/White/Structures/Machines/doc_printer.rsi/folder-overlay-paper.png new file mode 100644 index 0000000000..82f57cdd65 Binary files /dev/null and b/Resources/Textures/White/Structures/Machines/doc_printer.rsi/folder-overlay-paper.png differ diff --git a/Resources/Textures/White/Structures/Machines/doc_printer.rsi/folder-sci.png b/Resources/Textures/White/Structures/Machines/doc_printer.rsi/folder-sci.png new file mode 100644 index 0000000000..e97c6682f6 Binary files /dev/null and b/Resources/Textures/White/Structures/Machines/doc_printer.rsi/folder-sci.png differ diff --git a/Resources/Textures/White/Structures/Machines/doc_printer.rsi/folder-sec.png b/Resources/Textures/White/Structures/Machines/doc_printer.rsi/folder-sec.png new file mode 100644 index 0000000000..ec61feaf9c Binary files /dev/null and b/Resources/Textures/White/Structures/Machines/doc_printer.rsi/folder-sec.png differ diff --git a/Resources/Textures/White/Structures/Machines/doc_printer.rsi/folder-ser.png b/Resources/Textures/White/Structures/Machines/doc_printer.rsi/folder-ser.png new file mode 100644 index 0000000000..554cb609fe Binary files /dev/null and b/Resources/Textures/White/Structures/Machines/doc_printer.rsi/folder-ser.png differ diff --git a/Resources/Textures/White/Structures/Machines/doc_printer.rsi/folder-syn.png b/Resources/Textures/White/Structures/Machines/doc_printer.rsi/folder-syn.png new file mode 100644 index 0000000000..6de46fdb0e Binary files /dev/null and b/Resources/Textures/White/Structures/Machines/doc_printer.rsi/folder-syn.png differ diff --git a/Resources/Textures/White/Structures/Machines/doc_printer.rsi/icon.png b/Resources/Textures/White/Structures/Machines/doc_printer.rsi/icon.png new file mode 100644 index 0000000000..e7e0428094 Binary files /dev/null and b/Resources/Textures/White/Structures/Machines/doc_printer.rsi/icon.png differ diff --git a/Resources/Textures/White/Structures/Machines/doc_printer.rsi/idle.png b/Resources/Textures/White/Structures/Machines/doc_printer.rsi/idle.png new file mode 100644 index 0000000000..10ac83d757 Binary files /dev/null and b/Resources/Textures/White/Structures/Machines/doc_printer.rsi/idle.png differ diff --git a/Resources/Textures/White/Structures/Machines/doc_printer.rsi/inserting.png b/Resources/Textures/White/Structures/Machines/doc_printer.rsi/inserting.png new file mode 100644 index 0000000000..f966089dae Binary files /dev/null and b/Resources/Textures/White/Structures/Machines/doc_printer.rsi/inserting.png differ diff --git a/Resources/Textures/White/Structures/Machines/doc_printer.rsi/meta.json b/Resources/Textures/White/Structures/Machines/doc_printer.rsi/meta.json new file mode 100644 index 0000000000..75d284d44e --- /dev/null +++ b/Resources/Textures/White/Structures/Machines/doc_printer.rsi/meta.json @@ -0,0 +1,96 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Made by Valentyi", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "unlit", + "delays": [ + [ + 0.6, + 0.7, + 0.6, + 0.7 + ] + ] + }, + { + "name": "folder-base" + }, + { + "name": "idle" + }, + { + "name": "folder-CC" + }, + { + "name": "folder-overlay-paper" + }, + { + "name": "folder-med" + }, + { + "name": "folder-sec" + }, + { + "name": "folder-eng" + }, + { + "name": "folder-sci" + }, + { + "name": "folder-car" + }, + { + "name": "folder-syn" + }, + { + "name": "folder-com" + }, + { + "name": "folder-ser" + }, + { + "name": "inserting", + "delays": [ + [ + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2 + ] + ] + }, + { + "name": "printing", + "delays": [ + [ + 0.4, + 0.4, + 0.4, + 0.4, + 0.4, + 0.4, + 0.4, + 0.4, + 0.4 + ] + ] + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/White/Structures/Machines/doc_printer.rsi/printing.png b/Resources/Textures/White/Structures/Machines/doc_printer.rsi/printing.png new file mode 100644 index 0000000000..802903c410 Binary files /dev/null and b/Resources/Textures/White/Structures/Machines/doc_printer.rsi/printing.png differ diff --git a/Resources/Textures/White/Structures/Machines/doc_printer.rsi/unlit.png b/Resources/Textures/White/Structures/Machines/doc_printer.rsi/unlit.png new file mode 100644 index 0000000000..c7b0bff3ea Binary files /dev/null and b/Resources/Textures/White/Structures/Machines/doc_printer.rsi/unlit.png differ