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