From 5c83dccdd13cf9e9cb137dd3e4f742d0ad2abd56 Mon Sep 17 00:00:00 2001 From: Kyep Date: Mon, 4 Sep 2017 00:49:09 -0700 Subject: [PATCH 01/10] Adds 'Execute' status --- code/game/data_huds.dm | 3 +++ code/game/machinery/computer/security.dm | 15 +++++++++++++++ code/modules/mob/living/carbon/human/human.dm | 14 +++++++++----- icons/mob/hud.dmi | Bin 14466 -> 14533 bytes 4 files changed, 27 insertions(+), 5 deletions(-) diff --git a/code/game/data_huds.dm b/code/game/data_huds.dm index bddb7b59bc6..604e92a47e0 100644 --- a/code/game/data_huds.dm +++ b/code/game/data_huds.dm @@ -197,6 +197,9 @@ var/datum/data/record/R = find_record("name", perpname, data_core.security) if(R) switch(R.fields["criminal"]) + if("*Execute*") + holder.icon_state = "hudexecute" + return if("*Arrest*") holder.icon_state = "hudwanted" return diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm index c4aefaa555d..0a1f9358657 100644 --- a/code/game/machinery/computer/security.dm +++ b/code/game/machinery/computer/security.dm @@ -20,6 +20,7 @@ //Sorting Variables var/sortBy = "name" var/order = 1 // -1 = Descending - 1 = Ascending + var/list/can_execute = list("Captain", "Magistrate") light_color = LIGHT_COLOR_RED @@ -66,6 +67,8 @@ break var/background = "''" switch(crimstat) + if("*Execute*") + background = "'background-color:#890E26'" if("*Arrest*") background = "'background-color:#890E26'" if("Incarcerated") @@ -167,12 +170,23 @@ active2.fields["criminal"] = "None" if("arrest") active2.fields["criminal"] = "*Arrest*" + if("execute") + if(istype(active1, /datum/data/record) && can_execute.Find(rank)) + active2.fields["criminal"] = "*Execute*" + var/their_name = active2.fields["name"] + var/their_rank = active2.fields["rank"] + message_admins("[key_name_admin(usr)] set [their_rank] [their_name] to Execute.") + log_game("[key_name_admin(usr)] set [their_rank] [their_name] to Execute.") + else + to_chat(usr, "Error: permission denied.") if("incarcerated") active2.fields["criminal"] = "Incarcerated" if("parolled") active2.fields["criminal"] = "Parolled" if("released") active2.fields["criminal"] = "Released" + var/newstatus = active2.fields["criminal"] + active2.fields["comments"] += "[rank] [usr.name] changed status to [newstatus] on [current_date_string] [worldtime2text()]." update_all_mob_security_hud() if("rank") @@ -458,6 +472,7 @@ buttons[++buttons.len] = list("name" = "None", "icon" = "unlock", "href" = "criminal=none", "status" = (active2.fields["criminal"] == "None" ? "selected" : null)) buttons[++buttons.len] = list("name" = "*Arrest*", "icon" = "lock", "href" = "criminal=arrest", "status" = (active2.fields["criminal"] == "*Arrest*" ? "selected" : null)) buttons[++buttons.len] = list("name" = "Incarcerated", "icon" = "lock", "href" = "criminal=incarcerated", "status" = (active2.fields["criminal"] == "Incarcerated" ? "selected" : null)) + buttons[++buttons.len] = list("name" = "*Execute*", "icon" = "lock", "href" = "criminal=execute", "status" = (active2.fields["criminal"] == "*Execute*" ? "selected" : null)) buttons[++buttons.len] = list("name" = "Parolled", "icon" = "unlock-alt", "href" = "criminal=parolled", "status" = (active2.fields["criminal"] == "Parolled" ? "selected" : null)) buttons[++buttons.len] = list("name" = "Released", "icon" = "unlock", "href" = "criminal=released", "status" = (active2.fields["criminal"] == "Released" ? "selected" : null)) setTemp("

Criminal Status

", buttons) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 82c478ce0da..401d0a139cd 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -796,7 +796,7 @@ if(href_list["criminal"]) if(hasHUD(usr,"security")) - var/modified = 0 + var/found_record = 0 var/perpname = "wot" if(wear_id) var/obj/item/weapon/card/id/I = wear_id.GetID() @@ -815,15 +815,17 @@ var/setcriminal = input(usr, "Specify a new criminal status for this person.", "Security HUD", R.fields["criminal"]) in list("None", "*Arrest*", "Incarcerated", "Parolled", "Released", "Cancel") - if(hasHUD(usr, "security")) - if(setcriminal != "Cancel") + if(hasHUD(usr, "security") && setcriminal != "Cancel") + found_record = 1 + if(R.fields["criminal"] == "*Execute*") + to_chat(usr, "Unable to modify the sec status of a person with an active Execution order. Use a security computer instead.") + else R.fields["criminal"] = setcriminal - modified = 1 spawn() sec_hud_set_security_status() - if(!modified) + if(!found_record) to_chat(usr, "Unable to locate a data core entry for this person.") if(href_list["secrecord"]) @@ -1761,6 +1763,8 @@ var/datum/data/record/R = find_record("name", perpname, data_core.security) if(R && R.fields["criminal"]) switch(R.fields["criminal"]) + if("*Execute*") + threatcount += 7 if("*Arrest*") threatcount += 5 if("Incarcerated") diff --git a/icons/mob/hud.dmi b/icons/mob/hud.dmi index e7deeee2ad93c3732f60fef19873fc93e82117cb..c56439d56f4a454fbce0c29f6b5147c6398eec12 100644 GIT binary patch literal 14533 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 No@hKSePkB+zW^Rk5j_9^ literal 14466 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 Y8@;OR_vZUYAm9(8u6w`io^8Z`14^;ayZ`_I From a9f5f4e0db406ecc7a69d5b7f29425b69aadc869 Mon Sep 17 00:00:00 2001 From: Kyep Date: Mon, 4 Sep 2017 01:11:44 -0700 Subject: [PATCH 02/10] Color Tweak --- code/game/machinery/computer/security.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm index 0a1f9358657..26589249d23 100644 --- a/code/game/machinery/computer/security.dm +++ b/code/game/machinery/computer/security.dm @@ -68,7 +68,7 @@ var/background = "''" switch(crimstat) if("*Execute*") - background = "'background-color:#890E26'" + background = "'background-color:#5E0A1A'" if("*Arrest*") background = "'background-color:#890E26'" if("Incarcerated") From f3e475f5a8f6d0a5d60b33d3e150f72a93a8ac53 Mon Sep 17 00:00:00 2001 From: Kyep Date: Mon, 4 Sep 2017 01:44:34 -0700 Subject: [PATCH 03/10] Adds logging for all sechud sec status changes --- code/modules/mob/living/carbon/human/human.dm | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 401d0a139cd..593efc2560b 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -820,6 +820,16 @@ if(R.fields["criminal"] == "*Execute*") to_chat(usr, "Unable to modify the sec status of a person with an active Execution order. Use a security computer instead.") else + if(ishuman(usr)) + var/mob/living/carbon/human/U = usr + R.fields["comments"] += "Set to [setcriminal] by [U.get_authentification_name()] ([U.get_assignment()]) on [current_date_string] [worldtime2text()]
" + if(isrobot(usr)) + var/mob/living/silicon/robot/U = usr + R.fields["comments"] += "Set to [setcriminal] by [U.name] ([U.modtype] [U.braintype]) on [current_date_string] [worldtime2text()]
" + if(isAI(usr)) + var/mob/living/silicon/ai/U = usr + R.fields["comments"] += "Set to [setcriminal] by [U.name] (artificial intelligence) on [current_date_string] [worldtime2text()]
" + R.fields["criminal"] = setcriminal spawn() From d787cb653abf55cbd5e4809616ab4aa5e9e2f94a Mon Sep 17 00:00:00 2001 From: Kyep Date: Mon, 4 Sep 2017 01:53:38 -0700 Subject: [PATCH 04/10] Tweaks logging format --- code/game/machinery/computer/security.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm index 26589249d23..8830f82a43f 100644 --- a/code/game/machinery/computer/security.dm +++ b/code/game/machinery/computer/security.dm @@ -186,7 +186,8 @@ if("released") active2.fields["criminal"] = "Released" var/newstatus = active2.fields["criminal"] - active2.fields["comments"] += "[rank] [usr.name] changed status to [newstatus] on [current_date_string] [worldtime2text()]." + active2.fields["comments"] += "Set to [newstatus] by [usr.name] ([rank]) on [current_date_string] [worldtime2text()]." + update_all_mob_security_hud() if("rank") From ccb5a18bd9975928c3c3b6071e6861c2e90c193b Mon Sep 17 00:00:00 2001 From: Kyep Date: Mon, 4 Sep 2017 01:55:19 -0700 Subject: [PATCH 05/10] admin log formatting tweak --- code/game/machinery/computer/security.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm index 8830f82a43f..ba29c1e2d1a 100644 --- a/code/game/machinery/computer/security.dm +++ b/code/game/machinery/computer/security.dm @@ -175,8 +175,8 @@ active2.fields["criminal"] = "*Execute*" var/their_name = active2.fields["name"] var/their_rank = active2.fields["rank"] - message_admins("[key_name_admin(usr)] set [their_rank] [their_name] to Execute.") - log_game("[key_name_admin(usr)] set [their_rank] [their_name] to Execute.") + message_admins("[key_name_admin(usr)] authorized execution for [their_rank] [their_name]") + log_game("[key_name_admin(usr)] authorized execution for [their_rank] [their_name]") else to_chat(usr, "Error: permission denied.") if("incarcerated") From 9057c38c3809493d6e72bddd6fc0a95938f76ef5 Mon Sep 17 00:00:00 2001 From: Kyep Date: Mon, 4 Sep 2017 16:20:04 -0700 Subject: [PATCH 06/10] Requires reason for changes, logs reason always --- code/game/machinery/computer/security.dm | 19 +++++++++++-------- code/modules/mob/living/carbon/human/human.dm | 13 +++++++++---- 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm index ba29c1e2d1a..8980004c6f3 100644 --- a/code/game/machinery/computer/security.dm +++ b/code/game/machinery/computer/security.dm @@ -165,6 +165,11 @@ screen = SEC_DATA_R_LIST if("criminal") if(active2) + var/their_name = active2.fields["name"] + var/their_rank = active2.fields["rank"] + var/t1 = copytext(trim(sanitize(input("Enter Reason:", "Secure. records", null, null) as message)), 1, MAX_MESSAGE_LEN) + if(!t1) + t1 = "(none)" switch(temp_href[2]) if("none") active2.fields["criminal"] = "None" @@ -173,12 +178,11 @@ if("execute") if(istype(active1, /datum/data/record) && can_execute.Find(rank)) active2.fields["criminal"] = "*Execute*" - var/their_name = active2.fields["name"] - var/their_rank = active2.fields["rank"] - message_admins("[key_name_admin(usr)] authorized execution for [their_rank] [their_name]") - log_game("[key_name_admin(usr)] authorized execution for [their_rank] [their_name]") + message_admins("[key_name_admin(usr)] authorized execution for [their_rank] [their_name], with comment: [t1]") else - to_chat(usr, "Error: permission denied.") + setTemp("

