From aebc4c30d6d828f961fd8d63722026613284239b Mon Sep 17 00:00:00 2001 From: Stalen <33173619+stalengd@users.noreply.github.com> Date: Sun, 22 Dec 2024 06:27:47 +0300 Subject: [PATCH] Adapt holopad (#2379) --- Content.Client/Holopad/HolopadSystem.cs | 23 +- Content.Server/Holopad/HolopadSystem.cs | 23 +- Content.Server/Telephone/TelephoneSystem.cs | 9 + .../Holopad/HolopadUserComponent.cs | 8 + Resources/Locale/ru-RU/holopad/holopad.ftl | 438 ++++++++++++++++++ .../Locale/ru-RU/telephone/telephone.ftl | 8 + Resources/Locale/ru-RU/wires/wire-names.ftl | 1 + .../Entities/Mobs/Player/silicon.yml | 4 + 8 files changed, 507 insertions(+), 7 deletions(-) create mode 100644 Resources/Locale/ru-RU/holopad/holopad.ftl create mode 100644 Resources/Locale/ru-RU/telephone/telephone.ftl diff --git a/Content.Client/Holopad/HolopadSystem.cs b/Content.Client/Holopad/HolopadSystem.cs index 9012cb0cb478cd..00aa62aedec05c 100644 --- a/Content.Client/Holopad/HolopadSystem.cs +++ b/Content.Client/Holopad/HolopadSystem.cs @@ -6,6 +6,8 @@ using Robust.Shared.Prototypes; using Robust.Shared.Timing; using System.Linq; +using System.Numerics; +using Vector3 = Robust.Shared.Maths.Vector3; namespace Content.Client.Holopad; @@ -112,16 +114,27 @@ private void OnPlayerSpriteStateRequest(PlayerSpriteStateRequest ev) } // Return the recorded data to the server - var evResponse = new PlayerSpriteStateMessage(ev.TargetPlayer, spriteLayerData.ToArray()); + var evResponse = new PlayerSpriteStateMessage(ev.TargetPlayer, spriteLayerData.ToArray()) + // SS220 Holopad adapt begin + { + Scale = playerSprite.Scale, + }; + // SS220 Holopad adapt end RaiseNetworkEvent(evResponse); } private void OnPlayerSpriteStateMessage(PlayerSpriteStateMessage ev) { - UpdateHologramSprite(GetEntity(ev.SpriteEntity), ev.SpriteLayerData); + // SS220 Holopad adapt begin + //UpdateHologramSprite(GetEntity(ev.SpriteEntity), ev.SpriteLayerData); + UpdateHologramSprite(GetEntity(ev.SpriteEntity), ev.SpriteLayerData, ev.Scale); + // SS220 Holopad adapt end } - private void UpdateHologramSprite(EntityUid uid, PrototypeLayerData[]? layerData = null) + // SS220 Holopad adapt begin + //private void UpdateHologramSprite(EntityUid uid, PrototypeLayerData[]? layerData = null) + private void UpdateHologramSprite(EntityUid uid, PrototypeLayerData[]? layerData = null, Vector2? scale = null) + // SS220 Holopad adapt end { if (!TryComp(uid, out var hologramSprite)) return; @@ -150,6 +163,10 @@ private void UpdateHologramSprite(EntityUid uid, PrototypeLayerData[]? layerData hologramSprite.AddLayer(layerData[i], i); } + // SS220 Holopad adapt begin + hologramSprite.Scale = scale.GetValueOrDefault(Vector2.One); + // SS220 Holopad adapt end + UpdateHologramShader(uid, hologramSprite, holopadhologram); } diff --git a/Content.Server/Holopad/HolopadSystem.cs b/Content.Server/Holopad/HolopadSystem.cs index 01307d6863b563..109e416dfa0cba 100644 --- a/Content.Server/Holopad/HolopadSystem.cs +++ b/Content.Server/Holopad/HolopadSystem.cs @@ -18,6 +18,7 @@ using Robust.Shared.Timing; using Robust.Shared.Utility; using System.Linq; +using System.Numerics; namespace Content.Server.Holopad; @@ -331,7 +332,10 @@ private void OnPlayerSpriteStateMessage(PlayerSpriteStateMessage ev, EntitySessi if (!TryComp(uid, out var holopadUser)) return; - SyncHolopadUserWithLinkedHolograms((uid.Value, holopadUser), ev.SpriteLayerData); + // SS220 Holopad adapt begin + //SyncHolopadUserWithLinkedHolograms((uid.Value, holopadUser), ev.SpriteLayerData); + SyncHolopadUserWithLinkedHolograms((uid.Value, holopadUser), ev.SpriteLayerData, ev.Scale); + // SS220 Holopad adapt end } #endregion @@ -557,7 +561,10 @@ private void LinkHolopadToUser(Entity entity, EntityUid user) if (TryComp(user, out var avatar)) { - SyncHolopadUserWithLinkedHolograms((user, holopadUser), avatar.LayerData); + // SS220 Holopad adapt begin + //SyncHolopadUserWithLinkedHolograms((user, holopadUser), avatar.LayerData); + SyncHolopadUserWithLinkedHolograms((user, holopadUser), avatar.LayerData, Vector2.One); + // SS220 Holopad adapt end return; } @@ -625,7 +632,10 @@ private void RequestHolopadUserSpriteUpdate(Entity user) RaiseNetworkEvent(ev); } - private void SyncHolopadUserWithLinkedHolograms(Entity entity, PrototypeLayerData[]? spriteLayerData) + // SS220 Holopad adapt begin + //private void SyncHolopadUserWithLinkedHolograms(Entity entity, PrototypeLayerData[]? spriteLayerData) + private void SyncHolopadUserWithLinkedHolograms(Entity entity, PrototypeLayerData[]? spriteLayerData, Vector2 scale) + // SS220 Holopad adapt end { foreach (var linkedHolopad in entity.Comp.LinkedHolopads) { @@ -635,7 +645,12 @@ private void SyncHolopadUserWithLinkedHolograms(Entity ent continue; var netHologram = GetNetEntity(receivingHolopad.Comp.Hologram.Value); - var ev = new PlayerSpriteStateMessage(netHologram, spriteLayerData); + var ev = new PlayerSpriteStateMessage(netHologram, spriteLayerData) + // SS220 Holopad adapt begin + { + Scale = scale + }; + // SS220 Holopad adapt end RaiseNetworkEvent(ev); } } diff --git a/Content.Server/Telephone/TelephoneSystem.cs b/Content.Server/Telephone/TelephoneSystem.cs index d4398c76d3f487..b4874191074c89 100644 --- a/Content.Server/Telephone/TelephoneSystem.cs +++ b/Content.Server/Telephone/TelephoneSystem.cs @@ -21,6 +21,7 @@ using System.Linq; using Content.Shared.Silicons.StationAi; using Content.Shared.Silicons.Borgs.Components; +using Content.Shared.SS220.TTS; namespace Content.Server.Telephone; @@ -108,6 +109,14 @@ private void OnTelephoneMessageReceived(Entity entity, ref T ("speaker", Name(entity)), ("originalName", nameEv.VoiceName)); + // SS220 Holopad adapt begin + if (TryComp(args.MessageSource, out var sourceTts)) + { + var ttsComponent = EnsureComp(entity); + ttsComponent.VoicePrototypeId = sourceTts.VoicePrototypeId; + } + // SS220 Holopad adapt end + var volume = entity.Comp.SpeakerVolume == TelephoneVolume.Speak ? InGameICChatType.Speak : InGameICChatType.Whisper; _chat.TrySendInGameICMessage(entity, args.Message, volume, ChatTransmitRange.GhostRangeLimit, nameOverride: name, checkRadioPrefix: false); } diff --git a/Content.Shared/Holopad/HolopadUserComponent.cs b/Content.Shared/Holopad/HolopadUserComponent.cs index 9ff20c2e7b3583..64add2c9684a5d 100644 --- a/Content.Shared/Holopad/HolopadUserComponent.cs +++ b/Content.Shared/Holopad/HolopadUserComponent.cs @@ -1,3 +1,4 @@ +using System.Numerics; using Robust.Shared.GameStates; using Robust.Shared.Serialization; @@ -96,6 +97,13 @@ public sealed class PlayerSpriteStateMessage : EntityEventArgs /// public readonly PrototypeLayerData[]? SpriteLayerData; + // SS220 Holopad adapt begin + /// + /// Sprite scale + /// + public Vector2 Scale { get; init; } = Vector2.One; + // SS220 Holopad adapt end + public PlayerSpriteStateMessage(NetEntity spriteEntity, PrototypeLayerData[]? spriteLayerData = null) { SpriteEntity = spriteEntity; diff --git a/Resources/Locale/ru-RU/holopad/holopad.ftl b/Resources/Locale/ru-RU/holopad/holopad.ftl new file mode 100644 index 00000000000000..62db90fbee717b --- /dev/null +++ b/Resources/Locale/ru-RU/holopad/holopad.ftl @@ -0,0 +1,438 @@ +# Window headers +holopad-window-title = {CAPITALIZE($title)} +holopad-window-subtitle = [color=white][bold]Голографическая система коммуникации[/bold][/color] +holopad-window-options = [color=darkgray][font size=10][italic]Пожалуйста, выберите вариант из списка ниже[/italic][/font][/color] + +# Call status +holopad-window-no-calls-in-progress = Нет активных звонков +holopad-window-incoming-call = Входящий звонок от: +holopad-window-outgoing-call = Устанавливается соединение... +holopad-window-call-in-progress = Звонок в процессе +holopad-window-call-ending = Отключение... +holopad-window-call-rejected = Невозможно установить соединение +holopad-window-ai-request = Ваше присутствие запрошено от: +holopad-window-emergency-broadcast-in-progress = [color=#cf2f2f][bold]Ведётся экстренная трансляция[/bold][/color] +holopad-window-controls-locked-out = Управление этим устройством закреплено за: +holopad-window-controls-unlock-countdown = Будет автоматически разблокировано через: {$countdown} + +# Buttons +holopad-window-answer-call = Ответить +holopad-window-end-call = Завершить +holopad-window-request-station-ai = Запросить станционный ИИ +holopad-window-activate-projector = Активировать проектор +holopad-window-emergency-broadcast = Экстренная трансляция +holopad-window-emergency-broadcast-with-countdown = Экстренная трансляция ({$countdown}) +holopad-window-access-denied = Доступ запрещён + +# Contact list +holopad-window-select-contact-from-list = Выберите контакт для начала звонка +holopad-window-fetching-contacts-list = Нет доступных для соединения голопадов +holopad-window-contact-label = {CAPITALIZE($label)} + +# Flavor +holopad-window-flavor-left = ⚠ Не наступать пока проектор активен +holopad-window-flavor-right = v2.2.0 + +# Holograms +holopad-hologram-name = голограмма {$name} + +# Holopad actions +holopad-activate-projector-verb = Активировать проектор голопада +holopad-ai-is-unable-to-reach-holopad = Вы не можете подключиться к источнику вызова, он слишком далеко от вашего ядра. +holopad-ai-is-unable-to-activate-projector = Вы не можете активировать проектор голопада, он слишком далеко от вашего ядра. + +# Mapping prototypes +# General +holopad-general-tools = Общие - Инструменты +holopad-general-cryosleep = Общие - Криокапсулы +holopad-general-theater = Общие - Театр +holopad-general-disposals = Общие - Мусоросборник +holopad-general-eva = Общие - Хранилище ЕВА +holopad-general-lounge = Общие - Комната отдыха +holopad-general-arcade = Общие - Аркады +holopad-general-evac = Общие - Эвакуация +holopad-general-arrivals = Общие - Прибытие + +# Command +holopad-command-bridge = Командование - Мостик +holopad-command-vault = Командование - Хранилище +holopad-command-bridge-hallway = Командование - Коридор мостика +holopad-command-meeting-room = Командование - Конференц-зал +holopad-command-lounge = Командование - Комната отдыха +holopad-command-captain = Командование - Капитан +holopad-command-hop = Командование - ГП +holopad-command-cmo = Командование - ГВ +holopad-command-qm = Командование - КМ +holopad-command-ce = Командование - СИ +holopad-command-rd = Командование - НР +holopad-command-hos = Командование - ГСБ + +# Science +holopad-science-anomaly = Научный - Аномалии +holopad-science-artifact = Научный - Артефакты +holopad-science-robotics = Научный - Роботехника +holopad-science-rnd = Научный - НИО +holopad-science-front = Научный - Стойка +holopad-science-breakroom = Научный - Комната отдыха + +# Medical +holopad-medical-medbay = Медицинский - Мед. отсек +holopad-medical-chemistry = Медицинский - Химия +holopad-medical-cryopods = Медицинский - Криоподы +holopad-medical-morgue = Медицинский - Морг +holopad-medical-surgery = Медицинский - Хирургия +holopad-medical-paramedic = Медицинский - Парамедик +holopad-medical-virology = Медицинский - Вирусология +holopad-medical-front = Медицинский - Стойка +holopad-medical-breakroom = Медицинский - Комната отдыха + +# Cargo +holopad-cargo-front = Снабжение - Стойка +holopad-cargo-bay = Снабжение - Грузовой отсек +holopad-cargo-salvage-bay = Снабжение - Утилизаторы +holopad-cargo-breakroom = Снабжение - Комната отдыха +holopad-cargo-ats = Снабжение - Торговый аванпост +holopad-cargo-shuttle = Снабжение - Шаттл + +# Engineering +holopad-engineering-atmos-front = Атмосферный - Стойка +holopad-engineering-atmos-main = Атмосферный - Главный +holopad-engineering-atmos-teg = Атмосферный - ТЕГ +holopad-engineering-storage = Инженерный - Склад +holopad-engineering-breakroom = Инженерный - Комната отдыха +holopad-engineering-front = Инженерный - Стойка +holopad-engineering-telecoms = Инженерный - Телекомы +holopad-engineering-tech-vault = Инженерный - Тех. хранилище +holopad-engineering-ame = Инженерный - ДАМ +holopad-engineering-power = Инженерный - Энергетика + +# Security +holopad-security-front = Безопасность - Стойка +holopad-security-brig = Безопасность - Бриг +holopad-security-warden = Безопасность - Смотритель +holopad-security-interrogation = Безопасность - Допросная +holopad-security-breakroom = Безопасность - Комната отдыха +holopad-security-detective = Безопасность - Детектив +holopad-security-perma = Безопасность - Перма +holopad-security-courtroom = Безопасность - Суд +holopad-security-lawyer = Юридический - Адвокат +holopad-security-armory = Безопасность - Оружейная +holopad-security-locker-room = Безопасность - Раздевалка +holopad-security-brig-med = Безопасность - Бриг медик + +# Service +holopad-service-janitor = Сервис - Уборщик +holopad-service-bar = Сервис - Бар +holopad-service-kitchen = Сервис - Кухня +holopad-service-botany = Сервис - Ботаника +holopad-service-chapel = Сервис - Часовня +holopad-service-library = Сервис - Библиотека +holopad-service-newsroom = Сервис - Репортёрская +holopad-service-zookeeper = Сервис - Зоотехник +holopad-service-boxer = Сервис - Боксёр +holopad-service-clown = Сервис - Клоун +holopad-service-musician = Сервис - Музыкант +holopad-service-mime = Сервис - Мим +holopad-service-clown-mime = Сервис - Клоун/Мим +holopad-service-gameroom = Сервис - Игровая комната + +# AI +holopad-ai-core = ИИ - Ядро +holopad-ai-main = ИИ - Основной +holopad-ai-upload = ИИ - Загрузка +holopad-ai-backup-power = ИИ - Резервное питание +holopad-ai-entrance = ИИ - Вход +holopad-ai-chute = ИИ - Переход + +# Long Range +holopad-station-bridge = Станция - Мостик +holopad-station-cargo-bay = Станция - Грузовой отсек + +# CentComm +holopad-centcomm-evac = ЦентКом - Шаттл эвакуации + + +# Entities +ent-Holopad = голопад + .desc = Напольное устройство для проецирования голографических изображений и связи с похожими устройствами внутри станции. +ent-HolopadLongRange = голопад сектора + .desc = Напольное устройство для проецирования голографических изображений и связи с похожими устройствами внутри сектора. + .suffix = Только между гридов +ent-HolopadUnlimitedRange = голопад дальнего действия + .desc = Напольное устройство для проецирования голографических изображений и связи с похожими устройствами на дальних дистанциях. + .suffix = Только между гридов и карт +ent-HolopadBluespace = блюспейс голопад + .desc = Экспериментальное напольное устройство для проецирования голографических изображений через блюспейс. + .suffix = Неограниченное расстояние + +ent-HolopadGeneralTools = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-general-tools } +ent-HolopadGeneralCryosleep = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-general-cryosleep } +ent-HolopadGeneralTheater = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-general-theater } +ent-HolopadGeneralDisposals = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-general-disposals } +ent-HolopadGeneralEVAStorage = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-general-eva } +ent-HolopadGeneralLounge = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-general-lounge } +ent-HolopadGeneralArcade = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-general-arcade } +ent-HolopadGeneralEvac = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-general-evac } +ent-HolopadGeneralArrivals = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-general-arrivals } + +ent-HolopadCommandBridge = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-command-bridge } +ent-HolopadCommandVault = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-command-vault } +ent-HolopadCommandBridgeHallway = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-command-bridge-hallway } +ent-HolopadCommandMeetingRoom = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-command-meeting-room } +ent-HolopadCommandLounge = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-command-lounge } +ent-HolopadCommandCaptain = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-command-captain } +ent-HolopadCommandHop = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-command-hop } +ent-HolopadCommandCmo = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-command-cmo } +ent-HolopadCommandQm = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-command-qm } +ent-HolopadCommandCe = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-command-ce } +ent-HolopadCommandRd = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-command-rd } +ent-HolopadCommandHos = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-command-hos } + +ent-HolopadScienceAnomaly = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-science-anomaly } +ent-HolopadScienceArtifact = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-science-artifact } +ent-HolopadScienceRobotics = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-science-robotics } +ent-HolopadScienceRnd = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-science-rnd } +ent-HolopadScienceFront = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-science-front } +ent-HolopadScienceBreakroom = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-science-breakroom } + +ent-HolopadMedicalMedbay = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-medical-medbay } +ent-HolopadMedicalChemistry = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-medical-chemistry } +ent-HolopadMedicalCryopods = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-medical-cryopods } +ent-HolopadMedicalMorgue = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-medical-morgue } +ent-HolopadMedicalSurgery = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-medical-surgery } +ent-HolopadMedicalParamed = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-medical-paramedic } +ent-HolopadMedicalVirology = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-medical-virology } +ent-HolopadMedicalFront = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-medical-front } +ent-HolopadMedicalBreakroom = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-medical-breakroom } + +ent-HolopadCargoFront = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-cargo-front } +ent-HolopadCargoBay = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-cargo-bay } +ent-HolopadCargoSalvageBay = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-cargo-salvage-bay } +ent-HolopadCargoBreakroom = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-cargo-breakroom } +ent-HolopadCargoAts = { ent-HolopadLongRange } + .desc = { ent-HolopadLongRange.desc } + .suffix = { holopad-cargo-ats } +ent-HolopadCargoShuttle = { ent-HolopadLongRange } + .desc = { ent-HolopadLongRange.desc } + .suffix = { holopad-cargo-shuttle } + +ent-HolopadEngineeringAtmosFront = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-engineering-atmos-front } +ent-HolopadEngineeringAtmosMain = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-engineering-atmos-main } +ent-HolopadEngineeringAtmosTeg = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-engineering-atmos-teg } +ent-HolopadEngineeringStorage = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-engineering-storage } +ent-HolopadEngineeringBreakroom = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-engineering-breakroom } +ent-HolopadEngineeringFront = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-engineering-front } +ent-HolopadEngineeringTelecoms = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-engineering-telecoms } +ent-HolopadEngineeringTechVault = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-engineering-tech-vault } +ent-HolopadEngineeringAME = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-engineering-ame } +ent-HolopadEngineeringPower = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-engineering-power } + +ent-HolopadSecurityFront = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-security-front } +ent-HolopadSecurityBrig = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-security-brig } +ent-HolopadSecurityWarden = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-security-warden } +ent-HolopadSecurityInterrogation = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-security-interrogation } +ent-HolopadSecurityBreakroom = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-security-breakroom } +ent-HolopadSecurityDetective = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-security-detective } +ent-HolopadSecurityPerma = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-security-perma } +ent-HolopadSecurityCourtroom = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-security-courtroom } +ent-HolopadSecurityLawyer = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-security-lawyer } +ent-HolopadSecurityArmory = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-security-armory } +ent-HolopadSecurityLockerRoom = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-security-locker-room } +ent-HolopadSecurityBrigMed = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-security-brig-med } + +ent-HolopadServiceJanitor = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-service-janitor } +ent-HolopadServiceBar = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-service-bar } +ent-HolopadServiceKitchen = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-service-kitchen } +ent-HolopadServiceBotany = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-service-botany } +ent-HolopadServiceChapel = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-service-chapel } +ent-HolopadServiceLibrary = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-service-library } +ent-HolopadServiceNewsroom = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-service-newsroom } +ent-HolopadServiceZookeeper = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-service-zookeeper } +ent-HolopadServiceBoxer = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-service-boxer } +ent-HolopadServiceClown = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-service-clown } +ent-HolopadServiceMusician = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-service-musician } +ent-HolopadServiceMime = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-service-mime } +ent-HolopadServiceClownMime = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-service-clown-mime } +ent-HolopadServiceGameRoom = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-service-gameroom } + +ent-HolopadAiCore = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-ai-core } +ent-HolopadAiMain = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-ai-main } +ent-HolopadAiUpload = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-ai-upload } +ent-HolopadAiBackupPower = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-ai-backup-power } +ent-HolopadAiEntrance = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-ai-entrance } +ent-HolopadAiChute = { ent-Holopad } + .desc = { ent-Holopad.desc } + .suffix = { holopad-ai-chute } + +ent-HolopadCommandBridgeLongRange = { ent-HolopadLongRange } + .desc = { ent-HolopadLongRange.desc } + .suffix = { holopad-station-bridge } +ent-HolopadCargoBayLongRange = { ent-HolopadLongRange } + .desc = { ent-HolopadLongRange.desc } + .suffix = { holopad-station-cargo-bay } + +ent-HolopadCentCommEvacShuttle = { ent-HolopadLongRange } + .desc = { ent-HolopadLongRange.desc } + .suffix = { holopad-centcomm-evac } diff --git a/Resources/Locale/ru-RU/telephone/telephone.ftl b/Resources/Locale/ru-RU/telephone/telephone.ftl new file mode 100644 index 00000000000000..a35c8b70678270 --- /dev/null +++ b/Resources/Locale/ru-RU/telephone/telephone.ftl @@ -0,0 +1,8 @@ +# Chat window telephone wrap (prefix and postfix) +chat-telephone-message-wrap = [color={$color}][bold]{$name}[/bold] {$verb}, [font={$fontType} size={$fontSize}]"{$message}"[/font][/color] +chat-telephone-message-wrap-bold = [color={$color}][bold]{$name}[/bold] {$verb}, [font={$fontType} size={$fontSize}][bold]"{$message}"[/bold][/font][/color] + +# Caller ID +chat-telephone-unknown-caller = [color={$color}][font={$fontType} size={$fontSize}][bolditalic]Неизвестный абонент[/bolditalic][/font][/color] +chat-telephone-caller-id-with-job = [color={$color}][font={$fontType} size={$fontSize}][bold]{CAPITALIZE($callerName)} ({CAPITALIZE($callerJob)})[/bold][/font][/color] +chat-telephone-caller-id-without-job = [color={$color}][font={$fontType} size={$fontSize}][bold]{CAPITALIZE($callerName)}[/bold][/font][/color] \ No newline at end of file diff --git a/Resources/Locale/ru-RU/wires/wire-names.ftl b/Resources/Locale/ru-RU/wires/wire-names.ftl index 56d6dbc35e90cc..04702c0a61278d 100644 --- a/Resources/Locale/ru-RU/wires/wire-names.ftl +++ b/Resources/Locale/ru-RU/wires/wire-names.ftl @@ -41,6 +41,7 @@ wires-board-name-flatpacker = Упаковщик wires-board-name-spaceheater = Термостат wires-board-name-jukebox = Музыкальный автомат wires-board-name-computer = Компьютер +wires-board-name-holopad = Голопад # names that get displayed in the wire hacking hud & admin logs. diff --git a/Resources/Prototypes/Entities/Mobs/Player/silicon.yml b/Resources/Prototypes/Entities/Mobs/Player/silicon.yml index d141f133a87c6f..bcb02a9555c7ab 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/silicon.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/silicon.yml @@ -142,6 +142,10 @@ - sprite: Mobs/Silicon/station_ai.rsi state: default - type: ShowJobIcons + # SS220 Holopad adapt begin + - type: TTS + randomVoicesList: Borg + # SS220 Holopad adapt end - type: entity id: AiHeldIntellicard