diff --git a/baystation12.dme b/baystation12.dme
index 69a61b42524..8da74bc8662 100644
--- a/baystation12.dme
+++ b/baystation12.dme
@@ -708,6 +708,7 @@
#include "code\modules\admin\verbs\deadsay.dm"
#include "code\modules\admin\verbs\debug.dm"
#include "code\modules\admin\verbs\diagnostics.dm"
+#include "code\modules\admin\verbs\gimmicks.dm"
#include "code\modules\admin\verbs\mapping.dm"
#include "code\modules\admin\verbs\massmodvar.dm"
#include "code\modules\admin\verbs\MC.dm"
diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm
index 50fc1241a22..e3133bdc82c 100644
--- a/code/modules/admin/admin_verbs.dm
+++ b/code/modules/admin/admin_verbs.dm
@@ -207,6 +207,7 @@
verbs += /client/proc/admin_cancel_shuttle
verbs += /obj/admins/proc/show_traitor_panel
verbs += /client/proc/cmd_admin_dress
+ verbs += /client/proc/cmd_admin_christmas
verbs += /client/proc/respawn_character
verbs += /client/proc/spawn_xeno
verbs += /proc/possess
@@ -340,6 +341,7 @@
verbs -= /client/proc/admin_cancel_shuttle
verbs -= /obj/admins/proc/show_traitor_panel
verbs -= /client/proc/cmd_admin_dress
+ verbs -= /client/proc/cmd_admin_christmas
verbs -= /client/proc/respawn_character
verbs -= /client/proc/spawn_xeno
verbs -= /proc/possess
diff --git a/code/modules/admin/verbs/gimmicks.dm b/code/modules/admin/verbs/gimmicks.dm
new file mode 100644
index 00000000000..ae37d3ce2a9
--- /dev/null
+++ b/code/modules/admin/verbs/gimmicks.dm
@@ -0,0 +1,23 @@
+var/global/gimmick_hat = null
+
+// irreversable, for now
+/client/proc/cmd_admin_christmas()
+ set category = "Fun"
+ set name = "Christmas Time"
+
+ if(!authenticated || !holder)
+ src << "Only administrators may use this command."
+ return
+
+ if(!gimmick_hat)
+ log_admin("[usr.key] has started Christmas!")
+ message_admins("[usr.key] has started Christmas!")
+
+ // handle pre-existing hats
+ gimmick_hat = "santahat"
+ else
+ log_admin("[usr.key] has stopped Christmas!")
+ message_admins("[usr.key] has stopped Christmas!")
+
+ // handle pre-existing hats
+ gimmick_hat = null
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index d5933f49833..4be9f247296 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -1006,6 +1006,8 @@
if(istype(head,/obj/item/clothing/head/kitty))
head_icon = (( lying ) ? head:mob2 : head:mob)
overlays += image("icon" = head_icon, "layer" = MOB_LAYER)
+ if(gimmick_hat)
+ overlays += image("icon" = icon('gimmick_head.dmi', "[gimmick_hat][!lying ? "" : "2"]"), "layer" = MOB_LAYER)
if (head.blood_DNA)
var/icon/stain_icon = icon('blood.dmi', "helmetblood[!lying ? "" : "2"]")
overlays += image("icon" = stain_icon, "layer" = MOB_LAYER)
diff --git a/icons/mob/gimmick_head.dmi b/icons/mob/gimmick_head.dmi
new file mode 100644
index 00000000000..5be570dfd1e
Binary files /dev/null and b/icons/mob/gimmick_head.dmi differ