From 2225ec2e1a261d84af433aff55cdd64694437333 Mon Sep 17 00:00:00 2001 From: Rane <60792108+Elijahrane@users.noreply.github.com> Date: Sun, 10 Jul 2022 20:52:54 -0400 Subject: [PATCH] Forensics QOL (Autolabeling of pads and reports) (#9610) --- .../Forensics/Components/ForensicScannerComponent.cs | 2 ++ Content.Server/Forensics/Systems/ForensicPadSystem.cs | 9 +++++++-- .../Forensics/Systems/ForensicScannerSystem.cs | 11 ++++++----- Content.Shared/Forensics/ForensicScannerEvent.cs | 4 +++- Resources/Locale/en-US/forensics/forensics.ftl | 5 ++++- 5 files changed, 22 insertions(+), 9 deletions(-) diff --git a/Content.Server/Forensics/Components/ForensicScannerComponent.cs b/Content.Server/Forensics/Components/ForensicScannerComponent.cs index ff36b13979..7374421097 100644 --- a/Content.Server/Forensics/Components/ForensicScannerComponent.cs +++ b/Content.Server/Forensics/Components/ForensicScannerComponent.cs @@ -18,6 +18,8 @@ namespace Content.Server.Forensics [ViewVariables(VVAccess.ReadOnly)] public List Fibers = new(); + public string LastScanned = string.Empty; + /// /// The time (in seconds) that it takes to scan an entity. /// diff --git a/Content.Server/Forensics/Systems/ForensicPadSystem.cs b/Content.Server/Forensics/Systems/ForensicPadSystem.cs index faa166e060..b9e1eb7b5b 100644 --- a/Content.Server/Forensics/Systems/ForensicPadSystem.cs +++ b/Content.Server/Forensics/Systems/ForensicPadSystem.cs @@ -100,6 +100,11 @@ namespace Content.Server.Forensics if (!EntityManager.TryGetComponent(ev.Pad, out ForensicPadComponent? component)) return; + if (HasComp(ev.Target)) + MetaData(component.Owner).EntityName = Loc.GetString("forensic-pad-fingerprint-name", ("entity", ev.Target)); + else + MetaData(component.Owner).EntityName = Loc.GetString("forensic-pad-gloves-name", ("entity", ev.Target)); + component.CancelToken = null; component.Sample = ev.Sample; component.Used = true; @@ -124,11 +129,11 @@ namespace Content.Server.Forensics private sealed class TargetPadSuccessfulEvent : EntityEventArgs { public EntityUid User; - public EntityUid? Target; + public EntityUid Target; public EntityUid Pad; public string Sample = string.Empty; - public TargetPadSuccessfulEvent(EntityUid user, EntityUid? target, EntityUid pad, string sample) + public TargetPadSuccessfulEvent(EntityUid user, EntityUid target, EntityUid pad, string sample) { User = user; Target = target; diff --git a/Content.Server/Forensics/Systems/ForensicScannerSystem.cs b/Content.Server/Forensics/Systems/ForensicScannerSystem.cs index 3eca8f8fa3..aa45ebee33 100644 --- a/Content.Server/Forensics/Systems/ForensicScannerSystem.cs +++ b/Content.Server/Forensics/Systems/ForensicScannerSystem.cs @@ -51,6 +51,7 @@ namespace Content.Server.Forensics scanner.Fingerprints = forensics.Fingerprints.ToList(); scanner.Fibers = forensics.Fibers.ToList(); + scanner.LastScanned = MetaData(ev.Target).EntityName; OpenUserInterface(ev.User, scanner); } @@ -62,7 +63,7 @@ namespace Content.Server.Forensics component.CancelToken = new CancellationTokenSource(); _doAfterSystem.DoAfter(new DoAfterEventArgs(args.User, component.ScanDelay, component.CancelToken.Token, target: args.Target) { - BroadcastFinishedEvent = new TargetScanSuccessfulEvent(args.User, args.Target, component.Owner), + BroadcastFinishedEvent = new TargetScanSuccessfulEvent(args.User, (EntityUid) args.Target, component.Owner), BroadcastCancelledEvent = new ScanCancelledEvent(component.Owner), BreakOnTargetMove = true, BreakOnUserMove = true, @@ -110,7 +111,7 @@ namespace Content.Server.Forensics var ui = _uiSystem.GetUi(component.Owner, ForensicScannerUiKey.Key); ui.Open(actor.PlayerSession); - ui.SendMessage(new ForensicScannerUserMessage(component.Fingerprints, component.Fibers)); + ui.SendMessage(new ForensicScannerUserMessage(component.Fingerprints, component.Fibers, component.LastScanned)); } private void OnPrint(EntityUid uid, ForensicScannerComponent component, ForensicScannerPrintMessage args) @@ -124,7 +125,7 @@ namespace Content.Server.Forensics if (!TryComp(printed, out var paper)) return; - MetaData(printed).EntityName = Loc.GetString("forensic-scanner-report-title"); + MetaData(printed).EntityName = Loc.GetString("forensic-scanner-report-title", ("entity", component.LastScanned)); var text = new StringBuilder(); @@ -156,9 +157,9 @@ namespace Content.Server.Forensics private sealed class TargetScanSuccessfulEvent : EntityEventArgs { public EntityUid User; - public EntityUid? Target; + public EntityUid Target; public EntityUid Scanner; - public TargetScanSuccessfulEvent(EntityUid user, EntityUid? target, EntityUid scanner) + public TargetScanSuccessfulEvent(EntityUid user, EntityUid target, EntityUid scanner) { User = user; Target = target; diff --git a/Content.Shared/Forensics/ForensicScannerEvent.cs b/Content.Shared/Forensics/ForensicScannerEvent.cs index 13f0a890c4..f7f1e1c802 100644 --- a/Content.Shared/Forensics/ForensicScannerEvent.cs +++ b/Content.Shared/Forensics/ForensicScannerEvent.cs @@ -7,11 +7,13 @@ namespace Content.Shared.Forensics { public readonly List Fingerprints = new(); public readonly List Fibers = new(); + public readonly string LastScanned = string.Empty; - public ForensicScannerUserMessage(List fingerprints, List fibers) + public ForensicScannerUserMessage(List fingerprints, List fibers, string lastScanned) { Fingerprints = fingerprints; Fibers = fibers; + LastScanned = lastScanned; } } diff --git a/Resources/Locale/en-US/forensics/forensics.ftl b/Resources/Locale/en-US/forensics/forensics.ftl index 5d0ab78c3f..397d980f3b 100644 --- a/Resources/Locale/en-US/forensics/forensics.ftl +++ b/Resources/Locale/en-US/forensics/forensics.ftl @@ -3,7 +3,7 @@ forensic-scanner-interface-fingerprints = Fingerprints forensic-scanner-interface-fibers = Fibers forensic-scanner-interface-no-data = No scan data available forensic-scanner-interface-print = Print -forensic-scanner-report-title = Forensics Report +forensic-scanner-report-title = Forensics Report: {$entity} forensic-pad-unused = It hasn't been used. forensic-pad-sample = It has a sample: {$sample} forensic-pad-gloves = {CAPITALIZE($target)} is wearing gloves. @@ -13,3 +13,6 @@ forensic-pad-already-used = This pad has already been used. forensic-scanner-match-fiber = Match in fiber found! forensic-scanner-match-fingerprint = Match in fingerprint found! forensic-scanner-match-none = No matches found! + +forensic-pad-fingerprint-name = {$entity}'s fingerprints +forensic-pad-gloves-name = fibers from {$entity}