From e3880a3c4370c75486d60ec4790b3377b3334690 Mon Sep 17 00:00:00 2001 From: B_Kirill <153602297+B-Kirill@users.noreply.github.com> Date: Tue, 21 Oct 2025 18:44:50 +1000 Subject: [PATCH] Criminal console status expansion (#36244) * Criminal console update and new icons sprites * Change Hostile and Paroled sprites * Change Hostile sprite * Return the 8x8 scale, redraw new icons * Some changes Redraw eliminated icon and change icons scaling in pda * Update Resources/Textures/Interface/Misc/security_icons.rsi/meta.json Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> * Update Content.Client/CartridgeLoader/Cartridges/WantedListUiFragment.cs --------- Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> --- .../CriminalRecordsConsoleWindow.xaml.cs | 4 +++- .../Systems/CriminalRecordsConsoleSystem.cs | 7 ++++++- .../Systems/SharedCriminalRecordsSystem.cs | 2 ++ Content.Shared/Security/SecurityStatus.cs | 6 +++++- .../Locale/en-US/cartridge-loader/cartridges.ftl | 2 ++ .../en-US/criminal-records/criminal-records.ftl | 6 ++++++ Resources/Prototypes/StatusIcon/security.yml | 14 ++++++++++++++ .../Misc/security_icons.rsi/hud_eliminated.png | Bin 0 -> 2161 bytes .../Misc/security_icons.rsi/hud_hostile.png | Bin 0 -> 2160 bytes .../Interface/Misc/security_icons.rsi/meta.json | 8 +++++++- 10 files changed, 45 insertions(+), 4 deletions(-) create mode 100644 Resources/Textures/Interface/Misc/security_icons.rsi/hud_eliminated.png create mode 100644 Resources/Textures/Interface/Misc/security_icons.rsi/hud_hostile.png diff --git a/Content.Client/CriminalRecords/CriminalRecordsConsoleWindow.xaml.cs b/Content.Client/CriminalRecords/CriminalRecordsConsoleWindow.xaml.cs index 33b4fbc335..dcae68fa7e 100644 --- a/Content.Client/CriminalRecords/CriminalRecordsConsoleWindow.xaml.cs +++ b/Content.Client/CriminalRecords/CriminalRecordsConsoleWindow.xaml.cs @@ -276,7 +276,7 @@ public sealed partial class CriminalRecordsConsoleWindow : FancyWindow private void SetStatus(SecurityStatus status) { - if (status == SecurityStatus.Wanted || status == SecurityStatus.Suspected) + if (status == SecurityStatus.Wanted || status == SecurityStatus.Suspected || status == SecurityStatus.Hostile) { GetReason(status); return; @@ -322,6 +322,8 @@ public sealed partial class CriminalRecordsConsoleWindow : FancyWindow SecurityStatus.Detained => "hud_incarcerated", SecurityStatus.Discharged => "hud_discharged", SecurityStatus.Suspected => "hud_suspected", + SecurityStatus.Hostile => "hud_hostile", + SecurityStatus.Eliminated => "hud_eliminated", _ => "SecurityIconNone" }; } diff --git a/Content.Server/CriminalRecords/Systems/CriminalRecordsConsoleSystem.cs b/Content.Server/CriminalRecords/Systems/CriminalRecordsConsoleSystem.cs index 1b7e50c651..a655556d49 100644 --- a/Content.Server/CriminalRecords/Systems/CriminalRecordsConsoleSystem.cs +++ b/Content.Server/CriminalRecords/Systems/CriminalRecordsConsoleSystem.cs @@ -87,7 +87,8 @@ public sealed class CriminalRecordsConsoleSystem : SharedCriminalRecordsConsoleS { // prevent malf client violating wanted/reason nullability if (msg.Status == SecurityStatus.Wanted != (msg.Reason != null) && - msg.Status == SecurityStatus.Suspected != (msg.Reason != null)) + msg.Status == SecurityStatus.Suspected != (msg.Reason != null) && + msg.Status == SecurityStatus.Hostile != (msg.Reason != null)) return; if (!CheckSelected(ent, msg.Actor, out var mob, out var key)) @@ -144,6 +145,8 @@ public sealed class CriminalRecordsConsoleSystem : SharedCriminalRecordsConsoleS // figure out which radio message to send depending on transition var statusString = (oldStatus, msg.Status) switch { + (_, SecurityStatus.Hostile) => "hostile", + (_, SecurityStatus.Eliminated) => "eliminated", // person has been detained (_, SecurityStatus.Detained) => "detained", // person did something sus @@ -154,6 +157,8 @@ public sealed class CriminalRecordsConsoleSystem : SharedCriminalRecordsConsoleS (_, SecurityStatus.Discharged) => "released", // going from any other state to wanted, AOS or prisonbreak / lazy secoff never set them to released and they reoffended (_, SecurityStatus.Wanted) => "wanted", + (SecurityStatus.Hostile, SecurityStatus.None) => "not-hostile", + (SecurityStatus.Eliminated, SecurityStatus.None) => "not-eliminated", // person is no longer sus (SecurityStatus.Suspected, SecurityStatus.None) => "not-suspected", // going from wanted to none, must have been a mistake diff --git a/Content.Shared/CriminalRecords/Systems/SharedCriminalRecordsSystem.cs b/Content.Shared/CriminalRecords/Systems/SharedCriminalRecordsSystem.cs index d665d32f1e..3e2e103501 100644 --- a/Content.Shared/CriminalRecords/Systems/SharedCriminalRecordsSystem.cs +++ b/Content.Shared/CriminalRecords/Systems/SharedCriminalRecordsSystem.cs @@ -45,6 +45,8 @@ public abstract class SharedCriminalRecordsSystem : EntitySystem SecurityStatus.Detained => "SecurityIconIncarcerated", SecurityStatus.Discharged => "SecurityIconDischarged", SecurityStatus.Suspected => "SecurityIconSuspected", + SecurityStatus.Hostile => "SecurityIconHostile", + SecurityStatus.Eliminated => "SecurityIconEliminated", _ => record.StatusIcon }; diff --git a/Content.Shared/Security/SecurityStatus.cs b/Content.Shared/Security/SecurityStatus.cs index c7fe3766f1..49fb059546 100644 --- a/Content.Shared/Security/SecurityStatus.cs +++ b/Content.Shared/Security/SecurityStatus.cs @@ -6,16 +6,20 @@ /// None - the default value /// Suspected - the person is suspected of doing something illegal /// Wanted - the person is being wanted by security +/// Hostile - the person has been admitted as hostile /// Detained - the person is detained by security /// Paroled - the person is on parole /// Discharged - the person has been released from prison +/// Eliminated - the person has been eliminated and should not be healed /// public enum SecurityStatus : byte { None, Suspected, Wanted, + Hostile, Detained, Paroled, - Discharged + Discharged, + Eliminated } diff --git a/Resources/Locale/en-US/cartridge-loader/cartridges.ftl b/Resources/Locale/en-US/cartridge-loader/cartridges.ftl index 6621c000a3..11b2fb9402 100644 --- a/Resources/Locale/en-US/cartridge-loader/cartridges.ftl +++ b/Resources/Locale/en-US/cartridge-loader/cartridges.ftl @@ -92,6 +92,8 @@ wanted-list-status-label = [color=darkgray]status:[/color] {$status -> [detained] [color=#b18644]detained[/color] [paroled] [color=green]paroled[/color] [discharged] [color=green]discharged[/color] + [hostile] [color=darkred]hostile[/color] + [eliminated] [color=gray]eliminated[/color] *[other] none } diff --git a/Resources/Locale/en-US/criminal-records/criminal-records.ftl b/Resources/Locale/en-US/criminal-records/criminal-records.ftl index 2833b0a07f..de7212ad52 100644 --- a/Resources/Locale/en-US/criminal-records/criminal-records.ftl +++ b/Resources/Locale/en-US/criminal-records/criminal-records.ftl @@ -16,6 +16,8 @@ criminal-records-status-detained = Detained criminal-records-status-suspected = Suspect criminal-records-status-discharged = Discharged criminal-records-status-paroled = Paroled +criminal-records-status-hostile = Hostile +criminal-records-status-eliminated = Eliminated criminal-records-console-wanted-reason = Wanted Reason criminal-records-console-suspected-reason = Suspected Reason @@ -42,6 +44,10 @@ criminal-records-console-detained = {$name} ({$job}) has been detained by {$offi criminal-records-console-released = {$name} ({$job}) has been released by {$officer}. criminal-records-console-paroled = {$name} ({$job}) has been released on parole by {$officer}. criminal-records-console-not-parole = {$officer} cleared the parole status of {$name} ({$job}). +criminal-records-console-hostile = {$name} ({$job}) was marked as hostile by {$officer} for: {$reason}. +criminal-records-console-not-hostile = {$name} ({$job}) no longer marked as hostile by {$officer}. +criminal-records-console-eliminated = {$name} ({$job}) was marked as eliminated by {$officer}. +criminal-records-console-not-eliminated = {$name} ({$job}) no longer marked as eliminated by {$officer}. criminal-records-console-unknown-officer = ## Filters diff --git a/Resources/Prototypes/StatusIcon/security.yml b/Resources/Prototypes/StatusIcon/security.yml index 430e9c4f98..2cab7d56ad 100644 --- a/Resources/Prototypes/StatusIcon/security.yml +++ b/Resources/Prototypes/StatusIcon/security.yml @@ -33,6 +33,20 @@ icon: sprite: /Textures/Interface/Misc/security_icons.rsi state: hud_suspected + +- type: securityIcon + parent: SecurityIcon + id: SecurityIconHostile + icon: + sprite: /Textures/Interface/Misc/security_icons.rsi + state: hud_hostile + +- type: securityIcon + parent: SecurityIcon + id: SecurityIconEliminated + icon: + sprite: /Textures/Interface/Misc/security_icons.rsi + state: hud_eliminated - type: securityIcon parent: SecurityIcon diff --git a/Resources/Textures/Interface/Misc/security_icons.rsi/hud_eliminated.png b/Resources/Textures/Interface/Misc/security_icons.rsi/hud_eliminated.png new file mode 100644 index 0000000000000000000000000000000000000000..b3e0d286595471a18a7ce683e902b0edc113690b GIT binary patch literal 2161 zcmb_dTWl0n7(SbYQfgXO2<4)Q!!*@ioSoZVW+rTbc3XDEg}Q74G>Sbtb9OtjJ2T8o zyW2*jTQGv4DF(S1ABaI-OazHOkwDQxFew)`7)&%FrW7Ace1e!5qGz_dn}P)iag&)n zbI$kQzW+Pt?CoB^wzg(@4FI4v8VSeof3@>eSK;^gg0uSoa6PYfbaby#^dutUYukw? zRuqM10Gbxdy}g`aZ#U7x-rh@>TbpalTzt=-{qf#aSH~`nO@OMs-(HyezRT4{3~YUC zYm2+;&w=*}PlsRsaqiIztC!z=$=lT8`hMr|ji$!0grkMRci_?$FWn5@<*&F-cYbjC z{O`5Iz$=kaesss2OH=FKIdyXQM$~h6k>^bHZ}W-2o{H>{j$9sh1?GKy$o0j#c%;oS1y!)0R1#>JJ~Es&CCtHQrvbcydYOq2njO_4c3VRgHMw zKIZuWyz%8Vm+H~C{s%;-RUYGlYn z8;8~>JIEp%68UUKv!r~8Ec%u3*qNqDq6o3Kg~;jtZH{#l9lD8# zfR~|UhT({y=w$;wpCG(Qa16)LOps<7isK|EAo+Qs^doUJQ%Onja91f7{tA(Owrxl> zoy+CCIo_+AX&P%oq#2IpI0_>uYf!Ucp3*5va%&oY8M)ioq3`Mj4bvnr&e$TfrKAx~*G%`a@h-mhTII zsg1=dF=ovro2`Vf?9KsPMv0JF(N<#6Ky(~gdcP^7&HMF@q)w$T3JS7m}zKCSJc$tOsJ1y z{Rvi(e13^#?t@~;1sR2>6fPMQIbIR{JXbD# zX6i+mGNQ!u66Y_=^hr`L(JJ>rEsgMzN|R4s%;PEX-+h>M&;5VJ(9TIZtuXpQ@fFu* zoVvJ?#VLH0JHyHyf#Co$JG&xA%_x E1DF)Kl>h($ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Interface/Misc/security_icons.rsi/hud_hostile.png b/Resources/Textures/Interface/Misc/security_icons.rsi/hud_hostile.png new file mode 100644 index 0000000000000000000000000000000000000000..3875a61f64820999eeb8cfc766bbee7cc7e4d5b7 GIT binary patch literal 2160 zcmb_dTWl0n7@p0RQmT|yEH^b7rlP$#JGY&kOIR-L7P{g>SvCP1gL`)7?C!ws%rG6;HA9#S`1BnktBr!(MYB6kfJf0PJ-`4lG zwt8#t_kCJ?F8t0X|tQtt-?E4<&0NZ9Db4S)I8EPWRdH^=OH%f_&VG57I&-q!FUhSi?X z;#-_8(Kltq$oYXwr@xRh5gNmmuPm5A*$y2%3DcS$B7Qw{mcTVNL~Q1xbkyvC8Lexl z1vl+nA6Is6S0t5KxdLBakdc8LbO2t+Wp!IFgou(|8I9d(ioi<{XM2d4s^6AqH{M}b z5D)rkQlV)U7bHIu37dMWc=<;lZ8RHSAtIH2K zK-5N~RUb3PlFLyLN2qXxqEXgDVMxl8% znN0DO{b57tbrn$AucG}>=zDzVw2-NO%e*j0RxMBbR literal 0 HcmV?d00001 diff --git a/Resources/Textures/Interface/Misc/security_icons.rsi/meta.json b/Resources/Textures/Interface/Misc/security_icons.rsi/meta.json index 042eda20c6..c49872cb5d 100644 --- a/Resources/Textures/Interface/Misc/security_icons.rsi/meta.json +++ b/Resources/Textures/Interface/Misc/security_icons.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from https://github.com/tgstation/tgstation/blob/7f654b6e8e59021607a9e888dfeb79920401c372/icons/mob/huds/hud.dmi", + "copyright": "Original sprites from https://github.com/tgstation/tgstation/blob/7f654b6e8e59021607a9e888dfeb79920401c372/icons/mob/huds/hud.dmi. hud_hostile and hud_eliminated by B_Kirill", "size": { "x": 8, "y": 8 @@ -21,6 +21,12 @@ }, { "name": "hud_wanted" + }, + { + "name": "hud_hostile" + }, + { + "name": "hud_eliminated" } ] } -- 2.52.0