diff --git a/Content.Client/HealthAnalyzer/UI/HealthAnalyzerWindow.xaml b/Content.Client/HealthAnalyzer/UI/HealthAnalyzerWindow.xaml index 1846a96a07..16aded522b 100644 --- a/Content.Client/HealthAnalyzer/UI/HealthAnalyzerWindow.xaml +++ b/Content.Client/HealthAnalyzer/UI/HealthAnalyzerWindow.xaml @@ -36,27 +36,37 @@ - + diff --git a/Content.Client/HealthAnalyzer/UI/HealthAnalyzerWindow.xaml.cs b/Content.Client/HealthAnalyzer/UI/HealthAnalyzerWindow.xaml.cs index 179b367326..5644f19f32 100644 --- a/Content.Client/HealthAnalyzer/UI/HealthAnalyzerWindow.xaml.cs +++ b/Content.Client/HealthAnalyzer/UI/HealthAnalyzerWindow.xaml.cs @@ -3,6 +3,7 @@ using System.Numerics; using Content.Client.Message; using Content.Shared.Atmos; using Content.Client.UserInterface.Controls; +using Content.Shared._Offbrand.Wounds; // Offbrand using Content.Shared.Alert; using Content.Shared.Damage; using Content.Shared.Damage.Prototypes; @@ -36,6 +37,19 @@ namespace Content.Client.HealthAnalyzer.UI private readonly IPrototypeManager _prototypes; private readonly IResourceCache _cache; + // Begin Offbrand + private readonly Tooltips.StatusTooltip _statusTooltip = new(); + private readonly Tooltips.BrainHealthTooltip _brainHealthTooltip = new(); + private readonly Tooltips.BloodPressureTooltip _bloodPressureTooltip = new(); + private readonly Tooltips.BloodOxygenationTooltip _bloodOxygenationTooltip = new(); + private readonly Tooltips.HeartRateTooltip _heartRateTooltip = new(); + private readonly Tooltips.HeartHealthTooltip _heartHealthTooltip = new(); + private readonly Tooltips.BloodFlowTooltip _bloodFlowTooltip = new(); + private readonly Tooltips.BloodTooltip _bloodTooltip = new(); + private readonly Tooltips.TemperatureTooltip _temperatureTooltip = new(); + private readonly Tooltips.DamageTooltip _damageTooltip = new(); + // End Offbrand + public HealthAnalyzerWindow() { RobustXamlLoader.Load(this); @@ -45,6 +59,19 @@ namespace Content.Client.HealthAnalyzer.UI _spriteSystem = _entityManager.System(); _prototypes = dependencies.Resolve(); _cache = dependencies.Resolve(); + + // Begin Offbrand + StatusButton.TooltipSupplier = _ => _statusTooltip; + BrainHealthButton.TooltipSupplier = _ => _brainHealthTooltip; + BloodPressureButton.TooltipSupplier = _ => _bloodPressureTooltip; + BloodOxygenationButton.TooltipSupplier = _ => _bloodOxygenationTooltip; + HeartRateButton.TooltipSupplier = _ => _heartRateTooltip; + BloodFlowButton.TooltipSupplier = _ => _bloodFlowTooltip; + HeartHealthButton.TooltipSupplier = _ => _heartHealthTooltip; + TemperatureButton.TooltipSupplier = _ => _temperatureTooltip; + DamageButton.TooltipSupplier = _ => _damageTooltip; + BloodButton.TooltipSupplier = _ => _bloodTooltip; + // End Offbrand } public void Populate(HealthAnalyzerScannedUserMessage msg) @@ -60,6 +87,16 @@ namespace Content.Client.HealthAnalyzer.UI NoPatientDataText.Visible = false; + // Begin Offbrand Tooltips + _brainHealthTooltip.Update(msg); + _bloodPressureTooltip.Update(msg); + _bloodOxygenationTooltip.Update(msg, (target.Value, damageable)); + _heartRateTooltip.Update(msg, (target.Value, damageable)); + _bloodFlowTooltip.Update(msg); + _heartHealthTooltip.Update(msg); + _temperatureTooltip.Update(msg, (target.Value, _entityManager.GetComponentOrNull(target))); + // End Offbrand Tooltips + // Scan Mode ScanModeLabel.Text = msg.ScanMode.HasValue @@ -198,30 +235,37 @@ namespace Content.Client.HealthAnalyzer.UI BrainHealthText.Visible = true; BrainHealthLabel.Visible = true; BrainHealthLabel.Text = Loc.GetString("health-analyzer-window-entity-brain-health-value", ("value", $"{woundable.BrainHealth * 100:F1}"), ("rating", woundable.BrainHealthRating)); + BrainHealthButton.Visible = true; HeartHealthText.Visible = true; HeartHealthLabel.Visible = true; HeartHealthLabel.Text = Loc.GetString("health-analyzer-window-entity-heart-health-value", ("value", $"{woundable.HeartHealth * 100:F1}"), ("rating", woundable.HeartHealthRating)); + HeartHealthButton.Visible = true; HeartRateText.Visible = true; HeartRateLabel.Visible = true; HeartRateLabel.Text = Loc.GetString("health-analyzer-window-entity-heart-rate-value", ("value", woundable.HeartRate), ("rating", woundable.HeartRateRating)); + HeartRateButton.Visible = true; BloodOxygenationText.Visible = true; BloodOxygenationLabel.Visible = true; BloodOxygenationLabel.Text = Loc.GetString("health-analyzer-window-entity-blood-oxygenation-value", ("value", $"{woundable.BloodOxygenation * 100:F1}"), ("rating", woundable.BloodOxygenationRating)); + BloodOxygenationButton.Visible = true; BloodFlowText.Visible = true; BloodFlowLabel.Visible = true; BloodFlowLabel.Text = Loc.GetString("health-analyzer-window-entity-blood-flow-value", ("value", $"{woundable.BloodFlow * 100:F1}"), ("rating", woundable.BloodFlowRating)); + BloodFlowButton.Visible = true; var (systolic, diastolic) = woundable.BloodPressure; BloodPressureText.Visible = true; BloodPressureLabel.Visible = true; BloodPressureLabel.Text = Loc.GetString("health-analyzer-window-entity-blood-pressure-value", ("systolic", systolic), ("diastolic", diastolic), ("rating", woundable.BloodPressureRating)); + BloodPressureButton.Visible = true; BloodLabel.Visible = false; BloodText.Visible = false; + BloodButton.Visible = false; } else { @@ -237,9 +281,16 @@ namespace Content.Client.HealthAnalyzer.UI BloodFlowText.Visible = false; HeartRateText.Visible = false; HeartHealthText.Visible = false; + BrainHealthButton.Visible = false; + BloodPressureButton.Visible = false; + BloodOxygenationButton.Visible = false; + BloodFlowButton.Visible = false; + HeartRateButton.Visible = false; + HeartHealthButton.Visible = false; BloodLabel.Visible = true; BloodText.Visible = true; + BloodButton.Visible = true; } // End Offbrand diff --git a/Content.Client/HealthAnalyzer/UI/Tooltips/BloodFlowTooltip.xaml b/Content.Client/HealthAnalyzer/UI/Tooltips/BloodFlowTooltip.xaml new file mode 100644 index 0000000000..29945b5e4c --- /dev/null +++ b/Content.Client/HealthAnalyzer/UI/Tooltips/BloodFlowTooltip.xaml @@ -0,0 +1,8 @@ + + + + + diff --git a/Content.Client/HealthAnalyzer/UI/Tooltips/BloodFlowTooltip.xaml.cs b/Content.Client/HealthAnalyzer/UI/Tooltips/BloodFlowTooltip.xaml.cs new file mode 100644 index 0000000000..6d5a7463e6 --- /dev/null +++ b/Content.Client/HealthAnalyzer/UI/Tooltips/BloodFlowTooltip.xaml.cs @@ -0,0 +1,24 @@ +using Content.Shared.MedicalScanner; +using Robust.Client.AutoGenerated; +using Robust.Client.UserInterface.Controls; +using Robust.Client.UserInterface.XAML; +using Robust.Client.UserInterface; + +namespace Content.Client.HealthAnalyzer.UI.Tooltips; + +[GenerateTypedNameReferences] +public sealed partial class BloodFlowTooltip : PanelContainer +{ + public BloodFlowTooltip() + { + RobustXamlLoader.Load(this); + } + + public void Update(HealthAnalyzerScannedUserMessage msg) + { + if (msg.WoundableData is not { } woundable) + return; + + Label.Text = Loc.GetString("health-analyzer-blood-flow-tooltip", ("heartrate", woundable.HeartRate), ("health", $"{woundable.HeartHealth * 100:F1}")); + } +} diff --git a/Content.Client/HealthAnalyzer/UI/Tooltips/BloodOxygenationTooltip.xaml b/Content.Client/HealthAnalyzer/UI/Tooltips/BloodOxygenationTooltip.xaml new file mode 100644 index 0000000000..29945b5e4c --- /dev/null +++ b/Content.Client/HealthAnalyzer/UI/Tooltips/BloodOxygenationTooltip.xaml @@ -0,0 +1,8 @@ + + + + + diff --git a/Content.Client/HealthAnalyzer/UI/Tooltips/BloodOxygenationTooltip.xaml.cs b/Content.Client/HealthAnalyzer/UI/Tooltips/BloodOxygenationTooltip.xaml.cs new file mode 100644 index 0000000000..58584484c6 --- /dev/null +++ b/Content.Client/HealthAnalyzer/UI/Tooltips/BloodOxygenationTooltip.xaml.cs @@ -0,0 +1,30 @@ +using Content.Shared.Damage; +using Content.Shared.FixedPoint; +using Content.Shared.MedicalScanner; +using Robust.Client.AutoGenerated; +using Robust.Client.UserInterface.Controls; +using Robust.Client.UserInterface.XAML; +using Robust.Client.UserInterface; + +namespace Content.Client.HealthAnalyzer.UI.Tooltips; + +[GenerateTypedNameReferences] +public sealed partial class BloodOxygenationTooltip : PanelContainer +{ + public BloodOxygenationTooltip() + { + RobustXamlLoader.Load(this); + } + + public void Update(HealthAnalyzerScannedUserMessage msg, Entity ent) + { + if (msg.WoundableData is not { } woundable) + return; + + var asphyxiation = FixedPoint2.Zero; + ent.Comp.Damage.DamageDict.TryGetValue("Asphyxiation", out asphyxiation); + var (systolic, diastolic) = woundable.BloodPressure; + + Label.Text = Loc.GetString("health-analyzer-blood-saturation-tooltip", ("rating", woundable.BloodOxygenationRating), ("systolic", systolic), ("diastolic", diastolic), ("asphyxiation", asphyxiation)); + } +} diff --git a/Content.Client/HealthAnalyzer/UI/Tooltips/BloodPressureTooltip.xaml b/Content.Client/HealthAnalyzer/UI/Tooltips/BloodPressureTooltip.xaml new file mode 100644 index 0000000000..29945b5e4c --- /dev/null +++ b/Content.Client/HealthAnalyzer/UI/Tooltips/BloodPressureTooltip.xaml @@ -0,0 +1,8 @@ + + + + + diff --git a/Content.Client/HealthAnalyzer/UI/Tooltips/BloodPressureTooltip.xaml.cs b/Content.Client/HealthAnalyzer/UI/Tooltips/BloodPressureTooltip.xaml.cs new file mode 100644 index 0000000000..a0cc4e7a44 --- /dev/null +++ b/Content.Client/HealthAnalyzer/UI/Tooltips/BloodPressureTooltip.xaml.cs @@ -0,0 +1,24 @@ +using Content.Shared.MedicalScanner; +using Robust.Client.AutoGenerated; +using Robust.Client.UserInterface.Controls; +using Robust.Client.UserInterface.XAML; +using Robust.Client.UserInterface; + +namespace Content.Client.HealthAnalyzer.UI.Tooltips; + +[GenerateTypedNameReferences] +public sealed partial class BloodPressureTooltip : PanelContainer +{ + public BloodPressureTooltip() + { + RobustXamlLoader.Load(this); + } + + public void Update(HealthAnalyzerScannedUserMessage msg) + { + if (msg.WoundableData is not { } woundable) + return; + + Label.Text = Loc.GetString("health-analyzer-blood-pressure-tooltip", ("flow", $"{woundable.BloodFlow * 100:F1}")); + } +} diff --git a/Content.Client/HealthAnalyzer/UI/Tooltips/BloodTooltip.xaml b/Content.Client/HealthAnalyzer/UI/Tooltips/BloodTooltip.xaml new file mode 100644 index 0000000000..c56a6bf390 --- /dev/null +++ b/Content.Client/HealthAnalyzer/UI/Tooltips/BloodTooltip.xaml @@ -0,0 +1,8 @@ + + + + + diff --git a/Content.Client/HealthAnalyzer/UI/Tooltips/BloodTooltip.xaml.cs b/Content.Client/HealthAnalyzer/UI/Tooltips/BloodTooltip.xaml.cs new file mode 100644 index 0000000000..4db8005446 --- /dev/null +++ b/Content.Client/HealthAnalyzer/UI/Tooltips/BloodTooltip.xaml.cs @@ -0,0 +1,15 @@ +using Robust.Client.AutoGenerated; +using Robust.Client.UserInterface.Controls; +using Robust.Client.UserInterface.XAML; +using Robust.Client.UserInterface; + +namespace Content.Client.HealthAnalyzer.UI.Tooltips; + +[GenerateTypedNameReferences] +public sealed partial class BloodTooltip : PanelContainer +{ + public BloodTooltip() + { + RobustXamlLoader.Load(this); + } +} diff --git a/Content.Client/HealthAnalyzer/UI/Tooltips/BrainHealthTooltip.xaml b/Content.Client/HealthAnalyzer/UI/Tooltips/BrainHealthTooltip.xaml new file mode 100644 index 0000000000..29945b5e4c --- /dev/null +++ b/Content.Client/HealthAnalyzer/UI/Tooltips/BrainHealthTooltip.xaml @@ -0,0 +1,8 @@ + + + + + diff --git a/Content.Client/HealthAnalyzer/UI/Tooltips/BrainHealthTooltip.xaml.cs b/Content.Client/HealthAnalyzer/UI/Tooltips/BrainHealthTooltip.xaml.cs new file mode 100644 index 0000000000..9ad93b05ce --- /dev/null +++ b/Content.Client/HealthAnalyzer/UI/Tooltips/BrainHealthTooltip.xaml.cs @@ -0,0 +1,24 @@ +using Content.Shared.MedicalScanner; +using Robust.Client.AutoGenerated; +using Robust.Client.UserInterface.Controls; +using Robust.Client.UserInterface.XAML; +using Robust.Client.UserInterface; + +namespace Content.Client.HealthAnalyzer.UI.Tooltips; + +[GenerateTypedNameReferences] +public sealed partial class BrainHealthTooltip : PanelContainer +{ + public BrainHealthTooltip() + { + RobustXamlLoader.Load(this); + } + + public void Update(HealthAnalyzerScannedUserMessage msg) + { + if (msg.WoundableData is not { } woundable) + return; + + Label.Text = Loc.GetString("health-analyzer-brain-health-tooltip", ("dead", woundable.BrainHealth <= 0), ("rating", woundable.BrainHealthRating), ("saturation", $"{woundable.BloodOxygenation * 100:F1}")); + } +} diff --git a/Content.Client/HealthAnalyzer/UI/Tooltips/DamageTooltip.xaml b/Content.Client/HealthAnalyzer/UI/Tooltips/DamageTooltip.xaml new file mode 100644 index 0000000000..2cb2ce3f6b --- /dev/null +++ b/Content.Client/HealthAnalyzer/UI/Tooltips/DamageTooltip.xaml @@ -0,0 +1,8 @@ + + + + + diff --git a/Content.Client/HealthAnalyzer/UI/Tooltips/DamageTooltip.xaml.cs b/Content.Client/HealthAnalyzer/UI/Tooltips/DamageTooltip.xaml.cs new file mode 100644 index 0000000000..21a299d81a --- /dev/null +++ b/Content.Client/HealthAnalyzer/UI/Tooltips/DamageTooltip.xaml.cs @@ -0,0 +1,15 @@ +using Robust.Client.AutoGenerated; +using Robust.Client.UserInterface.Controls; +using Robust.Client.UserInterface.XAML; +using Robust.Client.UserInterface; + +namespace Content.Client.HealthAnalyzer.UI.Tooltips; + +[GenerateTypedNameReferences] +public sealed partial class DamageTooltip : PanelContainer +{ + public DamageTooltip() + { + RobustXamlLoader.Load(this); + } +} diff --git a/Content.Client/HealthAnalyzer/UI/Tooltips/HeartHealthTooltip.xaml b/Content.Client/HealthAnalyzer/UI/Tooltips/HeartHealthTooltip.xaml new file mode 100644 index 0000000000..29945b5e4c --- /dev/null +++ b/Content.Client/HealthAnalyzer/UI/Tooltips/HeartHealthTooltip.xaml @@ -0,0 +1,8 @@ + + + + + diff --git a/Content.Client/HealthAnalyzer/UI/Tooltips/HeartHealthTooltip.xaml.cs b/Content.Client/HealthAnalyzer/UI/Tooltips/HeartHealthTooltip.xaml.cs new file mode 100644 index 0000000000..dc60197631 --- /dev/null +++ b/Content.Client/HealthAnalyzer/UI/Tooltips/HeartHealthTooltip.xaml.cs @@ -0,0 +1,24 @@ +using Content.Shared.MedicalScanner; +using Robust.Client.AutoGenerated; +using Robust.Client.UserInterface.Controls; +using Robust.Client.UserInterface.XAML; +using Robust.Client.UserInterface; + +namespace Content.Client.HealthAnalyzer.UI.Tooltips; + +[GenerateTypedNameReferences] +public sealed partial class HeartHealthTooltip : PanelContainer +{ + public HeartHealthTooltip() + { + RobustXamlLoader.Load(this); + } + + public void Update(HealthAnalyzerScannedUserMessage msg) + { + if (msg.WoundableData is not { } woundable) + return; + + Label.Text = Loc.GetString("health-analyzer-heart-health-tooltip", ("heartrate", woundable.HeartRate)); + } +} diff --git a/Content.Client/HealthAnalyzer/UI/Tooltips/HeartRateTooltip.xaml b/Content.Client/HealthAnalyzer/UI/Tooltips/HeartRateTooltip.xaml new file mode 100644 index 0000000000..29945b5e4c --- /dev/null +++ b/Content.Client/HealthAnalyzer/UI/Tooltips/HeartRateTooltip.xaml @@ -0,0 +1,8 @@ + + + + + diff --git a/Content.Client/HealthAnalyzer/UI/Tooltips/HeartRateTooltip.xaml.cs b/Content.Client/HealthAnalyzer/UI/Tooltips/HeartRateTooltip.xaml.cs new file mode 100644 index 0000000000..88520910bd --- /dev/null +++ b/Content.Client/HealthAnalyzer/UI/Tooltips/HeartRateTooltip.xaml.cs @@ -0,0 +1,29 @@ +using Content.Shared.Damage; +using Content.Shared.FixedPoint; +using Content.Shared.MedicalScanner; +using Robust.Client.AutoGenerated; +using Robust.Client.UserInterface.Controls; +using Robust.Client.UserInterface.XAML; +using Robust.Client.UserInterface; + +namespace Content.Client.HealthAnalyzer.UI.Tooltips; + +[GenerateTypedNameReferences] +public sealed partial class HeartRateTooltip : PanelContainer +{ + public HeartRateTooltip() + { + RobustXamlLoader.Load(this); + } + + public void Update(HealthAnalyzerScannedUserMessage msg, Entity ent) + { + if (msg.WoundableData is not { } woundable) + return; + + var asphyxiation = FixedPoint2.Zero; + ent.Comp.Damage.DamageDict.TryGetValue("Asphyxiation", out asphyxiation); + + Label.Text = Loc.GetString("health-analyzer-heart-rate-tooltip", ("asphyxiation", asphyxiation)); + } +} diff --git a/Content.Client/HealthAnalyzer/UI/Tooltips/StatusTooltip.xaml b/Content.Client/HealthAnalyzer/UI/Tooltips/StatusTooltip.xaml new file mode 100644 index 0000000000..6457a79174 --- /dev/null +++ b/Content.Client/HealthAnalyzer/UI/Tooltips/StatusTooltip.xaml @@ -0,0 +1,8 @@ + + + + + diff --git a/Content.Client/HealthAnalyzer/UI/Tooltips/StatusTooltip.xaml.cs b/Content.Client/HealthAnalyzer/UI/Tooltips/StatusTooltip.xaml.cs new file mode 100644 index 0000000000..58ef9b7be5 --- /dev/null +++ b/Content.Client/HealthAnalyzer/UI/Tooltips/StatusTooltip.xaml.cs @@ -0,0 +1,15 @@ +using Robust.Client.AutoGenerated; +using Robust.Client.UserInterface.Controls; +using Robust.Client.UserInterface.XAML; +using Robust.Client.UserInterface; + +namespace Content.Client.HealthAnalyzer.UI.Tooltips; + +[GenerateTypedNameReferences] +public sealed partial class StatusTooltip : PanelContainer +{ + public StatusTooltip() + { + RobustXamlLoader.Load(this); + } +} diff --git a/Content.Client/HealthAnalyzer/UI/Tooltips/TemperatureTooltip.xaml b/Content.Client/HealthAnalyzer/UI/Tooltips/TemperatureTooltip.xaml new file mode 100644 index 0000000000..b149172dc4 --- /dev/null +++ b/Content.Client/HealthAnalyzer/UI/Tooltips/TemperatureTooltip.xaml @@ -0,0 +1,8 @@ + + + + + diff --git a/Content.Client/HealthAnalyzer/UI/Tooltips/TemperatureTooltip.xaml.cs b/Content.Client/HealthAnalyzer/UI/Tooltips/TemperatureTooltip.xaml.cs new file mode 100644 index 0000000000..bbd32c3b50 --- /dev/null +++ b/Content.Client/HealthAnalyzer/UI/Tooltips/TemperatureTooltip.xaml.cs @@ -0,0 +1,31 @@ +using Content.Shared._Offbrand.Wounds; +using Content.Shared.FixedPoint; +using Content.Shared.MedicalScanner; +using Robust.Client.AutoGenerated; +using Robust.Client.UserInterface.Controls; +using Robust.Client.UserInterface.XAML; +using Robust.Client.UserInterface; + +namespace Content.Client.HealthAnalyzer.UI.Tooltips; + +[GenerateTypedNameReferences] +public sealed partial class TemperatureTooltip : PanelContainer +{ + public TemperatureTooltip() + { + RobustXamlLoader.Load(this); + } + + public void Update(HealthAnalyzerScannedUserMessage msg, Entity ent) + { + if (ent.Comp is null) + { + Label.Text = Loc.GetString("health-analyzer-plain-temperature-tooltip"); + } + else + { + var factor = Math.Max(ent.Comp.TemperatureCoefficient * msg.Temperature + ent.Comp.TemperatureConstant, 1); + Label.Text = Loc.GetString("health-analyzer-cryostasis-temperature-tooltip", ("factor", $"{factor * 100:F1}")); + } + } +} diff --git a/Resources/Locale/en-US/_Offbrand/health-analyzer.ftl b/Resources/Locale/en-US/_Offbrand/health-analyzer.ftl index 0b31dc81d9..c07c54431f 100644 --- a/Resources/Locale/en-US/_Offbrand/health-analyzer.ftl +++ b/Resources/Locale/en-US/_Offbrand/health-analyzer.ftl @@ -32,3 +32,101 @@ wound-ribcage-open = [color=red]Patient has open ribcage.[/color] wound-arterial-bleeding = [color=red]Patient has arterial bleeding.[/color] health-analyzer-window-no-patient-damages = Patient has no injuries. + +health-analyzer-status-tooltip = + {"[bold]"}Alive[/bold]: The patient is alive and conscious. + {"[bold]"}Critical[/bold]: The patient is unconscious and will die without intervention. + {"[bold]"}Dead[/bold]: The patient is dead and will rot without intervention. + +health-analyzer-blood-saturation-tooltip = + A measure of how much oxygen (or nitrogen, etc.) the patient's brain is getting. + + { $rating -> + [good] Your patient's brain is not at risk. + [okay] Your patient's brain may be damaged slightly. + [poor] Your patient's brain may be damaged. + [bad] Your patient's brain may be damaged substantially. + [awful] Your patient's brain is at [color=red]severe risk[/color] for fatal injury. + [dangerous] Your patient's brain is at [color=red]life-threatening risk[/color] for fatal injury. + *[other] Your patient is an enigma. Report this to developers if you see this message. + } + + Relevant metrics: + {"[color=#7af396]"}Blood Pressure[/color]: {$systolic}/{$diastolic} + {"[color=#7af396]"}Asphyxiation[/color]: {$asphyxiation} + +health-analyzer-blood-pressure-tooltip = + A measure of how much blood is in use by the body. + + If [color=#7af396]Blood Flow[/color] is high but [color=#7af396]Blood Pressure[/color] is not, ensure your patient has adequate [color=#7af396]Blood Volume[/color]. + + Relevant metrics: + {"[color=#7af396]"}Blood Flow[/color]: {$flow}% + +health-analyzer-blood-flow-tooltip = + A measure of how much the patient's body can circulate available blood. + + This primarily depends on your patient's heart having a pulse and being in good condition. + CPR can be administered if the heart is not providing enough blood flow. + + Relevant metrics: + {"[color=#7af396]"}Heart Rate[/color]: {$heartrate}bpm + {"[color=#7af396]"}Heart Health[/color]: {$health}% + +health-analyzer-heart-rate-tooltip = + A measure of how fast the patient's heart is beating. + + It will raise due to pain and asphyxiation. + + It can stop due to severe pain, lack of blood, or severe brain damage. + + {"[color=#731024]"}Inaprovaline[/color] can be administered to reduce the patient's heartrate. + + Relevant metrics: + {"[color=#7af396]"}Asphyxiation[/color]: {$asphyxiation} + +health-analyzer-heart-health-tooltip = + A measure of the heart's integrity. + + It will decrease due to excessively high heartrate. + + Relevant metrics: + {"[color=#7af396]"}Heart Rate[/color]: {$heartrate}bpm + +health-analyzer-plain-temperature-tooltip = + The patient's body temperature. + +health-analyzer-cryostasis-temperature-tooltip = + The patient's body temperature. + + This temperature has a cryostasis factor of {$factor}%. + +health-analyzer-blood-tooltip = + The patient's blood volume. + +health-analyzer-damage-tooltip = + The patient's total accumulated injuries. + +health-analyzer-brain-health-tooltip = { $dead -> + [true] {-health-analyzer-brain-health-tooltip-dead} + *[false] {-health-analyzer-brain-health-tooltip-alive(rating: $rating, saturation: $saturation)} + } + +-health-analyzer-brain-health-tooltip-alive = + { $rating -> + [good] Your patient is fine, and does not need any intervention. + [okay] Your patient has slight brain damage, but can likely heal it over time. + [poor] Your patient has brain damage. + [bad] Your patient has a large amount of brain damage. Administer [color=#731024]Inaprovaline[/color] to stabilize the brain before proceeding with treatment. + [awful] Your patient has a severe amount of brain damage. [bold]Administer [color=#731024]Inaprovaline[/color] to stabilize the brain immediately.[/bold] Consider moving to a cryopod or stasis bed if you do not have a treatment plan. + [dangerous] Your patient is at [color=red]severe risk of death[/color]. [bold]Administer [color=#731024]Inaprovaline[/color], and move the patient to a cryopod or stasis bed if you do not have a treatment plan.[/bold] + *[other] Your patient is an enigma. Report this to developers if you see this message. + } + + {"[color=#fedb79]"}Mannitol[/color] can be administered to heal brain damage if the [color=#7af396]Blood Saturation[/color] permits. + + Relevant metrics: + {"[color=#7af396]"}Blood Saturation[/color]: {$saturation}% + +-health-analyzer-brain-health-tooltip-dead = + The patient has 0% brain activity and is dead.