From d157669090e9efa1c3828cd2c968eec82340b89f Mon Sep 17 00:00:00 2001 From: Kwenchin Date: Thu, 19 Oct 2023 12:14:09 +0200 Subject: [PATCH 01/73] updated json flags Updated json flags to accommodate for future items --- data/json/flags.json | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/data/json/flags.json b/data/json/flags.json index cb16e5a670ba9..c6d7804d7fc1c 100644 --- a/data/json/flags.json +++ b/data/json/flags.json @@ -29,6 +29,42 @@ "info": "You can use this armor with chainmail with out encumbrance penalty", "restriction": "Item must be a chainmail compatible armor piece" }, + { + "id": "ABLATIVE_EXOSKELETON_HEAD", + "type": "json_flag", + "info": "This armor part will attach to a combat exoskeleton frame", + "restriction": "Item must be combat exoskeleton head protector" + }, + { + "id": "ABLATIVE_EXOSKELETON_TORSO", + "type": "json_flag", + "info": "This armor part will attach to a combat exoskeleton frame", + "restriction": "Item must be combat exoskeleton torso protector" + }, + { + "id": "ABLATIVE_EXOSKELETON_ARMS", + "type": "json_flag", + "info": "This armor part will attach to a combat exoskeleton frame", + "restriction": "Item must be combat exoskeleton arms protector" + }, + { + "id": "ABLATIVE_EXOSKELETON_HANDS", + "type": "json_flag", + "info": "This armor part will attach to a combat exoskeleton frame", + "restriction": "Item must be combat exoskeleton hands protector" + }, + { + "id": "ABLATIVE_EXOSKELETON_LEGS", + "type": "json_flag", + "info": "This armor part will attach to a combat exoskeleton frame", + "restriction": "Item must be combat exoskeleton legs protector" + }, + { + "id": "ABLATIVE_EXOSKELETON_FEET", + "type": "json_flag", + "info": "This armor part will attach to a combat exoskeleton frame", + "restriction": "Item must be combat exoskeleton feet protector" + }, { "id": "ABLATIVE_LARGE", "type": "json_flag", From 0f10db9aa810ab58be7bd2d644ad819d95fdb2e2 Mon Sep 17 00:00:00 2001 From: Kwenchin Date: Thu, 19 Oct 2023 12:48:08 +0200 Subject: [PATCH 02/73] obsoleted exoskeleton helmets Exoskeleton helmets serve no function anymore --- data/json/obsoletion/obsolete_items.json | 157 +++++++++++++++++++++++ 1 file changed, 157 insertions(+) diff --git a/data/json/obsoletion/obsolete_items.json b/data/json/obsoletion/obsolete_items.json index 94fc1f24cdf04..3180a209c68e6 100644 --- a/data/json/obsoletion/obsolete_items.json +++ b/data/json/obsoletion/obsolete_items.json @@ -1,4 +1,161 @@ [ + { + "id": "power_armor_helmet_basic", + "type": "TOOL_ARMOR", + "category": "armor", + "name": { "str": "environmental combat helmet" }, + "description": "A fully enclosed combat helmet for hazardous environments, this was designed to fit with a powered exoskeleton, using cameras to expand visual range. In practice, the cameras were unreliable and easily fouled. The environmental controls function best with direct-skin contact.", + "weight": "3628 g", + "volume": "5 L", + "price": 2500000, + "price_postapoc": 7500, + "to_hit": 1, + "material": [ "qt_steel", "hyperweave_off", "kevlar_rigid" ], + "symbol": "[", + "looks_like": "depowered_helmet", + "color": "light_gray", + "warmth": 90, + "power_armor": true, + "ammo": "battery", + "use_action": { + "type": "transform", + "menu_text": "Turn on", + "msg": "The %s engages.", + "target": "power_armor_helmet_basic_on", + "active": true + }, + "material_thickness": 14, + "environmental_protection": 16, + "qualities": [ [ "GLARE", 1 ] ], + "flags": [ "WATCH", "WATERPROOF", "STURDY", "PARTIAL_DEAF", "THERMOMETER", "SUN_GLASSES", "COMBAT_TOGGLEABLE" ], + "armor": [ { "encumbrance": 50, "coverage": 100, "covers": [ "head", "eyes", "mouth" ] } ], + "melee_damage": { "bash": 1 } + }, + { + "id": "power_armor_helmet_basic_on", + "type": "TOOL_ARMOR", + "copy-from": "power_armor_helmet_basic", + "looks_like": "power_armor_helmet_basic", + "name": { "str": "environmental combat helmet (on)", "str_pl": "environmental combat helmets (on)" }, + "description": "A fully enclosed combat helmet for hazardous environments, this was designed to fit with a powered exoskeleton, using cameras to expand visual range. In practice, the cameras were unreliable and easily fouled. The environmental controls function best with direct-skin contact. The environmental controls function best with direct-skin contact. It is turned on and continually drawing power. Use it to turn it off.", + "power_draw": "435 mW", + "revert_to": "power_armor_helmet_basic", + "use_action": { "type": "transform", "menu_text": "Turn off", "msg": "The %s disengages.", "target": "power_armor_helmet_basic" }, + "extend": { "flags": [ "USE_UPS" ] }, + "armor": [ { "encumbrance": 10, "coverage": 100, "covers": [ "head", "eyes", "mouth" ] } ] + }, + { + "id": "power_armor_helmet_heavy", + "type": "TOOL_ARMOR", + "category": "armor", + "name": { "str": "heavy environmental combat helmet" }, + "description": "An extremely heavy-duty fully enclosed combat helmet for hazardous environments, this was designed to fit with a powered exoskeleton. In the field, soldiers reported that the protection was not worth the awkward size and limited visuals. The environmental controls function best with direct-skin contact.", + "weight": "5442 g", + "volume": "7 L", + "price": 3750000, + "price_postapoc": 10000, + "to_hit": 1, + "material": [ "qt_steel", "hyperweave_off", "kevlar_rigid" ], + "symbol": "[", + "looks_like": "power_armor_helmet_basic", + "color": "dark_gray", + "warmth": 60, + "power_armor": true, + "material_thickness": 16, + "environmental_protection": 16, + "qualities": [ [ "GLARE", 1 ] ], + "ammo": "battery", + "use_action": { + "type": "transform", + "menu_text": "Turn on", + "msg": "The %s engages.", + "target": "power_armor_helmet_heavy_on", + "active": true + }, + "flags": [ "WATCH", "WATERPROOF", "STURDY", "PARTIAL_DEAF", "THERMOMETER", "SUN_GLASSES", "COMBAT_TOGGLEABLE" ], + "armor": [ { "encumbrance": 60, "coverage": 100, "covers": [ "head", "eyes", "mouth" ] } ], + "melee_damage": { "bash": 1 } + }, + { + "id": "power_armor_helmet_heavy_on", + "type": "TOOL_ARMOR", + "copy-from": "power_armor_helmet_heavy", + "looks_like": "power_armor_helmet_heavy", + "name": { "str": "heavy environmental combat helmet (on)", "str_pl": "heavy environmental combat helmets (on)" }, + "description": "An extremely heavy-duty fully enclosed combat helmet for hazardous environments, this was designed to fit with a powered exoskeleton. In the field, soldiers reported that the protection was not worth the awkward size and limited visuals. The environmental controls function best with direct-skin contact. It is turned on and continually drawing power. Use it to turn it off.", + "power_draw": "435 mW", + "revert_to": "power_armor_helmet_heavy", + "use_action": { "type": "transform", "menu_text": "Turn off", "msg": "The %s disengages.", "target": "power_armor_helmet_heavy" }, + "extend": { "flags": [ "USE_UPS" ] }, + "armor": [ { "encumbrance": 20, "coverage": 100, "covers": [ "head", "eyes", "mouth" ] } ] + }, + { + "id": "power_armor_helmet_light", + "type": "TOOL_ARMOR", + "category": "armor", + "name": { "str": "light environmental combat helmet" }, + "description": "This full-enclosure helmet was designed based on commercial diving equipment, in response to complaints that earlier designs were impossible to use in combat. While still a little more restrictive than regular combat headgear - and frustrating should your nose itch - this one received far better reviews from soldiers. Sadly, civilization ended before they could roll out in significant numbers. The environmental controls function best with direct-skin contact.", + "weight": "1814 g", + "volume": "4 L", + "price": 3750000, + "price_postapoc": 10000, + "to_hit": 1, + "material": [ "qt_steel", "kevlar", "kevlar_rigid" ], + "symbol": "[", + "looks_like": "power_armor_helmet_basic", + "color": "dark_gray", + "warmth": 60, + "power_armor": true, + "ammo": "battery", + "use_action": { + "type": "transform", + "menu_text": "Turn on", + "msg": "The %s engages.", + "target": "power_armor_helmet_light_on", + "active": true + }, + "material_thickness": 8, + "environmental_protection": 16, + "flags": [ "WATCH", "WATERPROOF", "STURDY", "THERMOMETER", "SUN_GLASSES", "SWIM_GOGGLES", "COMBAT_TOGGLEABLE" ], + "armor": [ { "encumbrance": 40, "coverage": 100, "covers": [ "head", "eyes", "mouth" ] } ], + "melee_damage": { "bash": 1 } + }, + { + "id": "power_armor_helmet_light_on", + "type": "TOOL_ARMOR", + "copy-from": "power_armor_helmet_light", + "looks_like": "power_armor_helmet_light", + "name": { "str": "light environmental combat helmet (on)", "str_pl": "light environmental combat helmets (on)" }, + "description": "This full-enclosure helmet was designed based on commercial diving equipment, in response to complaints that earlier designs were impossible to use in combat. While still a little more restrictive than regular combat headgear - and frustrating should your nose itch - this one received far better reviews from soldiers. Sadly, civilization ended before they could roll out in significant numbers. The environmental controls function best with direct-skin contact. It is turned on and continually drawing power. Use it to turn it off.", + "power_draw": "435 mW", + "revert_to": "power_armor_helmet_light", + "use_action": { "type": "transform", "menu_text": "Turn off", "msg": "The %s disengages.", "target": "power_armor_helmet_light" }, + "extend": { "flags": [ "USE_UPS" ] }, + "armor": [ { "encumbrance": 0, "coverage": 100, "covers": [ "head", "eyes", "mouth" ] } ] + }, + { + "id": "depowered_helmet", + "type": "ARMOR", + "category": "armor", + "name": { "str": "salvaged power armor helmet" }, + "description": "This used to be a military-grade full-head helmet with advanced optics and environmental filters. It looks like it was decommissioned or otherwise stripped for parts; now it's a very expensive hat. It's still quite durable, but quite hard to see out of.", + "weight": "2416 g", + "volume": "5 L", + "price": 30000, + "price_postapoc": 5000, + "to_hit": 1, + "material": [ "steel" ], + "symbol": "[", + "looks_like": "power_armor_helmet_basic", + "color": "light_gray", + "warmth": 50, + "material_thickness": 8, + "environmental_protection": 6, + "qualities": [ [ "GLARE", 1 ] ], + "flags": [ "WATERPROOF", "STURDY", "SUN_GLASSES" ], + "armor": [ { "encumbrance": 40, "coverage": 95, "covers": [ "head", "eyes", "mouth" ] } ], + "melee_damage": { "bash": 1 } + }, { "id": "toolset_extended", "type": "TOOL", From 3d13b2ae662408df061724615d11353ea62f05c3 Mon Sep 17 00:00:00 2001 From: Kwenchin Date: Fri, 20 Oct 2023 00:57:56 +0200 Subject: [PATCH 03/73] Update power_armor.json Still very much WIP but the abstract exoskeleton item should give an idea of what I'm going for. Also implemented abstract item for armor parts. --- data/json/items/armor/power_armor.json | 883 +++++++++---------------- 1 file changed, 314 insertions(+), 569 deletions(-) diff --git a/data/json/items/armor/power_armor.json b/data/json/items/armor/power_armor.json index f46796b533a06..4bd472a3aef77 100644 --- a/data/json/items/armor/power_armor.json +++ b/data/json/items/armor/power_armor.json @@ -1,231 +1,140 @@ [ { - "id": "depowered_armor", - "type": "ARMOR", + "abstract": "exoskeleton", + "type": "TOOL_ARMOR", "category": "armor", - "name": { "str": "salvaged power armor" }, - "//": "These are much cheaper than powered suits, because they're extremely heavy and impractical. The good stuff is gone!", - "description": "This used to be a powered exoskeleton with a set of heavy armor plates, made wearable by the assistance of servos. Now it's just the armor plating and a stripped-down chassis: as one might expect, it's a lot harder to wear.", - "weight": "12214 g", - "volume": "25 L", - "price": 70000, - "price_postapoc": 15000, - "to_hit": 1, - "material": [ "steel" ], "symbol": "[", "looks_like": "power_armor_basic", "color": "light_gray", - "pocket_data": [ - { - "pocket_type": "CONTAINER", - "rigid": true, - "max_contains_volume": "4 L", - "max_contains_weight": "30 kg", - "description": "Compartment for an UPS.", - "moves": 200 - }, - { - "pocket_type": "CONTAINER", - "rigid": true, - "max_contains_volume": "750 ml", - "max_contains_weight": "2 kg", - "max_item_length": "200 mm", - "holster": true, - "flag_restriction": [ "MAG_COMPACT", "MAG_BULKY" ], - "description": "Spring-loaded clamp.", - "moves": 60 - }, - { - "pocket_type": "CONTAINER", - "rigid": true, - "max_contains_volume": "750 ml", - "max_contains_weight": "2 kg", - "max_item_length": "200 mm", - "holster": true, - "flag_restriction": [ "MAG_COMPACT", "MAG_BULKY" ], - "description": "Spring-loaded clamp.", - "moves": 60 - }, + "price": 10000000, + "price_postapoc": 15000, + "flags": [ "STURDY", "RAD_RESIST", "WATERPROOF", "RAINPROOF", "SUN_GLASSES", "USE_UPS", "NO_UNLOAD", "COMBAT_TOGGLEABLE" ], + "relic_data": { "passive_effects": [ { "id": "ench_climate_control_all" } ] }, + "warmth": 40, + "environmental_protection": 10, + "armor": [ { - "pocket_type": "CONTAINER", - "rigid": true, - "max_contains_volume": "750 ml", - "max_contains_weight": "2 kg", - "max_item_length": "200 mm", - "holster": true, - "flag_restriction": [ "MAG_COMPACT", "MAG_BULKY" ], - "description": "Spring-loaded clamp.", - "moves": 60 + "layers": [ "SKINTIGHT" ], + "covers": [ "head", "torso", "arms", "hands", "legs", "feet" ], + "encumbrance": 0, + "coverage": 100, + "material": [ { "type": "lycra", "covered_by_mat": 100, "thickness": 0.2 } ], + "//": "Supports the cooling system. Similar to https://en.wikipedia.org/wiki/Liquid_cooling_and_ventilation_garment#/media/File:Lcvg.jpg." }, { - "pocket_type": "CONTAINER", - "rigid": true, - "max_contains_volume": "750 ml", - "max_contains_weight": "2 kg", - "max_item_length": "200 mm", - "holster": true, - "flag_restriction": [ "MAG_COMPACT", "MAG_BULKY" ], - "description": "Spring-loaded clamp.", - "moves": 60 + "layers": [ "NORMAL" ], + "covers": [ "head", "torso", "arms", "hands", "legs", "feet" ], + "encumbrance": 0, + "coverage": 100, + "material": [ { "type": "nomex", "covered_by_mat": 100, "thickness": 0.8 } ], + "//": "Enclosed protective suit, similar to a flight suit but covers the whole body." }, { - "pocket_type": "CONTAINER", - "rigid": true, - "max_contains_volume": "1100 ml", - "max_contains_weight": "2 kg", - "description": "Compartment for grenades.", - "moves": 30, - "flag_restriction": [ "GRENADE" ] + "layers": [ "NORMAL" ], + "covers": [ "eyes", "mouth" ], + "encumbrance": 0, + "coverage": 100, + "material": [ { "type": "lvl4ballisticglass", "covered_by_mat": 100, "thickness": 2 } ], + "//": "Transparent mask enclosing the suit, a tube connects it to a pump and filter system at the back of the exoskeleton." }, { - "pocket_type": "CONTAINER", - "rigid": true, - "max_contains_volume": "12 L", - "max_contains_weight": "16500 g", - "max_item_length": "154 cm", - "description": "Integrated rifle case.", - "moves": 100 + "layers": [ "OUTER" ], + "covers": [ "head", "torso", "arms", "hands", "legs", "feet" ], + "encumbrance": 1, + "coverage": 10, + "material": [ { "type": "steel", "covered_by_mat": 100, "thickness": 20 } ], + "//": "The actual exoskeleton, also comprises the frame to support the armor parts." } ], - "warmth": 50, - "material_thickness": 8, - "environmental_protection": 6, - "flags": [ "WATERPROOF", "STURDY", "UNBREAKABLE_MELEE" ], - "armor": [ - { - "encumbrance": 40, - "coverage": 95, - "covers": [ "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ] - } - ], - "melee_damage": { "bash": 1 } - }, - { - "id": "depowered_helmet", - "type": "ARMOR", - "category": "armor", - "name": { "str": "salvaged power armor helmet" }, - "description": "This used to be a military-grade full-head helmet with advanced optics and environmental filters. It looks like it was decommissioned or otherwise stripped for parts; now it's a very expensive hat. It's still quite durable, but quite hard to see out of.", - "weight": "2416 g", - "volume": "5 L", - "price": 30000, - "price_postapoc": 5000, - "to_hit": 1, - "material": [ "steel" ], - "symbol": "[", - "looks_like": "power_armor_helmet_basic", - "color": "light_gray", - "warmth": 50, - "material_thickness": 8, - "environmental_protection": 6, - "qualities": [ [ "GLARE", 1 ] ], - "flags": [ "WATERPROOF", "STURDY", "SUN_GLASSES" ], - "armor": [ { "encumbrance": 40, "coverage": 95, "covers": [ "head", "eyes", "mouth" ] } ], - "melee_damage": { "bash": 1 } - }, - { - "id": "power_armor_basic", - "type": "TOOL_ARMOR", - "category": "armor", - "name": { "str": "combat exoskeleton" }, - "description": "These were the second wave of military combat exoskeleton, and got a lot of media attention, with popular Navy commercials featuring them heavily. It consists of a muscle-boosting exoskeleton frame with overlaid segmented alloy plating. Despite advancements over the original bulky 'tank suits', the wearer still cannot easily fit through narrow spaces, or sit down comfortably (and it ruins upholstery). There is an integrated chemical-resistant bodyglove that precludes wearing other clothing. The armor is outfitted with a variety of clips & clamps, allowing it to hold a few mags & grenades, as well as a large rifle.", - "weight": "55 kg", - "volume": "100 L", - "price": 7000000, - "price_postapoc": 30000, - "to_hit": 1, - "material": [ "qt_steel", "hyperweave_off", "kevlar_rigid" ], - "symbol": "[", - "looks_like": "depowered_armor", - "color": "light_gray", - "relic_data": { "passive_effects": [ { "id": "ench_climate_control_all" } ] }, "pocket_data": [ { "pocket_type": "CONTAINER", - "rigid": true, - "max_contains_volume": "4 L", - "max_contains_weight": "30 kg", - "description": "Compartment for an UPS.", - "moves": 200 + "ablative": true, + "moves": 200, + "description": "Attachment points for a head protector.", + "flag_restriction": [ "ABLATIVE_EXOSKELETON_HEAD" ] }, { "pocket_type": "CONTAINER", - "rigid": true, - "max_contains_volume": "750 ml", - "max_contains_weight": "2 kg", - "max_item_length": "200 mm", - "holster": true, - "flag_restriction": [ "MAG_COMPACT", "MAG_BULKY" ], - "description": "Spring-loaded clamp.", - "moves": 60 + "ablative": true, + "moves": 200, + "description": "Attachment points for a torso protector.", + "flag_restriction": [ "ABLATIVE_EXOSKELETON_TORSO" ] }, { "pocket_type": "CONTAINER", - "rigid": true, - "max_contains_volume": "750 ml", - "max_contains_weight": "2 kg", - "max_item_length": "200 mm", - "holster": true, - "flag_restriction": [ "MAG_COMPACT", "MAG_BULKY" ], - "description": "Spring-loaded clamp.", - "moves": 60 + "ablative": true, + "moves": 200, + "description": "Attachment points for arm protectors.", + "flag_restriction": [ "ABLATIVE_EXOSKELETON_ARMS" ] }, { "pocket_type": "CONTAINER", - "rigid": true, - "max_contains_volume": "750 ml", - "max_contains_weight": "2 kg", - "max_item_length": "200 mm", - "holster": true, - "flag_restriction": [ "MAG_COMPACT", "MAG_BULKY" ], - "description": "Spring-loaded clamp.", - "moves": 60 + "ablative": true, + "moves": 200, + "description": "Attachment points for hand protectors.", + "flag_restriction": [ "ABLATIVE_EXOSKELETON_HANDS" ] }, { "pocket_type": "CONTAINER", - "rigid": true, - "max_contains_volume": "750 ml", - "max_contains_weight": "2 kg", - "max_item_length": "200 mm", - "holster": true, - "flag_restriction": [ "MAG_COMPACT", "MAG_BULKY" ], - "description": "Spring-loaded clamp.", - "moves": 60 - }, - { - "pocket_type": "CONTAINER", - "rigid": true, - "max_contains_volume": "1100 ml", - "max_contains_weight": "2 kg", - "description": "Compartment for grenades.", - "moves": 30, - "flag_restriction": [ "GRENADE" ] + "ablative": true, + "moves": 200, + "description": "Attachment points for leg protectors.", + "flag_restriction": [ "ABLATIVE_EXOSKELETON_LEGS" ] }, { "pocket_type": "CONTAINER", - "rigid": true, - "max_contains_volume": "12 L", - "max_contains_weight": "16500 g", - "max_item_length": "154 cm", - "description": "Integrated rifle case.", - "moves": 100 + "ablative": true, + "moves": 200, + "description": "Attachment points for feet protectors.", + "flag_restriction": [ "ABLATIVE_EXOSKELETON_FEET" ] } ], - "warmth": 90, - "power_armor": true, - "material_thickness": 14, - "environmental_protection": 16, "ammo": "battery", - "use_action": { "type": "transform", "msg": "The %s engages.", "target": "power_armor_basic_on", "active": true }, - "flags": [ "WATERPROOF", "STURDY", "ELECTRIC_IMMUNE", "COMBAT_TOGGLEABLE", "UNBREAKABLE_MELEE" ], + "use_action": { "type": "transform", "msg": "\n", "target": "", "active": true, "need_charges": 1, "need_charges_msg": "" } + }, + { + "copy-from": "exoskeleton", + "id": "depowered_armor", + "name": { "str": "light combat exoskeleton" }, + "description": "", + "weight": "20000 g", + "volume": "2500 ml" + }, + { + "copy-from": "exoskeleton", + "id": "power_armor_heavy", + "name": { "str": "light combat exoskeleton" }, + "description": "", + "weight": "20000 g", + "volume": "2500 ml" + }, + { + "id": "power_armor_heavy_on", + "copy-from": "power_armor_heavy", + "looks_like": "power_armor_heavy", + "type": "TOOL_ARMOR", + "name": { "str": "heavy combat exoskeleton (on)", "str_pl": "heavy combat exoskeletons (on)" }, + "description": "Colloquially known as a 'tank suit' in the media, these bulky exoskeletons, covered in thick segmented armor plates, were tested in military service a few years back and determined to be too heavy and expensive for regular use. Now that it's in your hands, though, you have a massive suit of power armor capable of resisting almost any small arms fire and most other forms of attack. On the other hand, it doubles your effective weight, and it's almost impossible not to bump into things. There is an integrated chemical-resistant bodyglove that precludes wearing other clothing. It is turned on and continually drawing power. Use it to turn it off.", + "flags": [ "USE_UPS", "WATERPROOF", "STURDY", "ELECTRIC_IMMUNE", "TRADER_AVOID", "COMBAT_TOGGLEABLE", "UNBREAKABLE_MELEE" ], + "power_draw": "4 kW", + "revert_to": "power_armor_heavy", + "use_action": { "type": "transform", "menu_text": "Turn off", "msg": "The %s armor disengages.", "target": "power_armor_heavy" }, "armor": [ { - "encumbrance": 50, + "encumbrance": 20, "coverage": 100, "covers": [ "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ] } - ], - "melee_damage": { "bash": 1 } + ] + }, + { + "copy-from": "exoskeleton", + "id": "power_armor_basic", + "name": { "str": "light combat exoskeleton" }, + "description": "", + "weight": "20000 g", + "volume": "2500 ml" }, { "id": "power_armor_basic_on", @@ -246,6 +155,222 @@ } ] }, + { + "copy-from": "exoskeleton", + "id": "power_armor_light", + "name": { "str": "light combat exoskeleton" }, + "description": "", + "weight": "20000 g", + "volume": "2500 ml" + }, + { + "id": "power_armor_light_on", + "copy-from": "power_armor_light", + "looks_like": "power_armor_light", + "name": { "str": "light combat exoskeleton (on)", "str_pl": "light combat exoskeletons (on)" }, + "description": "The exoskeleton is on and its actuators whirring softly as you move.", + "power_draw": "4 kW", + "revert_to": "power_armor_light", + "use_action": { "type": "transform", "menu_text": "Turn off", "msg": "The %s armor disengages.", "target": "power_armor_light" } + }, + { + "abstract": "exoskeleton_helmet", + "type": "ARMOR", + "category": "armor", + "name": "abstract exoskeleton helmet", + "weight": "6853 g", + "volume": "6600 ml", + "price": 60000, + "price_postapoc": 5000, + "symbol": "[", + "color": "dark_gray", + "flags": [ "ABLATIVE_EXOSKELETON_HELMET", "CANT_WEAR", "OUTER" ], + "armor": [ { "encumbrance": 8, "coverage": 0, "covers": 0 } ] + }, + { + "copy-from": "exoskeleton_helmet", + "id": "exoskeleton_helmet_heavy", + "type": "ARMOR", + "name": "heavy exoskeleton helmet", + "material": [ { "type": "", "material_thickness": 0 } ] + }, + { + "copy-from": "exoskeleton_helmet", + "id": "exoskeleton_helmet_medium", + "type": "ARMOR", + "name": "exoskeleton helmet" + }, + { + "copy-from": "exoskeleton_helmet", + "id": "exoskeleton_helmet_light", + "type": "ARMOR", + "name": "light exoskeleton helmet" + }, + { + "abstract": "exoskeleton_helmet", + "type": "ARMOR", + "category": "armor", + "name": "abstract exoskeleton helmet", + "weight": "6853 g", + "volume": "6600 ml", + "price": 60000, + "price_postapoc": 5000, + "symbol": "[", + "color": "dark_gray", + "flags": [ "ABLATIVE_EXOSKELETON_HELMET", "CANT_WEAR", "OUTER" ], + "armor": [ { "encumbrance": 8, "coverage": 0, "covers": 0 } ] + }, + { + "copy-from": "exoskeleton_helmet", + "id": "exoskeleton_helmet_heavy", + "type": "ARMOR", + "name": "heavy exoskeleton helmet", + "material": [ { "type": "", "material_thickness": 0 } ] + }, + { + "copy-from": "exoskeleton_helmet", + "id": "exoskeleton_helmet_medium", + "type": "ARMOR", + "name": "exoskeleton helmet" + }, + { + "copy-from": "exoskeleton_helmet", + "id": "exoskeleton_helmet_light", + "type": "ARMOR", + "name": "light exoskeleton helmet" + }, + { + "abstract": "exoskeleton_torso", + "type": "ARMOR", + "category": "armor", + "name": "abstract exoskeleton torso", + "weight": "6853 g", + "volume": "6600 ml", + "price": 60000, + "price_postapoc": 5000, + "symbol": "[", + "color": "dark_gray", + "flags": [ "ABLATIVE_EXOSKELETON_HELMET", "CANT_WEAR", "OUTER" ], + "armor": [ { "encumbrance": 8, "coverage": 0, "covers": 0 } ] + }, + { + "copy-from": "exoskeleton_helmet", + "id": "exoskeleton_helmet_heavy", + "type": "ARMOR", + "name": "heavy exoskeleton helmet", + "material": [ { "type": "", "material_thickness": 0 } ] + }, + { + "copy-from": "exoskeleton_helmet", + "id": "exoskeleton_helmet_medium", + "type": "ARMOR", + "name": "exoskeleton helmet" + }, + { + "copy-from": "exoskeleton_helmet", + "id": "exoskeleton_helmet_light", + "type": "ARMOR", + "name": "light exoskeleton helmet" + }, + { + "abstract": "exoskeleton_helmet", + "type": "ARMOR", + "category": "armor", + "name": "abstract exoskeleton helmet", + "weight": "6853 g", + "volume": "6600 ml", + "price": 60000, + "price_postapoc": 5000, + "symbol": "[", + "color": "dark_gray", + "flags": [ "ABLATIVE_EXOSKELETON_HELMET", "CANT_WEAR", "OUTER" ], + "armor": [ { "encumbrance": 8, "coverage": 0, "covers": 0 } ] + }, + { + "copy-from": "exoskeleton_helmet", + "id": "exoskeleton_helmet_heavy", + "type": "ARMOR", + "name": "heavy exoskeleton helmet", + "material": [ { "type": "", "material_thickness": 0 } ] + }, + { + "copy-from": "exoskeleton_helmet", + "id": "exoskeleton_helmet_medium", + "type": "ARMOR", + "name": "exoskeleton helmet" + }, + { + "copy-from": "exoskeleton_helmet", + "id": "exoskeleton_helmet_light", + "type": "ARMOR", + "name": "light exoskeleton helmet" + }, + { + "abstract": "exoskeleton_helmet", + "type": "ARMOR", + "category": "armor", + "name": "abstract exoskeleton helmet", + "weight": "0 g", + "volume": "0 ml", + "price": 0, + "price_postapoc": 0, + "symbol": "[", + "color": "dark_gray", + "flags": [ "ABLATIVE_EXOSKELETON_HELMET", "CANT_WEAR", "OUTER" ], + "armor": [ { "encumbrance": 0, "coverage": 0, "covers": 0 } ] + }, + { + "copy-from": "exoskeleton_helmet", + "id": "exoskeleton_helmet_heavy", + "type": "ARMOR", + "name": "heavy exoskeleton helmet", + "material": [ { "type": "", "material_thickness": 0 } ] + }, + { + "copy-from": "exoskeleton_helmet", + "id": "exoskeleton_helmet_medium", + "type": "ARMOR", + "name": "exoskeleton helmet" + }, + { + "copy-from": "exoskeleton_helmet", + "id": "exoskeleton_helmet_light", + "type": "ARMOR", + "name": "light exoskeleton helmet" + }, + { + "abstract": "exoskeleton_helmet", + "type": "ARMOR", + "category": "armor", + "name": "abstract exoskeleton helmet", + "weight": "6853 g", + "volume": "6600 ml", + "price": 60000, + "price_postapoc": 5000, + "symbol": "[", + "color": "dark_gray", + "flags": [ "ABLATIVE_EXOSKELETON_HELMET", "CANT_WEAR", "OUTER" ], + "armor": [ { "encumbrance": 8, "coverage": 0, "covers": 0 } ] + }, + { + "copy-from": "exoskeleton_helmet", + "id": "exoskeleton_helmet_heavy", + "type": "ARMOR", + "name": "heavy exoskeleton helmet", + "material": [ { "type": "", "material_thickness": 0 } ] + }, + { + "copy-from": "exoskeleton_helmet", + "id": "exoskeleton_helmet_medium", + "type": "ARMOR", + "name": "exoskeleton helmet" + }, + { + "copy-from": "exoskeleton_helmet", + "id": "exoskeleton_helmet_light", + "type": "ARMOR", + "name": "light exoskeleton helmet" + }, { "id": "power_armor_frame", "type": "ARMOR", @@ -309,387 +434,7 @@ "power_armor": true, "material_thickness": 10, "flags": [ "WATERPROOF", "STURDY", "BELTED", "IS_UPS" ], - "melee_damage": { "bash": 1 } - }, - { - "id": "power_armor_heavy", - "type": "TOOL_ARMOR", - "category": "armor", - "name": { "str": "heavy combat exoskeleton" }, - "description": "Colloquially known as a 'tank suit' in the media, these bulky exoskeletons, covered in thick segmented armor plates, were tested in military service a few years back and determined to be too heavy and expensive for regular use. Now that it's in your hands, though, you have a massive suit of power armor capable of resisting almost any small arms fire and most other forms of attack. On the other hand, it doubles your effective weight, and it's almost impossible not to bump into things. There is an integrated chemical-resistant bodyglove that precludes wearing other clothing. The armor is outfitted with a variety of clips & clamps, allowing it to hold a few mags & grenades, as well as a large rifle.", - "//": "This should probably changed to a pseudo-vehicle like the civilian exoskeleton", - "weight": "75 kg", - "volume": "130 L", - "price": 11500000, - "price_postapoc": 40000, - "to_hit": 1, - "material": [ "qt_steel", "hyperweave_off", "kevlar_rigid" ], - "symbol": "[", - "looks_like": "power_armor_basic", - "color": "dark_gray", - "relic_data": { "passive_effects": [ { "id": "ench_climate_control_all" } ] }, - "pocket_data": [ - { - "pocket_type": "CONTAINER", - "rigid": true, - "max_contains_volume": "4 L", - "max_contains_weight": "30 kg", - "description": "Compartment for an UPS.", - "moves": 200 - }, - { - "pocket_type": "CONTAINER", - "rigid": true, - "max_contains_volume": "750 ml", - "max_contains_weight": "2 kg", - "max_item_length": "200 mm", - "holster": true, - "flag_restriction": [ "MAG_COMPACT", "MAG_BULKY" ], - "description": "Spring-loaded clamp.", - "moves": 60 - }, - { - "pocket_type": "CONTAINER", - "rigid": true, - "max_contains_volume": "750 ml", - "max_contains_weight": "2 kg", - "max_item_length": "200 mm", - "holster": true, - "flag_restriction": [ "MAG_COMPACT", "MAG_BULKY" ], - "description": "Spring-loaded clamp.", - "moves": 60 - }, - { - "pocket_type": "CONTAINER", - "rigid": true, - "max_contains_volume": "750 ml", - "max_contains_weight": "2 kg", - "max_item_length": "200 mm", - "holster": true, - "flag_restriction": [ "MAG_COMPACT", "MAG_BULKY" ], - "description": "Spring-loaded clamp.", - "moves": 60 - }, - { - "pocket_type": "CONTAINER", - "rigid": true, - "max_contains_volume": "750 ml", - "max_contains_weight": "2 kg", - "max_item_length": "200 mm", - "holster": true, - "flag_restriction": [ "MAG_COMPACT", "MAG_BULKY" ], - "description": "Spring-loaded clamp.", - "moves": 60 - }, - { - "pocket_type": "CONTAINER", - "rigid": true, - "max_contains_volume": "1100 ml", - "max_contains_weight": "2 kg", - "description": "Compartment for grenades.", - "moves": 30, - "flag_restriction": [ "GRENADE" ] - }, - { - "pocket_type": "CONTAINER", - "rigid": true, - "max_contains_volume": "12 L", - "max_contains_weight": "16500 g", - "max_item_length": "154 cm", - "description": "Integrated rifle case.", - "moves": 100 - } - ], - "warmth": 60, - "power_armor": true, - "material_thickness": 16, - "environmental_protection": 16, - "ammo": "battery", - "use_action": { "type": "transform", "msg": "The %s engages.", "target": "power_armor_heavy_on", "active": true }, - "flags": [ "WATERPROOF", "STURDY", "ELECTRIC_IMMUNE", "COMBAT_TOGGLEABLE", "UNBREAKABLE_MELEE" ], - "armor": [ - { - "encumbrance": 60, - "coverage": 100, - "covers": [ "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ] - } - ], - "melee_damage": { "bash": 1 } - }, - { - "id": "power_armor_heavy_on", - "copy-from": "power_armor_heavy", - "looks_like": "power_armor_heavy", - "type": "TOOL_ARMOR", - "name": { "str": "heavy combat exoskeleton (on)", "str_pl": "heavy combat exoskeletons (on)" }, - "description": "Colloquially known as a 'tank suit' in the media, these bulky exoskeletons, covered in thick segmented armor plates, were tested in military service a few years back and determined to be too heavy and expensive for regular use. Now that it's in your hands, though, you have a massive suit of power armor capable of resisting almost any small arms fire and most other forms of attack. On the other hand, it doubles your effective weight, and it's almost impossible not to bump into things. There is an integrated chemical-resistant bodyglove that precludes wearing other clothing. It is turned on and continually drawing power. Use it to turn it off.", - "flags": [ "USE_UPS", "WATERPROOF", "STURDY", "ELECTRIC_IMMUNE", "TRADER_AVOID", "COMBAT_TOGGLEABLE", "UNBREAKABLE_MELEE" ], - "power_draw": "4 kW", - "revert_to": "power_armor_heavy", - "use_action": { "type": "transform", "menu_text": "Turn off", "msg": "The %s armor disengages.", "target": "power_armor_heavy" }, - "armor": [ - { - "encumbrance": 20, - "coverage": 100, - "covers": [ "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ] - } - ] - }, - { - "id": "power_armor_helmet_basic", - "type": "TOOL_ARMOR", - "category": "armor", - "name": { "str": "environmental combat helmet" }, - "description": "A fully enclosed combat helmet for hazardous environments, this was designed to fit with a powered exoskeleton, using cameras to expand visual range. In practice, the cameras were unreliable and easily fouled. The environmental controls function best with direct-skin contact.", - "weight": "3628 g", - "volume": "5 L", - "price": 2500000, - "price_postapoc": 7500, - "to_hit": 1, - "material": [ "qt_steel", "hyperweave_off", "kevlar_rigid" ], - "symbol": "[", - "looks_like": "depowered_helmet", - "color": "light_gray", - "warmth": 90, - "power_armor": true, - "ammo": "battery", - "use_action": { - "type": "transform", - "menu_text": "Turn on", - "msg": "The %s engages.", - "target": "power_armor_helmet_basic_on", - "active": true - }, - "material_thickness": 14, - "environmental_protection": 16, - "qualities": [ [ "GLARE", 1 ] ], - "flags": [ "WATCH", "WATERPROOF", "STURDY", "PARTIAL_DEAF", "THERMOMETER", "SUN_GLASSES", "COMBAT_TOGGLEABLE" ], - "armor": [ { "encumbrance": 50, "coverage": 100, "covers": [ "head", "eyes", "mouth" ] } ], - "melee_damage": { "bash": 1 } - }, - { - "id": "power_armor_helmet_basic_on", - "type": "TOOL_ARMOR", - "copy-from": "power_armor_helmet_basic", - "looks_like": "power_armor_helmet_basic", - "name": { "str": "environmental combat helmet (on)", "str_pl": "environmental combat helmets (on)" }, - "description": "A fully enclosed combat helmet for hazardous environments, this was designed to fit with a powered exoskeleton, using cameras to expand visual range. In practice, the cameras were unreliable and easily fouled. The environmental controls function best with direct-skin contact. The environmental controls function best with direct-skin contact. It is turned on and continually drawing power. Use it to turn it off.", - "power_draw": "435 mW", - "revert_to": "power_armor_helmet_basic", - "use_action": { "type": "transform", "menu_text": "Turn off", "msg": "The %s disengages.", "target": "power_armor_helmet_basic" }, - "extend": { "flags": [ "USE_UPS" ] }, - "armor": [ { "encumbrance": 10, "coverage": 100, "covers": [ "head", "eyes", "mouth" ] } ] - }, - { - "id": "power_armor_helmet_heavy", - "type": "TOOL_ARMOR", - "category": "armor", - "name": { "str": "heavy environmental combat helmet" }, - "description": "An extremely heavy-duty fully enclosed combat helmet for hazardous environments, this was designed to fit with a powered exoskeleton. In the field, soldiers reported that the protection was not worth the awkward size and limited visuals. The environmental controls function best with direct-skin contact.", - "weight": "5442 g", - "volume": "7 L", - "price": 3750000, - "price_postapoc": 10000, - "to_hit": 1, - "material": [ "qt_steel", "hyperweave_off", "kevlar_rigid" ], - "symbol": "[", - "looks_like": "power_armor_helmet_basic", - "color": "dark_gray", - "warmth": 60, - "power_armor": true, - "material_thickness": 16, - "environmental_protection": 16, - "qualities": [ [ "GLARE", 1 ] ], - "ammo": "battery", - "use_action": { - "type": "transform", - "menu_text": "Turn on", - "msg": "The %s engages.", - "target": "power_armor_helmet_heavy_on", - "active": true - }, - "flags": [ "WATCH", "WATERPROOF", "STURDY", "PARTIAL_DEAF", "THERMOMETER", "SUN_GLASSES", "COMBAT_TOGGLEABLE" ], - "armor": [ { "encumbrance": 60, "coverage": 100, "covers": [ "head", "eyes", "mouth" ] } ], - "melee_damage": { "bash": 1 } - }, - { - "id": "power_armor_helmet_heavy_on", - "type": "TOOL_ARMOR", - "copy-from": "power_armor_helmet_heavy", - "looks_like": "power_armor_helmet_heavy", - "name": { "str": "heavy environmental combat helmet (on)", "str_pl": "heavy environmental combat helmets (on)" }, - "description": "An extremely heavy-duty fully enclosed combat helmet for hazardous environments, this was designed to fit with a powered exoskeleton. In the field, soldiers reported that the protection was not worth the awkward size and limited visuals. The environmental controls function best with direct-skin contact. It is turned on and continually drawing power. Use it to turn it off.", - "power_draw": "435 mW", - "revert_to": "power_armor_helmet_heavy", - "use_action": { "type": "transform", "menu_text": "Turn off", "msg": "The %s disengages.", "target": "power_armor_helmet_heavy" }, - "extend": { "flags": [ "USE_UPS" ] }, - "armor": [ { "encumbrance": 20, "coverage": 100, "covers": [ "head", "eyes", "mouth" ] } ] - }, - { - "id": "power_armor_helmet_light", - "type": "TOOL_ARMOR", - "category": "armor", - "name": { "str": "light environmental combat helmet" }, - "description": "This full-enclosure helmet was designed based on commercial diving equipment, in response to complaints that earlier designs were impossible to use in combat. While still a little more restrictive than regular combat headgear - and frustrating should your nose itch - this one received far better reviews from soldiers. Sadly, civilization ended before they could roll out in significant numbers. The environmental controls function best with direct-skin contact.", - "weight": "1814 g", - "volume": "4 L", - "price": 3750000, - "price_postapoc": 10000, - "to_hit": 1, - "material": [ "qt_steel", "kevlar", "kevlar_rigid" ], - "symbol": "[", - "looks_like": "power_armor_helmet_basic", - "color": "dark_gray", - "warmth": 60, - "power_armor": true, - "ammo": "battery", - "use_action": { - "type": "transform", - "menu_text": "Turn on", - "msg": "The %s engages.", - "target": "power_armor_helmet_light_on", - "active": true - }, - "material_thickness": 8, - "environmental_protection": 16, - "flags": [ "WATCH", "WATERPROOF", "STURDY", "THERMOMETER", "SUN_GLASSES", "SWIM_GOGGLES", "COMBAT_TOGGLEABLE" ], - "armor": [ { "encumbrance": 40, "coverage": 100, "covers": [ "head", "eyes", "mouth" ] } ], - "melee_damage": { "bash": 1 } - }, - { - "id": "power_armor_helmet_light_on", - "type": "TOOL_ARMOR", - "copy-from": "power_armor_helmet_light", - "looks_like": "power_armor_helmet_light", - "name": { "str": "light environmental combat helmet (on)", "str_pl": "light environmental combat helmets (on)" }, - "description": "This full-enclosure helmet was designed based on commercial diving equipment, in response to complaints that earlier designs were impossible to use in combat. While still a little more restrictive than regular combat headgear - and frustrating should your nose itch - this one received far better reviews from soldiers. Sadly, civilization ended before they could roll out in significant numbers. The environmental controls function best with direct-skin contact. It is turned on and continually drawing power. Use it to turn it off.", - "power_draw": "435 mW", - "revert_to": "power_armor_helmet_light", - "use_action": { "type": "transform", "menu_text": "Turn off", "msg": "The %s disengages.", "target": "power_armor_helmet_light" }, - "extend": { "flags": [ "USE_UPS" ] }, - "armor": [ { "encumbrance": 0, "coverage": 100, "covers": [ "head", "eyes", "mouth" ] } ] - }, - { - "id": "power_armor_light", - "type": "TOOL_ARMOR", - "category": "armor", - "name": { "str": "field combat exoskeleton" }, - "description": "The final iteration of military power armor before the fall of civilization, this type - a powered exoskeleton with high-tech segmented plating - was designed for actual widespread combat use and was seen on the front lines during the last days of the Cataclysm. Like the heavier suits, it is resistant to most modern weaponry, but it is light and maneuverable, and can fit into normal vehicles and doorways without fuss, a huge advantage over predecessors. Unfortunately, the world ended before it could roll out in significant numbers. There is an integrated chemical-resistant bodyglove that precludes wearing other clothing. The armor is outfitted with a variety of clips & clamps, allowing it to hold a few mags & grenades, as well as a large rifle.", - "weight": "12670 g", - "volume": "25 L", - "price": 11500000, - "price_postapoc": 40000, - "to_hit": 1, - "material": [ "qt_steel", "kevlar", "kevlar_rigid" ], - "symbol": "[", - "looks_like": "depowered_armor", - "color": "dark_gray", - "relic_data": { "passive_effects": [ { "id": "ench_climate_control_all" } ] }, - "pocket_data": [ - { - "pocket_type": "CONTAINER", - "rigid": true, - "max_contains_volume": "4 L", - "max_contains_weight": "30 kg", - "description": "Compartment for an UPS.", - "moves": 200 - }, - { - "pocket_type": "CONTAINER", - "rigid": true, - "max_contains_volume": "750 ml", - "max_contains_weight": "2 kg", - "max_item_length": "200 mm", - "holster": true, - "flag_restriction": [ "MAG_COMPACT", "MAG_BULKY" ], - "description": "Spring-loaded clamp.", - "moves": 60 - }, - { - "pocket_type": "CONTAINER", - "rigid": true, - "max_contains_volume": "750 ml", - "max_contains_weight": "2 kg", - "max_item_length": "200 mm", - "holster": true, - "flag_restriction": [ "MAG_COMPACT", "MAG_BULKY" ], - "description": "Spring-loaded clamp.", - "moves": 60 - }, - { - "pocket_type": "CONTAINER", - "rigid": true, - "max_contains_volume": "750 ml", - "max_contains_weight": "2 kg", - "max_item_length": "200 mm", - "holster": true, - "flag_restriction": [ "MAG_COMPACT", "MAG_BULKY" ], - "description": "Spring-loaded clamp.", - "moves": 60 - }, - { - "pocket_type": "CONTAINER", - "rigid": true, - "max_contains_volume": "750 ml", - "max_contains_weight": "2 kg", - "max_item_length": "200 mm", - "holster": true, - "flag_restriction": [ "MAG_COMPACT", "MAG_BULKY" ], - "description": "Spring-loaded clamp.", - "moves": 60 - }, - { - "pocket_type": "CONTAINER", - "rigid": true, - "max_contains_volume": "1100 ml", - "max_contains_weight": "2 kg", - "description": "Compartment for grenades.", - "moves": 30, - "flag_restriction": [ "GRENADE" ] - }, - { - "pocket_type": "CONTAINER", - "rigid": true, - "max_contains_volume": "12 L", - "max_contains_weight": "16500 g", - "max_item_length": "154 cm", - "description": "Integrated rifle case.", - "moves": 100 - } - ], - "warmth": 60, - "power_armor": true, - "material_thickness": 8, - "environmental_protection": 16, - "ammo": "battery", - "use_action": { "type": "transform", "msg": "The %s engages.", "target": "power_armor_light_on", "active": true }, - "flags": [ "WATERPROOF", "STURDY", "ELECTRIC_IMMUNE", "COMBAT_TOGGLEABLE", "UNBREAKABLE_MELEE" ], - "armor": [ - { - "encumbrance": 40, - "coverage": 100, - "covers": [ "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ] - } - ], - "melee_damage": { "bash": 1 } - }, - { - "id": "power_armor_light_on", - "copy-from": "power_armor_light", - "looks_like": "power_armor_light", - "type": "TOOL_ARMOR", - "name": { "str": "field combat exoskeleton (on)", "str_pl": "field combat exoskeletons (on)" }, - "description": "The final iteration of military power armor before the fall of civilization, this type - a powered exoskeleton with high-tech segmented plating - was designed for actual widespread combat use and was seen on the front lines during the last days of the Cataclysm. Like the heavier suits, it is resistant to most modern weaponry, but it is light and maneuverable, and can fit into normal vehicles and doorways without fuss, a huge advantage over predecessors. Unfortunately, the world ended before it could roll out in significant numbers. There is an integrated chemical-resistant bodyglove that precludes wearing other clothing. It is turned on and continually drawing power. Use it to turn it off.", - "flags": [ "USE_UPS", "WATERPROOF", "STURDY", "ELECTRIC_IMMUNE", "TRADER_AVOID", "COMBAT_TOGGLEABLE", "UNBREAKABLE_MELEE" ], - "power_draw": "4 kW", - "revert_to": "power_armor_light", - "use_action": { "type": "transform", "menu_text": "Turn off", "msg": "The %s armor disengages.", "target": "power_armor_light" }, - "armor": [ - { - "encumbrance": 0, - "coverage": 100, - "covers": [ "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ] - } - ] + "melee_damage": { "bash": 1 }, + "//": "#61486, Drew4484 " } ] From 572fe896c3b14d1c3b1abfa10866f3bf93d01f7f Mon Sep 17 00:00:00 2001 From: Kwenchin Date: Fri, 20 Oct 2023 10:41:05 +0200 Subject: [PATCH 04/73] Revert "Merge branch 'CombatExoskeletonUpdate' of https://github.com/BalthazarArgall/Cataclysm-DDA into CombatExoskeletonUpdate" This reverts commit 7b9b9b66b6fd6873d728eb055c229510372a1f6b, reversing changes made to 3d13b2ae662408df061724615d11353ea62f05c3. --- data/json/professions.json | 4 +- .../Defense_Mode/overmap_specials.json | 1 - .../Defense_Mode/overmap_specials.json | 1 - data/mods/Xedra_Evolved/items/alchemy.json | 144 ------------------ .../perks/perk_data/Alchemy1.json | 100 ------------ .../Defense_Mode/overmap_specials.json | 1 - 6 files changed, 2 insertions(+), 249 deletions(-) diff --git a/data/json/professions.json b/data/json/professions.json index 1a97c72e50017..ecefc19e81911 100644 --- a/data/json/professions.json +++ b/data/json/professions.json @@ -5372,8 +5372,8 @@ "points": 5, "proficiencies": [ "prof_gunsmithing_basic", "prof_gun_cleaning" ], "skills": [ - { "level": 7, "name": "gun" }, - { "level": 7, "name": "rifle" }, + { "level": 5, "name": "gun" }, + { "level": 5, "name": "rifle" }, { "level": 4, "name": "pistol" }, { "level": 3, "name": "melee" }, { "level": 3, "name": "stabbing" }, diff --git a/data/mods/Magiclysm/mod_interactions/Defense_Mode/overmap_specials.json b/data/mods/Magiclysm/mod_interactions/Defense_Mode/overmap_specials.json index db426c718cd7a..c377ec5c8bd17 100644 --- a/data/mods/Magiclysm/mod_interactions/Defense_Mode/overmap_specials.json +++ b/data/mods/Magiclysm/mod_interactions/Defense_Mode/overmap_specials.json @@ -61,7 +61,6 @@ "locations": [ "lake_surface" ], "city_distance": [ 40, -1 ], "occurrences": [ 100, 100 ], - "eoc": { "id": "EOC_DM_TOWER_GENERATE", "condition": { "mod_is_loaded": "defense_mode" } }, "flags": [ "DEFENSE_MODE", "GLOBALLY_UNIQUE", "LAKE" ] } ] diff --git a/data/mods/MindOverMatter/modinteractions/Defense_Mode/overmap_specials.json b/data/mods/MindOverMatter/modinteractions/Defense_Mode/overmap_specials.json index 1b0f43b469bc7..771d89fe5de0d 100644 --- a/data/mods/MindOverMatter/modinteractions/Defense_Mode/overmap_specials.json +++ b/data/mods/MindOverMatter/modinteractions/Defense_Mode/overmap_specials.json @@ -11,7 +11,6 @@ "locations": [ "land" ], "city_distance": [ 40, -1 ], "occurrences": [ 100, 100 ], - "eoc": { "id": "EOC_DM_CUBICAL_GENERATE", "condition": { "mod_is_loaded": "defense_mode" } }, "flags": [ "DEFENSE_MODE", "GLOBALLY_UNIQUE" ] } ] diff --git a/data/mods/Xedra_Evolved/items/alchemy.json b/data/mods/Xedra_Evolved/items/alchemy.json index 36af33796b184..f1ae9566e723c 100644 --- a/data/mods/Xedra_Evolved/items/alchemy.json +++ b/data/mods/Xedra_Evolved/items/alchemy.json @@ -299,149 +299,5 @@ "color": "green_yellow", "calories": 50, "copy-from": "life_extension_potion" - }, - { - "id": "plant_imbuement", - "type": "COMESTIBLE", - "comestible_type": "MED", - "name": { "str_sp": "Imbuement of the Trees" }, - "description": ".", - "weight": "50 g", - "volume": "2 ml", - "price": "150 cent", - "price_postapoc": "200 USD", - "material": [ "water" ], - "symbol": "!", - "color": "light_cyan", - "container": "flask_glass", - "quench": 2, - "healthy": 7, - "fun": -30, - "flags": [ "NO_INGEST", "WATER_DISSOLVE", "EDIBLE_FROZEN" ], - "use_action": { - "type": "effect_on_conditions", - "description": "Drink the potion. Will not work on those too distant from humanity already.", - "effect_on_conditions": [ "become_plant_fae" ] - } - }, - { - "id": "earth_imbuement", - "type": "COMESTIBLE", - "comestible_type": "MED", - "name": { "str_sp": "Imbuement of the Earth" }, - "description": ".", - "weight": "50 g", - "volume": "2 ml", - "price": "150 cent", - "price_postapoc": "200 USD", - "material": [ "water" ], - "symbol": "!", - "color": "light_cyan", - "container": "flask_glass", - "quench": 2, - "healthy": 7, - "fun": -30, - "flags": [ "NO_INGEST", "WATER_DISSOLVE", "EDIBLE_FROZEN" ], - "use_action": { - "type": "effect_on_conditions", - "description": "Drink the potion. Will not work on those too distant from humanity already.", - "effect_on_conditions": [ "become_earth_fae" ] - } - }, - { - "id": "water_imbuement", - "type": "COMESTIBLE", - "comestible_type": "MED", - "name": { "str_sp": "Imbuement of the Waters" }, - "description": ".", - "weight": "50 g", - "volume": "2 ml", - "price": "150 cent", - "price_postapoc": "200 USD", - "material": [ "water" ], - "symbol": "!", - "color": "light_cyan", - "container": "flask_glass", - "quench": 2, - "healthy": 7, - "fun": -30, - "flags": [ "NO_INGEST", "WATER_DISSOLVE", "EDIBLE_FROZEN" ], - "use_action": { - "type": "effect_on_conditions", - "description": "Drink the potion. Will not work on those too distant from humanity already.", - "effect_on_conditions": [ "become_water_fae" ] - } - }, - { - "id": "air_imbuement", - "type": "COMESTIBLE", - "comestible_type": "MED", - "name": { "str_sp": "Imbuement of the Winds" }, - "description": ".", - "weight": "50 g", - "volume": "2 ml", - "price": "150 cent", - "price_postapoc": "200 USD", - "material": [ "water" ], - "symbol": "!", - "color": "light_cyan", - "container": "flask_glass", - "quench": 2, - "healthy": 7, - "fun": -30, - "flags": [ "NO_INGEST", "WATER_DISSOLVE", "EDIBLE_FROZEN" ], - "use_action": { - "type": "effect_on_conditions", - "description": "Drink the potion. Will not work on those too distant from humanity already.", - "effect_on_conditions": [ "become_air_fae" ] - } - }, - { - "id": "fire_imbuement", - "type": "COMESTIBLE", - "comestible_type": "MED", - "name": { "str_sp": "Imbuement of the Flames" }, - "description": ".", - "weight": "50 g", - "volume": "2 ml", - "price": "150 cent", - "price_postapoc": "200 USD", - "material": [ "water" ], - "symbol": "!", - "color": "light_cyan", - "container": "flask_glass", - "quench": 2, - "healthy": 7, - "fun": -30, - "flags": [ "NO_INGEST", "WATER_DISSOLVE", "EDIBLE_FROZEN" ], - "use_action": { - "type": "effect_on_conditions", - "description": "Drink the potion. Will not work on those too distant from humanity already.", - "effect_on_conditions": [ "become_fire_fae" ] - } - }, - { - "id": "doll_imbuement", - "type": "COMESTIBLE", - "comestible_type": "MED", - "name": { "str_sp": "Imbuement of Parchment" }, - "description": ".", - "weight": "50 g", - "volume": "2 ml", - "price": "150 cent", - "price_postapoc": "200 USD", - "material": [ "water" ], - "symbol": "!", - "color": "light_cyan", - "container": "flask_glass", - "quench": 2, - "healthy": 7, - "fun": -30, - "flags": [ "NO_INGEST", "WATER_DISSOLVE", "EDIBLE_FROZEN" ], - "use_action": { - "type": "effect_on_conditions", - "description": "Drink the potion. Will not work on those too distant from humanity already.", - "effect_on_conditions": [ "become_doll_fae" ] - } } ] diff --git a/data/mods/Xedra_Evolved/mod_interactions/BombasticPerks/perks/perk_data/Alchemy1.json b/data/mods/Xedra_Evolved/mod_interactions/BombasticPerks/perks/perk_data/Alchemy1.json index a63d94886ea4d..7db3dc57ff9c0 100644 --- a/data/mods/Xedra_Evolved/mod_interactions/BombasticPerks/perks/perk_data/Alchemy1.json +++ b/data/mods/Xedra_Evolved/mod_interactions/BombasticPerks/perks/perk_data/Alchemy1.json @@ -98,105 +98,5 @@ { "u_add_effect": "mental_exhaustion", "intensity": 1, "duration": "192 hours" } ], "false_effect": [ { "u_message": "Your thoughts are too scattered to unearth more secrets of the universe." } ] - }, - { - "type": "effect_on_condition", - "id": "EOC_ALCHEMY5", - "condition": { "and": [ { "u_has_trait": "perk_ALCHEMY5" }, { "not": { "u_has_effect": "mental_exhaustion" } } ] }, - "effect": [ - { - "u_roll_remainder": [ "plant_imbuement", "earth_imbuement", "water_imbuement", "air_imbuement", "fire_imbuement", "doll_imbuement" ], - "type": "recipe", - "true_eocs": [ "EOC_SUCCESFUL_ROLL_REMAINDER_ALCHEMY" ], - "false_eocs": [ "EOC_COMPLETED_ROLL_REMAINDER_ALCHEMY" ] - }, - { "u_add_effect": "mental_exhaustion", "intensity": 1, "duration": "384 hours" } - ], - "false_effect": [ { "u_message": "Your thoughts are too scattered to unearth more secrets of the universe." } ] - }, - { - "type": "effect_on_condition", - "id": "become_fire_fae", - "condition": { "not": { "u_has_flag": "MUTATION_THRESHOLD" } }, - "effect": [ - { - "u_message": "You imbibed the concoction and you feel your soul merge with an alien power, becoming attuned to fire.", - "type": "good" - }, - { "u_add_trait": "SALAMANDER" }, - { "u_learn_recipe": "mutagen_flamekin" }, - { "u_learn_recipe": "charred_sacrifice" } - ], - "false_effect": [ { "u_message": "The power attempts to take hold, but is rebuffed by something sinister within you." } ] - }, - { - "type": "effect_on_condition", - "id": "become_doll_fae", - "condition": { "not": { "u_has_flag": "MUTATION_THRESHOLD" } }, - "effect": [ - { - "u_message": "You imbibed the concoction and you feel your soul merge with an alien power, becoming wierdly doll-like?." - }, - { "u_add_trait": "HOMULLUS" }, - { "u_learn_recipe": "mutagen_dollkin" }, - { "u_learn_recipe": "doll_repair_paste" } - ], - "false_effect": [ { "u_message": "The power attempts to take hold, but is rebuffed by something sinister within you." } ] - }, - { - "type": "effect_on_condition", - "id": "become_air_fae", - "condition": { "not": { "u_has_flag": "MUTATION_THRESHOLD" } }, - "effect": [ - { - "u_message": "You imbibed the concoction and you feel your soul merge with an alien power, becoming attuned to the winds." - }, - { "u_add_trait": "SYLPH" }, - { "u_learn_recipe": "mutagen_airkin" }, - { "u_learn_recipe": "ethereal_draught" } - ], - "false_effect": [ { "u_message": "The power attempts to take hold, but is rebuffed by something sinister within you." } ] - }, - { - "type": "effect_on_condition", - "id": "become_water_fae", - "condition": { "not": { "u_has_flag": "MUTATION_THRESHOLD" } }, - "effect": [ - { - "u_message": "You imbibed the concoction and you feel your soul merge with an alien power, becoming attuned to the waters." - }, - { "u_add_trait": "UNDINE" }, - { "u_learn_recipe": "mutagen_waterkin" }, - { "u_learn_recipe": "cerulean_poultice" } - ], - "false_effect": [ { "u_message": "The power attempts to take hold, but is rebuffed by something sinister within you." } ] - }, - { - "type": "effect_on_condition", - "id": "become_earth_fae", - "condition": { "not": { "u_has_flag": "MUTATION_THRESHOLD" } }, - "effect": [ - { - "u_message": "You imbibed the concoction and you feel your soul merge with an alien power, becoming attuned to the earth." - }, - { "u_add_trait": "IERDE" }, - { "u_learn_recipe": "mutagen_earthkin" }, - { "u_learn_recipe": "cthonic_poultice" } - ], - "false_effect": [ { "u_message": "The power attempts to take hold, but is rebuffed by something sinister within you." } ] - }, - { - "type": "effect_on_condition", - "id": "become_plant_fae", - "condition": { "not": { "u_has_flag": "MUTATION_THRESHOLD" } }, - "effect": [ - { - "u_message": "You imbibed the concoction and you feel your soul merge with an alien power, becoming attuned to the natural world." - }, - { "u_add_trait": "ARVORE" }, - { "u_learn_recipe": "mutagen_plantkin" }, - { "u_learn_recipe": "verdant_poultice" } - ], - "false_effect": [ { "u_message": "The power attempts to take hold, but is rebuffed by something sinister within you." } ] } ] diff --git a/data/mods/Xedra_Evolved/mod_interactions/Defense_Mode/overmap_specials.json b/data/mods/Xedra_Evolved/mod_interactions/Defense_Mode/overmap_specials.json index 211410569ffa3..cbda01da233f8 100644 --- a/data/mods/Xedra_Evolved/mod_interactions/Defense_Mode/overmap_specials.json +++ b/data/mods/Xedra_Evolved/mod_interactions/Defense_Mode/overmap_specials.json @@ -31,7 +31,6 @@ "locations": [ "land" ], "city_distance": [ 40, -1 ], "occurrences": [ 100, 100 ], - "eoc": { "id": "EOC_DM_OFFICE_GENERATE", "condition": { "mod_is_loaded": "defense_mode" } }, "flags": [ "DEFENSE_MODE", "GLOBALLY_UNIQUE" ] }, { From 31cded4d565568b8866505593b82a4cfb8d9d398 Mon Sep 17 00:00:00 2001 From: Kwenchin Date: Fri, 20 Oct 2023 16:37:25 +0200 Subject: [PATCH 05/73] Update power_armor.json --- data/json/items/armor/power_armor.json | 329 ++++++++++++------------- 1 file changed, 157 insertions(+), 172 deletions(-) diff --git a/data/json/items/armor/power_armor.json b/data/json/items/armor/power_armor.json index 4bd472a3aef77..e6e72b16858ee 100644 --- a/data/json/items/armor/power_armor.json +++ b/data/json/items/armor/power_armor.json @@ -3,13 +3,10 @@ "abstract": "exoskeleton", "type": "TOOL_ARMOR", "category": "armor", - "symbol": "[", - "looks_like": "power_armor_basic", - "color": "light_gray", "price": 10000000, "price_postapoc": 15000, - "flags": [ "STURDY", "RAD_RESIST", "WATERPROOF", "RAINPROOF", "SUN_GLASSES", "USE_UPS", "NO_UNLOAD", "COMBAT_TOGGLEABLE" ], - "relic_data": { "passive_effects": [ { "id": "ench_climate_control_all" } ] }, + "flags": [ "STURDY", "WATERPROOF", "RAINPROOF", "SUN_GLASSES", "USE_UPS", "NO_UNLOAD", "COMBAT_TOGGLEABLE" ], + "relic_data": { "passive_effects": [ { "id": "ench_climate_control_warm" } ] }, "warmth": 40, "environmental_protection": 10, "armor": [ @@ -96,18 +93,37 @@ { "copy-from": "exoskeleton", "id": "depowered_armor", - "name": { "str": "light combat exoskeleton" }, + "name": { "str": "salvaged exoskeleton" }, "description": "", "weight": "20000 g", - "volume": "2500 ml" + "volume": "2500 ml", + "delete": { "flags": [ "COMBAT_TOGGLEABLE", "USE_UPS" ] }, + "extend": { + "armor": [ + { + "covers": [ "head", "torso", "arms", "hands", "legs", "feet" ], + "coverage": 10, + "material": { "type": "steel", "thickness": 20 } + } + ] + } }, { "copy-from": "exoskeleton", "id": "power_armor_heavy", - "name": { "str": "light combat exoskeleton" }, + "name": { "str": "combat exoskeleton mk.1" }, "description": "", "weight": "20000 g", - "volume": "2500 ml" + "volume": "2500 ml", + "extend": { + "armor": [ + { + "covers": [ "head", "torso", "arms", "hands", "legs", "feet" ], + "coverage": 10, + "material": { "type": "steel", "thickness": 30 } + } + ] + } }, { "id": "power_armor_heavy_on", @@ -115,26 +131,27 @@ "looks_like": "power_armor_heavy", "type": "TOOL_ARMOR", "name": { "str": "heavy combat exoskeleton (on)", "str_pl": "heavy combat exoskeletons (on)" }, - "description": "Colloquially known as a 'tank suit' in the media, these bulky exoskeletons, covered in thick segmented armor plates, were tested in military service a few years back and determined to be too heavy and expensive for regular use. Now that it's in your hands, though, you have a massive suit of power armor capable of resisting almost any small arms fire and most other forms of attack. On the other hand, it doubles your effective weight, and it's almost impossible not to bump into things. There is an integrated chemical-resistant bodyglove that precludes wearing other clothing. It is turned on and continually drawing power. Use it to turn it off.", - "flags": [ "USE_UPS", "WATERPROOF", "STURDY", "ELECTRIC_IMMUNE", "TRADER_AVOID", "COMBAT_TOGGLEABLE", "UNBREAKABLE_MELEE" ], + "description": "The exoskeleton is on and its actuators whirring softly as you move.", "power_draw": "4 kW", "revert_to": "power_armor_heavy", - "use_action": { "type": "transform", "menu_text": "Turn off", "msg": "The %s armor disengages.", "target": "power_armor_heavy" }, - "armor": [ - { - "encumbrance": 20, - "coverage": 100, - "covers": [ "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ] - } - ] + "use_action": { "type": "transform", "menu_text": "Turn off", "msg": "The %s armor disengages.", "target": "power_armor_heavy" } }, { "copy-from": "exoskeleton", "id": "power_armor_basic", - "name": { "str": "light combat exoskeleton" }, + "name": { "str": "combat exoskeleton mk.2" }, "description": "", "weight": "20000 g", - "volume": "2500 ml" + "volume": "2500 ml", + "extend": { + "armor": [ + { + "covers": [ "head", "torso", "arms", "hands", "legs", "feet" ], + "coverage": 10, + "material": { "type": "steel", "thickness": 25 } + } + ] + } }, { "id": "power_armor_basic_on", @@ -142,30 +159,31 @@ "looks_like": "power_armor_basic", "type": "TOOL_ARMOR", "name": { "str": "combat exoskeleton (on)", "str_pl": "combat exoskeletons (on)" }, - "description": "These were the second wave of military combat exoskeleton, and got a lot of media attention, with popular Navy commercials featuring them heavily. It consists of a muscle-boosting exoskeleton frame with overlaid segmented alloy plating. Despite advancements over the original bulky 'tank suits', the wearer still cannot easily fit through narrow spaces, or sit down comfortably (and it ruins upholstery). There is an integrated chemical-resistant bodyglove that precludes wearing other clothing. It is turned on and continually drawing power. Use it to turn it off.", - "flags": [ "USE_UPS", "WATERPROOF", "STURDY", "ELECTRIC_IMMUNE", "TRADER_AVOID", "COMBAT_TOGGLEABLE", "UNBREAKABLE_MELEE" ], + "description": "The exoskeleton is on and its actuators whirring softly as you move.", "power_draw": "4 kW", "revert_to": "power_armor_basic", - "use_action": { "type": "transform", "menu_text": "Turn off", "msg": "The %s armor disengages.", "target": "power_armor_basic" }, - "armor": [ - { - "encumbrance": 10, - "coverage": 100, - "covers": [ "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ] - } - ] + "use_action": { "type": "transform", "menu_text": "Turn off", "msg": "The %s armor disengages.", "target": "power_armor_basic" } }, { "copy-from": "exoskeleton", "id": "power_armor_light", - "name": { "str": "light combat exoskeleton" }, + "name": { "str": "combat exoskeleton mk.3" }, "description": "", "weight": "20000 g", - "volume": "2500 ml" + "volume": "2500 ml", + "extend": { + "armor": [ + { + "covers": [ "head", "torso", "arms", "hands", "legs", "feet" ], + "coverage": 10, + "material": { "type": "steel", "thickness": 20 } + } + ] + } }, { - "id": "power_armor_light_on", "copy-from": "power_armor_light", + "id": "power_armor_light_on", "looks_like": "power_armor_light", "name": { "str": "light combat exoskeleton (on)", "str_pl": "light combat exoskeletons (on)" }, "description": "The exoskeleton is on and its actuators whirring softly as you move.", @@ -177,199 +195,166 @@ "abstract": "exoskeleton_helmet", "type": "ARMOR", "category": "armor", - "name": "abstract exoskeleton helmet", - "weight": "6853 g", - "volume": "6600 ml", "price": 60000, "price_postapoc": 5000, - "symbol": "[", - "color": "dark_gray", "flags": [ "ABLATIVE_EXOSKELETON_HELMET", "CANT_WEAR", "OUTER" ], - "armor": [ { "encumbrance": 8, "coverage": 0, "covers": 0 } ] + "armor": [ + { "covers": [ "head" ], "coverage": 100, "encumbrance": 5, "material": { "type": "kevlar_layered", "thickness": 2 } }, + { "covers": [ "mouth" ], "coverage": 100, "encumbrance": 0 } + ] }, { "copy-from": "exoskeleton_helmet", "id": "exoskeleton_helmet_heavy", - "type": "ARMOR", "name": "heavy exoskeleton helmet", - "material": [ { "type": "", "material_thickness": 0 } ] - }, - { - "copy-from": "exoskeleton_helmet", - "id": "exoskeleton_helmet_medium", - "type": "ARMOR", - "name": "exoskeleton helmet" - }, - { - "copy-from": "exoskeleton_helmet", - "id": "exoskeleton_helmet_light", - "type": "ARMOR", - "name": "light exoskeleton helmet" - }, - { - "abstract": "exoskeleton_helmet", - "type": "ARMOR", - "category": "armor", - "name": "abstract exoskeleton helmet", "weight": "6853 g", "volume": "6600 ml", - "price": 60000, - "price_postapoc": 5000, - "symbol": "[", - "color": "dark_gray", - "flags": [ "ABLATIVE_EXOSKELETON_HELMET", "CANT_WEAR", "OUTER" ], - "armor": [ { "encumbrance": 8, "coverage": 0, "covers": 0 } ] - }, - { - "copy-from": "exoskeleton_helmet", - "id": "exoskeleton_helmet_heavy", - "type": "ARMOR", - "name": "heavy exoskeleton helmet", - "material": [ { "type": "", "material_thickness": 0 } ] + "extend": { + "armor": [ { "covers": [ "head" ], "coverage": 100, "encumbrance": 15, "material": { "type": "qt_steel", "thickness": 6 } } ] + } }, { "copy-from": "exoskeleton_helmet", "id": "exoskeleton_helmet_medium", - "type": "ARMOR", - "name": "exoskeleton helmet" + "name": "exoskeleton helmet", + "weight": "6853 g", + "volume": "6600 ml", + "extend": { + "armor": [ { "covers": [ "head" ], "coverage": 100, "encumbrance": 15, "material": { "type": "qt_steel", "thickness": 4 } } ] + } }, { "copy-from": "exoskeleton_helmet", "id": "exoskeleton_helmet_light", - "type": "ARMOR", - "name": "light exoskeleton helmet" + "name": "light exoskeleton helmet", + "weight": "6853 g", + "volume": "6600 ml", + "extend": { + "armor": [ { "covers": [ "head" ], "coverage": 100, "encumbrance": 15, "material": { "type": "qt_steel", "thickness": 2 } } ] + } }, { "abstract": "exoskeleton_torso", "type": "ARMOR", "category": "armor", - "name": "abstract exoskeleton torso", - "weight": "6853 g", - "volume": "6600 ml", "price": 60000, "price_postapoc": 5000, - "symbol": "[", - "color": "dark_gray", - "flags": [ "ABLATIVE_EXOSKELETON_HELMET", "CANT_WEAR", "OUTER" ], - "armor": [ { "encumbrance": 8, "coverage": 0, "covers": 0 } ] - }, - { - "copy-from": "exoskeleton_helmet", - "id": "exoskeleton_helmet_heavy", - "type": "ARMOR", - "name": "heavy exoskeleton helmet", - "material": [ { "type": "", "material_thickness": 0 } ] - }, - { - "copy-from": "exoskeleton_helmet", - "id": "exoskeleton_helmet_medium", - "type": "ARMOR", - "name": "exoskeleton helmet" - }, - { - "copy-from": "exoskeleton_helmet", - "id": "exoskeleton_helmet_light", - "type": "ARMOR", - "name": "light exoskeleton helmet" + "flags": [ "ABLATIVE_EXOSKELETON_TORSO", "CANT_WEAR", "OUTER" ], + "armor": [ + { "covers": [ "torso" ], "coverage": 100, "encumbrance": 5, "material": { "type": "kevlar_layered", "thickness": 2 } } + ] }, { - "abstract": "exoskeleton_helmet", - "type": "ARMOR", - "category": "armor", - "name": "abstract exoskeleton helmet", + "copy-from": "exoskeleton_torso", + "id": "exoskeleton_torso_heavy", + "name": "heavy exoskeleton torso", "weight": "6853 g", "volume": "6600 ml", - "price": 60000, - "price_postapoc": 5000, - "symbol": "[", - "color": "dark_gray", - "flags": [ "ABLATIVE_EXOSKELETON_HELMET", "CANT_WEAR", "OUTER" ], - "armor": [ { "encumbrance": 8, "coverage": 0, "covers": 0 } ] + "extend": { + "armor": [ { "covers": [ "torso" ], "coverage": 100, "encumbrance": 15, "material": { "type": "qt_steel", "thickness": 6 } } ] + } }, { - "copy-from": "exoskeleton_helmet", - "id": "exoskeleton_helmet_heavy", - "type": "ARMOR", - "name": "heavy exoskeleton helmet", - "material": [ { "type": "", "material_thickness": 0 } ] - }, - { - "copy-from": "exoskeleton_helmet", - "id": "exoskeleton_helmet_medium", - "type": "ARMOR", - "name": "exoskeleton helmet" + "copy-from": "exoskeleton_torso", + "id": "exoskeleton_torso_medium", + "name": "exoskeleton torso", + "weight": "6853 g", + "volume": "6600 ml", + "extend": { + "armor": [ { "covers": [ "torso" ], "coverage": 100, "encumbrance": 15, "material": { "type": "qt_steel", "thickness": 4 } } ] + } }, { - "copy-from": "exoskeleton_helmet", - "id": "exoskeleton_helmet_light", - "type": "ARMOR", - "name": "light exoskeleton helmet" + "copy-from": "exoskeleton_torso", + "id": "exoskeleton_torso_light", + "name": "light exoskeleton torso", + "weight": "6853 g", + "volume": "6600 ml", + "extend": { + "armor": [ { "covers": [ "torso" ], "coverage": 100, "encumbrance": 15, "material": { "type": "qt_steel", "thickness": 2 } } ] + } }, { - "abstract": "exoskeleton_helmet", + "abstract": "exoskeleton_arms", "type": "ARMOR", "category": "armor", - "name": "abstract exoskeleton helmet", - "weight": "0 g", - "volume": "0 ml", - "price": 0, - "price_postapoc": 0, - "symbol": "[", - "color": "dark_gray", - "flags": [ "ABLATIVE_EXOSKELETON_HELMET", "CANT_WEAR", "OUTER" ], - "armor": [ { "encumbrance": 0, "coverage": 0, "covers": 0 } ] + "price": 60000, + "price_postapoc": 5000, + "flags": [ "ABLATIVE_EXOSKELETON_ARMS", "CANT_WEAR", "OUTER" ], + "armor": [ + { "covers": [ "arms" ], "coverage": 100, "encumbrance": 5, "material": { "type": "kevlar_layered", "thickness": 2 } } + ] }, { - "copy-from": "exoskeleton_helmet", - "id": "exoskeleton_helmet_heavy", - "type": "ARMOR", - "name": "heavy exoskeleton helmet", - "material": [ { "type": "", "material_thickness": 0 } ] + "copy-from": "exoskeleton_arms", + "id": "exoskeleton_arms_heavy", + "name": "heavy exoskeleton arms", + "weight": "6853 g", + "volume": "6600 ml", + "extend": { + "armor": [ { "covers": [ "arms" ], "coverage": 100, "encumbrance": 15, "material": { "type": "qt_steel", "thickness": 6 } } ] + } }, { - "copy-from": "exoskeleton_helmet", - "id": "exoskeleton_helmet_medium", - "type": "ARMOR", - "name": "exoskeleton helmet" + "copy-from": "exoskeleton_arms", + "id": "exoskeleton_arms_medium", + "name": "exoskeleton arms", + "weight": "6853 g", + "volume": "6600 ml", + "extend": { + "armor": [ { "covers": [ "arms" ], "coverage": 100, "encumbrance": 15, "material": { "type": "qt_steel", "thickness": 4 } } ] + } }, { - "copy-from": "exoskeleton_helmet", - "id": "exoskeleton_helmet_light", - "type": "ARMOR", - "name": "light exoskeleton helmet" + "copy-from": "exoskeleton_arms", + "id": "exoskeleton_arms_light", + "name": "light exoskeleton arms", + "weight": "6853 g", + "volume": "6600 ml", + "extend": { + "armor": [ { "covers": [ "arms" ], "coverage": 100, "encumbrance": 15, "material": { "type": "qt_steel", "thickness": 2 } } ] + } }, { - "abstract": "exoskeleton_helmet", + "abstract": "exoskeleton_legs", "type": "ARMOR", "category": "armor", - "name": "abstract exoskeleton helmet", - "weight": "6853 g", - "volume": "6600 ml", "price": 60000, "price_postapoc": 5000, - "symbol": "[", - "color": "dark_gray", - "flags": [ "ABLATIVE_EXOSKELETON_HELMET", "CANT_WEAR", "OUTER" ], - "armor": [ { "encumbrance": 8, "coverage": 0, "covers": 0 } ] + "flags": [ "ABLATIVE_EXOSKELETON_LEGS", "CANT_WEAR", "OUTER" ], + "armor": [ + { "covers": [ "legs" ], "coverage": 100, "encumbrance": 5, "material": { "type": "kevlar_layered", "thickness": 2 } } + ] }, { - "copy-from": "exoskeleton_helmet", - "id": "exoskeleton_helmet_heavy", - "type": "ARMOR", - "name": "heavy exoskeleton helmet", - "material": [ { "type": "", "material_thickness": 0 } ] + "copy-from": "exoskeleton_legs", + "id": "exoskeleton_legs_heavy", + "name": "heavy exoskeleton legs", + "weight": "6853 g", + "volume": "6600 ml", + "extend": { + "armor": [ { "covers": [ "legs" ], "coverage": 100, "encumbrance": 15, "material": { "type": "qt_steel", "thickness": 6 } } ] + } }, { - "copy-from": "exoskeleton_helmet", - "id": "exoskeleton_helmet_medium", - "type": "ARMOR", - "name": "exoskeleton helmet" + "copy-from": "exoskeleton_legs", + "id": "exoskeleton_legs_medium", + "name": "exoskeleton legs", + "weight": "6853 g", + "volume": "6600 ml", + "extend": { + "armor": [ { "covers": [ "legs" ], "coverage": 100, "encumbrance": 15, "material": { "type": "qt_steel", "thickness": 4 } } ] + } }, { - "copy-from": "exoskeleton_helmet", - "id": "exoskeleton_helmet_light", - "type": "ARMOR", - "name": "light exoskeleton helmet" + "copy-from": "exoskeleton_legs", + "id": "exoskeleton_legs_light", + "name": "light exoskeleton legs", + "weight": "6853 g", + "volume": "6600 ml", + "extend": { + "armor": [ { "covers": [ "legs" ], "coverage": 100, "encumbrance": 15, "material": { "type": "qt_steel", "thickness": 2 } } ] + } }, { "id": "power_armor_frame", From 7e5598e3e7e2459b2fa00d9de8b332ffa4e72bee Mon Sep 17 00:00:00 2001 From: Kwenchin Date: Tue, 24 Oct 2023 12:47:07 +0200 Subject: [PATCH 06/73] Update power_armor.json Definitive weight and volume for exoskeleton armor parts --- data/json/items/armor/power_armor.json | 48 +++++++++++++------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/data/json/items/armor/power_armor.json b/data/json/items/armor/power_armor.json index e6e72b16858ee..715c481588869 100644 --- a/data/json/items/armor/power_armor.json +++ b/data/json/items/armor/power_armor.json @@ -207,8 +207,8 @@ "copy-from": "exoskeleton_helmet", "id": "exoskeleton_helmet_heavy", "name": "heavy exoskeleton helmet", - "weight": "6853 g", - "volume": "6600 ml", + "weight": "3500 g", + "volume": "4500 ml", "extend": { "armor": [ { "covers": [ "head" ], "coverage": 100, "encumbrance": 15, "material": { "type": "qt_steel", "thickness": 6 } } ] } @@ -217,8 +217,8 @@ "copy-from": "exoskeleton_helmet", "id": "exoskeleton_helmet_medium", "name": "exoskeleton helmet", - "weight": "6853 g", - "volume": "6600 ml", + "weight": "3000 g", + "volume": "3500 ml", "extend": { "armor": [ { "covers": [ "head" ], "coverage": 100, "encumbrance": 15, "material": { "type": "qt_steel", "thickness": 4 } } ] } @@ -227,8 +227,8 @@ "copy-from": "exoskeleton_helmet", "id": "exoskeleton_helmet_light", "name": "light exoskeleton helmet", - "weight": "6853 g", - "volume": "6600 ml", + "weight": "2500 g", + "volume": "2500 ml", "extend": { "armor": [ { "covers": [ "head" ], "coverage": 100, "encumbrance": 15, "material": { "type": "qt_steel", "thickness": 2 } } ] } @@ -248,8 +248,8 @@ "copy-from": "exoskeleton_torso", "id": "exoskeleton_torso_heavy", "name": "heavy exoskeleton torso", - "weight": "6853 g", - "volume": "6600 ml", + "weight": "13000 g", + "volume": "30000 ml", "extend": { "armor": [ { "covers": [ "torso" ], "coverage": 100, "encumbrance": 15, "material": { "type": "qt_steel", "thickness": 6 } } ] } @@ -258,8 +258,8 @@ "copy-from": "exoskeleton_torso", "id": "exoskeleton_torso_medium", "name": "exoskeleton torso", - "weight": "6853 g", - "volume": "6600 ml", + "weight": "11500 g", + "volume": "21000 ml", "extend": { "armor": [ { "covers": [ "torso" ], "coverage": 100, "encumbrance": 15, "material": { "type": "qt_steel", "thickness": 4 } } ] } @@ -268,8 +268,8 @@ "copy-from": "exoskeleton_torso", "id": "exoskeleton_torso_light", "name": "light exoskeleton torso", - "weight": "6853 g", - "volume": "6600 ml", + "weight": "10000 g", + "volume": "12000 ml", "extend": { "armor": [ { "covers": [ "torso" ], "coverage": 100, "encumbrance": 15, "material": { "type": "qt_steel", "thickness": 2 } } ] } @@ -289,8 +289,8 @@ "copy-from": "exoskeleton_arms", "id": "exoskeleton_arms_heavy", "name": "heavy exoskeleton arms", - "weight": "6853 g", - "volume": "6600 ml", + "weight": "4500 g", + "volume": "5500 ml", "extend": { "armor": [ { "covers": [ "arms" ], "coverage": 100, "encumbrance": 15, "material": { "type": "qt_steel", "thickness": 6 } } ] } @@ -299,8 +299,8 @@ "copy-from": "exoskeleton_arms", "id": "exoskeleton_arms_medium", "name": "exoskeleton arms", - "weight": "6853 g", - "volume": "6600 ml", + "weight": "3750 g", + "volume": "4500 ml", "extend": { "armor": [ { "covers": [ "arms" ], "coverage": 100, "encumbrance": 15, "material": { "type": "qt_steel", "thickness": 4 } } ] } @@ -309,8 +309,8 @@ "copy-from": "exoskeleton_arms", "id": "exoskeleton_arms_light", "name": "light exoskeleton arms", - "weight": "6853 g", - "volume": "6600 ml", + "weight": "3000 g", + "volume": "3500 ml", "extend": { "armor": [ { "covers": [ "arms" ], "coverage": 100, "encumbrance": 15, "material": { "type": "qt_steel", "thickness": 2 } } ] } @@ -330,8 +330,8 @@ "copy-from": "exoskeleton_legs", "id": "exoskeleton_legs_heavy", "name": "heavy exoskeleton legs", - "weight": "6853 g", - "volume": "6600 ml", + "weight": "4500 g", + "volume": "5500 ml", "extend": { "armor": [ { "covers": [ "legs" ], "coverage": 100, "encumbrance": 15, "material": { "type": "qt_steel", "thickness": 6 } } ] } @@ -340,8 +340,8 @@ "copy-from": "exoskeleton_legs", "id": "exoskeleton_legs_medium", "name": "exoskeleton legs", - "weight": "6853 g", - "volume": "6600 ml", + "weight": "3750 g", + "volume": "4500 ml", "extend": { "armor": [ { "covers": [ "legs" ], "coverage": 100, "encumbrance": 15, "material": { "type": "qt_steel", "thickness": 4 } } ] } @@ -350,8 +350,8 @@ "copy-from": "exoskeleton_legs", "id": "exoskeleton_legs_light", "name": "light exoskeleton legs", - "weight": "6853 g", - "volume": "6600 ml", + "weight": "3000 g", + "volume": "3500 ml", "extend": { "armor": [ { "covers": [ "legs" ], "coverage": 100, "encumbrance": 15, "material": { "type": "qt_steel", "thickness": 2 } } ] } From 604713f473450ce465425095eaf08c4d2b301532 Mon Sep 17 00:00:00 2001 From: Kwenchin Date: Thu, 26 Oct 2023 16:37:13 +0200 Subject: [PATCH 07/73] Obsoleted frame and generator frame I don't see any point in them now that you can equip a backpack alongside exoskeletons and generator frames make little sense in my opinion. --- data/json/obsoletion/obsolete_items.json | 66 ++++++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/data/json/obsoletion/obsolete_items.json b/data/json/obsoletion/obsolete_items.json index 3180a209c68e6..66d986c9c37bf 100644 --- a/data/json/obsoletion/obsolete_items.json +++ b/data/json/obsoletion/obsolete_items.json @@ -1,4 +1,70 @@ [ + { + "id": "power_armor_frame", + "type": "ARMOR", + "category": "armor", + "name": { "str": "power armor hauling frame" }, + "description": "A heavy-duty hauling frame designed to interface with military exoskeletons.", + "weight": "1640 g", + "volume": "45 L", + "price": 1000000, + "price_postapoc": 10000, + "to_hit": 1, + "material": [ "steel" ], + "symbol": "[", + "looks_like": "backpack_tactical_large", + "color": "light_gray", + "pocket_data": [ + { + "pocket_type": "CONTAINER", + "rigid": true, + "max_contains_volume": "30 L", + "max_item_length": "70 cm", + "max_contains_weight": "150 kg", + "moves": 300 + } + ], + "power_armor": true, + "material_thickness": 10, + "flags": [ "WATERPROOF", "STURDY", "BELTED" ], + "//": "this should be moved to an accessory like aftershock suits when someone gets around to overhauling power armor.", + "//2": "If this item covers anything, it becomes impossible to wear it with power armor because power armor is hardcoded.", + "melee_damage": { "bash": 1 } + }, + { + "id": "power_armor_generator", + "type": "TOOL_ARMOR", + "category": "armor", + "name": { "str": "power armor generator frame" }, + "description": "A heavy-duty hauling frame designed to interface with military exoskeletons. This version exchanges capacity for a diesel ICE generator that powers the armor.", + "weight": "1640 g", + "volume": "45 L", + "price": 1000000, + "price_postapoc": 10000, + "to_hit": 1, + "material": [ "steel" ], + "symbol": "[", + "looks_like": "backpack_tactical_large", + "color": "light_gray", + "ammo": [ "jp8" ], + "fuel_efficiency": 0.4, + "pocket_data": [ + { + "pocket_type": "CONTAINER", + "rigid": true, + "max_contains_volume": "20 L", + "max_item_length": "70 cm", + "max_contains_weight": "100 kg", + "moves": 300 + }, + { "pocket_type": "MAGAZINE", "rigid": true, "watertight": true, "ammo_restriction": { "diesel": 10000 } } + ], + "power_armor": true, + "material_thickness": 10, + "flags": [ "WATERPROOF", "STURDY", "BELTED", "IS_UPS" ], + "melee_damage": { "bash": 1 }, + "//": "#61486, Drew4484 " + }, { "id": "power_armor_helmet_basic", "type": "TOOL_ARMOR", From d3803e0bf38cd713f19eb4d5fc9682dfebf1e409 Mon Sep 17 00:00:00 2001 From: Kwenchin Date: Thu, 26 Oct 2023 16:38:15 +0200 Subject: [PATCH 08/73] Update power_armor.json Almost done with exoskeletons themselves, all I have to do is descriptions, touching up the flags and the salvaged version --- data/json/items/armor/power_armor.json | 573 ++++++++++++++----------- 1 file changed, 332 insertions(+), 241 deletions(-) diff --git a/data/json/items/armor/power_armor.json b/data/json/items/armor/power_armor.json index 715c481588869..8f654c8077b4b 100644 --- a/data/json/items/armor/power_armor.json +++ b/data/json/items/armor/power_armor.json @@ -3,92 +3,65 @@ "abstract": "exoskeleton", "type": "TOOL_ARMOR", "category": "armor", + "name": { "str": "abstract exoskeleton" }, + "symbol": "[", "price": 10000000, "price_postapoc": 15000, "flags": [ "STURDY", "WATERPROOF", "RAINPROOF", "SUN_GLASSES", "USE_UPS", "NO_UNLOAD", "COMBAT_TOGGLEABLE" ], "relic_data": { "passive_effects": [ { "id": "ench_climate_control_warm" } ] }, "warmth": 40, "environmental_protection": 10, - "armor": [ - { - "layers": [ "SKINTIGHT" ], - "covers": [ "head", "torso", "arms", "hands", "legs", "feet" ], - "encumbrance": 0, - "coverage": 100, - "material": [ { "type": "lycra", "covered_by_mat": 100, "thickness": 0.2 } ], - "//": "Supports the cooling system. Similar to https://en.wikipedia.org/wiki/Liquid_cooling_and_ventilation_garment#/media/File:Lcvg.jpg." - }, - { - "layers": [ "NORMAL" ], - "covers": [ "head", "torso", "arms", "hands", "legs", "feet" ], - "encumbrance": 0, - "coverage": 100, - "material": [ { "type": "nomex", "covered_by_mat": 100, "thickness": 0.8 } ], - "//": "Enclosed protective suit, similar to a flight suit but covers the whole body." - }, - { - "layers": [ "NORMAL" ], - "covers": [ "eyes", "mouth" ], - "encumbrance": 0, - "coverage": 100, - "material": [ { "type": "lvl4ballisticglass", "covered_by_mat": 100, "thickness": 2 } ], - "//": "Transparent mask enclosing the suit, a tube connects it to a pump and filter system at the back of the exoskeleton." - }, - { - "layers": [ "OUTER" ], - "covers": [ "head", "torso", "arms", "hands", "legs", "feet" ], - "encumbrance": 1, - "coverage": 10, - "material": [ { "type": "steel", "covered_by_mat": 100, "thickness": 20 } ], - "//": "The actual exoskeleton, also comprises the frame to support the armor parts." - } - ], + "ammo": "battery", "pocket_data": [ { "pocket_type": "CONTAINER", - "ablative": true, - "moves": 200, - "description": "Attachment points for a head protector.", - "flag_restriction": [ "ABLATIVE_EXOSKELETON_HEAD" ] + "rigid": true, + "description": "Compartment for a UPS.", + "flag_restriction": [ "IS_UPS" ], + "max_contains_volume": "2.51 L", + "moves": 200 }, { "pocket_type": "CONTAINER", - "ablative": true, - "moves": 200, - "description": "Attachment points for a torso protector.", - "flag_restriction": [ "ABLATIVE_EXOSKELETON_TORSO" ] + "rigid": true, + "description": "Compartment for a UPS.", + "flag_restriction": [ "IS_UPS" ], + "max_contains_volume": "2.51 L", + "moves": 200 }, { "pocket_type": "CONTAINER", "ablative": true, - "moves": 200, - "description": "Attachment points for arm protectors.", - "flag_restriction": [ "ABLATIVE_EXOSKELETON_ARMS" ] + "description": "Hooks and straps to attach head armor parts to", + "flag_restriction": [ "ABLATIVE_EXOSKELETON_HEAD" ], + "max_contains_volume": "3.2 l", + "moves": 200 }, { "pocket_type": "CONTAINER", "ablative": true, - "moves": 200, - "description": "Attachment points for hand protectors.", - "flag_restriction": [ "ABLATIVE_EXOSKELETON_HANDS" ] + "description": "Attachment points for a torso protector.", + "flag_restriction": [ "ABLATIVE_EXOSKELETON_TORSO" ], + "max_contains_volume": "10.7 l", + "moves": 200 }, { "pocket_type": "CONTAINER", "ablative": true, - "moves": 200, - "description": "Attachment points for leg protectors.", - "flag_restriction": [ "ABLATIVE_EXOSKELETON_LEGS" ] + "description": "Attachment points for arm protectors.", + "flag_restriction": [ "ABLATIVE_EXOSKELETON_ARMS" ], + "max_contains_volume": "3.7 l", + "moves": 200 }, { "pocket_type": "CONTAINER", "ablative": true, - "moves": 200, - "description": "Attachment points for feet protectors.", - "flag_restriction": [ "ABLATIVE_EXOSKELETON_FEET" ] + "description": "Attachment points for leg protectors.", + "flag_restriction": [ "ABLATIVE_EXOSKELETON_LEGS" ], + "max_contains_volume": "3.7 l", + "moves": 200 } - ], - "ammo": "battery", - "use_action": { "type": "transform", "msg": "\n", "target": "", "active": true, "need_charges": 1, "need_charges_msg": "" } + ] }, { "copy-from": "exoskeleton", @@ -113,44 +86,102 @@ "id": "power_armor_heavy", "name": { "str": "combat exoskeleton mk.1" }, "description": "", - "weight": "20000 g", - "volume": "2500 ml", - "extend": { - "armor": [ - { - "covers": [ "head", "torso", "arms", "hands", "legs", "feet" ], - "coverage": 10, - "material": { "type": "steel", "thickness": 30 } - } - ] + "weight": "18000 g", + "volume": "3500 ml", + "armor": [ + { + "layers": [ "SKINTIGHT", "NORMAL", "OUTER" ], + "covers": [ "head", "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ], + "encumbrance": 35, + "coverage": 100, + "material": [ + { "type": "lycra", "thickness": 0.2 }, + { "type": "nomex", "thickness": 0.8 }, + { "type": "steel", "thickness": 30, "covered_by_mat": 10 } + ] + }, + { + "layers": [ "NORMAL" ], + "covers": [ "mouth", "eyes" ], + "encumbrance": 0, + "coverage": 100, + "material": [ { "type": "lvl4ballisticglass", "thickness": 2 } ] + } + ], + "use_action": { + "type": "transform", + "msg": "OS booting sequnce initiated\nLiquid cooling system engaged\nRespiration system engaged\nExoskeleton engaged\n booting sequence terminated, all systems nominal.", + "target": "power_armor_heavy_on", + "active": true, + "need_charges": 1, + "need_charges_msg": "The exoskeleton batteries are empty" } }, { - "id": "power_armor_heavy_on", "copy-from": "power_armor_heavy", - "looks_like": "power_armor_heavy", - "type": "TOOL_ARMOR", - "name": { "str": "heavy combat exoskeleton (on)", "str_pl": "heavy combat exoskeletons (on)" }, + "id": "power_armor_heavy_on", + "name": { "str": "combat exoskeleton mk.1 (on)", "str_pl": "combat exoskeletons mk.1 (on)" }, "description": "The exoskeleton is on and its actuators whirring softly as you move.", - "power_draw": "4 kW", + "power_draw": "100 W", + "weight_capacity_modifier": 1.8, "revert_to": "power_armor_heavy", - "use_action": { "type": "transform", "menu_text": "Turn off", "msg": "The %s armor disengages.", "target": "power_armor_heavy" } + "use_action": { "type": "transform", "menu_text": "Turn off", "msg": "The exoskeleton turns off", "target": "power_armor_heavy" }, + "armor": [ + { + "layers": [ "SKINTIGHT", "NORMAL", "OUTER" ], + "covers": [ "head", "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ], + "encumbrance": 15, + "coverage": 100, + "material": [ + { "type": "lycra", "thickness": 0.2 }, + { "type": "nomex", "thickness": 0.8 }, + { "type": "steel", "thickness": 30, "covered_by_mat": 10 } + ] + }, + { + "layers": [ "NORMAL" ], + "covers": [ "mouth", "eyes" ], + "encumbrance": 0, + "coverage": 100, + "material": [ { "type": "lvl4ballisticglass", "thickness": 2 } ] + } + ] }, { "copy-from": "exoskeleton", "id": "power_armor_basic", + "type": "TOOL_ARMOR", "name": { "str": "combat exoskeleton mk.2" }, - "description": "", - "weight": "20000 g", - "volume": "2500 ml", - "extend": { - "armor": [ - { - "covers": [ "head", "torso", "arms", "hands", "legs", "feet" ], - "coverage": 10, - "material": { "type": "steel", "thickness": 25 } - } - ] + "description": "lol", + "weight": "16000 g", + "volume": "3000 ml", + "armor": [ + { + "layers": [ "SKINTIGHT", "NORMAL", "OUTER" ], + "covers": [ "head", "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ], + "encumbrance": 30, + "coverage": 100, + "material": [ + { "type": "lycra", "thickness": 0.2 }, + { "type": "nomex", "thickness": 0.8 }, + { "type": "steel", "thickness": 25, "covered_by_mat": 10 } + ] + }, + { + "layers": [ "NORMAL" ], + "covers": [ "mouth", "eyes" ], + "encumbrance": 0, + "coverage": 100, + "material": [ { "type": "lvl4ballisticglass", "thickness": 2 } ] + } + ], + "use_action": { + "type": "transform", + "msg": "OS booting sequnce initiated\nLiquid cooling system engaged\nRespiration system engaged\nExoskeleton engaged\n booting sequence terminated, all systems nominal.", + "target": "power_armor_basic_on", + "active": true, + "need_charges": 1, + "need_charges_msg": "The exoskeleton batteries are empty" } }, { @@ -160,36 +191,97 @@ "type": "TOOL_ARMOR", "name": { "str": "combat exoskeleton (on)", "str_pl": "combat exoskeletons (on)" }, "description": "The exoskeleton is on and its actuators whirring softly as you move.", - "power_draw": "4 kW", + "power_draw": "84 kW", + "weight_capacity_modifier": 1.6, "revert_to": "power_armor_basic", - "use_action": { "type": "transform", "menu_text": "Turn off", "msg": "The %s armor disengages.", "target": "power_armor_basic" } + "use_action": { "type": "transform", "menu_text": "Turn off", "msg": "The %s armor disengages.", "target": "power_armor_basic" }, + "armor": [ + { + "layers": [ "SKINTIGHT", "NORMAL", "OUTER" ], + "covers": [ "head", "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ], + "encumbrance": 10, + "coverage": 100, + "material": [ + { "type": "lycra", "thickness": 0.2 }, + { "type": "nomex", "thickness": 0.8 }, + { "type": "steel", "thickness": 25, "covered_by_mat": 10 } + ] + }, + { + "layers": [ "NORMAL" ], + "covers": [ "mouth", "eyes" ], + "encumbrance": 0, + "coverage": 100, + "material": [ { "type": "lvl4ballisticglass", "thickness": 2 } ] + } + ] }, { "copy-from": "exoskeleton", "id": "power_armor_light", "name": { "str": "combat exoskeleton mk.3" }, - "description": "", - "weight": "20000 g", + "description": "Distributed to heavy weapons units, breaching units", + "weight": "14000 g", "volume": "2500 ml", - "extend": { - "armor": [ - { - "covers": [ "head", "torso", "arms", "hands", "legs", "feet" ], - "coverage": 10, - "material": { "type": "steel", "thickness": 20 } - } - ] + "armor": [ + { + "layers": [ "SKINTIGHT", "NORMAL", "OUTER" ], + "covers": [ "head", "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ], + "encumbrance": 25, + "coverage": 100, + "material": [ + { "type": "lycra", "thickness": 0.2 }, + { "type": "nomex", "thickness": 0.8 }, + { "type": "steel", "thickness": 20, "covered_by_mat": 10 } + ] + }, + { + "layers": [ "NORMAL" ], + "covers": [ "mouth", "eyes" ], + "encumbrance": 0, + "coverage": 100, + "material": [ { "type": "lvl4ballisticglass", "thickness": 2 } ] + } + ], + "use_action": { + "type": "transform", + "msg": "OS booting sequnce initiated\nLiquid cooling system engaged\nRespiration system engaged\nExoskeleton engaged\n booting sequence terminated, all systems nominal.", + "target": "power_armor_light_on", + "active": true, + "need_charges": 1, + "need_charges_msg": "The exoskeleton batteries are empty" } }, { "copy-from": "power_armor_light", "id": "power_armor_light_on", - "looks_like": "power_armor_light", - "name": { "str": "light combat exoskeleton (on)", "str_pl": "light combat exoskeletons (on)" }, + "name": { "str": "light combat exoskeleton (on)" }, "description": "The exoskeleton is on and its actuators whirring softly as you move.", - "power_draw": "4 kW", + "encumbrance": 5, + "power_draw": "70 W", + "weight_capacity_modifier": 1.4, "revert_to": "power_armor_light", - "use_action": { "type": "transform", "menu_text": "Turn off", "msg": "The %s armor disengages.", "target": "power_armor_light" } + "use_action": { "type": "transform", "menu_text": "Turn off", "msg": "The %s armor disengages.", "target": "power_armor_light" }, + "armor": [ + { + "layers": [ "SKINTIGHT", "NORMAL", "OUTER" ], + "covers": [ "head", "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ], + "encumbrance": 5, + "coverage": 100, + "material": [ + { "type": "lycra", "thickness": 0.2 }, + { "type": "nomex", "thickness": 0.8 }, + { "type": "steel", "thickness": 20, "covered_by_mat": 10 } + ] + }, + { + "layers": [ "NORMAL" ], + "covers": [ "mouth", "eyes" ], + "encumbrance": 0, + "coverage": 100, + "material": [ { "type": "lvl4ballisticglass", "thickness": 2 } ] + } + ] }, { "abstract": "exoskeleton_helmet", @@ -197,41 +289,70 @@ "category": "armor", "price": 60000, "price_postapoc": 5000, - "flags": [ "ABLATIVE_EXOSKELETON_HELMET", "CANT_WEAR", "OUTER" ], - "armor": [ - { "covers": [ "head" ], "coverage": 100, "encumbrance": 5, "material": { "type": "kevlar_layered", "thickness": 2 } }, - { "covers": [ "mouth" ], "coverage": 100, "encumbrance": 0 } - ] + "flags": [ "ABLATIVE_EXOSKELETON_HELMET", "CANT_WEAR", "OUTER" ] }, { "copy-from": "exoskeleton_helmet", "id": "exoskeleton_helmet_heavy", "name": "heavy exoskeleton helmet", - "weight": "3500 g", - "volume": "4500 ml", - "extend": { - "armor": [ { "covers": [ "head" ], "coverage": 100, "encumbrance": 15, "material": { "type": "qt_steel", "thickness": 6 } } ] - } + "weight": "7 kg", + "volume": "3.1 l", + "armor": [ + { + "covers": [ "head" ], + "coverage": 100, + "encumbrance": 15, + "material": [ { "type": "kevlar_layered", "thickness": 2 }, { "type": "qt_steel", "thickness": 6 } ] + }, + { + "covers": [ "mouth" ], + "coverage": 100, + "encumbrance": 0, + "material": [ { "type": "kevlar_layered", "thickness": 2 }, { "type": "qt_steel", "thickness": 6 } ] + } + ] }, { "copy-from": "exoskeleton_helmet", "id": "exoskeleton_helmet_medium", "name": "exoskeleton helmet", - "weight": "3000 g", - "volume": "3500 ml", - "extend": { - "armor": [ { "covers": [ "head" ], "coverage": 100, "encumbrance": 15, "material": { "type": "qt_steel", "thickness": 4 } } ] - } + "weight": "5.4 kg", + "volume": "2.9 l", + "armor": [ + { + "covers": [ "head" ], + "coverage": 100, + "encumbrance": 15, + "material": [ { "type": "kevlar_layered", "thickness": 2 }, { "type": "qt_steel", "thickness": 4 } ] + }, + { + "covers": [ "mouth" ], + "coverage": 100, + "encumbrance": 0, + "material": [ { "type": "kevlar_layered", "thickness": 2 }, { "type": "qt_steel", "thickness": 4 } ] + } + ] }, { "copy-from": "exoskeleton_helmet", "id": "exoskeleton_helmet_light", "name": "light exoskeleton helmet", - "weight": "2500 g", - "volume": "2500 ml", - "extend": { - "armor": [ { "covers": [ "head" ], "coverage": 100, "encumbrance": 15, "material": { "type": "qt_steel", "thickness": 2 } } ] - } + "weight": "3.8 kg", + "volume": "2.7 l", + "armor": [ + { + "covers": [ "head" ], + "coverage": 100, + "encumbrance": 15, + "material": [ { "type": "kevlar_layered", "thickness": 2 }, { "type": "qt_steel", "thickness": 2 } ] + }, + { + "covers": [ "mouth" ], + "coverage": 100, + "encumbrance": 0, + "material": [ { "type": "kevlar_layered", "thickness": 2 }, { "type": "qt_steel", "thickness": 2 } ] + } + ] }, { "abstract": "exoskeleton_torso", @@ -239,40 +360,52 @@ "category": "armor", "price": 60000, "price_postapoc": 5000, - "flags": [ "ABLATIVE_EXOSKELETON_TORSO", "CANT_WEAR", "OUTER" ], - "armor": [ - { "covers": [ "torso" ], "coverage": 100, "encumbrance": 5, "material": { "type": "kevlar_layered", "thickness": 2 } } - ] + "flags": [ "ABLATIVE_EXOSKELETON_TORSO", "CANT_WEAR", "OUTER" ] }, { "copy-from": "exoskeleton_torso", "id": "exoskeleton_torso_heavy", "name": "heavy exoskeleton torso", - "weight": "13000 g", - "volume": "30000 ml", - "extend": { - "armor": [ { "covers": [ "torso" ], "coverage": 100, "encumbrance": 15, "material": { "type": "qt_steel", "thickness": 6 } } ] - } + "weight": "21.9 kg", + "volume": "10.6 l", + "armor": [ + { + "covers": [ "torso" ], + "coverage": 100, + "encumbrance": 15, + "material": [ { "type": "kevlar_layered", "thickness": 2 }, { "type": "qt_steel", "thickness": 6 } ] + } + ] }, { "copy-from": "exoskeleton_torso", "id": "exoskeleton_torso_medium", "name": "exoskeleton torso", - "weight": "11500 g", - "volume": "21000 ml", - "extend": { - "armor": [ { "covers": [ "torso" ], "coverage": 100, "encumbrance": 15, "material": { "type": "qt_steel", "thickness": 4 } } ] - } + "weight": "17.1 kg", + "volume": "9.9 l", + "armor": [ + { + "covers": [ "torso" ], + "coverage": 100, + "encumbrance": 15, + "material": [ { "type": "kevlar_layered", "thickness": 2 }, { "type": "qt_steel", "thickness": 4 } ] + } + ] }, { "copy-from": "exoskeleton_torso", "id": "exoskeleton_torso_light", "name": "light exoskeleton torso", - "weight": "10000 g", - "volume": "12000 ml", - "extend": { - "armor": [ { "covers": [ "torso" ], "coverage": 100, "encumbrance": 15, "material": { "type": "qt_steel", "thickness": 2 } } ] - } + "weight": "12.3 kg", + "volume": "9.3 l", + "armor": [ + { + "covers": [ "torso" ], + "coverage": 100, + "encumbrance": 15, + "material": [ { "type": "kevlar_layered", "thickness": 2 }, { "type": "qt_steel", "thickness": 2 } ] + } + ] }, { "abstract": "exoskeleton_arms", @@ -280,40 +413,52 @@ "category": "armor", "price": 60000, "price_postapoc": 5000, - "flags": [ "ABLATIVE_EXOSKELETON_ARMS", "CANT_WEAR", "OUTER" ], - "armor": [ - { "covers": [ "arms" ], "coverage": 100, "encumbrance": 5, "material": { "type": "kevlar_layered", "thickness": 2 } } - ] + "flags": [ "ABLATIVE_EXOSKELETON_ARMS", "CANT_WEAR", "OUTER" ] }, { "copy-from": "exoskeleton_arms", "id": "exoskeleton_arms_heavy", "name": "heavy exoskeleton arms", - "weight": "4500 g", - "volume": "5500 ml", - "extend": { - "armor": [ { "covers": [ "arms" ], "coverage": 100, "encumbrance": 15, "material": { "type": "qt_steel", "thickness": 6 } } ] - } + "weight": "7.3 kg", + "volume": "3.6 l", + "armor": [ + { + "covers": [ "arm_l", "arm_r" ], + "coverage": 100, + "encumbrance": 15, + "material": [ { "type": "kevlar_layered", "thickness": 2 }, { "type": "qt_steel", "thickness": 6 } ] + } + ] }, { "copy-from": "exoskeleton_arms", "id": "exoskeleton_arms_medium", "name": "exoskeleton arms", - "weight": "3750 g", - "volume": "4500 ml", - "extend": { - "armor": [ { "covers": [ "arms" ], "coverage": 100, "encumbrance": 15, "material": { "type": "qt_steel", "thickness": 4 } } ] - } + "weight": "5.7 g", + "volume": "3.4 l", + "armor": [ + { + "covers": [ "arm_l", "arm_r" ], + "coverage": 100, + "encumbrance": 15, + "material": [ { "type": "kevlar_layered", "thickness": 2 }, { "type": "qt_steel", "thickness": 4 } ] + } + ] }, { "copy-from": "exoskeleton_arms", "id": "exoskeleton_arms_light", "name": "light exoskeleton arms", - "weight": "3000 g", - "volume": "3500 ml", - "extend": { - "armor": [ { "covers": [ "arms" ], "coverage": 100, "encumbrance": 15, "material": { "type": "qt_steel", "thickness": 2 } } ] - } + "weight": "4.1 kg", + "volume": "3.2 l", + "armor": [ + { + "covers": [ "arm_l", "arm_r" ], + "coverage": 100, + "encumbrance": 15, + "material": [ { "type": "kevlar_layered", "thickness": 2 }, { "type": "qt_steel", "thickness": 2 } ] + } + ] }, { "abstract": "exoskeleton_legs", @@ -321,105 +466,51 @@ "category": "armor", "price": 60000, "price_postapoc": 5000, - "flags": [ "ABLATIVE_EXOSKELETON_LEGS", "CANT_WEAR", "OUTER" ], - "armor": [ - { "covers": [ "legs" ], "coverage": 100, "encumbrance": 5, "material": { "type": "kevlar_layered", "thickness": 2 } } - ] + "flags": [ "ABLATIVE_EXOSKELETON_LEGS", "CANT_WEAR", "OUTER" ] }, { "copy-from": "exoskeleton_legs", "id": "exoskeleton_legs_heavy", "name": "heavy exoskeleton legs", - "weight": "4500 g", - "volume": "5500 ml", - "extend": { - "armor": [ { "covers": [ "legs" ], "coverage": 100, "encumbrance": 15, "material": { "type": "qt_steel", "thickness": 6 } } ] - } + "weight": "7.3 kg", + "volume": "3.6 l", + "armor": [ + { + "covers": [ "leg_l", "leg_r" ], + "coverage": 100, + "encumbrance": 15, + "material": [ { "type": "kevlar_layered", "thickness": 2 }, { "type": "qt_steel", "thickness": 6 } ] + } + ] }, { "copy-from": "exoskeleton_legs", "id": "exoskeleton_legs_medium", "name": "exoskeleton legs", - "weight": "3750 g", - "volume": "4500 ml", - "extend": { - "armor": [ { "covers": [ "legs" ], "coverage": 100, "encumbrance": 15, "material": { "type": "qt_steel", "thickness": 4 } } ] - } + "weight": "5.7 kg", + "volume": "3.4 l", + "armor": [ + { + "covers": [ "leg_l", "leg_r" ], + "coverage": 100, + "encumbrance": 15, + "material": [ { "type": "kevlar_layered", "thickness": 2 }, { "type": "qt_steel", "thickness": 4 } ] + } + ] }, { "copy-from": "exoskeleton_legs", "id": "exoskeleton_legs_light", "name": "light exoskeleton legs", - "weight": "3000 g", - "volume": "3500 ml", - "extend": { - "armor": [ { "covers": [ "legs" ], "coverage": 100, "encumbrance": 15, "material": { "type": "qt_steel", "thickness": 2 } } ] - } - }, - { - "id": "power_armor_frame", - "type": "ARMOR", - "category": "armor", - "name": { "str": "power armor hauling frame" }, - "description": "A heavy-duty hauling frame designed to interface with military exoskeletons.", - "weight": "1640 g", - "volume": "45 L", - "price": 1000000, - "price_postapoc": 10000, - "to_hit": 1, - "material": [ "steel" ], - "symbol": "[", - "looks_like": "backpack_tactical_large", - "color": "light_gray", - "pocket_data": [ + "weight": "4.1 kg", + "volume": "3.2 l", + "armor": [ { - "pocket_type": "CONTAINER", - "rigid": true, - "max_contains_volume": "30 L", - "max_item_length": "70 cm", - "max_contains_weight": "150 kg", - "moves": 300 + "covers": [ "leg_l", "leg_r" ], + "coverage": 100, + "encumbrance": 15, + "material": [ { "type": "kevlar_layered", "thickness": 2 }, { "type": "qt_steel", "thickness": 2 } ] } - ], - "power_armor": true, - "material_thickness": 10, - "flags": [ "WATERPROOF", "STURDY", "BELTED" ], - "//": "this should be moved to an accessory like aftershock suits when someone gets around to overhauling power armor.", - "//2": "If this item covers anything, it becomes impossible to wear it with power armor because power armor is hardcoded.", - "melee_damage": { "bash": 1 } - }, - { - "id": "power_armor_generator", - "type": "TOOL_ARMOR", - "category": "armor", - "name": { "str": "power armor generator frame" }, - "description": "A heavy-duty hauling frame designed to interface with military exoskeletons. This version exchanges capacity for a diesel ICE generator that powers the armor.", - "weight": "1640 g", - "volume": "45 L", - "price": 1000000, - "price_postapoc": 10000, - "to_hit": 1, - "material": [ "steel" ], - "symbol": "[", - "looks_like": "backpack_tactical_large", - "color": "light_gray", - "ammo": [ "jp8" ], - "fuel_efficiency": 0.4, - "pocket_data": [ - { - "pocket_type": "CONTAINER", - "rigid": true, - "max_contains_volume": "20 L", - "max_item_length": "70 cm", - "max_contains_weight": "100 kg", - "moves": 300 - }, - { "pocket_type": "MAGAZINE", "rigid": true, "watertight": true, "ammo_restriction": { "diesel": 10000 } } - ], - "power_armor": true, - "material_thickness": 10, - "flags": [ "WATERPROOF", "STURDY", "BELTED", "IS_UPS" ], - "melee_damage": { "bash": 1 }, - "//": "#61486, Drew4484 " + ] } ] From 334d8a622f130f8c9350e984ac7db4491aa66197 Mon Sep 17 00:00:00 2001 From: Kwenchin Date: Fri, 27 Oct 2023 16:04:35 +0200 Subject: [PATCH 09/73] Update flags.json Deleted unused exoskeleton flags --- data/json/flags.json | 20 ++++---------------- 1 file changed, 4 insertions(+), 16 deletions(-) diff --git a/data/json/flags.json b/data/json/flags.json index c6d7804d7fc1c..853ce600fb1be 100644 --- a/data/json/flags.json +++ b/data/json/flags.json @@ -33,37 +33,25 @@ "id": "ABLATIVE_EXOSKELETON_HEAD", "type": "json_flag", "info": "This armor part will attach to a combat exoskeleton frame", - "restriction": "Item must be combat exoskeleton head protector" + "restriction": "Item must be combat exoskeleton head armor" }, { "id": "ABLATIVE_EXOSKELETON_TORSO", "type": "json_flag", "info": "This armor part will attach to a combat exoskeleton frame", - "restriction": "Item must be combat exoskeleton torso protector" + "restriction": "Item must be combat exoskeleton torso armor" }, { "id": "ABLATIVE_EXOSKELETON_ARMS", "type": "json_flag", "info": "This armor part will attach to a combat exoskeleton frame", - "restriction": "Item must be combat exoskeleton arms protector" - }, - { - "id": "ABLATIVE_EXOSKELETON_HANDS", - "type": "json_flag", - "info": "This armor part will attach to a combat exoskeleton frame", - "restriction": "Item must be combat exoskeleton hands protector" + "restriction": "Item must be combat exoskeleton arm armor" }, { "id": "ABLATIVE_EXOSKELETON_LEGS", "type": "json_flag", "info": "This armor part will attach to a combat exoskeleton frame", - "restriction": "Item must be combat exoskeleton legs protector" - }, - { - "id": "ABLATIVE_EXOSKELETON_FEET", - "type": "json_flag", - "info": "This armor part will attach to a combat exoskeleton frame", - "restriction": "Item must be combat exoskeleton feet protector" + "restriction": "Item must be combat exoskeleton leg armor" }, { "id": "ABLATIVE_LARGE", From 6be1745ed02c18944ac2801cca4227491ad00868 Mon Sep 17 00:00:00 2001 From: Kwenchin Date: Fri, 27 Oct 2023 16:05:14 +0200 Subject: [PATCH 10/73] Update power_armor.json Final values in place, only the descriptions to do, maybe some flags --- data/json/items/armor/power_armor.json | 205 ++++++++----------------- 1 file changed, 68 insertions(+), 137 deletions(-) diff --git a/data/json/items/armor/power_armor.json b/data/json/items/armor/power_armor.json index 8f654c8077b4b..4ffc9b6a2dcfa 100644 --- a/data/json/items/armor/power_armor.json +++ b/data/json/items/armor/power_armor.json @@ -32,7 +32,7 @@ { "pocket_type": "CONTAINER", "ablative": true, - "description": "Hooks and straps to attach head armor parts to", + "description": "Hooks and straps to attach head armor.", "flag_restriction": [ "ABLATIVE_EXOSKELETON_HEAD" ], "max_contains_volume": "3.2 l", "moves": 200 @@ -40,7 +40,7 @@ { "pocket_type": "CONTAINER", "ablative": true, - "description": "Attachment points for a torso protector.", + "description": "Hooks and straps to attach torso armor.", "flag_restriction": [ "ABLATIVE_EXOSKELETON_TORSO" ], "max_contains_volume": "10.7 l", "moves": 200 @@ -48,7 +48,7 @@ { "pocket_type": "CONTAINER", "ablative": true, - "description": "Attachment points for arm protectors.", + "description": "Hooks and straps to attach arms armor.", "flag_restriction": [ "ABLATIVE_EXOSKELETON_ARMS" ], "max_contains_volume": "3.7 l", "moves": 200 @@ -56,7 +56,7 @@ { "pocket_type": "CONTAINER", "ablative": true, - "description": "Attachment points for leg protectors.", + "description": "Hooks and straps to attach legs armor.", "flag_restriction": [ "ABLATIVE_EXOSKELETON_LEGS" ], "max_contains_volume": "3.7 l", "moves": 200 @@ -67,25 +67,36 @@ "copy-from": "exoskeleton", "id": "depowered_armor", "name": { "str": "salvaged exoskeleton" }, - "description": "", - "weight": "20000 g", - "volume": "2500 ml", + "description": "TBI", + "weight": "16000 g", + "volume": "3000 ml", "delete": { "flags": [ "COMBAT_TOGGLEABLE", "USE_UPS" ] }, - "extend": { - "armor": [ - { - "covers": [ "head", "torso", "arms", "hands", "legs", "feet" ], - "coverage": 10, - "material": { "type": "steel", "thickness": 20 } - } - ] - } + "armor": [ + { + "layers": [ "SKINTIGHT", "NORMAL", "OUTER" ], + "covers": [ "head", "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ], + "encumbrance": 30, + "coverage": 100, + "material": [ + { "type": "lycra", "thickness": 0.2 }, + { "type": "nomex", "thickness": 0.8 }, + { "type": "steel", "thickness": 25, "covered_by_mat": 10 } + ] + }, + { + "layers": [ "NORMAL" ], + "covers": [ "mouth", "eyes" ], + "encumbrance": 0, + "coverage": 100, + "material": [ { "type": "lvl4ballisticglass", "thickness": 2 } ] + } + ] }, { "copy-from": "exoskeleton", "id": "power_armor_heavy", "name": { "str": "combat exoskeleton mk.1" }, - "description": "", + "description": "TBI", "weight": "18000 g", "volume": "3500 ml", "armor": [ @@ -152,7 +163,7 @@ "id": "power_armor_basic", "type": "TOOL_ARMOR", "name": { "str": "combat exoskeleton mk.2" }, - "description": "lol", + "description": "TBI", "weight": "16000 g", "volume": "3000 ml", "armor": [ @@ -220,7 +231,7 @@ "copy-from": "exoskeleton", "id": "power_armor_light", "name": { "str": "combat exoskeleton mk.3" }, - "description": "Distributed to heavy weapons units, breaching units", + "description": "TBI", "weight": "14000 g", "volume": "2500 ml", "armor": [ @@ -287,80 +298,53 @@ "abstract": "exoskeleton_helmet", "type": "ARMOR", "category": "armor", + "name": "abstract exoskeleton helmet", + "symbol": "[", "price": 60000, "price_postapoc": 5000, - "flags": [ "ABLATIVE_EXOSKELETON_HELMET", "CANT_WEAR", "OUTER" ] + "flags": [ "ABLATIVE_EXOSKELETON_HEAD", "CANT_WEAR", "OUTER" ], + "armor": [ + { "covers": [ "head" ], "coverage": 100, "encumbrance": 15 }, + { "covers": [ "mouth" ], "coverage": 100, "encumbrance": 0 } + ] }, { "copy-from": "exoskeleton_helmet", "id": "exoskeleton_helmet_heavy", "name": "heavy exoskeleton helmet", + "description": "TBI", "weight": "7 kg", "volume": "3.1 l", - "armor": [ - { - "covers": [ "head" ], - "coverage": 100, - "encumbrance": 15, - "material": [ { "type": "kevlar_layered", "thickness": 2 }, { "type": "qt_steel", "thickness": 6 } ] - }, - { - "covers": [ "mouth" ], - "coverage": 100, - "encumbrance": 0, - "material": [ { "type": "kevlar_layered", "thickness": 2 }, { "type": "qt_steel", "thickness": 6 } ] - } - ] + "material": [ { "type": "kevlar_layered", "thickness": 2 }, { "type": "qt_steel", "covered_by_mat": 95, "thickness": 6 } ] }, { "copy-from": "exoskeleton_helmet", "id": "exoskeleton_helmet_medium", "name": "exoskeleton helmet", + "description": "TBI", "weight": "5.4 kg", "volume": "2.9 l", - "armor": [ - { - "covers": [ "head" ], - "coverage": 100, - "encumbrance": 15, - "material": [ { "type": "kevlar_layered", "thickness": 2 }, { "type": "qt_steel", "thickness": 4 } ] - }, - { - "covers": [ "mouth" ], - "coverage": 100, - "encumbrance": 0, - "material": [ { "type": "kevlar_layered", "thickness": 2 }, { "type": "qt_steel", "thickness": 4 } ] - } - ] + "material": [ { "type": "kevlar_layered", "thickness": 2 }, { "type": "qt_steel", "covered_by_mat": 95, "thickness": 4 } ] }, { "copy-from": "exoskeleton_helmet", "id": "exoskeleton_helmet_light", "name": "light exoskeleton helmet", + "description": "TBI", "weight": "3.8 kg", "volume": "2.7 l", - "armor": [ - { - "covers": [ "head" ], - "coverage": 100, - "encumbrance": 15, - "material": [ { "type": "kevlar_layered", "thickness": 2 }, { "type": "qt_steel", "thickness": 2 } ] - }, - { - "covers": [ "mouth" ], - "coverage": 100, - "encumbrance": 0, - "material": [ { "type": "kevlar_layered", "thickness": 2 }, { "type": "qt_steel", "thickness": 2 } ] - } - ] + "material": [ { "type": "kevlar_layered", "thickness": 2 }, { "type": "qt_steel", "covered_by_mat": 95, "thickness": 2 } ] }, { "abstract": "exoskeleton_torso", "type": "ARMOR", "category": "armor", + "name": "TBI", + "description": "TBI", "price": 60000, "price_postapoc": 5000, - "flags": [ "ABLATIVE_EXOSKELETON_TORSO", "CANT_WEAR", "OUTER" ] + "flags": [ "ABLATIVE_EXOSKELETON_TORSO", "CANT_WEAR", "OUTER" ], + "armor": [ { "covers": [ "torso" ], "coverage": 100, "encumbrance": 15 } ] }, { "copy-from": "exoskeleton_torso", @@ -368,14 +352,7 @@ "name": "heavy exoskeleton torso", "weight": "21.9 kg", "volume": "10.6 l", - "armor": [ - { - "covers": [ "torso" ], - "coverage": 100, - "encumbrance": 15, - "material": [ { "type": "kevlar_layered", "thickness": 2 }, { "type": "qt_steel", "thickness": 6 } ] - } - ] + "material": [ { "type": "kevlar_layered", "thickness": 2 }, { "type": "qt_steel", "covered_by_mat": 95, "thickness": 6 } ] }, { "copy-from": "exoskeleton_torso", @@ -383,14 +360,7 @@ "name": "exoskeleton torso", "weight": "17.1 kg", "volume": "9.9 l", - "armor": [ - { - "covers": [ "torso" ], - "coverage": 100, - "encumbrance": 15, - "material": [ { "type": "kevlar_layered", "thickness": 2 }, { "type": "qt_steel", "thickness": 4 } ] - } - ] + "material": [ { "type": "kevlar_layered", "thickness": 2 }, { "type": "qt_steel", "covered_by_mat": 95, "thickness": 4 } ] }, { "copy-from": "exoskeleton_torso", @@ -398,119 +368,80 @@ "name": "light exoskeleton torso", "weight": "12.3 kg", "volume": "9.3 l", - "armor": [ - { - "covers": [ "torso" ], - "coverage": 100, - "encumbrance": 15, - "material": [ { "type": "kevlar_layered", "thickness": 2 }, { "type": "qt_steel", "thickness": 2 } ] - } - ] + "material": [ { "type": "kevlar_layered", "thickness": 2 }, { "type": "qt_steel", "covered_by_mat": 95, "thickness": 2 } ] }, { "abstract": "exoskeleton_arms", "type": "ARMOR", "category": "armor", + "name": "TBI", "price": 60000, "price_postapoc": 5000, - "flags": [ "ABLATIVE_EXOSKELETON_ARMS", "CANT_WEAR", "OUTER" ] + "flags": [ "ABLATIVE_EXOSKELETON_ARMS", "CANT_WEAR", "OUTER" ], + "armor": [ { "covers": [ "arm_l", "arm_r" ], "coverage": 100, "encumbrance": 15 } ] }, { "copy-from": "exoskeleton_arms", "id": "exoskeleton_arms_heavy", "name": "heavy exoskeleton arms", + "description": "TBI", "weight": "7.3 kg", "volume": "3.6 l", - "armor": [ - { - "covers": [ "arm_l", "arm_r" ], - "coverage": 100, - "encumbrance": 15, - "material": [ { "type": "kevlar_layered", "thickness": 2 }, { "type": "qt_steel", "thickness": 6 } ] - } - ] + "material": [ { "type": "kevlar_layered", "thickness": 2 }, { "type": "qt_steel", "covered_by_mat": 95, "thickness": 6 } ] }, { "copy-from": "exoskeleton_arms", "id": "exoskeleton_arms_medium", "name": "exoskeleton arms", + "description": "TBI", "weight": "5.7 g", "volume": "3.4 l", - "armor": [ - { - "covers": [ "arm_l", "arm_r" ], - "coverage": 100, - "encumbrance": 15, - "material": [ { "type": "kevlar_layered", "thickness": 2 }, { "type": "qt_steel", "thickness": 4 } ] - } - ] + "material": [ { "type": "kevlar_layered", "thickness": 2 }, { "type": "qt_steel", "covered_by_mat": 95, "thickness": 4 } ] }, { "copy-from": "exoskeleton_arms", "id": "exoskeleton_arms_light", "name": "light exoskeleton arms", + "description": "TBI", "weight": "4.1 kg", "volume": "3.2 l", - "armor": [ - { - "covers": [ "arm_l", "arm_r" ], - "coverage": 100, - "encumbrance": 15, - "material": [ { "type": "kevlar_layered", "thickness": 2 }, { "type": "qt_steel", "thickness": 2 } ] - } - ] + "material": [ { "type": "kevlar_layered", "thickness": 2 }, { "type": "qt_steel", "covered_by_mat": 95, "thickness": 2 } ] }, { "abstract": "exoskeleton_legs", "type": "ARMOR", "category": "armor", + "name": "TBI", "price": 60000, "price_postapoc": 5000, - "flags": [ "ABLATIVE_EXOSKELETON_LEGS", "CANT_WEAR", "OUTER" ] + "flags": [ "ABLATIVE_EXOSKELETON_LEGS", "CANT_WEAR", "OUTER" ], + "armor": [ { "covers": [ "leg_l", "leg_r" ], "coverage": 100, "encumbrance": 15 } ] }, { "copy-from": "exoskeleton_legs", "id": "exoskeleton_legs_heavy", "name": "heavy exoskeleton legs", + "description": "TBI", "weight": "7.3 kg", "volume": "3.6 l", - "armor": [ - { - "covers": [ "leg_l", "leg_r" ], - "coverage": 100, - "encumbrance": 15, - "material": [ { "type": "kevlar_layered", "thickness": 2 }, { "type": "qt_steel", "thickness": 6 } ] - } - ] + "material": [ { "type": "kevlar_layered", "thickness": 2 }, { "type": "qt_steel", "covered_by_mat": 95, "thickness": 6 } ] }, { "copy-from": "exoskeleton_legs", "id": "exoskeleton_legs_medium", "name": "exoskeleton legs", + "description": "TBI", "weight": "5.7 kg", "volume": "3.4 l", - "armor": [ - { - "covers": [ "leg_l", "leg_r" ], - "coverage": 100, - "encumbrance": 15, - "material": [ { "type": "kevlar_layered", "thickness": 2 }, { "type": "qt_steel", "thickness": 4 } ] - } - ] + "material": [ { "type": "kevlar_layered", "thickness": 2 }, { "type": "qt_steel", "covered_by_mat": 95, "thickness": 4 } ] }, { "copy-from": "exoskeleton_legs", "id": "exoskeleton_legs_light", "name": "light exoskeleton legs", + "description": "TBI", "weight": "4.1 kg", "volume": "3.2 l", - "armor": [ - { - "covers": [ "leg_l", "leg_r" ], - "coverage": 100, - "encumbrance": 15, - "material": [ { "type": "kevlar_layered", "thickness": 2 }, { "type": "qt_steel", "thickness": 2 } ] - } - ] + "material": [ { "type": "kevlar_layered", "thickness": 2 }, { "type": "qt_steel", "covered_by_mat": 95, "thickness": 2 } ] } ] From 6158b79d1791f278b09eea04a41cbb7ca27b5ece Mon Sep 17 00:00:00 2001 From: Kwenchin Date: Fri, 27 Oct 2023 16:05:31 +0200 Subject: [PATCH 11/73] Create power_armor.json Added recipes for the armor parts --- data/json/recipes/armor/power_armor.json | 112 +++++++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100644 data/json/recipes/armor/power_armor.json diff --git a/data/json/recipes/armor/power_armor.json b/data/json/recipes/armor/power_armor.json new file mode 100644 index 0000000000000..ae021296137af --- /dev/null +++ b/data/json/recipes/armor/power_armor.json @@ -0,0 +1,112 @@ +[ + { + "type": "recipe", + "category": "CC_ARMOR", + "subcategory": "CSC_ARMOR_HEAD", + "result": "exoskeleton_helmet_heavy", + "skill_used": "fabrication", + "skills_required": [ [ "sewing", 5 ] ], + "book_learn": { "textbook_armwest": { "skill_level": 7, "recipe_name": "something", "hidden": true } }, + "difficulty": 8, + "time": "3h 15m", + "reversible": true, + "activity_level": "BRISK_EXERCISE", + "proficiencies": [ + { "proficiency": "prof_metalworking" }, + { "proficiency": "prof_blacksmithing" }, + { "proficiency": "prof_armorsmithing" }, + { "proficiency": "prof_articulation" }, + { "proficiency": "prof_quenching", "skill_penalty": 1 }, + { "proficiency": "prof_polymerworking" } + ], + "qualities": [ { "id": "CHISEL", "level": 3 }, { "id": "SEW", "level": 2 } ], + "tools": [ [ [ "hotcut", -1 ] ], [ [ "metal_tank", -1 ] ], [ [ "water", -120 ] ] ], + "using": [ [ "mc_steel", 1 ], [ "blacksmithing_standard", 3 ], [ "armor_kevlar_layered", 3 ] ] + }, + { + "copy-from": "", + "type": "recipe", + "result": "exoskeleton_helmet_medium", + "time": "3h 15m", + "using": [ [ "mc_steel", 1 ], [ "blacksmithing_standard", 3 ], [ "armor_kevlar_layered", 3 ] ] + }, + { + "copy-from": "", + "type": "recipe", + "result": "exoskeleton_helmet_light", + "time": "3h 15m", + "using": [ [ "mc_steel", 1 ], [ "blacksmithing_standard", 3 ], [ "armor_kevlar_layered", 3 ] ] + }, + { + "copy-from": "", + "type": "recipe", + "subcategory": "CSC_ARMOR_TORSO", + "result": "exoskeleton_torso_heavy", + "time": "24h", + "using": [ [ "mc_steel", 5 ], [ "blacksmithing_standard", 20 ], [ "armor_kevlar_layered", 20 ] ] + }, + { + "copy-from": "", + "type": "recipe", + "subcategory": "CSC_ARMOR_TORSO", + "result": "exoskeleton_torso_medium", + "time": "24h", + "using": [ [ "mc_steel", 5 ], [ "blacksmithing_standard", 20 ], [ "armor_kevlar_layered", 20 ] ] + }, + { + "copy-from": "", + "type": "recipe", + "subcategory": "CSC_ARMOR_TORSO", + "result": "exoskeleton_torso_light", + "time": "24h", + "using": [ [ "mc_steel", 5 ], [ "blacksmithing_standard", 20 ], [ "armor_kevlar_layered", 20 ] ] + }, + { + "copy-from": "", + "type": "recipe", + "subcategory": "CSC_ARMOR_ARMS", + "result": "exoskeleton_arms_heavy", + "time": "20h 20m", + "using": [ [ "mc_steel", 4 ], [ "blacksmithing_standard", 17 ], [ "armor_kevlar_layered", 17 ] ] + }, + { + "copy-from": "", + "type": "recipe", + "subcategory": "CSC_ARMOR_ARMS", + "result": "exoskeleton_arms_medium", + "time": "20h 20m", + "using": [ [ "mc_steel", 4 ], [ "blacksmithing_standard", 17 ], [ "armor_kevlar_layered", 17 ] ] + }, + { + "copy-from": "", + "type": "recipe", + "subcategory": "CSC_ARMOR_ARMS", + "result": "exoskeleton_arms_light", + "time": "20h 20m", + "using": [ [ "mc_steel", 4 ], [ "blacksmithing_standard", 17 ], [ "armor_kevlar_layered", 17 ] ] + }, + { + "copy-from": "", + "type": "recipe", + "subcategory": "CSC_ARMOR_LEGS", + "result": "exoskeleton_legs_heavy", + "time": "20h 20m", + "using": [ [ "mc_steel", 4 ], [ "blacksmithing_standard", 17 ], [ "armor_kevlar_layered", 17 ] ] + }, + { + "copy-from": "", + "type": "recipe", + "subcategory": "CSC_ARMOR_LEGS", + "result": "exoskeleton_legs_medium", + "time": "20h 20m", + "using": [ [ "mc_steel", 4 ], [ "blacksmithing_standard", 17 ], [ "armor_kevlar_layered", 17 ] ] + }, + { + "copy-from": "", + "type": "recipe", + "subcategory": "CSC_ARMOR_LEGS", + "result": "exoskeleton_legs_light", + "time": "20h 20m", + "using": [ [ "mc_steel", 4 ], [ "blacksmithing_standard", 17 ], [ "armor_kevlar_layered", 17 ] ] + } +] From 731da15fb262b9269e0cc78248892c112adf8d02 Mon Sep 17 00:00:00 2001 From: Kwenchin Date: Sat, 4 Nov 2023 11:07:57 +0100 Subject: [PATCH 12/73] Updated recipes and power_armor.json --- data/json/items/armor/power_armor.json | 331 ++++++++++++++++++----- data/json/recipes/armor/power_armor.json | 103 ++----- 2 files changed, 286 insertions(+), 148 deletions(-) diff --git a/data/json/items/armor/power_armor.json b/data/json/items/armor/power_armor.json index 4ffc9b6a2dcfa..de738f17a8c1b 100644 --- a/data/json/items/armor/power_armor.json +++ b/data/json/items/armor/power_armor.json @@ -18,7 +18,7 @@ "rigid": true, "description": "Compartment for a UPS.", "flag_restriction": [ "IS_UPS" ], - "max_contains_volume": "2.51 L", + "max_contains_volume": "2510 ml", "moves": 200 }, { @@ -26,7 +26,7 @@ "rigid": true, "description": "Compartment for a UPS.", "flag_restriction": [ "IS_UPS" ], - "max_contains_volume": "2.51 L", + "max_contains_volume": "2510 ml", "moves": 200 }, { @@ -34,7 +34,6 @@ "ablative": true, "description": "Hooks and straps to attach head armor.", "flag_restriction": [ "ABLATIVE_EXOSKELETON_HEAD" ], - "max_contains_volume": "3.2 l", "moves": 200 }, { @@ -42,7 +41,6 @@ "ablative": true, "description": "Hooks and straps to attach torso armor.", "flag_restriction": [ "ABLATIVE_EXOSKELETON_TORSO" ], - "max_contains_volume": "10.7 l", "moves": 200 }, { @@ -50,7 +48,6 @@ "ablative": true, "description": "Hooks and straps to attach arms armor.", "flag_restriction": [ "ABLATIVE_EXOSKELETON_ARMS" ], - "max_contains_volume": "3.7 l", "moves": 200 }, { @@ -58,7 +55,6 @@ "ablative": true, "description": "Hooks and straps to attach legs armor.", "flag_restriction": [ "ABLATIVE_EXOSKELETON_LEGS" ], - "max_contains_volume": "3.7 l", "moves": 200 } ] @@ -66,6 +62,7 @@ { "copy-from": "exoskeleton", "id": "depowered_armor", + "type": "TOOL_ARMOR", "name": { "str": "salvaged exoskeleton" }, "description": "TBI", "weight": "16000 g", @@ -95,8 +92,9 @@ { "copy-from": "exoskeleton", "id": "power_armor_heavy", + "type": "TOOL_ARMOR", "name": { "str": "combat exoskeleton mk.1" }, - "description": "TBI", + "description": "Nicknamed 'Tank Suits' for the heavy armor they allow their users to carry these combat exoskeletons are part of the first generation of exoskeletons developed by the army following the release of utility versions released to the civilian market a few years before. The exoskeleton is actually composed of a form-fitting liquid cooling garment, a protective layer reminiscent of a flight suit, enclosed by a transparent mask, and the exoskeleton itself, micromotors and actuators on a complex frame with hooks and straps to attach specialized armor onto. The exoskeleton is off and makes movement difficult.", "weight": "18000 g", "volume": "3500 ml", "armor": [ @@ -131,8 +129,9 @@ { "copy-from": "power_armor_heavy", "id": "power_armor_heavy_on", + "type": "TOOL_ARMOR", "name": { "str": "combat exoskeleton mk.1 (on)", "str_pl": "combat exoskeletons mk.1 (on)" }, - "description": "The exoskeleton is on and its actuators whirring softly as you move.", + "description": "Nicknamed 'Tank Suits' for the heavy armor they allow their users to carry these combat exoskeletons are part of the first generation of exoskeletons developed by the army following the release of utility versions released to the civilian market a few years before. The exoskeleton is actually composed of a form-fitting liquid cooling garment, a protective layer reminiscent of a flight suit, enclosed by a transparent mask, and the exoskeleton itself, micromotors and actuators on a complex frame with hooks and straps to attach specialized armor onto. The exoskeleton is on and its components whirring softly as you move.", "power_draw": "100 W", "weight_capacity_modifier": 1.8, "revert_to": "power_armor_heavy", @@ -163,7 +162,7 @@ "id": "power_armor_basic", "type": "TOOL_ARMOR", "name": { "str": "combat exoskeleton mk.2" }, - "description": "TBI", + "description": "This combat exoskeleton is of second generation, designed to be lighter, less encumbering and more energy efficient while still giving the user greatly increased carry capacity.The exoskeleton is actually composed of a form-fitting liquid cooling garment, a protective layer reminiscent of a flight suit, enclosed by a transparent mask, and the exoskeleton itself, micromotors and actuators on a complex frame with hooks and straps to attach specialized armor onto. The exoskeleton is off and makes movement difficult.", "weight": "16000 g", "volume": "3000 ml", "armor": [ @@ -198,10 +197,10 @@ { "id": "power_armor_basic_on", "copy-from": "power_armor_basic", - "looks_like": "power_armor_basic", "type": "TOOL_ARMOR", + "looks_like": "power_armor_basic", "name": { "str": "combat exoskeleton (on)", "str_pl": "combat exoskeletons (on)" }, - "description": "The exoskeleton is on and its actuators whirring softly as you move.", + "description": "This combat exoskeleton is of second generation, designed to be lighter, less encumbering and more energy efficient while still giving the user greatly increased carry capacity. The exoskeleton is actually composed of a form-fitting liquid cooling garment, a protective layer reminiscent of a flight suit, enclosed by a transparent mask, and the exoskeleton itself, micromotors and actuators on a complex frame with hooks and straps to attach specialized armor onto. The exoskeleton is on and its components whirring softly as you move.", "power_draw": "84 kW", "weight_capacity_modifier": 1.6, "revert_to": "power_armor_basic", @@ -230,8 +229,9 @@ { "copy-from": "exoskeleton", "id": "power_armor_light", + "type": "TOOL_ARMOR", "name": { "str": "combat exoskeleton mk.3" }, - "description": "TBI", + "description": "Part of the latest generation, these combat exoskeletons were designed for actual production and usage, praised for their responsiveness and light weight compared to their predecessors despite the slight sacrifice in carry capacity. The exoskeleton is actually composed of a form-fitting liquid cooling garment, a protective layer reminiscent of a flight suit, enclosed by a transparent mask, and the exoskeleton itself, micromotors and actuators on a complex frame with hooks and straps to attach specialized armor onto. The exoskeleton is off and makes movement difficult.", "weight": "14000 g", "volume": "2500 ml", "armor": [ @@ -266,9 +266,9 @@ { "copy-from": "power_armor_light", "id": "power_armor_light_on", + "type": "TOOL_ARMOR", "name": { "str": "light combat exoskeleton (on)" }, - "description": "The exoskeleton is on and its actuators whirring softly as you move.", - "encumbrance": 5, + "description": "Part of the latest generation, these combat exoskeletons were designed for actual production and usage, praised for their responsiveness and light weight compared to their predecessors despite the slight sacrifice in carry capacity. The exoskeleton is actually composed of a form-fitting liquid cooling garment, a protective layer reminiscent of a flight suit, enclosed by a transparent mask, and the exoskeleton itself, micromotors and actuators attached to a frame with a complex system of hooks and straps to attach specialized armor onto. The exoskeleton is on and its components whirring softly as you move.", "power_draw": "70 W", "weight_capacity_modifier": 1.4, "revert_to": "power_armor_light", @@ -311,36 +311,85 @@ { "copy-from": "exoskeleton_helmet", "id": "exoskeleton_helmet_heavy", + "type": "ARMOR", "name": "heavy exoskeleton helmet", - "description": "TBI", - "weight": "7 kg", - "volume": "3.1 l", - "material": [ { "type": "kevlar_layered", "thickness": 2 }, { "type": "qt_steel", "covered_by_mat": 95, "thickness": 6 } ] + "description": "Plates of ceramic held in place by a layer of kevlar. The hooks and straps indicate that this is meant to be attached to an exoskeleton.", + "weight": "7000 g", + "volume": "3100 ml", + "armor": [ + { + "covers": [ "head" ], + "encumbrance": 30, + "coverage": 100, + "material": [ + { "type": "ceramic", "covered_by_mat": 95, "thickness": 25 }, + { "type": "kevlar", "covered_by_mat": 100, "thickness": 2 } + ] + } + ] }, { "copy-from": "exoskeleton_helmet", "id": "exoskeleton_helmet_medium", + "type": "ARMOR", "name": "exoskeleton helmet", - "description": "TBI", - "weight": "5.4 kg", - "volume": "2.9 l", - "material": [ { "type": "kevlar_layered", "thickness": 2 }, { "type": "qt_steel", "covered_by_mat": 95, "thickness": 4 } ] + "description": "Plates of ceramic held in place by a layer of kevlar. The hooks and straps indicate that this is meant to be attached to an exoskeleton.", + "weight": "5400 g", + "volume": "2900 ml", + "armor": [ + { + "covers": [ "head" ], + "encumbrance": 30, + "coverage": 100, + "material": [ + { "type": "ceramic", "covered_by_mat": 95, "thickness": 20 }, + { "type": "kevlar", "covered_by_mat": 100, "thickness": 2 } + ] + } + ] }, { "copy-from": "exoskeleton_helmet", "id": "exoskeleton_helmet_light", + "type": "ARMOR", "name": "light exoskeleton helmet", - "description": "TBI", - "weight": "3.8 kg", - "volume": "2.7 l", - "material": [ { "type": "kevlar_layered", "thickness": 2 }, { "type": "qt_steel", "covered_by_mat": 95, "thickness": 2 } ] + "description": "Plates of ceramic held in place by a layer of kevlar. The hooks and straps indicate that this is meant to be attached to an exoskeleton.", + "weight": "3800 g", + "volume": "2700 ml", + "armor": [ + { + "covers": [ "head" ], + "encumbrance": 30, + "coverage": 100, + "material": [ + { "type": "ceramic", "covered_by_mat": 95, "thickness": 15 }, + { "type": "kevlar", "covered_by_mat": 100, "thickness": 2 } + ] + } + ] + }, + { + "copy-from": "exoskeleton_helmet", + "id": "exoskeleton_helmet_customized", + "type": "ARMOR", + "name": "heavy exoskeleton helmet", + "description": "This armor looks like it would fit a giant knight. The hooks and straps indicate that this is meant to be attached to an exoskeleton.", + "weight": "7300 g", + "volume": "3600 ml", + "armor": [ + { + "covers": [ "head" ], + "encumbrance": 30, + "coverage": 100, + "material": [ { "type": "qt_steel_chain", "thickness": 1.2 }, { "type": "qt_steel", "thickness": 6, "covered_by_mat": 95 } ] + } + ] }, { "abstract": "exoskeleton_torso", "type": "ARMOR", "category": "armor", - "name": "TBI", - "description": "TBI", + "name": "abstract exoskeleton torso armor", "price": 60000, "price_postapoc": 5000, "flags": [ "ABLATIVE_EXOSKELETON_TORSO", "CANT_WEAR", "OUTER" ], @@ -349,32 +398,85 @@ { "copy-from": "exoskeleton_torso", "id": "exoskeleton_torso_heavy", + "type": "ARMOR", "name": "heavy exoskeleton torso", - "weight": "21.9 kg", - "volume": "10.6 l", - "material": [ { "type": "kevlar_layered", "thickness": 2 }, { "type": "qt_steel", "covered_by_mat": 95, "thickness": 6 } ] + "description": "Plates of ceramic held in place by a layer of kevlar. The hooks and straps indicate that this is meant to be attached to an exoskeleton.", + "weight": "21900 g", + "volume": "10600 ml", + "armor": [ + { + "covers": [ "torso" ], + "encumbrance": 30, + "coverage": 100, + "material": [ + { "type": "ceramic", "covered_by_mat": 95, "thickness": 25 }, + { "type": "kevlar", "covered_by_mat": 100, "thickness": 2 } + ] + } + ] }, { "copy-from": "exoskeleton_torso", "id": "exoskeleton_torso_medium", + "type": "ARMOR", "name": "exoskeleton torso", - "weight": "17.1 kg", - "volume": "9.9 l", - "material": [ { "type": "kevlar_layered", "thickness": 2 }, { "type": "qt_steel", "covered_by_mat": 95, "thickness": 4 } ] + "description": "Plates of ceramic held in place by a layer of kevlar. The hooks and straps indicate that this is meant to be attached to an exoskeleton.", + "weight": "17100 g", + "volume": "9900 ml", + "armor": [ + { + "covers": [ "torso" ], + "encumbrance": 30, + "coverage": 100, + "material": [ + { "type": "ceramic", "covered_by_mat": 95, "thickness": 20 }, + { "type": "kevlar", "covered_by_mat": 100, "thickness": 2 } + ] + } + ] }, { "copy-from": "exoskeleton_torso", "id": "exoskeleton_torso_light", + "type": "ARMOR", "name": "light exoskeleton torso", - "weight": "12.3 kg", - "volume": "9.3 l", - "material": [ { "type": "kevlar_layered", "thickness": 2 }, { "type": "qt_steel", "covered_by_mat": 95, "thickness": 2 } ] + "description": "Plates of ceramic held in place by a layer of kevlar. The hooks and straps indicate that this is meant to be attached to an exoskeleton.", + "weight": "12300 g", + "volume": "9300 ml", + "armor": [ + { + "covers": [ "torso" ], + "encumbrance": 30, + "coverage": 100, + "material": [ + { "type": "ceramic", "covered_by_mat": 95, "thickness": 15 }, + { "type": "kevlar", "covered_by_mat": 100, "thickness": 2 } + ] + } + ] + }, + { + "copy-from": "exoskeleton_torso", + "id": "exoskeleton_torso_customized", + "type": "ARMOR", + "name": "heavy exoskeleton torso", + "description": "This armor looks like it would fit a giant knight. The hooks and straps indicate that this is meant to be attached to an exoskeleton.", + "weight": "7300 g", + "volume": "3600 ml", + "armor": [ + { + "covers": [ "torso" ], + "encumbrance": 30, + "coverage": 100, + "material": [ { "type": "qt_steel_chain", "thickness": 1.2 }, { "type": "qt_steel", "thickness": 6, "covered_by_mat": 95 } ] + } + ] }, { "abstract": "exoskeleton_arms", "type": "ARMOR", "category": "armor", - "name": "TBI", + "name": "abstract exoskeleton arm armor", "price": 60000, "price_postapoc": 5000, "flags": [ "ABLATIVE_EXOSKELETON_ARMS", "CANT_WEAR", "OUTER" ], @@ -383,65 +485,164 @@ { "copy-from": "exoskeleton_arms", "id": "exoskeleton_arms_heavy", + "type": "ARMOR", "name": "heavy exoskeleton arms", - "description": "TBI", - "weight": "7.3 kg", - "volume": "3.6 l", - "material": [ { "type": "kevlar_layered", "thickness": 2 }, { "type": "qt_steel", "covered_by_mat": 95, "thickness": 6 } ] + "description": "Plates of ceramic held in place by a layer of kevlar. The hooks and straps indicate that this is meant to be attached to an exoskeleton.", + "weight": "7300 g", + "volume": "3600 ml", + "armor": [ + { + "covers": [ "arm_l", "arm_r", "hand_l", "hand_r" ], + "encumbrance": 30, + "coverage": 100, + "material": [ + { "type": "ceramic", "covered_by_mat": 95, "thickness": 12.5 }, + { "type": "kevlar", "covered_by_mat": 100, "thickness": 2 } + ] + } + ] }, { "copy-from": "exoskeleton_arms", "id": "exoskeleton_arms_medium", + "type": "ARMOR", "name": "exoskeleton arms", - "description": "TBI", - "weight": "5.7 g", - "volume": "3.4 l", - "material": [ { "type": "kevlar_layered", "thickness": 2 }, { "type": "qt_steel", "covered_by_mat": 95, "thickness": 4 } ] + "description": "Plates of ceramic held in place by a layer of kevlar. The hooks and straps indicate that this is meant to be attached to an exoskeleton.", + "weight": "5700 g", + "volume": "3400 ml", + "armor": [ + { + "covers": [ "arm_l", "arm_r", "hand_l", "hand_r" ], + "encumbrance": 30, + "coverage": 100, + "material": [ + { "type": "ceramic", "covered_by_mat": 95, "thickness": 10 }, + { "type": "kevlar", "covered_by_mat": 100, "thickness": 2 } + ] + } + ] }, { "copy-from": "exoskeleton_arms", "id": "exoskeleton_arms_light", + "type": "ARMOR", "name": "light exoskeleton arms", - "description": "TBI", - "weight": "4.1 kg", - "volume": "3.2 l", - "material": [ { "type": "kevlar_layered", "thickness": 2 }, { "type": "qt_steel", "covered_by_mat": 95, "thickness": 2 } ] + "description": "Plates of ceramic held in place by a layer of kevlar. The hooks and straps indicate that this is meant to be attached to an exoskeleton.", + "weight": "4100 g", + "volume": "3200 ml", + "armor": [ + { + "covers": [ "arm_l", "arm_r", "hand_l", "hand_r" ], + "encumbrance": 30, + "coverage": 100, + "material": [ + { "type": "ceramic", "covered_by_mat": 95, "thickness": 7.5 }, + { "type": "kevlar", "covered_by_mat": 100, "thickness": 2 } + ] + } + ] + }, + { + "copy-from": "exoskeleton_arms", + "id": "exoskeleton_arms_customized", + "type": "ARMOR", + "name": "heavy exoskeleton arms", + "description": "This armor looks like it would fit a giant knight. The hooks and straps indicate that this is meant to be attached to an exoskeleton.", + "weight": "7300 g", + "volume": "3600 ml", + "armor": [ + { + "covers": [ "arm_l", "arm_r", "hand_l", "hand_r" ], + "encumbrance": 30, + "coverage": 100, + "material": [ { "type": "qt_steel_chain", "thickness": 1.2 }, { "type": "qt_steel", "thickness": 2, "covered_by_mat": 95 } ] + } + ] }, { "abstract": "exoskeleton_legs", "type": "ARMOR", "category": "armor", - "name": "TBI", + "name": "abstract exoskeleton leg armor", "price": 60000, "price_postapoc": 5000, - "flags": [ "ABLATIVE_EXOSKELETON_LEGS", "CANT_WEAR", "OUTER" ], - "armor": [ { "covers": [ "leg_l", "leg_r" ], "coverage": 100, "encumbrance": 15 } ] + "flags": [ "ABLATIVE_EXOSKELETON_LEGS", "CANT_WEAR", "OUTER" ] }, { "copy-from": "exoskeleton_legs", "id": "exoskeleton_legs_heavy", + "type": "ARMOR", "name": "heavy exoskeleton legs", - "description": "TBI", - "weight": "7.3 kg", - "volume": "3.6 l", - "material": [ { "type": "kevlar_layered", "thickness": 2 }, { "type": "qt_steel", "covered_by_mat": 95, "thickness": 6 } ] + "description": "Plates of ceramic held in place by a layer of kevlar. The hooks and straps indicate that this is meant to be attached to an exoskeleton.", + "weight": "7300 g", + "volume": "3600 ml", + "armor": [ + { + "covers": [ "leg_l", "leg_r", "foot_l", "foot_r" ], + "encumbrance": 30, + "coverage": 100, + "material": [ + { "type": "ceramic", "covered_by_mat": 95, "thickness": 12.5 }, + { "type": "kevlar", "covered_by_mat": 100, "thickness": 2 } + ] + } + ] }, { "copy-from": "exoskeleton_legs", "id": "exoskeleton_legs_medium", + "type": "ARMOR", "name": "exoskeleton legs", - "description": "TBI", - "weight": "5.7 kg", - "volume": "3.4 l", - "material": [ { "type": "kevlar_layered", "thickness": 2 }, { "type": "qt_steel", "covered_by_mat": 95, "thickness": 4 } ] + "description": "Plates of ceramic held in place by a layer of kevlar. The hooks and straps indicate that this is meant to be attached to an exoskeleton.", + "weight": "5700 g", + "volume": "3400 ml", + "armor": [ + { + "covers": [ "leg_l", "leg_r", "foot_l", "foot_r" ], + "encumbrance": 30, + "coverage": 100, + "material": [ + { "type": "ceramic", "covered_by_mat": 95, "thickness": 10 }, + { "type": "kevlar", "covered_by_mat": 100, "thickness": 2 } + ] + } + ] }, { "copy-from": "exoskeleton_legs", "id": "exoskeleton_legs_light", + "type": "ARMOR", "name": "light exoskeleton legs", - "description": "TBI", - "weight": "4.1 kg", - "volume": "3.2 l", - "material": [ { "type": "kevlar_layered", "thickness": 2 }, { "type": "qt_steel", "covered_by_mat": 95, "thickness": 2 } ] + "description": "Plates of ceramic held in place by a layer of kevlar. The hooks and straps indicate that this is meant to be attached to an exoskeleton.", + "weight": "4100 g", + "volume": "3200 ml", + "armor": [ + { + "covers": [ "leg_l", "leg_r", "foot_l", "foot_r" ], + "encumbrance": 30, + "coverage": 100, + "material": [ + { "type": "ceramic", "covered_by_mat": 95, "thickness": 7.5 }, + { "type": "kevlar", "covered_by_mat": 100, "thickness": 2 } + ] + } + ] + }, + { + "copy-from": "exoskeleton_legs", + "id": "exoskeleton_legs_customized", + "type": "ARMOR", + "name": "heavy exoskeleton legs", + "description": "This armor looks like it would fit a giant knight. The hooks and straps indicate that this is meant to be attached to an exoskeleton.", + "weight": "7300 g", + "volume": "3600 ml", + "armor": [ + { + "covers": [ "leg_l", "leg_r", "foot_l", "foot_r" ], + "encumbrance": 30, + "coverage": 100, + "material": [ { "type": "qt_steel_chain", "thickness": 1.2 }, { "type": "qt_steel", "thickness": 3, "covered_by_mat": 95 } ] + } + ] } ] diff --git a/data/json/recipes/armor/power_armor.json b/data/json/recipes/armor/power_armor.json index ae021296137af..3477786f3bbe4 100644 --- a/data/json/recipes/armor/power_armor.json +++ b/data/json/recipes/armor/power_armor.json @@ -1,112 +1,49 @@ [ { + "copy-from": "", "type": "recipe", - "category": "CC_ARMOR", "subcategory": "CSC_ARMOR_HEAD", - "result": "exoskeleton_helmet_heavy", - "skill_used": "fabrication", - "skills_required": [ [ "sewing", 5 ] ], - "book_learn": { "textbook_armwest": { "skill_level": 7, "recipe_name": "something", "hidden": true } }, + "result": "exoskeleton_torso_heavy", "difficulty": 8, - "time": "3h 15m", - "reversible": true, + "skill_used": "fabrication", + "book_learn": [ [ "textbook_armwest", 7 ] ], + "time": "1 d 18 h 30 m", "activity_level": "BRISK_EXERCISE", "proficiencies": [ + { "proficiency": "prof_armorsmithing" }, + { "proficiency": "prof_closures", "time_multiplier": 1.25, "skill_penalty": 0.15 }, { "proficiency": "prof_metalworking" }, { "proficiency": "prof_blacksmithing" }, - { "proficiency": "prof_armorsmithing" }, - { "proficiency": "prof_articulation" }, - { "proficiency": "prof_quenching", "skill_penalty": 1 }, - { "proficiency": "prof_polymerworking" } + { "proficiency": "prof_quenching", "skill_penalty": 1 } ], - "qualities": [ { "id": "CHISEL", "level": 3 }, { "id": "SEW", "level": 2 } ], "tools": [ [ [ "hotcut", -1 ] ], [ [ "metal_tank", -1 ] ], [ [ "water", -120 ] ] ], - "using": [ [ "mc_steel", 1 ], [ "blacksmithing_standard", 3 ], [ "armor_kevlar_layered", 3 ] ] + "using": [ [ "blacksmithing_standard", 3 ], [ "mc_steel_standard", 1 ], [ "armor_chainmail_assembling", 1 ] ] }, { - "copy-from": "", - "type": "recipe", - "result": "exoskeleton_helmet_medium", - "time": "3h 15m", - "using": [ [ "mc_steel", 1 ], [ "blacksmithing_standard", 3 ], [ "armor_kevlar_layered", 3 ] ] - }, - { - "copy-from": "", - "type": "recipe", - "result": "exoskeleton_helmet_light", - "time": "3h 15m", - "using": [ [ "mc_steel", 1 ], [ "blacksmithing_standard", 3 ], [ "armor_kevlar_layered", 3 ] ] - }, - { - "copy-from": "", - "type": "recipe", - "subcategory": "CSC_ARMOR_TORSO", - "result": "exoskeleton_torso_heavy", - "time": "24h", - "using": [ [ "mc_steel", 5 ], [ "blacksmithing_standard", 20 ], [ "armor_kevlar_layered", 20 ] ] - }, - { - "copy-from": "", - "type": "recipe", - "subcategory": "CSC_ARMOR_TORSO", - "result": "exoskeleton_torso_medium", - "time": "24h", - "using": [ [ "mc_steel", 5 ], [ "blacksmithing_standard", 20 ], [ "armor_kevlar_layered", 20 ] ] - }, - { - "copy-from": "", "type": "recipe", + "category": "CC_ARMOR", "subcategory": "CSC_ARMOR_TORSO", - "result": "exoskeleton_torso_light", - "time": "24h", - "using": [ [ "mc_steel", 5 ], [ "blacksmithing_standard", 20 ], [ "armor_kevlar_layered", 20 ] ] + "result": "exoskeleton_helmet_heavy", + "time": "12 d 15 h 36 m", + "tools": [ [ [ "hotcut", -1 ] ], [ [ "metal_tank", -1 ] ], [ [ "water", -120 ] ] ], + "using": [ [ "blacksmithing_standard", 20 ], [ "mc_steel_standard", 5 ], [ "armor_chainmail_assembling", 1 ] ] }, { "copy-from": "", "type": "recipe", "subcategory": "CSC_ARMOR_ARMS", "result": "exoskeleton_arms_heavy", - "time": "20h 20m", - "using": [ [ "mc_steel", 4 ], [ "blacksmithing_standard", 17 ], [ "armor_kevlar_layered", 17 ] ] - }, - { - "copy-from": "", - "type": "recipe", - "subcategory": "CSC_ARMOR_ARMS", - "result": "exoskeleton_arms_medium", - "time": "20h 20m", - "using": [ [ "mc_steel", 4 ], [ "blacksmithing_standard", 17 ], [ "armor_kevlar_layered", 17 ] ] - }, - { - "copy-from": "", - "type": "recipe", - "subcategory": "CSC_ARMOR_ARMS", - "result": "exoskeleton_arms_light", - "time": "20h 20m", - "using": [ [ "mc_steel", 4 ], [ "blacksmithing_standard", 17 ], [ "armor_kevlar_layered", 17 ] ] + "time": "8 d 5 h 8 m", + "tools": [ [ [ "hotcut", -1 ] ], [ [ "metal_tank", -1 ] ], [ [ "water", -120 ] ] ], + "using": [ [ "blacksmithing_standard", 12 ], [ "mc_steel_standard", 3 ], [ "armor_chainmail_assembling", 1 ] ] }, { "copy-from": "", "type": "recipe", "subcategory": "CSC_ARMOR_LEGS", "result": "exoskeleton_legs_heavy", - "time": "20h 20m", - "using": [ [ "mc_steel", 4 ], [ "blacksmithing_standard", 17 ], [ "armor_kevlar_layered", 17 ] ] - }, - { - "copy-from": "", - "type": "recipe", - "subcategory": "CSC_ARMOR_LEGS", - "result": "exoskeleton_legs_medium", - "time": "20h 20m", - "using": [ [ "mc_steel", 4 ], [ "blacksmithing_standard", 17 ], [ "armor_kevlar_layered", 17 ] ] - }, - { - "copy-from": "", - "type": "recipe", - "subcategory": "CSC_ARMOR_LEGS", - "result": "exoskeleton_legs_light", - "time": "20h 20m", - "using": [ [ "mc_steel", 4 ], [ "blacksmithing_standard", 17 ], [ "armor_kevlar_layered", 17 ] ] + "time": "8 d 5 h 8 m", + "tools": [ [ [ "hotcut", -1 ] ], [ [ "metal_tank", -1 ] ], [ [ "water", -120 ] ] ], + "using": [ [ "blacksmithing_standard", 12 ], [ "mc_steel_standard", 3 ], [ "armor_chainmail_assembling", 1 ] ] } ] From 536f88ae649e2fee085f7d30cd19c5ccd841a44c Mon Sep 17 00:00:00 2001 From: Kwenchin Date: Mon, 6 Nov 2023 14:56:08 +0100 Subject: [PATCH 13/73] Solved all errors when launching with modified files --- data/json/items/armor/power_armor.json | 85 ++++++++++++++---------- data/json/recipes/armor/power_armor.json | 16 ++--- 2 files changed, 59 insertions(+), 42 deletions(-) diff --git a/data/json/items/armor/power_armor.json b/data/json/items/armor/power_armor.json index de738f17a8c1b..ee4964a4c2ac3 100644 --- a/data/json/items/armor/power_armor.json +++ b/data/json/items/armor/power_armor.json @@ -8,25 +8,27 @@ "price": 10000000, "price_postapoc": 15000, "flags": [ "STURDY", "WATERPROOF", "RAINPROOF", "SUN_GLASSES", "USE_UPS", "NO_UNLOAD", "COMBAT_TOGGLEABLE" ], - "relic_data": { "passive_effects": [ { "id": "ench_climate_control_warm" } ] }, + "relic_data": { "passive_effects": [ { "id": "ench_climate_control_all" } ] }, "warmth": 40, "environmental_protection": 10, "ammo": "battery", "pocket_data": [ { "pocket_type": "CONTAINER", - "rigid": true, "description": "Compartment for a UPS.", "flag_restriction": [ "IS_UPS" ], - "max_contains_volume": "2510 ml", + "max_contains_weight": "2000 g", + "max_contains_volume": "4510 ml", + "max_item_length": "30 cm", "moves": 200 }, { "pocket_type": "CONTAINER", - "rigid": true, "description": "Compartment for a UPS.", "flag_restriction": [ "IS_UPS" ], - "max_contains_volume": "2510 ml", + "max_contains_weight": "2000 g", + "max_contains_volume": "4510 ml", + "max_item_length": "30 cm", "moves": 200 }, { @@ -34,6 +36,9 @@ "ablative": true, "description": "Hooks and straps to attach head armor.", "flag_restriction": [ "ABLATIVE_EXOSKELETON_HEAD" ], + "max_contains_weight": "7000 g", + "max_contains_volume": "3110 ml", + "max_item_length": "30 cm", "moves": 200 }, { @@ -41,6 +46,9 @@ "ablative": true, "description": "Hooks and straps to attach torso armor.", "flag_restriction": [ "ABLATIVE_EXOSKELETON_TORSO" ], + "max_contains_weight": "21910 g", + "max_contains_volume": "10610 ml", + "max_item_length": "30 cm", "moves": 200 }, { @@ -48,6 +56,9 @@ "ablative": true, "description": "Hooks and straps to attach arms armor.", "flag_restriction": [ "ABLATIVE_EXOSKELETON_ARMS" ], + "max_contains_weight": "7310 g", + "max_contains_volume": "3610 ml", + "max_item_length": "30 cm", "moves": 200 }, { @@ -55,6 +66,9 @@ "ablative": true, "description": "Hooks and straps to attach legs armor.", "flag_restriction": [ "ABLATIVE_EXOSKELETON_LEGS" ], + "max_contains_weight": "7310 g", + "max_contains_volume": "3610 ml", + "max_item_length": "30 cm", "moves": 200 } ] @@ -64,7 +78,7 @@ "id": "depowered_armor", "type": "TOOL_ARMOR", "name": { "str": "salvaged exoskeleton" }, - "description": "TBI", + "description": "A combat exoskeleton with the motors and actuators removed, you could wear it for its protective suit and and it doesn't impede your movements but the frame is still there and make it impossible to wear armor on top of it. The hooks and straps are still there and you could attach armor parts to it but doing so without the assistive strength of the exoskeleton would be foolish.", "weight": "16000 g", "volume": "3000 ml", "delete": { "flags": [ "COMBAT_TOGGLEABLE", "USE_UPS" ] }, @@ -72,7 +86,7 @@ { "layers": [ "SKINTIGHT", "NORMAL", "OUTER" ], "covers": [ "head", "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ], - "encumbrance": 30, + "encumbrance": 5, "coverage": 100, "material": [ { "type": "lycra", "thickness": 0.2 }, @@ -119,7 +133,7 @@ ], "use_action": { "type": "transform", - "msg": "OS booting sequnce initiated\nLiquid cooling system engaged\nRespiration system engaged\nExoskeleton engaged\n booting sequence terminated, all systems nominal.", + "msg": "Exoskeleton boot sequence initiated\nLiquid cooling system engaged\nAtmospheric scrubber system engaged\nMotors engaged\nBoot sequence terminated, all systems nominal.", "target": "power_armor_heavy_on", "active": true, "need_charges": 1, @@ -187,7 +201,7 @@ ], "use_action": { "type": "transform", - "msg": "OS booting sequnce initiated\nLiquid cooling system engaged\nRespiration system engaged\nExoskeleton engaged\n booting sequence terminated, all systems nominal.", + "msg": "Exoskeleton boot sequence initiated\nLiquid cooling system engaged\nAtmospheric scrubber system engaged\nMotors engaged\nBoot sequence terminated, all systems nominal.", "target": "power_armor_basic_on", "active": true, "need_charges": 1, @@ -256,7 +270,7 @@ ], "use_action": { "type": "transform", - "msg": "OS booting sequnce initiated\nLiquid cooling system engaged\nRespiration system engaged\nExoskeleton engaged\n booting sequence terminated, all systems nominal.", + "msg": "Exoskeleton boot sequence initiated\nLiquid cooling system engaged\nAtmospheric scrubber system engaged\nMotors engaged\nBoot sequence terminated, all systems nominal.", "target": "power_armor_light_on", "active": true, "need_charges": 1, @@ -319,7 +333,7 @@ "armor": [ { "covers": [ "head" ], - "encumbrance": 30, + "encumbrance": 20, "coverage": 100, "material": [ { "type": "ceramic", "covered_by_mat": 95, "thickness": 25 }, @@ -339,7 +353,7 @@ "armor": [ { "covers": [ "head" ], - "encumbrance": 30, + "encumbrance": 15, "coverage": 100, "material": [ { "type": "ceramic", "covered_by_mat": 95, "thickness": 20 }, @@ -359,7 +373,7 @@ "armor": [ { "covers": [ "head" ], - "encumbrance": 30, + "encumbrance": 10, "coverage": 100, "material": [ { "type": "ceramic", "covered_by_mat": 95, "thickness": 15 }, @@ -370,16 +384,16 @@ }, { "copy-from": "exoskeleton_helmet", - "id": "exoskeleton_helmet_customized", + "id": "exoskeleton_helmet_plate", "type": "ARMOR", - "name": "heavy exoskeleton helmet", + "name": "plate exoskeleton helmet", "description": "This armor looks like it would fit a giant knight. The hooks and straps indicate that this is meant to be attached to an exoskeleton.", "weight": "7300 g", "volume": "3600 ml", "armor": [ { "covers": [ "head" ], - "encumbrance": 30, + "encumbrance": 1, "coverage": 100, "material": [ { "type": "qt_steel_chain", "thickness": 1.2 }, { "type": "qt_steel", "thickness": 6, "covered_by_mat": 95 } ] } @@ -390,6 +404,7 @@ "type": "ARMOR", "category": "armor", "name": "abstract exoskeleton torso armor", + "symbol": "[", "price": 60000, "price_postapoc": 5000, "flags": [ "ABLATIVE_EXOSKELETON_TORSO", "CANT_WEAR", "OUTER" ], @@ -406,7 +421,7 @@ "armor": [ { "covers": [ "torso" ], - "encumbrance": 30, + "encumbrance": 20, "coverage": 100, "material": [ { "type": "ceramic", "covered_by_mat": 95, "thickness": 25 }, @@ -426,7 +441,7 @@ "armor": [ { "covers": [ "torso" ], - "encumbrance": 30, + "encumbrance": 15, "coverage": 100, "material": [ { "type": "ceramic", "covered_by_mat": 95, "thickness": 20 }, @@ -446,7 +461,7 @@ "armor": [ { "covers": [ "torso" ], - "encumbrance": 30, + "encumbrance": 10, "coverage": 100, "material": [ { "type": "ceramic", "covered_by_mat": 95, "thickness": 15 }, @@ -457,16 +472,16 @@ }, { "copy-from": "exoskeleton_torso", - "id": "exoskeleton_torso_customized", + "id": "exoskeleton_torso_plate", "type": "ARMOR", - "name": "heavy exoskeleton torso", + "name": "plate exoskeleton torso", "description": "This armor looks like it would fit a giant knight. The hooks and straps indicate that this is meant to be attached to an exoskeleton.", "weight": "7300 g", "volume": "3600 ml", "armor": [ { "covers": [ "torso" ], - "encumbrance": 30, + "encumbrance": 1, "coverage": 100, "material": [ { "type": "qt_steel_chain", "thickness": 1.2 }, { "type": "qt_steel", "thickness": 6, "covered_by_mat": 95 } ] } @@ -477,6 +492,7 @@ "type": "ARMOR", "category": "armor", "name": "abstract exoskeleton arm armor", + "symbol": "[", "price": 60000, "price_postapoc": 5000, "flags": [ "ABLATIVE_EXOSKELETON_ARMS", "CANT_WEAR", "OUTER" ], @@ -493,7 +509,7 @@ "armor": [ { "covers": [ "arm_l", "arm_r", "hand_l", "hand_r" ], - "encumbrance": 30, + "encumbrance": 20, "coverage": 100, "material": [ { "type": "ceramic", "covered_by_mat": 95, "thickness": 12.5 }, @@ -513,7 +529,7 @@ "armor": [ { "covers": [ "arm_l", "arm_r", "hand_l", "hand_r" ], - "encumbrance": 30, + "encumbrance": 15, "coverage": 100, "material": [ { "type": "ceramic", "covered_by_mat": 95, "thickness": 10 }, @@ -533,7 +549,7 @@ "armor": [ { "covers": [ "arm_l", "arm_r", "hand_l", "hand_r" ], - "encumbrance": 30, + "encumbrance": 10, "coverage": 100, "material": [ { "type": "ceramic", "covered_by_mat": 95, "thickness": 7.5 }, @@ -544,16 +560,16 @@ }, { "copy-from": "exoskeleton_arms", - "id": "exoskeleton_arms_customized", + "id": "exoskeleton_arms_plate", "type": "ARMOR", - "name": "heavy exoskeleton arms", + "name": "plate exoskeleton arms", "description": "This armor looks like it would fit a giant knight. The hooks and straps indicate that this is meant to be attached to an exoskeleton.", "weight": "7300 g", "volume": "3600 ml", "armor": [ { "covers": [ "arm_l", "arm_r", "hand_l", "hand_r" ], - "encumbrance": 30, + "encumbrance": 1, "coverage": 100, "material": [ { "type": "qt_steel_chain", "thickness": 1.2 }, { "type": "qt_steel", "thickness": 2, "covered_by_mat": 95 } ] } @@ -564,6 +580,7 @@ "type": "ARMOR", "category": "armor", "name": "abstract exoskeleton leg armor", + "symbol": "[", "price": 60000, "price_postapoc": 5000, "flags": [ "ABLATIVE_EXOSKELETON_LEGS", "CANT_WEAR", "OUTER" ] @@ -579,7 +596,7 @@ "armor": [ { "covers": [ "leg_l", "leg_r", "foot_l", "foot_r" ], - "encumbrance": 30, + "encumbrance": 20, "coverage": 100, "material": [ { "type": "ceramic", "covered_by_mat": 95, "thickness": 12.5 }, @@ -599,7 +616,7 @@ "armor": [ { "covers": [ "leg_l", "leg_r", "foot_l", "foot_r" ], - "encumbrance": 30, + "encumbrance": 15, "coverage": 100, "material": [ { "type": "ceramic", "covered_by_mat": 95, "thickness": 10 }, @@ -619,7 +636,7 @@ "armor": [ { "covers": [ "leg_l", "leg_r", "foot_l", "foot_r" ], - "encumbrance": 30, + "encumbrance": 10, "coverage": 100, "material": [ { "type": "ceramic", "covered_by_mat": 95, "thickness": 7.5 }, @@ -630,16 +647,16 @@ }, { "copy-from": "exoskeleton_legs", - "id": "exoskeleton_legs_customized", + "id": "exoskeleton_legs_plate", "type": "ARMOR", - "name": "heavy exoskeleton legs", + "name": "plate exoskeleton legs", "description": "This armor looks like it would fit a giant knight. The hooks and straps indicate that this is meant to be attached to an exoskeleton.", "weight": "7300 g", "volume": "3600 ml", "armor": [ { "covers": [ "leg_l", "leg_r", "foot_l", "foot_r" ], - "encumbrance": 30, + "encumbrance": 1, "coverage": 100, "material": [ { "type": "qt_steel_chain", "thickness": 1.2 }, { "type": "qt_steel", "thickness": 3, "covered_by_mat": 95 } ] } diff --git a/data/json/recipes/armor/power_armor.json b/data/json/recipes/armor/power_armor.json index 3477786f3bbe4..1d834aa80e67d 100644 --- a/data/json/recipes/armor/power_armor.json +++ b/data/json/recipes/armor/power_armor.json @@ -1,9 +1,9 @@ [ { - "copy-from": "", "type": "recipe", + "category": "CC_ARMOR", "subcategory": "CSC_ARMOR_HEAD", - "result": "exoskeleton_torso_heavy", + "result": "exoskeleton_torso_plate", "difficulty": 8, "skill_used": "fabrication", "book_learn": [ [ "textbook_armwest", 7 ] ], @@ -20,28 +20,28 @@ "using": [ [ "blacksmithing_standard", 3 ], [ "mc_steel_standard", 1 ], [ "armor_chainmail_assembling", 1 ] ] }, { + "copy-from": "exoskeleton_torso_plate", "type": "recipe", - "category": "CC_ARMOR", "subcategory": "CSC_ARMOR_TORSO", - "result": "exoskeleton_helmet_heavy", + "result": "exoskeleton_helmet_plate", "time": "12 d 15 h 36 m", "tools": [ [ [ "hotcut", -1 ] ], [ [ "metal_tank", -1 ] ], [ [ "water", -120 ] ] ], "using": [ [ "blacksmithing_standard", 20 ], [ "mc_steel_standard", 5 ], [ "armor_chainmail_assembling", 1 ] ] }, { - "copy-from": "", + "copy-from": "exoskeleton_torso_plate", "type": "recipe", "subcategory": "CSC_ARMOR_ARMS", - "result": "exoskeleton_arms_heavy", + "result": "exoskeleton_arms_plate", "time": "8 d 5 h 8 m", "tools": [ [ [ "hotcut", -1 ] ], [ [ "metal_tank", -1 ] ], [ [ "water", -120 ] ] ], "using": [ [ "blacksmithing_standard", 12 ], [ "mc_steel_standard", 3 ], [ "armor_chainmail_assembling", 1 ] ] }, { - "copy-from": "", + "copy-from": "exoskeleton_torso_plate", "type": "recipe", "subcategory": "CSC_ARMOR_LEGS", - "result": "exoskeleton_legs_heavy", + "result": "exoskeleton_legs_plate", "time": "8 d 5 h 8 m", "tools": [ [ [ "hotcut", -1 ] ], [ [ "metal_tank", -1 ] ], [ [ "water", -120 ] ] ], "using": [ [ "blacksmithing_standard", 12 ], [ "mc_steel_standard", 3 ], [ "armor_chainmail_assembling", 1 ] ] From a69fbe14edd8ca32464f80ebafe29a881d1f4812 Mon Sep 17 00:00:00 2001 From: Kwenchin Date: Fri, 8 Dec 2023 15:12:54 +0100 Subject: [PATCH 14/73] Fixed spelling error "micromotors" to "micro motors". --- data/json/items/armor/power_armor.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/data/json/items/armor/power_armor.json b/data/json/items/armor/power_armor.json index ee4964a4c2ac3..f7c2972cf048c 100644 --- a/data/json/items/armor/power_armor.json +++ b/data/json/items/armor/power_armor.json @@ -108,7 +108,7 @@ "id": "power_armor_heavy", "type": "TOOL_ARMOR", "name": { "str": "combat exoskeleton mk.1" }, - "description": "Nicknamed 'Tank Suits' for the heavy armor they allow their users to carry these combat exoskeletons are part of the first generation of exoskeletons developed by the army following the release of utility versions released to the civilian market a few years before. The exoskeleton is actually composed of a form-fitting liquid cooling garment, a protective layer reminiscent of a flight suit, enclosed by a transparent mask, and the exoskeleton itself, micromotors and actuators on a complex frame with hooks and straps to attach specialized armor onto. The exoskeleton is off and makes movement difficult.", + "description": "Nicknamed 'Tank Suits' for the heavy armor they allow their users to carry these combat exoskeletons are part of the first generation of exoskeletons developed by the army following the release of utility versions released to the civilian market a few years before. The exoskeleton is actually composed of a form-fitting liquid cooling garment, a protective layer reminiscent of a flight suit, enclosed by a transparent mask, and the exoskeleton itself, micro motors and actuators on a complex frame with hooks and straps to attach specialized armor onto. The exoskeleton is off and makes movement difficult.", "weight": "18000 g", "volume": "3500 ml", "armor": [ @@ -145,7 +145,7 @@ "id": "power_armor_heavy_on", "type": "TOOL_ARMOR", "name": { "str": "combat exoskeleton mk.1 (on)", "str_pl": "combat exoskeletons mk.1 (on)" }, - "description": "Nicknamed 'Tank Suits' for the heavy armor they allow their users to carry these combat exoskeletons are part of the first generation of exoskeletons developed by the army following the release of utility versions released to the civilian market a few years before. The exoskeleton is actually composed of a form-fitting liquid cooling garment, a protective layer reminiscent of a flight suit, enclosed by a transparent mask, and the exoskeleton itself, micromotors and actuators on a complex frame with hooks and straps to attach specialized armor onto. The exoskeleton is on and its components whirring softly as you move.", + "description": "Nicknamed 'Tank Suits' for the heavy armor they allow their users to carry these combat exoskeletons are part of the first generation of exoskeletons developed by the army following the release of utility versions released to the civilian market a few years before. The exoskeleton is actually composed of a form-fitting liquid cooling garment, a protective layer reminiscent of a flight suit, enclosed by a transparent mask, and the exoskeleton itself, micro motors and actuators on a complex frame with hooks and straps to attach specialized armor onto. The exoskeleton is on and its components whirring softly as you move.", "power_draw": "100 W", "weight_capacity_modifier": 1.8, "revert_to": "power_armor_heavy", @@ -176,7 +176,7 @@ "id": "power_armor_basic", "type": "TOOL_ARMOR", "name": { "str": "combat exoskeleton mk.2" }, - "description": "This combat exoskeleton is of second generation, designed to be lighter, less encumbering and more energy efficient while still giving the user greatly increased carry capacity.The exoskeleton is actually composed of a form-fitting liquid cooling garment, a protective layer reminiscent of a flight suit, enclosed by a transparent mask, and the exoskeleton itself, micromotors and actuators on a complex frame with hooks and straps to attach specialized armor onto. The exoskeleton is off and makes movement difficult.", + "description": "This combat exoskeleton is of second generation, designed to be lighter, less encumbering and more energy efficient while still giving the user greatly increased carry capacity.The exoskeleton is actually composed of a form-fitting liquid cooling garment, a protective layer reminiscent of a flight suit, enclosed by a transparent mask, and the exoskeleton itself, micro motors and actuators on a complex frame with hooks and straps to attach specialized armor onto. The exoskeleton is off and makes movement difficult.", "weight": "16000 g", "volume": "3000 ml", "armor": [ @@ -214,7 +214,7 @@ "type": "TOOL_ARMOR", "looks_like": "power_armor_basic", "name": { "str": "combat exoskeleton (on)", "str_pl": "combat exoskeletons (on)" }, - "description": "This combat exoskeleton is of second generation, designed to be lighter, less encumbering and more energy efficient while still giving the user greatly increased carry capacity. The exoskeleton is actually composed of a form-fitting liquid cooling garment, a protective layer reminiscent of a flight suit, enclosed by a transparent mask, and the exoskeleton itself, micromotors and actuators on a complex frame with hooks and straps to attach specialized armor onto. The exoskeleton is on and its components whirring softly as you move.", + "description": "This combat exoskeleton is of second generation, designed to be lighter, less encumbering and more energy efficient while still giving the user greatly increased carry capacity. The exoskeleton is actually composed of a form-fitting liquid cooling garment, a protective layer reminiscent of a flight suit, enclosed by a transparent mask, and the exoskeleton itself, micro motors and actuators on a complex frame with hooks and straps to attach specialized armor onto. The exoskeleton is on and its components whirring softly as you move.", "power_draw": "84 kW", "weight_capacity_modifier": 1.6, "revert_to": "power_armor_basic", @@ -245,7 +245,7 @@ "id": "power_armor_light", "type": "TOOL_ARMOR", "name": { "str": "combat exoskeleton mk.3" }, - "description": "Part of the latest generation, these combat exoskeletons were designed for actual production and usage, praised for their responsiveness and light weight compared to their predecessors despite the slight sacrifice in carry capacity. The exoskeleton is actually composed of a form-fitting liquid cooling garment, a protective layer reminiscent of a flight suit, enclosed by a transparent mask, and the exoskeleton itself, micromotors and actuators on a complex frame with hooks and straps to attach specialized armor onto. The exoskeleton is off and makes movement difficult.", + "description": "Part of the latest generation, these combat exoskeletons were designed for actual production and usage, praised for their responsiveness and light weight compared to their predecessors despite the slight sacrifice in carry capacity. The exoskeleton is actually composed of a form-fitting liquid cooling garment, a protective layer reminiscent of a flight suit, enclosed by a transparent mask, and the exoskeleton itself, micro motors and actuators on a complex frame with hooks and straps to attach specialized armor onto. The exoskeleton is off and makes movement difficult.", "weight": "14000 g", "volume": "2500 ml", "armor": [ @@ -282,7 +282,7 @@ "id": "power_armor_light_on", "type": "TOOL_ARMOR", "name": { "str": "light combat exoskeleton (on)" }, - "description": "Part of the latest generation, these combat exoskeletons were designed for actual production and usage, praised for their responsiveness and light weight compared to their predecessors despite the slight sacrifice in carry capacity. The exoskeleton is actually composed of a form-fitting liquid cooling garment, a protective layer reminiscent of a flight suit, enclosed by a transparent mask, and the exoskeleton itself, micromotors and actuators attached to a frame with a complex system of hooks and straps to attach specialized armor onto. The exoskeleton is on and its components whirring softly as you move.", + "description": "Part of the latest generation, these combat exoskeletons were designed for actual production and usage, praised for their responsiveness and light weight compared to their predecessors despite the slight sacrifice in carry capacity. The exoskeleton is actually composed of a form-fitting liquid cooling garment, a protective layer reminiscent of a flight suit, enclosed by a transparent mask, and the exoskeleton itself, micro motors and actuators attached to a frame with a complex system of hooks and straps to attach specialized armor onto. The exoskeleton is on and its components whirring softly as you move.", "power_draw": "70 W", "weight_capacity_modifier": 1.4, "revert_to": "power_armor_light", From 702e3405fe06922274172f7427d6f448ff0ea5b8 Mon Sep 17 00:00:00 2001 From: Kwenchin Date: Wed, 10 Jan 2024 14:07:12 +0100 Subject: [PATCH 15/73] NO_UNLOAD flag removed from abstract exoskeleton Users can now see/remove etc. the different exoskeleton attachments --- data/json/items/armor/power_armor.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/json/items/armor/power_armor.json b/data/json/items/armor/power_armor.json index f7c2972cf048c..639913cdae175 100644 --- a/data/json/items/armor/power_armor.json +++ b/data/json/items/armor/power_armor.json @@ -7,7 +7,7 @@ "symbol": "[", "price": 10000000, "price_postapoc": 15000, - "flags": [ "STURDY", "WATERPROOF", "RAINPROOF", "SUN_GLASSES", "USE_UPS", "NO_UNLOAD", "COMBAT_TOGGLEABLE" ], + "flags": [ "STURDY", "WATERPROOF", "RAINPROOF", "SUN_GLASSES", "USE_UPS", "COMBAT_TOGGLEABLE" ], "relic_data": { "passive_effects": [ { "id": "ench_climate_control_all" } ] }, "warmth": 40, "environmental_protection": 10, From c0177700a8e9188bc03467aea9051ff22678fa7a Mon Sep 17 00:00:00 2001 From: Kwenchin Date: Wed, 10 Jan 2024 14:37:57 +0100 Subject: [PATCH 16/73] Added a volume_encumber_modifier of 0 to exoskeleton pockets to avoid insane amounts of encumbrance when wearing the armor parts This may be the final commit, everything looks like it works, finally. I'm probably going to polish everything up, adjust values and changes a few descriptions. --- data/json/items/armor/power_armor.json | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/data/json/items/armor/power_armor.json b/data/json/items/armor/power_armor.json index 639913cdae175..847e46cb4f586 100644 --- a/data/json/items/armor/power_armor.json +++ b/data/json/items/armor/power_armor.json @@ -15,6 +15,7 @@ "pocket_data": [ { "pocket_type": "CONTAINER", + "volume_encumber_modifier": 0, "description": "Compartment for a UPS.", "flag_restriction": [ "IS_UPS" ], "max_contains_weight": "2000 g", @@ -24,6 +25,7 @@ }, { "pocket_type": "CONTAINER", + "volume_encumber_modifier": 0, "description": "Compartment for a UPS.", "flag_restriction": [ "IS_UPS" ], "max_contains_weight": "2000 g", @@ -33,16 +35,18 @@ }, { "pocket_type": "CONTAINER", + "volume_encumber_modifier": 0, "ablative": true, "description": "Hooks and straps to attach head armor.", "flag_restriction": [ "ABLATIVE_EXOSKELETON_HEAD" ], - "max_contains_weight": "7000 g", - "max_contains_volume": "3110 ml", + "max_contains_weight": "7300 g", + "max_contains_volume": "3600 ml", "max_item_length": "30 cm", "moves": 200 }, { "pocket_type": "CONTAINER", + "volume_encumber_modifier": 0, "ablative": true, "description": "Hooks and straps to attach torso armor.", "flag_restriction": [ "ABLATIVE_EXOSKELETON_TORSO" ], @@ -53,6 +57,7 @@ }, { "pocket_type": "CONTAINER", + "volume_encumber_modifier": 0, "ablative": true, "description": "Hooks and straps to attach arms armor.", "flag_restriction": [ "ABLATIVE_EXOSKELETON_ARMS" ], @@ -63,6 +68,7 @@ }, { "pocket_type": "CONTAINER", + "volume_encumber_modifier": 0, "ablative": true, "description": "Hooks and straps to attach legs armor.", "flag_restriction": [ "ABLATIVE_EXOSKELETON_LEGS" ], From d20685276601048157529288c2ccb2d8681907f3 Mon Sep 17 00:00:00 2001 From: BalthazarArgall Date: Fri, 8 Mar 2024 15:20:49 +0100 Subject: [PATCH 17/73] reworked, tested and polished the final version --- data/json/flags.json | 24 +- .../itemgroups/Clothing_Gear/clothing.json | 2 - data/json/itemgroups/Labs/lab_security.json | 21 +- data/json/itemgroups/main.json | 13 +- data/json/items/armor/combat_exoskeleton.json | 158 +++++ .../items/armor/combat_exoskeleton_armor.json | 78 ++ data/json/items/armor/power_armor.json | 671 ------------------ .../lab_nested_security.json | 4 +- .../migration_items.json | 80 +++ .../armor/combat_exoskeleton_armor.json | 27 + data/json/recipes/armor/power_armor.json | 49 -- data/json/recipes/nested.json | 40 +- data/json/recipes/recipe_deconstruction.json | 21 +- data/json/statistics.json | 2 +- 14 files changed, 393 insertions(+), 797 deletions(-) create mode 100644 data/json/items/armor/combat_exoskeleton.json create mode 100644 data/json/items/armor/combat_exoskeleton_armor.json delete mode 100644 data/json/items/armor/power_armor.json create mode 100644 data/json/recipes/armor/combat_exoskeleton_armor.json delete mode 100644 data/json/recipes/armor/power_armor.json diff --git a/data/json/flags.json b/data/json/flags.json index 6029d00d75c08..1c32999539b41 100644 --- a/data/json/flags.json +++ b/data/json/flags.json @@ -35,28 +35,10 @@ "restriction": "Item must be a chainmail compatible armor piece" }, { - "id": "ABLATIVE_EXOSKELETON_HEAD", + "id": "ABLATIVE_EXOSKELETON_ARMOR", "type": "json_flag", - "info": "This armor part will attach to a combat exoskeleton frame", - "restriction": "Item must be combat exoskeleton head armor" - }, - { - "id": "ABLATIVE_EXOSKELETON_TORSO", - "type": "json_flag", - "info": "This armor part will attach to a combat exoskeleton frame", - "restriction": "Item must be combat exoskeleton torso armor" - }, - { - "id": "ABLATIVE_EXOSKELETON_ARMS", - "type": "json_flag", - "info": "This armor part will attach to a combat exoskeleton frame", - "restriction": "Item must be combat exoskeleton arm armor" - }, - { - "id": "ABLATIVE_EXOSKELETON_LEGS", - "type": "json_flag", - "info": "This armor part will attach to a combat exoskeleton frame", - "restriction": "Item must be combat exoskeleton leg armor" + "info": "This armor will attach to a combat exoskeleton", + "restriction": "Item must be a combat exoskeleton armor" }, { "id": "ABLATIVE_LARGE", diff --git a/data/json/itemgroups/Clothing_Gear/clothing.json b/data/json/itemgroups/Clothing_Gear/clothing.json index 293f956b8681a..5d5d84c2fe010 100644 --- a/data/json/itemgroups/Clothing_Gear/clothing.json +++ b/data/json/itemgroups/Clothing_Gear/clothing.json @@ -2936,8 +2936,6 @@ [ "chestguard_hard", 20 ], [ "armguard_hard", 20 ], [ "legguard_hard", 15 ], - [ "power_armor_frame", 4 ], - [ "power_armor_generator", 4 ], [ "elbow_pads", 40 ], [ "knee_pads", 40 ], [ "mask_bal", 5 ], diff --git a/data/json/itemgroups/Labs/lab_security.json b/data/json/itemgroups/Labs/lab_security.json index d6fbf55876f9d..8e437cd20e29a 100644 --- a/data/json/itemgroups/Labs/lab_security.json +++ b/data/json/itemgroups/Labs/lab_security.json @@ -8,30 +8,15 @@ { "distribution": [ { - "collection": [ - { "item": "power_armor_frame" }, - { "item": "power_armor_generator" }, - { "item": "power_armor_basic" }, - { "item": "power_armor_helmet_basic" } - ], + "collection": [ { "item": "combat_exoskeleton_medium" }, { "item": "combat_exoskeleton_armor_military" } ], "prob": 30 }, { - "collection": [ - { "item": "power_armor_frame" }, - { "item": "power_armor_generator" }, - { "item": "power_armor_heavy" }, - { "item": "power_armor_helmet_heavy" } - ], + "collection": [ { "item": "combat_exoskeleton_heavy" }, { "item": "combat_exoskeleton_armor_military" } ], "prob": 10 }, { - "collection": [ - { "item": "power_armor_frame" }, - { "item": "power_armor_generator" }, - { "item": "power_armor_helmet_light" }, - { "item": "power_armor_light" } - ], + "collection": [ { "item": "combat_exoskeleton_light" }, { "item": "combat_exoskeleton_armor_military" } ], "prob": 55 }, { diff --git a/data/json/itemgroups/main.json b/data/json/itemgroups/main.json index e16f9ba2a62e8..c8b93dcc5f913 100644 --- a/data/json/itemgroups/main.json +++ b/data/json/itemgroups/main.json @@ -28,17 +28,14 @@ { "item": "plasma_rifle", "prob": 10 }, { "item": "portal", "prob": 10 }, { "item": "atomic_coffeepot", "prob": 10 }, - { "item": "power_armor_basic", "prob": 10 }, - { "item": "power_armor_frame", "prob": 10 }, - { "item": "power_armor_heavy", "prob": 10 }, - { "item": "power_armor_helmet_basic", "prob": 10 }, - { "item": "power_armor_helmet_heavy", "prob": 10 }, - { "item": "power_armor_helmet_light", "prob": 10 }, + { "item": "combat_exoskeleton_heavy", "prob": 10 }, + { "item": "combat_exoskeleton_medium", "prob": 10 }, + { "item": "combat_exoskeleton_light", "prob": 10 }, + { "item": "combat_exoskeleton_armor_military", "prob": 10 }, + { "item": "rm13_armor", "prob": 10 }, { "item": "high_density_capacitor", "prob": 10 }, { "item": "beam_scatterer", "prob": 10 }, - { "item": "power_armor_light", "prob": 10 }, { "item": "rm11b_sniper_rifle", "prob": 10 }, - { "item": "rm13_armor", "prob": 10 }, { "item": "v29", "prob": 10 } ] }, diff --git a/data/json/items/armor/combat_exoskeleton.json b/data/json/items/armor/combat_exoskeleton.json new file mode 100644 index 0000000000000..8369aaaeecb9b --- /dev/null +++ b/data/json/items/armor/combat_exoskeleton.json @@ -0,0 +1,158 @@ +[ + { + "id": "combat_exoskeleton_salvaged", + "category": "armor", + "type": "ARMOR", + "name": { "str": "salvaged combat exoskeleton", "str_pl": "salvaged combat exoskeletons" }, + "description": "This exoskeleton has been severely damaged and its electronic parts are completely fried. You could wear it but the now inactive motors will make moving around very difficult. Utilizing a variety of webbing, magnets, and clips, specialized armor can be attached to the exoskeleton as one sees fit.", + "looks_like": "power_armor_heavy", + "symbol": "[", + "price": 500000, + "price_postapoc": 10000, + "volume": "16000 ml", + "weight": "6350 g", + "flags": [ "STURDY" ], + "armor": [ + { + "layers": [ "OUTER" ], + "covers": [ "torso", "arm_l", "arm_r", "leg_l", "leg_r" ], + "encumbrance": 10, + "coverage": 10, + "material": [ + { "type": "steel", "thickness": 5, "covered_by_mat": 50 }, + { "type": "aluminum", "thickness": 5, "covered_by_mat": 50 }, + { "type": "kevlar_rigid", "thickness": 5, "covered_by_mat": 50 }, + { "type": "nylon", "thickness": 1, "covered_by_mat": 100 } + ] + } + ], + "pocket_data": [ + { + "pocket_type": "CONTAINER", + "volume_encumber_modifier": 0, + "description": "Compartment for a UPS.", + "flag_restriction": [ "IS_UPS" ], + "max_contains_volume": "4000 ml", + "moves": 500 + }, + { + "pocket_type": "CONTAINER", + "volume_encumber_modifier": 0, + "description": "Compartment for a UPS.", + "flag_restriction": [ "IS_UPS" ], + "max_contains_volume": "4000 ml", + "moves": 500 + }, + { + "pocket_type": "CONTAINER", + "volume_encumber_modifier": 0, + "ablative": true, + "description": "Hooks and straps to attach exoskeleton armor.", + "flag_restriction": [ "ABLATIVE_EXOSKELETON_ARMOR" ], + "max_contains_volume": "30000 ml", + "max_item_length": "100 cm", + "moves": 3000 + } + ] + }, + { + "id": "combat_exoskeleton_heavy", + "copy-from": "combat_exoskeleton_salvaged", + "type": "TOOL_ARMOR", + "name": { "str": "combat exoskeleton mk1", "str_pl": "combat exoskeletons mk1" }, + "description": "Deployed in limited numbers for testing but deemed too expensive for mass production, this exoskeleton focuses on carry weight over fine motor movement. Utilizing a variety of webbing, magnets, and clips, specialized armor can be attached to the exoskeleton as one sees fit.", + "looks_like": "power_armor_heavy", + "price": 5000000, + "price_postapoc": 100000, + "extend": { "flags": [ "COMBAT_TOGGLEABLE", "USE_UPS" ] }, + "ammo": "battery", + "use_action": { + "type": "transform", + "msg": "The exoskeleton turns on, it feels like a great weight has been lifted off your shoulders and the motors whirr softly as you move around.", + "target": "combat_exoskeleton_heavy_on", + "active": true, + "need_charges": 1, + "need_charges_msg": "The exoskeleton batteries are empty" + } + }, + { + "copy-from": "combat_exoskeleton_heavy", + "id": "combat_exoskeleton_heavy_on", + "type": "TOOL_ARMOR", + "name": { "str": "combat exoskeleton mk1 (on)", "str_pl": "combat exoskeletons mk1 (on)" }, + "proportional": { "encumbrance": 0.3 }, + "power_draw": "68 W", + "weight_capacity_modifier": 1.9, + "revert_to": "combat_exoskeleton_heavy", + "use_action": { + "type": "transform", + "menu_text": "Turn off", + "msg": "The exoskeleton turns off", + "target": "combat_exoskeleton_heavy" + } + }, + { + "copy-from": "combat_exoskeleton_heavy", + "id": "combat_exoskeleton_medium", + "type": "TOOL_ARMOR", + "name": { "str": "combat exoskeleton mk2", "str_pl": "combat exoskeletons mk2" }, + "description": "Improving over the first generation, this exoskeleton boasts increased nimbleness at the cost of some motor strength. Utilizing a variety of webbing, magnets, and clips, specialized armor can be attached to the exoskeleton as one sees fit.", + "looks_like": "power_armor_basic", + "use_action": { + "type": "transform", + "msg": "The exoskeleton turns on, it feels like a great weight has been lifted off your shoulders and the motors whirr softly as you move around.", + "target": "combat_exoskeleton_medium_on", + "active": true, + "need_charges": 1, + "need_charges_msg": "The exoskeleton batteries are empty" + } + }, + { + "copy-from": "combat_exoskeleton_medium", + "id": "combat_exoskeleton_medium_on", + "type": "TOOL_ARMOR", + "name": { "str": "combat exoskeleton mk2 (on)", "str_pl": "combat exoskeletons mk2 (on)" }, + "proportional": { "encumbrance": 0.2 }, + "power_draw": "54 W", + "weight_capacity_modifier": 1.6, + "revert_to": "combat_exoskeleton_medium", + "use_action": { + "type": "transform", + "menu_text": "Turn off", + "msg": "The exoskeleton turns off", + "target": "combat_exoskeleton_medium" + } + }, + { + "copy-from": "combat_exoskeleton_heavy", + "id": "combat_exoskeleton_light", + "type": "TOOL_ARMOR", + "name": { "str": "combat exoskeleton mk3", "str_pl": "combat exoskeletons mk3" }, + "description": "Designed for mass production and usage, this exoskeleton was praised for its responsiveness and light weight compared to its predecessors despite the sacrifice in carry capacity. Utilizing a variety of webbing, magnets, and clips, specialized armor can be attached to the exoskeleton as one sees fit.", + "looks_like": "power_armor_light", + "use_action": { + "type": "transform", + "msg": "The exoskeleton turns on, it feels like a great weight has been lifted off your shoulders and the motors whirr softly as you move around.", + "target": "combat_exoskeleton_light_on", + "active": true, + "need_charges": 1, + "need_charges_msg": "The exoskeleton batteries are empty" + } + }, + { + "copy-from": "combat_exoskeleton_light", + "id": "combat_exoskeleton_light_on", + "type": "TOOL_ARMOR", + "name": { "str": "combat exoskeletons mk3 (on)", "str_pl": "light combat exoskeletons mk3 (on)" }, + "proportional": { "encumbrance": 0.1 }, + "power_draw": "40 W", + "weight_capacity_modifier": 1.3, + "revert_to": "combat_exoskeleton_light", + "use_action": { + "type": "transform", + "menu_text": "Turn off", + "msg": "The exoskeleton turns off.", + "target": "combat_exoskeleton_light" + } + } +] diff --git a/data/json/items/armor/combat_exoskeleton_armor.json b/data/json/items/armor/combat_exoskeleton_armor.json new file mode 100644 index 0000000000000..248d74f63d26b --- /dev/null +++ b/data/json/items/armor/combat_exoskeleton_armor.json @@ -0,0 +1,78 @@ +[ + { + "id": "combat_exoskeleton_armor_military", + "type": "ARMOR", + "category": "armor", + "name": { "str": "combat exoskeleton military armor", "str_pl": "combat exoskeleton military armors" }, + "description": "Nicknamed 'Tank Suit' by soldiers, this armor is designed to absorb shrapnel and small caliber bullets on most of the users body. The awkward attachment points make this armor unusable by itself, it needs to be attached to a combat exoskeleton.", + "symbol": "[", + "looks_like": "ballistic_vest_heavy", + "price": 1600000, + "price_postapoc": 32000, + "volume": "29500 ml", + "weight": "11800 g", + "flags": [ "CANT_WEAR", "STURDY", "ABLATIVE_EXOSKELETON_ARMOR" ], + "warmth": 20, + "environmental_protection": 1, + "armor": [ + { + "layers": [ "OUTER" ], + "covers": [ "torso" ], + "encumbrance": 9, + "coverage": 85, + "material": [ + { "type": "kevlar_layered", "thickness": 4.4 }, + { "type": "nylon", "thickness": 2 }, + { "type": "qt_steel", "thickness": 2.3 } + ] + }, + { + "layers": [ "OUTER" ], + "covers": [ "arm_l", "arm_r", "leg_l", "leg_r" ], + "encumbrance": 6, + "coverage": 85, + "material": [ { "type": "kevlar_layered", "thickness": 4.4 }, { "type": "nylon", "thickness": 1 } ] + } + ] + }, + { + "id": "combat_exoskeleton_armor_lc_plate", + "copy-from": "armor_lc_plate", + "type": "ARMOR", + "name": { "str": "combat exoskeleton mild steel plate armor", "str_pl": "combat exoskeleton mild steel plate armors" }, + "description": "This plate armor has oddly shaped plates and articulations and was specially made to accomodate and take advantage of the exoskeleton underneath. The awkward attachment points make this armor unusable by itself, it needs to be attached to a combat exoskeleton.", + "extend": { "flags": [ "CANT_WEAR", "ABLATIVE_EXOSKELETON_ARMOR" ] } + }, + { + "id": "combat_exoskeleton_armor_mc_plate", + "copy-from": "combat_exoskeleton_armor_lc_plate", + "type": "ARMOR", + "name": { "str": "combat exoskeleton medium steel plate armor", "str_pl": "combat exoskeleton medium steel plate armors" }, + "description": "This plate armor has oddly shaped plates and articulations and was specially made to accomodate and take advantage of the exoskeleton underneath. The awkward attachment points make this armor unusable by itself, it needs to be attached to a combat exoskeleton.", + "replace_materials": { "lc_steel": "mc_steel", "lc_steel_chain": "mc_steel_chain" } + }, + { + "id": "combat_exoskeleton_armor_hc_plate", + "copy-from": "combat_exoskeleton_armor_lc_plate", + "type": "ARMOR", + "name": { "str": "combat exoskeleton high steel plate armor", "str_pl": "combat exoskeleton high steel plate armors" }, + "description": "This plate armor has oddly shaped plates and articulations and was specially made to accomodate and take advantage of the exoskeleton underneath. The awkward attachment points make this armor unusable by itself, it needs to be attached to a combat exoskeleton.", + "replace_materials": { "mc_steel": "hc_steel", "mc_steel_chain": "hc_steel_chain" } + }, + { + "id": "combat_exoskeleton_armor_ch_plate", + "copy-from": "combat_exoskeleton_armor_lc_plate", + "type": "ARMOR", + "name": { "str": "combat exoskeleton hardened plate armor", "str_pl": "combat exoskeleton hardened plate armors" }, + "description": "This plate armor has oddly shaped plates and articulations and was specially made to accomodate and take advantage of the exoskeleton underneath. The awkward attachment points make this armor unusable by itself, it needs to be attached to a combat exoskeleton.", + "replace_materials": { "lc_steel": "ch_steel", "lc_steel_chain": "ch_steel_chain" } + }, + { + "id": "combat_exoskeleton_armor_qt_plate", + "copy-from": "combat_exoskeleton_armor_lc_plate", + "type": "ARMOR", + "name": { "str": "combat exoskeleton tempered plate armor", "str_pl": "combat exoskeleton tempered plate armors" }, + "description": "This plate armor has oddly shaped plates and articulations and was specially made to accomodate and take advantage of the exoskeleton underneath. The awkward attachment points make this armor unusable by itself, it needs to be attached to a combat exoskeleton.", + "replace_materials": { "lc_steel": "qt_steel", "lc_steel_chain": "qt_steel_chain" } + } +] diff --git a/data/json/items/armor/power_armor.json b/data/json/items/armor/power_armor.json deleted file mode 100644 index 847e46cb4f586..0000000000000 --- a/data/json/items/armor/power_armor.json +++ /dev/null @@ -1,671 +0,0 @@ -[ - { - "abstract": "exoskeleton", - "type": "TOOL_ARMOR", - "category": "armor", - "name": { "str": "abstract exoskeleton" }, - "symbol": "[", - "price": 10000000, - "price_postapoc": 15000, - "flags": [ "STURDY", "WATERPROOF", "RAINPROOF", "SUN_GLASSES", "USE_UPS", "COMBAT_TOGGLEABLE" ], - "relic_data": { "passive_effects": [ { "id": "ench_climate_control_all" } ] }, - "warmth": 40, - "environmental_protection": 10, - "ammo": "battery", - "pocket_data": [ - { - "pocket_type": "CONTAINER", - "volume_encumber_modifier": 0, - "description": "Compartment for a UPS.", - "flag_restriction": [ "IS_UPS" ], - "max_contains_weight": "2000 g", - "max_contains_volume": "4510 ml", - "max_item_length": "30 cm", - "moves": 200 - }, - { - "pocket_type": "CONTAINER", - "volume_encumber_modifier": 0, - "description": "Compartment for a UPS.", - "flag_restriction": [ "IS_UPS" ], - "max_contains_weight": "2000 g", - "max_contains_volume": "4510 ml", - "max_item_length": "30 cm", - "moves": 200 - }, - { - "pocket_type": "CONTAINER", - "volume_encumber_modifier": 0, - "ablative": true, - "description": "Hooks and straps to attach head armor.", - "flag_restriction": [ "ABLATIVE_EXOSKELETON_HEAD" ], - "max_contains_weight": "7300 g", - "max_contains_volume": "3600 ml", - "max_item_length": "30 cm", - "moves": 200 - }, - { - "pocket_type": "CONTAINER", - "volume_encumber_modifier": 0, - "ablative": true, - "description": "Hooks and straps to attach torso armor.", - "flag_restriction": [ "ABLATIVE_EXOSKELETON_TORSO" ], - "max_contains_weight": "21910 g", - "max_contains_volume": "10610 ml", - "max_item_length": "30 cm", - "moves": 200 - }, - { - "pocket_type": "CONTAINER", - "volume_encumber_modifier": 0, - "ablative": true, - "description": "Hooks and straps to attach arms armor.", - "flag_restriction": [ "ABLATIVE_EXOSKELETON_ARMS" ], - "max_contains_weight": "7310 g", - "max_contains_volume": "3610 ml", - "max_item_length": "30 cm", - "moves": 200 - }, - { - "pocket_type": "CONTAINER", - "volume_encumber_modifier": 0, - "ablative": true, - "description": "Hooks and straps to attach legs armor.", - "flag_restriction": [ "ABLATIVE_EXOSKELETON_LEGS" ], - "max_contains_weight": "7310 g", - "max_contains_volume": "3610 ml", - "max_item_length": "30 cm", - "moves": 200 - } - ] - }, - { - "copy-from": "exoskeleton", - "id": "depowered_armor", - "type": "TOOL_ARMOR", - "name": { "str": "salvaged exoskeleton" }, - "description": "A combat exoskeleton with the motors and actuators removed, you could wear it for its protective suit and and it doesn't impede your movements but the frame is still there and make it impossible to wear armor on top of it. The hooks and straps are still there and you could attach armor parts to it but doing so without the assistive strength of the exoskeleton would be foolish.", - "weight": "16000 g", - "volume": "3000 ml", - "delete": { "flags": [ "COMBAT_TOGGLEABLE", "USE_UPS" ] }, - "armor": [ - { - "layers": [ "SKINTIGHT", "NORMAL", "OUTER" ], - "covers": [ "head", "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ], - "encumbrance": 5, - "coverage": 100, - "material": [ - { "type": "lycra", "thickness": 0.2 }, - { "type": "nomex", "thickness": 0.8 }, - { "type": "steel", "thickness": 25, "covered_by_mat": 10 } - ] - }, - { - "layers": [ "NORMAL" ], - "covers": [ "mouth", "eyes" ], - "encumbrance": 0, - "coverage": 100, - "material": [ { "type": "lvl4ballisticglass", "thickness": 2 } ] - } - ] - }, - { - "copy-from": "exoskeleton", - "id": "power_armor_heavy", - "type": "TOOL_ARMOR", - "name": { "str": "combat exoskeleton mk.1" }, - "description": "Nicknamed 'Tank Suits' for the heavy armor they allow their users to carry these combat exoskeletons are part of the first generation of exoskeletons developed by the army following the release of utility versions released to the civilian market a few years before. The exoskeleton is actually composed of a form-fitting liquid cooling garment, a protective layer reminiscent of a flight suit, enclosed by a transparent mask, and the exoskeleton itself, micro motors and actuators on a complex frame with hooks and straps to attach specialized armor onto. The exoskeleton is off and makes movement difficult.", - "weight": "18000 g", - "volume": "3500 ml", - "armor": [ - { - "layers": [ "SKINTIGHT", "NORMAL", "OUTER" ], - "covers": [ "head", "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ], - "encumbrance": 35, - "coverage": 100, - "material": [ - { "type": "lycra", "thickness": 0.2 }, - { "type": "nomex", "thickness": 0.8 }, - { "type": "steel", "thickness": 30, "covered_by_mat": 10 } - ] - }, - { - "layers": [ "NORMAL" ], - "covers": [ "mouth", "eyes" ], - "encumbrance": 0, - "coverage": 100, - "material": [ { "type": "lvl4ballisticglass", "thickness": 2 } ] - } - ], - "use_action": { - "type": "transform", - "msg": "Exoskeleton boot sequence initiated\nLiquid cooling system engaged\nAtmospheric scrubber system engaged\nMotors engaged\nBoot sequence terminated, all systems nominal.", - "target": "power_armor_heavy_on", - "active": true, - "need_charges": 1, - "need_charges_msg": "The exoskeleton batteries are empty" - } - }, - { - "copy-from": "power_armor_heavy", - "id": "power_armor_heavy_on", - "type": "TOOL_ARMOR", - "name": { "str": "combat exoskeleton mk.1 (on)", "str_pl": "combat exoskeletons mk.1 (on)" }, - "description": "Nicknamed 'Tank Suits' for the heavy armor they allow their users to carry these combat exoskeletons are part of the first generation of exoskeletons developed by the army following the release of utility versions released to the civilian market a few years before. The exoskeleton is actually composed of a form-fitting liquid cooling garment, a protective layer reminiscent of a flight suit, enclosed by a transparent mask, and the exoskeleton itself, micro motors and actuators on a complex frame with hooks and straps to attach specialized armor onto. The exoskeleton is on and its components whirring softly as you move.", - "power_draw": "100 W", - "weight_capacity_modifier": 1.8, - "revert_to": "power_armor_heavy", - "use_action": { "type": "transform", "menu_text": "Turn off", "msg": "The exoskeleton turns off", "target": "power_armor_heavy" }, - "armor": [ - { - "layers": [ "SKINTIGHT", "NORMAL", "OUTER" ], - "covers": [ "head", "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ], - "encumbrance": 15, - "coverage": 100, - "material": [ - { "type": "lycra", "thickness": 0.2 }, - { "type": "nomex", "thickness": 0.8 }, - { "type": "steel", "thickness": 30, "covered_by_mat": 10 } - ] - }, - { - "layers": [ "NORMAL" ], - "covers": [ "mouth", "eyes" ], - "encumbrance": 0, - "coverage": 100, - "material": [ { "type": "lvl4ballisticglass", "thickness": 2 } ] - } - ] - }, - { - "copy-from": "exoskeleton", - "id": "power_armor_basic", - "type": "TOOL_ARMOR", - "name": { "str": "combat exoskeleton mk.2" }, - "description": "This combat exoskeleton is of second generation, designed to be lighter, less encumbering and more energy efficient while still giving the user greatly increased carry capacity.The exoskeleton is actually composed of a form-fitting liquid cooling garment, a protective layer reminiscent of a flight suit, enclosed by a transparent mask, and the exoskeleton itself, micro motors and actuators on a complex frame with hooks and straps to attach specialized armor onto. The exoskeleton is off and makes movement difficult.", - "weight": "16000 g", - "volume": "3000 ml", - "armor": [ - { - "layers": [ "SKINTIGHT", "NORMAL", "OUTER" ], - "covers": [ "head", "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ], - "encumbrance": 30, - "coverage": 100, - "material": [ - { "type": "lycra", "thickness": 0.2 }, - { "type": "nomex", "thickness": 0.8 }, - { "type": "steel", "thickness": 25, "covered_by_mat": 10 } - ] - }, - { - "layers": [ "NORMAL" ], - "covers": [ "mouth", "eyes" ], - "encumbrance": 0, - "coverage": 100, - "material": [ { "type": "lvl4ballisticglass", "thickness": 2 } ] - } - ], - "use_action": { - "type": "transform", - "msg": "Exoskeleton boot sequence initiated\nLiquid cooling system engaged\nAtmospheric scrubber system engaged\nMotors engaged\nBoot sequence terminated, all systems nominal.", - "target": "power_armor_basic_on", - "active": true, - "need_charges": 1, - "need_charges_msg": "The exoskeleton batteries are empty" - } - }, - { - "id": "power_armor_basic_on", - "copy-from": "power_armor_basic", - "type": "TOOL_ARMOR", - "looks_like": "power_armor_basic", - "name": { "str": "combat exoskeleton (on)", "str_pl": "combat exoskeletons (on)" }, - "description": "This combat exoskeleton is of second generation, designed to be lighter, less encumbering and more energy efficient while still giving the user greatly increased carry capacity. The exoskeleton is actually composed of a form-fitting liquid cooling garment, a protective layer reminiscent of a flight suit, enclosed by a transparent mask, and the exoskeleton itself, micro motors and actuators on a complex frame with hooks and straps to attach specialized armor onto. The exoskeleton is on and its components whirring softly as you move.", - "power_draw": "84 kW", - "weight_capacity_modifier": 1.6, - "revert_to": "power_armor_basic", - "use_action": { "type": "transform", "menu_text": "Turn off", "msg": "The %s armor disengages.", "target": "power_armor_basic" }, - "armor": [ - { - "layers": [ "SKINTIGHT", "NORMAL", "OUTER" ], - "covers": [ "head", "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ], - "encumbrance": 10, - "coverage": 100, - "material": [ - { "type": "lycra", "thickness": 0.2 }, - { "type": "nomex", "thickness": 0.8 }, - { "type": "steel", "thickness": 25, "covered_by_mat": 10 } - ] - }, - { - "layers": [ "NORMAL" ], - "covers": [ "mouth", "eyes" ], - "encumbrance": 0, - "coverage": 100, - "material": [ { "type": "lvl4ballisticglass", "thickness": 2 } ] - } - ] - }, - { - "copy-from": "exoskeleton", - "id": "power_armor_light", - "type": "TOOL_ARMOR", - "name": { "str": "combat exoskeleton mk.3" }, - "description": "Part of the latest generation, these combat exoskeletons were designed for actual production and usage, praised for their responsiveness and light weight compared to their predecessors despite the slight sacrifice in carry capacity. The exoskeleton is actually composed of a form-fitting liquid cooling garment, a protective layer reminiscent of a flight suit, enclosed by a transparent mask, and the exoskeleton itself, micro motors and actuators on a complex frame with hooks and straps to attach specialized armor onto. The exoskeleton is off and makes movement difficult.", - "weight": "14000 g", - "volume": "2500 ml", - "armor": [ - { - "layers": [ "SKINTIGHT", "NORMAL", "OUTER" ], - "covers": [ "head", "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ], - "encumbrance": 25, - "coverage": 100, - "material": [ - { "type": "lycra", "thickness": 0.2 }, - { "type": "nomex", "thickness": 0.8 }, - { "type": "steel", "thickness": 20, "covered_by_mat": 10 } - ] - }, - { - "layers": [ "NORMAL" ], - "covers": [ "mouth", "eyes" ], - "encumbrance": 0, - "coverage": 100, - "material": [ { "type": "lvl4ballisticglass", "thickness": 2 } ] - } - ], - "use_action": { - "type": "transform", - "msg": "Exoskeleton boot sequence initiated\nLiquid cooling system engaged\nAtmospheric scrubber system engaged\nMotors engaged\nBoot sequence terminated, all systems nominal.", - "target": "power_armor_light_on", - "active": true, - "need_charges": 1, - "need_charges_msg": "The exoskeleton batteries are empty" - } - }, - { - "copy-from": "power_armor_light", - "id": "power_armor_light_on", - "type": "TOOL_ARMOR", - "name": { "str": "light combat exoskeleton (on)" }, - "description": "Part of the latest generation, these combat exoskeletons were designed for actual production and usage, praised for their responsiveness and light weight compared to their predecessors despite the slight sacrifice in carry capacity. The exoskeleton is actually composed of a form-fitting liquid cooling garment, a protective layer reminiscent of a flight suit, enclosed by a transparent mask, and the exoskeleton itself, micro motors and actuators attached to a frame with a complex system of hooks and straps to attach specialized armor onto. The exoskeleton is on and its components whirring softly as you move.", - "power_draw": "70 W", - "weight_capacity_modifier": 1.4, - "revert_to": "power_armor_light", - "use_action": { "type": "transform", "menu_text": "Turn off", "msg": "The %s armor disengages.", "target": "power_armor_light" }, - "armor": [ - { - "layers": [ "SKINTIGHT", "NORMAL", "OUTER" ], - "covers": [ "head", "torso", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r" ], - "encumbrance": 5, - "coverage": 100, - "material": [ - { "type": "lycra", "thickness": 0.2 }, - { "type": "nomex", "thickness": 0.8 }, - { "type": "steel", "thickness": 20, "covered_by_mat": 10 } - ] - }, - { - "layers": [ "NORMAL" ], - "covers": [ "mouth", "eyes" ], - "encumbrance": 0, - "coverage": 100, - "material": [ { "type": "lvl4ballisticglass", "thickness": 2 } ] - } - ] - }, - { - "abstract": "exoskeleton_helmet", - "type": "ARMOR", - "category": "armor", - "name": "abstract exoskeleton helmet", - "symbol": "[", - "price": 60000, - "price_postapoc": 5000, - "flags": [ "ABLATIVE_EXOSKELETON_HEAD", "CANT_WEAR", "OUTER" ], - "armor": [ - { "covers": [ "head" ], "coverage": 100, "encumbrance": 15 }, - { "covers": [ "mouth" ], "coverage": 100, "encumbrance": 0 } - ] - }, - { - "copy-from": "exoskeleton_helmet", - "id": "exoskeleton_helmet_heavy", - "type": "ARMOR", - "name": "heavy exoskeleton helmet", - "description": "Plates of ceramic held in place by a layer of kevlar. The hooks and straps indicate that this is meant to be attached to an exoskeleton.", - "weight": "7000 g", - "volume": "3100 ml", - "armor": [ - { - "covers": [ "head" ], - "encumbrance": 20, - "coverage": 100, - "material": [ - { "type": "ceramic", "covered_by_mat": 95, "thickness": 25 }, - { "type": "kevlar", "covered_by_mat": 100, "thickness": 2 } - ] - } - ] - }, - { - "copy-from": "exoskeleton_helmet", - "id": "exoskeleton_helmet_medium", - "type": "ARMOR", - "name": "exoskeleton helmet", - "description": "Plates of ceramic held in place by a layer of kevlar. The hooks and straps indicate that this is meant to be attached to an exoskeleton.", - "weight": "5400 g", - "volume": "2900 ml", - "armor": [ - { - "covers": [ "head" ], - "encumbrance": 15, - "coverage": 100, - "material": [ - { "type": "ceramic", "covered_by_mat": 95, "thickness": 20 }, - { "type": "kevlar", "covered_by_mat": 100, "thickness": 2 } - ] - } - ] - }, - { - "copy-from": "exoskeleton_helmet", - "id": "exoskeleton_helmet_light", - "type": "ARMOR", - "name": "light exoskeleton helmet", - "description": "Plates of ceramic held in place by a layer of kevlar. The hooks and straps indicate that this is meant to be attached to an exoskeleton.", - "weight": "3800 g", - "volume": "2700 ml", - "armor": [ - { - "covers": [ "head" ], - "encumbrance": 10, - "coverage": 100, - "material": [ - { "type": "ceramic", "covered_by_mat": 95, "thickness": 15 }, - { "type": "kevlar", "covered_by_mat": 100, "thickness": 2 } - ] - } - ] - }, - { - "copy-from": "exoskeleton_helmet", - "id": "exoskeleton_helmet_plate", - "type": "ARMOR", - "name": "plate exoskeleton helmet", - "description": "This armor looks like it would fit a giant knight. The hooks and straps indicate that this is meant to be attached to an exoskeleton.", - "weight": "7300 g", - "volume": "3600 ml", - "armor": [ - { - "covers": [ "head" ], - "encumbrance": 1, - "coverage": 100, - "material": [ { "type": "qt_steel_chain", "thickness": 1.2 }, { "type": "qt_steel", "thickness": 6, "covered_by_mat": 95 } ] - } - ] - }, - { - "abstract": "exoskeleton_torso", - "type": "ARMOR", - "category": "armor", - "name": "abstract exoskeleton torso armor", - "symbol": "[", - "price": 60000, - "price_postapoc": 5000, - "flags": [ "ABLATIVE_EXOSKELETON_TORSO", "CANT_WEAR", "OUTER" ], - "armor": [ { "covers": [ "torso" ], "coverage": 100, "encumbrance": 15 } ] - }, - { - "copy-from": "exoskeleton_torso", - "id": "exoskeleton_torso_heavy", - "type": "ARMOR", - "name": "heavy exoskeleton torso", - "description": "Plates of ceramic held in place by a layer of kevlar. The hooks and straps indicate that this is meant to be attached to an exoskeleton.", - "weight": "21900 g", - "volume": "10600 ml", - "armor": [ - { - "covers": [ "torso" ], - "encumbrance": 20, - "coverage": 100, - "material": [ - { "type": "ceramic", "covered_by_mat": 95, "thickness": 25 }, - { "type": "kevlar", "covered_by_mat": 100, "thickness": 2 } - ] - } - ] - }, - { - "copy-from": "exoskeleton_torso", - "id": "exoskeleton_torso_medium", - "type": "ARMOR", - "name": "exoskeleton torso", - "description": "Plates of ceramic held in place by a layer of kevlar. The hooks and straps indicate that this is meant to be attached to an exoskeleton.", - "weight": "17100 g", - "volume": "9900 ml", - "armor": [ - { - "covers": [ "torso" ], - "encumbrance": 15, - "coverage": 100, - "material": [ - { "type": "ceramic", "covered_by_mat": 95, "thickness": 20 }, - { "type": "kevlar", "covered_by_mat": 100, "thickness": 2 } - ] - } - ] - }, - { - "copy-from": "exoskeleton_torso", - "id": "exoskeleton_torso_light", - "type": "ARMOR", - "name": "light exoskeleton torso", - "description": "Plates of ceramic held in place by a layer of kevlar. The hooks and straps indicate that this is meant to be attached to an exoskeleton.", - "weight": "12300 g", - "volume": "9300 ml", - "armor": [ - { - "covers": [ "torso" ], - "encumbrance": 10, - "coverage": 100, - "material": [ - { "type": "ceramic", "covered_by_mat": 95, "thickness": 15 }, - { "type": "kevlar", "covered_by_mat": 100, "thickness": 2 } - ] - } - ] - }, - { - "copy-from": "exoskeleton_torso", - "id": "exoskeleton_torso_plate", - "type": "ARMOR", - "name": "plate exoskeleton torso", - "description": "This armor looks like it would fit a giant knight. The hooks and straps indicate that this is meant to be attached to an exoskeleton.", - "weight": "7300 g", - "volume": "3600 ml", - "armor": [ - { - "covers": [ "torso" ], - "encumbrance": 1, - "coverage": 100, - "material": [ { "type": "qt_steel_chain", "thickness": 1.2 }, { "type": "qt_steel", "thickness": 6, "covered_by_mat": 95 } ] - } - ] - }, - { - "abstract": "exoskeleton_arms", - "type": "ARMOR", - "category": "armor", - "name": "abstract exoskeleton arm armor", - "symbol": "[", - "price": 60000, - "price_postapoc": 5000, - "flags": [ "ABLATIVE_EXOSKELETON_ARMS", "CANT_WEAR", "OUTER" ], - "armor": [ { "covers": [ "arm_l", "arm_r" ], "coverage": 100, "encumbrance": 15 } ] - }, - { - "copy-from": "exoskeleton_arms", - "id": "exoskeleton_arms_heavy", - "type": "ARMOR", - "name": "heavy exoskeleton arms", - "description": "Plates of ceramic held in place by a layer of kevlar. The hooks and straps indicate that this is meant to be attached to an exoskeleton.", - "weight": "7300 g", - "volume": "3600 ml", - "armor": [ - { - "covers": [ "arm_l", "arm_r", "hand_l", "hand_r" ], - "encumbrance": 20, - "coverage": 100, - "material": [ - { "type": "ceramic", "covered_by_mat": 95, "thickness": 12.5 }, - { "type": "kevlar", "covered_by_mat": 100, "thickness": 2 } - ] - } - ] - }, - { - "copy-from": "exoskeleton_arms", - "id": "exoskeleton_arms_medium", - "type": "ARMOR", - "name": "exoskeleton arms", - "description": "Plates of ceramic held in place by a layer of kevlar. The hooks and straps indicate that this is meant to be attached to an exoskeleton.", - "weight": "5700 g", - "volume": "3400 ml", - "armor": [ - { - "covers": [ "arm_l", "arm_r", "hand_l", "hand_r" ], - "encumbrance": 15, - "coverage": 100, - "material": [ - { "type": "ceramic", "covered_by_mat": 95, "thickness": 10 }, - { "type": "kevlar", "covered_by_mat": 100, "thickness": 2 } - ] - } - ] - }, - { - "copy-from": "exoskeleton_arms", - "id": "exoskeleton_arms_light", - "type": "ARMOR", - "name": "light exoskeleton arms", - "description": "Plates of ceramic held in place by a layer of kevlar. The hooks and straps indicate that this is meant to be attached to an exoskeleton.", - "weight": "4100 g", - "volume": "3200 ml", - "armor": [ - { - "covers": [ "arm_l", "arm_r", "hand_l", "hand_r" ], - "encumbrance": 10, - "coverage": 100, - "material": [ - { "type": "ceramic", "covered_by_mat": 95, "thickness": 7.5 }, - { "type": "kevlar", "covered_by_mat": 100, "thickness": 2 } - ] - } - ] - }, - { - "copy-from": "exoskeleton_arms", - "id": "exoskeleton_arms_plate", - "type": "ARMOR", - "name": "plate exoskeleton arms", - "description": "This armor looks like it would fit a giant knight. The hooks and straps indicate that this is meant to be attached to an exoskeleton.", - "weight": "7300 g", - "volume": "3600 ml", - "armor": [ - { - "covers": [ "arm_l", "arm_r", "hand_l", "hand_r" ], - "encumbrance": 1, - "coverage": 100, - "material": [ { "type": "qt_steel_chain", "thickness": 1.2 }, { "type": "qt_steel", "thickness": 2, "covered_by_mat": 95 } ] - } - ] - }, - { - "abstract": "exoskeleton_legs", - "type": "ARMOR", - "category": "armor", - "name": "abstract exoskeleton leg armor", - "symbol": "[", - "price": 60000, - "price_postapoc": 5000, - "flags": [ "ABLATIVE_EXOSKELETON_LEGS", "CANT_WEAR", "OUTER" ] - }, - { - "copy-from": "exoskeleton_legs", - "id": "exoskeleton_legs_heavy", - "type": "ARMOR", - "name": "heavy exoskeleton legs", - "description": "Plates of ceramic held in place by a layer of kevlar. The hooks and straps indicate that this is meant to be attached to an exoskeleton.", - "weight": "7300 g", - "volume": "3600 ml", - "armor": [ - { - "covers": [ "leg_l", "leg_r", "foot_l", "foot_r" ], - "encumbrance": 20, - "coverage": 100, - "material": [ - { "type": "ceramic", "covered_by_mat": 95, "thickness": 12.5 }, - { "type": "kevlar", "covered_by_mat": 100, "thickness": 2 } - ] - } - ] - }, - { - "copy-from": "exoskeleton_legs", - "id": "exoskeleton_legs_medium", - "type": "ARMOR", - "name": "exoskeleton legs", - "description": "Plates of ceramic held in place by a layer of kevlar. The hooks and straps indicate that this is meant to be attached to an exoskeleton.", - "weight": "5700 g", - "volume": "3400 ml", - "armor": [ - { - "covers": [ "leg_l", "leg_r", "foot_l", "foot_r" ], - "encumbrance": 15, - "coverage": 100, - "material": [ - { "type": "ceramic", "covered_by_mat": 95, "thickness": 10 }, - { "type": "kevlar", "covered_by_mat": 100, "thickness": 2 } - ] - } - ] - }, - { - "copy-from": "exoskeleton_legs", - "id": "exoskeleton_legs_light", - "type": "ARMOR", - "name": "light exoskeleton legs", - "description": "Plates of ceramic held in place by a layer of kevlar. The hooks and straps indicate that this is meant to be attached to an exoskeleton.", - "weight": "4100 g", - "volume": "3200 ml", - "armor": [ - { - "covers": [ "leg_l", "leg_r", "foot_l", "foot_r" ], - "encumbrance": 10, - "coverage": 100, - "material": [ - { "type": "ceramic", "covered_by_mat": 95, "thickness": 7.5 }, - { "type": "kevlar", "covered_by_mat": 100, "thickness": 2 } - ] - } - ] - }, - { - "copy-from": "exoskeleton_legs", - "id": "exoskeleton_legs_plate", - "type": "ARMOR", - "name": "plate exoskeleton legs", - "description": "This armor looks like it would fit a giant knight. The hooks and straps indicate that this is meant to be attached to an exoskeleton.", - "weight": "7300 g", - "volume": "3600 ml", - "armor": [ - { - "covers": [ "leg_l", "leg_r", "foot_l", "foot_r" ], - "encumbrance": 1, - "coverage": 100, - "material": [ { "type": "qt_steel_chain", "thickness": 1.2 }, { "type": "qt_steel", "thickness": 3, "covered_by_mat": 95 } ] - } - ] - } -] diff --git a/data/json/mapgen/lab/lab_modular/lab_nests_modular/lab_nested_security.json b/data/json/mapgen/lab/lab_modular/lab_nests_modular/lab_nested_security.json index 823e77fb01d00..4954f947c2c29 100644 --- a/data/json/mapgen/lab/lab_modular/lab_nests_modular/lab_nested_security.json +++ b/data/json/mapgen/lab/lab_modular/lab_nests_modular/lab_nested_security.json @@ -1166,13 +1166,13 @@ "type": "mapgen", "method": "json", "nested_mapgen_id": "power_armor_roulette", - "weight": 100, + "weight": 300, "object": { "mapgensize": [ 1, 1 ], "place_loot": [ { "group": "power_armor_sets", "x": 0, "y": 0, "chance": 100 } ] } }, { "type": "mapgen", "method": "json", - "weight": 600, + "weight": 400, "nested_mapgen_id": "power_armor_roulette", "object": { "mapgensize": [ 1, 1 ], "place_monster": [ { "monster": "mon_zombie_armored", "x": 0, "y": 0 } ] } } diff --git a/data/json/obsoletion_and_migration_0.I/migration_items.json b/data/json/obsoletion_and_migration_0.I/migration_items.json index 19729c67253d9..d6ee90624c292 100644 --- a/data/json/obsoletion_and_migration_0.I/migration_items.json +++ b/data/json/obsoletion_and_migration_0.I/migration_items.json @@ -1,4 +1,84 @@ [ + { + "id": "depowered_armor", + "type": "MIGRATION", + "replace": "combat_exoskeleton_salvaged" + }, + { + "id": "depowered_helmet", + "type": "MIGRATION", + "replace": "combat_exoskeleton_armor_military" + }, + { + "id": "power_armor_frame", + "type": "MIGRATION", + "replace": "qt_steel_chunk" + }, + { + "id": "power_armor_generator", + "type": "MIGRATION", + "replace": "qt_steel_chunk" + }, + { + "id": "power_armor_helmet_basic", + "type": "MIGRATION", + "replace": "combat_exoskeleton_armor_military" + }, + { + "id": "power_armor_helmet_basic_on", + "type": "MIGRATION", + "replace": "combat_exoskeleton_armor_military" + }, + { + "id": "power_armor_helmet_light", + "type": "MIGRATION", + "replace": "combat_exoskeleton_armor_military" + }, + { + "id": "power_armor_helmet_light_on", + "type": "MIGRATION", + "replace": "combat_exoskeleton_armor_military" + }, + { + "id": "power_armor_helmet_heavy", + "type": "MIGRATION", + "replace": "combat_exoskeleton_armor_military" + }, + { + "id": "power_armor_helmet_heavy_on", + "type": "MIGRATION", + "replace": "combat_exoskeleton_armor_military" + }, + { + "id": "power_armor_basic", + "type": "MIGRATION", + "replace": "combat_exoskeleton_medium" + }, + { + "id": "power_armor_basic_on", + "type": "MIGRATION", + "replace": "combat_exoskeleton_medium_on" + }, + { + "id": "power_armor_light", + "type": "MIGRATION", + "replace": "combat_exoskeleton_light" + }, + { + "id": "power_armor_light_on", + "type": "MIGRATION", + "replace": "combat_exoskeleton_light_on" + }, + { + "id": "power_armor_heavy", + "type": "MIGRATION", + "replace": "combat_exoskeleton_heavy" + }, + { + "id": "power_armor_heavy_on", + "type": "MIGRATION", + "replace": "combat_exoskeleton_heavy_on" + }, { "id": "lobotomizer", "type": "MIGRATION", diff --git a/data/json/recipes/armor/combat_exoskeleton_armor.json b/data/json/recipes/armor/combat_exoskeleton_armor.json new file mode 100644 index 0000000000000..6125adc5dd3e7 --- /dev/null +++ b/data/json/recipes/armor/combat_exoskeleton_armor.json @@ -0,0 +1,27 @@ +[ + { + "copy-from": "armor_lc_plate", + "result": "combat_exoskeleton_armor_lc_plate", + "type": "recipe" + }, + { + "copy-from": "armor_mc_plate", + "result": "combat_exoskeleton_armor_mc_plate", + "type": "recipe" + }, + { + "copy-from": "armor_hc_plate", + "result": "combat_exoskeleton_armor_hc_plate", + "type": "recipe" + }, + { + "copy-from": "armor_ch_plate", + "result": "combat_exoskeleton_armor_ch_plate", + "type": "recipe" + }, + { + "copy-from": "armor_qt_plate", + "result": "combat_exoskeleton_armor_qt_plate", + "type": "recipe" + } +] diff --git a/data/json/recipes/armor/power_armor.json b/data/json/recipes/armor/power_armor.json deleted file mode 100644 index 1d834aa80e67d..0000000000000 --- a/data/json/recipes/armor/power_armor.json +++ /dev/null @@ -1,49 +0,0 @@ -[ - { - "type": "recipe", - "category": "CC_ARMOR", - "subcategory": "CSC_ARMOR_HEAD", - "result": "exoskeleton_torso_plate", - "difficulty": 8, - "skill_used": "fabrication", - "book_learn": [ [ "textbook_armwest", 7 ] ], - "time": "1 d 18 h 30 m", - "activity_level": "BRISK_EXERCISE", - "proficiencies": [ - { "proficiency": "prof_armorsmithing" }, - { "proficiency": "prof_closures", "time_multiplier": 1.25, "skill_penalty": 0.15 }, - { "proficiency": "prof_metalworking" }, - { "proficiency": "prof_blacksmithing" }, - { "proficiency": "prof_quenching", "skill_penalty": 1 } - ], - "tools": [ [ [ "hotcut", -1 ] ], [ [ "metal_tank", -1 ] ], [ [ "water", -120 ] ] ], - "using": [ [ "blacksmithing_standard", 3 ], [ "mc_steel_standard", 1 ], [ "armor_chainmail_assembling", 1 ] ] - }, - { - "copy-from": "exoskeleton_torso_plate", - "type": "recipe", - "subcategory": "CSC_ARMOR_TORSO", - "result": "exoskeleton_helmet_plate", - "time": "12 d 15 h 36 m", - "tools": [ [ [ "hotcut", -1 ] ], [ [ "metal_tank", -1 ] ], [ [ "water", -120 ] ] ], - "using": [ [ "blacksmithing_standard", 20 ], [ "mc_steel_standard", 5 ], [ "armor_chainmail_assembling", 1 ] ] - }, - { - "copy-from": "exoskeleton_torso_plate", - "type": "recipe", - "subcategory": "CSC_ARMOR_ARMS", - "result": "exoskeleton_arms_plate", - "time": "8 d 5 h 8 m", - "tools": [ [ [ "hotcut", -1 ] ], [ [ "metal_tank", -1 ] ], [ [ "water", -120 ] ] ], - "using": [ [ "blacksmithing_standard", 12 ], [ "mc_steel_standard", 3 ], [ "armor_chainmail_assembling", 1 ] ] - }, - { - "copy-from": "exoskeleton_torso_plate", - "type": "recipe", - "subcategory": "CSC_ARMOR_LEGS", - "result": "exoskeleton_legs_plate", - "time": "8 d 5 h 8 m", - "tools": [ [ [ "hotcut", -1 ] ], [ [ "metal_tank", -1 ] ], [ [ "water", -120 ] ] ], - "using": [ [ "blacksmithing_standard", 12 ], [ "mc_steel_standard", 3 ], [ "armor_chainmail_assembling", 1 ] ] - } -] diff --git a/data/json/recipes/nested.json b/data/json/recipes/nested.json index b4a9aa669cfd3..dee74111d9c3c 100644 --- a/data/json/recipes/nested.json +++ b/data/json/recipes/nested.json @@ -979,7 +979,13 @@ "name": "mild steel plate armor", "description": "Recipes related to constructing steel plate armor from mild steel.", "skill_used": "fabrication", - "nested_category_data": [ "xl_armor_lc_plate", "armor_lc_plate", "xl_armor_lc_plate_assembly", "armor_lc_plate_assembly" ], + "nested_category_data": [ + "xl_armor_lc_plate", + "armor_lc_plate", + "combat_exoskeleton_armor_lc_plate", + "xl_armor_lc_plate_assembly", + "armor_lc_plate_assembly" + ], "difficulty": 1 }, { @@ -991,7 +997,13 @@ "name": "medium steel plate armor", "description": "Recipes related to constructing steel plate armor from medium steel.", "skill_used": "fabrication", - "nested_category_data": [ "xl_armor_mc_plate", "armor_mc_plate", "xl_armor_mc_plate_assembly", "armor_mc_plate_assembly" ], + "nested_category_data": [ + "xl_armor_mc_plate", + "armor_mc_plate", + "combat_exoskeleton_armor_mc_plate", + "xl_armor_mc_plate_assembly", + "armor_mc_plate_assembly" + ], "difficulty": 2 }, { @@ -1003,7 +1015,13 @@ "name": "high steel plate armor", "description": "Recipes related to constructing steel plate armor from high steel.", "skill_used": "fabrication", - "nested_category_data": [ "xl_armor_hc_plate", "armor_hc_plate", "xl_armor_hc_plate_assembly", "armor_hc_plate_assembly" ], + "nested_category_data": [ + "xl_armor_hc_plate", + "armor_hc_plate", + "combat_exoskeleton_armor_hc_plate", + "xl_armor_hc_plate_assembly", + "armor_hc_plate_assembly" + ], "difficulty": 3 }, { @@ -1015,7 +1033,13 @@ "name": "hardened steel plate armor", "description": "Recipes related to constructing steel plate armor from hardened steel.", "skill_used": "fabrication", - "nested_category_data": [ "xl_armor_ch_plate", "armor_ch_plate", "xl_armor_ch_plate_assembly", "armor_ch_plate_assembly" ], + "nested_category_data": [ + "xl_armor_ch_plate", + "armor_ch_plate", + "combat_exoskeleton_armor_ch_plate", + "xl_armor_ch_plate_assembly", + "armor_ch_plate_assembly" + ], "difficulty": 4 }, { @@ -1027,7 +1051,13 @@ "name": "tempered steel plate armor", "description": "Recipes related to constructing steel plate armor from tempered steel.", "skill_used": "fabrication", - "nested_category_data": [ "xl_armor_qt_plate", "armor_qt_plate", "xl_armor_qt_plate_assembly", "armor_qt_plate_assembly" ], + "nested_category_data": [ + "xl_armor_qt_plate", + "armor_qt_plate", + "combat_exoskeleton_armor_qt_plate", + "xl_armor_qt_plate_assembly", + "armor_qt_plate_assembly" + ], "difficulty": 5 }, { diff --git a/data/json/recipes/recipe_deconstruction.json b/data/json/recipes/recipe_deconstruction.json index f6d89b9dc897b..482d88f3c73cb 100644 --- a/data/json/recipes/recipe_deconstruction.json +++ b/data/json/recipes/recipe_deconstruction.json @@ -3498,7 +3498,7 @@ "components": [ [ [ "scrap_copper", 3 ] ] ] }, { - "result": "power_armor_basic", + "result": "combat_exoskeleton_medium", "type": "uncraft", "activity_level": "MODERATE_EXERCISE", "skill_used": "fabrication", @@ -3516,25 +3516,6 @@ [ [ "transponder", 1 ] ] ] }, - { - "result": "power_armor_helmet_basic", - "type": "uncraft", - "activity_level": "MODERATE_EXERCISE", - "skill_used": "fabrication", - "difficulty": 8, - "skills_required": [ "electronics", 4 ], - "time": "45 m", - "qualities": [ { "id": "SAW_M", "level": 1 }, { "id": "SCREW", "level": 1 }, { "id": "WRENCH", "level": 1 } ], - "tools": [ [ [ "boltcutters", -1 ], [ "toolset", -1 ] ] ], - "components": [ - [ [ "depowered_helmet", 1 ] ], - [ [ "power_supply", 1 ] ], - [ [ "element", 1 ] ], - [ [ "small_lcd_screen", 2 ] ], - [ [ "circuit", 2 ] ], - [ [ "RAM", 1 ] ] - ] - }, { "result": "processor", "type": "uncraft", diff --git a/data/json/statistics.json b/data/json/statistics.json index 4000a9d9be47c..fa808d06c2a71 100644 --- a/data/json/statistics.json +++ b/data/json/statistics.json @@ -728,7 +728,7 @@ "id": "avatar_wears_power_armor_heavy", "type": "event_transformation", "event_transformation": "avatar_wears_item", - "value_constraints": { "itype": { "equals": [ "itype_id", "power_armor_heavy" ] } }, + "value_constraints": { "itype": { "equals": [ "itype_id", "combat_exoskeleton_heavy" ] } }, "drop_fields": [ "itype" ] }, { From feb3cbb23801f0c3b6311d5cd230c9d74c2e4aba Mon Sep 17 00:00:00 2001 From: BalthazarArgall Date: Fri, 8 Mar 2024 15:25:20 +0100 Subject: [PATCH 18/73] adjusted power consumption --- data/json/items/armor/combat_exoskeleton.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/data/json/items/armor/combat_exoskeleton.json b/data/json/items/armor/combat_exoskeleton.json index 8369aaaeecb9b..a45ea9b0eb0bf 100644 --- a/data/json/items/armor/combat_exoskeleton.json +++ b/data/json/items/armor/combat_exoskeleton.json @@ -81,7 +81,7 @@ "type": "TOOL_ARMOR", "name": { "str": "combat exoskeleton mk1 (on)", "str_pl": "combat exoskeletons mk1 (on)" }, "proportional": { "encumbrance": 0.3 }, - "power_draw": "68 W", + "power_draw": "138 W", "weight_capacity_modifier": 1.9, "revert_to": "combat_exoskeleton_heavy", "use_action": { @@ -113,7 +113,7 @@ "type": "TOOL_ARMOR", "name": { "str": "combat exoskeleton mk2 (on)", "str_pl": "combat exoskeletons mk2 (on)" }, "proportional": { "encumbrance": 0.2 }, - "power_draw": "54 W", + "power_draw": "110 W", "weight_capacity_modifier": 1.6, "revert_to": "combat_exoskeleton_medium", "use_action": { @@ -145,7 +145,7 @@ "type": "TOOL_ARMOR", "name": { "str": "combat exoskeletons mk3 (on)", "str_pl": "light combat exoskeletons mk3 (on)" }, "proportional": { "encumbrance": 0.1 }, - "power_draw": "40 W", + "power_draw": "88 W", "weight_capacity_modifier": 1.3, "revert_to": "combat_exoskeleton_light", "use_action": { From 3f8398fd83e14e67fa7a0bdba43675f5480c3ff6 Mon Sep 17 00:00:00 2001 From: BalthazarArgall Date: Fri, 8 Mar 2024 15:28:13 +0100 Subject: [PATCH 19/73] adjusted weight --- data/json/items/armor/combat_exoskeleton.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data/json/items/armor/combat_exoskeleton.json b/data/json/items/armor/combat_exoskeleton.json index a45ea9b0eb0bf..1f64ea3ec50f2 100644 --- a/data/json/items/armor/combat_exoskeleton.json +++ b/data/json/items/armor/combat_exoskeleton.json @@ -9,8 +9,8 @@ "symbol": "[", "price": 500000, "price_postapoc": 10000, - "volume": "16000 ml", - "weight": "6350 g", + "volume": "22400 ml", + "weight": "8850 g", "flags": [ "STURDY" ], "armor": [ { From ccc42d01dd56549800a07f36c26e55af6ee68e17 Mon Sep 17 00:00:00 2001 From: BalthazarArgall Date: Fri, 8 Mar 2024 17:44:32 +0100 Subject: [PATCH 20/73] deleted unneeded plural names --- data/json/items/armor/combat_exoskeleton.json | 14 +++++++------- .../json/items/armor/combat_exoskeleton_armor.json | 12 ++++++------ 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/data/json/items/armor/combat_exoskeleton.json b/data/json/items/armor/combat_exoskeleton.json index 1f64ea3ec50f2..cfee46a5caed2 100644 --- a/data/json/items/armor/combat_exoskeleton.json +++ b/data/json/items/armor/combat_exoskeleton.json @@ -3,7 +3,7 @@ "id": "combat_exoskeleton_salvaged", "category": "armor", "type": "ARMOR", - "name": { "str": "salvaged combat exoskeleton", "str_pl": "salvaged combat exoskeletons" }, + "name": { "str": "salvaged combat exoskeleton" }, "description": "This exoskeleton has been severely damaged and its electronic parts are completely fried. You could wear it but the now inactive motors will make moving around very difficult. Utilizing a variety of webbing, magnets, and clips, specialized armor can be attached to the exoskeleton as one sees fit.", "looks_like": "power_armor_heavy", "symbol": "[", @@ -59,7 +59,7 @@ "id": "combat_exoskeleton_heavy", "copy-from": "combat_exoskeleton_salvaged", "type": "TOOL_ARMOR", - "name": { "str": "combat exoskeleton mk1", "str_pl": "combat exoskeletons mk1" }, + "name": { "str": "combat exoskeleton mk1" }, "description": "Deployed in limited numbers for testing but deemed too expensive for mass production, this exoskeleton focuses on carry weight over fine motor movement. Utilizing a variety of webbing, magnets, and clips, specialized armor can be attached to the exoskeleton as one sees fit.", "looks_like": "power_armor_heavy", "price": 5000000, @@ -79,7 +79,7 @@ "copy-from": "combat_exoskeleton_heavy", "id": "combat_exoskeleton_heavy_on", "type": "TOOL_ARMOR", - "name": { "str": "combat exoskeleton mk1 (on)", "str_pl": "combat exoskeletons mk1 (on)" }, + "name": { "str": "combat exoskeleton mk1 (on)" }, "proportional": { "encumbrance": 0.3 }, "power_draw": "138 W", "weight_capacity_modifier": 1.9, @@ -95,7 +95,7 @@ "copy-from": "combat_exoskeleton_heavy", "id": "combat_exoskeleton_medium", "type": "TOOL_ARMOR", - "name": { "str": "combat exoskeleton mk2", "str_pl": "combat exoskeletons mk2" }, + "name": { "str": "combat exoskeleton mk2" }, "description": "Improving over the first generation, this exoskeleton boasts increased nimbleness at the cost of some motor strength. Utilizing a variety of webbing, magnets, and clips, specialized armor can be attached to the exoskeleton as one sees fit.", "looks_like": "power_armor_basic", "use_action": { @@ -111,7 +111,7 @@ "copy-from": "combat_exoskeleton_medium", "id": "combat_exoskeleton_medium_on", "type": "TOOL_ARMOR", - "name": { "str": "combat exoskeleton mk2 (on)", "str_pl": "combat exoskeletons mk2 (on)" }, + "name": { "str": "combat exoskeleton mk2 (on)" }, "proportional": { "encumbrance": 0.2 }, "power_draw": "110 W", "weight_capacity_modifier": 1.6, @@ -127,7 +127,7 @@ "copy-from": "combat_exoskeleton_heavy", "id": "combat_exoskeleton_light", "type": "TOOL_ARMOR", - "name": { "str": "combat exoskeleton mk3", "str_pl": "combat exoskeletons mk3" }, + "name": { "str": "combat exoskeleton mk3" }, "description": "Designed for mass production and usage, this exoskeleton was praised for its responsiveness and light weight compared to its predecessors despite the sacrifice in carry capacity. Utilizing a variety of webbing, magnets, and clips, specialized armor can be attached to the exoskeleton as one sees fit.", "looks_like": "power_armor_light", "use_action": { @@ -143,7 +143,7 @@ "copy-from": "combat_exoskeleton_light", "id": "combat_exoskeleton_light_on", "type": "TOOL_ARMOR", - "name": { "str": "combat exoskeletons mk3 (on)", "str_pl": "light combat exoskeletons mk3 (on)" }, + "name": { "str": "combat exoskeletons mk3 (on)" }, "proportional": { "encumbrance": 0.1 }, "power_draw": "88 W", "weight_capacity_modifier": 1.3, diff --git a/data/json/items/armor/combat_exoskeleton_armor.json b/data/json/items/armor/combat_exoskeleton_armor.json index 248d74f63d26b..17444dc662ceb 100644 --- a/data/json/items/armor/combat_exoskeleton_armor.json +++ b/data/json/items/armor/combat_exoskeleton_armor.json @@ -3,7 +3,7 @@ "id": "combat_exoskeleton_armor_military", "type": "ARMOR", "category": "armor", - "name": { "str": "combat exoskeleton military armor", "str_pl": "combat exoskeleton military armors" }, + "name": { "str": "combat exoskeleton military armor" }, "description": "Nicknamed 'Tank Suit' by soldiers, this armor is designed to absorb shrapnel and small caliber bullets on most of the users body. The awkward attachment points make this armor unusable by itself, it needs to be attached to a combat exoskeleton.", "symbol": "[", "looks_like": "ballistic_vest_heavy", @@ -39,7 +39,7 @@ "id": "combat_exoskeleton_armor_lc_plate", "copy-from": "armor_lc_plate", "type": "ARMOR", - "name": { "str": "combat exoskeleton mild steel plate armor", "str_pl": "combat exoskeleton mild steel plate armors" }, + "name": { "str": "combat exoskeleton mild steel plate armor" }, "description": "This plate armor has oddly shaped plates and articulations and was specially made to accomodate and take advantage of the exoskeleton underneath. The awkward attachment points make this armor unusable by itself, it needs to be attached to a combat exoskeleton.", "extend": { "flags": [ "CANT_WEAR", "ABLATIVE_EXOSKELETON_ARMOR" ] } }, @@ -47,7 +47,7 @@ "id": "combat_exoskeleton_armor_mc_plate", "copy-from": "combat_exoskeleton_armor_lc_plate", "type": "ARMOR", - "name": { "str": "combat exoskeleton medium steel plate armor", "str_pl": "combat exoskeleton medium steel plate armors" }, + "name": { "str": "combat exoskeleton medium steel plate armor" }, "description": "This plate armor has oddly shaped plates and articulations and was specially made to accomodate and take advantage of the exoskeleton underneath. The awkward attachment points make this armor unusable by itself, it needs to be attached to a combat exoskeleton.", "replace_materials": { "lc_steel": "mc_steel", "lc_steel_chain": "mc_steel_chain" } }, @@ -55,7 +55,7 @@ "id": "combat_exoskeleton_armor_hc_plate", "copy-from": "combat_exoskeleton_armor_lc_plate", "type": "ARMOR", - "name": { "str": "combat exoskeleton high steel plate armor", "str_pl": "combat exoskeleton high steel plate armors" }, + "name": { "str": "combat exoskeleton high steel plate armor" }, "description": "This plate armor has oddly shaped plates and articulations and was specially made to accomodate and take advantage of the exoskeleton underneath. The awkward attachment points make this armor unusable by itself, it needs to be attached to a combat exoskeleton.", "replace_materials": { "mc_steel": "hc_steel", "mc_steel_chain": "hc_steel_chain" } }, @@ -63,7 +63,7 @@ "id": "combat_exoskeleton_armor_ch_plate", "copy-from": "combat_exoskeleton_armor_lc_plate", "type": "ARMOR", - "name": { "str": "combat exoskeleton hardened plate armor", "str_pl": "combat exoskeleton hardened plate armors" }, + "name": { "str": "combat exoskeleton hardened plate armor" }, "description": "This plate armor has oddly shaped plates and articulations and was specially made to accomodate and take advantage of the exoskeleton underneath. The awkward attachment points make this armor unusable by itself, it needs to be attached to a combat exoskeleton.", "replace_materials": { "lc_steel": "ch_steel", "lc_steel_chain": "ch_steel_chain" } }, @@ -71,7 +71,7 @@ "id": "combat_exoskeleton_armor_qt_plate", "copy-from": "combat_exoskeleton_armor_lc_plate", "type": "ARMOR", - "name": { "str": "combat exoskeleton tempered plate armor", "str_pl": "combat exoskeleton tempered plate armors" }, + "name": { "str": "combat exoskeleton tempered plate armor" }, "description": "This plate armor has oddly shaped plates and articulations and was specially made to accomodate and take advantage of the exoskeleton underneath. The awkward attachment points make this armor unusable by itself, it needs to be attached to a combat exoskeleton.", "replace_materials": { "lc_steel": "qt_steel", "lc_steel_chain": "qt_steel_chain" } } From 988ba6d4c2eb0fde1edc3ae0c9e66d17931f810b Mon Sep 17 00:00:00 2001 From: BalthazarArgall Date: Fri, 8 Mar 2024 19:22:05 +0100 Subject: [PATCH 21/73] Double spaced the descriptions, re added plural names where needed --- data/json/items/armor/combat_exoskeleton.json | 14 +++++++------- .../json/items/armor/combat_exoskeleton_armor.json | 12 ++++++------ 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/data/json/items/armor/combat_exoskeleton.json b/data/json/items/armor/combat_exoskeleton.json index cfee46a5caed2..50a2012e08bdf 100644 --- a/data/json/items/armor/combat_exoskeleton.json +++ b/data/json/items/armor/combat_exoskeleton.json @@ -4,7 +4,7 @@ "category": "armor", "type": "ARMOR", "name": { "str": "salvaged combat exoskeleton" }, - "description": "This exoskeleton has been severely damaged and its electronic parts are completely fried. You could wear it but the now inactive motors will make moving around very difficult. Utilizing a variety of webbing, magnets, and clips, specialized armor can be attached to the exoskeleton as one sees fit.", + "description": "This exoskeleton has been severely damaged and its electronic parts are completely fried. You could wear it but the now inactive motors will make moving around very difficult. Utilizing a variety of webbing, magnets, and clips, specialized armor can be attached to the exoskeleton as one sees fit.", "looks_like": "power_armor_heavy", "symbol": "[", "price": 500000, @@ -60,7 +60,7 @@ "copy-from": "combat_exoskeleton_salvaged", "type": "TOOL_ARMOR", "name": { "str": "combat exoskeleton mk1" }, - "description": "Deployed in limited numbers for testing but deemed too expensive for mass production, this exoskeleton focuses on carry weight over fine motor movement. Utilizing a variety of webbing, magnets, and clips, specialized armor can be attached to the exoskeleton as one sees fit.", + "description": "Deployed in limited numbers for testing but deemed too expensive for mass production, this exoskeleton focuses on carry weight over fine motor movement. Utilizing a variety of webbing, magnets, and clips, specialized armor can be attached to the exoskeleton as one sees fit.", "looks_like": "power_armor_heavy", "price": 5000000, "price_postapoc": 100000, @@ -79,7 +79,7 @@ "copy-from": "combat_exoskeleton_heavy", "id": "combat_exoskeleton_heavy_on", "type": "TOOL_ARMOR", - "name": { "str": "combat exoskeleton mk1 (on)" }, + "name": { "str": "combat exoskeleton mk1 (on)", "str_pl": "combat exoskeletons mk1 (on)" }, "proportional": { "encumbrance": 0.3 }, "power_draw": "138 W", "weight_capacity_modifier": 1.9, @@ -96,7 +96,7 @@ "id": "combat_exoskeleton_medium", "type": "TOOL_ARMOR", "name": { "str": "combat exoskeleton mk2" }, - "description": "Improving over the first generation, this exoskeleton boasts increased nimbleness at the cost of some motor strength. Utilizing a variety of webbing, magnets, and clips, specialized armor can be attached to the exoskeleton as one sees fit.", + "description": "Improving over the first generation, this exoskeleton boasts increased nimbleness at the cost of some motor strength. Utilizing a variety of webbing, magnets, and clips, specialized armor can be attached to the exoskeleton as one sees fit.", "looks_like": "power_armor_basic", "use_action": { "type": "transform", @@ -111,7 +111,7 @@ "copy-from": "combat_exoskeleton_medium", "id": "combat_exoskeleton_medium_on", "type": "TOOL_ARMOR", - "name": { "str": "combat exoskeleton mk2 (on)" }, + "name": { "str": "combat exoskeleton mk2 (on)", "str_pl": "combat exoskeletons m2 (on)" }, "proportional": { "encumbrance": 0.2 }, "power_draw": "110 W", "weight_capacity_modifier": 1.6, @@ -128,7 +128,7 @@ "id": "combat_exoskeleton_light", "type": "TOOL_ARMOR", "name": { "str": "combat exoskeleton mk3" }, - "description": "Designed for mass production and usage, this exoskeleton was praised for its responsiveness and light weight compared to its predecessors despite the sacrifice in carry capacity. Utilizing a variety of webbing, magnets, and clips, specialized armor can be attached to the exoskeleton as one sees fit.", + "description": "Designed for mass production and usage, this exoskeleton was praised for its responsiveness and light weight compared to its predecessors despite the sacrifice in carry capacity. Utilizing a variety of webbing, magnets, and clips, specialized armor can be attached to the exoskeleton as one sees fit.", "looks_like": "power_armor_light", "use_action": { "type": "transform", @@ -143,7 +143,7 @@ "copy-from": "combat_exoskeleton_light", "id": "combat_exoskeleton_light_on", "type": "TOOL_ARMOR", - "name": { "str": "combat exoskeletons mk3 (on)" }, + "name": { "str": "combat exoskeleton mk3 (on)", "str_pl": "combat exoskeletons mk3 (on)" }, "proportional": { "encumbrance": 0.1 }, "power_draw": "88 W", "weight_capacity_modifier": 1.3, diff --git a/data/json/items/armor/combat_exoskeleton_armor.json b/data/json/items/armor/combat_exoskeleton_armor.json index 17444dc662ceb..c8fd297ad2372 100644 --- a/data/json/items/armor/combat_exoskeleton_armor.json +++ b/data/json/items/armor/combat_exoskeleton_armor.json @@ -4,7 +4,7 @@ "type": "ARMOR", "category": "armor", "name": { "str": "combat exoskeleton military armor" }, - "description": "Nicknamed 'Tank Suit' by soldiers, this armor is designed to absorb shrapnel and small caliber bullets on most of the users body. The awkward attachment points make this armor unusable by itself, it needs to be attached to a combat exoskeleton.", + "description": "Nicknamed 'Tank Suit' by soldiers, this armor is designed to absorb shrapnel and small caliber bullets on most of the users body. The awkward attachment points make this armor unusable by itself, it needs to be attached to a combat exoskeleton.", "symbol": "[", "looks_like": "ballistic_vest_heavy", "price": 1600000, @@ -40,7 +40,7 @@ "copy-from": "armor_lc_plate", "type": "ARMOR", "name": { "str": "combat exoskeleton mild steel plate armor" }, - "description": "This plate armor has oddly shaped plates and articulations and was specially made to accomodate and take advantage of the exoskeleton underneath. The awkward attachment points make this armor unusable by itself, it needs to be attached to a combat exoskeleton.", + "description": "This plate armor has oddly shaped plates and articulations and was specially made to accomodate and take advantage of the exoskeleton underneath. The awkward attachment points make this armor unusable by itself, it needs to be attached to a combat exoskeleton.", "extend": { "flags": [ "CANT_WEAR", "ABLATIVE_EXOSKELETON_ARMOR" ] } }, { @@ -48,7 +48,7 @@ "copy-from": "combat_exoskeleton_armor_lc_plate", "type": "ARMOR", "name": { "str": "combat exoskeleton medium steel plate armor" }, - "description": "This plate armor has oddly shaped plates and articulations and was specially made to accomodate and take advantage of the exoskeleton underneath. The awkward attachment points make this armor unusable by itself, it needs to be attached to a combat exoskeleton.", + "description": "This plate armor has oddly shaped plates and articulations and was specially made to accomodate and take advantage of the exoskeleton underneath. The awkward attachment points make this armor unusable by itself, it needs to be attached to a combat exoskeleton.", "replace_materials": { "lc_steel": "mc_steel", "lc_steel_chain": "mc_steel_chain" } }, { @@ -56,7 +56,7 @@ "copy-from": "combat_exoskeleton_armor_lc_plate", "type": "ARMOR", "name": { "str": "combat exoskeleton high steel plate armor" }, - "description": "This plate armor has oddly shaped plates and articulations and was specially made to accomodate and take advantage of the exoskeleton underneath. The awkward attachment points make this armor unusable by itself, it needs to be attached to a combat exoskeleton.", + "description": "This plate armor has oddly shaped plates and articulations and was specially made to accomodate and take advantage of the exoskeleton underneath. The awkward attachment points make this armor unusable by itself, it needs to be attached to a combat exoskeleton.", "replace_materials": { "mc_steel": "hc_steel", "mc_steel_chain": "hc_steel_chain" } }, { @@ -64,7 +64,7 @@ "copy-from": "combat_exoskeleton_armor_lc_plate", "type": "ARMOR", "name": { "str": "combat exoskeleton hardened plate armor" }, - "description": "This plate armor has oddly shaped plates and articulations and was specially made to accomodate and take advantage of the exoskeleton underneath. The awkward attachment points make this armor unusable by itself, it needs to be attached to a combat exoskeleton.", + "description": "This plate armor has oddly shaped plates and articulations and was specially made to accomodate and take advantage of the exoskeleton underneath. The awkward attachment points make this armor unusable by itself, it needs to be attached to a combat exoskeleton.", "replace_materials": { "lc_steel": "ch_steel", "lc_steel_chain": "ch_steel_chain" } }, { @@ -72,7 +72,7 @@ "copy-from": "combat_exoskeleton_armor_lc_plate", "type": "ARMOR", "name": { "str": "combat exoskeleton tempered plate armor" }, - "description": "This plate armor has oddly shaped plates and articulations and was specially made to accomodate and take advantage of the exoskeleton underneath. The awkward attachment points make this armor unusable by itself, it needs to be attached to a combat exoskeleton.", + "description": "This plate armor has oddly shaped plates and articulations and was specially made to accomodate and take advantage of the exoskeleton underneath. The awkward attachment points make this armor unusable by itself, it needs to be attached to a combat exoskeleton.", "replace_materials": { "lc_steel": "qt_steel", "lc_steel_chain": "qt_steel_chain" } } ] From 6daf0702f0b110df8e8ee723d1a2d8544c6c5535 Mon Sep 17 00:00:00 2001 From: BalthazarArgall Date: Fri, 8 Mar 2024 23:47:44 +0100 Subject: [PATCH 22/73] updated description and carry weight bonus enchantment --- data/json/items/armor/combat_exoskeleton.json | 38 +++++++++++++++++-- 1 file changed, 34 insertions(+), 4 deletions(-) diff --git a/data/json/items/armor/combat_exoskeleton.json b/data/json/items/armor/combat_exoskeleton.json index 50a2012e08bdf..2c39c42d2ec29 100644 --- a/data/json/items/armor/combat_exoskeleton.json +++ b/data/json/items/armor/combat_exoskeleton.json @@ -4,7 +4,7 @@ "category": "armor", "type": "ARMOR", "name": { "str": "salvaged combat exoskeleton" }, - "description": "This exoskeleton has been severely damaged and its electronic parts are completely fried. You could wear it but the now inactive motors will make moving around very difficult. Utilizing a variety of webbing, magnets, and clips, specialized armor can be attached to the exoskeleton as one sees fit.", + "description": "This exoskeleton has been severely damaged and its electronic parts are completely fried. You could wear it but the now inactive motors will make moving around very difficult. Utilizing a variety of webbing, magnets, and clips, specialized armor can be attached to the exoskeleton as one sees fit.", "looks_like": "power_armor_heavy", "symbol": "[", "price": 500000, @@ -73,6 +73,17 @@ "active": true, "need_charges": 1, "need_charges_msg": "The exoskeleton batteries are empty" + }, + "relic_data": { + "passive_effects": [ + { + "has": "WORN", + "condition": "ACTIVE", + "values": [ { "value": "CARRY_WEIGHT", "multiply": 0.8 } ], + "name": { "str": "Exoskeletal assistance" }, + "description": "The exoskeleton is less encumbering and increases your carry capacity." + } + ] } }, { @@ -82,7 +93,6 @@ "name": { "str": "combat exoskeleton mk1 (on)", "str_pl": "combat exoskeletons mk1 (on)" }, "proportional": { "encumbrance": 0.3 }, "power_draw": "138 W", - "weight_capacity_modifier": 1.9, "revert_to": "combat_exoskeleton_heavy", "use_action": { "type": "transform", @@ -105,6 +115,17 @@ "active": true, "need_charges": 1, "need_charges_msg": "The exoskeleton batteries are empty" + }, + "relic_data": { + "passive_effects": [ + { + "has": "WORN", + "condition": "ACTIVE", + "values": [ { "value": "CARRY_WEIGHT", "multiply": 0.6 } ], + "name": { "str": "Exoskeletal assistance" }, + "description": "The exoskeleton is less encumbering and increases your carry capacity." + } + ] } }, { @@ -114,7 +135,6 @@ "name": { "str": "combat exoskeleton mk2 (on)", "str_pl": "combat exoskeletons m2 (on)" }, "proportional": { "encumbrance": 0.2 }, "power_draw": "110 W", - "weight_capacity_modifier": 1.6, "revert_to": "combat_exoskeleton_medium", "use_action": { "type": "transform", @@ -137,6 +157,17 @@ "active": true, "need_charges": 1, "need_charges_msg": "The exoskeleton batteries are empty" + }, + "relic_data": { + "passive_effects": [ + { + "has": "WORN", + "condition": "ACTIVE", + "values": [ { "value": "CARRY_WEIGHT", "multiply": 0.4 } ], + "name": { "str": "Exoskeletal assistance" }, + "description": "The exoskeleton is less encumbering and increases your carry capacity." + } + ] } }, { @@ -146,7 +177,6 @@ "name": { "str": "combat exoskeleton mk3 (on)", "str_pl": "combat exoskeletons mk3 (on)" }, "proportional": { "encumbrance": 0.1 }, "power_draw": "88 W", - "weight_capacity_modifier": 1.3, "revert_to": "combat_exoskeleton_light", "use_action": { "type": "transform", From ac42f31024212d9067b68275285a45c6ddafb0d2 Mon Sep 17 00:00:00 2001 From: BalthazarArgall Date: Sat, 9 Mar 2024 00:00:27 +0100 Subject: [PATCH 23/73] Revert "Revert "Merge branch 'CombatExoskeletonUpdate' of https://github.com/BalthazarArgall/Cataclysm-DDA into CombatExoskeletonUpdate"" This reverts commit 572fe896c3b14d1c3b1abfa10866f3bf93d01f7f. --- data/json/professions.json | 4 +- .../Defense_Mode/overmap_specials.json | 1 + .../Defense_Mode/overmap_specials.json | 1 + data/mods/Xedra_Evolved/items/alchemy.json | 144 ++++++++++++++++++ .../perks/perk_data/Alchemy1.json | 2 +- .../Defense_Mode/overmap_specials.json | 1 + 6 files changed, 150 insertions(+), 3 deletions(-) diff --git a/data/json/professions.json b/data/json/professions.json index ce2b21183f527..b100b69bbebe0 100644 --- a/data/json/professions.json +++ b/data/json/professions.json @@ -6058,8 +6058,8 @@ "prof_auto_pistols_familiar" ], "skills": [ - { "level": 5, "name": "gun" }, - { "level": 5, "name": "rifle" }, + { "level": 7, "name": "gun" }, + { "level": 7, "name": "rifle" }, { "level": 4, "name": "pistol" }, { "level": 3, "name": "melee" }, { "level": 3, "name": "stabbing" }, diff --git a/data/mods/Magiclysm/mod_interactions/Defense_Mode/overmap_specials.json b/data/mods/Magiclysm/mod_interactions/Defense_Mode/overmap_specials.json index c377ec5c8bd17..db426c718cd7a 100644 --- a/data/mods/Magiclysm/mod_interactions/Defense_Mode/overmap_specials.json +++ b/data/mods/Magiclysm/mod_interactions/Defense_Mode/overmap_specials.json @@ -61,6 +61,7 @@ "locations": [ "lake_surface" ], "city_distance": [ 40, -1 ], "occurrences": [ 100, 100 ], + "eoc": { "id": "EOC_DM_TOWER_GENERATE", "condition": { "mod_is_loaded": "defense_mode" } }, "flags": [ "DEFENSE_MODE", "GLOBALLY_UNIQUE", "LAKE" ] } ] diff --git a/data/mods/MindOverMatter/modinteractions/Defense_Mode/overmap_specials.json b/data/mods/MindOverMatter/modinteractions/Defense_Mode/overmap_specials.json index 771d89fe5de0d..1b0f43b469bc7 100644 --- a/data/mods/MindOverMatter/modinteractions/Defense_Mode/overmap_specials.json +++ b/data/mods/MindOverMatter/modinteractions/Defense_Mode/overmap_specials.json @@ -11,6 +11,7 @@ "locations": [ "land" ], "city_distance": [ 40, -1 ], "occurrences": [ 100, 100 ], + "eoc": { "id": "EOC_DM_CUBICAL_GENERATE", "condition": { "mod_is_loaded": "defense_mode" } }, "flags": [ "DEFENSE_MODE", "GLOBALLY_UNIQUE" ] } ] diff --git a/data/mods/Xedra_Evolved/items/alchemy.json b/data/mods/Xedra_Evolved/items/alchemy.json index dd91dc55b2acc..cf3a66fadad2a 100644 --- a/data/mods/Xedra_Evolved/items/alchemy.json +++ b/data/mods/Xedra_Evolved/items/alchemy.json @@ -299,5 +299,149 @@ "color": "green_yellow", "calories": 50, "copy-from": "life_extension_potion" + }, + { + "id": "plant_imbuement", + "type": "COMESTIBLE", + "comestible_type": "MED", + "name": { "str_sp": "Imbuement of the Trees" }, + "description": ".", + "weight": "50 g", + "volume": "2 ml", + "price": "150 cent", + "price_postapoc": "200 USD", + "material": [ "water" ], + "symbol": "!", + "color": "light_cyan", + "container": "flask_glass", + "quench": 2, + "healthy": 7, + "fun": -30, + "flags": [ "NO_INGEST", "WATER_DISSOLVE", "EDIBLE_FROZEN" ], + "use_action": { + "type": "effect_on_conditions", + "description": "Drink the potion. Will not work on those too distant from humanity already.", + "effect_on_conditions": [ "become_plant_fae" ] + } + }, + { + "id": "earth_imbuement", + "type": "COMESTIBLE", + "comestible_type": "MED", + "name": { "str_sp": "Imbuement of the Earth" }, + "description": ".", + "weight": "50 g", + "volume": "2 ml", + "price": "150 cent", + "price_postapoc": "200 USD", + "material": [ "water" ], + "symbol": "!", + "color": "light_cyan", + "container": "flask_glass", + "quench": 2, + "healthy": 7, + "fun": -30, + "flags": [ "NO_INGEST", "WATER_DISSOLVE", "EDIBLE_FROZEN" ], + "use_action": { + "type": "effect_on_conditions", + "description": "Drink the potion. Will not work on those too distant from humanity already.", + "effect_on_conditions": [ "become_earth_fae" ] + } + }, + { + "id": "water_imbuement", + "type": "COMESTIBLE", + "comestible_type": "MED", + "name": { "str_sp": "Imbuement of the Waters" }, + "description": ".", + "weight": "50 g", + "volume": "2 ml", + "price": "150 cent", + "price_postapoc": "200 USD", + "material": [ "water" ], + "symbol": "!", + "color": "light_cyan", + "container": "flask_glass", + "quench": 2, + "healthy": 7, + "fun": -30, + "flags": [ "NO_INGEST", "WATER_DISSOLVE", "EDIBLE_FROZEN" ], + "use_action": { + "type": "effect_on_conditions", + "description": "Drink the potion. Will not work on those too distant from humanity already.", + "effect_on_conditions": [ "become_water_fae" ] + } + }, + { + "id": "air_imbuement", + "type": "COMESTIBLE", + "comestible_type": "MED", + "name": { "str_sp": "Imbuement of the Winds" }, + "description": ".", + "weight": "50 g", + "volume": "2 ml", + "price": "150 cent", + "price_postapoc": "200 USD", + "material": [ "water" ], + "symbol": "!", + "color": "light_cyan", + "container": "flask_glass", + "quench": 2, + "healthy": 7, + "fun": -30, + "flags": [ "NO_INGEST", "WATER_DISSOLVE", "EDIBLE_FROZEN" ], + "use_action": { + "type": "effect_on_conditions", + "description": "Drink the potion. Will not work on those too distant from humanity already.", + "effect_on_conditions": [ "become_air_fae" ] + } + }, + { + "id": "fire_imbuement", + "type": "COMESTIBLE", + "comestible_type": "MED", + "name": { "str_sp": "Imbuement of the Flames" }, + "description": ".", + "weight": "50 g", + "volume": "2 ml", + "price": "150 cent", + "price_postapoc": "200 USD", + "material": [ "water" ], + "symbol": "!", + "color": "light_cyan", + "container": "flask_glass", + "quench": 2, + "healthy": 7, + "fun": -30, + "flags": [ "NO_INGEST", "WATER_DISSOLVE", "EDIBLE_FROZEN" ], + "use_action": { + "type": "effect_on_conditions", + "description": "Drink the potion. Will not work on those too distant from humanity already.", + "effect_on_conditions": [ "become_fire_fae" ] + } + }, + { + "id": "doll_imbuement", + "type": "COMESTIBLE", + "comestible_type": "MED", + "name": { "str_sp": "Imbuement of Parchment" }, + "description": ".", + "weight": "50 g", + "volume": "2 ml", + "price": "150 cent", + "price_postapoc": "200 USD", + "material": [ "water" ], + "symbol": "!", + "color": "light_cyan", + "container": "flask_glass", + "quench": 2, + "healthy": 7, + "fun": -30, + "flags": [ "NO_INGEST", "WATER_DISSOLVE", "EDIBLE_FROZEN" ], + "use_action": { + "type": "effect_on_conditions", + "description": "Drink the potion. Will not work on those too distant from humanity already.", + "effect_on_conditions": [ "become_doll_fae" ] + } } ] diff --git a/data/mods/Xedra_Evolved/mod_interactions/BombasticPerks/perks/perk_data/Alchemy1.json b/data/mods/Xedra_Evolved/mod_interactions/BombasticPerks/perks/perk_data/Alchemy1.json index 5482aa974ea33..1e7088387fca3 100644 --- a/data/mods/Xedra_Evolved/mod_interactions/BombasticPerks/perks/perk_data/Alchemy1.json +++ b/data/mods/Xedra_Evolved/mod_interactions/BombasticPerks/perks/perk_data/Alchemy1.json @@ -135,7 +135,7 @@ "condition": { "not": { "u_has_flag": "MUTATION_THRESHOLD" } }, "effect": [ { - "u_message": "You imbibed the concoction and you feel your soul merge with an alien power, becoming weirdly doll-like?" + "u_message": "You imbibed the concoction and you feel your soul merge with an alien power, becoming wierdly doll-like?." }, { "u_add_trait": "HOMULLUS" }, { "u_learn_recipe": "mutagen_dollkin" }, diff --git a/data/mods/Xedra_Evolved/mod_interactions/Defense_Mode/overmap_specials.json b/data/mods/Xedra_Evolved/mod_interactions/Defense_Mode/overmap_specials.json index 535991009c85c..3e17b17d55d21 100644 --- a/data/mods/Xedra_Evolved/mod_interactions/Defense_Mode/overmap_specials.json +++ b/data/mods/Xedra_Evolved/mod_interactions/Defense_Mode/overmap_specials.json @@ -31,6 +31,7 @@ "locations": [ "land" ], "city_distance": [ 40, -1 ], "occurrences": [ 100, 100 ], + "eoc": { "id": "EOC_DM_OFFICE_GENERATE", "condition": { "mod_is_loaded": "defense_mode" } }, "flags": [ "DEFENSE_MODE", "GLOBALLY_UNIQUE" ] }, { From 6e1232e70f8422802c7eb71254e5f2da3d9ab35c Mon Sep 17 00:00:00 2001 From: BalthazarArgall Date: Sat, 9 Mar 2024 00:02:11 +0100 Subject: [PATCH 24/73] Revert "Merge branch 'CombatExoskeletonUpdate' of https://github.com/BalthazarArgall/Cataclysm-DDA into CombatExoskeletonUpdate" This reverts commit 7b9b9b66b6fd6873d728eb055c229510372a1f6b, reversing changes made to 3d13b2ae662408df061724615d11353ea62f05c3. --- data/json/professions.json | 4 +- .../Defense_Mode/overmap_specials.json | 1 - .../Defense_Mode/overmap_specials.json | 1 - data/mods/Xedra_Evolved/items/alchemy.json | 144 ------------------ .../perks/perk_data/Alchemy1.json | 100 ------------ .../Defense_Mode/overmap_specials.json | 1 - 6 files changed, 2 insertions(+), 249 deletions(-) diff --git a/data/json/professions.json b/data/json/professions.json index b100b69bbebe0..ce2b21183f527 100644 --- a/data/json/professions.json +++ b/data/json/professions.json @@ -6058,8 +6058,8 @@ "prof_auto_pistols_familiar" ], "skills": [ - { "level": 7, "name": "gun" }, - { "level": 7, "name": "rifle" }, + { "level": 5, "name": "gun" }, + { "level": 5, "name": "rifle" }, { "level": 4, "name": "pistol" }, { "level": 3, "name": "melee" }, { "level": 3, "name": "stabbing" }, diff --git a/data/mods/Magiclysm/mod_interactions/Defense_Mode/overmap_specials.json b/data/mods/Magiclysm/mod_interactions/Defense_Mode/overmap_specials.json index db426c718cd7a..c377ec5c8bd17 100644 --- a/data/mods/Magiclysm/mod_interactions/Defense_Mode/overmap_specials.json +++ b/data/mods/Magiclysm/mod_interactions/Defense_Mode/overmap_specials.json @@ -61,7 +61,6 @@ "locations": [ "lake_surface" ], "city_distance": [ 40, -1 ], "occurrences": [ 100, 100 ], - "eoc": { "id": "EOC_DM_TOWER_GENERATE", "condition": { "mod_is_loaded": "defense_mode" } }, "flags": [ "DEFENSE_MODE", "GLOBALLY_UNIQUE", "LAKE" ] } ] diff --git a/data/mods/MindOverMatter/modinteractions/Defense_Mode/overmap_specials.json b/data/mods/MindOverMatter/modinteractions/Defense_Mode/overmap_specials.json index 1b0f43b469bc7..771d89fe5de0d 100644 --- a/data/mods/MindOverMatter/modinteractions/Defense_Mode/overmap_specials.json +++ b/data/mods/MindOverMatter/modinteractions/Defense_Mode/overmap_specials.json @@ -11,7 +11,6 @@ "locations": [ "land" ], "city_distance": [ 40, -1 ], "occurrences": [ 100, 100 ], - "eoc": { "id": "EOC_DM_CUBICAL_GENERATE", "condition": { "mod_is_loaded": "defense_mode" } }, "flags": [ "DEFENSE_MODE", "GLOBALLY_UNIQUE" ] } ] diff --git a/data/mods/Xedra_Evolved/items/alchemy.json b/data/mods/Xedra_Evolved/items/alchemy.json index cf3a66fadad2a..dd91dc55b2acc 100644 --- a/data/mods/Xedra_Evolved/items/alchemy.json +++ b/data/mods/Xedra_Evolved/items/alchemy.json @@ -299,149 +299,5 @@ "color": "green_yellow", "calories": 50, "copy-from": "life_extension_potion" - }, - { - "id": "plant_imbuement", - "type": "COMESTIBLE", - "comestible_type": "MED", - "name": { "str_sp": "Imbuement of the Trees" }, - "description": ".", - "weight": "50 g", - "volume": "2 ml", - "price": "150 cent", - "price_postapoc": "200 USD", - "material": [ "water" ], - "symbol": "!", - "color": "light_cyan", - "container": "flask_glass", - "quench": 2, - "healthy": 7, - "fun": -30, - "flags": [ "NO_INGEST", "WATER_DISSOLVE", "EDIBLE_FROZEN" ], - "use_action": { - "type": "effect_on_conditions", - "description": "Drink the potion. Will not work on those too distant from humanity already.", - "effect_on_conditions": [ "become_plant_fae" ] - } - }, - { - "id": "earth_imbuement", - "type": "COMESTIBLE", - "comestible_type": "MED", - "name": { "str_sp": "Imbuement of the Earth" }, - "description": ".", - "weight": "50 g", - "volume": "2 ml", - "price": "150 cent", - "price_postapoc": "200 USD", - "material": [ "water" ], - "symbol": "!", - "color": "light_cyan", - "container": "flask_glass", - "quench": 2, - "healthy": 7, - "fun": -30, - "flags": [ "NO_INGEST", "WATER_DISSOLVE", "EDIBLE_FROZEN" ], - "use_action": { - "type": "effect_on_conditions", - "description": "Drink the potion. Will not work on those too distant from humanity already.", - "effect_on_conditions": [ "become_earth_fae" ] - } - }, - { - "id": "water_imbuement", - "type": "COMESTIBLE", - "comestible_type": "MED", - "name": { "str_sp": "Imbuement of the Waters" }, - "description": ".", - "weight": "50 g", - "volume": "2 ml", - "price": "150 cent", - "price_postapoc": "200 USD", - "material": [ "water" ], - "symbol": "!", - "color": "light_cyan", - "container": "flask_glass", - "quench": 2, - "healthy": 7, - "fun": -30, - "flags": [ "NO_INGEST", "WATER_DISSOLVE", "EDIBLE_FROZEN" ], - "use_action": { - "type": "effect_on_conditions", - "description": "Drink the potion. Will not work on those too distant from humanity already.", - "effect_on_conditions": [ "become_water_fae" ] - } - }, - { - "id": "air_imbuement", - "type": "COMESTIBLE", - "comestible_type": "MED", - "name": { "str_sp": "Imbuement of the Winds" }, - "description": ".", - "weight": "50 g", - "volume": "2 ml", - "price": "150 cent", - "price_postapoc": "200 USD", - "material": [ "water" ], - "symbol": "!", - "color": "light_cyan", - "container": "flask_glass", - "quench": 2, - "healthy": 7, - "fun": -30, - "flags": [ "NO_INGEST", "WATER_DISSOLVE", "EDIBLE_FROZEN" ], - "use_action": { - "type": "effect_on_conditions", - "description": "Drink the potion. Will not work on those too distant from humanity already.", - "effect_on_conditions": [ "become_air_fae" ] - } - }, - { - "id": "fire_imbuement", - "type": "COMESTIBLE", - "comestible_type": "MED", - "name": { "str_sp": "Imbuement of the Flames" }, - "description": ".", - "weight": "50 g", - "volume": "2 ml", - "price": "150 cent", - "price_postapoc": "200 USD", - "material": [ "water" ], - "symbol": "!", - "color": "light_cyan", - "container": "flask_glass", - "quench": 2, - "healthy": 7, - "fun": -30, - "flags": [ "NO_INGEST", "WATER_DISSOLVE", "EDIBLE_FROZEN" ], - "use_action": { - "type": "effect_on_conditions", - "description": "Drink the potion. Will not work on those too distant from humanity already.", - "effect_on_conditions": [ "become_fire_fae" ] - } - }, - { - "id": "doll_imbuement", - "type": "COMESTIBLE", - "comestible_type": "MED", - "name": { "str_sp": "Imbuement of Parchment" }, - "description": ".", - "weight": "50 g", - "volume": "2 ml", - "price": "150 cent", - "price_postapoc": "200 USD", - "material": [ "water" ], - "symbol": "!", - "color": "light_cyan", - "container": "flask_glass", - "quench": 2, - "healthy": 7, - "fun": -30, - "flags": [ "NO_INGEST", "WATER_DISSOLVE", "EDIBLE_FROZEN" ], - "use_action": { - "type": "effect_on_conditions", - "description": "Drink the potion. Will not work on those too distant from humanity already.", - "effect_on_conditions": [ "become_doll_fae" ] - } } ] diff --git a/data/mods/Xedra_Evolved/mod_interactions/BombasticPerks/perks/perk_data/Alchemy1.json b/data/mods/Xedra_Evolved/mod_interactions/BombasticPerks/perks/perk_data/Alchemy1.json index 1e7088387fca3..5f7c1362f5565 100644 --- a/data/mods/Xedra_Evolved/mod_interactions/BombasticPerks/perks/perk_data/Alchemy1.json +++ b/data/mods/Xedra_Evolved/mod_interactions/BombasticPerks/perks/perk_data/Alchemy1.json @@ -98,105 +98,5 @@ { "u_add_effect": "mental_exhaustion", "intensity": 1, "duration": "192 hours" } ], "false_effect": [ { "u_message": "Your thoughts are too scattered to unearth more secrets of the universe." } ] - }, - { - "type": "effect_on_condition", - "id": "EOC_ALCHEMY5", - "condition": { "and": [ { "u_has_trait": "perk_ALCHEMY5" }, { "not": { "u_has_effect": "mental_exhaustion" } } ] }, - "effect": [ - { - "u_roll_remainder": [ "plant_imbuement", "earth_imbuement", "water_imbuement", "air_imbuement", "fire_imbuement", "doll_imbuement" ], - "type": "recipe", - "true_eocs": [ "EOC_SUCCESFUL_ROLL_REMAINDER_ALCHEMY" ], - "false_eocs": [ "EOC_COMPLETED_ROLL_REMAINDER_ALCHEMY" ] - }, - { "u_add_effect": "mental_exhaustion", "intensity": 1, "duration": "384 hours" } - ], - "false_effect": [ { "u_message": "Your thoughts are too scattered to unearth more secrets of the universe." } ] - }, - { - "type": "effect_on_condition", - "id": "become_fire_fae", - "condition": { "not": { "u_has_flag": "MUTATION_THRESHOLD" } }, - "effect": [ - { - "u_message": "You imbibed the concoction and you feel your soul merge with an alien power, becoming attuned to fire.", - "type": "good" - }, - { "u_add_trait": "SALAMANDER" }, - { "u_learn_recipe": "mutagen_flamekin" }, - { "u_learn_recipe": "charred_sacrifice" } - ], - "false_effect": [ { "u_message": "The power attempts to take hold, but is rebuffed by something sinister within you." } ] - }, - { - "type": "effect_on_condition", - "id": "become_doll_fae", - "condition": { "not": { "u_has_flag": "MUTATION_THRESHOLD" } }, - "effect": [ - { - "u_message": "You imbibed the concoction and you feel your soul merge with an alien power, becoming wierdly doll-like?." - }, - { "u_add_trait": "HOMULLUS" }, - { "u_learn_recipe": "mutagen_dollkin" }, - { "u_learn_recipe": "doll_repair_paste" } - ], - "false_effect": [ { "u_message": "The power attempts to take hold, but is rebuffed by something sinister within you." } ] - }, - { - "type": "effect_on_condition", - "id": "become_air_fae", - "condition": { "not": { "u_has_flag": "MUTATION_THRESHOLD" } }, - "effect": [ - { - "u_message": "You imbibed the concoction and you feel your soul merge with an alien power, becoming attuned to the winds." - }, - { "u_add_trait": "SYLPH" }, - { "u_learn_recipe": "mutagen_airkin" }, - { "u_learn_recipe": "ethereal_draught" } - ], - "false_effect": [ { "u_message": "The power attempts to take hold, but is rebuffed by something sinister within you." } ] - }, - { - "type": "effect_on_condition", - "id": "become_water_fae", - "condition": { "not": { "u_has_flag": "MUTATION_THRESHOLD" } }, - "effect": [ - { - "u_message": "You imbibed the concoction and you feel your soul merge with an alien power, becoming attuned to the waters." - }, - { "u_add_trait": "UNDINE" }, - { "u_learn_recipe": "mutagen_waterkin" }, - { "u_learn_recipe": "cerulean_poultice" } - ], - "false_effect": [ { "u_message": "The power attempts to take hold, but is rebuffed by something sinister within you." } ] - }, - { - "type": "effect_on_condition", - "id": "become_earth_fae", - "condition": { "not": { "u_has_flag": "MUTATION_THRESHOLD" } }, - "effect": [ - { - "u_message": "You imbibed the concoction and you feel your soul merge with an alien power, becoming attuned to the earth." - }, - { "u_add_trait": "IERDE" }, - { "u_learn_recipe": "mutagen_earthkin" }, - { "u_learn_recipe": "cthonic_poultice" } - ], - "false_effect": [ { "u_message": "The power attempts to take hold, but is rebuffed by something sinister within you." } ] - }, - { - "type": "effect_on_condition", - "id": "become_plant_fae", - "condition": { "not": { "u_has_flag": "MUTATION_THRESHOLD" } }, - "effect": [ - { - "u_message": "You imbibed the concoction and you feel your soul merge with an alien power, becoming attuned to the natural world." - }, - { "u_add_trait": "ARVORE" }, - { "u_learn_recipe": "mutagen_plantkin" }, - { "u_learn_recipe": "verdant_poultice" } - ], - "false_effect": [ { "u_message": "The power attempts to take hold, but is rebuffed by something sinister within you." } ] } ] diff --git a/data/mods/Xedra_Evolved/mod_interactions/Defense_Mode/overmap_specials.json b/data/mods/Xedra_Evolved/mod_interactions/Defense_Mode/overmap_specials.json index 3e17b17d55d21..535991009c85c 100644 --- a/data/mods/Xedra_Evolved/mod_interactions/Defense_Mode/overmap_specials.json +++ b/data/mods/Xedra_Evolved/mod_interactions/Defense_Mode/overmap_specials.json @@ -31,7 +31,6 @@ "locations": [ "land" ], "city_distance": [ 40, -1 ], "occurrences": [ 100, 100 ], - "eoc": { "id": "EOC_DM_OFFICE_GENERATE", "condition": { "mod_is_loaded": "defense_mode" } }, "flags": [ "DEFENSE_MODE", "GLOBALLY_UNIQUE" ] }, { From b18a469e6a2249dbc9138b4363e1b297153d67c3 Mon Sep 17 00:00:00 2001 From: BalthazarArgall Date: Sat, 9 Mar 2024 00:02:57 +0100 Subject: [PATCH 25/73] Revert "Revert "Merge branch 'CombatExoskeletonUpdate' of https://github.com/BalthazarArgall/Cataclysm-DDA into CombatExoskeletonUpdate"" This reverts commit 6e1232e70f8422802c7eb71254e5f2da3d9ab35c. --- data/json/professions.json | 4 +- .../Defense_Mode/overmap_specials.json | 1 + .../Defense_Mode/overmap_specials.json | 1 + data/mods/Xedra_Evolved/items/alchemy.json | 144 ++++++++++++++++++ .../perks/perk_data/Alchemy1.json | 100 ++++++++++++ .../Defense_Mode/overmap_specials.json | 1 + 6 files changed, 249 insertions(+), 2 deletions(-) diff --git a/data/json/professions.json b/data/json/professions.json index ce2b21183f527..b100b69bbebe0 100644 --- a/data/json/professions.json +++ b/data/json/professions.json @@ -6058,8 +6058,8 @@ "prof_auto_pistols_familiar" ], "skills": [ - { "level": 5, "name": "gun" }, - { "level": 5, "name": "rifle" }, + { "level": 7, "name": "gun" }, + { "level": 7, "name": "rifle" }, { "level": 4, "name": "pistol" }, { "level": 3, "name": "melee" }, { "level": 3, "name": "stabbing" }, diff --git a/data/mods/Magiclysm/mod_interactions/Defense_Mode/overmap_specials.json b/data/mods/Magiclysm/mod_interactions/Defense_Mode/overmap_specials.json index c377ec5c8bd17..db426c718cd7a 100644 --- a/data/mods/Magiclysm/mod_interactions/Defense_Mode/overmap_specials.json +++ b/data/mods/Magiclysm/mod_interactions/Defense_Mode/overmap_specials.json @@ -61,6 +61,7 @@ "locations": [ "lake_surface" ], "city_distance": [ 40, -1 ], "occurrences": [ 100, 100 ], + "eoc": { "id": "EOC_DM_TOWER_GENERATE", "condition": { "mod_is_loaded": "defense_mode" } }, "flags": [ "DEFENSE_MODE", "GLOBALLY_UNIQUE", "LAKE" ] } ] diff --git a/data/mods/MindOverMatter/modinteractions/Defense_Mode/overmap_specials.json b/data/mods/MindOverMatter/modinteractions/Defense_Mode/overmap_specials.json index 771d89fe5de0d..1b0f43b469bc7 100644 --- a/data/mods/MindOverMatter/modinteractions/Defense_Mode/overmap_specials.json +++ b/data/mods/MindOverMatter/modinteractions/Defense_Mode/overmap_specials.json @@ -11,6 +11,7 @@ "locations": [ "land" ], "city_distance": [ 40, -1 ], "occurrences": [ 100, 100 ], + "eoc": { "id": "EOC_DM_CUBICAL_GENERATE", "condition": { "mod_is_loaded": "defense_mode" } }, "flags": [ "DEFENSE_MODE", "GLOBALLY_UNIQUE" ] } ] diff --git a/data/mods/Xedra_Evolved/items/alchemy.json b/data/mods/Xedra_Evolved/items/alchemy.json index dd91dc55b2acc..cf3a66fadad2a 100644 --- a/data/mods/Xedra_Evolved/items/alchemy.json +++ b/data/mods/Xedra_Evolved/items/alchemy.json @@ -299,5 +299,149 @@ "color": "green_yellow", "calories": 50, "copy-from": "life_extension_potion" + }, + { + "id": "plant_imbuement", + "type": "COMESTIBLE", + "comestible_type": "MED", + "name": { "str_sp": "Imbuement of the Trees" }, + "description": ".", + "weight": "50 g", + "volume": "2 ml", + "price": "150 cent", + "price_postapoc": "200 USD", + "material": [ "water" ], + "symbol": "!", + "color": "light_cyan", + "container": "flask_glass", + "quench": 2, + "healthy": 7, + "fun": -30, + "flags": [ "NO_INGEST", "WATER_DISSOLVE", "EDIBLE_FROZEN" ], + "use_action": { + "type": "effect_on_conditions", + "description": "Drink the potion. Will not work on those too distant from humanity already.", + "effect_on_conditions": [ "become_plant_fae" ] + } + }, + { + "id": "earth_imbuement", + "type": "COMESTIBLE", + "comestible_type": "MED", + "name": { "str_sp": "Imbuement of the Earth" }, + "description": ".", + "weight": "50 g", + "volume": "2 ml", + "price": "150 cent", + "price_postapoc": "200 USD", + "material": [ "water" ], + "symbol": "!", + "color": "light_cyan", + "container": "flask_glass", + "quench": 2, + "healthy": 7, + "fun": -30, + "flags": [ "NO_INGEST", "WATER_DISSOLVE", "EDIBLE_FROZEN" ], + "use_action": { + "type": "effect_on_conditions", + "description": "Drink the potion. Will not work on those too distant from humanity already.", + "effect_on_conditions": [ "become_earth_fae" ] + } + }, + { + "id": "water_imbuement", + "type": "COMESTIBLE", + "comestible_type": "MED", + "name": { "str_sp": "Imbuement of the Waters" }, + "description": ".", + "weight": "50 g", + "volume": "2 ml", + "price": "150 cent", + "price_postapoc": "200 USD", + "material": [ "water" ], + "symbol": "!", + "color": "light_cyan", + "container": "flask_glass", + "quench": 2, + "healthy": 7, + "fun": -30, + "flags": [ "NO_INGEST", "WATER_DISSOLVE", "EDIBLE_FROZEN" ], + "use_action": { + "type": "effect_on_conditions", + "description": "Drink the potion. Will not work on those too distant from humanity already.", + "effect_on_conditions": [ "become_water_fae" ] + } + }, + { + "id": "air_imbuement", + "type": "COMESTIBLE", + "comestible_type": "MED", + "name": { "str_sp": "Imbuement of the Winds" }, + "description": ".", + "weight": "50 g", + "volume": "2 ml", + "price": "150 cent", + "price_postapoc": "200 USD", + "material": [ "water" ], + "symbol": "!", + "color": "light_cyan", + "container": "flask_glass", + "quench": 2, + "healthy": 7, + "fun": -30, + "flags": [ "NO_INGEST", "WATER_DISSOLVE", "EDIBLE_FROZEN" ], + "use_action": { + "type": "effect_on_conditions", + "description": "Drink the potion. Will not work on those too distant from humanity already.", + "effect_on_conditions": [ "become_air_fae" ] + } + }, + { + "id": "fire_imbuement", + "type": "COMESTIBLE", + "comestible_type": "MED", + "name": { "str_sp": "Imbuement of the Flames" }, + "description": ".", + "weight": "50 g", + "volume": "2 ml", + "price": "150 cent", + "price_postapoc": "200 USD", + "material": [ "water" ], + "symbol": "!", + "color": "light_cyan", + "container": "flask_glass", + "quench": 2, + "healthy": 7, + "fun": -30, + "flags": [ "NO_INGEST", "WATER_DISSOLVE", "EDIBLE_FROZEN" ], + "use_action": { + "type": "effect_on_conditions", + "description": "Drink the potion. Will not work on those too distant from humanity already.", + "effect_on_conditions": [ "become_fire_fae" ] + } + }, + { + "id": "doll_imbuement", + "type": "COMESTIBLE", + "comestible_type": "MED", + "name": { "str_sp": "Imbuement of Parchment" }, + "description": ".", + "weight": "50 g", + "volume": "2 ml", + "price": "150 cent", + "price_postapoc": "200 USD", + "material": [ "water" ], + "symbol": "!", + "color": "light_cyan", + "container": "flask_glass", + "quench": 2, + "healthy": 7, + "fun": -30, + "flags": [ "NO_INGEST", "WATER_DISSOLVE", "EDIBLE_FROZEN" ], + "use_action": { + "type": "effect_on_conditions", + "description": "Drink the potion. Will not work on those too distant from humanity already.", + "effect_on_conditions": [ "become_doll_fae" ] + } } ] diff --git a/data/mods/Xedra_Evolved/mod_interactions/BombasticPerks/perks/perk_data/Alchemy1.json b/data/mods/Xedra_Evolved/mod_interactions/BombasticPerks/perks/perk_data/Alchemy1.json index 5f7c1362f5565..1e7088387fca3 100644 --- a/data/mods/Xedra_Evolved/mod_interactions/BombasticPerks/perks/perk_data/Alchemy1.json +++ b/data/mods/Xedra_Evolved/mod_interactions/BombasticPerks/perks/perk_data/Alchemy1.json @@ -98,5 +98,105 @@ { "u_add_effect": "mental_exhaustion", "intensity": 1, "duration": "192 hours" } ], "false_effect": [ { "u_message": "Your thoughts are too scattered to unearth more secrets of the universe." } ] + }, + { + "type": "effect_on_condition", + "id": "EOC_ALCHEMY5", + "condition": { "and": [ { "u_has_trait": "perk_ALCHEMY5" }, { "not": { "u_has_effect": "mental_exhaustion" } } ] }, + "effect": [ + { + "u_roll_remainder": [ "plant_imbuement", "earth_imbuement", "water_imbuement", "air_imbuement", "fire_imbuement", "doll_imbuement" ], + "type": "recipe", + "true_eocs": [ "EOC_SUCCESFUL_ROLL_REMAINDER_ALCHEMY" ], + "false_eocs": [ "EOC_COMPLETED_ROLL_REMAINDER_ALCHEMY" ] + }, + { "u_add_effect": "mental_exhaustion", "intensity": 1, "duration": "384 hours" } + ], + "false_effect": [ { "u_message": "Your thoughts are too scattered to unearth more secrets of the universe." } ] + }, + { + "type": "effect_on_condition", + "id": "become_fire_fae", + "condition": { "not": { "u_has_flag": "MUTATION_THRESHOLD" } }, + "effect": [ + { + "u_message": "You imbibed the concoction and you feel your soul merge with an alien power, becoming attuned to fire.", + "type": "good" + }, + { "u_add_trait": "SALAMANDER" }, + { "u_learn_recipe": "mutagen_flamekin" }, + { "u_learn_recipe": "charred_sacrifice" } + ], + "false_effect": [ { "u_message": "The power attempts to take hold, but is rebuffed by something sinister within you." } ] + }, + { + "type": "effect_on_condition", + "id": "become_doll_fae", + "condition": { "not": { "u_has_flag": "MUTATION_THRESHOLD" } }, + "effect": [ + { + "u_message": "You imbibed the concoction and you feel your soul merge with an alien power, becoming wierdly doll-like?." + }, + { "u_add_trait": "HOMULLUS" }, + { "u_learn_recipe": "mutagen_dollkin" }, + { "u_learn_recipe": "doll_repair_paste" } + ], + "false_effect": [ { "u_message": "The power attempts to take hold, but is rebuffed by something sinister within you." } ] + }, + { + "type": "effect_on_condition", + "id": "become_air_fae", + "condition": { "not": { "u_has_flag": "MUTATION_THRESHOLD" } }, + "effect": [ + { + "u_message": "You imbibed the concoction and you feel your soul merge with an alien power, becoming attuned to the winds." + }, + { "u_add_trait": "SYLPH" }, + { "u_learn_recipe": "mutagen_airkin" }, + { "u_learn_recipe": "ethereal_draught" } + ], + "false_effect": [ { "u_message": "The power attempts to take hold, but is rebuffed by something sinister within you." } ] + }, + { + "type": "effect_on_condition", + "id": "become_water_fae", + "condition": { "not": { "u_has_flag": "MUTATION_THRESHOLD" } }, + "effect": [ + { + "u_message": "You imbibed the concoction and you feel your soul merge with an alien power, becoming attuned to the waters." + }, + { "u_add_trait": "UNDINE" }, + { "u_learn_recipe": "mutagen_waterkin" }, + { "u_learn_recipe": "cerulean_poultice" } + ], + "false_effect": [ { "u_message": "The power attempts to take hold, but is rebuffed by something sinister within you." } ] + }, + { + "type": "effect_on_condition", + "id": "become_earth_fae", + "condition": { "not": { "u_has_flag": "MUTATION_THRESHOLD" } }, + "effect": [ + { + "u_message": "You imbibed the concoction and you feel your soul merge with an alien power, becoming attuned to the earth." + }, + { "u_add_trait": "IERDE" }, + { "u_learn_recipe": "mutagen_earthkin" }, + { "u_learn_recipe": "cthonic_poultice" } + ], + "false_effect": [ { "u_message": "The power attempts to take hold, but is rebuffed by something sinister within you." } ] + }, + { + "type": "effect_on_condition", + "id": "become_plant_fae", + "condition": { "not": { "u_has_flag": "MUTATION_THRESHOLD" } }, + "effect": [ + { + "u_message": "You imbibed the concoction and you feel your soul merge with an alien power, becoming attuned to the natural world." + }, + { "u_add_trait": "ARVORE" }, + { "u_learn_recipe": "mutagen_plantkin" }, + { "u_learn_recipe": "verdant_poultice" } + ], + "false_effect": [ { "u_message": "The power attempts to take hold, but is rebuffed by something sinister within you." } ] } ] diff --git a/data/mods/Xedra_Evolved/mod_interactions/Defense_Mode/overmap_specials.json b/data/mods/Xedra_Evolved/mod_interactions/Defense_Mode/overmap_specials.json index 535991009c85c..3e17b17d55d21 100644 --- a/data/mods/Xedra_Evolved/mod_interactions/Defense_Mode/overmap_specials.json +++ b/data/mods/Xedra_Evolved/mod_interactions/Defense_Mode/overmap_specials.json @@ -31,6 +31,7 @@ "locations": [ "land" ], "city_distance": [ 40, -1 ], "occurrences": [ 100, 100 ], + "eoc": { "id": "EOC_DM_OFFICE_GENERATE", "condition": { "mod_is_loaded": "defense_mode" } }, "flags": [ "DEFENSE_MODE", "GLOBALLY_UNIQUE" ] }, { From 8b2d6e375214ab8b29258a4d76579d350d0f335d Mon Sep 17 00:00:00 2001 From: BalthazarArgall Date: Sat, 9 Mar 2024 00:10:21 +0100 Subject: [PATCH 26/73] Revert "Merge branch 'CleverRaven:master' into CombatExoskeletonUpdate" This reverts commit e75fd8231283ae490ca2b60801b16952f76cc8a0, reversing changes made to 0f10db9aa810ab58be7bd2d644ad819d95fdb2e2. --- data/json/professions.json | 4 +- .../Defense_Mode/overmap_specials.json | 1 - .../Defense_Mode/overmap_specials.json | 1 - data/mods/Xedra_Evolved/items/alchemy.json | 144 ------------------ .../perks/perk_data/Alchemy1.json | 100 ------------ .../Defense_Mode/overmap_specials.json | 1 - 6 files changed, 2 insertions(+), 249 deletions(-) diff --git a/data/json/professions.json b/data/json/professions.json index b100b69bbebe0..ce2b21183f527 100644 --- a/data/json/professions.json +++ b/data/json/professions.json @@ -6058,8 +6058,8 @@ "prof_auto_pistols_familiar" ], "skills": [ - { "level": 7, "name": "gun" }, - { "level": 7, "name": "rifle" }, + { "level": 5, "name": "gun" }, + { "level": 5, "name": "rifle" }, { "level": 4, "name": "pistol" }, { "level": 3, "name": "melee" }, { "level": 3, "name": "stabbing" }, diff --git a/data/mods/Magiclysm/mod_interactions/Defense_Mode/overmap_specials.json b/data/mods/Magiclysm/mod_interactions/Defense_Mode/overmap_specials.json index db426c718cd7a..c377ec5c8bd17 100644 --- a/data/mods/Magiclysm/mod_interactions/Defense_Mode/overmap_specials.json +++ b/data/mods/Magiclysm/mod_interactions/Defense_Mode/overmap_specials.json @@ -61,7 +61,6 @@ "locations": [ "lake_surface" ], "city_distance": [ 40, -1 ], "occurrences": [ 100, 100 ], - "eoc": { "id": "EOC_DM_TOWER_GENERATE", "condition": { "mod_is_loaded": "defense_mode" } }, "flags": [ "DEFENSE_MODE", "GLOBALLY_UNIQUE", "LAKE" ] } ] diff --git a/data/mods/MindOverMatter/modinteractions/Defense_Mode/overmap_specials.json b/data/mods/MindOverMatter/modinteractions/Defense_Mode/overmap_specials.json index 1b0f43b469bc7..771d89fe5de0d 100644 --- a/data/mods/MindOverMatter/modinteractions/Defense_Mode/overmap_specials.json +++ b/data/mods/MindOverMatter/modinteractions/Defense_Mode/overmap_specials.json @@ -11,7 +11,6 @@ "locations": [ "land" ], "city_distance": [ 40, -1 ], "occurrences": [ 100, 100 ], - "eoc": { "id": "EOC_DM_CUBICAL_GENERATE", "condition": { "mod_is_loaded": "defense_mode" } }, "flags": [ "DEFENSE_MODE", "GLOBALLY_UNIQUE" ] } ] diff --git a/data/mods/Xedra_Evolved/items/alchemy.json b/data/mods/Xedra_Evolved/items/alchemy.json index cf3a66fadad2a..dd91dc55b2acc 100644 --- a/data/mods/Xedra_Evolved/items/alchemy.json +++ b/data/mods/Xedra_Evolved/items/alchemy.json @@ -299,149 +299,5 @@ "color": "green_yellow", "calories": 50, "copy-from": "life_extension_potion" - }, - { - "id": "plant_imbuement", - "type": "COMESTIBLE", - "comestible_type": "MED", - "name": { "str_sp": "Imbuement of the Trees" }, - "description": ".", - "weight": "50 g", - "volume": "2 ml", - "price": "150 cent", - "price_postapoc": "200 USD", - "material": [ "water" ], - "symbol": "!", - "color": "light_cyan", - "container": "flask_glass", - "quench": 2, - "healthy": 7, - "fun": -30, - "flags": [ "NO_INGEST", "WATER_DISSOLVE", "EDIBLE_FROZEN" ], - "use_action": { - "type": "effect_on_conditions", - "description": "Drink the potion. Will not work on those too distant from humanity already.", - "effect_on_conditions": [ "become_plant_fae" ] - } - }, - { - "id": "earth_imbuement", - "type": "COMESTIBLE", - "comestible_type": "MED", - "name": { "str_sp": "Imbuement of the Earth" }, - "description": ".", - "weight": "50 g", - "volume": "2 ml", - "price": "150 cent", - "price_postapoc": "200 USD", - "material": [ "water" ], - "symbol": "!", - "color": "light_cyan", - "container": "flask_glass", - "quench": 2, - "healthy": 7, - "fun": -30, - "flags": [ "NO_INGEST", "WATER_DISSOLVE", "EDIBLE_FROZEN" ], - "use_action": { - "type": "effect_on_conditions", - "description": "Drink the potion. Will not work on those too distant from humanity already.", - "effect_on_conditions": [ "become_earth_fae" ] - } - }, - { - "id": "water_imbuement", - "type": "COMESTIBLE", - "comestible_type": "MED", - "name": { "str_sp": "Imbuement of the Waters" }, - "description": ".", - "weight": "50 g", - "volume": "2 ml", - "price": "150 cent", - "price_postapoc": "200 USD", - "material": [ "water" ], - "symbol": "!", - "color": "light_cyan", - "container": "flask_glass", - "quench": 2, - "healthy": 7, - "fun": -30, - "flags": [ "NO_INGEST", "WATER_DISSOLVE", "EDIBLE_FROZEN" ], - "use_action": { - "type": "effect_on_conditions", - "description": "Drink the potion. Will not work on those too distant from humanity already.", - "effect_on_conditions": [ "become_water_fae" ] - } - }, - { - "id": "air_imbuement", - "type": "COMESTIBLE", - "comestible_type": "MED", - "name": { "str_sp": "Imbuement of the Winds" }, - "description": ".", - "weight": "50 g", - "volume": "2 ml", - "price": "150 cent", - "price_postapoc": "200 USD", - "material": [ "water" ], - "symbol": "!", - "color": "light_cyan", - "container": "flask_glass", - "quench": 2, - "healthy": 7, - "fun": -30, - "flags": [ "NO_INGEST", "WATER_DISSOLVE", "EDIBLE_FROZEN" ], - "use_action": { - "type": "effect_on_conditions", - "description": "Drink the potion. Will not work on those too distant from humanity already.", - "effect_on_conditions": [ "become_air_fae" ] - } - }, - { - "id": "fire_imbuement", - "type": "COMESTIBLE", - "comestible_type": "MED", - "name": { "str_sp": "Imbuement of the Flames" }, - "description": ".", - "weight": "50 g", - "volume": "2 ml", - "price": "150 cent", - "price_postapoc": "200 USD", - "material": [ "water" ], - "symbol": "!", - "color": "light_cyan", - "container": "flask_glass", - "quench": 2, - "healthy": 7, - "fun": -30, - "flags": [ "NO_INGEST", "WATER_DISSOLVE", "EDIBLE_FROZEN" ], - "use_action": { - "type": "effect_on_conditions", - "description": "Drink the potion. Will not work on those too distant from humanity already.", - "effect_on_conditions": [ "become_fire_fae" ] - } - }, - { - "id": "doll_imbuement", - "type": "COMESTIBLE", - "comestible_type": "MED", - "name": { "str_sp": "Imbuement of Parchment" }, - "description": ".", - "weight": "50 g", - "volume": "2 ml", - "price": "150 cent", - "price_postapoc": "200 USD", - "material": [ "water" ], - "symbol": "!", - "color": "light_cyan", - "container": "flask_glass", - "quench": 2, - "healthy": 7, - "fun": -30, - "flags": [ "NO_INGEST", "WATER_DISSOLVE", "EDIBLE_FROZEN" ], - "use_action": { - "type": "effect_on_conditions", - "description": "Drink the potion. Will not work on those too distant from humanity already.", - "effect_on_conditions": [ "become_doll_fae" ] - } } ] diff --git a/data/mods/Xedra_Evolved/mod_interactions/BombasticPerks/perks/perk_data/Alchemy1.json b/data/mods/Xedra_Evolved/mod_interactions/BombasticPerks/perks/perk_data/Alchemy1.json index 1e7088387fca3..5f7c1362f5565 100644 --- a/data/mods/Xedra_Evolved/mod_interactions/BombasticPerks/perks/perk_data/Alchemy1.json +++ b/data/mods/Xedra_Evolved/mod_interactions/BombasticPerks/perks/perk_data/Alchemy1.json @@ -98,105 +98,5 @@ { "u_add_effect": "mental_exhaustion", "intensity": 1, "duration": "192 hours" } ], "false_effect": [ { "u_message": "Your thoughts are too scattered to unearth more secrets of the universe." } ] - }, - { - "type": "effect_on_condition", - "id": "EOC_ALCHEMY5", - "condition": { "and": [ { "u_has_trait": "perk_ALCHEMY5" }, { "not": { "u_has_effect": "mental_exhaustion" } } ] }, - "effect": [ - { - "u_roll_remainder": [ "plant_imbuement", "earth_imbuement", "water_imbuement", "air_imbuement", "fire_imbuement", "doll_imbuement" ], - "type": "recipe", - "true_eocs": [ "EOC_SUCCESFUL_ROLL_REMAINDER_ALCHEMY" ], - "false_eocs": [ "EOC_COMPLETED_ROLL_REMAINDER_ALCHEMY" ] - }, - { "u_add_effect": "mental_exhaustion", "intensity": 1, "duration": "384 hours" } - ], - "false_effect": [ { "u_message": "Your thoughts are too scattered to unearth more secrets of the universe." } ] - }, - { - "type": "effect_on_condition", - "id": "become_fire_fae", - "condition": { "not": { "u_has_flag": "MUTATION_THRESHOLD" } }, - "effect": [ - { - "u_message": "You imbibed the concoction and you feel your soul merge with an alien power, becoming attuned to fire.", - "type": "good" - }, - { "u_add_trait": "SALAMANDER" }, - { "u_learn_recipe": "mutagen_flamekin" }, - { "u_learn_recipe": "charred_sacrifice" } - ], - "false_effect": [ { "u_message": "The power attempts to take hold, but is rebuffed by something sinister within you." } ] - }, - { - "type": "effect_on_condition", - "id": "become_doll_fae", - "condition": { "not": { "u_has_flag": "MUTATION_THRESHOLD" } }, - "effect": [ - { - "u_message": "You imbibed the concoction and you feel your soul merge with an alien power, becoming wierdly doll-like?." - }, - { "u_add_trait": "HOMULLUS" }, - { "u_learn_recipe": "mutagen_dollkin" }, - { "u_learn_recipe": "doll_repair_paste" } - ], - "false_effect": [ { "u_message": "The power attempts to take hold, but is rebuffed by something sinister within you." } ] - }, - { - "type": "effect_on_condition", - "id": "become_air_fae", - "condition": { "not": { "u_has_flag": "MUTATION_THRESHOLD" } }, - "effect": [ - { - "u_message": "You imbibed the concoction and you feel your soul merge with an alien power, becoming attuned to the winds." - }, - { "u_add_trait": "SYLPH" }, - { "u_learn_recipe": "mutagen_airkin" }, - { "u_learn_recipe": "ethereal_draught" } - ], - "false_effect": [ { "u_message": "The power attempts to take hold, but is rebuffed by something sinister within you." } ] - }, - { - "type": "effect_on_condition", - "id": "become_water_fae", - "condition": { "not": { "u_has_flag": "MUTATION_THRESHOLD" } }, - "effect": [ - { - "u_message": "You imbibed the concoction and you feel your soul merge with an alien power, becoming attuned to the waters." - }, - { "u_add_trait": "UNDINE" }, - { "u_learn_recipe": "mutagen_waterkin" }, - { "u_learn_recipe": "cerulean_poultice" } - ], - "false_effect": [ { "u_message": "The power attempts to take hold, but is rebuffed by something sinister within you." } ] - }, - { - "type": "effect_on_condition", - "id": "become_earth_fae", - "condition": { "not": { "u_has_flag": "MUTATION_THRESHOLD" } }, - "effect": [ - { - "u_message": "You imbibed the concoction and you feel your soul merge with an alien power, becoming attuned to the earth." - }, - { "u_add_trait": "IERDE" }, - { "u_learn_recipe": "mutagen_earthkin" }, - { "u_learn_recipe": "cthonic_poultice" } - ], - "false_effect": [ { "u_message": "The power attempts to take hold, but is rebuffed by something sinister within you." } ] - }, - { - "type": "effect_on_condition", - "id": "become_plant_fae", - "condition": { "not": { "u_has_flag": "MUTATION_THRESHOLD" } }, - "effect": [ - { - "u_message": "You imbibed the concoction and you feel your soul merge with an alien power, becoming attuned to the natural world." - }, - { "u_add_trait": "ARVORE" }, - { "u_learn_recipe": "mutagen_plantkin" }, - { "u_learn_recipe": "verdant_poultice" } - ], - "false_effect": [ { "u_message": "The power attempts to take hold, but is rebuffed by something sinister within you." } ] } ] diff --git a/data/mods/Xedra_Evolved/mod_interactions/Defense_Mode/overmap_specials.json b/data/mods/Xedra_Evolved/mod_interactions/Defense_Mode/overmap_specials.json index 3e17b17d55d21..535991009c85c 100644 --- a/data/mods/Xedra_Evolved/mod_interactions/Defense_Mode/overmap_specials.json +++ b/data/mods/Xedra_Evolved/mod_interactions/Defense_Mode/overmap_specials.json @@ -31,7 +31,6 @@ "locations": [ "land" ], "city_distance": [ 40, -1 ], "occurrences": [ 100, 100 ], - "eoc": { "id": "EOC_DM_OFFICE_GENERATE", "condition": { "mod_is_loaded": "defense_mode" } }, "flags": [ "DEFENSE_MODE", "GLOBALLY_UNIQUE" ] }, { From 83bf7381f390f85558a30535eede35f64739f2b3 Mon Sep 17 00:00:00 2001 From: BalthazarArgall Date: Sat, 9 Mar 2024 00:13:56 +0100 Subject: [PATCH 27/73] Revert "Revert "Merge branch 'CombatExoskeletonUpdate' of https://github.com/BalthazarArgall/Cataclysm-DDA into CombatExoskeletonUpdate"" This reverts commit 572fe896c3b14d1c3b1abfa10866f3bf93d01f7f. --- data/json/professions.json | 4 +- .../Defense_Mode/overmap_specials.json | 1 + .../Defense_Mode/overmap_specials.json | 1 + data/mods/Xedra_Evolved/items/alchemy.json | 144 ++++++++++++++++++ .../perks/perk_data/Alchemy1.json | 100 ++++++++++++ .../Defense_Mode/overmap_specials.json | 1 + 6 files changed, 249 insertions(+), 2 deletions(-) diff --git a/data/json/professions.json b/data/json/professions.json index ce2b21183f527..b100b69bbebe0 100644 --- a/data/json/professions.json +++ b/data/json/professions.json @@ -6058,8 +6058,8 @@ "prof_auto_pistols_familiar" ], "skills": [ - { "level": 5, "name": "gun" }, - { "level": 5, "name": "rifle" }, + { "level": 7, "name": "gun" }, + { "level": 7, "name": "rifle" }, { "level": 4, "name": "pistol" }, { "level": 3, "name": "melee" }, { "level": 3, "name": "stabbing" }, diff --git a/data/mods/Magiclysm/mod_interactions/Defense_Mode/overmap_specials.json b/data/mods/Magiclysm/mod_interactions/Defense_Mode/overmap_specials.json index c377ec5c8bd17..db426c718cd7a 100644 --- a/data/mods/Magiclysm/mod_interactions/Defense_Mode/overmap_specials.json +++ b/data/mods/Magiclysm/mod_interactions/Defense_Mode/overmap_specials.json @@ -61,6 +61,7 @@ "locations": [ "lake_surface" ], "city_distance": [ 40, -1 ], "occurrences": [ 100, 100 ], + "eoc": { "id": "EOC_DM_TOWER_GENERATE", "condition": { "mod_is_loaded": "defense_mode" } }, "flags": [ "DEFENSE_MODE", "GLOBALLY_UNIQUE", "LAKE" ] } ] diff --git a/data/mods/MindOverMatter/modinteractions/Defense_Mode/overmap_specials.json b/data/mods/MindOverMatter/modinteractions/Defense_Mode/overmap_specials.json index 771d89fe5de0d..1b0f43b469bc7 100644 --- a/data/mods/MindOverMatter/modinteractions/Defense_Mode/overmap_specials.json +++ b/data/mods/MindOverMatter/modinteractions/Defense_Mode/overmap_specials.json @@ -11,6 +11,7 @@ "locations": [ "land" ], "city_distance": [ 40, -1 ], "occurrences": [ 100, 100 ], + "eoc": { "id": "EOC_DM_CUBICAL_GENERATE", "condition": { "mod_is_loaded": "defense_mode" } }, "flags": [ "DEFENSE_MODE", "GLOBALLY_UNIQUE" ] } ] diff --git a/data/mods/Xedra_Evolved/items/alchemy.json b/data/mods/Xedra_Evolved/items/alchemy.json index dd91dc55b2acc..cf3a66fadad2a 100644 --- a/data/mods/Xedra_Evolved/items/alchemy.json +++ b/data/mods/Xedra_Evolved/items/alchemy.json @@ -299,5 +299,149 @@ "color": "green_yellow", "calories": 50, "copy-from": "life_extension_potion" + }, + { + "id": "plant_imbuement", + "type": "COMESTIBLE", + "comestible_type": "MED", + "name": { "str_sp": "Imbuement of the Trees" }, + "description": ".", + "weight": "50 g", + "volume": "2 ml", + "price": "150 cent", + "price_postapoc": "200 USD", + "material": [ "water" ], + "symbol": "!", + "color": "light_cyan", + "container": "flask_glass", + "quench": 2, + "healthy": 7, + "fun": -30, + "flags": [ "NO_INGEST", "WATER_DISSOLVE", "EDIBLE_FROZEN" ], + "use_action": { + "type": "effect_on_conditions", + "description": "Drink the potion. Will not work on those too distant from humanity already.", + "effect_on_conditions": [ "become_plant_fae" ] + } + }, + { + "id": "earth_imbuement", + "type": "COMESTIBLE", + "comestible_type": "MED", + "name": { "str_sp": "Imbuement of the Earth" }, + "description": ".", + "weight": "50 g", + "volume": "2 ml", + "price": "150 cent", + "price_postapoc": "200 USD", + "material": [ "water" ], + "symbol": "!", + "color": "light_cyan", + "container": "flask_glass", + "quench": 2, + "healthy": 7, + "fun": -30, + "flags": [ "NO_INGEST", "WATER_DISSOLVE", "EDIBLE_FROZEN" ], + "use_action": { + "type": "effect_on_conditions", + "description": "Drink the potion. Will not work on those too distant from humanity already.", + "effect_on_conditions": [ "become_earth_fae" ] + } + }, + { + "id": "water_imbuement", + "type": "COMESTIBLE", + "comestible_type": "MED", + "name": { "str_sp": "Imbuement of the Waters" }, + "description": ".", + "weight": "50 g", + "volume": "2 ml", + "price": "150 cent", + "price_postapoc": "200 USD", + "material": [ "water" ], + "symbol": "!", + "color": "light_cyan", + "container": "flask_glass", + "quench": 2, + "healthy": 7, + "fun": -30, + "flags": [ "NO_INGEST", "WATER_DISSOLVE", "EDIBLE_FROZEN" ], + "use_action": { + "type": "effect_on_conditions", + "description": "Drink the potion. Will not work on those too distant from humanity already.", + "effect_on_conditions": [ "become_water_fae" ] + } + }, + { + "id": "air_imbuement", + "type": "COMESTIBLE", + "comestible_type": "MED", + "name": { "str_sp": "Imbuement of the Winds" }, + "description": ".", + "weight": "50 g", + "volume": "2 ml", + "price": "150 cent", + "price_postapoc": "200 USD", + "material": [ "water" ], + "symbol": "!", + "color": "light_cyan", + "container": "flask_glass", + "quench": 2, + "healthy": 7, + "fun": -30, + "flags": [ "NO_INGEST", "WATER_DISSOLVE", "EDIBLE_FROZEN" ], + "use_action": { + "type": "effect_on_conditions", + "description": "Drink the potion. Will not work on those too distant from humanity already.", + "effect_on_conditions": [ "become_air_fae" ] + } + }, + { + "id": "fire_imbuement", + "type": "COMESTIBLE", + "comestible_type": "MED", + "name": { "str_sp": "Imbuement of the Flames" }, + "description": ".", + "weight": "50 g", + "volume": "2 ml", + "price": "150 cent", + "price_postapoc": "200 USD", + "material": [ "water" ], + "symbol": "!", + "color": "light_cyan", + "container": "flask_glass", + "quench": 2, + "healthy": 7, + "fun": -30, + "flags": [ "NO_INGEST", "WATER_DISSOLVE", "EDIBLE_FROZEN" ], + "use_action": { + "type": "effect_on_conditions", + "description": "Drink the potion. Will not work on those too distant from humanity already.", + "effect_on_conditions": [ "become_fire_fae" ] + } + }, + { + "id": "doll_imbuement", + "type": "COMESTIBLE", + "comestible_type": "MED", + "name": { "str_sp": "Imbuement of Parchment" }, + "description": ".", + "weight": "50 g", + "volume": "2 ml", + "price": "150 cent", + "price_postapoc": "200 USD", + "material": [ "water" ], + "symbol": "!", + "color": "light_cyan", + "container": "flask_glass", + "quench": 2, + "healthy": 7, + "fun": -30, + "flags": [ "NO_INGEST", "WATER_DISSOLVE", "EDIBLE_FROZEN" ], + "use_action": { + "type": "effect_on_conditions", + "description": "Drink the potion. Will not work on those too distant from humanity already.", + "effect_on_conditions": [ "become_doll_fae" ] + } } ] diff --git a/data/mods/Xedra_Evolved/mod_interactions/BombasticPerks/perks/perk_data/Alchemy1.json b/data/mods/Xedra_Evolved/mod_interactions/BombasticPerks/perks/perk_data/Alchemy1.json index 5f7c1362f5565..1e7088387fca3 100644 --- a/data/mods/Xedra_Evolved/mod_interactions/BombasticPerks/perks/perk_data/Alchemy1.json +++ b/data/mods/Xedra_Evolved/mod_interactions/BombasticPerks/perks/perk_data/Alchemy1.json @@ -98,5 +98,105 @@ { "u_add_effect": "mental_exhaustion", "intensity": 1, "duration": "192 hours" } ], "false_effect": [ { "u_message": "Your thoughts are too scattered to unearth more secrets of the universe." } ] + }, + { + "type": "effect_on_condition", + "id": "EOC_ALCHEMY5", + "condition": { "and": [ { "u_has_trait": "perk_ALCHEMY5" }, { "not": { "u_has_effect": "mental_exhaustion" } } ] }, + "effect": [ + { + "u_roll_remainder": [ "plant_imbuement", "earth_imbuement", "water_imbuement", "air_imbuement", "fire_imbuement", "doll_imbuement" ], + "type": "recipe", + "true_eocs": [ "EOC_SUCCESFUL_ROLL_REMAINDER_ALCHEMY" ], + "false_eocs": [ "EOC_COMPLETED_ROLL_REMAINDER_ALCHEMY" ] + }, + { "u_add_effect": "mental_exhaustion", "intensity": 1, "duration": "384 hours" } + ], + "false_effect": [ { "u_message": "Your thoughts are too scattered to unearth more secrets of the universe." } ] + }, + { + "type": "effect_on_condition", + "id": "become_fire_fae", + "condition": { "not": { "u_has_flag": "MUTATION_THRESHOLD" } }, + "effect": [ + { + "u_message": "You imbibed the concoction and you feel your soul merge with an alien power, becoming attuned to fire.", + "type": "good" + }, + { "u_add_trait": "SALAMANDER" }, + { "u_learn_recipe": "mutagen_flamekin" }, + { "u_learn_recipe": "charred_sacrifice" } + ], + "false_effect": [ { "u_message": "The power attempts to take hold, but is rebuffed by something sinister within you." } ] + }, + { + "type": "effect_on_condition", + "id": "become_doll_fae", + "condition": { "not": { "u_has_flag": "MUTATION_THRESHOLD" } }, + "effect": [ + { + "u_message": "You imbibed the concoction and you feel your soul merge with an alien power, becoming wierdly doll-like?." + }, + { "u_add_trait": "HOMULLUS" }, + { "u_learn_recipe": "mutagen_dollkin" }, + { "u_learn_recipe": "doll_repair_paste" } + ], + "false_effect": [ { "u_message": "The power attempts to take hold, but is rebuffed by something sinister within you." } ] + }, + { + "type": "effect_on_condition", + "id": "become_air_fae", + "condition": { "not": { "u_has_flag": "MUTATION_THRESHOLD" } }, + "effect": [ + { + "u_message": "You imbibed the concoction and you feel your soul merge with an alien power, becoming attuned to the winds." + }, + { "u_add_trait": "SYLPH" }, + { "u_learn_recipe": "mutagen_airkin" }, + { "u_learn_recipe": "ethereal_draught" } + ], + "false_effect": [ { "u_message": "The power attempts to take hold, but is rebuffed by something sinister within you." } ] + }, + { + "type": "effect_on_condition", + "id": "become_water_fae", + "condition": { "not": { "u_has_flag": "MUTATION_THRESHOLD" } }, + "effect": [ + { + "u_message": "You imbibed the concoction and you feel your soul merge with an alien power, becoming attuned to the waters." + }, + { "u_add_trait": "UNDINE" }, + { "u_learn_recipe": "mutagen_waterkin" }, + { "u_learn_recipe": "cerulean_poultice" } + ], + "false_effect": [ { "u_message": "The power attempts to take hold, but is rebuffed by something sinister within you." } ] + }, + { + "type": "effect_on_condition", + "id": "become_earth_fae", + "condition": { "not": { "u_has_flag": "MUTATION_THRESHOLD" } }, + "effect": [ + { + "u_message": "You imbibed the concoction and you feel your soul merge with an alien power, becoming attuned to the earth." + }, + { "u_add_trait": "IERDE" }, + { "u_learn_recipe": "mutagen_earthkin" }, + { "u_learn_recipe": "cthonic_poultice" } + ], + "false_effect": [ { "u_message": "The power attempts to take hold, but is rebuffed by something sinister within you." } ] + }, + { + "type": "effect_on_condition", + "id": "become_plant_fae", + "condition": { "not": { "u_has_flag": "MUTATION_THRESHOLD" } }, + "effect": [ + { + "u_message": "You imbibed the concoction and you feel your soul merge with an alien power, becoming attuned to the natural world." + }, + { "u_add_trait": "ARVORE" }, + { "u_learn_recipe": "mutagen_plantkin" }, + { "u_learn_recipe": "verdant_poultice" } + ], + "false_effect": [ { "u_message": "The power attempts to take hold, but is rebuffed by something sinister within you." } ] } ] diff --git a/data/mods/Xedra_Evolved/mod_interactions/Defense_Mode/overmap_specials.json b/data/mods/Xedra_Evolved/mod_interactions/Defense_Mode/overmap_specials.json index 535991009c85c..3e17b17d55d21 100644 --- a/data/mods/Xedra_Evolved/mod_interactions/Defense_Mode/overmap_specials.json +++ b/data/mods/Xedra_Evolved/mod_interactions/Defense_Mode/overmap_specials.json @@ -31,6 +31,7 @@ "locations": [ "land" ], "city_distance": [ 40, -1 ], "occurrences": [ 100, 100 ], + "eoc": { "id": "EOC_DM_OFFICE_GENERATE", "condition": { "mod_is_loaded": "defense_mode" } }, "flags": [ "DEFENSE_MODE", "GLOBALLY_UNIQUE" ] }, { From f27fa4f616b5f55566170b062936fbcc916adc97 Mon Sep 17 00:00:00 2001 From: BalthazarArgall Date: Sat, 9 Mar 2024 00:14:08 +0100 Subject: [PATCH 28/73] Revert "Merge branch 'CombatExoskeletonUpdate' of https://github.com/BalthazarArgall/Cataclysm-DDA into CombatExoskeletonUpdate" This reverts commit 7b9b9b66b6fd6873d728eb055c229510372a1f6b, reversing changes made to 3d13b2ae662408df061724615d11353ea62f05c3. --- data/json/professions.json | 4 +- .../Defense_Mode/overmap_specials.json | 1 - .../Defense_Mode/overmap_specials.json | 1 - data/mods/Xedra_Evolved/items/alchemy.json | 144 ------------------ .../perks/perk_data/Alchemy1.json | 100 ------------ .../Defense_Mode/overmap_specials.json | 1 - 6 files changed, 2 insertions(+), 249 deletions(-) diff --git a/data/json/professions.json b/data/json/professions.json index b100b69bbebe0..ce2b21183f527 100644 --- a/data/json/professions.json +++ b/data/json/professions.json @@ -6058,8 +6058,8 @@ "prof_auto_pistols_familiar" ], "skills": [ - { "level": 7, "name": "gun" }, - { "level": 7, "name": "rifle" }, + { "level": 5, "name": "gun" }, + { "level": 5, "name": "rifle" }, { "level": 4, "name": "pistol" }, { "level": 3, "name": "melee" }, { "level": 3, "name": "stabbing" }, diff --git a/data/mods/Magiclysm/mod_interactions/Defense_Mode/overmap_specials.json b/data/mods/Magiclysm/mod_interactions/Defense_Mode/overmap_specials.json index db426c718cd7a..c377ec5c8bd17 100644 --- a/data/mods/Magiclysm/mod_interactions/Defense_Mode/overmap_specials.json +++ b/data/mods/Magiclysm/mod_interactions/Defense_Mode/overmap_specials.json @@ -61,7 +61,6 @@ "locations": [ "lake_surface" ], "city_distance": [ 40, -1 ], "occurrences": [ 100, 100 ], - "eoc": { "id": "EOC_DM_TOWER_GENERATE", "condition": { "mod_is_loaded": "defense_mode" } }, "flags": [ "DEFENSE_MODE", "GLOBALLY_UNIQUE", "LAKE" ] } ] diff --git a/data/mods/MindOverMatter/modinteractions/Defense_Mode/overmap_specials.json b/data/mods/MindOverMatter/modinteractions/Defense_Mode/overmap_specials.json index 1b0f43b469bc7..771d89fe5de0d 100644 --- a/data/mods/MindOverMatter/modinteractions/Defense_Mode/overmap_specials.json +++ b/data/mods/MindOverMatter/modinteractions/Defense_Mode/overmap_specials.json @@ -11,7 +11,6 @@ "locations": [ "land" ], "city_distance": [ 40, -1 ], "occurrences": [ 100, 100 ], - "eoc": { "id": "EOC_DM_CUBICAL_GENERATE", "condition": { "mod_is_loaded": "defense_mode" } }, "flags": [ "DEFENSE_MODE", "GLOBALLY_UNIQUE" ] } ] diff --git a/data/mods/Xedra_Evolved/items/alchemy.json b/data/mods/Xedra_Evolved/items/alchemy.json index cf3a66fadad2a..dd91dc55b2acc 100644 --- a/data/mods/Xedra_Evolved/items/alchemy.json +++ b/data/mods/Xedra_Evolved/items/alchemy.json @@ -299,149 +299,5 @@ "color": "green_yellow", "calories": 50, "copy-from": "life_extension_potion" - }, - { - "id": "plant_imbuement", - "type": "COMESTIBLE", - "comestible_type": "MED", - "name": { "str_sp": "Imbuement of the Trees" }, - "description": ".", - "weight": "50 g", - "volume": "2 ml", - "price": "150 cent", - "price_postapoc": "200 USD", - "material": [ "water" ], - "symbol": "!", - "color": "light_cyan", - "container": "flask_glass", - "quench": 2, - "healthy": 7, - "fun": -30, - "flags": [ "NO_INGEST", "WATER_DISSOLVE", "EDIBLE_FROZEN" ], - "use_action": { - "type": "effect_on_conditions", - "description": "Drink the potion. Will not work on those too distant from humanity already.", - "effect_on_conditions": [ "become_plant_fae" ] - } - }, - { - "id": "earth_imbuement", - "type": "COMESTIBLE", - "comestible_type": "MED", - "name": { "str_sp": "Imbuement of the Earth" }, - "description": ".", - "weight": "50 g", - "volume": "2 ml", - "price": "150 cent", - "price_postapoc": "200 USD", - "material": [ "water" ], - "symbol": "!", - "color": "light_cyan", - "container": "flask_glass", - "quench": 2, - "healthy": 7, - "fun": -30, - "flags": [ "NO_INGEST", "WATER_DISSOLVE", "EDIBLE_FROZEN" ], - "use_action": { - "type": "effect_on_conditions", - "description": "Drink the potion. Will not work on those too distant from humanity already.", - "effect_on_conditions": [ "become_earth_fae" ] - } - }, - { - "id": "water_imbuement", - "type": "COMESTIBLE", - "comestible_type": "MED", - "name": { "str_sp": "Imbuement of the Waters" }, - "description": ".", - "weight": "50 g", - "volume": "2 ml", - "price": "150 cent", - "price_postapoc": "200 USD", - "material": [ "water" ], - "symbol": "!", - "color": "light_cyan", - "container": "flask_glass", - "quench": 2, - "healthy": 7, - "fun": -30, - "flags": [ "NO_INGEST", "WATER_DISSOLVE", "EDIBLE_FROZEN" ], - "use_action": { - "type": "effect_on_conditions", - "description": "Drink the potion. Will not work on those too distant from humanity already.", - "effect_on_conditions": [ "become_water_fae" ] - } - }, - { - "id": "air_imbuement", - "type": "COMESTIBLE", - "comestible_type": "MED", - "name": { "str_sp": "Imbuement of the Winds" }, - "description": ".", - "weight": "50 g", - "volume": "2 ml", - "price": "150 cent", - "price_postapoc": "200 USD", - "material": [ "water" ], - "symbol": "!", - "color": "light_cyan", - "container": "flask_glass", - "quench": 2, - "healthy": 7, - "fun": -30, - "flags": [ "NO_INGEST", "WATER_DISSOLVE", "EDIBLE_FROZEN" ], - "use_action": { - "type": "effect_on_conditions", - "description": "Drink the potion. Will not work on those too distant from humanity already.", - "effect_on_conditions": [ "become_air_fae" ] - } - }, - { - "id": "fire_imbuement", - "type": "COMESTIBLE", - "comestible_type": "MED", - "name": { "str_sp": "Imbuement of the Flames" }, - "description": ".", - "weight": "50 g", - "volume": "2 ml", - "price": "150 cent", - "price_postapoc": "200 USD", - "material": [ "water" ], - "symbol": "!", - "color": "light_cyan", - "container": "flask_glass", - "quench": 2, - "healthy": 7, - "fun": -30, - "flags": [ "NO_INGEST", "WATER_DISSOLVE", "EDIBLE_FROZEN" ], - "use_action": { - "type": "effect_on_conditions", - "description": "Drink the potion. Will not work on those too distant from humanity already.", - "effect_on_conditions": [ "become_fire_fae" ] - } - }, - { - "id": "doll_imbuement", - "type": "COMESTIBLE", - "comestible_type": "MED", - "name": { "str_sp": "Imbuement of Parchment" }, - "description": ".", - "weight": "50 g", - "volume": "2 ml", - "price": "150 cent", - "price_postapoc": "200 USD", - "material": [ "water" ], - "symbol": "!", - "color": "light_cyan", - "container": "flask_glass", - "quench": 2, - "healthy": 7, - "fun": -30, - "flags": [ "NO_INGEST", "WATER_DISSOLVE", "EDIBLE_FROZEN" ], - "use_action": { - "type": "effect_on_conditions", - "description": "Drink the potion. Will not work on those too distant from humanity already.", - "effect_on_conditions": [ "become_doll_fae" ] - } } ] diff --git a/data/mods/Xedra_Evolved/mod_interactions/BombasticPerks/perks/perk_data/Alchemy1.json b/data/mods/Xedra_Evolved/mod_interactions/BombasticPerks/perks/perk_data/Alchemy1.json index 1e7088387fca3..5f7c1362f5565 100644 --- a/data/mods/Xedra_Evolved/mod_interactions/BombasticPerks/perks/perk_data/Alchemy1.json +++ b/data/mods/Xedra_Evolved/mod_interactions/BombasticPerks/perks/perk_data/Alchemy1.json @@ -98,105 +98,5 @@ { "u_add_effect": "mental_exhaustion", "intensity": 1, "duration": "192 hours" } ], "false_effect": [ { "u_message": "Your thoughts are too scattered to unearth more secrets of the universe." } ] - }, - { - "type": "effect_on_condition", - "id": "EOC_ALCHEMY5", - "condition": { "and": [ { "u_has_trait": "perk_ALCHEMY5" }, { "not": { "u_has_effect": "mental_exhaustion" } } ] }, - "effect": [ - { - "u_roll_remainder": [ "plant_imbuement", "earth_imbuement", "water_imbuement", "air_imbuement", "fire_imbuement", "doll_imbuement" ], - "type": "recipe", - "true_eocs": [ "EOC_SUCCESFUL_ROLL_REMAINDER_ALCHEMY" ], - "false_eocs": [ "EOC_COMPLETED_ROLL_REMAINDER_ALCHEMY" ] - }, - { "u_add_effect": "mental_exhaustion", "intensity": 1, "duration": "384 hours" } - ], - "false_effect": [ { "u_message": "Your thoughts are too scattered to unearth more secrets of the universe." } ] - }, - { - "type": "effect_on_condition", - "id": "become_fire_fae", - "condition": { "not": { "u_has_flag": "MUTATION_THRESHOLD" } }, - "effect": [ - { - "u_message": "You imbibed the concoction and you feel your soul merge with an alien power, becoming attuned to fire.", - "type": "good" - }, - { "u_add_trait": "SALAMANDER" }, - { "u_learn_recipe": "mutagen_flamekin" }, - { "u_learn_recipe": "charred_sacrifice" } - ], - "false_effect": [ { "u_message": "The power attempts to take hold, but is rebuffed by something sinister within you." } ] - }, - { - "type": "effect_on_condition", - "id": "become_doll_fae", - "condition": { "not": { "u_has_flag": "MUTATION_THRESHOLD" } }, - "effect": [ - { - "u_message": "You imbibed the concoction and you feel your soul merge with an alien power, becoming wierdly doll-like?." - }, - { "u_add_trait": "HOMULLUS" }, - { "u_learn_recipe": "mutagen_dollkin" }, - { "u_learn_recipe": "doll_repair_paste" } - ], - "false_effect": [ { "u_message": "The power attempts to take hold, but is rebuffed by something sinister within you." } ] - }, - { - "type": "effect_on_condition", - "id": "become_air_fae", - "condition": { "not": { "u_has_flag": "MUTATION_THRESHOLD" } }, - "effect": [ - { - "u_message": "You imbibed the concoction and you feel your soul merge with an alien power, becoming attuned to the winds." - }, - { "u_add_trait": "SYLPH" }, - { "u_learn_recipe": "mutagen_airkin" }, - { "u_learn_recipe": "ethereal_draught" } - ], - "false_effect": [ { "u_message": "The power attempts to take hold, but is rebuffed by something sinister within you." } ] - }, - { - "type": "effect_on_condition", - "id": "become_water_fae", - "condition": { "not": { "u_has_flag": "MUTATION_THRESHOLD" } }, - "effect": [ - { - "u_message": "You imbibed the concoction and you feel your soul merge with an alien power, becoming attuned to the waters." - }, - { "u_add_trait": "UNDINE" }, - { "u_learn_recipe": "mutagen_waterkin" }, - { "u_learn_recipe": "cerulean_poultice" } - ], - "false_effect": [ { "u_message": "The power attempts to take hold, but is rebuffed by something sinister within you." } ] - }, - { - "type": "effect_on_condition", - "id": "become_earth_fae", - "condition": { "not": { "u_has_flag": "MUTATION_THRESHOLD" } }, - "effect": [ - { - "u_message": "You imbibed the concoction and you feel your soul merge with an alien power, becoming attuned to the earth." - }, - { "u_add_trait": "IERDE" }, - { "u_learn_recipe": "mutagen_earthkin" }, - { "u_learn_recipe": "cthonic_poultice" } - ], - "false_effect": [ { "u_message": "The power attempts to take hold, but is rebuffed by something sinister within you." } ] - }, - { - "type": "effect_on_condition", - "id": "become_plant_fae", - "condition": { "not": { "u_has_flag": "MUTATION_THRESHOLD" } }, - "effect": [ - { - "u_message": "You imbibed the concoction and you feel your soul merge with an alien power, becoming attuned to the natural world." - }, - { "u_add_trait": "ARVORE" }, - { "u_learn_recipe": "mutagen_plantkin" }, - { "u_learn_recipe": "verdant_poultice" } - ], - "false_effect": [ { "u_message": "The power attempts to take hold, but is rebuffed by something sinister within you." } ] } ] diff --git a/data/mods/Xedra_Evolved/mod_interactions/Defense_Mode/overmap_specials.json b/data/mods/Xedra_Evolved/mod_interactions/Defense_Mode/overmap_specials.json index 3e17b17d55d21..535991009c85c 100644 --- a/data/mods/Xedra_Evolved/mod_interactions/Defense_Mode/overmap_specials.json +++ b/data/mods/Xedra_Evolved/mod_interactions/Defense_Mode/overmap_specials.json @@ -31,7 +31,6 @@ "locations": [ "land" ], "city_distance": [ 40, -1 ], "occurrences": [ 100, 100 ], - "eoc": { "id": "EOC_DM_OFFICE_GENERATE", "condition": { "mod_is_loaded": "defense_mode" } }, "flags": [ "DEFENSE_MODE", "GLOBALLY_UNIQUE" ] }, { From 154387df0c281aec356d35247842c68c2f3bfef5 Mon Sep 17 00:00:00 2001 From: BalthazarArgall Date: Sat, 9 Mar 2024 00:14:19 +0100 Subject: [PATCH 29/73] Revert "Revert "Merge branch 'CombatExoskeletonUpdate' of https://github.com/BalthazarArgall/Cataclysm-DDA into CombatExoskeletonUpdate"" This reverts commit 572fe896c3b14d1c3b1abfa10866f3bf93d01f7f. --- data/json/professions.json | 4 +- .../Defense_Mode/overmap_specials.json | 1 + .../Defense_Mode/overmap_specials.json | 1 + data/mods/Xedra_Evolved/items/alchemy.json | 144 ++++++++++++++++++ .../perks/perk_data/Alchemy1.json | 100 ++++++++++++ .../Defense_Mode/overmap_specials.json | 1 + 6 files changed, 249 insertions(+), 2 deletions(-) diff --git a/data/json/professions.json b/data/json/professions.json index ce2b21183f527..b100b69bbebe0 100644 --- a/data/json/professions.json +++ b/data/json/professions.json @@ -6058,8 +6058,8 @@ "prof_auto_pistols_familiar" ], "skills": [ - { "level": 5, "name": "gun" }, - { "level": 5, "name": "rifle" }, + { "level": 7, "name": "gun" }, + { "level": 7, "name": "rifle" }, { "level": 4, "name": "pistol" }, { "level": 3, "name": "melee" }, { "level": 3, "name": "stabbing" }, diff --git a/data/mods/Magiclysm/mod_interactions/Defense_Mode/overmap_specials.json b/data/mods/Magiclysm/mod_interactions/Defense_Mode/overmap_specials.json index c377ec5c8bd17..db426c718cd7a 100644 --- a/data/mods/Magiclysm/mod_interactions/Defense_Mode/overmap_specials.json +++ b/data/mods/Magiclysm/mod_interactions/Defense_Mode/overmap_specials.json @@ -61,6 +61,7 @@ "locations": [ "lake_surface" ], "city_distance": [ 40, -1 ], "occurrences": [ 100, 100 ], + "eoc": { "id": "EOC_DM_TOWER_GENERATE", "condition": { "mod_is_loaded": "defense_mode" } }, "flags": [ "DEFENSE_MODE", "GLOBALLY_UNIQUE", "LAKE" ] } ] diff --git a/data/mods/MindOverMatter/modinteractions/Defense_Mode/overmap_specials.json b/data/mods/MindOverMatter/modinteractions/Defense_Mode/overmap_specials.json index 771d89fe5de0d..1b0f43b469bc7 100644 --- a/data/mods/MindOverMatter/modinteractions/Defense_Mode/overmap_specials.json +++ b/data/mods/MindOverMatter/modinteractions/Defense_Mode/overmap_specials.json @@ -11,6 +11,7 @@ "locations": [ "land" ], "city_distance": [ 40, -1 ], "occurrences": [ 100, 100 ], + "eoc": { "id": "EOC_DM_CUBICAL_GENERATE", "condition": { "mod_is_loaded": "defense_mode" } }, "flags": [ "DEFENSE_MODE", "GLOBALLY_UNIQUE" ] } ] diff --git a/data/mods/Xedra_Evolved/items/alchemy.json b/data/mods/Xedra_Evolved/items/alchemy.json index dd91dc55b2acc..cf3a66fadad2a 100644 --- a/data/mods/Xedra_Evolved/items/alchemy.json +++ b/data/mods/Xedra_Evolved/items/alchemy.json @@ -299,5 +299,149 @@ "color": "green_yellow", "calories": 50, "copy-from": "life_extension_potion" + }, + { + "id": "plant_imbuement", + "type": "COMESTIBLE", + "comestible_type": "MED", + "name": { "str_sp": "Imbuement of the Trees" }, + "description": ".", + "weight": "50 g", + "volume": "2 ml", + "price": "150 cent", + "price_postapoc": "200 USD", + "material": [ "water" ], + "symbol": "!", + "color": "light_cyan", + "container": "flask_glass", + "quench": 2, + "healthy": 7, + "fun": -30, + "flags": [ "NO_INGEST", "WATER_DISSOLVE", "EDIBLE_FROZEN" ], + "use_action": { + "type": "effect_on_conditions", + "description": "Drink the potion. Will not work on those too distant from humanity already.", + "effect_on_conditions": [ "become_plant_fae" ] + } + }, + { + "id": "earth_imbuement", + "type": "COMESTIBLE", + "comestible_type": "MED", + "name": { "str_sp": "Imbuement of the Earth" }, + "description": ".", + "weight": "50 g", + "volume": "2 ml", + "price": "150 cent", + "price_postapoc": "200 USD", + "material": [ "water" ], + "symbol": "!", + "color": "light_cyan", + "container": "flask_glass", + "quench": 2, + "healthy": 7, + "fun": -30, + "flags": [ "NO_INGEST", "WATER_DISSOLVE", "EDIBLE_FROZEN" ], + "use_action": { + "type": "effect_on_conditions", + "description": "Drink the potion. Will not work on those too distant from humanity already.", + "effect_on_conditions": [ "become_earth_fae" ] + } + }, + { + "id": "water_imbuement", + "type": "COMESTIBLE", + "comestible_type": "MED", + "name": { "str_sp": "Imbuement of the Waters" }, + "description": ".", + "weight": "50 g", + "volume": "2 ml", + "price": "150 cent", + "price_postapoc": "200 USD", + "material": [ "water" ], + "symbol": "!", + "color": "light_cyan", + "container": "flask_glass", + "quench": 2, + "healthy": 7, + "fun": -30, + "flags": [ "NO_INGEST", "WATER_DISSOLVE", "EDIBLE_FROZEN" ], + "use_action": { + "type": "effect_on_conditions", + "description": "Drink the potion. Will not work on those too distant from humanity already.", + "effect_on_conditions": [ "become_water_fae" ] + } + }, + { + "id": "air_imbuement", + "type": "COMESTIBLE", + "comestible_type": "MED", + "name": { "str_sp": "Imbuement of the Winds" }, + "description": ".", + "weight": "50 g", + "volume": "2 ml", + "price": "150 cent", + "price_postapoc": "200 USD", + "material": [ "water" ], + "symbol": "!", + "color": "light_cyan", + "container": "flask_glass", + "quench": 2, + "healthy": 7, + "fun": -30, + "flags": [ "NO_INGEST", "WATER_DISSOLVE", "EDIBLE_FROZEN" ], + "use_action": { + "type": "effect_on_conditions", + "description": "Drink the potion. Will not work on those too distant from humanity already.", + "effect_on_conditions": [ "become_air_fae" ] + } + }, + { + "id": "fire_imbuement", + "type": "COMESTIBLE", + "comestible_type": "MED", + "name": { "str_sp": "Imbuement of the Flames" }, + "description": ".", + "weight": "50 g", + "volume": "2 ml", + "price": "150 cent", + "price_postapoc": "200 USD", + "material": [ "water" ], + "symbol": "!", + "color": "light_cyan", + "container": "flask_glass", + "quench": 2, + "healthy": 7, + "fun": -30, + "flags": [ "NO_INGEST", "WATER_DISSOLVE", "EDIBLE_FROZEN" ], + "use_action": { + "type": "effect_on_conditions", + "description": "Drink the potion. Will not work on those too distant from humanity already.", + "effect_on_conditions": [ "become_fire_fae" ] + } + }, + { + "id": "doll_imbuement", + "type": "COMESTIBLE", + "comestible_type": "MED", + "name": { "str_sp": "Imbuement of Parchment" }, + "description": ".", + "weight": "50 g", + "volume": "2 ml", + "price": "150 cent", + "price_postapoc": "200 USD", + "material": [ "water" ], + "symbol": "!", + "color": "light_cyan", + "container": "flask_glass", + "quench": 2, + "healthy": 7, + "fun": -30, + "flags": [ "NO_INGEST", "WATER_DISSOLVE", "EDIBLE_FROZEN" ], + "use_action": { + "type": "effect_on_conditions", + "description": "Drink the potion. Will not work on those too distant from humanity already.", + "effect_on_conditions": [ "become_doll_fae" ] + } } ] diff --git a/data/mods/Xedra_Evolved/mod_interactions/BombasticPerks/perks/perk_data/Alchemy1.json b/data/mods/Xedra_Evolved/mod_interactions/BombasticPerks/perks/perk_data/Alchemy1.json index 5f7c1362f5565..1e7088387fca3 100644 --- a/data/mods/Xedra_Evolved/mod_interactions/BombasticPerks/perks/perk_data/Alchemy1.json +++ b/data/mods/Xedra_Evolved/mod_interactions/BombasticPerks/perks/perk_data/Alchemy1.json @@ -98,5 +98,105 @@ { "u_add_effect": "mental_exhaustion", "intensity": 1, "duration": "192 hours" } ], "false_effect": [ { "u_message": "Your thoughts are too scattered to unearth more secrets of the universe." } ] + }, + { + "type": "effect_on_condition", + "id": "EOC_ALCHEMY5", + "condition": { "and": [ { "u_has_trait": "perk_ALCHEMY5" }, { "not": { "u_has_effect": "mental_exhaustion" } } ] }, + "effect": [ + { + "u_roll_remainder": [ "plant_imbuement", "earth_imbuement", "water_imbuement", "air_imbuement", "fire_imbuement", "doll_imbuement" ], + "type": "recipe", + "true_eocs": [ "EOC_SUCCESFUL_ROLL_REMAINDER_ALCHEMY" ], + "false_eocs": [ "EOC_COMPLETED_ROLL_REMAINDER_ALCHEMY" ] + }, + { "u_add_effect": "mental_exhaustion", "intensity": 1, "duration": "384 hours" } + ], + "false_effect": [ { "u_message": "Your thoughts are too scattered to unearth more secrets of the universe." } ] + }, + { + "type": "effect_on_condition", + "id": "become_fire_fae", + "condition": { "not": { "u_has_flag": "MUTATION_THRESHOLD" } }, + "effect": [ + { + "u_message": "You imbibed the concoction and you feel your soul merge with an alien power, becoming attuned to fire.", + "type": "good" + }, + { "u_add_trait": "SALAMANDER" }, + { "u_learn_recipe": "mutagen_flamekin" }, + { "u_learn_recipe": "charred_sacrifice" } + ], + "false_effect": [ { "u_message": "The power attempts to take hold, but is rebuffed by something sinister within you." } ] + }, + { + "type": "effect_on_condition", + "id": "become_doll_fae", + "condition": { "not": { "u_has_flag": "MUTATION_THRESHOLD" } }, + "effect": [ + { + "u_message": "You imbibed the concoction and you feel your soul merge with an alien power, becoming wierdly doll-like?." + }, + { "u_add_trait": "HOMULLUS" }, + { "u_learn_recipe": "mutagen_dollkin" }, + { "u_learn_recipe": "doll_repair_paste" } + ], + "false_effect": [ { "u_message": "The power attempts to take hold, but is rebuffed by something sinister within you." } ] + }, + { + "type": "effect_on_condition", + "id": "become_air_fae", + "condition": { "not": { "u_has_flag": "MUTATION_THRESHOLD" } }, + "effect": [ + { + "u_message": "You imbibed the concoction and you feel your soul merge with an alien power, becoming attuned to the winds." + }, + { "u_add_trait": "SYLPH" }, + { "u_learn_recipe": "mutagen_airkin" }, + { "u_learn_recipe": "ethereal_draught" } + ], + "false_effect": [ { "u_message": "The power attempts to take hold, but is rebuffed by something sinister within you." } ] + }, + { + "type": "effect_on_condition", + "id": "become_water_fae", + "condition": { "not": { "u_has_flag": "MUTATION_THRESHOLD" } }, + "effect": [ + { + "u_message": "You imbibed the concoction and you feel your soul merge with an alien power, becoming attuned to the waters." + }, + { "u_add_trait": "UNDINE" }, + { "u_learn_recipe": "mutagen_waterkin" }, + { "u_learn_recipe": "cerulean_poultice" } + ], + "false_effect": [ { "u_message": "The power attempts to take hold, but is rebuffed by something sinister within you." } ] + }, + { + "type": "effect_on_condition", + "id": "become_earth_fae", + "condition": { "not": { "u_has_flag": "MUTATION_THRESHOLD" } }, + "effect": [ + { + "u_message": "You imbibed the concoction and you feel your soul merge with an alien power, becoming attuned to the earth." + }, + { "u_add_trait": "IERDE" }, + { "u_learn_recipe": "mutagen_earthkin" }, + { "u_learn_recipe": "cthonic_poultice" } + ], + "false_effect": [ { "u_message": "The power attempts to take hold, but is rebuffed by something sinister within you." } ] + }, + { + "type": "effect_on_condition", + "id": "become_plant_fae", + "condition": { "not": { "u_has_flag": "MUTATION_THRESHOLD" } }, + "effect": [ + { + "u_message": "You imbibed the concoction and you feel your soul merge with an alien power, becoming attuned to the natural world." + }, + { "u_add_trait": "ARVORE" }, + { "u_learn_recipe": "mutagen_plantkin" }, + { "u_learn_recipe": "verdant_poultice" } + ], + "false_effect": [ { "u_message": "The power attempts to take hold, but is rebuffed by something sinister within you." } ] } ] diff --git a/data/mods/Xedra_Evolved/mod_interactions/Defense_Mode/overmap_specials.json b/data/mods/Xedra_Evolved/mod_interactions/Defense_Mode/overmap_specials.json index 535991009c85c..3e17b17d55d21 100644 --- a/data/mods/Xedra_Evolved/mod_interactions/Defense_Mode/overmap_specials.json +++ b/data/mods/Xedra_Evolved/mod_interactions/Defense_Mode/overmap_specials.json @@ -31,6 +31,7 @@ "locations": [ "land" ], "city_distance": [ 40, -1 ], "occurrences": [ 100, 100 ], + "eoc": { "id": "EOC_DM_OFFICE_GENERATE", "condition": { "mod_is_loaded": "defense_mode" } }, "flags": [ "DEFENSE_MODE", "GLOBALLY_UNIQUE" ] }, { From 658efd31f85d21a6ffcf5ddf2dba25f5d52777b6 Mon Sep 17 00:00:00 2001 From: BalthazarArgall Date: Sat, 9 Mar 2024 00:40:18 +0100 Subject: [PATCH 30/73] make code content identical to master --- .../BombasticPerks/perks/perk_data/Alchemy1.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/data/mods/Xedra_Evolved/mod_interactions/BombasticPerks/perks/perk_data/Alchemy1.json b/data/mods/Xedra_Evolved/mod_interactions/BombasticPerks/perks/perk_data/Alchemy1.json index 1e7088387fca3..156e073edb710 100644 --- a/data/mods/Xedra_Evolved/mod_interactions/BombasticPerks/perks/perk_data/Alchemy1.json +++ b/data/mods/Xedra_Evolved/mod_interactions/BombasticPerks/perks/perk_data/Alchemy1.json @@ -135,9 +135,10 @@ "condition": { "not": { "u_has_flag": "MUTATION_THRESHOLD" } }, "effect": [ { - "u_message": "You imbibed the concoction and you feel your soul merge with an alien power, becoming wierdly doll-like?." + "u_message": "You imbibed the concoction and you feel your soul merge with an alien power, becoming weirdly doll-like?" }, { "u_add_trait": "HOMULLUS" }, + { "u_add_trait": "HOMULLUS_MINIMIZED_MUTATIONS" }, { "u_learn_recipe": "mutagen_dollkin" }, { "u_learn_recipe": "doll_repair_paste" } ], From 299f96a34586684a4eab95ff7e8a26259f0397d1 Mon Sep 17 00:00:00 2001 From: BalthazarArgall Date: Sat, 9 Mar 2024 15:43:01 +0100 Subject: [PATCH 31/73] deleting references to power armor --- data/mods/classic_zombies/items/blacklists.json | 8 -------- 1 file changed, 8 deletions(-) diff --git a/data/mods/classic_zombies/items/blacklists.json b/data/mods/classic_zombies/items/blacklists.json index 839b05e011d17..f4e1a766c3e9d 100644 --- a/data/mods/classic_zombies/items/blacklists.json +++ b/data/mods/classic_zombies/items/blacklists.json @@ -290,14 +290,6 @@ "plasma_gun", "plasma_rifle", "plut_cell", - "power_armor_basic", - "power_armor_frame", - "power_armor_generator", - "power_armor_heavy", - "power_armor_helmet_basic", - "power_armor_helmet_heavy", - "power_armor_helmet_light", - "power_armor_light", "purifier", "px4", "px4mag", From 1dba20e9b2443f5a489d4b8840716b49fc0cb704 Mon Sep 17 00:00:00 2001 From: BalthazarArgall Date: Sat, 9 Mar 2024 17:11:39 +0100 Subject: [PATCH 32/73] replaced references to power armor --- .../classic_zombies/items/blacklists.json | 5 +++++ tests/npc_attack_test.cpp | 20 +++++++++---------- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/data/mods/classic_zombies/items/blacklists.json b/data/mods/classic_zombies/items/blacklists.json index f4e1a766c3e9d..2876b2fd8f9b9 100644 --- a/data/mods/classic_zombies/items/blacklists.json +++ b/data/mods/classic_zombies/items/blacklists.json @@ -38,6 +38,11 @@ "atomic_coffee", "bren2_762", "bren2_556", + "combat_exoskeleton_salvaged", + "combat_exoskeleton_heavy", + "combat_exoskeleton_medium", + "combat_exoskeleton_light", + "combat_exoskeleton_armor_military", "mdrx", "ruger_arr", "ruger_pr", diff --git a/tests/npc_attack_test.cpp b/tests/npc_attack_test.cpp index 2f33e0bf23384..7f5474bfb1c6b 100644 --- a/tests/npc_attack_test.cpp +++ b/tests/npc_attack_test.cpp @@ -16,8 +16,8 @@ static const ammotype ammo_battery( "battery" ); static const faction_id faction_your_followers( "your_followers" ); static const itype_id itype_knife_chef( "knife_chef" ); -static const itype_id itype_power_armor_basic( "power_armor_basic" ); -static const itype_id itype_power_armor_basic_on( "power_armor_basic_on" ); +static const itype_id itype_combat_exoskeleton_medium( "combat_exoskeleton_medium" ); +static const itype_id itype_combat_exoskeleton_medium_on( "combat_exoskeleton_medium_on" ); static const itype_id itype_rock( "rock" ); static const itype_id itype_wearable_light( "wearable_light" ); @@ -152,7 +152,7 @@ TEST_CASE( "NPC_faces_zombies", "[npc_attack]" ) WHEN( "NPC has power armor" ) { main_npc.clear_worn(); - item armor( "power_armor_basic" ); + item armor( "combat_exoskeleton_medium" ); std::optional::iterator> wear_success = main_npc.wear_item( armor ); REQUIRE( wear_success ); @@ -173,8 +173,8 @@ TEST_CASE( "NPC_faces_zombies", "[npc_attack]" ) // target is not exposed, so regen_ai_cache is used to have the npc re-assess threat and store the target. main_npc.regen_ai_cache(); main_npc.method_of_attack(); - CHECK( main_npc.is_wearing( itype_power_armor_basic_on ) ); - CHECK( !main_npc.is_wearing( itype_power_armor_basic ) ); + CHECK( main_npc.is_wearing( itype_combat_exoskeleton_medium_on ) ); + CHECK( !main_npc.is_wearing( itype_combat_exoskeleton_medium ) ); } } @@ -182,8 +182,8 @@ TEST_CASE( "NPC_faces_zombies", "[npc_attack]" ) THEN( "NPC fails to activate their power armor" ) { main_npc.regen_ai_cache(); main_npc.method_of_attack(); - CHECK( main_npc.is_wearing( itype_power_armor_basic ) ); - CHECK( !main_npc.is_wearing( itype_power_armor_basic_on ) ); + CHECK( main_npc.is_wearing( itype_combat_exoskeleton_medium ) ); + CHECK( !main_npc.is_wearing( itype_combat_exoskeleton_medium_on ) ); } } } @@ -293,7 +293,7 @@ TEST_CASE( "NPC_faces_zombies", "[npc_attack]" ) } GIVEN( "There is no zombie nearby. " ) { WHEN( "NPC is wearing active power armor. " ) { - item armor( "power_armor_basic_on" ); + item armor( "combat_exoskeleton_medium_on" ); armor.activate(); std::optional::iterator> wear_success = main_npc.wear_item( armor ); REQUIRE( wear_success ); @@ -302,8 +302,8 @@ TEST_CASE( "NPC_faces_zombies", "[npc_attack]" ) // This is somewhat cheating, but going up one level is testing all of npc::move. main_npc.cleanup_on_no_danger(); - CHECK( !main_npc.is_wearing( itype_power_armor_basic_on ) ); - CHECK( main_npc.is_wearing( itype_power_armor_basic ) ); + CHECK( !main_npc.is_wearing( itype_combat_exoskeleton_medium_on ) ); + CHECK( main_npc.is_wearing( itype_combat_exoskeleton_medium ) ); } } } From e978eac50cfc747b54c1e7713a779fb8bc97c984 Mon Sep 17 00:00:00 2001 From: BalthazarArgall Date: Sat, 9 Mar 2024 19:44:51 +0100 Subject: [PATCH 33/73] sort lines alphabetically --- tests/npc_attack_test.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/npc_attack_test.cpp b/tests/npc_attack_test.cpp index 7f5474bfb1c6b..8fc67f7494f38 100644 --- a/tests/npc_attack_test.cpp +++ b/tests/npc_attack_test.cpp @@ -15,9 +15,9 @@ static const ammotype ammo_battery( "battery" ); static const faction_id faction_your_followers( "your_followers" ); -static const itype_id itype_knife_chef( "knife_chef" ); static const itype_id itype_combat_exoskeleton_medium( "combat_exoskeleton_medium" ); static const itype_id itype_combat_exoskeleton_medium_on( "combat_exoskeleton_medium_on" ); +static const itype_id itype_knife_chef( "knife_chef" ); static const itype_id itype_rock( "rock" ); static const itype_id itype_wearable_light( "wearable_light" ); From 8267703520b476b8c192d3eec2f83d732a527996 Mon Sep 17 00:00:00 2001 From: BalthazarArgall Date: Sun, 10 Mar 2024 00:39:39 +0100 Subject: [PATCH 34/73] replaced references to depowered armor --- data/json/monsterdrops/zombie.json | 4 ++-- data/json/recipes/recipe_deconstruction.json | 2 +- data/mods/classic_zombies/items/blacklists.json | 3 +-- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/data/json/monsterdrops/zombie.json b/data/json/monsterdrops/zombie.json index 427aa1cce19f7..7ce31f5e8ffdd 100644 --- a/data/json/monsterdrops/zombie.json +++ b/data/json/monsterdrops/zombie.json @@ -11,8 +11,8 @@ { "item": "circuit", "count": [ 0, 8 ], "prob": 40 }, { "item": "small_lcd_screen", "count": [ 0, 2 ], "prob": 25 }, { "item": "RAM", "count": [ 0, 1 ], "prob": 25 }, - { "item": "depowered_helmet", "count": [ 0, 1 ], "prob": 20 }, - { "item": "depowered_armor", "count": [ 0, 1 ], "prob": 20 } + { "item": "combat_exoskeleton_armor_military", "count": [ 0, 1 ], "prob": 20 }, + { "item": "combat_exoskeleton_salvaged", "count": [ 0, 1 ], "prob": 20 } ] }, { diff --git a/data/json/recipes/recipe_deconstruction.json b/data/json/recipes/recipe_deconstruction.json index 482d88f3c73cb..e90321508c5a9 100644 --- a/data/json/recipes/recipe_deconstruction.json +++ b/data/json/recipes/recipe_deconstruction.json @@ -3508,7 +3508,7 @@ "qualities": [ { "id": "SAW_M", "level": 1 }, { "id": "SCREW", "level": 1 }, { "id": "WRENCH", "level": 1 } ], "tools": [ [ [ "boltcutters", -1 ], [ "toolset", -1 ] ] ], "components": [ - [ [ "depowered_armor", 1 ] ], + [ [ "combat_exoskeleton_salvaged", 1 ] ], [ [ "power_supply", 6 ] ], [ [ "element", 2 ] ], [ [ "cable", 12 ] ], diff --git a/data/mods/classic_zombies/items/blacklists.json b/data/mods/classic_zombies/items/blacklists.json index 2876b2fd8f9b9..77d9bf4f7ea2f 100644 --- a/data/mods/classic_zombies/items/blacklists.json +++ b/data/mods/classic_zombies/items/blacklists.json @@ -192,8 +192,7 @@ "btmp9mag_9x19mm_50rd", "coilgun", "cx4", - "depowered_armor", - "depowered_helmet", + "combat_exoskeleton_salvaged", "emp_gun", "fetus", "fs2000", From 7002c48683ebff4d8ab35bb835208686f51a8ad1 Mon Sep 17 00:00:00 2001 From: BalthazarArgall Date: Fri, 15 Mar 2024 11:28:46 +0100 Subject: [PATCH 35/73] reworked the rework --- data/json/flags.json | 22 +- .../itemgroups/Clothing_Gear/clothing.json | 2 + data/json/itemgroups/Labs/lab_security.json | 24 +- data/json/itemgroups/main.json | 13 +- data/json/items/armor/combat_exoskeleton.json | 378 ++++++- .../items/armor/combat_exoskeleton_armor.json | 991 +++++++++++++++++- data/json/monsterdrops/zombie.json | 5 +- .../migration_items.json | 14 +- .../armor/combat_exoskeleton_armor.json | 91 +- data/json/recipes/nested.json | 35 + .../classic_zombies/items/blacklists.json | 14 +- 11 files changed, 1486 insertions(+), 103 deletions(-) diff --git a/data/json/flags.json b/data/json/flags.json index 8b6cf2a425001..fb53cabfbd273 100644 --- a/data/json/flags.json +++ b/data/json/flags.json @@ -35,9 +35,27 @@ "restriction": "Item must be a chainmail compatible armor piece" }, { - "id": "ABLATIVE_EXOSKELETON_ARMOR", + "id": "ABLATIVE_EXOSKELETON_HEAD", "type": "json_flag", - "info": "This armor will attach to a combat exoskeleton", + "info": "This armor will attach to the head of a combat exoskeleton.", + "restriction": "Item must be a combat exoskeleton armor" + }, + { + "id": "ABLATIVE_EXOSKELETON_TORSO", + "type": "json_flag", + "info": "This armor will attach to the torso of a combat exoskeleton.", + "restriction": "Item must be a combat exoskeleton armor" + }, + { + "id": "ABLATIVE_EXOSKELETON_ARMS", + "type": "json_flag", + "info": "This armor will attach to the armos of a combat exoskeleton.", + "restriction": "Item must be a combat exoskeleton armor" + }, + { + "id": "ABLATIVE_EXOSKELETON_LEGS", + "type": "json_flag", + "info": "This armor will attach to the legs of a combat exoskeleton.", "restriction": "Item must be a combat exoskeleton armor" }, { diff --git a/data/json/itemgroups/Clothing_Gear/clothing.json b/data/json/itemgroups/Clothing_Gear/clothing.json index 5d5d84c2fe010..293f956b8681a 100644 --- a/data/json/itemgroups/Clothing_Gear/clothing.json +++ b/data/json/itemgroups/Clothing_Gear/clothing.json @@ -2936,6 +2936,8 @@ [ "chestguard_hard", 20 ], [ "armguard_hard", 20 ], [ "legguard_hard", 15 ], + [ "power_armor_frame", 4 ], + [ "power_armor_generator", 4 ], [ "elbow_pads", 40 ], [ "knee_pads", 40 ], [ "mask_bal", 5 ], diff --git a/data/json/itemgroups/Labs/lab_security.json b/data/json/itemgroups/Labs/lab_security.json index 8e437cd20e29a..e9d155edd68b3 100644 --- a/data/json/itemgroups/Labs/lab_security.json +++ b/data/json/itemgroups/Labs/lab_security.json @@ -8,15 +8,33 @@ { "distribution": [ { - "collection": [ { "item": "combat_exoskeleton_medium" }, { "item": "combat_exoskeleton_armor_military" } ], + "collection": [ + { "item": "combat_exoskeleton_heavy" }, + { "item": "combat_exoskeleton_armor_head_heavy" }, + { "item": "combat_exoskeleton_armor_torso_heavy" }, + { "item": "combat_exoskeleton_armor_arm_heavy" }, + { "item": "combat_exoskeleton_armor_leg_heavy" } + ], "prob": 30 }, { - "collection": [ { "item": "combat_exoskeleton_heavy" }, { "item": "combat_exoskeleton_armor_military" } ], + "collection": [ + { "item": "combat_exoskeleton_medium" }, + { "item": "combat_exoskeleton_armor_head_medium" }, + { "item": "combat_exoskeleton_armor_torso_medium" }, + { "item": "combat_exoskeleton_armor_arm_medium" }, + { "item": "combat_exoskeleton_armor_leg_medium" } + ], "prob": 10 }, { - "collection": [ { "item": "combat_exoskeleton_light" }, { "item": "combat_exoskeleton_armor_military" } ], + "collection": [ + { "item": "combat_exoskeleton_light" }, + { "item": "combat_exoskeleton_armor_head_light" }, + { "item": "combat_exoskeleton_armor_torso_light" }, + { "item": "combat_exoskeleton_armor_arm_light" }, + { "item": "combat_exoskeleton_armor_leg_light" } + ], "prob": 55 }, { diff --git a/data/json/itemgroups/main.json b/data/json/itemgroups/main.json index c8b93dcc5f913..38b7bb035742b 100644 --- a/data/json/itemgroups/main.json +++ b/data/json/itemgroups/main.json @@ -31,7 +31,18 @@ { "item": "combat_exoskeleton_heavy", "prob": 10 }, { "item": "combat_exoskeleton_medium", "prob": 10 }, { "item": "combat_exoskeleton_light", "prob": 10 }, - { "item": "combat_exoskeleton_armor_military", "prob": 10 }, + { "item": "combat_exoskeleton_armor_head_heavy", "prob": 1 }, + { "item": "combat_exoskeleton_armor_torso_heavy", "prob": 1 }, + { "item": "combat_exoskeleton_armor_arm_heavy", "prob": 1 }, + { "item": "combat_exoskeleton_armor_leg_heavy", "prob": 1 }, + { "item": "combat_exoskeleton_armor_head_medium", "prob": 1 }, + { "item": "combat_exoskeleton_armor_torso_medium", "prob": 1 }, + { "item": "combat_exoskeleton_armor_arm_medium", "prob": 1 }, + { "item": "combat_exoskeleton_armor_leg_medium", "prob": 1 }, + { "item": "combat_exoskeleton_armor_head_light", "prob": 1 }, + { "item": "combat_exoskeleton_armor_torso_light", "prob": 1 }, + { "item": "combat_exoskeleton_armor_arm_light", "prob": 1 }, + { "item": "combat_exoskeleton_armor_leg_light", "prob": 1 }, { "item": "rm13_armor", "prob": 10 }, { "item": "high_density_capacitor", "prob": 10 }, { "item": "beam_scatterer", "prob": 10 }, diff --git a/data/json/items/armor/combat_exoskeleton.json b/data/json/items/armor/combat_exoskeleton.json index 2c39c42d2ec29..817ad0a4b4366 100644 --- a/data/json/items/armor/combat_exoskeleton.json +++ b/data/json/items/armor/combat_exoskeleton.json @@ -4,31 +4,92 @@ "category": "armor", "type": "ARMOR", "name": { "str": "salvaged combat exoskeleton" }, - "description": "This exoskeleton has been severely damaged and its electronic parts are completely fried. You could wear it but the now inactive motors will make moving around very difficult. Utilizing a variety of webbing, magnets, and clips, specialized armor can be attached to the exoskeleton as one sees fit.", + "description": "This used to be a powered exoskeleton, but the power part has been render non functional: as one might expect, it's a lot harder to wear. The exoskeleton itself is strapped on an environmental suit with an integrated life-support system. A variety of of webbing, magnets, and clips allows the attachment of special armor plating onto the frame.", "looks_like": "power_armor_heavy", "symbol": "[", "price": 500000, - "price_postapoc": 10000, - "volume": "22400 ml", - "weight": "8850 g", - "flags": [ "STURDY" ], + "price_postapoc": 100000, + "volume": "36000 ml", + "weight": "13000 g", + "flags": [ "STURDY", "PADDED", "WATERPROOF", "RAINPROOF", "RAD_PROOF", "ELECTRIC_IMMUNE", "SUN_GLASSES" ], + "environmental_protection": 20, + "warmth": 40, "armor": [ { - "layers": [ "OUTER" ], - "covers": [ "torso", "arm_l", "arm_r", "leg_l", "leg_r" ], + "layers": [ "NORMAL" ], + "covers": [ "eyes" ], + "encumbrance": 5, + "coverage": 100, + "material": [ { "type": "lvl4ballisticglass", "thickness": 1 } ] + }, + { + "layers": [ "NORMAL" ], + "covers": [ "mouth" ], "encumbrance": 10, - "coverage": 10, + "coverage": 100, + "material": [ { "type": "thermo_resin", "thickness": 1 } ] + }, + { + "layers": [ "NORMAL", "OUTER" ], + "covers": [ "head", "torso", "arm_l", "arm_r", "leg_l", "leg_r" ], + "encumbrance": 18, + "coverage": 100, + "material": [ + { "type": "lycra", "thickness": 0.2 }, + { "type": "nylon", "thickness": 1 }, + { "type": "nomex", "thickness": 1 }, + { "type": "vinyl", "thickness": 0.1 }, + { "type": "steel", "thickness": 5, "covered_by_mat": 5 }, + { "type": "aluminum", "thickness": 5, "covered_by_mat": 5 } + ] + }, + { + "layers": [ "NORMAL" ], + "covers": [ "hand_l", "hand_r" ], + "encumbrance": 3, + "coverage": 100, + "material": [ + { "type": "lycra", "thickness": 0.2 }, + { "type": "nylon", "thickness": 1 }, + { "type": "nomex", "thickness": 1 }, + { "type": "vinyl", "thickness": 0.1 } + ] + }, + { + "layers": [ "NORMAL" ], + "encumbrance": 3, + "coverage": 100, + "covers": [ "foot_l", "foot_r" ], + "specifically_covers": [ + "foot_toes_r", + "foot_toes_l", + "foot_ankle_r", + "foot_ankle_l", + "foot_heel_r", + "foot_heel_l", + "foot_arch_r", + "foot_arch_l" + ], "material": [ - { "type": "steel", "thickness": 5, "covered_by_mat": 50 }, - { "type": "aluminum", "thickness": 5, "covered_by_mat": 50 }, - { "type": "kevlar_rigid", "thickness": 5, "covered_by_mat": 50 }, - { "type": "nylon", "thickness": 1, "covered_by_mat": 100 } + { "type": "lycra", "thickness": 0.2 }, + { "type": "nylon", "thickness": 1 }, + { "type": "nomex", "thickness": 1 }, + { "type": "vinyl", "thickness": 0.1 } ] + }, + { + "layers": [ "NORMAL" ], + "encumbrance": 0, + "coverage": 100, + "covers": [ "foot_l", "foot_r" ], + "specifically_covers": [ "foot_sole_r", "foot_sole_l" ], + "material": [ { "type": "rubber", "thickness": 6 } ] } ], "pocket_data": [ { "pocket_type": "CONTAINER", + "holster": true, "volume_encumber_modifier": 0, "description": "Compartment for a UPS.", "flag_restriction": [ "IS_UPS" ], @@ -37,6 +98,7 @@ }, { "pocket_type": "CONTAINER", + "holster": true, "volume_encumber_modifier": 0, "description": "Compartment for a UPS.", "flag_restriction": [ "IS_UPS" ], @@ -45,13 +107,47 @@ }, { "pocket_type": "CONTAINER", + "holster": true, + "volume_encumber_modifier": 0, + "ablative": true, + "description": "Attachment points for exoskeleton head armor.", + "flag_restriction": [ "ABLATIVE_EXOSKELETON_HEAD" ], + "max_contains_volume": "20000 ml", + "max_contains_length": "100 cm", + "moves": 1000 + }, + { + "pocket_type": "CONTAINER", + "holster": true, "volume_encumber_modifier": 0, "ablative": true, - "description": "Hooks and straps to attach exoskeleton armor.", - "flag_restriction": [ "ABLATIVE_EXOSKELETON_ARMOR" ], - "max_contains_volume": "30000 ml", - "max_item_length": "100 cm", - "moves": 3000 + "description": "Attachment points for exoskeleton torso armor.", + "flag_restriction": [ "ABLATIVE_EXOSKELETON_TORSO" ], + "max_contains_volume": "20000 ml", + "max_contains_length": "100 cm", + "moves": 1000 + }, + { + "pocket_type": "CONTAINER", + "holster": true, + "volume_encumber_modifier": 0, + "ablative": true, + "description": "Attachment points for exoskeleton arm armor.", + "flag_restriction": [ "ABLATIVE_EXOSKELETON_ARMS" ], + "max_contains_volume": "20000 ml", + "max_contains_length": "100 cm", + "moves": 1000 + }, + { + "pocket_type": "CONTAINER", + "holster": true, + "volume_encumber_modifier": 0, + "ablative": true, + "description": "Attachment points for exoskeleton leg armor.", + "flag_restriction": [ "ABLATIVE_EXOSKELETON_LEGS" ], + "max_contains_volume": "20000 ml", + "max_contains_length": "100 cm", + "moves": 1000 } ] }, @@ -60,15 +156,15 @@ "copy-from": "combat_exoskeleton_salvaged", "type": "TOOL_ARMOR", "name": { "str": "combat exoskeleton mk1" }, - "description": "Deployed in limited numbers for testing but deemed too expensive for mass production, this exoskeleton focuses on carry weight over fine motor movement. Utilizing a variety of webbing, magnets, and clips, specialized armor can be attached to the exoskeleton as one sees fit.", + "description": "Colloquially known as a 'tank suit' in the media, these first-generation exoskeletons were tested in military service a few years back and determined to be too expensive for regular use. The exoskeleton itself is strapped on an environmental suit with an integrated life-support system. A variety of of webbing, magnets, and clips allows the attachment of special armor plating onto the frame.", "looks_like": "power_armor_heavy", - "price": 5000000, + "price": 50000000, "price_postapoc": 100000, "extend": { "flags": [ "COMBAT_TOGGLEABLE", "USE_UPS" ] }, "ammo": "battery", "use_action": { "type": "transform", - "msg": "The exoskeleton turns on, it feels like a great weight has been lifted off your shoulders and the motors whirr softly as you move around.", + "msg": "You activate the exoskeleton.\n>>Initiating boot sequence...\n//Loading DoubleOS v1.39............[X]\n//Loading calibration profile.......[X]\n//Activating atmospheric filtration.[X]\n//Activating liquid cooling.........[X]\n//Activating sound dampeners........[X]\n>>Boot successful.", "target": "combat_exoskeleton_heavy_on", "active": true, "need_charges": 1, @@ -79,7 +175,7 @@ { "has": "WORN", "condition": "ACTIVE", - "values": [ { "value": "CARRY_WEIGHT", "multiply": 0.8 } ], + "values": [ { "value": "CARRY_WEIGHT", "multiply": 0.8 }, { "value": "CLIMATE_CONTROL_CHILL", "add": 50 } ], "name": { "str": "Exoskeletal assistance" }, "description": "The exoskeleton is less encumbering and increases your carry capacity." } @@ -91,8 +187,80 @@ "id": "combat_exoskeleton_heavy_on", "type": "TOOL_ARMOR", "name": { "str": "combat exoskeleton mk1 (on)", "str_pl": "combat exoskeletons mk1 (on)" }, - "proportional": { "encumbrance": 0.3 }, - "power_draw": "138 W", + "extend": { "flags": [ "GAS_PROOF", "WATCH", "PARTIAL_DEAF", "TWO_WAY_RADIO" ] }, + "armor": [ + { + "layers": [ "NORMAL" ], + "covers": [ "eyes" ], + "encumbrance": 5, + "coverage": 100, + "material": [ { "type": "lvl4ballisticglass", "thickness": 1 } ] + }, + { + "layers": [ "NORMAL" ], + "covers": [ "mouth" ], + "encumbrance": 10, + "coverage": 100, + "material": [ { "type": "thermo_resin", "thickness": 1 } ] + }, + { + "layers": [ "NORMAL", "OUTER" ], + "covers": [ "head", "torso", "arm_l", "arm_r", "leg_l", "leg_r" ], + "encumbrance": 8, + "coverage": 100, + "material": [ + { "type": "lycra", "thickness": 0.2 }, + { "type": "nylon", "thickness": 1 }, + { "type": "nomex", "thickness": 1 }, + { "type": "vinyl", "thickness": 0.1 }, + { "type": "steel", "thickness": 5, "covered_by_mat": 5 }, + { "type": "aluminum", "thickness": 5, "covered_by_mat": 5 } + ] + }, + { + "layers": [ "NORMAL" ], + "covers": [ "hand_l", "hand_r" ], + "encumbrance": 3, + "coverage": 100, + "material": [ + { "type": "lycra", "thickness": 0.2 }, + { "type": "nylon", "thickness": 1 }, + { "type": "nomex", "thickness": 1 }, + { "type": "vinyl", "thickness": 0.1 } + ] + }, + { + "layers": [ "NORMAL" ], + "encumbrance": 3, + "coverage": 100, + "covers": [ "foot_l", "foot_r" ], + "specifically_covers": [ + "foot_toes_r", + "foot_toes_l", + "foot_ankle_r", + "foot_ankle_l", + "foot_heel_r", + "foot_heel_l", + "foot_arch_r", + "foot_arch_l" + ], + "material": [ + { "type": "lycra", "thickness": 0.2 }, + { "type": "nylon", "thickness": 1 }, + { "type": "nomex", "thickness": 1 }, + { "type": "vinyl", "thickness": 0.1 } + ] + }, + { + "layers": [ "NORMAL" ], + "encumbrance": 0, + "coverage": 100, + "covers": [ "foot_l", "foot_r" ], + "specifically_covers": [ "foot_sole_r", "foot_sole_l" ], + "material": [ { "type": "rubber", "thickness": 6 } ] + } + ], + "power_draw": "158 W", "revert_to": "combat_exoskeleton_heavy", "use_action": { "type": "transform", @@ -106,11 +274,11 @@ "id": "combat_exoskeleton_medium", "type": "TOOL_ARMOR", "name": { "str": "combat exoskeleton mk2" }, - "description": "Improving over the first generation, this exoskeleton boasts increased nimbleness at the cost of some motor strength. Utilizing a variety of webbing, magnets, and clips, specialized armor can be attached to the exoskeleton as one sees fit.", + "description": "These were the second wave of military combat exoskeleton, and got a lot of media attention, with popular Navy commercials featuring them heavily. The exoskeleton itself is strapped on an environmental suit with an integrated life-support system. A variety of of webbing, magnets, and clips allows the attachment of special armor plating onto the frame.", "looks_like": "power_armor_basic", "use_action": { "type": "transform", - "msg": "The exoskeleton turns on, it feels like a great weight has been lifted off your shoulders and the motors whirr softly as you move around.", + "msg": "You activate the exoskeleton.\n>>Initiating boot sequence...\n//Loading DoubleOS v2.11............[X]\n//Loading calibration profile.......[X]\n//Activating atmospheric filtration.[X]\n//Activating liquid cooling.........[X]\n//Activating sound dampeners........[X]\n>>Boot successful.", "target": "combat_exoskeleton_medium_on", "active": true, "need_charges": 1, @@ -121,7 +289,7 @@ { "has": "WORN", "condition": "ACTIVE", - "values": [ { "value": "CARRY_WEIGHT", "multiply": 0.6 } ], + "values": [ { "value": "CARRY_WEIGHT", "multiply": 0.8 }, { "value": "CLIMATE_CONTROL_CHILL", "add": 50 } ], "name": { "str": "Exoskeletal assistance" }, "description": "The exoskeleton is less encumbering and increases your carry capacity." } @@ -133,8 +301,80 @@ "id": "combat_exoskeleton_medium_on", "type": "TOOL_ARMOR", "name": { "str": "combat exoskeleton mk2 (on)", "str_pl": "combat exoskeletons m2 (on)" }, - "proportional": { "encumbrance": 0.2 }, - "power_draw": "110 W", + "extend": { "flags": [ "GAS_PROOF", "WATCH", "PARTIAL_DEAF", "TWO_WAY_RADIO" ] }, + "armor": [ + { + "layers": [ "NORMAL" ], + "covers": [ "eyes" ], + "encumbrance": 5, + "coverage": 100, + "material": [ { "type": "lvl4ballisticglass", "thickness": 1 } ] + }, + { + "layers": [ "NORMAL" ], + "covers": [ "mouth" ], + "encumbrance": 10, + "coverage": 100, + "material": [ { "type": "thermo_resin", "thickness": 1 } ] + }, + { + "layers": [ "NORMAL", "OUTER" ], + "covers": [ "head", "torso", "arm_l", "arm_r", "leg_l", "leg_r" ], + "encumbrance": 6, + "coverage": 100, + "material": [ + { "type": "lycra", "thickness": 0.2 }, + { "type": "nylon", "thickness": 1 }, + { "type": "nomex", "thickness": 1 }, + { "type": "vinyl", "thickness": 0.1 }, + { "type": "steel", "thickness": 5, "covered_by_mat": 5 }, + { "type": "aluminum", "thickness": 5, "covered_by_mat": 5 } + ] + }, + { + "layers": [ "NORMAL" ], + "covers": [ "hand_l", "hand_r" ], + "encumbrance": 3, + "coverage": 100, + "material": [ + { "type": "lycra", "thickness": 0.2 }, + { "type": "nylon", "thickness": 1 }, + { "type": "nomex", "thickness": 1 }, + { "type": "vinyl", "thickness": 0.1 } + ] + }, + { + "layers": [ "NORMAL" ], + "encumbrance": 3, + "coverage": 100, + "covers": [ "foot_l", "foot_r" ], + "specifically_covers": [ + "foot_toes_r", + "foot_toes_l", + "foot_ankle_r", + "foot_ankle_l", + "foot_heel_r", + "foot_heel_l", + "foot_arch_r", + "foot_arch_l" + ], + "material": [ + { "type": "lycra", "thickness": 0.2 }, + { "type": "nylon", "thickness": 1 }, + { "type": "nomex", "thickness": 1 }, + { "type": "vinyl", "thickness": 0.1 } + ] + }, + { + "layers": [ "NORMAL" ], + "encumbrance": 0, + "coverage": 100, + "covers": [ "foot_l", "foot_r" ], + "specifically_covers": [ "foot_sole_r", "foot_sole_l" ], + "material": [ { "type": "rubber", "thickness": 6 } ] + } + ], + "power_draw": "126 W", "revert_to": "combat_exoskeleton_medium", "use_action": { "type": "transform", @@ -148,11 +388,11 @@ "id": "combat_exoskeleton_light", "type": "TOOL_ARMOR", "name": { "str": "combat exoskeleton mk3" }, - "description": "Designed for mass production and usage, this exoskeleton was praised for its responsiveness and light weight compared to its predecessors despite the sacrifice in carry capacity. Utilizing a variety of webbing, magnets, and clips, specialized armor can be attached to the exoskeleton as one sees fit.", + "description": "The final iteration of military power armor before the fall of civilization, this type was designed for actual widespread combat use and was seen on the front lines during the last days of the Cataclysm, unfortunately, the world ended before it could roll out in significant numbers. The exoskeleton itself is strapped on an environmental suit with an integrated life-support system. A variety of of webbing, magnets, and clips allows the attachment of special armor plating onto the frame.", "looks_like": "power_armor_light", "use_action": { "type": "transform", - "msg": "The exoskeleton turns on, it feels like a great weight has been lifted off your shoulders and the motors whirr softly as you move around.", + "msg": "You activate the exoskeleton.\n>>Initiating boot sequence...\n//Loading DoubleOS v3.21............[X]\n//Loading calibration profile.......[X]\n//Activating atmospheric filtration.[X]\n//Activating liquid cooling.........[X]\n//Activating sound dampeners........[X]\n>>Boot successful.", "target": "combat_exoskeleton_light_on", "active": true, "need_charges": 1, @@ -163,7 +403,7 @@ { "has": "WORN", "condition": "ACTIVE", - "values": [ { "value": "CARRY_WEIGHT", "multiply": 0.4 } ], + "values": [ { "value": "CARRY_WEIGHT", "multiply": 0.8 }, { "value": "CLIMATE_CONTROL_CHILL", "add": 50 } ], "name": { "str": "Exoskeletal assistance" }, "description": "The exoskeleton is less encumbering and increases your carry capacity." } @@ -175,8 +415,80 @@ "id": "combat_exoskeleton_light_on", "type": "TOOL_ARMOR", "name": { "str": "combat exoskeleton mk3 (on)", "str_pl": "combat exoskeletons mk3 (on)" }, - "proportional": { "encumbrance": 0.1 }, - "power_draw": "88 W", + "extend": { "flags": [ "GAS_PROOF", "WATCH", "PARTIAL_DEAF", "TWO_WAY_RADIO" ] }, + "armor": [ + { + "layers": [ "NORMAL" ], + "covers": [ "eyes" ], + "encumbrance": 5, + "coverage": 100, + "material": [ { "type": "lvl4ballisticglass", "thickness": 1 } ] + }, + { + "layers": [ "NORMAL" ], + "covers": [ "mouth" ], + "encumbrance": 10, + "coverage": 100, + "material": [ { "type": "thermo_resin", "thickness": 1 } ] + }, + { + "layers": [ "NORMAL", "OUTER" ], + "covers": [ "head", "torso", "arm_l", "arm_r", "leg_l", "leg_r" ], + "encumbrance": 4, + "coverage": 100, + "material": [ + { "type": "lycra", "thickness": 0.2 }, + { "type": "nylon", "thickness": 1 }, + { "type": "nomex", "thickness": 1 }, + { "type": "vinyl", "thickness": 0.1 }, + { "type": "steel", "thickness": 5, "covered_by_mat": 5 }, + { "type": "aluminum", "thickness": 5, "covered_by_mat": 5 } + ] + }, + { + "layers": [ "NORMAL" ], + "covers": [ "hand_l", "hand_r" ], + "encumbrance": 3, + "coverage": 100, + "material": [ + { "type": "lycra", "thickness": 0.2 }, + { "type": "nylon", "thickness": 1 }, + { "type": "nomex", "thickness": 1 }, + { "type": "vinyl", "thickness": 0.1 } + ] + }, + { + "layers": [ "NORMAL" ], + "encumbrance": 3, + "coverage": 100, + "covers": [ "foot_l", "foot_r" ], + "specifically_covers": [ + "foot_toes_r", + "foot_toes_l", + "foot_ankle_r", + "foot_ankle_l", + "foot_heel_r", + "foot_heel_l", + "foot_arch_r", + "foot_arch_l" + ], + "material": [ + { "type": "lycra", "thickness": 0.2 }, + { "type": "nylon", "thickness": 1 }, + { "type": "nomex", "thickness": 1 }, + { "type": "vinyl", "thickness": 0.1 } + ] + }, + { + "layers": [ "NORMAL" ], + "encumbrance": 0, + "coverage": 100, + "covers": [ "foot_l", "foot_r" ], + "specifically_covers": [ "foot_sole_r", "foot_sole_l" ], + "material": [ { "type": "rubber", "thickness": 6 } ] + } + ], + "power_draw": "100 W", "revert_to": "combat_exoskeleton_light", "use_action": { "type": "transform", diff --git a/data/json/items/armor/combat_exoskeleton_armor.json b/data/json/items/armor/combat_exoskeleton_armor.json index c8fd297ad2372..fc82c08521d65 100644 --- a/data/json/items/armor/combat_exoskeleton_armor.json +++ b/data/json/items/armor/combat_exoskeleton_armor.json @@ -1,78 +1,981 @@ [ { - "id": "combat_exoskeleton_armor_military", + "id": "combat_exoskeleton_armor_head_heavy", "type": "ARMOR", "category": "armor", - "name": { "str": "combat exoskeleton military armor" }, - "description": "Nicknamed 'Tank Suit' by soldiers, this armor is designed to absorb shrapnel and small caliber bullets on most of the users body. The awkward attachment points make this armor unusable by itself, it needs to be attached to a combat exoskeleton.", + "name": { "str": "heavy combat exoskeleton head armor" }, + "description": "This 2mm thick exoskeleton armor was designed when the testing of heavier versions concluded that mobility is actually very important on the battlefield, especially when you can still brush off anything short of a rifle round.", "symbol": "[", - "looks_like": "ballistic_vest_heavy", - "price": 1600000, - "price_postapoc": 32000, - "volume": "29500 ml", - "weight": "11800 g", - "flags": [ "CANT_WEAR", "STURDY", "ABLATIVE_EXOSKELETON_ARMOR" ], - "warmth": 20, - "environmental_protection": 1, + "price": 2000000, + "price_postapoc": 10000, + "volume": "3300 ml", + "weight": "3500 g", + "flags": [ "ABLATIVE_EXOSKELETON_HEAD", "STURDY", "CANT_WEAR" ], + "armor": [ + { + "layers": [ "OUTER" ], + "covers": [ "head" ], + "encumbrance": 22, + "coverage": 100, + "material": [ + { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, + { "type": "plastic_pad", "thickness": 2 }, + { "type": "kevlar_layered", "thickness": 4.4 }, + { "type": "qt_steel", "thickness": 6, "covered_by_mat": 95 } + ] + }, + { + "layers": [ "OUTER" ], + "covers": [ "mouth" ], + "encumbrance": 0, + "coverage": 100, + "material": [ + { "type": "plastic_pad", "thickness": 2 }, + { "type": "kevlar_layered", "thickness": 4.4 }, + { "type": "qt_steel", "thickness": 6 } + ] + }, + { + "layers": [ "OUTER" ], + "covers": [ "eyes" ], + "encumbrance": 0, + "coverage": 100, + "material": [ { "type": "lvl4ballisticglass", "thickness": 2 } ] + } + ] + }, + { + "id": "combat_exoskeleton_armor_torso_heavy", + "type": "ARMOR", + "category": "armor", + "name": { "str": "heavy combat exoskeleton torso armor" }, + "description": "This 2mm thick exoskeleton armor was designed when the testing of heavier versions concluded that mobility is actually very important on the battlefield, especially when you can still brush off anything short of a rifle round.", + "symbol": "[", + "price": 2000000, + "price_postapoc": 10000, + "volume": "12000 ml", + "weight": "12700 g", + "flags": [ "ABLATIVE_EXOSKELETON_TORSO", "STURDY", "CANT_WEAR" ], + "armor": [ + { + "layers": [ "OUTER" ], + "covers": [ "torso" ], + "encumbrance": 22, + "coverage": 100, + "material": [ + { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, + { "type": "plastic_pad", "thickness": 2 }, + { "type": "kevlar_layered", "thickness": 4.4 }, + { "type": "qt_steel", "thickness": 6, "covered_by_mat": 95 } + ] + } + ] + }, + { + "id": "combat_exoskeleton_armor_arm_heavy", + "type": "ARMOR", + "category": "armor", + "name": { "str": "heavy combat exoskeleton arm armor" }, + "description": "This 2mm thick exoskeleton armor was designed when the testing of heavier versions concluded that mobility is actually very important on the battlefield, especially when you can still brush off anything short of a rifle round.", + "symbol": "[", + "price": 2000000, + "price_postapoc": 10000, + "volume": "9700 ml", + "weight": "10300 g", + "flags": [ "ABLATIVE_EXOSKELETON_ARMS", "STURDY", "CANT_WEAR" ], + "armor": [ + { + "layers": [ "OUTER" ], + "covers": [ "arm_r", "arm_l" ], + "encumbrance": 22, + "coverage": 100, + "material": [ + { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, + { "type": "plastic_pad", "thickness": 2 }, + { "type": "kevlar_layered", "thickness": 4.4 }, + { "type": "qt_steel", "thickness": 6, "covered_by_mat": 95 } + ] + }, + { + "layers": [ "OUTER" ], + "covers": [ "hand_r", "hand_l" ], + "specifically_covers": [ "hand_back_r", "hand_back_l", "hand_wrist_r", "hand_wrist_l" ], + "encumbrance": 22, + "coverage": 100, + "material": [ + { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, + { "type": "plastic_pad", "thickness": 2 }, + { "type": "kevlar_layered", "thickness": 4.4 }, + { "type": "qt_steel", "thickness": 6, "covered_by_mat": 95 } + ] + }, + { + "layers": [ "OUTER" ], + "covers": [ "hand_r", "hand_l" ], + "specifically_covers": [ "hand_palm_r", "hand_palm_l", "hand_fingers_r", "hand_fingers_l" ], + "encumbrance": 0, + "coverage": 100, + "material": [ + { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, + { "type": "plastic_pad", "thickness": 2 }, + { "type": "kevlar_layered", "thickness": 1.1, "ignore_sheet_thickness": true } + ] + } + ] + }, + { + "id": "combat_exoskeleton_armor_leg_heavy", + "type": "ARMOR", + "category": "armor", + "name": { "str": "heavy combat exoskeleton leg armor" }, + "description": "This 2mm thick exoskeleton armor was designed when the testing of heavier versions concluded that mobility is actually very important on the battlefield, especially when you can still brush off anything short of a rifle round.", + "symbol": "[", + "price": 2000000, + "price_postapoc": 10000, + "volume": "10000 ml", + "weight": "10600 g", + "flags": [ "ABLATIVE_EXOSKELETON_LEGS", "STURDY", "CANT_WEAR" ], + "armor": [ + { + "layers": [ "OUTER" ], + "covers": [ "leg_r", "leg_l" ], + "encumbrance": 22, + "coverage": 100, + "material": [ + { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, + { "type": "plastic_pad", "thickness": 2 }, + { "type": "kevlar_layered", "thickness": 4.4 }, + { "type": "qt_steel", "thickness": 6, "covered_by_mat": 95 } + ] + }, + { + "layers": [ "OUTER" ], + "covers": [ "foot_r", "foot_l" ], + "specifically_covers": [ + "foot_toes_r", + "foot_toes_l", + "foot_ankle_r", + "foot_ankle_l", + "foot_heel_r", + "foot_heel_l", + "foot_arch_r", + "foot_arch_l" + ], + "encumbrance": 22, + "coverage": 100, + "material": [ + { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, + { "type": "plastic_pad", "thickness": 2 }, + { "type": "kevlar_layered", "thickness": 4.4 }, + { "type": "qt_steel", "thickness": 6, "covered_by_mat": 95 } + ] + } + ] + }, + { + "id": "combat_exoskeleton_armor_head_medium", + "copy-from": "combat_exoskeleton_armor_head_heavy", + "type": "ARMOR", + "name": { "str": "medium combat exoskeleton head armor" }, + "description": "This 2mm thick exoskeleton armor was designed when the testing of heavier versions concluded that mobility is actually very important on the battlefield, especially when you can still brush off anything short of a rifle round.", + "volume": "2700 ml", + "weight": "2800 g", + "armor": [ + { + "layers": [ "OUTER" ], + "covers": [ "head" ], + "encumbrance": 18, + "coverage": 100, + "material": [ + { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, + { "type": "plastic_pad", "thickness": 2 }, + { "type": "kevlar_layered", "thickness": 4.4 }, + { "type": "qt_steel", "thickness": 4, "covered_by_mat": 95 } + ] + }, + { + "layers": [ "OUTER" ], + "covers": [ "mouth" ], + "encumbrance": 0, + "coverage": 100, + "material": [ + { "type": "plastic_pad", "thickness": 2 }, + { "type": "kevlar_layered", "thickness": 4.4 }, + { "type": "qt_steel", "thickness": 4 } + ] + }, + { + "layers": [ "OUTER" ], + "covers": [ "eyes" ], + "encumbrance": 0, + "coverage": 100, + "material": [ { "type": "lvl4ballisticglass", "thickness": 2 } ] + } + ] + }, + { + "id": "combat_exoskeleton_armor_torso_medium", + "copy-from": "combat_exoskeleton_armor_torso_heavy", + "type": "ARMOR", + "name": { "str": "medium combat exoskeleton torso armor" }, + "description": "This 2mm thick exoskeleton armor was designed when the testing of heavier versions concluded that mobility is actually very important on the battlefield, especially when you can still brush off anything short of a rifle round.", + "volume": "9600 ml", + "weight": "10200 g", + "armor": [ + { + "layers": [ "OUTER" ], + "covers": [ "torso" ], + "encumbrance": 18, + "coverage": 100, + "material": [ + { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, + { "type": "plastic_pad", "thickness": 2 }, + { "type": "kevlar_layered", "thickness": 4.4 }, + { "type": "qt_steel", "thickness": 4, "covered_by_mat": 95 } + ] + } + ] + }, + { + "id": "combat_exoskeleton_armor_arm_medium", + "copy-from": "combat_exoskeleton_armor_arm_heavy", + "type": "ARMOR", + "name": { "str": "medium combat exoskeleton arm armor" }, + "description": "This 2mm thick exoskeleton armor was designed when the testing of heavier versions concluded that mobility is actually very important on the battlefield, especially when you can still brush off anything short of a rifle round.", + "volume": "7700 ml", + "weight": "8200 g", + "armor": [ + { + "layers": [ "OUTER" ], + "covers": [ "arm_r", "arm_l" ], + "encumbrance": 18, + "coverage": 100, + "material": [ + { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, + { "type": "plastic_pad", "thickness": 2 }, + { "type": "kevlar_layered", "thickness": 4.4 }, + { "type": "qt_steel", "thickness": 4, "covered_by_mat": 95 } + ] + }, + { + "layers": [ "OUTER" ], + "covers": [ "hand_r", "hand_l" ], + "specifically_covers": [ "hand_back_r", "hand_back_l", "hand_wrist_r", "hand_wrist_l" ], + "encumbrance": 18, + "coverage": 100, + "material": [ + { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, + { "type": "plastic_pad", "thickness": 2 }, + { "type": "kevlar_layered", "thickness": 4.4 }, + { "type": "qt_steel", "thickness": 4, "covered_by_mat": 95 } + ] + }, + { + "layers": [ "OUTER" ], + "covers": [ "hand_r", "hand_l" ], + "specifically_covers": [ "hand_palm_r", "hand_palm_l", "hand_fingers_r", "hand_fingers_l" ], + "encumbrance": 0, + "coverage": 100, + "material": [ + { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, + { "type": "plastic_pad", "thickness": 2 }, + { "type": "kevlar_layered", "thickness": 1.1, "ignore_sheet_thickness": true } + ] + } + ] + }, + { + "id": "combat_exoskeleton_armor_leg_medium", + "copy-from": "combat_exoskeleton_armor_leg_heavy", + "type": "ARMOR", + "name": { "str": "medium combat exoskeleton leg armor" }, + "description": "This 2mm thick exoskeleton armor was designed when the testing of heavier versions concluded that mobility is actually very important on the battlefield, especially when you can still brush off anything short of a rifle round.", + "volume": "8000 ml", + "weight": "8500 g", + "armor": [ + { + "layers": [ "OUTER" ], + "covers": [ "leg_r", "leg_l" ], + "encumbrance": 18, + "coverage": 100, + "material": [ + { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, + { "type": "plastic_pad", "thickness": 2 }, + { "type": "kevlar_layered", "thickness": 4.4 }, + { "type": "qt_steel", "thickness": 4, "covered_by_mat": 95 } + ] + }, + { + "layers": [ "OUTER" ], + "covers": [ "foot_r", "foot_l" ], + "specifically_covers": [ + "foot_toes_r", + "foot_toes_l", + "foot_ankle_r", + "foot_ankle_l", + "foot_heel_r", + "foot_heel_l", + "foot_arch_r", + "foot_arch_l" + ], + "encumbrance": 18, + "coverage": 100, + "material": [ + { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, + { "type": "plastic_pad", "thickness": 2 }, + { "type": "kevlar_layered", "thickness": 4.4 }, + { "type": "qt_steel", "thickness": 4, "covered_by_mat": 95 } + ] + } + ] + }, + { + "id": "combat_exoskeleton_armor_head_light", + "copy-from": "combat_exoskeleton_armor_head_heavy", + "type": "ARMOR", + "name": { "str": "light combat exoskeleton head armor" }, + "description": "This 2mm thick exoskeleton armor was designed when the testing of heavier versions concluded that mobility is actually very important on the battlefield, especially when you can still brush off anything short of a rifle round.", + "volume": "2000 ml", + "weight": "2300 g", + "armor": [ + { + "layers": [ "OUTER" ], + "covers": [ "head" ], + "encumbrance": 14, + "coverage": 100, + "material": [ + { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, + { "type": "plastic_pad", "thickness": 2 }, + { "type": "kevlar_layered", "thickness": 4.4 }, + { "type": "qt_steel", "thickness": 2, "covered_by_mat": 95 } + ] + }, + { + "layers": [ "OUTER" ], + "covers": [ "mouth" ], + "encumbrance": 0, + "coverage": 100, + "material": [ + { "type": "plastic_pad", "thickness": 2 }, + { "type": "kevlar_layered", "thickness": 4.4 }, + { "type": "qt_steel", "thickness": 2 } + ] + }, + { + "layers": [ "OUTER" ], + "covers": [ "eyes" ], + "encumbrance": 0, + "coverage": 100, + "material": [ { "type": "lvl4ballisticglass", "thickness": 2 } ] + } + ] + }, + { + "id": "combat_exoskeleton_armor_torso_light", + "copy-from": "combat_exoskeleton_armor_torso_heavy", + "type": "ARMOR", + "name": { "str": "light combat exoskeleton torso armor" }, + "description": "This 2mm thick exoskeleton armor was designed when the testing of heavier versions concluded that mobility is actually very important on the battlefield, especially when you can still brush off anything short of a rifle round.", + "volume": "7200 ml", + "weight": "8200 g", + "armor": [ + { + "layers": [ "OUTER" ], + "covers": [ "torso" ], + "encumbrance": 14, + "coverage": 100, + "material": [ + { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, + { "type": "plastic_pad", "thickness": 2 }, + { "type": "kevlar_layered", "thickness": 4.4 }, + { "type": "qt_steel", "thickness": 2, "covered_by_mat": 95 } + ] + } + ] + }, + { + "id": "combat_exoskeleton_armor_arm_light", + "copy-from": "combat_exoskeleton_armor_arm_heavy", + "type": "ARMOR", + "name": { "str": "light combat exoskeleton arm armor" }, + "description": "This 2mm thick exoskeleton armor was designed when the testing of heavier versions concluded that mobility is actually very important on the battlefield, especially when you can still brush off anything short of a rifle round.", + "volume": "5800 ml", + "weight": "6600 g", + "armor": [ + { + "layers": [ "OUTER" ], + "covers": [ "arm_r", "arm_l" ], + "encumbrance": 14, + "coverage": 100, + "material": [ + { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, + { "type": "plastic_pad", "thickness": 2 }, + { "type": "kevlar_layered", "thickness": 4.4 }, + { "type": "qt_steel", "thickness": 2, "covered_by_mat": 95 } + ] + }, + { + "layers": [ "OUTER" ], + "covers": [ "hand_r", "hand_l" ], + "specifically_covers": [ "hand_back_r", "hand_back_l", "hand_wrist_r", "hand_wrist_l" ], + "encumbrance": 14, + "coverage": 100, + "material": [ + { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, + { "type": "plastic_pad", "thickness": 2 }, + { "type": "kevlar_layered", "thickness": 4.4 }, + { "type": "qt_steel", "thickness": 2, "covered_by_mat": 95 } + ] + }, + { + "layers": [ "OUTER" ], + "covers": [ "hand_r", "hand_l" ], + "specifically_covers": [ "hand_palm_r", "hand_palm_l", "hand_fingers_r", "hand_fingers_l" ], + "encumbrance": 0, + "coverage": 100, + "material": [ + { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, + { "type": "plastic_pad", "thickness": 1 }, + { "type": "kevlar_layered", "thickness": 1.1, "ignore_sheet_thickness": true } + ] + } + ] + }, + { + "id": "combat_exoskeleton_armor_leg_light", + "copy-from": "combat_exoskeleton_armor_leg_heavy", + "type": "ARMOR", + "name": { "str": "light combat exoskeleton leg armor" }, + "description": "This 2mm thick exoskeleton armor was designed when the testing of heavier versions concluded that mobility is actually very important on the battlefield, especially when you can still brush off anything short of a rifle round.", + "volume": "6000 ml", + "weight": "6800 g", + "armor": [ + { + "layers": [ "OUTER" ], + "covers": [ "leg_r", "leg_l" ], + "encumbrance": 14, + "coverage": 100, + "material": [ + { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, + { "type": "plastic_pad", "thickness": 2 }, + { "type": "kevlar_layered", "thickness": 4.4 }, + { "type": "qt_steel", "thickness": 2, "covered_by_mat": 95 } + ] + }, + { + "layers": [ "OUTER" ], + "covers": [ "foot_r", "foot_l" ], + "specifically_covers": [ + "foot_toes_r", + "foot_toes_l", + "foot_ankle_r", + "foot_ankle_l", + "foot_heel_r", + "foot_heel_l", + "foot_arch_r", + "foot_arch_l" + ], + "encumbrance": 14, + "coverage": 100, + "material": [ + { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, + { "type": "plastic_pad", "thickness": 2 }, + { "type": "kevlar_layered", "thickness": 4.4 }, + { "type": "qt_steel", "thickness": 2, "covered_by_mat": 95 } + ] + } + ] + }, + { + "id": "combat_exoskeleton_armor_head_heavy_reinforced", + "copy-from": "combat_exoskeleton_armor_head_heavy", + "type": "ARMOR", + "name": { "str": "reinforced heavy combat exoskeleton head armor" }, + "description": "This 2mm thick exoskeleton armor was designed when the testing of heavier versions concluded that mobility is actually very important on the battlefield, especially when you can still brush off anything short of a rifle round. This armor has been reinforced with chainmail to fill its gaps.", + "volume": "3600 ml", + "weight": "3900 g", + "armor": [ + { + "layers": [ "OUTER" ], + "covers": [ "head" ], + "encumbrance": 24, + "coverage": 100, + "material": [ + { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, + { "type": "plastic_pad", "thickness": 2 }, + { "type": "kevlar_layered", "thickness": 4.4 }, + { "type": "qt_steel_chain", "thickness": 1.2 }, + { "type": "qt_steel", "thickness": 4.8, "covered_by_mat": 95 } + ] + }, + { + "layers": [ "OUTER" ], + "covers": [ "mouth" ], + "encumbrance": 0, + "coverage": 100, + "material": [ + { "type": "plastic_pad", "thickness": 2 }, + { "type": "kevlar_layered", "thickness": 4.4 }, + { "type": "qt_steel", "thickness": 6 } + ] + }, + { + "layers": [ "OUTER" ], + "covers": [ "eyes" ], + "encumbrance": 0, + "coverage": 100, + "material": [ { "type": "lvl4ballisticglass", "thickness": 2 } ] + } + ] + }, + { + "id": "combat_exoskeleton_armor_torso_heavy_reinforced", + "copy-from": "combat_exoskeleton_armor_torso_heavy", + "type": "ARMOR", + "name": { "str": "reinforced heavy combat exoskeleton torso armor" }, + "description": "This 2mm thick exoskeleton armor was designed when the testing of heavier versions concluded that mobility is actually very important on the battlefield, especially when you can still brush off anything short of a rifle round. This armor has been reinforced with chainmail to fill its gaps.", + "volume": "13200 ml", + "weight": "14000 g", "armor": [ { "layers": [ "OUTER" ], "covers": [ "torso" ], - "encumbrance": 9, - "coverage": 85, + "encumbrance": 24, + "coverage": 100, "material": [ + { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, + { "type": "plastic_pad", "thickness": 2 }, { "type": "kevlar_layered", "thickness": 4.4 }, - { "type": "nylon", "thickness": 2 }, - { "type": "qt_steel", "thickness": 2.3 } + { "type": "qt_steel_chain", "thickness": 1.2 }, + { "type": "qt_steel", "thickness": 4.8, "covered_by_mat": 95 } + ] + } + ] + }, + { + "id": "combat_exoskeleton_armor_arm_heavy_reinforced", + "copy-from": "combat_exoskeleton_armor_arm_heavy", + "type": "ARMOR", + "name": { "str": "reinforced heavy combat exoskeleton arm armor" }, + "description": "This 2mm thick exoskeleton armor was designed when the testing of heavier versions concluded that mobility is actually very important on the battlefield, especially when you can still brush off anything short of a rifle round. This armor has been reinforced with chainmail to fill its gaps.", + "volume": "10700 ml", + "weight": "11300 g", + "armor": [ + { + "layers": [ "OUTER" ], + "covers": [ "arm_r", "arm_l" ], + "encumbrance": 24, + "coverage": 100, + "material": [ + { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, + { "type": "plastic_pad", "thickness": 2 }, + { "type": "kevlar_layered", "thickness": 4.4 }, + { "type": "qt_steel_chain", "thickness": 1.2 }, + { "type": "qt_steel", "thickness": 4.8, "covered_by_mat": 95 } ] }, { "layers": [ "OUTER" ], - "covers": [ "arm_l", "arm_r", "leg_l", "leg_r" ], - "encumbrance": 6, - "coverage": 85, - "material": [ { "type": "kevlar_layered", "thickness": 4.4 }, { "type": "nylon", "thickness": 1 } ] + "covers": [ "hand_r", "hand_l" ], + "specifically_covers": [ "hand_back_r", "hand_back_l", "hand_wrist_r", "hand_wrist_l" ], + "encumbrance": 24, + "coverage": 100, + "material": [ + { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, + { "type": "plastic_pad", "thickness": 2 }, + { "type": "kevlar_layered", "thickness": 4.4 }, + { "type": "qt_steel_chain", "thickness": 1.2 }, + { "type": "qt_steel", "thickness": 4.8, "covered_by_mat": 95 } + ] + }, + { + "layers": [ "OUTER" ], + "covers": [ "hand_r", "hand_l" ], + "specifically_covers": [ "hand_palm_r", "hand_palm_l", "hand_fingers_r", "hand_fingers_l" ], + "encumbrance": 0, + "coverage": 100, + "material": [ + { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, + { "type": "plastic_pad", "thickness": 2 }, + { "type": "kevlar_layered", "thickness": 1.1, "ignore_sheet_thickness": true }, + { "type": "qt_steel_chain", "thickness": 1.2 } + ] } ] }, { - "id": "combat_exoskeleton_armor_lc_plate", - "copy-from": "armor_lc_plate", + "id": "combat_exoskeleton_armor_leg_heavy_reinforced", + "copy-from": "combat_exoskeleton_armor_leg_heavy", "type": "ARMOR", - "name": { "str": "combat exoskeleton mild steel plate armor" }, - "description": "This plate armor has oddly shaped plates and articulations and was specially made to accomodate and take advantage of the exoskeleton underneath. The awkward attachment points make this armor unusable by itself, it needs to be attached to a combat exoskeleton.", - "extend": { "flags": [ "CANT_WEAR", "ABLATIVE_EXOSKELETON_ARMOR" ] } + "name": { "str": "reinforced heavy combat exoskeleton leg armor" }, + "description": "This 2mm thick exoskeleton armor was designed when the testing of heavier versions concluded that mobility is actually very important on the battlefield, especially when you can still brush off anything short of a rifle round. This armor has been reinforced with chainmail to fill its gaps.", + "volume": "11000 ml", + "weight": "11700 g", + "armor": [ + { + "layers": [ "OUTER" ], + "covers": [ "leg_r", "leg_l" ], + "encumbrance": 24, + "coverage": 100, + "material": [ + { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, + { "type": "plastic_pad", "thickness": 2 }, + { "type": "kevlar_layered", "thickness": 4.4 }, + { "type": "qt_steel_chain", "thickness": 1.2 }, + { "type": "qt_steel", "thickness": 4.8, "covered_by_mat": 95 } + ] + }, + { + "layers": [ "OUTER" ], + "covers": [ "foot_r", "foot_l" ], + "specifically_covers": [ + "foot_toes_r", + "foot_toes_l", + "foot_ankle_r", + "foot_ankle_l", + "foot_heel_r", + "foot_heel_l", + "foot_arch_r", + "foot_arch_l" + ], + "encumbrance": 24, + "coverage": 100, + "material": [ + { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, + { "type": "plastic_pad", "thickness": 2 }, + { "type": "kevlar_layered", "thickness": 4.4 }, + { "type": "qt_steel_chain", "thickness": 1.2 }, + { "type": "qt_steel", "thickness": 4.8, "covered_by_mat": 95 } + ] + } + ] }, { - "id": "combat_exoskeleton_armor_mc_plate", - "copy-from": "combat_exoskeleton_armor_lc_plate", + "id": "combat_exoskeleton_armor_head_medium_reinforced", + "copy-from": "combat_exoskeleton_armor_head_heavy", "type": "ARMOR", - "name": { "str": "combat exoskeleton medium steel plate armor" }, - "description": "This plate armor has oddly shaped plates and articulations and was specially made to accomodate and take advantage of the exoskeleton underneath. The awkward attachment points make this armor unusable by itself, it needs to be attached to a combat exoskeleton.", - "replace_materials": { "lc_steel": "mc_steel", "lc_steel_chain": "mc_steel_chain" } + "name": { "str": "reinforced medium combat exoskeleton head armor" }, + "description": "This 2mm thick exoskeleton armor was designed when the testing of heavier versions concluded that mobility is actually very important on the battlefield, especially when you can still brush off anything short of a rifle round. This armor has been reinforced with chainmail to fill its gaps.", + "volume": "3000 ml", + "weight": "3100 g", + "armor": [ + { + "layers": [ "OUTER" ], + "covers": [ "head" ], + "encumbrance": 20, + "coverage": 100, + "material": [ + { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, + { "type": "plastic_pad", "thickness": 2 }, + { "type": "kevlar_layered", "thickness": 4.4 }, + { "type": "qt_steel_chain", "thickness": 1.2 }, + { "type": "qt_steel", "thickness": 2.8, "covered_by_mat": 95 } + ] + }, + { + "layers": [ "OUTER" ], + "covers": [ "mouth" ], + "encumbrance": 0, + "coverage": 100, + "material": [ + { "type": "plastic_pad", "thickness": 2 }, + { "type": "kevlar_layered", "thickness": 4.4 }, + { "type": "qt_steel", "thickness": 4 } + ] + }, + { + "layers": [ "OUTER" ], + "covers": [ "eyes" ], + "encumbrance": 0, + "coverage": 100, + "material": [ { "type": "lvl4ballisticglass", "thickness": 2 } ] + } + ] }, { - "id": "combat_exoskeleton_armor_hc_plate", - "copy-from": "combat_exoskeleton_armor_lc_plate", + "id": "combat_exoskeleton_armor_torso_medium_reinforced", + "copy-from": "combat_exoskeleton_armor_torso_heavy", "type": "ARMOR", - "name": { "str": "combat exoskeleton high steel plate armor" }, - "description": "This plate armor has oddly shaped plates and articulations and was specially made to accomodate and take advantage of the exoskeleton underneath. The awkward attachment points make this armor unusable by itself, it needs to be attached to a combat exoskeleton.", - "replace_materials": { "mc_steel": "hc_steel", "mc_steel_chain": "hc_steel_chain" } + "name": { "str": "reinforced medium combat exoskeleton torso armor" }, + "description": "This 2mm thick exoskeleton armor was designed when the testing of heavier versions concluded that mobility is actually very important on the battlefield, especially when you can still brush off anything short of a rifle round. This armor has been reinforced with chainmail to fill its gaps.", + "volume": "10600 ml", + "weight": "11200 g", + "armor": [ + { + "layers": [ "OUTER" ], + "covers": [ "torso" ], + "encumbrance": 20, + "coverage": 100, + "material": [ + { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, + { "type": "plastic_pad", "thickness": 2 }, + { "type": "kevlar_layered", "thickness": 4.4 }, + { "type": "qt_steel_chain", "thickness": 1.2 }, + { "type": "qt_steel", "thickness": 2.8, "covered_by_mat": 95 } + ] + } + ] }, { - "id": "combat_exoskeleton_armor_ch_plate", - "copy-from": "combat_exoskeleton_armor_lc_plate", + "id": "combat_exoskeleton_armor_arm_medium_reinforced", + "copy-from": "combat_exoskeleton_armor_arm_heavy", "type": "ARMOR", - "name": { "str": "combat exoskeleton hardened plate armor" }, - "description": "This plate armor has oddly shaped plates and articulations and was specially made to accomodate and take advantage of the exoskeleton underneath. The awkward attachment points make this armor unusable by itself, it needs to be attached to a combat exoskeleton.", - "replace_materials": { "lc_steel": "ch_steel", "lc_steel_chain": "ch_steel_chain" } + "name": { "str": "reinforced medium combat exoskeleton arm armor" }, + "description": "This 2mm thick exoskeleton armor was designed when the testing of heavier versions concluded that mobility is actually very important on the battlefield, especially when you can still brush off anything short of a rifle round. This armor has been reinforced with chainmail to fill its gaps.", + "volume": "8500 ml", + "weight": "9000 g", + "armor": [ + { + "layers": [ "OUTER" ], + "covers": [ "arm_r", "arm_l" ], + "encumbrance": 20, + "coverage": 100, + "material": [ + { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, + { "type": "plastic_pad", "thickness": 2 }, + { "type": "kevlar_layered", "thickness": 4.4 }, + { "type": "qt_steel_chain", "thickness": 1.2 }, + { "type": "qt_steel", "thickness": 2.8, "covered_by_mat": 95 } + ] + }, + { + "layers": [ "OUTER" ], + "covers": [ "hand_r", "hand_l" ], + "specifically_covers": [ "hand_back_r", "hand_back_l", "hand_wrist_r", "hand_wrist_l" ], + "encumbrance": 20, + "coverage": 100, + "material": [ + { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, + { "type": "plastic_pad", "thickness": 2 }, + { "type": "kevlar_layered", "thickness": 4.4 }, + { "type": "qt_steel_chain", "thickness": 1.2 }, + { "type": "qt_steel", "thickness": 2.8, "covered_by_mat": 95 } + ] + }, + { + "layers": [ "OUTER" ], + "covers": [ "hand_r", "hand_l" ], + "specifically_covers": [ "hand_palm_r", "hand_palm_l", "hand_fingers_r", "hand_fingers_l" ], + "encumbrance": 0, + "coverage": 100, + "material": [ + { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, + { "type": "plastic_pad", "thickness": 2 }, + { "type": "kevlar_layered", "thickness": 1.1, "ignore_sheet_thickness": true }, + { "type": "qt_steel_chain", "thickness": 1.2 } + ] + } + ] + }, + { + "id": "combat_exoskeleton_armor_leg_medium_reinforced", + "copy-from": "combat_exoskeleton_armor_leg_heavy", + "type": "ARMOR", + "name": { "str": "reinforced medium combat exoskeleton reinforced leg armor" }, + "description": "This 2mm thick exoskeleton armor was designed when the testing of heavier versions concluded that mobility is actually very important on the battlefield, especially when you can still brush off anything short of a rifle round. This armor has been reinforced with chainmail to fill its gaps.", + "volume": "8800 ml", + "weight": "9400 g", + "armor": [ + { + "layers": [ "OUTER" ], + "covers": [ "leg_r", "leg_l" ], + "encumbrance": 20, + "coverage": 100, + "material": [ + { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, + { "type": "plastic_pad", "thickness": 2 }, + { "type": "kevlar_layered", "thickness": 4.4 }, + { "type": "qt_steel_chain", "thickness": 1.2 }, + { "type": "qt_steel", "thickness": 2.8, "covered_by_mat": 95 } + ] + }, + { + "layers": [ "OUTER" ], + "covers": [ "foot_r", "foot_l" ], + "specifically_covers": [ + "foot_toes_r", + "foot_toes_l", + "foot_ankle_r", + "foot_ankle_l", + "foot_heel_r", + "foot_heel_l", + "foot_arch_r", + "foot_arch_l" + ], + "encumbrance": 20, + "coverage": 100, + "material": [ + { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, + { "type": "plastic_pad", "thickness": 2 }, + { "type": "kevlar_layered", "thickness": 4.4 }, + { "type": "qt_steel_chain", "thickness": 1.2 }, + { "type": "qt_steel", "thickness": 2.8, "covered_by_mat": 95 } + ] + } + ] + }, + { + "id": "combat_exoskeleton_armor_head_light_reinforced", + "copy-from": "combat_exoskeleton_armor_head_heavy", + "type": "ARMOR", + "name": { "str": "reinforced light combat exoskeleton head armor" }, + "description": "This 2mm thick exoskeleton armor was designed when the testing of heavier versions concluded that mobility is actually very important on the battlefield, especially when you can still brush off anything short of a rifle round. This armor has been reinforced with chainmail to fill its gaps.", + "volume": "2200 ml", + "weight": "2500 g", + "armor": [ + { + "layers": [ "OUTER" ], + "covers": [ "head" ], + "encumbrance": 16, + "coverage": 100, + "material": [ + { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, + { "type": "plastic_pad", "thickness": 2 }, + { "type": "kevlar_layered", "thickness": 4.4 }, + { "type": "qt_steel_chain", "thickness": 1.2 }, + { "type": "qt_steel", "thickness": 0.8, "covered_by_mat": 95 } + ] + }, + { + "layers": [ "OUTER" ], + "covers": [ "mouth" ], + "encumbrance": 0, + "coverage": 100, + "material": [ + { "type": "plastic_pad", "thickness": 2 }, + { "type": "kevlar_layered", "thickness": 4.4 }, + { "type": "qt_steel", "thickness": 2 } + ] + }, + { + "layers": [ "OUTER" ], + "covers": [ "eyes" ], + "encumbrance": 0, + "coverage": 100, + "material": [ { "type": "lvl4ballisticglass", "thickness": 2 } ] + } + ] + }, + { + "id": "combat_exoskeleton_armor_torso_light_reinforced", + "copy-from": "combat_exoskeleton_armor_torso_heavy", + "type": "ARMOR", + "name": { "str": "reinforced light combat exoskeleton torso armor" }, + "description": "This 2mm thick exoskeleton armor was designed when the testing of heavier versions concluded that mobility is actually very important on the battlefield, especially when you can still brush off anything short of a rifle round. This armor has been reinforced with chainmail to fill its gaps.", + "volume": "7900 ml", + "weight": "9000 g", + "armor": [ + { + "layers": [ "OUTER" ], + "covers": [ "torso" ], + "encumbrance": 16, + "coverage": 100, + "material": [ + { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, + { "type": "plastic_pad", "thickness": 2 }, + { "type": "kevlar_layered", "thickness": 4.4 }, + { "type": "qt_steel_chain", "thickness": 1.2 }, + { "type": "qt_steel", "thickness": 0.8, "covered_by_mat": 95 } + ] + } + ] + }, + { + "id": "combat_exoskeleton_armor_arm_light_reinforced", + "copy-from": "combat_exoskeleton_armor_arm_heavy", + "type": "ARMOR", + "name": { "str": "reinforced light combat exoskeleton arm armor" }, + "description": "This 2mm thick exoskeleton armor was designed when the testing of heavier versions concluded that mobility is actually very important on the battlefield, especially when you can still brush off anything short of a rifle round. This armor has been reinforced with chainmail to fill its gaps.", + "volume": "6400 ml", + "weight": "7300 g", + "armor": [ + { + "layers": [ "OUTER" ], + "covers": [ "arm_r", "arm_l" ], + "encumbrance": 16, + "coverage": 100, + "material": [ + { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, + { "type": "plastic_pad", "thickness": 2 }, + { "type": "kevlar_layered", "thickness": 4.4 }, + { "type": "qt_steel_chain", "thickness": 1.2 }, + { "type": "qt_steel", "thickness": 0.8, "covered_by_mat": 95 } + ] + }, + { + "layers": [ "OUTER" ], + "covers": [ "hand_r", "hand_l" ], + "specifically_covers": [ "hand_back_r", "hand_back_l", "hand_wrist_r", "hand_wrist_l" ], + "encumbrance": 16, + "coverage": 100, + "material": [ + { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, + { "type": "plastic_pad", "thickness": 2 }, + { "type": "kevlar_layered", "thickness": 4.4 }, + { "type": "qt_steel_chain", "thickness": 1.2 }, + { "type": "qt_steel", "thickness": 0.8, "covered_by_mat": 95 } + ] + }, + { + "layers": [ "OUTER" ], + "covers": [ "hand_r", "hand_l" ], + "specifically_covers": [ "hand_palm_r", "hand_palm_l", "hand_fingers_r", "hand_fingers_l" ], + "encumbrance": 0, + "coverage": 100, + "material": [ + { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, + { "type": "plastic_pad", "thickness": 1 }, + { "type": "kevlar_layered", "thickness": 1.1, "ignore_sheet_thickness": true }, + { "type": "qt_steel_chain", "thickness": 1.2 } + ] + } + ] }, { - "id": "combat_exoskeleton_armor_qt_plate", - "copy-from": "combat_exoskeleton_armor_lc_plate", + "id": "combat_exoskeleton_armor_leg_light_reinforced", + "copy-from": "combat_exoskeleton_armor_leg_heavy", "type": "ARMOR", - "name": { "str": "combat exoskeleton tempered plate armor" }, - "description": "This plate armor has oddly shaped plates and articulations and was specially made to accomodate and take advantage of the exoskeleton underneath. The awkward attachment points make this armor unusable by itself, it needs to be attached to a combat exoskeleton.", - "replace_materials": { "lc_steel": "qt_steel", "lc_steel_chain": "qt_steel_chain" } + "name": { "str": "reinforced light combat exoskeleton reinforced leg armor" }, + "description": "This 2mm thick exoskeleton armor was designed when the testing of heavier versions concluded that mobility is actually very important on the battlefield, especially when you can still brush off anything short of a rifle round. This armor has been reinforced with chainmail to fill its gaps.", + "volume": "6600 ml", + "weight": "7500 g", + "armor": [ + { + "layers": [ "OUTER" ], + "covers": [ "leg_r", "leg_l" ], + "encumbrance": 16, + "coverage": 100, + "material": [ + { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, + { "type": "plastic_pad", "thickness": 2 }, + { "type": "kevlar_layered", "thickness": 4.4 }, + { "type": "qt_steel_chain", "thickness": 1.2 }, + { "type": "qt_steel", "thickness": 0.8, "covered_by_mat": 95 } + ] + }, + { + "layers": [ "OUTER" ], + "covers": [ "foot_r", "foot_l" ], + "specifically_covers": [ + "foot_toes_r", + "foot_toes_l", + "foot_ankle_r", + "foot_ankle_l", + "foot_heel_r", + "foot_heel_l", + "foot_arch_r", + "foot_arch_l" + ], + "encumbrance": 16, + "coverage": 100, + "material": [ + { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, + { "type": "plastic_pad", "thickness": 2 }, + { "type": "kevlar_layered", "thickness": 4.4 }, + { "type": "qt_steel_chain", "thickness": 1.2 }, + { "type": "qt_steel", "thickness": 0.8, "covered_by_mat": 95 } + ] + } + ] } ] diff --git a/data/json/monsterdrops/zombie.json b/data/json/monsterdrops/zombie.json index 7ce31f5e8ffdd..b5d7c2c349a12 100644 --- a/data/json/monsterdrops/zombie.json +++ b/data/json/monsterdrops/zombie.json @@ -11,7 +11,10 @@ { "item": "circuit", "count": [ 0, 8 ], "prob": 40 }, { "item": "small_lcd_screen", "count": [ 0, 2 ], "prob": 25 }, { "item": "RAM", "count": [ 0, 1 ], "prob": 25 }, - { "item": "combat_exoskeleton_armor_military", "count": [ 0, 1 ], "prob": 20 }, + { "item": "combat_exoskeleton_armor_head_light", "count": [ 0, 1 ], "prob": 20 }, + { "item": "combat_exoskeleton_armor_torso_light", "count": [ 0, 1 ], "prob": 20 }, + { "item": "combat_exoskeleton_armor_arm_light", "count": [ 0, 1 ], "prob": 20 }, + { "item": "combat_exoskeleton_armor_leg_light", "count": [ 0, 1 ], "prob": 20 }, { "item": "combat_exoskeleton_salvaged", "count": [ 0, 1 ], "prob": 20 } ] }, diff --git a/data/json/obsoletion_and_migration_0.I/migration_items.json b/data/json/obsoletion_and_migration_0.I/migration_items.json index d6ee90624c292..73781eb5f8dce 100644 --- a/data/json/obsoletion_and_migration_0.I/migration_items.json +++ b/data/json/obsoletion_and_migration_0.I/migration_items.json @@ -7,7 +7,7 @@ { "id": "depowered_helmet", "type": "MIGRATION", - "replace": "combat_exoskeleton_armor_military" + "replace": "combat_exoskeleton_armor_head_light" }, { "id": "power_armor_frame", @@ -22,32 +22,32 @@ { "id": "power_armor_helmet_basic", "type": "MIGRATION", - "replace": "combat_exoskeleton_armor_military" + "replace": "combat_exoskeleton_armor_head_medium" }, { "id": "power_armor_helmet_basic_on", "type": "MIGRATION", - "replace": "combat_exoskeleton_armor_military" + "replace": "combat_exoskeleton_armor_head_medium" }, { "id": "power_armor_helmet_light", "type": "MIGRATION", - "replace": "combat_exoskeleton_armor_military" + "replace": "combat_exoskeleton_armor_head_light" }, { "id": "power_armor_helmet_light_on", "type": "MIGRATION", - "replace": "combat_exoskeleton_armor_military" + "replace": "combat_exoskeleton_armor_head_light" }, { "id": "power_armor_helmet_heavy", "type": "MIGRATION", - "replace": "combat_exoskeleton_armor_military" + "replace": "combat_exoskeleton_armor_head_heavy" }, { "id": "power_armor_helmet_heavy_on", "type": "MIGRATION", - "replace": "combat_exoskeleton_armor_military" + "replace": "combat_exoskeleton_armor_head_heavy" }, { "id": "power_armor_basic", diff --git a/data/json/recipes/armor/combat_exoskeleton_armor.json b/data/json/recipes/armor/combat_exoskeleton_armor.json index 6125adc5dd3e7..2a754fdc97447 100644 --- a/data/json/recipes/armor/combat_exoskeleton_armor.json +++ b/data/json/recipes/armor/combat_exoskeleton_armor.json @@ -1,27 +1,98 @@ [ { - "copy-from": "armor_lc_plate", - "result": "combat_exoskeleton_armor_lc_plate", + "result": "combat_exoskeleton_armor_head_heavy_reinforced", + "type": "recipe", + "activity_level": "LIGHT_EXERCISE", + "category": "CC_*", + "subcategory": "CSC_*_NESTED", + "skill_used": "fabrication", + "difficulty": 7, + "time": "1 h", + "book_learn": [ [ "textbook_armwest", 6 ], [ "textbook_fabrication", 6 ], [ "recipe_melee", 6 ] ], + "using": [ [ "chainmail_standard", 1 ] ], + "components": [ [ [ "qt_link_sheet", 1 ] ], [ [ "qt_chain_link", 20 ] ], [ [ "qt_wire", 1 ] ] ], + "proficiencies": [ { "proficiency": "prof_chain_armour" } ] + }, + { + "result": "combat_exoskeleton_armor_torso_heavy_reinforced", + "type": "recipe", + "activity_level": "LIGHT_EXERCISE", + "category": "CC_*", + "subcategory": "CSC_*_NESTED", + "skill_used": "fabrication", + "difficulty": 7, + "time": "1 h 45 m", + "book_learn": [ [ "textbook_armwest", 6 ], [ "textbook_fabrication", 6 ], [ "recipe_melee", 6 ] ], + "using": [ [ "chainmail_standard", 2 ] ], + "components": [ [ [ "qt_link_sheet", 2 ] ], [ [ "qt_chain_link", 45 ] ], [ [ "qt_wire", 1 ] ] ], + "proficiencies": [ { "proficiency": "prof_chain_armour" } ] + }, + { + "result": "combat_exoskeleton_armor_arm_heavy_reinforced", + "type": "recipe", + "activity_level": "LIGHT_EXERCISE", + "category": "CC_*", + "subcategory": "CSC_*_NESTED", + "skill_used": "fabrication", + "difficulty": 7, + "time": "1 h", + "book_learn": [ [ "textbook_armwest", 6 ], [ "textbook_fabrication", 6 ], [ "recipe_melee", 6 ] ], + "using": [ [ "chainmail_standard", 1 ] ], + "components": [ [ [ "qt_link_sheet", 1 ] ], [ [ "qt_chain_link", 25 ] ], [ [ "qt_wire", 1 ] ] ], + "proficiencies": [ { "proficiency": "prof_chain_armour" } ] + }, + { + "result": "combat_exoskeleton_armor_leg_heavy_reinforced", + "type": "recipe", + "activity_level": "LIGHT_EXERCISE", + "category": "CC_*", + "subcategory": "CSC_*_NESTED", + "skill_used": "fabrication", + "difficulty": 7, + "time": "1 h", + "book_learn": [ [ "textbook_armwest", 6 ], [ "textbook_fabrication", 6 ], [ "recipe_melee", 6 ] ], + "using": [ [ "chainmail_standard", 1 ] ], + "components": [ [ [ "qt_link_sheet", 1 ] ], [ [ "qt_chain_link", 25 ] ], [ [ "qt_wire", 1 ] ] ], + "proficiencies": [ { "proficiency": "prof_chain_armour" } ] + }, + { + "copy-from": "combat_exoskeleton_armor_head_heavy_reinforced", + "result": "combat_exoskeleton_armor_head_medium_reinforced", + "type": "recipe" + }, + { + "copy-from": "combat_exoskeleton_armor_torso_heavy_reinforced", + "result": "combat_exoskeleton_armor_torso_medium_reinforced", + "type": "recipe" + }, + { + "copy-from": "combat_exoskeleton_armor_arm_heavy_reinforced", + "result": "combat_exoskeleton_armor_arm_medium_reinforced", + "type": "recipe" + }, + { + "copy-from": "combat_exoskeleton_armor_leg_heavy_reinforced", + "result": "combat_exoskeleton_armor_leg_medium_reinforced", "type": "recipe" }, { - "copy-from": "armor_mc_plate", - "result": "combat_exoskeleton_armor_mc_plate", + "copy-from": "combat_exoskeleton_armor_head_heavy_reinforced", + "result": "combat_exoskeleton_armor_head_light_reinforced", "type": "recipe" }, { - "copy-from": "armor_hc_plate", - "result": "combat_exoskeleton_armor_hc_plate", + "copy-from": "combat_exoskeleton_armor_torso_heavy_reinforced", + "result": "combat_exoskeleton_armor_torso_light_reinforced", "type": "recipe" }, { - "copy-from": "armor_ch_plate", - "result": "combat_exoskeleton_armor_ch_plate", + "copy-from": "combat_exoskeleton_armor_arm_heavy_reinforced", + "result": "combat_exoskeleton_armor_arm_light_reinforced", "type": "recipe" }, { - "copy-from": "armor_qt_plate", - "result": "combat_exoskeleton_armor_qt_plate", + "copy-from": "combat_exoskeleton_armor_leg_heavy_reinforced", + "result": "combat_exoskeleton_armor_leg_light_reinforced", "type": "recipe" } ] diff --git a/data/json/recipes/nested.json b/data/json/recipes/nested.json index dee74111d9c3c..af4273a66030e 100644 --- a/data/json/recipes/nested.json +++ b/data/json/recipes/nested.json @@ -7158,5 +7158,40 @@ "description": "Recipes pertaining to the production of necklaces, bracelets, and other forms of jewelry formed from spent munitions.", "skill_used": "fabrication", "nested_category_data": [ "nested_bullet_necklaces" ] + }, + { + "id": "nested_combat_exoskeleton_armor_reinforcement", + "type": "nested_category", + "activity_level": "NO_EXERCISE", + "category": "CC_*", + "subcategory": "CSC_*_NESTED", + "name": "exoskeleton armors reinforcements", + "description": "Recipes related to the reinforcement of standard exoskeleton armors.", + "skill_used": "fabrication", + "nested_category_data": [ + "combat_exoskeleton_armor_head_heavy_reinforced", + "combat_exoskeleton_armor_torso_heavy_reinforced", + "combat_exoskeleton_armor_arm_heavy_reinforced", + "combat_exoskeleton_armor_leg_heavy_reinforced", + "combat_exoskeleton_armor_head_medium_reinforced", + "combat_exoskeleton_armor_torso_medium_reinforced", + "combat_exoskeleton_armor_arm_medium_reinforced", + "combat_exoskeleton_armor_leg_medium_reinforced", + "combat_exoskeleton_armor_head_light_reinforced", + "combat_exoskeleton_armor_torso_light_reinforced", + "combat_exoskeleton_armor_arm_light_reinforced", + "combat_exoskeleton_armor_leg_light_reinforced" + ] + }, + { + "id": "nested_combat_exoskeleton_armor", + "type": "nested_category", + "activity_level": "NO_EXERCISE", + "category": "CC_ARMOR", + "subcategory": "CSC_ARMOR_SUIT", + "name": "exoskeleton armors", + "description": "Recipes related to the production of custom exoskeleton armors.", + "skill_used": "fabrication", + "nested_category_data": [ "nested_combat_exoskeleton_armor_reinforcement" ] } ] diff --git a/data/mods/classic_zombies/items/blacklists.json b/data/mods/classic_zombies/items/blacklists.json index 77d9bf4f7ea2f..786d7f7f1388f 100644 --- a/data/mods/classic_zombies/items/blacklists.json +++ b/data/mods/classic_zombies/items/blacklists.json @@ -42,7 +42,18 @@ "combat_exoskeleton_heavy", "combat_exoskeleton_medium", "combat_exoskeleton_light", - "combat_exoskeleton_armor_military", + "combat_exoskeleton_armor_head_heavy", + "combat_exoskeleton_armor_torso_heavy", + "combat_exoskeleton_armor_arm_heavy", + "combat_exoskeleton_armor_leg_heavy", + "combat_exoskeleton_armor_head_medium", + "combat_exoskeleton_armor_torso_medium", + "combat_exoskeleton_armor_arm_medium", + "combat_exoskeleton_armor_leg_medium", + "combat_exoskeleton_armor_head_light", + "combat_exoskeleton_armor_torso_light", + "combat_exoskeleton_armor_arm_light", + "combat_exoskeleton_armor_leg_light", "mdrx", "ruger_arr", "ruger_pr", @@ -192,7 +203,6 @@ "btmp9mag_9x19mm_50rd", "coilgun", "cx4", - "combat_exoskeleton_salvaged", "emp_gun", "fetus", "fs2000", From 014d18ae106a2d6aa44ab73c9cf1106ba7d56b18 Mon Sep 17 00:00:00 2001 From: BalthazarArgall Date: Fri, 15 Mar 2024 12:13:16 +0100 Subject: [PATCH 36/73] Repalced dots with ellipsis --- data/json/items/armor/combat_exoskeleton.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/data/json/items/armor/combat_exoskeleton.json b/data/json/items/armor/combat_exoskeleton.json index 817ad0a4b4366..b23f0e7e18952 100644 --- a/data/json/items/armor/combat_exoskeleton.json +++ b/data/json/items/armor/combat_exoskeleton.json @@ -164,7 +164,7 @@ "ammo": "battery", "use_action": { "type": "transform", - "msg": "You activate the exoskeleton.\n>>Initiating boot sequence...\n//Loading DoubleOS v1.39............[X]\n//Loading calibration profile.......[X]\n//Activating atmospheric filtration.[X]\n//Activating liquid cooling.........[X]\n//Activating sound dampeners........[X]\n>>Boot successful.", + "msg": "You activate the exoskeleton.\n>>Initiating boot sequence…\n//Loading DoubleOS v1.39………………………………[x]\n//Loading calibration profile…………………[x]\n//Activating atmospheric filtration…[X]\n//Activating liquid cooling………………………[x]\n//Activating sound dampeners……………………[x]\n>>Boot successful.", "target": "combat_exoskeleton_heavy_on", "active": true, "need_charges": 1, @@ -278,7 +278,7 @@ "looks_like": "power_armor_basic", "use_action": { "type": "transform", - "msg": "You activate the exoskeleton.\n>>Initiating boot sequence...\n//Loading DoubleOS v2.11............[X]\n//Loading calibration profile.......[X]\n//Activating atmospheric filtration.[X]\n//Activating liquid cooling.........[X]\n//Activating sound dampeners........[X]\n>>Boot successful.", + "msg": "You activate the exoskeleton.\n>>Initiating boot sequence…\n//Loading DoubleOS v2.11………………………………[x]\n//Loading calibration profile…………………[x]\n//Activating atmospheric filtration…[X]\n//Activating liquid cooling………………………[x]\n//Activating sound dampeners……………………[x]\n>>Boot successful.", "target": "combat_exoskeleton_medium_on", "active": true, "need_charges": 1, @@ -392,7 +392,7 @@ "looks_like": "power_armor_light", "use_action": { "type": "transform", - "msg": "You activate the exoskeleton.\n>>Initiating boot sequence...\n//Loading DoubleOS v3.21............[X]\n//Loading calibration profile.......[X]\n//Activating atmospheric filtration.[X]\n//Activating liquid cooling.........[X]\n//Activating sound dampeners........[X]\n>>Boot successful.", + "msg": "You activate the exoskeleton.\n>>Initiating boot sequence…\n//Loading DoubleOS v3.28………………………………[x]\n//Loading calibration profile…………………[x]\n//Activating atmospheric filtration…[X]\n//Activating liquid cooling………………………[x]\n//Activating sound dampeners……………………[x]\n>>Boot successful.", "target": "combat_exoskeleton_light_on", "active": true, "need_charges": 1, From 1884ca48b9195de1ca8d7066590c44562a4142ec Mon Sep 17 00:00:00 2001 From: BalthazarArgall Date: Fri, 15 Mar 2024 12:44:57 +0100 Subject: [PATCH 37/73] modified activation message --- data/json/items/armor/combat_exoskeleton.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/data/json/items/armor/combat_exoskeleton.json b/data/json/items/armor/combat_exoskeleton.json index b23f0e7e18952..b98b1b200aa39 100644 --- a/data/json/items/armor/combat_exoskeleton.json +++ b/data/json/items/armor/combat_exoskeleton.json @@ -164,11 +164,11 @@ "ammo": "battery", "use_action": { "type": "transform", - "msg": "You activate the exoskeleton.\n>>Initiating boot sequence…\n//Loading DoubleOS v1.39………………………………[x]\n//Loading calibration profile…………………[x]\n//Activating atmospheric filtration…[X]\n//Activating liquid cooling………………………[x]\n//Activating sound dampeners……………………[x]\n>>Boot successful.", + "msg": "You activate the exoskeleton.\n>>Initiating boot sequence…\n//Loading DoubleOS v1.39…\n//Loading calibration profile…\n//Activating atmospheric filtration…\n//Activating liquid cooling…\n//Activating sound dampeners…\n>>Boot successful.", "target": "combat_exoskeleton_heavy_on", "active": true, "need_charges": 1, - "need_charges_msg": "The exoskeleton batteries are empty" + "need_charges_msg": "The exoskeleton batteries are empty." }, "relic_data": { "passive_effects": [ @@ -278,11 +278,11 @@ "looks_like": "power_armor_basic", "use_action": { "type": "transform", - "msg": "You activate the exoskeleton.\n>>Initiating boot sequence…\n//Loading DoubleOS v2.11………………………………[x]\n//Loading calibration profile…………………[x]\n//Activating atmospheric filtration…[X]\n//Activating liquid cooling………………………[x]\n//Activating sound dampeners……………………[x]\n>>Boot successful.", + "msg": "You activate the exoskeleton.\n>>Initiating boot sequence…\n//Loading DoubleOS v3.11…\n//Loading calibration profile…\n//Activating atmospheric filtration…\n//Activating liquid cooling…\n//Activating sound dampeners…\n>>Boot successful.", "target": "combat_exoskeleton_medium_on", "active": true, "need_charges": 1, - "need_charges_msg": "The exoskeleton batteries are empty" + "need_charges_msg": "The exoskeleton batteries are empty." }, "relic_data": { "passive_effects": [ @@ -392,11 +392,11 @@ "looks_like": "power_armor_light", "use_action": { "type": "transform", - "msg": "You activate the exoskeleton.\n>>Initiating boot sequence…\n//Loading DoubleOS v3.28………………………………[x]\n//Loading calibration profile…………………[x]\n//Activating atmospheric filtration…[X]\n//Activating liquid cooling………………………[x]\n//Activating sound dampeners……………………[x]\n>>Boot successful.", + "msg": "You activate the exoskeleton.\n>>Initiating boot sequence…\n//Loading DoubleOS v3.28…\n//Loading calibration profile…\n//Activating atmospheric filtration…\n//Activating liquid cooling…\n//Activating sound dampeners…\n>>Boot successful.", "target": "combat_exoskeleton_light_on", "active": true, "need_charges": 1, - "need_charges_msg": "The exoskeleton batteries are empty" + "need_charges_msg": "The exoskeleton batteries are empty." }, "relic_data": { "passive_effects": [ From 433501730f60d1e5da78ff289648d8ed068c386b Mon Sep 17 00:00:00 2001 From: BalthazarArgall Date: Fri, 15 Mar 2024 15:38:35 +0100 Subject: [PATCH 38/73] fixed carry weight carry over and clarified effect description --- data/json/items/armor/combat_exoskeleton.json | 28 ++++++++++++------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/data/json/items/armor/combat_exoskeleton.json b/data/json/items/armor/combat_exoskeleton.json index b98b1b200aa39..3fa8a11a46281 100644 --- a/data/json/items/armor/combat_exoskeleton.json +++ b/data/json/items/armor/combat_exoskeleton.json @@ -176,8 +176,8 @@ "has": "WORN", "condition": "ACTIVE", "values": [ { "value": "CARRY_WEIGHT", "multiply": 0.8 }, { "value": "CLIMATE_CONTROL_CHILL", "add": 50 } ], - "name": { "str": "Exoskeletal assistance" }, - "description": "The exoskeleton is less encumbering and increases your carry capacity." + "name": { "str": "Active exoskeleton" }, + "description": "The exoskeleton protects you against harmful gas, cools you down, and has reduced encumbrance." } ] } @@ -270,12 +270,16 @@ } }, { - "copy-from": "combat_exoskeleton_heavy", + "copy-from": "combat_exoskeleton_salvaged", "id": "combat_exoskeleton_medium", "type": "TOOL_ARMOR", "name": { "str": "combat exoskeleton mk2" }, "description": "These were the second wave of military combat exoskeleton, and got a lot of media attention, with popular Navy commercials featuring them heavily. The exoskeleton itself is strapped on an environmental suit with an integrated life-support system. A variety of of webbing, magnets, and clips allows the attachment of special armor plating onto the frame.", "looks_like": "power_armor_basic", + "price": 50000000, + "price_postapoc": 100000, + "extend": { "flags": [ "COMBAT_TOGGLEABLE", "USE_UPS" ] }, + "ammo": "battery", "use_action": { "type": "transform", "msg": "You activate the exoskeleton.\n>>Initiating boot sequence…\n//Loading DoubleOS v3.11…\n//Loading calibration profile…\n//Activating atmospheric filtration…\n//Activating liquid cooling…\n//Activating sound dampeners…\n>>Boot successful.", @@ -289,9 +293,9 @@ { "has": "WORN", "condition": "ACTIVE", - "values": [ { "value": "CARRY_WEIGHT", "multiply": 0.8 }, { "value": "CLIMATE_CONTROL_CHILL", "add": 50 } ], - "name": { "str": "Exoskeletal assistance" }, - "description": "The exoskeleton is less encumbering and increases your carry capacity." + "values": [ { "value": "CARRY_WEIGHT", "multiply": 0.6 }, { "value": "CLIMATE_CONTROL_CHILL", "add": 50 } ], + "name": { "str": "Active exoskeleton" }, + "description": "The exoskeleton protects you against harmful gas, cools you down, and has reduced encumbrance." } ] } @@ -384,12 +388,16 @@ } }, { - "copy-from": "combat_exoskeleton_heavy", "id": "combat_exoskeleton_light", + "copy-from": "combat_exoskeleton_salvaged", "type": "TOOL_ARMOR", "name": { "str": "combat exoskeleton mk3" }, "description": "The final iteration of military power armor before the fall of civilization, this type was designed for actual widespread combat use and was seen on the front lines during the last days of the Cataclysm, unfortunately, the world ended before it could roll out in significant numbers. The exoskeleton itself is strapped on an environmental suit with an integrated life-support system. A variety of of webbing, magnets, and clips allows the attachment of special armor plating onto the frame.", "looks_like": "power_armor_light", + "price": 50000000, + "price_postapoc": 100000, + "extend": { "flags": [ "COMBAT_TOGGLEABLE", "USE_UPS" ] }, + "ammo": "battery", "use_action": { "type": "transform", "msg": "You activate the exoskeleton.\n>>Initiating boot sequence…\n//Loading DoubleOS v3.28…\n//Loading calibration profile…\n//Activating atmospheric filtration…\n//Activating liquid cooling…\n//Activating sound dampeners…\n>>Boot successful.", @@ -403,9 +411,9 @@ { "has": "WORN", "condition": "ACTIVE", - "values": [ { "value": "CARRY_WEIGHT", "multiply": 0.8 }, { "value": "CLIMATE_CONTROL_CHILL", "add": 50 } ], - "name": { "str": "Exoskeletal assistance" }, - "description": "The exoskeleton is less encumbering and increases your carry capacity." + "values": [ { "value": "CARRY_WEIGHT", "multiply": 0.4 }, { "value": "CLIMATE_CONTROL_CHILL", "add": 50 } ], + "name": { "str": "Active exoskeleton" }, + "description": "The exoskeleton protects you against harmful gas, cools you down, and has reduced encumbrance." } ] } From 51d3fec191bf9611106227dff2162afc06ff8ce1 Mon Sep 17 00:00:00 2001 From: BalthazarArgall Date: Tue, 19 Mar 2024 19:24:14 +0100 Subject: [PATCH 39/73] Adjusted encumbrance values, slightly adjusted and rounded energy consumption --- data/json/items/armor/combat_exoskeleton.json | 14 ++-- .../items/armor/combat_exoskeleton_armor.json | 72 +++++++++---------- 2 files changed, 43 insertions(+), 43 deletions(-) diff --git a/data/json/items/armor/combat_exoskeleton.json b/data/json/items/armor/combat_exoskeleton.json index 3fa8a11a46281..ed06ba49f077e 100644 --- a/data/json/items/armor/combat_exoskeleton.json +++ b/data/json/items/armor/combat_exoskeleton.json @@ -32,7 +32,7 @@ { "layers": [ "NORMAL", "OUTER" ], "covers": [ "head", "torso", "arm_l", "arm_r", "leg_l", "leg_r" ], - "encumbrance": 18, + "encumbrance": 20, "coverage": 100, "material": [ { "type": "lycra", "thickness": 0.2 }, @@ -206,7 +206,7 @@ { "layers": [ "NORMAL", "OUTER" ], "covers": [ "head", "torso", "arm_l", "arm_r", "leg_l", "leg_r" ], - "encumbrance": 8, + "encumbrance": 14, "coverage": 100, "material": [ { "type": "lycra", "thickness": 0.2 }, @@ -260,7 +260,7 @@ "material": [ { "type": "rubber", "thickness": 6 } ] } ], - "power_draw": "158 W", + "power_draw": "200 W", "revert_to": "combat_exoskeleton_heavy", "use_action": { "type": "transform", @@ -324,7 +324,7 @@ { "layers": [ "NORMAL", "OUTER" ], "covers": [ "head", "torso", "arm_l", "arm_r", "leg_l", "leg_r" ], - "encumbrance": 6, + "encumbrance": 12, "coverage": 100, "material": [ { "type": "lycra", "thickness": 0.2 }, @@ -378,7 +378,7 @@ "material": [ { "type": "rubber", "thickness": 6 } ] } ], - "power_draw": "126 W", + "power_draw": "175 W", "revert_to": "combat_exoskeleton_medium", "use_action": { "type": "transform", @@ -442,7 +442,7 @@ { "layers": [ "NORMAL", "OUTER" ], "covers": [ "head", "torso", "arm_l", "arm_r", "leg_l", "leg_r" ], - "encumbrance": 4, + "encumbrance": 10, "coverage": 100, "material": [ { "type": "lycra", "thickness": 0.2 }, @@ -496,7 +496,7 @@ "material": [ { "type": "rubber", "thickness": 6 } ] } ], - "power_draw": "100 W", + "power_draw": "150 W", "revert_to": "combat_exoskeleton_light", "use_action": { "type": "transform", diff --git a/data/json/items/armor/combat_exoskeleton_armor.json b/data/json/items/armor/combat_exoskeleton_armor.json index fc82c08521d65..c61e027a6d282 100644 --- a/data/json/items/armor/combat_exoskeleton_armor.json +++ b/data/json/items/armor/combat_exoskeleton_armor.json @@ -15,7 +15,7 @@ { "layers": [ "OUTER" ], "covers": [ "head" ], - "encumbrance": 22, + "encumbrance": 8, "coverage": 100, "material": [ { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, @@ -60,7 +60,7 @@ { "layers": [ "OUTER" ], "covers": [ "torso" ], - "encumbrance": 22, + "encumbrance": 8, "coverage": 100, "material": [ { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, @@ -87,7 +87,7 @@ { "layers": [ "OUTER" ], "covers": [ "arm_r", "arm_l" ], - "encumbrance": 22, + "encumbrance": 8, "coverage": 100, "material": [ { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, @@ -100,7 +100,7 @@ "layers": [ "OUTER" ], "covers": [ "hand_r", "hand_l" ], "specifically_covers": [ "hand_back_r", "hand_back_l", "hand_wrist_r", "hand_wrist_l" ], - "encumbrance": 22, + "encumbrance": 8, "coverage": 100, "material": [ { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, @@ -139,7 +139,7 @@ { "layers": [ "OUTER" ], "covers": [ "leg_r", "leg_l" ], - "encumbrance": 22, + "encumbrance": 8, "coverage": 100, "material": [ { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, @@ -161,7 +161,7 @@ "foot_arch_r", "foot_arch_l" ], - "encumbrance": 22, + "encumbrance": 8, "coverage": 100, "material": [ { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, @@ -184,7 +184,7 @@ { "layers": [ "OUTER" ], "covers": [ "head" ], - "encumbrance": 18, + "encumbrance": 6, "coverage": 100, "material": [ { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, @@ -225,7 +225,7 @@ { "layers": [ "OUTER" ], "covers": [ "torso" ], - "encumbrance": 18, + "encumbrance": 6, "coverage": 100, "material": [ { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, @@ -248,7 +248,7 @@ { "layers": [ "OUTER" ], "covers": [ "arm_r", "arm_l" ], - "encumbrance": 18, + "encumbrance": 6, "coverage": 100, "material": [ { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, @@ -261,7 +261,7 @@ "layers": [ "OUTER" ], "covers": [ "hand_r", "hand_l" ], "specifically_covers": [ "hand_back_r", "hand_back_l", "hand_wrist_r", "hand_wrist_l" ], - "encumbrance": 18, + "encumbrance": 6, "coverage": 100, "material": [ { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, @@ -296,7 +296,7 @@ { "layers": [ "OUTER" ], "covers": [ "leg_r", "leg_l" ], - "encumbrance": 18, + "encumbrance": 6, "coverage": 100, "material": [ { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, @@ -318,7 +318,7 @@ "foot_arch_r", "foot_arch_l" ], - "encumbrance": 18, + "encumbrance": 6, "coverage": 100, "material": [ { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, @@ -341,7 +341,7 @@ { "layers": [ "OUTER" ], "covers": [ "head" ], - "encumbrance": 14, + "encumbrance": 4, "coverage": 100, "material": [ { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, @@ -382,7 +382,7 @@ { "layers": [ "OUTER" ], "covers": [ "torso" ], - "encumbrance": 14, + "encumbrance": 4, "coverage": 100, "material": [ { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, @@ -405,7 +405,7 @@ { "layers": [ "OUTER" ], "covers": [ "arm_r", "arm_l" ], - "encumbrance": 14, + "encumbrance": 4, "coverage": 100, "material": [ { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, @@ -418,7 +418,7 @@ "layers": [ "OUTER" ], "covers": [ "hand_r", "hand_l" ], "specifically_covers": [ "hand_back_r", "hand_back_l", "hand_wrist_r", "hand_wrist_l" ], - "encumbrance": 14, + "encumbrance": 4, "coverage": 100, "material": [ { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, @@ -453,7 +453,7 @@ { "layers": [ "OUTER" ], "covers": [ "leg_r", "leg_l" ], - "encumbrance": 14, + "encumbrance": 4, "coverage": 100, "material": [ { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, @@ -475,7 +475,7 @@ "foot_arch_r", "foot_arch_l" ], - "encumbrance": 14, + "encumbrance": 4, "coverage": 100, "material": [ { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, @@ -498,7 +498,7 @@ { "layers": [ "OUTER" ], "covers": [ "head" ], - "encumbrance": 24, + "encumbrance": 10, "coverage": 100, "material": [ { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, @@ -540,7 +540,7 @@ { "layers": [ "OUTER" ], "covers": [ "torso" ], - "encumbrance": 24, + "encumbrance": 10, "coverage": 100, "material": [ { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, @@ -564,7 +564,7 @@ { "layers": [ "OUTER" ], "covers": [ "arm_r", "arm_l" ], - "encumbrance": 24, + "encumbrance": 10, "coverage": 100, "material": [ { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, @@ -578,7 +578,7 @@ "layers": [ "OUTER" ], "covers": [ "hand_r", "hand_l" ], "specifically_covers": [ "hand_back_r", "hand_back_l", "hand_wrist_r", "hand_wrist_l" ], - "encumbrance": 24, + "encumbrance": 10, "coverage": 100, "material": [ { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, @@ -615,7 +615,7 @@ { "layers": [ "OUTER" ], "covers": [ "leg_r", "leg_l" ], - "encumbrance": 24, + "encumbrance": 10, "coverage": 100, "material": [ { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, @@ -638,7 +638,7 @@ "foot_arch_r", "foot_arch_l" ], - "encumbrance": 24, + "encumbrance": 10, "coverage": 100, "material": [ { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, @@ -662,7 +662,7 @@ { "layers": [ "OUTER" ], "covers": [ "head" ], - "encumbrance": 20, + "encumbrance": 8, "coverage": 100, "material": [ { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, @@ -704,7 +704,7 @@ { "layers": [ "OUTER" ], "covers": [ "torso" ], - "encumbrance": 20, + "encumbrance": 8, "coverage": 100, "material": [ { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, @@ -728,7 +728,7 @@ { "layers": [ "OUTER" ], "covers": [ "arm_r", "arm_l" ], - "encumbrance": 20, + "encumbrance": 8, "coverage": 100, "material": [ { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, @@ -742,7 +742,7 @@ "layers": [ "OUTER" ], "covers": [ "hand_r", "hand_l" ], "specifically_covers": [ "hand_back_r", "hand_back_l", "hand_wrist_r", "hand_wrist_l" ], - "encumbrance": 20, + "encumbrance": 8, "coverage": 100, "material": [ { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, @@ -779,7 +779,7 @@ { "layers": [ "OUTER" ], "covers": [ "leg_r", "leg_l" ], - "encumbrance": 20, + "encumbrance": 8, "coverage": 100, "material": [ { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, @@ -802,7 +802,7 @@ "foot_arch_r", "foot_arch_l" ], - "encumbrance": 20, + "encumbrance": 8, "coverage": 100, "material": [ { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, @@ -826,7 +826,7 @@ { "layers": [ "OUTER" ], "covers": [ "head" ], - "encumbrance": 16, + "encumbrance": 6, "coverage": 100, "material": [ { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, @@ -868,7 +868,7 @@ { "layers": [ "OUTER" ], "covers": [ "torso" ], - "encumbrance": 16, + "encumbrance": 6, "coverage": 100, "material": [ { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, @@ -892,7 +892,7 @@ { "layers": [ "OUTER" ], "covers": [ "arm_r", "arm_l" ], - "encumbrance": 16, + "encumbrance": 6, "coverage": 100, "material": [ { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, @@ -906,7 +906,7 @@ "layers": [ "OUTER" ], "covers": [ "hand_r", "hand_l" ], "specifically_covers": [ "hand_back_r", "hand_back_l", "hand_wrist_r", "hand_wrist_l" ], - "encumbrance": 16, + "encumbrance": 6, "coverage": 100, "material": [ { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, @@ -943,7 +943,7 @@ { "layers": [ "OUTER" ], "covers": [ "leg_r", "leg_l" ], - "encumbrance": 16, + "encumbrance": 6, "coverage": 100, "material": [ { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, @@ -966,7 +966,7 @@ "foot_arch_r", "foot_arch_l" ], - "encumbrance": 16, + "encumbrance": 6, "coverage": 100, "material": [ { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, From 6528db8eab7a06ab9e75e536e5d06d96fa29b259 Mon Sep 17 00:00:00 2001 From: BalthazarArgall Date: Tue, 19 Mar 2024 19:59:37 +0100 Subject: [PATCH 40/73] Adjusted encumbrance values slightly --- data/json/items/armor/combat_exoskeleton.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/data/json/items/armor/combat_exoskeleton.json b/data/json/items/armor/combat_exoskeleton.json index ed06ba49f077e..697b88de81301 100644 --- a/data/json/items/armor/combat_exoskeleton.json +++ b/data/json/items/armor/combat_exoskeleton.json @@ -32,7 +32,7 @@ { "layers": [ "NORMAL", "OUTER" ], "covers": [ "head", "torso", "arm_l", "arm_r", "leg_l", "leg_r" ], - "encumbrance": 20, + "encumbrance": 30, "coverage": 100, "material": [ { "type": "lycra", "thickness": 0.2 }, @@ -177,7 +177,7 @@ "condition": "ACTIVE", "values": [ { "value": "CARRY_WEIGHT", "multiply": 0.8 }, { "value": "CLIMATE_CONTROL_CHILL", "add": 50 } ], "name": { "str": "Active exoskeleton" }, - "description": "The exoskeleton protects you against harmful gas, cools you down, and has reduced encumbrance." + "description": "The exoskeleton helps you carry more weight, protects you against harmful gas, cools you down, and has reduced encumbrance." } ] } @@ -206,7 +206,7 @@ { "layers": [ "NORMAL", "OUTER" ], "covers": [ "head", "torso", "arm_l", "arm_r", "leg_l", "leg_r" ], - "encumbrance": 14, + "encumbrance": 18, "coverage": 100, "material": [ { "type": "lycra", "thickness": 0.2 }, @@ -324,7 +324,7 @@ { "layers": [ "NORMAL", "OUTER" ], "covers": [ "head", "torso", "arm_l", "arm_r", "leg_l", "leg_r" ], - "encumbrance": 12, + "encumbrance": 14, "coverage": 100, "material": [ { "type": "lycra", "thickness": 0.2 }, From f5ebe1e17b83c0342a852eb3dcc3a7a40179a690 Mon Sep 17 00:00:00 2001 From: BalthazarArgall Date: Thu, 21 Mar 2024 16:35:06 +0100 Subject: [PATCH 41/73] adjusted pocket sizes, adjusted armored zombie drops, deleted unused recipes, fixed armor recipes, added MOLLE/tactical pockets to a few items --- data/json/items/armor/combat_exoskeleton.json | 10 +- .../items/armor/combat_exoskeleton_armor.json | 16 +++- data/json/monsterdrops/zombie.json | 8 +- .../armor/combat_exoskeleton_armor.json | 92 ++++++++++++++++--- data/json/recipes/nested.json | 40 +------- 5 files changed, 110 insertions(+), 56 deletions(-) diff --git a/data/json/items/armor/combat_exoskeleton.json b/data/json/items/armor/combat_exoskeleton.json index 697b88de81301..cb9aba13a24e9 100644 --- a/data/json/items/armor/combat_exoskeleton.json +++ b/data/json/items/armor/combat_exoskeleton.json @@ -94,6 +94,7 @@ "description": "Compartment for a UPS.", "flag_restriction": [ "IS_UPS" ], "max_contains_volume": "4000 ml", + "max_contains_weight": "2000 g", "moves": 500 }, { @@ -103,6 +104,7 @@ "description": "Compartment for a UPS.", "flag_restriction": [ "IS_UPS" ], "max_contains_volume": "4000 ml", + "max_contains_weight": "2000 g", "moves": 500 }, { @@ -113,7 +115,7 @@ "description": "Attachment points for exoskeleton head armor.", "flag_restriction": [ "ABLATIVE_EXOSKELETON_HEAD" ], "max_contains_volume": "20000 ml", - "max_contains_length": "100 cm", + "max_contains_weight": "20000 g", "moves": 1000 }, { @@ -124,7 +126,7 @@ "description": "Attachment points for exoskeleton torso armor.", "flag_restriction": [ "ABLATIVE_EXOSKELETON_TORSO" ], "max_contains_volume": "20000 ml", - "max_contains_length": "100 cm", + "max_contains_weight": "20000 g", "moves": 1000 }, { @@ -135,7 +137,7 @@ "description": "Attachment points for exoskeleton arm armor.", "flag_restriction": [ "ABLATIVE_EXOSKELETON_ARMS" ], "max_contains_volume": "20000 ml", - "max_contains_length": "100 cm", + "max_contains_weight": "20000 g", "moves": 1000 }, { @@ -146,7 +148,7 @@ "description": "Attachment points for exoskeleton leg armor.", "flag_restriction": [ "ABLATIVE_EXOSKELETON_LEGS" ], "max_contains_volume": "20000 ml", - "max_contains_length": "100 cm", + "max_contains_weight": "20000 g", "moves": 1000 } ] diff --git a/data/json/items/armor/combat_exoskeleton_armor.json b/data/json/items/armor/combat_exoskeleton_armor.json index c61e027a6d282..eaf470d61dc63 100644 --- a/data/json/items/armor/combat_exoskeleton_armor.json +++ b/data/json/items/armor/combat_exoskeleton_armor.json @@ -42,6 +42,19 @@ "coverage": 100, "material": [ { "type": "lvl4ballisticglass", "thickness": 2 } ] } + ], + "pocket_data": [ + { + "pocket_type": "CONTAINER", + "volume_encumber_modifier": 0, + "max_contains_volume": "300 ml", + "max_contains_weight": "500 g", + "max_item_length": "14 cm", + "moves": 100, + "description": "Pocket for a flashlight attachment.", + "flag_restriction": [ "HELMET_HEAD_ATTACHMENT" ], + "transparent": true + } ] }, { @@ -69,7 +82,8 @@ { "type": "qt_steel", "thickness": 6, "covered_by_mat": 95 } ] } - ] + ], + "use_action": [ { "type": "attach_molle", "size": 10 }, { "type": "detach_molle" } ] }, { "id": "combat_exoskeleton_armor_arm_heavy", diff --git a/data/json/monsterdrops/zombie.json b/data/json/monsterdrops/zombie.json index b5d7c2c349a12..9dc696f444d15 100644 --- a/data/json/monsterdrops/zombie.json +++ b/data/json/monsterdrops/zombie.json @@ -11,10 +11,10 @@ { "item": "circuit", "count": [ 0, 8 ], "prob": 40 }, { "item": "small_lcd_screen", "count": [ 0, 2 ], "prob": 25 }, { "item": "RAM", "count": [ 0, 1 ], "prob": 25 }, - { "item": "combat_exoskeleton_armor_head_light", "count": [ 0, 1 ], "prob": 20 }, - { "item": "combat_exoskeleton_armor_torso_light", "count": [ 0, 1 ], "prob": 20 }, - { "item": "combat_exoskeleton_armor_arm_light", "count": [ 0, 1 ], "prob": 20 }, - { "item": "combat_exoskeleton_armor_leg_light", "count": [ 0, 1 ], "prob": 20 }, + { "item": "combat_exoskeleton_armor_head_medium", "count": [ 0, 1 ], "prob": 20 }, + { "item": "combat_exoskeleton_armor_torso_medium", "count": [ 0, 1 ], "prob": 20 }, + { "item": "combat_exoskeleton_armor_arm_medium", "count": [ 0, 1 ], "prob": 20 }, + { "item": "combat_exoskeleton_armor_leg_medium", "count": [ 0, 1 ], "prob": 20 }, { "item": "combat_exoskeleton_salvaged", "count": [ 0, 1 ], "prob": 20 } ] }, diff --git a/data/json/recipes/armor/combat_exoskeleton_armor.json b/data/json/recipes/armor/combat_exoskeleton_armor.json index 2a754fdc97447..5e9be77662c8a 100644 --- a/data/json/recipes/armor/combat_exoskeleton_armor.json +++ b/data/json/recipes/armor/combat_exoskeleton_armor.json @@ -10,7 +10,12 @@ "time": "1 h", "book_learn": [ [ "textbook_armwest", 6 ], [ "textbook_fabrication", 6 ], [ "recipe_melee", 6 ] ], "using": [ [ "chainmail_standard", 1 ] ], - "components": [ [ [ "qt_link_sheet", 1 ] ], [ [ "qt_chain_link", 20 ] ], [ [ "qt_wire", 1 ] ] ], + "components": [ + [ [ "qt_link_sheet", 1 ] ], + [ [ "qt_chain_link", 20 ] ], + [ [ "qt_wire", 1 ] ], + [ [ "combat_exoskeleton_armor_head_heavy", 1 ] ] + ], "proficiencies": [ { "proficiency": "prof_chain_armour" } ] }, { @@ -24,7 +29,12 @@ "time": "1 h 45 m", "book_learn": [ [ "textbook_armwest", 6 ], [ "textbook_fabrication", 6 ], [ "recipe_melee", 6 ] ], "using": [ [ "chainmail_standard", 2 ] ], - "components": [ [ [ "qt_link_sheet", 2 ] ], [ [ "qt_chain_link", 45 ] ], [ [ "qt_wire", 1 ] ] ], + "components": [ + [ [ "qt_link_sheet", 2 ] ], + [ [ "qt_chain_link", 45 ] ], + [ [ "qt_wire", 1 ] ], + [ [ "combat_exoskeleton_armor_torso_heavy", 1 ] ] + ], "proficiencies": [ { "proficiency": "prof_chain_armour" } ] }, { @@ -38,7 +48,12 @@ "time": "1 h", "book_learn": [ [ "textbook_armwest", 6 ], [ "textbook_fabrication", 6 ], [ "recipe_melee", 6 ] ], "using": [ [ "chainmail_standard", 1 ] ], - "components": [ [ [ "qt_link_sheet", 1 ] ], [ [ "qt_chain_link", 25 ] ], [ [ "qt_wire", 1 ] ] ], + "components": [ + [ [ "qt_link_sheet", 1 ] ], + [ [ "qt_chain_link", 25 ] ], + [ [ "qt_wire", 1 ] ], + [ [ "combat_exoskeleton_armor_arm_heavy", 1 ] ] + ], "proficiencies": [ { "proficiency": "prof_chain_armour" } ] }, { @@ -52,47 +67,100 @@ "time": "1 h", "book_learn": [ [ "textbook_armwest", 6 ], [ "textbook_fabrication", 6 ], [ "recipe_melee", 6 ] ], "using": [ [ "chainmail_standard", 1 ] ], - "components": [ [ [ "qt_link_sheet", 1 ] ], [ [ "qt_chain_link", 25 ] ], [ [ "qt_wire", 1 ] ] ], + "components": [ + [ [ "qt_link_sheet", 1 ] ], + [ [ "qt_chain_link", 25 ] ], + [ [ "qt_wire", 1 ] ], + [ [ "combat_exoskeleton_armor_leg_heavy", 1 ] ] + ], "proficiencies": [ { "proficiency": "prof_chain_armour" } ] }, { "copy-from": "combat_exoskeleton_armor_head_heavy_reinforced", "result": "combat_exoskeleton_armor_head_medium_reinforced", - "type": "recipe" + "type": "recipe", + "components": [ + [ [ "qt_link_sheet", 1 ] ], + [ [ "qt_chain_link", 20 ] ], + [ [ "qt_wire", 1 ] ], + [ [ "combat_exoskeleton_armor_head_medium", 1 ] ] + ] }, { "copy-from": "combat_exoskeleton_armor_torso_heavy_reinforced", "result": "combat_exoskeleton_armor_torso_medium_reinforced", - "type": "recipe" + "type": "recipe", + "components": [ + [ [ "qt_link_sheet", 2 ] ], + [ [ "qt_chain_link", 45 ] ], + [ [ "qt_wire", 1 ] ], + [ [ "combat_exoskeleton_armor_torso_medium", 1 ] ] + ] }, { "copy-from": "combat_exoskeleton_armor_arm_heavy_reinforced", "result": "combat_exoskeleton_armor_arm_medium_reinforced", - "type": "recipe" + "type": "recipe", + "components": [ + [ [ "qt_link_sheet", 1 ] ], + [ [ "qt_chain_link", 25 ] ], + [ [ "qt_wire", 1 ] ], + [ [ "combat_exoskeleton_armor_arm_medium", 1 ] ] + ] }, { "copy-from": "combat_exoskeleton_armor_leg_heavy_reinforced", "result": "combat_exoskeleton_armor_leg_medium_reinforced", - "type": "recipe" + "type": "recipe", + "components": [ + [ [ "qt_link_sheet", 1 ] ], + [ [ "qt_chain_link", 25 ] ], + [ [ "qt_wire", 1 ] ], + [ [ "combat_exoskeleton_armor_leg_medium", 1 ] ] + ] }, { "copy-from": "combat_exoskeleton_armor_head_heavy_reinforced", "result": "combat_exoskeleton_armor_head_light_reinforced", - "type": "recipe" + "type": "recipe", + "components": [ + [ [ "qt_link_sheet", 1 ] ], + [ [ "qt_chain_link", 20 ] ], + [ [ "qt_wire", 1 ] ], + [ [ "combat_exoskeleton_armor_head_light", 1 ] ] + ] }, { "copy-from": "combat_exoskeleton_armor_torso_heavy_reinforced", "result": "combat_exoskeleton_armor_torso_light_reinforced", - "type": "recipe" + "type": "recipe", + "components": [ + [ [ "qt_link_sheet", 2 ] ], + [ [ "qt_chain_link", 45 ] ], + [ [ "qt_wire", 1 ] ], + [ [ "combat_exoskeleton_armor_torso_light", 1 ] ] + ] }, { "copy-from": "combat_exoskeleton_armor_arm_heavy_reinforced", "result": "combat_exoskeleton_armor_arm_light_reinforced", - "type": "recipe" + "type": "recipe", + "components": [ + [ [ "qt_link_sheet", 1 ] ], + [ [ "qt_chain_link", 25 ] ], + [ [ "qt_wire", 1 ] ], + [ [ "combat_exoskeleton_armor_arm_light", 1 ] ] + ] }, { "copy-from": "combat_exoskeleton_armor_leg_heavy_reinforced", "result": "combat_exoskeleton_armor_leg_light_reinforced", - "type": "recipe" + "type": "recipe", + "components": [ + [ [ "qt_link_sheet", 1 ] ], + [ [ "qt_chain_link", 25 ] ], + [ [ "qt_wire", 1 ] ], + [ [ "combat_exoskeleton_armor_leg_light", 1 ] ] + ] } ] diff --git a/data/json/recipes/nested.json b/data/json/recipes/nested.json index af4273a66030e..3cc9eab4fc2f9 100644 --- a/data/json/recipes/nested.json +++ b/data/json/recipes/nested.json @@ -979,13 +979,7 @@ "name": "mild steel plate armor", "description": "Recipes related to constructing steel plate armor from mild steel.", "skill_used": "fabrication", - "nested_category_data": [ - "xl_armor_lc_plate", - "armor_lc_plate", - "combat_exoskeleton_armor_lc_plate", - "xl_armor_lc_plate_assembly", - "armor_lc_plate_assembly" - ], + "nested_category_data": [ "xl_armor_lc_plate", "armor_lc_plate", "xl_armor_lc_plate_assembly", "armor_lc_plate_assembly" ], "difficulty": 1 }, { @@ -997,13 +991,7 @@ "name": "medium steel plate armor", "description": "Recipes related to constructing steel plate armor from medium steel.", "skill_used": "fabrication", - "nested_category_data": [ - "xl_armor_mc_plate", - "armor_mc_plate", - "combat_exoskeleton_armor_mc_plate", - "xl_armor_mc_plate_assembly", - "armor_mc_plate_assembly" - ], + "nested_category_data": [ "xl_armor_mc_plate", "armor_mc_plate", "xl_armor_mc_plate_assembly", "armor_mc_plate_assembly" ], "difficulty": 2 }, { @@ -1015,13 +1003,7 @@ "name": "high steel plate armor", "description": "Recipes related to constructing steel plate armor from high steel.", "skill_used": "fabrication", - "nested_category_data": [ - "xl_armor_hc_plate", - "armor_hc_plate", - "combat_exoskeleton_armor_hc_plate", - "xl_armor_hc_plate_assembly", - "armor_hc_plate_assembly" - ], + "nested_category_data": [ "xl_armor_hc_plate", "armor_hc_plate", "xl_armor_hc_plate_assembly", "armor_hc_plate_assembly" ], "difficulty": 3 }, { @@ -1033,13 +1015,7 @@ "name": "hardened steel plate armor", "description": "Recipes related to constructing steel plate armor from hardened steel.", "skill_used": "fabrication", - "nested_category_data": [ - "xl_armor_ch_plate", - "armor_ch_plate", - "combat_exoskeleton_armor_ch_plate", - "xl_armor_ch_plate_assembly", - "armor_ch_plate_assembly" - ], + "nested_category_data": [ "xl_armor_ch_plate", "armor_ch_plate", "xl_armor_ch_plate_assembly", "armor_ch_plate_assembly" ], "difficulty": 4 }, { @@ -1051,13 +1027,7 @@ "name": "tempered steel plate armor", "description": "Recipes related to constructing steel plate armor from tempered steel.", "skill_used": "fabrication", - "nested_category_data": [ - "xl_armor_qt_plate", - "armor_qt_plate", - "combat_exoskeleton_armor_qt_plate", - "xl_armor_qt_plate_assembly", - "armor_qt_plate_assembly" - ], + "nested_category_data": [ "xl_armor_qt_plate", "armor_qt_plate", "xl_armor_qt_plate_assembly", "armor_qt_plate_assembly" ], "difficulty": 5 }, { From cdd71496e4b2a7abf9a059e757b3088e6db5629b Mon Sep 17 00:00:00 2001 From: BalthazarArgall Date: Thu, 21 Mar 2024 16:42:12 +0100 Subject: [PATCH 42/73] fixed armor pockets access cost --- data/json/items/armor/combat_exoskeleton.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/data/json/items/armor/combat_exoskeleton.json b/data/json/items/armor/combat_exoskeleton.json index cb9aba13a24e9..11f1e68912ec7 100644 --- a/data/json/items/armor/combat_exoskeleton.json +++ b/data/json/items/armor/combat_exoskeleton.json @@ -116,7 +116,7 @@ "flag_restriction": [ "ABLATIVE_EXOSKELETON_HEAD" ], "max_contains_volume": "20000 ml", "max_contains_weight": "20000 g", - "moves": 1000 + "moves": 10000 }, { "pocket_type": "CONTAINER", @@ -127,7 +127,7 @@ "flag_restriction": [ "ABLATIVE_EXOSKELETON_TORSO" ], "max_contains_volume": "20000 ml", "max_contains_weight": "20000 g", - "moves": 1000 + "moves": 10000 }, { "pocket_type": "CONTAINER", @@ -138,7 +138,7 @@ "flag_restriction": [ "ABLATIVE_EXOSKELETON_ARMS" ], "max_contains_volume": "20000 ml", "max_contains_weight": "20000 g", - "moves": 1000 + "moves": 10000 }, { "pocket_type": "CONTAINER", @@ -149,7 +149,7 @@ "flag_restriction": [ "ABLATIVE_EXOSKELETON_LEGS" ], "max_contains_volume": "20000 ml", "max_contains_weight": "20000 g", - "moves": 1000 + "moves": 10000 } ] }, From f35a979a50920512da4bbddc25104a9d47f08e3e Mon Sep 17 00:00:00 2001 From: BalthazarArgall Date: Thu, 21 Mar 2024 16:55:21 +0100 Subject: [PATCH 43/73] fixed typo in flags, reverted pocket access cost --- data/json/flags.json | 2 +- data/json/items/armor/combat_exoskeleton.json | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/data/json/flags.json b/data/json/flags.json index d8e325eab19f8..c426b2d619e3b 100644 --- a/data/json/flags.json +++ b/data/json/flags.json @@ -49,7 +49,7 @@ { "id": "ABLATIVE_EXOSKELETON_ARMS", "type": "json_flag", - "info": "This armor will attach to the armos of a combat exoskeleton.", + "info": "This armor will attach to the arms of a combat exoskeleton.", "restriction": "Item must be a combat exoskeleton armor" }, { diff --git a/data/json/items/armor/combat_exoskeleton.json b/data/json/items/armor/combat_exoskeleton.json index 11f1e68912ec7..cb9aba13a24e9 100644 --- a/data/json/items/armor/combat_exoskeleton.json +++ b/data/json/items/armor/combat_exoskeleton.json @@ -116,7 +116,7 @@ "flag_restriction": [ "ABLATIVE_EXOSKELETON_HEAD" ], "max_contains_volume": "20000 ml", "max_contains_weight": "20000 g", - "moves": 10000 + "moves": 1000 }, { "pocket_type": "CONTAINER", @@ -127,7 +127,7 @@ "flag_restriction": [ "ABLATIVE_EXOSKELETON_TORSO" ], "max_contains_volume": "20000 ml", "max_contains_weight": "20000 g", - "moves": 10000 + "moves": 1000 }, { "pocket_type": "CONTAINER", @@ -138,7 +138,7 @@ "flag_restriction": [ "ABLATIVE_EXOSKELETON_ARMS" ], "max_contains_volume": "20000 ml", "max_contains_weight": "20000 g", - "moves": 10000 + "moves": 1000 }, { "pocket_type": "CONTAINER", @@ -149,7 +149,7 @@ "flag_restriction": [ "ABLATIVE_EXOSKELETON_LEGS" ], "max_contains_volume": "20000 ml", "max_contains_weight": "20000 g", - "moves": 10000 + "moves": 1000 } ] }, From 5c017cb590864c653900369564efa8c2749a059e Mon Sep 17 00:00:00 2001 From: BalthazarArgall Date: Mon, 25 Mar 2024 00:42:54 +0100 Subject: [PATCH 44/73] Restart tests, just to make sure From 4ed24131d919145df430423f5e00baf26ea71c51 Mon Sep 17 00:00:00 2001 From: BalthazarArgall Date: Mon, 25 Mar 2024 13:27:20 +0100 Subject: [PATCH 45/73] Maybe stuff is drying at the proper rate now From ff2aef9a9b3a41507631534c4a0531cafabb27bb Mon Sep 17 00:00:00 2001 From: BalthazarArgall Date: Fri, 29 Mar 2024 17:10:04 +0100 Subject: [PATCH 46/73] adjusted battery stuff, integrated exertion modifer, made enchantments appear in the UI --- data/json/enchantments.json | 48 +++++++ data/json/items/armor/combat_exoskeleton.json | 123 ++++++------------ 2 files changed, 90 insertions(+), 81 deletions(-) diff --git a/data/json/enchantments.json b/data/json/enchantments.json index ed36e96e1759e..a2f77df25ce80 100644 --- a/data/json/enchantments.json +++ b/data/json/enchantments.json @@ -144,5 +144,53 @@ ] }, "values": [ { "value": "MOVE_COST", "multiply": -0.5 } ] + }, + { + "id": "combat_exoskeleton_inactive", + "type": "enchantment", + "name": { "str": "Inactive exoskeleton" }, + "description": "The exoskeleton is inactive and makes moving in it difficult and exhausting.", + "has": "WORN", + "condition": "INACTIVE", + "values": [ { "value": "MOVEMENT_EXERTION_MODIFIER", "multiply": 0.5 } ] + }, + { + "id": "combat_exoskeleton_heavy_active", + "type": "enchantment", + "name": { "str": "Active combat exoskeleton mk.1" }, + "description": "The exoskeleton helps you carry more weight, protects you against harmful gas, cools you down, and has reduced encumbrance.", + "has": "WORN", + "condition": "ACTIVE", + "values": [ + { "value": "MOVEMENT_EXERTION_MODIFIER", "multiply": 0.4 }, + { "value": "CARRY_WEIGHT", "multiply": 0.8 }, + { "value": "CLIMATE_CONTROL_CHILL", "add": 50 } + ] + }, + { + "id": "combat_exoskeleton_medium_active", + "type": "enchantment", + "name": { "str": "Active combat exoskeleton mk.2" }, + "description": "The exoskeleton helps you carry more weight, protects you against harmful gas, cools you down, and has reduced encumbrance.", + "has": "WORN", + "condition": "ACTIVE", + "values": [ + { "value": "MOVEMENT_EXERTION_MODIFIER", "multiply": 0.6 }, + { "value": "CARRY_WEIGHT", "multiply": 0.6 }, + { "value": "CLIMATE_CONTROL_CHILL", "add": 50 } + ] + }, + { + "id": "combat_exoskeleton_light_active", + "type": "enchantment", + "name": { "str": "Active combat exoskeleton mk.3" }, + "description": "The exoskeleton helps you carry more weight, protects you against harmful gas, cools you down, and has reduced encumbrance.", + "has": "WORN", + "condition": "ACTIVE", + "values": [ + { "value": "MOVEMENT_EXERTION_MODIFIER", "multiply": 0.8 }, + { "value": "CARRY_WEIGHT", "multiply": 0.4 }, + { "value": "CLIMATE_CONTROL_CHILL", "add": 50 } + ] } ] diff --git a/data/json/items/armor/combat_exoskeleton.json b/data/json/items/armor/combat_exoskeleton.json index cb9aba13a24e9..810a1f59e78ab 100644 --- a/data/json/items/armor/combat_exoskeleton.json +++ b/data/json/items/armor/combat_exoskeleton.json @@ -14,6 +14,7 @@ "flags": [ "STURDY", "PADDED", "WATERPROOF", "RAINPROOF", "RAD_PROOF", "ELECTRIC_IMMUNE", "SUN_GLASSES" ], "environmental_protection": 20, "warmth": 40, + "relic_data": { "passive_effects": [ { "id": "combat_exoskeleton_inactive" } ] }, "armor": [ { "layers": [ "NORMAL" ], @@ -88,23 +89,13 @@ ], "pocket_data": [ { - "pocket_type": "CONTAINER", - "holster": true, - "volume_encumber_modifier": 0, - "description": "Compartment for a UPS.", - "flag_restriction": [ "IS_UPS" ], - "max_contains_volume": "4000 ml", - "max_contains_weight": "2000 g", - "moves": 500 - }, - { - "pocket_type": "CONTAINER", + "pocket_type": "MAGAZINE_WELL", "holster": true, "volume_encumber_modifier": 0, - "description": "Compartment for a UPS.", - "flag_restriction": [ "IS_UPS" ], - "max_contains_volume": "4000 ml", - "max_contains_weight": "2000 g", + "description": "Compartment for a heavy battery.", + "flag_restriction": [ "BATTERY_HEAVY" ], + "max_contains_volume": "1500 ml", + "max_contains_weight": "1500 g", "moves": 500 }, { @@ -162,27 +153,17 @@ "looks_like": "power_armor_heavy", "price": 50000000, "price_postapoc": 100000, - "extend": { "flags": [ "COMBAT_TOGGLEABLE", "USE_UPS" ] }, + "extend": { "flags": [ "COMBAT_TOGGLEABLE" ] }, "ammo": "battery", "use_action": { "type": "transform", - "msg": "You activate the exoskeleton.\n>>Initiating boot sequence…\n//Loading DoubleOS v1.39…\n//Loading calibration profile…\n//Activating atmospheric filtration…\n//Activating liquid cooling…\n//Activating sound dampeners…\n>>Boot successful.", + "msg": "You turn the exoskeleton on.\n>>Initiating boot sequence…\n//Loading DoubleOS v1.39…\n//Loading calibration profile…\n//Activating atmospheric filtration…\n//Activating liquid cooling…\n//Activating sound dampeners…\n>>Boot successful.", "target": "combat_exoskeleton_heavy_on", "active": true, "need_charges": 1, "need_charges_msg": "The exoskeleton batteries are empty." }, - "relic_data": { - "passive_effects": [ - { - "has": "WORN", - "condition": "ACTIVE", - "values": [ { "value": "CARRY_WEIGHT", "multiply": 0.8 }, { "value": "CLIMATE_CONTROL_CHILL", "add": 50 } ], - "name": { "str": "Active exoskeleton" }, - "description": "The exoskeleton helps you carry more weight, protects you against harmful gas, cools you down, and has reduced encumbrance." - } - ] - } + "relic_data": { "passive_effects": [ { "id": "combat_exoskeleton_heavy_active" } ] } }, { "copy-from": "combat_exoskeleton_heavy", @@ -190,6 +171,14 @@ "type": "TOOL_ARMOR", "name": { "str": "combat exoskeleton mk1 (on)", "str_pl": "combat exoskeletons mk1 (on)" }, "extend": { "flags": [ "GAS_PROOF", "WATCH", "PARTIAL_DEAF", "TWO_WAY_RADIO" ] }, + "power_draw": "200 W", + "revert_to": "combat_exoskeleton_heavy", + "use_action": { + "type": "transform", + "menu_text": "Turn off", + "msg": "You turn the exoskeleton off.\n>>Initiating shutdown sequence…\n>>Shutting down.", + "target": "combat_exoskeleton_heavy" + }, "armor": [ { "layers": [ "NORMAL" ], @@ -261,15 +250,7 @@ "specifically_covers": [ "foot_sole_r", "foot_sole_l" ], "material": [ { "type": "rubber", "thickness": 6 } ] } - ], - "power_draw": "200 W", - "revert_to": "combat_exoskeleton_heavy", - "use_action": { - "type": "transform", - "menu_text": "Turn off", - "msg": "The exoskeleton turns off", - "target": "combat_exoskeleton_heavy" - } + ] }, { "copy-from": "combat_exoskeleton_salvaged", @@ -280,27 +261,17 @@ "looks_like": "power_armor_basic", "price": 50000000, "price_postapoc": 100000, - "extend": { "flags": [ "COMBAT_TOGGLEABLE", "USE_UPS" ] }, + "extend": { "flags": [ "COMBAT_TOGGLEABLE" ] }, "ammo": "battery", "use_action": { "type": "transform", - "msg": "You activate the exoskeleton.\n>>Initiating boot sequence…\n//Loading DoubleOS v3.11…\n//Loading calibration profile…\n//Activating atmospheric filtration…\n//Activating liquid cooling…\n//Activating sound dampeners…\n>>Boot successful.", + "msg": "You turn the exoskeleton on.\n>>Initiating boot sequence…\n//Loading DoubleOS v3.11…\n//Loading calibration profile…\n//Activating atmospheric filtration…\n//Activating liquid cooling…\n//Activating sound dampeners…\n>>Boot successful.", "target": "combat_exoskeleton_medium_on", "active": true, "need_charges": 1, "need_charges_msg": "The exoskeleton batteries are empty." }, - "relic_data": { - "passive_effects": [ - { - "has": "WORN", - "condition": "ACTIVE", - "values": [ { "value": "CARRY_WEIGHT", "multiply": 0.6 }, { "value": "CLIMATE_CONTROL_CHILL", "add": 50 } ], - "name": { "str": "Active exoskeleton" }, - "description": "The exoskeleton protects you against harmful gas, cools you down, and has reduced encumbrance." - } - ] - } + "relic_data": { "passive_effects": [ { "id": "combat_exoskeleton_medium_active" } ] } }, { "copy-from": "combat_exoskeleton_medium", @@ -308,6 +279,14 @@ "type": "TOOL_ARMOR", "name": { "str": "combat exoskeleton mk2 (on)", "str_pl": "combat exoskeletons m2 (on)" }, "extend": { "flags": [ "GAS_PROOF", "WATCH", "PARTIAL_DEAF", "TWO_WAY_RADIO" ] }, + "power_draw": "175 W", + "revert_to": "combat_exoskeleton_medium", + "use_action": { + "type": "transform", + "menu_text": "Turn off", + "msg": "You turn the exoskeleton off.\n>>Initiating shutdown sequence…\n>>Shutting down.", + "target": "combat_exoskeleton_medium" + }, "armor": [ { "layers": [ "NORMAL" ], @@ -379,15 +358,7 @@ "specifically_covers": [ "foot_sole_r", "foot_sole_l" ], "material": [ { "type": "rubber", "thickness": 6 } ] } - ], - "power_draw": "175 W", - "revert_to": "combat_exoskeleton_medium", - "use_action": { - "type": "transform", - "menu_text": "Turn off", - "msg": "The exoskeleton turns off", - "target": "combat_exoskeleton_medium" - } + ] }, { "id": "combat_exoskeleton_light", @@ -398,27 +369,17 @@ "looks_like": "power_armor_light", "price": 50000000, "price_postapoc": 100000, - "extend": { "flags": [ "COMBAT_TOGGLEABLE", "USE_UPS" ] }, + "extend": { "flags": [ "COMBAT_TOGGLEABLE" ] }, "ammo": "battery", "use_action": { "type": "transform", - "msg": "You activate the exoskeleton.\n>>Initiating boot sequence…\n//Loading DoubleOS v3.28…\n//Loading calibration profile…\n//Activating atmospheric filtration…\n//Activating liquid cooling…\n//Activating sound dampeners…\n>>Boot successful.", + "msg": "You turn the exoskeleton on.\n>>Initiating boot sequence…\n//Loading DoubleOS v3.28…\n//Loading calibration profile…\n//Activating atmospheric filtration…\n//Activating liquid cooling…\n//Activating sound dampeners…\n>>Boot successful.", "target": "combat_exoskeleton_light_on", "active": true, "need_charges": 1, "need_charges_msg": "The exoskeleton batteries are empty." }, - "relic_data": { - "passive_effects": [ - { - "has": "WORN", - "condition": "ACTIVE", - "values": [ { "value": "CARRY_WEIGHT", "multiply": 0.4 }, { "value": "CLIMATE_CONTROL_CHILL", "add": 50 } ], - "name": { "str": "Active exoskeleton" }, - "description": "The exoskeleton protects you against harmful gas, cools you down, and has reduced encumbrance." - } - ] - } + "relic_data": { "passive_effects": [ { "id": "combat_exoskeleton_light_active" } ] } }, { "copy-from": "combat_exoskeleton_light", @@ -426,6 +387,14 @@ "type": "TOOL_ARMOR", "name": { "str": "combat exoskeleton mk3 (on)", "str_pl": "combat exoskeletons mk3 (on)" }, "extend": { "flags": [ "GAS_PROOF", "WATCH", "PARTIAL_DEAF", "TWO_WAY_RADIO" ] }, + "power_draw": "150 W", + "revert_to": "combat_exoskeleton_light", + "use_action": { + "type": "transform", + "menu_text": "Turn off", + "msg": "You turn the exoskeleton off.\n>>Initiating shutdown sequence…\n>>Shutting down.", + "target": "combat_exoskeleton_light" + }, "armor": [ { "layers": [ "NORMAL" ], @@ -497,14 +466,6 @@ "specifically_covers": [ "foot_sole_r", "foot_sole_l" ], "material": [ { "type": "rubber", "thickness": 6 } ] } - ], - "power_draw": "150 W", - "revert_to": "combat_exoskeleton_light", - "use_action": { - "type": "transform", - "menu_text": "Turn off", - "msg": "The exoskeleton turns off.", - "target": "combat_exoskeleton_light" - } + ] } ] From 9d0e246b093a3ee52c6a92f66ebf49d7f2b0faa9 Mon Sep 17 00:00:00 2001 From: BalthazarArgall Date: Fri, 29 Mar 2024 18:03:27 +0100 Subject: [PATCH 47/73] pockets probably cannot have holster while being MAGAZINE_WELL --- data/json/items/armor/combat_exoskeleton.json | 1 - 1 file changed, 1 deletion(-) diff --git a/data/json/items/armor/combat_exoskeleton.json b/data/json/items/armor/combat_exoskeleton.json index 810a1f59e78ab..eaf5fff72f2b7 100644 --- a/data/json/items/armor/combat_exoskeleton.json +++ b/data/json/items/armor/combat_exoskeleton.json @@ -90,7 +90,6 @@ "pocket_data": [ { "pocket_type": "MAGAZINE_WELL", - "holster": true, "volume_encumber_modifier": 0, "description": "Compartment for a heavy battery.", "flag_restriction": [ "BATTERY_HEAVY" ], From 4841fbf8cb15b161440baf2f7552e87d56ef9c55 Mon Sep 17 00:00:00 2001 From: BalthazarArgall Date: Fri, 29 Mar 2024 23:34:29 +0100 Subject: [PATCH 48/73] pockets probably cannot have holster while being MAGAZINE_WELL --- data/json/items/armor/combat_exoskeleton.json | 1 - 1 file changed, 1 deletion(-) diff --git a/data/json/items/armor/combat_exoskeleton.json b/data/json/items/armor/combat_exoskeleton.json index 810a1f59e78ab..eaf5fff72f2b7 100644 --- a/data/json/items/armor/combat_exoskeleton.json +++ b/data/json/items/armor/combat_exoskeleton.json @@ -90,7 +90,6 @@ "pocket_data": [ { "pocket_type": "MAGAZINE_WELL", - "holster": true, "volume_encumber_modifier": 0, "description": "Compartment for a heavy battery.", "flag_restriction": [ "BATTERY_HEAVY" ], From a3d9cca9506f58262ade68d1a9c4f600b819393a Mon Sep 17 00:00:00 2001 From: BalthazarArgall Date: Fri, 29 Mar 2024 23:36:06 +0100 Subject: [PATCH 49/73] just revert the holster change --- data/json/items/armor/combat_exoskeleton.json | 1 + 1 file changed, 1 insertion(+) diff --git a/data/json/items/armor/combat_exoskeleton.json b/data/json/items/armor/combat_exoskeleton.json index eaf5fff72f2b7..7f15dd375a195 100644 --- a/data/json/items/armor/combat_exoskeleton.json +++ b/data/json/items/armor/combat_exoskeleton.json @@ -91,6 +91,7 @@ { "pocket_type": "MAGAZINE_WELL", "volume_encumber_modifier": 0, + "holster": true, "description": "Compartment for a heavy battery.", "flag_restriction": [ "BATTERY_HEAVY" ], "max_contains_volume": "1500 ml", From 4abdf21d016163cb9ff1df835148b499949d19c0 Mon Sep 17 00:00:00 2001 From: BalthazarArgall Date: Wed, 3 Apr 2024 12:23:44 +0200 Subject: [PATCH 50/73] update test, still failing --- data/json/items/armor/combat_exoskeleton.json | 4 ++-- tests/npc_attack_test.cpp | 15 ++++++++------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/data/json/items/armor/combat_exoskeleton.json b/data/json/items/armor/combat_exoskeleton.json index 7f15dd375a195..7ca000a586591 100644 --- a/data/json/items/armor/combat_exoskeleton.json +++ b/data/json/items/armor/combat_exoskeleton.json @@ -94,8 +94,8 @@ "holster": true, "description": "Compartment for a heavy battery.", "flag_restriction": [ "BATTERY_HEAVY" ], - "max_contains_volume": "1500 ml", - "max_contains_weight": "1500 g", + "max_contains_volume": "2000 ml", + "max_contains_weight": "2000 g", "moves": 500 }, { diff --git a/tests/npc_attack_test.cpp b/tests/npc_attack_test.cpp index 8fc67f7494f38..b38608c153fc8 100644 --- a/tests/npc_attack_test.cpp +++ b/tests/npc_attack_test.cpp @@ -149,7 +149,7 @@ TEST_CASE( "NPC_faces_zombies", "[npc_attack]" ) CHECK( !throw_attack ); } } - WHEN( "NPC has power armor" ) { + /*WHEN( "NPC has power armor" ) { main_npc.clear_worn(); item armor( "combat_exoskeleton_medium" ); @@ -159,17 +159,18 @@ TEST_CASE( "NPC_faces_zombies", "[npc_attack]" ) // If the flag gets removed from power armor, some other item with the flag will need to replace it. REQUIRE( main_npc.worn_with_flag( flag_COMBAT_TOGGLEABLE ) ); - WHEN( "NPC has a UPS for their armor" ) { - item ps( "UPS_ON" ); + WHEN( "NPC has a battery for their armor" ) { + item battery( "heavy_plus_battery_cell" ); battery.ammo_set( battery.ammo_default(), battery.ammo_capacity( ammo_battery ) ); - ps.put_in( battery, pocket_type::MAGAZINE_WELL ); + item_location battery_location = main_npc.try_add(battery); + armor.reload(main_npc, battery_location, 1); - item_location stored_ps = main_npc.try_add( ps ); - REQUIRE( stored_ps != item_location::nowhere ); + REQUIRE( battery_location == item_location::nowhere ); THEN( "NPC activates their power armor successfully" ) { + // target is not exposed, so regen_ai_cache is used to have the npc re-assess threat and store the target. main_npc.regen_ai_cache(); main_npc.method_of_attack(); @@ -187,7 +188,7 @@ TEST_CASE( "NPC_faces_zombies", "[npc_attack]" ) } } } - WHEN( "NPC has a headlamp" ) { + */WHEN( "NPC has a headlamp" ) { main_npc.clear_worn(); item headlamp( "wearable_light" ); From 4e23df3fa148e8d33255d12d3e94cd5c0405f458 Mon Sep 17 00:00:00 2001 From: BalthazarArgall Date: Thu, 4 Apr 2024 16:32:40 +0200 Subject: [PATCH 51/73] Give exoskeletons their own itemgroup --- .../terrain-manufactured.json | 2 +- .../Locations_MapExtras/locations.json | 2 ++ data/json/itemgroups/main.json | 24 +++++++++++++------ data/json/itemgroups/science_and_tech.json | 1 + data/json/items/generic.json | 8 +++++++ 5 files changed, 29 insertions(+), 8 deletions(-) diff --git a/data/json/furniture_and_terrain/terrain-manufactured.json b/data/json/furniture_and_terrain/terrain-manufactured.json index ca09d6f907dcc..219d5f22e204d 100644 --- a/data/json/furniture_and_terrain/terrain-manufactured.json +++ b/data/json/furniture_and_terrain/terrain-manufactured.json @@ -583,7 +583,7 @@ "name": "nanofabricator control panel", "symbol": "&", "description": "A small computer panel attached to a nanofabricator. It has a single slot for reading templates.", - "allowed_template_ids": [ "standard_template_construct", "debug_template" ], + "allowed_template_ids": [ "standard_template_construct", "standard_template_construct_combat_exoskeleton", "debug_template" ], "color": "red", "looks_like": "f_console", "move_cost": 0, diff --git a/data/json/itemgroups/Locations_MapExtras/locations.json b/data/json/itemgroups/Locations_MapExtras/locations.json index 63b3ba7508b6e..86cde17c4fdbd 100644 --- a/data/json/itemgroups/Locations_MapExtras/locations.json +++ b/data/json/itemgroups/Locations_MapExtras/locations.json @@ -1935,6 +1935,7 @@ [ "memory_card_unread", 40 ], [ "memory_card_science", 10 ], [ "standard_template_construct", 5 ], + [ "standard_template_construct_combat_exoskeleton", 5 ], { "item": "camera", "prob": 15, "charges": [ 0, 150 ] }, { "item": "camera_pro", "prob": 5, "charges": [ 0, 150 ] }, { "item": "lighter", "prob": 50, "charges": [ 0, 100 ] }, @@ -2399,6 +2400,7 @@ [ "diamond_dental_grill", 5 ], [ "gold_dental_grill", 5 ], [ "standard_template_construct", 4 ], + [ "standard_template_construct_combat_exoskeleton", 4 ], [ "briefcase", 4 ], [ "small_relic", 3 ], [ "holy_symbol", 3 ], diff --git a/data/json/itemgroups/main.json b/data/json/itemgroups/main.json index 17ca4c66168f2..61e653aed98e4 100644 --- a/data/json/itemgroups/main.json +++ b/data/json/itemgroups/main.json @@ -3,7 +3,10 @@ "type": "item_group", "id": "debug_template_item", "subtype": "distribution", - "entries": [ { "item": "standard_template_construct", "prob": 10 } ] + "entries": [ + { "item": "standard_template_construct", "prob": 10 }, + { "item": "standard_template_construct_combat_exoskeleton", "prob": 10 } + ] }, { "type": "item_group", @@ -28,6 +31,18 @@ { "item": "plasma_rifle", "prob": 10 }, { "item": "portal", "prob": 10 }, { "item": "atomic_coffeepot", "prob": 10 }, + { "item": "rm13_armor", "prob": 10 }, + { "item": "high_density_capacitor", "prob": 10 }, + { "item": "beam_scatterer", "prob": 10 }, + { "item": "rm11b_sniper_rifle", "prob": 10 }, + { "item": "v29", "prob": 10 } + ] + }, + { + "type": "item_group", + "id": "nanofab_recipes_combat_exoskeletons", + "subtype": "distribution", + "entries": [ { "item": "combat_exoskeleton_heavy", "prob": 10 }, { "item": "combat_exoskeleton_medium", "prob": 10 }, { "item": "combat_exoskeleton_light", "prob": 10 }, @@ -42,12 +57,7 @@ { "item": "combat_exoskeleton_armor_head_light", "prob": 1 }, { "item": "combat_exoskeleton_armor_torso_light", "prob": 1 }, { "item": "combat_exoskeleton_armor_arm_light", "prob": 1 }, - { "item": "combat_exoskeleton_armor_leg_light", "prob": 1 }, - { "item": "rm13_armor", "prob": 10 }, - { "item": "high_density_capacitor", "prob": 10 }, - { "item": "beam_scatterer", "prob": 10 }, - { "item": "rm11b_sniper_rifle", "prob": 10 }, - { "item": "v29", "prob": 10 } + { "item": "combat_exoskeleton_armor_leg_light", "prob": 1 } ] }, { diff --git a/data/json/itemgroups/science_and_tech.json b/data/json/itemgroups/science_and_tech.json index ec3e9d2848631..671b5754062a3 100644 --- a/data/json/itemgroups/science_and_tech.json +++ b/data/json/itemgroups/science_and_tech.json @@ -30,6 +30,7 @@ [ "memory_card_unread", 50 ], [ "memory_card_science", 5 ], [ "standard_template_construct", 5 ], + [ "standard_template_construct_combat_exoskeleton", 5 ], { "item": "camera", "prob": 2, "charges": [ 0, 150 ] }, { "item": "camera", "container-item": "camera_bag", "prob": 1, "charges": [ 0, 150 ] }, { "item": "camera_pro", "prob": 1, "charges": [ 0, 150 ] }, diff --git a/data/json/items/generic.json b/data/json/items/generic.json index 25d258eeca541..79de9ce560d4d 100644 --- a/data/json/items/generic.json +++ b/data/json/items/generic.json @@ -2025,6 +2025,14 @@ "to_hit": -1, "flags": [ "NANOFAB_TEMPLATE", "TRADER_AVOID" ] }, + { + "type": "GENERIC", + "id": "standard_template_construct_combat_exoskeleton", + "copy-from": "standard_template_construct", + "name": { "str": "nanofabricator exoskeleton template" }, + "description": "A state-of-the-art optical storage system. This small slate of transparent glass holds, inscribed as a miniature pattern, the instructions required to create an item through a nanofabricator. A small text at the bottom indicates that this one is specifically used to create combat exoskeletons.", + "nanofab_template_group": "nanofab_recipes_combat_exoskeletons" + }, { "type": "GENERIC", "id": "debug_template", From 62ff0c8b14c4e643f193b3559e23a29e4a191cf3 Mon Sep 17 00:00:00 2001 From: BalthazarArgall Date: Thu, 4 Apr 2024 16:39:03 +0200 Subject: [PATCH 52/73] Adjust encumbrance values of reinforced armor and exoskeletons --- data/json/items/armor/combat_exoskeleton.json | 4 +-- .../items/armor/combat_exoskeleton_armor.json | 36 +++++++++---------- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/data/json/items/armor/combat_exoskeleton.json b/data/json/items/armor/combat_exoskeleton.json index 7ca000a586591..7a61a082e6f6f 100644 --- a/data/json/items/armor/combat_exoskeleton.json +++ b/data/json/items/armor/combat_exoskeleton.json @@ -197,7 +197,7 @@ { "layers": [ "NORMAL", "OUTER" ], "covers": [ "head", "torso", "arm_l", "arm_r", "leg_l", "leg_r" ], - "encumbrance": 18, + "encumbrance": 16, "coverage": 100, "material": [ { "type": "lycra", "thickness": 0.2 }, @@ -305,7 +305,7 @@ { "layers": [ "NORMAL", "OUTER" ], "covers": [ "head", "torso", "arm_l", "arm_r", "leg_l", "leg_r" ], - "encumbrance": 14, + "encumbrance": 12, "coverage": 100, "material": [ { "type": "lycra", "thickness": 0.2 }, diff --git a/data/json/items/armor/combat_exoskeleton_armor.json b/data/json/items/armor/combat_exoskeleton_armor.json index eaf470d61dc63..83aad5272cf26 100644 --- a/data/json/items/armor/combat_exoskeleton_armor.json +++ b/data/json/items/armor/combat_exoskeleton_armor.json @@ -512,7 +512,7 @@ { "layers": [ "OUTER" ], "covers": [ "head" ], - "encumbrance": 10, + "encumbrance": 12, "coverage": 100, "material": [ { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, @@ -554,7 +554,7 @@ { "layers": [ "OUTER" ], "covers": [ "torso" ], - "encumbrance": 10, + "encumbrance": 12, "coverage": 100, "material": [ { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, @@ -578,7 +578,7 @@ { "layers": [ "OUTER" ], "covers": [ "arm_r", "arm_l" ], - "encumbrance": 10, + "encumbrance": 12, "coverage": 100, "material": [ { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, @@ -592,7 +592,7 @@ "layers": [ "OUTER" ], "covers": [ "hand_r", "hand_l" ], "specifically_covers": [ "hand_back_r", "hand_back_l", "hand_wrist_r", "hand_wrist_l" ], - "encumbrance": 10, + "encumbrance": 12, "coverage": 100, "material": [ { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, @@ -629,7 +629,7 @@ { "layers": [ "OUTER" ], "covers": [ "leg_r", "leg_l" ], - "encumbrance": 10, + "encumbrance": 12, "coverage": 100, "material": [ { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, @@ -652,7 +652,7 @@ "foot_arch_r", "foot_arch_l" ], - "encumbrance": 10, + "encumbrance": 12, "coverage": 100, "material": [ { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, @@ -676,7 +676,7 @@ { "layers": [ "OUTER" ], "covers": [ "head" ], - "encumbrance": 8, + "encumbrance": 10, "coverage": 100, "material": [ { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, @@ -718,7 +718,7 @@ { "layers": [ "OUTER" ], "covers": [ "torso" ], - "encumbrance": 8, + "encumbrance": 10, "coverage": 100, "material": [ { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, @@ -742,7 +742,7 @@ { "layers": [ "OUTER" ], "covers": [ "arm_r", "arm_l" ], - "encumbrance": 8, + "encumbrance": 10, "coverage": 100, "material": [ { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, @@ -756,7 +756,7 @@ "layers": [ "OUTER" ], "covers": [ "hand_r", "hand_l" ], "specifically_covers": [ "hand_back_r", "hand_back_l", "hand_wrist_r", "hand_wrist_l" ], - "encumbrance": 8, + "encumbrance": 10, "coverage": 100, "material": [ { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, @@ -793,7 +793,7 @@ { "layers": [ "OUTER" ], "covers": [ "leg_r", "leg_l" ], - "encumbrance": 8, + "encumbrance": 10, "coverage": 100, "material": [ { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, @@ -816,7 +816,7 @@ "foot_arch_r", "foot_arch_l" ], - "encumbrance": 8, + "encumbrance": 10, "coverage": 100, "material": [ { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, @@ -840,7 +840,7 @@ { "layers": [ "OUTER" ], "covers": [ "head" ], - "encumbrance": 6, + "encumbrance": 8, "coverage": 100, "material": [ { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, @@ -882,7 +882,7 @@ { "layers": [ "OUTER" ], "covers": [ "torso" ], - "encumbrance": 6, + "encumbrance": 8, "coverage": 100, "material": [ { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, @@ -906,7 +906,7 @@ { "layers": [ "OUTER" ], "covers": [ "arm_r", "arm_l" ], - "encumbrance": 6, + "encumbrance": 8, "coverage": 100, "material": [ { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, @@ -920,7 +920,7 @@ "layers": [ "OUTER" ], "covers": [ "hand_r", "hand_l" ], "specifically_covers": [ "hand_back_r", "hand_back_l", "hand_wrist_r", "hand_wrist_l" ], - "encumbrance": 6, + "encumbrance": 8, "coverage": 100, "material": [ { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, @@ -957,7 +957,7 @@ { "layers": [ "OUTER" ], "covers": [ "leg_r", "leg_l" ], - "encumbrance": 6, + "encumbrance": 8, "coverage": 100, "material": [ { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, @@ -980,7 +980,7 @@ "foot_arch_r", "foot_arch_l" ], - "encumbrance": 6, + "encumbrance": 8, "coverage": 100, "material": [ { "type": "nylon", "thickness": 1, "covered_by_mat": 5 }, From 870b935f97a957b5e87090b2c8862d99700c1586 Mon Sep 17 00:00:00 2001 From: BalthazarArgall Date: Thu, 4 Apr 2024 16:48:16 +0200 Subject: [PATCH 53/73] added welding requirements to reinforced armor --- data/json/recipes/armor/combat_exoskeleton_armor.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/data/json/recipes/armor/combat_exoskeleton_armor.json b/data/json/recipes/armor/combat_exoskeleton_armor.json index 5e9be77662c8a..e82b575c69f8d 100644 --- a/data/json/recipes/armor/combat_exoskeleton_armor.json +++ b/data/json/recipes/armor/combat_exoskeleton_armor.json @@ -9,7 +9,7 @@ "difficulty": 7, "time": "1 h", "book_learn": [ [ "textbook_armwest", 6 ], [ "textbook_fabrication", 6 ], [ "recipe_melee", 6 ] ], - "using": [ [ "chainmail_standard", 1 ] ], + "using": [ [ "chainmail_standard", 1 ], [ "welding_standard", 100 ] ], "components": [ [ [ "qt_link_sheet", 1 ] ], [ [ "qt_chain_link", 20 ] ], @@ -28,7 +28,7 @@ "difficulty": 7, "time": "1 h 45 m", "book_learn": [ [ "textbook_armwest", 6 ], [ "textbook_fabrication", 6 ], [ "recipe_melee", 6 ] ], - "using": [ [ "chainmail_standard", 2 ] ], + "using": [ [ "chainmail_standard", 2 ], [ "welding_standard", 200 ] ], "components": [ [ [ "qt_link_sheet", 2 ] ], [ [ "qt_chain_link", 45 ] ], @@ -47,7 +47,7 @@ "difficulty": 7, "time": "1 h", "book_learn": [ [ "textbook_armwest", 6 ], [ "textbook_fabrication", 6 ], [ "recipe_melee", 6 ] ], - "using": [ [ "chainmail_standard", 1 ] ], + "using": [ [ "chainmail_standard", 1 ], [ "welding_standard", 100 ] ], "components": [ [ [ "qt_link_sheet", 1 ] ], [ [ "qt_chain_link", 25 ] ], @@ -66,7 +66,7 @@ "difficulty": 7, "time": "1 h", "book_learn": [ [ "textbook_armwest", 6 ], [ "textbook_fabrication", 6 ], [ "recipe_melee", 6 ] ], - "using": [ [ "chainmail_standard", 1 ] ], + "using": [ [ "chainmail_standard", 1 ], [ "welding_standard", 100 ] ], "components": [ [ [ "qt_link_sheet", 1 ] ], [ [ "qt_chain_link", 25 ] ], From 65e65ccdf6aeac21a5f4fdb59d0cfed9ce79bf3e Mon Sep 17 00:00:00 2001 From: BalthazarArgall Date: Thu, 4 Apr 2024 17:18:14 +0200 Subject: [PATCH 54/73] Fix missing double space in description --- data/json/items/generic.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/json/items/generic.json b/data/json/items/generic.json index 79de9ce560d4d..a7162191ea75f 100644 --- a/data/json/items/generic.json +++ b/data/json/items/generic.json @@ -2030,7 +2030,7 @@ "id": "standard_template_construct_combat_exoskeleton", "copy-from": "standard_template_construct", "name": { "str": "nanofabricator exoskeleton template" }, - "description": "A state-of-the-art optical storage system. This small slate of transparent glass holds, inscribed as a miniature pattern, the instructions required to create an item through a nanofabricator. A small text at the bottom indicates that this one is specifically used to create combat exoskeletons.", + "description": "A state-of-the-art optical storage system. This small slate of transparent glass holds, inscribed as a miniature pattern, the instructions required to create an item through a nanofabricator. A small text at the bottom indicates that this one is specifically used to create combat exoskeletons.", "nanofab_template_group": "nanofab_recipes_combat_exoskeletons" }, { From a45b54e2521e2db9a1c41b9f1d5f976d131f0cbb Mon Sep 17 00:00:00 2001 From: BalthazarArgall Date: Sat, 6 Apr 2024 20:35:05 +0200 Subject: [PATCH 55/73] fix tests --- tests/npc_attack_test.cpp | 32 +++++++++++++++----------------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/tests/npc_attack_test.cpp b/tests/npc_attack_test.cpp index b38608c153fc8..2937f26b980b8 100644 --- a/tests/npc_attack_test.cpp +++ b/tests/npc_attack_test.cpp @@ -149,27 +149,25 @@ TEST_CASE( "NPC_faces_zombies", "[npc_attack]" ) CHECK( !throw_attack ); } } - /*WHEN( "NPC has power armor" ) { + WHEN( "NPC has an exoskeleton" ) { + main_npc.clear_worn(); - item armor( "combat_exoskeleton_medium" ); - std::optional::iterator> wear_success = main_npc.wear_item( armor ); - REQUIRE( wear_success ); + item &worn_armor = **main_npc.wear_item( armor ); + REQUIRE( !worn_armor.is_null() ); + // If the flag gets removed from power armor, some other item with the flag will need to replace it. REQUIRE( main_npc.worn_with_flag( flag_COMBAT_TOGGLEABLE ) ); WHEN( "NPC has a battery for their armor" ) { + item battery = item("heavy_battery_cell"); + battery.ammo_set( battery.ammo_default()); + worn_armor.put_in(battery,pocket_type::MAGAZINE_WELL); - item battery( "heavy_plus_battery_cell" ); - battery.ammo_set( battery.ammo_default(), battery.ammo_capacity( ammo_battery ) ); - - item_location battery_location = main_npc.try_add(battery); - armor.reload(main_npc, battery_location, 1); - - REQUIRE( battery_location == item_location::nowhere ); + REQUIRE( worn_armor.ammo_remaining() > 0 ); - THEN( "NPC activates their power armor successfully" ) { + THEN( "NPC activates their exoskeleton successfully" ) { // target is not exposed, so regen_ai_cache is used to have the npc re-assess threat and store the target. main_npc.regen_ai_cache(); @@ -179,8 +177,8 @@ TEST_CASE( "NPC_faces_zombies", "[npc_attack]" ) } } - WHEN( "NPC has no power supply for their armor" ) { - THEN( "NPC fails to activate their power armor" ) { + WHEN( "NPC has no power supply for their exoskeleton" ) { + THEN( "NPC fails to activate their exoskeleton" ) { main_npc.regen_ai_cache(); main_npc.method_of_attack(); CHECK( main_npc.is_wearing( itype_combat_exoskeleton_medium ) ); @@ -188,7 +186,7 @@ TEST_CASE( "NPC_faces_zombies", "[npc_attack]" ) } } } - */WHEN( "NPC has a headlamp" ) { + WHEN( "NPC has a headlamp" ) { main_npc.clear_worn(); item headlamp( "wearable_light" ); @@ -293,13 +291,13 @@ TEST_CASE( "NPC_faces_zombies", "[npc_attack]" ) } } GIVEN( "There is no zombie nearby. " ) { - WHEN( "NPC is wearing active power armor. " ) { + WHEN( "NPC is wearing active exoskeleton. " ) { item armor( "combat_exoskeleton_medium_on" ); armor.activate(); std::optional::iterator> wear_success = main_npc.wear_item( armor ); REQUIRE( wear_success ); - THEN( "NPC deactivates their power armor. " ) { + THEN( "NPC deactivates their exoskeleton. " ) { // This is somewhat cheating, but going up one level is testing all of npc::move. main_npc.cleanup_on_no_danger(); From 896b5834f0b01b1e360f67de272d765c878cfabf Mon Sep 17 00:00:00 2001 From: BalthazarArgall Date: Sun, 7 Apr 2024 00:32:24 +0200 Subject: [PATCH 56/73] astyle formatting try 1 --- tests/npc_attack_test.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/npc_attack_test.cpp b/tests/npc_attack_test.cpp index 2937f26b980b8..0cf1bd74f60fd 100644 --- a/tests/npc_attack_test.cpp +++ b/tests/npc_attack_test.cpp @@ -150,13 +150,13 @@ TEST_CASE( "NPC_faces_zombies", "[npc_attack]" ) } } WHEN( "NPC has an exoskeleton" ) { - + main_npc.clear_worn(); item armor( "combat_exoskeleton_medium" ); item &worn_armor = **main_npc.wear_item( armor ); REQUIRE( !worn_armor.is_null() ); - + // If the flag gets removed from power armor, some other item with the flag will need to replace it. REQUIRE( main_npc.worn_with_flag( flag_COMBAT_TOGGLEABLE ) ); From ce0c3e7b83a1f5a42075ea31c5597e6b447fa8e4 Mon Sep 17 00:00:00 2001 From: BalthazarArgall Date: Sun, 7 Apr 2024 01:23:21 +0200 Subject: [PATCH 57/73] astyle formatting try 2 --- tests/npc_attack_test.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/npc_attack_test.cpp b/tests/npc_attack_test.cpp index 0cf1bd74f60fd..db677d2dbf7cf 100644 --- a/tests/npc_attack_test.cpp +++ b/tests/npc_attack_test.cpp @@ -161,9 +161,9 @@ TEST_CASE( "NPC_faces_zombies", "[npc_attack]" ) REQUIRE( main_npc.worn_with_flag( flag_COMBAT_TOGGLEABLE ) ); WHEN( "NPC has a battery for their armor" ) { - item battery = item("heavy_battery_cell"); - battery.ammo_set( battery.ammo_default()); - worn_armor.put_in(battery,pocket_type::MAGAZINE_WELL); + item battery = item( "heavy_battery_cell" ); + battery.ammo_set( battery.ammo_default() ); + worn_armor.put_in( battery, pocket_type::MAGAZINE_WELL ); REQUIRE( worn_armor.ammo_remaining() > 0 ); From ba87391254f65b0f490621bd1d8dd3dc507fd8cc Mon Sep 17 00:00:00 2001 From: BalthazarArgall Date: Sun, 7 Apr 2024 03:01:20 +0200 Subject: [PATCH 58/73] Are you happy now clang? --- tests/npc_attack_test.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tests/npc_attack_test.cpp b/tests/npc_attack_test.cpp index db677d2dbf7cf..9e0960ecde303 100644 --- a/tests/npc_attack_test.cpp +++ b/tests/npc_attack_test.cpp @@ -153,14 +153,16 @@ TEST_CASE( "NPC_faces_zombies", "[npc_attack]" ) main_npc.clear_worn(); item armor( "combat_exoskeleton_medium" ); - item &worn_armor = **main_npc.wear_item( armor ); + std::optional::iterator> wear_success = main_npc.wear_item( armor ); + item &worn_armor = **wear_success; - REQUIRE( !worn_armor.is_null() ); + REQUIRE( wear_success ); // If the flag gets removed from power armor, some other item with the flag will need to replace it. REQUIRE( main_npc.worn_with_flag( flag_COMBAT_TOGGLEABLE ) ); WHEN( "NPC has a battery for their armor" ) { + item battery = item( "heavy_battery_cell" ); battery.ammo_set( battery.ammo_default() ); worn_armor.put_in( battery, pocket_type::MAGAZINE_WELL ); From fe1f7dce7caeca337f2cf2f183bfb4149dfb26c1 Mon Sep 17 00:00:00 2001 From: BalthazarArgall Date: Sun, 7 Apr 2024 03:12:07 +0200 Subject: [PATCH 59/73] clang, I swear to god... --- tests/npc_attack_test.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/tests/npc_attack_test.cpp b/tests/npc_attack_test.cpp index 9e0960ecde303..009068ca15015 100644 --- a/tests/npc_attack_test.cpp +++ b/tests/npc_attack_test.cpp @@ -11,8 +11,6 @@ #include "options_helpers.h" #include "player_helpers.h" -static const ammotype ammo_battery( "battery" ); - static const faction_id faction_your_followers( "your_followers" ); static const itype_id itype_combat_exoskeleton_medium( "combat_exoskeleton_medium" ); From 95648823cf9593715995326d5a4a0336739acbb9 Mon Sep 17 00:00:00 2001 From: BalthazarArgall Date: Sun, 7 Apr 2024 16:36:30 +0200 Subject: [PATCH 60/73] forgot to adjust crafting difficulty, slightly increased --- data/json/recipes/armor/combat_exoskeleton_armor.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/data/json/recipes/armor/combat_exoskeleton_armor.json b/data/json/recipes/armor/combat_exoskeleton_armor.json index e82b575c69f8d..e51a01828b3b6 100644 --- a/data/json/recipes/armor/combat_exoskeleton_armor.json +++ b/data/json/recipes/armor/combat_exoskeleton_armor.json @@ -6,7 +6,7 @@ "category": "CC_*", "subcategory": "CSC_*_NESTED", "skill_used": "fabrication", - "difficulty": 7, + "difficulty": 8, "time": "1 h", "book_learn": [ [ "textbook_armwest", 6 ], [ "textbook_fabrication", 6 ], [ "recipe_melee", 6 ] ], "using": [ [ "chainmail_standard", 1 ], [ "welding_standard", 100 ] ], @@ -25,7 +25,7 @@ "category": "CC_*", "subcategory": "CSC_*_NESTED", "skill_used": "fabrication", - "difficulty": 7, + "difficulty": 8, "time": "1 h 45 m", "book_learn": [ [ "textbook_armwest", 6 ], [ "textbook_fabrication", 6 ], [ "recipe_melee", 6 ] ], "using": [ [ "chainmail_standard", 2 ], [ "welding_standard", 200 ] ], @@ -44,7 +44,7 @@ "category": "CC_*", "subcategory": "CSC_*_NESTED", "skill_used": "fabrication", - "difficulty": 7, + "difficulty": 8, "time": "1 h", "book_learn": [ [ "textbook_armwest", 6 ], [ "textbook_fabrication", 6 ], [ "recipe_melee", 6 ] ], "using": [ [ "chainmail_standard", 1 ], [ "welding_standard", 100 ] ], @@ -63,7 +63,7 @@ "category": "CC_*", "subcategory": "CSC_*_NESTED", "skill_used": "fabrication", - "difficulty": 7, + "difficulty": 8, "time": "1 h", "book_learn": [ [ "textbook_armwest", 6 ], [ "textbook_fabrication", 6 ], [ "recipe_melee", 6 ] ], "using": [ [ "chainmail_standard", 1 ], [ "welding_standard", 100 ] ], From 0b8e5ccc9edbf09c7673026d2579c31f3d7824bd Mon Sep 17 00:00:00 2001 From: BalthazarArgall Date: Tue, 9 Apr 2024 11:23:03 +0200 Subject: [PATCH 61/73] Restart tests, yes I changed my mind From fe0cc8943ac22020705774c0551887bd01863902 Mon Sep 17 00:00:00 2001 From: BalthazarArgall <116303491+BalthazarArgall@users.noreply.github.com> Date: Thu, 11 Apr 2024 11:13:52 +0200 Subject: [PATCH 62/73] Update data/json/items/armor/combat_exoskeleton.json Applied Drew suggestion for salvaged exoskeleton description Co-authored-by: Drew4484 <57647637+Drew4484@users.noreply.github.com> --- data/json/items/armor/combat_exoskeleton.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/json/items/armor/combat_exoskeleton.json b/data/json/items/armor/combat_exoskeleton.json index 7a61a082e6f6f..233783e18e0a6 100644 --- a/data/json/items/armor/combat_exoskeleton.json +++ b/data/json/items/armor/combat_exoskeleton.json @@ -4,7 +4,7 @@ "category": "armor", "type": "ARMOR", "name": { "str": "salvaged combat exoskeleton" }, - "description": "This used to be a powered exoskeleton, but the power part has been render non functional: as one might expect, it's a lot harder to wear. The exoskeleton itself is strapped on an environmental suit with an integrated life-support system. A variety of of webbing, magnets, and clips allows the attachment of special armor plating onto the frame.", + "description": "This used to be a powered exoskeleton, but the 'power' part has been rendered non-functional: as one might expect, this makes it a lot harder to wear. The exoskeleton itself includes an environmental suit with an integrated life-support system. A variety of of webbing, magnets, and clips allows the attachment of special armor plating onto the frame.", "looks_like": "power_armor_heavy", "symbol": "[", "price": 500000, From 56de09497930d14090e2293521d7fbac50d68d58 Mon Sep 17 00:00:00 2001 From: BalthazarArgall <116303491+BalthazarArgall@users.noreply.github.com> Date: Thu, 11 Apr 2024 11:46:17 +0200 Subject: [PATCH 63/73] Update data/json/items/armor/combat_exoskeleton.json remove environmental flags from salvaged exoskeleton Co-authored-by: Drew4484 <57647637+Drew4484@users.noreply.github.com> --- data/json/items/armor/combat_exoskeleton.json | 1 - 1 file changed, 1 deletion(-) diff --git a/data/json/items/armor/combat_exoskeleton.json b/data/json/items/armor/combat_exoskeleton.json index 233783e18e0a6..762cf7a32994c 100644 --- a/data/json/items/armor/combat_exoskeleton.json +++ b/data/json/items/armor/combat_exoskeleton.json @@ -11,7 +11,6 @@ "price_postapoc": 100000, "volume": "36000 ml", "weight": "13000 g", - "flags": [ "STURDY", "PADDED", "WATERPROOF", "RAINPROOF", "RAD_PROOF", "ELECTRIC_IMMUNE", "SUN_GLASSES" ], "environmental_protection": 20, "warmth": 40, "relic_data": { "passive_effects": [ { "id": "combat_exoskeleton_inactive" } ] }, From d9493a5bdce7ca7f3c18b441ec2e486a547d373b Mon Sep 17 00:00:00 2001 From: BalthazarArgall Date: Thu, 11 Apr 2024 12:23:21 +0200 Subject: [PATCH 64/73] multiple changes, rough implementation --- data/json/flags.json | 24 ------ data/json/items/armor/combat_exoskeleton.json | 75 +++++++++++-------- .../items/armor/combat_exoskeleton_armor.json | 8 +- .../armor/combat_exoskeleton_armor.json | 8 +- 4 files changed, 50 insertions(+), 65 deletions(-) diff --git a/data/json/flags.json b/data/json/flags.json index 14444f4de20c7..55790cb89fe06 100644 --- a/data/json/flags.json +++ b/data/json/flags.json @@ -34,30 +34,6 @@ "info": "You can use this armor with chainmail without encumbrance penalty.", "restriction": "Item must be a chainmail compatible armor piece" }, - { - "id": "ABLATIVE_EXOSKELETON_HEAD", - "type": "json_flag", - "info": "This armor will attach to the head of a combat exoskeleton.", - "restriction": "Item must be a combat exoskeleton armor" - }, - { - "id": "ABLATIVE_EXOSKELETON_TORSO", - "type": "json_flag", - "info": "This armor will attach to the torso of a combat exoskeleton.", - "restriction": "Item must be a combat exoskeleton armor" - }, - { - "id": "ABLATIVE_EXOSKELETON_ARMS", - "type": "json_flag", - "info": "This armor will attach to the arms of a combat exoskeleton.", - "restriction": "Item must be a combat exoskeleton armor" - }, - { - "id": "ABLATIVE_EXOSKELETON_LEGS", - "type": "json_flag", - "info": "This armor will attach to the legs of a combat exoskeleton.", - "restriction": "Item must be a combat exoskeleton armor" - }, { "id": "ABLATIVE_LARGE", "type": "json_flag", diff --git a/data/json/items/armor/combat_exoskeleton.json b/data/json/items/armor/combat_exoskeleton.json index 7a61a082e6f6f..edaea18927cb0 100644 --- a/data/json/items/armor/combat_exoskeleton.json +++ b/data/json/items/armor/combat_exoskeleton.json @@ -90,8 +90,8 @@ "pocket_data": [ { "pocket_type": "MAGAZINE_WELL", - "volume_encumber_modifier": 0, "holster": true, + "rigid": true, "description": "Compartment for a heavy battery.", "flag_restriction": [ "BATTERY_HEAVY" ], "max_contains_volume": "2000 ml", @@ -101,10 +101,10 @@ { "pocket_type": "CONTAINER", "holster": true, - "volume_encumber_modifier": 0, + "rigid": true, "ablative": true, "description": "Attachment points for exoskeleton head armor.", - "flag_restriction": [ "ABLATIVE_EXOSKELETON_HEAD" ], + "flag_restriction": [ "EXO_HELMET_PLATE" ], "max_contains_volume": "20000 ml", "max_contains_weight": "20000 g", "moves": 1000 @@ -112,10 +112,10 @@ { "pocket_type": "CONTAINER", "holster": true, - "volume_encumber_modifier": 0, + "rigid": true, "ablative": true, "description": "Attachment points for exoskeleton torso armor.", - "flag_restriction": [ "ABLATIVE_EXOSKELETON_TORSO" ], + "flag_restriction": [ "EXO_TORSO_PLATE" ], "max_contains_volume": "20000 ml", "max_contains_weight": "20000 g", "moves": 1000 @@ -123,10 +123,10 @@ { "pocket_type": "CONTAINER", "holster": true, - "volume_encumber_modifier": 0, + "rigid": true, "ablative": true, "description": "Attachment points for exoskeleton arm armor.", - "flag_restriction": [ "ABLATIVE_EXOSKELETON_ARMS" ], + "flag_restriction": [ "EXO_ARM_PLATE" ], "max_contains_volume": "20000 ml", "max_contains_weight": "20000 g", "moves": 1000 @@ -134,10 +134,10 @@ { "pocket_type": "CONTAINER", "holster": true, - "volume_encumber_modifier": 0, + "rigid": true, "ablative": true, "description": "Attachment points for exoskeleton leg armor.", - "flag_restriction": [ "ABLATIVE_EXOSKELETON_LEGS" ], + "flag_restriction": [ "EXO_LEG_PLATE" ], "max_contains_volume": "20000 ml", "max_contains_weight": "20000 g", "moves": 1000 @@ -155,14 +155,17 @@ "price_postapoc": 100000, "extend": { "flags": [ "COMBAT_TOGGLEABLE" ] }, "ammo": "battery", - "use_action": { - "type": "transform", - "msg": "You turn the exoskeleton on.\n>>Initiating boot sequence…\n//Loading DoubleOS v1.39…\n//Loading calibration profile…\n//Activating atmospheric filtration…\n//Activating liquid cooling…\n//Activating sound dampeners…\n>>Boot successful.", - "target": "combat_exoskeleton_heavy_on", - "active": true, - "need_charges": 1, - "need_charges_msg": "The exoskeleton batteries are empty." - }, + "use_action": [ + "MANAGE_EXOSUIT", + { + "type": "transform", + "msg": "You turn the exoskeleton on.\n>>Initiating boot sequence…\n//Loading DoubleOS v1.39…\n//Loading calibration profile…\n//Activating atmospheric filtration…\n//Activating liquid cooling…\n//Activating sound dampeners…\n>>Boot successful.", + "target": "combat_exoskeleton_heavy_on", + "active": true, + "need_charges": 1, + "need_charges_msg": "The exoskeleton batteries are empty." + } + ], "relic_data": { "passive_effects": [ { "id": "combat_exoskeleton_heavy_active" } ] } }, { @@ -263,14 +266,17 @@ "price_postapoc": 100000, "extend": { "flags": [ "COMBAT_TOGGLEABLE" ] }, "ammo": "battery", - "use_action": { - "type": "transform", - "msg": "You turn the exoskeleton on.\n>>Initiating boot sequence…\n//Loading DoubleOS v3.11…\n//Loading calibration profile…\n//Activating atmospheric filtration…\n//Activating liquid cooling…\n//Activating sound dampeners…\n>>Boot successful.", - "target": "combat_exoskeleton_medium_on", - "active": true, - "need_charges": 1, - "need_charges_msg": "The exoskeleton batteries are empty." - }, + "use_action": [ + "MANAGE_EXOSUIT", + { + "type": "transform", + "msg": "You turn the exoskeleton on.\n>>Initiating boot sequence…\n//Loading DoubleOS v3.11…\n//Loading calibration profile…\n//Activating atmospheric filtration…\n//Activating liquid cooling…\n//Activating sound dampeners…\n>>Boot successful.", + "target": "combat_exoskeleton_medium_on", + "active": true, + "need_charges": 1, + "need_charges_msg": "The exoskeleton batteries are empty." + } + ], "relic_data": { "passive_effects": [ { "id": "combat_exoskeleton_medium_active" } ] } }, { @@ -371,14 +377,17 @@ "price_postapoc": 100000, "extend": { "flags": [ "COMBAT_TOGGLEABLE" ] }, "ammo": "battery", - "use_action": { - "type": "transform", - "msg": "You turn the exoskeleton on.\n>>Initiating boot sequence…\n//Loading DoubleOS v3.28…\n//Loading calibration profile…\n//Activating atmospheric filtration…\n//Activating liquid cooling…\n//Activating sound dampeners…\n>>Boot successful.", - "target": "combat_exoskeleton_light_on", - "active": true, - "need_charges": 1, - "need_charges_msg": "The exoskeleton batteries are empty." - }, + "use_action": [ + "MANAGE_EXOSUIT", + { + "type": "transform", + "msg": "You turn the exoskeleton on.\n>>Initiating boot sequence…\n//Loading DoubleOS v3.28…\n//Loading calibration profile…\n//Activating atmospheric filtration…\n//Activating liquid cooling…\n//Activating sound dampeners…\n>>Boot successful.", + "target": "combat_exoskeleton_light_on", + "active": true, + "need_charges": 1, + "need_charges_msg": "The exoskeleton batteries are empty." + } + ], "relic_data": { "passive_effects": [ { "id": "combat_exoskeleton_light_active" } ] } }, { diff --git a/data/json/items/armor/combat_exoskeleton_armor.json b/data/json/items/armor/combat_exoskeleton_armor.json index 83aad5272cf26..7c0bc93639469 100644 --- a/data/json/items/armor/combat_exoskeleton_armor.json +++ b/data/json/items/armor/combat_exoskeleton_armor.json @@ -10,7 +10,7 @@ "price_postapoc": 10000, "volume": "3300 ml", "weight": "3500 g", - "flags": [ "ABLATIVE_EXOSKELETON_HEAD", "STURDY", "CANT_WEAR" ], + "flags": [ "EXO_HELMET_PLATE", "STURDY", "CANT_WEAR" ], "armor": [ { "layers": [ "OUTER" ], @@ -68,7 +68,7 @@ "price_postapoc": 10000, "volume": "12000 ml", "weight": "12700 g", - "flags": [ "ABLATIVE_EXOSKELETON_TORSO", "STURDY", "CANT_WEAR" ], + "flags": [ "EXO_TORSO_PLATE", "STURDY", "CANT_WEAR" ], "armor": [ { "layers": [ "OUTER" ], @@ -96,7 +96,7 @@ "price_postapoc": 10000, "volume": "9700 ml", "weight": "10300 g", - "flags": [ "ABLATIVE_EXOSKELETON_ARMS", "STURDY", "CANT_WEAR" ], + "flags": [ "EXO_ARM_PLATE", "STURDY", "CANT_WEAR" ], "armor": [ { "layers": [ "OUTER" ], @@ -148,7 +148,7 @@ "price_postapoc": 10000, "volume": "10000 ml", "weight": "10600 g", - "flags": [ "ABLATIVE_EXOSKELETON_LEGS", "STURDY", "CANT_WEAR" ], + "flags": [ "EXO_LEG_PLATE", "STURDY", "CANT_WEAR" ], "armor": [ { "layers": [ "OUTER" ], diff --git a/data/json/recipes/armor/combat_exoskeleton_armor.json b/data/json/recipes/armor/combat_exoskeleton_armor.json index e51a01828b3b6..f9295fdb46b17 100644 --- a/data/json/recipes/armor/combat_exoskeleton_armor.json +++ b/data/json/recipes/armor/combat_exoskeleton_armor.json @@ -7,7 +7,7 @@ "subcategory": "CSC_*_NESTED", "skill_used": "fabrication", "difficulty": 8, - "time": "1 h", + "time": "3 h", "book_learn": [ [ "textbook_armwest", 6 ], [ "textbook_fabrication", 6 ], [ "recipe_melee", 6 ] ], "using": [ [ "chainmail_standard", 1 ], [ "welding_standard", 100 ] ], "components": [ @@ -26,7 +26,7 @@ "subcategory": "CSC_*_NESTED", "skill_used": "fabrication", "difficulty": 8, - "time": "1 h 45 m", + "time": "5 h 15 m", "book_learn": [ [ "textbook_armwest", 6 ], [ "textbook_fabrication", 6 ], [ "recipe_melee", 6 ] ], "using": [ [ "chainmail_standard", 2 ], [ "welding_standard", 200 ] ], "components": [ @@ -45,7 +45,7 @@ "subcategory": "CSC_*_NESTED", "skill_used": "fabrication", "difficulty": 8, - "time": "1 h", + "time": "3 h", "book_learn": [ [ "textbook_armwest", 6 ], [ "textbook_fabrication", 6 ], [ "recipe_melee", 6 ] ], "using": [ [ "chainmail_standard", 1 ], [ "welding_standard", 100 ] ], "components": [ @@ -64,7 +64,7 @@ "subcategory": "CSC_*_NESTED", "skill_used": "fabrication", "difficulty": 8, - "time": "1 h", + "time": "3 h", "book_learn": [ [ "textbook_armwest", 6 ], [ "textbook_fabrication", 6 ], [ "recipe_melee", 6 ] ], "using": [ [ "chainmail_standard", 1 ], [ "welding_standard", 100 ] ], "components": [ From a8587d0fc2c145beab61b9911da569a686d4e91a Mon Sep 17 00:00:00 2001 From: BalthazarArgall Date: Thu, 11 Apr 2024 17:35:43 +0200 Subject: [PATCH 65/73] multiple changes smoother implementation --- data/json/items/armor/combat_exoskeleton.json | 243 ++++++++++-------- .../items/armor/combat_exoskeleton_armor.json | 16 +- 2 files changed, 140 insertions(+), 119 deletions(-) diff --git a/data/json/items/armor/combat_exoskeleton.json b/data/json/items/armor/combat_exoskeleton.json index 09d6fc4f3bb79..bc7c4cb10bf3e 100644 --- a/data/json/items/armor/combat_exoskeleton.json +++ b/data/json/items/armor/combat_exoskeleton.json @@ -1,19 +1,74 @@ [ { - "id": "combat_exoskeleton_salvaged", + "abstract": "combat_exoskeleton_abstract", "category": "armor", "type": "ARMOR", - "name": { "str": "salvaged combat exoskeleton" }, - "description": "This used to be a powered exoskeleton, but the 'power' part has been rendered non-functional: as one might expect, this makes it a lot harder to wear. The exoskeleton itself includes an environmental suit with an integrated life-support system. A variety of of webbing, magnets, and clips allows the attachment of special armor plating onto the frame.", - "looks_like": "power_armor_heavy", - "symbol": "[", - "price": 500000, + "name": { "str": "abstract combat exoskeleton" }, + "price": 50000000, "price_postapoc": 100000, + "symbol": "[", "volume": "36000 ml", "weight": "13000 g", "environmental_protection": 20, "warmth": 40, + "flags": [ "STURDY", "PADDED", "WATERPROOF", "RAINPROOF", "RAD_PROOF", "ELECTRIC_IMMUNE", "SUN_GLASSES", "COMBAT_TOGGLEABLE" ], "relic_data": { "passive_effects": [ { "id": "combat_exoskeleton_inactive" } ] }, + "pocket_data": [ + { + "pocket_type": "MAGAZINE_WELL", + "holster": true, + "volume_encumber_modifier": 0, + "description": "Compartment for a heavy battery.", + "flag_restriction": [ "BATTERY_HEAVY" ], + "max_contains_volume": "2000 ml", + "max_contains_weight": "2000 g", + "moves": 500 + }, + { + "pocket_type": "CONTAINER", + "holster": true, + "ablative": true, + "volume_encumber_modifier": 0, + "description": "Attachment points for exoskeleton head armor.", + "flag_restriction": [ "EXO_HELMET_PLATE" ], + "max_contains_volume": "20000 ml", + "max_contains_weight": "20000 g", + "moves": 1000 + }, + { + "pocket_type": "CONTAINER", + "holster": true, + "ablative": true, + "volume_encumber_modifier": 0, + "description": "Attachment points for exoskeleton torso armor.", + "flag_restriction": [ "EXO_TORSO_PLATE" ], + "max_contains_volume": "20000 ml", + "max_contains_weight": "20000 g", + "moves": 1000 + }, + { + "pocket_type": "CONTAINER", + "holster": true, + "ablative": true, + "volume_encumber_modifier": 0, + "description": "Attachment points for exoskeleton arm armor.", + "flag_restriction": [ "EXO_ARM_PLATE" ], + "max_contains_volume": "20000 ml", + "max_contains_weight": "20000 g", + "moves": 1000 + }, + { + "pocket_type": "CONTAINER", + "holster": true, + "ablative": true, + "volume_encumber_modifier": 0, + "description": "Attachment points for exoskeleton leg armor.", + "flag_restriction": [ "EXO_LEG_PLATE" ], + "max_contains_volume": "20000 ml", + "max_contains_weight": "20000 g", + "moves": 1000 + } + ], "armor": [ { "layers": [ "NORMAL" ], @@ -85,102 +140,46 @@ "specifically_covers": [ "foot_sole_r", "foot_sole_l" ], "material": [ { "type": "rubber", "thickness": 6 } ] } - ], - "pocket_data": [ - { - "pocket_type": "MAGAZINE_WELL", - "holster": true, - "rigid": true, - "description": "Compartment for a heavy battery.", - "flag_restriction": [ "BATTERY_HEAVY" ], - "max_contains_volume": "2000 ml", - "max_contains_weight": "2000 g", - "moves": 500 - }, - { - "pocket_type": "CONTAINER", - "holster": true, - "rigid": true, - "ablative": true, - "description": "Attachment points for exoskeleton head armor.", - "flag_restriction": [ "EXO_HELMET_PLATE" ], - "max_contains_volume": "20000 ml", - "max_contains_weight": "20000 g", - "moves": 1000 - }, - { - "pocket_type": "CONTAINER", - "holster": true, - "rigid": true, - "ablative": true, - "description": "Attachment points for exoskeleton torso armor.", - "flag_restriction": [ "EXO_TORSO_PLATE" ], - "max_contains_volume": "20000 ml", - "max_contains_weight": "20000 g", - "moves": 1000 - }, - { - "pocket_type": "CONTAINER", - "holster": true, - "rigid": true, - "ablative": true, - "description": "Attachment points for exoskeleton arm armor.", - "flag_restriction": [ "EXO_ARM_PLATE" ], - "max_contains_volume": "20000 ml", - "max_contains_weight": "20000 g", - "moves": 1000 - }, - { - "pocket_type": "CONTAINER", - "holster": true, - "rigid": true, - "ablative": true, - "description": "Attachment points for exoskeleton leg armor.", - "flag_restriction": [ "EXO_LEG_PLATE" ], - "max_contains_volume": "20000 ml", - "max_contains_weight": "20000 g", - "moves": 1000 - } ] }, { "id": "combat_exoskeleton_heavy", - "copy-from": "combat_exoskeleton_salvaged", + "copy-from": "combat_exoskeleton_abstract", "type": "TOOL_ARMOR", "name": { "str": "combat exoskeleton mk1" }, "description": "Colloquially known as a 'tank suit' in the media, these first-generation exoskeletons were tested in military service a few years back and determined to be too expensive for regular use. The exoskeleton itself is strapped on an environmental suit with an integrated life-support system. A variety of of webbing, magnets, and clips allows the attachment of special armor plating onto the frame.", "looks_like": "power_armor_heavy", - "price": 50000000, - "price_postapoc": 100000, - "extend": { "flags": [ "COMBAT_TOGGLEABLE" ] }, "ammo": "battery", + "relic_data": { "passive_effects": [ { "id": "combat_exoskeleton_heavy_active" } ] }, "use_action": [ - "MANAGE_EXOSUIT", { "type": "transform", - "msg": "You turn the exoskeleton on.\n>>Initiating boot sequence…\n//Loading DoubleOS v1.39…\n//Loading calibration profile…\n//Activating atmospheric filtration…\n//Activating liquid cooling…\n//Activating sound dampeners…\n>>Boot successful.", - "target": "combat_exoskeleton_heavy_on", + "msg": "You turn the exoskeleton on.\n>>Initiating boot sequence…\n//Loading DoubleOS v1.38…\n//Loading calibration profile…\n//Activating atmospheric filtration…\n//Activating liquid cooling…\n//Activating sound dampeners…\n>>Boot successful.", + "target": "combat_exoskeleton_medium_on", "active": true, "need_charges": 1, "need_charges_msg": "The exoskeleton batteries are empty." - } - ], - "relic_data": { "passive_effects": [ { "id": "combat_exoskeleton_heavy_active" } ] } + }, + "MANAGE_EXOSUIT" + ] }, { - "copy-from": "combat_exoskeleton_heavy", "id": "combat_exoskeleton_heavy_on", + "copy-from": "combat_exoskeleton_heavy", "type": "TOOL_ARMOR", "name": { "str": "combat exoskeleton mk1 (on)", "str_pl": "combat exoskeletons mk1 (on)" }, "extend": { "flags": [ "GAS_PROOF", "WATCH", "PARTIAL_DEAF", "TWO_WAY_RADIO" ] }, "power_draw": "200 W", "revert_to": "combat_exoskeleton_heavy", - "use_action": { - "type": "transform", - "menu_text": "Turn off", - "msg": "You turn the exoskeleton off.\n>>Initiating shutdown sequence…\n>>Shutting down.", - "target": "combat_exoskeleton_heavy" - }, + "use_action": [ + { + "type": "transform", + "menu_text": "Turn off", + "msg": "You turn the exoskeleton off.\n>>Initiating shutdown sequence…\n>>Shutting down.", + "target": "combat_exoskeleton_heavy" + }, + "MANAGE_EXOSUIT" + ], "armor": [ { "layers": [ "NORMAL" ], @@ -199,7 +198,7 @@ { "layers": [ "NORMAL", "OUTER" ], "covers": [ "head", "torso", "arm_l", "arm_r", "leg_l", "leg_r" ], - "encumbrance": 16, + "encumbrance": 14, "coverage": 100, "material": [ { "type": "lycra", "thickness": 0.2 }, @@ -255,43 +254,43 @@ ] }, { - "copy-from": "combat_exoskeleton_salvaged", "id": "combat_exoskeleton_medium", + "copy-from": "combat_exoskeleton_salvaged", "type": "TOOL_ARMOR", "name": { "str": "combat exoskeleton mk2" }, "description": "These were the second wave of military combat exoskeleton, and got a lot of media attention, with popular Navy commercials featuring them heavily. The exoskeleton itself is strapped on an environmental suit with an integrated life-support system. A variety of of webbing, magnets, and clips allows the attachment of special armor plating onto the frame.", "looks_like": "power_armor_basic", - "price": 50000000, - "price_postapoc": 100000, - "extend": { "flags": [ "COMBAT_TOGGLEABLE" ] }, - "ammo": "battery", "use_action": [ - "MANAGE_EXOSUIT", { "type": "transform", - "msg": "You turn the exoskeleton on.\n>>Initiating boot sequence…\n//Loading DoubleOS v3.11…\n//Loading calibration profile…\n//Activating atmospheric filtration…\n//Activating liquid cooling…\n//Activating sound dampeners…\n>>Boot successful.", - "target": "combat_exoskeleton_medium_on", + "msg": "You turn the exoskeleton on.\n>>Initiating boot sequence…\n//Loading DoubleOS v2.86…\n//Loading calibration profile…\n//Activating atmospheric filtration…\n//Activating liquid cooling…\n//Activating sound dampeners…\n>>Boot successful.", + "target": "combat_exoskeleton_light_on", "active": true, "need_charges": 1, "need_charges_msg": "The exoskeleton batteries are empty." - } + }, + "MANAGE_EXOSUIT" ], + "ammo": "battery", "relic_data": { "passive_effects": [ { "id": "combat_exoskeleton_medium_active" } ] } }, { - "copy-from": "combat_exoskeleton_medium", "id": "combat_exoskeleton_medium_on", + "copy-from": "combat_exoskeleton_medium", "type": "TOOL_ARMOR", "name": { "str": "combat exoskeleton mk2 (on)", "str_pl": "combat exoskeletons m2 (on)" }, "extend": { "flags": [ "GAS_PROOF", "WATCH", "PARTIAL_DEAF", "TWO_WAY_RADIO" ] }, "power_draw": "175 W", "revert_to": "combat_exoskeleton_medium", - "use_action": { - "type": "transform", - "menu_text": "Turn off", - "msg": "You turn the exoskeleton off.\n>>Initiating shutdown sequence…\n>>Shutting down.", - "target": "combat_exoskeleton_medium" - }, + "use_action": [ + { + "type": "transform", + "menu_text": "Turn off", + "msg": "You turn the exoskeleton off.\n>>Initiating shutdown sequence…\n>>Shutting down.", + "target": "combat_exoskeleton_medium" + }, + "MANAGE_EXOSUIT" + ], "armor": [ { "layers": [ "NORMAL" ], @@ -372,37 +371,37 @@ "name": { "str": "combat exoskeleton mk3" }, "description": "The final iteration of military power armor before the fall of civilization, this type was designed for actual widespread combat use and was seen on the front lines during the last days of the Cataclysm, unfortunately, the world ended before it could roll out in significant numbers. The exoskeleton itself is strapped on an environmental suit with an integrated life-support system. A variety of of webbing, magnets, and clips allows the attachment of special armor plating onto the frame.", "looks_like": "power_armor_light", - "price": 50000000, - "price_postapoc": 100000, - "extend": { "flags": [ "COMBAT_TOGGLEABLE" ] }, - "ammo": "battery", "use_action": [ - "MANAGE_EXOSUIT", { "type": "transform", - "msg": "You turn the exoskeleton on.\n>>Initiating boot sequence…\n//Loading DoubleOS v3.28…\n//Loading calibration profile…\n//Activating atmospheric filtration…\n//Activating liquid cooling…\n//Activating sound dampeners…\n>>Boot successful.", - "target": "combat_exoskeleton_light_on", + "msg": "You turn the exoskeleton on.\n>>Initiating boot sequence…\n//Loading DoubleOS v3.51…\n//Loading calibration profile…\n//Activating atmospheric filtration…\n//Activating liquid cooling…\n//Activating sound dampeners…\n>>Boot successful.", + "target": "combat_exoskeleton_medium_on", "active": true, "need_charges": 1, "need_charges_msg": "The exoskeleton batteries are empty." - } + }, + "MANAGE_EXOSUIT" ], + "ammo": "battery", "relic_data": { "passive_effects": [ { "id": "combat_exoskeleton_light_active" } ] } }, { - "copy-from": "combat_exoskeleton_light", "id": "combat_exoskeleton_light_on", + "copy-from": "combat_exoskeleton_light", "type": "TOOL_ARMOR", "name": { "str": "combat exoskeleton mk3 (on)", "str_pl": "combat exoskeletons mk3 (on)" }, "extend": { "flags": [ "GAS_PROOF", "WATCH", "PARTIAL_DEAF", "TWO_WAY_RADIO" ] }, "power_draw": "150 W", "revert_to": "combat_exoskeleton_light", - "use_action": { - "type": "transform", - "menu_text": "Turn off", - "msg": "You turn the exoskeleton off.\n>>Initiating shutdown sequence…\n>>Shutting down.", - "target": "combat_exoskeleton_light" - }, + "use_action": [ + { + "type": "transform", + "menu_text": "Turn off", + "msg": "You turn the exoskeleton off.\n>>Initiating shutdown sequence…\n>>Shutting down.", + "target": "combat_exoskeleton_light" + }, + "MANAGE_EXOSUIT" + ], "armor": [ { "layers": [ "NORMAL" ], @@ -475,5 +474,27 @@ "material": [ { "type": "rubber", "thickness": 6 } ] } ] + }, + { + "id": "combat_exoskeleton_salvaged", + "copy-from": "combat_exoskeleton_abstract", + "type": "ARMOR", + "name": { "str": "salvaged combat exoskeleton" }, + "description": "This used to be a powered exoskeleton, but the 'power' part has been rendered non-functional: as one might expect, this makes it a lot harder to wear. The exoskeleton itself includes an environmental suit with an integrated life-support system. A variety of of webbing, magnets, and clips allows the attachment of special armor plating onto the frame.", + "relative": { "environmental_protection": 0, "warmth": 0 }, + "proportional": { "volume": 0.25, "weight": 0.5, "price": 0.1, "price_postapoc": 0.1 }, + "delete": { + "flags": [ "STURDY", "PADDED", "WATERPROOF", "RAINPROOF", "RAD_PROOF", "ELECTRIC_IMMUNE", "SUN_GLASSES", "COMBAT_TOGGLEABLE" ] + }, + "relic_data": { "passive_effects": [ { "id": "combat_exoskeleton_inactive" } ] }, + "armor": [ + { + "layers": [ "NORMAL", "OUTER" ], + "covers": [ "head", "torso", "arm_l", "arm_r", "leg_l", "leg_r" ], + "encumbrance": 30, + "coverage": 5, + "material": [ { "type": "steel", "thickness": 5 }, { "type": "aluminum", "thickness": 5 } ] + } + ] } ] diff --git a/data/json/items/armor/combat_exoskeleton_armor.json b/data/json/items/armor/combat_exoskeleton_armor.json index 7c0bc93639469..2075ca26c4839 100644 --- a/data/json/items/armor/combat_exoskeleton_armor.json +++ b/data/json/items/armor/combat_exoskeleton_armor.json @@ -4,7 +4,7 @@ "type": "ARMOR", "category": "armor", "name": { "str": "heavy combat exoskeleton head armor" }, - "description": "This 2mm thick exoskeleton armor was designed when the testing of heavier versions concluded that mobility is actually very important on the battlefield, especially when you can still brush off anything short of a rifle round.", + "description": "Put the tank in tank suit with this 6mm thick exoskeleton armor, it even feels like wearing a real tank.", "symbol": "[", "price": 2000000, "price_postapoc": 10000, @@ -62,7 +62,7 @@ "type": "ARMOR", "category": "armor", "name": { "str": "heavy combat exoskeleton torso armor" }, - "description": "This 2mm thick exoskeleton armor was designed when the testing of heavier versions concluded that mobility is actually very important on the battlefield, especially when you can still brush off anything short of a rifle round.", + "description": "Put the tank in tank suit with this 6mm thick exoskeleton armor, it even feels like wearing a real tank.", "symbol": "[", "price": 2000000, "price_postapoc": 10000, @@ -90,7 +90,7 @@ "type": "ARMOR", "category": "armor", "name": { "str": "heavy combat exoskeleton arm armor" }, - "description": "This 2mm thick exoskeleton armor was designed when the testing of heavier versions concluded that mobility is actually very important on the battlefield, especially when you can still brush off anything short of a rifle round.", + "description": "Put the tank in tank suit with this 6mm thick exoskeleton armor, it even feels like wearing a real tank.", "symbol": "[", "price": 2000000, "price_postapoc": 10000, @@ -142,7 +142,7 @@ "type": "ARMOR", "category": "armor", "name": { "str": "heavy combat exoskeleton leg armor" }, - "description": "This 2mm thick exoskeleton armor was designed when the testing of heavier versions concluded that mobility is actually very important on the battlefield, especially when you can still brush off anything short of a rifle round.", + "description": "Put the tank in tank suit with this 6mm thick exoskeleton armor, it even feels like wearing a real tank.", "symbol": "[", "price": 2000000, "price_postapoc": 10000, @@ -191,7 +191,7 @@ "copy-from": "combat_exoskeleton_armor_head_heavy", "type": "ARMOR", "name": { "str": "medium combat exoskeleton head armor" }, - "description": "This 2mm thick exoskeleton armor was designed when the testing of heavier versions concluded that mobility is actually very important on the battlefield, especially when you can still brush off anything short of a rifle round.", + "description": "This 4mm thick exoskeleton armor hits a perfect balance between invulnerability and being able to move.", "volume": "2700 ml", "weight": "2800 g", "armor": [ @@ -232,7 +232,7 @@ "copy-from": "combat_exoskeleton_armor_torso_heavy", "type": "ARMOR", "name": { "str": "medium combat exoskeleton torso armor" }, - "description": "This 2mm thick exoskeleton armor was designed when the testing of heavier versions concluded that mobility is actually very important on the battlefield, especially when you can still brush off anything short of a rifle round.", + "description": "This 4mm thick exoskeleton armor hits a perfect balance between invulnerability and being able to move.", "volume": "9600 ml", "weight": "10200 g", "armor": [ @@ -255,7 +255,7 @@ "copy-from": "combat_exoskeleton_armor_arm_heavy", "type": "ARMOR", "name": { "str": "medium combat exoskeleton arm armor" }, - "description": "This 2mm thick exoskeleton armor was designed when the testing of heavier versions concluded that mobility is actually very important on the battlefield, especially when you can still brush off anything short of a rifle round.", + "description": "This 4mm thick exoskeleton armor hits a perfect balance between invulnerability and being able to move.", "volume": "7700 ml", "weight": "8200 g", "armor": [ @@ -303,7 +303,7 @@ "copy-from": "combat_exoskeleton_armor_leg_heavy", "type": "ARMOR", "name": { "str": "medium combat exoskeleton leg armor" }, - "description": "This 2mm thick exoskeleton armor was designed when the testing of heavier versions concluded that mobility is actually very important on the battlefield, especially when you can still brush off anything short of a rifle round.", + "description": "This 4mm thick exoskeleton armor hits a perfect balance between invulnerability and being able to move.", "volume": "8000 ml", "weight": "8500 g", "armor": [ From a9cf78e96c926635a477579b8539d6f862df4e5f Mon Sep 17 00:00:00 2001 From: BalthazarArgall Date: Thu, 11 Apr 2024 19:44:37 +0200 Subject: [PATCH 66/73] updated flag descriptions to accomodate combat exoskeletons --- data/json/flags.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/data/json/flags.json b/data/json/flags.json index 55790cb89fe06..fefd98e41c988 100644 --- a/data/json/flags.json +++ b/data/json/flags.json @@ -2196,32 +2196,32 @@ { "id": "EXO_HELMET_PLATE", "type": "json_flag", - "info": "This is meant for exosuit helmet plating." + "info": "This is meant for exoskeleton helmet plating." }, { "id": "EXO_TORSO_PLATE", "type": "json_flag", - "info": "This is meant for exosuit torso plating." + "info": "This is meant for exoskeleton torso plating." }, { "id": "EXO_ARM_PLATE", "type": "json_flag", - "info": "This is meant for exosuit arm plating." + "info": "This is meant for exoskeleton arm plating." }, { "id": "EXO_GLOVE_PLATE", "type": "json_flag", - "info": "This is meant for exosuit arm plating." + "info": "This is meant for exoskeleton arm plating." }, { "id": "EXO_LEG_PLATE", "type": "json_flag", - "info": "This is meant for exosuit leg plating." + "info": "This is meant for exoskeleton leg plating." }, { "id": "EXO_BOOT_PLATE", "type": "json_flag", - "info": "This is meant for exosuit foot plating." + "info": "This is meant for exoskeleton foot plating." }, { "id": "ROBOFAC_ROBOT_MEDIUM", From 5b779ce6d535a6f533c5bc267f457431382731b1 Mon Sep 17 00:00:00 2001 From: BalthazarArgall Date: Thu, 11 Apr 2024 19:52:47 +0200 Subject: [PATCH 67/73] updated reinforced versions crafting time --- data/json/recipes/armor/combat_exoskeleton_armor.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/data/json/recipes/armor/combat_exoskeleton_armor.json b/data/json/recipes/armor/combat_exoskeleton_armor.json index f9295fdb46b17..c4fb9df67cdb0 100644 --- a/data/json/recipes/armor/combat_exoskeleton_armor.json +++ b/data/json/recipes/armor/combat_exoskeleton_armor.json @@ -7,7 +7,7 @@ "subcategory": "CSC_*_NESTED", "skill_used": "fabrication", "difficulty": 8, - "time": "3 h", + "time": "2 h", "book_learn": [ [ "textbook_armwest", 6 ], [ "textbook_fabrication", 6 ], [ "recipe_melee", 6 ] ], "using": [ [ "chainmail_standard", 1 ], [ "welding_standard", 100 ] ], "components": [ @@ -26,7 +26,7 @@ "subcategory": "CSC_*_NESTED", "skill_used": "fabrication", "difficulty": 8, - "time": "5 h 15 m", + "time": "3 h 15 m", "book_learn": [ [ "textbook_armwest", 6 ], [ "textbook_fabrication", 6 ], [ "recipe_melee", 6 ] ], "using": [ [ "chainmail_standard", 2 ], [ "welding_standard", 200 ] ], "components": [ @@ -45,7 +45,7 @@ "subcategory": "CSC_*_NESTED", "skill_used": "fabrication", "difficulty": 8, - "time": "3 h", + "time": "2 h", "book_learn": [ [ "textbook_armwest", 6 ], [ "textbook_fabrication", 6 ], [ "recipe_melee", 6 ] ], "using": [ [ "chainmail_standard", 1 ], [ "welding_standard", 100 ] ], "components": [ @@ -64,7 +64,7 @@ "subcategory": "CSC_*_NESTED", "skill_used": "fabrication", "difficulty": 8, - "time": "3 h", + "time": "2 h", "book_learn": [ [ "textbook_armwest", 6 ], [ "textbook_fabrication", 6 ], [ "recipe_melee", 6 ] ], "using": [ [ "chainmail_standard", 1 ], [ "welding_standard", 100 ] ], "components": [ From b28810ca68fa476d6618421c746a754885f074d8 Mon Sep 17 00:00:00 2001 From: BalthazarArgall Date: Thu, 11 Apr 2024 19:55:07 +0200 Subject: [PATCH 68/73] remove exosuit management menu --- data/json/items/armor/combat_exoskeleton.json | 106 ++++++++---------- 1 file changed, 44 insertions(+), 62 deletions(-) diff --git a/data/json/items/armor/combat_exoskeleton.json b/data/json/items/armor/combat_exoskeleton.json index bc7c4cb10bf3e..9f25c8c0987b3 100644 --- a/data/json/items/armor/combat_exoskeleton.json +++ b/data/json/items/armor/combat_exoskeleton.json @@ -151,17 +151,14 @@ "looks_like": "power_armor_heavy", "ammo": "battery", "relic_data": { "passive_effects": [ { "id": "combat_exoskeleton_heavy_active" } ] }, - "use_action": [ - { - "type": "transform", - "msg": "You turn the exoskeleton on.\n>>Initiating boot sequence…\n//Loading DoubleOS v1.38…\n//Loading calibration profile…\n//Activating atmospheric filtration…\n//Activating liquid cooling…\n//Activating sound dampeners…\n>>Boot successful.", - "target": "combat_exoskeleton_medium_on", - "active": true, - "need_charges": 1, - "need_charges_msg": "The exoskeleton batteries are empty." - }, - "MANAGE_EXOSUIT" - ] + "use_action": { + "type": "transform", + "msg": "You turn the exoskeleton on.\n>>Initiating boot sequence…\n//Loading DoubleOS v1.38…\n//Loading calibration profile…\n//Activating atmospheric filtration…\n//Activating liquid cooling…\n//Activating sound dampeners…\n>>Boot successful.", + "target": "combat_exoskeleton_medium_on", + "active": true, + "need_charges": 1, + "need_charges_msg": "The exoskeleton batteries are empty." + } }, { "id": "combat_exoskeleton_heavy_on", @@ -171,15 +168,12 @@ "extend": { "flags": [ "GAS_PROOF", "WATCH", "PARTIAL_DEAF", "TWO_WAY_RADIO" ] }, "power_draw": "200 W", "revert_to": "combat_exoskeleton_heavy", - "use_action": [ - { - "type": "transform", - "menu_text": "Turn off", - "msg": "You turn the exoskeleton off.\n>>Initiating shutdown sequence…\n>>Shutting down.", - "target": "combat_exoskeleton_heavy" - }, - "MANAGE_EXOSUIT" - ], + "use_action": { + "type": "transform", + "menu_text": "Turn off", + "msg": "You turn the exoskeleton off.\n>>Initiating shutdown sequence…\n>>Shutting down.", + "target": "combat_exoskeleton_heavy" + }, "armor": [ { "layers": [ "NORMAL" ], @@ -260,19 +254,16 @@ "name": { "str": "combat exoskeleton mk2" }, "description": "These were the second wave of military combat exoskeleton, and got a lot of media attention, with popular Navy commercials featuring them heavily. The exoskeleton itself is strapped on an environmental suit with an integrated life-support system. A variety of of webbing, magnets, and clips allows the attachment of special armor plating onto the frame.", "looks_like": "power_armor_basic", - "use_action": [ - { - "type": "transform", - "msg": "You turn the exoskeleton on.\n>>Initiating boot sequence…\n//Loading DoubleOS v2.86…\n//Loading calibration profile…\n//Activating atmospheric filtration…\n//Activating liquid cooling…\n//Activating sound dampeners…\n>>Boot successful.", - "target": "combat_exoskeleton_light_on", - "active": true, - "need_charges": 1, - "need_charges_msg": "The exoskeleton batteries are empty." - }, - "MANAGE_EXOSUIT" - ], "ammo": "battery", - "relic_data": { "passive_effects": [ { "id": "combat_exoskeleton_medium_active" } ] } + "relic_data": { "passive_effects": [ { "id": "combat_exoskeleton_medium_active" } ] }, + "use_action": { + "type": "transform", + "msg": "You turn the exoskeleton on.\n>>Initiating boot sequence…\n//Loading DoubleOS v2.86…\n//Loading calibration profile…\n//Activating atmospheric filtration…\n//Activating liquid cooling…\n//Activating sound dampeners…\n>>Boot successful.", + "target": "combat_exoskeleton_light_on", + "active": true, + "need_charges": 1, + "need_charges_msg": "The exoskeleton batteries are empty." + } }, { "id": "combat_exoskeleton_medium_on", @@ -282,15 +273,12 @@ "extend": { "flags": [ "GAS_PROOF", "WATCH", "PARTIAL_DEAF", "TWO_WAY_RADIO" ] }, "power_draw": "175 W", "revert_to": "combat_exoskeleton_medium", - "use_action": [ - { - "type": "transform", - "menu_text": "Turn off", - "msg": "You turn the exoskeleton off.\n>>Initiating shutdown sequence…\n>>Shutting down.", - "target": "combat_exoskeleton_medium" - }, - "MANAGE_EXOSUIT" - ], + "use_action": { + "type": "transform", + "menu_text": "Turn off", + "msg": "You turn the exoskeleton off.\n>>Initiating shutdown sequence…\n>>Shutting down.", + "target": "combat_exoskeleton_medium" + }, "armor": [ { "layers": [ "NORMAL" ], @@ -371,19 +359,16 @@ "name": { "str": "combat exoskeleton mk3" }, "description": "The final iteration of military power armor before the fall of civilization, this type was designed for actual widespread combat use and was seen on the front lines during the last days of the Cataclysm, unfortunately, the world ended before it could roll out in significant numbers. The exoskeleton itself is strapped on an environmental suit with an integrated life-support system. A variety of of webbing, magnets, and clips allows the attachment of special armor plating onto the frame.", "looks_like": "power_armor_light", - "use_action": [ - { - "type": "transform", - "msg": "You turn the exoskeleton on.\n>>Initiating boot sequence…\n//Loading DoubleOS v3.51…\n//Loading calibration profile…\n//Activating atmospheric filtration…\n//Activating liquid cooling…\n//Activating sound dampeners…\n>>Boot successful.", - "target": "combat_exoskeleton_medium_on", - "active": true, - "need_charges": 1, - "need_charges_msg": "The exoskeleton batteries are empty." - }, - "MANAGE_EXOSUIT" - ], "ammo": "battery", - "relic_data": { "passive_effects": [ { "id": "combat_exoskeleton_light_active" } ] } + "relic_data": { "passive_effects": [ { "id": "combat_exoskeleton_light_active" } ] }, + "use_action": { + "type": "transform", + "msg": "You turn the exoskeleton on.\n>>Initiating boot sequence…\n//Loading DoubleOS v3.51…\n//Loading calibration profile…\n//Activating atmospheric filtration…\n//Activating liquid cooling…\n//Activating sound dampeners…\n>>Boot successful.", + "target": "combat_exoskeleton_medium_on", + "active": true, + "need_charges": 1, + "need_charges_msg": "The exoskeleton batteries are empty." + } }, { "id": "combat_exoskeleton_light_on", @@ -393,15 +378,12 @@ "extend": { "flags": [ "GAS_PROOF", "WATCH", "PARTIAL_DEAF", "TWO_WAY_RADIO" ] }, "power_draw": "150 W", "revert_to": "combat_exoskeleton_light", - "use_action": [ - { - "type": "transform", - "menu_text": "Turn off", - "msg": "You turn the exoskeleton off.\n>>Initiating shutdown sequence…\n>>Shutting down.", - "target": "combat_exoskeleton_light" - }, - "MANAGE_EXOSUIT" - ], + "use_action": { + "type": "transform", + "menu_text": "Turn off", + "msg": "You turn the exoskeleton off.\n>>Initiating shutdown sequence…\n>>Shutting down.", + "target": "combat_exoskeleton_light" + }, "armor": [ { "layers": [ "NORMAL" ], From e396c871d01b70c926d6b454ae8d07659c35c860 Mon Sep 17 00:00:00 2001 From: BalthazarArgall Date: Thu, 11 Apr 2024 20:05:55 +0200 Subject: [PATCH 69/73] multiple changes, should be quite polished --- data/json/items/armor/combat_exoskeleton.json | 12 ++++++------ data/json/monsterdrops/zombie.json | 2 +- .../migration_items.json | 2 +- data/json/recipes/recipe_deconstruction.json | 2 +- data/mods/classic_zombies/items/blacklists.json | 2 +- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/data/json/items/armor/combat_exoskeleton.json b/data/json/items/armor/combat_exoskeleton.json index 9f25c8c0987b3..355a60613eae5 100644 --- a/data/json/items/armor/combat_exoskeleton.json +++ b/data/json/items/armor/combat_exoskeleton.json @@ -80,7 +80,7 @@ { "layers": [ "NORMAL" ], "covers": [ "mouth" ], - "encumbrance": 10, + "encumbrance": 30, "coverage": 100, "material": [ { "type": "thermo_resin", "thickness": 1 } ] }, @@ -249,7 +249,7 @@ }, { "id": "combat_exoskeleton_medium", - "copy-from": "combat_exoskeleton_salvaged", + "copy-from": "combat_exoskeleton_abstract", "type": "TOOL_ARMOR", "name": { "str": "combat exoskeleton mk2" }, "description": "These were the second wave of military combat exoskeleton, and got a lot of media attention, with popular Navy commercials featuring them heavily. The exoskeleton itself is strapped on an environmental suit with an integrated life-support system. A variety of of webbing, magnets, and clips allows the attachment of special armor plating onto the frame.", @@ -354,7 +354,7 @@ }, { "id": "combat_exoskeleton_light", - "copy-from": "combat_exoskeleton_salvaged", + "copy-from": "combat_exoskeleton_abstract", "type": "TOOL_ARMOR", "name": { "str": "combat exoskeleton mk3" }, "description": "The final iteration of military power armor before the fall of civilization, this type was designed for actual widespread combat use and was seen on the front lines during the last days of the Cataclysm, unfortunately, the world ended before it could roll out in significant numbers. The exoskeleton itself is strapped on an environmental suit with an integrated life-support system. A variety of of webbing, magnets, and clips allows the attachment of special armor plating onto the frame.", @@ -458,11 +458,11 @@ ] }, { - "id": "combat_exoskeleton_salvaged", - "copy-from": "combat_exoskeleton_abstract", + "id": "combat_exoskeleton_light_salvaged", + "copy-from": "combat_exoskeleton_light", "type": "ARMOR", "name": { "str": "salvaged combat exoskeleton" }, - "description": "This used to be a powered exoskeleton, but the 'power' part has been rendered non-functional: as one might expect, this makes it a lot harder to wear. The exoskeleton itself includes an environmental suit with an integrated life-support system. A variety of of webbing, magnets, and clips allows the attachment of special armor plating onto the frame.", + "description": "This used to be a combat exoskeleton of third generation but it has been rendered non-functional: as one might expect, this makes it a lot harder to wear. A variety of of webbing, magnets, and clips allows the attachment of special armor plating onto the frame.", "relative": { "environmental_protection": 0, "warmth": 0 }, "proportional": { "volume": 0.25, "weight": 0.5, "price": 0.1, "price_postapoc": 0.1 }, "delete": { diff --git a/data/json/monsterdrops/zombie.json b/data/json/monsterdrops/zombie.json index 7df596973d61d..4872efa7ddb8c 100644 --- a/data/json/monsterdrops/zombie.json +++ b/data/json/monsterdrops/zombie.json @@ -15,7 +15,7 @@ { "item": "combat_exoskeleton_armor_torso_medium", "count": [ 0, 1 ], "prob": 20 }, { "item": "combat_exoskeleton_armor_arm_medium", "count": [ 0, 1 ], "prob": 20 }, { "item": "combat_exoskeleton_armor_leg_medium", "count": [ 0, 1 ], "prob": 20 }, - { "item": "combat_exoskeleton_salvaged", "count": [ 0, 1 ], "prob": 20 } + { "item": "combat_exoskeleton_light_salvaged", "count": [ 0, 1 ], "prob": 20 } ] }, { diff --git a/data/json/obsoletion_and_migration_0.I/migration_items.json b/data/json/obsoletion_and_migration_0.I/migration_items.json index 5509919c5135b..0a1922eeb3690 100644 --- a/data/json/obsoletion_and_migration_0.I/migration_items.json +++ b/data/json/obsoletion_and_migration_0.I/migration_items.json @@ -2,7 +2,7 @@ { "id": "depowered_armor", "type": "MIGRATION", - "replace": "combat_exoskeleton_salvaged" + "replace": "combat_exoskeleton_light_salvaged" }, { "id": "depowered_helmet", diff --git a/data/json/recipes/recipe_deconstruction.json b/data/json/recipes/recipe_deconstruction.json index 22885b7a6154c..6d0f888c8330d 100644 --- a/data/json/recipes/recipe_deconstruction.json +++ b/data/json/recipes/recipe_deconstruction.json @@ -3508,7 +3508,7 @@ "qualities": [ { "id": "SAW_M", "level": 1 }, { "id": "SCREW", "level": 1 }, { "id": "WRENCH", "level": 1 } ], "tools": [ [ [ "boltcutters", -1 ], [ "toolset", -1 ] ] ], "components": [ - [ [ "combat_exoskeleton_salvaged", 1 ] ], + [ [ "combat_exoskeleton_light_salvaged", 1 ] ], [ [ "power_supply", 6 ] ], [ [ "element", 2 ] ], [ [ "cable", 12 ] ], diff --git a/data/mods/classic_zombies/items/blacklists.json b/data/mods/classic_zombies/items/blacklists.json index 9b6258735744d..e3ed722a04fc5 100644 --- a/data/mods/classic_zombies/items/blacklists.json +++ b/data/mods/classic_zombies/items/blacklists.json @@ -38,7 +38,7 @@ "atomic_coffee", "bren2_762", "bren2_556", - "combat_exoskeleton_salvaged", + "combat_exoskeleton_light_salvaged", "combat_exoskeleton_heavy", "combat_exoskeleton_medium", "combat_exoskeleton_light", From a0464536a34e8257fb7a552dc74cff077b319c4f Mon Sep 17 00:00:00 2001 From: BalthazarArgall Date: Thu, 11 Apr 2024 20:41:50 +0200 Subject: [PATCH 70/73] fixe a copy paste error --- data/json/items/armor/combat_exoskeleton.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/data/json/items/armor/combat_exoskeleton.json b/data/json/items/armor/combat_exoskeleton.json index 355a60613eae5..b4d9a3c19b25c 100644 --- a/data/json/items/armor/combat_exoskeleton.json +++ b/data/json/items/armor/combat_exoskeleton.json @@ -154,7 +154,7 @@ "use_action": { "type": "transform", "msg": "You turn the exoskeleton on.\n>>Initiating boot sequence…\n//Loading DoubleOS v1.38…\n//Loading calibration profile…\n//Activating atmospheric filtration…\n//Activating liquid cooling…\n//Activating sound dampeners…\n>>Boot successful.", - "target": "combat_exoskeleton_medium_on", + "target": "combat_exoskeleton_heavy_on", "active": true, "need_charges": 1, "need_charges_msg": "The exoskeleton batteries are empty." @@ -259,7 +259,7 @@ "use_action": { "type": "transform", "msg": "You turn the exoskeleton on.\n>>Initiating boot sequence…\n//Loading DoubleOS v2.86…\n//Loading calibration profile…\n//Activating atmospheric filtration…\n//Activating liquid cooling…\n//Activating sound dampeners…\n>>Boot successful.", - "target": "combat_exoskeleton_light_on", + "target": "combat_exoskeleton_medium_on", "active": true, "need_charges": 1, "need_charges_msg": "The exoskeleton batteries are empty." @@ -357,14 +357,14 @@ "copy-from": "combat_exoskeleton_abstract", "type": "TOOL_ARMOR", "name": { "str": "combat exoskeleton mk3" }, - "description": "The final iteration of military power armor before the fall of civilization, this type was designed for actual widespread combat use and was seen on the front lines during the last days of the Cataclysm, unfortunately, the world ended before it could roll out in significant numbers. The exoskeleton itself is strapped on an environmental suit with an integrated life-support system. A variety of of webbing, magnets, and clips allows the attachment of special armor plating onto the frame.", + "description": "The final iteration of military power armor before the fall of civilization, this version was designed for actual widespread combat use and was seen on the front lines during the last days of the Cataclysm, unfortunately, the world ended before it could roll out in significant numbers. The exoskeleton itself is strapped on an environmental suit with an integrated life-support system. A variety of of webbing, magnets, and clips allows the attachment of special armor plating onto the frame.", "looks_like": "power_armor_light", "ammo": "battery", "relic_data": { "passive_effects": [ { "id": "combat_exoskeleton_light_active" } ] }, "use_action": { "type": "transform", "msg": "You turn the exoskeleton on.\n>>Initiating boot sequence…\n//Loading DoubleOS v3.51…\n//Loading calibration profile…\n//Activating atmospheric filtration…\n//Activating liquid cooling…\n//Activating sound dampeners…\n>>Boot successful.", - "target": "combat_exoskeleton_medium_on", + "target": "combat_exoskeleton_light_on", "active": true, "need_charges": 1, "need_charges_msg": "The exoskeleton batteries are empty." From 4c52db2ccc128d5706e6344eaaa23164388e64d1 Mon Sep 17 00:00:00 2001 From: BalthazarArgall Date: Fri, 12 Apr 2024 16:40:41 +0200 Subject: [PATCH 71/73] fixes descriptions for exoskeleton armor --- .../items/armor/combat_exoskeleton_armor.json | 48 +++++++++---------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/data/json/items/armor/combat_exoskeleton_armor.json b/data/json/items/armor/combat_exoskeleton_armor.json index 2075ca26c4839..ed2057fd68f93 100644 --- a/data/json/items/armor/combat_exoskeleton_armor.json +++ b/data/json/items/armor/combat_exoskeleton_armor.json @@ -4,7 +4,7 @@ "type": "ARMOR", "category": "armor", "name": { "str": "heavy combat exoskeleton head armor" }, - "description": "Put the tank in tank suit with this 6mm thick exoskeleton armor, it even feels like wearing a real tank.", + "description": "Put the tank in tank suit with this 6mm thick exoskeleton armor, it even feels like wearing a real tank, you should stay wary of antimaterial rounds though.", "symbol": "[", "price": 2000000, "price_postapoc": 10000, @@ -62,7 +62,7 @@ "type": "ARMOR", "category": "armor", "name": { "str": "heavy combat exoskeleton torso armor" }, - "description": "Put the tank in tank suit with this 6mm thick exoskeleton armor, it even feels like wearing a real tank.", + "description": "Put the tank in tank suit with this 6mm thick exoskeleton armor, it even feels like wearing a real tank, you should stay wary of antimaterial rounds though.", "symbol": "[", "price": 2000000, "price_postapoc": 10000, @@ -90,7 +90,7 @@ "type": "ARMOR", "category": "armor", "name": { "str": "heavy combat exoskeleton arm armor" }, - "description": "Put the tank in tank suit with this 6mm thick exoskeleton armor, it even feels like wearing a real tank.", + "description": "Put the tank in tank suit with this 6mm thick exoskeleton armor, it even feels like wearing a real tank, you should stay wary of antimaterial rounds though.", "symbol": "[", "price": 2000000, "price_postapoc": 10000, @@ -142,7 +142,7 @@ "type": "ARMOR", "category": "armor", "name": { "str": "heavy combat exoskeleton leg armor" }, - "description": "Put the tank in tank suit with this 6mm thick exoskeleton armor, it even feels like wearing a real tank.", + "description": "Put the tank in tank suit with this 6mm thick exoskeleton armor, it even feels like wearing a real tank, you should stay wary of antimaterial rounds though.", "symbol": "[", "price": 2000000, "price_postapoc": 10000, @@ -191,7 +191,7 @@ "copy-from": "combat_exoskeleton_armor_head_heavy", "type": "ARMOR", "name": { "str": "medium combat exoskeleton head armor" }, - "description": "This 4mm thick exoskeleton armor hits a perfect balance between invulnerability and being able to move.", + "description": "This 4mm thick exoskeleton armor will allow you to withstand a lead storm while also giving you the mobility to escape it, if the hail ends up being made of heavier calibers than standard rifle rounds.", "volume": "2700 ml", "weight": "2800 g", "armor": [ @@ -232,7 +232,7 @@ "copy-from": "combat_exoskeleton_armor_torso_heavy", "type": "ARMOR", "name": { "str": "medium combat exoskeleton torso armor" }, - "description": "This 4mm thick exoskeleton armor hits a perfect balance between invulnerability and being able to move.", + "description": "This 4mm thick exoskeleton armor will allow you to withstand a lead storm while also giving you the mobility to escape it, if the hail ends up being made of heavier calibers than standard rifle rounds.", "volume": "9600 ml", "weight": "10200 g", "armor": [ @@ -255,7 +255,7 @@ "copy-from": "combat_exoskeleton_armor_arm_heavy", "type": "ARMOR", "name": { "str": "medium combat exoskeleton arm armor" }, - "description": "This 4mm thick exoskeleton armor hits a perfect balance between invulnerability and being able to move.", + "description": "This 4mm thick exoskeleton armor will allow you to withstand a lead storm while also giving you the mobility to escape it, if the hail ends up being made of heavier calibers than standard rifle rounds.", "volume": "7700 ml", "weight": "8200 g", "armor": [ @@ -303,7 +303,7 @@ "copy-from": "combat_exoskeleton_armor_leg_heavy", "type": "ARMOR", "name": { "str": "medium combat exoskeleton leg armor" }, - "description": "This 4mm thick exoskeleton armor hits a perfect balance between invulnerability and being able to move.", + "description": "This 4mm thick exoskeleton armor will allow you to withstand a lead storm while also giving you the mobility to escape it, if the hail ends up being made of heavier calibers than standard rifle rounds.", "volume": "8000 ml", "weight": "8500 g", "armor": [ @@ -348,7 +348,7 @@ "copy-from": "combat_exoskeleton_armor_head_heavy", "type": "ARMOR", "name": { "str": "light combat exoskeleton head armor" }, - "description": "This 2mm thick exoskeleton armor was designed when the testing of heavier versions concluded that mobility is actually very important on the battlefield, especially when you can still brush off anything short of a rifle round.", + "description": "This 2mm thick exoskeleton armor was designed when the testing of heavier versions concluded that mobility is actually the most important attribute on the battlefield, especially when you can still brush off small caliber rounds.", "volume": "2000 ml", "weight": "2300 g", "armor": [ @@ -389,7 +389,7 @@ "copy-from": "combat_exoskeleton_armor_torso_heavy", "type": "ARMOR", "name": { "str": "light combat exoskeleton torso armor" }, - "description": "This 2mm thick exoskeleton armor was designed when the testing of heavier versions concluded that mobility is actually very important on the battlefield, especially when you can still brush off anything short of a rifle round.", + "description": "This 2mm thick exoskeleton armor was designed when the testing of heavier versions concluded that mobility is actually the most important attribute on the battlefield, especially when you can still brush off small caliber rounds.", "volume": "7200 ml", "weight": "8200 g", "armor": [ @@ -412,7 +412,7 @@ "copy-from": "combat_exoskeleton_armor_arm_heavy", "type": "ARMOR", "name": { "str": "light combat exoskeleton arm armor" }, - "description": "This 2mm thick exoskeleton armor was designed when the testing of heavier versions concluded that mobility is actually very important on the battlefield, especially when you can still brush off anything short of a rifle round.", + "description": "This 2mm thick exoskeleton armor was designed when the testing of heavier versions concluded that mobility is actually the most important attribute on the battlefield, especially when you can still brush off small caliber rounds.", "volume": "5800 ml", "weight": "6600 g", "armor": [ @@ -460,7 +460,7 @@ "copy-from": "combat_exoskeleton_armor_leg_heavy", "type": "ARMOR", "name": { "str": "light combat exoskeleton leg armor" }, - "description": "This 2mm thick exoskeleton armor was designed when the testing of heavier versions concluded that mobility is actually very important on the battlefield, especially when you can still brush off anything short of a rifle round.", + "description": "This 2mm thick exoskeleton armor was designed when the testing of heavier versions concluded that mobility is actually the most important attribute on the battlefield, especially when you can still brush off small caliber rounds.", "volume": "6000 ml", "weight": "6800 g", "armor": [ @@ -505,7 +505,7 @@ "copy-from": "combat_exoskeleton_armor_head_heavy", "type": "ARMOR", "name": { "str": "reinforced heavy combat exoskeleton head armor" }, - "description": "This 2mm thick exoskeleton armor was designed when the testing of heavier versions concluded that mobility is actually very important on the battlefield, especially when you can still brush off anything short of a rifle round. This armor has been reinforced with chainmail to fill its gaps.", + "description": "Put the tank in tank suit with this 6mm thick exoskeleton armor, it even feels like wearing a real tank, you should stay wary of antimaterial rounds though. This armor has been reinforced with chainmail to fill its gaps.", "volume": "3600 ml", "weight": "3900 g", "armor": [ @@ -547,7 +547,7 @@ "copy-from": "combat_exoskeleton_armor_torso_heavy", "type": "ARMOR", "name": { "str": "reinforced heavy combat exoskeleton torso armor" }, - "description": "This 2mm thick exoskeleton armor was designed when the testing of heavier versions concluded that mobility is actually very important on the battlefield, especially when you can still brush off anything short of a rifle round. This armor has been reinforced with chainmail to fill its gaps.", + "description": "Put the tank in tank suit with this 6mm thick exoskeleton armor, it even feels like wearing a real tank, you should stay wary of antimaterial rounds though. This armor has been reinforced with chainmail to fill its gaps.", "volume": "13200 ml", "weight": "14000 g", "armor": [ @@ -571,7 +571,7 @@ "copy-from": "combat_exoskeleton_armor_arm_heavy", "type": "ARMOR", "name": { "str": "reinforced heavy combat exoskeleton arm armor" }, - "description": "This 2mm thick exoskeleton armor was designed when the testing of heavier versions concluded that mobility is actually very important on the battlefield, especially when you can still brush off anything short of a rifle round. This armor has been reinforced with chainmail to fill its gaps.", + "description": "Put the tank in tank suit with this 6mm thick exoskeleton armor, it even feels like wearing a real tank, you should stay wary of antimaterial rounds though. This armor has been reinforced with chainmail to fill its gaps.", "volume": "10700 ml", "weight": "11300 g", "armor": [ @@ -622,7 +622,7 @@ "copy-from": "combat_exoskeleton_armor_leg_heavy", "type": "ARMOR", "name": { "str": "reinforced heavy combat exoskeleton leg armor" }, - "description": "This 2mm thick exoskeleton armor was designed when the testing of heavier versions concluded that mobility is actually very important on the battlefield, especially when you can still brush off anything short of a rifle round. This armor has been reinforced with chainmail to fill its gaps.", + "description": "Put the tank in tank suit with this 6mm thick exoskeleton armor, it even feels like wearing a real tank, you should stay wary of antimaterial rounds though. This armor has been reinforced with chainmail to fill its gaps.", "volume": "11000 ml", "weight": "11700 g", "armor": [ @@ -669,7 +669,7 @@ "copy-from": "combat_exoskeleton_armor_head_heavy", "type": "ARMOR", "name": { "str": "reinforced medium combat exoskeleton head armor" }, - "description": "This 2mm thick exoskeleton armor was designed when the testing of heavier versions concluded that mobility is actually very important on the battlefield, especially when you can still brush off anything short of a rifle round. This armor has been reinforced with chainmail to fill its gaps.", + "description": "This 4mm thick exoskeleton armor will allow you to withstand a lead storm while also giving you the mobility to escape it, if the hail ends up being made of heavier calibers than standard rifle rounds. This armor has been reinforced with chainmail to fill its gaps.", "volume": "3000 ml", "weight": "3100 g", "armor": [ @@ -711,7 +711,7 @@ "copy-from": "combat_exoskeleton_armor_torso_heavy", "type": "ARMOR", "name": { "str": "reinforced medium combat exoskeleton torso armor" }, - "description": "This 2mm thick exoskeleton armor was designed when the testing of heavier versions concluded that mobility is actually very important on the battlefield, especially when you can still brush off anything short of a rifle round. This armor has been reinforced with chainmail to fill its gaps.", + "description": "This 4mm thick exoskeleton armor will allow you to withstand a lead storm while also giving you the mobility to escape it, if the hail ends up being made of heavier calibers than standard rifle rounds. This armor has been reinforced with chainmail to fill its gaps.", "volume": "10600 ml", "weight": "11200 g", "armor": [ @@ -735,7 +735,7 @@ "copy-from": "combat_exoskeleton_armor_arm_heavy", "type": "ARMOR", "name": { "str": "reinforced medium combat exoskeleton arm armor" }, - "description": "This 2mm thick exoskeleton armor was designed when the testing of heavier versions concluded that mobility is actually very important on the battlefield, especially when you can still brush off anything short of a rifle round. This armor has been reinforced with chainmail to fill its gaps.", + "description": "This 4mm thick exoskeleton armor will allow you to withstand a lead storm while also giving you the mobility to escape it, if the hail ends up being made of heavier calibers than standard rifle rounds. This armor has been reinforced with chainmail to fill its gaps.", "volume": "8500 ml", "weight": "9000 g", "armor": [ @@ -786,7 +786,7 @@ "copy-from": "combat_exoskeleton_armor_leg_heavy", "type": "ARMOR", "name": { "str": "reinforced medium combat exoskeleton reinforced leg armor" }, - "description": "This 2mm thick exoskeleton armor was designed when the testing of heavier versions concluded that mobility is actually very important on the battlefield, especially when you can still brush off anything short of a rifle round. This armor has been reinforced with chainmail to fill its gaps.", + "description": "This 4mm thick exoskeleton armor will allow you to withstand a lead storm while also giving you the mobility to escape it, if the hail ends up being made of heavier calibers than standard rifle rounds. This armor has been reinforced with chainmail to fill its gaps.", "volume": "8800 ml", "weight": "9400 g", "armor": [ @@ -833,7 +833,7 @@ "copy-from": "combat_exoskeleton_armor_head_heavy", "type": "ARMOR", "name": { "str": "reinforced light combat exoskeleton head armor" }, - "description": "This 2mm thick exoskeleton armor was designed when the testing of heavier versions concluded that mobility is actually very important on the battlefield, especially when you can still brush off anything short of a rifle round. This armor has been reinforced with chainmail to fill its gaps.", + "description": "This 2mm thick exoskeleton armor was designed when the testing of heavier versions concluded that mobility is actually the most important attribute on the battlefield, especially when you can still brush off small caliber rounds. This armor has been reinforced with chainmail to fill its gaps.", "volume": "2200 ml", "weight": "2500 g", "armor": [ @@ -875,7 +875,7 @@ "copy-from": "combat_exoskeleton_armor_torso_heavy", "type": "ARMOR", "name": { "str": "reinforced light combat exoskeleton torso armor" }, - "description": "This 2mm thick exoskeleton armor was designed when the testing of heavier versions concluded that mobility is actually very important on the battlefield, especially when you can still brush off anything short of a rifle round. This armor has been reinforced with chainmail to fill its gaps.", + "description": "This 2mm thick exoskeleton armor was designed when the testing of heavier versions concluded that mobility is actually the most important attribute on the battlefield, especially when you can still brush off small caliber rounds. This armor has been reinforced with chainmail to fill its gaps.", "volume": "7900 ml", "weight": "9000 g", "armor": [ @@ -899,7 +899,7 @@ "copy-from": "combat_exoskeleton_armor_arm_heavy", "type": "ARMOR", "name": { "str": "reinforced light combat exoskeleton arm armor" }, - "description": "This 2mm thick exoskeleton armor was designed when the testing of heavier versions concluded that mobility is actually very important on the battlefield, especially when you can still brush off anything short of a rifle round. This armor has been reinforced with chainmail to fill its gaps.", + "description": "This 2mm thick exoskeleton armor was designed when the testing of heavier versions concluded that mobility is actually the most important attribute on the battlefield, especially when you can still brush off small caliber rounds. This armor has been reinforced with chainmail to fill its gaps.", "volume": "6400 ml", "weight": "7300 g", "armor": [ @@ -950,7 +950,7 @@ "copy-from": "combat_exoskeleton_armor_leg_heavy", "type": "ARMOR", "name": { "str": "reinforced light combat exoskeleton reinforced leg armor" }, - "description": "This 2mm thick exoskeleton armor was designed when the testing of heavier versions concluded that mobility is actually very important on the battlefield, especially when you can still brush off anything short of a rifle round. This armor has been reinforced with chainmail to fill its gaps.", + "description": "This 2mm thick exoskeleton armor was designed when the testing of heavier versions concluded that mobility is actually the most important attribute on the battlefield, especially when you can still brush off small caliber rounds. This armor has been reinforced with chainmail to fill its gaps.", "volume": "6600 ml", "weight": "7500 g", "armor": [ From e723845287293216225aa159e7182402c897ffab Mon Sep 17 00:00:00 2001 From: BalthazarArgall Date: Fri, 12 Apr 2024 16:43:35 +0200 Subject: [PATCH 72/73] anti-material typo --- .../items/armor/combat_exoskeleton_armor.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/data/json/items/armor/combat_exoskeleton_armor.json b/data/json/items/armor/combat_exoskeleton_armor.json index ed2057fd68f93..58c49e66417ae 100644 --- a/data/json/items/armor/combat_exoskeleton_armor.json +++ b/data/json/items/armor/combat_exoskeleton_armor.json @@ -4,7 +4,7 @@ "type": "ARMOR", "category": "armor", "name": { "str": "heavy combat exoskeleton head armor" }, - "description": "Put the tank in tank suit with this 6mm thick exoskeleton armor, it even feels like wearing a real tank, you should stay wary of antimaterial rounds though.", + "description": "Put the tank in tank suit with this 6mm thick exoskeleton armor, it even feels like wearing a real tank, you should stay wary of anti-material rounds though.", "symbol": "[", "price": 2000000, "price_postapoc": 10000, @@ -62,7 +62,7 @@ "type": "ARMOR", "category": "armor", "name": { "str": "heavy combat exoskeleton torso armor" }, - "description": "Put the tank in tank suit with this 6mm thick exoskeleton armor, it even feels like wearing a real tank, you should stay wary of antimaterial rounds though.", + "description": "Put the tank in tank suit with this 6mm thick exoskeleton armor, it even feels like wearing a real tank, you should stay wary of anti-material rounds though.", "symbol": "[", "price": 2000000, "price_postapoc": 10000, @@ -90,7 +90,7 @@ "type": "ARMOR", "category": "armor", "name": { "str": "heavy combat exoskeleton arm armor" }, - "description": "Put the tank in tank suit with this 6mm thick exoskeleton armor, it even feels like wearing a real tank, you should stay wary of antimaterial rounds though.", + "description": "Put the tank in tank suit with this 6mm thick exoskeleton armor, it even feels like wearing a real tank, you should stay wary of anti-material rounds though.", "symbol": "[", "price": 2000000, "price_postapoc": 10000, @@ -142,7 +142,7 @@ "type": "ARMOR", "category": "armor", "name": { "str": "heavy combat exoskeleton leg armor" }, - "description": "Put the tank in tank suit with this 6mm thick exoskeleton armor, it even feels like wearing a real tank, you should stay wary of antimaterial rounds though.", + "description": "Put the tank in tank suit with this 6mm thick exoskeleton armor, it even feels like wearing a real tank, you should stay wary of anti-material rounds though.", "symbol": "[", "price": 2000000, "price_postapoc": 10000, @@ -505,7 +505,7 @@ "copy-from": "combat_exoskeleton_armor_head_heavy", "type": "ARMOR", "name": { "str": "reinforced heavy combat exoskeleton head armor" }, - "description": "Put the tank in tank suit with this 6mm thick exoskeleton armor, it even feels like wearing a real tank, you should stay wary of antimaterial rounds though. This armor has been reinforced with chainmail to fill its gaps.", + "description": "Put the tank in tank suit with this 6mm thick exoskeleton armor, it even feels like wearing a real tank, you should stay wary of anti-material rounds though. This armor has been reinforced with chainmail to fill its gaps.", "volume": "3600 ml", "weight": "3900 g", "armor": [ @@ -547,7 +547,7 @@ "copy-from": "combat_exoskeleton_armor_torso_heavy", "type": "ARMOR", "name": { "str": "reinforced heavy combat exoskeleton torso armor" }, - "description": "Put the tank in tank suit with this 6mm thick exoskeleton armor, it even feels like wearing a real tank, you should stay wary of antimaterial rounds though. This armor has been reinforced with chainmail to fill its gaps.", + "description": "Put the tank in tank suit with this 6mm thick exoskeleton armor, it even feels like wearing a real tank, you should stay wary of anti-material rounds though. This armor has been reinforced with chainmail to fill its gaps.", "volume": "13200 ml", "weight": "14000 g", "armor": [ @@ -571,7 +571,7 @@ "copy-from": "combat_exoskeleton_armor_arm_heavy", "type": "ARMOR", "name": { "str": "reinforced heavy combat exoskeleton arm armor" }, - "description": "Put the tank in tank suit with this 6mm thick exoskeleton armor, it even feels like wearing a real tank, you should stay wary of antimaterial rounds though. This armor has been reinforced with chainmail to fill its gaps.", + "description": "Put the tank in tank suit with this 6mm thick exoskeleton armor, it even feels like wearing a real tank, you should stay wary of anti-material rounds though. This armor has been reinforced with chainmail to fill its gaps.", "volume": "10700 ml", "weight": "11300 g", "armor": [ @@ -622,7 +622,7 @@ "copy-from": "combat_exoskeleton_armor_leg_heavy", "type": "ARMOR", "name": { "str": "reinforced heavy combat exoskeleton leg armor" }, - "description": "Put the tank in tank suit with this 6mm thick exoskeleton armor, it even feels like wearing a real tank, you should stay wary of antimaterial rounds though. This armor has been reinforced with chainmail to fill its gaps.", + "description": "Put the tank in tank suit with this 6mm thick exoskeleton armor, it even feels like wearing a real tank, you should stay wary of anti-material rounds though. This armor has been reinforced with chainmail to fill its gaps.", "volume": "11000 ml", "weight": "11700 g", "armor": [ From 5cc74e32e9bcd89aff886b4a681adbcdcf73ae58 Mon Sep 17 00:00:00 2001 From: BalthazarArgall Date: Mon, 15 Apr 2024 19:22:49 +0200 Subject: [PATCH 73/73] Reload test