diff --git a/code/__defines/species_languages.dm b/code/__defines/species_languages.dm
index 44273c80ff7..957a690f4f0 100644
--- a/code/__defines/species_languages.dm
+++ b/code/__defines/species_languages.dm
@@ -33,11 +33,14 @@
#define LANGUAGE_SKRELLIAN "Skrellian"
#define LANGUAGE_TRADEBAND "Tradeband"
#define LANGUAGE_GUTTER "Gutter"
+#define LANGUAGE_SIGN "Sign Language"
#define LANGUAGE_SCHECHI "Schechi"
#define LANGUAGE_ROOTLOCAL "Local Rootspeak"
#define LANGUAGE_ROOTGLOBAL "Global Rootspeak"
#define LANGUAGE_CULT "Cult"
-#define LANGUAGE_SIGN "Sign Language"
+#define LANGUAGE_OCCULT "Occult"
+#define LANGUAGE_CHANGELING "Changeling"
+#define LANGUAGE_VOX "Vox-Pidgin"
// Language flags.
#define WHITELISTED 1 // Language is available if the speaker is whitelisted.
diff --git a/code/modules/clothing/gloves/miscellaneous.dm b/code/modules/clothing/gloves/miscellaneous.dm
index 09a19093920..4e17916853b 100644
--- a/code/modules/clothing/gloves/miscellaneous.dm
+++ b/code/modules/clothing/gloves/miscellaneous.dm
@@ -92,4 +92,9 @@
siemens_coefficient = 0
phoronproof = 1
permeability_coefficient = 0.05
- species_restricted = list("Vox")
\ No newline at end of file
+ species_restricted = list("Vox")
+
+ cold_protection = HANDS
+ min_cold_protection_temperature = GLOVES_MIN_COLD_PROTECTION_TEMPERATURE
+ heat_protection = HANDS
+ max_heat_protection_temperature = GLOVES_MAX_HEAT_PROTECTION_TEMPERATURE
diff --git a/code/modules/clothing/shoes/magboots.dm b/code/modules/clothing/shoes/magboots.dm
index 57a50b4c09d..63e4d939653 100644
--- a/code/modules/clothing/shoes/magboots.dm
+++ b/code/modules/clothing/shoes/magboots.dm
@@ -107,7 +107,6 @@
magpulse = 1
canremove = 0 //kinda hard to take off magclaws when you are gripping them tightly.
to_chat(user, "You dig your claws deeply into the flooring, bracing yourself.")
- to_chat(user, "It would be hard to take off the [src] without relaxing your grip first.")
user.update_action_buttons()
//In case they somehow come off while enabled.
diff --git a/code/modules/clothing/spacesuits/alien.dm b/code/modules/clothing/spacesuits/alien.dm
index 7f28b34a9d1..730529e5e22 100644
--- a/code/modules/clothing/spacesuits/alien.dm
+++ b/code/modules/clothing/spacesuits/alien.dm
@@ -36,14 +36,14 @@
slowdown = 1
phoronproof = 1
armor = list(melee = 60, bullet = 50, laser = 40,energy = 15, bomb = 30, bio = 30, rad = 30)
- siemens_coefficient = 0.6
+ siemens_coefficient = 0.2
heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
max_heat_protection_temperature = SPACE_SUIT_MAX_HEAT_PROTECTION_TEMPERATURE
species_restricted = list("Vox")
/obj/item/clothing/head/helmet/space/vox
armor = list(melee = 60, bullet = 50, laser = 40, energy = 15, bomb = 30, bio = 30, rad = 30)
- siemens_coefficient = 0.6
+ siemens_coefficient = 0.2
item_flags = STOPPRESSUREDAMAGE | THICKMATERIAL | AIRTIGHT | PHORONGUARD
flags_inv = 0
phoronproof = 1
diff --git a/code/modules/clothing/spacesuits/rig/suits/alien.dm b/code/modules/clothing/spacesuits/rig/suits/alien.dm
index 61fec573c1f..f751eeb760e 100644
--- a/code/modules/clothing/spacesuits/rig/suits/alien.dm
+++ b/code/modules/clothing/spacesuits/rig/suits/alien.dm
@@ -47,6 +47,7 @@
icon_state = "vox_rig"
armor = list(melee = 60, bullet = 50, laser = 40, energy = 15, bomb = 30, bio = 30, rad = 30)
item_flags = THICKMATERIAL
+ siemens_coefficient = 0.2
phoronproof = 1
air_type = /obj/item/weapon/tank/phoron/vox
@@ -58,9 +59,11 @@
/obj/item/clothing/head/helmet/space/rig/vox
species_restricted = list("Vox")
+ flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
phoronproof = 1
/obj/item/clothing/shoes/magboots/rig/vox
+ name = "talons"
species_restricted = list("Vox")
phoronproof = 1
@@ -69,7 +72,6 @@
phoronproof = 1
/obj/item/clothing/gloves/gauntlets/rig/vox
- name = "talons"
siemens_coefficient = 0
species_restricted = list("Vox")
phoronproof = 1
diff --git a/code/modules/clothing/under/xenos/vox.dm b/code/modules/clothing/under/xenos/vox.dm
index 9c1f3ce6b07..0ba583d536b 100644
--- a/code/modules/clothing/under/xenos/vox.dm
+++ b/code/modules/clothing/under/xenos/vox.dm
@@ -1,6 +1,8 @@
/obj/item/clothing/under/vox
has_sensor = 0
species_restricted = list("Vox")
+ valid_accessory_slots = list("vox")
+ restricted_accessory_slots = list("vox")
phoronproof = 1
/obj/item/clothing/under/vox/vox_casual
@@ -14,4 +16,18 @@
name = "alien robes"
desc = "Weird and flowing!"
icon_state = "vox-casual-2"
- item_state = "vox-casual-2"
\ No newline at end of file
+ item_state = "vox-casual-2"
+
+//Vox Accessories
+/obj/item/clothing/accessory/storage/vox
+ name = ""
+ desc = "An alien mesh. Seems to be made up mostly of pockets"
+// icon_state = "webbing"
+ slot = "vox"
+
+ slots = 5
+
+/obj/item/clothing/accessory/storage/vox/New()
+ ..()
+ hold.max_storage_space = slots * ITEMSIZE_COST_NORMAL
+ hold.max_w_class = ITEMSIZE_NORMAL
\ No newline at end of file
diff --git a/code/modules/mob/language/outsider.dm b/code/modules/mob/language/outsider.dm
index 7545e8bd34f..8c174a2ff74 100644
--- a/code/modules/mob/language/outsider.dm
+++ b/code/modules/mob/language/outsider.dm
@@ -1,5 +1,5 @@
/datum/language/ling
- name = "Changeling"
+ name = LANGUAGE_CHANGELING
desc = "Although they are normally wary and suspicious of each other, changelings can commune over a distance."
speech_verb = "says"
colour = "changeling"
@@ -38,7 +38,7 @@
..(speaker,message,speaker_mask)
/datum/language/vox
- name = "Vox-pidgin"
+ name = LANGUAGE_VOX
desc = "The common tongue of the various Vox ships making up the Shoal. It sounds like chaotic shrieking to everyone else."
speech_verb = "shrieks"
ask_verb = "creels"
@@ -73,7 +73,7 @@
"d'rekkathnor", "khari'd", "gual'te", "nikka", "nikt'o", "barada", "kla'atu", "barhah", "hra" ,"zar'garis", "spiri", "malum")
/datum/language/cult
- name = "Occult"
+ name = LANGUAGE_OCCULT
desc = "The initiated can share their thoughts by means defying all reason."
speech_verb = "intones"
ask_verb = "intones"
diff --git a/code/modules/mob/living/carbon/human/species/outsider/vox.dm b/code/modules/mob/living/carbon/human/species/outsider/vox.dm
index c0e52f658ac..7ff50ae70ab 100644
--- a/code/modules/mob/living/carbon/human/species/outsider/vox.dm
+++ b/code/modules/mob/living/carbon/human/species/outsider/vox.dm
@@ -3,8 +3,8 @@
name_plural = "Vox"
icobase = 'icons/mob/human_races/r_vox.dmi'
deform = 'icons/mob/human_races/r_def_vox.dmi'
- default_language = "Vox-pidgin"
- language = "Galactic Common"
+ default_language = LANGUAGE_VOX
+ language = LANGUAGE_GALCOM
num_alternate_languages = 1
unarmed_types = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/claws/strong, /datum/unarmed_attack/bite/strong)
rarity_value = 4
@@ -37,7 +37,7 @@
spawn_flags = SPECIES_IS_WHITELISTED
appearance_flags = HAS_EYE_COLOR | HAS_HAIR_COLOR
- blood_color = "#2299FC"
+ blood_color = "#9066BD"
flesh_color = "#808D11"
reagent_tag = IS_VOX
diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm
index 6a02d8a38fb..d8d6496722e 100644
--- a/code/modules/projectiles/guns/energy/special.dm
+++ b/code/modules/projectiles/guns/energy/special.dm
@@ -150,3 +150,19 @@ obj/item/weapon/gun/energy/staff/focus
user << "The [src.name] will now strike only a single person."
projectile_type = "/obj/item/projectile/forcebolt"
*/
+
+//Vox toys
+/obj/item/weapon/gun/energy/sonicgun
+ name = "sonic cannon"
+ desc = "A vicious alien sonic weapon. Parts of it quiver gelatinously, as though the thing is insectile and alive."
+ icon_state = "plasma_stun"
+ item_state = "plasma_stun"
+ fire_sound = 'sound/effects/basscannon.ogg'
+ fire_delay = 10
+
+ self_recharge = 1
+
+ firemodes = list(
+ list(mode_name="incapacitate", projectile_type=/obj/item/projectile/energy/sonic/weak, fire_delay=10, charge_cost = 120),
+ list(mode_name="kill", projectile_type=/obj/item/projectile/energy/sonic/strong, fire_delay=20, charge_cost = 240),
+ )
\ No newline at end of file
diff --git a/code/modules/projectiles/projectile/energy.dm b/code/modules/projectiles/projectile/energy.dm
index c45ea1917b6..59c881d99e0 100644
--- a/code/modules/projectiles/projectile/energy.dm
+++ b/code/modules/projectiles/projectile/energy.dm
@@ -171,4 +171,51 @@
/obj/item/projectile/energy/plasmastun/on_hit(var/atom/target)
bang(target)
- . = ..()
\ No newline at end of file
+ . = ..()
+
+/obj/item/projectile/energy/sonic
+ name = "sonic pulse"
+ icon_state = "sonic_pulse"
+ armor_penetration = 50
+ kill_count = 8
+ damage_type = BRUTE
+ embed_chance = 0
+ check_armour = "melee"
+ vacuum_traversal = 0
+ var/ear_pain = 10
+
+/obj/item/projectile/energy/sonic/on_hit(var/atom/target)
+ sonicboom(target, ear_pain)
+ . = ..()
+
+/obj/item/projectile/energy/sonic/proc/sonicboom(var/mob/living/carbon/M, var/ear_pain)
+ to_chat(M, "You hear a loud roar.")
+ var/ear_safety = 0
+ var/ear_effect = ear_pain
+ ear_safety = M.get_ear_protection()
+ if (ear_safety > 1)
+ ear_effect *= 0.5
+ else if (!ear_safety)
+ ear_effect *= 2
+
+ M.adjustEarDamage(ear_effect, ear_effect*2)
+ M.halloss += ear_effect
+
+ if (M.ear_damage >= 15)
+ to_chat(M, "Your ears start to ring badly!")
+ M.confused = max(M.confused, 100) //Balance thrown off
+ if (prob(M.ear_damage - 5))
+ to_chat(M, "You can't hear anything!")
+ M.sdisabilities |= DEAF
+ else
+ if (M.ear_damage >= 5)
+ to_chat(M, "Your ears start to ring!")
+ M.update_icons()
+
+/obj/item/projectile/energy/sonic/weak
+ damage = 10
+ ear_pain = 20
+
+/obj/item/projectile/energy/sonic/strong
+ damage = 40
+ ear_pain = 10
\ No newline at end of file
diff --git a/icons/mob/species/vox/head.dmi b/icons/mob/species/vox/head.dmi
index 58718462197..fcaae2a02cf 100644
Binary files a/icons/mob/species/vox/head.dmi and b/icons/mob/species/vox/head.dmi differ
diff --git a/icons/mob/species/vox/suit.dmi b/icons/mob/species/vox/suit.dmi
index 41b2cf9eab6..6e8269a9581 100644
Binary files a/icons/mob/species/vox/suit.dmi and b/icons/mob/species/vox/suit.dmi differ
diff --git a/icons/obj/clothing/gloves.dmi b/icons/obj/clothing/gloves.dmi
index 08892b83add..9b3739078fc 100644
Binary files a/icons/obj/clothing/gloves.dmi and b/icons/obj/clothing/gloves.dmi differ
diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi
index 0e96c916eea..a4f3cf88933 100644
Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ
diff --git a/icons/obj/clothing/shoes.dmi b/icons/obj/clothing/shoes.dmi
index e414cdcd9a0..23cece26b74 100644
Binary files a/icons/obj/clothing/shoes.dmi and b/icons/obj/clothing/shoes.dmi differ
diff --git a/icons/obj/clothing/species/vox/hats.dmi b/icons/obj/clothing/species/vox/hats.dmi
index aae8da6a66a..f5f7b557247 100644
Binary files a/icons/obj/clothing/species/vox/hats.dmi and b/icons/obj/clothing/species/vox/hats.dmi differ
diff --git a/icons/obj/clothing/suits.dmi b/icons/obj/clothing/suits.dmi
index b08cdc384b1..be9b4c861b4 100644
Binary files a/icons/obj/clothing/suits.dmi and b/icons/obj/clothing/suits.dmi differ
diff --git a/icons/obj/projectiles.dmi b/icons/obj/projectiles.dmi
index 522d540bdbd..a01b88cfb2d 100644
Binary files a/icons/obj/projectiles.dmi and b/icons/obj/projectiles.dmi differ
diff --git a/icons/obj/rig_modules.dmi b/icons/obj/rig_modules.dmi
index 11f3beb5615..e179a67f4ac 100644
Binary files a/icons/obj/rig_modules.dmi and b/icons/obj/rig_modules.dmi differ