diff --git a/code/_globalvars/lists/maintenance_loot.dm b/code/_globalvars/lists/maintenance_loot.dm index 47c36dc3f77..db7c910df26 100644 --- a/code/_globalvars/lists/maintenance_loot.dm +++ b/code/_globalvars/lists/maintenance_loot.dm @@ -302,6 +302,7 @@ GLOBAL_LIST_INIT(rarity_loot, list(//rare: really good items /obj/item/pen/survival = 1, /obj/item/restraints/handcuffs = 1, /obj/item/shield/buckler = 1, + /obj/item/shield/improvised = 1, /obj/item/throwing_star = 1, /obj/item/weldingtool/hugetank = 1, /obj/item/fishing_rod/telescopic/master = 1, diff --git a/code/datums/components/crafting/equipment.dm b/code/datums/components/crafting/equipment.dm index 4b686fdd8e9..741d53ed56b 100644 --- a/code/datums/components/crafting/equipment.dm +++ b/code/datums/components/crafting/equipment.dm @@ -13,6 +13,16 @@ ..() blacklist |= subtypesof(/obj/item/shield/riot) +/datum/crafting_recipe/improvisedshield + name = "Improvised Shield" + result = /obj/item/shield/improvised + reqs = list( + /obj/item/stack/sheet/iron = 10, + /obj/item/stack/sticky_tape = 2, + ) + time = 4 SECONDS + category = CAT_EQUIPMENT + /datum/crafting_recipe/radiogloves name = "Radio Gloves" result = /obj/item/clothing/gloves/radio diff --git a/code/game/objects/items/shields.dm b/code/game/objects/items/shields.dm index b711bb63d45..3e3af7bc36f 100644 --- a/code/game/objects/items/shields.dm +++ b/code/game/objects/items/shields.dm @@ -397,4 +397,48 @@ balloon_alert(user, "extend it first!") return COMPONENT_BLOCK_ITEM_DISARM_ATTACK +/datum/armor/item_shield/ballistic + melee = 30 + bullet = 85 + bomb = 10 + laser = 80 + +/obj/item/shield/ballistic + name = "ballistic shield" + desc = "A heavy shield designed for blocking projectiles, weaker to melee." + icon_state = "ballistic" + inhand_icon_state = "ballistic" + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2, /datum/material/titanium =SHEET_MATERIAL_AMOUNT) + max_integrity = 75 + shield_break_leftover = /obj/item/stack/rods/ten + armor_type = /datum/armor/item_shield/ballistic + +/obj/item/shield/ballistic/attackby(obj/item/attackby_item, mob/user, params) + if(istype(attackby_item, /obj/item/stack/sheet/mineral/titanium)) + if (atom_integrity >= max_integrity) + to_chat(user, span_warning("[src] is already in perfect condition.")) + return + var/obj/item/stack/sheet/mineral/titanium/titanium_sheet = attackby_item + titanium_sheet.use(1) + atom_integrity = max_integrity + to_chat(user, span_notice("You repair [src] with [titanium_sheet].")) + return + return ..() + +/datum/armor/item_shield/improvised + melee = 40 + bullet = 30 + laser = 30 + +/obj/item/shield/improvised + name = "improvised shield" + desc = "A crude shield made out of several sheets of iron taped together, not very durable." + icon_state = "improvised" + inhand_icon_state = "improvised" + custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT * 2) + max_integrity = 35 + shield_break_leftover = /obj/item/stack/rods/two + armor_type = /datum/armor/item_shield/improvised + block_sound = 'sound/items/trayhit2.ogg' + #undef BATON_BASH_COOLDOWN diff --git a/code/modules/research/designs/weapon_designs.dm b/code/modules/research/designs/weapon_designs.dm index 224ab7a1a4f..bd196ba2b2a 100644 --- a/code/modules/research/designs/weapon_designs.dm +++ b/code/modules/research/designs/weapon_designs.dm @@ -204,6 +204,19 @@ departmental_flags = DEPARTMENT_BITFLAG_SECURITY autolathe_exportable = FALSE +/datum/design/ballistic_shield + name = "Ballistic Shield" + desc = "A heavy shield designed for blocking projectiles, weaker to melee." + id = "ballistic_shield" + build_type = PROTOLATHE | AWAY_LATHE + materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2, /datum/material/titanium =SHEET_MATERIAL_AMOUNT) + build_path = /obj/item/shield/ballistic + category = list( + RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_MELEE + ) + departmental_flags = DEPARTMENT_BITFLAG_SECURITY + autolathe_exportable = FALSE + /datum/design/beamrifle name = "Beam Marksman Rifle Part Kit (Lethal)" desc = "The gunkit for a powerful long ranged anti-material rifle that fires charged particle beams to obliterate targets." diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm index 4355dbeca71..b6b6d2f7b8b 100644 --- a/code/modules/research/techweb/all_nodes.dm +++ b/code/modules/research/techweb/all_nodes.dm @@ -1626,6 +1626,7 @@ description = "Our researchers have found new ways to weaponize just about everything now." prereq_ids = list("engineering") design_ids = list( + "ballistic_shield", "pin_testing", "tele_shield", "lasershell", diff --git a/code/modules/unit_tests/screenshots/screenshot_antag_icons_loneinfiltrator.png b/code/modules/unit_tests/screenshots/screenshot_antag_icons_loneinfiltrator.png index 76b315e9894..c3b9a149220 100644 Binary files a/code/modules/unit_tests/screenshots/screenshot_antag_icons_loneinfiltrator.png and b/code/modules/unit_tests/screenshots/screenshot_antag_icons_loneinfiltrator.png differ diff --git a/icons/mob/clothing/back.dmi b/icons/mob/clothing/back.dmi index 49e46149a67..c3e5dc82069 100644 Binary files a/icons/mob/clothing/back.dmi and b/icons/mob/clothing/back.dmi differ diff --git a/icons/mob/inhands/equipment/shields_lefthand.dmi b/icons/mob/inhands/equipment/shields_lefthand.dmi index d31dbb3f830..ce99a16d476 100644 Binary files a/icons/mob/inhands/equipment/shields_lefthand.dmi and b/icons/mob/inhands/equipment/shields_lefthand.dmi differ diff --git a/icons/mob/inhands/equipment/shields_righthand.dmi b/icons/mob/inhands/equipment/shields_righthand.dmi index dfd72809be7..1c9c990b43d 100644 Binary files a/icons/mob/inhands/equipment/shields_righthand.dmi and b/icons/mob/inhands/equipment/shields_righthand.dmi differ diff --git a/icons/obj/weapons/shields.dmi b/icons/obj/weapons/shields.dmi index 3f90af83196..7c4be107566 100644 Binary files a/icons/obj/weapons/shields.dmi and b/icons/obj/weapons/shields.dmi differ