diff --git a/code/datums/mind.dm b/code/datums/mind.dm
index 6ca6ff8e0c5..ea080c637bc 100644
--- a/code/datums/mind.dm
+++ b/code/datums/mind.dm
@@ -625,7 +625,8 @@ datum/mind
var/mob/living/carbon/human/H = current
del(H.belt)
del(H.back)
- del(H.ears)
+ del(H.l_ear)
+ del(H.r_ear)
del(H.gloves)
del(H.head)
del(H.shoes)
diff --git a/code/defines/obj/clothing/ears.dm b/code/defines/obj/clothing/ears.dm
index adfb51e4373..c83c2d0c357 100644
--- a/code/defines/obj/clothing/ears.dm
+++ b/code/defines/obj/clothing/ears.dm
@@ -4,10 +4,57 @@
name = "ears"
w_class = 1.0
throwforce = 2
+ var/twoeared = 0
+
+/obj/item/clothing/ears/attack_hand(mob/user as mob)
+ if (!user) return
+
+ if (src.loc != user || !istype(user,/mob/living/carbon/human))
+ ..()
+ return
+ var/mob/living/carbon/human/H = user
+ if(H.l_ear != src && H.r_ear != src)
+ ..()
+ return
+
+ if(!canremove)
+ return
+
+ var/obj/item/clothing/ears/O
+ if(twoeared)
+ O = (H.l_ear == src ? H.r_ear : H.l_ear)
+ user.u_equip(O)
+ if(!istype(src,/obj/item/clothing/ears/offear))
+ del(O)
+ O = src
+ else
+ O = src
+
+ user.u_equip(src)
+
+ if (O)
+ user.put_in_hand(O)
+ O.add_fingerprint(user)
+
+ if(istype(src,/obj/item/clothing/ears/offear))
+ del(src)
+
+/obj/item/clothing/ears/offear
+ name = "Other ear"
+ w_class = 5.0
+ icon = 'screen1_old.dmi'
+ icon_state = "block"
+ twoeared = 1
+
+ New(var/obj/O)
+ name = O.name
+ desc = O.desc
+ overlays += new/image(O.icon,icon_state=O.icon_state,dir=O.dir)
/obj/item/clothing/ears/earmuffs
name = "earmuffs"
desc = "Protects your hearing from loud noises, and quiet ones as well."
icon_state = "earmuffs"
protective_temperature = 500
- item_state = "earmuffs"
\ No newline at end of file
+ item_state = "earmuffs"
+ twoeared = 1
\ No newline at end of file
diff --git a/code/defines/procs/helpers.dm b/code/defines/procs/helpers.dm
index cb52e0c0ac2..b27bc90b2fa 100644
--- a/code/defines/procs/helpers.dm
+++ b/code/defines/procs/helpers.dm
@@ -1185,7 +1185,8 @@ proc/listclearnulls(list/list)
if(hasvar(src,"back")) if(src:back) items += src:back
if(hasvar(src,"belt")) if(src:belt) items += src:belt
- if(hasvar(src,"ears")) if(src:ears) items += src:ears
+ if(hasvar(src,"l_ear")) if(src:l_ear) items += src:l_ear
+ if(hasvar(src,"r_ear")) if(src:r_ear) items += src:r_ear
if(hasvar(src,"glasses")) if(src:glasses) items += src:glasses
if(hasvar(src,"gloves")) if(src:gloves) items += src:gloves
if(hasvar(src,"head")) if(src:head) items += src:head
diff --git a/code/game/algorithm.dm b/code/game/algorithm.dm
index 9169d049652..92cbd2dde55 100644
--- a/code/game/algorithm.dm
+++ b/code/game/algorithm.dm
@@ -113,8 +113,11 @@ proc/countJob(rank)
src.wear_id = W
equipped = 1
if(slot_ears)
- if(!src.ears)
- src.ears = W
+ if(!src.l_ear)
+ src.l_ear = W
+ equipped = 1
+ else if(!src.r_ear)
+ src.r_ear = W
equipped = 1
if(slot_glasses)
if(!src.glasses)
diff --git a/code/game/gamemodes/traitor/traitor.dm b/code/game/gamemodes/traitor/traitor.dm
index 7d113523346..3a361fd10c4 100644
--- a/code/game/gamemodes/traitor/traitor.dm
+++ b/code/game/gamemodes/traitor/traitor.dm
@@ -230,8 +230,11 @@
if (!R && traitor_mob.w_uniform && istype(traitor_mob.belt, /obj/item/device/radio))
R = traitor_mob.belt
loc = "on your belt"
- if (!R && istype(traitor_mob.ears, /obj/item/device/radio))
- R = traitor_mob.ears
+ if (!R && istype(traitor_mob.l_ear, /obj/item/device/radio))
+ R = traitor_mob.l_ear
+ loc = "on your head"
+ if (!R && istype(traitor_mob.r_ear, /obj/item/device/radio))
+ R = traitor_mob.r_ear
loc = "on your head"
if (!R)
traitor_mob << "Unfortunately, the Syndicate wasn't able to get you a radio."
diff --git a/code/game/hud.dm b/code/game/hud.dm
index 4c2433642bf..10cad02d49a 100644
--- a/code/game/hud.dm
+++ b/code/game/hud.dm
@@ -14,8 +14,9 @@
#define ui_hstore1 "SOUTH+1,5"
#define ui_resist "EAST+1,SOUTH-1"
#define ui_gloves "SOUTH,5"
-#define ui_glasses "SOUTH,7"
-#define ui_ears "SOUTH,6"
+#define ui_glasses "SOUTH+1,6"
+#define ui_lear "SOUTH,7"
+#define ui_rear "SOUTH,6"
#define ui_head "SOUTH+1,2"
#define ui_shoes "SOUTH,4"
#define ui_belt "SOUTH-1,3"
@@ -56,7 +57,8 @@ obj/hud/New(var/type = 0)
if(show_otherinventory)
if(mymob:shoes) mymob:shoes:screen_loc = ui_shoes
if(mymob:gloves) mymob:gloves:screen_loc = ui_gloves
- if(mymob:ears) mymob:ears:screen_loc = ui_ears
+ if(mymob:l_ear) mymob:l_ear:screen_loc = ui_lear
+ if(mymob:r_ear) mymob:r_ear:screen_loc = ui_rear
if(mymob:s_store) mymob:s_store:screen_loc = ui_sstore1
if(mymob:glasses) mymob:glasses:screen_loc = ui_glasses
if(mymob:h_store) mymob:h_store:screen_loc = ui_hstore1
@@ -64,7 +66,8 @@ obj/hud/New(var/type = 0)
if(istype(mymob, /mob/living/carbon/human))
if(mymob:shoes) mymob:shoes:screen_loc = null
if(mymob:gloves) mymob:gloves:screen_loc = null
- if(mymob:ears) mymob:ears:screen_loc = null
+ if(mymob:l_ear) mymob:l_ear:screen_loc = null
+ if(mymob:r_ear) mymob:r_ear:screen_loc = null
if(mymob:s_store) mymob:s_store:screen_loc = null
if(mymob:glasses) mymob:glasses:screen_loc = null
if(mymob:h_store) mymob:h_store:screen_loc = null
diff --git a/code/game/jobs/job_controller.dm b/code/game/jobs/job_controller.dm
index 39f28cc5a72..8097329585f 100644
--- a/code/game/jobs/job_controller.dm
+++ b/code/game/jobs/job_controller.dm
@@ -225,7 +225,9 @@ var/global/datum/controller/occupations/job_master
H.Robotize()
return 1
- H.equip_if_possible(new /obj/item/device/radio/headset(H), H.slot_ears)
+ // make sure we don't already have one on 1 ear :p
+ if(!istype(H.r_ear,/obj/item/device/radio/headset) && !istype(H.l_ear,/obj/item/device/radio/headset))
+ H.equip_if_possible(new /obj/item/device/radio/headset(H), H.slot_ears)
var/obj/item/weapon/storage/backpack/BPK = new/obj/item/weapon/storage/backpack(H)
H.equip_if_possible(BPK, H.slot_back,1)
return 1
diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm
index 14b0794bf6a..869a99142e8 100644
--- a/code/game/mecha/equipment/weapons/weapons.dm
+++ b/code/game/mecha/equipment/weapons/weapons.dm
@@ -122,7 +122,7 @@
for(var/mob/living/carbon/M in ohearers(6, chassis))
if(istype(M, /mob/living/carbon/human))
var/mob/living/carbon/human/H = M
- if(istype(H.ears, /obj/item/clothing/ears/earmuffs))
+ if(istype(H.l_ear, /obj/item/clothing/ears/earmuffs) || istype(H.r_ear, /obj/item/clothing/ears/earmuffs))
continue
M << "HONK"
if(!M.sleeping_willingly)
diff --git a/code/game/objects/items/weapons/grenades.dm b/code/game/objects/items/weapons/grenades.dm
index afbdc688913..38402a2366f 100644
--- a/code/game/objects/items/weapons/grenades.dm
+++ b/code/game/objects/items/weapons/grenades.dm
@@ -161,7 +161,7 @@ FLASHBANG
if(iscarbon(M))
eye_safety = M.eyecheck()
if(ishuman(M))
- if(istype(M:ears, /obj/item/clothing/ears/earmuffs))
+ if(istype(M:l_ear, /obj/item/clothing/ears/earmuffs) || istype(M:r_ear, /obj/item/clothing/ears/earmuffs))
ear_safety += 2
if(M.mutations & HULK)
ear_safety += 1
diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm
index 0501f148595..06f9fa3b394 100644
--- a/code/modules/mob/living/carbon/human/examine.dm
+++ b/code/modules/mob/living/carbon/human/examine.dm
@@ -30,8 +30,11 @@
else
usr << "\blue [src.name] has a \icon[src.wear_suit] [src.wear_suit.name] on."
- if (src.ears)
- usr << "\blue [src.name] has a \icon[src.ears] [src.ears.name] by [t_his] mouth."
+ if (src.l_ear)
+ usr << "\blue [src.name] has a \icon[src.l_ear] [src.l_ear.name] by [t_his] mouth."
+
+ if (src.r_ear)
+ usr << "\blue [src.name] has a \icon[src.r_ear] [src.r_ear.name] by [t_his] mouth."
if (src.wear_mask)
if (src.wear_mask.blood_DNA)
diff --git a/code/modules/mob/living/carbon/human/hud.dm b/code/modules/mob/living/carbon/human/hud.dm
index 1cafa5e6043..632220c09bb 100644
--- a/code/modules/mob/living/carbon/human/hud.dm
+++ b/code/modules/mob/living/carbon/human/hud.dm
@@ -271,10 +271,20 @@
src.other += using
using = new src.h_type( src )
- using.name = "ears"
+ using.name = "l_ear"
+ using.dir = EAST
using.icon = ui_style
using.icon_state = "ears"
- using.screen_loc = ui_ears
+ using.screen_loc = ui_lear
+ using.layer = 19
+ src.other += using
+
+ using = new src.h_type( src )
+ using.name = "r_ear"
+ using.dir = WEST
+ using.icon = ui_style
+ using.icon_state = "ears"
+ using.screen_loc = ui_rear
using.layer = 19
src.other += using
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index 3a9274450bd..5defbe4fb03 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -30,7 +30,8 @@
var/obj/item/clothing/gloves/gloves = null
var/obj/item/clothing/glasses/glasses = null
var/obj/item/clothing/head/head = null
- var/obj/item/clothing/ears/ears = null
+ var/obj/item/clothing/ears/l_ear = null
+ var/obj/item/clothing/ears/r_ear = null
var/obj/item/weapon/card/id/wear_id = null
var/obj/item/weapon/r_store = null
var/obj/item/weapon/l_store = null
@@ -252,7 +253,7 @@
b_loss = b_loss/1.5
f_loss = f_loss/1.5
- if (!istype(ears, /obj/item/clothing/ears/earmuffs))
+ if (!istype(l_ear, /obj/item/clothing/ears/earmuffs) && !istype(r_ear, /obj/item/clothing/ears/earmuffs))
ear_damage += 30
ear_deaf += 120
@@ -260,7 +261,7 @@
b_loss += 30
if (!prob(getarmor(null, "bomb")))
b_loss = b_loss/2
- if (!istype(ears, /obj/item/clothing/ears/earmuffs))
+ if (!istype(l_ear, /obj/item/clothing/ears/earmuffs) && !istype(r_ear, /obj/item/clothing/ears/earmuffs))
ear_damage += 15
ear_deaf += 60
if (prob(50) && !shielded)
@@ -363,8 +364,10 @@
del(face_standing)
del(face_lying)
- else if (W == ears)
- ears = null
+ else if (W == l_ear)
+ l_ear = null
+ else if (W == r_ear)
+ r_ear = null
else if (W == shoes)
shoes = null
else if (W == belt)
@@ -523,15 +526,41 @@
if(istype(W,/obj/item/clothing/head/kitty))
W.update_icon(src)
W.equipped(src, text)
- if("ears")
- if (ears)
+ if("l_ear")
+ if (l_ear)
if (emptyHand)
- ears.DblClick()
+ l_ear.DblClick()
return
- if (!( istype(W, /obj/item/clothing/ears) ) && !( istype(W, /obj/item/device/radio/headset) ))
+ else if(emptyHand)
+ return
+ if (!( istype(W, /obj/item/clothing/ears) ) && !( istype(W, /obj/item/device/radio/headset) ) && W.w_class != 1)
+ return
+ if(istype(W,/obj/item/clothing/ears) && W:twoeared && r_ear)
return
u_equip(W)
- ears = W
+ l_ear = W
+ if(istype(W,/obj/item/clothing/ears) && W:twoeared)
+ var/obj/item/clothing/ears/offear/O = new(W)
+ O.loc = src
+ equip_if_possible(O, slot_ears)
+ W.equipped(src, text)
+ if("r_ear")
+ if (r_ear)
+ if (emptyHand)
+ r_ear.DblClick()
+ return
+ else if(emptyHand)
+ return
+ if (!( istype(W, /obj/item/clothing/ears) ) && !( istype(W, /obj/item/device/radio/headset) ) && W.w_class != 1)
+ return
+ if(istype(W,/obj/item/clothing/ears) && W:twoeared && l_ear)
+ return
+ u_equip(W)
+ r_ear = W
+ if(istype(W,/obj/item/clothing/ears) && W:twoeared)
+ var/obj/item/clothing/ears/offear/O = new(W)
+ O.loc = src
+ equip_if_possible(O, slot_ears)
W.equipped(src, text)
if("i_clothing")
if (w_uniform)
@@ -865,8 +894,11 @@
var/t1 = glasses.icon_state
overlays += image("icon" = 'eyes.dmi', "icon_state" = text("[][]", t1, (!( lying ) ? null : "2")), "layer" = MOB_LAYER)
// Ears
- if (ears)
- var/t1 = ears.icon_state
+ if (l_ear)
+ var/t1 = l_ear.icon_state
+ overlays += image("icon" = 'ears.dmi', "icon_state" = text("[][]", t1, (!( lying ) ? null : "2")), "layer" = MOB_LAYER)
+ if (r_ear)
+ var/t1 = r_ear.icon_state
overlays += image("icon" = 'ears.dmi', "icon_state" = text("[][]", t1, (!( lying ) ? null : "2")), "layer" = MOB_LAYER)
// Shoes
if (shoes)
@@ -1413,11 +1445,16 @@
message = text("\red [] fails to take off \a [] from []'s body!", source, target.glasses, target)
else
message = text("\red [] is trying to take off the [] from []'s eyes!", source, target.glasses, target)
- if("ears")
- if(istype(target.ears, /obj/item/clothing)&&!target.ears:canremove)
- message = text("\red [] fails to take off \a [] from []'s body!", source, target.ears, target)
+ if("l_ear")
+ if(istype(target.l_ear, /obj/item/clothing)&&!target.l_ear:canremove)
+ message = text("\red [] fails to take off \a [] from []'s body!", source, target.l_ear, target)
else
- message = text("\red [] is trying to take off the [] from []'s ears!", source, target.ears, target)
+ message = text("\red [] is trying to take off the [] from []'s left ear!", source, target.l_ear, target)
+ if("r_ear")
+ if(istype(target.r_ear, /obj/item/clothing)&&!target.r_ear:canremove)
+ message = text("\red [] fails to take off \a [] from []'s body!", source, target.r_ear, target)
+ else
+ message = text("\red [] is trying to take off the [] from []'s right ear!", source, target.r_ear, target)
if("head")
if(istype(target.head, /obj/item/clothing)&&!target.head:canremove)
message = text("\red [] fails to take off \a [] from []'s body!", source, target.head, target)
@@ -1643,12 +1680,19 @@ It can still be worn/put on as normal.
item.layer = 20
target.head = item
item.loc = target
- if("ears")
- if (target.ears)
- if(istype(target.ears, /obj/item/clothing)&& !target.ears:canremove)
+ if("l_ear")
+ if (target.l_ear)
+ if(istype(target.l_ear, /obj/item/clothing)&& !target.l_ear:canremove)
return
- var/obj/item/W = target.ears
+ var/obj/item/W = target.l_ear
target.u_equip(W)
+
+ if(istype(W,/obj/item/clothing/ears/offear))
+ W = target.r_ear
+ if(istype(W, /obj/item/clothing/ears) && W:twoeared)
+ if (target.client)
+ target.client.screen -= target.r_ear
+ target.u_equip(target.r_ear)
if (target.client)
target.client.screen -= W
if (W)
@@ -1657,18 +1701,53 @@ It can still be worn/put on as normal.
W.layer = initial(W.layer)
W.add_fingerprint(source)
else
- if (istype(item, /obj/item/clothing/ears))
+ if (istype(item, /obj/item/clothing/ears) || istype(item, /obj/item/device/radio/headset) || item.w_class == 1)
source.drop_item()
- loc = target
- item.layer = 20
- target.ears = item
- item.loc = target
- else if (istype(item, /obj/item/device/radio/headset))
+ if(istype(item, /obj/item/clothing/ears) && item:twoeared && target.r_ear)
+ loc = target.loc
+ else
+ loc = target
+ item.layer = 20
+ target.l_ear = item
+ item.loc = target
+ if(istype(item, /obj/item/clothing/ears) && item:twoeared)
+ var/obj/item/clothing/ears/offear/O = new(item)
+ O.loc = target
+ target.equip_if_possible(O, target.slot_ears)
+ if("r_ear")
+ if (target.r_ear)
+ if(istype(target.r_ear, /obj/item/clothing)&& !target.r_ear:canremove)
+ return
+ var/obj/item/W = target.r_ear
+ target.u_equip(W)
+
+ if(istype(W,/obj/item/clothing/ears/offear))
+ W = target.l_ear
+ if(istype(W, /obj/item/clothing/ears) && W:twoeared)
+ if (target.client)
+ target.client.screen -= target.r_ear
+ target.u_equip(target.l_ear)
+ if (target.client)
+ target.client.screen -= W
+ if (W)
+ W.loc = target.loc
+ W.dropped(target)
+ W.layer = initial(W.layer)
+ W.add_fingerprint(source)
+ else
+ if (istype(item, /obj/item/clothing/ears) || istype(item, /obj/item/device/radio/headset) || item.w_class == 1)
source.drop_item()
- loc = target
- item.layer = 20
- target.ears = item
- item.loc = target
+ if(istype(item, /obj/item/clothing/ears) && item:twoeared && target.r_ear)
+ loc = target.loc
+ else
+ loc = target
+ item.layer = 20
+ target.r_ear = item
+ item.loc = target
+ if(istype(item, /obj/item/clothing/ears) && item:twoeared)
+ var/obj/item/clothing/ears/offear/O = new/obj/item/clothing/ears/offear(item)
+ O.loc = target
+ target.equip_if_possible(O, target.slot_ears)
if("shoes")
if (target.shoes)
if(istype(target.shoes, /obj/item/clothing)&& !target.shoes:canremove)
@@ -1975,7 +2054,8 @@ It can still be worn/put on as normal.
Right Hand: [(r_hand ? r_hand : "Nothing")]
Gloves: [(gloves ? gloves : "Nothing")]
Eyes: [(glasses ? glasses : "Nothing")]
-
Ears: [(ears ? ears : "Nothing")]
+
Left Ear: [(l_ear ? l_ear : "Nothing")]
+
Right Ear: [(r_ear ? r_ear : "Nothing")]
Head: [(head ? head : "Nothing")]
Shoes: [(shoes ? shoes : "Nothing")]
Belt: [(belt ? belt : "Nothing")]
@@ -2199,7 +2279,7 @@ It can still be worn/put on as normal.
/mob/living/carbon/human/abiotic(var/full_body = 0)
- if(full_body && ((src.l_hand && !( src.l_hand.abstract )) || (src.r_hand && !( src.r_hand.abstract )) || (src.back || src.wear_mask || src.head || src.shoes || src.w_uniform || src.wear_suit || src.glasses || src.ears || src.gloves)))
+ if(full_body && ((src.l_hand && !( src.l_hand.abstract )) || (src.r_hand && !( src.r_hand.abstract )) || (src.back || src.wear_mask || src.head || src.shoes || src.w_uniform || src.wear_suit || src.glasses || src.l_ear || src.r_ear || src.gloves)))
return 1
if((src.l_hand && !( src.l_hand.abstract )) || (src.r_hand && !( src.r_hand.abstract )))
diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm
index 02e0c2785da..77ab230be5d 100644
--- a/code/modules/mob/living/carbon/human/life.dm
+++ b/code/modules/mob/living/carbon/human/life.dm
@@ -551,9 +551,12 @@
if(glasses)
if(glasses.protective_temperature > temp)
fire_prot += (glasses.protective_temperature/10)
- if(ears)
- if(ears.protective_temperature > temp)
- fire_prot += (ears.protective_temperature/10)
+ if(l_ear)
+ if(l_ear.protective_temperature > temp)
+ fire_prot += (l_ear.protective_temperature/10)
+ if(r_ear)
+ if(r_ear.protective_temperature > temp)
+ fire_prot += (r_ear.protective_temperature/10)
if(wear_suit)
if(wear_suit.protective_temperature > temp)
fire_prot += (wear_suit.protective_temperature/10)
@@ -730,7 +733,7 @@
if ((sdisabilities & 1 || istype(glasses, /obj/item/clothing/glasses/blindfold)))
blinded = 1
- if ((sdisabilities & 4 || istype(ears, /obj/item/clothing/ears/earmuffs)))
+ if ((sdisabilities & 4 || istype(l_ear, /obj/item/clothing/ears/earmuffs) || istype(r_ear, /obj/item/clothing/ears/earmuffs)))
ear_deaf = 1
if (eye_blurry > 0)
diff --git a/code/modules/mob/living/carbon/monkey/hud.dm b/code/modules/mob/living/carbon/monkey/hud.dm
index 6ead2fd432b..645e93c2da7 100644
--- a/code/modules/mob/living/carbon/monkey/hud.dm
+++ b/code/modules/mob/living/carbon/monkey/hud.dm
@@ -248,10 +248,19 @@
src.other += using
using = new src.h_type( src )
- using.name = "ears"
+ using.name = "left ear"
using.icon = ui_style
using.icon_state = "ears"
- using.screen_loc = ui_ears
+ using.screen_loc = ui_lear
+ using.layer = 19
+ using.overlays += blocked
+ src.other += using
+
+ using = new src.h_type( src )
+ using.name = "right ear"
+ using.icon = ui_style
+ using.icon_state = "ears"
+ using.screen_loc = ui_rear
using.layer = 19
using.overlays += blocked
src.other += using
diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm
index 4fbf6a1e051..72e10af6faa 100644
--- a/code/modules/mob/living/say.dm
+++ b/code/modules/mob/living/say.dm
@@ -3,8 +3,12 @@
if (issilicon(src)) return 1
if (!ishuman(src)) return
var/mob/living/carbon/human/H = src
- if (H.ears)
- var/obj/item/device/radio/headset/dongle = H.ears
+ if (H.l_ear || H.r_ear)
+ var/obj/item/device/radio/headset/dongle
+ if(istype(H.l_ear,/obj/item/device/radio/headset))
+ dongle = H.l_ear
+ else
+ dongle = H.r_ear
if(!istype(dongle)) return
if(dongle.translate_binary) return 1
@@ -12,8 +16,12 @@
if (isalien(src)) return 1
if (!ishuman(src)) return
var/mob/living/carbon/human/H = src
- if (H.ears)
- var/obj/item/device/radio/headset/dongle = H.ears
+ if (H.l_ear || H.r_ear)
+ var/obj/item/device/radio/headset/dongle
+ if(istype(H.l_ear,/obj/item/device/radio/headset))
+ dongle = H.l_ear
+ else
+ dongle = H.r_ear
if(!istype(dongle)) return
if(dongle.translate_hive) return 1
@@ -75,8 +83,8 @@
var/channel_prefix = copytext(message, 1, 3)
var/list/keys = list(
- ":r" = "right hand",
- ":l" = "left hand",
+ ":r" = "right ear",
+ ":l" = "left ear",
":i" = "intercom",
":h" = "department",
":c" = "Command",
@@ -156,33 +164,39 @@
switch (message_mode)
if ("headset")
- if (src:ears)
- src:ears.talk_into(src, message)
- used_radios += src:ears
+ if (src:l_ear && istype(src:l_ear,/obj/item/device/radio))
+ src:l_ear.talk_into(src, message)
+ used_radios += src:l_ear
+ else if (src:r_ear)
+ src:r_ear.talk_into(src, message)
+ used_radios += src:r_ear
message_range = 1
italics = 1
if ("secure headset")
- if (src:ears)
- src:ears.talk_into(src, message, 1)
- used_radios += src:ears
+ if (src:l_ear && istype(src:l_ear,/obj/item/device/radio))
+ src:l_ear.talk_into(src, message, 1)
+ used_radios += src:l_ear
+ else if (src:r_ear)
+ src:r_ear.talk_into(src, message, 1)
+ used_radios += src:r_ear
message_range = 1
italics = 1
- if ("right hand")
- if (r_hand)
- r_hand.talk_into(src, message)
- used_radios += src:r_hand
+ if ("right ear")
+ if (src:r_ear)
+ src:r_ear.talk_into(src, message)
+ used_radios += src:r_ear
message_range = 1
italics = 1
- if ("left hand")
- if (l_hand)
- l_hand.talk_into(src, message)
- used_radios += src:l_hand
+ if ("left ear")
+ if (src:l_ear)
+ src:l_ear.talk_into(src, message)
+ used_radios += src:l_ear
message_range = 1
italics = 1
@@ -213,9 +227,12 @@
return
if ("department")
- if (src:ears)
- src:ears.talk_into(src, message, message_mode)
- used_radios += src:ears
+ if (src:l_ear && istype(src:l_ear,/obj/item/device/radio))
+ src:l_ear.talk_into(src, message, message_mode)
+ used_radios += src:l_ear
+ else if (src:r_ear)
+ src:r_ear.talk_into(src, message, message_mode)
+ used_radios += src:r_ear
message_range = 1
italics = 1
if ("pAI")
@@ -234,9 +251,12 @@
else
//world << "SPECIAL HEADSETS"
if (message_mode in radiochannels)
- if (src:ears)
- src:ears.talk_into(src, message, message_mode)
- used_radios += src:ears
+ if (src:l_ear && istype(src:l_ear,/obj/item/device/radio))
+ src:l_ear.talk_into(src, message, message_mode)
+ used_radios += src:l_ear
+ else if (src:r_ear)
+ src:r_ear.talk_into(src, message, message_mode)
+ used_radios += src:r_ear
message_range = 1
italics = 1
/////SPECIAL HEADSETS END
diff --git a/icons/mob/screen1.dmi b/icons/mob/screen1.dmi
index c91a553540b..d631ff02ce2 100644
Binary files a/icons/mob/screen1.dmi and b/icons/mob/screen1.dmi differ
diff --git a/icons/mob/screen1_alien.dmi b/icons/mob/screen1_alien.dmi
index 900feb86025..188d9f16d0d 100644
Binary files a/icons/mob/screen1_alien.dmi and b/icons/mob/screen1_alien.dmi differ
diff --git a/icons/mob/screen1_old.dmi b/icons/mob/screen1_old.dmi
index ae9ed11ff79..1918ebce9fe 100644
Binary files a/icons/mob/screen1_old.dmi and b/icons/mob/screen1_old.dmi differ