diff --git a/code/modules/assembly/flash.dm b/code/modules/assembly/flash.dm index 7469ef5b0de..4b9a81f73ce 100644 --- a/code/modules/assembly/flash.dm +++ b/code/modules/assembly/flash.dm @@ -220,3 +220,62 @@ /obj/item/device/assembly/flash/armimplant/proc/cooldown() overheat = FALSE + +/obj/item/device/assembly/flash/shield + name = "strobe shield" + desc = "A shield with a built in, high intensity light capable of blinding and disorienting suspects. Takes regular handheld flashes as bulbs." + icon = 'icons/obj/weapons.dmi' + icon_state = "flashshield" + item_state = "flashshield" + 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) + origin_tech = "materials=3;combat=4" + attack_verb = list("shoved", "bashed") + 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/device/assembly/flash/shield/flash_recharge(interval=10) + if(times_used >= 4) + burn_out() + return 0 + return 1 + +/obj/item/device/assembly/flash/shield/attackby(obj/item/weapon/W, mob/user) + if(istype(W, /obj/item/device/assembly/flash/handheld)) + var/obj/item/device/assembly/flash/handheld/flash = W + if(flash.crit_fail) + user << "No sense replacing it with a broken bulb." + return + else + user << "You begin to replace the bulb." + if(do_after(user, 20, target = src)) + if(flash.crit_fail || !flash || qdeleted(flash)) + return + crit_fail = FALSE + times_used = 0 + playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) + update_icon() + flash.crit_fail = TRUE + flash.update_icon() + return + ..() + +/obj/item/device/assembly/flash/shield/update_icon(flash = 0) + item_state = "flashshield" + item_state = "flashshield" + + if(crit_fail) + icon_state = "riot" + item_state = "riot" + else if(flash) + item_state = "flashshield_flash" + item_state = "flashshield_flash" + addtimer(src, "update_icon", 5) + + if(holder) + holder.update_icon() \ No newline at end of file diff --git a/code/modules/crafting/recipes.dm b/code/modules/crafting/recipes.dm index 84f94fcba65..e70a7fac264 100644 --- a/code/modules/crafting/recipes.dm +++ b/code/modules/crafting/recipes.dm @@ -39,6 +39,15 @@ time = 15 category = CAT_WEAPON +/datum/crafting_recipe/strobeshield + name = "strobe shield" + result = /obj/item/device/assembly/flash/shield + reqs = list(/obj/item/wallframe/flasher = 1, + /obj/item/device/assembly/flash/handheld = 1, + /obj/item/weapon/shield/riot = 1) + time = 40 + category = CAT_WEAPON + /datum/crafting_recipe/molotov name = "Molotov" result = /obj/item/weapon/reagent_containers/food/drinks/bottle/molotov diff --git a/icons/mob/back.dmi b/icons/mob/back.dmi index 04c9ecaf891..75c8c3363c9 100644 Binary files a/icons/mob/back.dmi and b/icons/mob/back.dmi differ diff --git a/icons/mob/inhands/items_righthand.dmi b/icons/mob/inhands/items_righthand.dmi index d681272b472..0dd714e8e35 100644 Binary files a/icons/mob/inhands/items_righthand.dmi and b/icons/mob/inhands/items_righthand.dmi differ diff --git a/icons/obj/weapons.dmi b/icons/obj/weapons.dmi index d3184253f6a..c87342e037b 100644 Binary files a/icons/obj/weapons.dmi and b/icons/obj/weapons.dmi differ