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..2643908bab5 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
@@ -66,6 +67,8 @@
break
var/background = "''"
switch(crimstat)
+ if("*Execute*")
+ background = "'background-color:#5E0A1A'"
if("*Arrest*")
background = "'background-color:#890E26'"
if("Incarcerated")
@@ -162,18 +165,33 @@
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 text)), 1, MAX_MESSAGE_LEN)
+ if(!t1)
+ t1 = "(none)"
switch(temp_href[2])
if("none")
active2.fields["criminal"] = "None"
if("arrest")
active2.fields["criminal"] = "*Arrest*"
+ if("execute")
+ 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
+ setTemp("
Error: permission denied.
")
+ //to_chat(usr, "Error: permission denied.")
+ return 1
if("incarcerated")
active2.fields["criminal"] = "Incarcerated"
if("parolled")
active2.fields["criminal"] = "Parolled"
if("released")
active2.fields["criminal"] = "Released"
-
+ var/newstatus = active2.fields["criminal"]
+ 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")
if(active1)
@@ -206,6 +224,7 @@
if(check_access(scan))
authenticated = scan.registered_name
rank = scan.assignment
+ authcard_access = scan.access
if(authenticated)
active1 = null
@@ -218,6 +237,7 @@
screen = null
active1 = null
active2 = null
+ authcard_access = list()
else if(href_list["sort"])
// Reverse the order if clicked twice
@@ -458,6 +478,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 651aae8c209..a2235b3811c 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -797,7 +797,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,16 +815,33 @@
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 text)), 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()] 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()] 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()] with comment: [t1]
"
- if(hasHUD(usr, "security"))
- if(setcriminal != "Cancel")
R.fields["criminal"] = setcriminal
- modified = 1
-
+ log_admin("[key_name_admin(usr)] set secstatus of [their_rank] [their_name] to [setcriminal], comment: [t1]")
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"])
@@ -1762,6 +1779,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 e7deeee2ad9..c56439d56f4 100644
Binary files a/icons/mob/hud.dmi and b/icons/mob/hud.dmi differ