diff --git a/Content.Client/CriminalRecords/CriminalRecordsConsoleWindow.xaml.cs b/Content.Client/CriminalRecords/CriminalRecordsConsoleWindow.xaml.cs index b259e08e72..a2345c2370 100644 --- a/Content.Client/CriminalRecords/CriminalRecordsConsoleWindow.xaml.cs +++ b/Content.Client/CriminalRecords/CriminalRecordsConsoleWindow.xaml.cs @@ -217,9 +217,19 @@ public sealed partial class CriminalRecordsConsoleWindow : FancyWindow } } + private HashSet AllowedStatusList = new HashSet() + { + SecurityStatus.Wanted, + SecurityStatus.Suspected, + SecurityStatus.Demote, + SecurityStatus.Monitoring, + SecurityStatus.Paroled, + SecurityStatus.Execute + }; + private void SetStatus(SecurityStatus status) { - if (status == SecurityStatus.Wanted || status == SecurityStatus.Suspected) + if (AllowedStatusList.Contains(status)) // WD end { GetReason(status); return; diff --git a/Content.Client/_White/SecurityHud/SecurityHudBUI.cs b/Content.Client/_White/SecurityHud/SecurityHudBUI.cs index 9e6e1de437..f154850682 100644 --- a/Content.Client/_White/SecurityHud/SecurityHudBUI.cs +++ b/Content.Client/_White/SecurityHud/SecurityHudBUI.cs @@ -15,31 +15,43 @@ public sealed class SecurityHudBUI : BoundUserInterface private readonly Dictionary _names = new() { - { "SecurityIconDischarged", Loc.GetString("criminal-records-status-discharged")}, + { "SecurityIconDemote", Loc.GetString("criminal-records-status-demote")}, // WD start { "SecurityIconParoled", Loc.GetString("criminal-records-status-paroled")}, { "SecurityIconSuspected", Loc.GetString("criminal-records-status-suspected")}, { "SecurityIconWanted", Loc.GetString("criminal-records-status-wanted")}, { "SecurityIconIncarcerated", Loc.GetString("criminal-records-status-detained")}, + { "SecurityIconExecute", Loc.GetString("criminal-records-status-execute")}, + { "SecurityIconMonitoring", Loc.GetString("criminal-records-status-monitoring")}, + { "SecurityIconReleased", Loc.GetString("criminal-records-status-released")}, + { "SecurityIconSearch", Loc.GetString("criminal-records-status-search")}, { "CriminalRecordIconRemove", Loc.GetString("security-hud-remove-status") } }; private readonly Dictionary _icons = new() { - { "SecurityIconDischarged", "/Textures/White/Interface/securityhud.rsi/discharged.png" }, + { "SecurityIconDemote", "/Textures/White/Interface/securityhud.rsi/demote.png" }, { "SecurityIconParoled", "/Textures/White/Interface/securityhud.rsi/paroled.png" }, { "SecurityIconSuspected", "/Textures/White/Interface/securityhud.rsi/suspected.png" }, { "SecurityIconWanted", "/Textures/White/Interface/securityhud.rsi/wanted.png" }, { "SecurityIconIncarcerated", "/Textures/White/Interface/securityhud.rsi/incarcerated.png" }, + { "SecurityIconExecute", "/Textures/White/Interface/securityhud.rsi/execute.png" }, + { "SecurityIconMonitoring", "/Textures/White/Interface/securityhud.rsi/monitoring.png" }, + { "SecurityIconReleased", "/Textures/White/Interface/securityhud.rsi/released.png" }, + { "SecurityIconSearch", "/Textures/White/Interface/securityhud.rsi/search.png" }, { "CriminalRecordIconRemove", "/Textures/White/Interface/securityhud.rsi/remove.png" } }; private readonly Dictionary _status = new() { - { "SecurityIconDischarged", SecurityStatus.Discharged }, + { "SecurityIconDemote", SecurityStatus.Demote }, { "SecurityIconParoled", SecurityStatus.Paroled }, { "SecurityIconSuspected", SecurityStatus.Suspected }, { "SecurityIconWanted", SecurityStatus.Wanted }, { "SecurityIconIncarcerated", SecurityStatus.Detained }, + { "SecurityIconExecute", SecurityStatus.Execute }, + { "SecurityIconMonitoring", SecurityStatus.Monitoring }, + { "SecurityIconReleased", SecurityStatus.Released }, + { "SecurityIconSearch", SecurityStatus.Search }, // WD end { "CriminalRecordIconRemove", SecurityStatus.None } }; diff --git a/Content.Server/CriminalRecords/Systems/CriminalRecordsConsoleSystem.cs b/Content.Server/CriminalRecords/Systems/CriminalRecordsConsoleSystem.cs index 63838ac0f2..549a3440c1 100644 --- a/Content.Server/CriminalRecords/Systems/CriminalRecordsConsoleSystem.cs +++ b/Content.Server/CriminalRecords/Systems/CriminalRecordsConsoleSystem.cs @@ -75,7 +75,11 @@ 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.Demote != (msg.Reason != null) && // WD start + msg.Status == SecurityStatus.Monitoring != (msg.Reason != null) && + msg.Status == SecurityStatus.Paroled != (msg.Reason != null) && + msg.Status == SecurityStatus.Execute != (msg.Reason != null)) // WD end return; if (!CheckSelected(ent, msg.Session, out var mob, out var key)) @@ -127,10 +131,18 @@ public sealed class CriminalRecordsConsoleSystem : SharedCriminalRecordsConsoleS (_, SecurityStatus.Suspected) => "suspected", // released on parole (_, SecurityStatus.Paroled) => "paroled", - // prisoner did their time - (_, SecurityStatus.Discharged) => "released", + // person was demoted + (_, SecurityStatus.Demote) => "demoted", // WD start // going from any other state to wanted, AOS or prisonbreak / lazy secoff never set them to released and they reoffended (_, SecurityStatus.Wanted) => "wanted", + // Person is xenos + (_, SecurityStatus.Execute) => "execute", + // Person requires supervision + (_, SecurityStatus.Monitoring) => "monitoring", + // Person works in cargo + (_, SecurityStatus.Search) => "search", + // Released + (_, SecurityStatus.Released) => "released", // person is no longer sus (SecurityStatus.Suspected, SecurityStatus.None) => "not-suspected", // going from wanted to none, must have been a mistake @@ -139,6 +151,14 @@ public sealed class CriminalRecordsConsoleSystem : SharedCriminalRecordsConsoleS (SecurityStatus.Detained, SecurityStatus.None) => "released", // criminal is no longer on parole (SecurityStatus.Paroled, SecurityStatus.None) => "not-parole", + // person dont require supervision + (SecurityStatus.Monitoring, SecurityStatus.None) => "not-monitoring", + // person was searched + (SecurityStatus.Search, SecurityStatus.None) => "not-search", + // person was demoted + (SecurityStatus.Demote, SecurityStatus.None) => "not-demoted", + // person is not xenos + (SecurityStatus.Execute, SecurityStatus.None) => "not-execute", // WD end // this is impossible _ => "not-wanted" }; diff --git a/Content.Server/_White/SecurityHud/SecurityHudSystem.cs b/Content.Server/_White/SecurityHud/SecurityHudSystem.cs index b05f5cdebc..96d4831ddd 100644 --- a/Content.Server/_White/SecurityHud/SecurityHudSystem.cs +++ b/Content.Server/_White/SecurityHud/SecurityHudSystem.cs @@ -136,8 +136,12 @@ public sealed class SecurityHudSystem : EntitySystem (_, SecurityStatus.Detained) => "detained", (_, SecurityStatus.Suspected) => "suspected", (_, SecurityStatus.Paroled) => "paroled", - (_, SecurityStatus.Discharged) => "released", + (_, SecurityStatus.Demote) => "demoted", // WD start (_, SecurityStatus.Wanted) => "wanted", + (_, SecurityStatus.Monitoring) => "monitoring", + (_, SecurityStatus.Released) => "released", + (_, SecurityStatus.Search) => "search", + (_, SecurityStatus.Execute) => "execute", (SecurityStatus.Suspected, SecurityStatus.None) => "not-suspected", (SecurityStatus.Wanted, SecurityStatus.None) => "not-wanted", (SecurityStatus.Detained, SecurityStatus.None) => "released", diff --git a/Content.Shared/CriminalRecords/Systems/SharedCriminalRecordsConsoleSystem.cs b/Content.Shared/CriminalRecords/Systems/SharedCriminalRecordsConsoleSystem.cs index b9b3177a30..ec6ac5445c 100644 --- a/Content.Shared/CriminalRecords/Systems/SharedCriminalRecordsConsoleSystem.cs +++ b/Content.Shared/CriminalRecords/Systems/SharedCriminalRecordsConsoleSystem.cs @@ -41,8 +41,12 @@ public abstract class SharedCriminalRecordsConsoleSystem : EntitySystem SecurityStatus.Paroled => "SecurityIconParoled", SecurityStatus.Wanted => "SecurityIconWanted", SecurityStatus.Detained => "SecurityIconIncarcerated", - SecurityStatus.Discharged => "SecurityIconDischarged", + SecurityStatus.Demote => "SecurityIconDemote", SecurityStatus.Suspected => "SecurityIconSuspected", + SecurityStatus.Execute => "SecurityIconExecute", // WD start + SecurityStatus.Released => "SecurityIconReleased", + SecurityStatus.Monitoring => "SecurityIconMonitoring", + SecurityStatus.Search => "SecurityIconSearch", // WD end _ => record.StatusIcon }; diff --git a/Content.Shared/Security/SecurityStatus.cs b/Content.Shared/Security/SecurityStatus.cs index c7fe3766f1..895d1d37e2 100644 --- a/Content.Shared/Security/SecurityStatus.cs +++ b/Content.Shared/Security/SecurityStatus.cs @@ -12,10 +12,14 @@ /// public enum SecurityStatus : byte { - None, - Suspected, + None, // WD start Wanted, + Suspected, + Demote, + Search, + Monitoring, Detained, Paroled, - Discharged + Released, + Execute // WD end } diff --git a/Resources/Locale/ru-RU/criminal-records/criminal-records.ftl b/Resources/Locale/ru-RU/criminal-records/criminal-records.ftl index 698d9ba4d8..f9b99bdb2f 100644 --- a/Resources/Locale/ru-RU/criminal-records/criminal-records.ftl +++ b/Resources/Locale/ru-RU/criminal-records/criminal-records.ftl @@ -9,13 +9,21 @@ criminal-records-console-no-record-found = Не найдены записи дл criminal-records-console-status = Статус criminal-records-status-none = Нет criminal-records-status-wanted = В розыске -criminal-records-status-detained = В заключении criminal-records-status-suspected = Подозреваемый -criminal-records-status-discharged = Освобождён -criminal-records-status-paroled = Досрочно освобождён +criminal-records-status-demote = Подлежит понижению +criminal-records-status-search = Обыскать +criminal-records-status-monitoring = Установить слежку +criminal-records-status-detained = Под стражей +criminal-records-status-paroled = Условно-досрочно освобождён +criminal-records-status-released = Освобождён +criminal-records-status-execute = Ликвидировать criminal-records-console-wanted-reason = [color=gray]Причина розыска[/color] criminal-records-console-suspected-reason = [color=gray]Причина подозрения[/color] +criminal-records-console-demote-reason = [color=gray]Причина понижения[/color] +criminal-records-console-monitoring-reason = [color=gray]Причина слежки[/color] +criminal-records-console-paroled-reason = [color=gray]Основание УДО[/color] +criminal-records-console-execute-reason = [color=gray]Причина устранения[/color] criminal-records-console-reason = Причина criminal-records-console-reason-placeholder = Например: {$placeholder} @@ -37,9 +45,13 @@ criminal-records-console-not-suspected = {$name} больше не под под criminal-records-console-detained = {$name} был задержан {$officer}. criminal-records-console-released = {$name} был освобожден {$officer}. criminal-records-console-not-wanted = {$name} больше не в розыске. -criminal-records-console-paroled = {$name} был отпущен условно-досрочно {$officer}. -criminal-records-console-not-parole = {$name} больше не условно-досрочно освобождённый. -criminal-records-console-unknown-officer = <неизвестный офицер> +criminal-records-console-paroled = {$name} был условно-досрочно освобождён {$officer} на основании {$reason}. +criminal-records-console-not-parole = {$name} нарушил условия условно-досрочного освобождения. +criminal-records-console-search = {$name} требуется обыскать по указу {$officer}. +criminal-records-console-monitoring = За {$name} требуется вести наблюдание по причине {$reason}. +criminal-records-console-execute = {$name} требуется ликвидировать по приказу {$officer} по причине {$reason}. +criminal-records-console-demoted = {$name} должен быть понижен в должности по указу {$officer} по причине {$reason}. +criminal-records-console-unknown-officer = <неопознанный офицер> ## Filters diff --git a/Resources/Locale/ru-RU/white/criminal-console.ftl b/Resources/Locale/ru-RU/white/criminal-console.ftl index 229d0eed5b..cf0d51977e 100644 --- a/Resources/Locale/ru-RU/white/criminal-console.ftl +++ b/Resources/Locale/ru-RU/white/criminal-console.ftl @@ -9,16 +9,17 @@ criminal-login-in-desc = Войти criminal-login-info = ID: { $user } criminal-login-hint = Вставьте ID карту в консоль, нажав на "{ $name }" (нужно держать ID карту в руке) criminal-login-warn = WARNING: Доступ к системе осуществляется уровнем доступа "службы безопасности" -criminal-status-released = Освобожден -criminal-status-discharged = Выписан -criminal-status-parolled = Закодирован +criminal-status-released = Освобождён +criminal-status-demote = Понизить +criminal-status-parolled = Условно-досрочно освобождён criminal-status-suspected = Подозреваемый criminal-status-wanted = В розыске criminal-status-incarcerated = Заключенный +criminal-status-execute = Ликвидировать +criminal-status-monitoring = Наблюдать +criminal-status-search = Обыскать criminal-targetchannel-set-released = { $target } освобожден(а). criminal-targetchannel-set-released-reason = { $target } освобожден(а). Заметка: { $reason }. -criminal-targetchannel-set-discharged = { $target } выписан(а). -criminal-targetchannel-set-discharged-reason = { $target } выписан(а). Заметка: { $reason }. criminal-targetchannel-set-parolled = { $target } закодирован(а). criminal-targetchannel-set-parolled-reason = { $target } закодирован(а). Заметка: { $reason }. criminal-targetchannel-set-suspected = { $target } под подозрением. diff --git a/Resources/Prototypes/StatusEffects/security.yml b/Resources/Prototypes/StatusEffects/security.yml index dcf08fbb09..e4c5a15fc9 100644 --- a/Resources/Prototypes/StatusEffects/security.yml +++ b/Resources/Prototypes/StatusEffects/security.yml @@ -6,44 +6,72 @@ locationPreference: Right isShaded: true -- type: statusIcon +- type: statusIcon # WD start parent: SecurityIcon - id: SecurityIconDischarged + id: SecurityIconDemote icon: - sprite: /Textures/Interface/Misc/security_icons.rsi - state: hud_discharged + sprite: /Textures/White/Interface/records.rsi + state: hud_demote - type: statusIcon parent: SecurityIcon id: SecurityIconIncarcerated icon: - sprite: /Textures/Interface/Misc/security_icons.rsi + sprite: /Textures/White/Interface/records.rsi state: hud_incarcerated - type: statusIcon parent: SecurityIcon id: SecurityIconParoled icon: - sprite: /Textures/Interface/Misc/security_icons.rsi + sprite: /Textures/White/Interface/records.rsi state: hud_paroled - type: statusIcon parent: SecurityIcon id: SecurityIconSuspected icon: - sprite: /Textures/Interface/Misc/security_icons.rsi + sprite: /Textures/White/Interface/records.rsi state: hud_suspected - type: statusIcon parent: SecurityIcon id: SecurityIconWanted icon: - sprite: /Textures/Interface/Misc/security_icons.rsi + sprite: /Textures/White/Interface/records.rsi state: hud_wanted +- type: statusIcon + parent: SecurityIcon + id: SecurityIconExecute + icon: + sprite: /Textures/White/Interface/records.rsi + state: hud_execute + +- type: statusIcon + parent: SecurityIcon + id: SecurityIconMonitoring + icon: + sprite: /Textures/White/Interface/records.rsi + state: hud_monitoring + +- type: statusIcon + parent: SecurityIcon + id: SecurityIconReleased + icon: + sprite: /Textures/White/Interface/records.rsi + state: hud_released + +- type: statusIcon + parent: SecurityIcon + id: SecurityIconSearch + icon: + sprite: /Textures/White/Interface/records.rsi + state: hud_search + - type: statusIcon parent: SecurityIcon id: CriminalRecordIconRemove icon: - sprite: /Textures/Interface/Misc/security_icons.rsi - state: hud_discharged + sprite: /Textures/White/Interface/records.rsi + state: hud_demote # WD end diff --git a/Resources/Prototypes/_White/sechud.yml b/Resources/Prototypes/_White/sechud.yml index e994e94662..3564fd68c8 100644 --- a/Resources/Prototypes/_White/sechud.yml +++ b/Resources/Prototypes/_White/sechud.yml @@ -8,11 +8,15 @@ access: [["Security"]] - type: SecurityHud criminalrecords: - - SecurityIconDischarged + - SecurityIconDemote - SecurityIconParoled - SecurityIconSuspected - SecurityIconWanted - SecurityIconIncarcerated + - SecurityIconExecute + - SecurityIconMonitoring + - SecurityIconSearch + - SecurityIconReleased - CriminalRecordIconRemove - type: UserInterface interfaces: diff --git a/Resources/Textures/White/Interface/records.rsi/hud_demote.png b/Resources/Textures/White/Interface/records.rsi/hud_demote.png new file mode 100644 index 0000000000..aebef2fb75 Binary files /dev/null and b/Resources/Textures/White/Interface/records.rsi/hud_demote.png differ diff --git a/Resources/Textures/White/Interface/records.rsi/hud_execute.png b/Resources/Textures/White/Interface/records.rsi/hud_execute.png new file mode 100644 index 0000000000..42b6c10053 Binary files /dev/null and b/Resources/Textures/White/Interface/records.rsi/hud_execute.png differ diff --git a/Resources/Textures/White/Interface/records.rsi/hud_incarcerated.png b/Resources/Textures/White/Interface/records.rsi/hud_incarcerated.png new file mode 100644 index 0000000000..1dc03f7b86 Binary files /dev/null and b/Resources/Textures/White/Interface/records.rsi/hud_incarcerated.png differ diff --git a/Resources/Textures/White/Interface/records.rsi/hud_monitoring.png b/Resources/Textures/White/Interface/records.rsi/hud_monitoring.png new file mode 100644 index 0000000000..a60e07f348 Binary files /dev/null and b/Resources/Textures/White/Interface/records.rsi/hud_monitoring.png differ diff --git a/Resources/Textures/White/Interface/records.rsi/hud_paroled.png b/Resources/Textures/White/Interface/records.rsi/hud_paroled.png new file mode 100644 index 0000000000..042fb147b1 Binary files /dev/null and b/Resources/Textures/White/Interface/records.rsi/hud_paroled.png differ diff --git a/Resources/Textures/White/Interface/records.rsi/hud_released.png b/Resources/Textures/White/Interface/records.rsi/hud_released.png new file mode 100644 index 0000000000..15cee02165 Binary files /dev/null and b/Resources/Textures/White/Interface/records.rsi/hud_released.png differ diff --git a/Resources/Textures/White/Interface/records.rsi/hud_search.png b/Resources/Textures/White/Interface/records.rsi/hud_search.png new file mode 100644 index 0000000000..aa5e3b52b3 Binary files /dev/null and b/Resources/Textures/White/Interface/records.rsi/hud_search.png differ diff --git a/Resources/Textures/White/Interface/records.rsi/hud_suspected.png b/Resources/Textures/White/Interface/records.rsi/hud_suspected.png new file mode 100644 index 0000000000..8e04eb21f4 Binary files /dev/null and b/Resources/Textures/White/Interface/records.rsi/hud_suspected.png differ diff --git a/Resources/Textures/White/Interface/records.rsi/hud_wanted.png b/Resources/Textures/White/Interface/records.rsi/hud_wanted.png new file mode 100644 index 0000000000..2df379d112 Binary files /dev/null and b/Resources/Textures/White/Interface/records.rsi/hud_wanted.png differ diff --git a/Resources/Textures/White/Interface/records.rsi/meta.json b/Resources/Textures/White/Interface/records.rsi/meta.json index 7a924eb5a9..13702aafa7 100644 --- a/Resources/Textures/White/Interface/records.rsi/meta.json +++ b/Resources/Textures/White/Interface/records.rsi/meta.json @@ -5,23 +5,35 @@ "size": { "y": 8, "x": 8 }, "states": [ { - "name": "wanted" + "name": "hud_demote" }, { - "name": "suspected" + "name": "hud_incarcerated" }, { - "name": "released" + "name": "hud_monitoring" }, { - "name": "parolled" + "name": "hud_paroled" }, { - "name": "incarcerated" + "name": "hud_released" }, { - "name": "discharged" + "name": "hud_search" + }, + { + "name": "hud_suspected" + }, + { + "name": "hud_wanted" + }, + { + "name": "hud_execute", + "delays": + [ + [0.5, 0.5, 1.0] + ] } - ] } diff --git a/Resources/Textures/White/Interface/securityhud.rsi/demote.png b/Resources/Textures/White/Interface/securityhud.rsi/demote.png new file mode 100644 index 0000000000..2c9eb4174c Binary files /dev/null and b/Resources/Textures/White/Interface/securityhud.rsi/demote.png differ diff --git a/Resources/Textures/White/Interface/securityhud.rsi/discharged.png b/Resources/Textures/White/Interface/securityhud.rsi/discharged.png deleted file mode 100644 index 3206bf0693..0000000000 Binary files a/Resources/Textures/White/Interface/securityhud.rsi/discharged.png and /dev/null differ diff --git a/Resources/Textures/White/Interface/securityhud.rsi/execute.png b/Resources/Textures/White/Interface/securityhud.rsi/execute.png new file mode 100644 index 0000000000..0c8a63bcd8 Binary files /dev/null and b/Resources/Textures/White/Interface/securityhud.rsi/execute.png differ diff --git a/Resources/Textures/White/Interface/securityhud.rsi/meta.json b/Resources/Textures/White/Interface/securityhud.rsi/meta.json index f5ffc7b5b7..c5e0defd22 100644 --- a/Resources/Textures/White/Interface/securityhud.rsi/meta.json +++ b/Resources/Textures/White/Interface/securityhud.rsi/meta.json @@ -5,19 +5,34 @@ "size": { "y": 32, "x": 32 }, "states": [ { - "name": "wanted" + "name": "demote" }, { - "name": "suspected" - }, - { - "name": "released" + "name": "execute" }, { "name": "incarcerated" }, + { + "name": "monitoring" + }, + { + "name": "paroled" + }, + { + "name": "released" + }, { "name": "remove" + }, + { + "name": "search" + }, + { + "name": "suspected" + }, + { + "name": "wanted" } ] } diff --git a/Resources/Textures/White/Interface/securityhud.rsi/monitoring.png b/Resources/Textures/White/Interface/securityhud.rsi/monitoring.png new file mode 100644 index 0000000000..7373a1ca7c Binary files /dev/null and b/Resources/Textures/White/Interface/securityhud.rsi/monitoring.png differ diff --git a/Resources/Textures/White/Interface/securityhud.rsi/released.png b/Resources/Textures/White/Interface/securityhud.rsi/released.png index 3b58b7ccd0..ad502d8927 100644 Binary files a/Resources/Textures/White/Interface/securityhud.rsi/released.png and b/Resources/Textures/White/Interface/securityhud.rsi/released.png differ diff --git a/Resources/Textures/White/Interface/securityhud.rsi/search.png b/Resources/Textures/White/Interface/securityhud.rsi/search.png new file mode 100644 index 0000000000..80bf10db96 Binary files /dev/null and b/Resources/Textures/White/Interface/securityhud.rsi/search.png differ