Add health analyzer unrevivability warning (#32636)

* Add health analyzer unrevivability warning

* Remove errornous comment
This commit is contained in:
Saphire Lattice
2024-10-27 00:22:08 +07:00
committed by GitHub
parent dcb615d678
commit a95c8baf28
6 changed files with 32 additions and 12 deletions

View File

@@ -47,8 +47,7 @@
<PanelContainer Name="AlertsDivider" Visible="False" StyleClasses="LowDivider" /> <PanelContainer Name="AlertsDivider" Visible="False" StyleClasses="LowDivider" />
<BoxContainer Name="AlertsContainer" Visible="False" Margin="0 5" Orientation="Horizontal" <BoxContainer Name="AlertsContainer" Visible="False" Margin="0 5" Orientation="Vertical" HorizontalAlignment="Center">
HorizontalExpand="True" HorizontalAlignment="Center">
</BoxContainer> </BoxContainer>

View File

@@ -110,18 +110,29 @@ namespace Content.Client.HealthAnalyzer.UI
// Alerts // Alerts
AlertsDivider.Visible = msg.Bleeding == true; var showAlerts = msg.Unrevivable == true || msg.Bleeding == true;
AlertsContainer.Visible = msg.Bleeding == true;
AlertsDivider.Visible = showAlerts;
AlertsContainer.Visible = showAlerts;
if (showAlerts)
AlertsContainer.DisposeAllChildren();
if (msg.Unrevivable == true)
AlertsContainer.AddChild(new RichTextLabel
{
Text = Loc.GetString("health-analyzer-window-entity-unrevivable-text"),
Margin = new Thickness(0, 4),
MaxWidth = 300
});
if (msg.Bleeding == true) if (msg.Bleeding == true)
{ AlertsContainer.AddChild(new RichTextLabel
AlertsContainer.DisposeAllChildren();
AlertsContainer.AddChild(new Label
{ {
Text = Loc.GetString("health-analyzer-window-entity-bleeding-text"), Text = Loc.GetString("health-analyzer-window-entity-bleeding-text"),
FontColorOverride = Color.Red, Margin = new Thickness(0, 4),
MaxWidth = 300
}); });
}
// Damage Groups // Damage Groups

View File

@@ -201,6 +201,7 @@ public sealed partial class CryoPodSystem : SharedCryoPodSystem
? bloodSolution.FillFraction ? bloodSolution.FillFraction
: 0, : 0,
null, null,
null,
null null
)); ));
} }

View File

@@ -2,6 +2,7 @@ using Content.Server.Body.Components;
using Content.Server.Medical.Components; using Content.Server.Medical.Components;
using Content.Server.PowerCell; using Content.Server.PowerCell;
using Content.Server.Temperature.Components; using Content.Server.Temperature.Components;
using Content.Server.Traits.Assorted;
using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.Damage; using Content.Shared.Damage;
using Content.Shared.DoAfter; using Content.Shared.DoAfter;
@@ -196,6 +197,7 @@ public sealed class HealthAnalyzerSystem : EntitySystem
var bloodAmount = float.NaN; var bloodAmount = float.NaN;
var bleeding = false; var bleeding = false;
var unrevivable = false;
if (TryComp<BloodstreamComponent>(target, out var bloodstream) && if (TryComp<BloodstreamComponent>(target, out var bloodstream) &&
_solutionContainerSystem.ResolveSolution(target, bloodstream.BloodSolutionName, _solutionContainerSystem.ResolveSolution(target, bloodstream.BloodSolutionName,
@@ -205,12 +207,16 @@ public sealed class HealthAnalyzerSystem : EntitySystem
bleeding = bloodstream.BleedAmount > 0; bleeding = bloodstream.BleedAmount > 0;
} }
if (HasComp<UnrevivableComponent>(target))
unrevivable = true;
_uiSystem.ServerSendUiMessage(healthAnalyzer, HealthAnalyzerUiKey.Key, new HealthAnalyzerScannedUserMessage( _uiSystem.ServerSendUiMessage(healthAnalyzer, HealthAnalyzerUiKey.Key, new HealthAnalyzerScannedUserMessage(
GetNetEntity(target), GetNetEntity(target),
bodyTemperature, bodyTemperature,
bloodAmount, bloodAmount,
scanMode, scanMode,
bleeding bleeding,
unrevivable
)); ));
} }
} }

View File

@@ -13,14 +13,16 @@ public sealed class HealthAnalyzerScannedUserMessage : BoundUserInterfaceMessage
public float BloodLevel; public float BloodLevel;
public bool? ScanMode; public bool? ScanMode;
public bool? Bleeding; public bool? Bleeding;
public bool? Unrevivable;
public HealthAnalyzerScannedUserMessage(NetEntity? targetEntity, float temperature, float bloodLevel, bool? scanMode, bool? bleeding) public HealthAnalyzerScannedUserMessage(NetEntity? targetEntity, float temperature, float bloodLevel, bool? scanMode, bool? bleeding, bool? unrevivable)
{ {
TargetEntity = targetEntity; TargetEntity = targetEntity;
Temperature = temperature; Temperature = temperature;
BloodLevel = bloodLevel; BloodLevel = bloodLevel;
ScanMode = scanMode; ScanMode = scanMode;
Bleeding = bleeding; Bleeding = bleeding;
Unrevivable = unrevivable;
} }
} }

View File

@@ -15,7 +15,8 @@ health-analyzer-window-entity-damage-total-text = Total Damage:
health-analyzer-window-damage-group-text = {$damageGroup}: {$amount} health-analyzer-window-damage-group-text = {$damageGroup}: {$amount}
health-analyzer-window-damage-type-text = {$damageType}: {$amount} health-analyzer-window-damage-type-text = {$damageType}: {$amount}
health-analyzer-window-entity-bleeding-text = Patient is bleeding! health-analyzer-window-entity-unrevivable-text = [color=red]Unique body composition detected! Patient can not be resuscitated by normal means![/color]
health-analyzer-window-entity-bleeding-text = [color=red]Patient is bleeding![/color]
health-analyzer-window-scan-mode-text = Scan Mode: health-analyzer-window-scan-mode-text = Scan Mode:
health-analyzer-window-scan-mode-active = Active health-analyzer-window-scan-mode-active = Active