diff --git a/Content.Server/StationRecords/Systems/StationRecordsSystem.cs b/Content.Server/StationRecords/Systems/StationRecordsSystem.cs index 4cc04ac7090..1c9aea78741 100644 --- a/Content.Server/StationRecords/Systems/StationRecordsSystem.cs +++ b/Content.Server/StationRecords/Systems/StationRecordsSystem.cs @@ -89,10 +89,11 @@ private void CreateGeneralRecord(EntityUid station, EntityUid player, HumanoidCh return; // Sunrise-Start + // Чтобы борги отображались в манифесте экипажа. var name = profile.Name; if (!_inventory.TryGetSlotEntity(player, "id", out var idUid)) { - idUid = null; + idUid = player; name = MetaData(player).EntityName; } // Sunrise-End diff --git a/Content.Shared/Silicons/Borgs/BorgTypePrototype.cs b/Content.Shared/Silicons/Borgs/BorgTypePrototype.cs index 6154c127577..c0989442ce8 100644 --- a/Content.Shared/Silicons/Borgs/BorgTypePrototype.cs +++ b/Content.Shared/Silicons/Borgs/BorgTypePrototype.cs @@ -1,10 +1,12 @@ using Content.Shared.Interaction.Components; using Content.Shared.Inventory; using Content.Shared.Radio; +using Content.Shared.Roles; using Content.Shared.Silicons.Borgs.Components; using Content.Shared.Whitelist; using Robust.Shared.Audio; using Robust.Shared.Prototypes; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; namespace Content.Shared.Silicons.Borgs; @@ -152,4 +154,9 @@ public sealed partial class BorgTypePrototype : IPrototype /// [DataField] public SoundSpecifier FootstepCollection { get; set; } = new SoundCollectionSpecifier(DefaultFootsteps); + + // Sunrise-Start + [DataField(required: true, customTypeSerializer: typeof(PrototypeIdSerializer))] + public string Job = string.Empty; + // Sunrise-End } diff --git a/Content.Shared/Silicons/Borgs/Components/BorgSwitchableTypeComponent.cs b/Content.Shared/Silicons/Borgs/Components/BorgSwitchableTypeComponent.cs index 9a783d19aa7..e582e8a13e2 100644 --- a/Content.Shared/Silicons/Borgs/Components/BorgSwitchableTypeComponent.cs +++ b/Content.Shared/Silicons/Borgs/Components/BorgSwitchableTypeComponent.cs @@ -45,6 +45,9 @@ public sealed partial class BorgSwitchableTypeComponent : Component /// [DataField] public ProtoId[] InherentRadioChannels = []; + + [DataField] + public ProtoId[] NotifyChannels = []; } /// diff --git a/Content.Shared/Verbs/VerbCategory.cs b/Content.Shared/Verbs/VerbCategory.cs index 9b9197249a9..a1fa1b85d37 100644 --- a/Content.Shared/Verbs/VerbCategory.cs +++ b/Content.Shared/Verbs/VerbCategory.cs @@ -85,5 +85,7 @@ public VerbCategory(string text, string? icon, bool iconsOnly = false) public static readonly VerbCategory SelectType = new("verb-categories-select-type", null); public static readonly VerbCategory PowerLevel = new("verb-categories-power-level", null); + + public static readonly VerbCategory ReagentSwitch = new("solution-regeneration-switcher-switch-verb", null); } } diff --git a/Resources/Locale/ru-RU/_strings/_sunrise/borg/borg_switch.ftl b/Resources/Locale/ru-RU/_strings/_sunrise/borg/borg_switch.ftl new file mode 100644 index 00000000000..1e64ffdb78b --- /dev/null +++ b/Resources/Locale/ru-RU/_strings/_sunrise/borg/borg_switch.ftl @@ -0,0 +1 @@ +borg-switch-type-notify = Юнит { $name } был трансформирован в { $type } diff --git a/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml b/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml index ff16b4b25ee..bcb7327095f 100644 --- a/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml +++ b/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml @@ -335,6 +335,7 @@ instantActions: - HandheldStationMapUnpowered - type: BorgCrewManifestViewer + - type: StationRecordKeyStorage # Sunrise-End - type: entity diff --git a/Resources/Prototypes/Entities/Mobs/Cyborgs/borg_chassis.yml b/Resources/Prototypes/Entities/Mobs/Cyborgs/borg_chassis.yml index eacd21c9331..f6ffd36ef47 100644 --- a/Resources/Prototypes/Entities/Mobs/Cyborgs/borg_chassis.yml +++ b/Resources/Prototypes/Entities/Mobs/Cyborgs/borg_chassis.yml @@ -31,6 +31,9 @@ inherentRadioChannels: - Common - Binary + notifyChannels: + - Binary + - Science - type: entity id: BorgChassisGeneric diff --git a/Resources/Prototypes/Roles/Jobs/departments.yml b/Resources/Prototypes/Roles/Jobs/departments.yml index fbf8b498acd..cd095aac806 100644 --- a/Resources/Prototypes/Roles/Jobs/departments.yml +++ b/Resources/Prototypes/Roles/Jobs/departments.yml @@ -122,7 +122,6 @@ - Warden - Brigmedic # Sunrise-Brigmedic - SecurityPilot # Sunrise-SecurityPilot - - SecurityCombatBorg # Sunrise-Edit - type: department id: Science @@ -145,6 +144,15 @@ roles: - StationAi - Borg + - MedicalBorg # Sunrise-Edit + - EngineerBorg # Sunrise-Edit + - MinerBorg # Sunrise-Edit + - JanitorBorg # Sunrise-Edit + - ServiceBorg # Sunrise-Edit + - ClownBorg # Sunrise-Edit + - PeaceBorg # Sunrise-Edit + - SecurityBorg # Sunrise-Edit + - SecurityCombatBorg # Sunrise-Edit primary: false - type: department diff --git a/Resources/Prototypes/_Sunrise/Roles/Jobs/Silicons/clown_borg.yml b/Resources/Prototypes/_Sunrise/Roles/Jobs/Silicons/clown_borg.yml new file mode 100644 index 00000000000..0d34fdd14ed --- /dev/null +++ b/Resources/Prototypes/_Sunrise/Roles/Jobs/Silicons/clown_borg.yml @@ -0,0 +1,11 @@ +- type: job + id: ClownBorg + name: job-name-clown-borg + description: job-description-clown-borg + playTimeTracker: JobClownBorg + icon: JobIconClownBorg + supervisors: job-supervisors-human + canBeAntag: false + setPreference: false + displayWeight: -10 # Sunrise + jobEntity: PlayerBorgBattery diff --git a/Resources/Prototypes/_Sunrise/Roles/Jobs/Silicons/engineer_borg.yml b/Resources/Prototypes/_Sunrise/Roles/Jobs/Silicons/engineer_borg.yml new file mode 100644 index 00000000000..d25e4f03361 --- /dev/null +++ b/Resources/Prototypes/_Sunrise/Roles/Jobs/Silicons/engineer_borg.yml @@ -0,0 +1,11 @@ +- type: job + id: EngineerBorg + name: job-name-engineer-borg + description: job-description-engineer-borg + playTimeTracker: JobEngineerBorg + icon: JobIconEngineerBorg + supervisors: job-supervisors-human + canBeAntag: false + setPreference: false + displayWeight: -10 # Sunrise + jobEntity: PlayerBorgBattery diff --git a/Resources/Prototypes/_Sunrise/Roles/Jobs/Silicons/janitor_borg.yml b/Resources/Prototypes/_Sunrise/Roles/Jobs/Silicons/janitor_borg.yml new file mode 100644 index 00000000000..cf48e5f865d --- /dev/null +++ b/Resources/Prototypes/_Sunrise/Roles/Jobs/Silicons/janitor_borg.yml @@ -0,0 +1,11 @@ +- type: job + id: JanitorBorg + name: job-name-janitor-borg + description: job-description-janitor-borg + playTimeTracker: JobJanitorBorg + icon: JobIconJanitorBorg + supervisors: job-supervisors-human + canBeAntag: false + setPreference: false + displayWeight: -10 # Sunrise + jobEntity: PlayerBorgBattery diff --git a/Resources/Prototypes/_Sunrise/Roles/Jobs/Silicons/medical_borg.yml b/Resources/Prototypes/_Sunrise/Roles/Jobs/Silicons/medical_borg.yml new file mode 100644 index 00000000000..a7d62608d2b --- /dev/null +++ b/Resources/Prototypes/_Sunrise/Roles/Jobs/Silicons/medical_borg.yml @@ -0,0 +1,11 @@ +- type: job + id: MedicalBorg + name: job-name-medical-borg + description: job-description-medical-borg + playTimeTracker: JobMedicalBorg + icon: JobIconMedicalBorg + supervisors: job-supervisors-human + canBeAntag: false + setPreference: false + displayWeight: -10 # Sunrise + jobEntity: PlayerBorgBattery diff --git a/Resources/Prototypes/_Sunrise/Roles/Jobs/Silicons/mining_borg.yml b/Resources/Prototypes/_Sunrise/Roles/Jobs/Silicons/mining_borg.yml new file mode 100644 index 00000000000..497d0cbc753 --- /dev/null +++ b/Resources/Prototypes/_Sunrise/Roles/Jobs/Silicons/mining_borg.yml @@ -0,0 +1,11 @@ +- type: job + id: MinerBorg + name: job-name-miner-borg + description: job-description-miner-borg + playTimeTracker: JobMiningBorg + icon: JobIconMinerBorg + supervisors: job-supervisors-human + canBeAntag: false + setPreference: false + displayWeight: -10 # Sunrise + jobEntity: PlayerBorgBattery diff --git a/Resources/Prototypes/_Sunrise/Roles/Jobs/Silicons/peace_borg.yml b/Resources/Prototypes/_Sunrise/Roles/Jobs/Silicons/peace_borg.yml new file mode 100644 index 00000000000..39cba226d02 --- /dev/null +++ b/Resources/Prototypes/_Sunrise/Roles/Jobs/Silicons/peace_borg.yml @@ -0,0 +1,11 @@ +- type: job + id: BorgChassisPeace + name: job-name-peace-borg + description: job-description-peace-borg + playTimeTracker: JobPeaceBorg + icon: JobIconPeaceBorg + supervisors: job-supervisors-hos + canBeAntag: false + setPreference: false + displayWeight: -10 # Sunrise + jobEntity: PlayerBorgBattery diff --git a/Resources/Prototypes/_Sunrise/Roles/Jobs/Silicons/security_borg.yml b/Resources/Prototypes/_Sunrise/Roles/Jobs/Silicons/security_borg.yml new file mode 100644 index 00000000000..e735f8a5211 --- /dev/null +++ b/Resources/Prototypes/_Sunrise/Roles/Jobs/Silicons/security_borg.yml @@ -0,0 +1,11 @@ +- type: job + id: SecurityBorg + name: job-name-sec-borg + description: job-description-sec-borg + playTimeTracker: JobSecurityBorg + icon: JobIconSecurityBorg + supervisors: job-supervisors-hos + canBeAntag: false + setPreference: false + displayWeight: -10 # Sunrise + jobEntity: PlayerBorgBattery diff --git a/Resources/Prototypes/_Sunrise/Roles/Jobs/Silicons/service_borg.yml b/Resources/Prototypes/_Sunrise/Roles/Jobs/Silicons/service_borg.yml new file mode 100644 index 00000000000..cc421684743 --- /dev/null +++ b/Resources/Prototypes/_Sunrise/Roles/Jobs/Silicons/service_borg.yml @@ -0,0 +1,11 @@ +- type: job + id: ServiceBorg + name: job-name-service-borg + description: job-description-service-borg + playTimeTracker: JobServiceBorg + icon: JobIconServiceBorg + supervisors: job-supervisors-human + canBeAntag: false + setPreference: false + displayWeight: -10 # Sunrise + jobEntity: PlayerBorgBattery diff --git a/Resources/Prototypes/borg_types.yml b/Resources/Prototypes/borg_types.yml index f6e0f41cbfe..1c719331c3a 100644 --- a/Resources/Prototypes/borg_types.yml +++ b/Resources/Prototypes/borg_types.yml @@ -2,6 +2,10 @@ - type: borgType id: generic + # Sunrise-Start + job: Borg + # Sunrise-End + # Description dummyPrototype: BorgChassisGeneric @@ -17,6 +21,13 @@ radioChannels: - Science + # Sunrise-Start + footstepCollection: + collection: FootstepCyborgSpider + params: + volume: -15 + # Sunrise-End + # Visual inventoryTemplateId: borgShort spriteBodyState: robot @@ -33,6 +44,10 @@ - type: borgType id: engineering + # Sunrise-Start + job: EngineerBorg + # Sunrise-End + # Description dummyPrototype: BorgChassisEngineer @@ -54,11 +69,12 @@ - Engineering - Science - # Sounds + # Sunrise-Start footstepCollection: collection: FootstepCyborgSpider params: volume: -15 + # Sunrise-End # Visual inventoryTemplateId: borgShort @@ -76,6 +92,10 @@ - type: borgType id: mining + # Sunrise-Start + job: MinerBorg + # Sunrise-End + # Description dummyPrototype: BorgChassisMining @@ -90,17 +110,18 @@ - BorgModuleStandart - BorgModuleMining - BorgModuleGPS - - BorgModuleJetpack + - BorgModuleJetpack # Sunrise-Edit radioChannels: - Supply - Science - # Sounds + # Sunrise-Start footstepCollection: collection: FootstepCyborgSpider params: volume: -15 + # Sunrise-End # Visual inventoryTemplateId: borgTall @@ -119,6 +140,10 @@ - type: borgType id: janitor + # Sunrise-Start + job: JanitorBorg + # Sunrise-End + # Description dummyPrototype: BorgChassisJanitor @@ -132,15 +157,16 @@ defaultModules: - BorgModuleStandart - BorgModuleLightReplacer - - BorgModuleCleaning + - BorgModuleAdvancedCleaning # Sunrise-Edit radioChannels: - Science - Service - # Sounds + # Sunrise-Start footstepCollection: collection: FootstepJanitorBorg + # Sunrise-Start # Visual inventoryTemplateId: borgShort @@ -159,6 +185,10 @@ - type: borgType id: medical + # Sunrise-Start + job: MedicalBorg + # Sunrise-End + # Description dummyPrototype: BorgChassisMedical @@ -171,9 +201,9 @@ defaultModules: - BorgModuleStandart - - BorgModuleAdvancedTreatment + - BorgModuleAdvancedTreatment # Sunrise-Edit - BorgModuleTreatment - - BorgModuleDefibrillator + - BorgModuleDefibrillator # Sunrise-Edit radioChannels: - Science @@ -187,6 +217,7 @@ - type: ShowHealthIcons damageContainers: - Biological + # Sunrise-Start - type: TTS voice: TurretFloor - type: MovementSpeedModifier @@ -198,6 +229,7 @@ - HandheldCrewMonitorBorg worldTargetActions: - HandheldHealthAnalyzerUnpowered + # Sunrise-End # Visual inventoryTemplateId: borgDutch @@ -220,6 +252,10 @@ - type: borgType id: service + # Sunrise-Start + job: ServiceBorg + # Sunrise-End + # Description dummyPrototype: BorgChassisService @@ -255,6 +291,8 @@ - type: borgType id: peace + job: PeaceBorg + # Description dummyPrototype: BorgChassisPeace @@ -338,6 +376,8 @@ - type: borgType id: clown + job: ClownBorg + # Description dummyPrototype: BorgChassisClown @@ -405,6 +445,19 @@ - Science - Security + # Visual + inventoryTemplateId: borgTall + spriteBodyState: sec + spriteHasMindState: sec_e + spriteNoMindState: sec_e_r + spriteToggleLightState: sec_l + + # Pet + petSuccessString: petting-success-sec-cyborg + petFailureString: petting-failure-sec-cyborg + + job: SecurityBorg + addComponents: - type: TTS voice: Sentrybot @@ -443,14 +496,3 @@ - Atmospherics - type: AccessReader access: [ [ "Command" ], [ "Security" ] ] - - # Visual - inventoryTemplateId: borgTall - spriteBodyState: sec - spriteHasMindState: sec_e - spriteNoMindState: sec_e_r - spriteToggleLightState: sec_l - - # Pet - petSuccessString: petting-success-sec-cyborg - petFailureString: petting-failure-sec-cyborg