diff --git a/baystation12.dme b/baystation12.dme
index e0333a2e08787..ca8916e2fb3d1 100644
--- a/baystation12.dme
+++ b/baystation12.dme
@@ -819,6 +819,7 @@
#include "code\modules\admin\ToRban.dm"
#include "code\modules\admin\DB ban\functions.dm"
#include "code\modules\admin\permissionverbs\permissionedit.dm"
+#include "code\modules\admin\verbs\admin_clean.dm"
#include "code\modules\admin\verbs\adminhelp.dm"
#include "code\modules\admin\verbs\adminjump.dm"
#include "code\modules\admin\verbs\adminpm.dm"
diff --git a/baystation12.int b/baystation12.int
index b82874fded5f9..391e96c97baae 100644
--- a/baystation12.int
+++ b/baystation12.int
@@ -1,6 +1,9 @@
// BEGIN_INTERNALS
/*
MAP_ICON_TYPE: 0
+WINDOW: code\modules\admin\verbs\admin_clean.dm;code\modules\admin\admin_verbs.dm
+DIR: code code\modules code\modules\admin code\modules\admin\verbs
+FILE: code\modules\admin\admin_verbs.dm
AUTO_FILE_DIR: OFF
*/
// END_INTERNALS
diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm
index 72de4dabf85a2..261d19b18ba18 100644
--- a/code/modules/admin/admin_verbs.dm
+++ b/code/modules/admin/admin_verbs.dm
@@ -8,6 +8,7 @@ var/list/admin_verbs_default = list(
/client/proc/hide_most_verbs, /*hides all our hideable adminverbs*/
/client/proc/debug_variables, /*allows us to -see- the variables of any instance in the game. +VAREDIT needed to modify*/
// /client/proc/check_antagonists, /*shows all antags*/
+ /client/proc/clean,
/client/proc/cmd_mentor_check_new_players
// /client/proc/deadchat /*toggles deadchat on/off*/
)
@@ -70,6 +71,7 @@ var/list/admin_verbs_admin = list(
/client/proc/cmd_admin_change_custom_event,
/client/proc/cmd_admin_rejuvenate,
/client/proc/toggleattacklogs,
+ /client/proc/clean,
/client/proc/toggledebuglogs,
/client/proc/toggleghostwriters,
/client/proc/toggledrones,
@@ -281,6 +283,7 @@ var/list/admin_verbs_mod = list(
/datum/admins/proc/show_player_info,
/client/proc/player_panel_new,
/client/proc/dsay,
+ /client/proc/clean,
/datum/admins/proc/show_skills,
/datum/admins/proc/show_player_panel,
/client/proc/check_antagonists,
diff --git a/code/modules/admin/verbs/admin_clean.dm b/code/modules/admin/verbs/admin_clean.dm
new file mode 100644
index 0000000000000..60573cc022421
--- /dev/null
+++ b/code/modules/admin/verbs/admin_clean.dm
@@ -0,0 +1,22 @@
+/client/proc/clean()
+ set category = "Special Verbs"
+ set name = "Clean"
+
+
+ var/i = 0
+ for(var/obj/Obj in world)
+ if(istype(Obj,/obj/effect/decal/cleanable))
+ i++
+
+ if(!i)
+ usr << "No objects of this type exist"
+ return
+ if(alert("There are [i] cleanable objects in the world. Do you still want to delete?",,"Yes", "No") == "Yes")
+ world << "
Admin [usr.client.holder.fakekey ? "Administrator" : usr.key] is cleaning the station.
Expect some lag
"
+ sleep 15
+ for(var/obj/Obj in world)
+ if(istype(Obj,/obj/effect/decal/cleanable))
+ del(Obj)
+ log_admin("[key_name_admin(usr)] cleaned the world ([i] objects deleted) ")
+ message_admins("\blue [key_name_admin(usr)] cleaned the world ([i] objects deleted) ")
+