diff --git a/code/game/objects/items/weapons/shields.dm b/code/game/objects/items/weapons/shields.dm
index 931d6e09f84..760e0633f56 100644
--- a/code/game/objects/items/weapons/shields.dm
+++ b/code/game/objects/items/weapons/shields.dm
@@ -6,30 +6,29 @@
desc = "A shield adept at blocking blunt objects from connecting with the torso of the shield wielder."
icon = 'icons/obj/weapons.dmi'
icon_state = "riot"
- flags = CONDUCT
slot_flags = SLOT_BACK
- force = 5.0
- throwforce = 5.0
- throw_speed = 1
- throw_range = 4
- w_class = 4.0
+ force = 8
+ throwforce = 5
+ throw_speed = 2
+ throw_range = 3
+ w_class = 4
g_amt = 7500
m_amt = 1000
origin_tech = "materials=2"
attack_verb = list("shoved", "bashed")
var/cooldown = 0 //shield bash cooldown. based on world.time
- IsShield()
- return 1
+/obj/item/weapon/shield/riot/IsShield()
+ return 1
- attackby(obj/item/weapon/W as obj, mob/user as mob, params)
- if(istype(W, /obj/item/weapon/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
- ..()
+/obj/item/weapon/shield/riot/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
+ if(istype(W, /obj/item/weapon/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
+ ..()
/obj/item/weapon/shield/riot/roman
name = "roman shield"
@@ -42,16 +41,93 @@
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/weapons.dmi'
icon_state = "eshield0" // eshield1 for expanded
- flags = CONDUCT
- force = 3.0
- throwforce = 5.0
- throw_speed = 1
- throw_range = 4
+ force = 3
+ throwforce = 3
+ throw_speed = 3
+ throw_range = 5
w_class = 1
origin_tech = "materials=4;magnets=3;syndicate=4"
attack_verb = list("shoved", "bashed")
var/active = 0
+/obj/item/weapon/shield/energy/IsShield()
+ return (active)
+
+/obj/item/weapon/shield/energy/IsReflect()
+ return (active)
+
+/obj/item/weapon/shield/energy/attack_self(mob/living/carbon/human/user)
+ if(user.disabilities & CLUMSY && prob(50))
+ user << "You beat yourself in the head with [src]."
+ user.take_organ_damage(5)
+ active = !active
+ icon_state = "eshield[active]"
+
+ if(active)
+ force = 10
+ throwforce = 8
+ throw_speed = 2
+ w_class = 4
+ playsound(user, 'sound/weapons/saberon.ogg', 35, 1)
+ user << "[src] is now active."
+ else
+ force = 3
+ throwforce = 3
+ throw_speed = 3
+ w_class = 1
+ playsound(user, 'sound/weapons/saberoff.ogg', 35, 1)
+ user << "[src] can now be concealed."
+ if(istype(user,/mob/living/carbon/human))
+ var/mob/living/carbon/human/H = user
+ H.update_inv_l_hand()
+ H.update_inv_r_hand()
+ add_fingerprint(user)
+ return
+
+/obj/item/weapon/shield/riot/tele
+ name = "telescopic shield"
+ desc = "An advanced riot shield made of lightweight materials that collapses for easy storage."
+ icon = 'icons/obj/weapons.dmi'
+ icon_state = "teleriot0"
+ icon_override = 'icons/mob/in-hand/tools.dmi'
+ slot_flags = null
+ force = 3
+ throwforce = 3
+ throw_speed = 3
+ throw_range = 4
+ w_class = 3
+ var/active = 0
+
+/obj/item/weapon/shield/riot/tele/IsShield()
+ return (active)
+
+/obj/item/weapon/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 = 4
+ slot_flags = SLOT_BACK
+ user << "You extend \the [src]."
+ else
+ force = 3
+ throwforce = 3
+ throw_speed = 3
+ w_class = 3
+ slot_flags = null
+ user << "[src] can now be concealed."
+ if(istype(user,/mob/living/carbon/human))
+ var/mob/living/carbon/human/H = user
+ H.update_inv_l_hand()
+ H.update_inv_r_hand()
+ add_fingerprint(user)
+ return
+
+
/obj/item/weapon/cloaking_device
name = "cloaking device"
desc = "Use this to become invisible to the human eyesocket."
diff --git a/code/game/objects/items/weapons/swords_axes_etc.dm b/code/game/objects/items/weapons/swords_axes_etc.dm
index c0228d3c725..41902f61084 100644
--- a/code/game/objects/items/weapons/swords_axes_etc.dm
+++ b/code/game/objects/items/weapons/swords_axes_etc.dm
@@ -282,40 +282,4 @@
src.w_class = 5
hitsound = "swing_hit"
src.add_fingerprint(user)
- return
-
-
-/*
- * Energy Shield
- */
-/obj/item/weapon/shield/energy/IsShield()
- if(active)
- return 1
- else
- return 0
-
-/obj/item/weapon/shield/energy/attack_self(mob/living/user as mob)
- if ((CLUMSY in user.mutations) && prob(50))
- user << "\red You beat yourself in the head with [src]."
- user.take_organ_damage(5)
- active = !active
- if (active)
- force = 10
- reflect_chance = 100
- icon_state = "eshield[active]"
- w_class = 4
- playsound(user, 'sound/weapons/saberon.ogg', 50, 1)
- user << "\blue [src] is now active."
- else
- force = 3
- icon_state = "eshield[active]"
- w_class = 1
- reflect_chance = 0
- playsound(user, 'sound/weapons/saberoff.ogg', 50, 1)
- user << "\blue [src] can now be concealed."
- if(istype(user,/mob/living/carbon/human))
- var/mob/living/carbon/human/H = user
- H.update_inv_l_hand()
- H.update_inv_r_hand()
- add_fingerprint(user)
- return
+ return
\ No newline at end of file
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm
index e76f9a778b1..f7971852067 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm
@@ -113,7 +113,7 @@
new /obj/item/weapon/storage/lockbox/loyalty(src)
new /obj/item/weapon/storage/box/flashbangs(src)
new /obj/item/clothing/mask/gas/sechailer/hos(src)
- new /obj/item/weapon/shield/riot(src)
+ new /obj/item/weapon/shield/riot/tele(src)
new /obj/item/weapon/melee/baton/loaded(src)
new /obj/item/weapon/storage/belt/security(src)
new /obj/item/taperoll/police(src)
diff --git a/code/modules/research/designs/weapon_designs.dm b/code/modules/research/designs/weapon_designs.dm
index a6a2e459116..60c4fdd6c37 100644
--- a/code/modules/research/designs/weapon_designs.dm
+++ b/code/modules/research/designs/weapon_designs.dm
@@ -68,6 +68,17 @@
build_path = /obj/item/weapon/grenade/chem_grenade/large
category = list("Weapons")
+/datum/design/tele_shield
+ name = "Telescopic Riot Shield"
+ desc = "An advanced riot shield made of lightweight materials that collapses for easy storage."
+ id = "tele_shield"
+ req_tech = list("combat" = 4, "materials" = 3, "engineering" = 3)
+ build_type = PROTOLATHE
+ materials = list("$metal" = 4000, "$glass" = 5000, "$silver" = 300)
+ build_path = /obj/item/weapon/shield/riot/tele
+ locked = 1
+ category = list("Weapons")
+
/datum/design/lasercannon
name = "Laser Cannon"
desc = "A heavy duty laser cannon."
diff --git a/icons/mob/in-hand/tools.dmi b/icons/mob/in-hand/tools.dmi
index 86bdbd965e5..90ff792ef6e 100644
Binary files a/icons/mob/in-hand/tools.dmi and b/icons/mob/in-hand/tools.dmi differ
diff --git a/icons/obj/weapons.dmi b/icons/obj/weapons.dmi
index f441c3d5ac4..5a2601f5283 100644
Binary files a/icons/obj/weapons.dmi and b/icons/obj/weapons.dmi differ