diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm
index 17e912e2b0e..4107b30d877 100644
--- a/code/modules/mob/living/living_defense.dm
+++ b/code/modules/mob/living/living_defense.dm
@@ -86,7 +86,7 @@
// Begin BS12 momentum-transfer code.
- if(speed > 20)
+ if(speed >= 20)
var/obj/item/weapon/W = O
var/momentum = speed/2
var/dir = get_dir(M,src)
diff --git a/code/modules/mob/living/simple_animal/vox.dm b/code/modules/mob/living/simple_animal/vox.dm
index 55226823cfa..2ea43707ba8 100644
--- a/code/modules/mob/living/simple_animal/vox.dm
+++ b/code/modules/mob/living/simple_animal/vox.dm
@@ -8,7 +8,7 @@
icon_living = "armalis"
maxHealth = 500
health = 500
- response_harm = "flails ineffectually at the"
+ response_harm = "slashes at the"
harm_intent_damage = 0
melee_damage_lower = 30
melee_damage_upper = 40
@@ -17,6 +17,22 @@
wall_smash = 1
attack_sound = 'sound/weapons/bladeslice.ogg'
status_flags = 0
+ universal_speak = 1
+ vox_talk_understand = 1
+
+ var/armour = null
+ var/amp = null
+ var/quills = 3
+
+/mob/living/simple_animal/vox/armalis/Die()
+
+ living_mob_list -= src
+ dead_mob_list += src
+ stat = DEAD
+ visible_message("\red [src] shudders violently and explodes!","\red You feel your body rupture!")
+ explosion(get_turf(loc), -1, -1, 3, 5)
+ src.gib()
+ return
/mob/living/simple_animal/vox/armalis/attackby(var/obj/item/O as obj, var/mob/user as mob)
if(O.force)
@@ -44,6 +60,9 @@
set desc = "Fires a viciously pointed quill at a high speed."
set category = "Alien"
+ if(quills<=0)
+ return
+
src << "\red You launch a razor-sharp quill at [target]!"
for(var/mob/O in oviewers())
if ((O.client && !( O.blinded )))
@@ -51,7 +70,12 @@
var/obj/item/weapon/arrow/quill/Q = new(loc)
Q.fingerprintslast = src.ckey
- Q.throw_at(target,10,15)
+ Q.throw_at(target,10,20)
+ quills--
+
+ spawn(100)
+ src << "\red You feel a fresh quill slide into place."
+ quills++
/mob/living/simple_animal/vox/armalis/verb/message_mob()
set category = "Alien"
@@ -81,4 +105,57 @@
if(H.dna.mutantrace == "vox")
return
H << "\red Your nose begins to bleed..."
- H.drip(1)
\ No newline at end of file
+ H.drip(1)
+
+/mob/living/simple_animal/vox/armalis/verb/shriek()
+ set category = "Alien"
+ set name = "Shriek"
+ set desc = "Give voice to a psychic shriek."
+
+/mob/living/simple_animal/vox/armalis/attackby(var/obj/item/O as obj, var/mob/user as mob)
+ if(istype(O,/obj/item/vox/armalis_armour))
+ user.drop_item()
+ armour = O
+ speed = 1
+ maxHealth += 200
+ health += 200
+ O.loc = src
+ visible_message("\blue [src] is quickly outfitted in [O] by [user].","\blue You quickly outfit [src] in [O].")
+ regenerate_icons()
+ return
+ if(istype(O,/obj/item/vox/armalis_amp))
+ user.drop_item()
+ amp = O
+ O.loc = src
+ visible_message("\blue [src] is quickly outfitted in [O] by [user].","\blue You quickly outfit [src] in [O].")
+ regenerate_icons()
+ return
+ return ..()
+
+/mob/living/simple_animal/vox/armalis/regenerate_icons()
+
+ overlays = list()
+ if(armour)
+ var/icon/armour = image('icons/mob/vox.dmi',"armour")
+ speed = 1
+ overlays += armour
+ if(amp)
+ var/icon/amp = image('icons/mob/vox.dmi',"amplifier")
+ overlays += amp
+ return
+
+/obj/item/vox/armalis_armour
+
+ name = "strange armour"
+ desc = "Hulking reinforced armour for something huge."
+ icon = 'icons/obj/clothing/suits.dmi'
+ icon_state = "armalis_armour"
+ item_state = "armalis_armour"
+
+/obj/item/vox/armalis_amp
+
+ name = "strange lenses"
+ desc = "A series of metallic lenses and chains."
+ icon = 'icons/obj/clothing/hats.dmi'
+ icon_state = "amp"
+ item_state = "amp"
\ No newline at end of file
diff --git a/code/modules/projectiles/guns/projectile/bow.dm b/code/modules/projectiles/guns/projectile/bow.dm
index ee2e0e20db5..aa113e86599 100644
--- a/code/modules/projectiles/guns/projectile/bow.dm
+++ b/code/modules/projectiles/guns/projectile/bow.dm
@@ -6,7 +6,7 @@
icon_state = "bolt"
item_state = "bolt"
flags = FPRINT | TABLEPASS
- throwforce = 12
+ throwforce = 8
w_class = 3.0
sharp = 1
@@ -20,7 +20,7 @@
icon = 'icons/obj/weapons.dmi'
icon_state = "quill"
item_state = "quill"
- throwforce = 15
+ throwforce = 5
/obj/item/weapon/arrow/rod
@@ -29,7 +29,7 @@
icon_state = "metal-rod"
/obj/item/weapon/arrow/rod/removed(mob/user)
- if(throwforce == 20) // The rod has been superheated - we don't want it to be useable when removed from the bow.
+ if(throwforce == 15) // The rod has been superheated - we don't want it to be useable when removed from the bow.
user << "[src] shatters into a scattering of overstressed metal shards as it leaves the crossbow."
var/obj/item/weapon/shard/shrapnel/S = new()
S.loc = get_turf(src)
@@ -75,7 +75,7 @@
if(cell)
if(cell.charge >= 500)
user << "[arrow] plinks and crackles as it begins to glow red-hot."
- arrow.throwforce = 20
+ arrow.throwforce = 15
arrow.icon_state = "metal-rod-superheated"
cell.charge -= 500
return
@@ -89,7 +89,7 @@
if(arrow)
if(istype(arrow,/obj/item/weapon/arrow/rod) && cell.charge >= 500)
user << "[arrow] plinks and crackles as it begins to glow red-hot."
- arrow.throwforce = 20
+ arrow.throwforce = 15
arrow.icon_state = "metal-rod-superheated"
cell.charge -= 500
else
diff --git a/icons/obj/clothing/suits.dmi b/icons/obj/clothing/suits.dmi
index 29487a42863..cf9c6d511d6 100644
Binary files a/icons/obj/clothing/suits.dmi and b/icons/obj/clothing/suits.dmi differ