diff --git a/code/modules/customitems/item_defines.dm b/code/modules/customitems/item_defines.dm
index 7a9620a1d1a..8aa82439bcb 100644
--- a/code/modules/customitems/item_defines.dm
+++ b/code/modules/customitems/item_defines.dm
@@ -363,11 +363,58 @@
#undef USED_MOD_HELM
#undef USED_MOD_SUIT
+/obj/item/device/fluff/merchant_sallet_modkit //Travelling Merchant: Trav Noble. This is what they spawn in with
+ name = "sallet modkit"
+ desc = "A modkit that can make most helmets look like a steel sallet."
+ icon_state = "modkit"
+ w_class = 2
+ force = 0
+ throwforce = 0
+
+/obj/item/device/fluff/merchant_sallet_modkit/afterattack(atom/target, mob/user, proximity)
+ if(!proximity || !ishuman(user) || user.incapacitated())
+ return
+
+ var/mob/living/carbon/human/H = user
+ if(istype(target, /obj/item/clothing/head/helmet) && !istype(target, /obj/item/clothing/head/helmet/space))
+ var/obj/item/clothing/head/helmet/helm = target
+ var/obj/item/clothing/head/helmet/fluff/merchant_sallet/sallet = new(get_turf(target))
+ sallet.flags = helm.flags
+ sallet.flags_cover = helm.flags_cover
+ sallet.armor = helm.armor
+ sallet.flags_inv = helm.flags_inv
+ sallet.cold_protection = helm.cold_protection
+ sallet.min_cold_protection_temperature = helm.min_cold_protection_temperature
+ sallet.heat_protection = helm.heat_protection
+ sallet.max_heat_protection_temperature = helm.max_heat_protection_temperature
+ sallet.strip_delay = helm.strip_delay
+ sallet.put_on_delay = helm.put_on_delay
+ sallet.burn_state = helm.burn_state
+ sallet.flags_cover = helm.flags_cover
+ if(helm.up)
+ sallet.flags &= ~helm.visor_flags
+ sallet.flags_inv &= ~helm.visor_flags_inv
+ if(!BLOCKHAIR in sallet.flags)
+ sallet.flags |= BLOCKHAIR
+ for(var/flag in list(HIDEMASK, HIDEFACE, HIDEEYES, HIDEEARS)) //Check for and apply missing flags.
+ if(!(sallet.flags_inv & flag))
+ sallet.flags_inv |= flag
+
+ sallet.add_fingerprint(H)
+ target.transfer_fingerprints_to(sallet)
+ playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1)
+ to_chat(user, "You modify [target] with [src].")
+ H.update_inv_head()
+ qdel(target)
+ qdel(src)
+ else
+ to_chat(user, "You can't modify [target]!")
+
//////////////////////////////////
//////////// Clothing ////////////
//////////////////////////////////
-//////////// Gloves ////////////
+//////////// Gloves //////////////
//////////// Eye Wear ////////////
/obj/item/clothing/glasses/hud/security/sunglasses/fluff/eyepro //T0EPIC4U: Ty Omaha
@@ -441,6 +488,57 @@
icon = 'icons/obj/custom_items.dmi'
icon_state = "kakicharakiti"
+/obj/item/clothing/head/helmet/fluff/merchant_sallet //Travelling Merchant: Trav Noble. This >>IS NOT<< what they spawn in with
+ name = "Steel Sallet"
+ desc = "A heavy steel sallet with the word Noble scratched into the side. Comes with a Bevor attached."
+ icon = 'icons/obj/custom_items.dmi'
+ icon_state = "merchant_sallet_visor_bevor"
+ item_state = "merchant_sallet_visor_bevor"
+ actions_types = list(/datum/action/item_action/toggle_helmet_mode)
+ toggle_cooldown = 20
+ toggle_sound = 'sound/items/ZippoClose.ogg'
+ flags = BLOCKHAIR
+ flags_inv = HIDEEYES|HIDEMASK|HIDEFACE|HIDEEARS
+ var/state = "Visor & Bevor"
+
+/obj/item/clothing/head/helmet/fluff/merchant_sallet/attack_self(mob/user)
+ if(!user.incapacitated() && (world.time > cooldown + toggle_cooldown) && Adjacent(user))
+ var/list/options = list()
+ options["Visor & Bevor"] = list(
+ "icon_state" = "merchant_sallet_visor_bevor",
+ "visor_flags" = HIDEEYES,
+ "mask_flags" = HIDEMASK|HIDEFACE
+ )
+ options["Visor Only"] = list(
+ "icon_state" = "merchant_sallet_visor",
+ "visor_flags" = HIDEEYES,
+ "mask_flags" = HIDEFACE
+ )
+ options["Bevor Only"] = list(
+ "icon_state" = "merchant_sallet_bevor",
+ "visor_flags" = null,
+ "mask_flags" = HIDEMASK|HIDEFACE
+ )
+ options["Neither Visor nor Bevor"] = list(
+ "icon_state" = "merchant_sallet",
+ "visor_flags" = null,
+ "mask_flags" = null
+ )
+
+ var/choice = input(user, "How would you like to adjust the sallet?", "Adjust Sallet") as null|anything in options
+
+ if(choice && choice != state && !user.incapacitated() && Adjacent(user))
+ var/list/new_state = options[choice]
+ var/list/old_state = options[state]
+ icon_state = new_state["icon_state"]
+ flags_inv &= ~(old_state["visor_flags"]|old_state["mask_flags"])
+ state = choice
+ flags_inv |= (new_state["visor_flags"]|new_state["mask_flags"])
+ to_chat(user, "You adjust the sallet.")
+ playsound(src.loc, "[toggle_sound]", 100, 0, 4)
+ user.update_inv_head()
+ return 1
+
//////////// Suits ////////////
/obj/item/clothing/suit/fluff
icon = 'icons/obj/custom_items.dmi'
diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi
index 6d5819f338b..3764c64aa50 100644
Binary files a/icons/mob/head.dmi and b/icons/mob/head.dmi differ
diff --git a/icons/obj/custom_items.dmi b/icons/obj/custom_items.dmi
index 9623f991e2f..cb5d510faa2 100644
Binary files a/icons/obj/custom_items.dmi and b/icons/obj/custom_items.dmi differ