diff --git a/code/game/objects/items/shields.dm b/code/game/objects/items/shields.dm
index e2493ff613..2f33803c10 100644
--- a/code/game/objects/items/shields.dm
+++ b/code/game/objects/items/shields.dm
@@ -1,142 +1,142 @@
-/obj/item/shield
- name = "shield"
- block_chance = 50
- armor = list(melee = 50, bullet = 50, laser = 50, energy = 0, bomb = 30, bio = 0, rad = 0, fire = 80, acid = 70)
-
-/obj/item/shield/riot
- name = "riot shield"
- desc = "A shield adept at blocking blunt objects from connecting with the torso of the shield wielder."
- icon = 'icons/obj/items_and_weapons.dmi'
- icon_state = "riot"
- lefthand_file = 'icons/mob/inhands/equipment/shields_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/equipment/shields_righthand.dmi'
- slot_flags = SLOT_BACK
- force = 10
- throwforce = 5
- throw_speed = 2
- throw_range = 3
- w_class = WEIGHT_CLASS_BULKY
- materials = list(MAT_GLASS=7500, MAT_METAL=1000)
- attack_verb = list("shoved", "bashed")
- var/cooldown = 0 //shield bash cooldown. based on world.time
-
-
-/obj/item/shield/riot/attackby(obj/item/W, mob/user, params)
- if(istype(W, /obj/item/melee/baton))
- if(cooldown < world.time - 25)
- user.visible_message("[user] bashes [src] with [W]!")
- playsound(user.loc, 'sound/effects/shieldbash.ogg', 50, 1)
- cooldown = world.time
- else
- return ..()
-
-/obj/item/shield/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
- if(attack_type == THROWN_PROJECTILE_ATTACK)
- final_block_chance += 30
- if(attack_type == LEAP_ATTACK)
- final_block_chance = 100
- return ..()
-
-/obj/item/shield/riot/roman
- name = "roman shield"
- desc = "Bears an inscription on the inside: \"Romanes venio domus\"."
- icon_state = "roman_shield"
- item_state = "roman_shield"
- lefthand_file = 'icons/mob/inhands/equipment/shields_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/equipment/shields_righthand.dmi'
-
-/obj/item/shield/riot/buckler
- name = "wooden buckler"
- desc = "A medieval wooden buckler."
- icon_state = "buckler"
- item_state = "buckler"
- lefthand_file = 'icons/mob/inhands/equipment/shields_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/equipment/shields_righthand.dmi'
- materials = list()
- resistance_flags = FLAMMABLE
- block_chance = 30
-
-/obj/item/shield/energy
- name = "energy combat shield"
- desc = "A shield capable of stopping most melee attacks. Protects user from almost all energy projectiles. It can be retracted, expanded, and stored anywhere."
- icon = 'icons/obj/items_and_weapons.dmi'
- icon_state = "eshield0" // eshield1 for expanded
- lefthand_file = 'icons/mob/inhands/equipment/shields_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/equipment/shields_righthand.dmi'
- force = 3
- throwforce = 3
- throw_speed = 3
- throw_range = 5
- w_class = WEIGHT_CLASS_TINY
- attack_verb = list("shoved", "bashed")
- var/active = 0
-
-/obj/item/shield/energy/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
- return 0
-
-/obj/item/shield/energy/IsReflect()
- return (active)
-
-/obj/item/shield/energy/attack_self(mob/living/carbon/human/user)
- if(user.has_disability(DISABILITY_CLUMSY) && prob(50))
- to_chat(user, "You beat yourself in the head with [src].")
- user.take_bodypart_damage(5)
- active = !active
- icon_state = "eshield[active]"
-
- if(active)
- force = 10
- throwforce = 8
- throw_speed = 2
- w_class = WEIGHT_CLASS_BULKY
- playsound(user, 'sound/weapons/saberon.ogg', 35, 1)
- to_chat(user, "[src] is now active.")
- else
- force = 3
- throwforce = 3
- throw_speed = 3
- w_class = WEIGHT_CLASS_TINY
- playsound(user, 'sound/weapons/saberoff.ogg', 35, 1)
- to_chat(user, "[src] can now be concealed.")
- add_fingerprint(user)
-
-/obj/item/shield/riot/tele
- name = "telescopic shield"
- desc = "An advanced riot shield made of lightweight materials that collapses for easy storage."
- icon = 'icons/obj/items_and_weapons.dmi'
- icon_state = "teleriot0"
- lefthand_file = 'icons/mob/inhands/equipment/shields_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/equipment/shields_righthand.dmi'
- slot_flags = null
- force = 3
- throwforce = 3
- throw_speed = 3
- throw_range = 4
- w_class = WEIGHT_CLASS_NORMAL
- var/active = 0
-
-/obj/item/shield/riot/tele/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
- if(active)
- return ..()
- return 0
-
-/obj/item/shield/riot/tele/attack_self(mob/living/user)
- active = !active
- icon_state = "teleriot[active]"
- playsound(src.loc, 'sound/weapons/batonextend.ogg', 50, 1)
-
- if(active)
- force = 8
- throwforce = 5
- throw_speed = 2
- w_class = WEIGHT_CLASS_BULKY
- slot_flags = SLOT_BACK
- to_chat(user, "You extend \the [src].")
- else
- force = 3
- throwforce = 3
- throw_speed = 3
- w_class = WEIGHT_CLASS_NORMAL
- slot_flags = null
- to_chat(user, "[src] can now be concealed.")
- add_fingerprint(user)
+/obj/item/shield
+ name = "shield"
+ block_chance = 50
+ armor = list(melee = 50, bullet = 50, laser = 50, energy = 0, bomb = 30, bio = 0, rad = 0, fire = 80, acid = 70)
+
+/obj/item/shield/riot
+ name = "riot shield"
+ desc = "A shield adept at blocking blunt objects from connecting with the torso of the shield wielder."
+ icon = 'icons/obj/items_and_weapons.dmi'
+ icon_state = "riot"
+ lefthand_file = 'icons/mob/inhands/equipment/shields_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/equipment/shields_righthand.dmi'
+ slot_flags = SLOT_BACK
+ force = 10
+ throwforce = 5
+ throw_speed = 2
+ throw_range = 3
+ w_class = WEIGHT_CLASS_BULKY
+ materials = list(MAT_GLASS=7500, MAT_METAL=1000)
+ attack_verb = list("shoved", "bashed")
+ var/cooldown = 0 //shield bash cooldown. based on world.time
+
+
+/obj/item/shield/riot/attackby(obj/item/W, mob/user, params)
+ if(istype(W, /obj/item/melee/baton))
+ if(cooldown < world.time - 25)
+ user.visible_message("[user] bashes [src] with [W]!")
+ playsound(user.loc, 'sound/effects/shieldbash.ogg', 50, 1)
+ cooldown = world.time
+ else
+ return ..()
+
+/obj/item/shield/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
+ if(attack_type == THROWN_PROJECTILE_ATTACK)
+ final_block_chance += 30
+ if(attack_type == LEAP_ATTACK)
+ final_block_chance = 100
+ return ..()
+
+/obj/item/shield/riot/roman
+ name = "roman shield"
+ desc = "Bears an inscription on the inside: \"Romanes venio domus\"."
+ icon_state = "roman_shield"
+ item_state = "roman_shield"
+ lefthand_file = 'icons/mob/inhands/equipment/shields_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/equipment/shields_righthand.dmi'
+
+/obj/item/shield/riot/buckler
+ name = "wooden buckler"
+ desc = "A medieval wooden buckler."
+ icon_state = "buckler"
+ item_state = "buckler"
+ lefthand_file = 'icons/mob/inhands/equipment/shields_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/equipment/shields_righthand.dmi'
+ materials = list()
+ resistance_flags = FLAMMABLE
+ block_chance = 30
+
+/obj/item/shield/energy
+ name = "energy combat shield"
+ desc = "A shield that reflects almost all energy projectiles, but is useless against physical attacks. It can be retracted, expanded, and stored anywhere."
+ icon = 'icons/obj/items_and_weapons.dmi'
+ icon_state = "eshield0" // eshield1 for expanded
+ lefthand_file = 'icons/mob/inhands/equipment/shields_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/equipment/shields_righthand.dmi'
+ force = 3
+ throwforce = 3
+ throw_speed = 3
+ throw_range = 5
+ w_class = WEIGHT_CLASS_TINY
+ attack_verb = list("shoved", "bashed")
+ var/active = 0
+
+/obj/item/shield/energy/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
+ return 0
+
+/obj/item/shield/energy/IsReflect()
+ return (active)
+
+/obj/item/shield/energy/attack_self(mob/living/carbon/human/user)
+ if(user.has_disability(DISABILITY_CLUMSY) && prob(50))
+ to_chat(user, "You beat yourself in the head with [src].")
+ user.take_bodypart_damage(5)
+ active = !active
+ icon_state = "eshield[active]"
+
+ if(active)
+ force = 10
+ throwforce = 8
+ throw_speed = 2
+ w_class = WEIGHT_CLASS_BULKY
+ playsound(user, 'sound/weapons/saberon.ogg', 35, 1)
+ to_chat(user, "[src] is now active.")
+ else
+ force = 3
+ throwforce = 3
+ throw_speed = 3
+ w_class = WEIGHT_CLASS_TINY
+ playsound(user, 'sound/weapons/saberoff.ogg', 35, 1)
+ to_chat(user, "[src] can now be concealed.")
+ add_fingerprint(user)
+
+/obj/item/shield/riot/tele
+ name = "telescopic shield"
+ desc = "An advanced riot shield made of lightweight materials that collapses for easy storage."
+ icon = 'icons/obj/items_and_weapons.dmi'
+ icon_state = "teleriot0"
+ lefthand_file = 'icons/mob/inhands/equipment/shields_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/equipment/shields_righthand.dmi'
+ slot_flags = null
+ force = 3
+ throwforce = 3
+ throw_speed = 3
+ throw_range = 4
+ w_class = WEIGHT_CLASS_NORMAL
+ var/active = 0
+
+/obj/item/shield/riot/tele/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
+ if(active)
+ return ..()
+ return 0
+
+/obj/item/shield/riot/tele/attack_self(mob/living/user)
+ active = !active
+ icon_state = "teleriot[active]"
+ playsound(src.loc, 'sound/weapons/batonextend.ogg', 50, 1)
+
+ if(active)
+ force = 8
+ throwforce = 5
+ throw_speed = 2
+ w_class = WEIGHT_CLASS_BULKY
+ slot_flags = SLOT_BACK
+ to_chat(user, "You extend \the [src].")
+ else
+ force = 3
+ throwforce = 3
+ throw_speed = 3
+ w_class = WEIGHT_CLASS_NORMAL
+ slot_flags = null
+ to_chat(user, "[src] can now be concealed.")
+ add_fingerprint(user)
diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm
index b216424dbb..f52100b1c8 100644
--- a/code/modules/mob/living/carbon/human/human_defense.dm
+++ b/code/modules/mob/living/carbon/human/human_defense.dm
@@ -68,7 +68,10 @@
P.firer = src
P.yo = new_y - curloc.y
P.xo = new_x - curloc.x
- P.Angle = null
+ var/new_angle_s = P.Angle + rand(120,240)
+ while(new_angle_s > 180) // Translate to regular projectile degrees
+ new_angle_s -= 360
+ P.setAngle(new_angle_s)
return -1 // complete projectile permutation
diff --git a/code/modules/mob/living/simple_animal/constructs.dm b/code/modules/mob/living/simple_animal/constructs.dm
index 6e5548f85c..f40a3a8b95 100644
--- a/code/modules/mob/living/simple_animal/constructs.dm
+++ b/code/modules/mob/living/simple_animal/constructs.dm
@@ -146,6 +146,10 @@
P.firer = src
P.yo = new_y - curloc.y
P.xo = new_x - curloc.x
+ var/new_angle_s = P.Angle + rand(120,240)
+ while(new_angle_s > 180) // Translate to regular projectile degrees
+ new_angle_s -= 360
+ P.setAngle(new_angle_s)
return -1 // complete projectile permutation