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