diff --git a/code/__DEFINES/admin.dm b/code/__DEFINES/admin.dm
index 6db2c28c2e6..6fcef90ce11 100644
--- a/code/__DEFINES/admin.dm
+++ b/code/__DEFINES/admin.dm
@@ -39,8 +39,18 @@
#define ADMIN_QUE(user) "(?)"
#define ADMIN_FLW(user) "(FLW)"
+#define ADMIN_PP(user) "(PP)"
+#define ADMIN_VV(atom) "(VV)"
+#define ADMIN_SM(user) "(SM)"
+#define ADMIN_TP(user) "(TP)"
+#define ADMIN_BSA(user) "(BSA)"
+#define ADMIN_CENTCOM_REPLY(user) "(RPLY)"
+#define ADMIN_SYNDICATE_REPLY(user) "(RPLY)"
+#define ADMIN_SC(user) "(SC)"
#define ADMIN_LOOKUP(user) "[key_name_admin(user)][ADMIN_QUE(user)]"
#define ADMIN_LOOKUPFLW(user) "[key_name_admin(user)][ADMIN_QUE(user)] [ADMIN_FLW(user)]"
+#define ADMIN_SET_SD_CODE "(SETCODE)"
+#define ADMIN_FULLMONTY(user) "[key_name_admin(user)] ([ADMIN_QUE(user)]) [ADMIN_PP(user)] [ADMIN_VV(user)] [ADMIN_SM(user)] [ADMIN_FLW(user)] [ADMIN_TP(user)]"
#define ADMIN_JMP(src) "(JMP)"
#define COORD(src) "([src.x],[src.y],[src.z])"
#define ADMIN_COORDJMP(src) "[COORD(src)] [ADMIN_JMP(src)]"
diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm
index f553539156f..a5b1347ee76 100644
--- a/code/__HELPERS/unsorted.dm
+++ b/code/__HELPERS/unsorted.dm
@@ -1399,4 +1399,11 @@ proc/pick_closest_path(value)
admins_warned = 1
spawn(25)
message_admins(msg)
- stack_trace(msg)
\ No newline at end of file
+ stack_trace(msg)
+
+/proc/random_nukecode()
+ var/val = rand(0, 99999)
+ var/str = "[val]"
+ while(length(str) < 5)
+ str = "0" + str
+ . = str
diff --git a/code/game/gamemodes/blob/blob_report.dm b/code/game/gamemodes/blob/blob_report.dm
index d0aa8b724fc..246677cea13 100644
--- a/code/game/gamemodes/blob/blob_report.dm
+++ b/code/game/gamemodes/blob/blob_report.dm
@@ -16,7 +16,7 @@
print_command_report(intercepttext,"Level 5-6 Biohazard Response Procedures")
priority_announce("Confirmed outbreak of level 5 biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert", 'sound/AI/outbreak5.ogg')
if(2)
- var/nukecode = rand(10000, 99999)
+ var/nukecode = random_nukecode()
for(var/obj/machinery/nuclearbomb/bomb in machines)
if(bomb && bomb.r_code)
if(bomb.z == ZLEVEL_STATION)
diff --git a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm
index c8c8eea8984..440d3ac1da6 100644
--- a/code/game/gamemodes/nuclear/nuclear.dm
+++ b/code/game/gamemodes/nuclear/nuclear.dm
@@ -67,7 +67,7 @@
synd_spawn += get_turf(A)
continue
- var/nuke_code = "[rand(10000, 99999)]"
+ var/nuke_code = random_nukecode()
var/leader_selected = 0
var/agent_number = 1
var/spawnpos = 1
diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm
index afe5878b5af..b0007267e23 100644
--- a/code/modules/admin/topic.dm
+++ b/code/modules/admin/topic.dm
@@ -2239,3 +2239,12 @@
custom_outfits.Add(O)
message_admins("[key_name(usr)] created \"[O.name]\" outfit!")
+
+ else if(href_list["set_selfdestruct_code"])
+ if(!check_rights(R_ADMIN))
+ return
+ var/code = random_nukecode()
+ for(var/obj/machinery/nuclearbomb/selfdestruct/SD in nuke_list)
+ SD.r_code = code
+ message_admins("[key_name_admin(usr)] has set the self-destruct \
+ code to \"[code]\".")
diff --git a/code/modules/admin/verbs/one_click_antag.dm b/code/modules/admin/verbs/one_click_antag.dm
index 1c5d3b54c67..5288a2af89f 100644
--- a/code/modules/admin/verbs/one_click_antag.dm
+++ b/code/modules/admin/verbs/one_click_antag.dm
@@ -239,7 +239,7 @@
if(agentcount < 3)
return 0
- var/nuke_code = "[rand(10000, 99999)]"
+ var/nuke_code = random_nukecode()
var/obj/machinery/nuclearbomb/nuke = locate("syndienuke") in nuke_list
if(nuke)
diff --git a/code/modules/admin/verbs/pray.dm b/code/modules/admin/verbs/pray.dm
index 77eda46d3e8..78ffc5667ed 100644
--- a/code/modules/admin/verbs/pray.dm
+++ b/code/modules/admin/verbs/pray.dm
@@ -18,15 +18,22 @@
return
var/image/cross = image('icons/obj/storage.dmi',"bible")
+ var/font_color = "purple"
+ var/prayer_type = "PRAYER"
if(usr.job == "Chaplain")
cross = image('icons/obj/storage.dmi',"kingyellow")
- msg = "\icon[cross] CHAPLAIN PRAYER: [key_name_admin(src)] (?) (PP) (VV) (SM) (FLW) (TP) (SC): [msg]"
+ font_color = "blue"
+ prayer_type = "CHAPLAIN PRAYER"
else if(iscultist(usr))
cross = image('icons/obj/storage.dmi',"tome")
- msg = "\icon[cross] CULTIST PRAYER: [key_name_admin(src)] (?) (PP) (VV) (SM) (FLW) (TP) (SC): [msg]"
- else
- cross = image('icons/obj/storage.dmi',"bible")
- msg = "\icon[cross] PRAYER: [key_name_admin(src)] (?) (PP) (VV) (SM) (FLW) (TP) (SC): [msg]"
+ font_color = "red"
+ prayer_type = "CULTIST PRAYER"
+
+ msg = "\icon[cross] \
+ [prayer_type]: \
+ [ADMIN_FULLMONTY(src)] [ADMIN_SC(src)]: \
+ [msg]"
+
for(var/client/C in admins)
if(C.prefs.chat_toggles & CHAT_PRAYER)
C << msg
@@ -40,22 +47,34 @@
/proc/Centcomm_announce(text , mob/Sender)
var/msg = copytext(sanitize(text), 1, MAX_MESSAGE_LEN)
- msg = "CENTCOM:[key_name_admin(Sender)] (?) (PP) (VV) (SM) (FLW) (TP) (BSA) (RPLY): [msg]"
+ msg = "\
+ CENTCOM:\
+ [ADMIN_FULLMONTY(Sender)] [ADMIN_BSA(Sender)] \
+ [ADMIN_CENTCOM_REPLY(Sender)]: \
+ [msg]"
admins << msg
for(var/obj/machinery/computer/communications/C in machines)
C.overrideCooldown()
/proc/Syndicate_announce(text , mob/Sender)
var/msg = copytext(sanitize(text), 1, MAX_MESSAGE_LEN)
- msg = "SYNDICATE:[key_name_admin(Sender)] (?) (PP) (VV) (SM) (FLW) (TP) (BSA) (RPLY): [msg]"
+ msg = "\
+ SYNDICATE:\
+ [ADMIN_FULLMONTY(Sender)] [ADMIN_BSA(Sender)] \
+ [ADMIN_SYNDICATE_REPLY(Sender)]: \
+ [msg]"
admins << msg
for(var/obj/machinery/computer/communications/C in machines)
C.overrideCooldown()
/proc/Nuke_request(text , mob/Sender)
var/msg = copytext(sanitize(text), 1, MAX_MESSAGE_LEN)
- msg = "NUKE CODE REQUEST:[key_name_admin(Sender)] (?) (PP) (VV) (SM) (FLW) (TP) (BSA) (RPLY): [msg]"
+ msg = "\
+ NUKE CODE REQUEST:\
+ [ADMIN_FULLMONTY(Sender)] [ADMIN_BSA(Sender)] \
+ [ADMIN_CENTCOM_REPLY(Sender)]\
+ [ADMIN_SET_SD_CODE]: \
+ [msg]"
admins << msg
- admins << "At this current time, the nuke must have the code manually set via varedit."
for(var/obj/machinery/computer/communications/C in machines)
C.overrideCooldown()
diff --git a/code/modules/events/operative.dm b/code/modules/events/operative.dm
index afdd178ac40..6a33688f659 100644
--- a/code/modules/events/operative.dm
+++ b/code/modules/events/operative.dm
@@ -39,7 +39,7 @@
if(nuke)
var/nuke_code
if(!nuke.r_code || nuke.r_code == "ADMIN")
- nuke_code = "[rand(10000, 99999)]"
+ nuke_code = random_nukecode()
nuke.r_code = nuke_code
else
nuke_code = nuke.r_code