diff --git a/data/json/itemgroups/Clothing_Gear/clothing.json b/data/json/itemgroups/Clothing_Gear/clothing.json index 3df0c6dd10cb4..20f2d9d282ae7 100644 --- a/data/json/itemgroups/Clothing_Gear/clothing.json +++ b/data/json/itemgroups/Clothing_Gear/clothing.json @@ -2799,6 +2799,9 @@ [ "chestguard_hard", 20 ], [ "armguard_hard", 20 ], [ "legguard_hard", 15 ], + [ "armor_riot_leg", 10 ], + [ "armor_riot_arm", 10 ], + [ "armor_riot_torso", 5 ], [ "under_armor", 20 ], [ "long_underpants", 40 ], [ "long_undertop", 40 ], diff --git a/data/json/itemgroups/Locations_MapExtras/locations.json b/data/json/itemgroups/Locations_MapExtras/locations.json index be9cb7ba24eae..bc6da5f542643 100644 --- a/data/json/itemgroups/Locations_MapExtras/locations.json +++ b/data/json/itemgroups/Locations_MapExtras/locations.json @@ -1530,10 +1530,11 @@ "items": [ [ "helmet_riot", 25 ], { "item": "mask_gas", "prob": 25, "charges": [ 0, 100 ] }, - [ "armor_riot", 20 ], + [ "armor_riot", 25 ], + [ "armor_riot_arm", 15 ], + [ "armor_riot_leg", 15 ], + [ "armor_riot_torso", 5 ], [ "gloves_tactical", 10 ], - [ "armguard_hard", 20 ], - [ "legguard_hard", 20 ], [ "emergency_book", 1 ] ] }, diff --git a/data/json/items/armor/arms_armor.json b/data/json/items/armor/arms_armor.json index 7364932d10046..2481b83fe3bf4 100644 --- a/data/json/items/armor/arms_armor.json +++ b/data/json/items/armor/arms_armor.json @@ -1637,5 +1637,36 @@ "material_thickness": 2.5, "environmental_protection": 1, "flags": [ "VARSIZE", "WATER_FRIENDLY" ] + }, + { + "id": "armor_riot_arm", + "type": "ARMOR", + "category": "armor", + "name": { "str": "pair of riot arm guards", "str_pl": "pairs of riot arm guards" }, + "description": "Hard arm guards used by riot police.", + "weight": "500 g", + "volume": "2500 ml", + "price": 10000, + "price_postapoc": 750, + "to_hit": -3, + "material": [ "thermo_resin", "plastic_pad" ], + "symbol": "[", + "looks_like": "armguard_hard", + "color": "dark_gray", + "warmth": 20, + "longest_side": "40 cm", + "flags": [ "STURDY", "OUTER", "WATER_FRIENDLY", "PADDED", "BLOCK_WHILE_WORN" ], + "armor": [ + { + "covers": [ "arm_l", "arm_r" ], + "encumbrance": 3, + "coverage": 90, + "material": [ + { "type": "plastic_pad", "covered_by_mat": 100, "thickness": 6 }, + { "type": "thermo_resin", "covered_by_mat": 90, "thickness": 2 } + ], + "specifically_covers": [ "arm_lower_l", "arm_lower_r", "arm_elbow_l", "arm_elbow_r" ] + } + ] } ] diff --git a/data/json/items/armor/legs_armor.json b/data/json/items/armor/legs_armor.json index 38728b2d6a563..b673766a0ed95 100644 --- a/data/json/items/armor/legs_armor.json +++ b/data/json/items/armor/legs_armor.json @@ -1573,6 +1573,44 @@ "material_thickness": 2.0, "flags": [ "VARSIZE", "WATERPROOF", "STURDY" ] }, + { + "id": "armor_riot_leg", + "type": "ARMOR", + "category": "armor", + "name": { "str": "pair of riot leg guards", "str_pl": "pairs of riot leg guards" }, + "description": "Hard leg guards used by riot police.", + "weight": "500 g", + "volume": "2500 ml", + "price": 10000, + "price_postapoc": 750, + "to_hit": -3, + "material": [ "thermo_resin", "plastic_pad" ], + "symbol": "[", + "looks_like": "legguard_hard", + "color": "dark_gray", + "warmth": 20, + "longest_side": "40 cm", + "flags": [ "STURDY", "OUTER", "WATER_FRIENDLY", "PADDED", "BLOCK_WHILE_WORN" ], + "armor": [ + { + "covers": [ "leg_l", "leg_r" ], + "encumbrance": 3, + "coverage": 90, + "material": [ + { "type": "plastic_pad", "covered_by_mat": 100, "thickness": 6 }, + { "type": "thermo_resin", "covered_by_mat": 90, "thickness": 2 } + ], + "specifically_covers": [ "leg_knee_l", "leg_knee_r", "leg_lower_l", "leg_lower_r" ] + }, + { + "covers": [ "foot_l", "foot_r" ], + "encumbrance": 2, + "coverage": 75, + "material": [ { "type": "thermo_resin", "covered_by_mat": 100, "thickness": 1.5 } ], + "specifically_covers": [ "foot_arch_l", "foot_arch_r", "foot_ankle_r", "foot_ankle_l" ] + } + ] + }, { "id": "legguard_larmor", "type": "ARMOR", diff --git a/data/json/items/armor/suits_protection.json b/data/json/items/armor/suits_protection.json index f753a01ead2df..8f88989039926 100644 --- a/data/json/items/armor/suits_protection.json +++ b/data/json/items/armor/suits_protection.json @@ -1358,28 +1358,68 @@ }, { "id": "armor_riot", - "repairs_like": "survivor_suit", "type": "ARMOR", "category": "armor", - "name": { "str": "riot armor" }, - "description": "Black plastic body armor plates used by riot police officers, back when they were just riots. The word POLICE is emblazoned across the front.", - "weight": "1000 g", - "volume": "7500 ml", - "price": 35000, - "price_postapoc": 1500, + "name": { "str": "riot armor suit" }, + "description": "A full suit of black plastic body armor plates used by riot police. Cleverly placed velcro straps secure each piece, resulting in slightly less encumbrance then its constituent parts. Molle webbing is attached to the thighs and the word POLICE is emblazoned across the front.", + "weight": "3 kg", + "volume": "12500 ml", + "price": 60000, + "price_postapoc": 4000, "to_hit": -3, - "material": [ "thermo_resin", "plastic" ], + "material": [ "thermo_resin", "plastic_pad" ], "symbol": "[", "looks_like": "kevlar", - "color": "light_gray", - "warmth": 10, + "color": "dark_gray", + "warmth": 20, "longest_side": "60 cm", - "material_thickness": 2.5, - "flags": [ "STURDY", "OUTER" ], + "flags": [ "STURDY", "OUTER", "WATER_FRIENDLY", "PADDED", "BLOCK_WHILE_WORN" ], + "use_action": [ { "type": "attach_molle", "size": 6 }, { "type": "detach_molle" } ], "armor": [ - { "encumbrance": 7, "coverage": 60, "covers": [ "torso" ] }, - { "encumbrance": 7, "coverage": 55, "covers": [ "leg_l", "leg_r" ] }, - { "encumbrance": 7, "coverage": 60, "covers": [ "arm_l", "arm_r" ] } + { + "encumbrance": 7, + "coverage": 95, + "covers": [ "torso" ], + "material": [ + { "type": "plastic_pad", "covered_by_mat": 100, "thickness": 8 }, + { "type": "thermo_resin", "covered_by_mat": 85, "thickness": 2.5 } + ] + }, + { + "covers": [ "arm_l", "arm_r", "leg_l", "leg_r" ], + "encumbrance": 4, + "coverage": 90, + "material": [ + { "type": "plastic_pad", "covered_by_mat": 100, "thickness": 6 }, + { "type": "thermo_resin", "covered_by_mat": 90, "thickness": 2 } + ], + "specifically_covers": [ "arm_lower_l", "arm_lower_r", "arm_elbow_l", "arm_elbow_r", "leg_knee_l", "leg_knee_r", "leg_lower_l", "leg_lower_r" ] + }, + { + "covers": [ "arm_l", "arm_r", "leg_l", "leg_r", "foot_l", "foot_r" ], + "coverage": 85, + "material": [ + { "type": "plastic_pad", "covered_by_mat": 100, "thickness": 6 }, + { "type": "thermo_resin", "covered_by_mat": 85, "thickness": 1.5 } + ], + "specifically_covers": [ "arm_shoulder_l", "arm_shoulder_r", "arm_upper_l", "arm_upper_r", "leg_upper_l", "leg_upper_r" ] + }, + { + "covers": [ "foot_l", "foot_r" ], + "encumbrance": 2, + "coverage": 75, + "material": [ { "type": "thermo_resin", "covered_by_mat": 100, "thickness": 1.5 } ], + "specifically_covers": [ "foot_arch_l", "foot_arch_r", "foot_ankle_r", "foot_ankle_l" ] + }, + { + "covers": [ "leg_l", "leg_r" ], + "coverage": 95, + "material": [ + { "type": "plastic_pad", "covered_by_mat": 100, "thickness": 6 }, + { "type": "thermo_resin", "covered_by_mat": 20, "thickness": 1.5 } + ], + "specifically_covers": [ "leg_hip_l", "leg_hip_r" ] + } ] }, { diff --git a/data/json/items/armor/torso_armor.json b/data/json/items/armor/torso_armor.json index 0052a3efcef42..32ff42f2585eb 100644 --- a/data/json/items/armor/torso_armor.json +++ b/data/json/items/armor/torso_armor.json @@ -1923,6 +1923,57 @@ "environmental_protection": 2, "flags": [ "VARSIZE", "WATER_FRIENDLY" ] }, + { + "id": "armor_riot_torso", + "repairs_like": "armor_larmor", + "type": "ARMOR", + "category": "armor", + "name": { "str": "riot chest guard" }, + "description": "A hard chest protector, attached to thigh and upper arm guards. Used by riot police officers. Molle webbing is attached to the thighs. The word POLICE is emblazoned across the front.", + "weight": "2 kg", + "volume": "10000 ml", + "price": 40000, + "price_postapoc": 2500, + "to_hit": -3, + "material": [ "thermo_resin", "plastic_pad" ], + "symbol": "[", + "looks_like": "chestguard_hard", + "color": "dark_gray", + "warmth": 20, + "longest_side": "60 cm", + "flags": [ "STURDY", "OUTER", "WATER_FRIENDLY", "PADDED" ], + "use_action": [ { "type": "attach_molle", "size": 6 }, { "type": "detach_molle" } ], + "armor": [ + { + "encumbrance": 7, + "coverage": 95, + "covers": [ "torso" ], + "material": [ + { "type": "plastic_pad", "covered_by_mat": 100, "thickness": 8 }, + { "type": "thermo_resin", "covered_by_mat": 85, "thickness": 2.5 } + ] + }, + { + "covers": [ "arm_l", "arm_r", "leg_l", "leg_r" ], + "encumbrance": 2, + "coverage": 85, + "material": [ + { "type": "plastic_pad", "covered_by_mat": 100, "thickness": 6 }, + { "type": "thermo_resin", "covered_by_mat": 85, "thickness": 1.5 } + ], + "specifically_covers": [ "arm_shoulder_l", "arm_shoulder_r", "arm_upper_l", "arm_upper_r", "leg_upper_l", "leg_upper_r" ] + }, + { + "covers": [ "leg_l", "leg_r" ], + "coverage": 100, + "material": [ + { "type": "plastic_pad", "covered_by_mat": 100, "thickness": 6 }, + { "type": "thermo_resin", "covered_by_mat": 20, "thickness": 1.5 } + ], + "specifically_covers": [ "leg_hip_l", "leg_hip_r" ] + } + ] + }, { "id": "armor_larmor_chest", "type": "ARMOR", diff --git a/data/json/monsterdrops/zombie_cop.json b/data/json/monsterdrops/zombie_cop.json index c479494b7c28e..eda3de68d02bf 100644 --- a/data/json/monsterdrops/zombie_cop.json +++ b/data/json/monsterdrops/zombie_cop.json @@ -35,8 +35,11 @@ "type": "item_group", "id": "cop_armor", "items": [ - [ "armor_riot", 20 ], - [ "kevlar", 35 ], + [ "armor_riot", 65 ], + [ "armor_riot_arm", 5 ], + [ "armor_riot_leg", 5 ], + [ "armor_riot_torso", 10 ], + [ "kevlar", 100 ], { "item": "level_3_vest", "variant": "police_armor_vest", @@ -270,7 +273,14 @@ "type": "item_group", "subtype": "collection", "entries": [ - { "distribution": [ { "item": "armor_riot", "prob": 25 }, { "group": "swat_ballistic_vest", "prob": 75 } ], "prob": 65 }, + { + "distribution": [ + { "item": "armor_riot", "prob": 30 }, + { "item": "armor_riot_torso", "prob": 15 }, + { "group": "swat_ballistic_vest", "prob": 80 } + ], + "prob": 65 + }, { "distribution": [ { "item": "tank_top", "prob": 30 }, diff --git a/data/json/recipes/armor/suit.json b/data/json/recipes/armor/suit.json index 9813cda1d618d..79cd35169729a 100644 --- a/data/json/recipes/armor/suit.json +++ b/data/json/recipes/armor/suit.json @@ -3372,5 +3372,19 @@ [ [ "xl_armor_qt_heavyarmguard", 2 ] ], [ [ "xl_armor_qt_heavy_leg_guard", 2 ] ] ] + }, + { + "result": "armor_riot", + "type": "recipe", + "activity_level": "LIGHT_EXERCISE", + "id_suffix": "assembly", + "category": "CC_ARMOR", + "subcategory": "CSC_ARMOR_SUIT", + "skill_used": "fabrication", + "time": "2 m", + "reversible": true, + "autolearn": true, + "flags": [ "NO_RESIZE" ], + "components": [ [ [ "armor_riot_leg", 1 ] ], [ [ "armor_riot_arm", 1 ] ], [ [ "armor_riot_torso", 1 ] ] ] } ] diff --git a/data/json/recipes/recipe_deconstruction.json b/data/json/recipes/recipe_deconstruction.json index 998432fb272e9..7ea0b693f460f 100644 --- a/data/json/recipes/recipe_deconstruction.json +++ b/data/json/recipes/recipe_deconstruction.json @@ -7164,6 +7164,13 @@ "components": [ [ [ "cardboard", 1 ] ] ], "flags": [ "BLIND_EASY" ] }, + { + "result": "armor_riot", + "type": "uncraft", + "activity_level": "LIGHT_EXERCISE", + "time": "1 m", + "components": [ [ [ "armor_riot_leg", 1 ] ], [ [ "armor_riot_arm", 1 ] ], [ [ "armor_riot_torso", 1 ] ] ] + }, { "result": "matches", "type": "uncraft",