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