diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm
index b3a7f99758..d4a06d0580 100644
--- a/code/game/machinery/vending.dm
+++ b/code/game/machinery/vending.dm
@@ -1009,8 +1009,9 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
/obj/item/clothing/mask/joy = 1,
/obj/item/clothing/head/cueball = 1,
/obj/item/clothing/under/scratch = 1,
- /obj/item/clothing/under/sailor = 1,
- /obj/item/clothing/ears/headphones = 2)
+ /obj/item/clothing/under/sailor = 1,
+ /obj/item/clothing/ears/headphones = 2,
+ /obj/item/clothing/head/wig/random = 3)
contraband = list(/obj/item/clothing/suit/judgerobe = 1, /obj/item/clothing/head/powdered_wig = 1, /obj/item/gun/magic/wand = 2, /obj/item/clothing/glasses/sunglasses/garb = 2, /obj/item/clothing/glasses/sunglasses/blindfold = 1, /obj/item/clothing/mask/muzzle = 2)
premium = list(/obj/item/clothing/suit/pirate/captain = 2, /obj/item/clothing/head/pirate/captain = 2, /obj/item/clothing/head/helmet/roman = 1, /obj/item/clothing/head/helmet/roman/legionaire = 1, /obj/item/clothing/under/roman = 1, /obj/item/clothing/shoes/roman = 1, /obj/item/shield/riot/roman = 1, /obj/item/skub = 1)
refill_canister = /obj/item/vending_refill/autodrobe
diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm
index 314f39f48b..4a86008ad2 100644
--- a/code/modules/clothing/head/misc_special.dm
+++ b/code/modules/clothing/head/misc_special.dm
@@ -1,179 +1,221 @@
-/*
- * Contents:
- * Welding mask
- * Cakehat
- * Ushanka
- * Pumpkin head
- * Kitty ears
- * Cardborg disguise
- */
-
-/*
- * Welding mask
- */
-/obj/item/clothing/head/welding
- name = "welding helmet"
- desc = "A head-mounted face cover designed to protect the wearer completely from space-arc eye."
- icon_state = "welding"
- flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
- item_state = "welding"
- materials = list(MAT_METAL=1750, MAT_GLASS=400)
-// var/up = 0
- flash_protect = 2
- tint = 2
- armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 60)
- flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
- actions_types = list(/datum/action/item_action/toggle)
- visor_flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
- visor_flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
- resistance_flags = FIRE_PROOF
-
-/obj/item/clothing/head/welding/attack_self(mob/user)
- weldingvisortoggle(user)
-
-
-/*
- * Cakehat
- */
-/obj/item/clothing/head/hardhat/cakehat
- name = "cakehat"
- desc = "You put the cake on your head. Brilliant."
- icon_state = "hardhat0_cakehat"
- item_state = "hardhat0_cakehat"
- item_color = "cakehat"
- hitsound = 'sound/weapons/tap.ogg'
- flags_inv = HIDEEARS|HIDEHAIR
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0)
- brightness_on = 2 //luminosity when on
- flags_cover = HEADCOVERSEYES
- heat = 100
-
-/obj/item/clothing/head/hardhat/cakehat/process()
- var/turf/location = src.loc
- if(ishuman(location))
- var/mob/living/carbon/human/M = location
- if(M.is_holding(src) || M.head == src)
- location = M.loc
-
- if(isturf(location))
- location.hotspot_expose(700, 1)
-
-/obj/item/clothing/head/hardhat/cakehat/turn_on()
- ..()
- force = 2
- throwforce = 2
- damtype = BURN
- hitsound = 'sound/items/welder.ogg'
- START_PROCESSING(SSobj, src)
-
-/obj/item/clothing/head/hardhat/cakehat/turn_off()
- ..()
- force = 0
- throwforce = 0
- damtype = BRUTE
- hitsound = 'sound/weapons/tap.ogg'
- STOP_PROCESSING(SSobj, src)
-
-/obj/item/clothing/head/hardhat/cakehat/is_hot()
- return on * heat
-/*
- * Ushanka
- */
-/obj/item/clothing/head/ushanka
- name = "ushanka"
- desc = "Perfect for winter in Siberia, da?"
- icon_state = "ushankadown"
- item_state = "ushankadown"
- flags_inv = HIDEEARS|HIDEHAIR
- var/earflaps = 1
- cold_protection = HEAD
- min_cold_protection_temperature = FIRE_HELM_MIN_TEMP_PROTECT
-
- dog_fashion = /datum/dog_fashion/head/ushanka
-
-/obj/item/clothing/head/ushanka/attack_self(mob/user)
- if(earflaps)
- src.icon_state = "ushankaup"
- src.item_state = "ushankaup"
- earflaps = 0
- to_chat(user, "You raise the ear flaps on the ushanka.")
- else
- src.icon_state = "ushankadown"
- src.item_state = "ushankadown"
- earflaps = 1
- to_chat(user, "You lower the ear flaps on the ushanka.")
-
-/*
- * Pumpkin head
- */
-/obj/item/clothing/head/hardhat/pumpkinhead
- name = "carved pumpkin"
- desc = "A jack o' lantern! Believed to ward off evil spirits."
- icon_state = "hardhat0_pumpkin"
- item_state = "hardhat0_pumpkin"
- item_color = "pumpkin"
- flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0)
- brightness_on = 2 //luminosity when on
- flags_cover = HEADCOVERSEYES
-
-/*
- * Kitty ears
- */
-/obj/item/clothing/head/kitty
- name = "kitty ears"
- desc = "A pair of kitty ears. Meow!"
- icon_state = "kitty"
- color = "#999999"
- dynamic_hair_suffix = ""
-
- dog_fashion = /datum/dog_fashion/head/kitty
-
-/obj/item/clothing/head/kitty/equipped(mob/living/carbon/human/user, slot)
- if(ishuman(user) && slot == slot_head)
- update_icon(user)
- user.update_inv_head() //Color might have been changed by update_icon.
- ..()
-
-/obj/item/clothing/head/kitty/update_icon(mob/living/carbon/human/user)
- if(ishuman(user))
- add_atom_colour("#[user.hair_color]", FIXED_COLOUR_PRIORITY)
-
-/obj/item/clothing/head/kitty/genuine
- desc = "A pair of kitty ears. A tag on the inside says \"Hand made from real cats.\""
-
-
-/obj/item/clothing/head/hardhat/reindeer
- name = "novelty reindeer hat"
- desc = "Some fake antlers and a very fake red nose."
- icon_state = "hardhat0_reindeer"
- item_state = "hardhat0_reindeer"
- item_color = "reindeer"
- flags_inv = 0
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0)
- brightness_on = 1 //luminosity when on
- dynamic_hair_suffix = ""
-
- dog_fashion = /datum/dog_fashion/head/reindeer
-
-/obj/item/clothing/head/cardborg
- name = "cardborg helmet"
- desc = "A helmet made out of a box."
- icon_state = "cardborg_h"
- item_state = "cardborg_h"
- flags_cover = HEADCOVERSEYES
- flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
-
- dog_fashion = /datum/dog_fashion/head/cardborg
-
-/obj/item/clothing/head/cardborg/equipped(mob/living/user, slot)
- ..()
- if(ishuman(user) && slot == slot_head)
- var/mob/living/carbon/human/H = user
- if(istype(H.wear_suit, /obj/item/clothing/suit/cardborg))
- var/obj/item/clothing/suit/cardborg/CB = H.wear_suit
- CB.disguise(user, src)
-
-/obj/item/clothing/head/cardborg/dropped(mob/living/user)
- ..()
- user.remove_alt_appearance("standard_borg_disguise")
+/*
+ * Contents:
+ * Welding mask
+ * Cakehat
+ * Ushanka
+ * Pumpkin head
+ * Kitty ears
+ * Cardborg disguise
+ */
+
+/*
+ * Welding mask
+ */
+/obj/item/clothing/head/welding
+ name = "welding helmet"
+ desc = "A head-mounted face cover designed to protect the wearer completely from space-arc eye."
+ icon_state = "welding"
+ flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
+ item_state = "welding"
+ materials = list(MAT_METAL=1750, MAT_GLASS=400)
+// var/up = 0
+ flash_protect = 2
+ tint = 2
+ armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 60)
+ flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
+ actions_types = list(/datum/action/item_action/toggle)
+ visor_flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
+ visor_flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
+ resistance_flags = FIRE_PROOF
+
+/obj/item/clothing/head/welding/attack_self(mob/user)
+ weldingvisortoggle(user)
+
+
+/*
+ * Cakehat
+ */
+/obj/item/clothing/head/hardhat/cakehat
+ name = "cakehat"
+ desc = "You put the cake on your head. Brilliant."
+ icon_state = "hardhat0_cakehat"
+ item_state = "hardhat0_cakehat"
+ item_color = "cakehat"
+ hitsound = 'sound/weapons/tap.ogg'
+ flags_inv = HIDEEARS|HIDEHAIR
+ armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0)
+ brightness_on = 2 //luminosity when on
+ flags_cover = HEADCOVERSEYES
+ heat = 1000
+
+/obj/item/clothing/head/hardhat/cakehat/process()
+ var/turf/location = src.loc
+ if(ishuman(location))
+ var/mob/living/carbon/human/M = location
+ if(M.is_holding(src) || M.head == src)
+ location = M.loc
+
+ if(isturf(location))
+ location.hotspot_expose(700, 1)
+
+/obj/item/clothing/head/hardhat/cakehat/turn_on()
+ ..()
+ force = 15
+ throwforce = 15
+ damtype = BURN
+ hitsound = 'sound/items/welder.ogg'
+ START_PROCESSING(SSobj, src)
+
+/obj/item/clothing/head/hardhat/cakehat/turn_off()
+ ..()
+ force = 0
+ throwforce = 0
+ damtype = BRUTE
+ hitsound = 'sound/weapons/tap.ogg'
+ STOP_PROCESSING(SSobj, src)
+
+/obj/item/clothing/head/hardhat/cakehat/is_hot()
+ return on * heat
+/*
+ * Ushanka
+ */
+/obj/item/clothing/head/ushanka
+ name = "ushanka"
+ desc = "Perfect for winter in Siberia, da?"
+ icon_state = "ushankadown"
+ item_state = "ushankadown"
+ flags_inv = HIDEEARS|HIDEHAIR
+ var/earflaps = 1
+ cold_protection = HEAD
+ min_cold_protection_temperature = FIRE_HELM_MIN_TEMP_PROTECT
+
+ dog_fashion = /datum/dog_fashion/head/ushanka
+
+/obj/item/clothing/head/ushanka/attack_self(mob/user)
+ if(earflaps)
+ src.icon_state = "ushankaup"
+ src.item_state = "ushankaup"
+ earflaps = 0
+ to_chat(user, "You raise the ear flaps on the ushanka.")
+ else
+ src.icon_state = "ushankadown"
+ src.item_state = "ushankadown"
+ earflaps = 1
+ to_chat(user, "You lower the ear flaps on the ushanka.")
+
+/*
+ * Pumpkin head
+ */
+/obj/item/clothing/head/hardhat/pumpkinhead
+ name = "carved pumpkin"
+ desc = "A jack o' lantern! Believed to ward off evil spirits."
+ icon_state = "hardhat0_pumpkin"
+ item_state = "hardhat0_pumpkin"
+ item_color = "pumpkin"
+ flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
+ armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0)
+ brightness_on = 2 //luminosity when on
+ flags_cover = HEADCOVERSEYES
+
+/*
+ * Kitty ears
+ */
+/obj/item/clothing/head/kitty
+ name = "kitty ears"
+ desc = "A pair of kitty ears. Meow!"
+ icon_state = "kitty"
+ color = "#999999"
+ dynamic_hair_suffix = ""
+
+ dog_fashion = /datum/dog_fashion/head/kitty
+
+/obj/item/clothing/head/kitty/equipped(mob/living/carbon/human/user, slot)
+ if(ishuman(user) && slot == slot_head)
+ update_icon(user)
+ user.update_inv_head() //Color might have been changed by update_icon.
+ ..()
+
+/obj/item/clothing/head/kitty/update_icon(mob/living/carbon/human/user)
+ if(ishuman(user))
+ add_atom_colour("#[user.hair_color]", FIXED_COLOUR_PRIORITY)
+
+/obj/item/clothing/head/kitty/genuine
+ desc = "A pair of kitty ears. A tag on the inside says \"Hand made from real cats.\""
+
+
+/obj/item/clothing/head/hardhat/reindeer
+ name = "novelty reindeer hat"
+ desc = "Some fake antlers and a very fake red nose."
+ icon_state = "hardhat0_reindeer"
+ item_state = "hardhat0_reindeer"
+ item_color = "reindeer"
+ flags_inv = 0
+ armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0)
+ brightness_on = 1 //luminosity when on
+ dynamic_hair_suffix = ""
+
+ dog_fashion = /datum/dog_fashion/head/reindeer
+
+/obj/item/clothing/head/cardborg
+ name = "cardborg helmet"
+ desc = "A helmet made out of a box."
+ icon_state = "cardborg_h"
+ item_state = "cardborg_h"
+ flags_cover = HEADCOVERSEYES
+ flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
+
+ dog_fashion = /datum/dog_fashion/head/cardborg
+
+/obj/item/clothing/head/cardborg/equipped(mob/living/user, slot)
+ ..()
+ if(ishuman(user) && slot == slot_head)
+ var/mob/living/carbon/human/H = user
+ if(istype(H.wear_suit, /obj/item/clothing/suit/cardborg))
+ var/obj/item/clothing/suit/cardborg/CB = H.wear_suit
+ CB.disguise(user, src)
+
+/obj/item/clothing/head/cardborg/dropped(mob/living/user)
+ ..()
+ user.remove_alt_appearance("standard_borg_disguise")
+
+
+
+/obj/item/clothing/head/wig
+ name = "wig"
+ desc = "A bunch of hair without a head attached."
+ icon_state = ""
+ item_state = "pwig"
+ flags_inv = HIDEHAIR
+ var/hair_style = "Very Long Hair"
+ var/hair_color = "#000"
+
+/obj/item/clothing/head/wig/Initialize(mapload)
+ . = ..()
+ update_icon()
+
+/obj/item/clothing/head/wig/update_icon()
+ cut_overlays()
+ var/datum/sprite_accessory/S = GLOB.hair_styles_list[hair_style]
+ if(!S)
+ icon_state = "pwig"
+ else
+ var/mutable_appearance/M = mutable_appearance(S.icon,S.icon_state)
+ M.appearance_flags |= RESET_COLOR
+ M.color = hair_color
+ add_overlay(M)
+
+/obj/item/clothing/head/wig/worn_overlays(isinhands = FALSE, file2use)
+ . = list()
+ if(!isinhands)
+ var/datum/sprite_accessory/S = GLOB.hair_styles_list[hair_style]
+ if(!S)
+ return
+ var/mutable_appearance/M = mutable_appearance(S.icon, S.icon_state,layer = -HAIR_LAYER)
+ M.appearance_flags |= RESET_COLOR
+ M.color = hair_color
+ . += M
+
+/obj/item/clothing/head/wig/random/Initialize(mapload)
+ hair_style = pick(GLOB.hair_styles_list - "Bald") //Don't want invisible wig
+ hair_color = "#[random_short_color()]"
+ . = ..()