Error: permission denied.

") + //to_chat(usr, "Error: permission denied.") + return 1 if("incarcerated") active2.fields["criminal"] = "Incarcerated" if("parolled") @@ -186,9 +190,8 @@ if("released") active2.fields["criminal"] = "Released" var/newstatus = active2.fields["criminal"] - active2.fields["comments"] += "Set to [newstatus] by [usr.name] ([rank]) on [current_date_string] [worldtime2text()]." - - + log_game("[key_name_admin(usr)] set secstatus of [their_rank] [their_name] to [newstatus], comment: [t1]") + active2.fields["comments"] += "Set to [newstatus] by [usr.name] ([rank]) on [current_date_string] [worldtime2text()], comment: [t1]" update_all_mob_security_hud() if("rank") if(active1) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 593efc2560b..124e4260055 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -814,24 +814,29 @@ if(R.fields["id"] == E.fields["id"]) var/setcriminal = input(usr, "Specify a new criminal status for this person.", "Security HUD", R.fields["criminal"]) in list("None", "*Arrest*", "Incarcerated", "Parolled", "Released", "Cancel") + var/t1 = copytext(trim(sanitize(input("Enter Reason:", "Security HUD", null, null) as message)), 1, MAX_MESSAGE_LEN) + if(!t1) + t1 = "(none)" if(hasHUD(usr, "security") && setcriminal != "Cancel") found_record = 1 + var/their_name = R.fields["name"] + var/their_rank = R.fields["rank"] if(R.fields["criminal"] == "*Execute*") to_chat(usr, "Unable to modify the sec status of a person with an active Execution order. Use a security computer instead.") else if(ishuman(usr)) var/mob/living/carbon/human/U = usr - R.fields["comments"] += "Set to [setcriminal] by [U.get_authentification_name()] ([U.get_assignment()]) on [current_date_string] [worldtime2text()]
" + R.fields["comments"] += "Set to [setcriminal] by [U.get_authentification_name()] ([U.get_assignment()]) on [current_date_string] [worldtime2text()] with comment: [t1]
" if(isrobot(usr)) var/mob/living/silicon/robot/U = usr - R.fields["comments"] += "Set to [setcriminal] by [U.name] ([U.modtype] [U.braintype]) on [current_date_string] [worldtime2text()]
" + R.fields["comments"] += "Set to [setcriminal] by [U.name] ([U.modtype] [U.braintype]) on [current_date_string] [worldtime2text()] with comment: [t1]
" if(isAI(usr)) var/mob/living/silicon/ai/U = usr - R.fields["comments"] += "Set to [setcriminal] by [U.name] (artificial intelligence) on [current_date_string] [worldtime2text()]
" + R.fields["comments"] += "Set to [setcriminal] by [U.name] (artificial intelligence) on [current_date_string] [worldtime2text()] with comment: [t1]
" R.fields["criminal"] = setcriminal - + log_game("[key_name_admin(usr)] set secstatus of [their_rank] [their_name] to [setcriminal], comment: [t1]") spawn() sec_hud_set_security_status() From 1e9061e1d912705822ea69858ea541718c2786ee Mon Sep 17 00:00:00 2001 From: Kyep Date: Mon, 4 Sep 2017 20:34:22 -0700 Subject: [PATCH 07/10] Setting Execute now requires access_magistrate --- code/game/machinery/computer/security.dm | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm index 8980004c6f3..4178e160b07 100644 --- a/code/game/machinery/computer/security.dm +++ b/code/game/machinery/computer/security.dm @@ -12,6 +12,7 @@ var/obj/item/weapon/card/id/scan = null var/authenticated = null var/rank = null + var/list/authcard_access = list() var/screen = null var/datum/data/record/active1 = null var/datum/data/record/active2 = null @@ -20,7 +21,6 @@ //Sorting Variables var/sortBy = "name" var/order = 1 // -1 = Descending - 1 = Ascending - var/list/can_execute = list("Captain", "Magistrate") light_color = LIGHT_COLOR_RED @@ -176,7 +176,7 @@ if("arrest") active2.fields["criminal"] = "*Arrest*" if("execute") - if(istype(active1, /datum/data/record) && can_execute.Find(rank)) + if(access_magistrate in authcard_access) active2.fields["criminal"] = "*Execute*" message_admins("[key_name_admin(usr)] authorized execution for [their_rank] [their_name], with comment: [t1]") else @@ -224,6 +224,7 @@ if(check_access(scan)) authenticated = scan.registered_name rank = scan.assignment + authcard_access = scan.access if(authenticated) active1 = null @@ -236,6 +237,7 @@ screen = null active1 = null active2 = null + authcard_access = list() else if(href_list["sort"]) // Reverse the order if clicked twice From 20048bb72ea0344bf07bf20a5635ce03f3bb1e06 Mon Sep 17 00:00:00 2001 From: Kyep Date: Tue, 5 Sep 2017 03:43:11 -0700 Subject: [PATCH 08/10] Changes log_game to log_admin --- code/game/machinery/computer/security.dm | 2 +- code/modules/mob/living/carbon/human/human.dm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm index 4178e160b07..3ac96000fd7 100644 --- a/code/game/machinery/computer/security.dm +++ b/code/game/machinery/computer/security.dm @@ -190,7 +190,7 @@ if("released") active2.fields["criminal"] = "Released" var/newstatus = active2.fields["criminal"] - log_game("[key_name_admin(usr)] set secstatus of [their_rank] [their_name] to [newstatus], comment: [t1]") + log_admin("[key_name_admin(usr)] set secstatus of [their_rank] [their_name] to [newstatus], comment: [t1]") active2.fields["comments"] += "Set to [newstatus] by [usr.name] ([rank]) on [current_date_string] [worldtime2text()], comment: [t1]" update_all_mob_security_hud() if("rank") diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 124e4260055..d4a3d91ab3c 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -836,7 +836,7 @@ R.fields["comments"] += "Set to [setcriminal] by [U.name] (artificial intelligence) on [current_date_string] [worldtime2text()] with comment: [t1]
" R.fields["criminal"] = setcriminal - log_game("[key_name_admin(usr)] set secstatus of [their_rank] [their_name] to [setcriminal], comment: [t1]") + log_admin("[key_name_admin(usr)] set secstatus of [their_rank] [their_name] to [setcriminal], comment: [t1]") spawn() sec_hud_set_security_status() From 692fd1f8284ff260e55b284621ef933b71f7b569 Mon Sep 17 00:00:00 2001 From: Kyep Date: Tue, 5 Sep 2017 16:31:31 -0700 Subject: [PATCH 09/10] Allows HoS/Warden to set Execute --- code/game/machinery/computer/security.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm index 3ac96000fd7..963610ce7f1 100644 --- a/code/game/machinery/computer/security.dm +++ b/code/game/machinery/computer/security.dm @@ -176,7 +176,7 @@ if("arrest") active2.fields["criminal"] = "*Arrest*" if("execute") - if(access_magistrate in authcard_access) + if((access_magistrate in authcard_access) || (access_armory in authcard_access)) active2.fields["criminal"] = "*Execute*" message_admins("[key_name_admin(usr)] authorized execution for [their_rank] [their_name], with comment: [t1]") else From c08eb86d96828b6db75a4b1a250903d167186f0b Mon Sep 17 00:00:00 2001 From: Kyep Date: Tue, 5 Sep 2017 22:01:16 -0700 Subject: [PATCH 10/10] Reasons/comments are easier to skip --- code/game/machinery/computer/security.dm | 2 +- code/modules/mob/living/carbon/human/human.dm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm index 963610ce7f1..2643908bab5 100644 --- a/code/game/machinery/computer/security.dm +++ b/code/game/machinery/computer/security.dm @@ -167,7 +167,7 @@ if(active2) var/their_name = active2.fields["name"] var/their_rank = active2.fields["rank"] - var/t1 = copytext(trim(sanitize(input("Enter Reason:", "Secure. records", null, null) as message)), 1, MAX_MESSAGE_LEN) + var/t1 = copytext(trim(sanitize(input("Enter Reason:", "Secure. records", null, null) as text)), 1, MAX_MESSAGE_LEN) if(!t1) t1 = "(none)" switch(temp_href[2]) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index d4a3d91ab3c..823d9b01b17 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -814,7 +814,7 @@ if(R.fields["id"] == E.fields["id"]) var/setcriminal = input(usr, "Specify a new criminal status for this person.", "Security HUD", R.fields["criminal"]) in list("None", "*Arrest*", "Incarcerated", "Parolled", "Released", "Cancel") - var/t1 = copytext(trim(sanitize(input("Enter Reason:", "Security HUD", null, null) as message)), 1, MAX_MESSAGE_LEN) + var/t1 = copytext(trim(sanitize(input("Enter Reason:", "Security HUD", null, null) as text)), 1, MAX_MESSAGE_LEN) if(!t1) t1 = "(none)"