[
  {
    "type": "GENERIC",
    "//": "pseudo item, used as fuel type for engines that are animal-powered",
    "id": "animal",
    "symbol": "?",
    "color": "white",
    "name": { "str_sp": "animal" },
    "description": "seeing this is a bug",
    "stackable": true,
    "price": 0,
    "volume": "1 L",
    "material": [ "animal" ],
    "flags": [ "PSEUDO", "PERPETUAL" ]
  },
  {
    "type": "GENERIC",
    "//": "pseudo item, only used for crafting as a required tool",
    "id": "fire",
    "symbol": "$",
    "color": "red",
    "name": { "str_sp": "nearby fire" },
    "description": "seeing this is a bug",
    "price": 0,
    "volume": "1 ml",
    "flags": [ "PSEUDO" ]
  },
  {
    "type": "GENERIC",
    "id": "cottonwood_tree_boll",
    "name": { "str": "cottonwood tree boll" },
    "category": "other",
    "weight": "5g",
    "color": "white",
    "symbol": "%",
    "description": "A fluffy white seed.  While it looks like the common cotton, it is too weak and short to be turned into clothing.",
    "price": 1,
    "price_postapoc": 1,
    "material": [ "wood" ],
    "volume": "250 ml"
  },
  {
    "type": "GENERIC",
    "//": "pseudo item, used as fuel type for engines that are human-powered",
    "id": "muscle",
    "symbol": "?",
    "color": "white",
    "name": { "str_sp": "muscle" },
    "description": "seeing this is a bug",
    "stackable": true,
    "price": 0,
    "volume": "1 L",
    "material": [ "muscle" ],
    "flags": [ "PSEUDO", "PERPETUAL" ]
  },
  {
    "type": "GENERIC",
    "//": "pseudo item, used as fuel type for engines that are wind-powered",
    "id": "wind",
    "symbol": "?",
    "color": "white",
    "name": { "str_sp": "wind" },
    "description": "seeing this is a bug",
    "stackable": true,
    "price": 0,
    "volume": "1 L",
    "material": [ "wind" ],
    "flags": [ "PSEUDO", "PERPETUAL" ]
  },
  {
    "type": "GENERIC",
    "//": "pseudo item, used as fuel type for CBMs that are sun-powered",
    "id": "sunlight",
    "symbol": "?",
    "color": "white",
    "name": { "str_sp": "sun light" },
    "description": "seeing this is a bug",
    "stackable": true,
    "price": 0,
    "volume": "1 L",
    "material": [ "sunlight" ],
    "flags": [ "PSEUDO", "PERPETUAL" ]
  },
  {
    "type": "GENERIC",
    "//": "pseudo item, used as fuel type for CBMs that are metabolism-powered",
    "id": "metabolism",
    "symbol": "?",
    "color": "white",
    "name": { "str": "metabolism" },
    "description": "seeing this is a bug",
    "stackable": true,
    "price": 0,
    "volume": "1 L",
    "material": [ "metabolism" ],
    "flags": [ "PSEUDO", "PERPETUAL" ]
  },
  {
    "type": "GENERIC",
    "//": "pseudo item, only used for as a required tool, checked for in player::amount_of",
    "id": "apparatus",
    "symbol": "$",
    "color": "red",
    "name": { "str_sp": "a smoking device and a source of flame" },
    "description": "seeing this is a bug",
    "price": 0,
    "volume": "0 ml",
    "flags": [ "PSEUDO" ]
  },
  {
    "type": "GENERIC",
    "id": "null",
    "symbol": "$",
    "color": "red",
    "name": { "str_sp": "none" },
    "description": "seeing this is a bug",
    "price": 0,
    "volume": "0 ml",
    "flags": [ "PSEUDO" ],
    "//": "Fist is internally represented as 'wielding a none as a weapon'"
  },
  {
    "type": "GENERIC",
    "id": "file",
    "name": { "str": "file" },
    "category": "books",
    "description": "Several documents containing all kinds of information, customer data, and charts, kept together in a manila folder.  Pretty useless now.",
    "weight": "15 g",
    "to_hit": -3,
    "color": "white",
    "symbol": ",",
    "material": [ "paper" ],
    "volume": "50 ml",
    "flags": [ "TRADER_AVOID", "TINDER" ]
  },
  {
    "type": "GENERIC",
    "id": "log_immersion27",
    "copy-from": "file",
    "name": { "str": "INCIDENT REPORT: IMMERSION-27A" },
    "description": "A white piece of paper, with the logo of XEDRA printed on its upper left corner.  It seems to be an internal report of some kind.",
    "snippet_category": "log_immersion27"
  },
  {
    "type": "GENERIC",
    "id": "report_t_substrate",
    "copy-from": "log_immersion27",
    "name": { "str": "MATERIAL: T-SUBSTRATE" },
    "snippet_category": "t-substrate"
  },
  {
    "type": "GENERIC",
    "id": "HAADF_t_substrate",
    "copy-from": "log_immersion27",
    "name": { "str": "HAADF MICROGRAPH: T-SUBSTRATE" },
    "snippet_category": "HAADF_t-substrate"
  },
  {
    "type": "GENERIC",
    "id": "monitoring_equipment_doc",
    "copy-from": "log_immersion27",
    "name": { "str": "XEDRA document" },
    "snippet_category": "monitoring_equipment"
  },
  {
    "type": "GENERIC",
    "id": "artifact_scp_doc",
    "copy-from": "log_immersion27",
    "name": { "str": "ANOMALOUS ARTIFACT REPORT" },
    "snippet_category": "artifact_scp"
  },
  {
    "type": "GENERIC",
    "id": "melchior_science_doc",
    "copy-from": "log_immersion27",
    "name": { "str": "MELCHIOR report" },
    "snippet_category": "melchior_science_doc"
  },
  {
    "type": "GENERIC",
    "id": "msu14_password",
    "name": { "str": "annotated paper scrap" },
    "category": "books",
    "description": "A small scrap of paper with two long character sequences scribbled on it.",
    "weight": "1 g",
    "to_hit": -3,
    "color": "white",
    "symbol": ",",
    "material": [ "paper" ],
    "volume": "4 ml",
    "flags": [ "TRADER_AVOID" ]
  },
  {
    "type": "GENERIC",
    "id": "small_printout_portal_storm_data",
    "name": { "str": "short NRE printout" },
    "category": "books",
    "description": "A sequence of overlapping numbers plotted in thermal paper, at times so densely-packed that they disappear into thick blots of oxide-colored ink.  A few number sequences repeat in an almost orderly fashion, but you can't tell whether that means anything.",
    "weight": "1 g",
    "to_hit": -3,
    "color": "white",
    "symbol": ",",
    "material": [ "paper" ],
    "volume": "4 ml",
    "flags": [ "TRADER_AVOID" ]
  },
  {
    "type": "GENERIC",
    "id": "medium_printout_portal_storm_data",
    "copy-from": "small_printout_portal_storm_data",
    "name": { "str": "NRE printout" },
    "description": "A long sequence of overlapping numbers plotted in thermal paper, at times so densely-packed that they disappear into thick blots of oxide-colored ink.  The blots and numbers are arranged in a strangely pleasing pattern.",
    "weight": "3 g",
    "volume": "8 ml"
  },
  {
    "type": "GENERIC",
    "id": "large_printout_portal_storm_data",
    "copy-from": "small_printout_portal_storm_data",
    "name": { "str": "long NRE printout" },
    "description": "A very, very long sequence of overlapping numbers plotted in thermal paper.  It is almost 15 feet long.",
    "weight": "10 g",
    "volume": "50 ml"
  },
  {
    "type": "GENERIC",
    "id": "nre_anomaly_printout_data",
    "copy-from": "small_printout_portal_storm_data",
    "name": { "str": "NRE anomaly printout" },
    "description": "A long sequence of overlapping numbers plotted in thermal paper, at times so densely-packed that they disappear into thick blots of oxide-colored ink.  The printed values increased along rhythmical waves, but the number 5 is always skipped.",
    "weight": "10 g",
    "volume": "50 ml"
  },
  {
    "type": "GENERIC",
    "id": "fp_loyalty_card",
    "category": "other",
    "symbol": "-",
    "color": "pink",
    "name": { "str": "Foodplace loyalty card" },
    "description": "A bright pink loyalty card, all the points are stamped.  This would definitely prove your fidelity to Foodplace, if that still meant anything…",
    "price": 0,
    "price_postapoc": 0,
    "material": [ "paper" ],
    "flags": [ "TRADER_AVOID", "CREDIT_CARD_SHAPED", "TINDER" ],
    "weight": "3 g",
    "volume": "5 ml"
  },
  {
    "type": "GENERIC",
    "id": "twig",
    "name": { "str": "twig" },
    "looks_like": "stick",
    "description": "A small, slender branch.  Makes passable firewood but is not useful for much else.",
    "weight": "40 g",
    "color": "brown",
    "symbol": "/",
    "material": [ "wood" ],
    "volume": "100 ml",
    "flags": [ "TRADER_AVOID", "FIREWOOD", "TINDER" ]
  },
  {
    "type": "GENERIC",
    "id": "leaves",
    "name": { "str": "handful of leaves", "str_pl": "handfuls of leaves" },
    "looks_like": "withered",
    "description": "Some ordinary, mostly dry leaves.  They have very few uses and are thus (almost) only good for burning.",
    "weight": "30 g",
    "color": "green",
    "symbol": ",",
    "material": [ "veggy" ],
    "volume": "100 ml",
    "flags": [ "TRADER_AVOID", "FIREWOOD", "TINDER" ]
  },
  {
    "type": "GENERIC",
    "id": "withered",
    "symbol": "%",
    "color": "light_gray",
    "name": { "str": "withered plant" },
    "description": "A dead plant.  Good for starting fires or making crude tailoring crafts.",
    "material": [ "dry_plant" ],
    "weight": "20 g",
    "volume": "250 ml",
    "to_hit": -2,
    "flags": [ "TRADER_AVOID", "TINDER" ]
  },
  {
    "type": "GENERIC",
    "id": "superglue",
    "category": "spare_parts",
    "symbol": ",",
    "color": "white",
    "name": { "str_sp": "superglue" },
    "description": "A tube of strong glue.  Used in many crafting recipes.",
    "price": 1800,
    "price_postapoc": 100,
    "material": [ "plastic" ],
    "weight": "8 g",
    "volume": "10 ml",
    "to_hit": -2,
    "flags": [ "UNRECOVERABLE" ]
  },
  {
    "type": "GENERIC",
    "id": "rubber_cement",
    "category": "spare_parts",
    "symbol": ",",
    "color": "white",
    "name": { "str_sp": "rubber cement" },
    "looks_like": "superglue",
    "description": "A tin of adhesive typically used to glue rubber together.  It forms a less rigid bond than typical superglue, making it ideal for projects requiring flexibility.  Typically smelly and toxic.",
    "price": 1800,
    "price_postapoc": 80,
    "material": [ "plastic" ],
    "weight": "52 g",
    "volume": "250 ml",
    "to_hit": -2,
    "flags": [ "UNRECOVERABLE" ]
  },
  {
    "type": "GENERIC",
    "id": "bone_glue",
    "symbol": ",",
    "category": "spare_parts",
    "color": "brown",
    "name": { "str": "bone glue" },
    "description": "Glue made from boiling animal bones.  The adhesive isn't strong enough for heavy-duty usages, but it can be used as a varnish or holding together small items.",
    "price": 1800,
    "price_postapoc": 50,
    "material": [ "bone" ],
    "weight": "45 g",
    "volume": "150 ml",
    "to_hit": -2,
    "flags": [ "UNRECOVERABLE", "NO_SALVAGE" ]
  },
  {
    "type": "GENERIC",
    "id": "fertilizer",
    "symbol": "*",
    "color": "green",
    "name": { "str": "fertilizer" },
    "description": "A token representing fertilization of a plant.",
    "material": [ "veggy" ],
    "flags": [ "ZERO_WEIGHT" ]
  },
  {
    "type": "GENERIC",
    "id": "chain",
    "category": "spare_parts",
    "name": { "str": "steel chain" },
    "description": "A heavy steel chain.  Useful as a weapon, or for crafting.  It has a chance to wrap around your target, allowing for a bonus unarmed attack.",
    "weight": "3628 g",
    "color": "dark_gray",
    "symbol": "/",
    "material": [ "steel" ],
    "techniques": [ "WRAP" ],
    "volume": "1 L",
    "to_hit": -2,
    "price": 8000,
    "qualities": [ [ "ROPE", 2 ] ],
    "price_postapoc": 50,
    "melee_damage": { "bash": 26 }
  },
  {
    "type": "GENERIC",
    "id": "chitin_piece",
    "category": "spare_parts",
    "symbol": ",",
    "color": "light_gray",
    "name": { "str": "chunk of chitin", "str_pl": "chunks of chitin" },
    "snippet_category": "chitin_desc",
    "description": "A piece of an insect's exoskeleton.  It is light and very durable.",
    "price": 0,
    "price_postapoc": 25,
    "material": [ "chitin" ],
    "flags": [ "NO_SALVAGE" ],
    "milling": { "into": "meal_chitin_piece", "conversion_rate": 4 },
    "weight": "89 g",
    "volume": "250 ml",
    "to_hit": -2,
    "melee_damage": { "bash": 1 }
  },
  {
    "type": "GENERIC",
    "id": "endochitin",
    "category": "spare_parts",
    "symbol": ",",
    "color": "light_gray",
    "name": { "str": "strand of endochitin", "str_pl": "strands of endochitin" },
    "snippet_category": "endochitin_desc",
    "description": "A piece of an insect's endoskeleton.",
    "price": 0,
    "material": [ "chitin" ],
    "flags": [ "NO_SALVAGE" ],
    "milling": { "into": "meal_chitin_piece", "conversion_rate": 4 },
    "weight": "89 g",
    "volume": "300 ml",
    "melee_damage": { "bash": 1 }
  },
  {
    "type": "COMESTIBLE",
    "id": "mutant_bug_hydrogen_sacs",
    "comestible_type": "FOOD",
    "symbol": "o",
    "color": "light_gray",
    "name": { "str": "cluster of gas sacs", "str_pl": "clusters of gas sacs" },
    "description": "A cluster of membranous bubbles, each about the size of a grape, retrieved from inside a mutant insect.  They float like tiny helium balloons - perhaps they are full of a lighter-than-air gas.",
    "price": 0,
    "material": [ "flesh" ],
    "spoils_in": "8 hours",
    "flags": [ "NO_SALVAGE" ],
    "weight": "50 g",
    "volume": "250 ml",
    "to_hit": -4,
    "fun": -25
  },
  {
    "type": "GENERIC",
    "id": "ballast",
    "category": "spare_parts",
    "symbol": "o",
    "color": "light_gray",
    "name": { "str": "ballast organs", "str_pl": "clusters of ballast organs" },
    "description": "A cluster of hydrostatic organs, each about the size of a baseball, retrieved from inside a kraken mutant.  Some of them seem to be lighter than air, and some seem to weigh as much as air.",
    "price": 0,
    "material": [ "flesh" ],
    "flags": [ "NO_SALVAGE" ],
    "weight": "50 g",
    "volume": "250 ml",
    "to_hit": -4
  },
  {
    "type": "GENERIC",
    "id": "acidchitin_piece",
    "copy-from": "chitin_piece",
    "name": { "str": "chunk of biosilicified chitin", "str_pl": "chunks of biosilicified chitin" },
    "description": "A lump of exoskeleton that has undergone biosilicification.  It is acid-resistant but rather brittle.",
    "material": [ "acidchitin" ],
    "flags": [ "NO_SALVAGE" ],
    "proportional": { "weight": 1.25 },
    "relative": { "melee_damage": { "bash": 2 } }
  },
  {
    "id": "bundle_rag",
    "type": "GENERIC",
    "category": "spare_parts",
    "name": { "str": "bundle of cotton patches", "str_pl": "bundles of cotton patches" },
    "description": "A hundred cotton patches, bundled tightly together for storage.  Disassemble to unpack.",
    "weight": "500 g",
    "volume": "500 ml",
    "price": 20000,
    "price_postapoc": 200,
    "material": [ "cotton" ],
    "symbol": ",",
    "color": "white"
  },
  {
    "id": "bundle_cotton",
    "type": "GENERIC",
    "category": "spare_parts",
    "name": { "str": "bundle of cotton sheets", "str_pl": "bundles of cotton sheets" },
    "description": "Twenty-five cotton sheets, bundled tightly together for storage.  Disassemble to unpack.",
    "weight": "950 g",
    "volume": "1000 ml",
    "price": 20000,
    "price_postapoc": 200,
    "material": [ "cotton" ],
    "symbol": ",",
    "color": "white"
  },
  {
    "id": "bundle_leather",
    "type": "GENERIC",
    "category": "spare_parts",
    "name": { "str": "bundle of leather", "str_pl": "bundles of leather" },
    "description": "Fifty leather patches, bundled tightly together for storage.  Disassemble to unpack.",
    "weight": "1250 g",
    "volume": "1150 ml",
    "price": 200000,
    "price_postapoc": 2500,
    "material": [ "leather" ],
    "symbol": ",",
    "color": "brown"
  },
  {
    "id": "bundle_wool",
    "type": "GENERIC",
    "category": "spare_parts",
    "name": { "str": "bundle of felt", "str_pl": "bundles of felt" },
    "description": "A hundred felt patches, bundled tightly together for storage.  Disassemble to unpack.",
    "weight": "300 g",
    "volume": "1 L",
    "price": 200000,
    "price_postapoc": 1000,
    "material": [ "wool" ],
    "symbol": ",",
    "color": "white"
  },
  {
    "id": "bundle_nylon",
    "type": "GENERIC",
    "category": "spare_parts",
    "name": { "str": "bundle of synthetic fabric", "str_pl": "bundles of synthetic fabric" },
    "description": "Fifty synthetic fabric patches, bundled tightly together for storage.  Disassemble to unpack.",
    "//": "Weight is 50 x 5750mg per patch",
    "weight": "287500 mg",
    "//2": "Volume is 50 x 5ml per patch",
    "volume": "250ml",
    "price": 0,
    "price_postapoc": 500,
    "material": [ "nylon" ],
    "symbol": ",",
    "color": "white"
  },
  {
    "id": "bundle_plank",
    "type": "GENERIC",
    "category": "spare_parts",
    "name": { "str": "bundle of planks", "str_pl": "bundles of planks" },
    "description": "Ten construction planks securely tied together for easier transport.  Disassemble to untie them.",
    "//": "total volume is equal to 10 planks, assuming uniformity and tight stacking",
    "volume": "41300 ml",
    "weight": "24400 g",
    "longest_side": "122 cm",
    "price": 10000,
    "price_postapoc": 100,
    "material": [ "wood" ],
    "symbol": "H",
    "color": "brown"
  },
  {
    "id": "bundle_rebar",
    "type": "GENERIC",
    "category": "spare_parts",
    "name": { "str": "bundle of rebar", "str_pl": "bundles of rebar" },
    "description": "Ten rods of rebar securely tied together for easier transport.  Disassemble to untie them.",
    "//": "total volume is equal to 10 rebars, assuming uniformity and tight stacking",
    "volume": "1600 ml",
    "weight": "12500 g",
    "longest_side": "80 cm",
    "price": 75000,
    "price_postapoc": 250,
    "material": [ "steel" ],
    "symbol": "H",
    "color": "light_gray"
  },
  {
    "id": "bundle_pipe",
    "type": "GENERIC",
    "category": "spare_parts",
    "name": { "str": "bundle of pipes", "str_pl": "bundles of pipes" },
    "description": "Ten pipes securely tied together for easier transport.  Disassemble to untie them.",
    "//": "Total volume is equal to 10 pipes, assuming uniformity and tight stacking. Total weight is equal to 10 pipes + 2 short ropes, as per the crafting recipe.",
    "volume": "3700 ml",
    "weight": "6432 g",
    "longest_side": "60 cm",
    "price": "380 USD",
    "price_postapoc": 100,
    "material": [ "steel" ],
    "symbol": "H",
    "color": "dark_gray"
  },
  {
    "id": "bundle_copper_pipe",
    "type": "GENERIC",
    "category": "spare_parts",
    "name": { "str": "bundle of copper tubing", "str_pl": "bundles of copper tubing" },
    "description": "Ten copper pipes securely tied together for easier transport.  Disassemble to untie them.",
    "//": "total volume is equal to 10 pipes, assuming uniformity and tight stacking",
    "volume": "3700 ml",
    "weight": "3400 g",
    "longest_side": "60 cm",
    "price": 100,
    "price_postapoc": 100,
    "material": [ "copper" ],
    "symbol": "H",
    "color": "light_red"
  },
  {
    "id": "bundle_branch",
    "type": "GENERIC",
    "category": "spare_parts",
    "name": { "str": "bundle of sticks", "str_pl": "bundles of sticks" },
    "description": "Ten sticks securely tied together for easier transport.  Disassemble to untie them.",
    "//": "total volume is greater than 10 sticks; irregular dimensions leave air gaps",
    "volume": "30 L",
    "weight": "15 kg",
    "longest_side": "130 cm",
    "price": 0,
    "price_postapoc": 50,
    "material": [ "wood" ],
    "symbol": "H",
    "color": "brown"
  },
  {
    "id": "bundle_branch_long",
    "type": "GENERIC",
    "category": "spare_parts",
    "name": { "str": "bundle of long sticks", "str_pl": "bundles of long sticks" },
    "description": "Five long sticks securely tied together for easier transport.  Disassemble to untie them.",
    "//": "total volume is greater than 5 long sticks, since they are rough lumber and do not stack perfectly",
    "volume": "30 L",
    "weight": "15 kg",
    "longest_side": "260 cm",
    "price": 0,
    "price_postapoc": 50,
    "material": [ "wood" ],
    "symbol": "H",
    "color": "brown"
  },
  {
    "id": "bundle_javelin",
    "type": "GENERIC",
    "category": "other",
    "name": { "str": "bundle of javelins", "str_pl": "bundles of javelins" },
    "description": "Five wooden javelins securely tied together for easier transport.  Disassemble to untie them.",
    "//": "total volume is greater than 5 wooden javelins, since they are rough lumber and do not stack perfectly",
    "volume": "7 L",
    "weight": "3 kg",
    "longest_side": "140 cm",
    "price": 20000,
    "price_postapoc": 1250,
    "material": [ "wood" ],
    "symbol": "H",
    "color": "brown"
  },
  {
    "type": "GENERIC",
    "id": "sample_t_substrate",
    "category": "spare_parts",
    "symbol": ",",
    "color": "light_gray",
    "name": { "str": "t-substrate sample" },
    "description": "An acrylic cube cast around a small black crystal.  It's tepid to the touch.",
    "price": 0,
    "price_postapoc": 0,
    "material": [ "stone" ],
    "weight": "100 g",
    "volume": "250 ml",
    "to_hit": -3,
    "melee_damage": { "bash": 1 }
  },
  {
    "type": "GENERIC",
    "id": "biollante_bud",
    "symbol": ",",
    "color": "magenta",
    "name": { "str": "biollante bud" },
    "description": "An unopened biollante flower, brilliant purple in color.  It may still have its sap-producing organ intact.",
    "price": 0,
    "price_postapoc": 0,
    "material": [ "veggy" ],
    "weight": "60 g",
    "volume": "250 ml",
    "to_hit": -3
  },
  {
    "type": "GENERIC",
    "id": "canister_empty",
    "symbol": "*",
    "color": "light_gray",
    "name": { "str": "empty canister" },
    "category": "container",
    "description": "An empty canister, which may have once held tear gas or other substances.",
    "material": [ "steel" ],
    "weight": "40 g",
    "volume": "263 ml",
    "to_hit": -1,
    "qualities": [ [ "BOIL", 2 ], [ "CONTAIN", 1 ] ],
    "pocket_data": [
      {
        "pocket_type": "CONTAINER",
        "rigid": true,
        "watertight": true,
        "open_container": true,
        "max_contains_volume": "250 ml",
        "max_contains_weight": "1 kg",
        "sealed_data": { "spoil_multiplier": 0.0 }
      }
    ],
    "melee_damage": { "bash": 2 }
  },
  {
    "type": "GENERIC",
    "id": "petrified_eye",
    "symbol": "*",
    "color": "dark_gray",
    "name": { "str": "petrified eye" },
    "description": "A fist-sized eyeball with a cross-shaped pupil.  It seems to be made of stone, but doesn't look like it was carved.",
    "price": 200000,
    "price_postapoc": 1000,
    "material": [ "stone" ],
    "weight": "700 g",
    "volume": "250 ml",
    "to_hit": -1,
    "qualities": [ [ "HAMMER", 1 ] ],
    "melee_damage": { "bash": 6 }
  },
  {
    "type": "GENERIC",
    "id": "spiral_stone",
    "symbol": "*",
    "color": "light_gray",
    "name": { "str": "spiral stone" },
    "category": "artifacts",
    "description": "A rock the size of your fist.  It is covered with intricate spirals; it is impossible to tell whether they are carved, naturally formed, or some kind of fossil.",
    "price": 20000,
    "price_postapoc": 1000,
    "material": [ "stone" ],
    "weight": "493 g",
    "volume": "250 ml",
    "to_hit": -1,
    "qualities": [ [ "HAMMER", 1 ] ],
    "melee_damage": { "bash": 6 }
  },
  {
    "type": "TOOL",
    "id": "usb_drive",
    "symbol": ",",
    "color": "white",
    "name": { "str": "USB drive" },
    "description": "A USB thumb drive.  Useful for holding software.",
    "price": "12 USD",
    "price_postapoc": 10,
    "material": [ "plastic", "aluminum" ],
    "weight": "4536 mg",
    "volume": "4 ml",
    "longest_side": "5 cm",
    "pocket_data": [
      { "pocket_type": "SOFTWARE", "max_contains_volume": "1 L", "max_contains_weight": "1 kg" },
      {
        "pocket_type": "EBOOK",
        "rigid": true,
        "max_contains_volume": "1 ml",
        "max_contains_weight": "1 g",
        "weight_multiplier": 0.0
      }
    ],
    "to_hit": { "grip": "bad", "length": "hand", "surface": "any", "balance": "clumsy" },
    "//": "Based on https://www.amazon.com/dp/B015CH1PJU"
  },
  {
    "type": "TOOL",
    "id": "usb_drive_nano",
    "symbol": ",",
    "color": "white",
    "name": { "str": "secured USB drive" },
    "description": "A USB thumb drive.  Useful for holding software.  This one seems like it could get run over by a truck and be fine.",
    "price": 10000,
    "price_postapoc": 10,
    "material": [ "steel", "plastic" ],
    "weight": "55 g",
    "volume": "45 ml",
    "to_hit": { "grip": "bad", "length": "hand", "surface": "any", "balance": "clumsy" }
  },
  {
    "type": "GENERIC",
    "id": "train_data",
    "copy-from": "usb_drive_nano",
    "name": { "str_sp": "laboratory shipping records" },
    "description": "Some type of advanced data storage device, filled with logistical data on subterranean train routes and schedules.",
    "price": 10000,
    "price_postapoc": 0
  },
  {
    "id": "robofac_hardcase",
    "type": "GENERIC",
    "name": { "str": "DARPA hard case" },
    "description": "A heavy and very durable protective case made of steel and thick plastic, locked with a six-dial combination.  A sticker with the logo of DARPA is attached to the front, but looking at the surface, you can see that another marking - formerly stenciled into the material - was recently and hastily destroyed.",
    "weight": "1202 g",
    "volume": "7958 ml",
    "longest_side": "30 cm",
    "price": 0,
    "to_hit": { "grip": "solid", "length": "short", "surface": "any", "balance": "uneven" },
    "material": [ "steel", "thermo_resin" ],
    "symbol": "?",
    "looks_like": "briefcase",
    "color": "light_gray",
    "flags": [ "DURABLE_MELEE", "TRADER_AVOID" ],
    "melee_damage": { "bash": 4 }
  },
  {
    "type": "GENERIC",
    "id": "fema_data",
    "symbol": ",",
    "color": "white",
    "name": { "str_sp": "FEMA data" },
    "description": "Evacuation plans, disaster risk projections, personnel lists, and last-minute communications from just before the end, all scrubbed from FEMA servers and stored in an external HDD.",
    "price": 10000,
    "price_postapoc": 50,
    "material": [ "plastic" ],
    "weight": "30 g",
    "volume": "250 ml",
    "to_hit": -3
  },
  {
    "type": "GENERIC",
    "id": "godcotrader_accounting_records_dirty",
    "//": "Quest item, should not spawn naturally.",
    "name": { "str_sp": "accounting records" },
    "description": "A stack of various forms and papers with credits and debits listed all over them, detailing transactions and purchases.  Reading over them, all of the balances are mismatched, and a significant amount of money is missing.",
    "price": 0,
    "price_postapoc": 0,
    "weight": "1 g",
    "volume": "1 ml",
    "to_hit": -3,
    "color": "white",
    "symbol": "r",
    "material": [ "paper" ]
  },
  {
    "type": "GENERIC",
    "id": "godcotrader_accounting_records_clean",
    "//": "Quest item, should not spawn naturally.",
    "name": { "str_sp": "accounting records" },
    "description": "A stack of various forms and papers with credits and debits listed all over them, detailing transactions and purchases.  Reading over them, everything is in good order, whoever did these is skilled at their job.",
    "price": 0,
    "price_postapoc": 0,
    "weight": "1 g",
    "volume": "1 ml",
    "to_hit": -3,
    "color": "white",
    "symbol": "r",
    "material": [ "paper" ]
  },
  {
    "type": "GENERIC",
    "id": "candlestick",
    "symbol": "/",
    "color": "yellow",
    "name": { "str": "candlestick" },
    "description": "A brass candlestick with a gold finish.",
    "category": "other",
    "price": "5 USD",
    "price_postapoc": 10,
    "material": [ "brass" ],
    "weight": "180 g",
    "volume": "100 ml",
    "longest_side": "28 cm",
    "to_hit": { "grip": "solid", "length": "hand", "surface": "any", "balance": "neutral" },
    "melee_damage": { "bash": 3 },
    "pocket_data": [
      {
        "pocket_type": "CONTAINER",
        "holster": true,
        "//1": "It's specifically not rigid because volume of candlestick and candle should be additive.",
        "max_contains_weight": "500 g",
        "max_contains_volume": "550 ml",
        "item_restriction": [ "candle", "candle_lit" ],
        "transparent": true
      }
    ],
    "//2": "Based on the medium variation from https://www.amazon.com/dp/B09TNCS7HL"
  },
  {
    "type": "GENERIC",
    "id": "chalice",
    "name": { "str": "gold chalice" },
    "description": "A gold chalice.",
    "category": "other",
    "material": [ "gold" ],
    "weight": "200 g",
    "volume": "330 ml",
    "longest_side": "12 cm",
    "price": "19 USD",
    "price_postapoc": 10,
    "symbol": "/",
    "color": "yellow",
    "//": "Based on: https://www.amazon.com/Goblets-Chalices-Glasses-Hand-Made-Decoration/dp/B09FDW2RX2/ref=sr_1_4?crid=1N9BI6VTIV08Z&keywords=gold%2Bchalice&qid=1680851190&sprefix=gold%2Bchalic%2Caps%2C305&sr=8-4&th=1"
  },
  {
    "type": "GENERIC",
    "id": "blade",
    "symbol": "/",
    "color": "light_gray",
    "name": { "str": "blade" },
    "description": "A large, relatively sharp blade.  Could be used to make bladed weaponry, or attached to a car.",
    "category": "spare_parts",
    "price": 28000,
    "price_postapoc": 50,
    "material": [ "steel" ],
    "weight": "553 g",
    "volume": "750 ml",
    "to_hit": -1,
    "qualities": [ [ "BUTCHER", -38 ] ],
    "flags": [ "ALLOWS_BODY_BLOCK", "SHEATH_KNIFE" ],
    "melee_damage": { "bash": 6, "cut": 8 },
    "weapon_category": [ "SHIVS" ]
  },
  {
    "type": "GENERIC",
    "id": "blade_scythe",
    "symbol": "(",
    "color": "light_gray",
    "name": { "str": "scythe blade" },
    "description": "A large, curved blade.  Could be used to assemble a scythe, or make an improvised polearm.",
    "category": "spare_parts",
    "price": 28000,
    "price_postapoc": 50,
    "material": [ "steel" ],
    "weight": "1000 g",
    "volume": "1500 ml",
    "to_hit": -2,
    "qualities": [ [ "BUTCHER", -38 ] ],
    "melee_damage": { "bash": 6, "cut": 8 }
  },
  {
    "type": "GENERIC",
    "id": "circsaw_blade",
    "symbol": "/",
    "color": "light_gray",
    "name": { "str": "circular sawblade" },
    "description": "An 8\" circular sawblade.  You could make a saw with it, or throw it.  Wielding it without sturdy gloves is a bad idea.",
    "category": "spare_parts",
    "price": 20000,
    "price_postapoc": 50,
    "material": [ "steel" ],
    "weight": "349 g",
    "volume": "250 ml",
    "longest_side": "204 mm",
    "flags": [ "HURT_WHEN_WIELDED" ],
    "to_hit": -4,
    "melee_damage": { "cut": 14 }
  },
  {
    "type": "GENERIC",
    "id": "tree_spile",
    "symbol": ".",
    "color": "light_gray",
    "name": { "str": "tree spile" },
    "description": "A hollow metal cylinder which is inserted in a tree crust in order to slowly harvest its sap.  Can be used on a maple tree between late winter and early spring to harvest maple sap.",
    "category": "tools",
    "price": 5,
    "price_postapoc": 10,
    "material": [ "steel" ],
    "weight": "11 g",
    "volume": "50 ml",
    "qualities": [ [ "TREE_TAP", 1 ] ]
  },
  {
    "type": "GENERIC",
    "id": "makeshift_tree_spile",
    "copy-from": "tree_spile",
    "color": "brown",
    "name": { "str": "makeshift tree spile" },
    "description": "A carved piece of wood which is inserted in a tree crust in order to slowly harvest its sap.  Can be used on a maple tree in between late winter and early spring to harvest maple sap.",
    "material": [ "wood" ],
    "qualities": [ [ "TREE_TAP", 1 ] ]
  },
  {
    "type": "GENERIC",
    "id": "egg_void_spider",
    "name": { "str": "luminescent bead" },
    "weight": "55 g",
    "color": "white",
    "symbol": "o",
    "description": "Strange lights perpetually glimmer within the sharpened internals of this glass globule.",
    "price": 44,
    "price_postapoc": 50,
    "material": [ "glass" ],
    "flags": [ "LIGHT_8" ],
    "volume": "50 ml"
  },
  {
    "type": "GENERIC",
    "id": "tattered_garment",
    "name": { "str_sp": "tattered garments" },
    "category": "other",
    "description": "Time and the elements have reduced them to a mound of filthy ribbons.",
    "weight": "1175 g",
    "volume": "3 L",
    "price": 0,
    "price_postapoc": 0,
    "to_hit": -1,
    "material": [ "cotton" ],
    "symbol": "[",
    "looks_like": "cotton_patchwork",
    "color": "brown"
  },
  {
    "type": "GENERIC",
    "id": "wire",
    "symbol": ";",
    "color": "light_gray",
    "name": { "str": "wire" },
    "description": "A length of thin, relatively stiff steel wire.  Like the sort you find in chain link fences.",
    "category": "spare_parts",
    "price": 20000,
    "price_postapoc": 10,
    "material": [ "steel" ],
    "weight": "151 g",
    "volume": "100 ml",
    "to_hit": -2
  },
  {
    "type": "GENERIC",
    "id": "lc_wire",
    "symbol": ";",
    "color": "light_gray",
    "name": { "str": "mild steel wire" },
    "description": "A length of thin, relatively stiff steel wire.  Like the sort you find in chain link fences.",
    "category": "spare_parts",
    "price": 20000,
    "price_postapoc": 100,
    "material": [ "lc_steel" ],
    "weight": "151 g",
    "volume": "100 ml",
    "to_hit": -2
  },
  {
    "type": "GENERIC",
    "id": "mc_wire",
    "copy-from": "lc_wire",
    "name": { "str": "medium steel wire" },
    "material": [ "mc_steel" ]
  },
  {
    "type": "GENERIC",
    "id": "hc_wire",
    "copy-from": "lc_wire",
    "name": { "str": "high steel wire" },
    "material": [ "hc_steel" ]
  },
  {
    "type": "GENERIC",
    "id": "ch_wire",
    "copy-from": "lc_wire",
    "name": { "str": "hardened steel wire" },
    "material": [ "ch_steel" ]
  },
  {
    "type": "GENERIC",
    "id": "qt_wire",
    "copy-from": "lc_wire",
    "name": { "str": "tempered steel wire" },
    "material": [ "qt_steel" ]
  },
  {
    "type": "GENERIC",
    "id": "wire_barbed",
    "symbol": ";",
    "color": "light_gray",
    "name": { "str": "barbed wire" },
    "description": "A length of stiff wire, covered in sharp barbs.",
    "price": 20000,
    "price_postapoc": 200,
    "material": [ "steel" ],
    "weight": "302 g",
    "volume": "500 ml",
    "flags": [ "HURT_WHEN_WIELDED" ],
    "to_hit": -2
  },
  {
    "type": "GENERIC",
    "id": "wire_mesh",
    "symbol": ";",
    "color": "light_gray",
    "name": { "str": "steel mesh", "str_pl": "steel meshes" },
    "description": "A 6-inch square piece of finely-woven steel wire, useful for dryer lint traps and reusable coffee filter baskets.  You could put this on a window to keep mosquitoes and other bugs out if it was larger, but chain link fencing will do these days.",
    "category": "spare_parts",
    "//": "Reference tables for calculating steel mesh weight (current one assumes 100 mesh twill weave): http://www.wirecloth.com/mesh-cloth-specification-tables/",
    "weight": "19 g",
    "volume": "6 ml",
    "price": 700,
    "price_postapoc": 100,
    "material": [ "steel" ]
  },
  {
    "type": "GENERIC",
    "id": "rebar",
    "symbol": "/",
    "color": "light_gray",
    "name": { "str": "rebar" },
    "description": "A rod of rebar, makes a nice melee weapon, and could be handy in constructing tougher walls and such.",
    "category": "spare_parts",
    "price": 7500,
    "price_postapoc": 25,
    "material": [ "steel" ],
    "weight": "1245 g",
    "volume": "159 ml",
    "longest_side": "80 cm",
    "to_hit": -1,
    "qualities": [ [ "HAMMER", 1 ] ],
    "melee_damage": { "bash": 10 }
  },
  {
    "type": "GENERIC",
    "id": "railroad_track_small",
    "symbol": "=",
    "color": "dark_gray",
    "name": { "str": "small railroad track" },
    "description": "A length of track, made from some planks and rails.",
    "category": "spare_parts",
    "price": 7500,
    "price_postapoc": 10,
    "material": [ "wood", "steel" ],
    "weight": "40 kg",
    "volume": "30000 ml"
  },
  {
    "type": "GENERIC",
    "id": "concrete",
    "symbol": "%",
    "color": "light_gray",
    "name": { "str_sp": "concrete" },
    "description": "Some concrete, ready to be used in a construction project.",
    "category": "spare_parts",
    "container": "bag_canvas",
    "price": 10000,
    "price_postapoc": 25,
    "material": [ "powder_nonflam" ],
    "weight": "2340 g",
    "volume": "1 L",
    "melee_damage": { "bash": 4 }
  },
  {
    "type": "GENERIC",
    "id": "skewer_bone",
    "symbol": ",",
    "color": "white",
    "name": { "str": "bone skewer" },
    "description": "A thin skewer carved from bone.  Sadly, it won't make squirrel on a stick taste better.",
    "category": "other",
    "material": [ "bone" ],
    "flags": [ "NO_SALVAGE", "TRADER_AVOID" ],
    "weight": "10 g",
    "volume": "25 ml",
    "to_hit": -5,
    "milling": { "into": "meal_bone_tainted", "conversion_rate": 0.16 },
    "qualities": [ [ "COOK", 1 ] ]
  },
  {
    "type": "GENERIC",
    "id": "torch_done",
    "symbol": "/",
    "color": "brown",
    "name": { "str": "burnt out torch", "str_pl": "burnt out torches" },
    "description": "A torch that has consumed all its fuel; it can be recrafted into another torch.",
    "category": "other",
    "material": [ "wood" ],
    "weight": "510 g",
    "volume": "1042 ml",
    "longest_side": "122 cm",
    "flags": [ "TRADER_AVOID" ],
    "melee_damage": { "bash": 8 }
  },
  {
    "type": "GENERIC",
    "id": "handflare_dead",
    "category": "other",
    "symbol": ";",
    "color": "red",
    "name": { "str": "dead flare" },
    "description": "A spent magnesium flare.  It is essentially trash.",
    "material": [ "plastic" ],
    "flags": [ "TRADER_AVOID" ],
    "weight": "39 g",
    "volume": "250 ml",
    "to_hit": -1
  },
  {
    "type": "GENERIC",
    "id": "spring",
    "symbol": ",",
    "color": "light_gray",
    "name": { "str": "spring" },
    "category": "spare_parts",
    "description": "A large, heavy-duty spring.  Expands with significant force when compressed.",
    "price": 1000,
    "price_postapoc": 100,
    "material": [ "iron" ],
    "weight": "3000 g",
    "volume": "750 ml"
  },
  {
    "type": "GENERIC",
    "id": "lawnmower",
    "symbol": ";",
    "color": "green",
    "name": { "str": "lawnmower" },
    "description": "A motorized pushmower that seems to be broken.  You could take it apart if you had a wrench.",
    "category": "other",
    "price": 10000,
    "price_postapoc": 50,
    "material": [ "steel", "iron" ],
    "weight": "28680 g",
    "volume": "6250 ml",
    "longest_side": "1 meter",
    "to_hit": -4,
    "melee_damage": { "bash": 6 }
  },
  {
    "type": "GENERIC",
    "id": "broketent",
    "symbol": ";",
    "color": "green",
    "name": { "str": "damaged tent" },
    "description": "A small tent, just big enough to fit one person comfortably.  This tent is broken and cannot be deployed.",
    "price": 6500,
    "price_postapoc": 100,
    "material": [ "plastic", "aluminum" ],
    "weight": "1133 g",
    "volume": "2500 ml",
    "longest_side": "1 meter",
    "to_hit": -3,
    "flags": [ "TRADER_AVOID" ],
    "melee_damage": { "bash": 4 }
  },
  {
    "type": "GENERIC",
    "id": "largebroketent",
    "symbol": ";",
    "color": "green",
    "name": { "str": "large damaged tent" },
    "description": "A family-sized tent, very bulky but with plenty of space.  This tent is broken and cannot be deployed.",
    "price": 10000,
    "price_postapoc": 150,
    "material": [ "plastic", "aluminum" ],
    "weight": "2266 g",
    "volume": "10 L",
    "to_hit": -3,
    "flags": [ "TRADER_AVOID" ],
    "melee_damage": { "bash": 4 }
  },
  {
    "type": "GENERIC",
    "id": "element",
    "symbol": ",",
    "color": "light_gray",
    "name": { "str": "heating element" },
    "category": "spare_parts",
    "description": "A heating element, like the ones used in hotplates or kettles.  Consists of nichrome wire surrounded by electrical insulator and placed inside a steel casing.",
    "price": 1000,
    "price_postapoc": 10,
    "material": [ "steel" ],
    "weight": "226 g",
    "volume": "250 ml"
  },
  {
    "type": "GENERIC",
    "id": "crude_heating_element",
    "symbol": ",",
    "color": "light_gray",
    "name": { "str": "crude heating element" },
    "category": "spare_parts",
    "description": "A primitive heating element made from thin coiled steel wire.  It will degrade much quicker with use than normal heating elements, but it'll do for some applications.",
    "price": 100,
    "price_postapoc": 50,
    "material": [ "steel" ],
    "weight": "226 g",
    "volume": "250 ml"
  },
  {
    "type": "GENERIC",
    "id": "thermostat",
    "symbol": ",",
    "color": "light_gray",
    "name": { "str": "bimetal thermostat" },
    "category": "spare_parts",
    "description": "A simple thermostat controlled by thermal expansion of a bimetal strip.",
    "price": 1000,
    "price_postapoc": 10,
    "material": [ "iron" ],
    "weight": "226 g",
    "volume": "250 ml"
  },
  {
    "type": "GENERIC",
    "id": "household_water_heater",
    "symbol": "0",
    "color": "white",
    "name": { "str": "household water heater" },
    "description": "A large metal tank with a water faucet attached to it, primarily used to store and heat water.",
    "price": 0,
    "price_postapoc": 10,
    "material": [ "steel" ],
    "//": "weight and volume assumed to be from model XE36S06ST45U0 water heater <https://images.thdstatic.com/catalog/pdfImages/2d/2d7ed116-1a8c-439d-b7fe-a62a0a98f806.pdf>",
    "weight": "54431 g",
    "volume": "240 L",
    "to_hit": -5,
    "use_action": { "type": "deploy_furn", "furn_type": "f_water_heater" },
    "melee_damage": { "bash": 5 }
  },
  {
    "type": "GENERIC",
    "id": "household_water_heater_family",
    "symbol": "0",
    "color": "white",
    "name": { "str": "family–sized household water heater" },
    "description": "A large metal tank with a water faucet attached to it, primarily used to store and heat water.  Large enough for a whole family.",
    "price": 0,
    "price_postapoc": 20,
    "material": [ "steel" ],
    "//": "weight and volume assumed to be from model XG55T06EC50UO water heater <https://images.thdstatic.com/catalog/pdfImages/7e/7e7928b1-8b4f-472a-8ee8-b48eb1e7932a.pdf>",
    "weight": "80000 g",
    "volume": "406 L",
    "to_hit": -5,
    "use_action": { "type": "deploy_furn", "furn_type": "f_water_heater_family" },
    "melee_damage": { "bash": 5 }
  },
  {
    "type": "GENERIC",
    "id": "television",
    "symbol": ";",
    "color": "dark_gray",
    "name": { "str": "television" },
    "description": "A large LCD television, full of delicious electronics.",
    "price": 0,
    "price_postapoc": 10,
    "material": [ "aluminum", "plastic" ],
    "weight": "15000 g",
    "volume": "20 L",
    "to_hit": -5,
    "flags": [ "FRAGILE_MELEE" ],
    "melee_damage": { "bash": 5 }
  },
  {
    "type": "GENERIC",
    "id": "household_washing_machine",
    "symbol": "{",
    "color": "white",
    "name": { "str": "household washing machine" },
    "description": "An appliance used to wash laundry, not of much use without power and water.  Can be placed as an appliance.",
    "price": 0,
    "price_postapoc": 10,
    "material": [ "steel" ],
    "weight": "66 kg",
    "volume": "500 L",
    "longest_side": "116cm",
    "pocket_data": [
      {
        "pocket_type": "CONTAINER",
        "rigid": true,
        "watertight": true,
        "max_contains_volume": "135 L",
        "max_contains_weight": "15 kg"
      }
    ],
    "to_hit": -5,
    "melee_damage": { "bash": 5 }
  },
  {
    "type": "GENERIC",
    "id": "household_dishwasher",
    "symbol": "{",
    "color": "white",
    "name": { "str": "household dishwasher" },
    "description": "An appliance used to clean dishes, not of much use without power and water.  Can be placed as an appliance.",
    "price": 0,
    "price_postapoc": 10,
    "material": [ "steel" ],
    "weight": "41 kg",
    "volume": "300 L",
    "longest_side": "84 cm",
    "pocket_data": [
      {
        "pocket_type": "CONTAINER",
        "rigid": true,
        "watertight": true,
        "max_contains_volume": "120 L",
        "max_contains_weight": "15 kg"
      }
    ],
    "to_hit": -5,
    "melee_damage": { "bash": 5 }
  },
  {
    "type": "GENERIC",
    "id": "pilot_light",
    "symbol": ",",
    "color": "light_gray",
    "name": { "str": "pilot light" },
    "category": "spare_parts",
    "description": "A pilot light from a gas-burning device, this particular one is a simple piezoelectric igniter.",
    "price": 1000,
    "price_postapoc": 10,
    "material": [ "aluminum", "plastic" ],
    "weight": "5 g",
    "volume": "5 ml"
  },
  {
    "type": "GENERIC",
    "id": "delay_fuze",
    "symbol": ",",
    "color": "light_gray",
    "name": { "str": "delayed fuze" },
    "category": "spare_parts",
    "description": "A complex mechanical fuze.  It seems it can be used to detonate stable explosives after a short time by triggering it.",
    "price": 1000,
    "price_postapoc": 100,
    "material": [ "steel", "plastic" ],
    "weight": "5 g",
    "volume": "5 ml"
  },
  {
    "type": "GENERIC",
    "id": "impact_fuze",
    "symbol": ",",
    "color": "light_gray",
    "name": { "str": "impact fuze" },
    "category": "spare_parts",
    "description": "A complex mechanical fuze.  It seems it can be used to detonate stable explosives upon a solid impact.",
    "price": 1000,
    "price_postapoc": 100,
    "material": [ "steel", "plastic" ],
    "weight": "5 g",
    "volume": "1 ml"
  },
  {
    "type": "GENERIC",
    "id": "toaster",
    "symbol": ",",
    "color": "light_gray",
    "name": { "str": "toaster" },
    "description": "A small two-slice toaster, not much use as anything but spare parts.",
    "price": 1000,
    "price_postapoc": 10,
    "material": [ "aluminum", "plastic" ],
    "weight": "725 g",
    "volume": "750 ml"
  },
  {
    "type": "GENERIC",
    "id": "broken_robofac_camspy",
    "symbol": ",",
    "color": "green",
    "name": { "str": "broken camspy", "str_pl": "broken camspies" },
    "category": "other",
    "description": "A broken camspy.  It probably won't spy on anything ever again.  Could be gutted for parts.",
    "price": 1000,
    "price_postapoc": 10,
    "material": [ "steel", "plastic" ],
    "weight": "31520 g",
    "volume": "15 L",
    "to_hit": -3,
    "flags": [ "TRADER_AVOID", "NO_REPAIR", "NO_SALVAGE" ],
    "melee_damage": { "bash": 6, "cut": 6 }
  },
  {
    "type": "GENERIC",
    "id": "broken_skitterbot",
    "symbol": ",",
    "color": "green",
    "name": { "str": "broken skitterbot" },
    "category": "other",
    "description": "A broken skitterbot.  Much less threatening now that it lies limp on solid ground.  Could be gutted for parts.",
    "price": 1000,
    "price_postapoc": 10,
    "material": [ "steel", "plastic" ],
    "weight": "32700 g",
    "volume": "105 L",
    "to_hit": -3,
    "flags": [ "TRADER_AVOID", "NO_REPAIR" ],
    "melee_damage": { "bash": 4, "cut": 4 }
  },
  {
    "type": "GENERIC",
    "id": "broken_robofac_skittergun",
    "symbol": ",",
    "color": "green",
    "name": { "str": "broken exterminatron" },
    "category": "other",
    "description": "A broken Hub 01 exterminatron.  Much less threatening now that it lies limp on solid ground.  Could be gutted for parts.",
    "price": 1000,
    "price_postapoc": 10,
    "material": [ "steel", "plastic" ],
    "weight": "32700 g",
    "volume": "105 L",
    "to_hit": -3,
    "flags": [ "TRADER_AVOID", "NO_REPAIR" ],
    "melee_damage": { "bash": 4, "cut": 4 }
  },
  {
    "type": "GENERIC",
    "id": "broken_science_bot",
    "symbol": ",",
    "color": "green",
    "name": { "str": "broken lab defense bot" },
    "category": "other",
    "description": "A broken lab defense bot, with its casing broken and fluid drained.  Could be gutted for parts.",
    "price": 1000,
    "price_postapoc": 10,
    "material": [ "steel", "plastic" ],
    "weight": "100000 g",
    "volume": "65000 ml",
    "to_hit": -3,
    "flags": [ "TRADER_AVOID", "NO_REPAIR" ],
    "melee_damage": { "bash": 4, "cut": 4 }
  },
  {
    "type": "GENERIC",
    "id": "broken_nursebot",
    "symbol": ",",
    "color": "dark_gray",
    "name": { "str": "broken nurse bot" },
    "category": "other",
    "description": "A broken nurse bot.  Its smooth face stares vacantly into empty space.  Could be gutted for parts.",
    "price": 30000,
    "price_postapoc": 10,
    "material": [ "steel", "plastic" ],
    "weight": "140000 g",
    "volume": "62500 ml",
    "to_hit": -3,
    "flags": [ "TRADER_AVOID", "NO_REPAIR" ],
    "melee_damage": { "bash": 6, "cut": 6 }
  },
  {
    "type": "GENERIC",
    "id": "broken_grocerybot",
    "symbol": ",",
    "color": "dark_gray",
    "name": { "str": "broken grocery bot" },
    "category": "other",
    "description": "A broken grocery bot.  Its smiling face stares vacantly into empty space.  Could be gutted for parts.",
    "price": 30000,
    "price_postapoc": 10,
    "material": [ "steel", "plastic" ],
    "weight": "140000 g",
    "volume": "62500 ml",
    "to_hit": -3,
    "flags": [ "TRADER_AVOID", "NO_REPAIR" ],
    "melee_damage": { "bash": 6, "cut": 6 }
  },
  {
    "type": "GENERIC",
    "id": "broken_grocerybot_busted",
    "symbol": ",",
    "color": "dark_gray",
    "name": { "str": "broken grocery bot" },
    "category": "other",
    "description": "The body of a busted grocery bot.  Its tarnished face is still smiling.  Could be gutted for parts.",
    "price": 30000,
    "price_postapoc": 10,
    "material": [ "steel", "plastic" ],
    "weight": "140000 g",
    "volume": "62500 ml",
    "to_hit": -3,
    "flags": [ "TRADER_AVOID", "NO_REPAIR" ],
    "melee_damage": { "bash": 6, "cut": 6 }
  },
  {
    "type": "GENERIC",
    "id": "broken_nursebot_defective",
    "name": { "str": "broken nurse bot" },
    "copy-from": "broken_nursebot"
  },
  {
    "type": "GENERIC",
    "id": "broken_robofac_prototype",
    "symbol": ",",
    "color": "green",
    "name": { "str": "broken prototype robot" },
    "category": "other",
    "description": "A broken prototype robot--well, more broken than before.  Could be gutted for parts.",
    "price": 30000,
    "price_postapoc": 10,
    "material": [ "steel", "plastic" ],
    "weight": "140000 g",
    "volume": "62500 ml",
    "to_hit": -3,
    "flags": [ "TRADER_AVOID" ],
    "melee_damage": { "bash": 6, "cut": 6 }
  },
  {
    "type": "GENERIC",
    "id": "broken_molebot",
    "symbol": ",",
    "color": "green",
    "name": { "str": "broken miner bot" },
    "category": "other",
    "description": "A broken miner bot.  Much less threatening now that it's no longer capable of drilling anything.  Could be gutted for parts.",
    "price": 20000,
    "price_postapoc": 10,
    "material": [ "steel", "plastic" ],
    "weight": "170200 g",
    "volume": "62500 ml",
    "to_hit": -3,
    "flags": [ "TRADER_AVOID", "NO_REPAIR" ],
    "melee_damage": { "bash": 6, "cut": 10 }
  },
  {
    "type": "GENERIC",
    "id": "broken_mech_recon",
    "name": { "str": "broken recon mech" },
    "description": "A broken mech exoskeleton suit, it looks beyond repair.",
    "weight": "700388 g",
    "volume": "125 L",
    "price": 1000,
    "price_postapoc": 10,
    "to_hit": -3,
    "material": [ "superalloy" ],
    "symbol": ";",
    "color": "light_green",
    "flags": [ "TRADER_AVOID", "NO_REPAIR" ],
    "melee_damage": { "bash": 7 }
  },
  {
    "type": "GENERIC",
    "id": "broken_mech_lifter",
    "name": { "str": "broken mech lifter" },
    "description": "A broken mech exoskeleton suit, it looks beyond repair.",
    "weight": "1280388 g",
    "volume": "250 L",
    "price": 1000,
    "price_postapoc": 10,
    "to_hit": -3,
    "material": [ "superalloy" ],
    "symbol": ";",
    "color": "light_green",
    "flags": [ "TRADER_AVOID", "NO_REPAIR" ],
    "melee_damage": { "bash": 8 }
  },
  {
    "type": "GENERIC",
    "id": "broken_mech_combat",
    "name": { "str": "broken combat mech" },
    "description": "A broken mech exoskeleton suit, it looks beyond repair.",
    "weight": "1480388 g",
    "volume": "250 L",
    "price": 1000,
    "price_postapoc": 10,
    "to_hit": -3,
    "material": [ "superalloy" ],
    "symbol": ";",
    "color": "light_green",
    "flags": [ "TRADER_AVOID", "NO_REPAIR" ],
    "melee_damage": { "bash": 8 }
  },
  {
    "type": "GENERIC",
    "id": "broken_dispatch",
    "symbol": ",",
    "color": "yellow",
    "name": { "str": "broken riot dispatch", "str_pl": "broken riot dispatches" },
    "category": "other",
    "description": "A broken riot dispatch, with its mesh midsection filled with fried manhacks and its motor limp and still.  Could be gutted for parts.",
    "price": 1000,
    "price_postapoc": 10,
    "material": [ "steel", "plastic" ],
    "weight": "100000 g",
    "volume": "85000 ml",
    "to_hit": -3,
    "flags": [ "TRADER_AVOID", "NO_REPAIR" ],
    "melee_damage": { "bash": 4, "cut": 4 }
  },
  {
    "type": "AMMO",
    "id": "paper",
    "name": { "str_sp": "paper" },
    "category": "spare_parts",
    "weight": "3 g",
    "color": "white",
    "symbol": "`",
    "description": "A piece of paper.  Can be used to start fires.",
    "price": 0,
    "price_postapoc": 0,
    "material": [ "paper" ],
    "flags": [ "TINDER", "PAPER_SHAPED" ],
    "volume": "6 ml",
    "longest_side": "297 mm",
    "ammo_type": "paper"
  },
  {
    "id": "book_binder",
    "type": "TOOL",
    "category": "books",
    "use_action": [ "BINDER_ADD_RECIPE", "BINDER_MANAGE_RECIPE" ],
    "symbol": "/",
    "looks_like": "story_book",
    "color": "light_gray",
    "name": { "str": "book binder" },
    "description": "A book binder.  With a pen and some paper you could copy some recipes from books into it.",
    "weight": "200 g",
    "volume": "640 ml",
    "material": [ "plastic" ],
    "to_hit": -1,
    "price": 500,
    "price_postapoc": 50,
    "flags": [ "NO_UNLOAD", "NO_RELOAD" ],
    "pocket_data": [ { "pocket_type": "MAGAZINE", "rigid": false, "ammo_restriction": { "paper": 90 } } ],
    "melee_damage": { "bash": 1 }
  },
  {
    "type": "GENERIC",
    "id": "broken_dispatch_military",
    "symbol": ",",
    "color": "green",
    "name": { "str": "broken military dispatch", "str_pl": "broken military dispatches" },
    "category": "other",
    "description": "A broken military dispatch.  Though the scratched manhacks visible in its belly are disarmed, their destructive potential still inspires a spark of fear in you, even now.  Could be gutted for parts.",
    "price": 1000,
    "price_postapoc": 10,
    "material": [ "steel", "plastic" ],
    "weight": "100000 g",
    "volume": "85000 ml",
    "to_hit": -3,
    "flags": [ "TRADER_AVOID", "NO_REPAIR" ],
    "melee_damage": { "bash": 4, "cut": 4 }
  },
  {
    "type": "GENERIC",
    "id": "broken_manhack",
    "symbol": ",",
    "color": "light_green",
    "name": { "str": "broken manhack" },
    "category": "other",
    "description": "A broken manhack.  Much less threatening now that it lies limp on solid ground.  Could be gutted for parts.",
    "price": 1000,
    "price_postapoc": 10,
    "material": [ "aluminum", "plastic" ],
    "weight": "1500 g",
    "volume": "750 ml",
    "to_hit": -3,
    "flags": [ "TRADER_AVOID", "NO_REPAIR" ],
    "melee_damage": { "bash": 6, "cut": 6 }
  },
  {
    "type": "GENERIC",
    "id": "broken_grenade_hack",
    "symbol": ",",
    "color": "green",
    "name": { "str": "broken grenade hack" },
    "category": "other",
    "description": "A broken grenade hack.  Much less threatening now that it lies quiet on solid ground.  Could be gutted for parts.",
    "price": 9000,
    "price_postapoc": 10,
    "material": [ "aluminum", "plastic" ],
    "weight": "2000 g",
    "volume": "750 ml",
    "to_hit": -3,
    "flags": [ "TRADER_AVOID", "NO_REPAIR" ],
    "melee_damage": { "bash": 6, "cut": 6 }
  },
  {
    "type": "GENERIC",
    "id": "broken_gasbomb_hack",
    "symbol": ",",
    "color": "dark_gray",
    "name": { "str": "broken tear gas hack" },
    "category": "other",
    "description": "A broken tear gas hack.  Much less threatening now that it lies quiet on solid ground.  Could be gutted for parts.",
    "price": 9000,
    "price_postapoc": 10,
    "material": [ "aluminum", "plastic" ],
    "weight": "2600 g",
    "volume": "750 ml",
    "to_hit": -3,
    "flags": [ "TRADER_AVOID", "NO_REPAIR" ],
    "melee_damage": { "bash": 6, "cut": 6 }
  },
  {
    "type": "GENERIC",
    "id": "broken_EMP_hack",
    "symbol": ",",
    "color": "cyan",
    "name": { "str": "broken EMP hack" },
    "category": "other",
    "description": "A broken EMP hack.  Much less threatening now that it lies quiet on solid ground.  Could be gutted for parts.",
    "price": 9000,
    "price_postapoc": 10,
    "material": [ "aluminum", "plastic" ],
    "weight": "2000 g",
    "volume": "750 ml",
    "to_hit": -3,
    "flags": [ "TRADER_AVOID", "NO_REPAIR" ],
    "melee_damage": { "bash": 6, "cut": 6 }
  },
  {
    "type": "GENERIC",
    "id": "broken_flashbang_hack",
    "symbol": ",",
    "color": "dark_gray",
    "name": { "str": "broken flashbang hack" },
    "category": "other",
    "description": "A broken flashbang hack.  Much less threatening now that it lies quiet on solid ground.  Could be gutted for parts.",
    "price": 9000,
    "price_postapoc": 10,
    "material": [ "aluminum", "plastic" ],
    "weight": "1750 g",
    "volume": "750 ml",
    "to_hit": -3,
    "flags": [ "TRADER_AVOID", "NO_REPAIR" ],
    "melee_damage": { "bash": 6, "cut": 6 }
  },
  {
    "type": "GENERIC",
    "id": "broken_c4_hack",
    "symbol": ",",
    "color": "light_gray",
    "name": { "str": "broken C-4 hack" },
    "category": "other",
    "description": "A broken C-4 hack.  Much less threatening now that it lies quiet on solid ground.  Could be gutted for parts.",
    "price": 9000,
    "price_postapoc": 10,
    "material": [ "aluminum", "plastic" ],
    "weight": "3100 g",
    "volume": "750 ml",
    "to_hit": -3,
    "flags": [ "TRADER_AVOID", "NO_REPAIR" ],
    "melee_damage": { "bash": 6, "cut": 6 }
  },
  {
    "type": "GENERIC",
    "id": "broken_turret_speaker",
    "symbol": ",",
    "color": "yellow",
    "name": { "str": "broken loudspeaker" },
    "category": "other",
    "description": "A broken loudspeaker.  It's so unusually quiet now….  Could be gutted for parts.",
    "price": 1000,
    "price_postapoc": 500,
    "material": [ "steel" ],
    "weight": "52 kg",
    "volume": "50500 ml",
    "to_hit": -3,
    "flags": [ "TRADER_AVOID", "NO_REPAIR" ]
  },
  {
    "type": "GENERIC",
    "id": "processor",
    "symbol": ",",
    "color": "dark_gray",
    "name": { "str": "processor board" },
    "category": "spare_parts",
    "description": "A central processor unit, useful in advanced electronics crafting.",
    "price": 12000,
    "price_postapoc": 10,
    "material": [ "plastic" ],
    "weight": "56 g",
    "volume": "250 ml",
    "to_hit": -1
  },
  {
    "type": "GENERIC",
    "id": "RAM",
    "symbol": ",",
    "color": "dark_gray",
    "name": { "str": "RAM" },
    "category": "spare_parts",
    "description": "A stick of memory.  Useful in advanced electronics crafting.",
    "price": 9000,
    "price_postapoc": 10,
    "material": [ "plastic" ],
    "weight": "18 g",
    "//": "A stick of DDR4 SRAM is 133.35 x 31.25 x 4.2mm, or 17.5ml. We round up a touch.",
    "volume": "18 ml",
    "to_hit": -1
  },
  {
    "type": "GENERIC",
    "id": "power_supply",
    "symbol": ",",
    "color": "light_gray",
    "name": { "str": "power converter" },
    "category": "spare_parts",
    "description": "A power supply unit.  Useful in lots of electronics recipes.",
    "price": 17000,
    "price_postapoc": 25,
    "material": [ "aluminum", "plastic" ],
    "weight": "113 g",
    "volume": "1 L",
    "to_hit": -1,
    "melee_damage": { "bash": 5 }
  },
  {
    "type": "GENERIC",
    "id": "amplifier",
    "symbol": ",",
    "color": "light_gray",
    "name": { "str": "amplifier circuit" },
    "category": "spare_parts",
    "description": "A circuit designed to amplify the strength of a signal.  Useful in lots of electronics recipes.",
    "price": 20000,
    "price_postapoc": 10,
    "material": [ "plastic" ],
    "weight": "114 g",
    "volume": "250 ml",
    "to_hit": -1
  },
  {
    "type": "GENERIC",
    "id": "transponder",
    "symbol": ",",
    "color": "light_gray",
    "name": { "str": "transponder circuit" },
    "category": "spare_parts",
    "description": "A circuit designed to repeat a signal.  Useful for crafting communications equipment.",
    "price": 14000,
    "price_postapoc": 10,
    "material": [ "aluminum", "plastic" ],
    "weight": "480 g",
    "volume": "250 ml",
    "to_hit": -1
  },
  {
    "type": "GENERIC",
    "id": "receiver",
    "symbol": ",",
    "color": "light_gray",
    "name": { "str": "signal receiver" },
    "category": "spare_parts",
    "description": "A module designed to receive many forms of signals.  Useful for crafting communications equipment.",
    "price": 13500,
    "price_postapoc": 10,
    "material": [ "aluminum", "plastic" ],
    "weight": "114 g",
    "volume": "250 ml",
    "to_hit": -1
  },
  {
    "type": "GENERIC",
    "id": "large_lcd_screen",
    "symbol": ",",
    "color": "dark_gray",
    "name": { "str": "large LCD screen" },
    "category": "spare_parts",
    "description": "A large backlit screen, used for displaying images.  Useful in some electronics recipes.",
    "price": 10000,
    "price_postapoc": 10,
    "material": [ "plastic" ],
    "weight": "13000 g",
    "volume": "15000 ml",
    "to_hit": -4
  },
  {
    "type": "GENERIC",
    "id": "small_lcd_screen",
    "symbol": ",",
    "color": "dark_gray",
    "name": { "str": "small LCD screen" },
    "category": "spare_parts",
    "description": "A small backlit screen, used for displaying images.  Useful in some electronics recipes.",
    "price": 24000,
    "price_postapoc": 10,
    "material": [ "plastic" ],
    "weight": "500 g",
    "volume": "250 ml",
    "to_hit": -4
  },
  {
    "type": "GENERIC",
    "id": "lens",
    "symbol": ".",
    "color": "light_cyan",
    "name": { "str": "high-quality lens", "str_pl": "high-quality lenses" },
    "category": "spare_parts",
    "description": "A high-quality glass lens, useful for focusing or diffusing light.  Might be useful for starting a fire.",
    "price": 120000,
    "price_postapoc": 100,
    "material": [ "glass" ],
    "weight": "30 g",
    "volume": "10 ml",
    "to_hit": -3,
    "use_action": { "type": "firestarter", "moves": 1000, "moves_slow": 30000, "need_sunlight": true },
    "flags": [ "FIRESTARTER" ]
  },
  {
    "type": "GENERIC",
    "id": "lens_small",
    "symbol": ".",
    "color": "light_cyan",
    "name": { "str": "small high-quality lens", "str_pl": "small high-quality lenses" },
    "category": "spare_parts",
    "description": "A small, high-quality glass lens, useful for focusing or diffusing light.  Might be useful for crafting.",
    "price": 6000,
    "price_postapoc": 50,
    "material": [ "glass" ],
    "weight": "1 g",
    "volume": "1 ml"
  },
  {
    "type": "GENERIC",
    "id": "glass_tinted",
    "symbol": ".",
    "color": "dark_gray",
    "name": { "str": "pair of tinted glass lenses", "str_pl": "pairs of tinted glass lenses" },
    "category": "spare_parts",
    "description": "A pair of small, darkened glass lenses, like the ones used in sunglasses.",
    "price": 1000,
    "price_postapoc": 10,
    "material": [ "glass" ],
    "weight": "30 g",
    "volume": "2 ml",
    "to_hit": -3
  },
  {
    "type": "GENERIC",
    "id": "burnt_out_bionic",
    "symbol": ",",
    "color": "dark_gray",
    "name": { "str": "burnt out bionic" },
    "category": "spare_parts",
    "description": "Once a valuable bionic implant, it has not held up well under repeated use.  It has been destroyed by excessive electric current and is now useless.",
    "price": 13500,
    "price_postapoc": 10,
    "material": [ "steel", "plastic" ],
    "weight": "317 g",
    "volume": "2500 ml",
    "to_hit": -1,
    "flags": [ "TRADER_AVOID" ]
  },
  {
    "type": "GENERIC",
    "id": "standard_template_construct",
    "symbol": ",",
    "color": "cyan",
    "name": { "str": "nanofabricator template" },
    "category": "spare_parts",
    "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.",
    "price": 150000,
    "price_postapoc": 1000,
    "material": [ "steel", "plastic" ],
    "nanofab_template_group": "nanofab_recipes",
    "template_requirements": "nanofabricator",
    "weight": "317 g",
    "volume": "250 ml",
    "to_hit": -1,
    "flags": [ "NANOFAB_TEMPLATE", "TRADER_AVOID" ]
  },
  {
    "type": "GENERIC",
    "id": "debug_template",
    "copy-from": "standard_template_construct",
    "color": "yellow",
    "name": { "str": "nanofabricator template" },
    "description": "A state-of-the-art optical storage system, containing the instruction set to replicate itself.",
    "nanofab_template_group": "debug_template_item",
    "template_requirements": "copper_scrap_equivalent"
  },
  {
    "type": "GENERIC",
    "id": "template_photonics",
    "copy-from": "standard_template_construct",
    "color": "yellow",
    "name": { "str": "nanofabricator template (silicon photonics)", "str_pl": "nanofabricator templates (silicon photonics)" },
    "description": "A state-of-the-art optical storage system, containing the instruction set required for the fabrication of complex silicon photonic circuitry.  The data within was once clearly worth millions, but now, you are not sure if it's anything more than a fancy, high-tech paperweight.",
    "price": 200000000,
    "price_postapoc": 3000,
    "//": "actually worth millions",
    "flags": [ "TRADER_AVOID" ]
  },
  {
    "type": "GENERIC",
    "id": "template_armor",
    "copy-from": "standard_template_construct",
    "color": "yellow",
    "name": { "str": "nanofabricator template (UHMWPE)", "str_pl": "nanofabricator templates (UHMWPE)" },
    "description": "A state-of-the-art optical storage system, containing the instruction set required for the fabrication of advanced armor materials.  This seems to just be routines for working with the materials, not actual armor schematics.",
    "price": 100000000,
    "price_postapoc": 3000,
    "//": "given to HUB 01 for even better armor",
    "flags": [ "TRADER_AVOID" ]
  },
  {
    "type": "GENERIC",
    "id": "antenna",
    "symbol": ",",
    "color": "light_gray",
    "name": { "str": "antenna" },
    "category": "spare_parts",
    "description": "A simple thin copper shaft.  Useful in lots of electronics recipes.",
    "price": 8000,
    "price_postapoc": 10,
    "material": [ "copper" ],
    "weight": "68 g",
    "volume": "250 ml",
    "to_hit": 2
  },
  {
    "type": "GENERIC",
    "id": "motor_micro",
    "symbol": ",",
    "color": "light_gray",
    "name": { "str": "micro electric motor" },
    "category": "spare_parts",
    "description": "A very small electric motor like those used in RC cars or electric hair trimmers.",
    "price": 1000,
    "price_postapoc": 25,
    "material": [ "steel", "plastic" ],
    "weight": "125 g",
    "volume": "25 ml"
  },
  {
    "type": "GENERIC",
    "id": "circuit",
    "symbol": ",",
    "color": "green",
    "name": { "str": "circuit board" },
    "category": "spare_parts",
    "description": "A printed card that supports and electrically connects electronic components on a non-conductive substrate.",
    "price": 5000,
    "price_postapoc": 10,
    "material": [ "plastic" ],
    "weight": "26 g",
    "volume": "15 ml"
  },
  {
    "type": "GENERIC",
    "id": "e_scrap",
    "symbol": ",",
    "color": "green",
    "name": { "str": "electronic scrap" },
    "category": "spare_parts",
    "description": "A random collection of resistors, capacitors, and diodes which have been stripped from printed circuits.",
    "price": 3000,
    "price_postapoc": 10,
    "material": [ "aluminum" ],
    "weight": "14 g",
    "volume": "5 ml"
  },
  {
    "type": "GENERIC",
    "id": "radio_repeater_mod",
    "symbol": ",",
    "color": "light_gray",
    "name": { "str": "radio repeater mod" },
    "category": "spare_parts",
    "description": "A system designed to convert a radio station into an autonomous repeater.",
    "price": 25000,
    "price_postapoc": 50,
    "material": [ "aluminum", "plastic" ],
    "weight": "2100 g",
    "volume": "2 L",
    "to_hit": 1,
    "melee_damage": { "bash": 4 }
  },
  {
    "type": "TOOL",
    "id": "fan",
    "symbol": ",",
    "name": { "str": "desk fan" },
    "description": "A small fan, used to propel air around a room.",
    "color": "light_gray",
    "price": 1000,
    "price_postapoc": 10,
    "material": [ "aluminum", "plastic" ],
    "flags": [ "WATER_BREAK" ],
    "ammo": [ "battery" ],
    "charges_per_use": 4,
    "use_action": [ { "type": "link_up", "cable_length": 3, "charge_rate": "35 W" } ],
    "charged_qualities": [ [ "WINNOW", 1 ] ],
    "weight": "2857 g",
    "volume": "1 L"
  },
  {
    "type": "GENERIC",
    "id": "ceramic_armor",
    "category": "spare_parts",
    "symbol": ",",
    "color": "yellow",
    "name": { "str": "ceramic armor plate" },
    "description": "A ceramic armor plate, specifically engineered for use as armor.  Not suitable for human use.",
    "price": 8000,
    "price_postapoc": 100,
    "material": [ "ceramic" ],
    "weight": "362 g",
    "volume": "500 ml",
    "melee_damage": { "bash": 4 }
  },
  {
    "type": "GENERIC",
    "id": "fish_bowl",
    "symbol": "u",
    "color": "light_cyan",
    "name": { "str": "fishbowl" },
    "description": "A filled fishbowl, the tag says 'to Ed' and the fish's name, 'Hoss'.  The fish appears to have tiny antlers.",
    "price": 100,
    "price_postapoc": 10,
    "material": [ "glass" ],
    "weight": "8 kg",
    "volume": "8500 ml",
    "to_hit": -6
  },
  {
    "id": "pipe_cleaner",
    "type": "GENERIC",
    "name": { "str": "pipe cleaner" },
    "description": "A tool designed to clean the interior surface of pipes, bottles, and similar objects.  This one is thin enough to be used for cleaning firearm barrels from dirt and fouling.",
    "weight": "50 g",
    "volume": "250 ml",
    "price": 500,
    "price_postapoc": 50,
    "material": [ "steel", "cotton" ],
    "symbol": ";",
    "color": "light_gray"
  },
  {
    "type": "GENERIC",
    "id": "clock",
    "symbol": ";",
    "color": "light_gray",
    "name": { "str": "clock" },
    "description": "A small mechanical clock, it's stopped at 10:10.",
    "price": 1000,
    "price_postapoc": 10,
    "material": [ "plastic", "steel" ],
    "weight": "725 g",
    "volume": "250 ml",
    "to_hit": -3,
    "melee_damage": { "bash": 4 }
  },
  {
    "type": "GENERIC",
    "id": "clockworks",
    "category": "spare_parts",
    "symbol": ";",
    "color": "light_gray",
    "name": { "str_sp": "clockworks" },
    "description": "A small assortment of gears and other clockwork gubbins.",
    "price": 200,
    "price_postapoc": 10,
    "material": [ "steel" ],
    "weight": "50 g",
    "volume": "50 ml"
  },
  {
    "type": "GENERIC",
    "id": "memory_card",
    "name": { "str": "memory card" },
    "description": "A memory card, can be used to store data.",
    "looks_like": "mobile_memory_card",
    "weight": "1 g",
    "volume": "1 ml",
    "symbol": ",",
    "color": "white",
    "price": 1000,
    "price_postapoc": 10,
    "material": [ "plastic" ],
    "ascii_picture": "memory_card",
    "flags": [ "MC_MOBILE" ],
    "pocket_data": [
      {
        "pocket_type": "EBOOK",
        "rigid": true,
        "max_contains_volume": "1 ml",
        "max_contains_weight": "1 g",
        "weight_multiplier": 0.0
      }
    ]
  },
  {
    "type": "GENERIC",
    "id": "memory_card_unread",
    "copy-from": "memory_card",
    "name": { "str": "memory card (unread)", "str_pl": "memory cards (unread)" },
    "description": "A memory card, can be used to store data.  Looks like it has been in use, might be worth taking a look.",
    "memory_card": {
      "data_chance": 0.875,
      "on_read_convert_to": "memory_card",
      "photos_chance": 0.33,
      "photos_amount": 30,
      "songs_chance": 0.33,
      "songs_amount": 15,
      "recipes_chance": 0.33,
      "recipes_amount": 3,
      "recipes_categories": [ "CC_AMMO", "CC_ARMOR", "CC_CHEM", "CC_ELECTRONIC", "CC_FOOD", "CC_WEAPON" ],
      "recipes_level_max": 5
    },
    "pocket_data": [  ]
  },
  {
    "type": "GENERIC",
    "id": "memory_card_science",
    "copy-from": "memory_card",
    "name": { "str": "memory card (XEDRA)", "str_pl": "memory cards (XEDRA)" },
    "description": "A memory card, can be used to store data.  This one has a label on which is written 'XEDRA' followed by a long string of numbers.",
    "memory_card": {
      "data_chance": 1.0,
      "on_read_convert_to": "memory_card",
      "recipes_chance": 1.0,
      "recipes_amount": 3,
      "recipes_categories": [ "CC_CHEM" ],
      "recipes_level_min": 6,
      "secret_recipes": true
    },
    "pocket_data": [  ]
  },
  {
    "type": "GENERIC",
    "id": "mirror",
    "symbol": "o",
    "color": "light_cyan",
    "name": { "str": "hand mirror" },
    "description": "A small hand mirror.",
    "price": 15000,
    "price_postapoc": 10,
    "material": [ "glass" ],
    "weight": "300 g",
    "volume": "750 ml",
    "to_hit": -3,
    "use_action": [ "CHANGE_EYES", "CHANGE_SKIN" ],
    "melee_damage": { "bash": 2 }
  },
  {
    "type": "GENERIC",
    "id": "manhole_cover",
    "symbol": "]",
    "color": "dark_gray",
    "name": { "str": "manhole cover" },
    "description": "A heavy iron disc that typically covers a ladder into the sewers.  Lifting it from the manhole is impossible without a crowbar.",
    "category": "other",
    "price": 20000,
    "price_postapoc": 10,
    "material": [ "iron" ],
    "flags": [ "DURABLE_MELEE", "TRADER_AVOID" ],
    "weight": "115 kg",
    "volume": "20 L",
    "to_hit": -5,
    "melee_damage": { "bash": 20 }
  },
  {
    "type": "GENERIC",
    "id": "pine_bough",
    "symbol": "/",
    "color": "green",
    "name": { "str": "pine bough" },
    "description": "A branch from a pine tree, oozing sticky sap and bristling with prickly needles.",
    "material": [ "wood" ],
    "weight": "220 g",
    "volume": "500 ml",
    "to_hit": -2,
    "flags": [ "TRADER_AVOID", "FIREWOOD" ]
  },
  {
    "type": "GENERIC",
    "id": "pinecone",
    "symbol": ",",
    "color": "brown",
    "name": { "str": "pinecone" },
    "description": "A spiny pod from a pine tree.",
    "material": [ "wood" ],
    "//": "Commercial pinecones average 300g. We're assuming wild ones weigh less than this.",
    "weight": "200 g",
    "volume": "250 ml",
    "to_hit": -2,
    "flags": [ "TRADER_AVOID", "FIREWOOD" ]
  },
  {
    "type": "GENERIC",
    "id": "brew_sake_koji",
    "looks_like": "rice_cooked",
    "name": { "str_sp": "unfinished koji rice" },
    "description": "Some cooked rice mixed with yeast and koji mold fragments, set aside to let koji mold grow on it so that it can make a passable sake base.",
    "weight": "200 g",
    "color": "white",
    "container": "bottle_glass",
    "flags": [ "TRADER_AVOID" ],
    "symbol": "%",
    "price": 0,
    "volume": "250 ml",
    "category": "food",
    "use_action": {
      "target": "sake_koji_rice",
      "msg": "The koji mold seems to have overtaken all the rice; this batch is usable now.",
      "moves": 50,
      "type": "delayed_transform",
      "transform_age": 345600,
      "not_ready_msg": "The koji mold is still growing."
    }
  },
  {
    "type": "GENERIC",
    "id": "sake_koji_rice",
    "looks_like": "rice_cooked",
    "name": { "str_sp": "koji rice" },
    "weight": "200 g",
    "color": "white",
    "container": "bag_plastic",
    "symbol": "%",
    "description": "Some rice covered in koji mold, mixed in with yeast.  Useful for making sake, but not really tasty on its own.  Smells vaguely of chestnuts.",
    "price": 0,
    "volume": "250 ml"
  },
  {
    "type": "GENERIC",
    "id": "young_koji",
    "looks_like": "rice_cooked",
    "name": { "str_sp": "growing wild koji mold" },
    "description": "Some cooked rice sprinkled with ash and wrapped into a corn husk.  If left alone for a while, it will most likely grow koji mold.",
    "weight": "200 g",
    "color": "white",
    "flags": [ "TRADER_AVOID" ],
    "symbol": ",",
    "price": 0,
    "volume": "250 ml",
    "use_action": {
      "target": "young_koji_done",
      "msg": "Patches of koji mold have grown on the rice; you can now extract it.",
      "moves": 50,
      "type": "delayed_transform",
      "transform_age": 345600,
      "not_ready_msg": "The koji mold hasn't grown yet."
    }
  },
  {
    "type": "GENERIC",
    "id": "young_koji_done",
    "looks_like": "rice_cooked",
    "name": { "str_sp": "grown wild koji mold" },
    "description": "Some cooked rice sprinkled with ash and wrapped into a corn husk.  It has grown patches of koji mold inside; disassemble this item to extract it.",
    "weight": "200 g",
    "color": "white",
    "symbol": ",",
    "price_postapoc": 50,
    "volume": "250 ml"
  },
  {
    "type": "GENERIC",
    "id": "soy_wheat_dough",
    "looks_like": "flour",
    "name": { "str_sp": "soy and wheat dough" },
    "description": "Dough made from cooked and mashed soybeans and wheat flour, wrapped in wet paper.  If left to dry for some time, it'll grow koji mold, as necessary for making soy sauce.",
    "weight": "550 g",
    "color": "white",
    "flags": [ "TRADER_AVOID" ],
    "symbol": "%",
    "price": 0,
    "volume": "500 ml",
    "use_action": {
      "target": "soy_wheat_dough_done",
      "msg": "The koji mold seems to have overtaken all the dough; this batch is usable now.",
      "moves": 50,
      "type": "delayed_transform",
      "transform_age": 345600,
      "not_ready_msg": "The koji mold hasn't grown yet."
    }
  },
  {
    "type": "GENERIC",
    "id": "soy_wheat_dough_done",
    "looks_like": "flour",
    "name": { "str_sp": "soy and wheat dough with koji" },
    "weight": "550 g",
    "color": "white",
    "symbol": "%",
    "description": "A block of dried dough made from cooked and mashed soybeans and wheat flour, covered with koji mold.  Usable for making soy sauce.",
    "price": 0,
    "volume": "500 ml"
  },
  {
    "type": "GENERIC",
    "id": "poppy_bud",
    "name": { "str": "poppy bud" },
    "category": "chems",
    "description": "A poppy bud.  Contains some substances commonly produced by a mutated poppy flower.",
    "weight": "30 g",
    "to_hit": -3,
    "color": "light_red",
    "symbol": ",",
    "material": [ "veggy" ],
    "volume": "5 ml",
    "price": 200,
    "price_postapoc": 50
  },
  {
    "type": "GENERIC",
    "id": "sunflower",
    "name": { "str": "sunflower" },
    "description": "The top of a sunflower, with yellow petals and some seeds that have yet to be eaten by animals.",
    "weight": "450 g",
    "to_hit": -2,
    "color": "yellow",
    "symbol": ",",
    "material": [ "veggy" ],
    "volume": "1500 ml",
    "price": 0,
    "price_postapoc": 10
  },
  {
    "type": "GENERIC",
    "id": "chamomile",
    "name": { "str_sp": "chamomile flowers" },
    "description": "A handful of white chamomile flowers, used as an herbal remedy since ancient times.",
    "weight": "10 g",
    "color": "white",
    "symbol": ",",
    "material": [ "veggy" ],
    "volume": "20 ml",
    "price": 0,
    "price_postapoc": 0
  },
  {
    "type": "GENERIC",
    "id": "lotus",
    "name": { "str": "lotus flower" },
    "description": "A lovely flower that grows on the surface of bodies of fresh water.  Traditionally connected with many Eastern cultures.",
    "weight": "20 g",
    "color": "white",
    "symbol": ",",
    "material": [ "veggy" ],
    "volume": "250 ml",
    "price": 0,
    "price_postapoc": 0
  },
  {
    "type": "GENERIC",
    "id": "spurge",
    "name": { "str_sp": "spurge flowers" },
    "description": "A handful of yellow-green flowers.  Can be brewed into a tea that prevents asthma attacks.",
    "weight": "50 g",
    "color": "white",
    "symbol": ",",
    "material": [ "veggy" ],
    "volume": "250 ml",
    "price": 0,
    "price_postapoc": 0
  },
  {
    "type": "GENERIC",
    "id": "bouquet",
    "name": { "str_sp": "withered bouquet" },
    "description": "A mixed collection of flowers.  Unfortunately, they have all withered with time.",
    "//": "Estimated weight is between 1.5-2 lb. When withered, assuming 60% weight loss, gives us around 300 g.",
    "weight": "300 g",
    "color": "white",
    "symbol": ",",
    "material": [ { "type": "veggy", "portion": 4 }, { "type": "glass", "portion": 1 } ],
    "//1": "A medium sized bouquet is roughly 13\" x 5.5\" x 5.5\", or roughly 6.4 L. When withered, I'm estimating a 30% shrinkage in volume, or 4.5 L.",
    "volume": "4500 ml",
    "price": 0,
    "price_postapoc": 0
  },
  {
    "type": "GENERIC",
    "id": "dog_tag_dog",
    "name": { "str_sp": "dog tag" },
    "description": "An identification tag for a pet, engraved with their name and their owner's address and phone number.  It says \"<dog_name>\".",
    "expand_snippets": true,
    "weight": "1 g",
    "color": "green",
    "symbol": "[",
    "material": [ "plastic" ],
    "//": "dog tags are roughly 50mm x 28mm x 0.4mm, or 0.56 ml, but that's so small I needed to round up to 1 ml",
    "volume": "1 ml",
    "price": 0,
    "price_postapoc": 0
  },
  {
    "type": "GENERIC",
    "id": "clay_lump",
    "symbol": ",",
    "color": "brown",
    "name": { "str": "lump of clay", "str_pl": "lumps of clay" },
    "category": "spare_parts",
    "description": "A fresh piece of clay.  Useful for some crafting recipes.",
    "price": 531,
    "price_postapoc": 10,
    "material": [ "freshclay" ],
    "weight": "530 g",
    "volume": "250 ml",
    "to_hit": -4
  },
  {
    "type": "GENERIC",
    "id": "brick",
    "symbol": ",",
    "color": "brown",
    "name": { "str": "brick" },
    "category": "spare_parts",
    "description": "A fire-hardened building block used in masonry construction.",
    "price": 2500,
    "price_postapoc": 10,
    "material": [ "clay", "stone" ],
    "weight": "969 g",
    "volume": "500 ml",
    "to_hit": -2,
    "qualities": [ [ "HAMMER", 1 ] ],
    "melee_damage": { "bash": 8 }
  },
  {
    "type": "GENERIC",
    "id": "mortar_build",
    "symbol": "%",
    "color": "light_gray",
    "name": { "str_sp": "mortar" },
    "description": "Some mortar, ready to be used in building projects.",
    "category": "spare_parts",
    "container": "bag_canvas",
    "price": 5000,
    "price_postapoc": 25,
    "material": [ "powder_nonflam" ],
    "weight": "2340 g",
    "volume": "1 L",
    "melee_damage": { "bash": 4 }
  },
  {
    "type": "GENERIC",
    "id": "mortar_lime",
    "symbol": "%",
    "color": "white",
    "name": { "str_sp": "lime mortar" },
    "description": "Some lime mortar, made from quicklime and aggregate and ready for building.",
    "category": "spare_parts",
    "container": "bag_canvas",
    "price": 2000,
    "price_postapoc": 15,
    "material": [ "powder_nonflam" ],
    "weight": "2340 g",
    "volume": "1 L",
    "melee_damage": { "bash": 4 }
  },
  {
    "type": "GENERIC",
    "id": "soft_adobe_brick",
    "category": "spare_parts",
    "symbol": ",",
    "color": "brown",
    "name": { "str": "soft adobe brick" },
    "description": "A compacted mass of soil and natural fibers, still too wet to build with.  Load it onto a pallet and leave it to dry.",
    "price": 0,
    "price_postapoc": 0,
    "material": [ "soil" ],
    "weight": "1750 g",
    "volume": "750 ml",
    "to_hit": -3,
    "use_action": {
      "target": "adobe_brick",
      "msg": "You test the brick, and it seems solid enough to use.",
      "moves": 50,
      "type": "delayed_transform",
      "transform_age": 604800,
      "not_ready_msg": "The brick is still too damp to bear weight.",
      "//": "Should be about a week. Irl it's ten days, so make big batches."
    },
    "melee_damage": { "bash": 2 }
  },
  {
    "type": "GENERIC",
    "id": "adobe_brick",
    "category": "spare_parts",
    "symbol": ",",
    "color": "yellow",
    "looks_like": "brick",
    "name": { "str": "adobe brick" },
    "description": "A compacted mass of soil and natural fibers, baked dry enough to harden into a brick.",
    "material": [ "soil" ],
    "flags": [ "NONCONDUCTIVE" ],
    "weight": "1500 g",
    "volume": "2250 ml",
    "to_hit": -2,
    "price": 2000,
    "price_postapoc": 10,
    "qualities": [ [ "HAMMER", 1 ] ],
    "melee_damage": { "bash": 10 }
  },
  {
    "type": "GENERIC",
    "id": "mortar_adobe",
    "symbol": "%",
    "color": "brown",
    "name": { "str_sp": "adobe mortar" },
    "description": "A thick, pasty mud, low in sand content to reduce crumbling once dry.  Used to glue larger, heavier pieces of mud and clay together.",
    "category": "spare_parts",
    "container": "bag_canvas",
    "price": 200,
    "price_postapoc": 10,
    "material": [ "soil" ],
    "weight": "2340 g",
    "volume": "1 L",
    "melee_damage": { "bash": 4 }
  },
  {
    "type": "GENERIC",
    "id": "tanbark",
    "symbol": ",",
    "color": "brown",
    "name": { "str_sp": "tanbark" },
    "description": "A sheet of tannin-rich bark from a tree, useful for tanning leather",
    "price": 0,
    "price_postapoc": 0,
    "material": [ "wood" ],
    "weight": "323 g",
    "volume": "250 ml",
    "to_hit": 1,
    "melee_damage": { "bash": 4 }
  },
  {
    "type": "GENERIC",
    "id": "birchbark",
    "symbol": ",",
    "color": "brown",
    "name": { "str": "birchbark" },
    "description": "A sheet of tough, water-resistant bark taken from a birch tree.",
    "price": 0,
    "price_postapoc": 0,
    "material": [ "wood" ],
    "weight": "323 g",
    "volume": "250 ml",
    "to_hit": 1,
    "melee_damage": { "bash": 4 }
  },
  {
    "type": "GENERIC",
    "id": "willowbark",
    "symbol": ",",
    "color": "brown",
    "name": { "str_sp": "willowbark" },
    "description": "A sheet of bark taken from a willow tree.  Used in the production of aspirin.",
    "price": 0,
    "price_postapoc": 10,
    "material": [ "wood" ],
    "weight": "323 g",
    "volume": "250 ml",
    "to_hit": 1,
    "melee_damage": { "bash": 4 }
  },
  {
    "type": "GENERIC",
    "id": "sassafras_root",
    "symbol": ",",
    "color": "brown",
    "name": { "str_sp": "sassafras root" },
    "description": "A root taken from a sassafras tree.  Used in the production of certain sweet beverages.",
    "price": 0,
    "price_postapoc": 5,
    "material": [ "wood" ],
    "weight": "85 g",
    "volume": "109 ml",
    "to_hit": 1,
    "melee_damage": { "bash": 4 }
  },
  {
    "type": "GENERIC",
    "id": "diamond",
    "symbol": "*",
    "color": "white",
    "flags": [ "GEMSTONE" ],
    "name": { "str": "diamond" },
    "description": "A sparkling diamond.",
    "price": 1000000,
    "price_postapoc": 50,
    "material": [ "diamond" ],
    "weight": "200 mg",
    "volume": "6 ml",
    "to_hit": -5
  },
  {
    "type": "GENERIC",
    "id": "garnet",
    "symbol": "*",
    "color": "red",
    "flags": [ "GEMSTONE" ],
    "name": { "str": "garnet" },
    "description": "A sparkling garnet.",
    "price": 800000,
    "price_postapoc": 30,
    "material": [ "gemstone" ],
    "weight": "200 mg",
    "volume": "6 ml",
    "to_hit": -5
  },
  {
    "type": "GENERIC",
    "id": "amethyst",
    "copy-from": "garnet",
    "flags": [ "GEMSTONE" ],
    "color": "blue",
    "name": { "str": "amethyst" },
    "description": "A sparkling amethyst."
  },
  {
    "type": "GENERIC",
    "id": "aquamarine",
    "copy-from": "garnet",
    "flags": [ "GEMSTONE" ],
    "color": "cyan",
    "name": { "str": "aquamarine" },
    "description": "A sparkling aquamarine."
  },
  {
    "type": "GENERIC",
    "id": "emerald",
    "copy-from": "garnet",
    "flags": [ "GEMSTONE" ],
    "color": "green",
    "name": { "str": "emerald" },
    "description": "A sparkling emerald."
  },
  {
    "type": "GENERIC",
    "id": "alexandrite",
    "copy-from": "garnet",
    "flags": [ "GEMSTONE" ],
    "color": "green",
    "name": { "str": "alexandrite" },
    "description": "A sparkling alexandrite."
  },
  {
    "type": "GENERIC",
    "id": "malachite",
    "copy-from": "garnet",
    "flags": [ "GEMSTONE" ],
    "color": "green",
    "name": { "str": "malachite" },
    "description": "A sparkling malachite."
  },
  {
    "type": "GENERIC",
    "id": "pearl",
    "copy-from": "garnet",
    "flags": [ "GEMSTONE" ],
    "color": "white",
    "name": { "str": "pearl" },
    "description": "A lustrous pearl."
  },
  {
    "type": "GENERIC",
    "id": "ruby",
    "copy-from": "garnet",
    "flags": [ "GEMSTONE" ],
    "color": "red",
    "name": { "str": "ruby", "str_pl": "rubies" },
    "description": "A sparkling ruby."
  },
  {
    "type": "GENERIC",
    "id": "peridot",
    "copy-from": "garnet",
    "flags": [ "GEMSTONE" ],
    "color": "green",
    "name": { "str": "peridot" },
    "description": "A sparkling peridot."
  },
  {
    "type": "GENERIC",
    "id": "sapphire",
    "copy-from": "garnet",
    "flags": [ "GEMSTONE" ],
    "color": "blue",
    "name": { "str": "sapphire" },
    "description": "A sparkling sapphire."
  },
  {
    "type": "GENERIC",
    "id": "opal",
    "copy-from": "garnet",
    "flags": [ "GEMSTONE" ],
    "color": "white",
    "name": { "str": "opal" },
    "description": "A lustrous opal."
  },
  {
    "type": "GENERIC",
    "id": "tourmaline",
    "copy-from": "garnet",
    "flags": [ "GEMSTONE" ],
    "color": "light_red",
    "name": { "str": "tourmaline" },
    "description": "A sparkling tourmaline."
  },
  {
    "type": "GENERIC",
    "id": "citrine",
    "copy-from": "garnet",
    "flags": [ "GEMSTONE" ],
    "color": "yellow",
    "name": { "str": "citrine" },
    "description": "A sparkling citrine."
  },
  {
    "type": "GENERIC",
    "id": "blue_topaz",
    "copy-from": "garnet",
    "flags": [ "GEMSTONE" ],
    "color": "light_blue",
    "name": { "str": "topaz", "str_pl": "topazes" },
    "description": "A sparkling blue topaz."
  },
  {
    "type": "GENERIC",
    "id": "onyx",
    "copy-from": "garnet",
    "flags": [ "GEMSTONE" ],
    "color": "dark_gray",
    "name": { "str": "onyx", "str_pl": "onyxes" },
    "description": "A beautiful black onyx."
  },
  {
    "type": "COMESTIBLE",
    "comestible_type": "FOOD",
    "id": "straw_pile",
    "name": { "str": "pile of straw", "str_pl": "piles of straw" },
    "category": "spare_parts",
    "symbol": ",",
    "color": "light_gray",
    "calories": 15,
    "description": "A pile of dry grass.  Can be used to craft a straw bed if there is nothing else to sleep on.",
    "material": [ "veggy", "dry_plant" ],
    "flags": [ "TRADER_AVOID", "INEDIBLE", "CATTLE", "TINDER", "RABBIT" ],
    "weight": "34 g",
    "volume": "250 ml",
    "to_hit": -2
  },
  {
    "type": "GENERIC",
    "id": "straw_doll",
    "symbol": "o",
    "color": "light_gray",
    "name": { "str": "straw doll" },
    "description": "An old straw doll, made to look like a woman in a dress.",
    "price": 100,
    "price_postapoc": 0,
    "material": [ "paper" ],
    "flags": [ "TINDER" ],
    "weight": "80 g",
    "volume": "500 ml"
  },
  {
    "type": "GENERIC",
    "id": "pillow",
    "symbol": ",",
    "color": "blue",
    "name": { "str": "pillow" },
    "description": "A pillow to rest your head on when sleeping.",
    "price": 1000,
    "price_postapoc": 10,
    "material": [ "cotton" ],
    "weight": "514 g",
    "container": "pillowcase",
    "volume": "1 L",
    "flags": [ "SLEEP_AID" ],
    "category": "other"
  },
  {
    "type": "GENERIC",
    "id": "makeshift_pillow",
    "symbol": ",",
    "color": "blue",
    "name": { "str": "makeshift pillow" },
    "description": "A pillowcase with straw and other dead plants as filling.  It's better than nothing…",
    "price": 1000,
    "price_postapoc": 10,
    "material": [ "paper" ],
    "weight": "514 g",
    "container": "pillowcase",
    "volume": "1 L",
    "flags": [ "SLEEP_AID" ],
    "category": "other"
  },
  {
    "type": "GENERIC",
    "id": "bodypillow",
    "symbol": "[",
    "color": "white",
    "name": { "str": "body pillow" },
    "description": "A big, body-sized pillow with a print of an anime character on the front and their scantily-clad version on the back.",
    "price": 1500,
    "price_postapoc": 100,
    "material": [ "cotton" ],
    "weight": "774 g",
    "volume": "1750 ml",
    "flags": [ "SLEEP_AID" ],
    "variant_type": "generic",
    "variants": [
      {
        "id": "bodypillow_generic",
        "name": { "str": "anime body pillow" },
        "description": "A big, body-sized pillow with a print of an anime character on the front and their scantily-clad version on the back."
      },
      {
        "id": "bodypillow_azurlane",
        "name": { "str": "ship body pillow" },
        "description": "A big, body-sized pillow with a print of an aircraft carrier drawn on both sides.  The one on the back is stripped of its armor plating, how naughty."
      },
      {
        "id": "bodypillow_gfl",
        "name": { "str": "gun body pillow" },
        "description": "A big, body-sized pillow with a print of a fully-modded tacticool M4 SOPMOD II on both sides.  The rifle firing a grenade somehow looks suggestive."
      },
      {
        "id": "bodypillow_boston",
        "name": { "str": "Boston-Chan body pillow" },
        "description": "A big, body-sized pillow with a print of a blue-haired Boston-Chan, the mascot of Boston AnimeCon, on both sides.  This seems to be official merch, and the art on both sides is quite tame.",
        "weight": 2
      },
      {
        "id": "bodypillow_boston_lewd",
        "name": { "str": "Boston-Chan body pillow" },
        "description": "A big, body-sized pillow with a print of a blue-haired Boston-Chan, the mascot of Boston AnimeCon, on both sides.  It's highly unlikely the convention would officially endorse such a lewd depiction of her."
      },
      {
        "id": "bodypillow_survivor",
        "name": { "str": "survivor body pillow" },
        "description": "A big, body-sized pillow with an anime-style print of Bear Grillings, Ultimate Survivor on both sides.  On one side he's holding a pneumatic air rifle, and on the other he is clad in nothing but duct tape.  The pillow is stylized to look like Kevlar."
      },
      {
        "id": "bodypillow_furry",
        "name": { "str": "fox body pillow" },
        "description": "A big, body-sized pillow with a print of an anthropomorphic fox on the front and a scantily-clad version on the back."
      },
      {
        "id": "bodypillow_vocaloid",
        "name": { "str": "vocaloid body pillow" },
        "description": "A big, body-sized pillow with a print of a popular blue-twintailed virtual musician on the front and her scantily-clad version on the back."
      },
      {
        "id": "bodypillow_goth",
        "name": { "str": "goth body pillow" },
        "description": "A big, body-sized pillow with a print of an anime character dressed in all black on the front and their scantily-clad version on the back.  They're surrounded by red candles and laying atop a demonic pentagram."
      },
      {
        "id": "bodypillow_yandere",
        "name": { "str": "yandere body pillow" },
        "description": "A big, body-sized pillow with a print of a cute maid on the front and the same maid - covered in blood and holding a knife - on the back."
      },
      {
        "id": "bodypillow_tomboy",
        "name": { "str": "tomboy body pillow" },
        "description": "A big, body-sized pillow with a print of a masculine woman on the front and her scantily-clad version on the back.  It's captioned with 'TOMBOY SUPREMACY' on both sides."
      },
      {
        "id": "bodypillow_femboy",
        "name": { "str": "femboy body pillow" },
        "description": "A big, body-sized pillow with a print of a feminine man on the front and his scantily-clad version on the back.  It's captioned with 'FEMBOY SUPREMACY' on both sides."
      },
      {
        "id": "bodypillow_tsundere",
        "name": { "str": "tsundere body pillow" },
        "description": "A big, body-sized pillow with a print of a pouting anime character on the front and their scantily-clad version on the back.  They don't actually like you or anything, they swear!"
      },
      {
        "id": "bodypillow_vtuber",
        "name": { "str": "VTuber body pillow" },
        "description": "A big, body-sized pillow with a print of a popular anime VTuber on the front and their scantily-clad version on the back."
      },
      {
        "id": "bodypillow_makeshift",
        "name": { "str": "makeshift body pillow" },
        "description": "A big, body-sized pillow.  Someone drew a vaguely humanoid figure on it.  Its heartwarming smile fills you with joy.",
        "weight": 0
      }
    ],
    "category": "other"
  },
  {
    "type": "GENERIC",
    "id": "down_pillow",
    "symbol": ",",
    "color": "blue",
    "name": { "str": "down-filled pillow" },
    "description": "A fluffy pillow to rest your head on when sleeping.",
    "price": 1000,
    "price_postapoc": 10,
    "material": [ "cotton" ],
    "weight": "514 g",
    "container": "pillowcase",
    "volume": "1 L",
    "flags": [ "SLEEP_AID" ],
    "category": "other"
  },
  {
    "id": "pouch_autoclave",
    "type": "AMMO",
    "ammo_type": "NULL",
    "category": "other",
    "name": { "str": "autoclave pouch", "str_pl": "autoclave pouches" },
    "description": "A medical device that bears the approval of the FDA (Food and Drug Administration).  If used properly, this pouch can keep things sterile indefinitely.",
    "weight": "2 g",
    "volume": "1 ml",
    "price": 5,
    "price_postapoc": 100,
    "use_action": [ "PACK_CBM" ],
    "to_hit": -1,
    "material": [ "plastic", "paper" ],
    "symbol": "]",
    "count": 25,
    "color": "light_gray"
  },
  {
    "type": "GENERIC",
    "id": "cigar_lit",
    "name": { "str": "cigar" },
    "color": "brown",
    "symbol": "!",
    "description": "The smoke billowing from this cigar has a sweet, musty odor.",
    "weight": "9 g",
    "volume": "15 ml",
    "category": "drugs",
    "emits": [ "emit_tobacco_trail" ],
    "use_action": [
      { "type": "firestarter", "moves": 200, "moves_slow": 2000 },
      {
        "target": "cigar_butt",
        "msg": "You extinguish the cigar.",
        "active": false,
        "menu_text": "Extinguish",
        "type": "transform"
      }
    ],
    "material": [ "paper" ],
    "armor_data": {
      "warmth": 6,
      "armor": [
        {
          "material": [ { "type": "paper", "covered_by_mat": 100, "thickness": 0.1 } ],
          "encumbrance": 25,
          "coverage": 70,
          "covers": [ "mouth" ]
        }
      ]
    },
    "flags": [ "LITCIG", "LIGHT_2", "TOBACCO", "TRADER_AVOID", "FIRESTARTER", "FRAGILE", "OVERSIZE" ]
  },
  {
    "type": "GENERIC",
    "id": "cigar_butt",
    "name": { "str": "cigar butt" },
    "color": "dark_gray",
    "symbol": "!",
    "weight": "1 g",
    "volume": "1 ml",
    "description": "A true gentleman always finishes his cigars.",
    "category": "other",
    "flags": [ "TRADER_AVOID" ]
  },
  {
    "type": "GENERIC",
    "id": "cig_lit",
    "name": { "str": "cigarette" },
    "color": "white",
    "symbol": "!",
    "description": "Smoke swirls from the lit end of this cigarette, filling the air with the thrilling smell of burning chemicals.",
    "weight": "1 g",
    "volume": "4 ml",
    "category": "drugs",
    "emits": [ "emit_tobacco_trail" ],
    "use_action": [
      { "type": "firestarter", "moves": 200, "moves_slow": 2000 },
      {
        "target": "cig_butt",
        "msg": "You extinguish the cigarette.",
        "active": false,
        "menu_text": "Extinguish",
        "type": "transform"
      }
    ],
    "material": [ "paper" ],
    "armor_data": {
      "warmth": 3,
      "armor": [
        {
          "material": [ { "type": "paper", "covered_by_mat": 100, "thickness": 0.1 } ],
          "encumbrance": 15,
          "coverage": 25,
          "covers": [ "mouth" ]
        }
      ]
    },
    "flags": [ "LITCIG", "LIGHT_2", "TOBACCO", "TRADER_AVOID", "FIRESTARTER", "FRAGILE", "OVERSIZE" ]
  },
  {
    "type": "GENERIC",
    "id": "cig_butt",
    "name": { "str": "cigarette butt" },
    "color": "dark_gray",
    "symbol": "!",
    "description": "What was once a wonderfully addictive tube of dried tobacco leaf is now just a smelly piece of trash.  What a tragedy!\nThe leftover tobacco in a few of these could probably be used to roll another cigarette.  If you're willing to go that far…",
    "category": "other",
    "weight": "1 g",
    "volume": "1 ml",
    "flags": [ "TRADER_AVOID" ]
  },
  {
    "type": "GENERIC",
    "id": "joint_lit",
    "name": { "str": "joint" },
    "color": "light_green",
    "symbol": "!",
    "description": "The smell of skunk permeates the air as a thin trail of smoke floats off of this joint.",
    "weight": "1 g",
    "volume": "4 ml",
    "category": "drugs",
    "emits": [ "emit_joint_trail" ],
    "use_action": [
      { "type": "firestarter", "moves": 200, "moves_slow": 2000 },
      {
        "target": "joint_roach",
        "msg": "You extinguish the joint.",
        "active": false,
        "menu_text": "Extinguish",
        "type": "transform"
      }
    ],
    "material": [ "paper" ],
    "armor_data": {
      "warmth": 3,
      "armor": [
        {
          "material": [ { "type": "paper", "covered_by_mat": 100, "thickness": 0.1 } ],
          "encumbrance": 15,
          "coverage": 25,
          "covers": [ "mouth" ]
        }
      ]
    },
    "flags": [ "LITCIG", "LIGHT_2", "TRADER_AVOID", "FIRESTARTER", "FRAGILE", "OVERSIZE" ]
  },
  {
    "type": "GENERIC",
    "id": "joint_roach",
    "name": { "str": "joint roach", "str_pl": "joint roaches" },
    "color": "green",
    "symbol": "!",
    "description": "The smoked-down butt of a joint, a reminder of some good times.  Pretty much trash now.  Bummer, man.\nA few of these could probably be used to roll another joint.",
    "category": "other",
    "weight": "1 g",
    "volume": "1 ml",
    "flags": [ "TRADER_AVOID" ]
  },
  {
    "type": "GENERIC",
    "id": "cannabis",
    "symbol": "%",
    "color": "light_green",
    "name": { "str": "cannabis plant" },
    "description": "A psychoactive plant indigenous to Central Asia and the Indian subcontinent traditionally cultivated for its fiber, oil, for medicinal purposes, and for use as a recreational drug.  It requires further processing to be useful.",
    "price": 2000,
    "price_postapoc": 50,
    "material": [ "veggy" ],
    "weight": "420 g",
    "volume": "1 L"
  },
  {
    "type": "GENERIC",
    "id": "tobacco_raw",
    "symbol": "%",
    "color": "light_green",
    "name": { "str_sp": "raw tobacco" },
    "description": "Various parts of a tobacco plant, full of nicotine.  They need to be dried to become smokable.",
    "looks_like": "wild_herbs",
    "price": 300,
    "price_postapoc": 50,
    "material": [ "veggy" ],
    "weight": "100 g",
    "volume": "250 ml"
  },
  {
    "abstract": "card_plastic_abstract",
    "type": "TOOL",
    "symbol": ",",
    "color": "cyan",
    "name": { "str": "abstract plastic card" },
    "description": "A generic plastic card item template with numbers based off a credit card.",
    "price": 0,
    "price_postapoc": 0,
    "material": [ "plastic" ],
    "weight": "5 g",
    "volume": "5 ml",
    "longest_side": "84 mm",
    "//": "Based on my own cash card that I measured with a ruler. Yes I'm professional like that. 8.4cm x 5.3cm x 0.1cm. Really it's slightly less than 5ml but we don't do volume lower than 1ml.",
    "flags": [ "CREDIT_CARD_SHAPED" ],
    "to_hit": { "grip": "bad", "length": "hand", "surface": "any", "balance": "neutral" }
  },
  {
    "id": "cash_card",
    "type": "TOOL",
    "category": "currency",
    "copy-from": "card_plastic_abstract",
    "symbol": "$",
    "color": "yellow",
    "name": { "str": "cash card" },
    "ascii_picture": "cashcard",
    "description": "A yellow plastic card used to electronically store money.  It holds up to 2 million dollars.",
    "price": 1000,
    "extend": { "flags": [ "NO_UNLOAD", "NO_RELOAD", "TRADER_AVOID" ] },
    "pocket_data": [ { "pocket_type": "MAGAZINE", "rigid": true, "ammo_restriction": { "money": 200000000 } } ],
    "rand_charges": [
      0,
      1,
      2,
      3,
      4,
      5,
      6,
      7,
      8,
      9,
      10,
      50,
      100,
      200,
      300,
      500,
      800,
      1000,
      1200,
      1400,
      1600,
      1800,
      2000,
      3000,
      4000,
      5000,
      6000,
      7000,
      8000,
      9000,
      10000,
      12000,
      14000,
      16000,
      18000,
      20000,
      50000,
      100000
    ],
    "ammo": [ "money" ]
  },
  {
    "id": "robofac_test_data",
    "type": "TOOL",
    "copy-from": "card_plastic_abstract",
    "color": "yellow",
    "name": { "str": "prototype I/O recorder" },
    "description": "A small, transparent card that was attached to the prototype robot's CPU.  It might contain the data the intercom spoke of.",
    "category": "other",
    "price": 500,
    "extend": { "flags": [ "MISSION_ITEM" ] }
  },
  {
    "type": "GENERIC",
    "//": "Item for meteorologist mission.",
    "id": "module_meteorologist",
    "name": { "str": "drone memory bank" },
    "description": "A memory bank containing the information collected by the meteorologist drone.",
    "copy-from": "robot_module_abstract",
    "flags": [ "TRADER_AVOID" ]
  },
  {
    "id": "gasdiscount_silver",
    "type": "TOOL",
    "category": "currency",
    "copy-from": "card_plastic_abstract",
    "color": "yellow",
    "name": { "str": "silver gas discount card" },
    "description": "This card gives you a little discount on the purchase of gasoline.",
    "price": 500,
    "extend": { "flags": [ "GAS_DISCOUNT", "DISCOUNT_VALUE_1" ] }
  },
  {
    "id": "gasdiscount_gold",
    "type": "TOOL",
    "category": "currency",
    "copy-from": "card_plastic_abstract",
    "color": "yellow",
    "name": { "str": "gold gas discount card" },
    "description": "This card gives you a good discount on the purchase of gasoline.",
    "price": 500,
    "extend": { "flags": [ "GAS_DISCOUNT", "DISCOUNT_VALUE_2" ] }
  },
  {
    "id": "gasdiscount_platinum",
    "type": "TOOL",
    "category": "currency",
    "copy-from": "card_plastic_abstract",
    "color": "yellow",
    "name": { "str": "platinum gas discount card" },
    "description": "This card gives you a splendid discount on the purchase of gasoline.",
    "price": 500,
    "extend": { "flags": [ "GAS_DISCOUNT", "DISCOUNT_VALUE_3" ] }
  },
  {
    "type": "GENERIC",
    "id": "neoprene",
    "symbol": ",",
    "color": "dark_gray",
    "name": { "str": "neoprene patch", "str_pl": "neoprene patches" },
    "description": "A small neoprene patch.  Can be used to repair neoprene clothing.",
    "price": 1000,
    "price_postapoc": 100,
    "material": [ "neoprene" ],
    "flags": [ "NO_SALVAGE" ],
    "weight": "3 g",
    "volume": "23 ml",
    "category": "spare_parts"
  },
  {
    "id": "light_bulb",
    "type": "GENERIC",
    "name": { "str": "light bulb" },
    "description": "A rather outdated light bulb used in all sorts of lighting equipment.",
    "symbol": ",",
    "color": "white",
    "material": [ "glass" ],
    "weight": "10 g",
    "volume": "250 ml",
    "price": 500,
    "price_postapoc": 10
  },
  {
    "id": "shrapnel",
    "type": "AMMO",
    "name": { "str_sp": "shrapnel" },
    "description": "A twisted shard of jagged metal.",
    "weight": "5 g",
    "volume": "20 ml",
    "price": 0,
    "price_postapoc": 0,
    "stack_size": 50,
    "material": [ "steel" ],
    "symbol": ".",
    "flags": [ "HURT_WHEN_WIELDED" ],
    "color": "white",
    "ammo_type": "components"
  },
  {
    "id": "clay_pot_flower",
    "type": "GENERIC",
    "category": "other",
    "name": { "str": "clay flower pot" },
    "description": "A nice-looking clay pot used for planting.",
    "weight": "480 g",
    "volume": "2500 ml",
    "price": 600,
    "price_postapoc": 10,
    "material": [ "clay" ],
    "symbol": ")",
    "color": "brown",
    "melee_damage": { "bash": 1 }
  },
  {
    "id": "plastic_pot_flower",
    "type": "GENERIC",
    "category": "other",
    "name": { "str": "plastic flower pot" },
    "description": "A cheap plastic pot used for planting.",
    "weight": "190 g",
    "volume": "2500 ml",
    "price": 300,
    "price_postapoc": 10,
    "material": [ "plastic" ],
    "symbol": ")",
    "color": "green",
    "melee_damage": { "bash": 1 }
  },
  {
    "id": "fluid_preserved_brain",
    "type": "GENERIC",
    "category": "other",
    "name": { "str": "fluid-preserved brain" },
    "description": "This 3L jar contains a human brain preserved in a formaldehyde solution.",
    "weight": "365 g",
    "volume": "3 L",
    "price": 100,
    "price_postapoc": 0,
    "to_hit": -1,
    "material": [ "glass" ],
    "symbol": ")",
    "color": "pink",
    "looks_like": "jar_3l_glass_sealed",
    "melee_damage": { "bash": 5 }
  },
  {
    "id": "evaporator_coil",
    "type": "GENERIC",
    "category": "spare_parts",
    "name": { "str": "evaporator coil" },
    "description": "A set of long, snakelike tubes for evaporating refrigerant.",
    "weight": "20000 g",
    "volume": "2 L",
    "price": 1000,
    "price_postapoc": 10,
    "material": [ "steel" ],
    "symbol": "#",
    "color": "black"
  },
  {
    "id": "condensor_coil",
    "type": "GENERIC",
    "category": "spare_parts",
    "name": { "str": "condensor coil" },
    "description": "A compressor and fan that work together to cool down refrigerant.",
    "weight": "20000 g",
    "volume": "2 L",
    "price": 1000,
    "price_postapoc": 10,
    "material": [ "steel" ],
    "symbol": "#",
    "color": "black"
  },
  {
    "id": "refrigerant_tank",
    "type": "GENERIC",
    "name": { "str": "refrigerant tank" },
    "description": "A small tank containing some sort of refrigerant often used in devices such as freezers.  Hermetically sealed to prevent evaporation - cannot be opened without prior connection to a compatible valve.",
    "weight": "410 g",
    "volume": "1L",
    "price": 3000,
    "price_postapoc": 50,
    "to_hit": -4,
    "material": [ "steel" ],
    "symbol": "}",
    "color": "light_cyan",
    "melee_damage": { "bash": 5 }
  },
  {
    "type": "GENERIC",
    "id": "hard_steel_armor",
    "category": "spare_parts",
    "symbol": ",",
    "color": "light_cyan",
    "name": { "str": "hard steel plate" },
    "description": "An armor plate made of very thick steel, specifically engineered for use in a bullet-resistant vest.",
    "price": 10000,
    "price_postapoc": 100,
    "material": [ "qt_steel" ],
    "weight": "1500 g",
    "volume": "500 ml",
    "melee_damage": { "bash": 6 }
  },
  {
    "type": "GENERIC",
    "id": "steel_armor",
    "category": "spare_parts",
    "symbol": ",",
    "color": "light_cyan",
    "name": { "str": "steel plate" },
    "description": "A steel armor plate, specifically engineered for use in a bullet-resistant vest.",
    "price": 9000,
    "price_postapoc": 50,
    "material": [ "steel" ],
    "weight": "1000 g",
    "volume": "500 ml",
    "melee_damage": { "bash": 5 }
  },
  {
    "type": "GENERIC",
    "id": "lock",
    "category": "spare_parts",
    "symbol": "P",
    "color": "dark_gray",
    "name": { "str": "small lock and key", "str_pl": "small locks and keys" },
    "description": "A small lock, with its key still inserted.",
    "price": 500,
    "price_postapoc": 10,
    "material": [ "steel" ],
    "weight": "5 g",
    "volume": "20 ml",
    "melee_damage": { "bash": 1 }
  },
  {
    "type": "GENERIC",
    "id": "craft",
    "symbol": "%",
    "color": "white",
    "name": { "str": "in-progress craft" },
    "description": "This is an in-progress craft.",
    "price": 0,
    "price_postapoc": 0,
    "weight": "1 g",
    "volume": "250 ml",
    "use_action": [ "CRAFT" ],
    "flags": [ "NO_SALVAGE", "TRADER_AVOID", "CAN_HAVE_CHARGES" ]
  },
  {
    "type": "GENERIC",
    "id": "disassembly",
    "symbol": "%",
    "color": "white",
    "name": { "str": "in-progress disassembly", "str_pl": "in-progress disassemblies" },
    "description": "This is an in-progress disassembly.",
    "price": 0,
    "price_postapoc": 0,
    "weight": "1 g",
    "volume": "250 ml",
    "use_action": [ "DISASSEMBLE" ],
    "flags": [ "NO_SALVAGE", "TRADER_AVOID", "CAN_HAVE_CHARGES" ]
  },
  {
    "type": "GENERIC",
    "id": "spare_tire_carrier",
    "category": "spare_parts",
    "symbol": "t",
    "color": "dark_gray",
    "name": { "str": "spare tire carrier" },
    "description": "A bumper-mounted rig for attaching and storing a spare tire on the back of a vehicle.  Combine it with a wheel to get a mountable piece.",
    "price": 3500,
    "price_postapoc": 250,
    "material": [ "steel" ],
    "weight": "5000 g",
    "volume": "5 L",
    "melee_damage": { "bash": 8 }
  },
  {
    "type": "GENERIC",
    "id": "amplifier_head",
    "symbol": ";",
    "color": "blue",
    "name": { "str": "amplifier head" },
    "description": "An amplifier head.  Typically paired with a speaker cabinet for amplifying musical instruments.  Basically only good for spare parts now.",
    "price": 25000,
    "price_postapoc": 100,
    "material": [ "steel", "plastic", "wood" ],
    "weight": "11339 g",
    "volume": "3 L"
  },
  {
    "type": "GENERIC",
    "id": "broken_turret",
    "symbol": ",",
    "color": "green",
    "name": { "str": "broken turret" },
    "category": "other",
    "description": "A broken turret.  Much less threatening now that it's laid limp on solid ground.  Could be gutted for parts.",
    "price": 1000,
    "price_postapoc": 10,
    "material": [ "steel", "plastic" ],
    "weight": "72650 g",
    "volume": "30 L",
    "to_hit": -3,
    "flags": [ "TRADER_AVOID", "NO_REPAIR", "NO_SALVAGE" ],
    "melee_damage": { "bash": 4, "cut": 4 }
  },
  {
    "type": "GENERIC",
    "id": "broken_turret_riot",
    "symbol": ",",
    "color": "blue",
    "name": { "str": "broken riot control turret" },
    "description": "A broken riot control turret.  Much less threatening now that it's laid limp on solid ground.  Could be gutted for parts.",
    "copy-from": "broken_turret"
  },
  {
    "type": "GENERIC",
    "id": "broken_turret_rifle",
    "symbol": ",",
    "color": "green",
    "name": { "str": "broken M249 autonomous CROWS II", "str_pl": "broken M249 autonomous CROWS II turrets" },
    "weight": "75 kg",
    "copy-from": "broken_turret"
  },
  {
    "type": "GENERIC",
    "id": "broken_crows_m240",
    "symbol": ",",
    "color": "green",
    "name": { "str": "broken M240 autonomous CROWS II", "str_pl": "broken M240 autonomous CROWS II turrets" },
    "weight": "75 kg",
    "copy-from": "broken_turret"
  },
  {
    "type": "GENERIC",
    "id": "broken_turret_bmg",
    "symbol": ",",
    "color": "green",
    "name": { "str": "broken M2 autonomous CROWS II", "str_pl": "broken M2 autonomous CROWS II turrets" },
    "weight": "100 kg",
    "copy-from": "broken_turret"
  },
  {
    "type": "GENERIC",
    "id": "broken_turret_artisans",
    "symbol": ",",
    "color": "green",
    "name": { "str": "broken custom plated turret" },
    "weight": "75 kg",
    "copy-from": "broken_turret"
  },
  {
    "type": "GENERIC",
    "id": "broken_secubot",
    "symbol": ",",
    "color": "green",
    "name": { "str": "broken secubot" },
    "category": "other",
    "description": "A broken secubot, with its casing broken and fluid drained.  Could be gutted for parts.",
    "price": 1000,
    "price_postapoc": 10,
    "material": [ "steel", "plastic" ],
    "weight": "100 kg",
    "volume": "65 L",
    "to_hit": -3,
    "flags": [ "TRADER_AVOID", "NO_REPAIR", "NO_SALVAGE" ],
    "melee_damage": { "bash": 4, "cut": 4 }
  },
  {
    "type": "GENERIC",
    "id": "broken_talon_m202a1",
    "symbol": ",",
    "color": "green",
    "name": { "str": "broken M202A1 TALON" },
    "category": "other",
    "description": "A broken TALON UGV, with its casing broken and fluid drained.  Could be gutted for parts.",
    "price": 1000,
    "price_postapoc": 10,
    "material": [ "steel", "plastic" ],
    "weight": "100 kg",
    "volume": "65 L",
    "to_hit": -3,
    "flags": [ "TRADER_AVOID", "NO_REPAIR", "NO_SALVAGE" ],
    "melee_damage": { "bash": 4, "cut": 4 }
  },
  {
    "type": "GENERIC",
    "id": "broken_robofac_laserturret_mk1",
    "symbol": ",",
    "color": "green",
    "name": { "str": "broken laser turret" },
    "weight": "40 kg",
    "copy-from": "broken_turret"
  },
  {
    "type": "GENERIC",
    "id": "fire_brick",
    "symbol": ",",
    "color": "brown",
    "name": { "str": "fire brick" },
    "category": "spare_parts",
    "description": "A reinforced brick designed to withstand intense heat.",
    "price": 2500,
    "price_postapoc": 10,
    "material": [ "clay", "stone" ],
    "weight": "969 g",
    "volume": "500 ml",
    "to_hit": -2,
    "qualities": [ [ "HAMMER", 1 ] ],
    "melee_damage": { "bash": 8 }
  },
  {
    "id": "plastic_six_dice",
    "type": "GENERIC",
    "category": "other",
    "name": { "str": "plastic die", "str_pl": "plastic dice" },
    "description": "A six-sided plastic die.",
    "weight": "5 g",
    "volume": "10 ml",
    "price": 100,
    "price_postapoc": 1,
    "material": [ "plastic" ],
    "symbol": ".",
    "color": "white",
    "flags": [ "NO_REPAIR" ]
  },
  {
    "id": "salt_lick",
    "type": "GENERIC",
    "category": "other",
    "name": { "str": "salt lick" },
    "description": "A heavy cube-shaped block of salt for livestock.  Don't lick it, it's gross.",
    "weight": "18 kg",
    "volume": "10 L",
    "looks_like": "adobe_brick",
    "price": 5000,
    "price_postapoc": 100,
    "material": [ "salt", "stone" ],
    "symbol": ".",
    "color": "white",
    "flags": [ "NO_REPAIR" ]
  },
  {
    "type": "GENERIC",
    "id": "alder_bark",
    "symbol": ",",
    "color": "brown",
    "name": { "str_sp": "alder bark" },
    "description": "A strip of bark pulled from an alder tree.  Used in the production of topical hemostatics.",
    "price": 0,
    "price_postapoc": 10,
    "material": [ "wood" ],
    "weight": "200 g",
    "volume": "250 ml",
    "to_hit": 1,
    "melee_damage": { "bash": 4 }
  },
  {
    "id": "wallet",
    "type": "GENERIC",
    "category": "container",
    "name": { "str": "wallet" },
    "looks_like": "bag_plastic",
    "description": "A small, flat case used to carry items such as currency, identification documents, and laminated cards.",
    "volume": "200 ml",
    "weight": "60 g",
    "price": 1,
    "price_postapoc": 10,
    "material": [ "plastic" ],
    "flags": [ "COLLAPSE_CONTENTS" ],
    "symbol": ")",
    "color": "dark_gray",
    "pocket_data": [
      {
        "//": "Folded Sleeve",
        "pocket_type": "CONTAINER",
        "rigid": false,
        "max_contains_weight": "60 g",
        "max_contains_volume": "150 ml",
        "moves": 100,
        "flag_restriction": [ "BANK_NOTE_SHAPED" ]
      },
      {
        "//": "Card Sleeves",
        "pocket_type": "CONTAINER",
        "rigid": false,
        "max_contains_weight": "60 g",
        "max_contains_volume": "150 ml",
        "max_item_length": "85 mm",
        "moves": 100,
        "flag_restriction": [ "CREDIT_CARD_SHAPED" ]
      },
      {
        "//": "Coin Purse",
        "pocket_type": "CONTAINER",
        "rigid": false,
        "max_contains_weight": "600 g",
        "max_contains_volume": "150 ml",
        "moves": 200,
        "flag_restriction": [ "COIN_SHAPED" ]
      }
    ]
  },
  {
    "id": "wallet_duct_tape",
    "type": "GENERIC",
    "copy-from": "wallet",
    "name": { "str": "duct tape wallet" },
    "description": "A wallet made entirely out of duct tape.",
    "material": [ "plastic" ],
    "flags": [ "NO_REPAIR" ]
  },
  {
    "id": "wallet_leather",
    "type": "GENERIC",
    "copy-from": "wallet",
    "name": { "str": "leather wallet" },
    "description": "A wallet made of leather.",
    "material": [ "leather" ]
  },
  {
    "id": "wallet_large",
    "type": "GENERIC",
    "copy-from": "wallet",
    "name": { "str": "large wallet" },
    "description": "A flat case used to carry items such as currency, identification documents, laminated cards, and other small items.",
    "material": [ "leather" ],
    "volume": "285 ml",
    "weight": "80 g",
    "extend": { "flags": [ "FANCY" ] },
    "pocket_data": [
      {
        "//": "Folded Sleeve",
        "pocket_type": "CONTAINER",
        "rigid": false,
        "max_contains_weight": "80 g",
        "max_contains_volume": "175 ml",
        "moves": 100,
        "flag_restriction": [ "BANK_NOTE_SHAPED" ]
      },
      {
        "//": "Card Sleeves",
        "pocket_type": "CONTAINER",
        "rigid": false,
        "max_contains_weight": "80 g",
        "max_contains_volume": "175 ml",
        "max_item_length": "10 cm",
        "moves": 100,
        "flag_restriction": [ "CREDIT_CARD_SHAPED" ]
      },
      {
        "//": "Coin Purse",
        "pocket_type": "CONTAINER",
        "rigid": false,
        "max_contains_weight": "600 g",
        "max_contains_volume": "175 ml",
        "moves": 200,
        "flag_restriction": [ "COIN_SHAPED" ]
      }
    ]
  },
  {
    "id": "wallet_stylish",
    "type": "GENERIC",
    "copy-from": "wallet",
    "name": { "str": "stylish wallet" },
    "description": "A stylish flat case used to carry items such as currency, identification documents, laminated cards, and other small items.",
    "material": [ "leather" ],
    "extend": { "flags": [ "FANCY" ] }
  },
  {
    "id": "wallet_travel",
    "type": "TOOL_ARMOR",
    "category": "clothing",
    "symbol": ";",
    "color": "dark_gray",
    "name": { "str": "travel wallet" },
    "description": "A flat case with a neck strap, used to carry items such as currency, identification documents, laminated cards, and other small items.",
    "price": 15000,
    "price_postapoc": 250,
    "material": [ "plastic", "leather" ],
    "flags": [ "OVERSIZE", "BELTED", "ALLOWS_NATURAL_ATTACKS", "TARDIS", "COLLAPSE_CONTENTS", "POWERARMOR_COMPATIBLE" ],
    "weight": "708 g",
    "volume": "500 ml",
    "to_hit": -1,
    "material_thickness": 2,
    "pocket_data": [
      {
        "pocket_type": "CONTAINER",
        "rigid": true,
        "max_contains_weight": "600 g",
        "max_contains_volume": "500 ml",
        "moves": 400,
        "flag_restriction": [ "BANK_NOTE_SHAPED", "CREDIT_CARD_SHAPED" ]
      }
    ],
    "armor": [ { "encumbrance": 2, "coverage": 100, "covers": [ "torso" ], "specifically_covers": [ "torso_neck" ] } ],
    "melee_damage": { "bash": 1 }
  },
  {
    "id": "lanyard",
    "type": "TOOL_ARMOR",
    "category": "clothing",
    "symbol": "[",
    "color": "white",
    "name": { "str": "lanyard" },
    "description": "A flat, clear plastic sleeve for identification documents, laminated cards, and other small items.  It has a neck strap attached.",
    "price": 10,
    "price_postapoc": 1,
    "material": [ "plastic" ],
    "flags": [ "OVERSIZE", "BELTED", "ALLOWS_NATURAL_ATTACKS", "POWERARMOR_COMPATIBLE", "PADDED" ],
    "weight": "250 g",
    "volume": "250 ml",
    "longest_side": "5 cm",
    "to_hit": -1,
    "material_thickness": 1,
    "pocket_data": [
      {
        "pocket_type": "CONTAINER",
        "rigid": false,
        "max_contains_weight": "60 g",
        "max_contains_volume": "150 ml",
        "max_item_length": "85 mm",
        "moves": 100,
        "flag_restriction": [ "BANK_NOTE_SHAPED", "CREDIT_CARD_SHAPED" ]
      }
    ],
    "armor": [ { "encumbrance": 0, "covers": [ "torso" ], "specifically_covers": [ "torso_neck" ] } ],
    "melee_damage": { "bash": 1 }
  },
  {
    "type": "GENERIC",
    "id": "broken_tazer_hack",
    "symbol": ",",
    "color": "green",
    "name": { "str": "broken tazer hack" },
    "category": "other",
    "description": "A broken tazer hack, with its propellers still and tazer inert.  Could be gutted for parts.",
    "price": 1000,
    "price_postapoc": 10,
    "material": [ "aluminum", "plastic" ],
    "weight": "1600 g",
    "volume": "600 ml",
    "to_hit": -3,
    "flags": [ "TRADER_AVOID", "NO_REPAIR" ],
    "melee_damage": { "bash": 4, "cut": 4 }
  },
  {
    "type": "GENERIC",
    "id": "broken_lab_security_drone_GM",
    "symbol": ",",
    "color": "green",
    "name": { "str": "broken green maintenance security drone" },
    "category": "other",
    "description": "A broken security drone, with its propellers still and camera inert.  Could be gutted for parts.",
    "price": 1000,
    "price_postapoc": 10,
    "material": [ "aluminum", "plastic" ],
    "weight": "5 kg",
    "volume": "650 ml",
    "to_hit": -3,
    "flags": [ "TRADER_AVOID", "NO_REPAIR" ],
    "melee_damage": { "bash": 4, "cut": 4 }
  },
  {
    "type": "GENERIC",
    "id": "broken_lab_security_drone_YM",
    "symbol": ",",
    "color": "yellow",
    "name": { "str": "broken yellow maintenance security drone" },
    "category": "other",
    "description": "A broken security drone, with its propellers still and camera inert.  Could be gutted for parts.",
    "price": 1000,
    "price_postapoc": 10,
    "material": [ "aluminum", "plastic" ],
    "weight": "5 kg",
    "volume": "650 ml",
    "to_hit": -3,
    "flags": [ "TRADER_AVOID", "NO_REPAIR" ],
    "melee_damage": { "bash": 4, "cut": 4 }
  },
  {
    "type": "GENERIC",
    "id": "broken_lab_security_drone_BM",
    "symbol": ",",
    "color": "blue",
    "name": { "str": "broken blue maintenance security drone" },
    "category": "other",
    "description": "A broken security drone, with its propellers still and camera inert.  Could be gutted for parts.",
    "price": 1000,
    "price_postapoc": 10,
    "material": [ "aluminum", "plastic" ],
    "weight": "5 kg",
    "volume": "650 ml",
    "to_hit": -3,
    "flags": [ "TRADER_AVOID", "NO_REPAIR" ],
    "melee_damage": { "bash": 4, "cut": 4 }
  },
  {
    "type": "GENERIC",
    "id": "broken_lab_security_drone_BM2",
    "symbol": ",",
    "color": "cyan",
    "name": { "str": "broken blue maintenance security drone" },
    "category": "other",
    "description": "A broken security drone, with its propellers still and camera inert.  Could be gutted for parts.",
    "price": 1000,
    "price_postapoc": 10,
    "material": [ "aluminum", "plastic" ],
    "weight": "5 kg",
    "volume": "650 ml",
    "to_hit": -3,
    "flags": [ "TRADER_AVOID", "NO_REPAIR" ],
    "melee_damage": { "bash": 4, "cut": 4 }
  },
  {
    "type": "GENERIC",
    "id": "broken_lab_security_drone_GR",
    "symbol": ",",
    "color": "light_green",
    "name": { "str": "broken green research security drone" },
    "category": "other",
    "description": "A broken security drone, with its propellers still and camera inert.  Could be gutted for parts.",
    "price": 1000,
    "price_postapoc": 10,
    "material": [ "aluminum", "plastic" ],
    "weight": "5 kg",
    "volume": "650 ml",
    "to_hit": -3,
    "flags": [ "TRADER_AVOID", "NO_REPAIR" ],
    "melee_damage": { "bash": 4, "cut": 4 }
  },
  {
    "type": "GENERIC",
    "id": "broken_lab_security_drone_BS",
    "symbol": ",",
    "color": "dark_gray",
    "name": { "str": "broken black security drone" },
    "category": "other",
    "description": "A broken security drone, with its propellers still and camera inert.  Could be gutted for parts.",
    "price": 1000,
    "price_postapoc": 10,
    "material": [ "aluminum", "plastic" ],
    "weight": "5 kg",
    "volume": "650 ml",
    "to_hit": -3,
    "flags": [ "TRADER_AVOID", "NO_REPAIR" ],
    "melee_damage": { "bash": 4, "cut": 4 }
  },
  {
    "id": "parachute_mil",
    "type": "GENERIC",
    "name": { "str": "military parachute" },
    "description": "This is a big, bulky military-level parachute, designed to slow the fall of up to a thousand kilograms of cargo dropped from an aircraft.  You have no clue how to put all the straps back in their place.",
    "weight": "113400 g",
    "volume": "136080 ml",
    "price": 200000,
    "price_postapoc": 1000,
    "material": [ "nylon" ],
    "symbol": "[",
    "looks_like": "ragpouch",
    "color": "green"
  },
  {
    "id": "pallet",
    "type": "GENERIC",
    "name": { "str": "wooden pallet" },
    "description": "This is a heavy and bulky 40x48-inch palette.",
    "weight": "28 kg",
    "volume": "194400 ml",
    "material": [ "wood" ],
    "symbol": "#",
    "color": "brown"
  },
  {
    "type": "TOOL",
    "id": "training_dummy_light",
    "symbol": "@",
    "color": "brown",
    "name": { "str": "training dummy", "str_pl": "training dummies" },
    "category": "other",
    "description": "A hand-made humanoid figure, useful for training in close quarters combat.  This one is made from wood and it some duct tape to mark the striking points.  You need to embed it into the ground for training.",
    "price": 15000,
    "price_postapoc": 600,
    "material": [ "wood" ],
    "weight": "50 kg",
    "volume": "80 L",
    "to_hit": -2,
    "melee_damage": { "bash": 12 }
  },
  {
    "type": "TOOL",
    "id": "training_dummy_heavy",
    "symbol": "@",
    "color": "light_gray",
    "name": { "str": "armored training dummy", "str_pl": "armored training dummies" },
    "category": "other",
    "description": "A hand-made humanoid figure, useful for training in close quarters combat.  This one is covered in scrap armor and looks on guard.  You need to embed it into the ground for training.",
    "price": 15000,
    "price_postapoc": 1000,
    "material": [ "steel", "wood" ],
    "weight": "55 kg",
    "volume": "80 L",
    "to_hit": -2,
    "melee_damage": { "bash": 14 }
  },
  {
    "type": "TOOL",
    "id": "archery_target_box",
    "symbol": "@",
    "color": "brown",
    "name": { "str": "box archery target" },
    "category": "other",
    "description": "A soft target for archery, consisting of tightly-packed cloth stuffed into a cardboard box, with a bullseye marked on the front.  Must be set up to use.",
    "price": 3000,
    "price_postapoc": 200,
    "material": [ { "type": "cotton", "portion": 9 }, { "type": "cardboard" } ],
    "weight": "16 kg",
    "volume": "50 L",
    "longest_side": "60 cm",
    "to_hit": -3,
    "melee_damage": { "bash": 2 }
  },
  {
    "id": "cash_register",
    "type": "GENERIC",
    "category": "container",
    "symbol": "$",
    "color": "dark_gray",
    "name": { "str": "cash register" },
    "description": "An electronic device for registering and calculating sales transactions.  It doesn't seem to be working.",
    "price": 23600,
    "price_postapoc": 200,
    "material": [ "plastic", "steel" ],
    "flags": [ "COLLAPSE_CONTENTS" ],
    "weight": "5 kg",
    "volume": "22 L",
    "longest_side": "36 cm",
    "to_hit": -2,
    "pocket_data": [
      {
        "pocket_type": "CONTAINER",
        "rigid": true,
        "max_contains_weight": "2 kg",
        "max_contains_volume": "1 L",
        "moves": 100,
        "flag_restriction": [ "BANK_NOTE_SHAPED", "BANK_NOTE_STRAP_SHAPED", "COIN_SHAPED", "CREDIT_CARD_SHAPED" ]
      }
    ],
    "melee_damage": { "bash": 12 }
  }
]
