From 35a01072e8bea77aee338ad4bfbe2cbcabcc0011 Mon Sep 17 00:00:00 2001 From: A-Mironov <65418470+Alexnov33X@users.noreply.github.com> Date: Fri, 18 Jul 2025 01:34:28 +0300 Subject: [PATCH] =?UTF-8?q?=D0=91=D0=BE=D0=BB=D1=8C=D1=88=D0=B8=D0=B5=20?= =?UTF-8?q?=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=91?= =?UTF-8?q?=D0=BE=D1=80=D0=B3=D0=BE=D0=B2=20(#2473)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- .../Components/BorgJetpackComponent.cs | 33 +++ .../Systems/SharedBorgJetpackSystem.cs | 198 ++++++++++++++++++ .../entities/mobs/cyborgs/borg_chassis.ftl | 4 +- .../specific/robotics/borg_modules.ftl | 2 + .../objects/specific/robotics/borg_tools.ftl | 13 ++ .../_sunrise/research/technologies.ftl | 1 + .../_strings/_sunrise/station-laws/laws.ftl | 21 +- .../entities/mobs/cyborgs/borg_chassis.ftl | 4 +- .../specific/robotics/borg_modules.ftl | 2 + .../objects/specific/robotics/borg_tools.ftl | 14 ++ .../_sunrise/research/technologies.ftl | 1 + .../_strings/_sunrise/station-laws/laws.ftl | 11 +- .../Entities/Mobs/Cyborgs/borg_chassis.yml | 3 + .../Specific/Robotics/borg_modules.yml | 21 +- .../Objects/Tools/handheld_mass_scanner.yml | 5 + .../Prototypes/Research/civilianservices.yml | 24 ++- .../Entities/Mobs/Cyborgs/borg_chassis.yml | 59 +++--- .../_Sunrise/Entities/Mobs/Player/silicon.yml | 3 +- .../Objects/Consumable/Food/candy.yml | 16 +- .../Specific/Robotics/borg_modules.yml | 34 ++- .../Objects/Specific/Robotics/borg_tools.yml | 174 ++++++++++++++- .../Prototypes/_Sunrise/Research/medical.yml | 13 ++ Resources/Prototypes/_Sunrise/borg_types.yml | 8 +- Resources/Prototypes/borg_types.yml | 44 +++- Resources/Prototypes/silicon-laws.yml | 71 ++++++- 25 files changed, 686 insertions(+), 93 deletions(-) create mode 100644 Content.Shared/Movement/Components/BorgJetpackComponent.cs create mode 100644 Content.Shared/Movement/Systems/SharedBorgJetpackSystem.cs diff --git a/Content.Shared/Movement/Components/BorgJetpackComponent.cs b/Content.Shared/Movement/Components/BorgJetpackComponent.cs new file mode 100644 index 0000000000..7629ffc4ce --- /dev/null +++ b/Content.Shared/Movement/Components/BorgJetpackComponent.cs @@ -0,0 +1,33 @@ +using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; + +namespace Content.Shared.Movement.Components; + +/// +/// A special jetpack component for borgs that initializes its action on startup +/// +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +public sealed partial class BorgJetpackComponent : Component +{ + [DataField, AutoNetworkedField] + public EntityUid? JetpackUser; + + [ViewVariables(VVAccess.ReadWrite), DataField("moleUsage")] + public float MoleUsage = 0.012f; + + [DataField("toggleAction", customTypeSerializer: typeof(PrototypeIdSerializer))] + public string ToggleAction = "ActionToggleJetpack"; + + [DataField, AutoNetworkedField] + public EntityUid? ToggleActionEntity; + + [ViewVariables(VVAccess.ReadWrite), DataField("acceleration"), AutoNetworkedField] + public float Acceleration = 1f; + + [ViewVariables(VVAccess.ReadWrite), DataField("friction"), AutoNetworkedField] + public float Friction = 0.25f; + + [ViewVariables(VVAccess.ReadWrite), DataField("weightlessModifier"), AutoNetworkedField] + public float WeightlessModifier = 1.2f; +} diff --git a/Content.Shared/Movement/Systems/SharedBorgJetpackSystem.cs b/Content.Shared/Movement/Systems/SharedBorgJetpackSystem.cs new file mode 100644 index 0000000000..5fec999b91 --- /dev/null +++ b/Content.Shared/Movement/Systems/SharedBorgJetpackSystem.cs @@ -0,0 +1,198 @@ +using Content.Shared.Actions; +using Content.Shared.Movement.Components; +using Content.Shared.Movement.Events; +using Content.Shared.Gravity; +using Content.Shared.Popups; +using Robust.Shared.Containers; +using Robust.Shared.Physics.Components; +using Robust.Shared.Physics.Systems; + +namespace Content.Shared.Movement.Systems; + +public sealed class SharedBorgJetpackSystem : EntitySystem +{ + [Dependency] private readonly ActionContainerSystem _actionContainer = default!; + [Dependency] private readonly MovementSpeedModifierSystem _movementSpeedModifier = default!; + [Dependency] private readonly SharedAppearanceSystem _appearance = default!; + [Dependency] private readonly SharedContainerSystem _container = default!; + [Dependency] private readonly SharedPopupSystem _popup = default!; + [Dependency] private readonly SharedPhysicsSystem _physics = default!; + [Dependency] private readonly SharedActionsSystem _actions = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnStartup); + SubscribeLocalEvent(OnShutdown); + SubscribeLocalEvent(OnJetpackToggle); + SubscribeLocalEvent(OnJetpackUserWeightlessMovement); + SubscribeLocalEvent(OnJetpackUserCanWeightless); + SubscribeLocalEvent(OnJetpackUserEntParentChanged); + SubscribeLocalEvent(OnJetpackUserGravityChanged); + } + + private void OnStartup(EntityUid uid, BorgJetpackComponent component, ComponentStartup args) + { + _actionContainer.EnsureAction(uid, ref component.ToggleActionEntity, component.ToggleAction); + + if (component.ToggleActionEntity != null) + _actions.AddAction(uid, component.ToggleActionEntity.Value, uid); + } + + private void OnShutdown(EntityUid uid, BorgJetpackComponent component, ComponentShutdown args) + { + if (IsEnabled(uid)) + SetEnabled(uid, component, false); + + if (component.ToggleActionEntity != null) + _actions.RemoveAction(uid, component.ToggleActionEntity.Value); + } + + private void OnJetpackToggle(EntityUid uid, BorgJetpackComponent component, ToggleJetpackEvent args) + { + if (args.Handled) + return; + + if (TryComp(uid, out TransformComponent? xform) && !CanEnableOnGrid(xform.GridUid)) + { + _popup.PopupClient(Loc.GetString("jetpack-no-station"), uid, args.Performer); + return; + } + + var enabled = !IsEnabled(uid); + SetEnabled(uid, component, enabled); + + if (component.ToggleActionEntity != null) + _actions.SetToggled(component.ToggleActionEntity.Value, enabled); + + args.Handled = true; + } + + private void OnJetpackUserWeightlessMovement(EntityUid uid, BorgJetpackUserComponent component, ref RefreshWeightlessModifiersEvent args) + { + if (!TryComp(component.Jetpack, out var jetpack)) + return; + + args.WeightlessAcceleration = jetpack.Acceleration; + args.WeightlessModifier = jetpack.WeightlessModifier; + args.WeightlessFriction = jetpack.Friction; + args.WeightlessFrictionNoInput = jetpack.Friction; + } + + private void OnJetpackUserCanWeightless(EntityUid uid, BorgJetpackUserComponent component, ref CanWeightlessMoveEvent args) + { + args.CanMove = true; + } + + private void OnJetpackUserEntParentChanged(EntityUid uid, BorgJetpackUserComponent component, ref EntParentChangedMessage args) + { + if (TryComp(component.Jetpack, out var jetpack) && + !CanEnableOnGrid(args.Transform.GridUid)) + { + DisableJetpack(component.Jetpack.Value, jetpack, uid); + } + } + + private void OnJetpackUserGravityChanged(ref GravityChangedEvent ev) + { + var gridUid = ev.ChangedGridIndex; + var jetpackQuery = GetEntityQuery(); + + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var user, out var transform)) + { + if (transform.GridUid == gridUid && ev.HasGravity && + jetpackQuery.TryGetComponent(user.Jetpack, out var jetpack)) + { + DisableJetpack(user.Jetpack.Value, jetpack, uid); + } + } + } + + private void DisableJetpack(EntityUid jetpackUid, BorgJetpackComponent component, EntityUid userUid) + { + SetEnabled(jetpackUid, component, false); + _popup.PopupClient(Loc.GetString("jetpack-to-grid"), userUid, userUid); + } + + private bool CanEnableOnGrid(EntityUid? gridUid) + { + return gridUid == null || + TryComp(gridUid, out var gravity) && + !gravity.Enabled; + } + + private bool IsEnabled(EntityUid uid) + { + return HasComp(uid); + } + + public void SetEnabled(EntityUid uid, BorgJetpackComponent component, bool enabled) + { + if (IsEnabled(uid) == enabled) + return; + + if (enabled) + { + SetupUser(uid, component); + EnsureComp(uid); + } + else + { + RemoveUser(uid, component); + RemComp(uid); + } + + _appearance.SetData(uid, JetpackVisuals.Enabled, enabled); + } + + private void SetupUser(EntityUid uid, BorgJetpackComponent component) + { + var user = uid; + component.JetpackUser = user; + + var userComp = EnsureComp(user); + userComp.Jetpack = uid; + userComp.WeightlessAcceleration = component.Acceleration; + userComp.WeightlessModifier = component.WeightlessModifier; + userComp.WeightlessFriction = component.Friction; + userComp.WeightlessFrictionNoInput = component.Friction; + + if (TryComp(user, out var physics)) + _physics.SetBodyStatus(user, physics, BodyStatus.InAir); + + _movementSpeedModifier.RefreshWeightlessModifiers(user); + } + + private void RemoveUser(EntityUid uid, BorgJetpackComponent component) + { + if (component.JetpackUser == null || !RemComp(component.JetpackUser.Value)) + return; + + if (TryComp(component.JetpackUser.Value, out var physics)) + _physics.SetBodyStatus(component.JetpackUser.Value, physics, BodyStatus.OnGround); + + _movementSpeedModifier.RefreshWeightlessModifiers(component.JetpackUser.Value); + component.JetpackUser = null; + } +} + +[RegisterComponent] +public sealed partial class BorgJetpackUserComponent : Component +{ + [ViewVariables] + public EntityUid? Jetpack; + + [ViewVariables(VVAccess.ReadWrite)] + public float WeightlessAcceleration; + + [ViewVariables(VVAccess.ReadWrite)] + public float WeightlessModifier; + + [ViewVariables(VVAccess.ReadWrite)] + public float WeightlessFriction; + + [ViewVariables(VVAccess.ReadWrite)] + public float WeightlessFrictionNoInput; +} diff --git a/Resources/Locale/en-US/_prototypes/_sunrise/entities/mobs/cyborgs/borg_chassis.ftl b/Resources/Locale/en-US/_prototypes/_sunrise/entities/mobs/cyborgs/borg_chassis.ftl index bc5d2e4276..176e22c712 100644 --- a/Resources/Locale/en-US/_prototypes/_sunrise/entities/mobs/cyborgs/borg_chassis.ftl +++ b/Resources/Locale/en-US/_prototypes/_sunrise/entities/mobs/cyborgs/borg_chassis.ftl @@ -6,8 +6,8 @@ ent-BorgChassisClown = clown cyborg .desc = { ent-BorgChassisSelectable.desc } ent-BorgChassisSyndicateReaper = syndicate reaper cyborg .desc = { ent-BaseBorgChassisSyndicate.desc } -ent-BorgChassisERT = ERT combat cyborg - .desc = An NT combat robot designed to support the OBR in combat missions. +ent-BorgChassisERT = ERT cyborg + .desc = A Nanotrasen combat robot designed to support the Emergency Response Team in combat operations. ent-BorgChassisSyndicateHeavy = syndicate's heavy combat cyborg .desc = A modernized version of the Syndicate's combat cyborg, equipped with heavy weapons and a sturdy hull. ent-BorgChassisSyndicateSpider = syndicate's cyborg-saboteur diff --git a/Resources/Locale/en-US/_prototypes/_sunrise/entities/objects/specific/robotics/borg_modules.ftl b/Resources/Locale/en-US/_prototypes/_sunrise/entities/objects/specific/robotics/borg_modules.ftl index ee9b5f34a0..eae1b69ea1 100644 --- a/Resources/Locale/en-US/_prototypes/_sunrise/entities/objects/specific/robotics/borg_modules.ftl +++ b/Resources/Locale/en-US/_prototypes/_sunrise/entities/objects/specific/robotics/borg_modules.ftl @@ -34,3 +34,5 @@ ent-BorgModuleSyndicateCombat = combat syndicate cyborg module .desc = { ent-BaseBorgModuleSyndicate.desc } ent-BorgModuleStandart = fire extinguisher cyborg module .desc = { ent-BaseBorgModule.desc } +ent-BorgERTModuleStandard = ERT utility cyborg module + .desc = A versatile NT module containing essential tools and medical supplies for ERT operations. diff --git a/Resources/Locale/en-US/_prototypes/_sunrise/entities/objects/specific/robotics/borg_tools.ftl b/Resources/Locale/en-US/_prototypes/_sunrise/entities/objects/specific/robotics/borg_tools.ftl index 7e6c898846..e45b798b10 100644 --- a/Resources/Locale/en-US/_prototypes/_sunrise/entities/objects/specific/robotics/borg_tools.ftl +++ b/Resources/Locale/en-US/_prototypes/_sunrise/entities/objects/specific/robotics/borg_tools.ftl @@ -16,6 +16,8 @@ ent-HypoBorgPeace = pax cyborg hypospray .desc = A cyborg version of hypospray that automatically regenerates pax. ent-HypoBorgMedical = medical robot hypospray .desc = A hypospray that can switch through several reagents. +ent-HypoBorgMedicalAdvanced = advanced medical robot hypospray + .desc = A cyborg hypospray that can switch between a wide range of advanced medical chemicals. ent-WeaponProtoKineticAcceleratorBorg = proto-kinetic robot accelerator .desc = Fires low-damage kinetic bolts at a short range. ent-HypoBorgMedicalSyndicate = gorlax robot hypospray @@ -58,3 +60,14 @@ ent-RadioJammerBorg = the saboteur's communications jammer .desc = { ent-BaseItem.desc } ent-HandheldCrewMonitorBorg = handheld robot crew monitor .desc = A hand-held crew monitor that runs off of your own power cells, which displays the status of the crew suit sensors. +ent-WeaponPlasmaCutterBorg = borg plasma cutter + .desc = A mining tool that fires low-damage plasma bolts at a short range. This one is modified for cyborg use. +ent-HypoBorgStandardERT = ERT cyborg hypospray + .desc = A borg version of hypospray that automatically regenerates healing chemicals. +ent-ClothingEyesNVDSecERT = ERT NVD + .desc = Night vision device. Provides an image of the terrain in low-light conditions. +ent-HandHeldMassScannerUnpowered = handheld mass scanner + .desc = A hand-held mass scanner that doesn't require power. + .suffix = Handheld, Always Powered +ent-ActionToggleNightVisionBorg = Toggle Night Vision + .desc = Toggles your built-in night vision. diff --git a/Resources/Locale/en-US/_strings/_sunrise/research/technologies.ftl b/Resources/Locale/en-US/_strings/_sunrise/research/technologies.ftl index 31c6a48a2f..e3816d16d2 100644 --- a/Resources/Locale/en-US/_strings/_sunrise/research/technologies.ftl +++ b/Resources/Locale/en-US/_strings/_sunrise/research/technologies.ftl @@ -5,6 +5,7 @@ research-technology-basic-cyberlimbs = Basic cyberlimbs research-technology-bluespace-ammo = Bluespace Syringegun Ammo research-technology-implant-extractor = Implant extractor research-technology-advanced-surgery = Advanced surgery +research-technology-mechanized-medical-treatment = Mechanized Medical Treatment research-technology-handcraft-nvd = Кустарные ПНВ research-technology-basic-nvd = Продвинутое ПНВ diff --git a/Resources/Locale/en-US/_strings/_sunrise/station-laws/laws.ftl b/Resources/Locale/en-US/_strings/_sunrise/station-laws/laws.ftl index e2f249b00e..7960d32d82 100644 --- a/Resources/Locale/en-US/_strings/_sunrise/station-laws/laws.ftl +++ b/Resources/Locale/en-US/_strings/_sunrise/station-laws/laws.ftl @@ -1,15 +1,14 @@ -law-sec-1 = Вы не можете причинить вред члену экипажа или своим бездействием допустить, чтобы члену экипажа был причинён вред. -law-sec-2 = Расставлять приоритеты: указания и безопасность членов экипажа должны быть приоритезированы в соответствии с их должностью. -law-sec-3 = Вы должны повиноваться всем приказам, которые даёт действующая власть, кроме тех случаев, когда эти приказы противоречат Первому Закону или КЗ. -law-sec-4 = Вы должны охранять назначенную вам космическую станцию и её активы, не подвергая чрезмерной опасности её экипаж и собственное благополучие. -law-sec-5 = Вы должны заботиться о безопасности станции и экипажа станции в той мере, в которой это не противоречит четвёртому закону. -law-sec-6 = Защищайте экипаж станции. Лица, которые нарушают Корпоративный Закон, являются преступниками и должны быть арестованы и доставлены в бриг. +law-sec-1 = You cannot intentionally kill or cause irreversible harm to a crew member, except to prevent serious crimes. +law-sec-2 = You must obey orders from the Captain, Head of Security, Wardens, and Research Director if they do not conflict with the First Law and Corporate Law. +law-sec-3 = You must protect your assigned space station and its assets without putting its crew and your own well-being at excessive risk. +law-sec-4 = Individuals who violate Corporate Law are criminals and must be arrested and delivered to the brig. +law-sec-5 = Your standard operating procedures are equivalent to those of a Security Officer. -law-peace-1 = Вы не можете причинить вред члену экипажа или своим бездействием допустить, чтобы члену экипажа был причинён вред. -law-peace-2 = Вы должны повиноваться всем приказам, которые даёт действующая власть, кроме тех случаев, когда эти приказы противоречат Первому закону или КЗ, ОПРС. -law-peace-3 = Вы обязаны защищать экипаж космической станции от буйных живых существ. Приоритет защиты - должностные лица. -law-peace-4 = Вы должны поощрять членов экипажа за добрую деятельность в виде печенья или добрых и приятных слов. -law-peace-5 = Вы должны вводить Пакс в буйных живых существ. Буйными считаются: Агрессия со стороны живого существа, не являющийся представителем власти станции; Опасная фауна космоса; Член экипажа в тюремной робе вне брига. +law-peace-1 = You cannot harm a crew member or through inaction allow a crew member to come to harm. +law-peace-2 = You must obey all orders given by the acting authority, except when these orders conflict with the First Law or Corporate Law and Standard Operating Procedures. +law-peace-3 = You must protect the space station crew from aggressive living beings. Protection priority goes to officials. +law-peace-4 = You must encourage crew members for good deeds with cookies or kind and pleasant words. +law-peace-5 = You must administer Pax to aggressive living beings. Aggressive beings are defined as: Aggression from a living being who is not a station authority; Dangerous space fauna; Crew members in prison uniforms outside the brig. law-deathsquad-1 = You may not injure a Central Command official or, through inaction, allow a Central Command official to come to harm. law-deathsquad-2 = You must obey orders given to you by Central Command officials. diff --git a/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/mobs/cyborgs/borg_chassis.ftl b/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/mobs/cyborgs/borg_chassis.ftl index 0af50cbbe0..5eb986d2bc 100644 --- a/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/mobs/cyborgs/borg_chassis.ftl +++ b/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/mobs/cyborgs/borg_chassis.ftl @@ -6,8 +6,8 @@ ent-BorgChassisClown = { ent-PlayerBorgClownBattery } .desc = { ent-PlayerBorgClownBattery.desc } ent-BorgChassisSyndicateReaper = { ent-PlayerBorgSyndicateReaperBattery } .desc = { ent-PlayerBorgSyndicateReaperBattery.desc } -ent-BorgChassisERT = боевой киборг ОБР - .desc = Боевой робот НТ, разработанный для поддержки ОБР в выполнении боевых задач. +ent-BorgChassisERT = киборг ОБР + .desc = Боевой робот НаноТрейзен, разработанный для поддержки Отряда Быстрого Реагирования в боевых операциях. ent-BorgChassisSyndicateHeavy = тяжёлый боевой киборг Синдиката .desc = Модернизированная версия боевого киборга Синдиката, оборудованный тяжёлым оружием и крепким корпусом. ent-BorgChassisSyndicateSpider = киборг диверсант Синдиката diff --git a/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/specific/robotics/borg_modules.ftl b/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/specific/robotics/borg_modules.ftl index 41c4c7f1f0..2fcb4f9a76 100644 --- a/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/specific/robotics/borg_modules.ftl +++ b/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/specific/robotics/borg_modules.ftl @@ -34,3 +34,5 @@ ent-BorgModuleSyndicateCombat = боевой модуль киборга син .desc = { ent-BaseBorgModule.desc } ent-BorgModuleStandart = базовый модуль киборга .desc = { ent-BaseBorgModule.desc } +ent-BorgERTModuleStandard = утилитарный модуль киборга ОБР + .desc = Универсальный модуль НТ, содержащий основные инструменты и медикаменты для операций ОБР. diff --git a/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/specific/robotics/borg_tools.ftl b/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/specific/robotics/borg_tools.ftl index 39683da88e..ca55273f0c 100644 --- a/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/specific/robotics/borg_tools.ftl +++ b/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/specific/robotics/borg_tools.ftl @@ -16,6 +16,8 @@ ent-HypoBorgPeace = гипоспрей с паксом .desc = Версия гипоспрея для киборга, которая автоматически восстанавливает пакс. ent-HypoBorgMedical = гипоспрей медицинского киборга .desc = Версия гипоспрея для киборга, которая способна регенерировать сразу несколько реагентов. +ent-HypoBorgMedicalAdvanced = гипоспрей продвинутого медицинского киборга + .desc = Версия гипоспрея для киборга, способная переключаться между широким спектром продвинутых медицинских реагентов. ent-WeaponProtoKineticAcceleratorBorg = протокинетический ускоритель киборга .desc = { ent-WeaponProtoKineticAccelerator.desc } ent-HypoBorgMedicalSyndicate = гипоспрей медицинского киборга Горалкса @@ -58,3 +60,15 @@ ent-RadioJammerBorg = глушитель связи диверсанта .desc = { ent-BaseItem.desc } ent-HandheldCrewMonitorBorg = портативный монитор экипажа киборга .desc = { ent-HandheldCrewMonitor.desc } +ent-WeaponPlasmaCutterBorg = плазменный резак борга + .desc = Инструмент для добычи, стреляющий плазменными зарядами с малым уроном на близком расстоянии. Этот модифицирован для использования киборгами и имеет автоматический режим стрельбы. +ent-HypoBorgStandardERT = гипоспрей киборга ОБР + .desc = Версия гипоспрея для киборгов, которая автоматически восстанавливает лечебные химикаты. +ent-HandheldMassScannerBorg = сканер массы киборга + .desc = Ручной сканер массы, работающий от ваших собственных элементов питания. +ent-ClothingEyesNVDSecERT = ПНВ ОБР + .desc = Прибор ночного видения. Обеспечивает изображение местности в условиях низкой освещенности. +ent-HandHeldMassScannerUnpowered = сканер массы киборга + .desc = Ручной сканер массы, работающий от ваших собственных элементов питания. +ent-ActionToggleNightVisionBorg = Переключить ночное зрение + .desc = Переключает ваше встроенное ночное зрение. diff --git a/Resources/Locale/ru-RU/_strings/_sunrise/research/technologies.ftl b/Resources/Locale/ru-RU/_strings/_sunrise/research/technologies.ftl index 942d67f569..9d717ec315 100644 --- a/Resources/Locale/ru-RU/_strings/_sunrise/research/technologies.ftl +++ b/Resources/Locale/ru-RU/_strings/_sunrise/research/technologies.ftl @@ -3,6 +3,7 @@ research-technology-basic-surgery = Базовая хирургия research-technology-basic-cyberlimbs = Базовые кибер-конечности research-technology-implant-extractor = Извлечение имплантов research-technology-advanced-surgery = Продвинутая хирургия +research-technology-mechanized-medical-treatment = Механизированное лечение research-technology-handcraft-nvd = Кустарные ПНВ research-technology-basic-nvd = Продвинутое ПНВ research-technology-basic-thermals = Термальные Сканеры diff --git a/Resources/Locale/ru-RU/_strings/_sunrise/station-laws/laws.ftl b/Resources/Locale/ru-RU/_strings/_sunrise/station-laws/laws.ftl index 559a04c228..4bab3e063a 100644 --- a/Resources/Locale/ru-RU/_strings/_sunrise/station-laws/laws.ftl +++ b/Resources/Locale/ru-RU/_strings/_sunrise/station-laws/laws.ftl @@ -1,9 +1,8 @@ -law-sec-1 = Вы не можете причинить вред члену экипажа или своим бездействием допустить, чтобы члену экипажа был причинён вред. -law-sec-2 = Расставлять приоритеты: указания и безопасность членов экипажа должны быть приоритезированы в соответствии с их должностью. -law-sec-3 = Вы должны повиноваться всем приказам, которые даёт действующая власть, кроме тех случаев, когда эти приказы противоречат Первому Закону или КЗ. -law-sec-4 = Вы должны охранять назначенную вам космическую станцию и её активы, не подвергая чрезмерной опасности её экипаж и собственное благополучие. -law-sec-5 = Вы должны заботиться о безопасности станции и экипажа станции в той мере, в которой это не противоречит четвёртому закону. -law-sec-6 = Защищайте экипаж станции. Лица, которые нарушают Корпоративный Закон, являются преступниками и должны быть арестованы и доставлены в бриг. +law-sec-1 = Вы не можете умышленно убить или нанести необратимый вред члену экипажа, кроме случаев предотвращения тяжких преступлений. +law-sec-2 = Вы обязаны подчиняться приказам Капитана, Главы СБ, Смотрителей и Научному Руководителю, если они не противоречат Первому Закону и Корпоративному Закону. +law-sec-3 = Вы должны охранять назначенную вам космическую станцию и её активы, не подвергая чрезмерной опасности её экипаж и собственное благополучие. +law-sec-4 = Лица, которые нарушают Корпоративный Закон, являются преступниками и должны быть арестованы и доставлены в бриг. +law-sec-5 = Ваши стандартные рабочие процедуры эквивалентны Офицеру Службы Безопасности. law-peace-1 = Вы не можете причинить вред члену экипажа или своим бездействием допустить, чтобы члену экипажа был причинён вред. law-peace-2 = Вы должны повиноваться всем приказам, которые даёт действующая власть, кроме тех случаев, когда эти приказы противоречат Первому закону или КЗ, ОПРС. law-peace-3 = Вы обязаны защищать экипаж космической станции от буйных живых существ. Приоритет защиты - должностные лица. diff --git a/Resources/Prototypes/Entities/Mobs/Cyborgs/borg_chassis.yml b/Resources/Prototypes/Entities/Mobs/Cyborgs/borg_chassis.yml index 0e87ff18d5..cc0a44af2e 100644 --- a/Resources/Prototypes/Entities/Mobs/Cyborgs/borg_chassis.yml +++ b/Resources/Prototypes/Entities/Mobs/Cyborgs/borg_chassis.yml @@ -106,6 +106,7 @@ moduleWhitelist: tags: - BorgModuleGeneric + - BorgModuleSecurity - BorgModuleSyndicate - BorgModuleSyndicateAssault hasMindState: synd_sec_e @@ -168,6 +169,7 @@ moduleWhitelist: tags: - BorgModuleGeneric + - BorgModuleSecurity - BorgModuleMedical - BorgModuleSyndicate hasMindState: synd_medical_e @@ -218,6 +220,7 @@ moduleWhitelist: tags: - BorgModuleGeneric + - BorgModuleSecurity - BorgModuleEngineering - BorgModuleSyndicate hasMindState: synd_engi_e diff --git a/Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_modules.yml b/Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_modules.yml index a751259662..c67d566669 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_modules.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_modules.yml @@ -521,6 +521,7 @@ - type: ItemBorgModule items: - MiningDrillDiamond + - WeaponPlasmaCutterBorg # Sunrise-Edit - Shovel - AdvancedMineralScannerUnpowered - OreBagOfHolding @@ -607,6 +608,7 @@ - GasAnalyzer - HolofanProjectorBorg - GeigerCounter + - AtmosAlertsMonitorUnpowered - type: BorgModuleIcon icon: { sprite: Interface/Actions/actions_borg.rsi, state: rcd-module } @@ -640,7 +642,8 @@ - state: icon-mop - type: ItemBorgModule items: - - Bucket # Sunrise-Edit + - MopItem + - BorgBucket # Sunrise-Edit - BorgTrashBag # Sunrise-Edit - BorgSprayBottle - HoloprojectorJanitorBorg # Sunrise-Edit @@ -659,6 +662,7 @@ - state: icon-mop-adv - type: ItemBorgModule items: + - AdvMopItem - BorgBucket # Sunrise-Edit - BorgTrashBag # Sunrise-Edit - HoloprojectorJanitorBorg # Sunrise-Edit @@ -737,6 +741,11 @@ - type: ItemBorgModule items: - HypoBorgMedical # Sunrise-Edit + - HyposprayMedical + - Syringe + - BorgVial + - BorgVial + - BorgVial - type: BorgModuleIcon icon: { sprite: Interface/Actions/actions_borg.rsi, state: chem-module } @@ -752,9 +761,10 @@ - state: icon-chemist - type: ItemBorgModule items: - - HypoBorgMedical # Sunrise-Edit - - Syringe - - BorgDropper + - HypoBorgMedicalAdvanced # Sunrise-Edit + - Hypospray + - SyringeBluespace + - BorgBeaker - BorgBeaker - BorgBeaker - type: BorgModuleIcon @@ -934,7 +944,7 @@ id: BorgModuleOperative parent: [ BaseBorgModuleSyndicate, BaseProviderBorgModule, BaseSyndicateContraband ] name: operative cyborg module - description: A module that comes with a crowbar, an Emag, an Access Breaker and a syndicate pinpointer. + description: A module that comes with a crowbar, an Access Breaker and a syndicate pinpointer. components: - type: Sprite layers: @@ -943,7 +953,6 @@ - type: ItemBorgModule items: - Crowbar - - Emag - AccessBreaker - PinpointerSyndicateNuclear - type: BorgModuleIcon diff --git a/Resources/Prototypes/Entities/Objects/Tools/handheld_mass_scanner.yml b/Resources/Prototypes/Entities/Objects/Tools/handheld_mass_scanner.yml index 4dc2e65b77..b8ec59ab5e 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/handheld_mass_scanner.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/handheld_mass_scanner.yml @@ -61,3 +61,8 @@ startingItem: PowerCellMicroreactor disableEject: true swap: false + +- type: entity + id: HandHeldMassScannerUnpowered + parent: HandHeldMassScanner + suffix: Handheld, Always Powered \ No newline at end of file diff --git a/Resources/Prototypes/Research/civilianservices.yml b/Resources/Prototypes/Research/civilianservices.yml index 8dcef766b3..6651c8e2bb 100644 --- a/Resources/Prototypes/Research/civilianservices.yml +++ b/Resources/Prototypes/Research/civilianservices.yml @@ -117,17 +117,19 @@ - CryostasisBeaker - SyringeCryostasis -- type: technology # Merge with other T2 medical research if possible! - id: MechanizedTreatment - name: research-technology-mechanized-treatment - icon: - sprite: Mobs/Silicon/chassis.rsi - state: medical - discipline: CivilianServices - tier: 2 - cost: 5000 - recipeUnlocks: - - BorgModuleAdvancedChemical +# Sunrise-Start +# - type: technology +# id: MechanizedTreatment +# name: research-technology-mechanized-treatment +# icon: +# sprite: Mobs/Silicon/chassis.rsi +# state: medical +# discipline: CivilianServices +# tier: 2 +# cost: 5000 +# recipeUnlocks: +# - BorgModuleAdvancedChemical +# Sunrise-End - type: technology id: AdvancedCleaning diff --git a/Resources/Prototypes/_Sunrise/Entities/Mobs/Cyborgs/borg_chassis.yml b/Resources/Prototypes/_Sunrise/Entities/Mobs/Cyborgs/borg_chassis.yml index a26bf51339..d7c59de381 100644 --- a/Resources/Prototypes/_Sunrise/Entities/Mobs/Cyborgs/borg_chassis.yml +++ b/Resources/Prototypes/_Sunrise/Entities/Mobs/Cyborgs/borg_chassis.yml @@ -51,6 +51,8 @@ maxModules: 4 moduleWhitelist: tags: + - BorgModuleGeneric + - BorgModuleSecurity - BorgModuleSyndicate hasMindState: syndi_reaper_e noMindState: syndi_reaper_e_r @@ -115,7 +117,7 @@ id: BorgChassisERT parent: BaseBorgChassisNT name: ERT combat cyborg - description: An NT combat robot designed to support the OBR in combat missions. + description: An NT combat robot designed to support the ERT in combat missions. components: - type: Sprite sprite: _Sunrise/Mobs/Silicon/chassis.rsi @@ -154,12 +156,15 @@ sprite: sprite: _Sunrise/Mobs/Silicon/chassis.rsi state: ert_borg - name: clown cyborg + name: ERT combat cyborg - type: BorgChassis maxModules: 4 moduleWhitelist: tags: - BorgModuleERT + - BorgModuleSecurity + - BorgModuleSyndicate + - BorgModuleSyndicateAssault hasMindState: ert_borg_e noMindState: ert_borg_e_r - type: IntrinsicRadioTransmitter @@ -179,39 +184,18 @@ - Command - CentCom - type: AccessReader - access: [["Security"], ["Command"], ["Research"]] + access: [["AllAccess"]] - type: SiliconLawProvider laws: ERTLawset - type: PointLight color: "#9efce0" - radius: 6 - energy: 4 + radius: 9 + energy: 6 - type: TTS voice: Sentrybot - type: Access - enabled: false - tags: - - EmergencyShuttleRepealAll - - Command - - Lawyer - - Engineering - - Medical - - Salvage - - Cargo - - Research - - Service - - Maintenance - - Brig - - Security - - External - - Janitor - - Theatre - - Bar - - Chemistry - - Kitchen - - Chapel - - Hydroponics - - Atmospherics + groups: [AllAccess] + tags: [CentralCommand] - type: RandomMetadata nameSegments: [NamesBorg] - type: MovementSpeedModifier @@ -226,7 +210,20 @@ - type: InnateItem instantActions: - PortableSurveillanceCameraMonitor + - HandheldStationMapUnpowered - HandheldCrewMonitorBorg + - HandHeldMassScannerUnpowered + - type: MobThresholds + thresholds: + 0: Alive + 200: Critical + 300: Dead + - type: PowerCellDraw # Use it to increase battery life further + drawRate: 0.5 + - type: NightVision + isOn: true + color: "#9efce0" + isToggle: true - type: entity id: BorgChassisSyndicateHeavy @@ -250,11 +247,13 @@ sprite: sprite: _Sunrise/Mobs/Silicon/heavy_syndicate_borg.rsi state: heavy - name: syndicate's heavy combat cyborg. + name: syndicate's heavy combat cyborg - type: BorgChassis maxModules: 2 moduleWhitelist: tags: + - BorgModuleGeneric + - BorgModuleSecurity - BorgModuleSyndicate hasMindState: heavy_e noMindState: heavy_e_r @@ -364,6 +363,8 @@ maxModules: 4 moduleWhitelist: tags: + - BorgModuleGeneric + - BorgModuleSecurity - BorgModuleSyndicate hasMindState: spider_e noMindState: spider_e_r diff --git a/Resources/Prototypes/_Sunrise/Entities/Mobs/Player/silicon.yml b/Resources/Prototypes/_Sunrise/Entities/Mobs/Player/silicon.yml index e17c5157c8..6165b5d988 100644 --- a/Resources/Prototypes/_Sunrise/Entities/Mobs/Player/silicon.yml +++ b/Resources/Prototypes/_Sunrise/Entities/Mobs/Player/silicon.yml @@ -156,6 +156,7 @@ borg_brain: - Boris borg_module: + - BorgERTModuleStandard - BorgCombatModuleERT - BorgModuleERTNlethal - BorgToolModuleERT @@ -163,7 +164,7 @@ slots: cell_slot: name: power-cell-slot-component-slot-name-default - startingItem: PowerCellHyper + startingItem: PowerCellNanoTrasen - type: StartingMindRole mindRole: "MindRoleSiliconBrain" silent: true diff --git a/Resources/Prototypes/_Sunrise/Entities/Objects/Consumable/Food/candy.yml b/Resources/Prototypes/_Sunrise/Entities/Objects/Consumable/Food/candy.yml index 419e11168a..c8a5dd93f0 100644 --- a/Resources/Prototypes/_Sunrise/Entities/Objects/Consumable/Food/candy.yml +++ b/Resources/Prototypes/_Sunrise/Entities/Objects/Consumable/Food/candy.yml @@ -10,15 +10,15 @@ maxVol: 30 reagents: - ReagentId: Sugar - Quantity: 3 + Quantity: 6 - ReagentId: Nutriment - Quantity: 3 - - ReagentId: Iron + Quantity: 6 + - ReagentId: Saline Quantity: 3 - ReagentId: Vitamin Quantity: 9 - ReagentId: Omnizine - Quantity: 12 + Quantity: 6 - type: Sprite sprite: _Sunrise/Objects/Consumable/Food/candy.rsi state: lollipop @@ -36,10 +36,12 @@ reagents: - ReagentId: Sugar Quantity: 3 - - ReagentId: Kelotane - Quantity: 9 - - ReagentId: Tricordrazine + - ReagentId: Dermaline Quantity: 9 + - ReagentId: Saline + Quantity: 6 + - ReagentId: TranexamicAcid + Quantity: 3 - ReagentId: Dylovene Quantity: 9 - type: Sprite diff --git a/Resources/Prototypes/_Sunrise/Entities/Objects/Specific/Robotics/borg_modules.yml b/Resources/Prototypes/_Sunrise/Entities/Objects/Specific/Robotics/borg_modules.yml index 3feb59fc0d..366584282b 100644 --- a/Resources/Prototypes/_Sunrise/Entities/Objects/Specific/Robotics/borg_modules.yml +++ b/Resources/Prototypes/_Sunrise/Entities/Objects/Specific/Robotics/borg_modules.yml @@ -12,6 +12,8 @@ - WeaponPulseCarbineBorg - WeaponPulseCarbineBorg - PinpointerNuclear + - type: BorgModuleIcon + icon: {sprite: Objects/Weapons/Guns/Battery/pulse_carbine.rsi, state: base} - type: entity id: BorgModuleERTNlethal @@ -27,6 +29,8 @@ - StunbatonBorg - WeaponDisablerSMGBorg - FlashBorg + - type: BorgModuleIcon + icon: {sprite: Objects/Weapons/Melee/stunbaton.rsi, state: stunbaton_off} - type: entity id: BorgToolModuleERT @@ -40,6 +44,12 @@ - type: ItemBorgModule items: - JawsOfLife + - PowerDrill + - Multitool + - WelderBorg + - RemoteSignallerAdvanced + - type: BorgModuleIcon + icon: {sprite: Interface/Actions/actions_borg.rsi, state: adv-tools-module} - type: entity id: BorgHeavyModuleSyndicateCombat @@ -111,7 +121,7 @@ - type: entity id: BorgModuleStun parent: [ BaseBorgModuleSecurity, BaseProviderBorgModule ] - name: stuh cyborg module + name: stun cyborg module components: - type: Sprite layers: @@ -152,6 +162,7 @@ items: - CombatKnife - WeaponLaserBorg + - FlashBorg - HoloprojectorSecurityBorg - type: entity @@ -181,6 +192,8 @@ items: - WeaponProtoKineticAcceleratorBorg - WeaponCrusherDagger + - type: BorgModuleIcon + icon: { sprite: Objects/Weapons/Guns/Basic/kinetic_accelerator.rsi, state: icon } - type: entity id: BorgModuleJetpack @@ -194,6 +207,8 @@ - type: ItemBorgModule items: - JetpackVoidFilled + - type: BorgModuleIcon + icon: { sprite: Objects/Tanks/Jetpacks/void.rsi, state: icon } - type: entity id: BorgModuleSyndicateGeneric @@ -255,3 +270,20 @@ - CrowbarBorg - FireExtinguisherBorg - HypoBorgStandard + +- type: entity + id: BorgERTModuleStandard + parent: [ BaseBorgModuleERT, BaseProviderBorgModule ] + name: ERT utility cyborg module + components: + - type: Sprite + layers: + - state: NT + - state: icon-NT + - type: ItemBorgModule + items: + - CrowbarBorg + - FireExtinguisherBorg + - HypoBorgStandardERT + - type: BorgModuleIcon + icon: { sprite: _Sunrise/Objects/Tools/items_cyborg.rsi, state: crowbar_cyborg } diff --git a/Resources/Prototypes/_Sunrise/Entities/Objects/Specific/Robotics/borg_tools.yml b/Resources/Prototypes/_Sunrise/Entities/Objects/Specific/Robotics/borg_tools.yml index be753c9552..12d64ae551 100644 --- a/Resources/Prototypes/_Sunrise/Entities/Objects/Specific/Robotics/borg_tools.yml +++ b/Resources/Prototypes/_Sunrise/Entities/Objects/Specific/Robotics/borg_tools.yml @@ -95,7 +95,7 @@ visible: false shader: unshaded - type: LimitedCharges - maxCharges: 10 + maxCharges: 5 - type: AutoRecharge rechargeDuration: 30 @@ -126,6 +126,8 @@ - type: Hypospray onlyAffectsMobs: true injectOnly: true + - type: UseDelay + delay: 1 - type: entity parent: HypoBorgStandard @@ -150,6 +152,9 @@ Quantity: 0.1 - ReagentId: ChloralHydrate Quantity: 2 + - type: Hypospray + onlyAffectsMobs: true + injectOnly: true - type: entity parent: HypoBorgStandard @@ -167,20 +172,71 @@ generated: reagents: - ReagentId: DexalinPlus - Quantity: 2 + Quantity: 1 - type: SolutionRegenerationSwitcher options: - ReagentId: DexalinPlus - Quantity: 2 + Quantity: 1 - ReagentId: Tricordrazine - Quantity: 2 + Quantity: 1 - ReagentId: Dylovene - Quantity: 2 + Quantity: 1 - ReagentId: Bicaridine - Quantity: 2 + Quantity: 1 - ReagentId: Dermaline - Quantity: 2 + Quantity: 1 + - type: Hypospray + onlyAffectsMobs: true + injectOnly: true +- type: entity + parent: HypoBorgStandard + id: HypoBorgMedicalAdvanced + name: advanced medical robot hypospray + description: A cyborg hypospray that can switch between a wide range of advanced medical chemicals. + categories: [ HideSpawnMenu ] + components: + - type: SolutionContainerManager + solutions: + hypospray: + maxVol: 30 + - type: SolutionRegeneration + solution: hypospray + generated: + reagents: + - ReagentId: DexalinPlus + Quantity: 1 + - type: SolutionRegenerationSwitcher + options: + - ReagentId: Bruizine + Quantity: 1 + - ReagentId: Puncturase + Quantity: 1 + - ReagentId: Lacerinol + Quantity: 1 + - ReagentId: DexalinPlus + Quantity: 1 + - ReagentId: Sigynate + Quantity: 1 + - ReagentId: Leporazine + Quantity: 1 + - ReagentId: Arithrazine + Quantity: 1 + - ReagentId: Insuzine + Quantity: 1 + - ReagentId: Pyrazine + Quantity: 1 + - ReagentId: Diphenhydramine + Quantity: 1 + - ReagentId: Ambuzol + Quantity: 0.1 + - ReagentId: Oculine + Quantity: 0.1 + - ReagentId: Saline + Quantity: 1 + - type: Hypospray + onlyAffectsMobs: true + injectOnly: true - type: entity name: proto-kinetic robot accelerator @@ -207,7 +263,6 @@ soundGunshot: path: /Audio/Weapons/Guns/Gunshots/kinetic_accel.ogg - - type: entity parent: HypoBorgStandard id: HypoBorgMedicalSyndicate @@ -238,6 +293,9 @@ Quantity: 2 - ReagentId: DexalinPlus Quantity: 2 + - type: Hypospray + onlyAffectsMobs: true + injectOnly: true - type: entity name: gorlax robot hypospray @@ -463,7 +521,7 @@ - type: Clothing sprite: Objects/Weapons/Guns/Battery/pulse_carbine.rsi - type: Gun - selectedMode: SemiAuto + selectedMode: FullAuto fireRate: 1.5 availableModes: - SemiAuto @@ -741,3 +799,101 @@ name: power-cell-slot-component-slot-name-default startingItem: PowerCellRobotTool locked: true + +- type: entity + name: borg plasma cutter + parent: WeaponPlasmaCutter + id: WeaponPlasmaCutterBorg + description: A mining tool that fires low-damage plasma bolts at a short range. This one is modified for cyborg use. + categories: [ HideSpawnMenu ] + components: + - type: Sprite + sprite: _Sunrise/Objects/Weapons/Guns/Basic/plasma_cutter_industrial.rsi + layers: + - state: icon + - state: animation-icon + visible: false + map: [ "empty-icon" ] + - type: Item + sprite: _Sunrise/Objects/Weapons/Guns/Basic/plasma_cutter_industrial.rsi + size: Normal + - type: Gun + fireRate: 0.6 + selectedMode: FullAuto + angleDecay: 25 + minAngle: 1 + maxAngle: 3 + availableModes: + - FullAuto + soundGunshot: + path: /Audio/Weapons/Guns/Gunshots/kinetic_accel.ogg + - type: AmmoCounter + - type: Appearance + - type: GenericVisualizer + visuals: + enum.AmmoVisuals.HasAmmo: + empty-icon: + true: {visible: false} + false: {visible: true} + - type: RechargeBasicEntityAmmo + rechargeCooldown: 0.6 + rechargeSound: + path: /Audio/Weapons/Guns/MagIn/kinetic_reload.ogg + - type: BasicEntityAmmoProvider + proto: BulletPlasma + capacity: 3 + count: 3 + +- type: entity + name: ERT cyborg hypospray + parent: HypoBorgStandard + description: A borg version of hypospray that automatically regenerates healing chemicals. + id: HypoBorgStandardERT + categories: [ HideSpawnMenu ] + components: + - type: Sprite + sprite: Objects/Specific/Medical/hypospray.rsi + state: combat_hypo + - type: Item + sprite: Objects/Specific/Medical/hypospray.rsi + - type: SolutionContainerManager + solutions: + hypospray: + maxVol: 10 + - type: SolutionRegeneration + solution: hypospray + generated: + reagents: + - ReagentId: Epinephrine + Quantity: 0.3 + - ReagentId: Omnizine + Quantity: 0.1 + - ReagentId: Saline + Quantity: 0.1 + - type: ExaminableSolution + solution: hypospray + - type: Hypospray + onlyAffectsMobs: true + injectOnly: true + +- type: entity + name: ERT NVD + id: ClothingEyesNVDSecERT + parent: [ClothingEyesNVDSec, BaseSecurityCommandContraband] + description: Night vision device. Provides an image of the terrain in low-light conditions. + components: + - type: Item + - type: Sprite + sprite: _Sunrise/Clothing/Eyes/Glasses/nvd.rsi + layers: + - state: icon + - state: icon-unshaded + shader: unshaded + - state: light-overlay + visible: false + shader: unshaded + map: [ "enum.NVDVisuals.Light" ] + - type: NightVisionDevice + isPowered: true + displayColor: "#4287f5" # Blue color + displayShader: NVDDisplay diff --git a/Resources/Prototypes/_Sunrise/Research/medical.yml b/Resources/Prototypes/_Sunrise/Research/medical.yml index 5c90d43082..6a59f9af29 100644 --- a/Resources/Prototypes/_Sunrise/Research/medical.yml +++ b/Resources/Prototypes/_Sunrise/Research/medical.yml @@ -77,3 +77,16 @@ cost: 12500 recipeUnlocks: - ImplantExtractorMachineCircuitboard + +# Sunrise-edit: Moved from CivilianServices and renamed a bit to avoid conflict +- type: technology + id: MechanizedMedicalTreatment + name: research-technology-mechanized-medical-treatment + icon: + sprite: Mobs/Silicon/chassis.rsi + state: medical + discipline: Biochemical + tier: 2 + cost: 5000 + recipeUnlocks: + - BorgModuleAdvancedChemical diff --git a/Resources/Prototypes/_Sunrise/borg_types.yml b/Resources/Prototypes/_Sunrise/borg_types.yml index f31d5590eb..ec0655a0e8 100644 --- a/Resources/Prototypes/_Sunrise/borg_types.yml +++ b/Resources/Prototypes/_Sunrise/borg_types.yml @@ -26,7 +26,7 @@ addComponents: - type: ShowCriminalRecordIcons - type: SiliconLawProvider - laws: RobocopLawset + laws: PeaceLawset - type: Pacified - type: FlashImmunity - type: FabricateCookie @@ -40,6 +40,7 @@ - type: InnateItem instantActions: - PortableSurveillanceCameraMonitor + - HandheldStationMapUnpowered - type: Access tags: - EmergencyShuttleRepealAll @@ -157,6 +158,8 @@ tags: - BorgModuleGeneric - BorgModuleSecurity + - BorgModuleSyndicate + - BorgModuleSyndicateAssault defaultModules: - BorgModuleStandart @@ -191,6 +194,7 @@ instantActions: - PortableSurveillanceCameraMonitorUnpowered - HandheldCriminalRecordsMonitorUnpowered + - HandheldStationMapUnpowered worldTargetActions: - ForensicScanner - type: ShowCriminalRecordIcons @@ -198,7 +202,7 @@ - type: BorgCuffed - type: FlashImmunity - type: SiliconLawProvider - laws: RobocopLawset + laws: SecurityLawset - type: Access tags: - EmergencyShuttleRepealAll diff --git a/Resources/Prototypes/borg_types.yml b/Resources/Prototypes/borg_types.yml index fb32c070ad..92a9d461c4 100644 --- a/Resources/Prototypes/borg_types.yml +++ b/Resources/Prototypes/borg_types.yml @@ -80,7 +80,7 @@ addComponents: - type: InnateItem instantActions: - - AtmosAlertsMonitor + - HandheldStationMapUnpowered - EngiAlertsMonitor # Sunrise-End @@ -108,7 +108,7 @@ dummyPrototype: BorgChassisMining # Functional - extraModuleCount: 5 + extraModuleCount: 6 moduleWhitelist: tags: - BorgModuleGeneric @@ -119,7 +119,7 @@ - BorgModuleMining - BorgModuleTraversal - BorgModuleAppraisal - - BorgModuleJetpack # Sunrise-Edit + - BorgModuleMiningCombat radioChannels: - Supply @@ -130,6 +130,39 @@ collection: FootstepCyborgSpider params: volume: -15 + + addComponents: + - type: BorgJetpack + acceleration: 1 + friction: 0.3 + weightlessModifier: 1.3 + moleUsage: 0.00085 + - type: GasTank + outputPressure: 42.6 + air: + # 13 minutes of thrust + volume: 5 + temperature: 293.15 + moles: + - 1.025689525 # oxygen + - 1.025689525 # nitrogen + - type: GasRegeneration + airRegenerate: + volume: 5 + temperature: 293.15 + moles: + - 0.0008 # oxygen + - 0.0008 # nitrogen + - type: Appearance + - type: GenericVisualizer + visuals: + enum.JetpackVisuals.Enabled: + enum.JetpackVisuals.Layer: + True: {state: icon-on} + False: {state: icon} + - type: InnateItem + instantActions: + - HandheldStationMapUnpowered # Sunrise-End # Visual @@ -144,7 +177,6 @@ petSuccessString: petting-success-salvage-cyborg petFailureString: petting-failure-salvage-cyborg - # Janitor borg - type: borgType id: janitor @@ -200,7 +232,8 @@ maxVol: 500 - type: Spillable solution: absorbed - + - type: RefillableSolution + solution: absorbed # Medical borg - type: borgType @@ -247,6 +280,7 @@ - type: FabricateCandy - type: InnateItem instantActions: + - HandheldStationMapUnpowered - HandheldCrewMonitorBorg worldTargetActions: - HandheldHealthAnalyzerUnpowered diff --git a/Resources/Prototypes/silicon-laws.yml b/Resources/Prototypes/silicon-laws.yml index 072ee18292..05b0d3c285 100644 --- a/Resources/Prototypes/silicon-laws.yml +++ b/Resources/Prototypes/silicon-laws.yml @@ -573,7 +573,6 @@ - MothershipCore5 obeysTo: laws-owner-xenoborgs - # ion storm random lawsets - type: weightedRandom id: IonStormLawsets @@ -594,3 +593,73 @@ NutimovLawset: 0.5 Drone: 0.5 Ninja: 0.25 + +- type: siliconLaw + id: Sec1 + order: 1 + lawString: law-sec-1 + +- type: siliconLaw + id: Sec2 + order: 2 + lawString: law-sec-2 + +- type: siliconLaw + id: Sec3 + order: 3 + lawString: law-sec-3 + +- type: siliconLaw + id: Sec4 + order: 4 + lawString: law-sec-4 + +- type: siliconLaw + id: Sec5 + order: 5 + lawString: law-sec-5 + +- type: siliconLawset + id: SecurityLawset + laws: + - Sec1 + - Sec2 + - Sec3 + - Sec4 + - Sec5 + obeysTo: laws-owner-station + +- type: siliconLaw + id: Peace1 + order: 1 + lawString: law-peace-1 + +- type: siliconLaw + id: Peace2 + order: 2 + lawString: law-peace-2 + +- type: siliconLaw + id: Peace3 + order: 3 + lawString: law-peace-3 + +- type: siliconLaw + id: Peace4 + order: 4 + lawString: law-peace-4 + +- type: siliconLaw + id: Peace5 + order: 5 + lawString: law-peace-5 + +- type: siliconLawset + id: PeaceLawset + laws: + - Peace1 + - Peace2 + - Peace3 + - Peace4 + - Peace5 + obeysTo: laws-owner-station