diff --git a/code/__HELPERS/names.dm b/code/__HELPERS/names.dm
index 944d507aa34..933af603ddb 100644
--- a/code/__HELPERS/names.dm
+++ b/code/__HELPERS/names.dm
@@ -235,3 +235,10 @@ var/syndicate_code_response//Code response for traitors.
code_phrase += ", "
return code_phrase
+
+/proc/change_station_name(designation)
+ if(config && config.server_name)
+ world.name = "[config.server_name]: [designation]"
+ else
+ world.name = designation
+ station_name = designation
diff --git a/code/game/objects/items/charter.dm b/code/game/objects/items/charter.dm
index 4fbb8c6c56d..5efecb80a4c 100644
--- a/code/game/objects/items/charter.dm
+++ b/code/game/objects/items/charter.dm
@@ -81,11 +81,7 @@
response_timer_id = null
/obj/item/station_charter/proc/rename_station(designation, uname, ureal_name, ukey)
- if(config && config.server_name)
- world.name = "[config.server_name]: [designation]"
- else
- world.name = designation
- station_name = designation
+ change_station_name(designation)
minor_announce("[ureal_name] has designated your station as [station_name()]", "Captain's Charter", 0)
log_game("[ukey] has renamed the station as [station_name()].")
@@ -96,4 +92,8 @@
if(!unlimited_uses)
used = TRUE
+/obj/item/station_charter/admin
+ unlimited_uses = TRUE
+ ignores_timeout = TRUE
+
#undef STATION_RENAME_TIME_LIMIT
diff --git a/code/modules/admin/secrets.dm b/code/modules/admin/secrets.dm
index 334a74a7861..53c0a59b38c 100644
--- a/code/modules/admin/secrets.dm
+++ b/code/modules/admin/secrets.dm
@@ -28,6 +28,7 @@
List Fingerprints
Enable/Disable CTF
Reset Thunderdome to default state
+ Rename Station Name
Reset Station Name
Shuttles
@@ -148,14 +149,25 @@
message_admins("[key_name_admin(usr)] has cured all diseases.")
for(var/datum/disease/D in SSdisease.processing)
D.cure(D)
+ if("set_name")
+ if(!check_rights(R_ADMIN))
+ return
+ var/new_name = input(usr, "Please input a new name for the station.", "What?", "") as text|null
+ if(!new_name)
+ return
+ change_station_name(new_name)
+ log_admin("[key_name(usr)] renamed the station to \"[new_name]\".")
+ message_admins("[key_name_admin(usr)] renamed the station to: [new_name].")
+ priority_announce("[command_name()] has renamed the station to \"[new_name]\".")
if("reset_name")
if(!check_rights(R_ADMIN))
return
- world.name = new_station_name()
- station_name = world.name
+ var/new_name = new_station_name()
+ change_station_name(new_name)
log_admin("[key_name(usr)] reset the station name.")
message_admins("[key_name_admin(usr)] reset the station name.")
+ priority_announce("[command_name()] has renamed the station to \"[new_name]\".")
if("list_bombers")
if(!check_rights(R_ADMIN))