diff --git a/code/_helpers/global_lists.dm b/code/_helpers/global_lists.dm
index 72bed469c9..80abfae652 100644
--- a/code/_helpers/global_lists.dm
+++ b/code/_helpers/global_lists.dm
@@ -52,8 +52,9 @@ GLOBAL_LIST_INIT(custom_species_bases, new) // Species that can be used for a Cu
//Underwear
var/datum/category_collection/underwear/global_underwear = new()
- //Backpacks
-var/global/list/backbaglist = list("Nothing", "Backpack", "Satchel", "Satchel Alt", "Messenger Bag", "Sports Bag", "Strapless Satchel") //VOREStation edit
+ //Customizables
+GLOBAL_LIST_INIT(headsetlist, list("Standard","Bowman","Earbud"))
+var/global/list/backbaglist = list("Nothing", "Backpack", "Satchel", "Satchel Alt", "Messenger Bag", "Sports Bag", "Strapless Satchel")
var/global/list/pdachoicelist = list("Default", "Slim", "Old", "Rugged", "Holographic", "Wrist-Bound","Slider", "Vintage")
var/global/list/exclude_jobs = list(/datum/job/ai,/datum/job/cyborg)
diff --git a/code/datums/outfits/jobs/cargo.dm b/code/datums/outfits/jobs/cargo.dm
index 30955983df..bed1308f39 100644
--- a/code/datums/outfits/jobs/cargo.dm
+++ b/code/datums/outfits/jobs/cargo.dm
@@ -1,17 +1,23 @@
/decl/hierarchy/outfit/job/cargo
- l_ear = /obj/item/radio/headset/headset_cargo
hierarchy_type = /decl/hierarchy/outfit/job/cargo
+ headset = /obj/item/radio/headset/cargo
+ headset_alt = /obj/item/radio/headset/alt/cargo
+ headset_earbud = /obj/item/radio/headset/earbud/cargo
+
/decl/hierarchy/outfit/job/cargo/qm
name = OUTFIT_JOB_NAME("Cargo")
uniform = /obj/item/clothing/under/rank/cargo
- l_ear = /obj/item/radio/headset/headset_qm //VOREStation Add
shoes = /obj/item/clothing/shoes/brown
glasses = /obj/item/clothing/glasses/sunglasses
l_hand = /obj/item/clipboard
id_type = /obj/item/card/id/cargo/head
pda_type = /obj/item/pda/quartermaster
+ headset = /obj/item/radio/headset/qm
+ headset_alt = /obj/item/radio/headset/alt/qm
+ headset_earbud = /obj/item/radio/headset/earbud/qm
+
/decl/hierarchy/outfit/job/cargo/cargo_tech
name = OUTFIT_JOB_NAME("Cargo technician")
uniform = /obj/item/clothing/under/rank/cargotech
@@ -21,10 +27,13 @@
/decl/hierarchy/outfit/job/cargo/mining
name = OUTFIT_JOB_NAME("Shaft miner")
uniform = /obj/item/clothing/under/rank/miner
- l_ear = /obj/item/radio/headset/headset_mine
backpack = /obj/item/storage/backpack/industrial
satchel_one = /obj/item/storage/backpack/satchel/eng
id_type = /obj/item/card/id/cargo/miner
pda_type = /obj/item/pda/shaftminer
backpack_contents = list(/obj/item/tool/crowbar = 1, /obj/item/storage/bag/ore = 1)
flags = OUTFIT_HAS_BACKPACK|OUTFIT_EXTENDED_SURVIVAL
+
+ headset = /obj/item/radio/headset/miner
+ headset_alt = /obj/item/radio/headset/miner
+ headset_earbud = /obj/item/radio/headset/miner
diff --git a/code/datums/outfits/jobs/civilian.dm b/code/datums/outfits/jobs/civilian.dm
index a62600a6ee..829e6f9c64 100644
--- a/code/datums/outfits/jobs/civilian.dm
+++ b/code/datums/outfits/jobs/civilian.dm
@@ -19,9 +19,12 @@
uniform = /obj/item/clothing/under/color/white
/decl/hierarchy/outfit/job/service
- l_ear = /obj/item/radio/headset/headset_service
hierarchy_type = /decl/hierarchy/outfit/job/service
+ headset = /obj/item/radio/headset/service
+ headset_alt = /obj/item/radio/headset/alt/service
+ headset_earbud = /obj/item/radio/headset/earbud/service
+
/decl/hierarchy/outfit/job/service/bartender
name = OUTFIT_JOB_NAME(JOB_BARTENDER)
uniform = /obj/item/clothing/under/rank/bartender
@@ -91,7 +94,6 @@
/decl/hierarchy/outfit/job/internal_affairs_agent
name = OUTFIT_JOB_NAME("Internal affairs agent")
- l_ear = /obj/item/radio/headset/ia
uniform = /obj/item/clothing/under/rank/internalaffairs
suit = /obj/item/clothing/suit/storage/toggle/internalaffairs
shoes = /obj/item/clothing/shoes/brown
@@ -100,6 +102,10 @@
id_type = /obj/item/card/id/civilian/internal_affairs
pda_type = /obj/item/pda/lawyer
+ headset = /obj/item/radio/headset/ia
+ headset_alt = /obj/item/radio/headset/alt/ia
+ headset_earbud = /obj/item/radio/headset/earbud/ia
+
/decl/hierarchy/outfit/job/chaplain
name = OUTFIT_JOB_NAME(JOB_CHAPLAIN)
uniform = /obj/item/clothing/under/rank/chaplain
@@ -114,10 +120,13 @@
mask = /obj/item/clothing/mask/gas/explorer
suit = /obj/item/clothing/suit/storage/hooded/explorer
gloves = /obj/item/clothing/gloves/black
- l_ear = /obj/item/radio/headset
id_slot = slot_wear_id
id_type = /obj/item/card/id/exploration //VOREStation Edit
pda_slot = slot_belt
pda_type = /obj/item/pda/cargo // Brown looks more rugged
r_pocket = /obj/item/gps/explorer
id_pda_assignment = JOB_EXPLORER
+
+ headset = /obj/item/radio/headset
+ headset_alt = /obj/item/radio/headset/alt
+ headset_earbud = /obj/item/radio/headset/earbud
diff --git a/code/datums/outfits/jobs/command.dm b/code/datums/outfits/jobs/command.dm
index 149020e4fe..e5a869d9dd 100644
--- a/code/datums/outfits/jobs/command.dm
+++ b/code/datums/outfits/jobs/command.dm
@@ -2,7 +2,7 @@
name = OUTFIT_JOB_NAME(JOB_ALT_CAPTAIN) // Keep Captain for now, not JOB_SITE_MANAGER
glasses = /obj/item/clothing/glasses/sunglasses
uniform = /obj/item/clothing/under/rank/captain
- l_ear = /obj/item/radio/headset/heads/captain
+
shoes = /obj/item/clothing/shoes/brown
backpack = /obj/item/storage/backpack/captain
satchel_one = /obj/item/storage/backpack/satchel/cap
@@ -10,6 +10,10 @@
id_type = /obj/item/card/id/gold
pda_type = /obj/item/pda/captain
+ headset = /obj/item/radio/headset/heads/captain
+ headset_alt = /obj/item/radio/headset/alt/heads/captain
+ headset_earbud = /obj/item/radio/headset/earbud/heads/captain
+
/decl/hierarchy/outfit/job/captain/post_equip(var/mob/living/carbon/human/H)
..()
if(H.age>49)
@@ -26,19 +30,25 @@
/decl/hierarchy/outfit/job/hop
name = OUTFIT_JOB_NAME(JOB_HEAD_OF_PERSONNEL)
uniform = /obj/item/clothing/under/rank/head_of_personnel
- l_ear = /obj/item/radio/headset/heads/hop
shoes = /obj/item/clothing/shoes/brown
id_type = /obj/item/card/id/silver/hop
pda_type = /obj/item/pda/heads/hop
+ headset = /obj/item/radio/headset/heads/hop
+ headset_alt = /obj/item/radio/headset/alt/heads/hop
+ headset_earbud = /obj/item/radio/headset/earbud/heads/hop
+
/decl/hierarchy/outfit/job/secretary
name = OUTFIT_JOB_NAME(JOB_COMMAND_SECRETARY)
- l_ear = /obj/item/radio/headset/headset_com
shoes = /obj/item/clothing/shoes/brown
id_type = /obj/item/card/id/silver/secretary
pda_type = /obj/item/pda/heads
r_hand = /obj/item/clipboard
+ headset = /obj/item/radio/headset/headset_com
+ headset_alt = /obj/item/radio/headset/alt/headset_com
+ headset_earbud = /obj/item/radio/headset/earbud/headset_com
+
/decl/hierarchy/outfit/job/secretary/pre_equip(mob/living/carbon/human/H)
..()
if(H.gender == FEMALE)
diff --git a/code/datums/outfits/jobs/engineering.dm b/code/datums/outfits/jobs/engineering.dm
index 16de1539c3..11c4a4cd3c 100644
--- a/code/datums/outfits/jobs/engineering.dm
+++ b/code/datums/outfits/jobs/engineering.dm
@@ -1,7 +1,6 @@
/decl/hierarchy/outfit/job/engineering
hierarchy_type = /decl/hierarchy/outfit/job/engineering
belt = /obj/item/storage/belt/utility/full/multitool
- l_ear = /obj/item/radio/headset/headset_eng
shoes = /obj/item/clothing/shoes/boots/workboots
r_pocket = /obj/item/t_scanner
backpack = /obj/item/storage/backpack/industrial
@@ -10,15 +9,23 @@
pda_slot = slot_l_store
flags = OUTFIT_HAS_BACKPACK|OUTFIT_EXTENDED_SURVIVAL
+ headset = /obj/item/radio/headset/headset_eng
+ headset_alt = /obj/item/radio/headset/alt/headset_eng
+ headset_earbud = /obj/item/radio/headset/earbud/headset_eng
+
/decl/hierarchy/outfit/job/engineering/chief_engineer
name = OUTFIT_JOB_NAME(JOB_CHIEF_ENGINEER)
head = /obj/item/clothing/head/hardhat/white
uniform = /obj/item/clothing/under/rank/chief_engineer
- l_ear = /obj/item/radio/headset/heads/ce
+
gloves = /obj/item/clothing/gloves/black
id_type = /obj/item/card/id/engineering/head
pda_type = /obj/item/pda/heads/ce
+ headset = /obj/item/radio/headset/heads/ce
+ headset_alt = /obj/item/radio/headset/alt/heads/ce
+ headset_earbud = /obj/item/radio/headset/earbud/heads/ce
+
/decl/hierarchy/outfit/job/engineering/engineer
name = OUTFIT_JOB_NAME(JOB_ENGINEER)
head = /obj/item/clothing/head/hardhat
diff --git a/code/datums/outfits/jobs/job.dm b/code/datums/outfits/jobs/job.dm
index adfa938bf3..fdb7af5dbe 100644
--- a/code/datums/outfits/jobs/job.dm
+++ b/code/datums/outfits/jobs/job.dm
@@ -3,7 +3,6 @@
hierarchy_type = /decl/hierarchy/outfit/job
uniform = /obj/item/clothing/under/color/grey
- l_ear = /obj/item/radio/headset
shoes = /obj/item/clothing/shoes/black
id_slot = slot_wear_id
@@ -13,6 +12,10 @@
flags = OUTFIT_HAS_BACKPACK
+ headset = /obj/item/radio/headset
+ headset_alt = /obj/item/radio/headset/alt
+ headset_earbud = /obj/item/radio/headset/earbud
+
/decl/hierarchy/outfit/job/equip_id(mob/living/carbon/human/H, rank, assignment)
var/obj/item/card/id/C = ..()
var/datum/job/J = job_master.GetJob(rank)
diff --git a/code/datums/outfits/jobs/medical.dm b/code/datums/outfits/jobs/medical.dm
index a78636ea63..6a4d120d37 100644
--- a/code/datums/outfits/jobs/medical.dm
+++ b/code/datums/outfits/jobs/medical.dm
@@ -1,16 +1,19 @@
/decl/hierarchy/outfit/job/medical
hierarchy_type = /decl/hierarchy/outfit/job/medical
- l_ear = /obj/item/radio/headset/headset_med
shoes = /obj/item/clothing/shoes/white
pda_type = /obj/item/pda/medical
pda_slot = slot_l_store
+
backpack = /obj/item/storage/backpack/medic
satchel_one = /obj/item/storage/backpack/satchel/med
messenger_bag = /obj/item/storage/backpack/messenger/med
+ headset = /obj/item/radio/headset/headset_med
+ headset_alt = /obj/item/radio/headset/alt/headset_med
+ headset_earbud = /obj/item/radio/headset/earbud/headset_med
+
/decl/hierarchy/outfit/job/medical/cmo
name = OUTFIT_JOB_NAME(JOB_CHIEF_MEDICAL_OFFICER)
- l_ear =/obj/item/radio/headset/heads/cmo
uniform = /obj/item/clothing/under/rank/chief_medical_officer
suit = /obj/item/clothing/suit/storage/toggle/labcoat/cmo
shoes = /obj/item/clothing/shoes/brown
@@ -19,6 +22,10 @@
id_type = /obj/item/card/id/medical/head
pda_type = /obj/item/pda/heads/cmo
+ headset = /obj/item/radio/headset/heads/cmo
+ headset_alt = /obj/item/radio/headset/alt/heads/cmo
+ headset_earbud = /obj/item/radio/headset/earbud/heads/cmo
+
/decl/hierarchy/outfit/job/medical/doctor
name = OUTFIT_JOB_NAME(JOB_MEDICAL_DOCTOR)
uniform = /obj/item/clothing/under/rank/medical
diff --git a/code/datums/outfits/jobs/science.dm b/code/datums/outfits/jobs/science.dm
index a9fe8a4437..eeeb84951d 100644
--- a/code/datums/outfits/jobs/science.dm
+++ b/code/datums/outfits/jobs/science.dm
@@ -1,23 +1,30 @@
/decl/hierarchy/outfit/job/science
hierarchy_type = /decl/hierarchy/outfit/job/science
- l_ear = /obj/item/radio/headset/headset_sci
suit = /obj/item/clothing/suit/storage/toggle/labcoat
shoes = /obj/item/clothing/shoes/white
pda_type = /obj/item/pda/science
+
backpack = /obj/item/storage/backpack/toxins
satchel_one = /obj/item/storage/backpack/satchel/tox
messenger_bag = /obj/item/storage/backpack/messenger/tox
sports_bag = /obj/item/storage/backpack/sport/tox
+ headset = /obj/item/radio/headset/headset_sci
+ headset_alt = /obj/item/radio/headset/alt/headset_sci
+ headset_earbud = /obj/item/radio/headset/earbud/headset_sci
+
/decl/hierarchy/outfit/job/science/rd
name = OUTFIT_JOB_NAME("Research Director")
- l_ear = /obj/item/radio/headset/heads/rd
uniform = /obj/item/clothing/under/rank/research_director
shoes = /obj/item/clothing/shoes/brown
l_hand = /obj/item/clipboard
id_type = /obj/item/card/id/science/head
pda_type = /obj/item/pda/heads/rd
+ headset = /obj/item/radio/headset/heads/rd
+ headset_alt = /obj/item/radio/headset/alt/heads/rd
+ headset_earbud = /obj/item/radio/headset/earbud/heads/rd
+
/decl/hierarchy/outfit/job/science/scientist
name = OUTFIT_JOB_NAME(JOB_SCIENTIST)
uniform = /obj/item/clothing/under/rank/scientist
diff --git a/code/datums/outfits/jobs/security.dm b/code/datums/outfits/jobs/security.dm
index e73b45e06b..595601bbcd 100644
--- a/code/datums/outfits/jobs/security.dm
+++ b/code/datums/outfits/jobs/security.dm
@@ -1,22 +1,29 @@
/decl/hierarchy/outfit/job/security
hierarchy_type = /decl/hierarchy/outfit/job/security
glasses = /obj/item/clothing/glasses/sunglasses/sechud
- l_ear = /obj/item/radio/headset/headset_sec
gloves = /obj/item/clothing/gloves/black
shoes = /obj/item/clothing/shoes/boots/jackboots
+
backpack = /obj/item/storage/backpack/security
satchel_one = /obj/item/storage/backpack/satchel/sec
backpack_contents = list(/obj/item/handcuffs = 1)
messenger_bag = /obj/item/storage/backpack/messenger/sec
sports_bag = /obj/item/storage/backpack/sport/sec
+ headset = /obj/item/radio/headset/headset_sec
+ headset_alt = /obj/item/radio/headset/alt/headset_sec
+ headset_earbud = /obj/item/radio/headset/earbud/headset_sec
+
/decl/hierarchy/outfit/job/security/hos
name = OUTFIT_JOB_NAME(JOB_HEAD_OF_SECURITY)
- l_ear = /obj/item/radio/headset/heads/hos
uniform = /obj/item/clothing/under/rank/head_of_security
id_type = /obj/item/card/id/security/head
pda_type = /obj/item/pda/heads/hos
+ headset = /obj/item/radio/headset/heads/hos
+ headset_alt = /obj/item/radio/headset/alt/heads/hos
+ headset_earbud = /obj/item/radio/headset/earbud/heads/hos
+
/decl/hierarchy/outfit/job/security/warden
name = OUTFIT_JOB_NAME(JOB_WARDEN)
uniform = /obj/item/clothing/under/rank/warden
diff --git a/code/datums/outfits/outfit.dm b/code/datums/outfits/outfit.dm
index ed8e81f992..43fe69f0f2 100644
--- a/code/datums/outfits/outfit.dm
+++ b/code/datums/outfits/outfit.dm
@@ -52,6 +52,10 @@ var/list/outfits_decls_by_type_
var/id_pda_assignment
+ var/headset = /obj/item/radio/headset
+ var/headset_alt = /obj/item/radio/headset/alt
+ var/headset_earbud = /obj/item/radio/headset/earbud
+
var/backpack = /obj/item/storage/backpack
var/satchel_one = /obj/item/storage/backpack/satchel/norm
var/satchel_two = /obj/item/storage/backpack/satchel
@@ -72,7 +76,11 @@ var/list/outfits_decls_by_type_
dd_insertObjectList(outfits_decls_, src)
/decl/hierarchy/outfit/proc/pre_equip(mob/living/carbon/human/H)
- if(flags & OUTFIT_HAS_BACKPACK)
+ switch(H.headset)
+ if(1) l_ear = headset
+ if(2) l_ear = headset_alt
+ if(3) l_ear = headset_earbud
+ if(flags && OUTFIT_HAS_BACKPACK)
switch(H.backbag)
if(2) back = backpack
if(3) back = satchel_one
diff --git a/code/datums/outfits/outfit_vr.dm b/code/datums/outfits/outfit_vr.dm
index 97281f1a56..537f13d834 100644
--- a/code/datums/outfits/outfit_vr.dm
+++ b/code/datums/outfits/outfit_vr.dm
@@ -112,7 +112,6 @@ Keep outfits simple. Spawn with basic uniforms and minimal gear. Gear instead go
name = OUTFIT_JOB_NAME(JOB_EXPLORER)
shoes = /obj/item/clothing/shoes/boots/winter/explorer
uniform = /obj/item/clothing/under/explorer
- l_ear = /obj/item/radio/headset/explorer
id_slot = slot_wear_id
pda_slot = slot_l_store
pda_type = /obj/item/pda/explorer
@@ -123,6 +122,10 @@ Keep outfits simple. Spawn with basic uniforms and minimal gear. Gear instead go
messenger_bag = /obj/item/storage/backpack/messenger/explorer
flags = OUTFIT_HAS_BACKPACK|OUTFIT_COMPREHENSIVE_SURVIVAL
+ headset = /obj/item/radio/headset/explorer
+ headset_alt = /obj/item/radio/headset/alt/explorer
+ headset_earbud = /obj/item/radio/headset/explorer
+
/decl/hierarchy/outfit/job/pilot
name = OUTFIT_JOB_NAME(JOB_PILOT)
shoes = /obj/item/clothing/shoes/black
@@ -130,7 +133,6 @@ Keep outfits simple. Spawn with basic uniforms and minimal gear. Gear instead go
suit = /obj/item/clothing/suit/storage/toggle/bomber/pilot
gloves = /obj/item/clothing/gloves/fingerless
glasses = /obj/item/clothing/glasses/fakesunglasses/aviator
- l_ear = /obj/item/radio/headset/pilot/alt
uniform_accessories = list(/obj/item/clothing/accessory/storage/webbing/pilot1 = 1)
id_slot = slot_wear_id
pda_slot = slot_belt
@@ -139,12 +141,15 @@ Keep outfits simple. Spawn with basic uniforms and minimal gear. Gear instead go
id_pda_assignment = JOB_PILOT
flags = OUTFIT_HAS_BACKPACK|OUTFIT_COMPREHENSIVE_SURVIVAL
+ headset = /obj/item/radio/headset/pilot
+ headset_alt = /obj/item/radio/headset/alt/pilot
+ headset_earbud = /obj/item/radio/headset/alt/pilot
+
/decl/hierarchy/outfit/job/medical/sar
name = OUTFIT_JOB_NAME(JOB_FIELD_MEDIC)
uniform = /obj/item/clothing/under/utility/blue
//suit = /obj/item/clothing/suit/storage/hooded/wintercoat/medical/sar
shoes = /obj/item/clothing/shoes/boots/winter/explorer
- l_ear = /obj/item/radio/headset/sar
l_hand = /obj/item/storage/firstaid/regular
belt = /obj/item/storage/belt/medical/emt
pda_slot = slot_l_store
@@ -156,11 +161,14 @@ Keep outfits simple. Spawn with basic uniforms and minimal gear. Gear instead go
messenger_bag = /obj/item/storage/backpack/messenger/explorer
flags = OUTFIT_HAS_BACKPACK|OUTFIT_EXTENDED_SURVIVAL|OUTFIT_COMPREHENSIVE_SURVIVAL
+ headset = /obj/item/radio/headset/sar
+ headset_alt = /obj/item/radio/headset/alt/sar
+ headset_earbud = /obj/item/radio/headset/sar
+
/decl/hierarchy/outfit/job/pathfinder
name = OUTFIT_JOB_NAME(JOB_PATHFINDER)
shoes = /obj/item/clothing/shoes/boots/winter/explorer
uniform = /obj/item/clothing/under/explorer //TODO: Uniforms.
- l_ear = /obj/item/radio/headset/pathfinder
id_slot = slot_wear_id
pda_slot = slot_l_store
pda_type = /obj/item/pda/pathfinder
@@ -168,6 +176,10 @@ Keep outfits simple. Spawn with basic uniforms and minimal gear. Gear instead go
id_pda_assignment = JOB_PATHFINDER
flags = OUTFIT_HAS_BACKPACK|OUTFIT_EXTENDED_SURVIVAL|OUTFIT_COMPREHENSIVE_SURVIVAL
+ headset = /obj/item/radio/headset/pathfinder
+ headset_alt = /obj/item/radio/headset/alt/pathfinder
+ headset_earbud = /obj/item/radio/headset/pathfinder
+
/decl/hierarchy/outfit/job/assistant/explorer
id_type = /obj/item/card/id/exploration
flags = OUTFIT_HAS_BACKPACK|OUTFIT_COMPREHENSIVE_SURVIVAL
diff --git a/code/datums/supplypacks/medical.dm b/code/datums/supplypacks/medical.dm
index 0c099b3231..2e498c92f1 100644
--- a/code/datums/supplypacks/medical.dm
+++ b/code/datums/supplypacks/medical.dm
@@ -112,7 +112,7 @@
contains = list(
/obj/item/storage/belt/medical = 3,
/obj/item/clothing/glasses/hud/health = 3,
- /obj/item/radio/headset/headset_med/alt = 3,
+ /obj/item/radio/headset/alt/headset_med = 3,
/obj/item/clothing/suit/storage/hooded/wintercoat/medical = 3
)
cost = 10
diff --git a/code/datums/supplypacks/security.dm b/code/datums/supplypacks/security.dm
index 1404b06e42..1f2cf06f89 100644
--- a/code/datums/supplypacks/security.dm
+++ b/code/datums/supplypacks/security.dm
@@ -444,7 +444,7 @@
contains = list(
/obj/item/storage/belt/security = 3,
/obj/item/clothing/glasses/sunglasses/sechud = 3,
- /obj/item/radio/headset/headset_sec/alt = 3,
+ /obj/item/radio/headset/alt/headset_sec = 3,
/obj/item/clothing/suit/storage/hooded/wintercoat/security = 3,
/obj/item/clothing/glasses/sunglasses/sechud/tactical_sec_vis = 3
)
diff --git a/code/datums/supplypacks/supply.dm b/code/datums/supplypacks/supply.dm
index 96610a68c5..b8bcd3f7ba 100644
--- a/code/datums/supplypacks/supply.dm
+++ b/code/datums/supplypacks/supply.dm
@@ -118,7 +118,7 @@
/obj/item/storage/backpack/industrial,
/obj/item/storage/backpack/satchel/eng,
/obj/item/clothing/suit/storage/hooded/wintercoat/miner,
- /obj/item/radio/headset/headset_cargo,
+ /obj/item/radio/headset/miner,
/obj/item/clothing/under/rank/miner,
/obj/item/clothing/gloves/black,
/obj/item/clothing/shoes/black,
@@ -187,7 +187,7 @@
contains = list (
/obj/item/storage/backpack/parachute,
/obj/item/radio/headset/pilot,
- /obj/item/radio/headset/pilot/alt,
+ /obj/item/radio/headset/alt/pilot,
/obj/item/clothing/mask/gas/half,
/obj/item/flashlight/glowstick,
/obj/item/stack/marker_beacon/thirty,
diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm
index f6af18a4aa..24728cee21 100644
--- a/code/game/objects/items/devices/radio/headset.dm
+++ b/code/game/objects/items/devices/radio/headset.dm
@@ -8,7 +8,8 @@
subspace_transmission = 1
canhear_range = 0 // can't hear headsets from very far away
slot_flags = SLOT_EARS
- sprite_sheets = list(SPECIES_TESHARI = 'icons/inventory/ears/mob_teshari.dmi')
+ sprite_sheets = list(SPECIES_TESHARI = 'icons/inventory/ears/mob_teshari.dmi',
+ SPECIES_WEREBEAST = 'icons/inventory/ears/mob_vr_werebeast.dmi')
var/translate_binary = 0
var/translate_hive = 0
@@ -83,254 +84,6 @@
/obj/item/radio/headset/tgui_state(mob/user)
return GLOB.tgui_inventory_state
-/obj/item/radio/headset/syndicate
- origin_tech = list(TECH_ILLEGAL = 3)
- syndie = 1
- ks1type = /obj/item/encryptionkey/syndicate
-
-/obj/item/radio/headset/syndicate/alt
- icon_state = "syndie_headset"
- item_state = "headset"
- origin_tech = list(TECH_ILLEGAL = 3)
- syndie = 1
- ks1type = /obj/item/encryptionkey/syndicate
-
-/obj/item/radio/headset/raider
- origin_tech = list(TECH_ILLEGAL = 2)
- syndie = 1
- ks1type = /obj/item/encryptionkey/raider
-
-/obj/item/radio/headset/raider/Initialize()
- . = ..()
- set_frequency(RAID_FREQ)
-
-/obj/item/radio/headset/binary
- origin_tech = list(TECH_ILLEGAL = 3)
- ks1type = /obj/item/encryptionkey/binary
-
-/obj/item/radio/headset/headset_sec
- name = "security radio headset"
- desc = "This is used by your elite security force."
- icon_state = "sec_headset"
- ks2type = /obj/item/encryptionkey/headset_sec
-
-/obj/item/radio/headset/headset_sec/alt
- name = "security bowman headset"
- desc = "This is used by your elite security force."
- icon_state = "sec_headset_alt"
- ks2type = /obj/item/encryptionkey/headset_sec
-
-/obj/item/radio/headset/headset_eng
- name = "engineering radio headset"
- desc = "When the engineers wish to chat like girls."
- icon_state = "eng_headset"
- ks2type = /obj/item/encryptionkey/headset_eng
-
-/obj/item/radio/headset/headset_eng/alt
- name = "engineering bowman headset"
- desc = "When the engineers wish to chat like girls."
- icon_state = "eng_headset_alt"
- ks2type = /obj/item/encryptionkey/headset_eng
-
-/obj/item/radio/headset/headset_rob
- name = "robotics radio headset"
- desc = "Made specifically for the roboticists who cannot decide between departments."
- icon_state = "rob_headset"
- ks2type = /obj/item/encryptionkey/headset_rob
-
-/obj/item/radio/headset/headset_med
- name = "medical radio headset"
- desc = "A headset for the trained staff of the medbay."
- icon_state = "med_headset"
- ks2type = /obj/item/encryptionkey/headset_med
-
-/obj/item/radio/headset/headset_med/alt
- name = "medical bowman headset"
- desc = "A headset for the trained staff of the medbay."
- icon_state = "med_headset_alt"
- ks2type = /obj/item/encryptionkey/headset_med
-
-/obj/item/radio/headset/headset_sci
- name = "science radio headset"
- desc = "A sciency headset. Like usual."
- icon_state = "com_headset"
- ks2type = /obj/item/encryptionkey/headset_sci
-
-/obj/item/radio/headset/headset_medsci
- name = "medical research radio headset"
- desc = "A headset that is a result of the mating between medical and science."
- icon_state = "med_headset"
- ks2type = /obj/item/encryptionkey/headset_medsci
-
-/obj/item/radio/headset/headset_com
- name = "command radio headset"
- desc = "A headset with a commanding channel."
- icon_state = "com_headset"
- ks2type = /obj/item/encryptionkey/headset_com
-
-/obj/item/radio/headset/headset_com/alt
- name = "command bowman headset"
- desc = "A headset with a commanding channel."
- icon_state = "com_headset_alt"
- ks2type = /obj/item/encryptionkey/headset_com
-
-
-/obj/item/radio/headset/heads/captain
- name = "site manager's headset"
- desc = "The headset of the boss."
- icon_state = "com_headset"
- ks2type = /obj/item/encryptionkey/heads/captain
-
-/obj/item/radio/headset/heads/captain/alt
- name = "site manager's bowman headset"
- desc = "The headset of the boss."
- icon_state = "com_headset_alt"
- ks2type = /obj/item/encryptionkey/heads/captain
-
-/obj/item/radio/headset/heads/captain/sfr
- name = "SFR headset"
- desc = "A headset belonging to a Sif Free Radio DJ. SFR, best tunes in the wilderness."
- icon_state = "com_headset_alt"
- ks2type = /obj/item/encryptionkey/heads/captain
-
-/obj/item/radio/headset/heads/ai_integrated //No need to care about icons, it should be hidden inside the AI anyway.
- name = "\improper AI subspace transceiver"
- desc = "Integrated AI radio transceiver."
- icon = 'icons/obj/robot_component.dmi'
- icon_state = "radio"
- item_state = "headset"
- ks2type = /obj/item/encryptionkey/heads/ai_integrated
- var/myAi = null // Atlantis: Reference back to the AI which has this radio.
- var/disabledAi = 0 // Atlantis: Used to manually disable AI's integrated radio via intellicard menu.
-
-/obj/item/radio/headset/heads/ai_integrated/receive_range(freq, level)
- if (disabledAi)
- return -1 //Transciever Disabled.
- return ..(freq, level, 1)
-
-/obj/item/radio/headset/heads/rd
- name = "research director's headset"
- desc = "Headset of the eccentric-in-chief."
- icon_state = "com_headset"
- ks2type = /obj/item/encryptionkey/heads/rd
-
-/obj/item/radio/headset/heads/rd/alt
- name = "research director's bowman headset"
- desc = "Headset of the eccentric-in-chief."
- icon_state = "com_headset_alt"
- ks2type = /obj/item/encryptionkey/heads/rd
-
-/obj/item/radio/headset/heads/hos
- name = "head of security's headset"
- desc = "The headset of the hardass who protects your worthless lives."
- icon_state = "com_headset"
- ks2type = /obj/item/encryptionkey/heads/hos
-
-/obj/item/radio/headset/heads/hos/alt
- name = "head of security's bowman headset"
- desc = "The headset of the hardass who protects your worthless lives."
- icon_state = "com_headset_alt"
- ks2type = /obj/item/encryptionkey/heads/hos
-
-/obj/item/radio/headset/heads/ce
- name = "chief engineer's headset"
- desc = "The headset of the clown who is in charge of the circus."
- icon_state = "com_headset"
- ks2type = /obj/item/encryptionkey/heads/ce
-
-/obj/item/radio/headset/heads/ce/alt
- name = "chief engineer's bowman headset"
- desc = "The headset of the clown who is in charge of the circus."
- icon_state = "com_headset_alt"
- ks2type = /obj/item/encryptionkey/heads/ce
-
-/obj/item/radio/headset/heads/cmo
- name = "chief medical officer's headset"
- desc = "The headset of the highly trained medical chief."
- icon_state = "com_headset"
- ks2type = /obj/item/encryptionkey/heads/cmo
-
-/obj/item/radio/headset/heads/cmo/alt
- name = "chief medical officer's bowman headset"
- desc = "The headset of the highly trained medical chief."
- icon_state = "com_headset_alt"
- ks2type = /obj/item/encryptionkey/heads/cmo
-
-/obj/item/radio/headset/heads/hop
- name = "head of personnel's headset"
- desc = "The headset of the poor fool who will one day be " + JOB_SITE_MANAGER + "."
- icon_state = "com_headset"
- ks2type = /obj/item/encryptionkey/heads/hop
-
-/obj/item/radio/headset/heads/hop/alt
- name = "head of personnel's bowman headset"
- desc = "The headset of the poor fool who will one day be " + JOB_SITE_MANAGER + "."
- icon_state = "com_headset_alt"
- ks2type = /obj/item/encryptionkey/heads/hop
-
-/obj/item/radio/headset/headset_mine
- name = "mining radio headset"
- desc = "Headset used by miners. Has inbuilt short-band radio for when comms are down."
- icon_state = "mine_headset"
- adhoc_fallback = TRUE
- ks2type = /obj/item/encryptionkey/headset_cargo
-
-/obj/item/radio/headset/headset_cargo
- name = "supply radio headset"
- desc = "A headset used by the QM and their cronies."
- icon_state = "cargo_headset"
- ks2type = /obj/item/encryptionkey/headset_cargo
-
-/obj/item/radio/headset/headset_cargo/alt
- name = "supply bowman headset"
- desc = "A bowman headset used by the QM and their cronies."
- icon_state = "cargo_headset_alt"
- ks2type = /obj/item/encryptionkey/headset_cargo
-
-/obj/item/radio/headset/headset_service
- name = "service radio headset"
- desc = "Headset used by the service staff, tasked with keeping the station full, happy and clean."
- icon_state = "srv_headset"
- ks2type = /obj/item/encryptionkey/headset_service
-
-/obj/item/radio/headset/ert
- name = "emergency response team radio headset"
- desc = "The headset of the boss's boss."
- icon_state = "com_headset"
- centComm = 1
-// freerange = 1
- ks2type = /obj/item/encryptionkey/ert
-
-/obj/item/radio/headset/ert/alt
- name = "emergency response team bowman headset"
- desc = "The headset of the boss's boss."
- icon_state = "com_headset_alt"
-// freerange = 1
- ks2type = /obj/item/encryptionkey/ert
-
-/obj/item/radio/headset/omni //Only for the admin intercoms
- ks2type = /obj/item/encryptionkey/omni
-
-/obj/item/radio/headset/ia
- name = "internal affair's headset"
- desc = "The headset of your worst enemy."
- icon_state = "com_headset"
- ks2type = /obj/item/encryptionkey/heads/hos
-
-/obj/item/radio/headset/mmi_radio
- name = "brain-integrated radio"
- desc = "MMIs and synthetic brains are often equipped with these."
- icon = 'icons/obj/robot_component.dmi'
- icon_state = "radio"
- item_state = "headset"
- var/mmiowner = null
- var/radio_enabled = 1
-
-/obj/item/radio/headset/mmi_radio/receive_range(freq, level)
- if (!radio_enabled || istype(src.loc.loc, /mob/living/silicon) || istype(src.loc.loc, /obj/item/organ/internal))
- return -1 //Transciever Disabled.
- return ..(freq, level, 1)
-
/obj/item/radio/headset/attackby(obj/item/W as obj, mob/user as mob)
// ..()
user.set_machine(src)
@@ -361,15 +114,15 @@
keyslot2 = null
recalculateChannels()
- to_chat(user, "You pop out the encryption keys in the headset!")
+ to_chat(user, span_notice("You pop out the encryption keys in the headset!"))
playsound(src, W.usesound, 50, 1)
else
- to_chat(user, "This headset doesn't have any encryption keys! How useless...")
+ to_chat(user, span_notice("This headset doesn't have any encryption keys! How useless..."))
if(istype(W, /obj/item/encryptionkey/))
if(keyslot1 && keyslot2)
- to_chat(user, "The headset can't hold another key!")
+ to_chat(user, span_notice("The headset can't hold another key!"))
return
if(!keyslot1)
@@ -387,7 +140,6 @@
return
-
/obj/item/radio/headset/recalculateChannels(var/setDescription = 0)
src.channels = list()
src.translate_binary = 0
@@ -451,3 +203,432 @@
radio_text += ", "
radio_desc = radio_text
+
+/obj/item/radio/headset/mob_headset/receive_range(freq, level)
+ if(ismob(src.loc))
+ return ..(freq, level, 1)
+ return -1
+
+/obj/item/radio/headset/mob_headset/afterattack(var/atom/movable/target, mob/living/user, proximity)
+ if(!proximity)
+ return
+ if(istype(target,/mob/living/simple_mob))
+ var/mob/living/simple_mob/M = target
+ if(!M.mob_radio)
+ user.drop_item()
+ forceMove(M)
+ M.mob_radio = src
+ return
+ if(M.mob_radio)
+ M.mob_radio.forceMove(M.loc)
+ M.mob_radio = null
+ return
+ ..()
+
+/obj/item/radio/headset/alt
+ name = "bowman radio headset"
+ desc = "A larger, sturdier radio headset. A bit bulky, but guaranteed to stay on no matter what."
+ icon_state = "headset_alt"
+
+/obj/item/radio/headset/earbud
+ name = "radio earbud"
+ desc = "A discreet radio earbud and low-profile mic. Simple and unobtrusive."
+ icon_state = "headset_earbud"
+
+/obj/item/radio/headset/headset_sec
+ name = "security radio headset"
+ icon_state = "sec_headset"
+ ks2type = /obj/item/encryptionkey/headset_sec
+
+/obj/item/radio/headset/alt/headset_sec
+ name = "security bowman headset"
+ icon_state = "sec_headset_alt"
+ ks2type = /obj/item/encryptionkey/headset_sec
+
+/obj/item/radio/headset/earbud/headset_sec
+ name = "security earbud"
+ icon_state = "sec_earbud"
+ ks2type = /obj/item/encryptionkey/headset_sec
+
+/obj/item/radio/headset/headset_eng
+ name = "engineering radio headset"
+ icon_state = "eng_headset"
+ ks2type = /obj/item/encryptionkey/headset_eng
+
+/obj/item/radio/headset/alt/headset_eng
+ name = "engineering bowman headset"
+ icon_state = "eng_headset_alt"
+ ks2type = /obj/item/encryptionkey/headset_eng
+
+/obj/item/radio/headset/earbud/headset_eng
+ name = "engineering earbud"
+ icon_state = "eng_earbud"
+ ks2type = /obj/item/encryptionkey/headset_eng
+
+/obj/item/radio/headset/headset_med
+ name = "medical radio headset"
+ icon_state = "med_headset"
+ ks2type = /obj/item/encryptionkey/headset_med
+
+/obj/item/radio/headset/alt/headset_med
+ name = "medical bowman headset"
+ icon_state = "med_headset_alt"
+ ks2type = /obj/item/encryptionkey/headset_med
+
+/obj/item/radio/headset/earbud/headset_med
+ name = "medical earbud"
+ icon_state = "med_earbud"
+ ks2type = /obj/item/encryptionkey/headset_med
+
+/obj/item/radio/headset/headset_sci
+ name = "science radio headset"
+ icon_state = "com_headset"
+ ks2type = /obj/item/encryptionkey/headset_sci
+
+/obj/item/radio/headset/alt/headset_sci
+ name = "science bowman headset"
+ icon_state = "com_headset_alt"
+ ks2type = /obj/item/encryptionkey/headset_sci
+
+/obj/item/radio/headset/earbud/headset_sci
+ name = "science earbud"
+ icon_state = "com_earbud"
+ ks2type = /obj/item/encryptionkey/headset_sci
+
+/obj/item/radio/headset/headset_com
+ name = "command radio headset"
+ icon_state = "com_headset"
+ ks2type = /obj/item/encryptionkey/headset_com
+
+/obj/item/radio/headset/alt/headset_com
+ name = "command bowman headset"
+ icon_state = "com_headset_alt"
+ ks2type = /obj/item/encryptionkey/headset_com
+
+/obj/item/radio/headset/earbud/headset_com
+ name = "command earbud"
+ icon_state = "com_earbud"
+ ks2type = /obj/item/encryptionkey/headset_com
+
+/obj/item/radio/headset/heads/captain
+ name = "site manager's headset"
+ icon_state = "com_headset"
+ ks2type = /obj/item/encryptionkey/heads/captain
+
+/obj/item/radio/headset/heads/captain/sfr
+ name = "SFR headset"
+ desc = "A headset belonging to a Sif Free Radio DJ. SFR, best tunes in the wilderness."
+ icon_state = "com_headset_alt"
+
+/obj/item/radio/headset/alt/heads/captain
+ name = "site manager's bowman headset"
+ icon_state = "com_headset_alt"
+ ks2type = /obj/item/encryptionkey/heads/captain
+
+/obj/item/radio/headset/earbud/heads/captain
+ name = "site manager's earbud"
+ icon_state = "com_earbud"
+ ks2type = /obj/item/encryptionkey/heads/captain
+
+/obj/item/radio/headset/heads/rd
+ name = "research director's headset"
+ icon_state = "com_headset"
+ ks2type = /obj/item/encryptionkey/heads/rd
+
+/obj/item/radio/headset/alt/heads/rd
+ name = "research director's bowman headset"
+ icon_state = "com_headset_alt"
+ ks2type = /obj/item/encryptionkey/heads/rd
+
+/obj/item/radio/headset/earbud/heads/rd
+ name = "research director's earbud"
+ icon_state = "com_earbud"
+ ks2type = /obj/item/encryptionkey/heads/rd
+
+/obj/item/radio/headset/heads/hos
+ name = "head of security's headset"
+ icon_state = "com_headset"
+ ks2type = /obj/item/encryptionkey/heads/hos
+
+/obj/item/radio/headset/alt/heads/hos
+ name = "head of security's bowman headset"
+ icon_state = "com_headset_alt"
+ ks2type = /obj/item/encryptionkey/heads/hos
+
+/obj/item/radio/headset/earbud/heads/hos
+ name = "head of security's earbud"
+ icon_state = "com_earbud"
+ ks2type = /obj/item/encryptionkey/heads/hos
+
+/obj/item/radio/headset/heads/ce
+ name = "chief engineer's headset"
+ icon_state = "com_headset"
+ ks2type = /obj/item/encryptionkey/heads/ce
+
+/obj/item/radio/headset/alt/heads/ce
+ name = "chief engineer's bowman headset"
+ icon_state = "com_headset_alt"
+ ks2type = /obj/item/encryptionkey/heads/ce
+
+/obj/item/radio/headset/earbud/heads/ce
+ name = "chief engineer's earbud"
+ icon_state = "com_earbud"
+ ks2type = /obj/item/encryptionkey/heads/ce
+
+/obj/item/radio/headset/heads/cmo
+ name = "chief medical officer's headset"
+ icon_state = "com_headset"
+ ks2type = /obj/item/encryptionkey/heads/cmo
+
+/obj/item/radio/headset/alt/heads/cmo
+ name = "chief medical officer's bowman headset"
+ icon_state = "com_headset_alt"
+ ks2type = /obj/item/encryptionkey/heads/cmo
+
+/obj/item/radio/headset/earbud/heads/cmo
+ name = "chief medical officer's earbud"
+ icon_state = "com_earbud"
+ ks2type = /obj/item/encryptionkey/heads/cmo
+
+/obj/item/radio/headset/heads/hop
+ name = "head of personnel's headset"
+ icon_state = "com_headset"
+ ks2type = /obj/item/encryptionkey/heads/hop
+
+/obj/item/radio/headset/alt/heads/hop
+ name = "head of personnel's bowman headset"
+ icon_state = "com_headset_alt"
+ ks2type = /obj/item/encryptionkey/heads/hop
+
+/obj/item/radio/headset/earbud/heads/hop
+ name = "head of personnel's earbud"
+ icon_state = "com_earbud"
+ ks2type = /obj/item/encryptionkey/heads/hop
+
+/obj/item/radio/headset/miner
+ name = "mining radio headset"
+ desc = "Headset used by miners. Has inbuilt short-band radio for when comms are down."
+ icon_state = "mine_headset"
+ adhoc_fallback = TRUE
+ ks2type = /obj/item/encryptionkey/headset_cargo
+
+/obj/item/radio/headset/cargo
+ name = "supply radio headset"
+ icon_state = "cargo_headset"
+ ks2type = /obj/item/encryptionkey/headset_cargo
+
+/obj/item/radio/headset/alt/cargo
+ name = "supply bowman headset"
+ icon_state = "cargo_headset_alt"
+ ks2type = /obj/item/encryptionkey/headset_cargo
+
+/obj/item/radio/headset/earbud/cargo
+ name = "supply earbud"
+ icon_state = "cargo_earbud"
+ ks2type = /obj/item/encryptionkey/headset_cargo
+
+/obj/item/radio/headset/qm
+ name = "qm radio headset"
+ icon_state = "cargo_headset"
+ ks2type = /obj/item/encryptionkey/qm
+
+/obj/item/radio/headset/alt/qm
+ name = "qm bowman headset"
+ icon_state = "cargo_headset_alt"
+ ks2type = /obj/item/encryptionkey/qm
+
+/obj/item/radio/headset/earbud/qm
+ name = "qm earbud"
+ icon_state = "cargo_earbud"
+ ks2type = /obj/item/encryptionkey/qm
+
+/obj/item/radio/headset/service
+ name = "service radio headset"
+ icon_state = "srv_headset"
+ ks2type = /obj/item/encryptionkey/headset_service
+
+/obj/item/radio/headset/alt/service
+ name = "service bowman headset"
+ icon_state = "srv_headset_alt"
+ ks2type = /obj/item/encryptionkey/headset_service
+
+/obj/item/radio/headset/earbud/service
+ name = "service earbud"
+ icon_state = "srv_earbud"
+ ks2type = /obj/item/encryptionkey/headset_service
+
+/obj/item/radio/headset/ert
+ name = "emergency response team radio headset"
+ icon_state = "com_headset"
+ centComm = 1
+ ks2type = /obj/item/encryptionkey/ert
+
+/obj/item/radio/headset/alt/ert
+ name = "emergency response team bowman headset"
+ icon_state = "com_headset_alt"
+ ks2type = /obj/item/encryptionkey/ert
+
+/obj/item/radio/headset/ia
+ name = "internal affairs headset"
+ icon_state = "com_headset"
+ ks2type = /obj/item/encryptionkey/heads/hos
+
+/obj/item/radio/headset/alt/ia
+ name = "internal affairs bowman headset"
+ icon_state = "com_headset_alt"
+ ks2type = /obj/item/encryptionkey/heads/hos
+
+/obj/item/radio/headset/earbud/ia
+ name = "internal affairs earbud"
+ icon_state = "com_earbud"
+ ks2type = /obj/item/encryptionkey/heads/hos
+
+/obj/item/radio/headset/centcom
+ name = "centcom radio headset"
+ icon_state = "cent_headset"
+ item_state = "headset"
+ centComm = 1
+ ks2type = /obj/item/encryptionkey/ert
+
+/obj/item/radio/headset/alt/centcom
+ name = "centcom bowman headset"
+ icon_state = "com_headset_alt"
+
+/obj/item/radio/headset/nanotrasen
+ name = "\improper NT radio headset"
+ icon_state = "nt_headset"
+ centComm = 1
+ ks2type = /obj/item/encryptionkey/ert
+
+/obj/item/radio/headset/alt/nanotrasen
+ name = "\improper NT bowman headset"
+ icon_state = "nt_headset_alt"
+
+/obj/item/radio/headset/pathfinder
+ name = "pathfinder's headset"
+ icon_state = "exp_headset"
+ adhoc_fallback = TRUE
+ ks2type = /obj/item/encryptionkey/pathfinder
+
+/obj/item/radio/headset/alt/pathfinder
+ name = "pathfinder's bowman headset"
+ icon_state = "exp_headset_alt"
+
+/obj/item/radio/headset/pilot
+ name = "pilot's headset"
+ icon_state = "pilot_headset"
+ adhoc_fallback = TRUE
+
+/obj/item/radio/headset/alt/pilot
+ name = "pilot's bowman headset"
+ icon_state = "pilot_headset_alt"
+
+/obj/item/radio/headset/explorer
+ name = "away team member's headset"
+ icon_state = "exp_headset"
+ adhoc_fallback = TRUE
+ ks2type = /obj/item/encryptionkey/explorer
+
+/obj/item/radio/headset/alt/explorer
+ name = "away team's bowman headset"
+ icon_state = "exp_headset_alt"
+
+/obj/item/radio/headset/sar
+ name = "search and rescue headset"
+ icon_state = "sar_headset"
+ adhoc_fallback = TRUE
+ ks2type = /obj/item/encryptionkey/sar
+
+/obj/item/radio/headset/alt/sar
+ name = "search and rescue bowman headset"
+ icon_state = "sar_headset_alt"
+ adhoc_fallback = TRUE
+ ks2type = /obj/item/encryptionkey/sar
+
+/obj/item/radio/headset/talon
+ name = "talon headset"
+ adhoc_fallback = TRUE
+ icon_state = "pilot_headset"
+ ks2type = /obj/item/encryptionkey/talon
+
+/obj/item/radio/headset/alt/talon
+ name = "talon bowman headset"
+ adhoc_fallback = TRUE
+ icon_state = "pilot_headset"
+ ks2type = /obj/item/encryptionkey/talon
+
+/obj/item/radio/headset/earbud/talon
+ name = "talon earbud"
+ adhoc_fallback = TRUE
+ icon_state = "pilot_headset"
+ ks2type = /obj/item/encryptionkey/talon
+
+/obj/item/radio/headset/headset_rob
+ name = "robotics radio headset"
+ icon_state = "rob_headset"
+ ks2type = /obj/item/encryptionkey/headset_rob
+
+// Special Antag/Admin/Event/Other headsets
+
+/obj/item/radio/headset/syndicate
+ origin_tech = list(TECH_ILLEGAL = 3)
+ syndie = 1
+ ks1type = /obj/item/encryptionkey/syndicate
+
+/obj/item/radio/headset/alt/syndicate
+ origin_tech = list(TECH_ILLEGAL = 3)
+ syndie = 1
+ ks1type = /obj/item/encryptionkey/syndicate
+
+/obj/item/radio/headset/earbud/syndicate
+ origin_tech = list(TECH_ILLEGAL = 3)
+ syndie = 1
+ ks1type = /obj/item/encryptionkey/syndicate
+
+/obj/item/radio/headset/raider
+ origin_tech = list(TECH_ILLEGAL = 2)
+ syndie = 1
+ ks1type = /obj/item/encryptionkey/raider
+
+/obj/item/radio/headset/raider/Initialize()
+ . = ..()
+ set_frequency(RAID_FREQ)
+
+/obj/item/radio/headset/binary
+ origin_tech = list(TECH_ILLEGAL = 3)
+ ks1type = /obj/item/encryptionkey/binary
+
+/obj/item/radio/headset/omni //Only for the admin intercoms
+ ks2type = /obj/item/encryptionkey/omni
+
+/obj/item/radio/headset/mmi_radio
+ name = "brain-integrated radio"
+ icon = 'icons/obj/robot_component.dmi'
+ icon_state = "radio"
+ item_state = "headset"
+ var/mmiowner = null
+ var/radio_enabled = 1
+
+/obj/item/radio/headset/mmi_radio/receive_range(freq, level)
+ if (!radio_enabled || istype(src.loc.loc, /mob/living/silicon) || istype(src.loc.loc, /obj/item/organ/internal))
+ return -1 //Transciever Disabled.
+ return ..(freq, level, 1)
+
+/obj/item/radio/headset/mob_headset //Adminbus headset for simplemob shenanigans.
+ name = "nonhuman radio receiver"
+ desc = "An updated, self-adhesive modular intercom that requires no hands to operate or ears to hold, just stick it on. Takes encryption keys"
+
+/obj/item/radio/headset/heads/ai_integrated //No need to care about icons, it should be hidden inside the AI anyway.
+ name = "\improper AI subspace transceiver"
+ desc = "Integrated AI radio transceiver."
+ icon = 'icons/obj/robot_component.dmi'
+ icon_state = "radio"
+ item_state = "headset"
+ ks2type = /obj/item/encryptionkey/heads/ai_integrated
+ var/myAi = null // Atlantis: Reference back to the AI which has this radio.
+ var/disabledAi = 0 // Atlantis: Used to manually disable AI's integrated radio via intellicard menu.
+
+/obj/item/radio/headset/heads/ai_integrated/receive_range(freq, level)
+ if (disabledAi)
+ return -1 //Transciever Disabled.
+ return ..(freq, level, 1)
\ No newline at end of file
diff --git a/code/game/objects/items/devices/radio/headset_vr.dm b/code/game/objects/items/devices/radio/headset_vr.dm
deleted file mode 100644
index bad15ccd48..0000000000
--- a/code/game/objects/items/devices/radio/headset_vr.dm
+++ /dev/null
@@ -1,131 +0,0 @@
-/obj/item/radio/headset/centcom
- name = "centcom radio headset"
- desc = "The headset of the boss's boss."
- icon_state = "cent_headset"
- item_state = "headset"
- centComm = 1
- ks2type = /obj/item/encryptionkey/ert
-
-/obj/item/radio/headset/centcom/alt
- name = "centcom bowman headset"
- icon_state = "com_headset_alt"
-
-/obj/item/radio/headset/nanotrasen
- name = "\improper NT radio headset"
- desc = "The headset of a Nanotrasen corporate employee."
- icon_state = "nt_headset"
- centComm = 1
- ks2type = /obj/item/encryptionkey/ert
-
-/obj/item/radio/headset/nanotrasen/alt
- name = "\improper NT bowman headset"
- icon_state = "nt_headset_alt"
-
-/obj/item/radio/headset
- sprite_sheets = list(SPECIES_TESHARI = 'icons/inventory/ears/mob_teshari.dmi',
- SPECIES_WEREBEAST = 'icons/inventory/ears/mob_vr_werebeast.dmi')
-
-/obj/item/radio/headset/mob_headset //Adminbus headset for simplemob shenanigans.
- name = "nonhuman radio receiver"
- desc = "An updated, self-adhesive modular intercom that requires no hands to operate or ears to hold, just stick it on. Takes encryption keys"
-
-/obj/item/radio/headset/mob_headset/receive_range(freq, level)
- if(ismob(src.loc))
- return ..(freq, level, 1)
- return -1
-
-/obj/item/radio/headset/mob_headset/afterattack(var/atom/movable/target, mob/living/user, proximity)
- if(!proximity)
- return
- if(istype(target,/mob/living/simple_mob))
- var/mob/living/simple_mob/M = target
- if(!M.mob_radio)
- user.drop_item()
- forceMove(M)
- M.mob_radio = src
- return
- if(M.mob_radio)
- M.mob_radio.forceMove(M.loc)
- M.mob_radio = null
- return
- ..()
-
-/obj/item/radio/headset/headset_cargo
- desc = "A headset used by the QM's slaves."
-
-/obj/item/radio/headset/headset_cargo/alt
- desc = "A bowman headset used by the QM's slaves."
-
-/obj/item/radio/headset/headset_qm
- name = "qm radio headset"
- desc = "A headset used by the QM."
- icon_state = "cargo_headset"
- ks2type = /obj/item/encryptionkey/qm
-
-/obj/item/radio/headset/headset_qm/alt
- name = "qm bowman headset"
- desc = "A bowman headset used by the QM."
- icon_state = "cargo_headset_alt"
-
-/obj/item/radio/headset/pathfinder
- name = "pathfinder's headset"
- desc = "Headset used by pathfinders for exploring. Access to the explorer and command channels."
- icon_state = "exp_headset"
- adhoc_fallback = TRUE
- ks2type = /obj/item/encryptionkey/pathfinder
-
-/obj/item/radio/headset/pathfinder/alt
- name = "pathfinder's bowman headset"
- desc = "Bowman headset used by pathfinders for exploring. Access to the explorer and command channels."
- icon_state = "exp_headset_alt"
-
-/obj/item/radio/headset/pilot
- name = "pilot's headset"
- desc = "A headset used by pilots."
- icon_state = "pilot_headset"
- adhoc_fallback = TRUE
-
-/obj/item/radio/headset/pilot/alt
- name = "pilot's bowman headset"
- desc = "A bowman headset used by pilots."
- icon_state = "pilot_headset_alt"
-
-/obj/item/radio/headset/explorer
- name = "away team member's headset"
- desc = "Headset used by the away team for exploring. Access to the away team channel."
- icon_state = "exp_headset"
- adhoc_fallback = TRUE
- ks2type = /obj/item/encryptionkey/explorer
-
-/obj/item/radio/headset/explorer/alt
- name = "away team's bowman headset"
- desc = "Bowman headset used by the away team for exploring. Access to the away team channel."
- icon_state = "exp_headset_alt"
-
-/obj/item/radio/headset/sar
- name = "fm radio headset"
- desc = "A headset for field medics."
- icon_state = "sar_headset"
- adhoc_fallback = TRUE
- ks2type = /obj/item/encryptionkey/sar
-
-/obj/item/radio/headset/sar/alt
- name = "fm radio bowman headset"
- desc = "A bowman headset for field medics."
- icon_state = "sar_headset_alt"
-
-/* //They're all volunteers now.
-/obj/item/radio/headset/volunteer
- name = "volunteer's headset"
- desc = "A headset used by volunteers to expedition teams, has access to the Away Team channel."
- icon_state = "pilot_headset"
- adhoc_fallback = TRUE
- ks2type = /obj/item/encryptionkey/explorer
-*/
-
-/obj/item/radio/headset/talon
- name = "talon headset"
- desc = "A headset for communication between the crew of the ITV Talon."
- adhoc_fallback = TRUE
- icon_state = "pilot_headset"
- ks2type = /obj/item/encryptionkey/talon
diff --git a/code/game/objects/random/mapping.dm b/code/game/objects/random/mapping.dm
index 3496fe8bb0..aa2a1bb880 100644
--- a/code/game/objects/random/mapping.dm
+++ b/code/game/objects/random/mapping.dm
@@ -223,8 +223,8 @@
/obj/random/sfr/item_to_spawn()
return pick(prob(25);/obj/item/radio/headset/heads/captain/sfr,
- prob(25);/obj/item/radio/headset/headset_cargo/alt,
- prob(25);/obj/item/radio/headset/headset_com/alt,
+ prob(25);/obj/item/radio/headset/alt/cargo,
+ prob(25);/obj/item/radio/headset/alt/headset_com,
prob(25);/obj/item/radio/headset)
// Mining Goodies
diff --git a/code/game/objects/structures/crates_lockers/closets/job_closets.dm b/code/game/objects/structures/crates_lockers/closets/job_closets.dm
index aa09e9fc5b..cb8732ecba 100644
--- a/code/game/objects/structures/crates_lockers/closets/job_closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets/job_closets.dm
@@ -23,7 +23,9 @@
starts_with = list(
/obj/item/clothing/head/that = 2,
- /obj/item/radio/headset/headset_service = 2,
+ /obj/item/radio/headset/service = 2,
+ /obj/item/radio/headset/alt/service = 2,
+ /obj/item/radio/headset/earbud/service = 2,
/obj/item/clothing/head/pin/flower,
/obj/item/clothing/head/pin/flower/pink,
/obj/item/clothing/head/pin/flower/yellow,
@@ -51,7 +53,9 @@
starts_with = list(
/obj/item/clothing/under/sundress,
/obj/item/clothing/under/waiter = 2,
- /obj/item/radio/headset/headset_service = 2,
+ /obj/item/radio/headset/service = 2,
+ /obj/item/radio/headset/alt/service = 2,
+ /obj/item/radio/headset/earbud/service = 2,
/obj/item/storage/box/mousetraps = 2,
/obj/item/clothing/under/rank/chef,
/obj/item/clothing/head/chefhat,
@@ -69,7 +73,9 @@
starts_with = list(
/obj/item/clothing/under/rank/janitor,
/obj/item/clothing/under/dress/maid/janitor,
- /obj/item/radio/headset/headset_service,
+ /obj/item/radio/headset/service,
+ /obj/item/radio/headset/alt/service,
+ /obj/item/radio/headset/earbud/service,
/obj/item/cartridge/janitor,
/obj/item/clothing/suit/storage/hooded/wintercoat/janitor,
/obj/item/clothing/gloves/black,
diff --git a/code/game/objects/structures/crates_lockers/closets/misc_vr.dm b/code/game/objects/structures/crates_lockers/closets/misc_vr.dm
index 225f3c463e..f001c78f45 100644
--- a/code/game/objects/structures/crates_lockers/closets/misc_vr.dm
+++ b/code/game/objects/structures/crates_lockers/closets/misc_vr.dm
@@ -63,7 +63,7 @@
/obj/item/clothing/shoes/boots/winter/explorer,
/obj/item/clothing/gloves/black,
/obj/item/radio/headset/explorer,
- /obj/item/radio/headset/explorer/alt,
+ /obj/item/radio/headset/alt/explorer,
/obj/item/cartridge/explorer,
/obj/item/flashlight,
/obj/item/gps/explorer,
@@ -104,7 +104,7 @@
/obj/item/clothing/shoes/boots/winter/explorer,
/obj/item/clothing/gloves/black,
/obj/item/radio/headset/pathfinder,
- /obj/item/radio/headset/pathfinder/alt,
+ /obj/item/radio/headset/alt/pathfinder,
/obj/item/cartridge/explorer,
/obj/item/flashlight,
/obj/item/gps/explorer,
@@ -153,7 +153,7 @@
/obj/item/clothing/suit/storage/hooded/wintercoat/medical/sar,
/obj/item/clothing/shoes/boots/winter/explorer,
/obj/item/radio/headset/sar,
- /obj/item/radio/headset/sar/alt,
+ /obj/item/radio/headset/alt/sar,
/obj/item/cartridge/sar,
/obj/item/flashlight,
/obj/item/tank/emergency/oxygen/engi,
@@ -201,7 +201,7 @@
/obj/item/clothing/shoes/black,
/obj/item/clothing/gloves/fingerless,
/obj/item/radio/headset/pilot,
- /obj/item/radio/headset/pilot/alt,
+ /obj/item/radio/headset/alt/pilot,
/obj/item/flashlight,
/obj/item/reagent_containers/food/snacks/liquidfood,
/obj/item/reagent_containers/food/snacks/liquidprotein,
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm b/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm
index 34810bfe42..9ede8e655c 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm
@@ -11,8 +11,9 @@
/obj/item/clothing/suit/storage/hooded/wintercoat/cargo,
/obj/item/clothing/shoes/boots/winter/supply,
/obj/item/clothing/shoes/black,
- /obj/item/radio/headset/headset_cargo,
- /obj/item/radio/headset/headset_cargo/alt,
+ /obj/item/radio/headset/cargo,
+ /obj/item/radio/headset/alt/cargo,
+ /obj/item/radio/headset/earbud/cargo,
/obj/item/clothing/gloves/black,
/obj/item/clothing/gloves/fingerless,
/obj/item/clothing/head/soft)
@@ -37,8 +38,9 @@
/obj/item/clothing/under/rank/cargo/jeans,
/obj/item/clothing/under/rank/cargo/jeans/female,
/obj/item/clothing/shoes/brown,
- /obj/item/radio/headset/headset_qm, //VOREStation Edit,
- /obj/item/radio/headset/headset_qm/alt, //VOREStation Edit,
+ /obj/item/radio/headset/qm,
+ /obj/item/radio/headset/alt/qm,
+ /obj/item/radio/headset/earbud/qm,
/obj/item/clothing/under/rank/neo_qm,
/obj/item/clothing/under/rank/neo_qm_skirt,
/obj/item/clothing/under/rank/neo_qm_jacket,
@@ -73,7 +75,7 @@
closet_appearance = /decl/closet_appearance/secure_closet/mining
starts_with = list(
- /obj/item/radio/headset/headset_mine,
+ /obj/item/radio/headset/miner,
/obj/item/clothing/under/rank/miner,
/obj/item/clothing/gloves/black,
/obj/item/clothing/shoes/black,
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm
index 7186779efe..78018e247e 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm
@@ -20,7 +20,8 @@
/obj/item/clothing/shoes/brown,
/obj/item/cartridge/ce,
/obj/item/radio/headset/heads/ce,
- /obj/item/radio/headset/heads/ce/alt,
+ /obj/item/radio/headset/alt/heads/ce,
+ /obj/item/radio/headset/earbud/heads/ce,
/obj/item/storage/toolbox/mechanical,
/obj/item/clothing/suit/storage/hazardvest,
///obj/item/clothing/mask/gas, //VOREStation Removal: Locker bloat, grr. The fancy one below functions as a mask & helmet combined.
@@ -92,7 +93,8 @@
/obj/item/clothing/accessory/storage/brown_vest,
/obj/item/storage/toolbox/mechanical,
/obj/item/radio/headset/headset_eng,
- /obj/item/radio/headset/headset_eng/alt,
+ /obj/item/radio/headset/alt/headset_eng,
+ /obj/item/radio/headset/earbud/headset_eng,
/obj/item/clothing/suit/storage/hazardvest,
/obj/item/clothing/mask/gas,
/obj/item/clothing/glasses/meson,
@@ -129,7 +131,8 @@
/obj/item/extinguisher/atmo,
///obj/item/clamp, //VOREStation Removal: without leaks those are pointless,
/obj/item/radio/headset/headset_eng,
- /obj/item/radio/headset/headset_eng/alt,
+ /obj/item/radio/headset/alt/headset_eng,
+ /obj/item/radio/headset/earbud/headset_eng,
/obj/item/clothing/suit/storage/hazardvest/atmos, //VOREStation edit. Eng locker gets regular haz-vest, atmos gets the themed one of their own
/obj/item/clothing/mask/gas,
/obj/item/cartridge/atmos,
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/hydroponics.dm b/code/game/objects/structures/crates_lockers/closets/secure/hydroponics.dm
index e5fc9ce56e..5e4389f0ef 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/hydroponics.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/hydroponics.dm
@@ -8,7 +8,9 @@
/obj/item/clothing/under/rank/hydroponics,
/obj/item/clothing/gloves/botanic_leather,
/obj/item/analyzer/plant_analyzer,
- /obj/item/radio/headset/headset_service,
+ /obj/item/radio/headset/service,
+ /obj/item/radio/headset/alt/service,
+ /obj/item/radio/headset/earbud/service,
/obj/item/clothing/head/greenbandana,
/obj/item/shovel/spade,
/obj/item/material/minihoe,
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm
index a747bf9e3e..231b17b610 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm
@@ -39,7 +39,8 @@
/obj/item/clothing/shoes/white,
/obj/item/cartridge/medical,
/obj/item/radio/headset/headset_med,
- /obj/item/radio/headset/headset_med/alt,
+ /obj/item/radio/headset/alt/headset_med,
+ /obj/item/radio/headset/earbud/headset_med,
/obj/item/clothing/suit/storage/hooded/wintercoat/medical,
/obj/item/clothing/suit/storage/hooded/wintercoat/medical/alt,
/obj/item/clothing/shoes/boots/winter/medical,
@@ -108,7 +109,9 @@
/obj/item/clothing/suit/storage/toggle/labcoat/emt,
/obj/item/clothing/suit/storage/hooded/wintercoat/medical/para,
/obj/item/clothing/shoes/boots/winter/medical,
- /obj/item/radio/headset/headset_med/alt,
+ /obj/item/radio/headset/headset_med,
+ /obj/item/radio/headset/alt/headset_med,
+ /obj/item/radio/headset/earbud/headset_med,
/obj/item/cartridge/medical,
/obj/item/storage/briefcase/inflatable,
/obj/item/flashlight,
@@ -143,7 +146,8 @@
/obj/item/clothing/under/rank/neo_cmo_turtle_skirt,
/obj/item/clothing/under/rank/neo_cmo_gorka,
/obj/item/radio/headset/heads/cmo,
- /obj/item/radio/headset/heads/cmo/alt,
+ /obj/item/radio/headset/alt/heads/cmo,
+ /obj/item/radio/headset/earbud/heads/cmo,
/obj/item/flash,
/obj/item/reagent_containers/hypospray/vial,
/obj/item/clothing/suit/storage/hooded/wintercoat/medical,
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm b/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm
index 5b5d4c42f2..f33d9ba9ae 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm
@@ -45,7 +45,8 @@
/obj/item/clothing/shoes/laceup/brown,
/obj/item/clothing/gloves/sterile/latex,
/obj/item/radio/headset/heads/rd,
- /obj/item/radio/headset/heads/rd/alt,
+ /obj/item/radio/headset/alt/heads/rd,
+ /obj/item/radio/headset/earbud/heads/rd,
/obj/item/tank/air,
/obj/item/clothing/mask/gas,
/obj/item/flash,
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm
index 80d3bb90eb..90661f4dd4 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm
@@ -10,7 +10,8 @@
/obj/item/cartridge/captain,
/obj/item/storage/lockbox/medal,
/obj/item/radio/headset/heads/captain,
- /obj/item/radio/headset/heads/captain/alt,
+ /obj/item/radio/headset/alt/heads/captain,
+ /obj/item/radio/headset/earbud/heads/captain,
/obj/item/gun/energy/gun,
/obj/item/melee/telebaton,
/obj/item/flash,
@@ -27,7 +28,8 @@
/obj/item/clothing/head/helmet,
/obj/item/cartridge/hop,
/obj/item/radio/headset/heads/hop,
- /obj/item/radio/headset/heads/hop/alt,
+ /obj/item/radio/headset/alt/heads/hop,
+ /obj/item/radio/headset/earbud/heads/hop,
/obj/item/storage/box/ids = 2,
/obj/item/gun/energy/gun/compact,
/obj/item/storage/box/commandkeys,
@@ -90,7 +92,8 @@
/obj/item/clothing/head/helmet/dermal,
/obj/item/cartridge/hos,
/obj/item/radio/headset/heads/hos,
- /obj/item/radio/headset/heads/hos/alt,
+ /obj/item/radio/headset/alt/heads/hos,
+ /obj/item/radio/headset/earbud/heads/hos,
/obj/item/clothing/glasses/sunglasses/sechud,
/obj/item/taperoll/police,
/obj/item/shield/riot,
@@ -151,7 +154,8 @@
/obj/item/clothing/under/rank/neo_sec_gorka,
/obj/item/cartridge/security,
/obj/item/radio/headset/headset_sec,
- /obj/item/radio/headset/headset_sec/alt,
+ /obj/item/radio/headset/alt/headset_sec,
+ /obj/item/radio/headset/earbud/headset_sec,
/obj/item/clothing/glasses/sunglasses/sechud,
/obj/item/taperoll/police,
/obj/item/clothing/accessory/badge/holo/warden,
@@ -189,7 +193,8 @@
/obj/item/clothing/head/helmet,
/obj/item/cartridge/security,
/obj/item/radio/headset/headset_sec,
- /obj/item/radio/headset/headset_sec/alt,
+ /obj/item/radio/headset/alt/headset_sec,
+ /obj/item/radio/headset/earbud/headset_sec,
/obj/item/storage/belt/security,
/obj/item/flash,
/obj/item/reagent_containers/spray/pepper,
@@ -257,7 +262,8 @@
/obj/item/storage/belt/detective,
/obj/item/storage/box/evidence,
/obj/item/radio/headset/headset_sec,
- /obj/item/radio/headset/headset_sec/alt,
+ /obj/item/radio/headset/alt/headset_sec,
+ /obj/item/radio/headset/earbud/headset_sec,
/obj/item/clothing/suit/storage/vest/detective,
/obj/item/taperoll/police,
/obj/item/clothing/accessory/holster/armpit,
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security_vr.dm b/code/game/objects/structures/crates_lockers/closets/secure/security_vr.dm
index 7761b7f03f..e627ad4a49 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/security_vr.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/security_vr.dm
@@ -31,7 +31,8 @@
/obj/item/clothing/head/helmet/HoS/hat/blue,
/obj/item/clothing/head/helmet/dermal,
/obj/item/radio/headset/heads/hos,
- /obj/item/radio/headset/heads/hos/alt,
+ /obj/item/radio/headset/alt/heads/hos,
+ /obj/item/radio/headset/earbud/heads/hos,
/obj/item/clothing/glasses/sunglasses/sechud,
/obj/item/storage/belt/security,
/obj/item/clothing/accessory/holster/waist,
@@ -76,7 +77,8 @@
/obj/item/clothing/head/helmet,
/obj/item/cartridge/security,
/obj/item/radio/headset/headset_sec,
- /obj/item/radio/headset/headset_sec/alt,
+ /obj/item/radio/headset/alt/headset_sec,
+ /obj/item/radio/headset/earbud/headset_sec,
/obj/item/storage/belt/security,
/obj/item/flash,
/obj/item/reagent_containers/spray/pepper,
@@ -122,7 +124,8 @@
/obj/item/clothing/head/helmet/dermal,
/obj/item/cartridge/hos,
/obj/item/radio/headset/heads/hos,
- /obj/item/radio/headset/heads/hos/alt,
+ /obj/item/radio/headset/alt/heads/hos,
+ /obj/item/radio/headset/earbud/heads/hos,
/obj/item/clothing/glasses/sunglasses/sechud,
/obj/item/taperoll/police,
/obj/item/shield/riot,
@@ -169,7 +172,8 @@
/obj/item/clothing/head/helmet/warden,
/obj/item/cartridge/security,
/obj/item/radio/headset/headset_sec,
- /obj/item/radio/headset/headset_sec/alt,
+ /obj/item/radio/headset/alt/headset_sec,
+ /obj/item/radio/headset/earbud/headset_sec,
/obj/item/clothing/glasses/sunglasses/sechud,
/obj/item/taperoll/police,
/obj/item/clothing/accessory/badge/holo/warden,
@@ -204,7 +208,8 @@
/obj/item/cartridge/captain,
/obj/item/storage/lockbox/medal,
/obj/item/radio/headset/heads/captain,
- /obj/item/radio/headset/heads/captain/alt,
+ /obj/item/radio/headset/alt/heads/captain,
+ /obj/item/radio/headset/earbud/heads/captain,
/obj/item/gunbox/captain,
/obj/item/melee/telebaton,
/obj/item/flash,
diff --git a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm
index b920ecd8b7..f010c116e9 100644
--- a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm
+++ b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm
@@ -410,7 +410,7 @@
/obj/item/clothing/under/rank/centcom,
/obj/item/clothing/under/ert,
/obj/item/clothing/under/syndicate/combat,
- /obj/item/radio/headset/ert/alt,
+ /obj/item/radio/headset/alt/ert,
/obj/item/clothing/glasses/sunglasses,
/obj/item/clothing/shoes/boots/swat,
/obj/item/clothing/gloves/swat,
diff --git a/code/game/objects/structures/crates_lockers/closets/wardrobe_vr.dm b/code/game/objects/structures/crates_lockers/closets/wardrobe_vr.dm
index 67deb1eec8..7f9956a855 100644
--- a/code/game/objects/structures/crates_lockers/closets/wardrobe_vr.dm
+++ b/code/game/objects/structures/crates_lockers/closets/wardrobe_vr.dm
@@ -3,13 +3,14 @@
closet_appearance = /decl/closet_appearance/tactical/alt //because ert lockers are red for some dumb reason
starts_with = list(
/obj/item/clothing/under/ert,
- /obj/item/radio/headset/ert/alt,
+ /obj/item/radio/headset/ert,
+ /obj/item/radio/headset/alt/ert,
/obj/item/clothing/glasses/sunglasses,
/obj/item/clothing/shoes/boots/swat,
/obj/item/clothing/gloves/swat,
/obj/item/clothing/mask/balaclava/tactical,
/obj/item/clothing/mask/balaclava)
-
+
//would you believe mercs have no official locker? well, now they do. basically just a rebranded ERT locker but hey, it's an option. -Killian
/obj/structure/closet/wardrobe/merc
name = "mercenary equipment"
@@ -18,7 +19,9 @@
starts_with = list(
/obj/item/clothing/under/tactical,
/obj/item/clothing/under/syndicate/combat,
- /obj/item/radio/headset/syndicate/alt,
+ /obj/item/radio/headset/syndicate,
+ /obj/item/radio/headset/alt/syndicate,
+ /obj/item/radio/headset/earbud/syndicate,
/obj/item/clothing/glasses/sunglasses,
/obj/item/clothing/shoes/boots/combat,
/obj/item/clothing/gloves/combat,
diff --git a/code/modules/awaymissions/corpse.dm b/code/modules/awaymissions/corpse.dm
index c61f8cd792..95a17a4f71 100644
--- a/code/modules/awaymissions/corpse.dm
+++ b/code/modules/awaymissions/corpse.dm
@@ -237,7 +237,7 @@
random_species = TRUE
/obj/effect/landmark/corpse/miner
- corpseradio = /obj/item/radio/headset/headset_cargo
+ corpseradio = /obj/item/radio/headset/miner
corpseuniform = /obj/item/clothing/under/rank/miner
corpsegloves = /obj/item/clothing/gloves/black
corpseback = /obj/item/storage/backpack/industrial
diff --git a/code/modules/client/preference_setup/general/04_equipment.dm b/code/modules/client/preference_setup/general/04_equipment.dm
index 14c56354f9..b76ff9ee38 100644
--- a/code/modules/client/preference_setup/general/04_equipment.dm
+++ b/code/modules/client/preference_setup/general/04_equipment.dm
@@ -11,6 +11,7 @@
pref.all_underwear_metadata = check_list_copy(save_data["all_underwear_metadata"])
for(var/i in pref.all_underwear_metadata)
pref.all_underwear_metadata[i] = path2text_list(pref.all_underwear_metadata[i])
+ pref.headset = save_data["headset"]
pref.backbag = save_data["backbag"]
pref.pdachoice = save_data["pdachoice"]
pref.communicator_visibility = save_data["communicator_visibility"]
@@ -23,6 +24,7 @@
for(var/i in pref.all_underwear_metadata)
underwear[i] = check_list_copy(pref.all_underwear_metadata[i])
save_data["all_underwear_metadata"] = underwear
+ save_data["headset"] = pref.headset
save_data["backbag"] = pref.backbag
save_data["pdachoice"] = pref.pdachoice
save_data["communicator_visibility"] = pref.communicator_visibility
@@ -72,6 +74,10 @@ var/global/list/valid_ringtones = list(
pref.all_underwear -= underwear_category_name
// TODO - Looks like this is duplicating the work of sanitize_character() if so, remove
+ if(pref.headset > GLOB.headsetlist.len || pref.headset < 1)
+ pref.headset = 1 //Same as above
+ character.headset = pref.headset
+
if(pref.backbag > backbaglist.len || pref.backbag < 1)
pref.backbag = 2 //Same as above
character.backbag = pref.backbag
@@ -107,6 +113,7 @@ var/global/list/valid_ringtones = list(
for(var/underwear_metadata in pref.all_underwear_metadata)
if(!(underwear_metadata in pref.all_underwear))
pref.all_underwear_metadata -= underwear_metadata
+ pref.headset = sanitize_integer(pref.headset, 1, GLOB.headsetlist.len, initial(pref.headset))
pref.backbag = sanitize_integer(pref.backbag, 1, backbaglist.len, initial(pref.backbag))
pref.pdachoice = sanitize_integer(pref.pdachoice, 1, pdachoicelist.len, initial(pref.pdachoice))
pref.ringtone = sanitize(pref.ringtone, 20)
@@ -123,6 +130,7 @@ var/global/list/valid_ringtones = list(
. += " [gt.get_contents(get_metadata(UWC.name, gt))]"
. += "
"
+ . += "Headset Type: [GLOB.headsetlist[pref.headset]]
"
. += "Backpack Type: [backbaglist[pref.backbag]]
"
. += "PDA Type: [pdachoicelist[pref.pdachoice]]
"
. += "Communicator Visibility: [(pref.communicator_visibility) ? "Yes" : "No"]
"
@@ -149,6 +157,12 @@ var/global/list/valid_ringtones = list(
/datum/category_item/player_setup_item/general/equipment/OnTopic(var/href,var/list/href_list, var/mob/user)
+ if(href_list["change_headset"])
+ var/new_headset = tgui_input_list(user, "Choose your character's style of headset:", "Character Preference", GLOB.headsetlist, GLOB.headsetlist[pref.headset])
+ if(!isnull(new_headset) && CanUseTopic(user))
+ pref.headset = GLOB.headsetlist.Find(new_headset)
+ return TOPIC_REFRESH_UPDATE_PREVIEW
+
if(href_list["change_backpack"])
var/new_backbag = tgui_input_list(user, "Choose your character's style of bag:", "Character Preference", backbaglist, backbaglist[pref.backbag])
if(!isnull(new_backbag) && CanUseTopic(user))
diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index a6fbe93881..31899796a2 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -47,6 +47,7 @@ var/list/preferences_datums = list()
var/spawnpoint = "Arrivals Shuttle" //where this character will spawn (0-2).
var/b_type = "A+" //blood type (not-chooseable)
var/blood_reagents = "default" //blood restoration reagents
+ var/headset = 1 //headset type
var/backbag = 2 //backpack type
var/pdachoice = 1 //PDA type
var/shoe_hater = FALSE //RS ADD - if true, will spawn with no shoes
diff --git a/code/modules/economy/vending_machines.dm b/code/modules/economy/vending_machines.dm
index 7942381c9d..052cab2a26 100644
--- a/code/modules/economy/vending_machines.dm
+++ b/code/modules/economy/vending_machines.dm
@@ -1615,7 +1615,7 @@
/obj/item/clothing/head/soft/purple = 5,
/obj/item/clothing/head/beret/purple = 5,
/obj/item/clothing/head/headband/maid = 5,
- /obj/item/radio/headset/headset_service = 5,
+ /obj/item/radio/headset/service = 5,
/obj/item/clothing/under/rank/janitor = 5,
/obj/item/clothing/under/dress/maid/janitor = 5,
/obj/item/clothing/suit/storage/hooded/wintercoat/janitor = 5,
diff --git a/code/modules/economy/vending_machines_vr.dm b/code/modules/economy/vending_machines_vr.dm
index 800c386d9d..cc91773128 100644
--- a/code/modules/economy/vending_machines_vr.dm
+++ b/code/modules/economy/vending_machines_vr.dm
@@ -343,7 +343,7 @@
/obj/item/storage/box/syndie_kit/chameleon = 1,
/obj/item/clothing/mask/bandana = 1,
/obj/item/clothing/glasses/sunglasses = 1,
- /obj/item/radio/headset/syndicate/alt = 1,
+ /obj/item/radio/headset/syndicate = 1,
/obj/item/pda = 1,
/obj/item/communicator = 1,
/obj/item/tape_roll = 2,
diff --git a/code/modules/mob/living/carbon/human/ai_controlled/ai_controlled.dm b/code/modules/mob/living/carbon/human/ai_controlled/ai_controlled.dm
index b1608dc51f..54df0bdb0b 100644
--- a/code/modules/mob/living/carbon/human/ai_controlled/ai_controlled.dm
+++ b/code/modules/mob/living/carbon/human/ai_controlled/ai_controlled.dm
@@ -126,7 +126,7 @@
to_wear_helmet = /obj/item/clothing/head/helmet/dermal
to_wear_glasses = /obj/item/clothing/glasses/goggles
to_wear_mask = /obj/item/clothing/mask/gas/half
- to_wear_l_radio = /obj/item/radio/headset/headset_rob
+ to_wear_l_radio = /obj/item/radio/headset
to_wear_r_radio = null
to_wear_uniform = /obj/item/clothing/under/color/grey
to_wear_suit = /obj/item/clothing/suit/armor/vest
diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm
index d182593d1f..8dca9ab08f 100644
--- a/code/modules/mob/living/carbon/human/human_defines.dm
+++ b/code/modules/mob/living/carbon/human/human_defines.dm
@@ -54,6 +54,7 @@
var/list/all_underwear = list()
var/list/all_underwear_metadata = list()
var/list/hide_underwear = list()
+ var/headset = 1 //Which headset type the player has chosen.
var/backbag = 2 //Which backpack type the player has chosen.
var/pdachoice = 1 //Which PDA type the player has chosen.
diff --git a/code/modules/mob/new_player/preferences_setup.dm b/code/modules/mob/new_player/preferences_setup.dm
index 54a5f2cf29..b2a03e9cf9 100644
--- a/code/modules/mob/new_player/preferences_setup.dm
+++ b/code/modules/mob/new_player/preferences_setup.dm
@@ -29,6 +29,7 @@
all_underwear[WRC.name] = WRI.name
+ headset = rand(1,3)
backbag = rand(1,6)
pdachoice = rand(1,7)
age = rand(current_species.min_age, current_species.max_age)
diff --git a/code/modules/vehicles/rover_vr.dm b/code/modules/vehicles/rover_vr.dm
index 12094f58c6..9ad03c25bf 100644
--- a/code/modules/vehicles/rover_vr.dm
+++ b/code/modules/vehicles/rover_vr.dm
@@ -292,12 +292,15 @@
if(!istype(C, /mob/living/carbon/human))
return 0
+ . = ..(C)
+
+ if(!.)
+ return
+
if(ismob(C))
buckle_mob(C)
C.alpha = 0
- return ..()
-
/obj/vehicle/train/rover/engine/unload(var/mob/user, var/direction)
var/mob/living/carbon/human/C = load
diff --git a/code/modules/vehicles/vehicle.dm b/code/modules/vehicles/vehicle.dm
index 97e9dfa746..963faa32f8 100644
--- a/code/modules/vehicles/vehicle.dm
+++ b/code/modules/vehicles/vehicle.dm
@@ -340,7 +340,7 @@
C.pixel_y += load_offset_y
C.layer = layer + 0.1
- if(ismob(C))
+ if(ismob(C) && user)
user_buckle_mob(C, user)
return 1
diff --git a/icons/inventory/ears/mob.dmi b/icons/inventory/ears/mob.dmi
index 95ec0e9c8a..016c3d081d 100644
Binary files a/icons/inventory/ears/mob.dmi and b/icons/inventory/ears/mob.dmi differ
diff --git a/icons/inventory/ears/mob_teshari.dmi b/icons/inventory/ears/mob_teshari.dmi
index d41f5d871f..69b6b42b0b 100644
Binary files a/icons/inventory/ears/mob_teshari.dmi and b/icons/inventory/ears/mob_teshari.dmi differ
diff --git a/icons/obj/radio_vr.dmi b/icons/obj/radio_vr.dmi
index 480e3bcbff..a4e69892f6 100644
Binary files a/icons/obj/radio_vr.dmi and b/icons/obj/radio_vr.dmi differ
diff --git a/maps/cynosure/cynosure-6.dmm b/maps/cynosure/cynosure-6.dmm
index 56fe694d8c..95ac6376a5 100644
--- a/maps/cynosure/cynosure-6.dmm
+++ b/maps/cynosure/cynosure-6.dmm
@@ -10652,10 +10652,10 @@
/area/beach)
"lQh" = (
/obj/structure/table/standard,
-/obj/item/radio/headset/syndicate/alt,
-/obj/item/radio/headset/syndicate/alt,
-/obj/item/radio/headset/syndicate/alt,
-/obj/item/radio/headset/syndicate/alt,
+/obj/item/radio/headset/alt/syndicate,
+/obj/item/radio/headset/alt/syndicate,
+/obj/item/radio/headset/alt/syndicate,
+/obj/item/radio/headset/alt/syndicate,
/turf/unsimulated/floor{
icon_state = "lino"
},
diff --git a/maps/submaps/admin_use_vr/kk_mercship.dmm b/maps/submaps/admin_use_vr/kk_mercship.dmm
index ae2921fbf7..7a8048d4fa 100644
--- a/maps/submaps/admin_use_vr/kk_mercship.dmm
+++ b/maps/submaps/admin_use_vr/kk_mercship.dmm
@@ -6594,10 +6594,10 @@
/obj/item/radio/headset/syndicate,
/obj/item/radio/headset/syndicate,
/obj/item/radio/headset/syndicate,
-/obj/item/radio/headset/syndicate/alt,
-/obj/item/radio/headset/syndicate/alt,
-/obj/item/radio/headset/syndicate/alt,
-/obj/item/radio/headset/syndicate/alt,
+/obj/item/radio/headset/alt/syndicate,
+/obj/item/radio/headset/alt/syndicate,
+/obj/item/radio/headset/alt/syndicate,
+/obj/item/radio/headset/alt/syndicate,
/obj/effect/floor_decal/techfloor{
dir = 10
},
diff --git a/maps/submaps/depreciated_vr/mercbase.dmm b/maps/submaps/depreciated_vr/mercbase.dmm
index 1c3ea488ff..234417b727 100644
--- a/maps/submaps/depreciated_vr/mercbase.dmm
+++ b/maps/submaps/depreciated_vr/mercbase.dmm
@@ -419,10 +419,10 @@
/obj/item/radio/headset/syndicate,
/obj/item/radio/headset/syndicate,
/obj/item/radio/headset/syndicate,
-/obj/item/radio/headset/syndicate/alt,
-/obj/item/radio/headset/syndicate/alt,
-/obj/item/radio/headset/syndicate/alt,
-/obj/item/radio/headset/syndicate/alt,
+/obj/item/radio/headset/alt/syndicate,
+/obj/item/radio/headset/alt/syndicate,
+/obj/item/radio/headset/alt/syndicate,
+/obj/item/radio/headset/alt/syndicate,
/turf/unsimulated/floor{
icon_state = "lino"
},
diff --git a/vorestation.dme b/vorestation.dme
index b356b34d55..c344ac7c6f 100644
--- a/vorestation.dme
+++ b/vorestation.dme
@@ -1356,7 +1356,6 @@
#include "code\game\objects\items\devices\radio\encryptionkey.dm"
#include "code\game\objects\items\devices\radio\encryptionkey_vr.dm"
#include "code\game\objects\items\devices\radio\headset.dm"
-#include "code\game\objects\items\devices\radio\headset_vr.dm"
#include "code\game\objects\items\devices\radio\intercom.dm"
#include "code\game\objects\items\devices\radio\jammer.dm"
#include "code\game\objects\items\devices\radio\jammer_vr.dm"