diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm
index 8c6666085e..e04501144e 100644
--- a/code/game/objects/items/devices/radio/headset.dm
+++ b/code/game/objects/items/devices/radio/headset.dm
@@ -26,6 +26,7 @@ GLOBAL_LIST_INIT(channel_tokens, list(
slot_flags = ITEM_SLOT_EARS
var/obj/item/encryptionkey/keyslot2 = null
dog_fashion = null
+ var/bowman = FALSE
/obj/item/radio/headset/suicide_act(mob/living/carbon/user)
user.visible_message("[user] begins putting \the [src]'s antenna up [user.p_their()] nose! It looks like [user.p_theyre()] trying to give [user.p_them()]self cancer!")
@@ -52,6 +53,11 @@ GLOBAL_LIST_INIT(channel_tokens, list(
else
. += "A small screen on the headset flashes, it's too small to read without holding or wearing the headset."
+/obj/item/radio/headset/ComponentInitialize()
+ . = ..()
+ if (bowman)
+ AddComponent(/datum/component/wearertargeting/earprotection, list(SLOT_EARS))
+
/obj/item/radio/headset/Initialize()
. = ..()
recalculateChannels()
@@ -81,10 +87,7 @@ GLOBAL_LIST_INIT(channel_tokens, list(
desc = "A syndicate headset that can be used to hear all radio frequencies. Protects ears from flashbangs."
icon_state = "syndie_headset"
item_state = "syndie_headset"
-
-/obj/item/radio/headset/syndicate/alt/ComponentInitialize()
- . = ..()
- AddComponent(/datum/component/wearertargeting/earprotection, list(SLOT_EARS))
+ bowman = TRUE
/obj/item/radio/headset/syndicate/alt/leader
name = "team leader headset"
@@ -112,10 +115,7 @@ GLOBAL_LIST_INIT(channel_tokens, list(
desc = "This is used by your elite security force. Protects ears from flashbangs."
icon_state = "sec_headset_alt"
item_state = "sec_headset_alt"
-
-/obj/item/radio/headset/headset_sec/alt/ComponentInitialize()
- . = ..()
- AddComponent(/datum/component/wearertargeting/earprotection, list(SLOT_EARS))
+ bowman = TRUE
/obj/item/radio/headset/headset_eng
name = "engineering radio headset"
@@ -161,10 +161,7 @@ GLOBAL_LIST_INIT(channel_tokens, list(
desc = "The headset of the boss. Protects ears from flashbangs."
icon_state = "com_headset_alt"
item_state = "com_headset_alt"
-
-/obj/item/radio/headset/heads/captain/alt/ComponentInitialize()
- . = ..()
- AddComponent(/datum/component/wearertargeting/earprotection, list(SLOT_EARS))
+ bowman = TRUE
/obj/item/radio/headset/heads/rd
name = "\proper the research director's headset"
@@ -183,10 +180,7 @@ GLOBAL_LIST_INIT(channel_tokens, list(
desc = "The headset of the man in charge of keeping order and protecting the station. Protects ears from flashbangs."
icon_state = "com_headset_alt"
item_state = "com_headset_alt"
-
-/obj/item/radio/headset/heads/hos/ComponentInitialize()
- . = ..()
- AddComponent(/datum/component/wearertargeting/earprotection, list(SLOT_EARS))
+ bowman = TRUE
/obj/item/radio/headset/heads/ce
name = "\proper the chief engineer's headset"
@@ -258,10 +252,7 @@ GLOBAL_LIST_INIT(channel_tokens, list(
icon_state = "cent_headset_alt"
item_state = "cent_headset_alt"
keyslot = null
-
-/obj/item/radio/headset/headset_cent/alt/ComponentInitialize()
- . = ..()
- AddComponent(/datum/component/wearertargeting/earprotection, list(SLOT_EARS))
+ bowman = TRUE
/obj/item/radio/headset/ai
name = "\proper Integrated Subspace Transceiver "
@@ -273,7 +264,11 @@ GLOBAL_LIST_INIT(channel_tokens, list(
/obj/item/radio/headset/attackby(obj/item/W, mob/user, params)
user.set_machine(src)
-
+ if (istype(W,/obj/item/headsetupgrader))
+ if (!bowman)
+ to_chat(user,"You upgrade [src].")
+ bowmanize()
+ qdel(W)
if(istype(W, /obj/item/screwdriver))
if(keyslot || keyslot2)
for(var/ch_name in channels)
@@ -341,3 +336,24 @@ GLOBAL_LIST_INIT(channel_tokens, list(
use_command = !use_command
to_chat(user, "You toggle high-volume mode [use_command ? "on" : "off"].")
return TRUE
+
+/obj/item/radio/headset/proc/bowmanize()
+ cut_overlays()
+ var/icon/yeas = icon(icon,icon_state)
+ icon_state = "antenna_alt"
+ var/mutable_appearance/center = mutable_appearance(icon,"center_alt")
+ center.color = yeas.GetPixel(15,18)
+ var/mutable_appearance/centeralt = mutable_appearance(icon,"centeralt_alt")
+ centeralt.color = yeas.GetPixel(14,22)
+ var/mutable_appearance/centercenter = mutable_appearance(icon,"centercenter_alt")
+ centercenter.color = yeas.GetPixel(13,19)
+ var/mutable_appearance/centerpixel = mutable_appearance(icon,"centerpixel_alt")
+ centerpixel.color = yeas.GetPixel(13,21)
+ add_overlay(center)
+ add_overlay(centeralt)
+ add_overlay(centercenter)
+ add_overlay(centerpixel)
+ name = replacetext(name,"headset", "bowman headset")
+ desc = "[desc] Protects ears from flashbangs."
+ bowman = TRUE
+ AddComponent(/datum/component/wearertargeting/earprotection, list(SLOT_EARS))
diff --git a/code/game/objects/items/devices/traitordevices.dm b/code/game/objects/items/devices/traitordevices.dm
index fc768cd38e..64e2830dd4 100644
--- a/code/game/objects/items/devices/traitordevices.dm
+++ b/code/game/objects/items/devices/traitordevices.dm
@@ -251,3 +251,9 @@ effective or pretty fucking useless.
else
GLOB.active_jammers -= src
update_icon()
+
+/obj/item/headsetupgrader
+ name = "headset upgrader"
+ desc = "A tool that can be used to upgrade a normal headset to be able to protect from flashbangs."
+ icon = 'icons/obj/device.dmi'
+ icon_state = "headset_upgrade"
diff --git a/code/modules/antagonists/abductor/equipment/abduction_gear.dm b/code/modules/antagonists/abductor/equipment/abduction_gear.dm
index dc6d12453d..e6af9fa487 100644
--- a/code/modules/antagonists/abductor/equipment/abduction_gear.dm
+++ b/code/modules/antagonists/abductor/equipment/abduction_gear.dm
@@ -629,15 +629,12 @@
icon_state = "abductor_headset"
item_state = "abductor_headset"
keyslot2 = new /obj/item/encryptionkey/heads/captain
+ bowman = TRUE
/obj/item/radio/headset/abductor/Initialize(mapload)
. = ..()
make_syndie()
-/obj/item/radio/headset/abductor/ComponentInitialize()
- . = ..()
- AddComponent(/datum/component/wearertargeting/earprotection, list(SLOT_EARS))
-
/obj/item/radio/headset/abductor/attackby(obj/item/W, mob/user, params)
if(W.tool_behaviour == TOOL_SCREWDRIVER)
return // Stops humans from disassembling abductor headsets.
diff --git a/code/modules/uplink/uplink_items.dm b/code/modules/uplink/uplink_items.dm
index 18dc34e34b..3acdf6c827 100644
--- a/code/modules/uplink/uplink_items.dm
+++ b/code/modules/uplink/uplink_items.dm
@@ -164,4 +164,4 @@
//Discounts (dynamically filled above)
/datum/uplink_item/discounts
- category = "Discounted Gear"
+ category = "Discounted Gear"
\ No newline at end of file
diff --git a/code/modules/uplink/uplink_items/uplink_devices.dm b/code/modules/uplink/uplink_items/uplink_devices.dm
index 70c70a61b9..7ed84ffdf4 100644
--- a/code/modules/uplink/uplink_items/uplink_devices.dm
+++ b/code/modules/uplink/uplink_items/uplink_devices.dm
@@ -135,6 +135,12 @@
item = /obj/item/aiModule/syndicate
cost = 9
+/datum/uplink_item/device_tools/headsetupgrade
+ name = "Headset Upgrader"
+ desc = "A device that can be used to make one headset immune to flashbangs."
+ item = /obj/item/headsetupgrader
+ cost = 3
+
/datum/uplink_item/device_tools/medgun
name = "Medbeam Gun"
desc = "A wonder of Syndicate engineering, the Medbeam gun, or Medi-Gun enables a medic to keep his fellow \
diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi
index c5a6914cf4..8c2abcd3b9 100644
Binary files a/icons/obj/device.dmi and b/icons/obj/device.dmi differ
diff --git a/icons/obj/radio.dmi b/icons/obj/radio.dmi
index 64642b8a6c..dbfc7b1f93 100644
Binary files a/icons/obj/radio.dmi and b/icons/obj/radio.dmi differ