From 758e615cf4cd1e5a18fa2b38b620b54c2e4eae92 Mon Sep 17 00:00:00 2001 From: Lily Autumn Date: Sat, 9 May 2026 07:34:39 +1200 Subject: [PATCH 1/4] Synthetic Heart Trait --- .../Physical/SyntheticHeartComponent.cs | 7 +++ .../Traits/Physical/SyntheticHeartSystem.cs | 47 +++++++++++++++++++ Resources/Locale/en-US/_HL/traits/traits.ftl | 3 ++ Resources/Prototypes/_HL/Traits/Physical.yml | 31 +++++++++++- 4 files changed, 87 insertions(+), 1 deletion(-) create mode 100644 Content.Server/_HL/Traits/Physical/SyntheticHeartComponent.cs create mode 100644 Content.Server/_HL/Traits/Physical/SyntheticHeartSystem.cs diff --git a/Content.Server/_HL/Traits/Physical/SyntheticHeartComponent.cs b/Content.Server/_HL/Traits/Physical/SyntheticHeartComponent.cs new file mode 100644 index 00000000000..2f9509341af --- /dev/null +++ b/Content.Server/_HL/Traits/Physical/SyntheticHeartComponent.cs @@ -0,0 +1,7 @@ +namespace Content.Server._HL.Traits.Physical; + +[RegisterComponent] +public sealed partial class SyntheticHeartComponent : Component +{ + +} diff --git a/Content.Server/_HL/Traits/Physical/SyntheticHeartSystem.cs b/Content.Server/_HL/Traits/Physical/SyntheticHeartSystem.cs new file mode 100644 index 00000000000..555d844f3be --- /dev/null +++ b/Content.Server/_HL/Traits/Physical/SyntheticHeartSystem.cs @@ -0,0 +1,47 @@ +using Content.Shared.Body.Systems; +using Content.Shared._Shitmed.Body.Organ; +using Content.Shared.Body.Components; +using Content.Shared.Body.Organ; +using Robust.Shared.Containers; + +namespace Content.Server._HL.Traits.Physical; + +public sealed class SyntheticHeartSystem : EntitySystem +{ + [Dependency] private readonly SharedBodySystem _body = null!; + [Dependency] private readonly SharedContainerSystem _containers = null!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnStartup); + } + + private void OnStartup(EntityUid uid, SyntheticHeartComponent comp, ComponentStartup args) + { + if (!TryComp(uid, out var body)) + return; + + if (_body.TryGetBodyOrganEntityComps((uid, body), out var livers)) + { + var old = livers[0].Owner; + if (_containers.TryGetContainingContainer((old, null, null), out var cont)) + { + var part = cont.Owner; + _body.RemoveOrgan(old); + QueueDel(old); + + var spawn = Spawn("OrganSynthHeart", Transform(part).Coordinates); + if (TryComp(spawn, out OrganComponent? organ)) + { + _body.InsertOrgan(part, spawn, "heart", null, organ); + } + else + { + QueueDel(spawn); + } + } + } + } +} diff --git a/Resources/Locale/en-US/_HL/traits/traits.ftl b/Resources/Locale/en-US/_HL/traits/traits.ftl index 45cf1dccc7c..e557f7e8541 100644 --- a/Resources/Locale/en-US/_HL/traits/traits.ftl +++ b/Resources/Locale/en-US/_HL/traits/traits.ftl @@ -86,3 +86,6 @@ hl-trait-kinky-erotic-moods-desc = Every half hour or so you receive a private r hl-trait-romantic-moods-name = Romantic Moods hl-trait-romantic-moods-desc = Every half hour or so you receive a private reminder of two randomly drawn romantic inclinations — tenderness, dates, closeness. Preferences rotate every one to two and a half hours. + +trait-syntheticheart-name = Synthetic Heart +trait-syntheticheart-desc = You have a high-tech biomechanical heart based on the same technology found in Synths. Their nanites work on you, and chemicals will continue to process even when the rest of your body won't - but they have significantly reduced effect on you. diff --git a/Resources/Prototypes/_HL/Traits/Physical.yml b/Resources/Prototypes/_HL/Traits/Physical.yml index aa11f32c101..a5c23a43a6e 100644 --- a/Resources/Prototypes/_HL/Traits/Physical.yml +++ b/Resources/Prototypes/_HL/Traits/Physical.yml @@ -374,4 +374,33 @@ components: - type: Amputee removeBodyPart: Arm - partSymmetry: Right \ No newline at end of file + partSymmetry: Right + +- type: trait + id: SyntheticHeart + name: trait-syntheticheart-desc + description: trait-syntheticheart-desc + category: Physical + cost: 16 + speciesBlacklist: # HardLight + - IPC + - Synth + mutuallyExclusiveTraits: + - PlateletFactories + - NaturalRegen + - UnnaturalRegen + components: + - type: SyntheticHeart + - type: HLSynth + - type: HLBloodLevelPassiveDamage + allowedStates: + - Alive + - Critical + allowedDamageGroups: + - Brute + - Burn + bloodLevelDecrease: 1.1 + damage: + groups: + Brute: -7 + Burn: -7 From 0344a06430d15fec9ead989de8756e1776b19ded Mon Sep 17 00:00:00 2001 From: Lily Autumn Date: Sat, 9 May 2026 07:37:50 +1200 Subject: [PATCH 2/4] WHOOPS LMAO --- Resources/Prototypes/_HL/Traits/Physical.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/_HL/Traits/Physical.yml b/Resources/Prototypes/_HL/Traits/Physical.yml index 3b6e0f73fc7..605fe212338 100644 --- a/Resources/Prototypes/_HL/Traits/Physical.yml +++ b/Resources/Prototypes/_HL/Traits/Physical.yml @@ -372,7 +372,7 @@ - type: trait id: SyntheticHeart - name: trait-syntheticheart-desc + name: trait-syntheticheart-name description: trait-syntheticheart-desc category: Physical cost: 16 From fb646b0f4116ba13f66d338396956478994f6972 Mon Sep 17 00:00:00 2001 From: Lily Autumn Date: Sat, 9 May 2026 07:42:04 +1200 Subject: [PATCH 3/4] eeeeeh that might be a bit much --- Resources/Prototypes/_HL/Traits/Physical.yml | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/Resources/Prototypes/_HL/Traits/Physical.yml b/Resources/Prototypes/_HL/Traits/Physical.yml index 605fe212338..209eed2f478 100644 --- a/Resources/Prototypes/_HL/Traits/Physical.yml +++ b/Resources/Prototypes/_HL/Traits/Physical.yml @@ -386,15 +386,3 @@ components: - type: SyntheticHeart - type: HLSynth - - type: HLBloodLevelPassiveDamage - allowedStates: - - Alive - - Critical - allowedDamageGroups: - - Brute - - Burn - bloodLevelDecrease: 1.1 - damage: - groups: - Brute: -7 - Burn: -7 From 9847a8221100b82387bb93cbf3b15aabb4f185bc Mon Sep 17 00:00:00 2001 From: Lily Autumn Date: Mon, 11 May 2026 02:31:07 +1200 Subject: [PATCH 4/4] fix --- Resources/Prototypes/_Mono/Traits/physical.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/Resources/Prototypes/_Mono/Traits/physical.yml b/Resources/Prototypes/_Mono/Traits/physical.yml index 64550e3bb3c..34a8d9ac98a 100644 --- a/Resources/Prototypes/_Mono/Traits/physical.yml +++ b/Resources/Prototypes/_Mono/Traits/physical.yml @@ -376,6 +376,7 @@ - NaturalRegen - ShadekinRegeneration - ExtremeShadekinRegeneration + - SyntheticHeart # HL speciesBlacklist: - IPC - Avali