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