diff --git a/code/datums/mind.dm b/code/datums/mind.dm
index 769f7707eaf..fb8a134c5ad 100644
--- a/code/datums/mind.dm
+++ b/code/datums/mind.dm
@@ -707,7 +707,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)
@@ -989,7 +990,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/game/gamemodes/events/space_ninja.dm b/code/game/gamemodes/events/space_ninja.dm
index 437b5be0c23..c3b77d5f875 100644
--- a/code/game/gamemodes/events/space_ninja.dm
+++ b/code/game/gamemodes/events/space_ninja.dm
@@ -534,7 +534,7 @@ As such, it's hard-coded for now. No reason for it not to be, really.
del(gloves)
var/obj/item/device/radio/R = new /obj/item/device/radio/headset(src)
- equip_to_slot_or_del(R, slot_ears)
+ equip_to_slot_or_del(R, slot_l_ear)
if(gender==FEMALE)
equip_to_slot_or_del(new /obj/item/clothing/under/color/blackf(src), slot_w_uniform)
else
diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm
index a78e8dd8ae0..83c77f24a87 100644
--- a/code/game/gamemodes/game_mode.dm
+++ b/code/game/gamemodes/game_mode.dm
@@ -248,7 +248,7 @@ Implants;
for (var/obj/machinery/computer/communications/comm in machines)
if (!(comm.stat & (BROKEN | NOPOWER)) && comm.prints_intercept)
var/obj/item/weapon/paper/intercept = new /obj/item/weapon/paper( comm.loc )
- intercept.name = "paper- 'Cent. Com. Status Summary'"
+ intercept.name = "paper - 'Cent. Com. Status Summary'"
intercept.info = intercepttext
comm.messagetitle.Add("Cent. Com. Status Summary")
diff --git a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm
index d014ba09608..be688554147 100644
--- a/code/game/gamemodes/nuclear/nuclear.dm
+++ b/code/game/gamemodes/nuclear/nuclear.dm
@@ -205,7 +205,7 @@
var/obj/item/device/radio/R = new /obj/item/device/radio/headset/syndicate(synd_mob)
R.set_frequency(radio_freq)
- synd_mob.equip_to_slot_or_del(R, slot_ears)
+ synd_mob.equip_to_slot_or_del(R, slot_l_ear)
synd_mob.equip_to_slot_or_del(new /obj/item/clothing/under/syndicate(synd_mob), slot_w_uniform)
synd_mob.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(synd_mob), slot_shoes)
diff --git a/code/game/gamemodes/revolution/rp_revolution.dm b/code/game/gamemodes/revolution/rp_revolution.dm
index 98923b49eef..06573263bee 100644
--- a/code/game/gamemodes/revolution/rp_revolution.dm
+++ b/code/game/gamemodes/revolution/rp_revolution.dm
@@ -233,7 +233,7 @@
for (var/obj/machinery/computer/communications/comm in world)
if (!(comm.stat & (BROKEN | NOPOWER)) && comm.prints_intercept)
var/obj/item/weapon/paper/intercept = new /obj/item/weapon/paper( comm.loc )
- intercept.name = "paper- 'Cent. Com. Announcement'"
+ intercept.name = "paper - 'Cent. Com. Announcement'"
intercept.info = message
comm.messagetitle.Add("Cent. Com. Announcement")
diff --git a/code/game/gamemodes/setupgame.dm b/code/game/gamemodes/setupgame.dm
index 0168bbf2049..53d90a7e98c 100644
--- a/code/game/gamemodes/setupgame.dm
+++ b/code/game/gamemodes/setupgame.dm
@@ -95,14 +95,14 @@
var/mob/living/carbon/human/M = new /mob/living/carbon/human(A.loc)
M.real_name = "Corpse"
M.death()
- M.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_eng(M), slot_ears)
+ M.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_eng(M), slot_l_ear)
M.equip_to_slot_or_del(new /obj/item/device/pda/engineering(M), slot_belt)
M.equip_to_slot_or_del(new /obj/item/clothing/under/rank/engineer(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/orange(M), slot_shoes)
// M.equip_to_slot_or_del(new /obj/item/weapon/storage/toolbox/mechanical(M), slot_l_hand)
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/yellow(M), slot_gloves)
M.equip_to_slot_or_del(new /obj/item/device/t_scanner(M), slot_r_store)
- //M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears)
+ //M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_l_ear)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(M), slot_back)
if (prob(50))
M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas(M), slot_wear_mask)
@@ -117,7 +117,7 @@
var/mob/living/carbon/human/M = new /mob/living/carbon/human(A.loc)
M.real_name = "Corpse"
M.death()
- M.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_eng(M), slot_ears)
+ M.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_eng(M), slot_l_ear)
M.equip_to_slot_or_del(new /obj/item/weapon/tank/emergency_oxygen(M), slot_belt)
M.equip_to_slot_or_del(new /obj/item/clothing/under/rank/engineer(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/orange(M), slot_shoes)
@@ -140,7 +140,7 @@
var/mob/living/carbon/human/M = new /mob/living/carbon/human(A.loc)
M.real_name = "Corpse"
M.death()
- M.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_eng(M), slot_ears)
+ M.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_eng(M), slot_l_ear)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/utilitybelt(M), slot_belt)
M.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chief_engineer(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/orange(M), slot_shoes)
@@ -161,7 +161,7 @@
var/mob/living/carbon/human/M = new /mob/living/carbon/human(A.loc)
M.real_name = "Corpse"
M.death()
- M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears)
+ M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_l_ear)
//M.equip_to_slot_or_del(new /obj/item/weapon/gun/revolver(M), slot_belt)
M.equip_to_slot_or_del(new /obj/item/clothing/under/syndicate(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes)
diff --git a/code/game/gamemodes/wizard/wizard.dm b/code/game/gamemodes/wizard/wizard.dm
index ba5700b1df3..add8ee00a66 100644
--- a/code/game/gamemodes/wizard/wizard.dm
+++ b/code/game/gamemodes/wizard/wizard.dm
@@ -162,7 +162,7 @@
del(wizard_mob.r_store)
del(wizard_mob.l_store)
- wizard_mob.equip_to_slot_or_del(new /obj/item/device/radio/headset(wizard_mob), slot_ears)
+ wizard_mob.equip_to_slot_or_del(new /obj/item/device/radio/headset(wizard_mob), slot_l_ear)
wizard_mob.equip_to_slot_or_del(new /obj/item/clothing/under/lightpurple(wizard_mob), slot_w_uniform)
wizard_mob.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(wizard_mob), slot_shoes)
wizard_mob.equip_to_slot_or_del(new /obj/item/clothing/suit/wizrobe(wizard_mob), slot_wear_suit)
diff --git a/code/game/hud.dm b/code/game/hud.dm
index 04399852886..99042bdef9f 100644
--- a/code/game/hud.dm
+++ b/code/game/hud.dm
@@ -79,7 +79,8 @@
#define ui_glasses "1:6,3:9"
#define ui_mask "2:8,3:9"
-#define ui_ears "3:10,3:9"
+#define ui_l_ear "3:10,3:9"
+#define ui_r_ear "3:10,4:11"
#define ui_head "2:8,4:11"
@@ -214,7 +215,8 @@ datum/hud/New(mob/owner)
if(inventory_shown && hud_shown)
if(H.shoes) H.shoes.screen_loc = ui_shoes
if(H.gloves) H.gloves.screen_loc = ui_gloves
- if(H.ears) H.ears.screen_loc = ui_ears
+ if(H.l_ear) H.l_ear.screen_loc = ui_l_ear
+ if(H.r_ear) H.r_ear.screen_loc = ui_r_ear
if(H.glasses) H.glasses.screen_loc = ui_glasses
if(H.w_uniform) H.w_uniform.screen_loc = ui_iclothing
if(H.wear_suit) H.wear_suit.screen_loc = ui_oclothing
@@ -223,7 +225,8 @@ datum/hud/New(mob/owner)
else
if(H.shoes) H.shoes.screen_loc = null
if(H.gloves) H.gloves.screen_loc = null
- if(H.ears) H.ears.screen_loc = null
+ if(H.l_ear) H.l_ear.screen_loc = null
+ if(H.r_ear) H.r_ear.screen_loc = null
if(H.glasses) H.glasses.screen_loc = null
if(H.w_uniform) H.w_uniform.screen_loc = null
if(H.wear_suit) H.wear_suit.screen_loc = null
diff --git a/code/game/jobs/job/captain.dm b/code/game/jobs/job/captain.dm
index 38cb9d10be7..7d93bdb3253 100644
--- a/code/game/jobs/job/captain.dm
+++ b/code/game/jobs/job/captain.dm
@@ -14,7 +14,7 @@
minimal_player_age = 14
equip(var/mob/living/carbon/human/H)
if(!H) return 0
- H.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/captain(H), slot_ears)
+ H.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/captain(H), slot_l_ear)
switch(H.backbag)
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/captain(H), slot_back)
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_cap(H), slot_back)
@@ -70,7 +70,7 @@
equip(var/mob/living/carbon/human/H)
if(!H) return 0
- H.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/hop(H), slot_ears)
+ H.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/hop(H), slot_l_ear)
switch(H.backbag)
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(H), slot_back)
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_norm(H), slot_back)
diff --git a/code/game/jobs/job/civilian.dm b/code/game/jobs/job/civilian.dm
index 8d9e0875dc9..ce7c3968f3a 100644
--- a/code/game/jobs/job/civilian.dm
+++ b/code/game/jobs/job/civilian.dm
@@ -116,7 +116,7 @@
equip(var/mob/living/carbon/human/H)
if(!H) return 0
- H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_cargo(H), slot_ears)
+ H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_cargo(H), slot_l_ear)
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/cargo(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(H), slot_shoes)
H.equip_to_slot_or_del(new /obj/item/device/pda/quartermaster(H), slot_belt)
@@ -146,7 +146,7 @@
equip(var/mob/living/carbon/human/H)
if(!H) return 0
- H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_cargo(H), slot_ears)
+ H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_cargo(H), slot_l_ear)
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/cargotech(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes)
H.equip_to_slot_or_del(new /obj/item/device/pda/cargo(H), slot_belt)
@@ -174,7 +174,7 @@
equip(var/mob/living/carbon/human/H)
if(!H) return 0
- H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_cargo (H), slot_ears)
+ H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_cargo (H), slot_l_ear)
switch(H.backbag)
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/industrial(H), slot_back)
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_eng(H), slot_back)
@@ -342,7 +342,7 @@
equip(var/mob/living/carbon/human/H)
if(!H) return 0
- H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sec(H), slot_ears)
+ H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sec(H), slot_l_ear)
switch(H.backbag)
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(H), slot_back)
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_norm(H), slot_back)
diff --git a/code/game/jobs/job/engineering.dm b/code/game/jobs/job/engineering.dm
index 3ab06c4e389..246d3eb3f01 100644
--- a/code/game/jobs/job/engineering.dm
+++ b/code/game/jobs/job/engineering.dm
@@ -22,7 +22,7 @@
equip(var/mob/living/carbon/human/H)
if(!H) return 0
- H.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/ce(H), slot_ears)
+ H.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/ce(H), slot_l_ear)
switch(H.backbag)
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/industrial(H), slot_back)
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_eng(H), slot_back)
@@ -57,7 +57,7 @@
equip(var/mob/living/carbon/human/H)
if(!H) return 0
- H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_eng(H), slot_ears)
+ H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_eng(H), slot_l_ear)
switch(H.backbag)
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/industrial(H), slot_back)
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_eng(H), slot_back)
@@ -91,7 +91,7 @@
equip(var/mob/living/carbon/human/H)
if(!H) return 0
- H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_eng(H), slot_ears)
+ H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_eng(H), slot_l_ear)
switch(H.backbag)
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(H), slot_back)
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_norm(H), slot_back)
diff --git a/code/game/jobs/job/medical.dm b/code/game/jobs/job/medical.dm
index 22dd096bcca..1303976b131 100644
--- a/code/game/jobs/job/medical.dm
+++ b/code/game/jobs/job/medical.dm
@@ -19,7 +19,7 @@
equip(var/mob/living/carbon/human/H)
if(!H) return 0
- H.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/cmo(H), slot_ears)
+ H.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/cmo(H), slot_l_ear)
switch(H.backbag)
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/medic(H), slot_back)
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_med(H), slot_back)
@@ -53,7 +53,7 @@
equip(var/mob/living/carbon/human/H)
if(!H) return 0
- H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_med(H), slot_ears)
+ H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_med(H), slot_l_ear)
switch(H.backbag)
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/medic(H), slot_back)
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_med(H), slot_back)
@@ -115,7 +115,7 @@
equip(var/mob/living/carbon/human/H)
if(!H) return 0
- H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_med(H), slot_ears)
+ H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_med(H), slot_l_ear)
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chemist(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(H), slot_shoes)
H.equip_to_slot_or_del(new /obj/item/device/pda/chemist(H), slot_belt)
@@ -143,7 +143,7 @@
equip(var/mob/living/carbon/human/H)
if(!H) return 0
- H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_medsci(H), slot_ears)
+ H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_medsci(H), slot_l_ear)
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/geneticist(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(H), slot_shoes)
H.equip_to_slot_or_del(new /obj/item/device/pda/geneticist(H), slot_belt)
@@ -171,7 +171,7 @@
equip(var/mob/living/carbon/human/H)
if(!H) return 0
- H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_med(H), slot_ears)
+ H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_med(H), slot_l_ear)
switch(H.backbag)
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/medic(H), slot_back)
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_med(H), slot_back)
@@ -204,7 +204,7 @@
equip(var/mob/living/carbon/human/H)
if(!H) return 0
- H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_med(H), slot_ears)
+ H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_med(H), slot_l_ear)
switch(H.backbag)
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/medic(H), slot_back)
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_med(H), slot_back)
diff --git a/code/game/jobs/job/science.dm b/code/game/jobs/job/science.dm
index fbfe286e484..c4c117b260c 100644
--- a/code/game/jobs/job/science.dm
+++ b/code/game/jobs/job/science.dm
@@ -21,7 +21,7 @@
equip(var/mob/living/carbon/human/H)
if(!H) return 0
- H.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/rd(H), slot_ears)
+ H.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/rd(H), slot_l_ear)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(H), slot_shoes)
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/research_director(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/device/pda/heads/rd(H), slot_belt)
@@ -50,7 +50,7 @@
equip(var/mob/living/carbon/human/H)
if(!H) return 0
- H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sci(H), slot_ears)
+ H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sci(H), slot_l_ear)
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/scientist(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(H), slot_shoes)
H.equip_to_slot_or_del(new /obj/item/device/pda/toxins(H), slot_belt)
@@ -77,7 +77,7 @@
equip(var/mob/living/carbon/human/H)
if(!H) return 0
- H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sci(H), slot_ears)
+ H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sci(H), slot_l_ear)
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/scientist(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(H), slot_shoes)
H.equip_to_slot_or_del(new /obj/item/device/pda/toxins(H), slot_belt)
@@ -104,7 +104,7 @@
equip(var/mob/living/carbon/human/H)
if(!H) return 0
- H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sci(H), slot_ears)
+ H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sci(H), slot_l_ear)
if(H.backbag == 2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(H), slot_back)
if(H.backbag == 3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_norm(H), slot_back)
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/roboticist(H), slot_w_uniform)
diff --git a/code/game/jobs/job/security.dm b/code/game/jobs/job/security.dm
index dd04b9cbac7..b8f91554d47 100644
--- a/code/game/jobs/job/security.dm
+++ b/code/game/jobs/job/security.dm
@@ -25,7 +25,7 @@
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/security(H), slot_back)
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_sec(H), slot_back)
if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back)
- H.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/hos(H), slot_ears)
+ H.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/hos(H), slot_l_ear)
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/head_of_security(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/jackboots(H), slot_shoes)
H.equip_to_slot_or_del(new /obj/item/device/pda/heads/hos(H), slot_belt)
@@ -61,7 +61,7 @@
equip(var/mob/living/carbon/human/H)
if(!H) return 0
- H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sec(H), slot_ears)
+ H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sec(H), slot_l_ear)
switch(H.backbag)
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/security(H), slot_back)
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_sec(H), slot_back)
@@ -100,7 +100,7 @@
minimal_player_age = 7
equip(var/mob/living/carbon/human/H)
if(!H) return 0
- H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sec(H), slot_ears)
+ H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sec(H), slot_l_ear)
switch(H.backbag)
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(H), slot_back)
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_norm(H), slot_back)
@@ -146,7 +146,7 @@
minimal_player_age = 7
equip(var/mob/living/carbon/human/H)
if(!H) return 0
- H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sec(H), slot_ears)
+ H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sec(H), slot_l_ear)
switch(H.backbag)
if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/security(H), slot_back)
if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_sec(H), slot_back)
diff --git a/code/game/jobs/job_controller.dm b/code/game/jobs/job_controller.dm
index fc5f7df203a..cb8a73278c6 100644
--- a/code/game/jobs/job_controller.dm
+++ b/code/game/jobs/job_controller.dm
@@ -431,7 +431,7 @@ var/global/datum/controller/occupations/job_master
H << "You are playing a job that is important for Game Progression. If you have to disconnect, please notify the admins via adminhelp."
spawnId(H, rank, alt_title)
- H.equip_to_slot_or_del(new /obj/item/device/radio/headset(H), slot_ears)
+ H.equip_to_slot_or_del(new /obj/item/device/radio/headset(H), slot_l_ear)
//Gives glasses to the vision impaired
if(H.disabilities & NEARSIGHTED)
diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm
index acaabc984c0..9d499e168c8 100644
--- a/code/game/machinery/computer/communications.dm
+++ b/code/game/machinery/computer/communications.dm
@@ -76,7 +76,7 @@
var/obj/item/device/pda/pda = I
I = pda.id
if (I && istype(I))
- if(access_captain in I.access)
+ if(access_captain in I.access || access_heads in I.access) //Let heads change the alert level.
var/old_level = security_level
if(!tmp_alertlevel) tmp_alertlevel = SEC_LEVEL_GREEN
if(tmp_alertlevel < SEC_LEVEL_GREEN) tmp_alertlevel = SEC_LEVEL_GREEN
@@ -179,16 +179,16 @@
if("MessageCentcomm")
if(src.authenticated==2)
if(centcomm_message_cooldown)
- usr << "Arrays recycling. Please stand by."
+ usr << "\red Arrays recycling. Please stand by."
return
- var/input = stripped_input(usr, "Please choose a message to transmit to Centcomm via quantum entanglement. Please be aware that this process is very expensive, and abuse will lead to... termination. Transmission does not guarantee a response.", "To abort, send an empty message.", "")
+ var/input = stripped_input(usr, "Please choose a message to transmit to Centcomm via quantum entanglement. Please be aware that this process is very expensive, and abuse will lead to... termination. Transmission does not guarantee a response. There is a 30 second delay before you may send another message, be clear, full and concise.", "To abort, send an empty message.", "")
if(!input || !(usr in view(1,src)))
return
Centcomm_announce(input, usr)
- usr << "Message transmitted."
- log_say("[key_name(usr)] has made a Centcomm announcement: [input]")
+ usr << "\blue Message transmitted."
+ log_say("[key_name(usr)] has made an IA Centcomm announcement: [input]")
centcomm_message_cooldown = 1
- spawn(6000)//10 minute cooldown
+ spawn(300)//10 minute cooldown
centcomm_message_cooldown = 0
@@ -196,16 +196,16 @@
if("MessageSyndicate")
if((src.authenticated==2) && (src.emagged))
if(centcomm_message_cooldown)
- usr << "Arrays recycling. Please stand by."
+ usr << "\red Arrays recycling. Please stand by."
return
- var/input = stripped_input(usr, "Please choose a message to transmit to \[ABNORMAL ROUTING CORDINATES\] via quantum entanglement. Please be aware that this process is very expensive, and abuse will lead to... termination. Transmission does not guarantee a response.", "To abort, send an empty message.", "")
+ var/input = stripped_input(usr, "Please choose a message to transmit to \[ABNORMAL ROUTING CORDINATES\] via quantum entanglement. Please be aware that this process is very expensive, and abuse will lead to... termination. Transmission does not guarantee a response. There is a 30 second delay before you may send another message, be clear, full and concise.", "To abort, send an empty message.", "")
if(!input || !(usr in view(1,src)))
return
Syndicate_announce(input, usr)
- usr << "Message transmitted."
+ usr << "\blue Message transmitted."
log_say("[key_name(usr)] has made a Syndicate announcement: [input]")
centcomm_message_cooldown = 1
- spawn(6000)//10 minute cooldown
+ spawn(300)//10 minute cooldown
centcomm_message_cooldown = 0
if("RestoreBackup")
@@ -308,7 +308,7 @@
dat += "
\[ Send an emergency message to \[UNKNOWN\] \]"
dat += "
\[ Restore Backup Routing Data \]"
- dat += "
\[ Change alert level \]"
+ dat += "
\[ Change alert level \]"
if(emergency_shuttle.location==0)
if (emergency_shuttle.online)
dat += "
\[ Cancel Shuttle Call \]"
diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm
index 91b2455eb03..b461cd4b12b 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"
M.sleeping = 0
diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index c55684eb197..39252964f6c 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -461,11 +461,21 @@
if( !(slot_flags & SLOT_HEAD) )
return 0
return 1
- if(slot_ears)
- if(H.ears)
+ if(slot_l_ear)
+ if(H.l_ear)
return 0
if( !(slot_flags & SLOT_EARS) )
return 0
+ if( (slot_flags & SLOT_TWOEARS) && H.r_ear )
+ return 0
+ return 1
+ if(slot_r_ear)
+ if(H.r_ear)
+ return 0
+ if( !(slot_flags & SLOT_EARS) )
+ return 0
+ if( (slot_flags & SLOT_TWOEARS) && H.l_ear )
+ return 0
return 1
if(slot_w_uniform)
if(H.w_uniform)
diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm
index 05285807d71..f8b908264d9 100644
--- a/code/game/objects/items/devices/radio/headset.dm
+++ b/code/game/objects/items/devices/radio/headset.dm
@@ -23,7 +23,7 @@
/obj/item/device/radio/headset/receive_range(freq, level)
if(ishuman(src.loc))
var/mob/living/carbon/human/H = src.loc
- if(H.ears == src)
+ if(H.l_ear == src || H.r_ear == src)
return ..(freq, level)
return -1
diff --git a/code/game/objects/items/weapons/grenades/flashbang.dm b/code/game/objects/items/weapons/grenades/flashbang.dm
index 2ff047a7465..1a50e9ad05c 100644
--- a/code/game/objects/items/weapons/grenades/flashbang.dm
+++ b/code/game/objects/items/weapons/grenades/flashbang.dm
@@ -38,7 +38,7 @@
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(HULK in M.mutations)
ear_safety += 1
diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm
index 1f08c112306..9d6cab7723e 100644
--- a/code/game/objects/structures/watercloset.dm
+++ b/code/game/objects/structures/watercloset.dm
@@ -258,8 +258,11 @@
if(H.glasses && washglasses)
if(H.glasses.clean_blood())
H.update_inv_glasses(0)
- if(H.ears && washears)
- if(H.ears.clean_blood())
+ if(H.l_ear && washears)
+ if(H.l_ear.clean_blood())
+ H.update_inv_ears(0)
+ if(H.r_ear && washears)
+ if(H.r_ear.clean_blood())
H.update_inv_ears(0)
if(H.belt)
if(H.belt.clean_blood())
diff --git a/code/game/response_team.dm b/code/game/response_team.dm
index 282db62f72b..a518cef566e 100644
--- a/code/game/response_team.dm
+++ b/code/game/response_team.dm
@@ -280,13 +280,12 @@ proc/trigger_armed_response_team(var/force = 0)
/mob/living/carbon/human/proc/equip_strike_team(leader_selected = 0)
//Special radio setup
- equip_to_slot_or_del(new /obj/item/device/radio/headset/ert(src), slot_ears)
+ equip_to_slot_or_del(new /obj/item/device/radio/headset/ert(src), slot_l_ear)
//Replaced with new ERT uniform
equip_to_slot_or_del(new /obj/item/clothing/under/rank/centcom_officer(src), slot_w_uniform)
equip_to_slot_or_del(new /obj/item/clothing/shoes/swat(src), slot_shoes)
equip_to_slot_or_del(new /obj/item/clothing/gloves/swat(src), slot_gloves)
- equip_to_slot_or_del(new /obj/item/device/radio/headset/ert(src), slot_ears)
equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses(src), slot_glasses)
equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(src), slot_back)
/*
diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm
index e5a6574ccca..f8165e848cd 100644
--- a/code/modules/admin/topic.dm
+++ b/code/modules/admin/topic.dm
@@ -1405,7 +1405,7 @@
if(!istype(H))
usr << "This can only be used on instances of type /mob/living/carbon/human"
return
- if(!istype(H.ears, /obj/item/device/radio/headset))
+ if(!istype(H.l_ear, /obj/item/device/radio/headset) && !istype(H.r_ear, /obj/item/device/radio/headset))
usr << "The person you are trying to contact is not wearing a headset"
return
@@ -1415,14 +1415,14 @@
src.owner << "You sent [input] to [H] via a secure channel."
log_admin("[src.owner] replied to [key_name(H)]'s Centcomm message with the message [input].")
message_admins("[src.owner] replied to [key_name(H)]'s Centcom message with: \"[input]\"")
- H << "You hear something crackle in your headset for a moment before a voice speaks. \"Please stand by for a message from Central Command. Message as follows. [input]. Message ends.\""
+ H << "You hear something crackle in your headset for a moment before a voice speaks. \"Please stand by for a message from Central Command. Message as follows. \"[input]\" Message ends.\""
else if(href_list["SyndicateReply"])
var/mob/living/carbon/human/H = locate(href_list["SyndicateReply"])
if(!istype(H))
usr << "This can only be used on instances of type /mob/living/carbon/human"
return
- if(!istype(H.ears, /obj/item/device/radio/headset))
+ if(!istype(H.l_ear, /obj/item/device/radio/headset) && !istype(H.r_ear, /obj/item/device/radio/headset))
usr << "The person you are trying to contact is not wearing a headset"
return
@@ -1431,7 +1431,7 @@
src.owner << "You sent [input] to [H] via a secure channel."
log_admin("[src.owner] replied to [key_name(H)]'s Syndicate message with the message [input].")
- H << "You hear something crackle in your headset for a moment before a voice speaks. \"Please stand by for a message from your benefactor. Message as follows, agent. [input]. Message ends.\""
+ H << "You hear something crackle in your headset for a moment before a voice speaks. \"Please stand by for a message from your benefactor. Message as follows, agent. \"[input]\" Message ends.\""
else if(href_list["CentcommFaxView"])
var/info = locate(href_list["CentcommFaxView"])
diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm
index f08f5c3a30a..0659622f6a0 100644
--- a/code/modules/admin/verbs/debug.dm
+++ b/code/modules/admin/verbs/debug.dm
@@ -667,7 +667,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(M), slot_gloves)
M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/clown_hat(M), slot_wear_mask)
M.equip_to_slot_or_del(new /obj/item/clothing/head/chaplain_hood(M), slot_head)
- M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears)
+ M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_l_ear)
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/monocle(M), slot_glasses)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/chaplain_hoodie(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/weapon/reagent_containers/food/snacks/grown/banana(M), slot_l_store)
@@ -689,7 +689,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/latex(M), slot_gloves)
M.equip_to_slot_or_del(new /obj/item/clothing/mask/surgical(M), slot_wear_mask)
M.equip_to_slot_or_del(new /obj/item/clothing/head/welding(M), slot_head)
- M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears)
+ M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_l_ear)
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/monocle(M), slot_glasses)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/apron(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/weapon/kitchenknife(M), slot_l_store)
@@ -706,7 +706,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
M.equip_to_slot_or_del(new /obj/item/clothing/under/suit_jacket(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(M), slot_gloves)
- M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears)
+ M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_l_ear)
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses(M), slot_glasses)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/wcoat(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/weapon/melee/energy/sword(M), slot_l_store)
@@ -747,7 +747,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
M.equip_if_possible(new /obj/item/clothing/under/rank/centcom/representative(M), slot_w_uniform)
M.equip_if_possible(new /obj/item/clothing/shoes/centcom(M), slot_shoes)
M.equip_if_possible(new /obj/item/clothing/gloves/white(M), slot_gloves)
- M.equip_if_possible(new /obj/item/device/radio/headset/heads/hop(M), slot_ears)
+ M.equip_if_possible(new /obj/item/device/radio/headset/heads/hop(M), slot_l_ear)
var/obj/item/device/pda/heads/pda = new(M)
pda.owner = M.real_name
@@ -772,7 +772,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
M.equip_if_possible(new /obj/item/clothing/under/rank/centcom/officer(M), slot_w_uniform)
M.equip_if_possible(new /obj/item/clothing/shoes/centcom(M), slot_shoes)
M.equip_if_possible(new /obj/item/clothing/gloves/white(M), slot_gloves)
- M.equip_if_possible(new /obj/item/device/radio/headset/heads/captain(M), slot_ears)
+ M.equip_if_possible(new /obj/item/device/radio/headset/heads/captain(M), slot_l_ear)
M.equip_if_possible(new /obj/item/clothing/head/beret/centcom/officer(M), slot_head)
var/obj/item/device/pda/heads/pda = new(M)
@@ -797,7 +797,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
M.equip_if_possible(new /obj/item/clothing/under/rank/centcom/captain(M), slot_w_uniform)
M.equip_if_possible(new /obj/item/clothing/shoes/centcom(M), slot_shoes)
M.equip_if_possible(new /obj/item/clothing/gloves/white(M), slot_gloves)
- M.equip_if_possible(new /obj/item/device/radio/headset/heads/captain(M), slot_ears)
+ M.equip_if_possible(new /obj/item/device/radio/headset/heads/captain(M), slot_l_ear)
M.equip_if_possible(new /obj/item/clothing/head/beret/centcom/captain(M), slot_head)
var/obj/item/device/pda/heads/pda = new(M)
@@ -821,7 +821,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
M.equip_to_slot_or_del(new /obj/item/clothing/under/rank/centcom_officer(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/swat(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/swat(M), slot_gloves)
- M.equip_to_slot_or_del(new /obj/item/device/radio/headset/ert(M), slot_ears)
+ M.equip_to_slot_or_del(new /obj/item/device/radio/headset/ert(M), slot_l_ear)
M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/gun(M), slot_belt)
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses(M), slot_glasses)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(M), slot_back)
@@ -840,7 +840,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
M.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/swat/officer(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(M), slot_gloves)
- M.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/captain(M), slot_ears)
+ M.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/captain(M), slot_l_ear)
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/eyepatch(M), slot_glasses)
M.equip_to_slot_or_del(new /obj/item/clothing/mask/cigarette/cigar/havana(M), slot_wear_mask)
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/deathsquad/beret(M), slot_head)
@@ -861,7 +861,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
M.equip_to_slot_or_del(new /obj/item/clothing/under/lightpurple(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/wizrobe(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(M), slot_shoes)
- M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears)
+ M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_l_ear)
M.equip_to_slot_or_del(new /obj/item/clothing/head/wizard(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/weapon/teleportation_scroll(M), slot_r_store)
M.equip_to_slot_or_del(new /obj/item/weapon/spellbook(M), slot_r_hand)
@@ -873,7 +873,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
M.equip_to_slot_or_del(new /obj/item/clothing/under/lightpurple(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/wizrobe/red(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(M), slot_shoes)
- M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears)
+ M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_l_ear)
M.equip_to_slot_or_del(new /obj/item/clothing/head/wizard/red(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/weapon/teleportation_scroll(M), slot_r_store)
M.equip_to_slot_or_del(new /obj/item/weapon/spellbook(M), slot_r_hand)
@@ -885,7 +885,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
M.equip_to_slot_or_del(new /obj/item/clothing/under/lightpurple(M), slot_w_uniform)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/wizrobe/marisa(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal/marisa(M), slot_shoes)
- M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears)
+ M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_l_ear)
M.equip_to_slot_or_del(new /obj/item/clothing/head/wizard/marisa(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/weapon/teleportation_scroll(M), slot_r_store)
M.equip_to_slot_or_del(new /obj/item/weapon/spellbook(M), slot_r_hand)
@@ -896,7 +896,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
M.equip_to_slot_or_del(new /obj/item/clothing/head/hgpiratecap(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat(M), slot_shoes)
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(M), slot_gloves)
- M.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/captain(M), slot_ears)
+ M.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/captain(M), slot_l_ear)
M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/eyepatch(M), slot_glasses)
M.equip_to_slot_or_del(new /obj/item/clothing/suit/hgpirate(M), slot_wear_suit)
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(M), slot_back)
diff --git a/code/modules/admin/verbs/onlyone.dm b/code/modules/admin/verbs/onlyone.dm
index 06cb9f64564..822043720d7 100644
--- a/code/modules/admin/verbs/onlyone.dm
+++ b/code/modules/admin/verbs/onlyone.dm
@@ -31,7 +31,7 @@
del(I)
H.equip_to_slot_or_del(new /obj/item/clothing/under/kilt(H), slot_w_uniform)
- H.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/captain(H), slot_ears)
+ H.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/captain(H), slot_l_ear)
H.equip_to_slot_or_del(new /obj/item/clothing/head/beret(H), slot_head)
H.equip_to_slot_or_del(new /obj/item/weapon/claymore(H), slot_l_hand)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat(H), slot_shoes)
diff --git a/code/modules/admin/verbs/pray.dm b/code/modules/admin/verbs/pray.dm
index 906ec8a5ac4..fd91142cdf6 100644
--- a/code/modules/admin/verbs/pray.dm
+++ b/code/modules/admin/verbs/pray.dm
@@ -27,9 +27,9 @@
feedback_add_details("admin_verb","PR") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
//log_admin("HELP: [key_name(src)]: [msg]")
-/proc/Centcomm_announce(var/text , var/mob/Sender)
+/proc/Centcomm_announce(var/text , var/mob/Sender , var/iamessage)
var/msg = copytext(sanitize(text), 1, MAX_MESSAGE_LEN)
- msg = "\blue CENTCOMM:[key_name(Sender, 1)] (PP) (VV) (SM) (JMP) (CA) (BSA) (RPLY): [msg]"
+ msg = "\blue CENTCOMM[iamessage ? " IA" : ""]:[key_name(Sender, 1)] (PP) (VV) (SM) (JMP) (CA) (BSA) (RPLY): [msg]"
admins << msg
/proc/Syndicate_announce(var/text , var/mob/Sender)
diff --git a/code/modules/admin/verbs/striketeam.dm b/code/modules/admin/verbs/striketeam.dm
index ca5d8e5cb80..8ea48ea4898 100644
--- a/code/modules/admin/verbs/striketeam.dm
+++ b/code/modules/admin/verbs/striketeam.dm
@@ -125,7 +125,7 @@ var/global/sent_strike_team = 0
var/obj/item/device/radio/R = new /obj/item/device/radio/headset(src)
R.set_frequency(1441)
- equip_to_slot_or_del(R, slot_ears)
+ equip_to_slot_or_del(R, slot_l_ear)
if (leader_selected == 0)
equip_to_slot_or_del(new /obj/item/clothing/under/color/green(src), slot_w_uniform)
else
diff --git a/code/modules/admin/verbs/striketeam_syndicate.dm b/code/modules/admin/verbs/striketeam_syndicate.dm
index c74e0b9f70c..e8c446d966e 100644
--- a/code/modules/admin/verbs/striketeam_syndicate.dm
+++ b/code/modules/admin/verbs/striketeam_syndicate.dm
@@ -131,7 +131,7 @@ var/global/sent_syndicate_strike_team = 0
var/obj/item/device/radio/R = new /obj/item/device/radio/headset/syndicate(src)
R.set_frequency(SYND_FREQ) //Same frequency as the syndicate team in Nuke mode.
- equip_to_slot_or_del(R, slot_ears)
+ equip_to_slot_or_del(R, slot_l_ear)
equip_to_slot_or_del(new /obj/item/clothing/under/syndicate(src), slot_w_uniform)
equip_to_slot_or_del(new /obj/item/clothing/shoes/swat(src), slot_shoes)
if (!syndicate_leader_selected)
diff --git a/code/modules/admin/verbs/vox_raiders.dm b/code/modules/admin/verbs/vox_raiders.dm
index be4b04f42fe..1e3a8defe74 100644
--- a/code/modules/admin/verbs/vox_raiders.dm
+++ b/code/modules/admin/verbs/vox_raiders.dm
@@ -4,7 +4,7 @@ var/global/vox_tick = 1
var/obj/item/device/radio/R = new /obj/item/device/radio/headset/syndicate(src)
R.set_frequency(SYND_FREQ) //Same frequency as the syndicate team in Nuke mode.
- equip_to_slot_or_del(R, slot_ears)
+ equip_to_slot_or_del(R, slot_l_ear)
equip_to_slot_or_del(new /obj/item/clothing/under/vox/vox_robes(src), slot_w_uniform)
equip_to_slot_or_del(new /obj/item/clothing/shoes/magboots/vox(src), slot_shoes) // REPLACE THESE WITH CODED VOX ALTERNATIVES.
diff --git a/code/modules/awaymissions/corpse.dm b/code/modules/awaymissions/corpse.dm
index e0cc01cb3e3..e9304976cce 100644
--- a/code/modules/awaymissions/corpse.dm
+++ b/code/modules/awaymissions/corpse.dm
@@ -42,7 +42,7 @@
if(src.corpsegloves)
M.equip_to_slot_or_del(new src.corpsegloves(M), slot_gloves)
if(src.corpseradio)
- M.equip_to_slot_or_del(new src.corpseradio(M), slot_ears)
+ M.equip_to_slot_or_del(new src.corpseradio(M), slot_l_ear)
if(src.corpseglasses)
M.equip_to_slot_or_del(new src.corpseglasses(M), slot_glasses)
if(src.corpsemask)
diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm
index 2d13a0ce92f..1e3213e66ea 100644
--- a/code/modules/clothing/clothing.dm
+++ b/code/modules/clothing/clothing.dm
@@ -9,12 +9,60 @@
throwforce = 2
slot_flags = SLOT_EARS
+/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(slot_flags & SLOT_TWOEARS )
+ 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_hands(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 = 'icons/mob/screen1_Midnight.dmi'
+ icon_state = "block"
+ slot_flags = SLOT_EARS | SLOT_TWOEARS
+
+ New(var/obj/O)
+ name = O.name
+ desc = O.desc
+ icon = 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"
item_state = "earmuffs"
-
+ slot_flags = SLOT_EARS | SLOT_TWOEARS
//Glasses
/obj/item/clothing/glasses
diff --git a/code/modules/mob/inventory.dm b/code/modules/mob/inventory.dm
index 0da20f1a5e7..0bcf1b92442 100644
--- a/code/modules/mob/inventory.dm
+++ b/code/modules/mob/inventory.dm
@@ -194,7 +194,8 @@
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
@@ -255,9 +256,13 @@
if(!src.wear_id && src.w_uniform)
src.wear_id = W
equipped = 1
- if(slot_ears)
- if(!src.ears)
- src.ears = W
+ if(slot_l_ear)
+ if(!src.l_ear)
+ src.l_ear = W
+ equipped = 1
+ if(slot_r_ear)
+ if(!src.r_ear)
+ src.r_ear = W
equipped = 1
if(slot_glasses)
if(!src.glasses)
diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm
index e074d9caae8..5efefee11dc 100644
--- a/code/modules/mob/living/carbon/human/examine.dm
+++ b/code/modules/mob/living/carbon/human/examine.dm
@@ -163,9 +163,13 @@
else
msg += "[t_He] [t_has] \icon[glasses] \a [glasses] covering [t_his] eyes.\n"
- //ears
- if(ears && !skipears)
- msg += "[t_He] [t_has] \icon[ears] \a [ears] on [t_his] ears.\n"
+ //left ear
+ if(l_ear && !skipears)
+ msg += "[t_He] [t_has] \icon[l_ear] \a [l_ear] on [t_his] left ear.\n"
+
+ //right ear
+ if(r_ear && !skipears)
+ msg += "[t_He] [t_has] \icon[r_ear] \a [r_ear] on [t_his] right ear.\n"
//ID
if(wear_id)
diff --git a/code/modules/mob/living/carbon/human/hud.dm b/code/modules/mob/living/carbon/human/hud.dm
index c1cf1634694..70f204bbc4e 100644
--- a/code/modules/mob/living/carbon/human/hud.dm
+++ b/code/modules/mob/living/carbon/human/hud.dm
@@ -249,11 +249,20 @@
src.other += inv_box
inv_box = new /obj/screen/inventory()
- inv_box.name = "ears"
+ inv_box.name = "l_ear"
inv_box.icon = ui_style
inv_box.icon_state = "ears"
- inv_box.screen_loc = ui_ears
- inv_box.slot_id = slot_ears
+ inv_box.screen_loc = ui_l_ear
+ inv_box.slot_id = slot_l_ear
+ inv_box.layer = 19
+ src.other += inv_box
+
+ inv_box = new /obj/screen/inventory()
+ inv_box.name = "r_ear"
+ inv_box.icon = ui_style
+ inv_box.icon_state = "ears"
+ inv_box.screen_loc = ui_r_ear
+ inv_box.slot_id = slot_r_ear
inv_box.layer = 19
src.other += inv_box
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index cfef1b78a04..e2548ff08fc 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -198,7 +198,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
if (prob(70) && !shielded)
@@ -208,7 +208,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)
@@ -398,7 +398,8 @@
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")]
@@ -812,7 +813,7 @@
/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/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm
index d9768992d3f..315b3f40915 100644
--- a/code/modules/mob/living/carbon/human/human_defines.dm
+++ b/code/modules/mob/living/carbon/human/human_defines.dm
@@ -34,7 +34,8 @@
var/obj/item/gloves = null
var/obj/item/glasses = null
var/obj/item/head = null
- var/obj/item/ears = null
+ var/obj/item/l_ear = null
+ var/obj/item/r_ear = null
var/obj/item/wear_id = null
var/obj/item/r_store = null
var/obj/item/l_store = null
diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm
index 8e5938fffdf..46d7083644b 100644
--- a/code/modules/mob/living/carbon/human/inventory.dm
+++ b/code/modules/mob/living/carbon/human/inventory.dm
@@ -31,7 +31,9 @@
if(slot_wear_id)
// the only relevant check for this is the uniform check
return 1
- if(slot_ears)
+ if(slot_l_ear)
+ return has_organ("head")
+ if(slot_r_ear)
return has_organ("head")
if(slot_glasses)
return has_organ("head")
@@ -92,8 +94,12 @@
update_hair(0) //rebuild hair
success = 1
update_inv_head()
- else if (W == ears)
- ears = null
+ else if (W == l_ear)
+ l_ear = null
+ success = 1
+ update_inv_ears()
+ else if (W == r_ear)
+ r_ear = null
success = 1
update_inv_ears()
else if (W == shoes)
@@ -215,8 +221,22 @@
src.wear_id = W
W.equipped(src, slot)
update_inv_wear_id(redraw_mob)
- if(slot_ears)
- src.ears = W
+ if(slot_l_ear)
+ src.l_ear = W
+ if(l_ear.slot_flags & SLOT_TWOEARS)
+ var/obj/item/clothing/ears/offear/O = new(W)
+ O.loc = src
+ src.r_ear = O
+ O.layer = 20
+ W.equipped(src, slot)
+ update_inv_ears(redraw_mob)
+ if(slot_r_ear)
+ src.r_ear = W
+ if(r_ear.slot_flags & SLOT_TWOEARS)
+ var/obj/item/clothing/ears/offear/O = new(W)
+ O.loc = src
+ src.l_ear = O
+ O.layer = 20
W.equipped(src, slot)
update_inv_ears(redraw_mob)
if(slot_glasses)
@@ -393,12 +413,18 @@
return
else
message = "\red [source] is trying to take off the [target.glasses] from [target]'s eyes!"
- if("ears")
- if(target.ears && !target.ears.canremove)
- message = "\red [source] fails to take off \a [target.ears] from [target]'s ears!"
+ if("l_ear")
+ if(target.l_ear && !target.l_ear.canremove)
+ message = "\red [source] fails to take off \a [target.l_ear] from [target]'s left ear!"
return
else
- message = "\red [source] is trying to take off the [target.ears] from [target]'s ears!"
+ message = "\red [source] is trying to take off the [target.l_ear] from [target]'s left ear!"
+ if("r_ear")
+ if(target.r_ear && !target.r_ear.canremove)
+ message = "\red [source] fails to take off \a [target.r_ear] from [target]'s right ear!"
+ return
+ else
+ message = "\red [source] is trying to take off the [target.r_ear] from [target]'s right ear!"
if("head")
if(target.head && !target.head.canremove)
message = "\red [source] fails to take off \a [target.head] from [target]'s head!"
@@ -510,10 +536,14 @@ It can still be worn/put on as normal.
slot_to_process = slot_head
if (target.head && target.head.canremove)
strip_item = target.head
- if("ears")
- slot_to_process = slot_ears
- if (target.ears)
- strip_item = target.ears
+ if("l_ear")
+ slot_to_process = slot_l_ear
+ if (target.l_ear)
+ strip_item = target.l_ear
+ if("r_ear")
+ slot_to_process = slot_r_ear
+ if (target.r_ear)
+ strip_item = target.r_ear
if("shoes")
slot_to_process = slot_shoes
if (target.shoes && target.shoes.canremove)
diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm
index 9efb72f203e..f026d0c50cd 100644
--- a/code/modules/mob/living/carbon/human/life.dm
+++ b/code/modules/mob/living/carbon/human/life.dm
@@ -1039,7 +1039,7 @@
ear_deaf = max(ear_deaf, 1)
else if(ear_deaf) //deafness, heals slowly over time
ear_deaf = max(ear_deaf-1, 0)
- else if(istype(ears, /obj/item/clothing/ears/earmuffs)) //resting your ears with earmuffs heals ear damage faster
+ else if(istype(l_ear, /obj/item/clothing/ears/earmuffs) || istype(r_ear, /obj/item/clothing/ears/earmuffs)) //resting your ears with earmuffs heals ear damage faster
ear_damage = max(ear_damage-0.15, 0)
ear_deaf = max(ear_deaf, 1)
else if(ear_damage < 25) //ear damage heals slowly under this threshold. otherwise you'll need earmuffs
diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm
index cce4d70d3db..45b42a9447f 100644
--- a/code/modules/mob/living/carbon/human/update_icons.dm
+++ b/code/modules/mob/living/carbon/human/update_icons.dm
@@ -576,9 +576,13 @@ proc/get_damage_icon_part(damage_state, body_part)
if(update_icons) update_icons()
/mob/living/carbon/human/update_inv_ears(var/update_icons=1)
- if(ears)
- overlays_lying[EARS_LAYER] = image("icon" = 'icons/mob/ears.dmi', "icon_state" = "[ears.icon_state]2")
- overlays_standing[EARS_LAYER] = image("icon" = 'icons/mob/ears.dmi', "icon_state" = "[ears.icon_state]")
+ if(l_ear || r_ear)
+ if(l_ear)
+ overlays_lying[EARS_LAYER] = image("icon" = 'icons/mob/ears.dmi', "icon_state" = "[l_ear.icon_state]2")
+ overlays_standing[EARS_LAYER] = image("icon" = 'icons/mob/ears.dmi', "icon_state" = "[l_ear.icon_state]")
+ if(r_ear)
+ overlays_lying[EARS_LAYER] = image("icon" = 'icons/mob/ears.dmi', "icon_state" = "[r_ear.icon_state]2")
+ overlays_standing[EARS_LAYER] = image("icon" = 'icons/mob/ears.dmi', "icon_state" = "[r_ear.icon_state]")
else
overlays_lying[EARS_LAYER] = null
overlays_standing[EARS_LAYER] = null
diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm
index 3c13b8befd4..510fd52709a 100644
--- a/code/modules/mob/living/say.dm
+++ b/code/modules/mob/living/say.dm
@@ -1,7 +1,7 @@
#define SAY_MINIMUM_PRESSURE 10
var/list/department_radio_keys = list(
- ":r" = "right hand", "#r" = "right hand", ".r" = "right hand",
- ":l" = "left hand", "#l" = "left hand", ".l" = "left hand",
+ ":r" = "right ear", "#r" = "right ear", ".r" = "right ear",
+ ":l" = "left ear", "#l" = "left ear", ".l" = "left ear",
":i" = "intercom", "#i" = "intercom", ".i" = "intercom",
":h" = "department", "#h" = "department", ".h" = "department",
":c" = "Command", "#c" = "Command", ".c" = "Command",
@@ -16,8 +16,8 @@ var/list/department_radio_keys = list(
":u" = "Supply", "#u" = "Supply", ".u" = "Supply",
":g" = "changeling", "#g" = "changeling", ".g" = "changeling",
- ":R" = "right hand", "#R" = "right hand", ".R" = "right hand",
- ":L" = "left hand", "#L" = "left hand", ".L" = "left hand",
+ ":R" = "right ear", "#R" = "right ear", ".R" = "right ear",
+ ":L" = "left ear", "#L" = "left ear", ".L" = "left ear",
":I" = "intercom", "#I" = "intercom", ".I" = "intercom",
":H" = "department", "#H" = "department", ".H" = "department",
":C" = "Command", "#C" = "Command", ".C" = "Command",
@@ -34,8 +34,8 @@ var/list/department_radio_keys = list(
//kinda localization -- rastaf0
//same keys as above, but on russian keyboard layout. This file uses cp1251 as encoding.
- ":ê" = "right hand", "#ê" = "right hand", ".ê" = "right hand",
- ":ä" = "left hand", "#ä" = "left hand", ".ä" = "left hand",
+ ":ê" = "right ear", "#ê" = "right ear", ".ê" = "right ear",
+ ":ä" = "left ear", "#ä" = "left ear", ".ä" = "left ear",
":ø" = "intercom", "#ø" = "intercom", ".ø" = "intercom",
":ð" = "department", "#ð" = "department", ".ð" = "department",
":ñ" = "Command", "#ñ" = "Command", ".ñ" = "Command",
@@ -59,8 +59,12 @@ var/list/department_radio_keys = list(
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
@@ -68,10 +72,14 @@ var/list/department_radio_keys = list(
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
+ if(dongle.translate_binary) return 1
/mob/living/say(var/message)
@@ -179,27 +187,31 @@ var/list/department_radio_keys = list(
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
+ is_speaking_radio = 1
+ else if (src:r_ear)
+ src:r_ear.talk_into(src, message)
+ used_radios += src:r_ear
is_speaking_radio = 1
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
is_speaking_radio = 1
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
is_speaking_radio = 1
message_range = 1
@@ -233,9 +245,13 @@ var/list/department_radio_keys = list(
if ("department")
if(istype(src, /mob/living/carbon))
- 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
+ is_speaking_radio = 1
+ if (src:r_ear)
+ src:r_ear.talk_into(src, message, message_mode)
+ used_radios += src:r_ear
is_speaking_radio = 1
else if(istype(src, /mob/living/silicon/robot))
if (src:radio)
@@ -267,9 +283,12 @@ var/list/department_radio_keys = list(
R.radio.talk_into(src, message, message_mode)
used_radios += R.radio
else
- 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/code/modules/mob/living/simple_animal/corpse.dm b/code/modules/mob/living/simple_animal/corpse.dm
index e3f7f3ceac2..8c7561f7d71 100644
--- a/code/modules/mob/living/simple_animal/corpse.dm
+++ b/code/modules/mob/living/simple_animal/corpse.dm
@@ -43,7 +43,7 @@
if(src.corpsegloves)
M.equip_to_slot_or_del(new src.corpsegloves(M), slot_gloves)
if(src.corpseradio)
- M.equip_to_slot_or_del(new src.corpseradio(M), slot_ears)
+ M.equip_to_slot_or_del(new src.corpseradio(M), slot_l_ear)
if(src.corpseglasses)
M.equip_to_slot_or_del(new src.corpseglasses(M), slot_glasses)
if(src.corpsemask)
diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm
index 6171377730f..3677ceac70c 100644
--- a/code/modules/mob/mob.dm
+++ b/code/modules/mob/mob.dm
@@ -182,7 +182,8 @@ var/list/slot_equipment_priority = list( \
slot_head,\
slot_shoes,\
slot_gloves,\
- slot_ears,\
+ slot_l_ear,\
+ slot_r_ear,\
slot_glasses,\
slot_belt,\
slot_s_store,\
@@ -961,4 +962,4 @@ mob/verb/yank_out_object()
pinned -= O
if(!pinned.len)
anchored = 0
- return 1
+ return 1
diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm
index de037500009..d3192dc9de7 100644
--- a/code/modules/organs/organ_external.dm
+++ b/code/modules/organs/organ_external.dm
@@ -454,7 +454,8 @@
organ= new /obj/item/weapon/organ/head(owner.loc, owner)
owner.u_equip(owner.glasses)
owner.u_equip(owner.head)
- owner.u_equip(owner.ears)
+ owner.u_equip(owner.l_ear)
+ owner.u_equip(owner.r_ear)
owner.u_equip(owner.wear_mask)
if(ARM_RIGHT)
if(status & ORGAN_ROBOT)
diff --git a/code/modules/paperwork/stamps.dm b/code/modules/paperwork/stamps.dm
index 644eaf646b2..48a1fd00b31 100644
--- a/code/modules/paperwork/stamps.dm
+++ b/code/modules/paperwork/stamps.dm
@@ -54,6 +54,16 @@
icon_state = "stamp-clown"
color = "clown"
+/obj/item/weapon/stamp/internalaffairs
+ name = "internal affairs rubber stamp"
+ icon_state = "stamp-intaff"
+ color = "intaff"
+
+/obj/item/weapon/stamp/centcomm
+ name = "centcomm rubber stamp"
+ icon_state = "stamp-cent"
+ color = "centcomm"
+
/obj/item/weapon/stamp/attack_paw(mob/user as mob)
return attack_hand(user)
\ No newline at end of file
diff --git a/code/modules/reagents/reagent_containers/borghydro.dm b/code/modules/reagents/reagent_containers/borghydro.dm
index 130ea2ba7ac..8491c35fa8d 100644
--- a/code/modules/reagents/reagent_containers/borghydro.dm
+++ b/code/modules/reagents/reagent_containers/borghydro.dm
@@ -76,7 +76,7 @@
R.reaction(M, INGEST)
if(M.reagents)
var/trans = R.trans_to(M, amount_per_transfer_from_this)
- user << "\blue [trans] units injected. [R.total_volume] units remaining."
+ user << "\blue [trans] units injected. [R.total_volume] units remaining."
return
/obj/item/weapon/reagent_containers/borghypo/attack_self(mob/user as mob)
@@ -104,4 +104,4 @@
empty = 0
if(empty)
- usr << "\blue It is currently empty. Allow some time for the internal syntheszier to produce more."
+ usr << "\blue It is currently empty. Allow some time for the internal syntheszier to produce more."
diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm
index 0b4a3c1e7e9..42ad3df0d1e 100644
--- a/code/modules/reagents/reagent_containers/hypospray.dm
+++ b/code/modules/reagents/reagent_containers/hypospray.dm
@@ -41,7 +41,7 @@
injected += R.name
var/trans = reagents.trans_to(M, amount_per_transfer_from_this)
- user << "\blue [trans] units injected. [reagents.total_volume] units remaining in [src]."
+ user << "\blue [trans] units injected. [reagents.total_volume] units remaining in [src]."
var/contained = english_list(injected)
diff --git a/code/setup.dm b/code/setup.dm
index 9b11e9a9cf0..ed5255a4ce0 100644
--- a/code/setup.dm
+++ b/code/setup.dm
@@ -171,7 +171,8 @@ var/MAX_EXPLOSION_RANGE = 14
#define SLOT_BACK 1024
#define SLOT_POCKET 2048 //this is to allow items with a w_class of 3 or 4 to fit in pockets.
#define SLOT_DENYPOCKET 4096 //this is to deny items with a w_class of 2 or 1 to fit in pockets.
-
+#define SLOT_TWOEARS 8192
+#define SLOT_LEGS = 16384
//FLAGS BITMASK
#define STOPSPRESSUREDMAGE 1 //This flag is used on the flags variable for SUIT and HEAD items which stop pressure damage. Note that the flag 1 was previous used as ONBACK, so it is possible for some code to use (flags & 1) when checking if something can be put on your back. Replace this code with (inv_flags & SLOT_BACK) if you see it anywhere
@@ -235,7 +236,7 @@ var/MAX_EXPLOSION_RANGE = 14
#define slot_r_hand 5
#define slot_belt 6
#define slot_wear_id 7
-#define slot_ears 8
+#define slot_l_ear 8
#define slot_glasses 9
#define slot_gloves 10
#define slot_head 11
@@ -247,6 +248,8 @@ var/MAX_EXPLOSION_RANGE = 14
#define slot_s_store 17
#define slot_in_backpack 18
#define slot_legcuffed 19
+#define slot_r_ear 20
+#define slot_legs 21
//Cant seem to find a mob bitflags area other than the powers one
diff --git a/icons/obj/bureaucracy.dmi b/icons/obj/bureaucracy.dmi
index 4578c90e7b8..18ee15e0528 100644
Binary files a/icons/obj/bureaucracy.dmi and b/icons/obj/bureaucracy.dmi differ
diff --git a/icons/obj/drinks.dmi b/icons/obj/drinks.dmi
index 5b9521e089f..6e4d355c5bd 100644
Binary files a/icons/obj/drinks.dmi and b/icons/obj/drinks.dmi differ
diff --git a/maps/tgstation2.dmm b/maps/tgstation2.dmm
index d773e5583d3..97b8e4cc897 100644
--- a/maps/tgstation2.dmm
+++ b/maps/tgstation2.dmm
@@ -921,10 +921,10 @@
"arK" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/wood{icon_state = "wood-broken3"},/area/security/vacantoffice2)
"arL" = (/turf/simulated/floor/wood,/area/security/vacantoffice2)
"arM" = (/obj/effect/decal/cleanable/cobweb2,/obj/machinery/light_construct{icon_state = "tube-construct-stage1"; dir = 1},/turf/simulated/floor/wood,/area/security/vacantoffice2)
-"arN" = (/obj/structure/table/reinforced,/obj/machinery/light{dir = 1},/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/turf/simulated/floor{icon_state = "cult"; dir = 2},/area/lawoffice)
+"arN" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor/border_only{dir = 1; name = "hazard door north"},/obj/machinery/door/window/eastright{base_state = "left"; dir = 2; icon_state = "left"; name = "Internal Affairs Desk"; req_access_txt = "38"},/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/item/weapon/folder/white,/turf/simulated/floor/plating,/area/lawoffice)
"arO" = (/obj/machinery/photocopier,/obj/item/weapon/storage/secure/safe{pixel_x = 5; pixel_y = 27},/turf/simulated/floor{icon_state = "cult"; dir = 2},/area/lawoffice)
"arP" = (/obj/structure/filingcabinet/chestdrawer,/obj/machinery/light_switch{pixel_y = 28},/turf/simulated/floor{icon_state = "cult"; dir = 2},/area/lawoffice)
-"arQ" = (/obj/machinery/vending/coffee,/turf/simulated/floor{icon_state = "cult"; dir = 2},/area/lawoffice)
+"arQ" = (/obj/structure/table/reinforced,/obj/machinery/light{dir = 1},/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/item/weapon/hand_labeler,/turf/simulated/floor{icon_state = "cult"; dir = 2},/area/lawoffice)
"arR" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "cult"; dir = 2},/area/lawoffice)
"arS" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/storage/briefcase{pixel_x = -2; pixel_y = -5},/obj/item/weapon/storage/briefcase{pixel_x = 3; pixel_y = 0},/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "cult"; dir = 2},/area/lawoffice)
"arT" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/crew_quarters/kitchen)
@@ -964,7 +964,7 @@
"asB" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/item/clothing/glasses/sunglasses,/turf/simulated/floor/carpet{icon_state = "carpetnoconnect"},/area/security/vacantoffice2)
"asC" = (/turf/simulated/floor/carpet{icon_state = "carpetnoconnect"},/area/security/vacantoffice2)
"asD" = (/obj/machinery/requests_console{pixel_x = 30},/turf/simulated/floor/wood{icon_state = "wood-broken3"},/area/security/vacantoffice2)
-"asE" = (/obj/structure/table/reinforced,/obj/item/device/taperecorder{pixel_x = -4; pixel_y = 2},/obj/item/device/camera{pixel_x = 3; pixel_y = -4},/turf/simulated/floor{icon_state = "cult"; dir = 2},/area/lawoffice)
+"asE" = (/obj/structure/table/reinforced,/obj/item/device/taperecorder{pixel_x = -4; pixel_y = 2},/obj/item/device/camera{pixel_x = 3; pixel_y = -4},/obj/item/weapon/stamp/denied,/turf/simulated/floor{icon_state = "cult"; dir = 2},/area/lawoffice)
"asF" = (/turf/simulated/floor{icon_state = "cult"; dir = 2},/area/lawoffice)
"asG" = (/obj/structure/closet/lawcloset,/turf/simulated/floor{icon_state = "cult"; dir = 2},/area/lawoffice)
"asH" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/exit)
@@ -1047,8 +1047,8 @@
"aug" = (/obj/structure/computerframe,/turf/simulated/floor/wood,/area/security/vacantoffice2)
"auh" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/machinery/requests_console{pixel_x = -30},/turf/simulated/floor{icon_state = "cult"; dir = 2},/area/lawoffice)
"aui" = (/obj/structure/stool/bed/chair/office/dark{dir = 4},/obj/effect/landmark/start{name = "Internal Affairs Agent"},/turf/simulated/floor{icon_state = "cult"; dir = 2},/area/lawoffice)
-"auj" = (/obj/structure/table/reinforced,/turf/simulated/floor{icon_state = "cult"; dir = 2},/area/lawoffice)
-"auk" = (/obj/structure/table/reinforced,/obj/item/weapon/folder/yellow,/obj/item/weapon/folder/yellow,/turf/simulated/floor{icon_state = "cult"; dir = 2},/area/lawoffice)
+"auj" = (/obj/structure/table/reinforced,/obj/item/weapon/folder/yellow,/obj/item/weapon/folder/yellow,/obj/item/weapon/stamp/internalaffairs,/turf/simulated/floor{icon_state = "cult"; dir = 2},/area/lawoffice)
+"auk" = (/obj/structure/table/reinforced,/obj/item/weapon/stamp/internalaffairs,/turf/simulated/floor{icon_state = "cult"; dir = 2},/area/lawoffice)
"aul" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/landmark/start{name = "Internal Affairs Agent"},/turf/simulated/floor{icon_state = "cult"; dir = 2},/area/lawoffice)
"aum" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "cult"; dir = 2},/area/lawoffice)
"aun" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet,/turf/simulated/floor/carpet{icon_state = "carpetnoconnect"},/area/crew_quarters/sleep)
@@ -10267,11 +10267,11 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalNaafapwapwapwapwapwaafaoVaafapwapwapwapwapwaafalNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaankapxapyapxapzapxapAapAapBapCapDapAapAapAapAapAapAapAapAapAapGapHapIapJapKapLapMapNalcapOapPapQapRapSapTapUapVapWajhajhajhapXajhaldaqaaqbaqcaqdaqealMalMalMalMalMaaaaaaaaaaaaaaaaaaalOaaaaaaaaaaafaaaaaaaafaoOaaaaaaaaaaafaaaaaaaaaalOaaaaaaaaaaaaaaaaaaaaaaaaaknaknaknaknaknaknaknaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalOaaaaaaaaaaafaaaaaaaafaoVaaaaaaaaaaafaaaaaaaaaamnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafapxaqfaqgapxapxaqhapGaqiapGapGapGapGapGapGapGapGapGapGapGaqlapGaqmapGaqnapGapGapGalcaqoaqpaqqaqrapQaqsapUajpaquaqvaqwaqxaqyakUaqAaqBalLalLalLajhalMalMalMalMalMaaaaaaaaaaaaaaaaaaalNaafaohaohaohaohaohaafaoOaafaohaohaohaohaohaafalNaaaaaaaaaaaaaaaaaaaaaaaaaknaknaknaknaknaknaknaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalNaafaojaojaojaojaojaafaoVaafaojaojaojaojaojaafalNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapxaqCaqDaqEaqFaqGaqHaqIaqJaqJaqJaqJaqJaqJaqJaqLaqOaqNaqOaqPaqQaqRaqSaqTaqUaqSaqValcaphaphaphaphaphaphaqWaqXaqYaqZaraarbarcajhalLajzargalLaaaaaaaaaalMalMalMaaaaaaaaaaaaaaaaaaaaaalNaafaoLaoMaoMaoMaoMaoNaoOaoPaoQaoQaoQaoQaoRaafalNaaaaaaaaaaaaaaaaaaaaaaaaaknaknaknaknaknaknaknaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarhariarhaaaaaaaaaaaaaaaaaaaaaalNaafaoSaoTaoTaoTaoTaoUaoVaoWaoXaoXaoXaoXaoYaafalNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapxaoZarjapxarkarkaixarmajgarkarkaroaroaroaroarparoaroarqarrarsartalLarualLarvalLalLaprajhajhajhajhajharwaqXarxaryaryaryarzarAarBarCalSalLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalNaafapvapvapvapvapvaafaoOaafapvapvapvapvapvaafalNaaaaaaaaaaaaaaaaaaaaaaaaaknaknaknaknaknaknaknaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaMzarFaMzaaaaaaaaaaaaaaaaaaaaaalNaafapwapwapwapwapwaafaoVaafapwapwapwapwapwaafalNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaagapxarGapaapxarHarIarJarKarLarMarkarNarOarParQarRarSaQfarUapGarVarWarXarYarZarZarZarZarZasaarZarZarZasbascasdaseasfasgashasiaqjaskaslasmalLaafaQeaQcaQcaQdaQcaQcaQaaaaaaaaaaaaaaaaalOaaaaaaaaaaafaaaaaaaaaaoOaaaaaaaaaaafaaaaaaaaaalOaaaaaaaaaaaaaaaaaaaaaaaaaknaknaknaknaknaknaknaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarhariarhaaaaaaaaaaaaaaaaaaaaaalNaafaoSaoTaoTaoTaoTaoUaoVaoWaoXaoXaoXaoXaoYaafalNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapxaoZarjapxarkarkaixarmajgarkarkaroaroaroarNarparoaroarqarrarsartalLarualLarvalLalLaprajhajhajhajhajharwaqXarxaryaryaryarzarAarBarCalSalLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalNaafapvapvapvapvapvaafaoOaafapvapvapvapvapvaafalNaaaaaaaaaaaaaaaaaaaaaaaaaknaknaknaknaknaknaknaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaMzarFaMzaaaaaaaaaaaaaaaaaaaaaalNaafapwapwapwapwapwaafaoVaafapwapwapwapwapwaafalNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaagapxarGapaapxarHarIarJarKarLarMarkarQarOarPasFarRarSaQfarUapGarVarWarXarYarZarZarZarZarZasaarZarZarZasbascasdaseasfasgashasiaqjaskaslasmalLaafaQeaQcaQcaQdaQcaQcaQaaaaaaaaaaaaaaaaalOaaaaaaaaaaafaaaaaaaaaaoOaaaaaaaaaaafaaaaaaaaaalOaaaaaaaaaaaaaaaaaaaaaaaaaknaknaknaknaknaknaknaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasrassastaaaasuasvaswaaaaafaNAarhaNAaaaaaaaaaaaaaaaaaaaaaalOaaaaaaaaaaafaaaaaaaaaaoVaaaaaaaaaaafaaaaaaaaaalOaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafapxapxapxapxapaapxasyaszasAasBasCasDarkasEasFasFasFarRasGaQhasIasJasKalLasLasMasNasNasNasNasOasMasNasPasNasMasNasNasPasNasQasRasSasTasUasVasWasWasWaQgasYasYasYasYasYaQgasWaaaaaaaaaaaaalNaafaohaohaohaohaohaafaoOaafaohaohaohaohaohaafalNaaaaaaaaaaaaaaaaaaaaaaaaaaaaknaknaknaknaknaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasZataatbataasZatcatdatcasZaafaNAateaQiaaaaaaaaaaaaaaaaaaaaaalNaafaojaojaojaojaojaafaoVaafaojaojaojaojaojaafalNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafapxatgathapxapaapxatiatjatkatlatmatnarkatoasFatpatparRbhUaQhapAapGatqalLatratsattatuatvatwatxatyatwatzatAatBatwatCatDatEatFatGatHatIatJatKatLatMasWaQgasYasYasYasYasYaQgasWaafaaaaaaaaaalOaafaoLaoMaoMaoMaoMaoNaoOaoPaoQaoQaoQaoQaoRaafalNaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatNataatOataatNatcatPatcatNatQaQlatSaQAaQmaQmaQxatQatQaafaaaalNaafaoSaoTaoTaoTaoTaoUaoVaoWaoXaoXaoXaoXaoYaafalNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafapxatWatXatYatZauaaubaucaudaueaufaugarkauhauiaujaukaulaumaQhapAapGarValLatratsaunauoatvatwaupauqatwaurausautatwauuausauvasWauwauxauyauzauAauBauCauDaQjasYasYasYasYasYaQkasWasWasWaaaaaaalOaaaapvapvapvapvapvaafaoOaafapvapvapvapvapvaaaamnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatNataatOataatNatcatPatcatNatQaQlatSaQAaQmaQmaQxatQatQaafaaaalNaafaoSaoTaoTaoTaoTaoUaoVaoWaoXaoXaoXaoXaoYaafalNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafapxatWatXatYatZauaaubaucaudaueaufaugarkauhauiaukaujaulaumaQhapAapGarValLatratsaunauoatvatwaupauqatwaurausautatwauuausauvasWauwauxauyauzauAauBauCauDaQjasYasYasYasYasYaQkasWasWasWaaaaaaalOaaaapvapvapvapvapvaafaoOaafapvapvapvapvapvaaaamnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatNauGauHauIatNauJauKauLatNarharhauMauNauOauPauQauRatQaaaaaaamnaaaapwapwapwapwapwaafaoVaafapwapwapwapwapwaaaalNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaagapxauSaoZapxauTapxauUauVauWauXauYauZarkavaavbavcavcavdaveaKDavgavhaviavjavkavlaunatuatvatwavmauqatwatwavnatwatwatwavoatwasWavpavqavravravsavtavuavvavwasYasYasYasYasYavxavyavzaKCaaaaaaalOaaaaafaaaaafaafaaaaaaaoOaaaaaaaafaaaaaaaafaaaalNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatNavBavCavDatNavBavCavDatNavEavFavGavGavGavGavHavIaMzaaaaaaalNaaaaafaaaaafaafaaaaaaavJaaaaaaaafaaaaaaaafaaaalNaafaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaagapxapxapxapxauTapxavKavLavLapZavLavNavLavOavPavPavPavPavQavRavSapGavTalLavUasMavVatuavWavXavmavYavZawaawbawbawcawdawbaweaKKawgawhawiawjawjawkawlawmaLuasYasYasYasYasYaLuawoawpaLvaaaaaaalOalOalNaaaaaaaafaaaaaaaoOaaaaafaafaafaafalNalNalNaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaasZatNawrawsasZatNawrawsasZatQawtatQatQatQatQatQawuaNAaaaaaaalNalNalNaaaaaaaafaaaaNfawwaNfaafaafaafaafalNalNalNaafapxapxapxapxaOZaOXaOXaOXaOXaOXaOXaOXaOWapxapxaOoaObaOnapxawDaNNawEawFawGawHawHawHawIawHawJawHawKawLawMawMawNawNawOawPawQawRaqAawSawTawUawVawWatwavmawXawXawXawZawZaxaawYawXawXaxbaxcaxdawiawjawjawkawlaxeaNeasYasYasYasYasYaNeaxgawpaLvaaaaaaaaaaaaaafaafaaaaafaaaaaaaxhaaaaaaaafaaaaaaaafaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa