diff --git a/code/__DEFINES/outfit.dm b/code/__DEFINES/outfit.dm
index f40447f0ab4..9c72fb04c61 100644
--- a/code/__DEFINES/outfit.dm
+++ b/code/__DEFINES/outfit.dm
@@ -39,3 +39,4 @@
#define OUTFIT_DOUBLE 4
#define OUTFIT_WRISTRAD 5
#define OUTFIT_THIN_WRISTRAD 6
+#define OUTFIT_CLIPON 7
diff --git a/code/__HELPERS/global_lists.dm b/code/__HELPERS/global_lists.dm
index c58b867c6fd..6ecc00f0b22 100644
--- a/code/__HELPERS/global_lists.dm
+++ b/code/__HELPERS/global_lists.dm
@@ -111,7 +111,7 @@ GLOBAL_LIST_INIT(exclude_jobs, list(/datum/job/ai, /datum/job/cyborg, /datum/job
GLOBAL_LIST_INIT(pdalist, list("Nothing", "Standard PDA", "Classic PDA", "Rugged PDA", "Slate PDA", "Smart PDA", "Tablet", "Wristbound"))
/// Headset loadout choices.
-GLOBAL_LIST_INIT(headsetlist, list("Nothing", "Headset", "Bowman Headset", "Double Headset", "Wristbound Radio", "Sleek Wristbound Radio"))
+GLOBAL_LIST_INIT(headsetlist, list("Nothing", "Headset", "Bowman Headset", "Double Headset", "Wristbound Radio", "Sleek Wristbound Radio", "Clip-on Radio"))
/// Primary Radio Slot loadout choices.
GLOBAL_LIST_INIT(primary_radio_slot_choice, list("Left Ear", "Right Ear", "Wrist"))
diff --git a/code/datums/outfits/outfit.dm b/code/datums/outfits/outfit.dm
index e0ffadf91c2..78a3ad415e7 100644
--- a/code/datums/outfits/outfit.dm
+++ b/code/datums/outfits/outfit.dm
@@ -80,6 +80,7 @@
var/bowman = /obj/item/device/radio/headset/alt
var/double_headset = /obj/item/device/radio/headset/alt/double
var/wrist_radio = /obj/item/device/radio/headset/wrist
+ var/clipon_radio = /obj/item/device/radio/headset/wrist/clip
var/id_iff = IFF_DEFAULT // when spawning in, the ID will be set to this iff, preventing friendly fire
@@ -285,6 +286,9 @@
wrist = wrist_radio
if(H.headset_choice == OUTFIT_THIN_WRISTRAD)
radio_callback = CALLBACK(src, PROC_REF(turn_into_thinset))
+ if(OUTFIT_CLIPON)
+ l_ear = null
+ wrist = clipon_radio
else
l_ear = headset //Department headset
if(l_ear)
diff --git a/code/game/jobs/job/captain.dm b/code/game/jobs/job/captain.dm
index b81a05c0aab..cf2cd9fe175 100644
--- a/code/game/jobs/job/captain.dm
+++ b/code/game/jobs/job/captain.dm
@@ -40,6 +40,7 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1)
bowman = /obj/item/device/radio/headset/heads/captain/alt
double_headset = /obj/item/device/radio/headset/alt/double/captain
wrist_radio = /obj/item/device/radio/headset/wrist/captain
+ clipon_radio = /obj/item/device/radio/headset/wrist/clip/captain
tab_pda = /obj/item/modular_computer/handheld/pda/command/captain
wristbound = /obj/item/modular_computer/handheld/wristbound/preset/pda/command/captain
@@ -122,6 +123,7 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1)
bowman = /obj/item/device/radio/headset/heads/xo/alt
double_headset = /obj/item/device/radio/headset/alt/double/xo
wrist_radio = /obj/item/device/radio/headset/wrist/xo
+ clipon_radio = /obj/item/device/radio/headset/wrist/clip/xo
tab_pda = /obj/item/modular_computer/handheld/pda/command/xo
wristbound = /obj/item/modular_computer/handheld/wristbound/preset/pda/command/xo
@@ -172,4 +174,5 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1)
bowman = /obj/item/device/radio/headset/headset_com/alt
double_headset = /obj/item/device/radio/headset/alt/double/command
wrist_radio = /obj/item/device/radio/headset/wrist/command
+ clipon_radio = /obj/item/device/radio/headset/wrist/clip/command
messengerbag = /obj/item/storage/backpack/messenger/com
diff --git a/code/game/jobs/job/civilian.dm b/code/game/jobs/job/civilian.dm
index 89e38637110..6f452f15645 100644
--- a/code/game/jobs/job/civilian.dm
+++ b/code/game/jobs/job/civilian.dm
@@ -38,6 +38,7 @@
bowman = /obj/item/device/radio/headset/headset_service/alt
double_headset = /obj/item/device/radio/headset/alt/double/service
wrist_radio = /obj/item/device/radio/headset/wrist/service
+ clipon_radio = /obj/item/device/radio/headset/wrist/clip/service
backpack_faction = /obj/item/storage/backpack/nt
satchel_faction = /obj/item/storage/backpack/satchel/nt
@@ -84,6 +85,7 @@
bowman = /obj/item/device/radio/headset/headset_service/alt
double_headset = /obj/item/device/radio/headset/alt/double/service
wrist_radio = /obj/item/device/radio/headset/wrist/service
+ clipon_radio = /obj/item/device/radio/headset/wrist/clip/service
backpack_faction = /obj/item/storage/backpack/nt
satchel_faction = /obj/item/storage/backpack/satchel/nt
@@ -134,6 +136,7 @@
bowman = /obj/item/device/radio/headset/headset_service/alt
double_headset = /obj/item/device/radio/headset/alt/double/service
wrist_radio = /obj/item/device/radio/headset/wrist/service
+ clipon_radio = /obj/item/device/radio/headset/wrist/clip/service
backpack = /obj/item/storage/backpack/hydroponics
backpack_faction = /obj/item/storage/backpack/nt
@@ -185,6 +188,7 @@
bowman = /obj/item/device/radio/headset/headset_service/alt
double_headset = /obj/item/device/radio/headset/alt/double/service
wrist_radio = /obj/item/device/radio/headset/wrist/service
+ clipon_radio = /obj/item/device/radio/headset/wrist/clip/service
backpack_faction = /obj/item/storage/backpack/nt
satchel_faction = /obj/item/storage/backpack/satchel/nt
@@ -227,6 +231,7 @@
bowman = /obj/item/device/radio/headset/headset_service/alt
double_headset = /obj/item/device/radio/headset/alt/double/service
wrist_radio = /obj/item/device/radio/headset/wrist/service
+ clipon_radio = /obj/item/device/radio/headset/wrist/clip/service
backpack_faction = /obj/item/storage/backpack/nt
satchel_faction = /obj/item/storage/backpack/satchel/nt
@@ -286,6 +291,7 @@
bowman = /obj/item/device/radio/headset/headset_service/alt
double_headset = /obj/item/device/radio/headset/alt/double/service
wrist_radio = /obj/item/device/radio/headset/wrist/service
+ clipon_radio = /obj/item/device/radio/headset/wrist/clip/service
tab_pda = /obj/item/modular_computer/handheld/pda/civilian/chaplain
wristbound = /obj/item/modular_computer/handheld/wristbound/preset/pda/civilian/chaplain
@@ -374,6 +380,7 @@
bowman = /obj/item/device/radio/headset/operations_manager/alt
double_headset = /obj/item/device/radio/headset/alt/double/operations_manager
wrist_radio = /obj/item/device/radio/headset/wrist/cargo/operations_manager
+ clipon_radio = /obj/item/device/radio/headset/wrist/clip/cargo/operations_manager
backpack = /obj/item/storage/backpack/om
satchel = /obj/item/storage/backpack/satchel/om
@@ -420,6 +427,7 @@
bowman = /obj/item/device/radio/headset/headset_cargo/alt
double_headset = /obj/item/device/radio/headset/alt/double/cargo
wrist_radio = /obj/item/device/radio/headset/wrist/cargo
+ clipon_radio = /obj/item/device/radio/headset/wrist/cargo
/datum/job/mining
title = "Shaft Miner"
@@ -462,6 +470,7 @@
bowman = /obj/item/device/radio/headset/headset_mining/alt
double_headset = /obj/item/device/radio/headset/alt/double/mining
wrist_radio = /obj/item/device/radio/headset/wrist/cargo/mining
+ clipon_radio = /obj/item/device/radio/headset/wrist/clip/cargo/mining
backpack_contents = list(
/obj/item/storage/bag/ore = 1
@@ -518,6 +527,7 @@
bowman = /obj/item/device/radio/headset/headset_cargo/alt
double_headset = /obj/item/device/radio/headset/alt/double/cargo
wrist_radio = /obj/item/device/radio/headset/wrist/cargo
+ clipon_radio = /obj/item/device/radio/headset/wrist/clip/cargo
belt_contents = list(
/obj/item/screwdriver = 1,
diff --git a/code/game/jobs/job/engineering.dm b/code/game/jobs/job/engineering.dm
index 72d2c2ff26e..33a2fddef2c 100644
--- a/code/game/jobs/job/engineering.dm
+++ b/code/game/jobs/job/engineering.dm
@@ -48,6 +48,7 @@
bowman = /obj/item/device/radio/headset/heads/ce/alt
double_headset = /obj/item/device/radio/headset/alt/double/ce
wrist_radio = /obj/item/device/radio/headset/wrist/ce
+ clipon_radio = /obj/item/device/radio/headset/wrist/clip/ce
tab_pda = /obj/item/modular_computer/handheld/pda/engineering/ce
wristbound = /obj/item/modular_computer/handheld/wristbound/preset/pda/engineering/ce
@@ -110,6 +111,7 @@
bowman = /obj/item/device/radio/headset/headset_eng/alt
double_headset = /obj/item/device/radio/headset/alt/double/eng
wrist_radio = /obj/item/device/radio/headset/wrist/eng
+ clipon_radio = /obj/item/device/radio/headset/wrist/clip/eng
tab_pda = /obj/item/modular_computer/handheld/pda/engineering
wristbound = /obj/item/modular_computer/handheld/wristbound/preset/pda/engineering
@@ -175,6 +177,7 @@
bowman = /obj/item/device/radio/headset/headset_eng/alt
double_headset = /obj/item/device/radio/headset/alt/double/eng
wrist_radio = /obj/item/device/radio/headset/wrist/eng
+ clipon_radio = /obj/item/device/radio/headset/wrist/clip/eng
backpack = /obj/item/storage/backpack/industrial
satchel = /obj/item/storage/backpack/satchel/eng
@@ -250,6 +253,7 @@
bowman = /obj/item/device/radio/headset/headset_eng/alt
double_headset = /obj/item/device/radio/headset/alt/double/eng
wrist_radio = /obj/item/device/radio/headset/wrist/eng
+ clipon_radio = /obj/item/device/radio/headset/wrist/clip/eng
backpack = /obj/item/storage/backpack/industrial
satchel = /obj/item/storage/backpack/satchel/eng
@@ -284,6 +288,7 @@
bowman = /obj/item/device/radio/headset/headset_eng/alt
double_headset = /obj/item/device/radio/headset/alt/double/eng
wrist_radio = /obj/item/device/radio/headset/wrist/eng
+ clipon_radio = /obj/item/device/radio/headset/wrist/clip/eng
backpack = /obj/item/storage/backpack/industrial
satchel = /obj/item/storage/backpack/satchel/eng
diff --git a/code/game/jobs/job/job.dm b/code/game/jobs/job/job.dm
index 6b083b409f4..529557a77e8 100644
--- a/code/game/jobs/job/job.dm
+++ b/code/game/jobs/job/job.dm
@@ -199,6 +199,7 @@
bowman = /obj/item/device/radio/headset/alt
double_headset = /obj/item/device/radio/headset/alt/double
wrist_radio = /obj/item/device/radio/headset/wrist
+ clipon_radio = /obj/item/device/radio/headset/wrist/clip
tab_pda = /obj/item/modular_computer/handheld/pda/civilian
wristbound = /obj/item/modular_computer/handheld/wristbound/preset/pda/civilian
diff --git a/code/game/jobs/job/medical.dm b/code/game/jobs/job/medical.dm
index 9ad5e4426e0..5be309e673b 100644
--- a/code/game/jobs/job/medical.dm
+++ b/code/game/jobs/job/medical.dm
@@ -46,6 +46,7 @@
bowman = /obj/item/device/radio/headset/heads/cmo/alt
double_headset = /obj/item/device/radio/headset/alt/double/cmo
wrist_radio = /obj/item/device/radio/headset/wrist/cmo
+ clipon_radio = /obj/item/device/radio/headset/wrist/clip/cmo
tab_pda = /obj/item/modular_computer/handheld/pda/medical/cmo
wristbound = /obj/item/modular_computer/handheld/wristbound/preset/pda/medical/cmo
@@ -118,6 +119,7 @@
bowman = /obj/item/device/radio/headset/headset_med/alt
double_headset = /obj/item/device/radio/headset/alt/double/med
wrist_radio = /obj/item/device/radio/headset/wrist/med
+ clipon_radio = /obj/item/device/radio/headset/wrist/clip/med
tab_pda = /obj/item/modular_computer/handheld/pda/medical
wristbound = /obj/item/modular_computer/handheld/wristbound/preset/pda/medical
@@ -180,6 +182,7 @@
bowman = /obj/item/device/radio/headset/headset_med/alt
double_headset = /obj/item/device/radio/headset/alt/double/med
wrist_radio = /obj/item/device/radio/headset/wrist/med
+ clipon_radio = /obj/item/device/radio/headset/wrist/clip/med
tab_pda = /obj/item/modular_computer/handheld/pda/medical
wristbound = /obj/item/modular_computer/handheld/wristbound/preset/pda/medical
@@ -233,6 +236,7 @@
bowman = /obj/item/device/radio/headset/headset_med/alt
double_headset = /obj/item/device/radio/headset/alt/double/med
wrist_radio = /obj/item/device/radio/headset/wrist/med
+ clipon_radio = /obj/item/device/radio/headset/wrist/clip/med
tab_pda = /obj/item/modular_computer/handheld/pda/medical/psych
wristbound = /obj/item/modular_computer/handheld/wristbound/preset/pda/medical/psych
@@ -290,6 +294,7 @@
bowman = /obj/item/device/radio/headset/headset_med/alt
double_headset = /obj/item/device/radio/headset/alt/double/med
wrist_radio = /obj/item/device/radio/headset/wrist/med
+ clipon_radio = /obj/item/device/radio/headset/wrist/clip/med
tab_pda = /obj/item/modular_computer/handheld/pda/medical
wristbound = /obj/item/modular_computer/handheld/wristbound/preset/pda/medical
@@ -360,6 +365,7 @@
bowman = /obj/item/device/radio/headset/headset_med/alt
double_headset = /obj/item/device/radio/headset/alt/double/med
wrist_radio = /obj/item/device/radio/headset/wrist/med
+ clipon_radio = /obj/item/device/radio/headset/wrist/clip/med
backpack = /obj/item/storage/backpack/medic
backpack_faction = /obj/item/storage/backpack/nt
diff --git a/code/game/jobs/job/science.dm b/code/game/jobs/job/science.dm
index 3141a2ec798..f8a53368595 100644
--- a/code/game/jobs/job/science.dm
+++ b/code/game/jobs/job/science.dm
@@ -48,6 +48,7 @@
bowman = /obj/item/device/radio/headset/heads/rd/alt
double_headset = /obj/item/device/radio/headset/alt/double/rd
wrist_radio = /obj/item/device/radio/headset/wrist/rd
+ clipon_radio = /obj/item/device/radio/headset/wrist/clip/rd
tab_pda = /obj/item/modular_computer/handheld/pda/research/rd
wristbound = /obj/item/modular_computer/handheld/wristbound/preset/pda/research/rd
@@ -96,6 +97,7 @@
bowman = /obj/item/device/radio/headset/headset_sci/alt
double_headset = /obj/item/device/radio/headset/alt/double/sci
wrist_radio = /obj/item/device/radio/headset/wrist/sci
+ clipon_radio = /obj/item/device/radio/headset/wrist/clip/sci
tab_pda = /obj/item/modular_computer/handheld/pda/research
wristbound = /obj/item/modular_computer/handheld/wristbound/preset/pda/research
@@ -145,6 +147,7 @@
bowman = /obj/item/device/radio/headset/headset_xenoarch/alt
double_headset = /obj/item/device/radio/headset/alt/double/xenoarch
wrist_radio = /obj/item/device/radio/headset/wrist/xenoarch
+ clipon_radio = /obj/item/device/radio/headset/wrist/clip/xenoarch
/datum/job/xenobiologist
title = "Xenobiologist"
@@ -236,6 +239,7 @@
bowman = /obj/item/device/radio/headset/headset_sci/alt
double_headset = /obj/item/device/radio/headset/alt/double/sci
wrist_radio = /obj/item/device/radio/headset/wrist/sci
+ clipon_radio = /obj/item/device/radio/headset/wrist/clip/sci
backpack = /obj/item/storage/backpack/toxins
backpack_faction = /obj/item/storage/backpack/nt
diff --git a/code/game/jobs/job/security.dm b/code/game/jobs/job/security.dm
index d35b0a289ee..bcc728da049 100644
--- a/code/game/jobs/job/security.dm
+++ b/code/game/jobs/job/security.dm
@@ -48,6 +48,7 @@
bowman = /obj/item/device/radio/headset/heads/hos/alt
double_headset = /obj/item/device/radio/headset/alt/double/hos
wrist_radio = /obj/item/device/radio/headset/wrist/hos
+ clipon_radio = /obj/item/device/radio/headset/wrist/clip/hos
tab_pda = /obj/item/modular_computer/handheld/pda/security/hos
wristbound = /obj/item/modular_computer/handheld/wristbound/preset/pda/security/hos
@@ -112,6 +113,7 @@
bowman = /obj/item/device/radio/headset/headset_warden/alt
double_headset = /obj/item/device/radio/headset/alt/double/sec/warden
wrist_radio = /obj/item/device/radio/headset/wrist/sec/warden
+ clipon_radio = /obj/item/device/radio/headset/wrist/clip/sec/warden
tab_pda = /obj/item/modular_computer/handheld/pda/security
wristbound = /obj/item/modular_computer/handheld/wristbound/preset/pda/security
@@ -169,6 +171,7 @@
bowman = /obj/item/device/radio/headset/headset_sec/alt
double_headset = /obj/item/device/radio/headset/alt/double/sec
wrist_radio = /obj/item/device/radio/headset/wrist/sec
+ clipon_radio = /obj/item/device/radio/headset/wrist/clip/sec
tab_pda = /obj/item/modular_computer/handheld/pda/security/detective
wristbound = /obj/item/modular_computer/handheld/wristbound/preset/pda/security/detective
@@ -223,6 +226,7 @@
bowman = /obj/item/device/radio/headset/headset_sec/alt
double_headset = /obj/item/device/radio/headset/alt/double/sec
wrist_radio = /obj/item/device/radio/headset/wrist/sec
+ clipon_radio = /obj/item/device/radio/headset/wrist/clip/sec
tab_pda = /obj/item/modular_computer/handheld/pda/security
wristbound = /obj/item/modular_computer/handheld/wristbound/preset/pda/security
@@ -290,6 +294,7 @@
bowman = /obj/item/device/radio/headset/headset_sec/alt
double_headset = /obj/item/device/radio/headset/alt/double/sec
wrist_radio = /obj/item/device/radio/headset/wrist/sec
+ clipon_radio = /obj/item/device/radio/headset/wrist/clip/sec
backpack = /obj/item/storage/backpack/security
satchel = /obj/item/storage/backpack/satchel/sec
diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index ccd4bb75dee..2c74361f240 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -1234,6 +1234,9 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out.
/obj/item/proc/get_head_examine_text(var/mob/user)
return "on [user.get_pronoun("his")] head"
+/obj/item/proc/get_wrist_examine_text(var/mob/user)
+ return "around [user.get_pronoun("his")] [gender==PLURAL?"wrists":"wrist"]"
+
/obj/item/proc/should_equip() // when you press E with an empty hand, will this item be pulled from suit storage / back slot and put into your hand
return FALSE
diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm
index a2452674162..9d6f869e903 100644
--- a/code/game/objects/items/devices/radio/headset.dm
+++ b/code/game/objects/items/devices/radio/headset.dm
@@ -213,7 +213,7 @@
item_state = "wristset"
slot_flags = SLOT_WRISTS
canhear_range = 1
- var/normal_layer = TRUE
+ var/mob_wear_layer = WRISTS_LAYER_OVER
EarSound = FALSE
/obj/item/device/radio/headset/wrist/verb/change_layer()
@@ -221,11 +221,59 @@
set name = "Change Wrist Layer"
set src in usr
- normal_layer = !normal_layer
- to_chat(usr, SPAN_NOTICE("\The [src] will now layer [normal_layer ? "over" : "under"] your outerwear."))
- if (ismob(src.loc))
- var/mob/M = src.loc
- M.update_inv_wrists()
+ if(mob_wear_layer == WRISTS_LAYER_OVER)
+ mob_wear_layer = WRISTS_LAYER_UNIFORM
+ else
+ mob_wear_layer = WRISTS_LAYER_OVER
+ to_chat(usr, SPAN_NOTICE("\The [src] will now layer [mob_wear_layer == WRISTS_LAYER_OVER ? "over" : "under"] your outerwear."))
+ if (ishuman(src.loc))
+ var/mob/living/carbon/human/H = src.loc
+ if(H.wrists == src)
+ H.update_inv_wrists()
+ else if(H.l_ear == src)
+ H.update_inv_l_ear()
+ else if(H.r_ear == src)
+ H.update_inv_r_ear()
+
+
+/obj/item/device/radio/headset/wrist/clip
+ name = "clip-on radio"
+ desc = "A radio designed to clip onto your clothes. Often known for broadcasting loudly enough that those closeby might overhear it."
+ desc_info = "This radio can be heard by people standing next to the one wearing it."
+ icon = 'icons/obj/item/tools/radio/clip.dmi'
+ icon_state = "clip"
+ item_state = "clip"
+ slot_flags = SLOT_WRISTS | SLOT_EARS
+ contained_sprite = TRUE
+
+/obj/item/device/radio/headset/wrist/clip/verb/flip_radio()
+ set category = "Object"
+ set name = "Flip Radio"
+ set src in usr
+
+ if(item_state == initial(item_state))
+ item_state = "[initial(item_state)]_r"
+ else
+ item_state = initial(item_state)
+ to_chat(usr, SPAN_NOTICE("\The [src] will now be worn on your [(item_state == initial(item_state)) ? "left" : "right"] side."))
+ if (ishuman(src.loc))
+ var/mob/living/carbon/human/H = src.loc
+ if(H.wrists == src)
+ H.update_inv_wrists()
+ else if(H.l_ear == src)
+ H.update_inv_l_ear()
+ else if(H.r_ear == src)
+ H.update_inv_r_ear()
+
+/obj/item/device/radio/headset/wrist/clip/get_wrist_examine_text(mob/living/carbon/human/user)
+ if(!istype(user))
+ return ..()
+ return "clipped to [user.get_pronoun("his")] [(mob_wear_layer == WRISTS_LAYER_OVER) && user.wear_suit ? user.wear_suit.name : user.w_uniform ? user.w_uniform.name : "chest"]"
+
+/obj/item/device/radio/headset/wrist/clip/get_ear_examine_text(mob/living/carbon/human/user)
+ if(!istype(user))
+ return ..()
+ return "clipped to [user.get_pronoun("his")] [user.wear_suit ? user.wear_suit.name : user.w_uniform ? user.w_uniform.name : "chest"]"
/*
* Civillian
@@ -254,6 +302,12 @@
item_state = "wristset_srv"
ks2type = /obj/item/device/encryptionkey/headset_service
+/obj/item/device/radio/headset/wrist/clip/service
+ name = "clip-on service radio"
+ icon_state = "clip_srv"
+ item_state = "clip_srv"
+ ks2type = /obj/item/device/encryptionkey/headset_service
+
/obj/item/device/radio/headset/heads/xo
name = "executive officer's headset"
desc = "The headset of the guy who will one day be captain."
@@ -277,6 +331,12 @@
item_state = "wristset_HoP"
ks2type = /obj/item/device/encryptionkey/heads/xo
+/obj/item/device/radio/headset/wrist/clip/xo
+ name = "executive officer's clip-on radio"
+ icon_state = "clip_HoP"
+ item_state = "clip_HoP"
+ ks2type = /obj/item/device/encryptionkey/heads/xo
+
/*
* Engineering
*/
@@ -304,6 +364,12 @@
item_state = "wristset_eng"
ks2type = /obj/item/device/encryptionkey/headset_eng
+/obj/item/device/radio/headset/wrist/clip/eng
+ name = "clip-on engineering radio"
+ icon_state = "clip_eng"
+ item_state = "clip_eng"
+ ks2type = /obj/item/device/encryptionkey/headset_eng
+
/obj/item/device/radio/headset/heads/ce
name = "chief engineer's headset"
desc = "The headset of the guy who is in charge of morons."
@@ -327,6 +393,11 @@
item_state = "wristset_CE"
ks2type = /obj/item/device/encryptionkey/heads/ce
+/obj/item/device/radio/headset/wrist/clip/ce
+ name = "chief engineer's clip-on radio"
+ icon_state = "clip_CE"
+ item_state = "clip_CE"
+ ks2type = /obj/item/device/encryptionkey/heads/ce
/*
* Cargo
@@ -355,6 +426,11 @@
item_state = "wristset_cargo"
ks2type = /obj/item/device/encryptionkey/headset_cargo
+/obj/item/device/radio/headset/wrist/clip/cargo
+ name = "clip-on cargo radio"
+ icon_state = "clip_cargo"
+ item_state = "clip_cargo"
+ ks2type = /obj/item/device/encryptionkey/headset_cargo
/obj/item/device/radio/headset/headset_mining
name = "mining radio headset"
@@ -378,6 +454,11 @@
icon_state = "wristset_mine"
item_state = "wristset_mine"
+/obj/item/device/radio/headset/wrist/clip/cargo/mining
+ name = "clip-on mining radio"
+ icon_state = "clip_mine"
+ item_state = "clip_mine"
+
/obj/item/device/radio/headset/operations_manager
name = "operations manager's headset"
desc = "A headset used by the head honcho of paper pushing."
@@ -401,6 +482,12 @@
item_state = "wristset_QM"
ks2type = /obj/item/device/encryptionkey/headset_operations_manager
+/obj/item/device/radio/headset/wrist/clip/cargo/operations_manager
+ name = "clip-on operations manager radio"
+ icon_state = "clip_QM"
+ item_state = "clip_QM"
+ ks2type = /obj/item/device/encryptionkey/headset_operations_manager
+
/*
* Medical
*/
@@ -428,6 +515,12 @@
item_state = "wristset_med"
ks2type = /obj/item/device/encryptionkey/headset_med
+/obj/item/device/radio/headset/wrist/clip/med
+ name = "clip-on medical radio"
+ icon_state = "clip_med"
+ item_state = "clip_med"
+ ks2type = /obj/item/device/encryptionkey/headset_med
+
/obj/item/device/radio/headset/heads/cmo
name = "chief medical officer's headset"
desc = "The headset of the highly trained medical chief."
@@ -451,6 +544,12 @@
item_state = "wristset_CMO"
ks2type = /obj/item/device/encryptionkey/heads/cmo
+/obj/item/device/radio/headset/wrist/clip/cmo
+ name = "chief medical officer's clip-on radio"
+ icon_state = "clip_CMO"
+ item_state = "clip_CMO"
+ ks2type = /obj/item/device/encryptionkey/heads/cmo
+
/*
* Science
*/
@@ -477,6 +576,12 @@
item_state = "wristset_sci"
ks2type = /obj/item/device/encryptionkey/headset_sci
+/obj/item/device/radio/headset/wrist/clip/sci
+ name = "clip-on science radio"
+ icon_state = "clip_sci"
+ item_state = "clip_sci"
+ ks2type = /obj/item/device/encryptionkey/headset_sci
+
/obj/item/device/radio/headset/headset_xenoarch
name = "xenoarchaeology radio headset"
desc = "A sciency headset for Xenoarchaeologists."
@@ -499,6 +604,12 @@
item_state = "wristset_sci"
ks2type = /obj/item/device/encryptionkey/headset_xenoarch
+/obj/item/device/radio/headset/wrist/clip/xenoarch
+ name = "clip-on xenoarchaeology radio"
+ icon_state = "clip_sci"
+ item_state = "clip_sci"
+ ks2type = /obj/item/device/encryptionkey/headset_xenoarch
+
/obj/item/device/radio/headset/headset_rob
name = "robotics radio headset"
desc = "Made specifically for the roboticists who cannot decide between departments."
@@ -528,6 +639,12 @@
item_state = "wristset_RD"
ks2type = /obj/item/device/encryptionkey/heads/rd
+/obj/item/device/radio/headset/wrist/clip/rd
+ name = "research director's clip-on radio"
+ icon_state = "clip_RD"
+ item_state = "clip_RD"
+ ks2type = /obj/item/device/encryptionkey/heads/rd
+
/*
* Security
*/
@@ -555,6 +672,12 @@
item_state = "wristset_sec"
ks2type = /obj/item/device/encryptionkey/headset_sec
+/obj/item/device/radio/headset/wrist/sec
+ name = "clip-on security radio"
+ icon_state = "clip_sec"
+ item_state = "clip_sec"
+ ks2type = /obj/item/device/encryptionkey/headset_sec
+
/obj/item/device/radio/headset/headset_warden
name = "warden radio headset"
desc = "This is used by your all-powerful overseer."
@@ -574,6 +697,10 @@
name = "wristbound warden radio"
ks2type = /obj/item/device/encryptionkey/headset_warden
+/obj/item/device/radio/headset/wrist/clip/sec/warden
+ name = "clip-on warden radio"
+ ks2type = /obj/item/device/encryptionkey/headset_warden
+
/obj/item/device/radio/headset/headset_penal
name = "penal radio headset"
desc = "A headset used by people who have chosen or been chosen to work the fields."
@@ -603,6 +730,12 @@
item_state = "wristset_HoS"
ks2type = /obj/item/device/encryptionkey/heads/hos
+/obj/item/device/radio/headset/wrist/clip/hos
+ name = "head of security's clip-on radio"
+ icon_state = "clip_HoS"
+ item_state = "clip_HoS"
+ ks2type = /obj/item/device/encryptionkey/heads/hos
+
/*
* Captain
*/
@@ -630,6 +763,12 @@
item_state = "wristset_com"
ks2type = /obj/item/device/encryptionkey/headset_com
+/obj/item/device/radio/headset/wrist/clip/command
+ name = "clip-on command radio"
+ icon_state = "clip_com"
+ item_state = "clip_com"
+ ks2type = /obj/item/device/encryptionkey/headset_com
+
/obj/item/device/radio/headset/heads/captain
name = "captain's headset"
desc = "The headset of the boss."
@@ -653,6 +792,12 @@
item_state = "wristset_cap"
ks2type = /obj/item/device/encryptionkey/heads/captain
+/obj/item/device/radio/headset/wrist/clip/captain
+ name = "captain's clip-on radio"
+ icon_state = "clip_cap"
+ item_state = "clip_cap"
+ ks2type = /obj/item/device/encryptionkey/heads/captain
+
/*
* Misc
*/
diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index e3f231d8a62..c586cf0af9f 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -495,7 +495,7 @@ var/list/preferences_datums = list()
character.pda_choice = pda_choice
- if(headset_choice > OUTFIT_THIN_WRISTRAD || headset_choice < OUTFIT_NOTHING)
+ if(headset_choice > OUTFIT_CLIPON || headset_choice < OUTFIT_NOTHING)
headset_choice = OUTFIT_HEADSET
character.headset_choice = headset_choice
diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm
index 91c7ec2af92..a35909ec3e4 100644
--- a/code/modules/mob/living/carbon/human/examine.dm
+++ b/code/modules/mob/living/carbon/human/examine.dm
@@ -200,7 +200,7 @@
//wrists
if(wrists && !skipwrists)
- msg += "[get_pronoun("He")] [get_pronoun("is")] wearing [icon2html(wrists, user)] \a [wrists] on [get_pronoun("his")] [wrists.gender==PLURAL?"wrists":"wrist"].\n"
+ msg += "[get_pronoun("He")] [get_pronoun("is")] wearing [icon2html(wrists, user)] \a [wrists] [wrists.get_wrist_examine_text(src)].\n"
//Jitters
if(is_jittery)
diff --git a/html/changelogs/clipon_radios.yml b/html/changelogs/clipon_radios.yml
new file mode 100644
index 00000000000..6d63da00ddd
--- /dev/null
+++ b/html/changelogs/clipon_radios.yml
@@ -0,0 +1,7 @@
+author: Sparky_hotdog
+
+delete-after: True
+
+changes:
+ - rscadd: "Added clip-on radios, available in the radio selection. They can be equipped in either ear slot or the wrist slot."
+ - bugfix: "Fixed an issue causing wrist radios to not display on mob."
diff --git a/icons/obj/item/tools/radio/clip.dmi b/icons/obj/item/tools/radio/clip.dmi
new file mode 100644
index 00000000000..b0ee36352f0
Binary files /dev/null and b/icons/obj/item/tools/radio/clip.dmi differ